Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4973)

Unified Diff: chrome/browser/geolocation/geolocation_permission_context.h

Issue 650180: Initial Geolocation location bar icons. (Closed)
Patch Set: Addresses Peter and Brett's comments. Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
};
« no previous file with comments | « chrome/browser/geolocation/geolocation_browsertest.cc ('k') | chrome/browser/geolocation/geolocation_permission_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698