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

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

Issue 787813004: Move ZoomController out of ChromeWebViewGuestDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix attach logic in GuestViewBase::DidAttach(). Created 6 years 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 7936ee7db08e47c4d16e79ba514f9e6829d1a05c..7f2e2cd81abf49df5f180217a2bc491dee6eff68 100644
--- a/extensions/browser/guest_view/guest_view_base.cc
+++ b/extensions/browser/guest_view/guest_view_base.cc
@@ -6,6 +6,7 @@
#include "base/lazy_instance.h"
#include "base/strings/utf_string_conversions.h"
+#include "components/ui/zoom/zoom_controller.h"
#include "content/public/browser/navigation_details.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
@@ -209,6 +210,12 @@ void GuestViewBase::InitWithWebContents(
GuestViewManager::FromBrowserContext(browser_context_)->
AddGuest(guest_instance_id_, guest_web_contents);
+ // Create a zoom controller for the guest contents give it access to
+ // GetZoomLevel() and and SetZoomLevel() in WebViewGuest.
Fady Samuel 2014/12/09 20:09:46 This comment is no longer correct as this code liv
wjmaclean 2014/12/09 20:50:04 Done.
+ // TODO(wjmaclean): Verify that |guest_web_contents| is the right value to
+ // pass here.
Fady Samuel 2014/12/09 20:09:46 This looks right to me.
wjmaclean 2014/12/09 20:50:04 Acknowledged.
+ ui_zoom::ZoomController::CreateForWebContents(guest_web_contents);
+
// Give the derived class an opportunity to perform additional initialization.
DidInitialize();
}
@@ -298,6 +305,14 @@ bool GuestViewBase::IsGuest(WebContents* web_contents) {
return !!GuestViewBase::FromWebContents(web_contents);
}
+void GuestViewBase::EmbedderWillBeDestroyed() {
+ ui_zoom::ZoomController* zoom_controller =
+ ui_zoom::ZoomController::FromWebContents(embedder_web_contents());
+ if (!zoom_controller)
+ return;
+ zoom_controller->RemoveObserver(this);
+}
+
bool GuestViewBase::IsAutoSizeSupported() const {
return false;
}
@@ -309,6 +324,17 @@ bool GuestViewBase::IsDragAndDropEnabled() const {
void GuestViewBase::DidAttach(int guest_proxy_routing_id) {
opener_lifetime_observer_.reset();
+ // Any zoom events from the embedder should be relayed to the guest.
+ ui_zoom::ZoomController* zoom_controller =
+ ui_zoom::ZoomController::FromWebContents(embedder_web_contents());
+ if (zoom_controller) {
+ // Listen to the embedder's zoom changes.
+ zoom_controller->AddObserver(this);
+ // Set the guest's initial zoom level to be equal to the embedder's.
+ ui_zoom::ZoomController::FromWebContents(web_contents())
+ ->SetZoomLevel(zoom_controller->GetZoomLevel());
+ }
+
// Give the derived class an opportunity to perform some actions.
DidAttachToEmbedder();
@@ -485,6 +511,12 @@ bool GuestViewBase::PreHandleGestureEvent(content::WebContents* source,
GuestViewBase::~GuestViewBase() {
}
+void GuestViewBase::OnZoomChanged(
+ const ui_zoom::ZoomController::ZoomChangedEventData& data) {
+ ui_zoom::ZoomController::FromWebContents(web_contents())
Fady Samuel 2014/12/09 20:09:46 It would be nice to add a comment here that updati
wjmaclean 2014/12/09 20:50:04 Done.
+ ->SetZoomLevel(data.new_zoom_level);
+}
+
void GuestViewBase::DispatchEventToEmbedder(Event* event) {
scoped_ptr<Event> event_ptr(event);

Powered by Google App Engine
This is Rietveld 408576698