| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 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_TAB_HELPER_H_ | 5 #ifndef CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_H_ |
| 6 #define CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_H_ | 6 #define CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 namespace content { | 23 namespace content { |
| 24 class WebContents; | 24 class WebContents; |
| 25 struct LoadCommittedDetails; | 25 struct LoadCommittedDetails; |
| 26 } | 26 } |
| 27 | 27 |
| 28 class GURL; | 28 class GURL; |
| 29 class InstantPageTest; | 29 class InstantPageTest; |
| 30 class InstantService; | 30 class InstantService; |
| 31 class Profile; | 31 class Profile; |
| 32 class SearchIPCRouterTest; | 32 class SearchIPCRouterTest; |
| 33 class SearchTabHelperDelegate; |
| 33 | 34 |
| 34 // Per-tab search "helper". Acts as the owner and controller of the tab's | 35 // Per-tab search "helper". Acts as the owner and controller of the tab's |
| 35 // search UI model. | 36 // search UI model. |
| 36 // | 37 // |
| 37 // When the page is finished loading, SearchTabHelper determines the instant | 38 // When the page is finished loading, SearchTabHelper determines the instant |
| 38 // support for the page. When a navigation entry is committed (except for | 39 // support for the page. When a navigation entry is committed (except for |
| 39 // in-page navigations), SearchTabHelper resets the instant support state to | 40 // in-page navigations), SearchTabHelper resets the instant support state to |
| 40 // INSTANT_SUPPORT_UNKNOWN and cause support to be determined again. | 41 // INSTANT_SUPPORT_UNKNOWN and cause support to be determined again. |
| 41 class SearchTabHelper : public content::WebContentsObserver, | 42 class SearchTabHelper : public content::WebContentsObserver, |
| 42 public content::WebContentsUserData<SearchTabHelper>, | 43 public content::WebContentsUserData<SearchTabHelper>, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 | 86 |
| 86 // Called when the tab corresponding to |this| instance is deactivated. | 87 // Called when the tab corresponding to |this| instance is deactivated. |
| 87 void OnTabDeactivated(); | 88 void OnTabDeactivated(); |
| 88 | 89 |
| 89 // Tells the page to toggle voice search. | 90 // Tells the page to toggle voice search. |
| 90 void ToggleVoiceSearch(); | 91 void ToggleVoiceSearch(); |
| 91 | 92 |
| 92 // Returns true if the underlying page is a search results page. | 93 // Returns true if the underlying page is a search results page. |
| 93 bool IsSearchResultsPage(); | 94 bool IsSearchResultsPage(); |
| 94 | 95 |
| 96 void set_delegate(SearchTabHelperDelegate* delegate) { delegate_ = delegate; } |
| 97 |
| 95 private: | 98 private: |
| 96 friend class content::WebContentsUserData<SearchTabHelper>; | 99 friend class content::WebContentsUserData<SearchTabHelper>; |
| 97 friend class InstantPageTest; | 100 friend class InstantPageTest; |
| 98 friend class SearchIPCRouterPolicyTest; | 101 friend class SearchIPCRouterPolicyTest; |
| 99 friend class SearchIPCRouterTest; | 102 friend class SearchIPCRouterTest; |
| 100 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, | 103 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, |
| 101 DetermineIfPageSupportsInstant_Local); | 104 DetermineIfPageSupportsInstant_Local); |
| 102 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, | 105 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, |
| 103 DetermineIfPageSupportsInstant_NonLocal); | 106 DetermineIfPageSupportsInstant_NonLocal); |
| 104 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, | 107 FRIEND_TEST_ALL_PREFIXES(SearchTabHelperTest, |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 int position, const base::string16& provider) OVERRIDE; | 177 int position, const base::string16& provider) OVERRIDE; |
| 175 virtual void PasteIntoOmnibox(const base::string16& text) OVERRIDE; | 178 virtual void PasteIntoOmnibox(const base::string16& text) OVERRIDE; |
| 176 virtual void OnChromeIdentityCheck(const base::string16& identity) OVERRIDE; | 179 virtual void OnChromeIdentityCheck(const base::string16& identity) OVERRIDE; |
| 177 | 180 |
| 178 // Overridden from InstantServiceObserver: | 181 // Overridden from InstantServiceObserver: |
| 179 virtual void ThemeInfoChanged(const ThemeBackgroundInfo& theme_info) OVERRIDE; | 182 virtual void ThemeInfoChanged(const ThemeBackgroundInfo& theme_info) OVERRIDE; |
| 180 virtual void MostVisitedItemsChanged( | 183 virtual void MostVisitedItemsChanged( |
| 181 const std::vector<InstantMostVisitedItem>& items) OVERRIDE; | 184 const std::vector<InstantMostVisitedItem>& items) OVERRIDE; |
| 182 virtual void OmniboxStartMarginChanged(int omnibox_start_margin) OVERRIDE; | 185 virtual void OmniboxStartMarginChanged(int omnibox_start_margin) OVERRIDE; |
| 183 | 186 |
| 184 // Removes recommended URLs if a matching URL is already open in the Browser, | |
| 185 // if the Most Visited Tile Placement experiment is enabled, and the client is | |
| 186 // in the experiment group. | |
| 187 void MaybeRemoveMostVisitedItems(std::vector<InstantMostVisitedItem>* items); | |
| 188 | |
| 189 // Sets the mode of the model based on the current URL of web_contents(). | 187 // Sets the mode of the model based on the current URL of web_contents(). |
| 190 // Only updates the origin part of the mode if |update_origin| is true, | 188 // Only updates the origin part of the mode if |update_origin| is true, |
| 191 // otherwise keeps the current origin. If |is_preloaded_ntp| is true, the mode | 189 // otherwise keeps the current origin. If |is_preloaded_ntp| is true, the mode |
| 192 // is set to NTP regardless of the current URL; this is used to ensure that | 190 // is set to NTP regardless of the current URL; this is used to ensure that |
| 193 // InstantController can bind InstantTab to new tab pages immediately. | 191 // InstantController can bind InstantTab to new tab pages immediately. |
| 194 void UpdateMode(bool update_origin, bool is_preloaded_ntp); | 192 void UpdateMode(bool update_origin, bool is_preloaded_ntp); |
| 195 | 193 |
| 196 // Tells the renderer to determine if the page supports the Instant API, which | 194 // Tells the renderer to determine if the page supports the Instant API, which |
| 197 // results in a call to OnInstantSupportDetermined() when the reply is | 195 // results in a call to OnInstantSupportDetermined() when the reply is |
| 198 // received. | 196 // received. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 215 | 213 |
| 216 // Model object for UI that cares about search state. | 214 // Model object for UI that cares about search state. |
| 217 SearchModel model_; | 215 SearchModel model_; |
| 218 | 216 |
| 219 content::WebContents* web_contents_; | 217 content::WebContents* web_contents_; |
| 220 | 218 |
| 221 SearchIPCRouter ipc_router_; | 219 SearchIPCRouter ipc_router_; |
| 222 | 220 |
| 223 InstantService* instant_service_; | 221 InstantService* instant_service_; |
| 224 | 222 |
| 223 // Delegate for notifying our owner about the SearchTabHelper state. Not owned |
| 224 // by us. |
| 225 // NULL on iOS and Android because they don't use the Instant framework. |
| 226 SearchTabHelperDelegate* delegate_; |
| 227 |
| 225 DISALLOW_COPY_AND_ASSIGN(SearchTabHelper); | 228 DISALLOW_COPY_AND_ASSIGN(SearchTabHelper); |
| 226 }; | 229 }; |
| 227 | 230 |
| 228 #endif // CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_H_ | 231 #endif // CHROME_BROWSER_UI_SEARCH_SEARCH_TAB_HELPER_H_ |
| OLD | NEW |