searchbox.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/renderer/searchbox/searchbox.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/render_messages.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/renderer/searchbox/searchbox_extension.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/render_view.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SearchBox::SearchBox(content::RenderView* render_view) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : content::RenderViewObserver(render_view), 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RenderViewObserverTracker<SearchBox>(render_view), 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verbatim_(false), 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_start_(0), 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_end_(0), 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) results_base_(0), 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_results_base_(0), 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_focused_(false), 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) active_tab_is_ntp_(false) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SearchBox::~SearchBox() { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::SetSuggestions( 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<InstantSuggestion>& suggestions) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!suggestions.empty() && 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) suggestions[0].behavior == INSTANT_COMPLETE_REPLACE) { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) query_ = suggestions[0].text; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verbatim_ = true; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_start_ = selection_end_ = query_.size(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Explicitly allow empty vector to be sent to the browser. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->Send(new ChromeViewHostMsg_SetSuggestions( 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetRoutingID(), render_view()->GetPageId(), suggestions)); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::ShowInstantPreview(InstantShownReason reason, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int height, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InstantSizeUnits units) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->Send(new ChromeViewHostMsg_ShowInstantPreview( 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetRoutingID(), render_view()->GetPageId(), reason, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) height, units)); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::Rect SearchBox::GetRect() { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Need to adjust for scale. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rect_.IsEmpty()) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rect_; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebView* web_view = render_view()->GetWebView(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!web_view) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rect_; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double zoom = WebKit::WebView::zoomLevelToZoomFactor(web_view->zoomLevel()); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (zoom == 0) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return rect_; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return gfx::Rect(static_cast<int>(static_cast<float>(rect_.x()) / zoom), 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<int>(static_cast<float>(rect_.y()) / zoom), 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<int>(static_cast<float>(rect_.width()) / zoom), 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_cast<int>(static_cast<float>(rect_.height()) / zoom)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const std::vector<InstantAutocompleteResult>& 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SearchBox::GetAutocompleteResults() { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Remember the last requested autocomplete_results to account for race 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // conditions between autocomplete providers returning new data and the user 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // clicking on a suggestion. 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_autocomplete_results_ = autocomplete_results_; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_results_base_ = results_base_; 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return autocomplete_results_; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const InstantAutocompleteResult* SearchBox::GetAutocompleteResultWithId( 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t restricted_id) const { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (restricted_id < last_results_base_ || 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) restricted_id >= last_results_base_ + last_autocomplete_results_.size()) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return &last_autocomplete_results_[restricted_id - last_results_base_]; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool SearchBox::OnMessageReceived(const IPC::Message& message) { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool handled = true; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_BEGIN_MESSAGE_MAP(SearchBox, message) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxChange, OnChange) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxSubmit, OnSubmit) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxCancel, OnCancel) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxResize, OnResize) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_DetermineIfPageSupportsInstant, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDetermineIfPageSupportsInstant) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxAutocompleteResults, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnAutocompleteResults) 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxUpOrDownKeyPressed, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnUpOrDownKeyPressed) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFocus, OnFocus) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxBlur, OnBlur) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxActiveTabModeChanged, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnActiveTabModeChanged) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_UNHANDLED(handled = false) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_END_MESSAGE_MAP() 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return handled; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnChange(const string16& query, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool verbatim, 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t selection_start, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t selection_end) { 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) query_ = query; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verbatim_ = verbatim; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_start_ = selection_start; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_end_ = selection_end; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchChange( 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnSubmit(const string16& query) { 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) query_ = query; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verbatim_ = true; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_start_ = selection_end_ = query_.size(); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchSubmit( 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Reset(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnCancel(const string16& query) { 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) query_ = query; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verbatim_ = true; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_start_ = selection_end_ = query_.size(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchCancel( 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Reset(); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnResize(const gfx::Rect& bounds) { 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rect_ = bounds; 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchResize( 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnDetermineIfPageSupportsInstant() { 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool result = extensions_v8::SearchBoxExtension::PageSupportsInstant( 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->Send(new ChromeViewHostMsg_InstantSupportDetermined( 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetRoutingID(), render_view()->GetPageId(), result)); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnAutocompleteResults( 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<InstantAutocompleteResult>& results) { 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) results_base_ += autocomplete_results_.size(); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) autocomplete_results_ = results; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchAutocompleteResults( 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnUpOrDownKeyPressed(int count) { 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchUpOrDownKeyPress( 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame(), count); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnFocus() { 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_focused_ = true; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchFocus( 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnBlur() { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_focused_ = false; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchBlur( 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::OnActiveTabModeChanged(bool active_tab_is_ntp) { 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) active_tab_is_ntp_ = active_tab_is_ntp; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extensions_v8::SearchBoxExtension::DispatchContextChange( 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) render_view()->GetWebView()->mainFrame()); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchBox::Reset() { 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) query_.clear(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) verbatim_ = false; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selection_start_ = selection_end_ = 0; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) results_base_ = 0; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rect_ = gfx::Rect(); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) autocomplete_results_.clear(); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) is_focused_ = false; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 207