Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: extensions/browser/guest_view/guest_view_base.cc

Issue 856563002: Added the infrastructure for surfaceProxy.onResize() and SurfaceView.onResize() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments. Added a bit more infrastructure than in the previous patch. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_);
}
}

Powered by Google App Engine
This is Rietveld 408576698