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 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_ISSUE_RESPONSE_HANDLER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_ISSUE_RESPONSE_HANDLER_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "chrome/browser/chromeos/login/auth_response_handler.h" 13 14 namespace net { 15 class URLRequestContextGetter; 16 } 17 18 namespace chromeos { 19 20 // Handles responses to a fetch executed upon the Google Accounts IssueAuthToken 21 // endpoint. The token that's sent back in the response body is used as an 22 // URL query parameter in a request that, ultimately, results in a full set 23 // of authorization cookies for Google services being left in the cookie jar 24 // associated with |getter_|. 25 class IssueResponseHandler : public AuthResponseHandler { 26 public: IssueResponseHandler(net::URLRequestContextGetter * getter)27 explicit IssueResponseHandler(net::URLRequestContextGetter* getter) 28 : getter_(getter) {} ~IssueResponseHandler()29 virtual ~IssueResponseHandler() {} 30 31 // Overridden from AuthResponseHandler. 32 virtual bool CanHandle(const GURL& url); 33 34 // Overridden from AuthResponseHandler. 35 // Takes in a response from IssueAuthToken, formats into an appropriate query 36 // to sent to TokenAuth, and issues said query. |catcher| will receive 37 // the response to the fetch. This fetch will follow redirects, which is 38 // necesary to support GAFYD and corp accounts. 39 virtual URLFetcher* Handle(const std::string& to_process, 40 URLFetcher::Delegate* catcher); 41 42 // exposed for testing token_url()43 std::string token_url() { return token_url_; } 44 45 private: 46 std::string token_url_; 47 net::URLRequestContextGetter* getter_; 48 DISALLOW_COPY_AND_ASSIGN(IssueResponseHandler); 49 }; 50 51 } // namespace chromeos 52 53 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_ISSUE_RESPONSE_HANDLER_H_ 54