OLD | NEW |
---|---|
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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
57 } // namespace | 57 } // namespace |
58 | 58 |
59 SearchBox::SearchBox(content::RenderView* render_view) | 59 SearchBox::SearchBox(content::RenderView* render_view) |
60 : content::RenderViewObserver(render_view), | 60 : content::RenderViewObserver(render_view), |
61 content::RenderViewObserverTracker<SearchBox>(render_view), | 61 content::RenderViewObserverTracker<SearchBox>(render_view), |
62 verbatim_(false), | 62 verbatim_(false), |
63 query_is_restricted_(false), | 63 query_is_restricted_(false), |
64 selection_start_(0), | 64 selection_start_(0), |
65 selection_end_(0), | 65 selection_end_(0), |
66 start_margin_(0), | 66 start_margin_(0), |
67 is_key_capture_enabled_(false), | 67 omnibox_focus_state_(OMNIBOX_FOCUS_NONE), |
68 display_instant_results_(false), | 68 display_instant_results_(false), |
69 omnibox_font_size_(0), | 69 omnibox_font_size_(0), |
70 autocomplete_results_cache_(kMaxInstantAutocompleteResultItemCacheSize), | 70 autocomplete_results_cache_(kMaxInstantAutocompleteResultItemCacheSize), |
71 most_visited_items_cache_(kMaxInstantMostVisitedItemCacheSize) { | 71 most_visited_items_cache_(kMaxInstantMostVisitedItemCacheSize) { |
72 } | 72 } |
73 | 73 |
74 SearchBox::~SearchBox() { | 74 SearchBox::~SearchBox() { |
75 } | 75 } |
76 | 76 |
77 void SearchBox::SetSuggestions( | 77 void SearchBox::SetSuggestions( |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
150 void SearchBox::HideBars() { | 150 void SearchBox::HideBars() { |
151 DVLOG(1) << render_view() << " HideBars"; | 151 DVLOG(1) << render_view() << " HideBars"; |
152 render_view()->Send(new ChromeViewHostMsg_SearchBoxHideBars( | 152 render_view()->Send(new ChromeViewHostMsg_SearchBoxHideBars( |
153 render_view()->GetRoutingID(), render_view()->GetPageId())); | 153 render_view()->GetRoutingID(), render_view()->GetPageId())); |
154 } | 154 } |
155 | 155 |
156 int SearchBox::GetStartMargin() const { | 156 int SearchBox::GetStartMargin() const { |
157 return static_cast<int>(start_margin_ / GetZoom()); | 157 return static_cast<int>(start_margin_ / GetZoom()); |
158 } | 158 } |
159 | 159 |
160 bool SearchBox::is_focused() const { | |
161 return omnibox_focus_state_ == OMNIBOX_FOCUS_VISIBLE; | |
162 } | |
163 | |
164 bool SearchBox::is_key_capture_enabled() const { | |
165 return omnibox_focus_state_ == OMNIBOX_FOCUS_INVISIBLE; | |
166 } | |
167 | |
160 gfx::Rect SearchBox::GetPopupBounds() const { | 168 gfx::Rect SearchBox::GetPopupBounds() const { |
161 double zoom = GetZoom(); | 169 double zoom = GetZoom(); |
162 return gfx::Rect(static_cast<int>(popup_bounds_.x() / zoom), | 170 return gfx::Rect(static_cast<int>(popup_bounds_.x() / zoom), |
163 static_cast<int>(popup_bounds_.y() / zoom), | 171 static_cast<int>(popup_bounds_.y() / zoom), |
164 static_cast<int>(popup_bounds_.width() / zoom), | 172 static_cast<int>(popup_bounds_.width() / zoom), |
165 static_cast<int>(popup_bounds_.height() / zoom)); | 173 static_cast<int>(popup_bounds_.height() / zoom)); |
166 } | 174 } |
167 | 175 |
168 void SearchBox::GetAutocompleteResults( | 176 void SearchBox::GetAutocompleteResults( |
169 std::vector<InstantAutocompleteResultIDPair>* results) const { | 177 std::vector<InstantAutocompleteResultIDPair>* results) const { |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
346 SetQuery(query, verbatim); | 354 SetQuery(query, verbatim); |
347 selection_start_ = selection_start; | 355 selection_start_ = selection_start; |
348 selection_end_ = selection_end; | 356 selection_end_ = selection_end; |
349 if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { | 357 if (render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { |
350 DVLOG(1) << render_view() << " OnKeyPress ESC"; | 358 DVLOG(1) << render_view() << " OnKeyPress ESC"; |
351 extensions_v8::SearchBoxExtension::DispatchEscKeyPress( | 359 extensions_v8::SearchBoxExtension::DispatchEscKeyPress( |
352 render_view()->GetWebView()->mainFrame()); | 360 render_view()->GetWebView()->mainFrame()); |
353 } | 361 } |
354 } | 362 } |
355 | 363 |
356 void SearchBox::OnKeyCaptureChange(bool is_key_capture_enabled) { | 364 void SearchBox::OnKeyCaptureChange(OmniboxFocusState new_focus_state, |
357 if (is_key_capture_enabled != is_key_capture_enabled_ && | 365 OmniboxFocusChangeReason reason) { |
358 render_view()->GetWebView() && render_view()->GetWebView()->mainFrame()) { | 366 if (new_focus_state != omnibox_focus_state_) { |
samarth
2013/05/13 20:56:53
Sorry, this is all a little confusing so let me gi
Donn Denman
2013/05/13 23:44:50
Thanks for explaining this. Done.
| |
359 is_key_capture_enabled_ = is_key_capture_enabled; | 367 OmniboxFocusState previous_focus_state = omnibox_focus_state_; |
360 DVLOG(1) << render_view() << " OnKeyCaptureChange"; | 368 omnibox_focus_state_ = new_focus_state; |
361 extensions_v8::SearchBoxExtension::DispatchKeyCaptureChange( | 369 if (render_view()->GetWebView() && |
362 render_view()->GetWebView()->mainFrame()); | 370 render_view()->GetWebView()->mainFrame()) { |
371 DVLOG(1) << render_view() << " OnKeyCaptureChange"; | |
372 extensions_v8::SearchBoxExtension::DispatchKeyCaptureChange( | |
373 render_view()->GetWebView()->mainFrame()); | |
374 if (omnibox_focus_state_ == OMNIBOX_FOCUS_VISIBLE || | |
375 previous_focus_state == OMNIBOX_FOCUS_VISIBLE) { | |
376 // Focus moved into, or out of, the real omnibox. | |
377 DVLOG(1) << render_view() << " OnFocusChange"; | |
378 extensions_v8::SearchBoxExtension::DispatchFocusChange( | |
379 render_view()->GetWebView()->mainFrame()); | |
380 } | |
381 } | |
363 } | 382 } |
364 } | 383 } |
365 | 384 |
366 void SearchBox::OnSetDisplayInstantResults(bool display_instant_results) { | 385 void SearchBox::OnSetDisplayInstantResults(bool display_instant_results) { |
367 display_instant_results_ = display_instant_results; | 386 display_instant_results_ = display_instant_results; |
368 } | 387 } |
369 | 388 |
370 void SearchBox::OnThemeChanged(const ThemeBackgroundInfo& theme_info) { | 389 void SearchBox::OnThemeChanged(const ThemeBackgroundInfo& theme_info) { |
371 if (IsThemeInfoEqual(theme_info, theme_info_)) | 390 if (IsThemeInfoEqual(theme_info, theme_info_)) |
372 return; | 391 return; |
(...skipping 21 matching lines...) Expand all Loading... | |
394 } | 413 } |
395 | 414 |
396 void SearchBox::Reset() { | 415 void SearchBox::Reset() { |
397 query_.clear(); | 416 query_.clear(); |
398 verbatim_ = false; | 417 verbatim_ = false; |
399 query_is_restricted_ = false; | 418 query_is_restricted_ = false; |
400 selection_start_ = 0; | 419 selection_start_ = 0; |
401 selection_end_ = 0; | 420 selection_end_ = 0; |
402 popup_bounds_ = gfx::Rect(); | 421 popup_bounds_ = gfx::Rect(); |
403 start_margin_ = 0; | 422 start_margin_ = 0; |
404 is_key_capture_enabled_ = false; | 423 omnibox_focus_state_ = OMNIBOX_FOCUS_NONE; |
405 theme_info_ = ThemeBackgroundInfo(); | 424 theme_info_ = ThemeBackgroundInfo(); |
406 // Don't reset display_instant_results_ to prevent clearing it on committed | 425 // Don't reset display_instant_results_ to prevent clearing it on committed |
407 // results pages in extended mode. Otherwise resetting it is a no-op because | 426 // results pages in extended mode. Otherwise resetting it is a no-op because |
408 // a new loader is created when it changes; see crbug.com/164662. | 427 // a new loader is created when it changes; see crbug.com/164662. |
409 // Also don't reset omnibox_font_ or omnibox_font_size_ since it never | 428 // Also don't reset omnibox_font_ or omnibox_font_size_ since it never |
410 // changes. | 429 // changes. |
411 } | 430 } |
412 | 431 |
413 void SearchBox::SetQuery(const string16& query, bool verbatim) { | 432 void SearchBox::SetQuery(const string16& query, bool verbatim) { |
414 query_ = query; | 433 query_ = query; |
(...skipping 20 matching lines...) Expand all Loading... | |
435 std::vector<InstantMostVisitedItemIDPair>* items) const { | 454 std::vector<InstantMostVisitedItemIDPair>* items) const { |
436 return most_visited_items_cache_.GetCurrentItems(items); | 455 return most_visited_items_cache_.GetCurrentItems(items); |
437 } | 456 } |
438 | 457 |
439 bool SearchBox::GetMostVisitedItemWithID( | 458 bool SearchBox::GetMostVisitedItemWithID( |
440 InstantRestrictedID most_visited_item_id, | 459 InstantRestrictedID most_visited_item_id, |
441 InstantMostVisitedItem* item) const { | 460 InstantMostVisitedItem* item) const { |
442 return most_visited_items_cache_.GetItemWithRestrictedID(most_visited_item_id, | 461 return most_visited_items_cache_.GetItemWithRestrictedID(most_visited_item_id, |
443 item); | 462 item); |
444 } | 463 } |
OLD | NEW |