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

Unified Diff: components/omnibox/browser/autocomplete_match.cc

Issue 2940973002: Omnibox UI Experiments: Implement scheme-trimming for suggested URLs. (Closed)
Patch Set: fix Created 3 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 side-by-side diff with in-line comments
Download patch
Index: components/omnibox/browser/autocomplete_match.cc
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc
index 00565376a2b2e7c0cc12e80bdb6da84fd490e55b..dd0eaf01265b6dce6010bbc47f060bcefefea2a8 100644
--- a/components/omnibox/browser/autocomplete_match.cc
+++ b/components/omnibox/browser/autocomplete_match.cc
@@ -7,6 +7,7 @@
#include <algorithm>
#include <utility>
+#include "base/feature_list.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/strings/string16.h"
@@ -15,9 +16,11 @@
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
+#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "components/omnibox/browser/autocomplete_provider.h"
+#include "components/omnibox/browser/omnibox_field_trial.h"
#include "components/omnibox/browser/suggestion_answer.h"
#include "components/search_engines/template_url.h"
#include "components/search_engines/template_url_service.h"
@@ -485,6 +488,69 @@ GURL AutocompleteMatch::GURLToStrippedGURL(
return stripped_destination_url;
}
+// static
+base::string16 AutocompleteMatch::FormatUrlForSuggestionDisplay(
+ const GURL& url,
+ bool trim_scheme,
+ size_t* offset_for_adjustment) {
+ std::vector<size_t> offsets;
+ if (offset_for_adjustment)
+ offsets.push_back(*offset_for_adjustment);
+ base::string16 result =
+ FormatUrlForSuggestionDisplayWithOffsets(url, trim_scheme, &offsets);
+ if (offset_for_adjustment)
+ *offset_for_adjustment = offsets[0];
+ return result;
+}
+
+// static
+base::string16 AutocompleteMatch::FormatUrlForSuggestionDisplayWithOffsets(
+ const GURL& url,
+ bool trim_scheme,
+ std::vector<size_t>* offsets_for_adjustment) {
+ base::OffsetAdjuster::Adjustments adjustments;
+ const base::string16& format_url_return_value =
+ FormatUrlForSuggestionDisplayWithAdjustments(url, trim_scheme,
+ &adjustments);
+ base::OffsetAdjuster::AdjustOffsets(adjustments, offsets_for_adjustment);
+ if (offsets_for_adjustment) {
+ std::for_each(
+ offsets_for_adjustment->begin(), offsets_for_adjustment->end(),
+ base::LimitOffset<std::string>(format_url_return_value.length()));
+ }
+ return format_url_return_value;
+}
+
+// static
+base::string16 AutocompleteMatch::FormatUrlForSuggestionDisplayWithAdjustments(
+ const GURL& url,
+ bool trim_scheme,
+ base::OffsetAdjuster::Adjustments* adjustments) {
+ const url_formatter::FormatUrlTypes format_types =
+ url_formatter::kFormatUrlOmitAll &
+ ~(trim_scheme ? 0 : url_formatter::kFormatUrlOmitHTTP);
+ base::string16 result = url_formatter::FormatUrlWithAdjustments(
+ url, format_types, net::UnescapeRule::SPACES, nullptr, nullptr,
+ adjustments);
+
+ // Also trim HTTPS if experiment is enabled. Note this intentionally has
+ // no effect on view-source URLs.
+ if (trim_scheme && base::FeatureList::IsEnabled(
+ omnibox::kUIExperimentHideSuggestionUrlScheme)) {
+ // TODO(tommycli): If this becomes enabled by default, investigate
+ // folding this logic into url_formatter::FormatUrlWithAdjustments.
+ if (url.SchemeIs(url::kHttpsScheme)) {
+ const size_t kHTTPSSize =
+ strlen(url::kHttpsScheme) + strlen(url::kStandardSchemeSeparator);
+ result = result.substr(kHTTPSSize);
+ adjustments->insert(adjustments->begin(),
+ base::OffsetAdjuster::Adjustment(0, kHTTPSSize, 0));
+ }
+ }
+
+ return result;
+}
+
void AutocompleteMatch::ComputeStrippedDestinationURL(
const AutocompleteInput& input,
TemplateURLService* template_url_service) {
« no previous file with comments | « components/omnibox/browser/autocomplete_match.h ('k') | components/omnibox/browser/autocomplete_match_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698