| Index: chrome/browser/sync/notifier/communicator/talk_auth_task.cc
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/communicator/talk_auth_task.cc (revision 0)
|
| +++ chrome/browser/sync/notifier/communicator/talk_auth_task.cc (revision 0)
|
| @@ -0,0 +1,73 @@
|
| +// 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/talk_auth_task.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 "chrome/browser/sync/notifier/gaia_auth/gaiaauth.h"
|
| +#include "talk/base/common.h"
|
| +#include "talk/base/urlencode.h"
|
| +#include "talk/xmpp/xmppclient.h"
|
| +
|
| +namespace notifier {
|
| +const char kTalkGadgetAuthPath[] = "/auth";
|
| +
|
| +TalkAuthTask::TalkAuthTask(talk_base::Task* parent,
|
| + Login* login,
|
| + const char* url)
|
| + : talk_base::Task(parent),
|
| + login_(login),
|
| + url_(url) {
|
| + ASSERT(login && !url_.empty());
|
| +}
|
| +
|
| +int TalkAuthTask::ProcessStart() {
|
| + auth_.reset(new buzz::GaiaAuth(GetUserAgentString(),
|
| + GetProductSignature()));
|
| + auth_->SignalAuthDone.connect(
|
| + this,
|
| + &TalkAuthTask::OnAuthDone);
|
| + auth_->StartAuth(login_->xmpp_client()->jid().BareJid(),
|
| + login_->login_settings().user_settings().pass(),
|
| + "talk");
|
| + return STATE_RESPONSE;
|
| +}
|
| +
|
| +int TalkAuthTask::ProcessResponse() {
|
| + ASSERT(auth_.get());
|
| + if (!auth_->IsAuthDone()) {
|
| + return STATE_BLOCKED;
|
| + }
|
| + SignalAuthDone(*this);
|
| + return STATE_DONE;
|
| +}
|
| +
|
| +
|
| +void TalkAuthTask::OnAuthDone() {
|
| + Wake();
|
| +}
|
| +
|
| +bool TalkAuthTask::HadError() const {
|
| + return auth_->HadError();
|
| +}
|
| +
|
| +std::string TalkAuthTask::GetAuthenticatedUrl(
|
| + const char* talk_base_url) const {
|
| + ASSERT(talk_base_url && *talk_base_url && !auth_->HadError());
|
| +
|
| + std::string auth_url(talk_base_url);
|
| + auth_url.append(kTalkGadgetAuthPath);
|
| + auth_url.append("?silent=true&redirect=true&host=");
|
| + auth_url.append(UrlEncodeString(url_));
|
| + auth_url.append("&auth=");
|
| + auth_url.append(auth_->GetAuth());
|
| + return auth_url;
|
| +}
|
| +
|
| +std::string TalkAuthTask::GetSID() const {
|
| + return auth_->GetSID();
|
| +}
|
| +} // namespace notifier
|
|
|
| Property changes on: chrome\browser\sync\notifier\communicator\talk_auth_task.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|