Index: chrome/browser/tab_contents/match_preview.h |
diff --git a/chrome/browser/tab_contents/match_preview.h b/chrome/browser/tab_contents/match_preview.h |
index cc6605b70cdcf4124177e76e168ed0e9f6906c0f..f699f89af93829f43e54aca82cb212abb6b19994 100644 |
--- a/chrome/browser/tab_contents/match_preview.h |
+++ b/chrome/browser/tab_contents/match_preview.h |
@@ -4,31 +4,31 @@ |
#ifndef CHROME_BROWSER_TAB_CONTENTS_MATCH_PREVIEW_H_ |
#define CHROME_BROWSER_TAB_CONTENTS_MATCH_PREVIEW_H_ |
+#pragma once |
#include "base/basictypes.h" |
#include "base/scoped_ptr.h" |
+#include "base/string16.h" |
+#include "base/timer.h" |
+#include "chrome/browser/search_engines/template_url_id.h" |
+#include "chrome/common/page_transition_types.h" |
#include "googleurl/src/gurl.h" |
+struct AutocompleteMatch; |
+class MatchPreviewDelegate; |
class TabContents; |
// MatchPreview maintains a TabContents that is intended to give a preview of |
-// a URL. MatchPreview is owned by TabContents. |
-// |
-// As the user types in the omnibox the LocationBar updates MatchPreview by |
-// way of 'Update'. If the user does a gesture on the preview, say clicks a |
-// link, the TabContentsDelegate of the hosting TabContents is notified with |
-// CommitMatchPreview and the TabContents maintained by MatchPreview replaces |
-// the current TabContents in the TabStripModel. |
+// a URL. MatchPreview is owned by Browser. |
// |
// At any time the TabContents maintained by MatchPreview may be destroyed by |
-// way of 'DestroyPreviewContents'. Consumers of MatchPreview can detect the |
-// preview TabContents was destroyed by observing TAB_CONTENTS_DESTROYED. |
-// |
-// Consumers of MatchPreview can detect a new TabContents was created by |
-// MatchPreview by listening for MATCH_PREVIEW_TAB_CONTENTS_CREATED. |
+// way of |DestroyPreviewContents|, which results in |HideMatchPreview| being |
+// invoked on the delegate. Similarly the preview may be committed at any time |
+// by invoking |CommitCurrentPreview|, which results in |CommitMatchPreview| |
+// being invoked on the delegate. |
class MatchPreview { |
public: |
- explicit MatchPreview(TabContents* host); |
+ explicit MatchPreview(MatchPreviewDelegate* delegate); |
~MatchPreview(); |
// Is MatchPreview enabled? |
@@ -38,7 +38,10 @@ class MatchPreview { |
// the url is empty and there is a preview TabContents it is destroyed. If url |
// is non-empty and the preview TabContents has not been created it is |
// created. |
- void Update(const GURL& url); |
+ void Update(TabContents* tab_contents, |
+ const AutocompleteMatch& match, |
+ const string16& user_text, |
+ string16* suggested_text); |
// Destroys the preview TabContents. Does nothing if the preview TabContents |
// has not been created. |
@@ -49,31 +52,70 @@ class MatchPreview { |
void CommitCurrentPreview(); |
// Releases the preview TabContents passing ownership to the caller. This is |
- // intended to be called when the preview TabContents is committed. |
- TabContents* ReleasePreviewContents(); |
+ // intended to be called when the preview TabContents is committed. This does |
+ // not notify the delegate. |
+ TabContents* ReleasePreviewContents(bool commit_history); |
- // The TabContents we're maintaining the preview for. |
- TabContents* host() { return host_; } |
+ // TabContents the match is being shown for. |
+ TabContents* tab_contents() const { return tab_contents_; } |
// The preview TabContents; may be null. |
- TabContents* preview_contents() { return preview_contents_.get(); } |
+ TabContents* preview_contents() const { return preview_contents_.get(); } |
+ |
+ // Returns true if the preview TabContents is active. In some situations this |
+ // may return false yet preview_contents() returns non-NULL. |
+ bool is_active() const { return is_active_; } |
+ |
+ const GURL& url() const { return url_; } |
private: |
+ class FrameLoadObserver; |
+ class PaintObserverImpl; |
class TabContentsDelegateImpl; |
+ // Invoked when the page wants to update the suggested text. If |user_text_| |
+ // starts with |suggested_text|, then the delegate is notified of the change, |
+ // which results in updating the omnibox. |
+ void SetCompleteSuggestedText(const string16& suggested_text); |
+ |
+ // Invoked when the preview paints. This notifies the delegate the preview is |
+ // ready to be shown. |
+ void PreviewDidPaint(); |
+ |
+ // Invoked once the page has finished loading and the script has been sent. |
+ void PageFinishedLoading(); |
+ |
+ MatchPreviewDelegate* delegate_; |
+ |
+ // The TabContents last passed to |Update|. |
+ TabContents* tab_contents_; |
+ |
// The url we're displaying. |
GURL url_; |
- // The TabContents we're providing the preview for. |
- TabContents* host_; |
- |
// Delegate of the preview TabContents. Used to detect when the user does some |
// gesture on the TabContents and the preview needs to be activated. |
- scoped_ptr<TabContentsDelegateImpl> delegate_; |
+ scoped_ptr<TabContentsDelegateImpl> preview_tab_contents_delegate_; |
// The preview TabContents; may be null. |
scoped_ptr<TabContents> preview_contents_; |
+ // Has notification been sent out that the preview TabContents is ready to be |
+ // shown? |
+ bool is_active_; |
+ |
+ // The text the user typed in the omnibox. |
+ string16 user_text_; |
+ |
+ // The latest suggestion from the page. |
+ string16 complete_suggested_text_; |
+ |
+ // If we're showing instant results this is the ID of the TemplateURL driving |
+ // the results. A value of 0 means there is no TemplateURL. |
+ TemplateURLID template_url_id_; |
+ |
+ scoped_ptr<FrameLoadObserver> frame_load_observer_; |
+ |
DISALLOW_COPY_AND_ASSIGN(MatchPreview); |
}; |