summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/glue/sync_backend_host.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/glue/sync_backend_host.cc')
-rw-r--r--chrome/browser/sync/glue/sync_backend_host.cc61
1 files changed, 32 insertions, 29 deletions
diff --git a/chrome/browser/sync/glue/sync_backend_host.cc b/chrome/browser/sync/glue/sync_backend_host.cc
index b570c4f..c4e0963 100644
--- a/chrome/browser/sync/glue/sync_backend_host.cc
+++ b/chrome/browser/sync/glue/sync_backend_host.cc
@@ -10,6 +10,7 @@
#include "base/task.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/chrome_thread.h"
+#include "chrome/browser/net/gaia/token_service.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/sync/engine/syncapi.h"
@@ -21,24 +22,25 @@
#include "chrome/browser/sync/glue/password_model_worker.h"
#include "chrome/browser/sync/sessions/session_state.h"
#include "chrome/common/chrome_version_info.h"
+#include "chrome/common/net/gaia/gaia_constants.h"
#include "chrome/common/notification_service.h"
#include "chrome/common/notification_type.h"
#include "chrome/common/pref_names.h"
#include "webkit/glue/webkit_glue.h"
static const int kSaveChangesIntervalSeconds = 10;
-static const char kGaiaServiceId[] = "chromiumsync";
-static const char kGaiaSourceForChrome[] = "ChromiumBrowser";
static const FilePath::CharType kSyncDataFolderName[] =
FILE_PATH_LITERAL("Sync Data");
using browser_sync::DataTypeController;
+typedef TokenService::TokenAvailableDetails TokenAvailableDetails;
typedef GoogleServiceAuthError AuthError;
namespace browser_sync {
using sessions::SyncSessionSnapshot;
+using sync_api::SyncCredentials;
SyncBackendHost::SyncBackendHost(
SyncFrontend* frontend,
@@ -75,10 +77,8 @@ void SyncBackendHost::Initialize(
const GURL& sync_service_url,
const syncable::ModelTypeSet& types,
URLRequestContextGetter* baseline_context_getter,
- const std::string& lsid,
+ const SyncCredentials& credentials,
bool delete_sync_data_folder,
- bool invalidate_sync_login,
- bool invalidate_sync_xmpp_login,
bool use_chrome_async_socket,
bool try_ssltcp_first,
NotificationMethod notification_method) {
@@ -110,13 +110,10 @@ void SyncBackendHost::Initialize(
}
InitCore(Core::DoInitializeOptions(
- sync_service_url, lsid.empty(),
+ sync_service_url,
MakeHttpBridgeFactory(baseline_context_getter),
- MakeHttpBridgeFactory(baseline_context_getter),
- lsid,
+ credentials,
delete_sync_data_folder,
- invalidate_sync_login,
- invalidate_sync_xmpp_login,
use_chrome_async_socket,
try_ssltcp_first,
notification_method,
@@ -148,12 +145,11 @@ void SyncBackendHost::InitCore(const Core::DoInitializeOptions& options) {
options));
}
-void SyncBackendHost::Authenticate(const std::string& username,
- const std::string& password,
- const std::string& captcha) {
+void SyncBackendHost::UpdateCredentials(const SyncCredentials& credentials) {
core_thread_.message_loop()->PostTask(FROM_HERE,
- NewRunnableMethod(core_.get(), &SyncBackendHost::Core::DoAuthenticate,
- username, password, captcha));
+ NewRunnableMethod(core_.get(),
+ &SyncBackendHost::Core::DoUpdateCredentials,
+ credentials));
}
void SyncBackendHost::StartSyncingWithServer() {
@@ -344,6 +340,15 @@ void SyncBackendHost::Core::NotifyPassphraseAccepted(
NotificationService::NoDetails());
}
+void SyncBackendHost::Core::NotifyUpdatedToken(const std::string& token) {
+ DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
+ TokenAvailableDetails details(GaiaConstants::kSyncService, token);
+ NotificationService::current()->Notify(
+ NotificationType::TOKEN_UPDATED,
+ NotificationService::AllSources(),
+ Details<const TokenAvailableDetails>(&details));
+}
+
SyncBackendHost::UserShareHandle SyncBackendHost::GetUserShareHandle() const {
DCHECK(syncapi_initialized_);
return core_->syncapi()->GetUserShare();
@@ -432,8 +437,9 @@ void SyncBackendHost::Core::DoInitialize(const DoInitializeOptions& options) {
// Blow away the partial or corrupt sync data folder before doing any more
// initialization, if necessary.
- if (options.delete_sync_data_folder)
+ if (options.delete_sync_data_folder) {
DeleteSyncDataFolder();
+ }
// Make sure that the directory exists before initializing the backend.
// If it already exists, this will do no harm.
@@ -445,17 +451,11 @@ void SyncBackendHost::Core::DoInitialize(const DoInitializeOptions& options) {
success = syncapi_->Init(path_str,
(options.service_url.host() + options.service_url.path()).c_str(),
options.service_url.EffectiveIntPort(),
- kGaiaServiceId,
- kGaiaSourceForChrome,
options.service_url.SchemeIsSecure(),
options.http_bridge_factory,
- options.auth_http_bridge_factory,
host_, // ModelSafeWorkerRegistrar.
- options.attempt_last_user_authentication,
- options.invalidate_sync_login,
- options.invalidate_sync_xmpp_login,
MakeUserAgentForSyncapi().c_str(),
- options.lsid.c_str(),
+ options.credentials,
options.use_chrome_async_socket,
options.try_ssltcp_first,
options.notification_method,
@@ -463,11 +463,10 @@ void SyncBackendHost::Core::DoInitialize(const DoInitializeOptions& options) {
DCHECK(success) << "Syncapi initialization failed!";
}
-void SyncBackendHost::Core::DoAuthenticate(const std::string& username,
- const std::string& password,
- const std::string& captcha) {
+void SyncBackendHost::Core::DoUpdateCredentials(
+ const SyncCredentials& credentials) {
DCHECK(MessageLoop::current() == host_->core_thread_.message_loop());
- syncapi_->Authenticate(username.c_str(), password.c_str(), captcha.c_str());
+ syncapi_->UpdateCredentials(credentials);
}
void SyncBackendHost::Core::DoStartSyncing() {
@@ -624,8 +623,7 @@ bool SyncBackendHost::Core::IsCurrentThreadSafeForModel(
void SyncBackendHost::Core::OnAuthError(const AuthError& auth_error) {
- // We could be on SyncEngine_AuthWatcherThread. Post to our core loop so
- // we can modify state.
+ // Post to our core loop so we can modify state. Could be on another thread.
host_->frontend_loop_->PostTask(FROM_HERE,
NewRunnableMethod(this, &Core::HandleAuthErrorEventOnFrontendLoop,
auth_error));
@@ -660,6 +658,11 @@ void SyncBackendHost::Core::OnStopSyncingPermanently() {
&Core::HandleStopSyncingPermanentlyOnFrontendLoop));
}
+void SyncBackendHost::Core::OnUpdatedToken(const std::string& token) {
+ host_->frontend_loop_->PostTask(FROM_HERE, NewRunnableMethod(this,
+ &Core::NotifyUpdatedToken, token));
+}
+
void SyncBackendHost::Core::HandleStopSyncingPermanentlyOnFrontendLoop() {
if (!host_ || !host_->frontend_)
return;