Index: extensions/renderer/guest_view/extensions_guest_view_container.cc |
diff --git a/extensions/renderer/guest_view/extensions_guest_view_container.cc b/extensions/renderer/guest_view/extensions_guest_view_container.cc |
index ca5960debd08b370f9822dd47d5473f775309148..d10e776266a18ec0cc411d91c17bc07bf836a014 100644 |
--- a/extensions/renderer/guest_view/extensions_guest_view_container.cc |
+++ b/extensions/renderer/guest_view/extensions_guest_view_container.cc |
@@ -162,7 +162,7 @@ ExtensionsGuestViewContainer::~ExtensionsGuestViewContainer() { |
v8::Context::Scope context_scope(context); |
blink::WebScopedMicrotaskSuppression suppression; |
- callback->Call(context->Global(), 0, nullptr); |
+ callback->Call(context->Global(), 0 /* argc */, nullptr); |
} |
ExtensionsGuestViewContainer* ExtensionsGuestViewContainer::FromID( |
@@ -186,6 +186,40 @@ void ExtensionsGuestViewContainer::RegisterDestructionCallback( |
destruction_isolate_ = isolate; |
} |
+void ExtensionsGuestViewContainer::RegisterElementResizeCallback( |
+ v8::Handle<v8::Function> callback, |
+ v8::Isolate* isolate) { |
+ element_resize_callback_.reset(callback); |
+ element_resize_isolate_ = isolate; |
Fady Samuel
2015/01/15 21:40:12
Initialize this in the constructor's initializer l
paulmeyer
2015/01/19 23:45:35
Done.
|
+} |
+ |
+void ExtensionsGuestViewContainer::OnElementResize(const gfx::Size& old_size, |
+ const gfx::Size& new_size) { |
+ // Call the element resize callback, if one is registered. |
+ if (element_resize_callback_.IsEmpty()) |
+ return; |
+ |
+ v8::HandleScope handle_scope(element_resize_isolate_); |
+ v8::Handle<v8::Function> callback = |
+ element_resize_callback_.NewHandle(element_resize_isolate_); |
+ v8::Handle<v8::Context> context = callback->CreationContext(); |
+ if (context.IsEmpty()) |
+ return; |
+ |
+ const int argc = 4; |
+ v8::Handle<v8::Value> argv[argc] = { |
+ v8::Integer::New(element_resize_isolate_, old_size.width()), |
+ v8::Integer::New(element_resize_isolate_, old_size.height()), |
+ v8::Integer::New(element_resize_isolate_, new_size.width()), |
+ v8::Integer::New(element_resize_isolate_, new_size.height()) |
+ }; |
+ |
+ v8::Context::Scope context_scope(context); |
+ blink::WebScopedMicrotaskSuppression suppression; |
+ |
+ callback->Call(context->Global(), argc, argv); |
+} |
+ |
bool ExtensionsGuestViewContainer::OnMessageReceived( |
const IPC::Message& message) { |
OnHandleCallback(message); |