Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm

Issue 1419993010: chrome: Rename WrenchMenuController to AppMenuController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rewrap comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/mac/scoped_nsobject.h" 6 #include "base/mac/scoped_nsobject.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/strings/sys_string_conversions.h" 8 #include "base/strings/sys_string_conversions.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/app/chrome_command_ids.h" 10 #include "chrome/app/chrome_command_ids.h"
11 #include "chrome/browser/sync/profile_sync_service_factory.h" 11 #include "chrome/browser/sync/profile_sync_service_factory.h"
12 #include "chrome/browser/ui/browser_list.h" 12 #include "chrome/browser/ui/browser_list.h"
13 #include "chrome/browser/ui/browser_list_observer.h" 13 #include "chrome/browser/ui/browser_list_observer.h"
14 #import "chrome/browser/ui/cocoa/app_menu/app_menu_controller.h"
14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 15 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
15 #include "chrome/browser/ui/cocoa/run_loop_testing.h" 16 #include "chrome/browser/ui/cocoa/run_loop_testing.h"
16 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" 17 #import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
17 #import "chrome/browser/ui/cocoa/view_resizer_pong.h" 18 #import "chrome/browser/ui/cocoa/view_resizer_pong.h"
18 #import "chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h"
19 #include "chrome/browser/ui/sync/browser_synced_window_delegates_getter.h" 19 #include "chrome/browser/ui/sync/browser_synced_window_delegates_getter.h"
20 #include "chrome/browser/ui/toolbar/app_menu_model.h" 20 #include "chrome/browser/ui/toolbar/app_menu_model.h"
21 #include "chrome/browser/ui/toolbar/recent_tabs_builder_test_helper.h" 21 #include "chrome/browser/ui/toolbar/recent_tabs_builder_test_helper.h"
22 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h" 22 #include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
23 #include "chrome/common/chrome_switches.h" 23 #include "chrome/common/chrome_switches.h"
24 #include "chrome/grit/generated_resources.h" 24 #include "chrome/grit/generated_resources.h"
25 #include "chrome/test/base/testing_profile.h" 25 #include "chrome/test/base/testing_profile.h"
26 #include "components/browser_sync/browser/profile_sync_service.h" 26 #include "components/browser_sync/browser/profile_sync_service.h"
27 #include "components/sync_driver/local_device_info_provider_mock.h" 27 #include "components/sync_driver/local_device_info_provider_mock.h"
28 #include "components/sync_driver/sync_client.h" 28 #include "components/sync_driver/sync_client.h"
(...skipping 20 matching lines...) Expand all
49 }; 49 };
50 50
51 class DummyRouter : public browser_sync::LocalSessionEventRouter { 51 class DummyRouter : public browser_sync::LocalSessionEventRouter {
52 public: 52 public:
53 ~DummyRouter() override {} 53 ~DummyRouter() override {}
54 void StartRoutingTo( 54 void StartRoutingTo(
55 browser_sync::LocalSessionEventHandler* handler) override {} 55 browser_sync::LocalSessionEventHandler* handler) override {}
56 void Stop() override {} 56 void Stop() override {}
57 }; 57 };
58 58
59 class WrenchMenuControllerTest 59 class AppMenuControllerTest : public CocoaProfileTest {
60 : public CocoaProfileTest {
61 public: 60 public:
62 WrenchMenuControllerTest() 61 AppMenuControllerTest()
63 : local_device_(new sync_driver::LocalDeviceInfoProviderMock( 62 : local_device_(new sync_driver::LocalDeviceInfoProviderMock(
64 "WrenchMenuControllerTest", 63 "AppMenuControllerTest",
65 "Test Machine", 64 "Test Machine",
66 "Chromium 10k", 65 "Chromium 10k",
67 "Chrome 10k", 66 "Chrome 10k",
68 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, 67 sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
69 "device_id")) { 68 "device_id")) {
70 } 69 }
71 70
72 void SetUp() override { 71 void SetUp() override {
73 CocoaProfileTest::SetUp(); 72 CocoaProfileTest::SetUp();
74 ASSERT_TRUE(browser()); 73 ASSERT_TRUE(browser());
75 74
76 controller_.reset([[WrenchMenuController alloc] initWithBrowser:browser()]); 75 controller_.reset([[AppMenuController alloc] initWithBrowser:browser()]);
77 fake_model_.reset(new MockAppMenuModel); 76 fake_model_.reset(new MockAppMenuModel);
78 77
79 sync_prefs_.reset(new sync_driver::SyncPrefs(profile()->GetPrefs())); 78 sync_prefs_.reset(new sync_driver::SyncPrefs(profile()->GetPrefs()));
80 manager_.reset(new browser_sync::SessionsSyncManager( 79 manager_.reset(new browser_sync::SessionsSyncManager(
81 ProfileSyncServiceFactory::GetForProfile(profile()) 80 ProfileSyncServiceFactory::GetForProfile(profile())
82 ->GetSyncClient() 81 ->GetSyncClient()
83 ->GetSyncSessionsClient(), 82 ->GetSyncSessionsClient(),
84 sync_prefs_.get(), local_device_.get(), 83 sync_prefs_.get(), local_device_.get(),
85 scoped_ptr<browser_sync::LocalSessionEventRouter>(new DummyRouter()), 84 scoped_ptr<browser_sync::LocalSessionEventRouter>(new DummyRouter()),
86 base::Closure(), base::Closure())); 85 base::Closure(), base::Closure()));
(...skipping 14 matching lines...) Expand all
101 return manager_.get(); 100 return manager_.get();
102 } 101 }
103 102
104 void TearDown() override { 103 void TearDown() override {
105 fake_model_.reset(); 104 fake_model_.reset();
106 controller_.reset(); 105 controller_.reset();
107 manager_.reset(); 106 manager_.reset();
108 CocoaProfileTest::TearDown(); 107 CocoaProfileTest::TearDown();
109 } 108 }
110 109
111 WrenchMenuController* controller() { 110 AppMenuController* controller() {
112 return controller_.get(); 111 return controller_.get();
113 } 112 }
114 113
115 base::scoped_nsobject<WrenchMenuController> controller_; 114 base::scoped_nsobject<AppMenuController> controller_;
116 115
117 scoped_ptr<MockAppMenuModel> fake_model_; 116 scoped_ptr<MockAppMenuModel> fake_model_;
118 117
119 private: 118 private:
120 scoped_ptr<sync_driver::SyncPrefs> sync_prefs_; 119 scoped_ptr<sync_driver::SyncPrefs> sync_prefs_;
121 scoped_ptr<browser_sync::SessionsSyncManager> manager_; 120 scoped_ptr<browser_sync::SessionsSyncManager> manager_;
122 scoped_ptr<sync_driver::LocalDeviceInfoProviderMock> local_device_; 121 scoped_ptr<sync_driver::LocalDeviceInfoProviderMock> local_device_;
123 }; 122 };
124 123
125 TEST_F(WrenchMenuControllerTest, Initialized) { 124 TEST_F(AppMenuControllerTest, Initialized) {
126 EXPECT_TRUE([controller() menu]); 125 EXPECT_TRUE([controller() menu]);
127 EXPECT_GE([[controller() menu] numberOfItems], 5); 126 EXPECT_GE([[controller() menu] numberOfItems], 5);
128 } 127 }
129 128
130 TEST_F(WrenchMenuControllerTest, DispatchSimple) { 129 TEST_F(AppMenuControllerTest, DispatchSimple) {
131 base::scoped_nsobject<NSButton> button([[NSButton alloc] init]); 130 base::scoped_nsobject<NSButton> button([[NSButton alloc] init]);
132 [button setTag:IDC_ZOOM_PLUS]; 131 [button setTag:IDC_ZOOM_PLUS];
133 132
134 // Set fake model to test dispatching. 133 // Set fake model to test dispatching.
135 EXPECT_CALL(*fake_model_, ExecuteCommand(IDC_ZOOM_PLUS, 0)); 134 EXPECT_CALL(*fake_model_, ExecuteCommand(IDC_ZOOM_PLUS, 0));
136 [controller() setModel:fake_model_.get()]; 135 [controller() setModel:fake_model_.get()];
137 136
138 [controller() dispatchWrenchMenuCommand:button.get()]; 137 [controller() dispatchAppMenuCommand:button.get()];
139 chrome::testing::NSRunLoopRunAllPending(); 138 chrome::testing::NSRunLoopRunAllPending();
140 } 139 }
141 140
142 TEST_F(WrenchMenuControllerTest, RecentTabsFavIcon) { 141 TEST_F(AppMenuControllerTest, RecentTabsFavIcon) {
143 RecentTabsBuilderTestHelper recent_tabs_builder; 142 RecentTabsBuilderTestHelper recent_tabs_builder;
144 recent_tabs_builder.AddSession(); 143 recent_tabs_builder.AddSession();
145 recent_tabs_builder.AddWindow(0); 144 recent_tabs_builder.AddWindow(0);
146 recent_tabs_builder.AddTab(0, 0); 145 recent_tabs_builder.AddTab(0, 0);
147 RegisterRecentTabs(&recent_tabs_builder); 146 RegisterRecentTabs(&recent_tabs_builder);
148 147
149 RecentTabsSubMenuModel recent_tabs_sub_menu_model( 148 RecentTabsSubMenuModel recent_tabs_sub_menu_model(
150 NULL, browser(), GetOpenTabsDelegate()); 149 NULL, browser(), GetOpenTabsDelegate());
151 fake_model_->AddSubMenuWithStringId( 150 fake_model_->AddSubMenuWithStringId(
152 IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU, 151 IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU,
(...skipping 14 matching lines...) Expand all
167 recent_tabs_sub_menu_model.SetIcon(3, icon); 166 recent_tabs_sub_menu_model.SetIcon(3, icon);
168 EXPECT_NSNE(icon.ToNSImage(), [[recent_tabs_menu itemAtIndex:3] image]); 167 EXPECT_NSNE(icon.ToNSImage(), [[recent_tabs_menu itemAtIndex:3] image]);
169 recent_tabs_sub_menu_model.GetMenuModelDelegate()->OnIconChanged(3); 168 recent_tabs_sub_menu_model.GetMenuModelDelegate()->OnIconChanged(3);
170 EXPECT_TRUE([[recent_tabs_menu itemAtIndex:3] image]); 169 EXPECT_TRUE([[recent_tabs_menu itemAtIndex:3] image]);
171 EXPECT_NSEQ(icon.ToNSImage(), [[recent_tabs_menu itemAtIndex:3] image]); 170 EXPECT_NSEQ(icon.ToNSImage(), [[recent_tabs_menu itemAtIndex:3] image]);
172 171
173 controller_.reset(); 172 controller_.reset();
174 fake_model_.reset(); 173 fake_model_.reset();
175 } 174 }
176 175
177 TEST_F(WrenchMenuControllerTest, RecentTabsElideTitle) { 176 TEST_F(AppMenuControllerTest, RecentTabsElideTitle) {
178 // Add 1 session with 1 window and 2 tabs. 177 // Add 1 session with 1 window and 2 tabs.
179 RecentTabsBuilderTestHelper recent_tabs_builder; 178 RecentTabsBuilderTestHelper recent_tabs_builder;
180 recent_tabs_builder.AddSession(); 179 recent_tabs_builder.AddSession();
181 recent_tabs_builder.AddWindow(0); 180 recent_tabs_builder.AddWindow(0);
182 base::string16 tab1_short_title = base::ASCIIToUTF16("Short"); 181 base::string16 tab1_short_title = base::ASCIIToUTF16("Short");
183 recent_tabs_builder.AddTabWithInfo(0, 0, base::Time::Now(), tab1_short_title); 182 recent_tabs_builder.AddTabWithInfo(0, 0, base::Time::Now(), tab1_short_title);
184 base::string16 tab2_long_title = base::ASCIIToUTF16( 183 base::string16 tab2_long_title = base::ASCIIToUTF16(
185 "Very very very very very very very very very very very very long"); 184 "Very very very very very very very very very very very very long");
186 recent_tabs_builder.AddTabWithInfo(0, 0, 185 recent_tabs_builder.AddTabWithInfo(0, 0,
187 base::Time::Now() - base::TimeDelta::FromMinutes(10), tab2_long_title); 186 base::Time::Now() - base::TimeDelta::FromMinutes(10), tab2_long_title);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 NSString* expected_substring = [base::SysUTF16ToNSString(tab2_long_title) 230 NSString* expected_substring = [base::SysUTF16ToNSString(tab2_long_title)
232 substringToIndex:title_length - 1]; 231 substringToIndex:title_length - 1];
233 EXPECT_NSEQ(expected_substring, actual_substring); 232 EXPECT_NSEQ(expected_substring, actual_substring);
234 233
235 controller_.reset(); 234 controller_.reset();
236 fake_model_.reset(); 235 fake_model_.reset();
237 } 236 }
238 237
239 // Verify that |RecentTabsMenuModelDelegate| is deleted before the model 238 // Verify that |RecentTabsMenuModelDelegate| is deleted before the model
240 // it's observing. 239 // it's observing.
241 TEST_F(WrenchMenuControllerTest, RecentTabDeleteOrder) { 240 TEST_F(AppMenuControllerTest, RecentTabDeleteOrder) {
242 [controller_ menuNeedsUpdate:[controller_ menu]]; 241 [controller_ menuNeedsUpdate:[controller_ menu]];
243 // If the delete order is wrong then the test will crash on exit. 242 // If the delete order is wrong then the test will crash on exit.
244 } 243 }
245 244
246 class BrowserRemovedObserver : public chrome::BrowserListObserver { 245 class BrowserRemovedObserver : public chrome::BrowserListObserver {
247 public: 246 public:
248 BrowserRemovedObserver() { BrowserList::AddObserver(this); } 247 BrowserRemovedObserver() { BrowserList::AddObserver(this); }
249 ~BrowserRemovedObserver() override { BrowserList::RemoveObserver(this); } 248 ~BrowserRemovedObserver() override { BrowserList::RemoveObserver(this); }
250 void WaitUntilBrowserRemoved() { run_loop_.Run(); } 249 void WaitUntilBrowserRemoved() { run_loop_.Run(); }
251 void OnBrowserRemoved(Browser* browser) override { run_loop_.Quit(); } 250 void OnBrowserRemoved(Browser* browser) override { run_loop_.Quit(); }
252 251
253 private: 252 private:
254 base::RunLoop run_loop_; 253 base::RunLoop run_loop_;
255 254
256 DISALLOW_COPY_AND_ASSIGN(BrowserRemovedObserver); 255 DISALLOW_COPY_AND_ASSIGN(BrowserRemovedObserver);
257 }; 256 };
258 257
259 // Test that WrenchMenuController can be destroyed after the Browser. 258 // Test that AppMenuController can be destroyed after the Browser.
260 // This can happen because the WrenchMenuController's owner (ToolbarController) 259 // This can happen because the AppMenuController's owner (ToolbarController)
261 // can outlive the Browser. 260 // can outlive the Browser.
262 TEST_F(WrenchMenuControllerTest, DestroyedAfterBrowser) { 261 TEST_F(AppMenuControllerTest, DestroyedAfterBrowser) {
263 BrowserRemovedObserver observer; 262 BrowserRemovedObserver observer;
264 // This is normally called by ToolbarController, but since |controller_| is 263 // This is normally called by ToolbarController, but since |controller_| is
265 // not owned by one, call it here. 264 // not owned by one, call it here.
266 [controller_ browserWillBeDestroyed]; 265 [controller_ browserWillBeDestroyed];
267 CloseBrowserWindow(); 266 CloseBrowserWindow();
268 observer.WaitUntilBrowserRemoved(); 267 observer.WaitUntilBrowserRemoved();
269 // |controller_| is released in TearDown(). 268 // |controller_| is released in TearDown().
270 } 269 }
271 270
272 } // namespace 271 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/app_menu/app_menu_controller.mm ('k') | chrome/browser/ui/cocoa/extensions/browser_action_button.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698