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

Side by Side Diff: chrome/renderer/searchbox/searchbox.cc

Issue 14646034: Add onfocuschange to the Extended Search API, with associated isFocused attribute. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Trying again after rebase master. Created 7 years, 6 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 unified diff | Download patch
« no previous file with comments | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_extension.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/searchbox/searchbox.h" 5 #include "chrome/renderer/searchbox/searchbox.h"
6 6
7 #include "base/string_number_conversions.h" 7 #include "base/string_number_conversions.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/common/chrome_switches.h" 9 #include "chrome/common/chrome_switches.h"
10 #include "chrome/common/omnibox_focus_state.h" 10 #include "chrome/common/omnibox_focus_state.h"
(...skipping 16 matching lines...) Expand all
27 } // namespace 27 } // namespace
28 28
29 SearchBox::SearchBox(content::RenderView* render_view) 29 SearchBox::SearchBox(content::RenderView* render_view)
30 : content::RenderViewObserver(render_view), 30 : content::RenderViewObserver(render_view),
31 content::RenderViewObserverTracker<SearchBox>(render_view), 31 content::RenderViewObserverTracker<SearchBox>(render_view),
32 verbatim_(false), 32 verbatim_(false),
33 query_is_restricted_(false), 33 query_is_restricted_(false),
34 selection_start_(0), 34 selection_start_(0),
35 selection_end_(0), 35 selection_end_(0),
36 start_margin_(0), 36 start_margin_(0),
37 is_focused_(false),
37 is_key_capture_enabled_(false), 38 is_key_capture_enabled_(false),
38 display_instant_results_(false), 39 display_instant_results_(false),
39 omnibox_font_size_(0), 40 omnibox_font_size_(0),
40 autocomplete_results_cache_(kMaxInstantAutocompleteResultItemCacheSize), 41 autocomplete_results_cache_(kMaxInstantAutocompleteResultItemCacheSize),
41 most_visited_items_cache_(kMaxInstantMostVisitedItemCacheSize) { 42 most_visited_items_cache_(kMaxInstantMostVisitedItemCacheSize) {
42 } 43 }
43 44
44 SearchBox::~SearchBox() { 45 SearchBox::~SearchBox() {
45 } 46 }
46 47
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 OnDetermineIfPageSupportsInstant) 166 OnDetermineIfPageSupportsInstant)
166 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxAutocompleteResults, 167 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxAutocompleteResults,
167 OnAutocompleteResults) 168 OnAutocompleteResults)
168 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxUpOrDownKeyPressed, 169 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxUpOrDownKeyPressed,
169 OnUpOrDownKeyPressed) 170 OnUpOrDownKeyPressed)
170 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxEscKeyPressed, OnEscKeyPressed) 171 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxEscKeyPressed, OnEscKeyPressed)
171 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxCancelSelection, 172 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxCancelSelection,
172 OnCancelSelection) 173 OnCancelSelection)
173 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxSetDisplayInstantResults, 174 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxSetDisplayInstantResults,
174 OnSetDisplayInstantResults) 175 OnSetDisplayInstantResults)
175 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxKeyCaptureChanged, 176 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFocusChanged, OnFocusChanged)
176 OnKeyCaptureChange)
177 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxThemeChanged, 177 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxThemeChanged,
178 OnThemeChanged) 178 OnThemeChanged)
179 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFontInformation, 179 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxFontInformation,
180 OnFontInformationReceived) 180 OnFontInformationReceived)
181 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxMostVisitedItemsChanged, 181 IPC_MESSAGE_HANDLER(ChromeViewMsg_SearchBoxMostVisitedItemsChanged,
182 OnMostVisitedChanged) 182 OnMostVisitedChanged)
183 IPC_MESSAGE_UNHANDLED(handled = false) 183 IPC_MESSAGE_UNHANDLED(handled = false)
184 IPC_END_MESSAGE_MAP() 184 IPC_END_MESSAGE_MAP()
185 return handled; 185 return handled;
186 } 186 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 SetQuery(query, verbatim); 317 SetQuery(query, verbatim);
318 selection_start_ = selection_start; 318 selection_start_ = selection_start;
319 selection_end_ = selection_end; 319 selection_end_ = selection_end;
320 if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 320 if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) {
321 DVLOG(1) << render_view() << " OnKeyPress ESC"; 321 DVLOG(1) << render_view() << " OnKeyPress ESC";
322 extensions_v8::SearchBoxExtension::DispatchEscKeyPress( 322 extensions_v8::SearchBoxExtension::DispatchEscKeyPress(
323 render_view()->GetWebView()->mainFrame()); 323 render_view()->GetWebView()->mainFrame());
324 } 324 }
325 } 325 }
326 326
327 void SearchBox::OnKeyCaptureChange(bool is_key_capture_enabled) { 327 void SearchBox::OnFocusChanged(OmniboxFocusState new_focus_state,
328 if (is_key_capture_enabled != is_key_capture_enabled_ && 328 OmniboxFocusChangeReason reason) {
329 render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { 329 bool key_capture_enabled = new_focus_state == OMNIBOX_FOCUS_INVISIBLE;
330 is_key_capture_enabled_ = is_key_capture_enabled; 330 if (key_capture_enabled != is_key_capture_enabled_) {
331 DVLOG(1) << render_view() << " OnKeyCaptureChange"; 331 // Tell the page if the key capture mode changed unless the focus state
332 extensions_v8::SearchBoxExtension::DispatchKeyCaptureChange( 332 // changed because of TYPING. This is because in that case, the browser
333 // hasn't really stopped capturing key strokes.
334 //
335 // (More practically, if we don't do this check, the page would receive
336 // onkeycapturechange before the corresponding onchange, and the page would
337 // have no way of telling whether the keycapturechange happened because of
338 // some actual user action or just because they started typing.)
339 if (reason != OMNIBOX_FOCUS_CHANGE_TYPING &&
340 render_view()->GetWebView() &&
341 render_view()->GetWebView()->mainFrame()) {
342 is_key_capture_enabled_ = key_capture_enabled;
343 DVLOG(1) << render_view() << " OnKeyCaptureChange";
344 extensions_v8::SearchBoxExtension::DispatchKeyCaptureChange(
345 render_view()->GetWebView()->mainFrame());
346 }
347 }
348 bool is_focused = new_focus_state == OMNIBOX_FOCUS_VISIBLE;
349 if (is_focused != is_focused_) {
350 is_focused_ = is_focused;
351 DVLOG(1) << render_view() << " OnFocusChange";
352 extensions_v8::SearchBoxExtension::DispatchFocusChange(
333 render_view()->GetWebView()->mainFrame()); 353 render_view()->GetWebView()->mainFrame());
334 } 354 }
335 } 355 }
336 356
337 void SearchBox::OnSetDisplayInstantResults(bool display_instant_results) { 357 void SearchBox::OnSetDisplayInstantResults(bool display_instant_results) {
338 display_instant_results_ = display_instant_results; 358 display_instant_results_ = display_instant_results;
339 } 359 }
340 360
341 void SearchBox::OnThemeChanged(const ThemeBackgroundInfo& theme_info) { 361 void SearchBox::OnThemeChanged(const ThemeBackgroundInfo& theme_info) {
342 theme_info_ = theme_info; 362 theme_info_ = theme_info;
(...skipping 20 matching lines...) Expand all
363 } 383 }
364 384
365 void SearchBox::Reset() { 385 void SearchBox::Reset() {
366 query_.clear(); 386 query_.clear();
367 verbatim_ = false; 387 verbatim_ = false;
368 query_is_restricted_ = false; 388 query_is_restricted_ = false;
369 selection_start_ = 0; 389 selection_start_ = 0;
370 selection_end_ = 0; 390 selection_end_ = 0;
371 popup_bounds_ = gfx::Rect(); 391 popup_bounds_ = gfx::Rect();
372 start_margin_ = 0; 392 start_margin_ = 0;
393 is_focused_ = false;
373 is_key_capture_enabled_ = false; 394 is_key_capture_enabled_ = false;
374 theme_info_ = ThemeBackgroundInfo(); 395 theme_info_ = ThemeBackgroundInfo();
375 // Don't reset display_instant_results_ to prevent clearing it on committed 396 // Don't reset display_instant_results_ to prevent clearing it on committed
376 // results pages in extended mode. Otherwise resetting it is a no-op because 397 // results pages in extended mode. Otherwise resetting it is a no-op because
377 // a new loader is created when it changes; see crbug.com/164662. 398 // a new loader is created when it changes; see crbug.com/164662.
378 // Also don't reset omnibox_font_ or omnibox_font_size_ since it never 399 // Also don't reset omnibox_font_ or omnibox_font_size_ since it never
379 // changes. 400 // changes.
380 } 401 }
381 402
382 void SearchBox::SetQuery(const string16& query, bool verbatim) { 403 void SearchBox::SetQuery(const string16& query, bool verbatim) {
(...skipping 16 matching lines...) Expand all
399 std::vector<InstantMostVisitedItemIDPair>* items) const { 420 std::vector<InstantMostVisitedItemIDPair>* items) const {
400 return most_visited_items_cache_.GetCurrentItems(items); 421 return most_visited_items_cache_.GetCurrentItems(items);
401 } 422 }
402 423
403 bool SearchBox::GetMostVisitedItemWithID( 424 bool SearchBox::GetMostVisitedItemWithID(
404 InstantRestrictedID most_visited_item_id, 425 InstantRestrictedID most_visited_item_id,
405 InstantMostVisitedItem* item) const { 426 InstantMostVisitedItem* item) const {
406 return most_visited_items_cache_.GetItemWithRestrictedID(most_visited_item_id, 427 return most_visited_items_cache_.GetItemWithRestrictedID(most_visited_item_id,
407 item); 428 item);
408 } 429 }
OLDNEW
« no previous file with comments | « chrome/renderer/searchbox/searchbox.h ('k') | chrome/renderer/searchbox/searchbox_extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698