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

Side by Side Diff: chrome/browser/themes/theme_syncable_service_unittest.cc

Issue 151963002: Remove duplicated code from sync related unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removed a const qualifier. Created 6 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/themes/theme_syncable_service.h" 5 #include "chrome/browser/themes/theme_syncable_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/time/time.h" 11 #include "base/time/time.h"
12 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
13 #include "chrome/browser/extensions/test_extension_system.h" 13 #include "chrome/browser/extensions/test_extension_system.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/themes/theme_service.h" 15 #include "chrome/browser/themes/theme_service.h"
16 #include "chrome/browser/themes/theme_service_factory.h" 16 #include "chrome/browser/themes/theme_service_factory.h"
17 #include "chrome/common/extensions/extension_messages.h" 17 #include "chrome/common/extensions/extension_messages.h"
18 #include "chrome/common/extensions/manifest_url_handler.h" 18 #include "chrome/common/extensions/manifest_url_handler.h"
19 #include "chrome/test/base/testing_profile.h" 19 #include "chrome/test/base/testing_profile.h"
20 #include "content/public/test/test_browser_thread.h" 20 #include "content/public/test/test_browser_thread.h"
21 #include "extensions/common/extension.h" 21 #include "extensions/common/extension.h"
22 #include "extensions/common/manifest_constants.h" 22 #include "extensions/common/manifest_constants.h"
23 #include "extensions/common/permissions/api_permission_set.h" 23 #include "extensions/common/permissions/api_permission_set.h"
24 #include "extensions/common/permissions/permission_set.h" 24 #include "extensions/common/permissions/permission_set.h"
25 #include "sync/api/fake_sync_change_processor.h"
26 #include "sync/api/sync_change_processor_wrapper_for_test.h"
25 #include "sync/api/sync_error.h" 27 #include "sync/api/sync_error.h"
26 #include "sync/api/sync_error_factory_mock.h" 28 #include "sync/api/sync_error_factory_mock.h"
27 #include "sync/protocol/sync.pb.h" 29 #include "sync/protocol/sync.pb.h"
28 #include "sync/protocol/theme_specifics.pb.h" 30 #include "sync/protocol/theme_specifics.pb.h"
29 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
30 32
31 #if defined(OS_CHROMEOS) 33 #if defined(OS_CHROMEOS)
32 #include "chrome/browser/chromeos/login/user_manager.h" 34 #include "chrome/browser/chromeos/login/user_manager.h"
33 #include "chrome/browser/chromeos/settings/cros_settings.h" 35 #include "chrome/browser/chromeos/settings/cros_settings.h"
34 #include "chrome/browser/chromeos/settings/device_settings_service.h" 36 #include "chrome/browser/chromeos/settings/device_settings_service.h"
35 #endif 37 #endif
36 38
37 using std::string; 39 using std::string;
38 40
39 namespace { 41 namespace {
40 42
41 static const char kCustomThemeName[] = "name"; 43 static const char kCustomThemeName[] = "name";
42 static const char kCustomThemeUrl[] = "http://update.url/foo"; 44 static const char kCustomThemeUrl[] = "http://update.url/foo";
43 45
44 #if defined(OS_WIN) 46 #if defined(OS_WIN)
45 const base::FilePath::CharType kExtensionFilePath[] = 47 const base::FilePath::CharType kExtensionFilePath[] =
46 FILE_PATH_LITERAL("c:\\foo"); 48 FILE_PATH_LITERAL("c:\\foo");
47 #elif defined(OS_POSIX) 49 #elif defined(OS_POSIX)
48 const base::FilePath::CharType kExtensionFilePath[] = FILE_PATH_LITERAL("/oo"); 50 const base::FilePath::CharType kExtensionFilePath[] = FILE_PATH_LITERAL("/oo");
49 #endif 51 #endif
50 52
51 class FakeSyncChangeProcessor : public syncer::SyncChangeProcessor {
52 public:
53 FakeSyncChangeProcessor() : change_output_(NULL) {}
54
55 // syncer::SyncChangeProcessor implementation.
56 virtual syncer::SyncError ProcessSyncChanges(
57 const tracked_objects::Location& from_here,
58 const syncer::SyncChangeList& change_list) OVERRIDE {
59 change_output_->insert(change_output_->end(), change_list.begin(),
60 change_list.end());
61 return syncer::SyncError();
62 }
63
64 virtual syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const
65 OVERRIDE {
66 return syncer::SyncDataList();
67 }
68
69 void SetChangeOutput(syncer::SyncChangeList *change_output) {
70 change_output_ = change_output;
71 }
72
73 private:
74 syncer::SyncChangeList *change_output_;
75 };
76
77 class FakeThemeService : public ThemeService { 53 class FakeThemeService : public ThemeService {
78 public: 54 public:
79 FakeThemeService() : 55 FakeThemeService() :
80 using_native_theme_(false), 56 using_native_theme_(false),
81 using_default_theme_(false), 57 using_default_theme_(false),
82 theme_extension_(NULL), 58 theme_extension_(NULL),
83 is_dirty_(false) {} 59 is_dirty_(false) {}
84 60
85 // ThemeService implementation 61 // ThemeService implementation
86 virtual void SetTheme(const extensions::Extension* extension) OVERRIDE { 62 virtual void SetTheme(const extensions::Extension* extension) OVERRIDE {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 file_thread_(content::BrowserThread::FILE, &loop_), 148 file_thread_(content::BrowserThread::FILE, &loop_),
173 fake_theme_service_(NULL) {} 149 fake_theme_service_(NULL) {}
174 150
175 virtual ~ThemeSyncableServiceTest() {} 151 virtual ~ThemeSyncableServiceTest() {}
176 152
177 virtual void SetUp() { 153 virtual void SetUp() {
178 profile_.reset(new TestingProfile); 154 profile_.reset(new TestingProfile);
179 fake_theme_service_ = BuildForProfile(profile_.get()); 155 fake_theme_service_ = BuildForProfile(profile_.get());
180 theme_sync_service_.reset(new ThemeSyncableService(profile_.get(), 156 theme_sync_service_.reset(new ThemeSyncableService(profile_.get(),
181 fake_theme_service_)); 157 fake_theme_service_));
182 fake_change_processor_.reset(new FakeSyncChangeProcessor); 158 fake_change_processor_.reset(new syncer::FakeSyncChangeProcessor);
183 SetUpExtension(); 159 SetUpExtension();
184 } 160 }
185 161
186 virtual void TearDown() { 162 virtual void TearDown() {
187 profile_.reset(); 163 profile_.reset();
188 loop_.RunUntilIdle(); 164 loop_.RunUntilIdle();
189 } 165 }
190 166
191 void SetUpExtension() { 167 void SetUpExtension() {
192 CommandLine command_line(CommandLine::NO_PROGRAM); 168 CommandLine command_line(CommandLine::NO_PROGRAM);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 #if defined OS_CHROMEOS 224 #if defined OS_CHROMEOS
249 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; 225 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
250 chromeos::ScopedTestCrosSettings test_cros_settings_; 226 chromeos::ScopedTestCrosSettings test_cros_settings_;
251 chromeos::ScopedTestUserManager test_user_manager_; 227 chromeos::ScopedTestUserManager test_user_manager_;
252 #endif 228 #endif
253 229
254 scoped_ptr<TestingProfile> profile_; 230 scoped_ptr<TestingProfile> profile_;
255 FakeThemeService* fake_theme_service_; 231 FakeThemeService* fake_theme_service_;
256 scoped_refptr<extensions::Extension> theme_extension_; 232 scoped_refptr<extensions::Extension> theme_extension_;
257 scoped_ptr<ThemeSyncableService> theme_sync_service_; 233 scoped_ptr<ThemeSyncableService> theme_sync_service_;
258 scoped_ptr<syncer::SyncChangeProcessor> fake_change_processor_; 234 scoped_ptr<syncer::FakeSyncChangeProcessor> fake_change_processor_;
259 }; 235 };
260 236
261 class PolicyInstalledThemeTest : public ThemeSyncableServiceTest { 237 class PolicyInstalledThemeTest : public ThemeSyncableServiceTest {
262 virtual extensions::Manifest::Location GetThemeLocation() OVERRIDE { 238 virtual extensions::Manifest::Location GetThemeLocation() OVERRIDE {
263 return extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD; 239 return extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD;
264 } 240 }
265 }; 241 };
266 242
267 TEST_F(ThemeSyncableServiceTest, AreThemeSpecificsEqual) { 243 TEST_F(ThemeSyncableServiceTest, AreThemeSpecificsEqual) {
268 sync_pb::ThemeSpecifics a, b; 244 sync_pb::ThemeSpecifics a, b;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 286
311 b.set_use_system_theme_by_default(true); 287 b.set_use_system_theme_by_default(true);
312 EXPECT_TRUE(ThemeSyncableService::AreThemeSpecificsEqual(a, b, false)); 288 EXPECT_TRUE(ThemeSyncableService::AreThemeSpecificsEqual(a, b, false));
313 EXPECT_TRUE(ThemeSyncableService::AreThemeSpecificsEqual(a, b, true)); 289 EXPECT_TRUE(ThemeSyncableService::AreThemeSpecificsEqual(a, b, true));
314 } 290 }
315 291
316 TEST_F(ThemeSyncableServiceTest, SetCurrentThemeDefaultTheme) { 292 TEST_F(ThemeSyncableServiceTest, SetCurrentThemeDefaultTheme) {
317 // Set up theme service to use custom theme. 293 // Set up theme service to use custom theme.
318 fake_theme_service_->SetTheme(theme_extension_.get()); 294 fake_theme_service_->SetTheme(theme_extension_.get());
319 295
320 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 296 syncer::SyncError error =
321 syncer::THEMES, MakeThemeDataList(sync_pb::ThemeSpecifics()), 297 theme_sync_service_
322 fake_change_processor_.Pass(), 298 ->MergeDataAndStartSyncing(
323 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 299 syncer::THEMES,
324 error(); 300 MakeThemeDataList(sync_pb::ThemeSpecifics()),
301 scoped_ptr<syncer::SyncChangeProcessor>(
302 new syncer::SyncChangeProcessorWrapperForTest(
303 fake_change_processor_.get())),
304 scoped_ptr<syncer::SyncErrorFactory>(
305 new syncer::SyncErrorFactoryMock()))
306 .error();
325 EXPECT_FALSE(error.IsSet()) << error.message(); 307 EXPECT_FALSE(error.IsSet()) << error.message();
326 EXPECT_TRUE(fake_theme_service_->UsingDefaultTheme()); 308 EXPECT_TRUE(fake_theme_service_->UsingDefaultTheme());
327 } 309 }
328 310
329 TEST_F(ThemeSyncableServiceTest, SetCurrentThemeSystemTheme) { 311 TEST_F(ThemeSyncableServiceTest, SetCurrentThemeSystemTheme) {
330 sync_pb::ThemeSpecifics theme_specifics; 312 sync_pb::ThemeSpecifics theme_specifics;
331 theme_specifics.set_use_system_theme_by_default(true); 313 theme_specifics.set_use_system_theme_by_default(true);
332 314
333 // Set up theme service to use custom theme. 315 // Set up theme service to use custom theme.
334 fake_theme_service_->SetTheme(theme_extension_.get()); 316 fake_theme_service_->SetTheme(theme_extension_.get());
335 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 317 syncer::SyncError error =
336 syncer::THEMES, MakeThemeDataList(theme_specifics), 318 theme_sync_service_
337 fake_change_processor_.Pass(), 319 ->MergeDataAndStartSyncing(
338 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 320 syncer::THEMES,
339 error(); 321 MakeThemeDataList(theme_specifics),
322 scoped_ptr<syncer::SyncChangeProcessor>(
323 new syncer::SyncChangeProcessorWrapperForTest(
324 fake_change_processor_.get())),
325 scoped_ptr<syncer::SyncErrorFactory>(
326 new syncer::SyncErrorFactoryMock()))
327 .error();
340 EXPECT_FALSE(error.IsSet()) << error.message(); 328 EXPECT_FALSE(error.IsSet()) << error.message();
341 EXPECT_TRUE(fake_theme_service_->UsingNativeTheme()); 329 EXPECT_TRUE(fake_theme_service_->UsingNativeTheme());
342 } 330 }
343 331
344 TEST_F(ThemeSyncableServiceTest, SetCurrentThemeCustomTheme) { 332 TEST_F(ThemeSyncableServiceTest, SetCurrentThemeCustomTheme) {
345 sync_pb::ThemeSpecifics theme_specifics; 333 sync_pb::ThemeSpecifics theme_specifics;
346 theme_specifics.set_use_custom_theme(true); 334 theme_specifics.set_use_custom_theme(true);
347 theme_specifics.set_custom_theme_id(theme_extension_->id()); 335 theme_specifics.set_custom_theme_id(theme_extension_->id());
348 theme_specifics.set_custom_theme_name(kCustomThemeName); 336 theme_specifics.set_custom_theme_name(kCustomThemeName);
349 theme_specifics.set_custom_theme_name(kCustomThemeUrl); 337 theme_specifics.set_custom_theme_name(kCustomThemeUrl);
350 338
351 // Set up theme service to use default theme. 339 // Set up theme service to use default theme.
352 fake_theme_service_->UseDefaultTheme(); 340 fake_theme_service_->UseDefaultTheme();
353 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 341 syncer::SyncError error =
354 syncer::THEMES, MakeThemeDataList(theme_specifics), 342 theme_sync_service_
355 fake_change_processor_.Pass(), 343 ->MergeDataAndStartSyncing(
356 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 344 syncer::THEMES,
357 error(); 345 MakeThemeDataList(theme_specifics),
346 scoped_ptr<syncer::SyncChangeProcessor>(
347 new syncer::SyncChangeProcessorWrapperForTest(
348 fake_change_processor_.get())),
349 scoped_ptr<syncer::SyncErrorFactory>(
350 new syncer::SyncErrorFactoryMock()))
351 .error();
358 EXPECT_FALSE(error.IsSet()) << error.message(); 352 EXPECT_FALSE(error.IsSet()) << error.message();
359 EXPECT_EQ(fake_theme_service_->theme_extension(), theme_extension_.get()); 353 EXPECT_EQ(fake_theme_service_->theme_extension(), theme_extension_.get());
360 } 354 }
361 355
362 TEST_F(ThemeSyncableServiceTest, DontResetThemeWhenSpecificsAreEqual) { 356 TEST_F(ThemeSyncableServiceTest, DontResetThemeWhenSpecificsAreEqual) {
363 // Set up theme service to use default theme and expect no changes. 357 // Set up theme service to use default theme and expect no changes.
364 fake_theme_service_->UseDefaultTheme(); 358 fake_theme_service_->UseDefaultTheme();
365 fake_theme_service_->MarkClean(); 359 fake_theme_service_->MarkClean();
366 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 360 syncer::SyncError error =
367 syncer::THEMES, MakeThemeDataList(sync_pb::ThemeSpecifics()), 361 theme_sync_service_
368 fake_change_processor_.Pass(), 362 ->MergeDataAndStartSyncing(
369 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 363 syncer::THEMES,
370 error(); 364 MakeThemeDataList(sync_pb::ThemeSpecifics()),
365 scoped_ptr<syncer::SyncChangeProcessor>(
366 new syncer::SyncChangeProcessorWrapperForTest(
367 fake_change_processor_.get())),
368 scoped_ptr<syncer::SyncErrorFactory>(
369 new syncer::SyncErrorFactoryMock()))
370 .error();
371 EXPECT_FALSE(error.IsSet()) << error.message(); 371 EXPECT_FALSE(error.IsSet()) << error.message();
372 EXPECT_FALSE(fake_theme_service_->is_dirty()); 372 EXPECT_FALSE(fake_theme_service_->is_dirty());
373 } 373 }
374 374
375 TEST_F(ThemeSyncableServiceTest, UpdateThemeSpecificsFromCurrentTheme) { 375 TEST_F(ThemeSyncableServiceTest, UpdateThemeSpecificsFromCurrentTheme) {
376 // Set up theme service to use custom theme. 376 // Set up theme service to use custom theme.
377 fake_theme_service_->SetTheme(theme_extension_.get()); 377 fake_theme_service_->SetTheme(theme_extension_.get());
378 378
379 syncer::SyncChangeList change_list; 379 syncer::SyncError error =
380 static_cast<FakeSyncChangeProcessor*>(fake_change_processor_.get())-> 380 theme_sync_service_
381 SetChangeOutput(&change_list); 381 ->MergeDataAndStartSyncing(
382 382 syncer::THEMES,
383 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 383 syncer::SyncDataList(),
384 syncer::THEMES, syncer::SyncDataList(), fake_change_processor_.Pass(), 384 scoped_ptr<syncer::SyncChangeProcessor>(
385 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 385 new syncer::SyncChangeProcessorWrapperForTest(
386 error(); 386 fake_change_processor_.get())),
387 scoped_ptr<syncer::SyncErrorFactory>(
388 new syncer::SyncErrorFactoryMock()))
389 .error();
387 EXPECT_FALSE(error.IsSet()) << error.message(); 390 EXPECT_FALSE(error.IsSet()) << error.message();
388 391 const syncer::SyncChangeList& changes = fake_change_processor_->changes();
389 ASSERT_EQ(1u, change_list.size()); 392 ASSERT_EQ(1u, changes.size());
390 EXPECT_TRUE(change_list[0].IsValid()); 393 EXPECT_TRUE(changes[0].IsValid());
391 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, change_list[0].change_type()); 394 EXPECT_EQ(syncer::SyncChange::ACTION_ADD, changes[0].change_type());
392 EXPECT_EQ(syncer::THEMES, change_list[0].sync_data().GetDataType()); 395 EXPECT_EQ(syncer::THEMES, changes[0].sync_data().GetDataType());
393 396
394 const sync_pb::ThemeSpecifics& theme_specifics = 397 const sync_pb::ThemeSpecifics& theme_specifics =
395 change_list[0].sync_data().GetSpecifics().theme(); 398 changes[0].sync_data().GetSpecifics().theme();
396 EXPECT_TRUE(theme_specifics.use_custom_theme()); 399 EXPECT_TRUE(theme_specifics.use_custom_theme());
397 EXPECT_EQ(theme_extension_->id(), theme_specifics.custom_theme_id()); 400 EXPECT_EQ(theme_extension_->id(), theme_specifics.custom_theme_id());
398 EXPECT_EQ(theme_extension_->name(), theme_specifics.custom_theme_name()); 401 EXPECT_EQ(theme_extension_->name(), theme_specifics.custom_theme_name());
399 EXPECT_EQ( 402 EXPECT_EQ(
400 extensions::ManifestURL::GetUpdateURL(theme_extension_.get()).spec(), 403 extensions::ManifestURL::GetUpdateURL(theme_extension_.get()).spec(),
401 theme_specifics.custom_theme_update_url()); 404 theme_specifics.custom_theme_update_url());
402 } 405 }
403 406
404 TEST_F(ThemeSyncableServiceTest, GetAllSyncData) { 407 TEST_F(ThemeSyncableServiceTest, GetAllSyncData) {
405 // Set up theme service to use custom theme. 408 // Set up theme service to use custom theme.
(...skipping 12 matching lines...) Expand all
418 extensions::ManifestURL::GetUpdateURL(theme_extension_.get()).spec(), 421 extensions::ManifestURL::GetUpdateURL(theme_extension_.get()).spec(),
419 theme_specifics.custom_theme_update_url()); 422 theme_specifics.custom_theme_update_url());
420 } 423 }
421 424
422 TEST_F(ThemeSyncableServiceTest, ProcessSyncThemeChange) { 425 TEST_F(ThemeSyncableServiceTest, ProcessSyncThemeChange) {
423 // Set up theme service to use default theme. 426 // Set up theme service to use default theme.
424 fake_theme_service_->UseDefaultTheme(); 427 fake_theme_service_->UseDefaultTheme();
425 fake_theme_service_->MarkClean(); 428 fake_theme_service_->MarkClean();
426 429
427 // Start syncing. 430 // Start syncing.
428 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 431 syncer::SyncError error =
429 syncer::THEMES, MakeThemeDataList(sync_pb::ThemeSpecifics()), 432 theme_sync_service_
430 fake_change_processor_.Pass(), 433 ->MergeDataAndStartSyncing(
431 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 434 syncer::THEMES,
432 error(); 435 MakeThemeDataList(sync_pb::ThemeSpecifics()),
436 scoped_ptr<syncer::SyncChangeProcessor>(
437 new syncer::SyncChangeProcessorWrapperForTest(
438 fake_change_processor_.get())),
439 scoped_ptr<syncer::SyncErrorFactory>(
440 new syncer::SyncErrorFactoryMock()))
441 .error();
433 EXPECT_FALSE(error.IsSet()) << error.message(); 442 EXPECT_FALSE(error.IsSet()) << error.message();
434 // Don't expect theme change initially because specifics are equal. 443 // Don't expect theme change initially because specifics are equal.
435 EXPECT_FALSE(fake_theme_service_->is_dirty()); 444 EXPECT_FALSE(fake_theme_service_->is_dirty());
436 445
437 // Change specifics to use custom theme and update. 446 // Change specifics to use custom theme and update.
438 sync_pb::ThemeSpecifics theme_specifics; 447 sync_pb::ThemeSpecifics theme_specifics;
439 theme_specifics.set_use_custom_theme(true); 448 theme_specifics.set_use_custom_theme(true);
440 theme_specifics.set_custom_theme_id(theme_extension_->id()); 449 theme_specifics.set_custom_theme_id(theme_extension_->id());
441 theme_specifics.set_custom_theme_name(kCustomThemeName); 450 theme_specifics.set_custom_theme_name(kCustomThemeName);
442 theme_specifics.set_custom_theme_name(kCustomThemeUrl); 451 theme_specifics.set_custom_theme_name(kCustomThemeUrl);
443 sync_pb::EntitySpecifics entity_specifics; 452 sync_pb::EntitySpecifics entity_specifics;
444 entity_specifics.mutable_theme()->CopyFrom(theme_specifics); 453 entity_specifics.mutable_theme()->CopyFrom(theme_specifics);
445 syncer::SyncChangeList change_list; 454 syncer::SyncChangeList change_list;
446 change_list.push_back(syncer::SyncChange( 455 change_list.push_back(syncer::SyncChange(
447 FROM_HERE, 456 FROM_HERE,
448 syncer::SyncChange::ACTION_UPDATE, 457 syncer::SyncChange::ACTION_UPDATE,
449 syncer::SyncData::CreateRemoteData( 458 syncer::SyncData::CreateRemoteData(
450 1, entity_specifics, base::Time()))); 459 1, entity_specifics, base::Time())));
451 error = theme_sync_service_->ProcessSyncChanges(FROM_HERE, change_list); 460 error = theme_sync_service_->ProcessSyncChanges(FROM_HERE, change_list);
452 EXPECT_FALSE(error.IsSet()) << error.message(); 461 EXPECT_FALSE(error.IsSet()) << error.message();
453 EXPECT_EQ(fake_theme_service_->theme_extension(), theme_extension_.get()); 462 EXPECT_EQ(fake_theme_service_->theme_extension(), theme_extension_.get());
454 } 463 }
455 464
456 TEST_F(ThemeSyncableServiceTest, OnThemeChangeByUser) { 465 TEST_F(ThemeSyncableServiceTest, OnThemeChangeByUser) {
457 syncer::SyncChangeList change_list;
458 static_cast<FakeSyncChangeProcessor*>(fake_change_processor_.get())->
459 SetChangeOutput(&change_list);
460
461 // Set up theme service to use default theme. 466 // Set up theme service to use default theme.
462 fake_theme_service_->UseDefaultTheme(); 467 fake_theme_service_->UseDefaultTheme();
463 468
464 // Start syncing. 469 // Start syncing.
465 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 470 syncer::SyncError error =
466 syncer::THEMES, MakeThemeDataList(sync_pb::ThemeSpecifics()), 471 theme_sync_service_
467 fake_change_processor_.Pass(), 472 ->MergeDataAndStartSyncing(
468 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 473 syncer::THEMES,
469 error(); 474 MakeThemeDataList(sync_pb::ThemeSpecifics()),
475 scoped_ptr<syncer::SyncChangeProcessor>(
476 new syncer::SyncChangeProcessorWrapperForTest(
477 fake_change_processor_.get())),
478 scoped_ptr<syncer::SyncErrorFactory>(
479 new syncer::SyncErrorFactoryMock()))
480 .error();
470 EXPECT_FALSE(error.IsSet()) << error.message(); 481 EXPECT_FALSE(error.IsSet()) << error.message();
471 EXPECT_EQ(0u, change_list.size()); 482 const syncer::SyncChangeList& changes = fake_change_processor_->changes();
483 EXPECT_EQ(0u, changes.size());
472 484
473 // Change current theme to custom theme and notify theme_sync_service_. 485 // Change current theme to custom theme and notify theme_sync_service_.
474 fake_theme_service_->SetTheme(theme_extension_.get()); 486 fake_theme_service_->SetTheme(theme_extension_.get());
475 theme_sync_service_->OnThemeChange(); 487 theme_sync_service_->OnThemeChange();
476 EXPECT_EQ(1u, change_list.size()); 488 EXPECT_EQ(1u, changes.size());
477 const sync_pb::ThemeSpecifics& change_specifics = 489 const sync_pb::ThemeSpecifics& change_specifics =
478 change_list[0].sync_data().GetSpecifics().theme(); 490 changes[0].sync_data().GetSpecifics().theme();
479 EXPECT_TRUE(change_specifics.use_custom_theme()); 491 EXPECT_TRUE(change_specifics.use_custom_theme());
480 EXPECT_EQ(theme_extension_->id(), change_specifics.custom_theme_id()); 492 EXPECT_EQ(theme_extension_->id(), change_specifics.custom_theme_id());
481 EXPECT_EQ(theme_extension_->name(), change_specifics.custom_theme_name()); 493 EXPECT_EQ(theme_extension_->name(), change_specifics.custom_theme_name());
482 EXPECT_EQ( 494 EXPECT_EQ(
483 extensions::ManifestURL::GetUpdateURL(theme_extension_.get()).spec(), 495 extensions::ManifestURL::GetUpdateURL(theme_extension_.get()).spec(),
484 change_specifics.custom_theme_update_url()); 496 change_specifics.custom_theme_update_url());
485 } 497 }
486 498
487 TEST_F(ThemeSyncableServiceTest, StopSync) { 499 TEST_F(ThemeSyncableServiceTest, StopSync) {
488 syncer::SyncChangeList change_list;
489 static_cast<FakeSyncChangeProcessor*>(fake_change_processor_.get())->
490 SetChangeOutput(&change_list);
491
492 // Set up theme service to use default theme. 500 // Set up theme service to use default theme.
493 fake_theme_service_->UseDefaultTheme(); 501 fake_theme_service_->UseDefaultTheme();
494 502
495 // Start syncing. 503 // Start syncing.
496 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 504 syncer::SyncError error =
497 syncer::THEMES, MakeThemeDataList(sync_pb::ThemeSpecifics()), 505 theme_sync_service_
498 fake_change_processor_.Pass(), 506 ->MergeDataAndStartSyncing(
499 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 507 syncer::THEMES,
500 error(); 508 MakeThemeDataList(sync_pb::ThemeSpecifics()),
509 scoped_ptr<syncer::SyncChangeProcessor>(
510 new syncer::SyncChangeProcessorWrapperForTest(
511 fake_change_processor_.get())),
512 scoped_ptr<syncer::SyncErrorFactory>(
513 new syncer::SyncErrorFactoryMock()))
514 .error();
501 EXPECT_FALSE(error.IsSet()) << error.message(); 515 EXPECT_FALSE(error.IsSet()) << error.message();
502 EXPECT_EQ(0u, change_list.size()); 516 const syncer::SyncChangeList& changes = fake_change_processor_->changes();
517 EXPECT_EQ(0u, changes.size());
503 518
504 // Stop syncing. 519 // Stop syncing.
505 theme_sync_service_->StopSyncing(syncer::THEMES); 520 theme_sync_service_->StopSyncing(syncer::THEMES);
506 521
507 // Change current theme to custom theme and notify theme_sync_service_. 522 // Change current theme to custom theme and notify theme_sync_service_.
508 // No change is output because sync has stopped. 523 // No change is output because sync has stopped.
509 fake_theme_service_->SetTheme(theme_extension_.get()); 524 fake_theme_service_->SetTheme(theme_extension_.get());
510 theme_sync_service_->OnThemeChange(); 525 theme_sync_service_->OnThemeChange();
511 EXPECT_EQ(0u, change_list.size()); 526 EXPECT_EQ(0u, changes.size());
512 527
513 // ProcessSyncChanges() should return error when sync has stopped. 528 // ProcessSyncChanges() should return error when sync has stopped.
514 error = theme_sync_service_->ProcessSyncChanges(FROM_HERE, change_list); 529 error = theme_sync_service_->ProcessSyncChanges(FROM_HERE, changes);
515 EXPECT_TRUE(error.IsSet()); 530 EXPECT_TRUE(error.IsSet());
516 EXPECT_EQ(syncer::THEMES, error.model_type()); 531 EXPECT_EQ(syncer::THEMES, error.model_type());
517 EXPECT_EQ("datatype error was encountered: Theme syncable service is not " 532 EXPECT_EQ("datatype error was encountered: Theme syncable service is not "
518 "started.", 533 "started.",
519 error.message()); 534 error.message());
520 } 535 }
521 536
522 TEST_F(ThemeSyncableServiceTest, RestoreSystemThemeBitWhenChangeToCustomTheme) { 537 TEST_F(ThemeSyncableServiceTest, RestoreSystemThemeBitWhenChangeToCustomTheme) {
523 syncer::SyncChangeList change_list;
524 static_cast<FakeSyncChangeProcessor*>(fake_change_processor_.get())->
525 SetChangeOutput(&change_list);
526
527 // Initialize to use system theme. 538 // Initialize to use system theme.
528 fake_theme_service_->UseDefaultTheme(); 539 fake_theme_service_->UseDefaultTheme();
529 sync_pb::ThemeSpecifics theme_specifics; 540 sync_pb::ThemeSpecifics theme_specifics;
530 theme_specifics.set_use_system_theme_by_default(true); 541 theme_specifics.set_use_system_theme_by_default(true);
531 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 542 syncer::SyncError error =
532 syncer::THEMES, MakeThemeDataList(theme_specifics), 543 theme_sync_service_
533 fake_change_processor_.Pass(), 544 ->MergeDataAndStartSyncing(
534 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 545 syncer::THEMES,
535 error(); 546 MakeThemeDataList(theme_specifics),
547 scoped_ptr<syncer::SyncChangeProcessor>(
548 new syncer::SyncChangeProcessorWrapperForTest(
549 fake_change_processor_.get())),
550 scoped_ptr<syncer::SyncErrorFactory>(
551 new syncer::SyncErrorFactoryMock()))
552 .error();
536 553
537 // Change to custom theme and notify theme_sync_service_. 554 // Change to custom theme and notify theme_sync_service_.
538 // use_system_theme_by_default bit should be preserved. 555 // use_system_theme_by_default bit should be preserved.
539 fake_theme_service_->SetTheme(theme_extension_.get()); 556 fake_theme_service_->SetTheme(theme_extension_.get());
540 theme_sync_service_->OnThemeChange(); 557 theme_sync_service_->OnThemeChange();
541 EXPECT_EQ(1u, change_list.size()); 558 const syncer::SyncChangeList& changes = fake_change_processor_->changes();
559 EXPECT_EQ(1u, changes.size());
542 const sync_pb::ThemeSpecifics& change_specifics = 560 const sync_pb::ThemeSpecifics& change_specifics =
543 change_list[0].sync_data().GetSpecifics().theme(); 561 changes[0].sync_data().GetSpecifics().theme();
544 EXPECT_TRUE(change_specifics.use_system_theme_by_default()); 562 EXPECT_TRUE(change_specifics.use_system_theme_by_default());
545 } 563 }
546 564
547 #if defined(TOOLKIT_GTK) 565 #if defined(TOOLKIT_GTK)
548 TEST_F(ThemeSyncableServiceTest, 566 TEST_F(ThemeSyncableServiceTest,
549 GtkUpdateSystemThemeBitWhenChangeBetweenSystemAndDefault) { 567 GtkUpdateSystemThemeBitWhenChangeBetweenSystemAndDefault) {
550 syncer::SyncChangeList change_list;
551 static_cast<FakeSyncChangeProcessor*>(fake_change_processor_.get())->
552 SetChangeOutput(&change_list);
553
554 // Initialize to use native theme. 568 // Initialize to use native theme.
555 fake_theme_service_->SetNativeTheme(); 569 fake_theme_service_->SetNativeTheme();
556 fake_theme_service_->MarkClean(); 570 fake_theme_service_->MarkClean();
557 sync_pb::ThemeSpecifics theme_specifics; 571 sync_pb::ThemeSpecifics theme_specifics;
558 theme_specifics.set_use_system_theme_by_default(true); 572 theme_specifics.set_use_system_theme_by_default(true);
559 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 573 syncer::SyncError error =
560 syncer::THEMES, MakeThemeDataList(theme_specifics), 574 theme_sync_service_
561 fake_change_processor_.Pass(), 575 ->MergeDataAndStartSyncing(
562 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 576 syncer::THEMES,
563 error(); 577 MakeThemeDataList(theme_specifics),
578 scoped_ptr<syncer::SyncChangeProcessor>(
579 new syncer::SyncChangeProcessorWrapperForTest(
580 fake_change_processor_.get())),
581 scoped_ptr<syncer::SyncErrorFactory>(
582 new syncer::SyncErrorFactoryMock()))
583 .error();
564 EXPECT_FALSE(fake_theme_service_->is_dirty()); 584 EXPECT_FALSE(fake_theme_service_->is_dirty());
565 585
566 // Change to default theme and notify theme_sync_service_. 586 // Change to default theme and notify theme_sync_service_.
567 // use_system_theme_by_default bit should be false. 587 // use_system_theme_by_default bit should be false.
568 fake_theme_service_->UseDefaultTheme(); 588 fake_theme_service_->UseDefaultTheme();
569 theme_sync_service_->OnThemeChange(); 589 theme_sync_service_->OnThemeChange();
570 EXPECT_EQ(1u, change_list.size()); 590 syncer::SyncChangeList& changes = fake_change_processor_->changes();
571 EXPECT_FALSE(change_list[0].sync_data().GetSpecifics().theme() 591 EXPECT_EQ(1u, changes.size());
572 .use_system_theme_by_default()); 592 EXPECT_FALSE(changes[0]
593 .sync_data()
594 .GetSpecifics()
595 .theme()
596 .use_system_theme_by_default());
573 597
574 // Change to native theme and notify theme_sync_service_. 598 // Change to native theme and notify theme_sync_service_.
575 // use_system_theme_by_default bit should be true. 599 // use_system_theme_by_default bit should be true.
576 change_list.clear(); 600 changes.clear();
577 fake_theme_service_->SetNativeTheme(); 601 fake_theme_service_->SetNativeTheme();
578 theme_sync_service_->OnThemeChange(); 602 theme_sync_service_->OnThemeChange();
579 EXPECT_EQ(1u, change_list.size()); 603 EXPECT_EQ(1u, changes.size());
580 EXPECT_TRUE(change_list[0].sync_data().GetSpecifics().theme() 604 EXPECT_TRUE(changes[0]
581 .use_system_theme_by_default()); 605 .sync_data()
606 .GetSpecifics()
607 .theme()
608 .use_system_theme_by_default());
582 } 609 }
583 #endif 610 #endif
584 611
585 #ifndef TOOLKIT_GTK 612 #ifndef TOOLKIT_GTK
586 TEST_F(ThemeSyncableServiceTest, 613 TEST_F(ThemeSyncableServiceTest,
587 NonGtkPreserveSystemThemeBitWhenChangeToDefaultTheme) { 614 NonGtkPreserveSystemThemeBitWhenChangeToDefaultTheme) {
588 syncer::SyncChangeList change_list;
589 static_cast<FakeSyncChangeProcessor*>(fake_change_processor_.get())->
590 SetChangeOutput(&change_list);
591
592 // Set up theme service to use default theme. 615 // Set up theme service to use default theme.
593 fake_theme_service_->UseDefaultTheme(); 616 fake_theme_service_->UseDefaultTheme();
594 617
595 // Initialize to use custom theme with use_system_theme_by_default set true. 618 // Initialize to use custom theme with use_system_theme_by_default set true.
596 sync_pb::ThemeSpecifics theme_specifics; 619 sync_pb::ThemeSpecifics theme_specifics;
597 theme_specifics.set_use_custom_theme(true); 620 theme_specifics.set_use_custom_theme(true);
598 theme_specifics.set_custom_theme_id(theme_extension_->id()); 621 theme_specifics.set_custom_theme_id(theme_extension_->id());
599 theme_specifics.set_custom_theme_name(kCustomThemeName); 622 theme_specifics.set_custom_theme_name(kCustomThemeName);
600 theme_specifics.set_custom_theme_name(kCustomThemeUrl); 623 theme_specifics.set_custom_theme_name(kCustomThemeUrl);
601 theme_specifics.set_use_system_theme_by_default(true); 624 theme_specifics.set_use_system_theme_by_default(true);
602 syncer::SyncError error = theme_sync_service_->MergeDataAndStartSyncing( 625 syncer::SyncError error =
603 syncer::THEMES, MakeThemeDataList(theme_specifics), 626 theme_sync_service_
604 fake_change_processor_.Pass(), 627 ->MergeDataAndStartSyncing(
605 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())). 628 syncer::THEMES,
606 error(); 629 MakeThemeDataList(theme_specifics),
630 scoped_ptr<syncer::SyncChangeProcessor>(
631 new syncer::SyncChangeProcessorWrapperForTest(
632 fake_change_processor_.get())),
633 scoped_ptr<syncer::SyncErrorFactory>(
634 new syncer::SyncErrorFactoryMock()))
635 .error();
607 EXPECT_EQ(fake_theme_service_->theme_extension(), theme_extension_.get()); 636 EXPECT_EQ(fake_theme_service_->theme_extension(), theme_extension_.get());
608 637
609 // Change to default theme and notify theme_sync_service_. 638 // Change to default theme and notify theme_sync_service_.
610 // use_system_theme_by_default bit should be preserved. 639 // use_system_theme_by_default bit should be preserved.
611 fake_theme_service_->UseDefaultTheme(); 640 fake_theme_service_->UseDefaultTheme();
612 theme_sync_service_->OnThemeChange(); 641 theme_sync_service_->OnThemeChange();
613 EXPECT_EQ(1u, change_list.size()); 642 const syncer::SyncChangeList& changes = fake_change_processor_->changes();
643 EXPECT_EQ(1u, changes.size());
614 const sync_pb::ThemeSpecifics& change_specifics = 644 const sync_pb::ThemeSpecifics& change_specifics =
615 change_list[0].sync_data().GetSpecifics().theme(); 645 changes[0].sync_data().GetSpecifics().theme();
616 EXPECT_FALSE(change_specifics.use_custom_theme()); 646 EXPECT_FALSE(change_specifics.use_custom_theme());
617 EXPECT_TRUE(change_specifics.use_system_theme_by_default()); 647 EXPECT_TRUE(change_specifics.use_system_theme_by_default());
618 } 648 }
619 #endif 649 #endif
620 650
621 TEST_F(PolicyInstalledThemeTest, InstallThemeByPolicy) { 651 TEST_F(PolicyInstalledThemeTest, InstallThemeByPolicy) {
622 // Set up theme service to use custom theme that was installed by policy. 652 // Set up theme service to use custom theme that was installed by policy.
623 fake_theme_service_->SetTheme(theme_extension_.get()); 653 fake_theme_service_->SetTheme(theme_extension_.get());
624 654
625 syncer::SyncDataList data_list = 655 syncer::SyncDataList data_list =
626 theme_sync_service_->GetAllSyncData(syncer::THEMES); 656 theme_sync_service_->GetAllSyncData(syncer::THEMES);
627 657
628 ASSERT_EQ(0u, data_list.size()); 658 ASSERT_EQ(0u, data_list.size());
629 } 659 }
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/favicon_cache_unittest.cc ('k') | sync/api/fake_sync_change_processor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698