| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_ | 5 #ifndef CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_ |
| 6 #define CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_ | 6 #define CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_ |
| 7 | 7 |
| 8 #include <map> |
| 8 #include <string> | 9 #include <string> |
| 9 | 10 |
| 11 #include "base/containers/scoped_ptr_hash_map.h" |
| 10 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
| 11 #include "chrome/browser/content_settings/permission_queue_controller.h" | 13 #include "chrome/browser/content_settings/permission_queue_controller.h" |
| 12 #include "content/public/browser/geolocation_permission_context.h" | 14 #include "content/public/browser/geolocation_permission_context.h" |
| 13 | 15 |
| 14 namespace content { | 16 namespace content { |
| 15 class WebContents; | 17 class WebContents; |
| 16 } | 18 } |
| 17 | 19 |
| 20 class GeolocationPermissionRequest; |
| 18 class PermissionRequestID; | 21 class PermissionRequestID; |
| 19 class Profile; | 22 class Profile; |
| 20 | 23 |
| 21 // Chrome specific implementation of GeolocationPermissionContext; manages | 24 // Chrome specific implementation of GeolocationPermissionContext; manages |
| 22 // Geolocation permissions flow, and delegates UI handling via | 25 // Geolocation permissions flow, and delegates UI handling via |
| 23 // PermissionQueueController. | 26 // PermissionQueueController. |
| 24 class ChromeGeolocationPermissionContext | 27 class ChromeGeolocationPermissionContext |
| 25 : public content::GeolocationPermissionContext { | 28 : public content::GeolocationPermissionContext { |
| 26 public: | 29 public: |
| 27 explicit ChromeGeolocationPermissionContext(Profile* profile); | 30 explicit ChromeGeolocationPermissionContext(Profile* profile); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 const GURL& requesting_frame, | 83 const GURL& requesting_frame, |
| 81 const GURL& embedder, | 84 const GURL& embedder, |
| 82 base::Callback<void(bool)> callback, | 85 base::Callback<void(bool)> callback, |
| 83 bool allowed); | 86 bool allowed); |
| 84 | 87 |
| 85 // Create an PermissionQueueController. overriden in derived classes to | 88 // Create an PermissionQueueController. overriden in derived classes to |
| 86 // provide additional UI flow. Called on the UI thread. | 89 // provide additional UI flow. Called on the UI thread. |
| 87 virtual PermissionQueueController* CreateQueueController(); | 90 virtual PermissionQueueController* CreateQueueController(); |
| 88 | 91 |
| 89 private: | 92 private: |
| 93 friend class GeolocationPermissionRequest; |
| 94 |
| 90 // Removes any pending InfoBar request. | 95 // Removes any pending InfoBar request. |
| 91 void CancelPendingInfobarRequest(const PermissionRequestID& id); | 96 void CancelPendingInfobarRequest(const PermissionRequestID& id); |
| 92 | 97 |
| 93 // Creates and show an info bar. | 98 // Creates and show an info bar. |
| 94 void CreateInfoBarRequest(const PermissionRequestID& id, | 99 void CreateInfoBarRequest(const PermissionRequestID& id, |
| 95 const GURL& requesting_frame, | 100 const GURL& requesting_frame, |
| 96 const GURL& embedder, | 101 const GURL& embedder, |
| 97 const std::string accept_button_label, | 102 const std::string accept_button_label, |
| 98 base::Callback<void(bool)> callback); | 103 base::Callback<void(bool)> callback); |
| 99 | 104 |
| 105 // Notify the context that a particular request object is no longer needed. |
| 106 void RequestFinished(GeolocationPermissionRequest* request); |
| 107 |
| 100 // These must only be accessed from the UI thread. | 108 // These must only be accessed from the UI thread. |
| 101 Profile* const profile_; | 109 Profile* const profile_; |
| 102 bool shutting_down_; | 110 bool shutting_down_; |
| 103 scoped_ptr<PermissionQueueController> permission_queue_controller_; | 111 scoped_ptr<PermissionQueueController> permission_queue_controller_; |
| 104 | 112 |
| 113 base::ScopedPtrHashMap<std::string, GeolocationPermissionRequest> |
| 114 pending_requests_; |
| 115 |
| 105 DISALLOW_COPY_AND_ASSIGN(ChromeGeolocationPermissionContext); | 116 DISALLOW_COPY_AND_ASSIGN(ChromeGeolocationPermissionContext); |
| 106 }; | 117 }; |
| 107 | 118 |
| 108 #endif // CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_ | 119 #endif // CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_ |
| OLD | NEW |