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 |