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. 4 5 #ifndef CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_ 6 #define CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_ 7 8 #include <vector> 9 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" 19 #include "url/gurl.h" 20 21 namespace content { 22 class RenderView; 23 } 24 25 class SearchBox : public content::RenderViewObserver, 26 public content::RenderViewObserverTracker<SearchBox> { 27 public: 28 explicit SearchBox(content::RenderView* render_view); 29 virtual ~SearchBox(); 30 31 // Sends ChromeViewHostMsg_LogEvent to the browser. 32 void LogEvent(NTPLoggingEventType event); 33 34 // Sends ChromeViewHostMsg_LogMostVisitedImpression to the browser. 35 void LogMostVisitedImpression(int position, const base::string16& provider); 36 37 // Sends ChromeViewHostMsg_LogMostVisitedNavigation to the browser. 38 void LogMostVisitedNavigation(int position, const base::string16& provider); 39 40 // Sends ChromeViewHostMsg_ChromeIdentityCheck to the browser. 41 void CheckIsUserSignedInToChromeAs(const base::string16& identity); 42 43 // Sends ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem to the browser. 44 void DeleteMostVisitedItem(InstantRestrictedID most_visited_item_id); 45 46 // Generates the favicon URL of the most visited item specified by the 47 // |transient_url|. If the |transient_url| is valid, returns true and fills in 48 // |url|. If the |transient_url| is invalid, returns true and |url| is set to 49 // "chrome-search://favicon/" in order to prevent the invalid URL to be 50 // requested. 51 // 52 // Valid forms of |transient_url|: 53 // chrome-search://favicon/<view_id>/<restricted_id> 54 // chrome-search://favicon/<favicon_parameters>/<view_id>/<restricted_id> 55 bool GenerateFaviconURLFromTransientURL(const GURL& transient_url, 56 GURL* url) const; 57 58 // Generates the thumbnail URL of the most visited item specified by the 59 // |transient_url|. If the |transient_url| is valid, returns true and fills in 60 // |url|. If the |transient_url| is invalid, returns false and |url| is not 61 // set. 62 // 63 // Valid form of |transient_url|: 64 // chrome-search://thumb/<render_view_id>/<most_visited_item_id> 65 bool GenerateThumbnailURLFromTransientURL(const GURL& transient_url, 66 GURL* url) const; 67 68 // Returns the latest most visited items sent by the browser. 69 void GetMostVisitedItems( 70 std::vector<InstantMostVisitedItemIDPair>* items) const; 71 72 // If the |most_visited_item_id| is found in the cache, sets |item| to it 73 // and returns true. 74 bool GetMostVisitedItemWithID(InstantRestrictedID most_visited_item_id, 75 InstantMostVisitedItem* item) const; 76 77 // Sends ChromeViewHostMsg_FocusOmnibox to the browser. 78 void Focus(); 79 80 // Sends ChromeViewHostMsg_SearchBoxNavigate to the browser. 81 void NavigateToURL(const GURL& url, 82 WindowOpenDisposition disposition, 83 bool is_most_visited_item_url); 84 85 // Sends ChromeViewHostMsg_SearchBoxPaste to the browser. 86 void Paste(const base::string16& text); 87 88 const ThemeBackgroundInfo& GetThemeBackgroundInfo(); 89 90 // Sends ChromeViewHostMsg_SetVoiceSearchSupported to the browser. 91 void SetVoiceSearchSupported(bool supported); 92 93 // Sends ChromeViewHostMsg_StartCapturingKeyStrokes to the browser. 94 void StartCapturingKeyStrokes(); 95 96 // Sends ChromeViewHostMsg_StopCapturingKeyStrokes to the browser. 97 void StopCapturingKeyStrokes(); 98 99 // Sends ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions to the 100 // browser. 101 void UndoAllMostVisitedDeletions(); 102 103 // Sends ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion to the browser. 104 void UndoMostVisitedDeletion(InstantRestrictedID most_visited_item_id); 105 106 bool app_launcher_enabled() const { return app_launcher_enabled_; } 107 bool is_focused() const { return is_focused_; } 108 bool is_input_in_progress() const { return is_input_in_progress_; } 109 bool is_key_capture_enabled() const { return is_key_capture_enabled_; } 110 bool display_instant_results() const { return display_instant_results_; } 111 const base::string16& query() const { return query_; } 112 int start_margin() const { return start_margin_; } 113 const InstantSuggestion& suggestion() const { return suggestion_; } 114 115 private: 116 // Overridden from content::RenderViewObserver: 117 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 118 119 void OnSetPageSequenceNumber(int page_seq_no); 120 void OnChromeIdentityCheckResult(const base::string16& identity, 121 bool identity_match); 122 void OnDetermineIfPageSupportsInstant(); 123 void OnFocusChanged(OmniboxFocusState new_focus_state, 124 OmniboxFocusChangeReason reason); 125 void OnMarginChange(int margin); 126 void OnMostVisitedChanged( 127 const std::vector<InstantMostVisitedItem>& items); 128 void OnPromoInformationReceived(bool is_app_launcher_enabled); 129 void OnSetDisplayInstantResults(bool display_instant_results); 130 void OnSetInputInProgress(bool input_in_progress); 131 void OnSetSuggestionToPrefetch(const InstantSuggestion& suggestion); 132 void OnSubmit(const base::string16& query); 133 void OnThemeChanged(const ThemeBackgroundInfo& theme_info); 134 void OnToggleVoiceSearch(); 135 136 // Returns the current zoom factor of the render view or 1 on failure. 137 double GetZoom() const; 138 139 // Sets the searchbox values to their initial value. 140 void Reset(); 141 142 // Returns the URL of the Most Visited item specified by the |item_id|. 143 GURL GetURLForMostVisitedItem(InstantRestrictedID item_id) const; 144 145 int page_seq_no_; 146 bool app_launcher_enabled_; 147 bool is_focused_; 148 bool is_input_in_progress_; 149 bool is_key_capture_enabled_; 150 bool display_instant_results_; 151 InstantRestrictedIDCache<InstantMostVisitedItem> most_visited_items_cache_; 152 ThemeBackgroundInfo theme_info_; 153 base::string16 query_; 154 int start_margin_; 155 InstantSuggestion suggestion_; 156 157 DISALLOW_COPY_AND_ASSIGN(SearchBox); 158 }; 159 160 #endif // CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_ 161