Index: chrome/browser/instant/instant_ntp.h |
diff --git a/chrome/browser/instant/instant_ntp.h b/chrome/browser/instant/instant_ntp.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a4efa842fcbc3dca681b9e610fabbbd3f1c43972 |
--- /dev/null |
+++ b/chrome/browser/instant/instant_ntp.h |
@@ -0,0 +1,99 @@ |
+// Copyright 2012 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_INSTANT_INSTANT_NTP_H_ |
+#define CHROME_BROWSER_INSTANT_INSTANT_NTP_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/basictypes.h" |
+#include "base/compiler_specific.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "chrome/browser/instant/instant_client.h" |
+ |
+class InstantController; |
+class Profile; |
+struct ThemeBackgroundInfo; |
+ |
+namespace content { |
+class WebContents; |
+} |
+ |
+// InstantNTP is used to communicate with a WebContents that it owns and loads |
+// the "Instant URL" into. This preview is used when the user navigates to a New |
+// Tab Page. |
+class InstantNTP : public InstantClient::Delegate { |
+ public: |
+ // Returns the InstantNTP for |contents| if it's used for Instant. |
+ static InstantNTP* FromWebContents(const content::WebContents* contents); |
+ |
+ // Doesn't take ownership of |controller|. |
+ InstantNTP(InstantController* controller, const std::string& instant_url); |
+ virtual ~InstantNTP(); |
+ |
+ // The NTP WebContents. InstantNTP retains ownership. This will be |
+ // non-NULL after InitFromContents(), and until ReleaseContents() is called. |
+ content::WebContents* contents() const { return contents_.get(); } |
+ |
+ // Creates a new WebContents and loads |instant_url_| into it. Uses |
+ // |active_tab|, if non-NULL, to initialize the size of the WebContents. |
+ void InitContents(Profile* profile, |
+ const content::WebContents* active_tab); |
+ |
+ // Releases the preview WebContents passing ownership to the caller. This |
+ // should be called when the preview is committed. |
+ content::WebContents* ReleaseContents() WARN_UNUSED_RESULT; |
+ |
+ // Returns the URL that we're loading. |
+ const std::string& instant_url() const { return instant_url_; } |
+ |
+ // Returns true if the preview is known to support the Instant API. This |
+ // starts out false, and becomes true whenever we get any message from the |
+ // page. Once true, it never becomes false (the page isn't expected to drop |
+ // Instant API support suddenly). |
+ bool supports_instant() const { return supports_instant_; } |
+ |
+ // Calls through to methods of the same name on InstantClient. |
+ void SetMarginSize(int start, int end); |
+ void SendThemeBackgroundInfo(const ThemeBackgroundInfo& theme_info); |
+ void SendThemeAreaHeight(int height); |
+ void SetDisplayInstantResults(bool display_instant_results); |
+ |
+ private: |
+ class WebContentsDelegateImpl; |
+ |
+ // Overridden from InstantClient::Delegate: |
+ virtual void SetSuggestions( |
+ const std::vector<InstantSuggestion>& suggestions) OVERRIDE; |
+ virtual void InstantSupportDetermined(bool supports_instant) OVERRIDE; |
+ virtual void ShowInstantPreview(InstantShownReason reason, |
+ int height, |
+ InstantSizeUnits units) OVERRIDE; |
+ virtual void StartCapturingKeyStrokes() OVERRIDE; |
+ virtual void StopCapturingKeyStrokes() OVERRIDE; |
+ virtual void RenderViewGone() OVERRIDE; |
+ virtual void AboutToNavigateMainFrame(const GURL& url) OVERRIDE; |
+ virtual void NavigateToURL(const GURL& url, |
+ content::PageTransition transition) OVERRIDE; |
+ |
+ void SetupPreviewContents(); |
+ void CleanupPreviewContents(); |
+ void ReplacePreviewContents(content::WebContents* old_contents, |
+ content::WebContents* new_contents); |
+ |
+ InstantClient client_; |
dhollowa
2013/01/10 18:50:29
I notice that all three InstantOverlay, InstantNTP
dhollowa
2013/01/10 21:08:03
Err... correction:
class InstantNTP : public Insta
samarth
2013/01/11 19:43:05
Channeling sky (who was channeling Ben):
"""
Ben w
dhollowa
2013/01/11 19:55:01
God also calls a kitten every time the DRY (don't
|
+ InstantController* const controller_; |
+ |
+ // Delegate of the preview WebContents. |
+ scoped_ptr<WebContentsDelegateImpl> delegate_; |
+ scoped_ptr<content::WebContents> contents_; |
+ |
+ const std::string instant_url_; |
+ bool supports_instant_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(InstantNTP); |
+}; |
+ |
+#endif // CHROME_BROWSER_INSTANT_INSTANT_NTP_H_ |