Index: chrome/browser/predictors/resource_prefetcher.h |
diff --git a/chrome/browser/predictors/resource_prefetcher.h b/chrome/browser/predictors/resource_prefetcher.h |
deleted file mode 100644 |
index 18b1bff20204fbe855a611f911005a4028d82ffd..0000000000000000000000000000000000000000 |
--- a/chrome/browser/predictors/resource_prefetcher.h |
+++ /dev/null |
@@ -1,165 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCHER_H_ |
-#define CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCHER_H_ |
- |
-#include <list> |
-#include <map> |
-#include <vector> |
- |
-#include "base/gtest_prod_util.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/scoped_vector.h" |
-#include "base/threading/thread_checker.h" |
-#include "chrome/browser/predictors/resource_prefetch_common.h" |
-#include "net/url_request/redirect_info.h" |
-#include "net/url_request/url_request.h" |
-#include "url/gurl.h" |
- |
-namespace net { |
-class URLRequestContext; |
-} |
- |
-namespace predictors { |
- |
-// Responsible for prefetching resources for a single navigation based on the |
-// input list of resources. |
-// - Limits the max number of resources in flight for any host and also across |
-// hosts. |
-// - When stopped, will wait for the pending requests to finish. |
-// - Lives entirely on the IO thread. |
-class ResourcePrefetcher : public net::URLRequest::Delegate { |
- public: |
- // Denotes the prefetch request for a single subresource. |
- struct Request { |
- explicit Request(const GURL& i_resource_url); |
- Request(const Request& other); |
- |
- enum PrefetchStatus { |
- PREFETCH_STATUS_NOT_STARTED, |
- PREFETCH_STATUS_STARTED, |
- |
- // Cancellation reasons. |
- PREFETCH_STATUS_REDIRECTED, |
- PREFETCH_STATUS_AUTH_REQUIRED, |
- PREFETCH_STATUS_CERT_REQUIRED, |
- PREFETCH_STATUS_CERT_ERROR, |
- PREFETCH_STATUS_CANCELLED, |
- PREFETCH_STATUS_FAILED, |
- |
- // Successful prefetch states. |
- PREFETCH_STATUS_FROM_CACHE, |
- PREFETCH_STATUS_FROM_NETWORK |
- }; |
- |
- enum UsageStatus { |
- USAGE_STATUS_NOT_REQUESTED, |
- USAGE_STATUS_FROM_CACHE, |
- USAGE_STATUS_FROM_NETWORK, |
- USAGE_STATUS_NAVIGATION_ABANDONED |
- }; |
- |
- GURL resource_url; |
- PrefetchStatus prefetch_status; |
- UsageStatus usage_status; |
- }; |
- typedef ScopedVector<Request> RequestVector; |
- |
- // Used to communicate when the prefetching is done. All methods are invoked |
- // on the IO thread. |
- class Delegate { |
- public: |
- virtual ~Delegate() { } |
- |
- // Called when the ResourcePrefetcher is finished, i.e. there is nothing |
- // pending in flight. Should take ownership of |requests|. |
- virtual void ResourcePrefetcherFinished( |
- ResourcePrefetcher* prefetcher, |
- RequestVector* requests) = 0; |
- |
- virtual net::URLRequestContext* GetURLRequestContext() = 0; |
- }; |
- |
- // |delegate| has to outlive the ResourcePrefetcher. The ResourcePrefetcher |
- // takes ownership of |requests|. |
- ResourcePrefetcher(Delegate* delegate, |
- const ResourcePrefetchPredictorConfig& config, |
- const NavigationID& navigation_id, |
- PrefetchKeyType key_type, |
- scoped_ptr<RequestVector> requests); |
- virtual ~ResourcePrefetcher(); |
- |
- void Start(); // Kicks off the prefetching. Can only be called once. |
- void Stop(); // No additional prefetches will be queued after this. |
- |
- const NavigationID& navigation_id() const { return navigation_id_; } |
- PrefetchKeyType key_type() const { return key_type_; } |
- |
- private: |
- friend class ResourcePrefetcherTest; |
- friend class TestResourcePrefetcher; |
- |
- // Launches new prefetch requests if possible. |
- void TryToLaunchPrefetchRequests(); |
- |
- // Starts a net::URLRequest for the input |request|. |
- void SendRequest(Request* request); |
- |
- // Called by |SendRequest| to start the |request|. This is necessary to stub |
- // out the Start() call to net::URLRequest for unittesting. |
- virtual void StartURLRequest(net::URLRequest* request); |
- |
- // Marks the request as finished, with the given status. |
- void FinishRequest(net::URLRequest* request, Request::PrefetchStatus status); |
- |
- // Reads the response data from the response - required for the resource to |
- // be cached correctly. Stubbed out during testing. |
- virtual void ReadFullResponse(net::URLRequest* request); |
- |
- // Returns true if the request has more data that needs to be read. If it |
- // returns false, the request should not be referenced again. |
- bool ShouldContinueReadingRequest(net::URLRequest* request, int bytes_read); |
- |
- // net::URLRequest::Delegate methods. |
- virtual void OnReceivedRedirect(net::URLRequest* request, |
- const net::RedirectInfo& redirect_info, |
- bool* defer_redirect) OVERRIDE; |
- virtual void OnAuthRequired(net::URLRequest* request, |
- net::AuthChallengeInfo* auth_info) OVERRIDE; |
- virtual void OnCertificateRequested( |
- net::URLRequest* request, |
- net::SSLCertRequestInfo* cert_request_info) OVERRIDE; |
- virtual void OnSSLCertificateError(net::URLRequest* request, |
- const net::SSLInfo& ssl_info, |
- bool fatal) OVERRIDE; |
- virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE; |
- virtual void OnReadCompleted(net::URLRequest* request, |
- int bytes_read) OVERRIDE; |
- |
- enum PrefetcherState { |
- INITIALIZED = 0, // Prefetching hasn't started. |
- RUNNING = 1, // Prefetching started, allowed to add more requests. |
- STOPPED = 2, // Prefetching started, not allowed to add more requests. |
- FINISHED = 3 // No more inflight request, new requests not possible. |
- }; |
- |
- base::ThreadChecker thread_checker_; |
- PrefetcherState state_; |
- Delegate* const delegate_; |
- ResourcePrefetchPredictorConfig const config_; |
- NavigationID navigation_id_; |
- PrefetchKeyType key_type_; |
- scoped_ptr<RequestVector> request_vector_; |
- |
- std::map<net::URLRequest*, Request*> inflight_requests_; |
- std::list<Request*> request_queue_; |
- std::map<std::string, size_t> host_inflight_counts_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ResourcePrefetcher); |
-}; |
- |
-} // namespace predictors |
- |
-#endif // CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCHER_H_ |