// 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. #ifndef CHROME_BROWSER_UI_SEARCH_INSTANT_NTP_H_ #define CHROME_BROWSER_UI_SEARCH_INSTANT_NTP_H_ #include <string> #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/gtest_prod_util.h" #include "base/memory/scoped_ptr.h" #include "chrome/browser/ui/search/instant_loader.h" #include "chrome/browser/ui/search/instant_page.h" class InstantNTPPrerenderer; class Profile; namespace content { class RenderViewHost; class WebContents; } // InstantNTP is used to preload an Instant page that will be swapped in when a // user navigates to a New Tab Page (NTP). The InstantNTP contents are never // shown in an un-committed state. class InstantNTP : public InstantPage, public InstantLoader::Delegate { public: InstantNTP(InstantNTPPrerenderer* delegate, const std::string& instant_url, Profile* profile); virtual ~InstantNTP(); // Creates a new WebContents and loads |instant_url_| into it. // |on_stale_callback| will be called when |loader_| determines the page to // be stale. void InitContents(const base::Closure& on_stale_callback); // Releases the WebContents for the Instant page. This should be called when // the page is about to be committed. scoped_ptr<content::WebContents> ReleaseContents(); private: FRIEND_TEST_ALL_PREFIXES(InstantExtendedNetworkTest, NTPReactsToNetworkChanges); // Overridden from content::WebContentsObserver: virtual void RenderProcessGone( base::TerminationStatus status) OVERRIDE; // Overridden from InstantLoader::Delegate: virtual void OnSwappedContents() OVERRIDE; virtual content::WebContents* OpenURLFromTab( content::WebContents* source, const content::OpenURLParams& params) OVERRIDE; virtual void LoadCompletedMainFrame() OVERRIDE; InstantLoader loader_; InstantNTPPrerenderer* const ntp_prerenderer_; DISALLOW_COPY_AND_ASSIGN(InstantNTP); }; #endif // CHROME_BROWSER_UI_SEARCH_INSTANT_NTP_H_