| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/geolocation/geolocation_permission_context_extensions.h
     " | 5 #include "chrome/browser/geolocation/geolocation_permission_context_extensions.h
     " | 
| 6 | 6 | 
| 7 #include "base/callback.h" | 7 #include "base/callback.h" | 
|  | 8 #include "extensions/features/features.h" | 
| 8 | 9 | 
| 9 #if defined(ENABLE_EXTENSIONS) | 10 #if BUILDFLAG(ENABLE_EXTENSIONS) | 
| 10 #include "chrome/browser/permissions/permission_request_id.h" | 11 #include "chrome/browser/permissions/permission_request_id.h" | 
| 11 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" | 
| 12 #include "extensions/browser/extension_registry.h" | 13 #include "extensions/browser/extension_registry.h" | 
| 13 #include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" | 14 #include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" | 
| 14 #include "extensions/browser/process_map.h" | 15 #include "extensions/browser/process_map.h" | 
| 15 #include "extensions/browser/suggest_permission_util.h" | 16 #include "extensions/browser/suggest_permission_util.h" | 
| 16 #include "extensions/browser/view_type_utils.h" | 17 #include "extensions/browser/view_type_utils.h" | 
| 17 #include "extensions/common/extension.h" | 18 #include "extensions/common/extension.h" | 
| 18 | 19 | 
| 19 using extensions::APIPermission; | 20 using extensions::APIPermission; | 
| 20 using extensions::ExtensionRegistry; | 21 using extensions::ExtensionRegistry; | 
| 21 #endif | 22 #endif | 
| 22 | 23 | 
| 23 namespace { | 24 namespace { | 
| 24 | 25 | 
| 25 #if defined(ENABLE_EXTENSIONS) | 26 #if BUILDFLAG(ENABLE_EXTENSIONS) | 
| 26 void CallbackContentSettingWrapper( | 27 void CallbackContentSettingWrapper( | 
| 27     const base::Callback<void(ContentSetting)>& callback, | 28     const base::Callback<void(ContentSetting)>& callback, | 
| 28     bool allowed) { | 29     bool allowed) { | 
| 29   callback.Run(allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK); | 30   callback.Run(allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK); | 
| 30 } | 31 } | 
| 31 #endif  // defined(ENABLE_EXTENSIONS) | 32 #endif  // BUILDFLAG(ENABLE_EXTENSIONS) | 
| 32 | 33 | 
| 33 }  // anonymous namespace | 34 }  // anonymous namespace | 
| 34 | 35 | 
| 35 GeolocationPermissionContextExtensions::GeolocationPermissionContextExtensions( | 36 GeolocationPermissionContextExtensions::GeolocationPermissionContextExtensions( | 
| 36     Profile* profile) | 37     Profile* profile) | 
| 37 #if defined(ENABLE_EXTENSIONS) | 38 #if BUILDFLAG(ENABLE_EXTENSIONS) | 
| 38     : profile_(profile) | 39     : profile_(profile) | 
| 39 #endif | 40 #endif | 
| 40 { | 41 { | 
| 41 } | 42 } | 
| 42 | 43 | 
| 43 GeolocationPermissionContextExtensions:: | 44 GeolocationPermissionContextExtensions:: | 
| 44 ~GeolocationPermissionContextExtensions() { | 45 ~GeolocationPermissionContextExtensions() { | 
| 45 } | 46 } | 
| 46 | 47 | 
| 47 bool GeolocationPermissionContextExtensions::DecidePermission( | 48 bool GeolocationPermissionContextExtensions::DecidePermission( | 
| 48     content::WebContents* web_contents, | 49     content::WebContents* web_contents, | 
| 49     const PermissionRequestID& request_id, | 50     const PermissionRequestID& request_id, | 
| 50     int bridge_id, | 51     int bridge_id, | 
| 51     const GURL& requesting_frame, | 52     const GURL& requesting_frame, | 
| 52     bool user_gesture, | 53     bool user_gesture, | 
| 53     const base::Callback<void(ContentSetting)>& callback, | 54     const base::Callback<void(ContentSetting)>& callback, | 
| 54     bool* permission_set, | 55     bool* permission_set, | 
| 55     bool* new_permission) { | 56     bool* new_permission) { | 
| 56 #if defined(ENABLE_EXTENSIONS) | 57 #if BUILDFLAG(ENABLE_EXTENSIONS) | 
| 57   GURL requesting_frame_origin = requesting_frame.GetOrigin(); | 58   GURL requesting_frame_origin = requesting_frame.GetOrigin(); | 
| 58 | 59 | 
| 59   extensions::WebViewPermissionHelper* web_view_permission_helper = | 60   extensions::WebViewPermissionHelper* web_view_permission_helper = | 
| 60       extensions::WebViewPermissionHelper::FromWebContents(web_contents); | 61       extensions::WebViewPermissionHelper::FromWebContents(web_contents); | 
| 61   if (web_view_permission_helper) { | 62   if (web_view_permission_helper) { | 
| 62     web_view_permission_helper->RequestGeolocationPermission( | 63     web_view_permission_helper->RequestGeolocationPermission( | 
| 63         bridge_id, requesting_frame, user_gesture, | 64         bridge_id, requesting_frame, user_gesture, | 
| 64         base::Bind(&CallbackContentSettingWrapper, callback)); | 65         base::Bind(&CallbackContentSettingWrapper, callback)); | 
| 65     *permission_set = false; | 66     *permission_set = false; | 
| 66     *new_permission = false; | 67     *new_permission = false; | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
| 91     // TODO(mpcomplete): the request could be from a background page or | 92     // TODO(mpcomplete): the request could be from a background page or | 
| 92     // extension popup (web_contents will have a different ViewType). But why do | 93     // extension popup (web_contents will have a different ViewType). But why do | 
| 93     // we care? Shouldn't we still put an infobar up in the current tab? | 94     // we care? Shouldn't we still put an infobar up in the current tab? | 
| 94     LOG(WARNING) << "Attempt to use geolocation tabless renderer: " | 95     LOG(WARNING) << "Attempt to use geolocation tabless renderer: " | 
| 95                  << request_id.ToString() | 96                  << request_id.ToString() | 
| 96                  << " (can't prompt user without a visible tab)"; | 97                  << " (can't prompt user without a visible tab)"; | 
| 97     *permission_set = true; | 98     *permission_set = true; | 
| 98     *new_permission = false; | 99     *new_permission = false; | 
| 99     return true; | 100     return true; | 
| 100   } | 101   } | 
| 101 #endif  // defined(ENABLE_EXTENSIONS) | 102 #endif  // BUILDFLAG(ENABLE_EXTENSIONS) | 
| 102   return false; | 103   return false; | 
| 103 } | 104 } | 
| 104 | 105 | 
| 105 bool GeolocationPermissionContextExtensions::CancelPermissionRequest( | 106 bool GeolocationPermissionContextExtensions::CancelPermissionRequest( | 
| 106     content::WebContents* web_contents, | 107     content::WebContents* web_contents, | 
| 107     int bridge_id) { | 108     int bridge_id) { | 
| 108 #if defined(ENABLE_EXTENSIONS) | 109 #if BUILDFLAG(ENABLE_EXTENSIONS) | 
| 109   extensions::WebViewPermissionHelper* web_view_permission_helper = | 110   extensions::WebViewPermissionHelper* web_view_permission_helper = | 
| 110       web_contents ? | 111       web_contents ? | 
| 111       extensions::WebViewPermissionHelper::FromWebContents(web_contents) | 112       extensions::WebViewPermissionHelper::FromWebContents(web_contents) | 
| 112       : NULL; | 113       : NULL; | 
| 113   if (web_view_permission_helper) { | 114   if (web_view_permission_helper) { | 
| 114     web_view_permission_helper->CancelGeolocationPermissionRequest(bridge_id); | 115     web_view_permission_helper->CancelGeolocationPermissionRequest(bridge_id); | 
| 115     return true; | 116     return true; | 
| 116   } | 117   } | 
| 117 #endif  // defined(ENABLE_EXTENSIONS) | 118 #endif  // BUILDFLAG(ENABLE_EXTENSIONS) | 
| 118   return false; | 119   return false; | 
| 119 } | 120 } | 
| OLD | NEW | 
|---|