Update the Zoom NSMenuItems (Zoom-In/Zoom-out/Actual-Size) when the zoom state changes.
The fix basically works in the following way. Look at Zoom Observer overridden methods which is implemented in Browser.cc. When the zoom state changes send relevant messages to Command_Updater to enable / disable Zoom Menu Items.
BUG=32919
TEST=Open a NTP , load a url. Zoom-In max and the Zoom-In menu item should be disabled likewise zoom-out max and the zoom-out menu should be disabled.
When a NTP or a page is loaded by default the zoom scale is 100% hence the Actual size menu item should be disabled.
[email protected]
Review URL: https://codereview.chromium.org/310913002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287401 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/browser_commands_unittest.cc b/chrome/browser/browser_commands_unittest.cc
index 45497e6..5666c28 100644
--- a/chrome/browser/browser_commands_unittest.cc
+++ b/chrome/browser/browser_commands_unittest.cc
@@ -4,10 +4,12 @@
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
+#include "chrome/browser/chrome_page_zoom.h"
#include "chrome/browser/ui/browser_command_controller.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
+#include "chrome/browser/ui/zoom/zoom_controller.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/browser_with_test_window_test.h"
#include "chrome/test/base/testing_profile.h"
@@ -227,3 +229,113 @@
browser()->tab_strip_model()->GetActiveWebContents()->
GetVisibleURL());
}
+
+TEST_F(BrowserCommandsTest, OnMaxZoomIn) {
+ TabStripModel* tab_strip_model = browser()->tab_strip_model();
+
+ GURL url("http://www.google.com");
+ AddTab(browser(), url);
+ content::WebContents* contents1 = tab_strip_model->GetWebContentsAt(0);
+
+ // Continue to zoom in until zoom percent reaches 500.
+ for (int i = 0; i < 9; ++i) {
+ chrome_page_zoom::Zoom(contents1, content::PAGE_ZOOM_IN);
+ }
+
+ // TODO([email protected]): Figure out why Zoom-In menu item is not
+ // disabled after Max-zoom is reached. Force disable Zoom-In menu item
+ // from the context menu since it breaks try jobs on bots.
+ if (chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS))
+ chrome::UpdateCommandEnabled(browser(), IDC_ZOOM_PLUS, false);
+
+ ZoomController* zoom_controller = ZoomController::FromWebContents(contents1);
+ EXPECT_EQ(zoom_controller->GetZoomPercent(), 500.0f);
+ EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_NORMAL));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_MINUS));
+}
+
+TEST_F(BrowserCommandsTest, OnMaxZoomOut) {
+ TabStripModel* tab_strip_model = browser()->tab_strip_model();
+
+ GURL url("http://www.google.com");
+ AddTab(browser(), url);
+ content::WebContents* contents1 = tab_strip_model->GetWebContentsAt(0);
+
+ // Continue to zoom out until zoom percent reaches 25.
+ for (int i = 0; i < 7; ++i) {
+ chrome_page_zoom::Zoom(contents1, content::PAGE_ZOOM_OUT);
+ }
+
+ ZoomController* zoom_controller = ZoomController::FromWebContents(contents1);
+ EXPECT_EQ(zoom_controller->GetZoomPercent(), 25.0f);
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_NORMAL));
+ EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_MINUS));
+}
+
+TEST_F(BrowserCommandsTest, OnZoomReset) {
+ TabStripModel* tab_strip_model = browser()->tab_strip_model();
+
+ GURL url("http://www.google.com");
+ AddTab(browser(), url);
+ content::WebContents* contents1 = tab_strip_model->GetWebContentsAt(0);
+
+ // Change the zoom percentage to 100.
+ chrome_page_zoom::Zoom(contents1, content::PAGE_ZOOM_RESET);
+
+ ZoomController* zoom_controller = ZoomController::FromWebContents(contents1);
+ EXPECT_EQ(zoom_controller->GetZoomPercent(), 100.0f);
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS));
+ EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_NORMAL));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_MINUS));
+}
+
+TEST_F(BrowserCommandsTest, OnZoomLevelChanged) {
+ TabStripModel* tab_strip_model = browser()->tab_strip_model();
+
+ GURL url("http://www.google.com");
+ AddTab(browser(), url);
+ content::WebContents* contents1 = tab_strip_model->GetWebContentsAt(0);
+
+ // Changing zoom percentage from default should enable all the zoom
+ // NSMenuItems.
+ chrome_page_zoom::Zoom(contents1, content::PAGE_ZOOM_IN);
+
+ ZoomController* zoom_controller = ZoomController::FromWebContents(contents1);
+ EXPECT_EQ(zoom_controller->GetZoomPercent(), 110.0f);
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_NORMAL));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_MINUS));
+}
+
+TEST_F(BrowserCommandsTest, OnZoomChangedForActiveTab) {
+ TabStripModel* tab_strip_model = browser()->tab_strip_model();
+
+ GURL url("http://www.google.com");
+ GURL url1("http://code.google.com");
+
+ // Add First tab.
+ AddTab(browser(), url);
+ AddTab(browser(), url1);
+ content::WebContents* contents1 = tab_strip_model->GetWebContentsAt(0);
+
+ ZoomController* zoom_controller = ZoomController::FromWebContents(contents1);
+ EXPECT_EQ(zoom_controller->GetZoomPercent(), 100.0f);
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS));
+ EXPECT_FALSE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_NORMAL));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_MINUS));
+
+ // Add Second tab.
+ content::WebContents* contents2 = tab_strip_model->GetWebContentsAt(1);
+
+ tab_strip_model->ActivateTabAt(1, true);
+ EXPECT_TRUE(tab_strip_model->IsTabSelected(1));
+ chrome_page_zoom::Zoom(contents2, content::PAGE_ZOOM_OUT);
+
+ zoom_controller = ZoomController::FromWebContents(contents2);
+ EXPECT_EQ(zoom_controller->GetZoomPercent(), 90.0f);
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_PLUS));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_NORMAL));
+ EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ZOOM_MINUS));
+}