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/browser/ui/search/instant_controller.h" | 5 #include "chrome/browser/ui/search/instant_controller.h" |
6 | 6 |
7 #include <iterator> | 7 #include <iterator> |
8 | 8 |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 instant_enabled_(false), | 271 instant_enabled_(false), |
272 use_local_page_only_(true), | 272 use_local_page_only_(true), |
273 preload_ntp_(true), | 273 preload_ntp_(true), |
274 model_(this), | 274 model_(this), |
275 use_tab_for_suggestions_(false), | 275 use_tab_for_suggestions_(false), |
276 last_omnibox_text_has_inline_autocompletion_(false), | 276 last_omnibox_text_has_inline_autocompletion_(false), |
277 last_verbatim_(false), | 277 last_verbatim_(false), |
278 last_transition_type_(content::PAGE_TRANSITION_LINK), | 278 last_transition_type_(content::PAGE_TRANSITION_LINK), |
279 last_match_was_search_(false), | 279 last_match_was_search_(false), |
280 omnibox_focus_state_(OMNIBOX_FOCUS_NONE), | 280 omnibox_focus_state_(OMNIBOX_FOCUS_NONE), |
| 281 omnibox_focus_change_reason_(OMNIBOX_FOCUS_CHANGE_EXPLICIT), |
281 omnibox_bounds_(-1, -1, 0, 0), | 282 omnibox_bounds_(-1, -1, 0, 0), |
282 allow_overlay_to_show_search_suggestions_(false), | 283 allow_overlay_to_show_search_suggestions_(false), |
283 weak_ptr_factory_(this) { | 284 weak_ptr_factory_(this) { |
284 | 285 |
285 // When the InstantController lives, the InstantService should live. | 286 // When the InstantController lives, the InstantService should live. |
286 // InstantService sets up profile-level facilities such as the ThemeSource for | 287 // InstantService sets up profile-level facilities such as the ThemeSource for |
287 // the NTP. | 288 // the NTP. |
288 // However, in some tests, browser_ may be null. | 289 // However, in some tests, browser_ may be null. |
289 if (browser_) | 290 if (browser_) |
290 InstantServiceFactory::GetForProfile(browser_->profile()); | 291 InstantServiceFactory::GetForProfile(browser_->profile()); |
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
953 gfx::NativeView view_gaining_focus) { | 954 gfx::NativeView view_gaining_focus) { |
954 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( | 955 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( |
955 "OmniboxFocusChanged: %d to %d for reason %d", omnibox_focus_state_, | 956 "OmniboxFocusChanged: %d to %d for reason %d", omnibox_focus_state_, |
956 state, reason)); | 957 state, reason)); |
957 | 958 |
958 OmniboxFocusState old_focus_state = omnibox_focus_state_; | 959 OmniboxFocusState old_focus_state = omnibox_focus_state_; |
959 omnibox_focus_state_ = state; | 960 omnibox_focus_state_ = state; |
960 if (!extended_enabled() && !instant_enabled_) | 961 if (!extended_enabled() && !instant_enabled_) |
961 return; | 962 return; |
962 | 963 |
963 // Tell the page if the key capture mode changed unless the focus state | 964 if (extended_enabled()) { |
964 // changed because of TYPING. This is because in that case, the browser hasn't | |
965 // really stopped capturing key strokes. | |
966 // | |
967 // (More practically, if we don't do this check, the page would receive | |
968 // onkeycapturechange before the corresponding onchange, and the page would | |
969 // have no way of telling whether the keycapturechange happened because of | |
970 // some actual user action or just because they started typing.) | |
971 if (extended_enabled() && GetOverlayContents() && | |
972 reason != OMNIBOX_FOCUS_CHANGE_TYPING) { | |
973 const bool is_key_capture_enabled = | |
974 omnibox_focus_state_ == OMNIBOX_FOCUS_INVISIBLE; | |
975 if (overlay_) | 965 if (overlay_) |
976 overlay_->KeyCaptureChanged(is_key_capture_enabled); | 966 overlay_->FocusChanged(omnibox_focus_state_, reason); |
977 if (instant_tab_) | 967 if (instant_tab_) |
978 instant_tab_->KeyCaptureChanged(is_key_capture_enabled); | 968 instant_tab_->FocusChanged(omnibox_focus_state_, reason); |
979 } | 969 } |
980 | 970 |
981 if (state == OMNIBOX_FOCUS_VISIBLE && old_focus_state == OMNIBOX_FOCUS_NONE) { | 971 if (state == OMNIBOX_FOCUS_VISIBLE && old_focus_state == OMNIBOX_FOCUS_NONE) { |
982 // If the user explicitly focused the omnibox, then create the overlay if | 972 // If the user explicitly focused the omnibox, then create the overlay if |
983 // it doesn't exist. If we're using a fallback overlay, try loading the | 973 // it doesn't exist. If we're using a fallback overlay, try loading the |
984 // remote overlay again. | 974 // remote overlay again. |
985 if (!overlay_ || (overlay_->IsLocal() && !use_local_page_only_)) | 975 if (!overlay_ || (overlay_->IsLocal() && !use_local_page_only_)) |
986 ResetOverlay(GetInstantURL()); | 976 ResetOverlay(GetInstantURL()); |
987 } else if (state == OMNIBOX_FOCUS_NONE && | 977 } else if (state == OMNIBOX_FOCUS_NONE && |
988 old_focus_state != OMNIBOX_FOCUS_NONE) { | 978 old_focus_state != OMNIBOX_FOCUS_NONE) { |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 const content::WebContents* contents) { | 1178 const content::WebContents* contents) { |
1189 if (!extended_enabled()) | 1179 if (!extended_enabled()) |
1190 return; | 1180 return; |
1191 | 1181 |
1192 // Update theme info so that the page picks it up. | 1182 // Update theme info so that the page picks it up. |
1193 browser_->UpdateThemeInfo(); | 1183 browser_->UpdateThemeInfo(); |
1194 | 1184 |
1195 // Ensure the searchbox API has the correct initial state. | 1185 // Ensure the searchbox API has the correct initial state. |
1196 if (IsContentsFrom(overlay(), contents)) { | 1186 if (IsContentsFrom(overlay(), contents)) { |
1197 overlay_->SetDisplayInstantResults(instant_enabled_); | 1187 overlay_->SetDisplayInstantResults(instant_enabled_); |
1198 overlay_->KeyCaptureChanged( | 1188 overlay_->FocusChanged(omnibox_focus_state_, omnibox_focus_change_reason_); |
1199 omnibox_focus_state_ == OMNIBOX_FOCUS_INVISIBLE); | |
1200 overlay_->SetOmniboxBounds(omnibox_bounds_); | 1189 overlay_->SetOmniboxBounds(omnibox_bounds_); |
1201 overlay_->InitializeFonts(); | 1190 overlay_->InitializeFonts(); |
1202 } else if (IsContentsFrom(ntp(), contents)) { | 1191 } else if (IsContentsFrom(ntp(), contents)) { |
1203 ntp_->SetDisplayInstantResults(instant_enabled_); | 1192 ntp_->SetDisplayInstantResults(instant_enabled_); |
1204 ntp_->SetOmniboxBounds(omnibox_bounds_); | 1193 ntp_->SetOmniboxBounds(omnibox_bounds_); |
1205 ntp_->InitializeFonts(); | 1194 ntp_->InitializeFonts(); |
1206 } else { | 1195 } else { |
1207 NOTREACHED(); | 1196 NOTREACHED(); |
1208 } | 1197 } |
1209 StartListeningToMostVisitedChanges(); | 1198 StartListeningToMostVisitedChanges(); |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1605 } | 1594 } |
1606 } | 1595 } |
1607 | 1596 |
1608 void InstantController::UpdateInfoForInstantTab() { | 1597 void InstantController::UpdateInfoForInstantTab() { |
1609 if (instant_tab_) { | 1598 if (instant_tab_) { |
1610 browser_->UpdateThemeInfo(); | 1599 browser_->UpdateThemeInfo(); |
1611 instant_tab_->SetDisplayInstantResults(instant_enabled_); | 1600 instant_tab_->SetDisplayInstantResults(instant_enabled_); |
1612 instant_tab_->SetOmniboxBounds(omnibox_bounds_); | 1601 instant_tab_->SetOmniboxBounds(omnibox_bounds_); |
1613 instant_tab_->InitializeFonts(); | 1602 instant_tab_->InitializeFonts(); |
1614 StartListeningToMostVisitedChanges(); | 1603 StartListeningToMostVisitedChanges(); |
1615 instant_tab_->KeyCaptureChanged( | 1604 instant_tab_->FocusChanged(omnibox_focus_state_, |
1616 omnibox_focus_state_ == OMNIBOX_FOCUS_INVISIBLE); | 1605 omnibox_focus_change_reason_); |
1617 } | 1606 } |
1618 } | 1607 } |
1619 | 1608 |
1620 void InstantController::HideOverlay() { | 1609 void InstantController::HideOverlay() { |
1621 HideInternal(); | 1610 HideInternal(); |
1622 ReloadOverlayIfStale(); | 1611 ReloadOverlayIfStale(); |
1623 } | 1612 } |
1624 | 1613 |
1625 void InstantController::HideInternal() { | 1614 void InstantController::HideInternal() { |
1626 LOG_INSTANT_DEBUG_EVENT(this, "Hide"); | 1615 LOG_INSTANT_DEBUG_EVENT(this, "Hide"); |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1875 result->transition = match.transition; | 1864 result->transition = match.transition; |
1876 result->relevance = match.relevance; | 1865 result->relevance = match.relevance; |
1877 result->autocomplete_match_index = autocomplete_match_index; | 1866 result->autocomplete_match_index = autocomplete_match_index; |
1878 | 1867 |
1879 DVLOG(1) << " " << result->relevance << " " | 1868 DVLOG(1) << " " << result->relevance << " " |
1880 << UTF8ToUTF16(AutocompleteMatchType::ToString(result->type)) << " " | 1869 << UTF8ToUTF16(AutocompleteMatchType::ToString(result->type)) << " " |
1881 << result->provider << " " << result->destination_url << " '" | 1870 << result->provider << " " << result->destination_url << " '" |
1882 << result->description << "' '" << result->search_query << "' " | 1871 << result->description << "' '" << result->search_query << "' " |
1883 << result->transition << " " << result->autocomplete_match_index; | 1872 << result->transition << " " << result->autocomplete_match_index; |
1884 } | 1873 } |
OLD | NEW |