OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_H_ | 5 #ifndef CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_H_ |
6 #define CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_H_ | 6 #define CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_H_ |
7 | 7 |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 class SearchIPCRouter : public content::WebContentsObserver { | 29 class SearchIPCRouter : public content::WebContentsObserver { |
30 public: | 30 public: |
31 // SearchIPCRouter calls its delegate in response to messages received from | 31 // SearchIPCRouter calls its delegate in response to messages received from |
32 // the page. | 32 // the page. |
33 class Delegate { | 33 class Delegate { |
34 public: | 34 public: |
35 // Called upon determination of Instant API support in response to the page | 35 // Called upon determination of Instant API support in response to the page |
36 // load event. | 36 // load event. |
37 virtual void OnInstantSupportDetermined(bool supports_instant) = 0; | 37 virtual void OnInstantSupportDetermined(bool supports_instant) = 0; |
38 | 38 |
39 // Called upon determination of voice search API support. | |
40 virtual void OnSetVoiceSearchSupport(bool supports_voice_search) = 0; | |
41 | |
42 // Called when the page wants the omnibox to be focused. |state| specifies | 39 // Called when the page wants the omnibox to be focused. |state| specifies |
43 // the omnibox focus state. | 40 // the omnibox focus state. |
44 virtual void FocusOmnibox(OmniboxFocusState state) = 0; | 41 virtual void FocusOmnibox(OmniboxFocusState state) = 0; |
45 | 42 |
46 // Called when the page wants to navigate to |url|. Usually used by the | 43 // Called when the page wants to navigate to |url|. Usually used by the |
47 // page to navigate to privileged destinations (e.g. chrome:// URLs) or to | 44 // page to navigate to privileged destinations (e.g. chrome:// URLs) or to |
48 // navigate to URLs that are hidden from the page using Restricted IDs (rid | 45 // navigate to URLs that are hidden from the page using Restricted IDs (rid |
49 // in the API). | 46 // in the API). |
50 virtual void NavigateToURL(const GURL& url, | 47 virtual void NavigateToURL(const GURL& url, |
51 WindowOpenDisposition disposition, | 48 WindowOpenDisposition disposition, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 | 90 |
94 // An interface to be implemented by consumers of SearchIPCRouter objects to | 91 // An interface to be implemented by consumers of SearchIPCRouter objects to |
95 // decide whether to process the message received from the page, and vice | 92 // decide whether to process the message received from the page, and vice |
96 // versa (decide whether to send messages to the page). | 93 // versa (decide whether to send messages to the page). |
97 class Policy { | 94 class Policy { |
98 public: | 95 public: |
99 virtual ~Policy() {} | 96 virtual ~Policy() {} |
100 | 97 |
101 // SearchIPCRouter calls these functions before sending/receiving messages | 98 // SearchIPCRouter calls these functions before sending/receiving messages |
102 // to/from the page. | 99 // to/from the page. |
103 virtual bool ShouldProcessSetVoiceSearchSupport() = 0; | |
104 virtual bool ShouldProcessFocusOmnibox(bool is_active_tab) = 0; | 100 virtual bool ShouldProcessFocusOmnibox(bool is_active_tab) = 0; |
105 virtual bool ShouldProcessNavigateToURL(bool is_active_tab) = 0; | 101 virtual bool ShouldProcessNavigateToURL(bool is_active_tab) = 0; |
106 virtual bool ShouldProcessDeleteMostVisitedItem() = 0; | 102 virtual bool ShouldProcessDeleteMostVisitedItem() = 0; |
107 virtual bool ShouldProcessUndoMostVisitedDeletion() = 0; | 103 virtual bool ShouldProcessUndoMostVisitedDeletion() = 0; |
108 virtual bool ShouldProcessUndoAllMostVisitedDeletions() = 0; | 104 virtual bool ShouldProcessUndoAllMostVisitedDeletions() = 0; |
109 virtual bool ShouldProcessLogEvent() = 0; | 105 virtual bool ShouldProcessLogEvent() = 0; |
110 virtual bool ShouldProcessPasteIntoOmnibox(bool is_active_tab) = 0; | 106 virtual bool ShouldProcessPasteIntoOmnibox(bool is_active_tab) = 0; |
111 virtual bool ShouldProcessChromeIdentityCheck() = 0; | 107 virtual bool ShouldProcessChromeIdentityCheck() = 0; |
112 virtual bool ShouldProcessHistorySyncCheck() = 0; | 108 virtual bool ShouldProcessHistorySyncCheck() = 0; |
113 virtual bool ShouldSendSetPromoInformation() = 0; | 109 virtual bool ShouldSendSetPromoInformation() = 0; |
114 virtual bool ShouldSendSetDisplayInstantResults() = 0; | 110 virtual bool ShouldSendSetDisplayInstantResults() = 0; |
115 virtual bool ShouldSendSetSuggestionToPrefetch() = 0; | 111 virtual bool ShouldSendSetSuggestionToPrefetch() = 0; |
116 virtual bool ShouldSendSetOmniboxStartMargin() = 0; | 112 virtual bool ShouldSendSetOmniboxStartMargin() = 0; |
117 virtual bool ShouldSendSetInputInProgress(bool is_active_tab) = 0; | 113 virtual bool ShouldSendSetInputInProgress(bool is_active_tab) = 0; |
118 virtual bool ShouldSendOmniboxFocusChanged() = 0; | 114 virtual bool ShouldSendOmniboxFocusChanged() = 0; |
119 virtual bool ShouldSendMostVisitedItems() = 0; | 115 virtual bool ShouldSendMostVisitedItems() = 0; |
120 virtual bool ShouldSendThemeBackgroundInfo() = 0; | 116 virtual bool ShouldSendThemeBackgroundInfo() = 0; |
121 virtual bool ShouldSendToggleVoiceSearch() = 0; | |
122 virtual bool ShouldSubmitQuery() = 0; | 117 virtual bool ShouldSubmitQuery() = 0; |
123 }; | 118 }; |
124 | 119 |
125 SearchIPCRouter(content::WebContents* web_contents, Delegate* delegate, | 120 SearchIPCRouter(content::WebContents* web_contents, Delegate* delegate, |
126 scoped_ptr<Policy> policy); | 121 scoped_ptr<Policy> policy); |
127 ~SearchIPCRouter() override; | 122 ~SearchIPCRouter() override; |
128 | 123 |
129 // Tells the SearchIPCRouter that a new page in an Instant process committed. | 124 // Tells the SearchIPCRouter that a new page in an Instant process committed. |
130 void OnNavigationEntryCommitted(); | 125 void OnNavigationEntryCommitted(); |
131 | 126 |
(...skipping 28 matching lines...) Expand all Loading... |
160 // Tells the page that the omnibox focus has changed. | 155 // Tells the page that the omnibox focus has changed. |
161 void OmniboxFocusChanged(OmniboxFocusState state, | 156 void OmniboxFocusChanged(OmniboxFocusState state, |
162 OmniboxFocusChangeReason reason); | 157 OmniboxFocusChangeReason reason); |
163 | 158 |
164 // Tells the renderer about the most visited items. | 159 // Tells the renderer about the most visited items. |
165 void SendMostVisitedItems(const std::vector<InstantMostVisitedItem>& items); | 160 void SendMostVisitedItems(const std::vector<InstantMostVisitedItem>& items); |
166 | 161 |
167 // Tells the renderer about the current theme background. | 162 // Tells the renderer about the current theme background. |
168 void SendThemeBackgroundInfo(const ThemeBackgroundInfo& theme_info); | 163 void SendThemeBackgroundInfo(const ThemeBackgroundInfo& theme_info); |
169 | 164 |
170 // Tells the page to toggle voice search. | |
171 void ToggleVoiceSearch(); | |
172 | |
173 // Tells the page that the user pressed Enter in the omnibox. | 165 // Tells the page that the user pressed Enter in the omnibox. |
174 void Submit(const base::string16& text, | 166 void Submit(const base::string16& text, |
175 const EmbeddedSearchRequestParams& params); | 167 const EmbeddedSearchRequestParams& params); |
176 | 168 |
177 // Called when the tab corresponding to |this| instance is activated. | 169 // Called when the tab corresponding to |this| instance is activated. |
178 void OnTabActivated(); | 170 void OnTabActivated(); |
179 | 171 |
180 // Called when the tab corresponding to |this| instance is deactivated. | 172 // Called when the tab corresponding to |this| instance is deactivated. |
181 void OnTabDeactivated(); | 173 void OnTabDeactivated(); |
182 | 174 |
183 private: | 175 private: |
184 friend class SearchIPCRouterPolicyTest; | 176 friend class SearchIPCRouterPolicyTest; |
185 friend class SearchIPCRouterTest; | 177 friend class SearchIPCRouterTest; |
186 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, | 178 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, |
187 DetermineIfPageSupportsInstant_Local); | 179 DetermineIfPageSupportsInstant_Local); |
188 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, | 180 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, |
189 DetermineIfPageSupportsInstant_NonLocal); | 181 DetermineIfPageSupportsInstant_NonLocal); |
190 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, | 182 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, |
191 PageURLDoesntBelongToInstantRenderer); | 183 PageURLDoesntBelongToInstantRenderer); |
192 FRIEND_TEST_ALL_PREFIXES(SearchIPCRouterTest, | 184 FRIEND_TEST_ALL_PREFIXES(SearchIPCRouterTest, |
193 IgnoreMessageIfThePageIsNotActive); | 185 IgnoreMessageIfThePageIsNotActive); |
194 FRIEND_TEST_ALL_PREFIXES(SearchIPCRouterTest, | 186 FRIEND_TEST_ALL_PREFIXES(SearchIPCRouterTest, |
195 DoNotSendSetDisplayInstantResultsMsg); | 187 DoNotSendSetDisplayInstantResultsMsg); |
196 FRIEND_TEST_ALL_PREFIXES(SearchIPCRouterTest, HandleTabChangedEvents); | 188 FRIEND_TEST_ALL_PREFIXES(SearchIPCRouterTest, HandleTabChangedEvents); |
197 | 189 |
198 // Overridden from contents::WebContentsObserver: | 190 // Overridden from contents::WebContentsObserver: |
199 bool OnMessageReceived(const IPC::Message& message) override; | 191 bool OnMessageReceived(const IPC::Message& message) override; |
200 | 192 |
201 void OnInstantSupportDetermined(int page_seq_no, bool supports_instant) const; | 193 void OnInstantSupportDetermined(int page_seq_no, bool supports_instant) const; |
202 void OnVoiceSearchSupportDetermined(int page_id, | |
203 bool supports_voice_search) const; | |
204 void OnFocusOmnibox(int page_id, OmniboxFocusState state) const; | 194 void OnFocusOmnibox(int page_id, OmniboxFocusState state) const; |
205 void OnSearchBoxNavigate(int page_id, | 195 void OnSearchBoxNavigate(int page_id, |
206 const GURL& url, | 196 const GURL& url, |
207 WindowOpenDisposition disposition, | 197 WindowOpenDisposition disposition, |
208 bool is_most_visited_item_url) const; | 198 bool is_most_visited_item_url) const; |
209 void OnDeleteMostVisitedItem(int page_seq_no, const GURL& url) const; | 199 void OnDeleteMostVisitedItem(int page_seq_no, const GURL& url) const; |
210 void OnUndoMostVisitedDeletion(int page_seq_no, const GURL& url) const; | 200 void OnUndoMostVisitedDeletion(int page_seq_no, const GURL& url) const; |
211 void OnUndoAllMostVisitedDeletions(int page_seq_no) const; | 201 void OnUndoAllMostVisitedDeletions(int page_seq_no) const; |
212 void OnLogEvent(int page_seq_no, | 202 void OnLogEvent(int page_seq_no, |
213 NTPLoggingEventType event, | 203 NTPLoggingEventType event, |
(...skipping 29 matching lines...) Expand all Loading... |
243 // SearchIPCRouter to ensure that delayed IPC replies are ignored. | 233 // SearchIPCRouter to ensure that delayed IPC replies are ignored. |
244 int commit_counter_; | 234 int commit_counter_; |
245 | 235 |
246 // Set to true, when the tab corresponding to |this| instance is active. | 236 // Set to true, when the tab corresponding to |this| instance is active. |
247 bool is_active_tab_; | 237 bool is_active_tab_; |
248 | 238 |
249 DISALLOW_COPY_AND_ASSIGN(SearchIPCRouter); | 239 DISALLOW_COPY_AND_ASSIGN(SearchIPCRouter); |
250 }; | 240 }; |
251 | 241 |
252 #endif // CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_H_ | 242 #endif // CHROME_BROWSER_UI_SEARCH_SEARCH_IPC_ROUTER_H_ |
OLD | NEW |