Chromium Code Reviews| Index: extensions/browser/guest_view/guest_view_base.cc |
| diff --git a/extensions/browser/guest_view/guest_view_base.cc b/extensions/browser/guest_view/guest_view_base.cc |
| index f78adeedeffff437225c7544645baae6f176d6dd..057b073c8743ef00a690296bd222cf224d99c96e 100644 |
| --- a/extensions/browser/guest_view/guest_view_base.cc |
| +++ b/extensions/browser/guest_view/guest_view_base.cc |
| @@ -225,6 +225,21 @@ void GuestViewBase::InitWithWebContents( |
| DidInitialize(create_params); |
| } |
| +void GuestViewBase::DispatchOnResizeEvent(const gfx::Size& old_size, |
| + const gfx::Size& new_size) { |
| + if (new_size == old_size) |
| + return; |
| + |
| + // Dispatch the onResize event. |
| + scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
| + args->SetInteger(guestview::kOldWidth, old_size.width()); |
| + args->SetInteger(guestview::kOldHeight, old_size.height()); |
| + args->SetInteger(guestview::kNewWidth, new_size.width()); |
| + args->SetInteger(guestview::kNewHeight, new_size.height()); |
| + DispatchEventToGuestProxy( |
| + new GuestViewBase::Event(guestview::kEventResize, args.Pass())); |
|
Fady Samuel
2015/01/19 23:57:01
Is GuestViewBase:: necessary?
paulmeyer
2015/01/20 00:24:38
Done.
|
| +} |
| + |
| void GuestViewBase::SetAutoSize(bool enabled, |
| const gfx::Size& min_size, |
| const gfx::Size& max_size) { |
| @@ -248,8 +263,9 @@ void GuestViewBase::SetAutoSize(bool enabled, |
| rvh->EnableAutoResize(min_auto_size_, max_auto_size_); |
| } else { |
| rvh->DisableAutoResize(element_size_); |
| - guest_size_ = element_size_; |
| + DispatchOnResizeEvent(guest_size_, element_size_); |
| GuestSizeChangedDueToAutoSize(guest_size_, element_size_); |
| + guest_size_ = element_size_; |
| } |
| } |
| @@ -365,8 +381,11 @@ void GuestViewBase::ElementSizeChanged(const gfx::Size& size) { |
| element_size_ = size; |
| // Only resize if needed. |
| - if (!size.IsEmpty()) |
| + if (!size.IsEmpty()) { |
| guest_sizer_->SizeContents(size); |
| + DispatchOnResizeEvent(guest_size_, size); |
|
Fady Samuel
2015/01/19 23:57:01
Can we avoid an extra call to this? Doesn't GuestS
paulmeyer
2015/01/20 00:24:38
Done.
|
| + guest_size_ = size; |
| + } |
| } |
| WebContents* GuestViewBase::GetOwnerWebContents() const { |
| @@ -378,6 +397,7 @@ void GuestViewBase::GuestSizeChanged(const gfx::Size& old_size, |
| if (!auto_size_enabled_) |
| return; |
| guest_size_ = new_size; |
| + DispatchOnResizeEvent(old_size, new_size); |
| GuestSizeChangedDueToAutoSize(old_size, new_size); |
| } |
| @@ -558,17 +578,26 @@ void GuestViewBase::OnZoomChanged( |
| ->SetZoomLevel(data.new_zoom_level); |
| } |
| -void GuestViewBase::DispatchEventToEmbedder(Event* event) { |
| - scoped_ptr<Event> event_ptr(event); |
| +void GuestViewBase::DispatchEventToGuestProxy(Event* event) { |
| + DispatchEvent(event, guest_instance_id_); |
| +} |
| +void GuestViewBase::DispatchEventToView(Event* event) { |
| if (!attached() && |
| (!CanRunInDetachedState() || !can_owner_receive_events())) { |
| - pending_events_.push_back(linked_ptr<Event>(event_ptr.release())); |
| + pending_events_.push_back(linked_ptr<Event>(event)); |
| return; |
| } |
| + DispatchEvent(event, view_instance_id_); |
| +} |
| + |
| +void GuestViewBase::DispatchEvent(Event* event, int instance_id) { |
| + scoped_ptr<Event> event_ptr(event); |
| + |
| EventFilteringInfo info; |
| - info.SetInstanceID(view_instance_id_); |
| + info.SetInstanceID(instance_id); |
| + |
|
Fady Samuel
2015/01/19 23:57:01
Is there whitespace here?
paulmeyer
2015/01/20 00:24:38
Yes. Taken out.
|
| scoped_ptr<base::ListValue> args(new base::ListValue()); |
| args->Append(event->GetArguments().release()); |
| @@ -588,7 +617,7 @@ void GuestViewBase::SendQueuedEvents() { |
| while (!pending_events_.empty()) { |
| linked_ptr<Event> event_ptr = pending_events_.front(); |
| pending_events_.pop_front(); |
| - DispatchEventToEmbedder(event_ptr.release()); |
| + DispatchEvent(event_ptr.release(), view_instance_id_); |
| } |
| } |