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_); |
} |
} |