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

Side by Side Diff: components/omnibox/browser/search_provider.cc

Issue 1855423003: Interpret '?' and Ctrl-K or Ctrl-E as putting omnibox in keyword search mode for Default Search Pro… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bug in OmniboxView::GetStateChanges Created 4 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
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 "components/omnibox/browser/search_provider.h" 5 #include "components/omnibox/browser/search_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <cmath> 9 #include <cmath>
10 #include <utility> 10 #include <utility>
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 return !client()->IsOffTheRecord() && client()->SearchSuggestEnabled() && 738 return !client()->IsOffTheRecord() && client()->SearchSuggestEnabled() &&
739 ((default_url && !default_url->suggestions_url().empty() && 739 ((default_url && !default_url->suggestions_url().empty() &&
740 !*query_is_private) || 740 !*query_is_private) ||
741 (keyword_url && !keyword_url->suggestions_url().empty())); 741 (keyword_url && !keyword_url->suggestions_url().empty()));
742 } 742 }
743 743
744 bool SearchProvider::IsQueryPotentionallyPrivate() const { 744 bool SearchProvider::IsQueryPotentionallyPrivate() const {
745 // If the input type might be a URL, we take extra care so that private data 745 // If the input type might be a URL, we take extra care so that private data
746 // isn't sent to the server. 746 // isn't sent to the server.
747 747
748 // FORCED_QUERY means the user is explicitly asking us to search for this, so
749 // we assume it isn't a URL and/or there isn't private data.
750 if (input_.type() == metrics::OmniboxInputType::FORCED_QUERY)
751 return false;
752
753 // Next we check the scheme. If this is UNKNOWN/URL with a scheme that isn't 748 // Next we check the scheme. If this is UNKNOWN/URL with a scheme that isn't
754 // http/https/ftp, we shouldn't send it. Sending things like file: and data: 749 // http/https/ftp, we shouldn't send it. Sending things like file: and data:
755 // is both a waste of time and a disclosure of potentially private, local 750 // is both a waste of time and a disclosure of potentially private, local
756 // data. Other "schemes" may actually be usernames, and we don't want to send 751 // data. Other "schemes" may actually be usernames, and we don't want to send
757 // passwords. If the scheme is OK, we still need to check other cases below. 752 // passwords. If the scheme is OK, we still need to check other cases below.
758 // If this is QUERY, then the presence of these schemes means the user 753 // If this is QUERY, then the presence of these schemes means the user
759 // explicitly typed one, and thus this is probably a URL that's being entered 754 // explicitly typed one, and thus this is probably a URL that's being entered
760 // and happens to currently be invalid -- in which case we again want to run 755 // and happens to currently be invalid -- in which case we again want to run
761 // our checks below. Other QUERY cases are less likely to be URLs and thus we 756 // our checks below. Other QUERY cases are less likely to be URLs and thus we
762 // assume we're OK. 757 // assume we're OK.
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
1309 if (!providers_.keyword_provider().empty()) 1304 if (!providers_.keyword_provider().empty())
1310 return 250; 1305 return 250;
1311 return CalculateRelevanceForVerbatimIgnoringKeywordModeState(); 1306 return CalculateRelevanceForVerbatimIgnoringKeywordModeState();
1312 } 1307 }
1313 1308
1314 int SearchProvider:: 1309 int SearchProvider::
1315 CalculateRelevanceForVerbatimIgnoringKeywordModeState() const { 1310 CalculateRelevanceForVerbatimIgnoringKeywordModeState() const {
1316 switch (input_.type()) { 1311 switch (input_.type()) {
1317 case metrics::OmniboxInputType::UNKNOWN: 1312 case metrics::OmniboxInputType::UNKNOWN:
1318 case metrics::OmniboxInputType::QUERY: 1313 case metrics::OmniboxInputType::QUERY:
1319 case metrics::OmniboxInputType::FORCED_QUERY:
1320 return kNonURLVerbatimRelevance; 1314 return kNonURLVerbatimRelevance;
1321 1315
1322 case metrics::OmniboxInputType::URL: 1316 case metrics::OmniboxInputType::URL:
1323 return 850; 1317 return 850;
1324 1318
1325 default: 1319 default:
1326 NOTREACHED(); 1320 NOTREACHED();
1327 return 0; 1321 return 0;
1328 } 1322 }
1329 } 1323 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1419 1413
1420 size_t inline_autocomplete_offset = (prefix == NULL) ? 1414 size_t inline_autocomplete_offset = (prefix == NULL) ?
1421 base::string16::npos : (match_start + input.length()); 1415 base::string16::npos : (match_start + input.length());
1422 match.fill_into_edit += 1416 match.fill_into_edit +=
1423 AutocompleteInput::FormattedStringWithEquivalentMeaning( 1417 AutocompleteInput::FormattedStringWithEquivalentMeaning(
1424 navigation.url(), 1418 navigation.url(),
1425 url_formatter::FormatUrl(navigation.url(), format_types, 1419 url_formatter::FormatUrl(navigation.url(), format_types,
1426 net::UnescapeRule::SPACES, nullptr, nullptr, 1420 net::UnescapeRule::SPACES, nullptr, nullptr,
1427 &inline_autocomplete_offset), 1421 &inline_autocomplete_offset),
1428 client()->GetSchemeClassifier()); 1422 client()->GetSchemeClassifier());
1429 // Preserve the forced query '?' prefix in |match.fill_into_edit|.
1430 // Otherwise, user edits to a suggestion would show non-Search results.
1431 if (input_.type() == metrics::OmniboxInputType::FORCED_QUERY) {
1432 match.fill_into_edit.insert(0, base::ASCIIToUTF16("?"));
1433 if (inline_autocomplete_offset != base::string16::npos)
1434 ++inline_autocomplete_offset;
1435 }
1436 if (inline_autocomplete_offset != base::string16::npos) { 1423 if (inline_autocomplete_offset != base::string16::npos) {
1437 DCHECK(inline_autocomplete_offset <= match.fill_into_edit.length()); 1424 DCHECK(inline_autocomplete_offset <= match.fill_into_edit.length());
1438 match.inline_autocompletion = 1425 match.inline_autocompletion =
1439 match.fill_into_edit.substr(inline_autocomplete_offset); 1426 match.fill_into_edit.substr(inline_autocomplete_offset);
1440 } 1427 }
1441 // An inlineable navsuggestion can only be the default match when there 1428 // An inlineable navsuggestion can only be the default match when there
1442 // is no keyword provider active, lest it appear first and break the user 1429 // is no keyword provider active, lest it appear first and break the user
1443 // out of keyword mode. We also must have received the navsuggestion before 1430 // out of keyword mode. We also must have received the navsuggestion before
1444 // the last keystroke, to prevent asynchronous inline autocompletions changes. 1431 // the last keystroke, to prevent asynchronous inline autocompletions changes.
1445 // The navsuggestion can also only be default if either the inline 1432 // The navsuggestion can also only be default if either the inline
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1511 for (MatchMap::const_iterator i(map.begin()); i != map.end(); ++i) 1498 for (MatchMap::const_iterator i(map.begin()); i != map.end(); ++i)
1512 matches.push_back(i->second); 1499 matches.push_back(i->second);
1513 std::sort(matches.begin(), matches.end(), &AutocompleteMatch::MoreRelevant); 1500 std::sort(matches.begin(), matches.end(), &AutocompleteMatch::MoreRelevant);
1514 1501
1515 // If there is a top scoring entry, find the corresponding answer. 1502 // If there is a top scoring entry, find the corresponding answer.
1516 if (!matches.empty()) 1503 if (!matches.empty())
1517 return answers_cache_.GetTopAnswerEntry(matches[0].contents); 1504 return answers_cache_.GetTopAnswerEntry(matches[0].contents);
1518 1505
1519 return AnswersQueryData(); 1506 return AnswersQueryData();
1520 } 1507 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698