summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/ui/zoom/zoom_controller.cc12
-rw-r--r--components/ui/zoom/zoom_controller.h6
-rw-r--r--extensions/browser/guest_view/guest_view_base.cc11
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) {