Index: chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc |
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc |
index 61da9d5d078424b9fd1c54ac87566bd454b5fe31..489676079867db37014bfab1cbdd40b65f09c0fd 100644 |
--- a/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc |
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.cc |
@@ -19,6 +19,15 @@ |
namespace extensions { |
+namespace { |
+ |
+void CallbackContentSettingWrapper(const base::Callback<void(bool)>& callback, |
+ ContentSetting content_setting) { |
+ callback.Run(content_setting == CONTENT_SETTING_ALLOW); |
+} |
+ |
+} // anonymous namespace |
+ |
ChromeWebViewPermissionHelperDelegate::ChromeWebViewPermissionHelperDelegate( |
WebViewPermissionHelper* web_view_permission_helper) |
: WebViewPermissionHelperDelegate(web_view_permission_helper), |
@@ -192,12 +201,10 @@ void ChromeWebViewPermissionHelperDelegate::RequestGeolocationPermission( |
// ChromeWebViewPermissionHelperDelegate::SetPermission. |
const WebViewPermissionHelper::PermissionResponseCallback |
permission_callback = |
- base::Bind(&ChromeWebViewPermissionHelperDelegate:: |
- OnGeolocationPermissionResponse, |
- weak_factory_.GetWeakPtr(), |
- bridge_id, |
- user_gesture, |
- callback); |
+ base::Bind(&ChromeWebViewPermissionHelperDelegate:: |
+ OnGeolocationPermissionResponse, |
+ weak_factory_.GetWeakPtr(), bridge_id, user_gesture, |
+ base::Bind(&CallbackContentSettingWrapper, callback)); |
int request_id = web_view_permission_helper()->RequestPermission( |
WEB_VIEW_PERMISSION_TYPE_GEOLOCATION, |
request_info, |
@@ -209,7 +216,7 @@ void ChromeWebViewPermissionHelperDelegate::RequestGeolocationPermission( |
void ChromeWebViewPermissionHelperDelegate::OnGeolocationPermissionResponse( |
int bridge_id, |
bool user_gesture, |
- const base::Callback<void(bool)>& callback, |
+ const base::Callback<void(ContentSetting)>& callback, |
bool allow, |
const std::string& user_input) { |
// The <webview> embedder has allowed the permission. We now need to make sure |
@@ -217,7 +224,7 @@ void ChromeWebViewPermissionHelperDelegate::OnGeolocationPermissionResponse( |
RemoveBridgeID(bridge_id); |
if (!allow || !web_view_guest()->attached()) { |
- callback.Run(false); |
+ callback.Run(CONTENT_SETTING_BLOCK); |
return; |
} |