Index: chrome/browser/geolocation/geolocation_permission_context.h |
diff --git a/chrome/browser/geolocation/geolocation_permission_context.h b/chrome/browser/geolocation/geolocation_permission_context.h |
index 6b79fd75780695880c8f5df673e1413c43ed0341..1411edd509009694d7fc7ec4649689ee32f47731 100644 |
--- a/chrome/browser/geolocation/geolocation_permission_context.h |
+++ b/chrome/browser/geolocation/geolocation_permission_context.h |
@@ -11,19 +11,18 @@ |
#include "base/ref_counted.h" |
class GeolocationDispatcherHost; |
-class Profile; |
+class GURL; |
+class HostContentSettingsMap; |
class RenderViewHost; |
+class TabContents; |
-// GeolocationPermissionContext manages Geolocation permissions per host. |
-// It keeps an in-memory cache of permissions, and if not available, loads |
-// from disk. If there's no data, it'll trigger the UI elements to ask the |
-// user for permission. |
-// Regardless of where the permission data came from, it always notifies the |
-// requesting render_view asynchronously via ViewMsg_Geolocation_PermissionSet. |
+// GeolocationPermissionContext manages Geolocation permissions via |
+// HostContentSettingsMap. |
class GeolocationPermissionContext |
: public base::RefCountedThreadSafe<GeolocationPermissionContext> { |
public: |
- explicit GeolocationPermissionContext(Profile* profile); |
+ explicit GeolocationPermissionContext( |
+ HostContentSettingsMap* host_content_settings_map); |
// The render is requesting permission to use Geolocation. |
// Response will be sent asynchronously as ViewMsg_Geolocation_PermissionSet. |
@@ -32,30 +31,20 @@ class GeolocationPermissionContext |
int render_process_id, int render_view_id, int bridge_id, |
const std::string& host); |
- // Called once the user sets the geolocation permission. |
- // It'll update the internal state on different threads via |
- // SetPermissionMemoryCacheOnIOThread and SetPermissionOnFileThread. |
- void SetPermission( |
+ // Called once the user sets the geolocation permission from the infobar. |
+ void SetPermissionFromInfobar( |
int render_process_id, int render_view_id, int bridge_id, |
const std::string& host, bool allowed); |
+ // Called once the user sets the geolocation permission from the content |
+ // bubble. |
+ void SetPermissionFromContentBubble( |
+ TabContents* tab_contents, const std::string& host, bool allowed); |
+ |
private: |
friend class base::RefCountedThreadSafe<GeolocationPermissionContext>; |
virtual ~GeolocationPermissionContext(); |
- // This is initially called on the IO thread by the public API |
- // RequestGeolocationPermission when there's no data available in the |
- // in-memory cache. |
- // It forwards a call to the FILE thread which tries to load permission data |
- // from disk: |
- // - If available, it will call SetPermissionMemoryCacheOnIOThread() to write |
- // the in-memory cache in the IO thread, and NotifyPermissionSet to send the |
- // message to the corresponding render. |
- // - If not available, it'll delegate to RequestPermissionDataFromUI. |
- void HandlePermissionMemoryCacheMiss( |
- int render_process_id, int render_view_id, int bridge_id, |
- const std::string& host); |
- |
// Triggers the associated UI element to request permission. |
void RequestPermissionFromUI( |
int render_process_id, int render_view_id, int bridge_id, |
@@ -65,22 +54,10 @@ class GeolocationPermissionContext |
// geolocation. |
void NotifyPermissionSet( |
int render_process_id, int render_view_id, int bridge_id, |
- bool allowed); |
- |
- // Sets permissions_ cache (if not on IO thread, will forward to it). |
- void SetPermissionMemoryCacheOnIOThread( |
const std::string& host, bool allowed); |
- // Sets permissions file data (if not on FILE thread, will forward to it). |
- void SetPermissionOnFileThread(const std::string& host, bool allowed); |
- // This should only be accessed from the UI thread. |
- Profile* const profile_; |
- // Indicates whether profile_ is off the record. |
- bool const is_off_the_record_; |
- // The path where geolocation permission data is stored. |
- FilePath const permissions_path_; |
- // This should only be accessed from the UI thread. |
- std::map<std::string, bool> permissions_; |
+ // Used to persist permission settings. |
+ scoped_refptr<HostContentSettingsMap> host_content_settings_map_; |
DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContext); |
}; |