| Index: chrome/browser/predictors/resource_prefetcher_manager.cc
|
| diff --git a/chrome/browser/predictors/resource_prefetcher_manager.cc b/chrome/browser/predictors/resource_prefetcher_manager.cc
|
| deleted file mode 100644
|
| index 15d1b76dcd8ce6f8af472d13732c409a7aa0883e..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/predictors/resource_prefetcher_manager.cc
|
| +++ /dev/null
|
| @@ -1,135 +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.
|
| -
|
| -#include "chrome/browser/predictors/resource_prefetcher_manager.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/stl_util.h"
|
| -#include "chrome/browser/predictors/resource_prefetch_predictor.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "net/url_request/url_request.h"
|
| -#include "net/url_request/url_request_context_getter.h"
|
| -
|
| -using content::BrowserThread;
|
| -
|
| -namespace predictors {
|
| -
|
| -ResourcePrefetcherManager::ResourcePrefetcherManager(
|
| - ResourcePrefetchPredictor* predictor,
|
| - const ResourcePrefetchPredictorConfig& config,
|
| - net::URLRequestContextGetter* context_getter)
|
| - : predictor_(predictor),
|
| - config_(config),
|
| - context_getter_(context_getter) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - CHECK(predictor_);
|
| - CHECK(context_getter_);
|
| -}
|
| -
|
| -ResourcePrefetcherManager::~ResourcePrefetcherManager() {
|
| - DCHECK(prefetcher_map_.empty())
|
| - << "Did not call ShutdownOnUIThread or ShutdownOnIOThread. "
|
| - " Will leak Prefetcher pointers.";
|
| -}
|
| -
|
| -void ResourcePrefetcherManager::ShutdownOnUIThread() {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| -
|
| - predictor_ = NULL;
|
| - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&ResourcePrefetcherManager::ShutdownOnIOThread,
|
| - this));
|
| -}
|
| -
|
| -void ResourcePrefetcherManager::ShutdownOnIOThread() {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| - STLDeleteContainerPairSecondPointers(prefetcher_map_.begin(),
|
| - prefetcher_map_.end());
|
| -}
|
| -
|
| -void ResourcePrefetcherManager::MaybeAddPrefetch(
|
| - const NavigationID& navigation_id,
|
| - PrefetchKeyType key_type,
|
| - scoped_ptr<ResourcePrefetcher::RequestVector> requests) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| -
|
| - // Don't add a duplicate prefetch for the same host or URL.
|
| - std::string key = key_type == PREFETCH_KEY_TYPE_HOST ?
|
| - navigation_id.main_frame_url.host() : navigation_id.main_frame_url.spec();
|
| - if (ContainsKey(prefetcher_map_, key))
|
| - return;
|
| -
|
| - ResourcePrefetcher* prefetcher = new ResourcePrefetcher(
|
| - this, config_, navigation_id, key_type, requests.Pass());
|
| - prefetcher_map_.insert(std::make_pair(key, prefetcher));
|
| - prefetcher->Start();
|
| -}
|
| -
|
| -void ResourcePrefetcherManager::MaybeRemovePrefetch(
|
| - const NavigationID& navigation_id) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| -
|
| - // Look for a URL based prefetch first.
|
| - PrefetcherMap::iterator it = prefetcher_map_.find(
|
| - navigation_id.main_frame_url.spec());
|
| - if (it != prefetcher_map_.end() &&
|
| - it->second->navigation_id() == navigation_id) {
|
| - it->second->Stop();
|
| - return;
|
| - }
|
| -
|
| - // No URL based prefetching, look for host based.
|
| - it = prefetcher_map_.find(navigation_id.main_frame_url.host());
|
| - if (it != prefetcher_map_.end() &&
|
| - it->second->navigation_id() == navigation_id) {
|
| - it->second->Stop();
|
| - }
|
| -}
|
| -
|
| -void ResourcePrefetcherManager::ResourcePrefetcherFinished(
|
| - ResourcePrefetcher* resource_prefetcher,
|
| - ResourcePrefetcher::RequestVector* requests) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| -
|
| - // |predictor_| can only be accessed from the UI thread.
|
| - scoped_ptr<ResourcePrefetcher::RequestVector> scoped_requests(requests);
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&ResourcePrefetcherManager::ResourcePrefetcherFinishedOnUI,
|
| - this,
|
| - resource_prefetcher->navigation_id(),
|
| - resource_prefetcher->key_type(),
|
| - base::Passed(&scoped_requests)));
|
| -
|
| - const GURL& main_frame_url =
|
| - resource_prefetcher->navigation_id().main_frame_url;
|
| - const std::string key =
|
| - resource_prefetcher->key_type() == PREFETCH_KEY_TYPE_HOST ?
|
| - main_frame_url.host() : main_frame_url.spec();
|
| - PrefetcherMap::iterator it = prefetcher_map_.find(key);
|
| - DCHECK(it != prefetcher_map_.end());
|
| - delete it->second;
|
| - prefetcher_map_.erase(it);
|
| -}
|
| -
|
| -void ResourcePrefetcherManager::ResourcePrefetcherFinishedOnUI(
|
| - const NavigationID& navigation_id,
|
| - PrefetchKeyType key_type,
|
| - scoped_ptr<ResourcePrefetcher::RequestVector> requests) {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| -
|
| - // |predictor_| may have been set to NULL if the predictor is shutting down.
|
| - if (predictor_) {
|
| - predictor_->FinishedPrefetchForNavigation(navigation_id,
|
| - key_type,
|
| - requests.release());
|
| - }
|
| -}
|
| -
|
| -net::URLRequestContext* ResourcePrefetcherManager::GetURLRequestContext() {
|
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| -
|
| - return context_getter_->GetURLRequestContext();
|
| -}
|
| -
|
| -} // namespace predictors
|
|
|