| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/renderer/guest_view/guest_view_internal_custom_bindings.h" | 5 #include "extensions/renderer/guest_view/guest_view_internal_custom_bindings.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "content/public/child/v8_value_converter.h" | 10 #include "content/public/child/v8_value_converter.h" |
| 11 #include "content/public/renderer/render_view.h" | 11 #include "content/public/renderer/render_view.h" |
| 12 #include "extensions/common/extension.h" | 12 #include "extensions/common/extension.h" |
| 13 #include "extensions/common/extension_messages.h" | 13 #include "extensions/common/extension_messages.h" |
| 14 #include "extensions/renderer/guest_view/extensions_guest_view_container.h" | 14 #include "extensions/renderer/guest_view/extensions_guest_view_container.h" |
| 15 #include "extensions/renderer/script_context.h" | 15 #include "extensions/renderer/script_context.h" |
| 16 #include "third_party/WebKit/public/web/WebFrame.h" |
| 17 #include "third_party/WebKit/public/web/WebView.h" |
| 16 #include "v8/include/v8.h" | 18 #include "v8/include/v8.h" |
| 17 | 19 |
| 18 using content::V8ValueConverter; | 20 using content::V8ValueConverter; |
| 19 | 21 |
| 20 namespace extensions { | 22 namespace extensions { |
| 21 | 23 |
| 22 GuestViewInternalCustomBindings::GuestViewInternalCustomBindings( | 24 GuestViewInternalCustomBindings::GuestViewInternalCustomBindings( |
| 23 ScriptContext* context) | 25 ScriptContext* context) |
| 24 : ObjectBackedNativeHandler(context) { | 26 : ObjectBackedNativeHandler(context) { |
| 25 RouteFunction("AttachGuest", | 27 RouteFunction("AttachGuest", |
| 26 base::Bind(&GuestViewInternalCustomBindings::AttachGuest, | 28 base::Bind(&GuestViewInternalCustomBindings::AttachGuest, |
| 27 base::Unretained(this))); | 29 base::Unretained(this))); |
| 28 RouteFunction("DetachGuest", | 30 RouteFunction("DetachGuest", |
| 29 base::Bind(&GuestViewInternalCustomBindings::DetachGuest, | 31 base::Bind(&GuestViewInternalCustomBindings::DetachGuest, |
| 30 base::Unretained(this))); | 32 base::Unretained(this))); |
| 33 RouteFunction("GetContentWindow", |
| 34 base::Bind(&GuestViewInternalCustomBindings::GetContentWindow, |
| 35 base::Unretained(this))); |
| 31 RouteFunction( | 36 RouteFunction( |
| 32 "RegisterDestructionCallback", | 37 "RegisterDestructionCallback", |
| 33 base::Bind(&GuestViewInternalCustomBindings::RegisterDestructionCallback, | 38 base::Bind(&GuestViewInternalCustomBindings::RegisterDestructionCallback, |
| 34 base::Unretained(this))); | 39 base::Unretained(this))); |
| 35 RouteFunction( | 40 RouteFunction( |
| 36 "RegisterElementResizeCallback", | 41 "RegisterElementResizeCallback", |
| 37 base::Bind( | 42 base::Bind( |
| 38 &GuestViewInternalCustomBindings::RegisterElementResizeCallback, | 43 &GuestViewInternalCustomBindings::RegisterElementResizeCallback, |
| 39 base::Unretained(this))); | 44 base::Unretained(this))); |
| 40 } | 45 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 new ExtensionsGuestViewContainer::DetachRequest( | 115 new ExtensionsGuestViewContainer::DetachRequest( |
| 111 guest_view_container, | 116 guest_view_container, |
| 112 args.Length() == 2 ? args[1].As<v8::Function>() : | 117 args.Length() == 2 ? args[1].As<v8::Function>() : |
| 113 v8::Handle<v8::Function>(), | 118 v8::Handle<v8::Function>(), |
| 114 args.GetIsolate())); | 119 args.GetIsolate())); |
| 115 guest_view_container->IssueRequest(request); | 120 guest_view_container->IssueRequest(request); |
| 116 | 121 |
| 117 args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true)); | 122 args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true)); |
| 118 } | 123 } |
| 119 | 124 |
| 125 void GuestViewInternalCustomBindings::GetContentWindow( |
| 126 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 127 // Default to returning null. |
| 128 args.GetReturnValue().SetNull(); |
| 129 |
| 130 if (args.Length() != 1) |
| 131 return; |
| 132 |
| 133 // The routing ID for the RenderView. |
| 134 if (!args[0]->IsInt32()) |
| 135 return; |
| 136 |
| 137 int view_id = args[0]->Int32Value(); |
| 138 if (view_id == MSG_ROUTING_NONE) |
| 139 return; |
| 140 |
| 141 content::RenderView* view = content::RenderView::FromRoutingID(view_id); |
| 142 if (!view) |
| 143 return; |
| 144 |
| 145 blink::WebFrame* frame = view->GetWebView()->mainFrame(); |
| 146 v8::Local<v8::Value> window = frame->mainWorldScriptContext()->Global(); |
| 147 args.GetReturnValue().Set(window); |
| 148 } |
| 149 |
| 120 void GuestViewInternalCustomBindings::RegisterDestructionCallback( | 150 void GuestViewInternalCustomBindings::RegisterDestructionCallback( |
| 121 const v8::FunctionCallbackInfo<v8::Value>& args) { | 151 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 122 // There are two parameters. | 152 // There are two parameters. |
| 123 CHECK(args.Length() == 2); | 153 CHECK(args.Length() == 2); |
| 124 // Element Instance ID. | 154 // Element Instance ID. |
| 125 CHECK(args[0]->IsInt32()); | 155 CHECK(args[0]->IsInt32()); |
| 126 // Callback function. | 156 // Callback function. |
| 127 CHECK(args[1]->IsFunction()); | 157 CHECK(args[1]->IsFunction()); |
| 128 | 158 |
| 129 int element_instance_id = args[0]->Int32Value(); | 159 int element_instance_id = args[0]->Int32Value(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 157 if (!guest_view_container) | 187 if (!guest_view_container) |
| 158 return; | 188 return; |
| 159 | 189 |
| 160 guest_view_container->RegisterElementResizeCallback( | 190 guest_view_container->RegisterElementResizeCallback( |
| 161 args[1].As<v8::Function>(), args.GetIsolate()); | 191 args[1].As<v8::Function>(), args.GetIsolate()); |
| 162 | 192 |
| 163 args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true)); | 193 args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true)); |
| 164 } | 194 } |
| 165 | 195 |
| 166 } // namespace extensions | 196 } // namespace extensions |
| OLD | NEW |