普通文本  |  62行  |  1.84 KB

// 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;
}