11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/predictors/resource_prefetch_predictor_tab_helper.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/predictors/resource_prefetch_predictor.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/predictors/resource_prefetch_predictor_factory.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/profiles/profile.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/browser_thread.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/load_from_memory_cache_details.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDEFINE_WEB_CONTENTS_USER_DATA_KEY( 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci predictors::ResourcePrefetchPredictorTabHelper); 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing content::BrowserThread; 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace predictors { 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciResourcePrefetchPredictorTabHelper::ResourcePrefetchPredictorTabHelper( 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::WebContents* web_contents) 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : content::WebContentsObserver(web_contents) { 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciResourcePrefetchPredictorTabHelper::~ResourcePrefetchPredictorTabHelper() { 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ResourcePrefetchPredictorTabHelper::DocumentOnLoadCompletedInMainFrame() { 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_CURRENTLY_ON(BrowserThread::UI); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourcePrefetchPredictor* predictor = 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourcePrefetchPredictorFactory::GetForProfile( 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_contents()->GetBrowserContext()); 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!predictor) 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NavigationID navigation_id(web_contents()); 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci predictor->RecordMainFrameLoadComplete(navigation_id); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ResourcePrefetchPredictorTabHelper::DidLoadResourceFromMemoryCache( 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const content::LoadFromMemoryCacheDetails& details) { 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_CURRENTLY_ON(BrowserThread::UI); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourcePrefetchPredictor* predictor = 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourcePrefetchPredictorFactory::GetForProfile( 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci web_contents()->GetBrowserContext()); 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!predictor) 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourcePrefetchPredictor::URLRequestSummary summary; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci summary.navigation_id = NavigationID(web_contents()); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci summary.resource_url = details.url; 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci summary.mime_type = details.mime_type; 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci summary.resource_type = 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ResourcePrefetchPredictor::GetResourceTypeFromMimeType( 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci details.mime_type, details.resource_type); 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci summary.was_cached = true; 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci predictor->RecordURLResponse(summary); 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace predictors 63