| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/extensions/api/sessions/sessions_api.h" | 5 #include "chrome/browser/extensions/api/sessions/sessions_api.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "chrome/browser/extensions/api/tabs/tabs_api.h" | 10 #include "chrome/browser/extensions/api/tabs/tabs_api.h" |
| 11 #include "chrome/browser/extensions/extension_apitest.h" | 11 #include "chrome/browser/extensions/extension_apitest.h" |
| 12 #include "chrome/browser/extensions/extension_function_test_utils.h" | 12 #include "chrome/browser/extensions/extension_function_test_utils.h" |
| 13 #include "chrome/browser/profiles/profile_manager.h" | 13 #include "chrome/browser/profiles/profile_manager.h" |
| 14 #include "chrome/browser/sync/glue/local_device_info_provider_mock.h" | |
| 15 #include "chrome/browser/sync/open_tabs_ui_delegate.h" | 14 #include "chrome/browser/sync/open_tabs_ui_delegate.h" |
| 16 #include "chrome/browser/sync/profile_sync_components_factory_mock.h" | |
| 17 #include "chrome/browser/sync/profile_sync_service.h" | 15 #include "chrome/browser/sync/profile_sync_service.h" |
| 18 #include "chrome/browser/sync/profile_sync_service_factory.h" | 16 #include "chrome/browser/sync/profile_sync_service_factory.h" |
| 19 #include "chrome/browser/sync/profile_sync_service_mock.h" | 17 #include "chrome/browser/sync/profile_sync_service_mock.h" |
| 20 #include "chrome/common/chrome_paths.h" | 18 #include "chrome/common/chrome_paths.h" |
| 21 #include "chrome/common/chrome_switches.h" | 19 #include "chrome/common/chrome_switches.h" |
| 22 #include "chrome/test/base/in_process_browser_test.h" | 20 #include "chrome/test/base/in_process_browser_test.h" |
| 23 #include "chrome/test/base/test_switches.h" | 21 #include "chrome/test/base/test_switches.h" |
| 24 #include "chrome/test/base/testing_browser_process.h" | 22 #include "chrome/test/base/testing_browser_process.h" |
| 25 #include "sync/api/attachments/attachment_id.h" | 23 #include "sync/api/attachments/attachment_id.h" |
| 26 #include "sync/api/attachments/attachment_service_proxy_for_test.h" | 24 #include "sync/api/attachments/attachment_service_proxy_for_test.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED); | 78 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED); |
| 81 } | 79 } |
| 82 | 80 |
| 83 } // namespace | 81 } // namespace |
| 84 | 82 |
| 85 class ExtensionSessionsTest : public InProcessBrowserTest { | 83 class ExtensionSessionsTest : public InProcessBrowserTest { |
| 86 public: | 84 public: |
| 87 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; | 85 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; |
| 88 virtual void SetUpOnMainThread() OVERRIDE; | 86 virtual void SetUpOnMainThread() OVERRIDE; |
| 89 protected: | 87 protected: |
| 90 static KeyedService* BuildProfileSyncService( | |
| 91 content::BrowserContext* profile); | |
| 92 | |
| 93 void CreateTestProfileSyncService(); | 88 void CreateTestProfileSyncService(); |
| 94 void CreateTestExtension(); | 89 void CreateTestExtension(); |
| 95 void CreateSessionModels(); | 90 void CreateSessionModels(); |
| 96 | 91 |
| 97 template <class T> | 92 template <class T> |
| 98 scoped_refptr<T> CreateFunction(bool has_callback) { | 93 scoped_refptr<T> CreateFunction(bool has_callback) { |
| 99 scoped_refptr<T> fn(new T()); | 94 scoped_refptr<T> fn(new T()); |
| 100 fn->set_extension(extension_.get()); | 95 fn->set_extension(extension_.get()); |
| 101 fn->set_has_callback(has_callback); | 96 fn->set_has_callback(has_callback); |
| 102 return fn; | 97 return fn; |
| 103 }; | 98 }; |
| 104 | 99 |
| 105 Browser* browser_; | 100 Browser* browser_; |
| 106 scoped_refptr<extensions::Extension> extension_; | 101 scoped_refptr<extensions::Extension> extension_; |
| 107 }; | 102 }; |
| 108 | 103 |
| 109 void ExtensionSessionsTest::SetUpCommandLine(CommandLine* command_line) { | 104 void ExtensionSessionsTest::SetUpCommandLine(CommandLine* command_line) { |
| 110 #if defined(OS_CHROMEOS) | 105 #if defined(OS_CHROMEOS) |
| 111 command_line->AppendSwitch( | 106 command_line->AppendSwitch( |
| 112 chromeos::switches::kIgnoreUserProfileMappingForTests); | 107 chromeos::switches::kIgnoreUserProfileMappingForTests); |
| 113 #endif | 108 #endif |
| 114 } | 109 } |
| 115 | 110 |
| 116 void ExtensionSessionsTest::SetUpOnMainThread() { | 111 void ExtensionSessionsTest::SetUpOnMainThread() { |
| 117 CreateTestProfileSyncService(); | 112 CreateTestProfileSyncService(); |
| 118 CreateTestExtension(); | 113 CreateTestExtension(); |
| 119 } | 114 } |
| 120 | 115 |
| 121 KeyedService* ExtensionSessionsTest::BuildProfileSyncService( | |
| 122 content::BrowserContext* profile) { | |
| 123 | |
| 124 ProfileSyncComponentsFactoryMock* factory = | |
| 125 new ProfileSyncComponentsFactoryMock(); | |
| 126 | |
| 127 ON_CALL(*factory, CreateLocalDeviceInfoProviderMock()).WillByDefault( | |
| 128 testing::Return(new browser_sync::LocalDeviceInfoProviderMock( | |
| 129 kSessionTags[0], | |
| 130 "machine name", | |
| 131 "Chromium 10k", | |
| 132 "Chrome 10k", | |
| 133 sync_pb::SyncEnums_DeviceType_TYPE_LINUX))); | |
| 134 | |
| 135 return new ProfileSyncServiceMock( | |
| 136 scoped_ptr<ProfileSyncComponentsFactory>(factory), | |
| 137 static_cast<Profile*>(profile)); | |
| 138 } | |
| 139 | |
| 140 void ExtensionSessionsTest::CreateTestProfileSyncService() { | 116 void ExtensionSessionsTest::CreateTestProfileSyncService() { |
| 141 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 117 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 142 base::FilePath path; | 118 base::FilePath path; |
| 143 PathService::Get(chrome::DIR_USER_DATA, &path); | 119 PathService::Get(chrome::DIR_USER_DATA, &path); |
| 144 path = path.AppendASCII("test_profile"); | 120 path = path.AppendASCII("test_profile"); |
| 145 if (!base::PathExists(path)) | 121 if (!base::PathExists(path)) |
| 146 CHECK(base::CreateDirectory(path)); | 122 CHECK(base::CreateDirectory(path)); |
| 147 Profile* profile = | 123 Profile* profile = |
| 148 Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS); | 124 Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS); |
| 149 profile_manager->RegisterTestingProfile(profile, true, false); | 125 profile_manager->RegisterTestingProfile(profile, true, false); |
| 150 ProfileSyncServiceMock* service = static_cast<ProfileSyncServiceMock*>( | 126 ProfileSyncServiceMock* service = static_cast<ProfileSyncServiceMock*>( |
| 151 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 127 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 152 profile, &ExtensionSessionsTest::BuildProfileSyncService)); | 128 profile, &ProfileSyncServiceMock::BuildMockProfileSyncService)); |
| 153 browser_ = new Browser(Browser::CreateParams( | 129 browser_ = new Browser(Browser::CreateParams( |
| 154 profile, chrome::HOST_DESKTOP_TYPE_NATIVE)); | 130 profile, chrome::HOST_DESKTOP_TYPE_NATIVE)); |
| 155 | 131 |
| 156 syncer::ModelTypeSet preferred_types; | 132 syncer::ModelTypeSet preferred_types; |
| 157 preferred_types.Put(syncer::SESSIONS); | 133 preferred_types.Put(syncer::SESSIONS); |
| 158 GoogleServiceAuthError no_error(GoogleServiceAuthError::NONE); | 134 GoogleServiceAuthError no_error(GoogleServiceAuthError::NONE); |
| 159 ON_CALL(*service, IsSessionsDataTypeControllerRunning()) | 135 ON_CALL(*service, IsSessionsDataTypeControllerRunning()) |
| 160 .WillByDefault(testing::Return(true)); | 136 .WillByDefault(testing::Return(true)); |
| 161 ON_CALL(*service, GetRegisteredDataTypes()) | 137 ON_CALL(*service, GetRegisteredDataTypes()) |
| 162 .WillByDefault(testing::Return(syncer::UserTypes())); | 138 .WillByDefault(testing::Return(syncer::UserTypes())); |
| 163 ON_CALL(*service, GetPreferredDataTypes()).WillByDefault( | 139 ON_CALL(*service, GetPreferredDataTypes()).WillByDefault( |
| 164 testing::Return(preferred_types)); | 140 testing::Return(preferred_types)); |
| 165 EXPECT_CALL(*service, GetAuthError()).WillRepeatedly( | 141 EXPECT_CALL(*service, GetAuthError()).WillRepeatedly( |
| 166 testing::ReturnRef(no_error)); | 142 testing::ReturnRef(no_error)); |
| 167 ON_CALL(*service, GetActiveDataTypes()).WillByDefault( | 143 ON_CALL(*service, GetActiveDataTypes()).WillByDefault( |
| 168 testing::Return(preferred_types)); | 144 testing::Return(preferred_types)); |
| 145 ON_CALL(*service, GetLocalDeviceInfoMock()).WillByDefault( |
| 146 testing::Return(new browser_sync::DeviceInfo( |
| 147 std::string(kSessionTags[0]), |
| 148 "machine name", |
| 149 "Chromium 10k", |
| 150 "Chrome 10k", |
| 151 sync_pb::SyncEnums_DeviceType_TYPE_LINUX))); |
| 152 ON_CALL(*service, GetLocalSyncCacheGUID()).WillByDefault( |
| 153 testing::Return(std::string(kSessionTags[0]))); |
| 169 EXPECT_CALL(*service, AddObserver(testing::_)).Times(testing::AnyNumber()); | 154 EXPECT_CALL(*service, AddObserver(testing::_)).Times(testing::AnyNumber()); |
| 170 EXPECT_CALL(*service, RemoveObserver(testing::_)).Times(testing::AnyNumber()); | 155 EXPECT_CALL(*service, RemoveObserver(testing::_)).Times(testing::AnyNumber()); |
| 171 | 156 |
| 172 service->Initialize(); | 157 service->Initialize(); |
| 173 } | 158 } |
| 174 | 159 |
| 175 void ExtensionSessionsTest::CreateTestExtension() { | 160 void ExtensionSessionsTest::CreateTestExtension() { |
| 176 scoped_ptr<base::DictionaryValue> test_extension_value( | 161 scoped_ptr<base::DictionaryValue> test_extension_value( |
| 177 utils::ParseDictionary( | 162 utils::ParseDictionary( |
| 178 "{\"name\": \"Test\", \"version\": \"1.0\", " | 163 "{\"name\": \"Test\", \"version\": \"1.0\", " |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 // Disable this test in Metro+Ash for now (http://crbug.com/262796). | 342 // Disable this test in Metro+Ash for now (http://crbug.com/262796). |
| 358 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) | 343 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) |
| 359 return; | 344 return; |
| 360 #endif | 345 #endif |
| 361 | 346 |
| 362 ASSERT_TRUE(RunExtensionSubtest("sessions", | 347 ASSERT_TRUE(RunExtensionSubtest("sessions", |
| 363 "sessions.html")) << message_; | 348 "sessions.html")) << message_; |
| 364 } | 349 } |
| 365 | 350 |
| 366 } // namespace extensions | 351 } // namespace extensions |
| OLD | NEW |