| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/toolbar/wrench_menu_model.h" | 5 #include "chrome/browser/ui/toolbar/app_menu_model.h" |
| 6 | 6 |
| 7 #include "chrome/app/chrome_command_ids.h" | 7 #include "chrome/app/chrome_command_ids.h" |
| 8 #include "chrome/browser/defaults.h" | 8 #include "chrome/browser/defaults.h" |
| 9 #include "chrome/browser/prefs/browser_prefs.h" | 9 #include "chrome/browser/prefs/browser_prefs.h" |
| 10 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" | 10 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" |
| 11 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
| 12 #include "chrome/browser/ui/global_error/global_error.h" | 12 #include "chrome/browser/ui/global_error/global_error.h" |
| 13 #include "chrome/browser/ui/global_error/global_error_service.h" | 13 #include "chrome/browser/ui/global_error/global_error_service.h" |
| 14 #include "chrome/browser/ui/global_error/global_error_service_factory.h" | 14 #include "chrome/browser/ui/global_error/global_error_service_factory.h" |
| 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 46 | 46 |
| 47 private: | 47 private: |
| 48 int command_id_; | 48 int command_id_; |
| 49 int execute_count_; | 49 int execute_count_; |
| 50 | 50 |
| 51 DISALLOW_COPY_AND_ASSIGN(MenuError); | 51 DISALLOW_COPY_AND_ASSIGN(MenuError); |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 } // namespace | 54 } // namespace |
| 55 | 55 |
| 56 class WrenchMenuModelTest : public BrowserWithTestWindowTest, | 56 class AppMenuModelTest : public BrowserWithTestWindowTest, |
| 57 public ui::AcceleratorProvider { | 57 public ui::AcceleratorProvider { |
| 58 public: | 58 public: |
| 59 // Don't handle accelerators. | 59 // Don't handle accelerators. |
| 60 bool GetAcceleratorForCommandId(int command_id, | 60 bool GetAcceleratorForCommandId(int command_id, |
| 61 ui::Accelerator* accelerator) override { | 61 ui::Accelerator* accelerator) override { |
| 62 return false; | 62 return false; |
| 63 } | 63 } |
| 64 | 64 |
| 65 protected: | 65 protected: |
| 66 void SetUp() override { | 66 void SetUp() override { |
| 67 prefs_.reset(new TestingPrefServiceSimple()); | 67 prefs_.reset(new TestingPrefServiceSimple()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 78 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); | 78 TestingBrowserProcess::GetGlobal()->SetLocalState(NULL); |
| 79 DestroyBrowserAndProfile(); | 79 DestroyBrowserAndProfile(); |
| 80 } | 80 } |
| 81 | 81 |
| 82 private: | 82 private: |
| 83 scoped_ptr<TestingPrefServiceSimple> prefs_; | 83 scoped_ptr<TestingPrefServiceSimple> prefs_; |
| 84 scoped_ptr<chrome::TestingIOThreadState> testing_io_thread_state_; | 84 scoped_ptr<chrome::TestingIOThreadState> testing_io_thread_state_; |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 // Copies parts of MenuModelTest::Delegate and combines them with the | 87 // Copies parts of MenuModelTest::Delegate and combines them with the |
| 88 // WrenchMenuModel since WrenchMenuModel is now a SimpleMenuModel::Delegate and | 88 // AppMenuModel since AppMenuModel is now a SimpleMenuModel::Delegate and |
| 89 // not derived from SimpleMenuModel. | 89 // not derived from SimpleMenuModel. |
| 90 class TestWrenchMenuModel : public WrenchMenuModel { | 90 class TestAppMenuModel : public AppMenuModel { |
| 91 public: | 91 public: |
| 92 TestWrenchMenuModel(ui::AcceleratorProvider* provider, | 92 TestAppMenuModel(ui::AcceleratorProvider* provider, Browser* browser) |
| 93 Browser* browser) | 93 : AppMenuModel(provider, browser), |
| 94 : WrenchMenuModel(provider, browser), | |
| 95 execute_count_(0), | 94 execute_count_(0), |
| 96 checked_count_(0), | 95 checked_count_(0), |
| 97 enable_count_(0) { | 96 enable_count_(0) {} |
| 98 } | |
| 99 | 97 |
| 100 // Testing overrides to ui::SimpleMenuModel::Delegate: | 98 // Testing overrides to ui::SimpleMenuModel::Delegate: |
| 101 bool IsCommandIdChecked(int command_id) const override { | 99 bool IsCommandIdChecked(int command_id) const override { |
| 102 bool val = WrenchMenuModel::IsCommandIdChecked(command_id); | 100 bool val = AppMenuModel::IsCommandIdChecked(command_id); |
| 103 if (val) | 101 if (val) |
| 104 checked_count_++; | 102 checked_count_++; |
| 105 return val; | 103 return val; |
| 106 } | 104 } |
| 107 | 105 |
| 108 bool IsCommandIdEnabled(int command_id) const override { | 106 bool IsCommandIdEnabled(int command_id) const override { |
| 109 ++enable_count_; | 107 ++enable_count_; |
| 110 return true; | 108 return true; |
| 111 } | 109 } |
| 112 | 110 |
| 113 void ExecuteCommand(int command_id, int event_flags) override { | 111 void ExecuteCommand(int command_id, int event_flags) override { |
| 114 ++execute_count_; | 112 ++execute_count_; |
| 115 } | 113 } |
| 116 | 114 |
| 117 int execute_count_; | 115 int execute_count_; |
| 118 mutable int checked_count_; | 116 mutable int checked_count_; |
| 119 mutable int enable_count_; | 117 mutable int enable_count_; |
| 120 }; | 118 }; |
| 121 | 119 |
| 122 TEST_F(WrenchMenuModelTest, Basics) { | 120 TEST_F(AppMenuModelTest, Basics) { |
| 123 TestWrenchMenuModel model(this, browser()); | 121 TestAppMenuModel model(this, browser()); |
| 124 int itemCount = model.GetItemCount(); | 122 int itemCount = model.GetItemCount(); |
| 125 | 123 |
| 126 // Verify it has items. The number varies by platform, so we don't check | 124 // Verify it has items. The number varies by platform, so we don't check |
| 127 // the exact number. | 125 // the exact number. |
| 128 EXPECT_GT(itemCount, 10); | 126 EXPECT_GT(itemCount, 10); |
| 129 | 127 |
| 130 UpgradeDetector* detector = UpgradeDetector::GetInstance(); | 128 UpgradeDetector* detector = UpgradeDetector::GetInstance(); |
| 131 detector->NotifyUpgradeRecommended(); | 129 detector->NotifyUpgradeRecommended(); |
| 132 EXPECT_TRUE(detector->notify_upgrade()); | 130 EXPECT_TRUE(detector->notify_upgrade()); |
| 133 EXPECT_EQ(browser_defaults::kShowUpgradeMenuItem, | 131 EXPECT_EQ(browser_defaults::kShowUpgradeMenuItem, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 EXPECT_GT(bookmarksModel->GetItemCount(), 1); | 165 EXPECT_GT(bookmarksModel->GetItemCount(), 1); |
| 168 | 166 |
| 169 // Bookmark manager item. | 167 // Bookmark manager item. |
| 170 bookmarksModel->ActivatedAt(4); | 168 bookmarksModel->ActivatedAt(4); |
| 171 EXPECT_TRUE(bookmarksModel->IsEnabledAt(4)); | 169 EXPECT_TRUE(bookmarksModel->IsEnabledAt(4)); |
| 172 EXPECT_EQ(model.execute_count_, 1); | 170 EXPECT_EQ(model.execute_count_, 1); |
| 173 EXPECT_EQ(model.enable_count_, 1); | 171 EXPECT_EQ(model.enable_count_, 1); |
| 174 } | 172 } |
| 175 | 173 |
| 176 // Tests global error menu items in the wrench menu. | 174 // Tests global error menu items in the wrench menu. |
| 177 TEST_F(WrenchMenuModelTest, GlobalError) { | 175 TEST_F(AppMenuModelTest, GlobalError) { |
| 178 // Make sure services required for tests are initialized. | 176 // Make sure services required for tests are initialized. |
| 179 GlobalErrorService* service = | 177 GlobalErrorService* service = |
| 180 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); | 178 GlobalErrorServiceFactory::GetForProfile(browser()->profile()); |
| 181 ProfileOAuth2TokenServiceFactory::GetForProfile(browser()->profile()); | 179 ProfileOAuth2TokenServiceFactory::GetForProfile(browser()->profile()); |
| 182 const int command1 = 1234567; | 180 const int command1 = 1234567; |
| 183 // AddGlobalError takes ownership of error1. | 181 // AddGlobalError takes ownership of error1. |
| 184 MenuError* error1 = new MenuError(command1); | 182 MenuError* error1 = new MenuError(command1); |
| 185 service->AddGlobalError(error1); | 183 service->AddGlobalError(error1); |
| 186 const int command2 = 1234568; | 184 const int command2 = 1234568; |
| 187 // AddGlobalError takes ownership of error2. | 185 // AddGlobalError takes ownership of error2. |
| 188 MenuError* error2 = new MenuError(command2); | 186 MenuError* error2 = new MenuError(command2); |
| 189 service->AddGlobalError(error2); | 187 service->AddGlobalError(error2); |
| 190 | 188 |
| 191 WrenchMenuModel model(this, browser()); | 189 AppMenuModel model(this, browser()); |
| 192 int index1 = model.GetIndexOfCommandId(command1); | 190 int index1 = model.GetIndexOfCommandId(command1); |
| 193 EXPECT_GT(index1, -1); | 191 EXPECT_GT(index1, -1); |
| 194 int index2 = model.GetIndexOfCommandId(command2); | 192 int index2 = model.GetIndexOfCommandId(command2); |
| 195 EXPECT_GT(index2, -1); | 193 EXPECT_GT(index2, -1); |
| 196 | 194 |
| 197 EXPECT_TRUE(model.IsEnabledAt(index1)); | 195 EXPECT_TRUE(model.IsEnabledAt(index1)); |
| 198 EXPECT_EQ(0, error1->execute_count()); | 196 EXPECT_EQ(0, error1->execute_count()); |
| 199 model.ActivatedAt(index1); | 197 model.ActivatedAt(index1); |
| 200 EXPECT_EQ(1, error1->execute_count()); | 198 EXPECT_EQ(1, error1->execute_count()); |
| 201 | 199 |
| 202 EXPECT_TRUE(model.IsEnabledAt(index2)); | 200 EXPECT_TRUE(model.IsEnabledAt(index2)); |
| 203 EXPECT_EQ(0, error2->execute_count()); | 201 EXPECT_EQ(0, error2->execute_count()); |
| 204 model.ActivatedAt(index2); | 202 model.ActivatedAt(index2); |
| 205 EXPECT_EQ(1, error1->execute_count()); | 203 EXPECT_EQ(1, error1->execute_count()); |
| 206 } | 204 } |
| 207 | 205 |
| 208 class EncodingMenuModelTest : public BrowserWithTestWindowTest, | 206 class EncodingMenuModelTest : public BrowserWithTestWindowTest, |
| 209 public MenuModelTest { | 207 public MenuModelTest { |
| 210 }; | 208 }; |
| 211 | 209 |
| 212 TEST_F(EncodingMenuModelTest, IsCommandIdCheckedWithNoTabs) { | 210 TEST_F(EncodingMenuModelTest, IsCommandIdCheckedWithNoTabs) { |
| 213 EncodingMenuModel model(browser()); | 211 EncodingMenuModel model(browser()); |
| 214 ASSERT_EQ(NULL, browser()->tab_strip_model()->GetActiveWebContents()); | 212 ASSERT_EQ(NULL, browser()->tab_strip_model()->GetActiveWebContents()); |
| 215 EXPECT_FALSE(model.IsCommandIdChecked(IDC_ENCODING_WINDOWS1252)); | 213 EXPECT_FALSE(model.IsCommandIdChecked(IDC_ENCODING_WINDOWS1252)); |
| 216 } | 214 } |
| OLD | NEW |