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; |
} |