Index: content/browser/geolocation/geolocation_dispatcher_host.cc |
diff --git a/content/browser/geolocation/geolocation_dispatcher_host.cc b/content/browser/geolocation/geolocation_dispatcher_host.cc |
index ad1f2fcc4441f138726f67d6f0e8e049302e5962..43455bd7d360be95989705effb101f35274edff5 100644 |
--- a/content/browser/geolocation/geolocation_dispatcher_host.cc |
+++ b/content/browser/geolocation/geolocation_dispatcher_host.cc |
@@ -21,6 +21,8 @@ |
namespace content { |
namespace { |
+const char kGeolocationPermission[] = "geolocation"; |
+ |
// Geoposition error codes for reporting in UMA. |
enum GeopositionErrorCode { |
// NOTE: Do not renumber these as that would confuse interpretation of |
@@ -130,6 +132,16 @@ void GeolocationDispatcherHost::OnLocationUpdate( |
for (std::map<RenderFrameHost*, bool>::iterator i = updating_frames_.begin(); |
i != updating_frames_.end(); ++i) { |
+ RenderFrameHost* topFrame = i->first; |
+ while (topFrame->GetParent()) { |
+ topFrame = topFrame->GetParent(); |
+ } |
+ GetContentClient()->browser()->UseContentSettingPermission( |
+ web_contents(), |
+ i->first->GetLastCommittedURL().GetOrigin(), |
+ topFrame->GetLastCommittedURL().GetOrigin(), |
+ kGeolocationPermission); |
+ |
i->first->Send(new GeolocationMsg_PositionUpdated( |
i->first->GetRoutingID(), geoposition)); |
} |