| Index: chrome/browser/sync/notifier/communicator/auth_task.cc
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/communicator/auth_task.cc (revision 0)
|
| +++ chrome/browser/sync/notifier/communicator/auth_task.cc (revision 0)
|
| @@ -0,0 +1,69 @@
|
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/sync/notifier/communicator/auth_task.h"
|
| +
|
| +#include "chrome/browser/sync/notifier/gaia_auth/gaiaauth.h"
|
| +#include "chrome/browser/sync/notifier/communicator/login.h"
|
| +#include "chrome/browser/sync/notifier/communicator/login_settings.h"
|
| +#include "chrome/browser/sync/notifier/communicator/product_info.h"
|
| +#include "talk/base/common.h"
|
| +#include "talk/base/urlencode.h"
|
| +#include "talk/xmpp/xmppclient.h"
|
| +
|
| +namespace notifier {
|
| +const char kTalkGadgetAuthPath[] = "/auth";
|
| +
|
| +AuthTask::AuthTask(talk_base::Task* parent, Login* login, const char* url)
|
| + : talk_base::Task(parent),
|
| + login_(login),
|
| + url_(url),
|
| + use_gaia_redirect_(true) {
|
| + ASSERT(login && !url_.empty());
|
| +}
|
| +
|
| +int AuthTask::ProcessStart() {
|
| + auth_.reset(new buzz::GaiaAuth(GetUserAgentString(),
|
| + GetProductSignature()));
|
| + auth_->SignalAuthDone.connect(this, &AuthTask::OnAuthDone);
|
| + auth_->StartTokenAuth(login_->xmpp_client()->jid().BareJid(),
|
| + login_->login_settings().user_settings().pass(),
|
| + use_gaia_redirect_ ? "gaia" : service_);
|
| + return STATE_RESPONSE;
|
| +}
|
| +
|
| +int AuthTask::ProcessResponse() {
|
| + ASSERT(auth_.get());
|
| + if (!auth_->IsAuthDone()) {
|
| + return STATE_BLOCKED;
|
| + }
|
| + if (!auth_->IsAuthorized()) {
|
| + SignalAuthError(!auth_->HadError());
|
| + return STATE_ERROR;
|
| + }
|
| +
|
| + std::string uber_url;
|
| + if (use_gaia_redirect_) {
|
| + uber_url = auth_->CreateAuthenticatedUrl(url_, service_);
|
| + } else {
|
| + uber_url = redir_auth_prefix_ + auth_->GetAuthCookie();
|
| + uber_url += redir_continue_;
|
| + uber_url += UrlEncodeString(url_);
|
| + }
|
| +
|
| + if (uber_url == "") {
|
| + SignalAuthError(true);
|
| + return STATE_ERROR;
|
| + }
|
| +
|
| + SignalAuthDone(uber_url);
|
| + return STATE_DONE;
|
| +}
|
| +
|
| +
|
| +void AuthTask::OnAuthDone() {
|
| + Wake();
|
| +}
|
| +
|
| +} // namespace notifier
|
|
|
| Property changes on: chrome\browser\sync\notifier\communicator\auth_task.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|