OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_TRACKER_H_ | 5 #ifndef COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_TRACKER_H_ |
6 #define COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_TRACKER_H_ | 6 #define COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_TRACKER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 }; | 65 }; |
66 | 66 |
67 // Parses the response from the server and returns it as an EncodedLogo. Returns | 67 // Parses the response from the server and returns it as an EncodedLogo. Returns |
68 // NULL if the response is invalid. | 68 // NULL if the response is invalid. |
69 typedef base::Callback< | 69 typedef base::Callback< |
70 scoped_ptr<EncodedLogo>(const scoped_ptr<std::string>& response, | 70 scoped_ptr<EncodedLogo>(const scoped_ptr<std::string>& response, |
71 base::Time response_time)> ParseLogoResponse; | 71 base::Time response_time)> ParseLogoResponse; |
72 | 72 |
73 // Encodes the fingerprint of the cached logo in the logo URL. This enables the | 73 // Encodes the fingerprint of the cached logo in the logo URL. This enables the |
74 // server to verify whether the cached logo is up-to-date. | 74 // server to verify whether the cached logo is up-to-date. |
75 typedef base::Callback< | 75 typedef base::Callback<GURL(const GURL& logo_url, |
76 GURL(const GURL& logo_url, const std::string& fingerprint)> | 76 const std::string& fingerprint, |
77 AppendFingerprintToLogoURL; | 77 bool wants_cta)> AppendQueryparamsToLogoURL; |
78 | 78 |
79 // This class provides the logo for a search provider. Logos are downloaded from | 79 // This class provides the logo for a search provider. Logos are downloaded from |
80 // the search provider's logo URL and cached on disk. | 80 // the search provider's logo URL and cached on disk. |
81 // | 81 // |
82 // Call SetServerAPI() at least once to specify how to get the logo from the | 82 // Call SetServerAPI() at least once to specify how to get the logo from the |
83 // server. Then call GetLogo() to trigger retrieval of the logo and receive | 83 // server. Then call GetLogo() to trigger retrieval of the logo and receive |
84 // updates once the cached and/or fresh logos are available. | 84 // updates once the cached and/or fresh logos are available. |
85 class LogoTracker : public net::URLFetcherDelegate { | 85 class LogoTracker : public net::URLFetcherDelegate { |
86 public: | 86 public: |
87 // Constructs a LogoTracker with the given LogoDelegate. Takes ownership of | 87 // Constructs a LogoTracker with the given LogoDelegate. Takes ownership of |
(...skipping 20 matching lines...) Expand all Loading... |
108 ~LogoTracker() override; | 108 ~LogoTracker() override; |
109 | 109 |
110 // Defines the server API for downloading and parsing the logo. This must be | 110 // Defines the server API for downloading and parsing the logo. This must be |
111 // called at least once before calling GetLogo(). | 111 // called at least once before calling GetLogo(). |
112 // | 112 // |
113 // |logo_url| is the URL from which the logo will be downloaded. If |logo_url| | 113 // |logo_url| is the URL from which the logo will be downloaded. If |logo_url| |
114 // is different than the current logo URL, any pending LogoObservers will be | 114 // is different than the current logo URL, any pending LogoObservers will be |
115 // canceled. | 115 // canceled. |
116 // | 116 // |
117 // |parse_logo_response_func| is a callback that will be used to parse the | 117 // |parse_logo_response_func| is a callback that will be used to parse the |
118 // server's response into a EncodedLogo object. |append_fingerprint_func| is a | 118 // server's response into a EncodedLogo object. |append_queryparams_func| is a |
119 // callback that will return the URL from which to download the logo if a | 119 // callback that will return the URL from which to download the logo. |
120 // cached logo with a fingerprint is already available. Note: | 120 // |wants_cta| determines if the url should return a call to action image. |
121 // |parse_logo_response_func| and |append_fingerprint_func| must be suitable | 121 // Note: |parse_logo_response_func| and |append_queryparams_func| must be |
122 // for running multiple times, concurrently, and on multiple threads. | 122 // suitable for running multiple times, concurrently, and on multiple threads. |
123 void SetServerAPI(const GURL& logo_url, | 123 void SetServerAPI(const GURL& logo_url, |
124 const ParseLogoResponse& parse_logo_response_func, | 124 const ParseLogoResponse& parse_logo_response_func, |
125 const AppendFingerprintToLogoURL& append_fingerprint_func); | 125 const AppendQueryparamsToLogoURL& append_queryparams_func, |
| 126 bool wants_cta); |
126 | 127 |
127 // Retrieves the current search provider's logo from the local cache and/or | 128 // Retrieves the current search provider's logo from the local cache and/or |
128 // over the network, and registers |observer| to be called when the cached | 129 // over the network, and registers |observer| to be called when the cached |
129 // and/or fresh logos are available. | 130 // and/or fresh logos are available. |
130 void GetLogo(LogoObserver* observer); | 131 void GetLogo(LogoObserver* observer); |
131 | 132 |
132 // Prevents |observer| from receiving future updates. This is safe to call | 133 // Prevents |observer| from receiving future updates. This is safe to call |
133 // even when the observer is being notified of an update. | 134 // even when the observer is being notified of an update. |
134 void RemoveObserver(LogoObserver* observer); | 135 void RemoveObserver(LogoObserver* observer); |
135 | 136 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 void OnURLFetchDownloadProgress(const net::URLFetcher* source, | 177 void OnURLFetchDownloadProgress(const net::URLFetcher* source, |
177 int64 current, | 178 int64 current, |
178 int64 total) override; | 179 int64 total) override; |
179 | 180 |
180 // The URL from which the logo is fetched. | 181 // The URL from which the logo is fetched. |
181 GURL logo_url_; | 182 GURL logo_url_; |
182 | 183 |
183 // The function used to parse the logo response from the server. | 184 // The function used to parse the logo response from the server. |
184 ParseLogoResponse parse_logo_response_func_; | 185 ParseLogoResponse parse_logo_response_func_; |
185 | 186 |
186 // The function used to include the cached logo's fingerprint in the logo URL. | 187 // The function used to include the cached logo's fingerprint and call to |
187 AppendFingerprintToLogoURL append_fingerprint_func_; | 188 // action request in the logo URL. |
| 189 AppendQueryparamsToLogoURL append_queryparams_func_; |
| 190 |
| 191 // If |true| request call to action in server API. |
| 192 bool wants_cta_; |
188 | 193 |
189 // False if an asynchronous task is currently running. | 194 // False if an asynchronous task is currently running. |
190 bool is_idle_; | 195 bool is_idle_; |
191 | 196 |
192 // The logo that's been read from the cache, or NULL if the cache is empty. | 197 // The logo that's been read from the cache, or NULL if the cache is empty. |
193 // Meaningful only if is_cached_logo_valid_ is true; NULL otherwise. | 198 // Meaningful only if is_cached_logo_valid_ is true; NULL otherwise. |
194 scoped_ptr<Logo> cached_logo_; | 199 scoped_ptr<Logo> cached_logo_; |
195 | 200 |
196 // Whether the value of |cached_logo_| reflects the actual cached logo. | 201 // Whether the value of |cached_logo_| reflects the actual cached logo. |
197 // This will be false if the logo hasn't been read from the cache yet. | 202 // This will be false if the logo hasn't been read from the cache yet. |
(...skipping 26 matching lines...) Expand all Loading... |
224 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; | 229 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; |
225 | 230 |
226 base::WeakPtrFactory<LogoTracker> weak_ptr_factory_; | 231 base::WeakPtrFactory<LogoTracker> weak_ptr_factory_; |
227 | 232 |
228 DISALLOW_COPY_AND_ASSIGN(LogoTracker); | 233 DISALLOW_COPY_AND_ASSIGN(LogoTracker); |
229 }; | 234 }; |
230 | 235 |
231 } // namespace search_provider_logos | 236 } // namespace search_provider_logos |
232 | 237 |
233 #endif // COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_TRACKER_H_ | 238 #endif // COMPONENTS_SEARCH_PROVIDER_LOGOS_LOGO_TRACKER_H_ |
OLD | NEW |