| Index: chrome/renderer/extensions/extension_process_bindings.cc
|
| ===================================================================
|
| --- chrome/renderer/extensions/extension_process_bindings.cc (revision 34039)
|
| +++ chrome/renderer/extensions/extension_process_bindings.cc (working copy)
|
| @@ -147,9 +147,20 @@
|
| if (extension_id != extension_id_)
|
| return true;
|
|
|
| - if (browser_window_id_ != -1 &&
|
| - render_view->browser_window_id() != browser_window_id_)
|
| - return true;
|
| + // If we are searching for a pop-up, it may be the case that the pop-up
|
| + // is not attached to a browser window instance. (It is hosted in a
|
| + // ExternalTabContainer.) If so, then bypass validation of
|
| + // same-browser-window origin.
|
| + // TODO(twiz): The browser window id of the views visited should always
|
| + // match that of the arguments to the accumulator.
|
| + // See bug: http://crbug.com/29646
|
| + if (!(view_type_ == ViewType::EXTENSION_POPUP &&
|
| + render_view->browser_window_id() == -1)) {
|
| + if (browser_window_id_ != -1 &&
|
| + render_view->browser_window_id() != browser_window_id_) {
|
| + return true;
|
| + }
|
| + }
|
|
|
| v8::Local<v8::Context> context =
|
| render_view->webview()->mainFrame()->mainWorldScriptContext();
|
|
|