Index: chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm |
diff --git a/chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm b/chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm |
index 579a76052e99998c26b57edaa3b5eaf6d99c8623..132e49f5c7d7bb21c3a613ae88ad63af886d7ed0 100644 |
--- a/chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm |
+++ b/chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm |
@@ -2,17 +2,19 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#import "chrome/browser/ui/cocoa/app_menu/app_menu_controller.h" |
#include "base/command_line.h" |
#include "base/mac/scoped_nsobject.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.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_factory.h" |
+#include "chrome/browser/sync/profile_sync_test_util.h" |
#include "chrome/browser/ui/browser_list.h" |
#include "chrome/browser/ui/browser_list_observer.h" |
-#import "chrome/browser/ui/cocoa/app_menu/app_menu_controller.h" |
#include "chrome/browser/ui/cocoa/test/cocoa_profile_test.h" |
#include "chrome/browser/ui/cocoa/test/run_loop_testing.h" |
#import "chrome/browser/ui/cocoa/toolbar/toolbar_controller.h" |
@@ -26,6 +28,7 @@ |
#include "chrome/grit/theme_resources.h" |
#include "chrome/test/base/testing_profile.h" |
#include "components/browser_sync/profile_sync_service.h" |
+#include "components/browser_sync/profile_sync_service_mock.h" |
#include "components/sync/base/sync_prefs.h" |
#include "components/sync/device_info/local_device_info_provider_mock.h" |
#include "components/sync/driver/sync_client.h" |
@@ -40,6 +43,10 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/resource/resource_bundle.h" |
+using testing::_; |
+using testing::Invoke; |
+using testing::Return; |
+ |
namespace { |
class MockAppMenuModel : public AppMenuModel { |
@@ -59,30 +66,37 @@ class DummyRouter : public sync_sessions::LocalSessionEventRouter { |
class AppMenuControllerTest : public CocoaProfileTest { |
public: |
- AppMenuControllerTest() |
- : local_device_(new syncer::LocalDeviceInfoProviderMock( |
- "AppMenuControllerTest", |
- "Test Machine", |
- "Chromium 10k", |
- "Chrome 10k", |
- sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
- "device_id")) {} |
+ AppMenuControllerTest() { |
+ TestingProfile::TestingFactories factories; |
+ factories.push_back(std::make_pair(ProfileSyncServiceFactory::GetInstance(), |
+ BuildMockProfileSyncService)); |
+ AddTestingFactories(factories); |
+ } |
void SetUp() override { |
CocoaProfileTest::SetUp(); |
ASSERT_TRUE(browser()); |
+ local_device_ = base::MakeUnique<syncer::LocalDeviceInfoProviderMock>( |
+ "AppMenuControllerTest", "Test Machine", "Chromium 10k", "Chrome 10k", |
+ sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id"); |
+ |
controller_.reset([[AppMenuController alloc] initWithBrowser:browser()]); |
- fake_model_.reset(new MockAppMenuModel); |
- sync_prefs_.reset(new syncer::SyncPrefs(profile()->GetPrefs())); |
- dummy_router_.reset(new DummyRouter()); |
- manager_.reset(new sync_sessions::SessionsSyncManager( |
+ fake_model_ = base::MakeUnique<MockAppMenuModel>(); |
+ |
+ sync_prefs_ = base::MakeUnique<syncer::SyncPrefs>(profile()->GetPrefs()); |
+ |
+ mock_sync_service_ = static_cast<browser_sync::ProfileSyncServiceMock*>( |
+ ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile())); |
+ |
+ manager_ = base::MakeUnique<sync_sessions::SessionsSyncManager>( |
ProfileSyncServiceFactory::GetForProfile(profile()) |
->GetSyncClient() |
->GetSyncSessionsClient(), |
- sync_prefs_.get(), local_device_.get(), dummy_router_.get(), |
- base::Closure(), base::Closure())); |
+ sync_prefs_.get(), local_device_.get(), &dummy_router_, base::Closure(), |
+ base::Closure()); |
+ |
manager_->MergeDataAndStartSyncing( |
syncer::SESSIONS, syncer::SyncDataList(), |
std::unique_ptr<syncer::SyncChangeProcessor>( |
@@ -95,17 +109,28 @@ class AppMenuControllerTest : public CocoaProfileTest { |
helper->ExportToSessionsSyncManager(manager_.get()); |
} |
- sync_sessions::OpenTabsUIDelegate* GetOpenTabsDelegate() { |
- return manager_.get(); |
- } |
- |
void TearDown() override { |
fake_model_.reset(); |
controller_.reset(); |
manager_.reset(); |
+ sync_prefs_.reset(); |
+ local_device_.reset(); |
CocoaProfileTest::TearDown(); |
} |
+ void EnableSync() { |
+ EXPECT_CALL(*mock_sync_service_, IsSyncActive()) |
+ .WillRepeatedly(Return(true)); |
+ EXPECT_CALL(*mock_sync_service_, |
+ IsDataTypeControllerRunning(syncer::SESSIONS)) |
+ .WillRepeatedly(Return(true)); |
+ EXPECT_CALL(*mock_sync_service_, |
+ IsDataTypeControllerRunning(syncer::PROXY_TABS)) |
+ .WillRepeatedly(Return(true)); |
+ EXPECT_CALL(*mock_sync_service_, GetOpenTabsUIDelegateMock()) |
+ .WillRepeatedly(Return(manager_.get())); |
+ } |
+ |
AppMenuController* controller() { |
return controller_.get(); |
} |
@@ -115,10 +140,11 @@ class AppMenuControllerTest : public CocoaProfileTest { |
std::unique_ptr<MockAppMenuModel> fake_model_; |
private: |
+ std::unique_ptr<syncer::LocalDeviceInfoProviderMock> local_device_; |
+ DummyRouter dummy_router_; |
std::unique_ptr<syncer::SyncPrefs> sync_prefs_; |
- std::unique_ptr<DummyRouter> dummy_router_; |
+ browser_sync::ProfileSyncServiceMock* mock_sync_service_ = nullptr; |
std::unique_ptr<sync_sessions::SessionsSyncManager> manager_; |
- std::unique_ptr<syncer::LocalDeviceInfoProviderMock> local_device_; |
}; |
TEST_F(AppMenuControllerTest, Initialized) { |
@@ -139,14 +165,15 @@ TEST_F(AppMenuControllerTest, DispatchSimple) { |
} |
TEST_F(AppMenuControllerTest, RecentTabsFavIcon) { |
+ EnableSync(); |
+ |
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()); |
+ RecentTabsSubMenuModel recent_tabs_sub_menu_model(nullptr, browser()); |
fake_model_->AddSubMenuWithStringId( |
IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU, |
&recent_tabs_sub_menu_model); |
@@ -174,6 +201,8 @@ TEST_F(AppMenuControllerTest, RecentTabsFavIcon) { |
} |
TEST_F(AppMenuControllerTest, RecentTabsElideTitle) { |
+ EnableSync(); |
+ |
// Add 1 session with 1 window and 2 tabs. |
RecentTabsBuilderTestHelper recent_tabs_builder; |
recent_tabs_builder.AddSession(); |
@@ -186,8 +215,7 @@ TEST_F(AppMenuControllerTest, RecentTabsElideTitle) { |
base::Time::Now() - base::TimeDelta::FromMinutes(10), tab2_long_title); |
RegisterRecentTabs(&recent_tabs_builder); |
- RecentTabsSubMenuModel recent_tabs_sub_menu_model( |
- NULL, browser(), GetOpenTabsDelegate()); |
+ RecentTabsSubMenuModel recent_tabs_sub_menu_model(nullptr, browser()); |
fake_model_->AddSubMenuWithStringId( |
IDC_RECENT_TABS_MENU, IDS_RECENT_TABS_MENU, |
&recent_tabs_sub_menu_model); |