13240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
23240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
33240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch// found in the LICENSE file.
43240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
53240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include "chrome/browser/net/predictor_tab_helper.h"
63240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
78bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/command_line.h"
83240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include "chrome/browser/net/predictor.h"
93240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch#include "chrome/browser/profiles/profile.h"
108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/common/chrome_switches.h"
118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/common/url_constants.h"
123240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
133240926e260ce088908e02ac07a6cf7b0c0cbf44Ben MurdochDEFINE_WEB_CONTENTS_USER_DATA_KEY(chrome_browser_net::PredictorTabHelper);
143240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
153240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdochnamespace chrome_browser_net {
163240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
173240926e260ce088908e02ac07a6cf7b0c0cbf44Ben MurdochPredictorTabHelper::PredictorTabHelper(content::WebContents* web_contents)
183240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch    : content::WebContentsObserver(web_contents) {
193240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch}
203240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
213240926e260ce088908e02ac07a6cf7b0c0cbf44Ben MurdochPredictorTabHelper::~PredictorTabHelper() {
223240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch}
233240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void PredictorTabHelper::DidStartNavigationToPendingEntry(
258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    const GURL& url,
268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    content::NavigationController::ReloadType reload_type) {
278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  Profile* profile =
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      Profile::FromBrowserContext(web_contents()->GetBrowserContext());
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  chrome_browser_net::Predictor* predictor = profile->GetNetworkPredictor();
308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  if (!predictor)
318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    return;
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  if (url.SchemeIs(url::kHttpScheme) || url.SchemeIs(url::kHttpsScheme))
338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    predictor->PreconnectUrlAndSubresources(url, GURL());
348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}
358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
363240926e260ce088908e02ac07a6cf7b0c0cbf44Ben Murdoch}  // namespace chrome_browser_net
37