| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "google_apis/gaia/gaia_auth_fetcher.h" | 5 #include "google_apis/gaia/gaia_auth_fetcher.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 bool GaiaAuthFetcher::HasPendingFetch() { | 218 bool GaiaAuthFetcher::HasPendingFetch() { |
| 219 return fetch_pending_; | 219 return fetch_pending_; |
| 220 } | 220 } |
| 221 | 221 |
| 222 void GaiaAuthFetcher::CancelRequest() { | 222 void GaiaAuthFetcher::CancelRequest() { |
| 223 fetcher_.reset(); | 223 fetcher_.reset(); |
| 224 fetch_pending_ = false; | 224 fetch_pending_ = false; |
| 225 } | 225 } |
| 226 | 226 |
| 227 // static | 227 // static |
| 228 net::URLFetcher* GaiaAuthFetcher::CreateGaiaFetcher( | 228 scoped_ptr<net::URLFetcher> GaiaAuthFetcher::CreateGaiaFetcher( |
| 229 net::URLRequestContextGetter* getter, | 229 net::URLRequestContextGetter* getter, |
| 230 const std::string& body, | 230 const std::string& body, |
| 231 const std::string& headers, | 231 const std::string& headers, |
| 232 const GURL& gaia_gurl, | 232 const GURL& gaia_gurl, |
| 233 int load_flags, | 233 int load_flags, |
| 234 net::URLFetcherDelegate* delegate) { | 234 net::URLFetcherDelegate* delegate) { |
| 235 net::URLFetcher* to_return = net::URLFetcher::Create( | 235 scoped_ptr<net::URLFetcher> to_return = net::URLFetcher::Create( |
| 236 0, gaia_gurl, | 236 0, gaia_gurl, body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST, |
| 237 body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST, | |
| 238 delegate); | 237 delegate); |
| 239 to_return->SetRequestContext(getter); | 238 to_return->SetRequestContext(getter); |
| 240 to_return->SetUploadData("application/x-www-form-urlencoded", body); | 239 to_return->SetUploadData("application/x-www-form-urlencoded", body); |
| 241 | 240 |
| 242 DVLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec(); | 241 DVLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec(); |
| 243 DVLOG(2) << "Gaia fetcher headers: " << headers; | 242 DVLOG(2) << "Gaia fetcher headers: " << headers; |
| 244 DVLOG(2) << "Gaia fetcher body: " << body; | 243 DVLOG(2) << "Gaia fetcher body: " << body; |
| 245 | 244 |
| 246 // The Gaia token exchange requests do not require any cookie-based | 245 // The Gaia token exchange requests do not require any cookie-based |
| 247 // identification as part of requests. We suppress sending any cookies to | 246 // identification as part of requests. We suppress sending any cookies to |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 586 DVLOG(1) << "Starting new ClientLogin fetch for:" << username; | 585 DVLOG(1) << "Starting new ClientLogin fetch for:" << username; |
| 587 | 586 |
| 588 // Must outlive fetcher_. | 587 // Must outlive fetcher_. |
| 589 request_body_ = MakeClientLoginBody(username, | 588 request_body_ = MakeClientLoginBody(username, |
| 590 password, | 589 password, |
| 591 source_, | 590 source_, |
| 592 service, | 591 service, |
| 593 login_token, | 592 login_token, |
| 594 login_captcha, | 593 login_captcha, |
| 595 allow_hosted_accounts); | 594 allow_hosted_accounts); |
| 596 fetcher_.reset(CreateGaiaFetcher(getter_, | 595 fetcher_ = |
| 597 request_body_, | 596 CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 598 std::string(), | 597 client_login_gurl_, kLoadFlagsIgnoreCookies, this); |
| 599 client_login_gurl_, | |
| 600 kLoadFlagsIgnoreCookies, | |
| 601 this)); | |
| 602 fetch_pending_ = true; | 598 fetch_pending_ = true; |
| 603 fetcher_->Start(); | 599 fetcher_->Start(); |
| 604 } | 600 } |
| 605 | 601 |
| 606 void GaiaAuthFetcher::StartIssueAuthToken(const std::string& sid, | 602 void GaiaAuthFetcher::StartIssueAuthToken(const std::string& sid, |
| 607 const std::string& lsid, | 603 const std::string& lsid, |
| 608 const char* const service) { | 604 const char* const service) { |
| 609 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 605 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 610 | 606 |
| 611 DVLOG(1) << "Starting IssueAuthToken for: " << service; | 607 DVLOG(1) << "Starting IssueAuthToken for: " << service; |
| 612 requested_service_ = service; | 608 requested_service_ = service; |
| 613 request_body_ = MakeIssueAuthTokenBody(sid, lsid, service); | 609 request_body_ = MakeIssueAuthTokenBody(sid, lsid, service); |
| 614 fetcher_.reset(CreateGaiaFetcher(getter_, | 610 fetcher_ = |
| 615 request_body_, | 611 CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 616 std::string(), | 612 issue_auth_token_gurl_, kLoadFlagsIgnoreCookies, this); |
| 617 issue_auth_token_gurl_, | |
| 618 kLoadFlagsIgnoreCookies, | |
| 619 this)); | |
| 620 fetch_pending_ = true; | 613 fetch_pending_ = true; |
| 621 fetcher_->Start(); | 614 fetcher_->Start(); |
| 622 } | 615 } |
| 623 | 616 |
| 624 void GaiaAuthFetcher::StartLsoForOAuthLoginTokenExchange( | 617 void GaiaAuthFetcher::StartLsoForOAuthLoginTokenExchange( |
| 625 const std::string& auth_token) { | 618 const std::string& auth_token) { |
| 626 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 619 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 627 | 620 |
| 628 DVLOG(1) << "Starting OAuth login token exchange with auth_token"; | 621 DVLOG(1) << "Starting OAuth login token exchange with auth_token"; |
| 629 request_body_ = MakeGetAuthCodeBody(false); | 622 request_body_ = MakeGetAuthCodeBody(false); |
| 630 client_login_to_oauth2_gurl_ = | 623 client_login_to_oauth2_gurl_ = |
| 631 GaiaUrls::GetInstance()->client_login_to_oauth2_url(); | 624 GaiaUrls::GetInstance()->client_login_to_oauth2_url(); |
| 632 | 625 |
| 633 fetcher_.reset(CreateGaiaFetcher(getter_, | 626 fetcher_ = CreateGaiaFetcher( |
| 634 request_body_, | 627 getter_, request_body_, MakeGetAuthCodeHeader(auth_token), |
| 635 MakeGetAuthCodeHeader(auth_token), | 628 client_login_to_oauth2_gurl_, kLoadFlagsIgnoreCookies, this); |
| 636 client_login_to_oauth2_gurl_, | |
| 637 kLoadFlagsIgnoreCookies, | |
| 638 this)); | |
| 639 fetch_pending_ = true; | 629 fetch_pending_ = true; |
| 640 fetcher_->Start(); | 630 fetcher_->Start(); |
| 641 } | 631 } |
| 642 | 632 |
| 643 void GaiaAuthFetcher::StartRevokeOAuth2Token(const std::string& auth_token) { | 633 void GaiaAuthFetcher::StartRevokeOAuth2Token(const std::string& auth_token) { |
| 644 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 634 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 645 | 635 |
| 646 DVLOG(1) << "Starting OAuth2 token revocation"; | 636 DVLOG(1) << "Starting OAuth2 token revocation"; |
| 647 request_body_ = MakeRevokeTokenBody(auth_token); | 637 request_body_ = MakeRevokeTokenBody(auth_token); |
| 648 fetcher_.reset(CreateGaiaFetcher(getter_, | 638 fetcher_ = |
| 649 request_body_, | 639 CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 650 std::string(), | 640 oauth2_revoke_gurl_, kLoadFlagsIgnoreCookies, this); |
| 651 oauth2_revoke_gurl_, | |
| 652 kLoadFlagsIgnoreCookies, | |
| 653 this)); | |
| 654 fetch_pending_ = true; | 641 fetch_pending_ = true; |
| 655 fetcher_->Start(); | 642 fetcher_->Start(); |
| 656 } | 643 } |
| 657 | 644 |
| 658 void GaiaAuthFetcher::StartCookieForOAuthLoginTokenExchange( | 645 void GaiaAuthFetcher::StartCookieForOAuthLoginTokenExchange( |
| 659 const std::string& session_index) { | 646 const std::string& session_index) { |
| 660 StartCookieForOAuthLoginTokenExchangeWithDeviceId(session_index, | 647 StartCookieForOAuthLoginTokenExchangeWithDeviceId(session_index, |
| 661 std::string()); | 648 std::string()); |
| 662 } | 649 } |
| 663 | 650 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 675 client_login_to_oauth2_gurl_ = | 662 client_login_to_oauth2_gurl_ = |
| 676 client_login_to_oauth2_gurl_.Resolve("?authuser=" + session_index); | 663 client_login_to_oauth2_gurl_.Resolve("?authuser=" + session_index); |
| 677 } | 664 } |
| 678 | 665 |
| 679 std::string device_id_header; | 666 std::string device_id_header; |
| 680 if (!device_id.empty()) { | 667 if (!device_id.empty()) { |
| 681 device_id_header = | 668 device_id_header = |
| 682 base::StringPrintf(kDeviceIdHeaderFormat, device_id.c_str()); | 669 base::StringPrintf(kDeviceIdHeaderFormat, device_id.c_str()); |
| 683 } | 670 } |
| 684 | 671 |
| 685 fetcher_.reset(CreateGaiaFetcher(getter_, | 672 fetcher_ = |
| 686 request_body_, | 673 CreateGaiaFetcher(getter_, request_body_, device_id_header, |
| 687 device_id_header, | 674 client_login_to_oauth2_gurl_, net::LOAD_NORMAL, this); |
| 688 client_login_to_oauth2_gurl_, | |
| 689 net::LOAD_NORMAL, | |
| 690 this)); | |
| 691 fetch_pending_ = true; | 675 fetch_pending_ = true; |
| 692 fetcher_->Start(); | 676 fetcher_->Start(); |
| 693 } | 677 } |
| 694 | 678 |
| 695 void GaiaAuthFetcher::StartAuthCodeForOAuth2TokenExchange( | 679 void GaiaAuthFetcher::StartAuthCodeForOAuth2TokenExchange( |
| 696 const std::string& auth_code) { | 680 const std::string& auth_code) { |
| 697 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 681 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 698 | 682 |
| 699 DVLOG(1) << "Starting OAuth token pair fetch"; | 683 DVLOG(1) << "Starting OAuth token pair fetch"; |
| 700 request_body_ = MakeGetTokenPairBody(auth_code); | 684 request_body_ = MakeGetTokenPairBody(auth_code); |
| 701 fetcher_.reset(CreateGaiaFetcher(getter_, | 685 fetcher_ = |
| 702 request_body_, | 686 CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 703 std::string(), | 687 oauth2_token_gurl_, kLoadFlagsIgnoreCookies, this); |
| 704 oauth2_token_gurl_, | |
| 705 kLoadFlagsIgnoreCookies, | |
| 706 this)); | |
| 707 fetch_pending_ = true; | 688 fetch_pending_ = true; |
| 708 fetcher_->Start(); | 689 fetcher_->Start(); |
| 709 } | 690 } |
| 710 | 691 |
| 711 void GaiaAuthFetcher::StartGetUserInfo(const std::string& lsid) { | 692 void GaiaAuthFetcher::StartGetUserInfo(const std::string& lsid) { |
| 712 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 693 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 713 | 694 |
| 714 DVLOG(1) << "Starting GetUserInfo for lsid=" << lsid; | 695 DVLOG(1) << "Starting GetUserInfo for lsid=" << lsid; |
| 715 request_body_ = MakeGetUserInfoBody(lsid); | 696 request_body_ = MakeGetUserInfoBody(lsid); |
| 716 fetcher_.reset(CreateGaiaFetcher(getter_, | 697 fetcher_ = |
| 717 request_body_, | 698 CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 718 std::string(), | 699 get_user_info_gurl_, kLoadFlagsIgnoreCookies, this); |
| 719 get_user_info_gurl_, | |
| 720 kLoadFlagsIgnoreCookies, | |
| 721 this)); | |
| 722 fetch_pending_ = true; | 700 fetch_pending_ = true; |
| 723 fetcher_->Start(); | 701 fetcher_->Start(); |
| 724 } | 702 } |
| 725 | 703 |
| 726 void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token, | 704 void GaiaAuthFetcher::StartMergeSession(const std::string& uber_token, |
| 727 const std::string& external_cc_result) { | 705 const std::string& external_cc_result) { |
| 728 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 706 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 729 | 707 |
| 730 DVLOG(1) << "Starting MergeSession with uber_token=" << uber_token; | 708 DVLOG(1) << "Starting MergeSession with uber_token=" << uber_token; |
| 731 | 709 |
| 732 // The continue URL is a required parameter of the MergeSession API, but in | 710 // The continue URL is a required parameter of the MergeSession API, but in |
| 733 // this case we don't actually need or want to navigate to it. Setting it to | 711 // this case we don't actually need or want to navigate to it. Setting it to |
| 734 // an arbitrary Google URL. | 712 // an arbitrary Google URL. |
| 735 // | 713 // |
| 736 // In order for the new session to be merged correctly, the server needs to | 714 // In order for the new session to be merged correctly, the server needs to |
| 737 // know what sessions already exist in the browser. The fetcher needs to be | 715 // know what sessions already exist in the browser. The fetcher needs to be |
| 738 // created such that it sends the cookies with the request, which is | 716 // created such that it sends the cookies with the request, which is |
| 739 // different from all other requests the fetcher can make. | 717 // different from all other requests the fetcher can make. |
| 740 std::string continue_url("http://www.google.com"); | 718 std::string continue_url("http://www.google.com"); |
| 741 request_body_ = MakeMergeSessionBody(uber_token, external_cc_result, | 719 request_body_ = MakeMergeSessionBody(uber_token, external_cc_result, |
| 742 continue_url, source_); | 720 continue_url, source_); |
| 743 fetcher_.reset(CreateGaiaFetcher(getter_, | 721 fetcher_ = CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 744 request_body_, | 722 merge_session_gurl_, net::LOAD_NORMAL, this); |
| 745 std::string(), | |
| 746 merge_session_gurl_, | |
| 747 net::LOAD_NORMAL, | |
| 748 this)); | |
| 749 fetch_pending_ = true; | 723 fetch_pending_ = true; |
| 750 fetcher_->Start(); | 724 fetcher_->Start(); |
| 751 } | 725 } |
| 752 | 726 |
| 753 void GaiaAuthFetcher::StartTokenFetchForUberAuthExchange( | 727 void GaiaAuthFetcher::StartTokenFetchForUberAuthExchange( |
| 754 const std::string& access_token) { | 728 const std::string& access_token) { |
| 755 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 729 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 756 | 730 |
| 757 DVLOG(1) << "Starting StartTokenFetchForUberAuthExchange with access_token=" | 731 DVLOG(1) << "Starting StartTokenFetchForUberAuthExchange with access_token=" |
| 758 << access_token; | 732 << access_token; |
| 759 std::string authentication_header = | 733 std::string authentication_header = |
| 760 base::StringPrintf(kOAuthHeaderFormat, access_token.c_str()); | 734 base::StringPrintf(kOAuthHeaderFormat, access_token.c_str()); |
| 761 fetcher_.reset(CreateGaiaFetcher(getter_, | 735 fetcher_ = CreateGaiaFetcher(getter_, std::string(), authentication_header, |
| 762 std::string(), | 736 uberauth_token_gurl_, net::LOAD_NORMAL, this); |
| 763 authentication_header, | |
| 764 uberauth_token_gurl_, | |
| 765 net::LOAD_NORMAL, | |
| 766 this)); | |
| 767 fetch_pending_ = true; | 737 fetch_pending_ = true; |
| 768 fetcher_->Start(); | 738 fetcher_->Start(); |
| 769 } | 739 } |
| 770 | 740 |
| 771 void GaiaAuthFetcher::StartOAuthLogin(const std::string& access_token, | 741 void GaiaAuthFetcher::StartOAuthLogin(const std::string& access_token, |
| 772 const std::string& service) { | 742 const std::string& service) { |
| 773 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 743 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 774 | 744 |
| 775 request_body_ = MakeOAuthLoginBody(service, source_); | 745 request_body_ = MakeOAuthLoginBody(service, source_); |
| 776 std::string authentication_header = | 746 std::string authentication_header = |
| 777 base::StringPrintf(kOAuth2BearerHeaderFormat, access_token.c_str()); | 747 base::StringPrintf(kOAuth2BearerHeaderFormat, access_token.c_str()); |
| 778 fetcher_.reset(CreateGaiaFetcher(getter_, | 748 fetcher_ = CreateGaiaFetcher(getter_, request_body_, authentication_header, |
| 779 request_body_, | 749 oauth_login_gurl_, net::LOAD_NORMAL, this); |
| 780 authentication_header, | |
| 781 oauth_login_gurl_, | |
| 782 net::LOAD_NORMAL, | |
| 783 this)); | |
| 784 fetch_pending_ = true; | 750 fetch_pending_ = true; |
| 785 fetcher_->Start(); | 751 fetcher_->Start(); |
| 786 } | 752 } |
| 787 | 753 |
| 788 void GaiaAuthFetcher::StartListAccounts() { | 754 void GaiaAuthFetcher::StartListAccounts() { |
| 789 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 755 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 790 | 756 |
| 791 fetcher_.reset(CreateGaiaFetcher(getter_, | 757 fetcher_ = CreateGaiaFetcher(getter_, |
| 792 " ", // To force an HTTP POST. | 758 " ", // To force an HTTP POST. |
| 793 "Origin: https://www.google.com", | 759 "Origin: https://www.google.com", |
| 794 list_accounts_gurl_, | 760 list_accounts_gurl_, net::LOAD_NORMAL, this); |
| 795 net::LOAD_NORMAL, | |
| 796 this)); | |
| 797 fetch_pending_ = true; | 761 fetch_pending_ = true; |
| 798 fetcher_->Start(); | 762 fetcher_->Start(); |
| 799 } | 763 } |
| 800 | 764 |
| 801 void GaiaAuthFetcher::StartGetCheckConnectionInfo() { | 765 void GaiaAuthFetcher::StartGetCheckConnectionInfo() { |
| 802 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 766 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 803 | 767 |
| 804 fetcher_.reset(CreateGaiaFetcher(getter_, | 768 fetcher_ = CreateGaiaFetcher(getter_, std::string(), std::string(), |
| 805 std::string(), | 769 get_check_connection_info_url_, |
| 806 std::string(), | 770 kLoadFlagsIgnoreCookies, this); |
| 807 get_check_connection_info_url_, | |
| 808 kLoadFlagsIgnoreCookies, | |
| 809 this)); | |
| 810 fetch_pending_ = true; | 771 fetch_pending_ = true; |
| 811 fetcher_->Start(); | 772 fetcher_->Start(); |
| 812 } | 773 } |
| 813 | 774 |
| 814 void GaiaAuthFetcher::StartListIDPSessions(const std::string& scopes, | 775 void GaiaAuthFetcher::StartListIDPSessions(const std::string& scopes, |
| 815 const std::string& domain) { | 776 const std::string& domain) { |
| 816 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 777 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 817 | 778 |
| 818 request_body_ = MakeListIDPSessionsBody(scopes, domain); | 779 request_body_ = MakeListIDPSessionsBody(scopes, domain); |
| 819 fetcher_.reset(CreateGaiaFetcher(getter_, | 780 fetcher_ = CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 820 request_body_, | 781 oauth2_iframe_url_, net::LOAD_NORMAL, this); |
| 821 std::string(), | |
| 822 oauth2_iframe_url_, | |
| 823 net::LOAD_NORMAL, | |
| 824 this)); | |
| 825 requested_service_ = kListIdpServiceRequested; | 782 requested_service_ = kListIdpServiceRequested; |
| 826 fetch_pending_ = true; | 783 fetch_pending_ = true; |
| 827 fetcher_->Start(); | 784 fetcher_->Start(); |
| 828 } | 785 } |
| 829 | 786 |
| 830 void GaiaAuthFetcher::StartGetTokenResponse(const std::string& scopes, | 787 void GaiaAuthFetcher::StartGetTokenResponse(const std::string& scopes, |
| 831 const std::string& domain, | 788 const std::string& domain, |
| 832 const std::string& login_hint) { | 789 const std::string& login_hint) { |
| 833 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; | 790 DCHECK(!fetch_pending_) << "Tried to fetch two things at once!"; |
| 834 | 791 |
| 835 request_body_ = MakeGetTokenResponseBody(scopes, domain, login_hint); | 792 request_body_ = MakeGetTokenResponseBody(scopes, domain, login_hint); |
| 836 fetcher_.reset(CreateGaiaFetcher(getter_, | 793 fetcher_ = CreateGaiaFetcher(getter_, request_body_, std::string(), |
| 837 request_body_, | 794 oauth2_iframe_url_, net::LOAD_NORMAL, this); |
| 838 std::string(), | |
| 839 oauth2_iframe_url_, | |
| 840 net::LOAD_NORMAL, | |
| 841 this)); | |
| 842 | 795 |
| 843 requested_service_ = kGetTokenResponseRequested; | 796 requested_service_ = kGetTokenResponseRequested; |
| 844 fetch_pending_ = true; | 797 fetch_pending_ = true; |
| 845 fetcher_->Start(); | 798 fetcher_->Start(); |
| 846 } | 799 } |
| 847 | 800 |
| 848 // static | 801 // static |
| 849 GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError( | 802 GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError( |
| 850 const std::string& data, | 803 const std::string& data, |
| 851 const net::URLRequestStatus& status) { | 804 const net::URLRequestStatus& status) { |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 return alleged_error.find(kSecondFactor) != | 1106 return alleged_error.find(kSecondFactor) != |
| 1154 std::string::npos; | 1107 std::string::npos; |
| 1155 } | 1108 } |
| 1156 | 1109 |
| 1157 // static | 1110 // static |
| 1158 bool GaiaAuthFetcher::IsWebLoginRequiredSuccess( | 1111 bool GaiaAuthFetcher::IsWebLoginRequiredSuccess( |
| 1159 const std::string& alleged_error) { | 1112 const std::string& alleged_error) { |
| 1160 return alleged_error.find(kWebLoginRequired) != | 1113 return alleged_error.find(kWebLoginRequired) != |
| 1161 std::string::npos; | 1114 std::string::npos; |
| 1162 } | 1115 } |
| OLD | NEW |