Chromium Code Reviews| Index: chrome/renderer/searchbox.cc |
| diff --git a/chrome/renderer/searchbox.cc b/chrome/renderer/searchbox.cc |
| index a662713700c73019f9d535d4aeb35e3a77104c28..4e1084ed9760b83d9954c7b1caf5fd19bf89a262 100644 |
| --- a/chrome/renderer/searchbox.cc |
| +++ b/chrome/renderer/searchbox.cc |
| @@ -4,6 +4,7 @@ |
| #include "chrome/renderer/searchbox.h" |
| +#include "base/utf_string_conversions.h" |
|
sreeram
2012/08/09 22:13:51
We don't need this header, right?
Shishir
2012/08/10 18:16:57
Done.
|
| #include "chrome/common/render_messages.h" |
| #include "chrome/renderer/searchbox_extension.h" |
| #include "content/public/renderer/render_view.h" |
| @@ -14,18 +15,32 @@ SearchBox::SearchBox(content::RenderView* render_view) |
| content::RenderViewObserverTracker<SearchBox>(render_view), |
| verbatim_(false), |
| selection_start_(0), |
| - selection_end_(0) { |
| + selection_end_(0), |
| + rid_base_(0), |
| + key_code_(0), |
| + is_focused_(false) { |
| } |
| 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 +68,13 @@ bool SearchBox::OnMessageReceived(const IPC::Message& message) { |
| IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxResize, OnResize) |
| IPC_MESSAGE_HANDLER(ChromeViewMsg_DetermineIfPageSupportsInstant, |
| OnDetermineIfPageSupportsInstant) |
| + IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxInstantAutocompleteResults, |
| + OnInstantAutocompleteResults) |
| + IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxKeyPress, OnKeyPress) |
| + IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxLastQuery, OnLastQuery) |
| + IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxCurrentURL, OnCurrentURL) |
| + IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFocused, OnFocused) |
| + IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxBlurred, OnBlurred) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| return handled; |
| @@ -111,9 +133,58 @@ void SearchBox::OnDetermineIfPageSupportsInstant() { |
| } |
| } |
| +void SearchBox::OnInstantAutocompleteResults( |
| + const std::vector<InstantAutocompleteResult>& results) { |
| + rid_base_ += instant_autocomplete_results_.size(); |
| + instant_autocomplete_results_ = results; |
| + if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { |
| + extensions_v8::SearchBoxExtension::DispatchNativeSuggestions( |
| + 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::OnLastQuery(const string16& last_query) { |
| + last_query_ = last_query; |
| +} |
| + |
| +void SearchBox::OnCurrentURL(const string16& current_url) { |
| + current_url_ = current_url; |
| +} |
| + |
| +void SearchBox::OnFocused() { |
| + is_focused_ = true; |
| + if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { |
| + extensions_v8::SearchBoxExtension::DispatchFocus( |
| + render_view()->GetWebView()->mainFrame()); |
| + } |
| +} |
| + |
| +void SearchBox::OnBlurred() { |
| + is_focused_ = false; |
| + if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { |
| + extensions_v8::SearchBoxExtension::DispatchBlur( |
| + render_view()->GetWebView()->mainFrame()); |
| + } |
| +} |
| + |
| + |
| void SearchBox::Reset() { |
| value_.clear(); |
| verbatim_ = false; |
| selection_start_ = selection_end_ = 0; |
| + rid_base_ = 0; |
| rect_ = gfx::Rect(); |
| + instant_autocomplete_results_.clear(); |
| + key_code_ = 0; |
| + last_query_.clear(); |
| + current_url_.clear(); |
| + is_focused_ = false; |
| } |