Home | History | Annotate | Download | only in search
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/ui/search/instant_ntp.h"
      6 
      7 #include "base/metrics/histogram.h"
      8 #include "chrome/browser/profiles/profile.h"
      9 #include "chrome/browser/ui/search/instant_ntp_prerenderer.h"
     10 #include "chrome/browser/ui/search/search_tab_helper.h"
     11 #include "chrome/browser/ui/webui/ntp/ntp_user_data_logger.h"
     12 #include "content/public/browser/web_contents.h"
     13 #include "url/gurl.h"
     14 
     15 InstantNTP::InstantNTP(InstantNTPPrerenderer* ntp_prerenderer,
     16                        const std::string& instant_url,
     17                        Profile* profile)
     18     : InstantPage(ntp_prerenderer, instant_url, profile,
     19                   profile->IsOffTheRecord()),
     20       loader_(this),
     21       ntp_prerenderer_(ntp_prerenderer) {
     22 }
     23 
     24 InstantNTP::~InstantNTP() {
     25   if (contents())
     26     ReleaseContents().reset();
     27 }
     28 
     29 void InstantNTP::InitContents(const base::Closure& on_stale_callback) {
     30   DCHECK(!contents());
     31   GURL instantNTP_url(instant_url());
     32   loader_.Init(instantNTP_url, profile(), on_stale_callback);
     33   SetContents(loader_.contents());
     34   content::WebContents* content = contents();
     35   SearchTabHelper::FromWebContents(content)->InitForPreloadedNTP();
     36 
     37   NTPUserDataLogger::CreateForWebContents(content);
     38   NTPUserDataLogger::FromWebContents(content)->set_ntp_url(instantNTP_url);
     39 
     40   loader_.Load();
     41 }
     42 
     43 scoped_ptr<content::WebContents> InstantNTP::ReleaseContents() {
     44   SetContents(NULL);
     45   return loader_.ReleaseContents();
     46 }
     47 
     48 void InstantNTP::LoadCompletedMainFrame() {
     49   ntp_prerenderer_->LoadCompletedMainFrame();
     50 }
     51 
     52 void InstantNTP::RenderViewCreated(content::RenderViewHost* render_view_host) {
     53   InitializeFonts();
     54   InitializePromos();
     55 }
     56 
     57 void InstantNTP::RenderProcessGone(base::TerminationStatus /* status */) {
     58   ntp_prerenderer_->RenderProcessGone();
     59 }
     60 
     61 void InstantNTP::OnSwappedContents() {
     62   SetContents(loader_.contents());
     63 }
     64 
     65 content::WebContents* InstantNTP::OpenURLFromTab(
     66     content::WebContents* source,
     67     const content::OpenURLParams& params) {
     68   return NULL;
     69 }
     70