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

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: Created 5 years, 8 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 "components/signin/core/browser/account_tracker_service.h"
15 #include "google_apis/gaia/gaia_oauth_client.h" 16 #include "google_apis/gaia/gaia_oauth_client.h"
Mike Lerman 2015/04/20 13:25:23 Probably don't need this include anymore.
anthonyvd 2015/04/29 15:15:08 Done.
16 #include "google_apis/gaia/oauth2_token_service.h" 17 #include "google_apis/gaia/oauth2_token_service.h"
17 #include "net/url_request/url_fetcher_delegate.h" 18 #include "net/url_request/url_fetcher_delegate.h"
18 #include "third_party/skia/include/core/SkBitmap.h" 19 #include "third_party/skia/include/core/SkBitmap.h"
19 #include "url/gurl.h" 20 #include "url/gurl.h"
20 21
21 class ProfileDownloaderDelegate; 22 class ProfileDownloaderDelegate;
22 class OAuth2AccessTokenFetcher; 23 class OAuth2AccessTokenFetcher;
23 24
24 namespace net { 25 namespace net {
25 class URLFetcher; 26 class URLFetcher;
26 } // namespace net 27 } // namespace net
27 28
28 // Downloads user profile information. The profile picture is decoded in a 29 // Downloads user profile information. The profile picture is decoded in a
29 // sandboxed process. 30 // sandboxed process.
30 class ProfileDownloader : public gaia::GaiaOAuthClient::Delegate, 31 class ProfileDownloader : public net::URLFetcherDelegate,
31 public net::URLFetcherDelegate,
32 public ImageDecoder::ImageRequest, 32 public ImageDecoder::ImageRequest,
33 public OAuth2TokenService::Observer, 33 public OAuth2TokenService::Observer,
34 public OAuth2TokenService::Consumer { 34 public OAuth2TokenService::Consumer,
35 public AccountTrackerService::Observer {
35 public: 36 public:
36 enum PictureStatus { 37 enum PictureStatus {
37 PICTURE_SUCCESS, 38 PICTURE_SUCCESS,
38 PICTURE_FAILED, 39 PICTURE_FAILED,
39 PICTURE_DEFAULT, 40 PICTURE_DEFAULT,
40 PICTURE_CACHED, 41 PICTURE_CACHED,
41 }; 42 };
42 43
43 explicit ProfileDownloader(ProfileDownloaderDelegate* delegate); 44 explicit ProfileDownloader(ProfileDownloaderDelegate* delegate);
44 ~ProfileDownloader() override; 45 ~ProfileDownloader() override;
45 46
46 // Starts downloading profile information if the necessary authorization token 47 // Starts downloading profile information if the necessary authorization token
47 // is ready. If not, subscribes to token service and starts fetching if the 48 // is ready. If not, subscribes to token service and starts fetching if the
48 // token is available. Should not be called more than once. 49 // token is available. Should not be called more than once.
49 virtual void Start(); 50 virtual void Start();
50 51
51 // Starts downloading profile information if the necessary authorization token 52 // Starts downloading profile information if the necessary authorization token
52 // is ready. If not, subscribes to token service and starts fetching if the 53 // is ready. If not, subscribes to token service and starts fetching if the
53 // token is available. Should not be called more than once. 54 // token is available. Should not be called more than once.
54 virtual void StartForAccount(const std::string& account_id); 55 virtual void StartForAccount(
56 const std::string& account_id,
57 AccountTrackerService* account_tracker_service = nullptr);
Mike Lerman 2015/04/20 13:25:23 Pretty sure Chromium style guide doesn't permit de
anthonyvd 2015/04/29 15:15:08 You're right, it's a remain of my trying a few thi
55 58
56 // On successful download this returns the hosted domain of the user. 59 // On successful download this returns the hosted domain of the user.
57 virtual base::string16 GetProfileHostedDomain() const; 60 virtual base::string16 GetProfileHostedDomain() const;
58 61
59 // On successful download this returns the full name of the user. For example 62 // On successful download this returns the full name of the user. For example
60 // "Pat Smith". 63 // "Pat Smith".
61 virtual base::string16 GetProfileFullName() const; 64 virtual base::string16 GetProfileFullName() const;
62 65
63 // On successful download this returns the given name of the user. For example 66 // On successful download this returns the given name of the user. For example
64 // if the name is "Pat Smith", the given name is "Pat". 67 // if the name is "Pat Smith", the given name is "Pat".
65 virtual base::string16 GetProfileGivenName() const; 68 virtual base::string16 GetProfileGivenName() const;
66 69
67 // On successful download this returns G+ locale preference of the user. 70 // On successful download this returns G+ locale preference of the user.
68 virtual std::string GetProfileLocale() const; 71 virtual std::string GetProfileLocale() const;
69 72
70 // On successful download this returns the profile picture of the user. 73 // On successful download this returns the profile picture of the user.
71 // For users with no profile picture set (that is, they have the default 74 // For users with no profile picture set (that is, they have the default
72 // profile picture) this will return an Null bitmap. 75 // profile picture) this will return an Null bitmap.
73 virtual SkBitmap GetProfilePicture() const; 76 virtual SkBitmap GetProfilePicture() const;
74 77
75 // Gets the profile picture status. 78 // Gets the profile picture status.
76 virtual PictureStatus GetProfilePictureStatus() const; 79 virtual PictureStatus GetProfilePictureStatus() const;
77 80
78 // Gets the URL for the profile picture. This can be cached so that the same 81 // 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 82 // picture is not downloaded multiple times. This value should only be used
80 // when the picture status is PICTURE_SUCCESS. 83 // when the picture status is PICTURE_SUCCESS.
81 virtual std::string GetProfilePictureURL() const; 84 virtual std::string GetProfilePictureURL() const;
82 85
86 void StartFetchingImageForTesting(net::URLFetcher* image_fetcher);
87
83 private: 88 private:
84 friend class ProfileDownloaderTest; 89 friend class ProfileDownloaderTest;
85 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, ParseData); 90 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, ParseData);
86 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, DefaultURL); 91 FRIEND_TEST_ALL_PREFIXES(ProfileDownloaderTest, DefaultURL);
87 92
88 // gaia::GaiaOAuthClient::Delegate implementation. 93 void FetchImageData(std::string image_url);
89 void OnGetUserInfoResponse(
90 scoped_ptr<base::DictionaryValue> user_info) override;
91 void OnOAuthError() override;
92 void OnNetworkError(int response_code) override;
93 94
94 // Overriden from net::URLFetcherDelegate: 95 // Overriden from net::URLFetcherDelegate:
95 void OnURLFetchComplete(const net::URLFetcher* source) override; 96 void OnURLFetchComplete(const net::URLFetcher* source) override;
96 97
97 // Overriden from ImageDecoder::ImageRequest: 98 // Overriden from ImageDecoder::ImageRequest:
98 void OnImageDecoded(const SkBitmap& decoded_image) override; 99 void OnImageDecoded(const SkBitmap& decoded_image) override;
99 void OnDecodeImageFailed() override; 100 void OnDecodeImageFailed() override;
100 101
101 // Overriden from OAuth2TokenService::Observer: 102 // Overriden from OAuth2TokenService::Observer:
102 void OnRefreshTokenAvailable(const std::string& account_id) override; 103 void OnRefreshTokenAvailable(const std::string& account_id) override;
103 104
104 // Overriden from OAuth2TokenService::Consumer: 105 // Overriden from OAuth2TokenService::Consumer:
105 void OnGetTokenSuccess(const OAuth2TokenService::Request* request, 106 void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
106 const std::string& access_token, 107 const std::string& access_token,
107 const base::Time& expiration_time) override; 108 const base::Time& expiration_time) override;
108 void OnGetTokenFailure(const OAuth2TokenService::Request* request, 109 void OnGetTokenFailure(const OAuth2TokenService::Request* request,
109 const GoogleServiceAuthError& error) override; 110 const GoogleServiceAuthError& error) override;
110 111
111 // Parses the entry response and gets the name, profile image URL and locale. 112
112 // |data| should be the JSON formatted data return by the response. 113 // Implementation of AccountTrackerService::Observer.
113 // Returns false to indicate a parsing error. 114 void OnAccountUpdated(
114 static bool ParseProfileJSON(base::DictionaryValue* root_dictionary, 115 const AccountTrackerService::AccountInfo& info) override;
115 base::string16* full_name, 116 void OnAccountUpdateFailed(const std::string& account_id) override;
116 base::string16* given_name, 117
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. 118 // Returns true if the image url is url of the default profile picture.
122 static bool IsDefaultProfileImageURL(const std::string& url); 119 static bool IsDefaultProfileImageURL(const std::string& url);
123 120
124 // Issues the first request to get user profile image. 121 // Issues the first request to get user profile image.
125 void StartFetchingImage(); 122 void StartFetchingImage();
126 123
127 // Gets the authorization header. 124 // Gets the authorization header.
128 const char* GetAuthorizationHeader() const; 125 const char* GetAuthorizationHeader() const;
129 126
130 // Starts fetching OAuth2 access token. This is needed before the GAIA info 127 // Starts fetching OAuth2 access token. This is needed before the GAIA info
131 // can be downloaded. 128 // can be downloaded.
132 void StartFetchingOAuth2AccessToken(); 129 void StartFetchingOAuth2AccessToken();
133 130
134 ProfileDownloaderDelegate* delegate_; 131 ProfileDownloaderDelegate* delegate_;
135 std::string account_id_; 132 std::string account_id_;
136 std::string auth_token_; 133 std::string auth_token_;
137 scoped_ptr<gaia::GaiaOAuthClient> gaia_client_;
138 scoped_ptr<net::URLFetcher> profile_image_fetcher_; 134 scoped_ptr<net::URLFetcher> profile_image_fetcher_;
139 scoped_ptr<OAuth2TokenService::Request> oauth2_access_token_request_; 135 scoped_ptr<OAuth2TokenService::Request> oauth2_access_token_request_;
140 base::string16 profile_hosted_domain_; 136 AccountTrackerService::AccountInfo account_info_;
Mike Lerman 2015/04/20 13:25:23 A profile has multiple AccountInfo objects associa
Roger Tawa OOO till Jul 10th 2015/04/21 14:00:34 Actually, StartForAccount() can be called with an
anthonyvd 2015/04/29 15:15:08 Acknowledged.
141 base::string16 profile_full_name_;
142 base::string16 profile_given_name_;
143 std::string profile_locale_;
144 SkBitmap profile_picture_; 137 SkBitmap profile_picture_;
145 PictureStatus picture_status_; 138 PictureStatus picture_status_;
146 std::string picture_url_; 139 AccountTrackerService* account_tracker_service_;
147 140
148 DISALLOW_COPY_AND_ASSIGN(ProfileDownloader); 141 DISALLOW_COPY_AND_ASSIGN(ProfileDownloader);
149 }; 142 };
150 143
151 #endif // CHROME_BROWSER_PROFILES_PROFILE_DOWNLOADER_H_ 144 #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