r168677 - in trunk/src/chrome: . browser/profiles browser/ui/zoom

2 views
Skip to first unread message

db...@chromium.org

unread,
Nov 19, 2012, 8:06:02 PM11/19/12
to chromium...@chromium.org
Author: db...@chromium.org
Date: Mon Nov 19 17:06:02 2012
New Revision: 168677

Log:
[zoom bubble] Add tests for ZoomController::UpdateState() handling empty hosts.

R=est...@chromium.org
BUG=161388
TEST=unit_tests --gtest_filter='ZoomControllerTest.*' passes on bots.

Review URL: https://chromiumcodereview.appspot.com/11414018

Added:
trunk/src/chrome/browser/ui/zoom/zoom_controller_unittest.cc (contents, props changed)
Modified:
trunk/src/chrome/browser/profiles/off_the_record_profile_impl_unittest.cc
trunk/src/chrome/browser/profiles/profile_impl.cc
trunk/src/chrome/browser/ui/zoom/zoom_controller.cc
trunk/src/chrome/browser/ui/zoom/zoom_controller.h
trunk/src/chrome/chrome_tests_unit.gypi

Modified: trunk/src/chrome/browser/profiles/off_the_record_profile_impl_unittest.cc
==============================================================================
--- trunk/src/chrome/browser/profiles/off_the_record_profile_impl_unittest.cc (original)
+++ trunk/src/chrome/browser/profiles/off_the_record_profile_impl_unittest.cc Mon Nov 19 17:06:02 2012
@@ -28,7 +28,7 @@
TestingProfileWithHostZoomMap() {
HostZoomMap* host_zoom_map = HostZoomMap::GetForBrowserContext(this);
registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED,
- content::Source<HostZoomMap>(host_zoom_map));
+ content::Source<HostZoomMap>(host_zoom_map));
}

virtual ~TestingProfileWithHostZoomMap() {}

Modified: trunk/src/chrome/browser/profiles/profile_impl.cc
==============================================================================
--- trunk/src/chrome/browser/profiles/profile_impl.cc (original)
+++ trunk/src/chrome/browser/profiles/profile_impl.cc Mon Nov 19 17:06:02 2012
@@ -539,7 +539,7 @@
}

registrar_.Add(this, content::NOTIFICATION_ZOOM_LEVEL_CHANGED,
- content::Source<HostZoomMap>(host_zoom_map));
+ content::Source<HostZoomMap>(host_zoom_map));
}

void ProfileImpl::InitPromoResources() {

Modified: trunk/src/chrome/browser/ui/zoom/zoom_controller.cc
==============================================================================
--- trunk/src/chrome/browser/ui/zoom/zoom_controller.cc (original)
+++ trunk/src/chrome/browser/ui/zoom/zoom_controller.cc Mon Nov 19 17:06:02 2012
@@ -40,10 +40,7 @@
UpdateState(std::string());
}

-ZoomController::~ZoomController() {
- default_zoom_level_.Destroy();
- registrar_.RemoveAll();
-}
+ZoomController::~ZoomController() {}

