[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 1 | // Copyright 2014 The Chromium Authors. All rights reserved. |
2 | // Use of this source code is governed by a BSD-style license that can be | ||||
3 | // found in the LICENSE file. | ||||
4 | |||||
[email protected] | e2ff17e | 2014-02-06 02:32:33 | [diff] [blame] | 5 | #ifndef CHROME_BROWSER_UI_WEBSITE_SETTINGS_PERMISSION_BUBBLE_REQUEST_H_ |
6 | #define CHROME_BROWSER_UI_WEBSITE_SETTINGS_PERMISSION_BUBBLE_REQUEST_H_ | ||||
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 7 | |
8 | #include "base/strings/string16.h" | ||||
[email protected] | d23cdeee | 2014-03-10 06:39:53 | [diff] [blame] | 9 | #include "url/gurl.h" |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 10 | |
estade | 292df4f8 | 2015-07-31 18:53:25 | [diff] [blame] | 11 | namespace gfx { |
12 | enum class VectorIconId; | ||||
13 | } | ||||
14 | |||||
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 15 | // Describes the interface a feature utilizing permission bubbles should |
16 | // implement. A class of this type is registered with the permission bubble | ||||
17 | // manager to receive updates about the result of the permissions request | ||||
18 | // from the bubble. It should live until it is unregistered or until | ||||
[email protected] | 634e598 | 2014-04-18 19:20:48 | [diff] [blame] | 19 | // RequestFinished is called. |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 20 | // Note that no particular guarantees are made about what exact UI surface |
21 | // is presented to the user. The delegate may be coalesced with other bubble | ||||
22 | // requests, or depending on the situation, not shown at all. | ||||
[email protected] | e2ff17e | 2014-02-06 02:32:33 | [diff] [blame] | 23 | class PermissionBubbleRequest { |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 24 | public: |
[email protected] | e2ff17e | 2014-02-06 02:32:33 | [diff] [blame] | 25 | virtual ~PermissionBubbleRequest() {} |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 26 | |
estade | 0a679f8 | 2015-07-16 19:31:56 | [diff] [blame] | 27 | // Returns a vector icon id if the icon should be drawn as a vector |
28 | // resource. Otherwise, returns VECTOR_ICON_NONE. | ||||
29 | virtual gfx::VectorIconId GetVectorIconId() const; | ||||
30 | |||||
[email protected] | d23cdeee | 2014-03-10 06:39:53 | [diff] [blame] | 31 | // The icon to use next to the message text fragment in the permission bubble. |
felt | 9dd8cd7 | 2015-01-30 22:15:45 | [diff] [blame] | 32 | // Must be a valid icon of size 18x18. |
estade | ceb84ab | 2015-09-03 00:52:16 | [diff] [blame] | 33 | virtual int GetIconId() const = 0; |
[email protected] | d23cdeee | 2014-03-10 06:39:53 | [diff] [blame] | 34 | |
[email protected] | dd1ba69 | 2014-01-24 23:17:37 | [diff] [blame] | 35 | // Returns the full prompt text for this permission. This is the only text |
36 | // that will be shown in the single-permission case and should be phrased | ||||
37 | // positively as a complete sentence. | ||||
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 38 | virtual base::string16 GetMessageText() const = 0; |
39 | |||||
[email protected] | dd1ba69 | 2014-01-24 23:17:37 | [diff] [blame] | 40 | // Returns the shortened prompt text for this permission. Must be phrased |
[email protected] | d23cdeee | 2014-03-10 06:39:53 | [diff] [blame] | 41 | // as a heading, e.g. "Location", or "Camera". The permission bubble may |
42 | // coalesce different requests, and if it does, this text will be displayed | ||||
43 | // next to an image and indicate the user grants the permission. | ||||
[email protected] | dd1ba69 | 2014-01-24 23:17:37 | [diff] [blame] | 44 | virtual base::string16 GetMessageTextFragment() const = 0; |
45 | |||||
mlamouri | e8f2f0d | 2015-10-20 23:09:27 | [diff] [blame] | 46 | // Get whether this request was accompanied by a user gesture. Gestured |
47 | // requests will have priority over non-gestured ones. | ||||
[email protected] | d23cdeee | 2014-03-10 06:39:53 | [diff] [blame] | 48 | virtual bool HasUserGesture() const = 0; |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 49 | |
johnme | fe4e96d | 2016-01-27 16:14:41 | [diff] [blame^] | 50 | // Get the origin on whose behalf this permission request is being made. |
51 | virtual GURL GetOrigin() const = 0; | ||||
[email protected] | dd1ba69 | 2014-01-24 23:17:37 | [diff] [blame] | 52 | |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 53 | // Called when the user has granted the requested permission. |
54 | virtual void PermissionGranted() = 0; | ||||
55 | |||||
56 | // Called when the user has denied the requested permission. | ||||
57 | virtual void PermissionDenied() = 0; | ||||
58 | |||||
59 | // Called when the user has cancelled the permission request. This | ||||
60 | // corresponds to a denial, but is segregated in case the context needs to | ||||
61 | // be able to distinguish between an active refusal or an implicit refusal. | ||||
62 | virtual void Cancelled() = 0; | ||||
63 | |||||
[email protected] | e2ff17e | 2014-02-06 02:32:33 | [diff] [blame] | 64 | // The bubble this request was associated with was answered by the user. |
65 | // It is safe for the request to be deleted at this point -- it will receive | ||||
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 66 | // no further message from the permission bubble system. This method will |
[email protected] | e2ff17e | 2014-02-06 02:32:33 | [diff] [blame] | 67 | // eventually be called on every request which is not unregistered. |
[email protected] | efad90f | 2014-01-17 00:45:54 | [diff] [blame] | 68 | virtual void RequestFinished() = 0; |
69 | }; | ||||
70 | |||||
[email protected] | e2ff17e | 2014-02-06 02:32:33 | [diff] [blame] | 71 | #endif // CHROME_BROWSER_UI_WEBSITE_SETTINGS_PERMISSION_BUBBLE_REQUEST_H_ |