Home | History | Annotate | Download | only in login
      1 // Copyright (c) 2011 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/chromeos/boot_times_loader.h"
     10 #include "chrome/browser/chromeos/login/client_login_response_handler.h"
     11 #include "chrome/browser/chromeos/login/issue_response_handler.h"
     12 #include "chrome/browser/chromeos/login/login_utils.h"
     13 #include "chrome/browser/net/chrome_url_request_context.h"
     14 #include "chrome/browser/profiles/profile.h"
     15 #include "chrome/browser/profiles/profile_manager.h"
     16 #include "chrome/common/chrome_paths.h"
     17 #include "chrome/common/net/url_fetcher.h"
     18 #include "net/url_request/url_request_status.h"
     19 
     20 namespace chromeos {
     21 
     22 CookieFetcher::CookieFetcher(Profile* profile) : profile_(profile) {
     23   CHECK(profile_);
     24   client_login_handler_.reset(
     25       new ClientLoginResponseHandler(profile_->GetRequestContext()));
     26   issue_handler_.reset(
     27       new IssueResponseHandler(profile_->GetRequestContext()));
     28 }
     29 
     30 void CookieFetcher::AttemptFetch(const std::string& credentials) {
     31   VLOG(1) << "Getting auth token...";
     32   fetcher_.reset(client_login_handler_->Handle(credentials, this));
     33 }
     34 
     35 void CookieFetcher::OnURLFetchComplete(const URLFetcher* source,
     36                                        const GURL& url,
     37                                        const net::URLRequestStatus& status,
     38                                        int response_code,
     39                                        const ResponseCookies& cookies,
     40                                        const std::string& data) {
     41   if (status.is_success() && response_code == kHttpSuccess) {
     42     if (issue_handler_->CanHandle(url)) {
     43       VLOG(1) << "Handling auth token";
     44       fetcher_.reset(issue_handler_->Handle(data, this));
     45       return;
     46     }
     47   }
     48   BootTimesLoader::Get()->AddLoginTimeMarker("CookiesFetched", false);
     49   delete this;
     50 }
     51 
     52 }  // namespace chromeos
     53