| Index: chrome/browser/sync/glue/sync_backend_host.cc | 
| diff --git a/chrome/browser/sync/glue/sync_backend_host.cc b/chrome/browser/sync/glue/sync_backend_host.cc | 
| index ed56a2e0c46ced14bdb6044beae7aabaf9fd3265..688a4fa18b3f1e425e26d3911fbb64e71805fc16 100644 | 
| --- a/chrome/browser/sync/glue/sync_backend_host.cc | 
| +++ b/chrome/browser/sync/glue/sync_backend_host.cc | 
| @@ -528,30 +528,24 @@ bool SyncBackendHost::RequestClearServerData() { | 
| SyncBackendHost::Core::~Core() { | 
| } | 
|  | 
| -void SyncBackendHost::Core::NotifyPassphraseRequired(bool for_decryption) { | 
| +void SyncBackendHost::Core::NotifyPassphraseRequired( | 
| +    sync_api::PassphraseRequiredReason reason) { | 
| if (!host_ || !host_->frontend_) | 
| return; | 
|  | 
| DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); | 
|  | 
| +  // When setting a passphrase fails, unset our waiting flag. | 
| +  if (reason == sync_api::REASON_SET_PASSPHRASE_FAILED) | 
| +    processing_passphrase_ = false; | 
| + | 
| if (processing_passphrase_) { | 
| VLOG(1) << "Core received OnPassphraseRequired while processing a " | 
| << "passphrase. Silently dropping."; | 
| return; | 
| } | 
| -  host_->frontend_->OnPassphraseRequired(for_decryption); | 
| -} | 
| - | 
| -void SyncBackendHost::Core::NotifyPassphraseFailed() { | 
| -  if (!host_ || !host_->frontend_) | 
| -    return; | 
|  | 
| -  DCHECK_EQ(MessageLoop::current(), host_->frontend_loop_); | 
| - | 
| -  // When a passphrase fails, we just unset our waiting flag and trigger a | 
| -  // OnPassphraseRequired(true). | 
| -  processing_passphrase_ = false; | 
| -  host_->frontend_->OnPassphraseRequired(true); | 
| +  host_->frontend_->OnPassphraseRequired(reason); | 
| } | 
|  | 
| void SyncBackendHost::Core::NotifyPassphraseAccepted( | 
| @@ -972,14 +966,10 @@ void SyncBackendHost::Core::OnAuthError(const AuthError& auth_error) { | 
| auth_error)); | 
| } | 
|  | 
| -void SyncBackendHost::Core::OnPassphraseRequired(bool for_decryption) { | 
| -  host_->frontend_loop_->PostTask(FROM_HERE, | 
| -      NewRunnableMethod(this, &Core::NotifyPassphraseRequired, for_decryption)); | 
| -} | 
| - | 
| -void SyncBackendHost::Core::OnPassphraseFailed() { | 
| +void SyncBackendHost::Core::OnPassphraseRequired( | 
| +    sync_api::PassphraseRequiredReason reason) { | 
| host_->frontend_loop_->PostTask(FROM_HERE, | 
| -      NewRunnableMethod(this, &Core::NotifyPassphraseFailed)); | 
| +      NewRunnableMethod(this, &Core::NotifyPassphraseRequired, reason)); | 
| } | 
|  | 
| void SyncBackendHost::Core::OnPassphraseAccepted( | 
|  |