1 // Copyright 2012 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.
5 #ifndef CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_
6 #define CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_
10 #include "base/basictypes.h"
11 #include "base/strings/string16.h"
12 #include "chrome/common/instant_restricted_id_cache.h"
13 #include "chrome/common/instant_types.h"
14 #include "chrome/common/ntp_logging_events.h"
15 #include "chrome/common/omnibox_focus_state.h"
16 #include "content/public/renderer/render_view_observer.h"
17 #include "content/public/renderer/render_view_observer_tracker.h"
18 #include "ui/base/window_open_disposition.h"
25 class SearchBox : public content::RenderViewObserver,
26 public content::RenderViewObserverTracker<SearchBox> {
28 explicit SearchBox(content::RenderView* render_view);
31 // Sends ChromeViewHostMsg_LogEvent to the browser.
32 void LogEvent(NTPLoggingEventType event);
34 // Sends ChromeViewHostMsg_ChromeIdentityCheck to the browser.
35 void CheckIsUserSignedInToChromeAs(const string16& identity);
37 // Sends ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem to the browser.
38 void DeleteMostVisitedItem(InstantRestrictedID most_visited_item_id);
40 // Generates the favicon URL of the most visited item specified by the
41 // |transient_url|. If the |transient_url| is valid, returns true and fills in
42 // |url|. If the |transient_url| is invalid, returns true and |url| is set to
43 // "chrome-search://favicon/" in order to prevent the invalid URL to be
46 // Valid forms of |transient_url|:
47 // chrome-search://favicon/<view_id>/<restricted_id>
48 // chrome-search://favicon/<favicon_parameters>/<view_id>/<restricted_id>
49 bool GenerateFaviconURLFromTransientURL(const GURL& transient_url,
52 // Generates the thumbnail URL of the most visited item specified by the
53 // |transient_url|. If the |transient_url| is valid, returns true and fills in
54 // |url|. If the |transient_url| is invalid, returns false and |url| is not
57 // Valid form of |transient_url|:
58 // chrome-search://thumb/<render_view_id>/<most_visited_item_id>
59 bool GenerateThumbnailURLFromTransientURL(const GURL& transient_url,
62 // Returns the latest most visited items sent by the browser.
63 void GetMostVisitedItems(
64 std::vector<InstantMostVisitedItemIDPair>* items) const;
66 // If the |most_visited_item_id| is found in the cache, sets |item| to it
68 bool GetMostVisitedItemWithID(InstantRestrictedID most_visited_item_id,
69 InstantMostVisitedItem* item) const;
71 // Sends ChromeViewHostMsg_FocusOmnibox to the browser.
74 // Sends ChromeViewHostMsg_SearchBoxNavigate to the browser.
75 void NavigateToURL(const GURL& url,
76 WindowOpenDisposition disposition,
77 bool is_most_visited_item_url);
79 // Sends ChromeViewHostMsg_SearchBoxPaste to the browser.
80 void Paste(const string16& text);
82 const ThemeBackgroundInfo& GetThemeBackgroundInfo();
84 // Sends ChromeViewHostMsg_SetVoiceSearchSupported to the browser.
85 void SetVoiceSearchSupported(bool supported);
87 // Sends ChromeViewHostMsg_StartCapturingKeyStrokes to the browser.
88 void StartCapturingKeyStrokes();
90 // Sends ChromeViewHostMsg_StopCapturingKeyStrokes to the browser.
91 void StopCapturingKeyStrokes();
93 // Sends ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions to the
95 void UndoAllMostVisitedDeletions();
97 // Sends ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion to the browser.
98 void UndoMostVisitedDeletion(InstantRestrictedID most_visited_item_id);
100 bool app_launcher_enabled() const { return app_launcher_enabled_; }
101 bool is_focused() const { return is_focused_; }
102 bool is_input_in_progress() const { return is_input_in_progress_; }
103 bool is_key_capture_enabled() const { return is_key_capture_enabled_; }
104 bool display_instant_results() const { return display_instant_results_; }
105 const string16& query() const { return query_; }
106 int start_margin() const { return start_margin_; }
107 const InstantSuggestion& suggestion() const { return suggestion_; }
110 // Overridden from content::RenderViewObserver:
111 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
113 void OnChromeIdentityCheckResult(const string16& identity,
114 bool identity_match);
115 void OnDetermineIfPageSupportsInstant();
116 void OnFocusChanged(OmniboxFocusState new_focus_state,
117 OmniboxFocusChangeReason reason);
118 void OnMarginChange(int margin, int width);
119 void OnMostVisitedChanged(
120 const std::vector<InstantMostVisitedItem>& items);
121 void OnPromoInformationReceived(bool is_app_launcher_enabled);
122 void OnSetDisplayInstantResults(bool display_instant_results);
123 void OnSetInputInProgress(bool input_in_progress);
124 void OnSetSuggestionToPrefetch(const InstantSuggestion& suggestion);
125 void OnSubmit(const string16& query);
126 void OnThemeChanged(const ThemeBackgroundInfo& theme_info);
127 void OnToggleVoiceSearch();
129 // Returns the current zoom factor of the render view or 1 on failure.
130 double GetZoom() const;
132 // Sets the searchbox values to their initial value.
135 // Returns the URL of the Most Visited item specified by the |item_id|.
136 GURL GetURLForMostVisitedItem(InstantRestrictedID item_id) const;
138 bool app_launcher_enabled_;
140 bool is_input_in_progress_;
141 bool is_key_capture_enabled_;
142 bool display_instant_results_;
143 InstantRestrictedIDCache<InstantMostVisitedItem> most_visited_items_cache_;
144 ThemeBackgroundInfo theme_info_;
147 InstantSuggestion suggestion_;
150 DISALLOW_COPY_AND_ASSIGN(SearchBox);
153 #endif // CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_