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

Side by Side Diff: components/precache/core/precache_fetcher.h

Issue 2335913002: Add daily quota for precache (Closed)
Patch Set: rebased Created 4 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_PRECACHE_CORE_PRECACHE_FETCHER_H_ 5 #ifndef COMPONENTS_PRECACHE_CORE_PRECACHE_FETCHER_H_
6 #define COMPONENTS_PRECACHE_CORE_PRECACHE_FETCHER_H_ 6 #define COMPONENTS_PRECACHE_CORE_PRECACHE_FETCHER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <deque> 10 #include <deque>
11 #include <memory> 11 #include <memory>
12 #include <string> 12 #include <string>
13 #include <vector> 13 #include <vector>
14 14
15 #include "base/callback.h" 15 #include "base/callback.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ref_counted.h" 17 #include "base/memory/ref_counted.h"
18 #include "base/memory/weak_ptr.h" 18 #include "base/memory/weak_ptr.h"
19 #include "base/single_thread_task_runner.h" 19 #include "base/single_thread_task_runner.h"
20 #include "base/time/time.h" 20 #include "base/time/time.h"
21 #include "components/precache/core/fetcher_pool.h" 21 #include "components/precache/core/fetcher_pool.h"
22 #include "components/precache/core/proto/quota.pb.h"
22 #include "net/url_request/url_fetcher.h" 23 #include "net/url_request/url_fetcher.h"
23 #include "net/url_request/url_fetcher_delegate.h" 24 #include "net/url_request/url_fetcher_delegate.h"
24 #include "url/gurl.h" 25 #include "url/gurl.h"
25 26
26 namespace base { 27 namespace base {
27 class SingleThreadTaskRunner; 28 class SingleThreadTaskRunner;
28 } 29 }
29 30
30 namespace net { 31 namespace net {
31 class URLRequestContextGetter; 32 class URLRequestContextGetter;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 148
148 // Stops all precaching work. The PreacheFetcher should not be used after 149 // Stops all precaching work. The PreacheFetcher should not be used after
149 // calling this method. 150 // calling this method.
150 std::unique_ptr<PrecacheUnfinishedWork> CancelPrecaching(); 151 std::unique_ptr<PrecacheUnfinishedWork> CancelPrecaching();
151 152
152 private: 153 private:
153 friend class PrecacheFetcherTest; 154 friend class PrecacheFetcherTest;
154 FRIEND_TEST_ALL_PREFIXES(PrecacheFetcherTest, FetcherPoolMaxLimitReached); 155 FRIEND_TEST_ALL_PREFIXES(PrecacheFetcherTest, FetcherPoolMaxLimitReached);
155 FRIEND_TEST_ALL_PREFIXES(PrecacheFetcherTest, 156 FRIEND_TEST_ALL_PREFIXES(PrecacheFetcherTest,
156 CancelPrecachingAfterAllManifestFetch); 157 CancelPrecachingAfterAllManifestFetch);
158 FRIEND_TEST_ALL_PREFIXES(PrecacheFetcherTest, DailyQuota);
157 159
158 // Notifies the precache delete that precaching is done, and report 160 // Notifies the precache delete that precaching is done, and report
159 // completion statistics. 161 // completion statistics.
160 void NotifyDone(size_t remaining_manifest_urls_to_fetch, 162 void NotifyDone(size_t remaining_manifest_urls_to_fetch,
161 size_t remaining_resource_urls_to_fetch); 163 size_t remaining_resource_urls_to_fetch);
162 164
163 // Fetches the next resource or manifest URL, if any remain. Fetching is done 165 // Fetches the next resource or manifest URL, if any remain. Fetching is done
164 // sequentially and depth-first: all resources are fetched for a manifest 166 // sequentially and depth-first: all resources are fetched for a manifest
165 // before the next manifest is fetched. This is done to limit the length of 167 // before the next manifest is fetched. This is done to limit the length of
166 // the |resource_urls_to_fetch_| list, reducing the memory usage. 168 // the |resource_urls_to_fetch_| list, reducing the memory usage.
(...skipping 18 matching lines...) Expand all
185 187
186 // Called when a resource has been fetched. 188 // Called when a resource has been fetched.
187 void OnResourceFetchComplete(const Fetcher& source); 189 void OnResourceFetchComplete(const Fetcher& source);
188 190
189 // Adds up the response sizes. 191 // Adds up the response sizes.
190 void UpdateStats(int64_t response_bytes, int64_t network_response_bytes); 192 void UpdateStats(int64_t response_bytes, int64_t network_response_bytes);
191 193
192 // Callback invoked when the manifest info for all the top hosts is retrieved. 194 // Callback invoked when the manifest info for all the top hosts is retrieved.
193 void OnManifestInfoRetrieved(std::deque<ManifestHostInfo> manifests_info); 195 void OnManifestInfoRetrieved(std::deque<ManifestHostInfo> manifests_info);
194 196
197 // Callback invoked when the quota is retrieved.
198 void OnQuotaInfoRetrieved(const PrecacheQuota& quota);
199
195 // The request context used when fetching URLs. 200 // The request context used when fetching URLs.
196 const scoped_refptr<net::URLRequestContextGetter> request_context_; 201 const scoped_refptr<net::URLRequestContextGetter> request_context_;
197 202
198 // The custom URL to use when fetching the config. If not provided, the 203 // The custom URL to use when fetching the config. If not provided, the
199 // default flag-specified URL will be used. 204 // default flag-specified URL will be used.
200 const GURL config_url_; 205 const GURL config_url_;
201 206
202 // The custom URL prefix to use when fetching manifests. If not provided, the 207 // The custom URL prefix to use when fetching manifests. If not provided, the
203 // default flag-specified prefix will be used. 208 // default flag-specified prefix will be used.
204 const std::string manifest_url_prefix_; 209 const std::string manifest_url_prefix_;
205 210
206 // PrecacheDatabase should be accessed on the DB thread. 211 // PrecacheDatabase should be accessed on the DB thread.
207 base::WeakPtr<PrecacheDatabase> precache_database_; 212 base::WeakPtr<PrecacheDatabase> precache_database_;
208 scoped_refptr<base::SingleThreadTaskRunner> db_task_runner_; 213 scoped_refptr<base::SingleThreadTaskRunner> db_task_runner_;
209 214
210 // Non-owning pointer. Should not be NULL. 215 // Non-owning pointer. Should not be NULL.
211 PrecacheDelegate* precache_delegate_; 216 PrecacheDelegate* precache_delegate_;
212 217
213 std::deque<ManifestHostInfo> top_hosts_to_fetch_; 218 std::deque<ManifestHostInfo> top_hosts_to_fetch_;
214 std::deque<std::pair<GURL, std::string>> resources_to_fetch_; 219 std::deque<std::pair<GURL, std::string>> resources_to_fetch_;
215 220
216 FetcherPool<Fetcher> pool_; 221 FetcherPool<Fetcher> pool_;
217 222
218 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work_; 223 std::unique_ptr<PrecacheUnfinishedWork> unfinished_work_;
219 224
225 // Daily quota.
226 PrecacheQuota quota_;
227
220 // The fieldtrial experiment ID. 228 // The fieldtrial experiment ID.
221 uint32_t experiment_id_; 229 uint32_t experiment_id_;
222 230
223 DISALLOW_COPY_AND_ASSIGN(PrecacheFetcher); 231 DISALLOW_COPY_AND_ASSIGN(PrecacheFetcher);
224 }; 232 };
225 233
226 // Class that fetches a URL, and runs the specified callback when the fetch is 234 // Class that fetches a URL, and runs the specified callback when the fetch is
227 // complete. This class exists so that a different method can be run in 235 // complete. This class exists so that a different method can be run in
228 // response to different kinds of fetches, e.g. OnConfigFetchComplete when 236 // response to different kinds of fetches, e.g. OnConfigFetchComplete when
229 // configuration settings are fetched, OnManifestFetchComplete when a manifest 237 // configuration settings are fetched, OnManifestFetchComplete when a manifest
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 int64_t response_bytes_; 296 int64_t response_bytes_;
289 int64_t network_response_bytes_; 297 int64_t network_response_bytes_;
290 bool was_cached_; 298 bool was_cached_;
291 299
292 DISALLOW_COPY_AND_ASSIGN(Fetcher); 300 DISALLOW_COPY_AND_ASSIGN(Fetcher);
293 }; 301 };
294 302
295 } // namespace precache 303 } // namespace precache
296 304
297 #endif // COMPONENTS_PRECACHE_CORE_PRECACHE_FETCHER_H_ 305 #endif // COMPONENTS_PRECACHE_CORE_PRECACHE_FETCHER_H_
OLDNEW
« no previous file with comments | « components/precache/core/precache_database.cc ('k') | components/precache/core/precache_fetcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698