Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(353)

Side by Side Diff: chrome/browser/profiles/profile_downloader.h

Issue 1091363002: Change ProfileDownloader to use AccountTrackerService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review feedback. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_ 5 #ifndef CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_
6 #define CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_ 6 #define CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/gtest_prod_util.h" 11 #include "base/gtest_prod_util.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/strings/string16.h" 13 #include "base/strings/string16.h"
14 #include "chrome/browser/image_decoder.h" 14 #include "chrome/browser/image_decoder.h"
15 #include "google_apis/gaia/gaia_oauth_client.h" 15 #include "components/signin/core/browser/account_tracker_service.h"
16 #include "google_apis/gaia/oauth2_token_service.h" 16 #include "google_apis/gaia/oauth2_token_service.h"
17 #include "net/url_request/url_fetcher_delegate.h" 17 #include "net/url_request/url_fetcher_delegate.h"
18 #include "third_party/skia/include/core/SkBitmap.h" 18 #include "third_party/skia/include/core/SkBitmap.h"
19 #include "url/gurl.h" 19 #include "url/gurl.h"
20 20
21 class ProfileDownloaderDelegate; 21 class ProfileDownloaderDelegate;
22 class OAuth2AccessTokenFetcher; 22 class OAuth2AccessTokenFetcher;
23 23
24 namespace net { 24 namespace net {
25 class URLFetcher; 25 class URLFetcher;
26 } // namespace net 26 } // namespace net
27 27
28 // Downloads user profile information. The profile picture is decoded in a 28 // Downloads user profile information. The profile picture is decoded in a
29 // sandboxed process. 29 // sandboxed process.
30 class ProfileDownloader : public gaia::GaiaOAuthClient::Delegate, 30 class ProfileDownloader : public net::URLFetcherDelegate,
31 public net::URLFetcherDelegate,
32 public ImageDecoder::ImageRequest, 31 public ImageDecoder::ImageRequest,
33 public OAuth2TokenService::Observer, 32 public OAuth2TokenService::Observer,
34 public OAuth2TokenService::Consumer { 33 public OAuth2TokenService::Consumer,
34 public AccountTrackerService::Observer {
35 public: 35 public:
36 enum PictureStatus { 36 enum PictureStatus {
37 PICTURE_SUCCESS, 37 PICTURE_SUCCESS,
38 PICTURE_FAILED, 38 PICTURE_FAILED,
39 PICTURE_DEFAULT, 39 PICTURE_DEFAULT,
40 PICTURE_CACHED, 40 PICTURE_CACHED,
41 }; 41 };
42 42
43 explicit ProfileDownloader(ProfileDownloaderDelegate* delegate); 43 explicit ProfileDownloader(ProfileDownloaderDelegate* delegate);
44 ~ProfileDownloader() override; 44 ~ProfileDownloader() override;
(...skipping 30 matching lines...) Expand all
75 // Gets the profile picture status. 75 // Gets the profile picture status.
76 virtual PictureStatus GetProfilePictureStatus() const; 76 virtual PictureStatus GetProfilePictureStatus() const;
77 77
78 // Gets the URL for the profile picture. This can be cached so that the same 78 // Gets the URL for the profile picture. This can be cached so that the same
79 // picture is not downloaded multiple times. This value should only be used 79 // picture is not downloaded multiple times. This value should only be used
80 // when the picture status is PICTURE_SUCCESS. 80 // when the picture status is PICTURE_SUCCESS.
81 virtual std::string GetProfilePictureURL() const; 81 virtual std::string GetProfilePictureURL() const;
82 82
83 private: 83 private:
84 friend class ProfileDownloaderTest; 84 friend class ProfileDownloaderTest;
85 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, ParseData); 85 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, AccountInfoReady);
86 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, AccountInfoNotReady);
86 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, DefaultURL); 87 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, DefaultURL);
87 88
88 // gaia::GaiaOAuthClient::Delegate implementation. 89 void FetchImageData();
89 void OnGetUserInfoResponse(
90 scoped_ptr<base::DictionaryValue> user_info) override;
91 void OnOAuthError() override;
92 void OnNetworkError(int response_code) override;
93 90
94 // Overriden from net::URLFetcherDelegate: 91 // Overriden from net::URLFetcherDelegate:
95 void OnURLFetchComplete(const net::URLFetcher* source) override; 92 void OnURLFetchComplete(const net::URLFetcher* source) override;
96 93
97 // Overriden from ImageDecoder::ImageRequest: 94 // Overriden from ImageDecoder::ImageRequest:
98 void OnImageDecoded(const SkBitmap& decoded_image) override; 95 void OnImageDecoded(const SkBitmap& decoded_image) override;
99 void OnDecodeImageFailed() override; 96 void OnDecodeImageFailed() override;
100 97
101 // Overriden from OAuth2TokenService::Observer: 98 // Overriden from OAuth2TokenService::Observer:
102 void OnRefreshTokenAvailable(const std::string& account_id) override; 99 void OnRefreshTokenAvailable(const std::string& account_id) override;
103 100
104 // Overriden from OAuth2TokenService::Consumer: 101 // Overriden from OAuth2TokenService::Consumer:
105 void OnGetTokenSuccess(const OAuth2TokenService::Request* request, 102 void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
106 const std::string& access_token, 103 const std::string& access_token,
107 const base::Time& expiration_time) override; 104 const base::Time& expiration_time) override;
108 void OnGetTokenFailure(const OAuth2TokenService::Request* request, 105 void OnGetTokenFailure(const OAuth2TokenService::Request* request,
109 const GoogleServiceAuthError& error) override; 106 const GoogleServiceAuthError& error) override;
110 107
111 // Parses the entry response and gets the name, profile image URL and locale. 108
112 // |data| should be the JSON formatted data return by the response. 109 // Implementation of AccountTrackerService::Observer.
113 // Returns false to indicate a parsing error. 110 void OnAccountUpdated(
114 static bool ParseProfileJSON(base::DictionaryValue* root_dictionary, 111 const AccountTrackerService::AccountInfo& info) override;
115 base::string16* full_name, 112
116 base::string16* given_name,
117 std::string* url,
118 int image_size,
119 std::string* profile_locale,
120 base::string16* hosted_domain);
121 // Returns true if the image url is url of the default profile picture. 113 // Returns true if the image url is url of the default profile picture.
122 static bool IsDefaultProfileImageURL(const std::string& url); 114 static bool IsDefaultProfileImageURL(const std::string& url);
123 115
124 // Issues the first request to get user profile image. 116 // Issues the first request to get user profile image.
125 void StartFetchingImage(); 117 void StartFetchingImage();
126 118
127 // Gets the authorization header. 119 // Gets the authorization header.
128 const char* GetAuthorizationHeader() const; 120 const char* GetAuthorizationHeader() const;
129 121
130 // Starts fetching OAuth2 access token. This is needed before the GAIA info 122 // Starts fetching OAuth2 access token. This is needed before the GAIA info
131 // can be downloaded. 123 // can be downloaded.
132 void StartFetchingOAuth2AccessToken(); 124 void StartFetchingOAuth2AccessToken();
133 125
126 class TestURLFetcherProvider {
127 public:
128 virtual net::URLFetcher* test_url_fetcher() = 0;
129 };
130 void SetTestURLFetcherProvider(TestURLFetcherProvider* provider);
131
134 ProfileDownloaderDelegate* delegate_; 132 ProfileDownloaderDelegate* delegate_;
135 std::string account_id_; 133 std::string account_id_;
136 std::string auth_token_; 134 std::string auth_token_;
137 scoped_ptr<gaia::GaiaOAuthClient> gaia_client_;
138 scoped_ptr<net::URLFetcher> profile_image_fetcher_; 135 scoped_ptr<net::URLFetcher> profile_image_fetcher_;
139 scoped_ptr<OAuth2TokenService::Request> oauth2_access_token_request_; 136 scoped_ptr<OAuth2TokenService::Request> oauth2_access_token_request_;
140 base::string16 profile_hosted_domain_; 137 AccountTrackerService::AccountInfo account_info_;
141 base::string16 profile_full_name_;
142 base::string16 profile_given_name_;
143 std::string profile_locale_;
144 SkBitmap profile_picture_; 138 SkBitmap profile_picture_;
145 PictureStatus picture_status_; 139 PictureStatus picture_status_;
146 std::string picture_url_; 140 AccountTrackerService* account_tracker_service_;
141 bool waiting_for_account_info_;
142
143 TestURLFetcherProvider* test_url_fetcher_provider_;
Mike Lerman 2015/04/30 19:09:07 The TestURLFetcherProvider shouldn't be here. The
anthonyvd 2015/05/01 19:16:34 I *think* I'm doing it correctly now :)
Mike Lerman 2015/05/04 17:17:41 I think so, too!
147 144
148 DISALLOW_COPY_AND_ASSIGN(ProfileDownloader); 145 DISALLOW_COPY_AND_ASSIGN(ProfileDownloader);
149 }; 146 };
150 147
151 #endif // CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_ 148 #endif // CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/profiles/profile_downloader.cc » ('j') | chrome/browser/profiles/profile_downloader.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698