Chromium Code Reviews| 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/instant/instant_controller.h" | 5 #include "chrome/browser/instant/instant_controller.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 content::NavigationEntry* entry = | 552 content::NavigationEntry* entry = |
| 553 preview->GetController().GetVisibleEntry(); | 553 preview->GetController().GetVisibleEntry(); |
| 554 std::string url = entry->GetVirtualURL().spec(); | 554 std::string url = entry->GetVirtualURL().spec(); |
| 555 if (!google_util::IsInstantExtendedAPIGoogleSearchUrl(url) && | 555 if (!google_util::IsInstantExtendedAPIGoogleSearchUrl(url) && |
| 556 google_util::IsGoogleDomainUrl(url, google_util::ALLOW_SUBDOMAIN, | 556 google_util::IsGoogleDomainUrl(url, google_util::ALLOW_SUBDOMAIN, |
| 557 google_util::ALLOW_NON_STANDARD_PORTS)) { | 557 google_util::ALLOW_NON_STANDARD_PORTS)) { |
| 558 // Hitting ENTER searches for what the user typed, so use | 558 // Hitting ENTER searches for what the user typed, so use |
| 559 // last_omnibox_text_. Clicking on the overlay commits what is currently | 559 // last_omnibox_text_. Clicking on the overlay commits what is currently |
| 560 // showing, so add in the gray text in that case. | 560 // showing, so add in the gray text in that case. |
| 561 std::string query(UTF16ToUTF8(last_omnibox_text_)); | 561 std::string query(UTF16ToUTF8(last_omnibox_text_)); |
| 562 if (type != INSTANT_COMMIT_PRESSED_ENTER) | 562 if (type != INSTANT_COMMIT_PRESSED_ENTER) { |
| 563 query += UTF16ToUTF8(last_suggestion_.text); | 563 query += UTF16ToUTF8(last_suggestion_.text); |
| 564 // Update |last_omnibox_text_| so that the controller commits the proper | |
| 565 // query if the user focuses the omnibox and presses Enter. | |
| 566 last_omnibox_text_ = ASCIIToUTF16(query); | |
|
sreeram
2013/01/28 18:58:32
Nit: You could avoid the conversion by just doing:
| |
| 567 } | |
| 564 entry->SetVirtualURL(GURL( | 568 entry->SetVirtualURL(GURL( |
| 565 url + "#q=" + | 569 url + "#q=" + |
| 566 net::EscapeQueryParamValue(query, true))); | 570 net::EscapeQueryParamValue(query, true))); |
| 567 chrome::search::SearchTabHelper::FromWebContents(preview)-> | 571 chrome::search::SearchTabHelper::FromWebContents(preview)-> |
| 568 NavigationEntryUpdated(); | 572 NavigationEntryUpdated(); |
| 569 } | 573 } |
| 570 } | 574 } |
| 571 | 575 |
| 572 // If the preview page has navigated since the last Update(), we need to add | 576 // If the preview page has navigated since the last Update(), we need to add |
| 573 // the navigation to history ourselves. Else, the page will navigate after | 577 // the navigation to history ourselves. Else, the page will navigate after |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 753 !allow_preview_to_show_search_suggestions_) { | 757 !allow_preview_to_show_search_suggestions_) { |
| 754 return; | 758 return; |
| 755 } | 759 } |
| 756 | 760 |
| 757 InstantSuggestion suggestion; | 761 InstantSuggestion suggestion; |
| 758 if (!suggestions.empty()) | 762 if (!suggestions.empty()) |
| 759 suggestion = suggestions[0]; | 763 suggestion = suggestions[0]; |
| 760 | 764 |
| 761 if (instant_tab_ && search_mode_.is_search_results() && | 765 if (instant_tab_ && search_mode_.is_search_results() && |
| 762 suggestion.behavior == INSTANT_COMPLETE_REPLACE) { | 766 suggestion.behavior == INSTANT_COMPLETE_REPLACE) { |
| 767 // Update |last_omnibox_text_| so that the controller commits the proper | |
| 768 // query if the user focuses the omnibox and presses Enter. | |
| 769 last_omnibox_text_ = suggestion.text; | |
| 770 last_suggestion_ = InstantSuggestion(); | |
| 771 last_match_was_search_ = suggestion.type == INSTANT_SUGGESTION_SEARCH; | |
| 763 // This means a committed page in state search called setValue(). We should | 772 // This means a committed page in state search called setValue(). We should |
| 764 // update the omnibox to reflect what the search page says. | 773 // update the omnibox to reflect what the search page says. |
| 765 browser_->SetInstantSuggestion(suggestion); | 774 browser_->SetInstantSuggestion(suggestion); |
| 766 // Don't update last_omnibox_text_ or last_suggestion_ since the user is not | |
| 767 // currently editing text in the omnibox. | |
| 768 return; | 775 return; |
| 769 } | 776 } |
| 770 | 777 |
| 771 // Ignore if we are not currently accepting search suggestions. | 778 // Ignore if we are not currently accepting search suggestions. |
| 772 if (!search_mode_.is_search_suggestions() || last_omnibox_text_.empty()) | 779 if (!search_mode_.is_search_suggestions() || last_omnibox_text_.empty()) |
| 773 return; | 780 return; |
| 774 | 781 |
| 775 if (suggestion.behavior == INSTANT_COMPLETE_REPLACE) { | 782 if (suggestion.behavior == INSTANT_COMPLETE_REPLACE) { |
| 776 // We don't get an Update() when changing the omnibox due to a REPLACE | 783 // We don't get an Update() when changing the omnibox due to a REPLACE |
| 777 // suggestion (so that we don't inadvertently cause the preview to change | 784 // suggestion (so that we don't inadvertently cause the preview to change |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1257 iter->second > kMaxInstantSupportFailures) { | 1264 iter->second > kMaxInstantSupportFailures) { |
| 1258 RecordEventHistogram(INSTANT_CONTROLLER_EVENT_URL_BLOCKED_BY_BLACKLIST); | 1265 RecordEventHistogram(INSTANT_CONTROLLER_EVENT_URL_BLOCKED_BY_BLACKLIST); |
| 1259 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( | 1266 LOG_INSTANT_DEBUG_EVENT(this, base::StringPrintf( |
| 1260 "GetInstantURL: Instant URL blacklisted: url=%s", | 1267 "GetInstantURL: Instant URL blacklisted: url=%s", |
| 1261 instant_url->c_str())); | 1268 instant_url->c_str())); |
| 1262 return false; | 1269 return false; |
| 1263 } | 1270 } |
| 1264 | 1271 |
| 1265 return true; | 1272 return true; |
| 1266 } | 1273 } |
| OLD | NEW |