| 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 e3bfc924f2cb2f1abdae72804f1179212c514c76..606344214453c6bd6ca0c2689293f44779f643a2 100644
|
| --- a/chrome/browser/geolocation/chrome_geolocation_permission_context.cc
|
| +++ b/chrome/browser/geolocation/chrome_geolocation_permission_context.cc
|
| @@ -45,13 +45,14 @@ void ChromeGeolocationPermissionContext::RequestGeolocationPermission(
|
| int bridge_id,
|
| const GURL& requesting_frame,
|
| base::Callback<void(bool)> callback) {
|
| + GURL requesting_frame_origin = requesting_frame.GetOrigin();
|
| if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) {
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::UI, FROM_HERE,
|
| base::Bind(
|
| &ChromeGeolocationPermissionContext::RequestGeolocationPermission,
|
| this, render_process_id, render_view_id, bridge_id,
|
| - requesting_frame, callback));
|
| + requesting_frame_origin, callback));
|
| return;
|
| }
|
|
|
| @@ -68,14 +69,14 @@ void ChromeGeolocationPermissionContext::RequestGeolocationPermission(
|
| if (extension_service) {
|
| const extensions::Extension* extension =
|
| extension_service->extensions()->GetExtensionOrAppByURL(
|
| - requesting_frame);
|
| + requesting_frame_origin);
|
| if (IsExtensionWithPermissionOrSuggestInConsole(APIPermission::kGeolocation,
|
| extension,
|
| profile_)) {
|
| // Make sure the extension is in the calling process.
|
| if (extension_service->process_map()->Contains(extension->id(),
|
| id.render_process_id())) {
|
| - NotifyPermissionSet(id, requesting_frame, callback, true);
|
| + NotifyPermissionSet(id, requesting_frame_origin, callback, true);
|
| return;
|
| }
|
| }
|
| @@ -90,20 +91,20 @@ void ChromeGeolocationPermissionContext::RequestGeolocationPermission(
|
| LOG(WARNING) << "Attempt to use geolocation tabless renderer: "
|
| << id.ToString()
|
| << " (can't prompt user without a visible tab)";
|
| - NotifyPermissionSet(id, requesting_frame, callback, false);
|
| + NotifyPermissionSet(id, requesting_frame_origin, callback, false);
|
| return;
|
| }
|
|
|
| - GURL embedder = web_contents->GetURL();
|
| - if (!requesting_frame.is_valid() || !embedder.is_valid()) {
|
| + GURL embedder = web_contents->GetLastCommittedURL().GetOrigin();
|
| + if (!requesting_frame_origin.is_valid() || !embedder.is_valid()) {
|
| LOG(WARNING) << "Attempt to use geolocation from an invalid URL: "
|
| - << requesting_frame << "," << embedder
|
| + << requesting_frame_origin << "," << embedder
|
| << " (geolocation is not supported in popups)";
|
| - NotifyPermissionSet(id, requesting_frame, callback, false);
|
| + NotifyPermissionSet(id, requesting_frame_origin, callback, false);
|
| return;
|
| }
|
|
|
| - DecidePermission(id, requesting_frame, embedder, callback);
|
| + DecidePermission(id, requesting_frame_origin, embedder, callback);
|
| }
|
|
|
| void ChromeGeolocationPermissionContext::CancelGeolocationPermissionRequest(
|
|
|