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

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

Issue 330143002: Simplify geolocation permission request in the Content API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 6 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/chrome_geolocation_permission_context.h b/chrome/browser/geolocation/geolocation_permission_context.h
similarity index 75%
rename from chrome/browser/geolocation/chrome_geolocation_permission_context.h
rename to chrome/browser/geolocation/geolocation_permission_context.h
index a4b2c75d9c6c4f440afbdce8cb3565ebbcb88a66..b5d7d9050c0e16386a3c15a46b0e7cce29d9872d 100644
--- a/chrome/browser/geolocation/chrome_geolocation_permission_context.h
+++ b/chrome/browser/geolocation/geolocation_permission_context.h
@@ -2,17 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_
-#define CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_
+#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/geolocation/chrome_geolocation_permission_context_extensions.h"
-#include "content/public/browser/geolocation_permission_context.h"
+#include "chrome/browser/geolocation/geolocation_permission_context_extensions.h"
namespace content {
class WebContents;
@@ -22,25 +23,21 @@ class GeolocationPermissionRequest;
class PermissionRequestID;
class Profile;
-// Chrome specific implementation of GeolocationPermissionContext; manages
-// Geolocation permissions flow, and delegates UI handling via
+// This manages Geolocation permissions flow, and delegates UI handling via
// PermissionQueueController.
-class ChromeGeolocationPermissionContext
- : public content::GeolocationPermissionContext {
+class GeolocationPermissionContext
+ : public base::RefCountedThreadSafe<GeolocationPermissionContext> {
public:
- explicit ChromeGeolocationPermissionContext(Profile* profile);
+ explicit GeolocationPermissionContext(Profile* profile);
- // GeolocationPermissionContext:
- virtual void RequestGeolocationPermission(
+ // 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)> callback) OVERRIDE;
- virtual void CancelGeolocationPermissionRequest(
- content::WebContents* web_contents,
- int bridge_id,
- const GURL& requesting_frame) OVERRIDE;
+ 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();
@@ -55,7 +52,7 @@ class ChromeGeolocationPermissionContext
bool allowed);
protected:
- virtual ~ChromeGeolocationPermissionContext();
+ virtual ~GeolocationPermissionContext();
Profile* profile() const { return profile_; }
@@ -63,7 +60,12 @@ class ChromeGeolocationPermissionContext
// if necessary.
PermissionQueueController* QueueController();
- // ChromeGeolocationPermissionContext implementation:
+ 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
@@ -91,6 +93,7 @@ class ChromeGeolocationPermissionContext
virtual PermissionQueueController* CreateQueueController();
private:
+ friend class base::RefCountedThreadSafe<GeolocationPermissionContext>;
friend class GeolocationPermissionRequest;
// Removes any pending InfoBar request.
@@ -110,12 +113,12 @@ class ChromeGeolocationPermissionContext
Profile* const profile_;
bool shutting_down_;
scoped_ptr<PermissionQueueController> permission_queue_controller_;
- ChromeGeolocationPermissionContextExtensions extensions_context_;
+ GeolocationPermissionContextExtensions extensions_context_;
base::ScopedPtrHashMap<std::string, GeolocationPermissionRequest>
pending_requests_;
- DISALLOW_COPY_AND_ASSIGN(ChromeGeolocationPermissionContext);
+ DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContext);
};
-#endif // CHROME_BROWSER_GEOLOCATION_CHROME_GEOLOCATION_PERMISSION_CONTEXT_H_
+#endif // CHROME_BROWSER_GEOLOCATION_GEOLOCATION_PERMISSION_CONTEXT_H_

Powered by Google App Engine
This is Rietveld 408576698