| Index: chrome/browser/renderer_host/render_view_host.cc
 | 
| diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
 | 
| index 41cbd002608fff8d722fc45aa992d42cf9ea7f82..95a53ddea2b1b1b3f729f87923dbd46b0e0832fd 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()) {
 | 
| 
 |