Index: chrome/browser/geolocation/chrome_geolocation_permission_context.cc |
diff --git a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc |
index ea6d79d4acd73c05eceafeb0110078fb55019291..c54d040d9e58d4e9a1a56de926caa00bb1e8b9f4 100644 |
--- a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc |
+++ b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc |
@@ -95,6 +95,17 @@ void ChromeGeolocationPermissionContext::DecidePermission( |
base::Callback<void(bool)> callback) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+#if defined(OS_ANDROID) |
+ // Check to see if the feature in its entirety has been disabled. |
+ // This must happen before other services (e.g. tabs, extensions) |
+ // get an opportunity to allow the geolocation request. |
+ if (!profile()->GetPrefs()->GetBoolean(prefs::kGeolocationEnabled)) { |
+ PermissionDecided(render_process_id, render_view_id, bridge_id, |
+ requesting_frame, embedder, callback, false); |
+ return; |
+ } |
+#endif |
+ |
ExtensionService* extension_service = profile_->GetExtensionService(); |
if (extension_service) { |
const extensions::Extension* extension = |