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 #include "chrome/browser/ui/search/search_tab_helper.h" | 5 #include "chrome/browser/ui/search/search_tab_helper.h" |
6 | 6 |
7 #include "chrome/browser/profiles/profile.h" | 7 #include "chrome/browser/profiles/profile.h" |
8 #include "chrome/browser/search/search.h" | 8 #include "chrome/browser/search/search.h" |
9 #include "chrome/common/render_messages.h" | 9 #include "chrome/common/render_messages.h" |
10 #include "chrome/common/url_constants.h" | 10 #include "chrome/common/url_constants.h" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 // LoadCommittedDetails::type to be NAVIGATION_TYPE_IN_PAGE. Unfortunately, | 134 // LoadCommittedDetails::type to be NAVIGATION_TYPE_IN_PAGE. Unfortunately, |
135 // they are different in some cases. To workaround this bug, we are checking | 135 // they are different in some cases. To workaround this bug, we are checking |
136 // (is_in_page || type == NAVIGATION_TYPE_IN_PAGE). Please refer to | 136 // (is_in_page || type == NAVIGATION_TYPE_IN_PAGE). Please refer to |
137 // crbug.com/251330 for more details. | 137 // crbug.com/251330 for more details. |
138 if (load_details->is_in_page || | 138 if (load_details->is_in_page || |
139 load_details->type == content::NAVIGATION_TYPE_IN_PAGE) { | 139 load_details->type == content::NAVIGATION_TYPE_IN_PAGE) { |
140 return; | 140 return; |
141 } | 141 } |
142 | 142 |
143 model_.SetInstantSupportState(INSTANT_SUPPORT_UNKNOWN); | 143 model_.SetInstantSupportState(INSTANT_SUPPORT_UNKNOWN); |
| 144 model_.SetVoiceSearchSupported(false); |
144 } | 145 } |
145 | 146 |
146 bool SearchTabHelper::OnMessageReceived(const IPC::Message& message) { | 147 bool SearchTabHelper::OnMessageReceived(const IPC::Message& message) { |
147 bool handled = true; | 148 bool handled = true; |
148 IPC_BEGIN_MESSAGE_MAP(SearchTabHelper, message) | 149 IPC_BEGIN_MESSAGE_MAP(SearchTabHelper, message) |
149 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SearchBoxShowBars, | 150 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SearchBoxShowBars, |
150 OnSearchBoxShowBars) | 151 OnSearchBoxShowBars) |
151 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SearchBoxHideBars, | 152 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SearchBoxHideBars, |
152 OnSearchBoxHideBars) | 153 OnSearchBoxHideBars) |
153 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_InstantSupportDetermined, | 154 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_InstantSupportDetermined, |
154 OnInstantSupportDetermined) | 155 OnInstantSupportDetermined) |
| 156 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SetVoiceSearchSupported, |
| 157 OnSetVoiceSearchSupported) |
155 IPC_MESSAGE_UNHANDLED(handled = false) | 158 IPC_MESSAGE_UNHANDLED(handled = false) |
156 IPC_END_MESSAGE_MAP() | 159 IPC_END_MESSAGE_MAP() |
157 return handled; | 160 return handled; |
158 } | 161 } |
159 | 162 |
160 void SearchTabHelper::DidFinishLoad( | 163 void SearchTabHelper::DidFinishLoad( |
161 int64 /* frame_id */, | 164 int64 /* frame_id */, |
162 const GURL& /* validated_url */, | 165 const GURL& /* validated_url */, |
163 bool is_main_frame, | 166 bool is_main_frame, |
164 content::RenderViewHost* /* render_view_host */) { | 167 content::RenderViewHost* /* render_view_host */) { |
(...skipping 11 matching lines...) Expand all Loading... |
176 type = SearchMode::MODE_SEARCH_RESULTS; | 179 type = SearchMode::MODE_SEARCH_RESULTS; |
177 origin = SearchMode::ORIGIN_SEARCH; | 180 origin = SearchMode::ORIGIN_SEARCH; |
178 } | 181 } |
179 if (user_input_in_progress_) | 182 if (user_input_in_progress_) |
180 type = SearchMode::MODE_SEARCH_SUGGESTIONS; | 183 type = SearchMode::MODE_SEARCH_SUGGESTIONS; |
181 | 184 |
182 if (type == SearchMode::MODE_NTP && origin == SearchMode::ORIGIN_NTP && | 185 if (type == SearchMode::MODE_NTP && origin == SearchMode::ORIGIN_NTP && |
183 !popup_is_open_ && !user_text_is_empty_) { | 186 !popup_is_open_ && !user_text_is_empty_) { |
184 // We're switching back (|popup_is_open_| is false) to an NTP (type and | 187 // We're switching back (|popup_is_open_| is false) to an NTP (type and |
185 // mode are |NTP|) with suggestions (|user_text_is_empty_| is false), don't | 188 // mode are |NTP|) with suggestions (|user_text_is_empty_| is false), don't |
186 // modify visibility of top bars. This specific omnibox state is set when | 189 // modify visibility of top bars or voice search support. This specific |
187 // OmniboxEditModelChanged() is called from | 190 // omnibox state is set when OmniboxEditModelChanged() is called from |
188 // OmniboxEditModel::SetInputInProgress() which is called from | 191 // OmniboxEditModel::SetInputInProgress() which is called from |
189 // OmniboxEditModel::Revert(). | 192 // OmniboxEditModel::Revert(). |
190 model_.SetState(SearchModel::State(SearchMode(type, origin), | 193 model_.SetState(SearchModel::State(SearchMode(type, origin), |
191 model_.state().top_bars_visible, | 194 model_.state().top_bars_visible, |
192 model_.instant_support())); | 195 model_.instant_support(), |
| 196 model_.state().voice_search_supported)); |
193 } else { | 197 } else { |
194 model_.SetMode(SearchMode(type, origin)); | 198 model_.SetMode(SearchMode(type, origin)); |
195 } | 199 } |
196 } | 200 } |
197 | 201 |
198 void SearchTabHelper::DetermineIfPageSupportsInstant() { | 202 void SearchTabHelper::DetermineIfPageSupportsInstant() { |
199 Profile* profile = | 203 Profile* profile = |
200 Profile::FromBrowserContext(web_contents_->GetBrowserContext()); | 204 Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
201 if (!chrome::ShouldAssignURLToInstantRenderer(web_contents_->GetURL(), | 205 if (!chrome::ShouldAssignURLToInstantRenderer(web_contents_->GetURL(), |
202 profile)) { | 206 profile)) { |
(...skipping 22 matching lines...) Expand all Loading... |
225 if (web_contents()->IsActiveEntry(page_id)) | 229 if (web_contents()->IsActiveEntry(page_id)) |
226 model_.SetTopBarsVisible(true); | 230 model_.SetTopBarsVisible(true); |
227 } | 231 } |
228 | 232 |
229 void SearchTabHelper::OnSearchBoxHideBars(int page_id) { | 233 void SearchTabHelper::OnSearchBoxHideBars(int page_id) { |
230 if (web_contents()->IsActiveEntry(page_id)) { | 234 if (web_contents()->IsActiveEntry(page_id)) { |
231 model_.SetTopBarsVisible(false); | 235 model_.SetTopBarsVisible(false); |
232 Send(new ChromeViewMsg_SearchBoxBarsHidden(routing_id())); | 236 Send(new ChromeViewMsg_SearchBoxBarsHidden(routing_id())); |
233 } | 237 } |
234 } | 238 } |
| 239 |
| 240 void SearchTabHelper::OnSetVoiceSearchSupported(int page_id, bool supported) { |
| 241 if (web_contents()->IsActiveEntry(page_id)) |
| 242 model_.SetVoiceSearchSupported(supported); |
| 243 } |
OLD | NEW |