| Index: extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc
|
| diff --git a/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc b/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc
|
| index 49dae796c2e27425c25b40e0a971df453ad28f85..0711b2ad039428631481f6141da6c8b89bb49d5c 100644
|
| --- a/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc
|
| +++ b/extensions/renderer/guest_view/guest_view_internal_custom_bindings.cc
|
| @@ -13,6 +13,8 @@
|
| #include "extensions/common/extension_messages.h"
|
| #include "extensions/renderer/guest_view/extensions_guest_view_container.h"
|
| #include "extensions/renderer/script_context.h"
|
| +#include "third_party/WebKit/public/web/WebFrame.h"
|
| +#include "third_party/WebKit/public/web/WebView.h"
|
| #include "v8/include/v8.h"
|
|
|
| using content::V8ValueConverter;
|
| @@ -28,6 +30,9 @@ GuestViewInternalCustomBindings::GuestViewInternalCustomBindings(
|
| RouteFunction("DetachGuest",
|
| base::Bind(&GuestViewInternalCustomBindings::DetachGuest,
|
| base::Unretained(this)));
|
| + RouteFunction("GetContentWindow",
|
| + base::Bind(&GuestViewInternalCustomBindings::GetContentWindow,
|
| + base::Unretained(this)));
|
| RouteFunction(
|
| "RegisterDestructionCallback",
|
| base::Bind(&GuestViewInternalCustomBindings::RegisterDestructionCallback,
|
| @@ -117,6 +122,31 @@ void GuestViewInternalCustomBindings::DetachGuest(
|
| args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true));
|
| }
|
|
|
| +void GuestViewInternalCustomBindings::GetContentWindow(
|
| + const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| + // Default to returning null.
|
| + args.GetReturnValue().SetNull();
|
| +
|
| + if (args.Length() != 1)
|
| + return;
|
| +
|
| + // The routing ID for the RenderView.
|
| + if (!args[0]->IsInt32())
|
| + return;
|
| +
|
| + int view_id = args[0]->Int32Value();
|
| + if (view_id == MSG_ROUTING_NONE)
|
| + return;
|
| +
|
| + content::RenderView* view = content::RenderView::FromRoutingID(view_id);
|
| + if (!view)
|
| + return;
|
| +
|
| + blink::WebFrame* frame = view->GetWebView()->mainFrame();
|
| + v8::Local<v8::Value> window = frame->mainWorldScriptContext()->Global();
|
| + args.GetReturnValue().Set(window);
|
| +}
|
| +
|
| void GuestViewInternalCustomBindings::RegisterDestructionCallback(
|
| const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| // There are two parameters.
|
|
|