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

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

Issue 459953002: Migrate geolocation permissions to the new common permission class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 3 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 4017210d402815d755a35e3383a687efc9eda780..d580d08fe7e9c970bf3cee4900d982b3ad973250 100644
--- a/chrome/browser/geolocation/geolocation_permission_context.h
+++ b/chrome/browser/geolocation/geolocation_permission_context.h
@@ -5,117 +5,44 @@
#ifndef CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_
#define CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_
-#include <map>
-#include <string>
-
#include "base/callback.h"
-#include "base/containers/scoped_ptr_hash_map.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/content_settings/permission_queue_controller.h"
+#include "chrome/browser/content_settings/permission_context_base.h"
#include "chrome/browser/geolocation/geolocation_permission_context_extensions.h"
namespace content {
class WebContents;
}
-class GeolocationPermissionRequest;
class PermissionRequestID;
class Profile;
-// This manages Geolocation permissions flow, and delegates UI handling via
-// PermissionQueueController.
-class GeolocationPermissionContext
- : public base::RefCountedThreadSafe<GeolocationPermissionContext> {
+class GeolocationPermissionContext : public PermissionContextBase {
public:
explicit GeolocationPermissionContext(Profile* profile);
-
- // See ContentBrowserClient method of the same name.
- void RequestGeolocationPermission(
- content::WebContents* web_contents,
- int bridge_id,
- const GURL& requesting_frame,
- bool user_gesture,
- base::Callback<void(bool)> result_callback,
- base::Closure* cancel_callback);
-
- // Called on the UI thread when the profile is about to be destroyed.
- void ShutdownOnUIThread();
-
- // Notifies whether or not the corresponding bridge is allowed to use
- // geolocation via
- // GeolocationPermissionContext::SetGeolocationPermissionResponse().
- // Called on the UI thread.
- void NotifyPermissionSet(const PermissionRequestID& id,
- const GURL& requesting_frame,
- base::Callback<void(bool)> callback,
- bool allowed);
-
- protected:
virtual ~GeolocationPermissionContext();
- Profile* profile() const { return profile_; }
-
- // Return an instance of the infobar queue controller, creating it
- // if necessary.
- PermissionQueueController* QueueController();
-
- void CancelGeolocationPermissionRequest(
- int render_process_id,
- int render_view_id,
- int bridge_id);
- // GeolocationPermissionContext implementation:
- // Decide whether the geolocation permission should be granted.
- // Calls PermissionDecided if permission can be decided non-interactively,
- // or NotifyPermissionSet if permission decided by presenting an
- // infobar to the user. Called on the UI thread.
- virtual void DecidePermission(content::WebContents* web_contents,
- const PermissionRequestID& id,
- const GURL& requesting_frame,
- bool user_gesture,
- const GURL& embedder,
- base::Callback<void(bool)> callback);
-
- // Called when permission is granted without interactively asking
- // the user. Can be overridden to introduce additional UI flow.
- // Should ultimately ensure that NotifyPermissionSet is called.
- // Called on the UI thread.
- virtual void PermissionDecided(const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- base::Callback<void(bool)> callback,
- bool allowed);
+ // In addition to the base class flow the geolocation permission request
+ // checks that it is only code from valid iframes.
+ // It also adds special logic when called through an extension.
+ virtual void RequestPermission(content::WebContents* web_contents,
+ const PermissionRequestID& id,
+ const GURL& requesting_frame_origin,
+ bool user_gesture,
+ const BrowserPermissionCallback& callback) OVERRIDE;
- // Create an PermissionQueueController. overriden in derived classes to
- // provide additional UI flow. Called on the UI thread.
- virtual PermissionQueueController* CreateQueueController();
+ // Adds special logic when called through an extension.
+ virtual void CancelPermissionRequest(content::WebContents* web_contents,
+ const PermissionRequestID& id) OVERRIDE;
private:
- friend class base::RefCountedThreadSafe<GeolocationPermissionContext>;
- friend class GeolocationPermissionRequest;
-
- // Removes any pending InfoBar request.
- void CancelPendingInfobarRequest(const PermissionRequestID& id);
-
- // Creates and show an info bar.
- void CreateInfoBarRequest(const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- base::Callback<void(bool)> callback);
-
- // Notify the context that a particular request object is no longer needed.
- void RequestFinished(GeolocationPermissionRequest* request);
+ virtual void UpdateTabContext(const PermissionRequestID& id,
+ const GURL& requesting_frame,
+ bool allowed) OVERRIDE;
- // These must only be accessed from the UI thread.
- Profile* const profile_;
- bool shutting_down_;
- scoped_ptr<PermissionQueueController> permission_queue_controller_;
+ // This must only be accessed from the UI thread.
GeolocationPermissionContextExtensions extensions_context_;
- base::ScopedPtrHashMap<std::string, GeolocationPermissionRequest>
- pending_requests_;
-
DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContext);
};

Powered by Google App Engine
This is Rietveld 408576698