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

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

Issue 1841653003: Drop |languages| from {Format,Elide}Url* and IDNToUnicode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix typo in elide_url.cc Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_suggestion_parser.h" 5 #include "components/omnibox/browser/search_suggestion_parser.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 221
222 SearchSuggestionParser::NavigationResult::NavigationResult( 222 SearchSuggestionParser::NavigationResult::NavigationResult(
223 const AutocompleteSchemeClassifier& scheme_classifier, 223 const AutocompleteSchemeClassifier& scheme_classifier,
224 const GURL& url, 224 const GURL& url,
225 AutocompleteMatchType::Type type, 225 AutocompleteMatchType::Type type,
226 const base::string16& description, 226 const base::string16& description,
227 const std::string& deletion_url, 227 const std::string& deletion_url,
228 bool from_keyword_provider, 228 bool from_keyword_provider,
229 int relevance, 229 int relevance,
230 bool relevance_from_server, 230 bool relevance_from_server,
231 const base::string16& input_text, 231 const base::string16& input_text)
232 const std::string& languages)
233 : Result(from_keyword_provider, 232 : Result(from_keyword_provider,
234 relevance, 233 relevance,
235 relevance_from_server, 234 relevance_from_server,
236 type, 235 type,
237 deletion_url), 236 deletion_url),
238 url_(url), 237 url_(url),
239 formatted_url_(AutocompleteInput::FormattedStringWithEquivalentMeaning( 238 formatted_url_(AutocompleteInput::FormattedStringWithEquivalentMeaning(
240 url, 239 url,
241 url_formatter::FormatUrl(url, 240 url_formatter::FormatUrl(url,
242 languages,
243 url_formatter::kFormatUrlOmitAll & 241 url_formatter::kFormatUrlOmitAll &
244 ~url_formatter::kFormatUrlOmitHTTP, 242 ~url_formatter::kFormatUrlOmitHTTP,
245 net::UnescapeRule::SPACES, 243 net::UnescapeRule::SPACES,
246 nullptr, 244 nullptr,
247 nullptr, 245 nullptr,
248 nullptr), 246 nullptr),
249 scheme_classifier)), 247 scheme_classifier)),
250 description_(description) { 248 description_(description) {
251 DCHECK(url_.is_valid()); 249 DCHECK(url_.is_valid());
252 CalculateAndClassifyMatchContents(true, input_text, languages); 250 CalculateAndClassifyMatchContents(true, input_text);
253 } 251 }
254 252
255 SearchSuggestionParser::NavigationResult::~NavigationResult() {} 253 SearchSuggestionParser::NavigationResult::~NavigationResult() {}
256 254
257 void 255 void
258 SearchSuggestionParser::NavigationResult::CalculateAndClassifyMatchContents( 256 SearchSuggestionParser::NavigationResult::CalculateAndClassifyMatchContents(
259 const bool allow_bolding_nothing, 257 const bool allow_bolding_nothing,
260 const base::string16& input_text, 258 const base::string16& input_text) {
261 const std::string& languages) {
262 if (input_text.empty()) { 259 if (input_text.empty()) {
263 // In case of zero-suggest results, do not highlight matches. 260 // In case of zero-suggest results, do not highlight matches.
264 match_contents_class_.push_back( 261 match_contents_class_.push_back(
265 ACMatchClassification(0, ACMatchClassification::NONE)); 262 ACMatchClassification(0, ACMatchClassification::NONE));
266 return; 263 return;
267 } 264 }
268 265
269 // First look for the user's input inside the formatted url as it would be 266 // First look for the user's input inside the formatted url as it would be
270 // without trimming the scheme, so we can find matches at the beginning of the 267 // without trimming the scheme, so we can find matches at the beginning of the
271 // scheme. 268 // scheme.
272 const URLPrefix* prefix = 269 const URLPrefix* prefix =
273 URLPrefix::BestURLPrefix(formatted_url_, input_text); 270 URLPrefix::BestURLPrefix(formatted_url_, input_text);
274 size_t match_start = (prefix == NULL) ? 271 size_t match_start = (prefix == NULL) ?
275 formatted_url_.find(input_text) : prefix->prefix.length(); 272 formatted_url_.find(input_text) : prefix->prefix.length();
276 bool trim_http = !AutocompleteInput::HasHTTPScheme(input_text) && 273 bool trim_http = !AutocompleteInput::HasHTTPScheme(input_text) &&
277 (!prefix || (match_start != 0)); 274 (!prefix || (match_start != 0));
278 const url_formatter::FormatUrlTypes format_types = 275 const url_formatter::FormatUrlTypes format_types =
279 url_formatter::kFormatUrlOmitAll & 276 url_formatter::kFormatUrlOmitAll &
280 ~(trim_http ? 0 : url_formatter::kFormatUrlOmitHTTP); 277 ~(trim_http ? 0 : url_formatter::kFormatUrlOmitHTTP);
281 278
282 base::string16 match_contents = url_formatter::FormatUrl( 279 base::string16 match_contents = url_formatter::FormatUrl(
283 url_, languages, format_types, net::UnescapeRule::SPACES, nullptr, 280 url_, format_types, net::UnescapeRule::SPACES, nullptr,
284 nullptr, &match_start); 281 nullptr, &match_start);
285 // If the first match in the untrimmed string was inside a scheme that we 282 // If the first match in the untrimmed string was inside a scheme that we
286 // trimmed, look for a subsequent match. 283 // trimmed, look for a subsequent match.
287 if (match_start == base::string16::npos) 284 if (match_start == base::string16::npos)
288 match_start = match_contents.find(input_text); 285 match_start = match_contents.find(input_text);
289 // Update |match_contents_| and |match_contents_class_| if it's allowed. 286 // Update |match_contents_| and |match_contents_class_| if it's allowed.
290 if (allow_bolding_nothing || (match_start != base::string16::npos)) { 287 if (allow_bolding_nothing || (match_start != base::string16::npos)) {
291 match_contents_ = match_contents; 288 match_contents_ = match_contents;
292 // Safe if |match_start| is npos; also safe if the input is longer than the 289 // Safe if |match_start| is npos; also safe if the input is longer than the
293 // remaining contents after |match_start|. 290 // remaining contents after |match_start|.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 } 383 }
387 return scoped_ptr<base::Value>(); 384 return scoped_ptr<base::Value>();
388 } 385 }
389 386
390 // static 387 // static
391 bool SearchSuggestionParser::ParseSuggestResults( 388 bool SearchSuggestionParser::ParseSuggestResults(
392 const base::Value& root_val, 389 const base::Value& root_val,
393 const AutocompleteInput& input, 390 const AutocompleteInput& input,
394 const AutocompleteSchemeClassifier& scheme_classifier, 391 const AutocompleteSchemeClassifier& scheme_classifier,
395 int default_result_relevance, 392 int default_result_relevance,
396 const std::string& languages,
397 bool is_keyword_result, 393 bool is_keyword_result,
398 Results* results) { 394 Results* results) {
399 base::string16 query; 395 base::string16 query;
400 const base::ListValue* root_list = NULL; 396 const base::ListValue* root_list = NULL;
401 const base::ListValue* results_list = NULL; 397 const base::ListValue* results_list = NULL;
402 398
403 if (!root_val.GetAsList(&root_list) || !root_list->GetString(0, &query) || 399 if (!root_val.GetAsList(&root_list) || !root_list->GetString(0, &query) ||
404 query != input.text() || !root_list->GetList(1, &results_list)) 400 query != input.text() || !root_list->GetList(1, &results_list))
405 return false; 401 return false;
406 402
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 (match_type == AutocompleteMatchType::NAVSUGGEST_PERSONALIZED)) { 482 (match_type == AutocompleteMatchType::NAVSUGGEST_PERSONALIZED)) {
487 // Do not blindly trust the URL coming from the server to be valid. 483 // Do not blindly trust the URL coming from the server to be valid.
488 GURL url(url_formatter::FixupURL(base::UTF16ToUTF8(suggestion), 484 GURL url(url_formatter::FixupURL(base::UTF16ToUTF8(suggestion),
489 std::string())); 485 std::string()));
490 if (url.is_valid() && allow_navsuggest) { 486 if (url.is_valid() && allow_navsuggest) {
491 base::string16 title; 487 base::string16 title;
492 if (descriptions != NULL) 488 if (descriptions != NULL)
493 descriptions->GetString(index, &title); 489 descriptions->GetString(index, &title);
494 results->navigation_results.push_back(NavigationResult( 490 results->navigation_results.push_back(NavigationResult(
495 scheme_classifier, url, match_type, title, deletion_url, 491 scheme_classifier, url, match_type, title, deletion_url,
496 is_keyword_result, relevance, relevances != NULL, input.text(), 492 is_keyword_result, relevance, relevances != NULL, input.text()));
497 languages));
498 } 493 }
499 } else { 494 } else {
500 // TODO(dschuyler) If the "= " is no longer sent from the back-end 495 // TODO(dschuyler) If the "= " is no longer sent from the back-end
501 // then this may be removed. 496 // then this may be removed.
502 if ((match_type == AutocompleteMatchType::CALCULATOR) && 497 if ((match_type == AutocompleteMatchType::CALCULATOR) &&
503 !suggestion.compare(0, 2, base::UTF8ToUTF16("= "))) 498 !suggestion.compare(0, 2, base::UTF8ToUTF16("= ")))
504 suggestion.erase(0, 2); 499 suggestion.erase(0, 2);
505 500
506 base::string16 match_contents = suggestion; 501 base::string16 match_contents = suggestion;
507 base::string16 match_contents_prefix; 502 base::string16 match_contents_prefix;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 base::CollapseWhitespace(match_contents, false), 548 base::CollapseWhitespace(match_contents, false),
554 match_contents_prefix, annotation, answer_contents, answer_type_str, 549 match_contents_prefix, annotation, answer_contents, answer_type_str,
555 std::move(answer), suggest_query_params, deletion_url, 550 std::move(answer), suggest_query_params, deletion_url,
556 is_keyword_result, relevance, relevances != NULL, should_prefetch, 551 is_keyword_result, relevance, relevances != NULL, should_prefetch,
557 trimmed_input)); 552 trimmed_input));
558 } 553 }
559 } 554 }
560 results->relevances_from_server = relevances != NULL; 555 results->relevances_from_server = relevances != NULL;
561 return true; 556 return true;
562 } 557 }
OLDNEW
« no previous file with comments | « components/omnibox/browser/search_suggestion_parser.h ('k') | components/omnibox/browser/shortcuts_backend_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698