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

Side by Side Diff: chrome/browser/sync/glue/sync_backend_host.cc

Issue 8295017: [Sync] Support open tabs experiment enabling before sync setup completion. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactor Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "chrome/browser/sync/glue/sync_backend_host.h" 7 #include "chrome/browser/sync/glue/sync_backend_host.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <map> 10 #include <map>
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 812
813 SVLOG(1) << "Got snapshot " << snapshot->ToString(); 813 SVLOG(1) << "Got snapshot " << snapshot->ToString();
814 814
815 const syncable::ModelTypeSet& to_migrate = 815 const syncable::ModelTypeSet& to_migrate =
816 snapshot->syncer_status.types_needing_local_migration; 816 snapshot->syncer_status.types_needing_local_migration;
817 if (!to_migrate.empty()) 817 if (!to_migrate.empty())
818 host_->frontend_->OnMigrationNeededForTypes(to_migrate); 818 host_->frontend_->OnMigrationNeededForTypes(to_migrate);
819 819
820 // Process any changes to the datatypes we're syncing. 820 // Process any changes to the datatypes we're syncing.
821 // TODO(sync): add support for removing types. 821 // TODO(sync): add support for removing types.
822 syncable::ModelTypeSet to_add; 822 if (host_->initialized())
823 if (host_->initialized() && 823 host_->AddExperimentalTypes();
824 sync_manager()->ReceivedExperimentalTypes(&to_add)) {
825 host_->frontend_->OnDataTypesChanged(to_add);
826 }
827 824
828 // If we are waiting for a configuration change, check here to see 825 // If we are waiting for a configuration change, check here to see
829 // if this sync cycle has initialized all of the types we've been 826 // if this sync cycle has initialized all of the types we've been
830 // waiting for. 827 // waiting for.
831 if (host_->pending_download_state_.get()) { 828 if (host_->pending_download_state_.get()) {
832 scoped_ptr<PendingConfigureDataTypesState> state( 829 scoped_ptr<PendingConfigureDataTypesState> state(
833 host_->pending_download_state_.release()); 830 host_->pending_download_state_.release());
834 DCHECK( 831 DCHECK(
835 std::includes(state->types_to_add.begin(), state->types_to_add.end(), 832 std::includes(state->types_to_add.begin(), state->types_to_add.end(),
836 state->added_types.begin(), state->added_types.end())); 833 state->added_types.begin(), state->added_types.end()));
(...skipping 30 matching lines...) Expand all
867 void SyncBackendHost::Core::HandleClearServerDataFailedOnFrontendLoop() { 864 void SyncBackendHost::Core::HandleClearServerDataFailedOnFrontendLoop() {
868 if (!host_ || !host_->frontend_) 865 if (!host_ || !host_->frontend_)
869 return; 866 return;
870 host_->frontend_->OnClearServerDataFailed(); 867 host_->frontend_->OnClearServerDataFailed();
871 } 868 }
872 869
873 void SyncBackendHost::Core::FinishConfigureDataTypesOnFrontendLoop() { 870 void SyncBackendHost::Core::FinishConfigureDataTypesOnFrontendLoop() {
874 host_->FinishConfigureDataTypesOnFrontendLoop(); 871 host_->FinishConfigureDataTypesOnFrontendLoop();
875 } 872 }
876 873
874 void SyncBackendHost::AddExperimentalTypes() {
875 CHECK(initialized());
876 syncable::ModelTypeSet to_add;
877 if (core_->sync_manager()->ReceivedExperimentalTypes(&to_add))
878 frontend_->OnDataTypesChanged(to_add);
879 }
880
877 void SyncBackendHost::HandleInitializationCompletedOnFrontendLoop( 881 void SyncBackendHost::HandleInitializationCompletedOnFrontendLoop(
878 const WeakHandle<JsBackend>& js_backend, bool success) { 882 const WeakHandle<JsBackend>& js_backend, bool success) {
879 DCHECK_NE(NOT_ATTEMPTED, initialization_state_); 883 DCHECK_NE(NOT_ATTEMPTED, initialization_state_);
880 if (!frontend_) 884 if (!frontend_)
881 return; 885 return;
882 886
883 // We've at least created the sync manager at this point, but if that is all 887 // We've at least created the sync manager at this point, but if that is all
884 // we've done we're just beginning the initialization process. 888 // we've done we're just beginning the initialization process.
885 if (initialization_state_ == CREATING_SYNC_MANAGER) 889 if (initialization_state_ == CREATING_SYNC_MANAGER)
886 initialization_state_ = NOT_INITIALIZED; 890 initialization_state_ = NOT_INITIALIZED;
(...skipping 30 matching lines...) Expand all
917 case DOWNLOADING_NIGORI: 921 case DOWNLOADING_NIGORI:
918 initialization_state_ = REFRESHING_ENCRYPTION; 922 initialization_state_ = REFRESHING_ENCRYPTION;
919 RefreshEncryption( 923 RefreshEncryption(
920 base::Bind( 924 base::Bind(
921 &SyncBackendHost::Core:: 925 &SyncBackendHost::Core::
922 HandleInitializationCompletedOnFrontendLoop, 926 HandleInitializationCompletedOnFrontendLoop,
923 core_.get(), js_backend, true)); 927 core_.get(), js_backend, true));
924 break; 928 break;
925 case REFRESHING_ENCRYPTION: 929 case REFRESHING_ENCRYPTION:
926 initialization_state_ = INITIALIZED; 930 initialization_state_ = INITIALIZED;
931 // Now that we've downloaded the nigori node, we can see if there are any
932 // experimental types to enable. This should be done before we inform
933 // the frontend to ensure they're visible in the customize screen.
934 AddExperimentalTypes();
927 frontend_->OnBackendInitialized(js_backend, true); 935 frontend_->OnBackendInitialized(js_backend, true);
928 // Now that we're fully initialized, kick off a server 936 // Now that we're fully initialized, kick off a server
929 // reachability check. 937 // reachability check.
930 sync_thread_.message_loop()->PostTask( 938 sync_thread_.message_loop()->PostTask(
931 FROM_HERE, 939 FROM_HERE,
932 NewRunnableMethod( 940 NewRunnableMethod(
933 core_.get(), 941 core_.get(),
934 &SyncBackendHost::Core::DoCheckServerReachable)); 942 &SyncBackendHost::Core::DoCheckServerReachable));
935 break; 943 break;
936 default: 944 default:
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 FROM_HERE, 1044 FROM_HERE,
1037 base::Bind(&SyncBackendHost::Core::DoRefreshEncryption, 1045 base::Bind(&SyncBackendHost::Core::DoRefreshEncryption,
1038 core_.get(), sync_thread_done_callback)); 1046 core_.get(), sync_thread_done_callback));
1039 } 1047 }
1040 1048
1041 #undef SVLOG 1049 #undef SVLOG
1042 1050
1043 #undef SLOG 1051 #undef SLOG
1044 1052
1045 } // namespace browser_sync 1053 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698