Index: google_apis/gaia/gaia_auth_fetcher.h |
diff --git a/google_apis/gaia/gaia_auth_fetcher.h b/google_apis/gaia/gaia_auth_fetcher.h |
index 744c33feb188aa8a0236be698d0e3a65e9cffdc6..0243d60da96f5a9d8fa0381aca913a293db9ae80 100644 |
--- a/google_apis/gaia/gaia_auth_fetcher.h |
+++ b/google_apis/gaia/gaia_auth_fetcher.h |
@@ -191,6 +191,18 @@ class GaiaAuthFetcher : public net::URLFetcherDelegate { |
// /MergeSession requests. |
void StartGetCheckConnectionInfo(); |
+ // Starts listing any sessions that exist for the IDP. If all requested scopes |
+ // have been approved by the session user, then a login hint is included in |
+ // the response. |
+ void StartListIDPSessions(const std::string& scopes, |
+ const std::string& domain); |
+ |
+ // Generates an access token for the session, specifying the scopes and |
+ // |login_hint|. |
+ void StartGetTokenResponse(const std::string& scopes, |
+ const std::string& domain, |
+ const std::string& login_hint); |
+ |
// Implementation of net::URLFetcherDelegate |
void OnURLFetchComplete(const net::URLFetcher* source) override; |
@@ -314,6 +326,14 @@ class GaiaAuthFetcher : public net::URLFetcherDelegate { |
const net::URLRequestStatus& status, |
int response_code); |
+ void OnListIdpSessionsFetched(const std::string& data, |
+ const net::URLRequestStatus& status, |
+ int response_code); |
+ |
+ void OnGetTokenResponseFetched(const std::string& data, |
+ const net::URLRequestStatus& status, |
+ int response_code); |
+ |
// Tokenize the results of a ClientLogin fetch. |
static void ParseClientLoginResponse(const std::string& data, |
std::string* sid, |
@@ -334,6 +354,9 @@ class GaiaAuthFetcher : public net::URLFetcherDelegate { |
static bool ParseClientLoginToOAuth2Cookie(const std::string& cookie, |
std::string* auth_code); |
+ static bool ParseListIdpSessionsResponse(const std::string& data, |
+ std::string* login_hint); |
+ |
// Is this a special case Gaia error for TwoFactor auth? |
static bool IsSecondFactorSuccess(const std::string& alleged_error); |
@@ -375,6 +398,13 @@ class GaiaAuthFetcher : public net::URLFetcherDelegate { |
static std::string MakeOAuthLoginBody(const std::string& service, |
const std::string& source); |
+ static std::string MakeListIDPSessionsBody(const std::string& scopes, |
+ const std::string& domain); |
+ |
+ static std::string MakeGetTokenResponseBody(const std::string& scopes, |
+ const std::string& domain, |
+ const std::string& login_hint); |
+ |
// Create a fetcher usable for making any Gaia request. |body| is used |
// as the body of the POST request sent to GAIA. Any strings listed in |
// |headers| are added as extra HTTP headers in the request. |
@@ -410,12 +440,13 @@ class GaiaAuthFetcher : public net::URLFetcherDelegate { |
const GURL oauth_login_gurl_; |
const GURL list_accounts_gurl_; |
const GURL get_check_connection_info_url_; |
+ const GURL oauth2_iframe_url_; |
// While a fetch is going on: |
scoped_ptr<net::URLFetcher> fetcher_; |
GURL client_login_to_oauth2_gurl_; |
std::string request_body_; |
- std::string requested_service_; // Currently tracked for IssueAuthToken only. |
+ std::string requested_service_; |
bool fetch_pending_; |
friend class GaiaAuthFetcherTest; |