diff options
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.cc | 9 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.h | 6 |
2 files changed, 13 insertions, 2 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc index 41cbd00..95a53dd 100644 --- a/chrome/browser/renderer_host/render_view_host.cc +++ b/chrome/browser/renderer_host/render_view_host.cc @@ -1609,7 +1609,9 @@ void RenderViewHost::OnExtensionRequest(const std::string& name, bool has_callback) { if (!ChildProcessSecurityPolicy::GetInstance()-> HasExtensionBindings(process()->id())) { - NOTREACHED() << "Blocked unauthorized use of extension bindings."; + // This can happen if someone uses window.open() to open an extension URL + // from a non-extension context. + BlockExtensionRequest(request_id); return; } @@ -1623,6 +1625,11 @@ void RenderViewHost::SendExtensionResponse(int request_id, bool success, response, error)); } +void RenderViewHost::BlockExtensionRequest(int request_id) { + SendExtensionResponse(request_id, false, "", + "Access to extension API denied."); +} + void RenderViewHost::OnExtensionPostMessage( int port_id, const std::string& message) { if (process()->profile()->GetExtensionMessageService()) { diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h index 6381ef1..0fe33e8 100644 --- a/chrome/browser/renderer_host/render_view_host.h +++ b/chrome/browser/renderer_host/render_view_host.h @@ -418,11 +418,15 @@ class RenderViewHost : public RenderWidgetHost, // Creates a new RenderWidget with the given route id. void CreateNewWidget(int route_id, bool activatable); - // Senf the response to an extension api call. + // Send the response to an extension api call. void SendExtensionResponse(int request_id, bool success, const std::string& response, const std::string& error); + // Send a response to an extension api call that it was blocked for lack of + // permission. + void BlockExtensionRequest(int request_id); + void SignalModalDialogEvent(); void ResetModalDialogEvent(); |