Migrate HostZoomMap to live in StoragePartition.
This CL changes the persistence of host zoom levels to be on
a per-storage-partition basis, as opposed to (the current)
per-profile basis. This is needed to allow WebView content
(withing apps) to keep their zoom levels independent of those
in the main browser window.
BUG=335317
Review URL: https://codereview.chromium.org/393133002
Cr-Commit-Position: refs/heads/master@{#303841}
diff --git a/chrome/browser/ui/zoom/zoom_controller_browsertest.cc b/chrome/browser/ui/zoom/zoom_controller_browsertest.cc
index 36a211489..4d0ffd5 100644
--- a/chrome/browser/ui/zoom/zoom_controller_browsertest.cc
+++ b/chrome/browser/ui/zoom/zoom_controller_browsertest.cc
@@ -20,8 +20,6 @@
#include "content/public/test/browser_test_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
-typedef InProcessBrowserTest ZoomControllerBrowserTest;
-
bool operator==(const ZoomController::ZoomChangedEventData& lhs,
const ZoomController::ZoomChangedEventData& rhs) {
return lhs.web_contents == rhs.web_contents &&
@@ -59,7 +57,17 @@
DISALLOW_COPY_AND_ASSIGN(ZoomChangedWatcher);
};
-// TODO(wjmaclean): Enable this on Android when we can kill the process there.
+class TestZoomObserver : public ZoomObserver {
+ public:
+ MOCK_METHOD1(OnZoomChanged,
+ void(const ZoomController::ZoomChangedEventData&));
+};
+
+class ZoomControllerBrowserTest: public InProcessBrowserTest {
+ protected:
+ TestZoomObserver zoom_observer_;
+};
+
#if defined(OS_ANDROID)
#define MAYBE_CrashedTabsDoNotChangeZoom DISABLED_CrashedTabsDoNotChangeZoom
#else
@@ -133,3 +141,28 @@
zoom_controller->SetZoomLevel(new_zoom_level);
EXPECT_FLOAT_EQ(new_zoom_level, zoom_controller->GetZoomLevel());
}
+
+IN_PROC_BROWSER_TEST_F(ZoomControllerBrowserTest, Observe) {
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+ ZoomController* zoom_controller =
+ ZoomController::FromWebContents(web_contents);
+ zoom_controller->AddObserver(&zoom_observer_);
+
+ double new_zoom_level = 1.0;
+ // When the event is initiated from HostZoomMap, the old zoom level is not
+ // available.
+ ZoomController::ZoomChangedEventData zoom_change_data(
+ web_contents,
+ new_zoom_level,
+ new_zoom_level,
+ ZoomController::ZOOM_MODE_DEFAULT,
+ true); // We have a non-empty host, so this will be 'true'.
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(zoom_change_data)).Times(1);
+
+ content::HostZoomMap* host_zoom_map =
+ content::HostZoomMap::GetDefaultForBrowserContext(
+ web_contents->GetBrowserContext());
+
+ host_zoom_map->SetZoomLevelForHost("about:blank", new_zoom_level);
+}