// Copyright 2013 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/ui/search/instant_ntp.h" #include "base/metrics/histogram.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/search/instant_ntp_prerenderer.h" #include "chrome/browser/ui/search/search_tab_helper.h" #include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h" #include "content/public/browser/web_contents.h" #include "url/gurl.h" InstantNTP::InstantNTP(InstantNTPPrerenderer* ntp_prerenderer, const std::string& instant_url, Profile* profile) : InstantPage(ntp_prerenderer, instant_url, profile, profile->IsOffTheRecord()), loader_(this), ntp_prerenderer_(ntp_prerenderer) { } InstantNTP::~InstantNTP() { if (contents()) ReleaseContents().reset(); } void InstantNTP::InitContents(const base::Closure& on_stale_callback) { DCHECK(!contents()); GURL instantNTP_url(instant_url()); loader_.Init(instantNTP_url, profile(), on_stale_callback); SetContents(loader_.contents()); content::WebContents* content = contents(); SearchTabHelper::FromWebContents(content)->InitForPreloadedNTP(); loader_.Load(); } scoped_ptr<content::WebContents> InstantNTP::ReleaseContents() { SetContents(NULL); return loader_.ReleaseContents(); } void InstantNTP::LoadCompletedMainFrame() { ntp_prerenderer_->LoadCompletedMainFrame(); } void InstantNTP::RenderProcessGone(base::TerminationStatus /* status */) { ntp_prerenderer_->RenderProcessGone(); } void InstantNTP::OnSwappedContents() { SetContents(loader_.contents()); } content::WebContents* InstantNTP::OpenURLFromTab( content::WebContents* source, const content::OpenURLParams& params) { return NULL; }