| 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..c23e60420b0b9c059988cf1b421759c1096e93c5 100644
|
| --- a/extensions/renderer/guest_view/extensions_guest_view_container.cc
|
| +++ b/extensions/renderer/guest_view/extensions_guest_view_container.cc
|
| @@ -141,7 +141,8 @@ ExtensionsGuestViewContainer::ExtensionsGuestViewContainer(
|
| content::RenderFrame* render_frame)
|
| : GuestViewContainer(render_frame),
|
| ready_(false),
|
| - destruction_isolate_(nullptr) {
|
| + destruction_isolate_(nullptr),
|
| + element_resize_isolate_(nullptr) {
|
| }
|
|
|
| ExtensionsGuestViewContainer::~ExtensionsGuestViewContainer() {
|
| @@ -162,7 +163,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 +187,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;
|
| +}
|
| +
|
| +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);
|
|
|