| Index: chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller_unittest.mm
|
| diff --git a/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller_unittest.mm b/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller_unittest.mm
|
| deleted file mode 100644
|
| index aa9fdfcf297cd0235510a15fd0f10123b21fc4db..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller_unittest.mm
|
| +++ /dev/null
|
| @@ -1,267 +0,0 @@
|
| -// 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/command_line.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/strings/sys_string_conversions.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/app/chrome_command_ids.h"
|
| -#include "chrome/browser/sync/profile_sync_service.h"
|
| -#include "chrome/browser/sync/profile_sync_service_factory.h"
|
| -#include "chrome/browser/sync/sessions/sessions_sync_manager.h"
|
| -#include "chrome/browser/ui/browser_list.h"
|
| -#include "chrome/browser/ui/browser_list_observer.h"
|
| -#include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
|
| -#include "chrome/browser/ui/cocoa/run_loop_testing.h"
|
| -#import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h"
|
| -#import "chrome/browser/ui/cocoa/view_resizer_pong.h"
|
| -#import "chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h"
|
| -#include "chrome/browser/ui/sync/browser_synced_window_delegates_getter.h"
|
| -#include "chrome/browser/ui/toolbar/app_menu_model.h"
|
| -#include "chrome/browser/ui/toolbar/recent_tabs_builder_test_helper.h"
|
| -#include "chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/grit/generated_resources.h"
|
| -#include "chrome/test/base/testing_profile.h"
|
| -#include "components/sync_driver/local_device_info_provider_mock.h"
|
| -#include "components/sync_driver/sync_client.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "sync/api/fake_sync_change_processor.h"
|
| -#include "sync/api/sync_error_factory_mock.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "testing/gtest_mac.h"
|
| -#include "testing/platform_test.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -
|
| -namespace {
|
| -
|
| -class MockAppMenuModel : public AppMenuModel {
|
| - public:
|
| - MockAppMenuModel() : AppMenuModel() {}
|
| - ~MockAppMenuModel() {}
|
| - MOCK_METHOD2(ExecuteCommand, void(int command_id, int event_flags));
|
| -};
|
| -
|
| -class DummyRouter : public browser_sync::LocalSessionEventRouter {
|
| - public:
|
| - ~DummyRouter() override {}
|
| - void StartRoutingTo(
|
| - browser_sync::LocalSessionEventHandler* handler) override {}
|
| - void Stop() override {}
|
| -};
|
| -
|
| -class WrenchMenuControllerTest
|
| - : public CocoaProfileTest {
|
| - public:
|
| - WrenchMenuControllerTest()
|
| - : local_device_(new sync_driver::LocalDeviceInfoProviderMock(
|
| - "WrenchMenuControllerTest",
|
| - "Test Machine",
|
| - "Chromium 10k",
|
| - "Chrome 10k",
|
| - sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
|
| - "device_id")) {
|
| - }
|
| -
|
| - void SetUp() override {
|
| - CocoaProfileTest::SetUp();
|
| - ASSERT_TRUE(browser());
|
| -
|
| - controller_.reset([[WrenchMenuController alloc] initWithBrowser:browser()]);
|
| - fake_model_.reset(new MockAppMenuModel);
|
| -
|
| - manager_.reset(new browser_sync::SessionsSyncManager(
|
| - ProfileSyncServiceFactory::GetForProfile(profile())
|
| - ->GetSyncClient()
|
| - ->GetSyncSessionsClient(),
|
| - profile(), local_device_.get(),
|
| - scoped_ptr<browser_sync::LocalSessionEventRouter>(new DummyRouter())));
|
| - manager_->MergeDataAndStartSyncing(
|
| - syncer::SESSIONS,
|
| - syncer::SyncDataList(),
|
| - scoped_ptr<syncer::SyncChangeProcessor>(
|
| - new syncer::FakeSyncChangeProcessor),
|
| - scoped_ptr<syncer::SyncErrorFactory>(
|
| - new syncer::SyncErrorFactoryMock));
|
| - }
|
| -
|
| - void RegisterRecentTabs(RecentTabsBuilderTestHelper* helper) {
|
| - helper->ExportToSessionsSyncManager(manager_.get());
|
| - }
|
| -
|
| - sync_driver::OpenTabsUIDelegate* GetOpenTabsDelegate() {
|
| - return manager_.get();
|
| - }
|
| -
|
| - void TearDown() override {
|
| - fake_model_.reset();
|
| - controller_.reset();
|
| - manager_.reset();
|
| - CocoaProfileTest::TearDown();
|
| - }
|
| -
|
| - WrenchMenuController* controller() {
|
| - return controller_.get();
|
| - }
|
| -
|
| - base::scoped_nsobject<WrenchMenuController> controller_;
|
| -
|
| - scoped_ptr<MockAppMenuModel> fake_model_;
|
| -
|
| - private:
|
| - scoped_ptr<browser_sync::SessionsSyncManager> manager_;
|
| - scoped_ptr<sync_driver::LocalDeviceInfoProviderMock> local_device_;
|
| -};
|
| -
|
| -TEST_F(WrenchMenuControllerTest, Initialized) {
|
| - EXPECT_TRUE([controller() menu]);
|
| - EXPECT_GE([[controller() menu] numberOfItems], 5);
|
| -}
|
| -
|
| -TEST_F(WrenchMenuControllerTest, DispatchSimple) {
|
| - base::scoped_nsobject<NSButton> button([[NSButton alloc] init]);
|
| - [button setTag:IDC_ZOOM_PLUS];
|
| -
|
| - // Set fake model to test dispatching.
|
| - EXPECT_CALL(*fake_model_, ExecuteCommand(IDC_ZOOM_PLUS, 0));
|
| - [controller() setModel:fake_model_.get()];
|
| -
|
| - [controller() dispatchWrenchMenuCommand:button.get()];
|
| - chrome::testing::NSRunLoopRunAllPending();
|
| -}
|
| -
|
| -TEST_F(WrenchMenuControllerTest, RecentTabsFavIcon) {
|
| - RecentTabsBuilderTestHelper recent_tabs_builder;
|
| - recent_tabs_builder.AddSession();
|
| - recent_tabs_builder.AddWindow(0);
|
| - recent_tabs_builder.AddTab(0, 0);
|
| - RegisterRecentTabs(&recent_tabs_builder);
|
| -
|
| - RecentTabsSubMenuModel recent_tabs_sub_menu_model(
|
| - NULL, browser(), GetOpenTabsDelegate());
|
| - fake_model_->AddSubMenuWithStringId(
|
| - IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU,
|
| - &recent_tabs_sub_menu_model);
|
| -
|
| - [controller() setModel:fake_model_.get()];
|
| - NSMenu* menu = [controller() menu];
|
| - [controller() updateRecentTabsSubmenu];
|
| -
|
| - NSString* title = l10n_util::GetNSStringWithFixup(IDS_RECENT_TABS_MENU);
|
| - NSMenu* recent_tabs_menu = [[menu itemWithTitle:title] submenu];
|
| - EXPECT_TRUE(recent_tabs_menu);
|
| - EXPECT_EQ(6, [recent_tabs_menu numberOfItems]);
|
| -
|
| - // Send a icon changed event and verify that the icon is updated.
|
| - gfx::Image icon(ResourceBundle::GetSharedInstance().GetNativeImageNamed(
|
| - IDR_BOOKMARKS_FAVICON));
|
| - recent_tabs_sub_menu_model.SetIcon(3, icon);
|
| - EXPECT_NSNE(icon.ToNSImage(), [[recent_tabs_menu itemAtIndex:3] image]);
|
| - recent_tabs_sub_menu_model.GetMenuModelDelegate()->OnIconChanged(3);
|
| - EXPECT_TRUE([[recent_tabs_menu itemAtIndex:3] image]);
|
| - EXPECT_NSEQ(icon.ToNSImage(), [[recent_tabs_menu itemAtIndex:3] image]);
|
| -
|
| - controller_.reset();
|
| - fake_model_.reset();
|
| -}
|
| -
|
| -TEST_F(WrenchMenuControllerTest, RecentTabsElideTitle) {
|
| - // Add 1 session with 1 window and 2 tabs.
|
| - RecentTabsBuilderTestHelper recent_tabs_builder;
|
| - recent_tabs_builder.AddSession();
|
| - recent_tabs_builder.AddWindow(0);
|
| - base::string16 tab1_short_title = base::ASCIIToUTF16("Short");
|
| - recent_tabs_builder.AddTabWithInfo(0, 0, base::Time::Now(), tab1_short_title);
|
| - base::string16 tab2_long_title = base::ASCIIToUTF16(
|
| - "Very very very very very very very very very very very very long");
|
| - recent_tabs_builder.AddTabWithInfo(0, 0,
|
| - base::Time::Now() - base::TimeDelta::FromMinutes(10), tab2_long_title);
|
| - RegisterRecentTabs(&recent_tabs_builder);
|
| -
|
| - RecentTabsSubMenuModel recent_tabs_sub_menu_model(
|
| - NULL, browser(), GetOpenTabsDelegate());
|
| - fake_model_->AddSubMenuWithStringId(
|
| - IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU,
|
| - &recent_tabs_sub_menu_model);
|
| -
|
| - [controller() setModel:fake_model_.get()];
|
| - NSMenu* menu = [controller() menu];
|
| - [controller() updateRecentTabsSubmenu];
|
| -
|
| - NSString* title = l10n_util::GetNSStringWithFixup(IDS_RECENT_TABS_MENU);
|
| - NSMenu* recent_tabs_menu = [[menu itemWithTitle:title] submenu];
|
| - EXPECT_TRUE(recent_tabs_menu);
|
| - EXPECT_EQ(7, [recent_tabs_menu numberOfItems]);
|
| -
|
| - // Item 1: separator.
|
| - EXPECT_TRUE([[recent_tabs_menu itemAtIndex:1] isSeparatorItem]);
|
| -
|
| - // Index 2: restore tabs menu item.
|
| - NSString* restore_tab_label = l10n_util::FixUpWindowsStyleLabel(
|
| - recent_tabs_sub_menu_model.GetLabelAt(2));
|
| - EXPECT_NSEQ(restore_tab_label, [[recent_tabs_menu itemAtIndex:2] title]);
|
| -
|
| - // Item 3: separator.
|
| - EXPECT_TRUE([[recent_tabs_menu itemAtIndex:3] isSeparatorItem]);
|
| -
|
| - // Item 4: window title.
|
| - EXPECT_NSEQ(
|
| - base::SysUTF16ToNSString(recent_tabs_sub_menu_model.GetLabelAt(4)),
|
| - [[recent_tabs_menu itemAtIndex:4] title]);
|
| -
|
| - // Item 5: short tab title.
|
| - EXPECT_NSEQ(base::SysUTF16ToNSString(tab1_short_title),
|
| - [[recent_tabs_menu itemAtIndex:5] title]);
|
| -
|
| - // Item 6: long tab title.
|
| - NSString* tab2_actual_title = [[recent_tabs_menu itemAtIndex:6] title];
|
| - NSUInteger title_length = [tab2_actual_title length];
|
| - EXPECT_GT(tab2_long_title.size(), title_length);
|
| - NSString* actual_substring =
|
| - [tab2_actual_title substringToIndex:title_length - 1];
|
| - NSString* expected_substring = [base::SysUTF16ToNSString(tab2_long_title)
|
| - substringToIndex:title_length - 1];
|
| - EXPECT_NSEQ(expected_substring, actual_substring);
|
| -
|
| - controller_.reset();
|
| - fake_model_.reset();
|
| -}
|
| -
|
| -// Verify that |RecentTabsMenuModelDelegate| is deleted before the model
|
| -// it's observing.
|
| -TEST_F(WrenchMenuControllerTest, RecentTabDeleteOrder) {
|
| - [controller_ menuNeedsUpdate:[controller_ menu]];
|
| - // If the delete order is wrong then the test will crash on exit.
|
| -}
|
| -
|
| -class BrowserRemovedObserver : public chrome::BrowserListObserver {
|
| - public:
|
| - BrowserRemovedObserver() { BrowserList::AddObserver(this); }
|
| - ~BrowserRemovedObserver() override { BrowserList::RemoveObserver(this); }
|
| - void WaitUntilBrowserRemoved() { run_loop_.Run(); }
|
| - void OnBrowserRemoved(Browser* browser) override { run_loop_.Quit(); }
|
| -
|
| - private:
|
| - base::RunLoop run_loop_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BrowserRemovedObserver);
|
| -};
|
| -
|
| -// Test that WrenchMenuController can be destroyed after the Browser.
|
| -// This can happen because the WrenchMenuController's owner (ToolbarController)
|
| -// can outlive the Browser.
|
| -TEST_F(WrenchMenuControllerTest, DestroyedAfterBrowser) {
|
| - BrowserRemovedObserver observer;
|
| - // This is normally called by ToolbarController, but since |controller_| is
|
| - // not owned by one, call it here.
|
| - [controller_ browserWillBeDestroyed];
|
| - CloseBrowserWindow();
|
| - observer.WaitUntilBrowserRemoved();
|
| - // |controller_| is released in TearDown().
|
| -}
|
| -
|
| -} // namespace
|
|
|