OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_ | 5 #ifndef CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_ |
6 #define CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_ | 6 #define CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
11 #include "base/callback.h" | 11 #include "base/callback.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 // GeolocationPermissionContext implementation: | 68 // GeolocationPermissionContext implementation: |
69 // Decide whether the geolocation permission should be granted. | 69 // Decide whether the geolocation permission should be granted. |
70 // Calls PermissionDecided if permission can be decided non-interactively, | 70 // Calls PermissionDecided if permission can be decided non-interactively, |
71 // or NotifyPermissionSet if permission decided by presenting an | 71 // or NotifyPermissionSet if permission decided by presenting an |
72 // infobar to the user. Called on the UI thread. | 72 // infobar to the user. Called on the UI thread. |
73 virtual void DecidePermission(content::WebContents* web_contents, | 73 virtual void DecidePermission(content::WebContents* web_contents, |
74 const PermissionRequestID& id, | 74 const PermissionRequestID& id, |
75 const GURL& requesting_frame, | 75 const GURL& requesting_frame, |
76 bool user_gesture, | 76 bool user_gesture, |
77 const GURL& embedder, | 77 const GURL& embedder, |
78 const std::string& accept_button_label, | |
79 base::Callback<void(bool)> callback); | 78 base::Callback<void(bool)> callback); |
80 | 79 |
81 // Called when permission is granted without interactively asking | 80 // Called when permission is granted without interactively asking |
82 // the user. Can be overridden to introduce additional UI flow. | 81 // the user. Can be overridden to introduce additional UI flow. |
83 // Should ultimately ensure that NotifyPermissionSet is called. | 82 // Should ultimately ensure that NotifyPermissionSet is called. |
84 // Called on the UI thread. | 83 // Called on the UI thread. |
85 virtual void PermissionDecided(const PermissionRequestID& id, | 84 virtual void PermissionDecided(const PermissionRequestID& id, |
86 const GURL& requesting_frame, | 85 const GURL& requesting_frame, |
87 const GURL& embedder, | 86 const GURL& embedder, |
88 base::Callback<void(bool)> callback, | 87 base::Callback<void(bool)> callback, |
89 bool allowed); | 88 bool allowed); |
90 | 89 |
91 // Create an PermissionQueueController. overriden in derived classes to | 90 // Create an PermissionQueueController. overriden in derived classes to |
92 // provide additional UI flow. Called on the UI thread. | 91 // provide additional UI flow. Called on the UI thread. |
93 virtual PermissionQueueController* CreateQueueController(); | 92 virtual PermissionQueueController* CreateQueueController(); |
94 | 93 |
95 private: | 94 private: |
96 friend class base::RefCountedThreadSafe<GeolocationPermissionContext>; | 95 friend class base::RefCountedThreadSafe<GeolocationPermissionContext>; |
97 friend class GeolocationPermissionRequest; | 96 friend class GeolocationPermissionRequest; |
98 | 97 |
99 // Removes any pending InfoBar request. | 98 // Removes any pending InfoBar request. |
100 void CancelPendingInfobarRequest(const PermissionRequestID& id); | 99 void CancelPendingInfobarRequest(const PermissionRequestID& id); |
101 | 100 |
102 // Creates and show an info bar. | 101 // Creates and show an info bar. |
103 void CreateInfoBarRequest(const PermissionRequestID& id, | 102 void CreateInfoBarRequest(const PermissionRequestID& id, |
104 const GURL& requesting_frame, | 103 const GURL& requesting_frame, |
105 const GURL& embedder, | 104 const GURL& embedder, |
106 const std::string accept_button_label, | |
107 base::Callback<void(bool)> callback); | 105 base::Callback<void(bool)> callback); |
108 | 106 |
109 // Notify the context that a particular request object is no longer needed. | 107 // Notify the context that a particular request object is no longer needed. |
110 void RequestFinished(GeolocationPermissionRequest* request); | 108 void RequestFinished(GeolocationPermissionRequest* request); |
111 | 109 |
112 // These must only be accessed from the UI thread. | 110 // These must only be accessed from the UI thread. |
113 Profile* const profile_; | 111 Profile* const profile_; |
114 bool shutting_down_; | 112 bool shutting_down_; |
115 scoped_ptr<PermissionQueueController> permission_queue_controller_; | 113 scoped_ptr<PermissionQueueController> permission_queue_controller_; |
116 GeolocationPermissionContextExtensions extensions_context_; | 114 GeolocationPermissionContextExtensions extensions_context_; |
117 | 115 |
118 base::ScopedPtrHashMap<std::string, GeolocationPermissionRequest> | 116 base::ScopedPtrHashMap<std::string, GeolocationPermissionRequest> |
119 pending_requests_; | 117 pending_requests_; |
120 | 118 |
121 DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContext); | 119 DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContext); |
122 }; | 120 }; |
123 | 121 |
124 #endif // CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_ | 122 #endif // CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_ |
OLD | NEW |