| Index: chrome/renderer/searchbox/searchbox.cc
|
| diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
|
| index 94ecfdcee7e3cfb8112f8076320785ad7cdfa3d4..b93e9cb695f7284c8bfc334431dcdb7f54139bac 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) {
|
| + query_ = suggestions[0].text;
|
| + verbatim_ = true;
|
| + selection_start_ = selection_end_ = query_.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,16 +66,19 @@ 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;
|
| }
|
|
|
| -void SearchBox::OnChange(const string16& value,
|
| +void SearchBox::OnChange(const string16& query,
|
| bool verbatim,
|
| size_t selection_start,
|
| size_t selection_end) {
|
| - value_ = value;
|
| + query_ = query;
|
| verbatim_ = verbatim;
|
| selection_start_ = selection_start;
|
| selection_end_ = selection_end;
|
| @@ -72,10 +88,10 @@ void SearchBox::OnChange(const string16& value,
|
| }
|
| }
|
|
|
| -void SearchBox::OnSubmit(const string16& value) {
|
| - value_ = value;
|
| +void SearchBox::OnSubmit(const string16& query) {
|
| + query_ = query;
|
| verbatim_ = true;
|
| - selection_start_ = selection_end_ = value_.size();
|
| + selection_start_ = selection_end_ = query_.size();
|
| if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
|
| extensions_v8::SearchBoxExtension::DispatchSubmit(
|
| render_view()->GetWebView()->mainFrame());
|
| @@ -83,10 +99,10 @@ void SearchBox::OnSubmit(const string16& value) {
|
| Reset();
|
| }
|
|
|
| -void SearchBox::OnCancel(const string16& value) {
|
| - value_ = value;
|
| +void SearchBox::OnCancel(const string16& query) {
|
| + query_ = query;
|
| verbatim_ = true;
|
| - selection_start_ = selection_end_ = value_.size();
|
| + selection_start_ = selection_end_ = query_.size();
|
| if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
|
| extensions_v8::SearchBoxExtension::DispatchCancel(
|
| render_view()->GetWebView()->mainFrame());
|
| @@ -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();
|
| + query_.clear();
|
| verbatim_ = false;
|
| selection_start_ = selection_end_ = 0;
|
| + results_base_ = 0;
|
| rect_ = gfx::Rect();
|
| + autocomplete_results_.clear();
|
| + key_code_ = 0;
|
| }
|
|
|