cookie_fetcher.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chromeos/login/cookie_fetcher.h"
6
7#include "base/command_line.h"
8#include "base/path_service.h"
9#include "chrome/browser/browser_process.h"
10#include "chrome/browser/chromeos/boot_times_loader.h"
11#include "chrome/browser/chromeos/login/client_login_response_handler.h"
12#include "chrome/browser/chromeos/login/issue_response_handler.h"
13#include "chrome/browser/chromeos/login/login_utils.h"
14#include "chrome/browser/net/chrome_url_request_context.h"
15#include "chrome/browser/profile.h"
16#include "chrome/browser/profile_manager.h"
17#include "chrome/common/chrome_paths.h"
18#include "chrome/common/net/url_fetcher.h"
19#include "net/url_request/url_request_status.h"
20
21namespace chromeos {
22
23CookieFetcher::CookieFetcher(Profile* profile) : profile_(profile) {
24  CHECK(profile_);
25  client_login_handler_.reset(
26      new ClientLoginResponseHandler(profile_->GetRequestContext()));
27  issue_handler_.reset(
28      new IssueResponseHandler(profile_->GetRequestContext()));
29}
30
31void CookieFetcher::AttemptFetch(const std::string& credentials) {
32  VLOG(1) << "Getting auth token...";
33  fetcher_.reset(client_login_handler_->Handle(credentials, this));
34}
35
36void CookieFetcher::OnURLFetchComplete(const URLFetcher* source,
37                                       const GURL& url,
38                                       const URLRequestStatus& status,
39                                       int response_code,
40                                       const ResponseCookies& cookies,
41                                       const std::string& data) {
42  if (status.is_success() && response_code == kHttpSuccess) {
43    if (issue_handler_->CanHandle(url)) {
44      VLOG(1) << "Handling auth token";
45      fetcher_.reset(issue_handler_->Handle(data, this));
46      return;
47    }
48  }
49  BootTimesLoader::Get()->AddLoginTimeMarker("CookiesFetched", false);
50  delete this;
51}
52
53}  // namespace chromeos
54