// Copyright (c) 2011 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. #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_COOKIE_FETCHER_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_COOKIE_FETCHER_H_ #pragma once #include <string> #include "base/memory/scoped_ptr.h" #include "chrome/browser/chromeos/login/auth_response_handler.h" #include "chrome/browser/chromeos/login/client_login_response_handler.h" #include "chrome/browser/chromeos/login/issue_response_handler.h" #include "chrome/common/net/url_fetcher.h" class Profile; namespace chromeos { // Given a SID/LSID pair, this class will attempt to turn them into a // full-fledged set of Google AuthN cookies. // // A CookieFetcher manages its own lifecycle. It deletes itself once it's // done attempting to fetch URLs. class CookieFetcher : public URLFetcher::Delegate { public: // |profile| is the Profile whose cookie jar you want the cookies in. explicit CookieFetcher(Profile* profile); // |profile| is the Profile whose cookie jar you want the cookies in. // Takes ownership of |cl_handler|, |i_handler|, and |launcher|. CookieFetcher(Profile* profile, AuthResponseHandler* cl_handler, AuthResponseHandler* i_handler) : profile_(profile), client_login_handler_(cl_handler), issue_handler_(i_handler) { } // Given a newline-delineated SID/LSID pair of Google cookies (like // those that come back from ClientLogin), try to use them to fetch // a full-fledged set of Google AuthN cookies. These cookies will wind up // stored in the cookie jar associated with |profile_|, if we get them. // Either way, we end up by calling launcher_->DoLaunch() void AttemptFetch(const std::string& credentials); // Overloaded from URLFetcher::Delegate. virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); private: virtual ~CookieFetcher() {} scoped_ptr<URLFetcher> fetcher_; Profile* profile_; scoped_ptr<AuthResponseHandler> client_login_handler_; scoped_ptr<AuthResponseHandler> issue_handler_; DISALLOW_COPY_AND_ASSIGN(CookieFetcher); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_LOGIN_COOKIE_FETCHER_H_