| OLD | NEW |
| 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/chromeos/preferences.h" | 5 #include "chrome/browser/chromeos/preferences.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/json/json_string_value_serializer.h" | 9 #include "base/json/json_string_value_serializer.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 std::string()); | 365 std::string()); |
| 366 InitPreferences(); | 366 InitPreferences(); |
| 367 | 367 |
| 368 // Suppose we add an input method before syncing starts. | 368 // Suppose we add an input method before syncing starts. |
| 369 preload_engines_.SetValue( | 369 preload_engines_.SetValue( |
| 370 ToInputMethodIds("xkb:us:altgr-intl:eng,xkb:us:intl:eng")); | 370 ToInputMethodIds("xkb:us:altgr-intl:eng,xkb:us:intl:eng")); |
| 371 | 371 |
| 372 // Create some values to come from the server. | 372 // Create some values to come from the server. |
| 373 syncer::SyncDataList sync_data_list; | 373 syncer::SyncDataList sync_data_list; |
| 374 sync_data_list.push_back(CreatePrefSyncData( | 374 sync_data_list.push_back(CreatePrefSyncData( |
| 375 prefs::kLanguagePreferredLanguagesSyncable, base::StringValue("ru,fi"))); | 375 prefs::kLanguagePreferredLanguagesSyncable, base::Value("ru,fi"))); |
| 376 sync_data_list.push_back(CreatePrefSyncData( | 376 sync_data_list.push_back(CreatePrefSyncData( |
| 377 prefs::kLanguagePreloadEnginesSyncable, | 377 prefs::kLanguagePreloadEnginesSyncable, base::Value("xkb:se::swe"))); |
| 378 base::StringValue("xkb:se::swe"))); | 378 sync_data_list.push_back( |
| 379 sync_data_list.push_back(CreatePrefSyncData( | 379 CreatePrefSyncData(prefs::kLanguageEnabledExtensionImesSyncable, |
| 380 prefs::kLanguageEnabledExtensionImesSyncable, | 380 base::Value(kIdentityIMEID))); |
| 381 base::StringValue(kIdentityIMEID))); | |
| 382 | 381 |
| 383 // Sync for the first time. | 382 // Sync for the first time. |
| 384 syncer::SyncableService* sync = | 383 syncer::SyncableService* sync = |
| 385 pref_service_->GetSyncableService( | 384 pref_service_->GetSyncableService( |
| 386 syncer::PREFERENCES); | 385 syncer::PREFERENCES); |
| 387 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, | 386 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, |
| 388 std::unique_ptr<syncer::SyncChangeProcessor>( | 387 std::unique_ptr<syncer::SyncChangeProcessor>( |
| 389 new syncer::FakeSyncChangeProcessor), | 388 new syncer::FakeSyncChangeProcessor), |
| 390 std::unique_ptr<syncer::SyncErrorFactory>( | 389 std::unique_ptr<syncer::SyncErrorFactory>( |
| 391 new syncer::SyncErrorFactoryMock)); | 390 new syncer::SyncErrorFactoryMock)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 406 } | 405 } |
| 407 { | 406 { |
| 408 SCOPED_TRACE("Server values should have been updated to local values."); | 407 SCOPED_TRACE("Server values should have been updated to local values."); |
| 409 ExpectGlobalValues( | 408 ExpectGlobalValues( |
| 410 expected_languages, expected_preload_engines, expected_extensions); | 409 expected_languages, expected_preload_engines, expected_extensions); |
| 411 } | 410 } |
| 412 | 411 |
| 413 // Update the global values from the server again. | 412 // Update the global values from the server again. |
| 414 syncer::SyncChangeList change_list; | 413 syncer::SyncChangeList change_list; |
| 415 change_list.push_back(syncer::SyncChange( | 414 change_list.push_back(syncer::SyncChange( |
| 416 FROM_HERE, | 415 FROM_HERE, syncer::SyncChange::ACTION_UPDATE, |
| 417 syncer::SyncChange::ACTION_UPDATE, | 416 CreatePrefSyncData(prefs::kLanguagePreferredLanguagesSyncable, |
| 418 CreatePrefSyncData( | 417 base::Value("de")))); |
| 419 prefs::kLanguagePreferredLanguagesSyncable, | |
| 420 base::StringValue("de")))); | |
| 421 change_list.push_back(syncer::SyncChange( | 418 change_list.push_back(syncer::SyncChange( |
| 422 FROM_HERE, | 419 FROM_HERE, syncer::SyncChange::ACTION_UPDATE, |
| 423 syncer::SyncChange::ACTION_UPDATE, | 420 CreatePrefSyncData(prefs::kLanguagePreloadEnginesSyncable, |
| 424 CreatePrefSyncData( | 421 base::Value(ToInputMethodIds("xkb:de::ger"))))); |
| 425 prefs::kLanguagePreloadEnginesSyncable, | |
| 426 base::StringValue(ToInputMethodIds("xkb:de::ger"))))); | |
| 427 change_list.push_back(syncer::SyncChange( | 422 change_list.push_back(syncer::SyncChange( |
| 428 FROM_HERE, | 423 FROM_HERE, syncer::SyncChange::ACTION_UPDATE, |
| 429 syncer::SyncChange::ACTION_UPDATE, | 424 CreatePrefSyncData(prefs::kLanguageEnabledExtensionImesSyncable, |
| 430 CreatePrefSyncData( | 425 base::Value(kToUpperIMEID)))); |
| 431 prefs::kLanguageEnabledExtensionImesSyncable, | |
| 432 base::StringValue(kToUpperIMEID)))); | |
| 433 sync->ProcessSyncChanges(FROM_HERE, change_list); | 426 sync->ProcessSyncChanges(FROM_HERE, change_list); |
| 434 content::RunAllBlockingPoolTasksUntilIdle(); | 427 content::RunAllBlockingPoolTasksUntilIdle(); |
| 435 | 428 |
| 436 { | 429 { |
| 437 SCOPED_TRACE("Local preferences should have remained the same."); | 430 SCOPED_TRACE("Local preferences should have remained the same."); |
| 438 ExpectLocalValues( | 431 ExpectLocalValues( |
| 439 expected_languages, | 432 expected_languages, |
| 440 ToInputMethodIds(expected_preload_engines), | 433 ToInputMethodIds(expected_preload_engines), |
| 441 expected_extensions); | 434 expected_extensions); |
| 442 } | 435 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 458 | 451 |
| 459 SetLocalValues(languages, preload_engines, extensions); | 452 SetLocalValues(languages, preload_engines, extensions); |
| 460 SetGlobalValues(languages, preload_engines, extensions); | 453 SetGlobalValues(languages, preload_engines, extensions); |
| 461 pref_service_->SetBoolean( | 454 pref_service_->SetBoolean( |
| 462 prefs::kLanguageShouldMergeInputMethods, false); | 455 prefs::kLanguageShouldMergeInputMethods, false); |
| 463 InitPreferences(); | 456 InitPreferences(); |
| 464 | 457 |
| 465 // Create some values to come from the server. | 458 // Create some values to come from the server. |
| 466 syncer::SyncDataList sync_data_list; | 459 syncer::SyncDataList sync_data_list; |
| 467 sync_data_list.push_back(CreatePrefSyncData( | 460 sync_data_list.push_back(CreatePrefSyncData( |
| 468 prefs::kLanguagePreferredLanguages, base::StringValue("ru,fi"))); | 461 prefs::kLanguagePreferredLanguages, base::Value("ru,fi"))); |
| 462 sync_data_list.push_back( |
| 463 CreatePrefSyncData(prefs::kLanguagePreloadEngines, |
| 464 base::Value(ToInputMethodIds("xkb:ru::rus")))); |
| 469 sync_data_list.push_back(CreatePrefSyncData( | 465 sync_data_list.push_back(CreatePrefSyncData( |
| 470 prefs::kLanguagePreloadEngines, | 466 prefs::kLanguageEnabledExtensionImes, base::Value(kIdentityIMEID))); |
| 471 base::StringValue(ToInputMethodIds("xkb:ru::rus")))); | |
| 472 sync_data_list.push_back(CreatePrefSyncData( | |
| 473 prefs::kLanguageEnabledExtensionImes, base::StringValue(kIdentityIMEID))); | |
| 474 | 467 |
| 475 // Sync. | 468 // Sync. |
| 476 syncer::SyncableService* sync = | 469 syncer::SyncableService* sync = |
| 477 pref_service_->GetSyncableService( | 470 pref_service_->GetSyncableService( |
| 478 syncer::PREFERENCES); | 471 syncer::PREFERENCES); |
| 479 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, | 472 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, |
| 480 std::unique_ptr<syncer::SyncChangeProcessor>( | 473 std::unique_ptr<syncer::SyncChangeProcessor>( |
| 481 new syncer::FakeSyncChangeProcessor), | 474 new syncer::FakeSyncChangeProcessor), |
| 482 std::unique_ptr<syncer::SyncErrorFactory>( | 475 std::unique_ptr<syncer::SyncErrorFactory>( |
| 483 new syncer::SyncErrorFactoryMock)); | 476 new syncer::SyncErrorFactoryMock)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 498 // Tests that logging in with preferences from before a) XKB component | 491 // Tests that logging in with preferences from before a) XKB component |
| 499 // extensions and b) the IME syncing logic doesn't overwrite settings. | 492 // extensions and b) the IME syncing logic doesn't overwrite settings. |
| 500 TEST_F(InputMethodPreferencesTest, TestLogInLegacy) { | 493 TEST_F(InputMethodPreferencesTest, TestLogInLegacy) { |
| 501 // Simulate existing local preferences from M-36. | 494 // Simulate existing local preferences from M-36. |
| 502 SetLocalValues("es", "xkb:es::spa", kIdentityIMEID); | 495 SetLocalValues("es", "xkb:es::spa", kIdentityIMEID); |
| 503 InitPreferences(); | 496 InitPreferences(); |
| 504 | 497 |
| 505 // Sync. Since this is an existing profile, the local values shouldn't change. | 498 // Sync. Since this is an existing profile, the local values shouldn't change. |
| 506 syncer::SyncDataList sync_data_list; | 499 syncer::SyncDataList sync_data_list; |
| 507 sync_data_list.push_back(CreatePrefSyncData( | 500 sync_data_list.push_back(CreatePrefSyncData( |
| 508 prefs::kLanguagePreferredLanguagesSyncable, base::StringValue("ru,fi"))); | 501 prefs::kLanguagePreferredLanguagesSyncable, base::Value("ru,fi"))); |
| 509 sync_data_list.push_back(CreatePrefSyncData( | 502 sync_data_list.push_back( |
| 510 prefs::kLanguagePreloadEnginesSyncable, | 503 CreatePrefSyncData(prefs::kLanguagePreloadEnginesSyncable, |
| 511 base::StringValue(ToInputMethodIds("xkb:ru::rus")))); | 504 base::Value(ToInputMethodIds("xkb:ru::rus")))); |
| 512 sync_data_list.push_back(CreatePrefSyncData( | 505 sync_data_list.push_back( |
| 513 prefs::kLanguageEnabledExtensionImesSyncable, | 506 CreatePrefSyncData(prefs::kLanguageEnabledExtensionImesSyncable, |
| 514 base::StringValue(kToUpperIMEID))); | 507 base::Value(kToUpperIMEID))); |
| 515 | 508 |
| 516 syncer::SyncableService* sync = | 509 syncer::SyncableService* sync = |
| 517 pref_service_->GetSyncableService( | 510 pref_service_->GetSyncableService( |
| 518 syncer::PREFERENCES); | 511 syncer::PREFERENCES); |
| 519 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, | 512 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, |
| 520 std::unique_ptr<syncer::SyncChangeProcessor>( | 513 std::unique_ptr<syncer::SyncChangeProcessor>( |
| 521 new syncer::FakeSyncChangeProcessor), | 514 new syncer::FakeSyncChangeProcessor), |
| 522 std::unique_ptr<syncer::SyncErrorFactory>( | 515 std::unique_ptr<syncer::SyncErrorFactory>( |
| 523 new syncer::SyncErrorFactoryMock)); | 516 new syncer::SyncErrorFactoryMock)); |
| 524 content::RunAllBlockingPoolTasksUntilIdle(); | 517 content::RunAllBlockingPoolTasksUntilIdle(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 552 kToUpperIMEID + std::string(",") + | 545 kToUpperIMEID + std::string(",") + |
| 553 kAPIArgumentIMEID + std::string(",") + | 546 kAPIArgumentIMEID + std::string(",") + |
| 554 kIdentityIMEID; | 547 kIdentityIMEID; |
| 555 SetLocalValues( | 548 SetLocalValues( |
| 556 "en,es,ja,hr,lv,lt,es-419,he,el,da,ca,es,cs,bg,ar", | 549 "en,es,ja,hr,lv,lt,es-419,he,el,da,ca,es,cs,bg,ar", |
| 557 ToInputMethodIds("xkb:es::spa,xkb:us:dvorak,xkb:ua::ukr"), | 550 ToInputMethodIds("xkb:es::spa,xkb:us:dvorak,xkb:ua::ukr"), |
| 558 local_extensions); | 551 local_extensions); |
| 559 | 552 |
| 560 // Create some tricky values to come from the server. | 553 // Create some tricky values to come from the server. |
| 561 syncer::SyncDataList sync_data_list; | 554 syncer::SyncDataList sync_data_list; |
| 562 sync_data_list.push_back(CreatePrefSyncData( | 555 sync_data_list.push_back( |
| 563 prefs::kLanguagePreferredLanguagesSyncable, | 556 CreatePrefSyncData(prefs::kLanguagePreferredLanguagesSyncable, |
| 564 base::StringValue("ar,fi,es,de,ar"))); | 557 base::Value("ar,fi,es,de,ar"))); |
| 565 sync_data_list.push_back(CreatePrefSyncData( | 558 sync_data_list.push_back(CreatePrefSyncData( |
| 566 prefs::kLanguagePreloadEnginesSyncable, | 559 prefs::kLanguagePreloadEnginesSyncable, |
| 567 base::StringValue( | 560 base::Value( |
| 568 "nacl_mozc_us,xkb:ru::rus,xkb:ru::rus,xkb:es::spa,xkb:es::spa"))); | 561 "nacl_mozc_us,xkb:ru::rus,xkb:ru::rus,xkb:es::spa,xkb:es::spa"))); |
| 569 sync_data_list.push_back(CreatePrefSyncData( | 562 sync_data_list.push_back( |
| 570 prefs::kLanguageEnabledExtensionImesSyncable, | 563 CreatePrefSyncData(prefs::kLanguageEnabledExtensionImesSyncable, |
| 571 base::StringValue(std::string()))); | 564 base::Value(std::string()))); |
| 572 | 565 |
| 573 // Sync for the first time. | 566 // Sync for the first time. |
| 574 syncer::SyncableService* sync = | 567 syncer::SyncableService* sync = |
| 575 pref_service_->GetSyncableService( | 568 pref_service_->GetSyncableService( |
| 576 syncer::PREFERENCES); | 569 syncer::PREFERENCES); |
| 577 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, | 570 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, |
| 578 std::unique_ptr<syncer::SyncChangeProcessor>( | 571 std::unique_ptr<syncer::SyncChangeProcessor>( |
| 579 new syncer::FakeSyncChangeProcessor), | 572 new syncer::FakeSyncChangeProcessor), |
| 580 std::unique_ptr<syncer::SyncErrorFactory>( | 573 std::unique_ptr<syncer::SyncErrorFactory>( |
| 581 new syncer::SyncErrorFactoryMock)); | 574 new syncer::SyncErrorFactoryMock)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 605 pref_service_->SetBoolean( | 598 pref_service_->SetBoolean( |
| 606 prefs::kLanguageShouldMergeInputMethods, true); | 599 prefs::kLanguageShouldMergeInputMethods, true); |
| 607 InitPreferences(); | 600 InitPreferences(); |
| 608 | 601 |
| 609 // Create some valid and some non-existent IDs from the server. | 602 // Create some valid and some non-existent IDs from the server. |
| 610 std::string preload_engines( | 603 std::string preload_engines( |
| 611 "xkb:ru::rus,xkb:xy::xyz," | 604 "xkb:ru::rus,xkb:xy::xyz," |
| 612 "_comp_ime_nothisisnotactuallyanextensionidxkb:es::spa," + | 605 "_comp_ime_nothisisnotactuallyanextensionidxkb:es::spa," + |
| 613 ToInputMethodIds("xkb:jp::jpn")); | 606 ToInputMethodIds("xkb:jp::jpn")); |
| 614 syncer::SyncDataList sync_data_list; | 607 syncer::SyncDataList sync_data_list; |
| 608 sync_data_list.push_back( |
| 609 CreatePrefSyncData(prefs::kLanguagePreferredLanguagesSyncable, |
| 610 base::Value("klingon,en-US"))); |
| 615 sync_data_list.push_back(CreatePrefSyncData( | 611 sync_data_list.push_back(CreatePrefSyncData( |
| 616 prefs::kLanguagePreferredLanguagesSyncable, | 612 prefs::kLanguagePreloadEnginesSyncable, base::Value(preload_engines))); |
| 617 base::StringValue("klingon,en-US"))); | 613 sync_data_list.push_back( |
| 618 sync_data_list.push_back(CreatePrefSyncData( | 614 CreatePrefSyncData(prefs::kLanguageEnabledExtensionImesSyncable, |
| 619 prefs::kLanguagePreloadEnginesSyncable, | 615 base::Value(kUnknownIMEID))); |
| 620 base::StringValue(preload_engines))); | |
| 621 sync_data_list.push_back(CreatePrefSyncData( | |
| 622 prefs::kLanguageEnabledExtensionImesSyncable, | |
| 623 base::StringValue(kUnknownIMEID))); | |
| 624 | 616 |
| 625 // Sync for the first time. | 617 // Sync for the first time. |
| 626 syncer::SyncableService* sync = | 618 syncer::SyncableService* sync = |
| 627 pref_service_->GetSyncableService( | 619 pref_service_->GetSyncableService( |
| 628 syncer::PREFERENCES); | 620 syncer::PREFERENCES); |
| 629 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, | 621 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, |
| 630 std::unique_ptr<syncer::SyncChangeProcessor>( | 622 std::unique_ptr<syncer::SyncChangeProcessor>( |
| 631 new syncer::FakeSyncChangeProcessor), | 623 new syncer::FakeSyncChangeProcessor), |
| 632 std::unique_ptr<syncer::SyncErrorFactory>( | 624 std::unique_ptr<syncer::SyncErrorFactory>( |
| 633 new syncer::SyncErrorFactoryMock)); | 625 new syncer::SyncErrorFactoryMock)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 648 ToInputMethodIds("xkb:es::spa,xkb:us::eng"), | 640 ToInputMethodIds("xkb:es::spa,xkb:us::eng"), |
| 649 kIdentityIMEID); | 641 kIdentityIMEID); |
| 650 pref_service_->SetBoolean( | 642 pref_service_->SetBoolean( |
| 651 prefs::kLanguageShouldMergeInputMethods, true); | 643 prefs::kLanguageShouldMergeInputMethods, true); |
| 652 | 644 |
| 653 // Create some valid and some non-existent IDs from the server. | 645 // Create some valid and some non-existent IDs from the server. |
| 654 std::string preload_engines( | 646 std::string preload_engines( |
| 655 "xkb:ru::rus,xkb:xy::xyz," + ToInputMethodIds("xkb:jp::jpn")); | 647 "xkb:ru::rus,xkb:xy::xyz," + ToInputMethodIds("xkb:jp::jpn")); |
| 656 syncer::SyncDataList sync_data_list; | 648 syncer::SyncDataList sync_data_list; |
| 657 sync_data_list.push_back(CreatePrefSyncData( | 649 sync_data_list.push_back(CreatePrefSyncData( |
| 658 prefs::kLanguagePreferredLanguagesSyncable, | 650 prefs::kLanguagePreferredLanguagesSyncable, base::Value("en-US"))); |
| 659 base::StringValue("en-US"))); | |
| 660 sync_data_list.push_back(CreatePrefSyncData( | 651 sync_data_list.push_back(CreatePrefSyncData( |
| 661 prefs::kLanguagePreloadEnginesSyncable, | 652 prefs::kLanguagePreloadEnginesSyncable, base::Value(preload_engines))); |
| 662 base::StringValue(preload_engines))); | 653 sync_data_list.push_back( |
| 663 sync_data_list.push_back(CreatePrefSyncData( | 654 CreatePrefSyncData(prefs::kLanguageEnabledExtensionImesSyncable, |
| 664 prefs::kLanguageEnabledExtensionImesSyncable, | 655 base::Value(kUnknownIMEID))); |
| 665 base::StringValue(kUnknownIMEID))); | |
| 666 | 656 |
| 667 // Sync for the first time. | 657 // Sync for the first time. |
| 668 syncer::SyncableService* sync = | 658 syncer::SyncableService* sync = |
| 669 pref_service_->GetSyncableService( | 659 pref_service_->GetSyncableService( |
| 670 syncer::PREFERENCES); | 660 syncer::PREFERENCES); |
| 671 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, | 661 sync->MergeDataAndStartSyncing(syncer::PREFERENCES, sync_data_list, |
| 672 std::unique_ptr<syncer::SyncChangeProcessor>( | 662 std::unique_ptr<syncer::SyncChangeProcessor>( |
| 673 new syncer::FakeSyncChangeProcessor), | 663 new syncer::FakeSyncChangeProcessor), |
| 674 std::unique_ptr<syncer::SyncErrorFactory>( | 664 std::unique_ptr<syncer::SyncErrorFactory>( |
| 675 new syncer::SyncErrorFactoryMock)); | 665 new syncer::SyncErrorFactoryMock)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 689 "Syncable values should have added local values on initialization."); | 679 "Syncable values should have added local values on initialization."); |
| 690 ExpectGlobalValues( | 680 ExpectGlobalValues( |
| 691 "es,en-US", | 681 "es,en-US", |
| 692 "xkb:es::spa,xkb:us::eng,xkb:ru::rus,xkb:xy::xyz," + | 682 "xkb:es::spa,xkb:us::eng,xkb:ru::rus,xkb:xy::xyz," + |
| 693 ToInputMethodIds("xkb:jp::jpn"), | 683 ToInputMethodIds("xkb:jp::jpn"), |
| 694 std::string(kIdentityIMEID) + "," + kUnknownIMEID); | 684 std::string(kIdentityIMEID) + "," + kUnknownIMEID); |
| 695 } | 685 } |
| 696 } | 686 } |
| 697 | 687 |
| 698 } // namespace chromeos | 688 } // namespace chromeos |
| OLD | NEW |