Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2431)

Unified Diff: chrome/browser/ui/search/instant_page.cc

Issue 17132011: Add setVoiceSearchSupported to the searchbox API. This will be used to determine whether to show a … (Closed) Base URL: https://git.chromium.org/chromium/src.git@master
Patch Set: Move listener to SearchTabHelper. Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/search/instant_page.cc
diff --git a/chrome/browser/ui/search/instant_page.cc b/chrome/browser/ui/search/instant_page.cc
index 8568d2e6298bcf02a1ae43fd57b2e04d30197168..d886566d46a32a30da7eb9306199b3814f459891 100644
--- a/chrome/browser/ui/search/instant_page.cc
+++ b/chrome/browser/ui/search/instant_page.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/search/instant_page.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/ui/search/search_tab_helper.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/navigation_controller.h"
@@ -19,6 +20,8 @@ InstantPage::Delegate::~Delegate() {
}
InstantPage::~InstantPage() {
+ if (contents())
+ GetSearchModel()->RemoveObserver(this);
}
bool InstantPage::supports_instant() const {
@@ -138,8 +141,17 @@ InstantPage::InstantPage(Delegate* delegate, const std::string& instant_url)
instant_support_determined_(false) {
}
-void InstantPage::SetContents(content::WebContents* contents) {
- Observe(contents);
+void InstantPage::SetContents(content::WebContents* web_contents) {
+ if (contents())
+ GetSearchModel()->RemoveObserver(this);
+
+ Observe(web_contents);
+
+ if (!web_contents)
+ return;
+
+ SearchModel* model = GetSearchModel();
+ model->AddObserver(this);
}
bool InstantPage::ShouldProcessRenderViewCreated() {
@@ -158,6 +170,10 @@ bool InstantPage::ShouldProcessSetSuggestions() {
return false;
}
+bool InstantPage::ShouldProcessSetVoiceSearchSupported() {
+ return false;
+}
+
bool InstantPage::ShouldProcessShowInstantOverlay() {
return false;
}
@@ -254,6 +270,19 @@ void InstantPage::DidFailProvisionalLoad(
delegate_->InstantPageLoadFailed(contents());
}
+void InstantPage::ModelChanged(const SearchModel::State& old_state,
+ const SearchModel::State& new_state) {
+ if (ShouldProcessSetVoiceSearchSupported() &&
+ old_state.voice_search_supported != new_state.voice_search_supported)
+ delegate_->SetVoiceSearchSupported(
+ contents(), new_state.voice_search_supported);
+}
+
+SearchModel* InstantPage::GetSearchModel() {
+ return contents() ?
+ SearchTabHelper::FromWebContents(contents())->model() : NULL;
+}
+
void InstantPage::OnSetSuggestions(
int page_id,
const std::vector<InstantSuggestion>& suggestions) {

Powered by Google App Engine
This is Rietveld 408576698