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

Unified Diff: chrome/browser/ui/cocoa/app_menu/app_menu_controller_unittest.mm

Issue 2768633003: Dynamic updating recent menu for tabs from other devices. (Closed)
Patch Set: Fixes compilation and test on Mac. Created 3 years, 9 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/browser_tabrestore_browsertest.cc ('k') | chrome/browser/ui/toolbar/app_menu_model.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « chrome/browser/ui/browser_tabrestore_browsertest.cc ('k') | chrome/browser/ui/toolbar/app_menu_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698