Index: chrome/browser/ui/zoom/zoom_controller_unittest.cc |
diff --git a/chrome/browser/ui/zoom/zoom_controller_unittest.cc b/chrome/browser/ui/zoom/zoom_controller_unittest.cc |
index cba7933eef340254d99e31d9b7bc48a618e77919..2e36d74debfd1a6a9715c2ad56cf88e9b7ab8ccd 100644 |
--- a/chrome/browser/ui/zoom/zoom_controller_unittest.cc |
+++ b/chrome/browser/ui/zoom/zoom_controller_unittest.cc |
@@ -18,9 +18,19 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+bool operator==(const ZoomController::ZoomChangedEventData& lhs, |
+ const ZoomController::ZoomChangedEventData& rhs) { |
+ return lhs.web_contents == rhs.web_contents && |
+ lhs.old_zoom_level == rhs.old_zoom_level && |
+ lhs.new_zoom_level == rhs.new_zoom_level && |
+ lhs.zoom_mode == rhs.zoom_mode && |
+ lhs.can_show_bubble == rhs.can_show_bubble; |
+} |
+ |
class TestZoomObserver : public ZoomObserver { |
public: |
- MOCK_METHOD2(OnZoomChanged, void(content::WebContents*, bool)); |
+ MOCK_METHOD1(OnZoomChanged, |
+ void(const ZoomController::ZoomChangedEventData&)); |
}; |
class ZoomControllerTest : public ChromeRenderViewHostTestHarness { |
@@ -28,10 +38,11 @@ class ZoomControllerTest : public ChromeRenderViewHostTestHarness { |
virtual void SetUp() OVERRIDE { |
ChromeRenderViewHostTestHarness::SetUp(); |
zoom_controller_.reset(new ZoomController(web_contents())); |
- zoom_controller_->set_observer(&zoom_observer_); |
+ zoom_controller_->AddObserver(&zoom_observer_); |
} |
virtual void TearDown() OVERRIDE { |
+ zoom_controller_->RemoveObserver(&zoom_observer_); |
zoom_controller_.reset(); |
ChromeRenderViewHostTestHarness::TearDown(); |
} |
@@ -42,22 +53,75 @@ class ZoomControllerTest : public ChromeRenderViewHostTestHarness { |
}; |
TEST_F(ZoomControllerTest, DidNavigateMainFrame) { |
- EXPECT_CALL(zoom_observer_, OnZoomChanged(web_contents(), false)).Times(1); |
+ double zoom_level = zoom_controller_->GetZoomLevel(); |
+ ZoomController::ZoomChangedEventData zoom_change_data( |
+ web_contents(), |
+ zoom_level, |
+ zoom_level, |
+ ZoomController::ZOOM_MODE_DEFAULT, |
+ false); |
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(zoom_change_data)).Times(1); |
zoom_controller_->DidNavigateMainFrame(content::LoadCommittedDetails(), |
content::FrameNavigateParams()); |
} |
TEST_F(ZoomControllerTest, OnPreferenceChanged) { |
- EXPECT_CALL(zoom_observer_, OnZoomChanged(web_contents(), false)).Times(1); |
- profile()->GetPrefs()->SetDouble(prefs::kDefaultZoomLevel, 110.0f); |
+ double zoom_level = zoom_controller_->GetZoomLevel(); |
+ // Note that while the change in the default zoom level triggers an event, |
+ // the current zoom level for this web contents does not change since the |
+ // default zoom level in HostZoomMap is not updated. |
+ // TODO(wjmaclean) Make sure changes to the default zoom level in preferences |
+ // propagate to HostZoomMap. http://crbug.com/391484 |
+ ZoomController::ZoomChangedEventData zoom_change_data( |
+ web_contents(), |
+ zoom_level, |
+ zoom_level, |
+ ZoomController::ZOOM_MODE_DEFAULT, |
+ false); |
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(zoom_change_data)).Times(1); |
+ profile()->GetPrefs()->SetDouble(prefs::kDefaultZoomLevel, 110.0); |
} |
TEST_F(ZoomControllerTest, Observe) { |
- EXPECT_CALL(zoom_observer_, OnZoomChanged(web_contents(), false)).Times(1); |
+ double new_zoom_level = 110.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, |
+ false); |
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(zoom_change_data)).Times(1); |
content::HostZoomMap* host_zoom_map = |
content::HostZoomMap::GetForBrowserContext( |
web_contents()->GetBrowserContext()); |
- host_zoom_map->SetZoomLevelForHost(std::string(), 110.0f); |
+ host_zoom_map->SetZoomLevelForHost(std::string(), new_zoom_level); |
+} |
+ |
+TEST_F(ZoomControllerTest, Observe_ZoomController) { |
+ double old_zoom_level = zoom_controller_->GetZoomLevel(); |
+ double new_zoom_level = 110.0; |
+ |
+ ZoomController::ZoomChangedEventData zoom_change_data1( |
+ web_contents(), |
+ old_zoom_level, |
+ old_zoom_level, |
+ ZoomController::ZOOM_MODE_ISOLATED, |
+ true /* can_show_bubble */); |
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(zoom_change_data1)).Times(1); |
+ |
+ zoom_controller_->SetZoomMode(ZoomController::ZOOM_MODE_ISOLATED); |
+ |
+ ZoomController::ZoomChangedEventData zoom_change_data2( |
+ web_contents(), |
+ old_zoom_level, |
+ new_zoom_level, |
+ ZoomController::ZOOM_MODE_ISOLATED, |
+ true /* can_show_bubble */); |
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(zoom_change_data2)).Times(1); |
+ |
+ zoom_controller_->SetZoomLevel(new_zoom_level); |
} |