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

Unified Diff: chrome/renderer/searchbox/searchbox.cc

Issue 10809063: Adding Javascript support for the Extended Searchbox API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Syncing to pickup moved searchbox code. Created 8 years, 4 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/renderer/searchbox/searchbox.cc
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
index 94ecfdcee7e3cfb8112f8076320785ad7cdfa3d4..d12f2d970837f8bd076090c92f4a062c2291aef2 100644
--- a/chrome/renderer/searchbox/searchbox.cc
+++ b/chrome/renderer/searchbox/searchbox.cc
@@ -14,18 +14,31 @@ SearchBox::SearchBox(content::RenderView* render_view)
content::RenderViewObserverTracker<SearchBox>(render_view),
verbatim_(false),
selection_start_(0),
- selection_end_(0) {
+ selection_end_(0),
+ results_base_(0),
+ key_code_(0) {
}
SearchBox::~SearchBox() {
}
-void SearchBox::SetSuggestions(const std::vector<string16>& suggestions,
- InstantCompleteBehavior behavior) {
+void SearchBox::SetSuggestions(
+ const std::vector<InstantSuggestion>& suggestions) {
+ if (!suggestions.empty() &&
+ suggestions[0].behavior == INSTANT_COMPLETE_REPLACE) {
+ value_ = suggestions[0].text;
+ verbatim_ = true;
+ selection_start_ = selection_end_ = value_.size();
+ }
// Explicitly allow empty vector to be sent to the browser.
render_view()->Send(new ChromeViewHostMsg_SetSuggestions(
- render_view()->GetRoutingID(), render_view()->GetPageId(), suggestions,
- behavior));
+ render_view()->GetRoutingID(), render_view()->GetPageId(), suggestions));
+}
+
+void SearchBox::SetInstantPreviewHeight(int height, InstantSizeUnits units) {
+ render_view()->Send(new ChromeViewHostMsg_SetInstantPreviewHeight(
+ render_view()->GetRoutingID(), render_view()->GetPageId(), height,
+ units));
}
gfx::Rect SearchBox::GetRect() {
@@ -53,6 +66,9 @@ bool SearchBox::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxResize, OnResize)
IPC_MESSAGE_HANDLER(ChromeViewMsg_DetermineIfPageSupportsInstant,
OnDetermineIfPageSupportsInstant)
+ IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxAutocompleteResults,
+ OnAutocompleteResults)
+ IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxKeyPress, OnKeyPress)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -111,9 +127,30 @@ void SearchBox::OnDetermineIfPageSupportsInstant() {
}
}
+void SearchBox::OnAutocompleteResults(
+ const std::vector<InstantAutocompleteResult>& results) {
+ results_base_ += autocomplete_results_.size();
+ autocomplete_results_ = results;
+ if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
+ extensions_v8::SearchBoxExtension::DispatchAutocompleteResults(
+ render_view()->GetWebView()->mainFrame());
+ }
+}
+
+void SearchBox::OnKeyPress(int key_code) {
+ key_code_ = key_code;
+ if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
+ extensions_v8::SearchBoxExtension::DispatchKeyPress(
+ render_view()->GetWebView()->mainFrame());
+ }
+}
+
void SearchBox::Reset() {
value_.clear();
verbatim_ = false;
selection_start_ = selection_end_ = 0;
+ results_base_ = 0;
rect_ = gfx::Rect();
+ autocomplete_results_.clear();
+ key_code_ = 0;
}

Powered by Google App Engine
This is Rietveld 408576698