bool ZoomController::IsAtDefaultZoom() const {
return content::ZoomValuesEqual(web_contents()->GetZoomLevel(),

Modified: trunk/src/chrome/browser/ui/zoom/zoom_controller.h
==============================================================================
--- trunk/src/chrome/browser/ui/zoom/zoom_controller.h (original)
+++ trunk/src/chrome/browser/ui/zoom/zoom_controller.h Mon Nov 19 17:06:02 2012
@@ -36,11 +36,6 @@

void set_observer(ZoomObserver* observer) { observer_ = observer; }

- private:
- friend class content::WebContentsUserData<ZoomController>;
-
- explicit ZoomController(content::WebContents* web_contents);
-
// content::WebContentsObserver overrides:
virtual void DidNavigateMainFrame(
const content::LoadCommittedDetails& details,
@@ -51,6 +46,11 @@
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE;

+ private:
+ explicit ZoomController(content::WebContents* web_contents);
+ friend class content::WebContentsUserData<ZoomController>;
+ friend class ZoomControllerTest;
+
// Updates the zoom icon and zoom percentage based on current values and
// notifies the observer if changes have occurred. |host| may be empty,
// meaning the change should apply to ~all sites. If it is not empty, the

Added: trunk/src/chrome/browser/ui/zoom/zoom_controller_unittest.cc
==============================================================================
--- (empty file)
+++ trunk/src/chrome/browser/ui/zoom/zoom_controller_unittest.cc Mon Nov 19 17:06:02 2012
@@ -0,0 +1,81 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/message_loop.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/zoom/zoom_controller.h"
+#include "chrome/browser/ui/zoom/zoom_observer.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "chrome/test/base/testing_profile.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/host_zoom_map.h"
+#include "content/public/browser/navigation_details.h"
+#include "content/public/browser/notification_details.h"
+#include "content/public/browser/notification_source.h"
+#include "content/public/browser/notification_types.h"
+#include "content/public/common/frame_navigate_params.h"
+#include "content/public/test/test_browser_thread.h"
+#include "content/public/test/test_utils.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class TestZoomObserver : public ZoomObserver {
+ public:
+ MOCK_METHOD2(OnZoomChanged, void(content::WebContents*, bool));
+};
+
+class ZoomControllerTest : public ChromeRenderViewHostTestHarness {
+ public:
+ ZoomControllerTest()
+ : ui_thread_(content::BrowserThread::UI, MessageLoop::current()) {}
+
+ virtual void SetUp() OVERRIDE {
+ ChromeRenderViewHostTestHarness::SetUp();
+ zoom_controller_.reset(new ZoomController(web_contents()));
+ zoom_controller_->set_observer(&zoom_observer_);
+ }
+
+ virtual void TearDown() OVERRIDE {
+ zoom_controller_.reset();
+ ChromeRenderViewHostTestHarness::TearDown();
+ }
+
+ protected:
+ scoped_ptr<ZoomController> zoom_controller_;
+ TestZoomObserver zoom_observer_;
+
+ private:
+ content::TestBrowserThread ui_thread_;
+ DISALLOW_COPY_AND_ASSIGN(ZoomControllerTest);
+};
+
+TEST_F(ZoomControllerTest, DidNavigateMainFrame) {
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(web_contents(), false)).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);
+}
+
+TEST_F(ZoomControllerTest, Observe) {
+ EXPECT_CALL(zoom_observer_, OnZoomChanged(web_contents(), false)).Times(1);
+
+ content::HostZoomMap* host_zoom_map =
+ content::HostZoomMap::GetForBrowserContext(
+ web_contents()->GetBrowserContext());
+
+ content::WindowedNotificationObserver notification_observer(
+ content::NOTIFICATION_ZOOM_LEVEL_CHANGED,
+ content::NotificationService::AllSources());
+
+ host_zoom_map->SetZoomLevel(std::string(), 110.0f);
+
+ notification_observer.Wait();
+}

Modified: trunk/src/chrome/chrome_tests_unit.gypi
==============================================================================
--- trunk/src/chrome/chrome_tests_unit.gypi (original)
+++ trunk/src/chrome/chrome_tests_unit.gypi Mon Nov 19 17:06:02 2012
@@ -1419,6 +1419,7 @@
'browser/ui/window_sizer/window_sizer_common_unittest.cc',
'browser/ui/window_sizer/window_sizer_unittest.cc',
'browser/ui/window_snapshot/window_snapshot_mac_unittest.mm',
+ 'browser/ui/zoom/zoom_controller_unittest.cc',
'browser/chrome_to_mobile_service_unittest.cc',
'browser/user_style_sheet_watcher_unittest.cc',
'browser/value_store/leveldb_value_store_unittest.cc',
Reply all
Reply to author
Forward
0 new messages