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

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

Issue 8341117: Converted top-level NewRunnable* to Bind for Sync module (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Indenting. Removed trailing whitespace. Created 9 years, 1 month 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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 sync_service_url, 128 sync_service_url,
129 profile_->GetRequestContext(), 129 profile_->GetRequestContext(),
130 credentials, 130 credentials,
131 delete_sync_data_folder, 131 delete_sync_data_folder,
132 sync_prefs_->GetEncryptionBootstrapToken(), 132 sync_prefs_->GetEncryptionBootstrapToken(),
133 false)); 133 false));
134 } 134 }
135 135
136 void SyncBackendHost::InitCore(const Core::DoInitializeOptions& options) { 136 void SyncBackendHost::InitCore(const Core::DoInitializeOptions& options) {
137 sync_thread_.message_loop()->PostTask(FROM_HERE, 137 sync_thread_.message_loop()->PostTask(FROM_HERE,
138 NewRunnableMethod(core_.get(), &SyncBackendHost::Core::DoInitialize, 138 base::Bind(&SyncBackendHost::Core::DoInitialize, core_.get(),options));
139 options));
140 } 139 }
141 140
142 void SyncBackendHost::UpdateCredentials(const SyncCredentials& credentials) { 141 void SyncBackendHost::UpdateCredentials(const SyncCredentials& credentials) {
143 sync_thread_.message_loop()->PostTask(FROM_HERE, 142 sync_thread_.message_loop()->PostTask(FROM_HERE,
144 NewRunnableMethod(core_.get(), 143 base::Bind(&SyncBackendHost::Core::DoUpdateCredentials, core_.get(),
145 &SyncBackendHost::Core::DoUpdateCredentials, 144 credentials));
146 credentials));
147 } 145 }
148 146
149 void SyncBackendHost::StartSyncingWithServer() { 147 void SyncBackendHost::StartSyncingWithServer() {
150 SVLOG(1) << "SyncBackendHost::StartSyncingWithServer called."; 148 SVLOG(1) << "SyncBackendHost::StartSyncingWithServer called.";
151 sync_thread_.message_loop()->PostTask(FROM_HERE, 149 sync_thread_.message_loop()->PostTask(FROM_HERE,
152 NewRunnableMethod(core_.get(), &SyncBackendHost::Core::DoStartSyncing)); 150 base::Bind(&SyncBackendHost::Core::DoStartSyncing, core_.get()));
153 } 151 }
154 152
155 void SyncBackendHost::SetPassphrase(const std::string& passphrase, 153 void SyncBackendHost::SetPassphrase(const std::string& passphrase,
156 bool is_explicit) { 154 bool is_explicit) {
157 if (!IsNigoriEnabled()) { 155 if (!IsNigoriEnabled()) {
158 SLOG(WARNING) << "Silently dropping SetPassphrase request."; 156 SLOG(WARNING) << "Silently dropping SetPassphrase request.";
159 return; 157 return;
160 } 158 }
161 159
162 // This should only be called by the frontend. 160 // This should only be called by the frontend.
163 DCHECK_EQ(MessageLoop::current(), frontend_loop_); 161 DCHECK_EQ(MessageLoop::current(), frontend_loop_);
164 162
165 // If encryption is enabled and we've got a SetPassphrase 163 // If encryption is enabled and we've got a SetPassphrase
166 sync_thread_.message_loop()->PostTask(FROM_HERE, 164 sync_thread_.message_loop()->PostTask(FROM_HERE,
167 NewRunnableMethod(core_.get(), &SyncBackendHost::Core::DoSetPassphrase, 165 base::Bind(&SyncBackendHost::Core::DoSetPassphrase, core_.get(),
168 passphrase, is_explicit)); 166 passphrase, is_explicit));
169 } 167 }
170 168
171 void SyncBackendHost::StopSyncManagerForShutdown( 169 void SyncBackendHost::StopSyncManagerForShutdown(
172 const base::Closure& closure) { 170 const base::Closure& closure) {
173 DCHECK_GT(initialization_state_, NOT_ATTEMPTED); 171 DCHECK_GT(initialization_state_, NOT_ATTEMPTED);
174 if (initialization_state_ == CREATING_SYNC_MANAGER) { 172 if (initialization_state_ == CREATING_SYNC_MANAGER) {
175 // We post here to implicitly wait for the SyncManager to be created, 173 // We post here to implicitly wait for the SyncManager to be created,
176 // if needed. We have to wait, since we need to shutdown immediately, 174 // if needed. We have to wait, since we need to shutdown immediately,
177 // and we need to tell the SyncManager so it can abort any activity 175 // and we need to tell the SyncManager so it can abort any activity
178 // (net I/O, data application). 176 // (net I/O, data application).
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // so the registrar won't need stopping either. 213 // so the registrar won't need stopping either.
216 DCHECK_EQ(NOT_ATTEMPTED, initialization_state_); 214 DCHECK_EQ(NOT_ATTEMPTED, initialization_state_);
217 DCHECK(!registrar_.get()); 215 DCHECK(!registrar_.get());
218 } 216 }
219 } 217 }
220 218
221 void SyncBackendHost::Shutdown(bool sync_disabled) { 219 void SyncBackendHost::Shutdown(bool sync_disabled) {
222 // TODO(tim): DCHECK(registrar_->StoppedOnUIThread()) would be nice. 220 // TODO(tim): DCHECK(registrar_->StoppedOnUIThread()) would be nice.
223 if (sync_thread_.IsRunning()) { 221 if (sync_thread_.IsRunning()) {
224 sync_thread_.message_loop()->PostTask(FROM_HERE, 222 sync_thread_.message_loop()->PostTask(FROM_HERE,
225 NewRunnableMethod(core_.get(), 223 base::Bind(&SyncBackendHost::Core::DoShutdown, core_.get(),
226 &SyncBackendHost::Core::DoShutdown, 224 sync_disabled));
227 sync_disabled));
228 } 225 }
229 226
230 // Stop will return once the thread exits, which will be after DoShutdown 227 // Stop will return once the thread exits, which will be after DoShutdown
231 // runs. DoShutdown needs to run from sync_thread_ because the sync backend 228 // runs. DoShutdown needs to run from sync_thread_ because the sync backend
232 // requires any thread that opened sqlite handles to relinquish them 229 // requires any thread that opened sqlite handles to relinquish them
233 // personally. We need to join threads, because otherwise the main Chrome 230 // personally. We need to join threads, because otherwise the main Chrome
234 // thread (ui loop) can exit before DoShutdown finishes, at which point 231 // thread (ui loop) can exit before DoShutdown finishes, at which point
235 // virtually anything the sync backend does (or the post-back to 232 // virtually anything the sync backend does (or the post-back to
236 // frontend_loop_ by our Core) will epically fail because the CRT won't be 233 // frontend_loop_ by our Core) will epically fail because the CRT won't be
237 // initialized. 234 // initialized.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 registrar_->ConfigureDataTypes(types_to_add_with_nigori, 272 registrar_->ConfigureDataTypes(types_to_add_with_nigori,
276 types_to_remove_with_nigori); 273 types_to_remove_with_nigori);
277 pending_config_mode_state_->reason = reason; 274 pending_config_mode_state_->reason = reason;
278 275
279 // Cleanup disabled types before starting configuration so that 276 // Cleanup disabled types before starting configuration so that
280 // callers can assume that the data types are cleaned up once 277 // callers can assume that the data types are cleaned up once
281 // configuration is done. 278 // configuration is done.
282 if (!types_to_remove_with_nigori.empty()) { 279 if (!types_to_remove_with_nigori.empty()) {
283 sync_thread_.message_loop()->PostTask( 280 sync_thread_.message_loop()->PostTask(
284 FROM_HERE, 281 FROM_HERE,
285 NewRunnableMethod( 282 base::Bind(&SyncBackendHost::Core::DoRequestCleanupDisabledTypes,
286 core_.get(), 283 core_.get()));
287 &SyncBackendHost::Core::DoRequestCleanupDisabledTypes));
288 } 284 }
289 285
290 StartConfiguration(base::Bind( 286 StartConfiguration(
291 &SyncBackendHost::Core::FinishConfigureDataTypes, core_.get())); 287 base::Bind(&SyncBackendHost::Core::FinishConfigureDataTypes,
288 core_.get()));
292 } 289 }
293 290
294 void SyncBackendHost::StartConfiguration(const base::Closure& callback) { 291 void SyncBackendHost::StartConfiguration(const base::Closure& callback) {
295 // Put syncer in the config mode. DTM will put us in normal mode once it is 292 // Put syncer in the config mode. DTM will put us in normal mode once it is
296 // done. This is to ensure we dont do a normal sync when we are doing model 293 // done. This is to ensure we dont do a normal sync when we are doing model
297 // association. 294 // association.
298 sync_thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod( 295 sync_thread_.message_loop()->PostTask(FROM_HERE, base::Bind(
299 core_.get(), &SyncBackendHost::Core::DoStartConfiguration, callback)); 296 &SyncBackendHost::Core::DoStartConfiguration, core_.get(), callback));
300 } 297 }
301 298
302 void SyncBackendHost::EnableEncryptEverything() { 299 void SyncBackendHost::EnableEncryptEverything() {
303 sync_thread_.message_loop()->PostTask(FROM_HERE, 300 sync_thread_.message_loop()->PostTask(FROM_HERE,
304 NewRunnableMethod(core_.get(), 301 base::Bind(&SyncBackendHost::Core::DoEnableEncryptEverything,
305 &SyncBackendHost::Core::DoEnableEncryptEverything)); 302 core_.get()));
306 } 303 }
307 304
308 void SyncBackendHost::ActivateDataType( 305 void SyncBackendHost::ActivateDataType(
309 syncable::ModelType type, ModelSafeGroup group, 306 syncable::ModelType type, ModelSafeGroup group,
310 ChangeProcessor* change_processor) { 307 ChangeProcessor* change_processor) {
311 registrar_->ActivateDataType(type, group, change_processor, GetUserShare()); 308 registrar_->ActivateDataType(type, group, change_processor, GetUserShare());
312 } 309 }
313 310
314 void SyncBackendHost::DeactivateDataType(syncable::ModelType type) { 311 void SyncBackendHost::DeactivateDataType(syncable::ModelType type) {
315 registrar_->DeactivateDataType(type); 312 registrar_->DeactivateDataType(type);
316 } 313 }
317 314
318 bool SyncBackendHost::RequestClearServerData() { 315 bool SyncBackendHost::RequestClearServerData() {
319 sync_thread_.message_loop()->PostTask(FROM_HERE, 316 sync_thread_.message_loop()->PostTask(FROM_HERE,
320 NewRunnableMethod(core_.get(), 317 base::Bind(&SyncBackendHost::Core::DoRequestClearServerData,
321 &SyncBackendHost::Core::DoRequestClearServerData)); 318 core_.get()));
322 return true; 319 return true;
323 } 320 }
324 321
325
326 sync_api::UserShare* SyncBackendHost::GetUserShare() const { 322 sync_api::UserShare* SyncBackendHost::GetUserShare() const {
327 DCHECK(initialized()); 323 DCHECK(initialized());
328 return core_->sync_manager()->GetUserShare(); 324 return core_->sync_manager()->GetUserShare();
329 } 325 }
330 326
331 SyncBackendHost::Status SyncBackendHost::GetDetailedStatus() { 327 SyncBackendHost::Status SyncBackendHost::GetDetailedStatus() {
332 DCHECK(initialized()); 328 DCHECK(initialized());
333 return core_->sync_manager()->GetDetailedStatus(); 329 return core_->sync_manager()->GetDetailedStatus();
334 } 330 }
335 331
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 SyncBackendHost::Core::~Core() { 396 SyncBackendHost::Core::~Core() {
401 DCHECK(!sync_manager_.get()); 397 DCHECK(!sync_manager_.get());
402 DCHECK(!sync_loop_); 398 DCHECK(!sync_loop_);
403 } 399 }
404 400
405 void SyncBackendHost::Core::OnSyncCycleCompleted( 401 void SyncBackendHost::Core::OnSyncCycleCompleted(
406 const SyncSessionSnapshot* snapshot) { 402 const SyncSessionSnapshot* snapshot) {
407 if (!sync_loop_) 403 if (!sync_loop_)
408 return; 404 return;
409 DCHECK_EQ(MessageLoop::current(), sync_loop_); 405 DCHECK_EQ(MessageLoop::current(), sync_loop_);
410 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 406 host_->frontend_loop_->PostTask(FROM_HERE, base::Bind(
411 &Core::HandleSyncCycleCompletedOnFrontendLoop, 407 &Core::HandleSyncCycleCompletedOnFrontendLoop,
408 this,
412 new SyncSessionSnapshot(*snapshot))); 409 new SyncSessionSnapshot(*snapshot)));
413 } 410 }
414 411
415 412
416 void SyncBackendHost::Core::OnInitializationComplete( 413 void SyncBackendHost::Core::OnInitializationComplete(
417 const WeakHandle<JsBackend>& js_backend, 414 const WeakHandle<JsBackend>& js_backend,
418 bool success) { 415 bool success) {
419 DCHECK_EQ(MessageLoop::current(), sync_loop_); 416 DCHECK_EQ(MessageLoop::current(), sync_loop_);
420 417
421 host_->frontend_loop_->PostTask(FROM_HERE, 418 host_->frontend_loop_->PostTask(FROM_HERE,
422 NewRunnableMethod(this, 419 base::Bind(&Core::HandleInitializationCompletedOnFrontendLoop, this,
423 &Core::HandleInitializationCompletedOnFrontendLoop, 420 js_backend, success));
424 js_backend, success));
425 421
426 // Initialization is complete, so we can schedule recurring SaveChanges. 422 // Initialization is complete, so we can schedule recurring SaveChanges.
427 sync_loop_->PostTask(FROM_HERE, 423 sync_loop_->PostTask(FROM_HERE, base::Bind(&Core::StartSavingChanges, this));
428 NewRunnableMethod(this, &Core::StartSavingChanges));
429 } 424 }
430 425
431 void SyncBackendHost::Core::OnAuthError(const AuthError& auth_error) { 426 void SyncBackendHost::Core::OnAuthError(const AuthError& auth_error) {
432 if (!sync_loop_) 427 if (!sync_loop_)
433 return; 428 return;
434 DCHECK_EQ(MessageLoop::current(), sync_loop_); 429 DCHECK_EQ(MessageLoop::current(), sync_loop_);
435 // Post to our core loop so we can modify state. Could be on another thread. 430 // Post to our core loop so we can modify state. Could be on another thread.
436 host_->frontend_loop_->PostTask(FROM_HERE, 431 host_->frontend_loop_->PostTask(FROM_HERE,
437 NewRunnableMethod(this, &Core::HandleAuthErrorEventOnFrontendLoop, 432 base::Bind(&Core::HandleAuthErrorEventOnFrontendLoop, this, auth_error));
438 auth_error));
439 } 433 }
440 434
441 void SyncBackendHost::Core::OnPassphraseRequired( 435 void SyncBackendHost::Core::OnPassphraseRequired(
442 sync_api::PassphraseRequiredReason reason) { 436 sync_api::PassphraseRequiredReason reason) {
443 if (!sync_loop_) 437 if (!sync_loop_)
444 return; 438 return;
445 DCHECK_EQ(MessageLoop::current(), sync_loop_); 439 DCHECK_EQ(MessageLoop::current(), sync_loop_);
446 host_->frontend_loop_->PostTask(FROM_HERE, 440 host_->frontend_loop_->PostTask(FROM_HERE,
447 NewRunnableMethod(this, &Core::NotifyPassphraseRequired, reason)); 441 base::Bind(&Core::NotifyPassphraseRequired, this, reason));
448 } 442 }
449 443
450 void SyncBackendHost::Core::OnPassphraseAccepted( 444 void SyncBackendHost::Core::OnPassphraseAccepted(
451 const std::string& bootstrap_token) { 445 const std::string& bootstrap_token) {
452 if (!sync_loop_) 446 if (!sync_loop_)
453 return; 447 return;
454 DCHECK_EQ(MessageLoop::current(), sync_loop_); 448 DCHECK_EQ(MessageLoop::current(), sync_loop_);
455 host_->frontend_loop_->PostTask(FROM_HERE, 449 host_->frontend_loop_->PostTask(FROM_HERE,
456 NewRunnableMethod(this, &Core::NotifyPassphraseAccepted, 450 base::Bind(&Core::NotifyPassphraseAccepted, this, bootstrap_token));
457 bootstrap_token));
458 } 451 }
459 452
460 void SyncBackendHost::Core::OnStopSyncingPermanently() { 453 void SyncBackendHost::Core::OnStopSyncingPermanently() {
461 if (!sync_loop_) 454 if (!sync_loop_)
462 return; 455 return;
463 DCHECK_EQ(MessageLoop::current(), sync_loop_); 456 DCHECK_EQ(MessageLoop::current(), sync_loop_);
464 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 457 host_->frontend_loop_->PostTask(FROM_HERE, base::Bind(
465 &Core::HandleStopSyncingPermanentlyOnFrontendLoop)); 458 &Core::HandleStopSyncingPermanentlyOnFrontendLoop, this));
466 } 459 }
467 460
468 void SyncBackendHost::Core::OnUpdatedToken(const std::string& token) { 461 void SyncBackendHost::Core::OnUpdatedToken(const std::string& token) {
469 if (!sync_loop_) 462 if (!sync_loop_)
470 return; 463 return;
471 DCHECK_EQ(MessageLoop::current(), sync_loop_); 464 DCHECK_EQ(MessageLoop::current(), sync_loop_);
472 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 465 host_->frontend_loop_->PostTask(FROM_HERE, base::Bind(
473 &Core::NotifyUpdatedToken, token)); 466 &Core::NotifyUpdatedToken, this, token));
474 } 467 }
475 468
476 void SyncBackendHost::Core::OnClearServerDataFailed() { 469 void SyncBackendHost::Core::OnClearServerDataFailed() {
477 if (!sync_loop_) 470 if (!sync_loop_)
478 return; 471 return;
479 DCHECK_EQ(MessageLoop::current(), sync_loop_); 472 DCHECK_EQ(MessageLoop::current(), sync_loop_);
480 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 473 host_->frontend_loop_->PostTask(FROM_HERE, base::Bind(
481 &Core::HandleClearServerDataFailedOnFrontendLoop)); 474 &Core::HandleClearServerDataFailedOnFrontendLoop, this));
482 } 475 }
483 476
484 void SyncBackendHost::Core::OnClearServerDataSucceeded() { 477 void SyncBackendHost::Core::OnClearServerDataSucceeded() {
485 if (!sync_loop_) 478 if (!sync_loop_)
486 return; 479 return;
487 DCHECK_EQ(MessageLoop::current(), sync_loop_); 480 DCHECK_EQ(MessageLoop::current(), sync_loop_);
488 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 481 host_->frontend_loop_->PostTask(FROM_HERE, base::Bind(
489 &Core::HandleClearServerDataSucceededOnFrontendLoop)); 482 &Core::HandleClearServerDataSucceededOnFrontendLoop, this));
490 } 483 }
491 484
492 void SyncBackendHost::Core::OnEncryptedTypesChanged( 485 void SyncBackendHost::Core::OnEncryptedTypesChanged(
493 const syncable::ModelTypeSet& encrypted_types, 486 const syncable::ModelTypeSet& encrypted_types,
494 bool encrypt_everything) { 487 bool encrypt_everything) {
495 if (!sync_loop_) 488 if (!sync_loop_)
496 return; 489 return;
497 DCHECK_EQ(MessageLoop::current(), sync_loop_); 490 DCHECK_EQ(MessageLoop::current(), sync_loop_);
498 // NOTE: We're in a transaction. 491 // NOTE: We're in a transaction.
499 host_->frontend_loop_->PostTask( 492 host_->frontend_loop_->PostTask(
(...skipping 12 matching lines...) Expand all
512 base::Bind(&Core::NotifyEncryptionComplete, this)); 505 base::Bind(&Core::NotifyEncryptionComplete, this));
513 } 506 }
514 507
515 void SyncBackendHost::Core::OnActionableError( 508 void SyncBackendHost::Core::OnActionableError(
516 const browser_sync::SyncProtocolError& sync_error) { 509 const browser_sync::SyncProtocolError& sync_error) {
517 if (!sync_loop_) 510 if (!sync_loop_)
518 return; 511 return;
519 DCHECK_EQ(MessageLoop::current(), sync_loop_); 512 DCHECK_EQ(MessageLoop::current(), sync_loop_);
520 host_->frontend_loop_->PostTask( 513 host_->frontend_loop_->PostTask(
521 FROM_HERE, 514 FROM_HERE,
522 NewRunnableMethod(this, &Core::HandleActionableErrorEventOnFrontendLoop, 515 base::Bind(&Core::HandleActionableErrorEventOnFrontendLoop, this,
523 sync_error)); 516 sync_error));
524 } 517 }
525 518
526 SyncBackendHost::Core::DoInitializeOptions::DoInitializeOptions( 519 SyncBackendHost::Core::DoInitializeOptions::DoInitializeOptions(
527 MessageLoop* sync_loop, 520 MessageLoop* sync_loop,
528 SyncBackendRegistrar* registrar, 521 SyncBackendRegistrar* registrar,
529 const WeakHandle<JsEventHandler>& event_handler, 522 const WeakHandle<JsEventHandler>& event_handler,
530 const GURL& service_url, 523 const GURL& service_url,
531 const scoped_refptr<net::URLRequestContextGetter>& 524 const scoped_refptr<net::URLRequestContextGetter>&
532 request_context_getter, 525 request_context_getter,
533 const sync_api::SyncCredentials& credentials, 526 const sync_api::SyncCredentials& credentials,
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 void SyncBackendHost::Core::DeleteSyncDataFolder() { 700 void SyncBackendHost::Core::DeleteSyncDataFolder() {
708 DCHECK_EQ(MessageLoop::current(), sync_loop_); 701 DCHECK_EQ(MessageLoop::current(), sync_loop_);
709 if (file_util::DirectoryExists(host_->sync_data_folder_path())) { 702 if (file_util::DirectoryExists(host_->sync_data_folder_path())) {
710 if (!file_util::Delete(host_->sync_data_folder_path(), true)) 703 if (!file_util::Delete(host_->sync_data_folder_path(), true))
711 SLOG(DFATAL) << "Could not delete the Sync Data folder."; 704 SLOG(DFATAL) << "Could not delete the Sync Data folder.";
712 } 705 }
713 } 706 }
714 707
715 void SyncBackendHost::Core::FinishConfigureDataTypes() { 708 void SyncBackendHost::Core::FinishConfigureDataTypes() {
716 DCHECK_EQ(MessageLoop::current(), sync_loop_); 709 DCHECK_EQ(MessageLoop::current(), sync_loop_);
717 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 710 host_->frontend_loop_->PostTask(FROM_HERE, base::Bind(
718 &SyncBackendHost::Core::FinishConfigureDataTypesOnFrontendLoop)); 711 &SyncBackendHost::Core::FinishConfigureDataTypesOnFrontendLoop, this));
719 } 712 }
720 713
721 void SyncBackendHost::Core::HandleInitializationCompletedOnFrontendLoop( 714 void SyncBackendHost::Core::HandleInitializationCompletedOnFrontendLoop(
722 const WeakHandle<JsBackend>& js_backend, 715 const WeakHandle<JsBackend>& js_backend,
723 bool success) { 716 bool success) {
724 if (!host_) 717 if (!host_)
725 return; 718 return;
726 host_->HandleInitializationCompletedOnFrontendLoop(js_backend, success); 719 host_->HandleInitializationCompletedOnFrontendLoop(js_backend, success);
727 } 720 }
728 721
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 initialization_state_ = INITIALIZED; 932 initialization_state_ = INITIALIZED;
940 // Now that we've downloaded the nigori node, we can see if there are any 933 // Now that we've downloaded the nigori node, we can see if there are any
941 // experimental types to enable. This should be done before we inform 934 // experimental types to enable. This should be done before we inform
942 // the frontend to ensure they're visible in the customize screen. 935 // the frontend to ensure they're visible in the customize screen.
943 AddExperimentalTypes(); 936 AddExperimentalTypes();
944 frontend_->OnBackendInitialized(js_backend, true); 937 frontend_->OnBackendInitialized(js_backend, true);
945 // Now that we're fully initialized, kick off a server 938 // Now that we're fully initialized, kick off a server
946 // reachability check. 939 // reachability check.
947 sync_thread_.message_loop()->PostTask( 940 sync_thread_.message_loop()->PostTask(
948 FROM_HERE, 941 FROM_HERE,
949 NewRunnableMethod( 942 base::Bind(&SyncBackendHost::Core::DoCheckServerReachable,
950 core_.get(), 943 core_.get()));
951 &SyncBackendHost::Core::DoCheckServerReachable));
952 break; 944 break;
953 default: 945 default:
954 NOTREACHED(); 946 NOTREACHED();
955 } 947 }
956 } 948 }
957 949
958 void SyncBackendHost::FinishConfigureDataTypesOnFrontendLoop() { 950 void SyncBackendHost::FinishConfigureDataTypesOnFrontendLoop() {
959 DCHECK_EQ(MessageLoop::current(), frontend_loop_); 951 DCHECK_EQ(MessageLoop::current(), frontend_loop_);
960 // Nudge the syncer. This is necessary for both datatype addition/deletion. 952 // Nudge the syncer. This is necessary for both datatype addition/deletion.
961 // 953 //
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 986
995 // Always configure nigori if it's enabled. 987 // Always configure nigori if it's enabled.
996 syncable::ModelTypeSet types_to_config = 988 syncable::ModelTypeSet types_to_config =
997 pending_download_state_->added_types; 989 pending_download_state_->added_types;
998 if (IsNigoriEnabled()) { 990 if (IsNigoriEnabled()) {
999 types_to_config.insert(syncable::NIGORI); 991 types_to_config.insert(syncable::NIGORI);
1000 } 992 }
1001 SVLOG(1) << "Types " << ModelTypeSetToString(types_to_config) 993 SVLOG(1) << "Types " << ModelTypeSetToString(types_to_config)
1002 << " added; calling DoRequestConfig"; 994 << " added; calling DoRequestConfig";
1003 sync_thread_.message_loop()->PostTask(FROM_HERE, 995 sync_thread_.message_loop()->PostTask(FROM_HERE,
1004 NewRunnableMethod(core_.get(), 996 base::Bind(&SyncBackendHost::Core::DoRequestConfig,
1005 &SyncBackendHost::Core::DoRequestConfig, 997 core_.get(),
1006 syncable::ModelTypeBitSetFromSet(types_to_config), 998 syncable::ModelTypeBitSetFromSet(types_to_config),
1007 pending_download_state_->reason)); 999 pending_download_state_->reason));
1008 } 1000 }
1009 1001
1010 pending_config_mode_state_.reset(); 1002 pending_config_mode_state_.reset();
1011 1003
1012 // Notify the SyncManager about the new types. 1004 // Notify the SyncManager about the new types.
1013 sync_thread_.message_loop()->PostTask(FROM_HERE, 1005 sync_thread_.message_loop()->PostTask(FROM_HERE,
1014 NewRunnableMethod(core_.get(), 1006 base::Bind(&SyncBackendHost::Core::DoUpdateEnabledTypes, core_.get()));
1015 &SyncBackendHost::Core::DoUpdateEnabledTypes));
1016 } 1007 }
1017 1008
1018 sync_api::HttpPostProviderFactory* SyncBackendHost::MakeHttpBridgeFactory( 1009 sync_api::HttpPostProviderFactory* SyncBackendHost::MakeHttpBridgeFactory(
1019 const scoped_refptr<net::URLRequestContextGetter>& getter) { 1010 const scoped_refptr<net::URLRequestContextGetter>& getter) {
1020 return new HttpBridgeFactory(getter); 1011 return new HttpBridgeFactory(getter);
1021 } 1012 }
1022 1013
1023 void SyncBackendHost::PersistEncryptionBootstrapToken( 1014 void SyncBackendHost::PersistEncryptionBootstrapToken(
1024 const std::string& token) { 1015 const std::string& token) {
1025 CHECK(sync_prefs_.get()); 1016 CHECK(sync_prefs_.get());
(...skipping 27 matching lines...) Expand all
1053 FROM_HERE, 1044 FROM_HERE,
1054 base::Bind(&SyncBackendHost::Core::DoRefreshEncryption, 1045 base::Bind(&SyncBackendHost::Core::DoRefreshEncryption,
1055 core_.get(), sync_thread_done_callback)); 1046 core_.get(), sync_thread_done_callback));
1056 } 1047 }
1057 1048
1058 #undef SVLOG 1049 #undef SVLOG
1059 1050
1060 #undef SLOG 1051 #undef SLOG
1061 1052
1062 } // namespace browser_sync 1053 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/password_model_worker.cc ('k') | chrome/browser/sync/notifier/non_blocking_invalidation_notifier.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698