diff options
-rw-r--r-- | components/ui/zoom/zoom_controller.cc | 12 | ||||
-rw-r--r-- | components/ui/zoom/zoom_controller.h | 6 | ||||
-rw-r--r-- | extensions/browser/guest_view/guest_view_base.cc | 11 |
3 files changed, 21 insertions, 8 deletions
diff --git a/components/ui/zoom/zoom_controller.cc b/components/ui/zoom/zoom_controller.cc index a56aaa9..14a5700 100644 --- a/components/ui/zoom/zoom_controller.cc +++ b/components/ui/zoom/zoom_controller.cc @@ -20,6 +20,18 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(ui_zoom::ZoomController); namespace ui_zoom { +double ZoomController::GetZoomLevelForWebContents( + const content::WebContents* web_contents) { + if (!web_contents) + return 0.0; + + auto zoom_controller = FromWebContents(web_contents); + if (zoom_controller) + return zoom_controller->GetZoomLevel(); + + return content::HostZoomMap::GetZoomLevel(web_contents); +} + ZoomController::ZoomController(content::WebContents* web_contents) : content::WebContentsObserver(web_contents), can_show_bubble_(true), diff --git a/components/ui/zoom/zoom_controller.h b/components/ui/zoom/zoom_controller.h index 8e22ad2..ff78b86 100644 --- a/components/ui/zoom/zoom_controller.h +++ b/components/ui/zoom/zoom_controller.h @@ -86,6 +86,12 @@ class ZoomController : public content::WebContentsObserver, bool can_show_bubble; }; + // Since it's possible for a WebContents to not have a ZoomController, provide + // a simple, safe and reliable method to find the current zoom level for a + // given WebContents*. + static double GetZoomLevelForWebContents( + const content::WebContents* web_contents); + ~ZoomController() override; ZoomMode zoom_mode() const { return zoom_mode_; } diff --git a/extensions/browser/guest_view/guest_view_base.cc b/extensions/browser/guest_view/guest_view_base.cc index c19a941..9a00f07 100644 --- a/extensions/browser/guest_view/guest_view_base.cc +++ b/extensions/browser/guest_view/guest_view_base.cc @@ -773,14 +773,9 @@ double GuestViewBase::GetEmbedderZoomFactor() { if (!embedder_web_contents()) return 1.0; - auto zoom_controller = - ui_zoom::ZoomController::FromWebContents(embedder_web_contents()); - if (!zoom_controller) - return 1.0; - - double zoom_factor = - content::ZoomLevelToZoomFactor(zoom_controller->GetZoomLevel()); - return zoom_factor; + return content::ZoomLevelToZoomFactor( + ui_zoom::ZoomController::GetZoomLevelForWebContents( + embedder_web_contents())); } void GuestViewBase::SetUpSizing(const base::DictionaryValue& params) { |