| 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 "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 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 sync_thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod( | 298 sync_thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
| 299 core_.get(), &SyncBackendHost::Core::DoStartConfiguration, callback)); | 299 core_.get(), &SyncBackendHost::Core::DoStartConfiguration, callback)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 void SyncBackendHost::EnableEncryptEverything() { | 302 void SyncBackendHost::EnableEncryptEverything() { |
| 303 sync_thread_.message_loop()->PostTask(FROM_HERE, | 303 sync_thread_.message_loop()->PostTask(FROM_HERE, |
| 304 NewRunnableMethod(core_.get(), | 304 NewRunnableMethod(core_.get(), |
| 305 &SyncBackendHost::Core::DoEnableEncryptEverything)); | 305 &SyncBackendHost::Core::DoEnableEncryptEverything)); |
| 306 } | 306 } |
| 307 | 307 |
| 308 bool SyncBackendHost::EncryptEverythingEnabled() const { | |
| 309 if (initialization_state_ <= NOT_INITIALIZED) { | |
| 310 NOTREACHED() << "Cannot check encryption status without first " | |
| 311 << "initializing backend."; | |
| 312 return false; | |
| 313 } | |
| 314 return core_->sync_manager()->EncryptEverythingEnabled(); | |
| 315 } | |
| 316 | |
| 317 syncable::ModelTypeSet SyncBackendHost::GetEncryptedDataTypes() const { | |
| 318 DCHECK_GT(initialization_state_, NOT_INITIALIZED); | |
| 319 return core_->sync_manager()->GetEncryptedDataTypes(); | |
| 320 } | |
| 321 | |
| 322 void SyncBackendHost::ActivateDataType( | 308 void SyncBackendHost::ActivateDataType( |
| 323 syncable::ModelType type, ModelSafeGroup group, | 309 syncable::ModelType type, ModelSafeGroup group, |
| 324 ChangeProcessor* change_processor) { | 310 ChangeProcessor* change_processor) { |
| 325 registrar_->ActivateDataType(type, group, change_processor, GetUserShare()); | 311 registrar_->ActivateDataType(type, group, change_processor, GetUserShare()); |
| 326 } | 312 } |
| 327 | 313 |
| 328 void SyncBackendHost::DeactivateDataType(syncable::ModelType type) { | 314 void SyncBackendHost::DeactivateDataType(syncable::ModelType type) { |
| 329 registrar_->DeactivateDataType(type); | 315 registrar_->DeactivateDataType(type); |
| 330 } | 316 } |
| 331 | 317 |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 } | 482 } |
| 497 | 483 |
| 498 void SyncBackendHost::Core::OnClearServerDataSucceeded() { | 484 void SyncBackendHost::Core::OnClearServerDataSucceeded() { |
| 499 if (!sync_loop_) | 485 if (!sync_loop_) |
| 500 return; | 486 return; |
| 501 DCHECK_EQ(MessageLoop::current(), sync_loop_); | 487 DCHECK_EQ(MessageLoop::current(), sync_loop_); |
| 502 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, | 488 host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, |
| 503 &Core::HandleClearServerDataSucceededOnFrontendLoop)); | 489 &Core::HandleClearServerDataSucceededOnFrontendLoop)); |
| 504 } | 490 } |
| 505 | 491 |
| 506 void SyncBackendHost::Core::OnEncryptionComplete( | 492 void SyncBackendHost::Core::OnEncryptedTypesChanged( |
| 507 const syncable::ModelTypeSet& encrypted_types) { | 493 const syncable::ModelTypeSet& encrypted_types, |
| 494 bool encrypt_everything) { |
| 508 if (!sync_loop_) | 495 if (!sync_loop_) |
| 509 return; | 496 return; |
| 510 DCHECK_EQ(MessageLoop::current(), sync_loop_); | 497 DCHECK_EQ(MessageLoop::current(), sync_loop_); |
| 498 // NOTE: We're in a transaction. |
| 511 host_->frontend_loop_->PostTask( | 499 host_->frontend_loop_->PostTask( |
| 512 FROM_HERE, | 500 FROM_HERE, |
| 513 NewRunnableMethod(this, &Core::NotifyEncryptionComplete, | 501 base::Bind(&Core::NotifyEncryptedTypesChanged, this, |
| 514 encrypted_types)); | 502 encrypted_types, encrypt_everything)); |
| 503 } |
| 504 |
| 505 void SyncBackendHost::Core::OnEncryptionComplete() { |
| 506 if (!sync_loop_) |
| 507 return; |
| 508 DCHECK_EQ(MessageLoop::current(), sync_loop_); |
| 509 // NOTE: We're in a transaction. |
| 510 host_->frontend_loop_->PostTask( |
| 511 FROM_HERE, |
| 512 base::Bind(&Core::NotifyEncryptionComplete, this)); |
| 515 } | 513 } |
| 516 | 514 |
| 517 void SyncBackendHost::Core::OnActionableError( | 515 void SyncBackendHost::Core::OnActionableError( |
| 518 const browser_sync::SyncProtocolError& sync_error) { | 516 const browser_sync::SyncProtocolError& sync_error) { |
| 519 if (!sync_loop_) | 517 if (!sync_loop_) |
| 520 return; | 518 return; |
| 521 DCHECK_EQ(MessageLoop::current(), sync_loop_); | 519 DCHECK_EQ(MessageLoop::current(), sync_loop_); |
| 522 host_->frontend_loop_->PostTask( | 520 host_->frontend_loop_->PostTask( |
| 523 FROM_HERE, | 521 FROM_HERE, |
| 524 NewRunnableMethod(this, &Core::HandleActionableErrorEventOnFrontendLoop, | 522 NewRunnableMethod(this, &Core::HandleActionableErrorEventOnFrontendLoop, |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 if (!host_) | 785 if (!host_) |
| 788 return; | 786 return; |
| 789 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 787 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 790 TokenAvailableDetails details(GaiaConstants::kSyncService, token); | 788 TokenAvailableDetails details(GaiaConstants::kSyncService, token); |
| 791 content::NotificationService::current()->Notify( | 789 content::NotificationService::current()->Notify( |
| 792 chrome::NOTIFICATION_TOKEN_UPDATED, | 790 chrome::NOTIFICATION_TOKEN_UPDATED, |
| 793 content::Source<Profile>(host_->profile_), | 791 content::Source<Profile>(host_->profile_), |
| 794 content::Details<const TokenAvailableDetails>(&details)); | 792 content::Details<const TokenAvailableDetails>(&details)); |
| 795 } | 793 } |
| 796 | 794 |
| 797 void SyncBackendHost::Core::NotifyEncryptionComplete( | 795 void SyncBackendHost::Core::NotifyEncryptedTypesChanged( |
| 798 const syncable::ModelTypeSet& encrypted_types) { | 796 const syncable::ModelTypeSet& encrypted_types, |
| 797 bool encrypt_everything) { |
| 799 if (!host_) | 798 if (!host_) |
| 800 return; | 799 return; |
| 801 DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); | 800 DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); |
| 802 host_->frontend_->OnEncryptionComplete(encrypted_types); | 801 host_->frontend_->OnEncryptedTypesChanged( |
| 802 encrypted_types, encrypt_everything); |
| 803 } |
| 804 |
| 805 void SyncBackendHost::Core::NotifyEncryptionComplete() { |
| 806 if (!host_) |
| 807 return; |
| 808 DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); |
| 809 host_->frontend_->OnEncryptionComplete(); |
| 803 } | 810 } |
| 804 | 811 |
| 805 void SyncBackendHost::Core::HandleSyncCycleCompletedOnFrontendLoop( | 812 void SyncBackendHost::Core::HandleSyncCycleCompletedOnFrontendLoop( |
| 806 SyncSessionSnapshot* snapshot) { | 813 SyncSessionSnapshot* snapshot) { |
| 807 if (!host_ || !host_->frontend_) | 814 if (!host_ || !host_->frontend_) |
| 808 return; | 815 return; |
| 809 DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); | 816 DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); |
| 810 | 817 |
| 811 host_->last_snapshot_.reset(snapshot); | 818 host_->last_snapshot_.reset(snapshot); |
| 812 | 819 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 913 syncable::ModelTypeSet(), | 920 syncable::ModelTypeSet(), |
| 914 sync_api::CONFIGURE_REASON_NEW_CLIENT, | 921 sync_api::CONFIGURE_REASON_NEW_CLIENT, |
| 915 base::Bind( | 922 base::Bind( |
| 916 &SyncBackendHost::Core:: | 923 &SyncBackendHost::Core:: |
| 917 HandleInitializationCompletedOnFrontendLoop, | 924 HandleInitializationCompletedOnFrontendLoop, |
| 918 core_.get(), js_backend), | 925 core_.get(), js_backend), |
| 919 true); | 926 true); |
| 920 break; | 927 break; |
| 921 case DOWNLOADING_NIGORI: | 928 case DOWNLOADING_NIGORI: |
| 922 initialization_state_ = REFRESHING_ENCRYPTION; | 929 initialization_state_ = REFRESHING_ENCRYPTION; |
| 930 // Triggers OnEncryptedTypesChanged() and OnEncryptionComplete() |
| 931 // if necessary. |
| 923 RefreshEncryption( | 932 RefreshEncryption( |
| 924 base::Bind( | 933 base::Bind( |
| 925 &SyncBackendHost::Core:: | 934 &SyncBackendHost::Core:: |
| 926 HandleInitializationCompletedOnFrontendLoop, | 935 HandleInitializationCompletedOnFrontendLoop, |
| 927 core_.get(), js_backend, true)); | 936 core_.get(), js_backend, true)); |
| 928 break; | 937 break; |
| 929 case REFRESHING_ENCRYPTION: | 938 case REFRESHING_ENCRYPTION: |
| 930 initialization_state_ = INITIALIZED; | 939 initialization_state_ = INITIALIZED; |
| 931 // Now that we've downloaded the nigori node, we can see if there are any | 940 // 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 | 941 // experimental types to enable. This should be done before we inform |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1044 FROM_HERE, | 1053 FROM_HERE, |
| 1045 base::Bind(&SyncBackendHost::Core::DoRefreshEncryption, | 1054 base::Bind(&SyncBackendHost::Core::DoRefreshEncryption, |
| 1046 core_.get(), sync_thread_done_callback)); | 1055 core_.get(), sync_thread_done_callback)); |
| 1047 } | 1056 } |
| 1048 | 1057 |
| 1049 #undef SVLOG | 1058 #undef SVLOG |
| 1050 | 1059 |
| 1051 #undef SLOG | 1060 #undef SLOG |
| 1052 | 1061 |
| 1053 } // namespace browser_sync | 1062 } // namespace browser_sync |
| OLD | NEW |