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

Side by Side Diff: components/omnibox/autocomplete_match.cc

Issue 1098843004: Omnibox - Do Not Allow HTTP/HTTPS Equivalence if User Explicitly Entered A Scheme (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: new approach Created 5 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/autocomplete_match.h" 5 #include "components/omnibox/autocomplete_match.h"
6 6
7 #include "base/i18n/time_formatting.h" 7 #include "base/i18n/time_formatting.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 return NULL; 367 return NULL;
368 TemplateURL* template_url = keyword.empty() ? 368 TemplateURL* template_url = keyword.empty() ?
369 NULL : template_url_service->GetTemplateURLForKeyword(keyword); 369 NULL : template_url_service->GetTemplateURLForKeyword(keyword);
370 return (template_url || host.empty()) ? 370 return (template_url || host.empty()) ?
371 template_url : template_url_service->GetTemplateURLForHost(host); 371 template_url : template_url_service->GetTemplateURLForHost(host);
372 } 372 }
373 373
374 // static 374 // static
375 GURL AutocompleteMatch::GURLToStrippedGURL( 375 GURL AutocompleteMatch::GURLToStrippedGURL(
376 const GURL& url, 376 const GURL& url,
377 const bool scheme_explicitly_entered,
377 TemplateURLService* template_url_service, 378 TemplateURLService* template_url_service,
378 const base::string16& keyword) { 379 const base::string16& keyword) {
379 if (!url.is_valid()) 380 if (!url.is_valid())
380 return url; 381 return url;
381 382
382 GURL stripped_destination_url = url; 383 GURL stripped_destination_url = url;
383 384
384 // If the destination URL looks like it was generated from a TemplateURL, 385 // If the destination URL looks like it was generated from a TemplateURL,
385 // remove all substitutions other than the search terms. This allows us 386 // remove all substitutions other than the search terms. This allows us
386 // to eliminate cases like past search URLs from history that differ only 387 // to eliminate cases like past search URLs from history that differ only
(...skipping 25 matching lines...) Expand all
412 413
413 // Remove the www. prefix from the host. 414 // Remove the www. prefix from the host.
414 static const char prefix[] = "www."; 415 static const char prefix[] = "www.";
415 static const size_t prefix_len = arraysize(prefix) - 1; 416 static const size_t prefix_len = arraysize(prefix) - 1;
416 std::string host = stripped_destination_url.host(); 417 std::string host = stripped_destination_url.host();
417 if (host.compare(0, prefix_len, prefix) == 0) { 418 if (host.compare(0, prefix_len, prefix) == 0) {
418 replacements.SetHostStr(base::StringPiece(host).substr(prefix_len)); 419 replacements.SetHostStr(base::StringPiece(host).substr(prefix_len));
419 needs_replacement = true; 420 needs_replacement = true;
420 } 421 }
421 422
422 // Replace https protocol with http protocol. 423 // Possibly replace https protocol with http protocol.
423 if (stripped_destination_url.SchemeIs(url::kHttpsScheme)) { 424 if (!scheme_explicitly_entered &&
425 stripped_destination_url.SchemeIs(url::kHttpsScheme)) {
424 replacements.SetScheme(url::kHttpScheme, 426 replacements.SetScheme(url::kHttpScheme,
425 url::Component(0, strlen(url::kHttpScheme))); 427 url::Component(0, strlen(url::kHttpScheme)));
426 needs_replacement = true; 428 needs_replacement = true;
427 } 429 }
428 430
429 if (needs_replacement) 431 if (needs_replacement)
430 stripped_destination_url = stripped_destination_url.ReplaceComponents( 432 stripped_destination_url = stripped_destination_url.ReplaceComponents(
431 replacements); 433 replacements);
432 return stripped_destination_url; 434 return stripped_destination_url;
433 } 435 }
434 436
435 void AutocompleteMatch::ComputeStrippedDestinationURL( 437 void AutocompleteMatch::ComputeStrippedDestinationURL(
438 const bool scheme_explicitly_entered,
436 TemplateURLService* template_url_service) { 439 TemplateURLService* template_url_service) {
437 stripped_destination_url = 440 stripped_destination_url = GURLToStrippedGURL(
438 GURLToStrippedGURL(destination_url, template_url_service, keyword); 441 destination_url, scheme_explicitly_entered,template_url_service, keyword);
439 } 442 }
440 443
441 void AutocompleteMatch::EnsureUWYTIsAllowedToBeDefault( 444 void AutocompleteMatch::EnsureUWYTIsAllowedToBeDefault(
442 const GURL& canonical_input_url, 445 const GURL& canonical_input_url,
446 const bool scheme_explicitly_entered,
443 TemplateURLService* template_url_service) { 447 TemplateURLService* template_url_service) {
444 if (!allowed_to_be_default_match) { 448 if (!allowed_to_be_default_match) {
445 const GURL& stripped_canonical_input_url = 449 const GURL& stripped_canonical_input_url =
446 AutocompleteMatch::GURLToStrippedGURL( 450 AutocompleteMatch::GURLToStrippedGURL(
447 canonical_input_url, template_url_service, base::string16()); 451 canonical_input_url, scheme_explicitly_entered,
448 ComputeStrippedDestinationURL(template_url_service); 452 template_url_service, base::string16());
453 ComputeStrippedDestinationURL(scheme_explicitly_entered,
454 template_url_service);
449 allowed_to_be_default_match = 455 allowed_to_be_default_match =
450 stripped_canonical_input_url == stripped_destination_url; 456 stripped_canonical_input_url == stripped_destination_url;
451 } 457 }
452 } 458 }
453 459
454 void AutocompleteMatch::GetKeywordUIState( 460 void AutocompleteMatch::GetKeywordUIState(
455 TemplateURLService* template_url_service, 461 TemplateURLService* template_url_service,
456 base::string16* keyword, 462 base::string16* keyword,
457 bool* is_keyword_hint) const { 463 bool* is_keyword_hint) const {
458 *is_keyword_hint = associated_keyword.get() != NULL; 464 *is_keyword_hint = associated_keyword.get() != NULL;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 << " is unsorted in relation to last offset of " << last_offset 567 << " is unsorted in relation to last offset of " << last_offset
562 << ". Provider: " << provider_name << "."; 568 << ". Provider: " << provider_name << ".";
563 DCHECK_LT(i->offset, text.length()) 569 DCHECK_LT(i->offset, text.length())
564 << " Classification of [" << i->offset << "," << text.length() 570 << " Classification of [" << i->offset << "," << text.length()
565 << "] is out of bounds for \"" << text << "\". Provider: " 571 << "] is out of bounds for \"" << text << "\". Provider: "
566 << provider_name << "."; 572 << provider_name << ".";
567 last_offset = i->offset; 573 last_offset = i->offset;
568 } 574 }
569 } 575 }
570 #endif 576 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698