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 f33f9dbb7a4e405bd671a0ed150238156160c639..71c33fa6dcb2f9524f5c19a5fe88fc9c27266d29 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 |
@@ -10,6 +10,9 @@ |
#include "chrome/browser/plugins/chrome_plugin_service_filter.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/render_messages.h" |
+#include "components/content_settings/core/common/permission_request_id.h" |
+#include "content/public/browser/render_process_host.h" |
+#include "content/public/browser/render_view_host.h" |
#include "content/public/browser/user_metrics.h" |
#include "extensions/browser/guest_view/web_view/web_view_constants.h" |
#include "extensions/browser/guest_view/web_view/web_view_guest.h" |
@@ -216,20 +219,31 @@ void ChromeWebViewPermissionHelperDelegate::OnGeolocationPermissionResponse( |
return; |
} |
+ content::WebContents* web_contents = |
+ web_view_guest()->embedder_web_contents(); |
+ int render_process_id = web_contents->GetRenderProcessHost()->GetID(); |
+ int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID(); |
+ |
+ const PermissionRequestID request_id( |
+ render_process_id, |
+ render_view_id, |
+ // The geolocation permission request here is not initiated |
+ // through WebGeolocationPermissionRequest. We are only interested |
+ // in the fact whether the embedder/app has geolocation |
+ // permission. Therefore we use an invalid |bridge_id|. |
+ -1, |
+ GURL()); |
+ |
Profile* profile = Profile::FromBrowserContext( |
web_view_guest()->browser_context()); |
GeolocationPermissionContextFactory::GetForProfile(profile)-> |
- RequestGeolocationPermission( |
- web_view_guest()->embedder_web_contents(), |
- // The geolocation permission request here is not initiated |
- // through WebGeolocationPermissionRequest. We are only interested |
- // in the fact whether the embedder/app has geolocation |
- // permission. Therefore we use an invalid |bridge_id|. |
- -1, |
- web_view_guest()->embedder_web_contents()->GetLastCommittedURL(), |
+ RequestPermission( |
+ web_contents, |
+ request_id, |
+ web_view_guest()->embedder_web_contents() |
+ ->GetLastCommittedURL().GetOrigin(), |
user_gesture, |
- callback, |
- NULL); |
+ callback); |
} |
void ChromeWebViewPermissionHelperDelegate::CancelGeolocationPermissionRequest( |