OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/sync/profile_sync_service.h" | 5 #include "chrome/browser/sync/profile_sync_service.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <map> | 8 #include <map> |
9 #include <ostream> | 9 #include <ostream> |
10 #include <set> | 10 #include <set> |
(...skipping 25 matching lines...) Expand all Loading... |
36 #include "chrome/browser/sync/js_event_details.h" | 36 #include "chrome/browser/sync/js_event_details.h" |
37 #include "chrome/browser/sync/profile_sync_factory.h" | 37 #include "chrome/browser/sync/profile_sync_factory.h" |
38 #include "chrome/browser/sync/signin_manager.h" | 38 #include "chrome/browser/sync/signin_manager.h" |
39 #include "chrome/browser/ui/browser.h" | 39 #include "chrome/browser/ui/browser.h" |
40 #include "chrome/browser/ui/browser_list.h" | 40 #include "chrome/browser/ui/browser_list.h" |
41 #include "chrome/common/chrome_switches.h" | 41 #include "chrome/common/chrome_switches.h" |
42 #include "chrome/common/net/gaia/gaia_constants.h" | 42 #include "chrome/common/net/gaia/gaia_constants.h" |
43 #include "chrome/common/pref_names.h" | 43 #include "chrome/common/pref_names.h" |
44 #include "chrome/common/time_format.h" | 44 #include "chrome/common/time_format.h" |
45 #include "chrome/common/url_constants.h" | 45 #include "chrome/common/url_constants.h" |
| 46 #include "content/browser/webui/web_ui.h" |
46 #include "content/common/notification_details.h" | 47 #include "content/common/notification_details.h" |
47 #include "content/common/notification_source.h" | 48 #include "content/common/notification_source.h" |
48 #include "content/common/notification_type.h" | 49 #include "content/common/notification_type.h" |
49 #include "grit/generated_resources.h" | 50 #include "grit/generated_resources.h" |
50 #include "ui/base/l10n/l10n_util.h" | 51 #include "ui/base/l10n/l10n_util.h" |
51 | 52 |
52 using browser_sync::ChangeProcessor; | 53 using browser_sync::ChangeProcessor; |
53 using browser_sync::DataTypeController; | 54 using browser_sync::DataTypeController; |
54 using browser_sync::DataTypeManager; | 55 using browser_sync::DataTypeManager; |
55 using browser_sync::SyncBackendHost; | 56 using browser_sync::SyncBackendHost; |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 // The very first time the backend initializes is effectively the first time | 525 // The very first time the backend initializes is effectively the first time |
525 // we can say we successfully "synced". last_synced_time_ will only be null | 526 // we can say we successfully "synced". last_synced_time_ will only be null |
526 // in this case, because the pref wasn't restored on StartUp. | 527 // in this case, because the pref wasn't restored on StartUp. |
527 if (last_synced_time_.is_null()) { | 528 if (last_synced_time_.is_null()) { |
528 UpdateLastSyncedTime(); | 529 UpdateLastSyncedTime(); |
529 } | 530 } |
530 NotifyObservers(); | 531 NotifyObservers(); |
531 | 532 |
532 if (!cros_user_.empty()) { | 533 if (!cros_user_.empty()) { |
533 if (profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)) { | 534 if (profile_->GetPrefs()->GetBoolean(prefs::kSyncSuppressStart)) { |
534 ShowConfigure(true); | 535 ShowConfigure(NULL, true); |
535 } else { | 536 } else { |
536 SetSyncSetupCompleted(); | 537 SetSyncSetupCompleted(); |
537 } | 538 } |
538 } | 539 } |
539 | 540 |
540 if (HasSyncSetupCompleted()) { | 541 if (HasSyncSetupCompleted()) { |
541 ConfigureDataTypeManager(); | 542 ConfigureDataTypeManager(); |
542 } | 543 } |
543 } | 544 } |
544 | 545 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 void ProfileSyncService::OnMigrationNeededForTypes( | 685 void ProfileSyncService::OnMigrationNeededForTypes( |
685 const syncable::ModelTypeSet& types) { | 686 const syncable::ModelTypeSet& types) { |
686 DCHECK(backend_initialized_); | 687 DCHECK(backend_initialized_); |
687 DCHECK(data_type_manager_.get()); | 688 DCHECK(data_type_manager_.get()); |
688 | 689 |
689 // Migrator must be valid, because we don't sync until it is created and this | 690 // Migrator must be valid, because we don't sync until it is created and this |
690 // callback originates from a sync cycle. | 691 // callback originates from a sync cycle. |
691 migrator_->MigrateTypes(types); | 692 migrator_->MigrateTypes(types); |
692 } | 693 } |
693 | 694 |
694 void ProfileSyncService::ShowLoginDialog() { | 695 void ProfileSyncService::ShowLoginDialog(WebUI* web_ui) { |
695 if (WizardIsVisible()) { | 696 if (WizardIsVisible()) { |
696 wizard_.Focus(); | 697 wizard_.Focus(); |
697 // Force the wizard to step to the login screen (which will only actually | 698 // Force the wizard to step to the login screen (which will only actually |
698 // happen if the transition is valid). | 699 // happen if the transition is valid). |
699 wizard_.Step(SyncSetupWizard::GAIA_LOGIN); | 700 wizard_.Step(SyncSetupWizard::GAIA_LOGIN); |
700 return; | 701 return; |
701 } | 702 } |
702 | 703 |
703 if (!auth_error_time_.is_null()) { | 704 if (!auth_error_time_.is_null()) { |
704 UMA_HISTOGRAM_LONG_TIMES("Sync.ReauthorizationTime", | 705 UMA_HISTOGRAM_LONG_TIMES("Sync.ReauthorizationTime", |
705 base::TimeTicks::Now() - auth_error_time_); | 706 base::TimeTicks::Now() - auth_error_time_); |
706 auth_error_time_ = base::TimeTicks(); // Reset auth_error_time_ to null. | 707 auth_error_time_ = base::TimeTicks(); // Reset auth_error_time_ to null. |
707 } | 708 } |
708 | 709 |
709 wizard_.Step(SyncSetupWizard::GAIA_LOGIN); | 710 wizard_.Step(SyncSetupWizard::GAIA_LOGIN); |
710 | 711 |
| 712 if (web_ui) { |
| 713 web_ui->CallJavascriptFunction("options.SyncSetupOverlay.showSyncDialog"); |
| 714 } else { |
| 715 BrowserList::GetLastActive()->ShowOptionsTab(chrome::kSyncSetupSubPage); |
| 716 } |
| 717 |
711 NotifyObservers(); | 718 NotifyObservers(); |
712 } | 719 } |
713 | 720 |
714 void ProfileSyncService::ShowErrorUI() { | 721 void ProfileSyncService::ShowErrorUI(WebUI* web_ui) { |
715 if (IsPassphraseRequired()) { | 722 if (IsPassphraseRequired()) { |
716 if (IsUsingSecondaryPassphrase()) | 723 if (IsUsingSecondaryPassphrase()) |
717 PromptForExistingPassphrase(); | 724 PromptForExistingPassphrase(); |
718 else | 725 else |
719 NOTREACHED(); // Migration no longer supported. | 726 NOTREACHED(); // Migration no longer supported. |
720 | 727 |
721 return; | 728 return; |
722 } | 729 } |
723 | 730 |
724 const GoogleServiceAuthError& error = GetAuthError(); | 731 const GoogleServiceAuthError& error = GetAuthError(); |
725 if (error.state() == GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS || | 732 if (error.state() == GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS || |
726 error.state() == GoogleServiceAuthError::CAPTCHA_REQUIRED || | 733 error.state() == GoogleServiceAuthError::CAPTCHA_REQUIRED || |
727 error.state() == GoogleServiceAuthError::ACCOUNT_DELETED || | 734 error.state() == GoogleServiceAuthError::ACCOUNT_DELETED || |
728 error.state() == GoogleServiceAuthError::ACCOUNT_DISABLED || | 735 error.state() == GoogleServiceAuthError::ACCOUNT_DISABLED || |
729 error.state() == GoogleServiceAuthError::SERVICE_UNAVAILABLE) { | 736 error.state() == GoogleServiceAuthError::SERVICE_UNAVAILABLE) { |
730 ShowLoginDialog(); | 737 ShowLoginDialog(web_ui); |
731 } | 738 } |
732 } | 739 } |
733 | 740 |
734 | 741 void ProfileSyncService::ShowConfigure(WebUI* web_ui, bool sync_everything) { |
735 void ProfileSyncService::ShowConfigure(bool sync_everything) { | |
736 if (WizardIsVisible()) { | 742 if (WizardIsVisible()) { |
737 wizard_.Focus(); | 743 wizard_.Focus(); |
738 return; | 744 return; |
739 } | 745 } |
740 | 746 |
741 if (sync_everything) | 747 if (sync_everything) |
742 wizard_.Step(SyncSetupWizard::SYNC_EVERYTHING); | 748 wizard_.Step(SyncSetupWizard::SYNC_EVERYTHING); |
743 else | 749 else |
744 wizard_.Step(SyncSetupWizard::CONFIGURE); | 750 wizard_.Step(SyncSetupWizard::CONFIGURE); |
| 751 |
| 752 if (web_ui) |
| 753 web_ui->CallJavascriptFunction("options.SyncSetupOverlay.showSyncDialog"); |
| 754 else |
| 755 BrowserList::GetLastActive()->ShowOptionsTab(chrome::kSyncSetupSubPage); |
745 } | 756 } |
746 | 757 |
747 void ProfileSyncService::PromptForExistingPassphrase() { | 758 void ProfileSyncService::PromptForExistingPassphrase() { |
748 if (WizardIsVisible()) { | 759 if (WizardIsVisible()) { |
749 wizard_.Focus(); | 760 wizard_.Focus(); |
750 return; | 761 return; |
751 } | 762 } |
752 | 763 |
753 wizard_.Step(SyncSetupWizard::ENTER_PASSPHRASE); | 764 wizard_.Step(SyncSetupWizard::ENTER_PASSPHRASE); |
754 } | 765 } |
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1302 // is initialized, all enabled data types are consistent with one | 1313 // is initialized, all enabled data types are consistent with one |
1303 // another, and no unrecoverable error has transpired. | 1314 // another, and no unrecoverable error has transpired. |
1304 if (unrecoverable_error_detected_) | 1315 if (unrecoverable_error_detected_) |
1305 return false; | 1316 return false; |
1306 | 1317 |
1307 if (!data_type_manager_.get()) | 1318 if (!data_type_manager_.get()) |
1308 return false; | 1319 return false; |
1309 | 1320 |
1310 return data_type_manager_->state() == DataTypeManager::CONFIGURED; | 1321 return data_type_manager_->state() == DataTypeManager::CONFIGURED; |
1311 } | 1322 } |
OLD | NEW |