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

Side by Side Diff: chrome/browser/extensions/api/sessions/sessions_apitest.cc

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 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 unified diff | Download patch
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6
6 #include <utility> 7 #include <utility>
7 8
8 #include "base/command_line.h" 9 #include "base/command_line.h"
9 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/ptr_util.h"
10 #include "base/path_service.h" 12 #include "base/path_service.h"
11 #include "base/strings/pattern.h" 13 #include "base/strings/pattern.h"
12 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
13 #include "build/build_config.h" 15 #include "build/build_config.h"
14 #include "chrome/browser/extensions/api/sessions/sessions_api.h" 16 #include "chrome/browser/extensions/api/sessions/sessions_api.h"
15 #include "chrome/browser/extensions/api/tabs/tabs_api.h" 17 #include "chrome/browser/extensions/api/tabs/tabs_api.h"
16 #include "chrome/browser/extensions/extension_apitest.h" 18 #include "chrome/browser/extensions/extension_apitest.h"
17 #include "chrome/browser/extensions/extension_function_test_utils.h" 19 #include "chrome/browser/extensions/extension_function_test_utils.h"
18 #include "chrome/browser/profiles/profile_manager.h" 20 #include "chrome/browser/profiles/profile_manager.h"
19 #include "chrome/browser/sync/chrome_sync_client.h" 21 #include "chrome/browser/sync/chrome_sync_client.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 navigation->set_title("MyTitle"); 91 navigation->set_title("MyTitle");
90 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED); 92 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED);
91 } 93 }
92 94
93 class ExtensionSessionsTest : public InProcessBrowserTest { 95 class ExtensionSessionsTest : public InProcessBrowserTest {
94 public: 96 public:
95 void SetUpCommandLine(base::CommandLine* command_line) override; 97 void SetUpCommandLine(base::CommandLine* command_line) override;
96 void SetUpOnMainThread() override; 98 void SetUpOnMainThread() override;
97 99
98 protected: 100 protected:
99 static scoped_ptr<KeyedService> BuildProfileSyncService( 101 static std::unique_ptr<KeyedService> BuildProfileSyncService(
100 content::BrowserContext* profile); 102 content::BrowserContext* profile);
101 103
102 void CreateTestProfileSyncService(); 104 void CreateTestProfileSyncService();
103 void CreateTestExtension(); 105 void CreateTestExtension();
104 void CreateSessionModels(); 106 void CreateSessionModels();
105 107
106 template <class T> 108 template <class T>
107 scoped_refptr<T> CreateFunction(bool has_callback) { 109 scoped_refptr<T> CreateFunction(bool has_callback) {
108 scoped_refptr<T> fn(new T()); 110 scoped_refptr<T> fn(new T());
109 fn->set_extension(extension_.get()); 111 fn->set_extension(extension_.get());
(...skipping 10 matching lines...) Expand all
120 command_line->AppendSwitch( 122 command_line->AppendSwitch(
121 chromeos::switches::kIgnoreUserProfileMappingForTests); 123 chromeos::switches::kIgnoreUserProfileMappingForTests);
122 #endif 124 #endif
123 } 125 }
124 126
125 void ExtensionSessionsTest::SetUpOnMainThread() { 127 void ExtensionSessionsTest::SetUpOnMainThread() {
126 CreateTestProfileSyncService(); 128 CreateTestProfileSyncService();
127 CreateTestExtension(); 129 CreateTestExtension();
128 } 130 }
129 131
130 scoped_ptr<KeyedService> ExtensionSessionsTest::BuildProfileSyncService( 132 std::unique_ptr<KeyedService> ExtensionSessionsTest::BuildProfileSyncService(
131 content::BrowserContext* context) { 133 content::BrowserContext* context) {
132 scoped_ptr<SyncApiComponentFactoryMock> factory( 134 std::unique_ptr<SyncApiComponentFactoryMock> factory(
133 new SyncApiComponentFactoryMock()); 135 new SyncApiComponentFactoryMock());
134 136
135 factory->SetLocalDeviceInfoProvider( 137 factory->SetLocalDeviceInfoProvider(
136 scoped_ptr<sync_driver::LocalDeviceInfoProvider>( 138 std::unique_ptr<sync_driver::LocalDeviceInfoProvider>(
137 new sync_driver::LocalDeviceInfoProviderMock( 139 new sync_driver::LocalDeviceInfoProviderMock(
138 kSessionTags[0], 140 kSessionTags[0], "machine name", "Chromium 10k", "Chrome 10k",
139 "machine name", 141 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id")));
140 "Chromium 10k",
141 "Chrome 10k",
142 sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
143 "device_id")));
144 142
145 Profile* profile = static_cast<Profile*>(context); 143 Profile* profile = static_cast<Profile*>(context);
146 ProfileSyncServiceMock* sync_service = 144 ProfileSyncServiceMock* sync_service =
147 new ProfileSyncServiceMock(CreateProfileSyncServiceParamsForTest( 145 new ProfileSyncServiceMock(CreateProfileSyncServiceParamsForTest(
148 make_scoped_ptr(new browser_sync::ChromeSyncClient(profile)), 146 base::WrapUnique(new browser_sync::ChromeSyncClient(profile)),
149 profile)); 147 profile));
150 static_cast<browser_sync::ChromeSyncClient*>(sync_service->GetSyncClient()) 148 static_cast<browser_sync::ChromeSyncClient*>(sync_service->GetSyncClient())
151 ->SetSyncApiComponentFactoryForTesting(std::move(factory)); 149 ->SetSyncApiComponentFactoryForTesting(std::move(factory));
152 return make_scoped_ptr(sync_service); 150 return base::WrapUnique(sync_service);
153 } 151 }
154 152
155 void ExtensionSessionsTest::CreateTestProfileSyncService() { 153 void ExtensionSessionsTest::CreateTestProfileSyncService() {
156 ProfileManager* profile_manager = g_browser_process->profile_manager(); 154 ProfileManager* profile_manager = g_browser_process->profile_manager();
157 base::FilePath path; 155 base::FilePath path;
158 PathService::Get(chrome::DIR_USER_DATA, &path); 156 PathService::Get(chrome::DIR_USER_DATA, &path);
159 path = path.AppendASCII("test_profile"); 157 path = path.AppendASCII("test_profile");
160 if (!base::PathExists(path)) 158 if (!base::PathExists(path))
161 CHECK(base::CreateDirectory(path)); 159 CHECK(base::CreateDirectory(path));
162 Profile* profile = 160 Profile* profile =
(...skipping 19 matching lines...) Expand all
182 180
183 EXPECT_CALL(*service, AddObserver(testing::_)).Times(testing::AnyNumber()); 181 EXPECT_CALL(*service, AddObserver(testing::_)).Times(testing::AnyNumber());
184 EXPECT_CALL(*service, RemoveObserver(testing::_)).Times(testing::AnyNumber()); 182 EXPECT_CALL(*service, RemoveObserver(testing::_)).Times(testing::AnyNumber());
185 183
186 browser_ = new Browser(Browser::CreateParams(profile)); 184 browser_ = new Browser(Browser::CreateParams(profile));
187 185
188 service->Initialize(); 186 service->Initialize();
189 } 187 }
190 188
191 void ExtensionSessionsTest::CreateTestExtension() { 189 void ExtensionSessionsTest::CreateTestExtension() {
192 scoped_ptr<base::DictionaryValue> test_extension_value( 190 std::unique_ptr<base::DictionaryValue> test_extension_value(
193 api_test_utils::ParseDictionary( 191 api_test_utils::ParseDictionary(
194 "{\"name\": \"Test\", \"version\": \"1.0\", " 192 "{\"name\": \"Test\", \"version\": \"1.0\", "
195 "\"permissions\": [\"sessions\", \"tabs\"]}")); 193 "\"permissions\": [\"sessions\", \"tabs\"]}"));
196 extension_ = api_test_utils::CreateExtension(test_extension_value.get()); 194 extension_ = api_test_utils::CreateExtension(test_extension_value.get());
197 } 195 }
198 196
199 void ExtensionSessionsTest::CreateSessionModels() { 197 void ExtensionSessionsTest::CreateSessionModels() {
200 syncer::SyncDataList initial_data; 198 syncer::SyncDataList initial_data;
201 for (size_t index = 0; index < arraysize(kSessionTags); ++index) { 199 for (size_t index = 0; index < arraysize(kSessionTags); ++index) {
202 // Fill an instance of session specifics with a foreign session's data. 200 // Fill an instance of session specifics with a foreign session's data.
(...skipping 20 matching lines...) Expand all
223 entity.mutable_session()->CopyFrom(tabs[i]); 221 entity.mutable_session()->CopyFrom(tabs[i]);
224 initial_data.push_back(syncer::SyncData::CreateRemoteData( 222 initial_data.push_back(syncer::SyncData::CreateRemoteData(
225 i + 2, 223 i + 2,
226 entity, 224 entity,
227 base::Time(), 225 base::Time(),
228 syncer::AttachmentIdList(), 226 syncer::AttachmentIdList(),
229 syncer::AttachmentServiceProxyForTest::Create())); 227 syncer::AttachmentServiceProxyForTest::Create()));
230 } 228 }
231 } 229 }
232 230
233 ProfileSyncServiceFactory::GetForProfile(browser_->profile())-> 231 ProfileSyncServiceFactory::GetForProfile(browser_->profile())
234 GetSessionsSyncableService()-> 232 ->GetSessionsSyncableService()
235 MergeDataAndStartSyncing(syncer::SESSIONS, initial_data, 233 ->MergeDataAndStartSyncing(syncer::SESSIONS, initial_data,
236 scoped_ptr<syncer::SyncChangeProcessor>( 234 std::unique_ptr<syncer::SyncChangeProcessor>(
237 new syncer::FakeSyncChangeProcessor()), 235 new syncer::FakeSyncChangeProcessor()),
238 scoped_ptr<syncer::SyncErrorFactory>( 236 std::unique_ptr<syncer::SyncErrorFactory>(
239 new syncer::SyncErrorFactoryMock())); 237 new syncer::SyncErrorFactoryMock()));
240 } 238 }
241 239
242 testing::AssertionResult CheckSessionModels(const base::ListValue& devices, 240 testing::AssertionResult CheckSessionModels(const base::ListValue& devices,
243 size_t num_sessions) { 241 size_t num_sessions) {
244 EXPECT_EQ(5u, devices.GetSize()); 242 EXPECT_EQ(5u, devices.GetSize());
245 const base::DictionaryValue* device = NULL; 243 const base::DictionaryValue* device = NULL;
246 const base::ListValue* sessions = NULL; 244 const base::ListValue* sessions = NULL;
247 for (size_t i = 0; i < devices.GetSize(); ++i) { 245 for (size_t i = 0; i < devices.GetSize(); ++i) {
248 EXPECT_TRUE(devices.GetDictionary(i, &device)); 246 EXPECT_TRUE(devices.GetDictionary(i, &device));
249 EXPECT_EQ(kSessionTags[i], api_test_utils::GetString(device, "info")); 247 EXPECT_EQ(kSessionTags[i], api_test_utils::GetString(device, "info"));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 api_test_utils::GetString(tab, "favIconUrl")); 281 api_test_utils::GetString(tab, "favIconUrl"));
284 EXPECT_EQ(base::StringPrintf("%s.%d", kSessionTags[i], kTabIDs[j]), 282 EXPECT_EQ(base::StringPrintf("%s.%d", kSessionTags[i], kTabIDs[j]),
285 api_test_utils::GetString(tab, "sessionId")); 283 api_test_utils::GetString(tab, "sessionId"));
286 } 284 }
287 } 285 }
288 return testing::AssertionSuccess(); 286 return testing::AssertionSuccess();
289 } 287 }
290 288
291 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetDevices) { 289 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetDevices) {
292 CreateSessionModels(); 290 CreateSessionModels();
293 scoped_ptr<base::ListValue> result(utils::ToList( 291 std::unique_ptr<base::ListValue> result(
294 utils::RunFunctionAndReturnSingleResult( 292 utils::ToList(utils::RunFunctionAndReturnSingleResult(
295 CreateFunction<SessionsGetDevicesFunction>(true).get(), 293 CreateFunction<SessionsGetDevicesFunction>(true).get(),
296 "[{\"maxResults\": 0}]", 294 "[{\"maxResults\": 0}]", browser_)));
297 browser_)));
298 ASSERT_TRUE(result); 295 ASSERT_TRUE(result);
299 EXPECT_TRUE(CheckSessionModels(*result, 0u)); 296 EXPECT_TRUE(CheckSessionModels(*result, 0u));
300 } 297 }
301 298
302 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetDevicesMaxResults) { 299 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetDevicesMaxResults) {
303 CreateSessionModels(); 300 CreateSessionModels();
304 scoped_ptr<base::ListValue> result(utils::ToList( 301 std::unique_ptr<base::ListValue> result(
305 utils::RunFunctionAndReturnSingleResult( 302 utils::ToList(utils::RunFunctionAndReturnSingleResult(
306 CreateFunction<SessionsGetDevicesFunction>(true).get(), 303 CreateFunction<SessionsGetDevicesFunction>(true).get(), "[]",
307 "[]",
308 browser_))); 304 browser_)));
309 ASSERT_TRUE(result); 305 ASSERT_TRUE(result);
310 EXPECT_TRUE(CheckSessionModels(*result, 1u)); 306 EXPECT_TRUE(CheckSessionModels(*result, 1u));
311 } 307 }
312 308
313 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetDevicesListEmpty) { 309 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetDevicesListEmpty) {
314 scoped_ptr<base::ListValue> result(utils::ToList( 310 std::unique_ptr<base::ListValue> result(
315 utils::RunFunctionAndReturnSingleResult( 311 utils::ToList(utils::RunFunctionAndReturnSingleResult(
316 CreateFunction<SessionsGetDevicesFunction>(true).get(), 312 CreateFunction<SessionsGetDevicesFunction>(true).get(), "[]",
317 "[]",
318 browser_))); 313 browser_)));
319 314
320 ASSERT_TRUE(result); 315 ASSERT_TRUE(result);
321 base::ListValue* devices = result.get(); 316 base::ListValue* devices = result.get();
322 EXPECT_EQ(0u, devices->GetSize()); 317 EXPECT_EQ(0u, devices->GetSize());
323 } 318 }
324 319
325 // Flaky timeout: http://crbug.com/278372 320 // Flaky timeout: http://crbug.com/278372
326 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, 321 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest,
327 DISABLED_RestoreForeignSessionWindow) { 322 DISABLED_RestoreForeignSessionWindow) {
328 CreateSessionModels(); 323 CreateSessionModels();
329 324
330 scoped_ptr<base::DictionaryValue> restored_window_session(utils::ToDictionary( 325 std::unique_ptr<base::DictionaryValue> restored_window_session(
331 utils::RunFunctionAndReturnSingleResult( 326 utils::ToDictionary(utils::RunFunctionAndReturnSingleResult(
332 CreateFunction<SessionsRestoreFunction>(true).get(), 327 CreateFunction<SessionsRestoreFunction>(true).get(), "[\"tag3.3\"]",
333 "[\"tag3.3\"]", 328 browser_, utils::INCLUDE_INCOGNITO)));
334 browser_,
335 utils::INCLUDE_INCOGNITO)));
336 ASSERT_TRUE(restored_window_session); 329 ASSERT_TRUE(restored_window_session);
337 330
338 scoped_ptr<base::ListValue> result(utils::ToList( 331 std::unique_ptr<base::ListValue> result(
339 utils::RunFunctionAndReturnSingleResult( 332 utils::ToList(utils::RunFunctionAndReturnSingleResult(
340 CreateFunction<WindowsGetAllFunction>(true).get(), 333 CreateFunction<WindowsGetAllFunction>(true).get(), "[]", browser_)));
341 "[]",
342 browser_)));
343 ASSERT_TRUE(result); 334 ASSERT_TRUE(result);
344 335
345 base::ListValue* windows = result.get(); 336 base::ListValue* windows = result.get();
346 EXPECT_EQ(2u, windows->GetSize()); 337 EXPECT_EQ(2u, windows->GetSize());
347 base::DictionaryValue* restored_window = NULL; 338 base::DictionaryValue* restored_window = NULL;
348 EXPECT_TRUE(restored_window_session->GetDictionary("window", 339 EXPECT_TRUE(restored_window_session->GetDictionary("window",
349 &restored_window)); 340 &restored_window));
350 base::DictionaryValue* window = NULL; 341 base::DictionaryValue* window = NULL;
351 int restored_id = api_test_utils::GetInteger(restored_window, "id"); 342 int restored_id = api_test_utils::GetInteger(restored_window, "id");
352 for (size_t i = 0; i < windows->GetSize(); ++i) { 343 for (size_t i = 0; i < windows->GetSize(); ++i) {
(...skipping 17 matching lines...) Expand all
370 CreateSessionModels(); 361 CreateSessionModels();
371 362
372 EXPECT_TRUE(base::MatchPattern(utils::RunFunctionAndReturnError( 363 EXPECT_TRUE(base::MatchPattern(utils::RunFunctionAndReturnError(
373 CreateFunction<SessionsRestoreFunction>(true).get(), 364 CreateFunction<SessionsRestoreFunction>(true).get(),
374 "[\"1\"]", 365 "[\"1\"]",
375 CreateIncognitoBrowser()), 366 CreateIncognitoBrowser()),
376 "Can not restore sessions in incognito mode.")); 367 "Can not restore sessions in incognito mode."));
377 } 368 }
378 369
379 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetRecentlyClosedIncognito) { 370 IN_PROC_BROWSER_TEST_F(ExtensionSessionsTest, GetRecentlyClosedIncognito) {
380 scoped_ptr<base::ListValue> result(utils::ToList( 371 std::unique_ptr<base::ListValue> result(
381 utils::RunFunctionAndReturnSingleResult( 372 utils::ToList(utils::RunFunctionAndReturnSingleResult(
382 CreateFunction<SessionsGetRecentlyClosedFunction>(true).get(), 373 CreateFunction<SessionsGetRecentlyClosedFunction>(true).get(), "[]",
383 "[]",
384 CreateIncognitoBrowser()))); 374 CreateIncognitoBrowser())));
385 ASSERT_TRUE(result); 375 ASSERT_TRUE(result);
386 base::ListValue* sessions = result.get(); 376 base::ListValue* sessions = result.get();
387 EXPECT_EQ(0u, sessions->GetSize()); 377 EXPECT_EQ(0u, sessions->GetSize());
388 } 378 }
389 379
390 // http://crbug.com/251199 380 // http://crbug.com/251199
391 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_SessionsApis) { 381 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, DISABLED_SessionsApis) {
392 #if defined(OS_WIN) && defined(USE_ASH) 382 #if defined(OS_WIN) && defined(USE_ASH)
393 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 383 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
394 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 384 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
395 switches::kAshBrowserTests)) 385 switches::kAshBrowserTests))
396 return; 386 return;
397 #endif 387 #endif
398 388
399 ASSERT_TRUE(RunExtensionSubtest("sessions", 389 ASSERT_TRUE(RunExtensionSubtest("sessions",
400 "sessions.html")) << message_; 390 "sessions.html")) << message_;
401 } 391 }
402 392
403 } // namespace 393 } // namespace
404 394
405 } // namespace extensions 395 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698