url: Use string_views for arguments of CanonicalizeStandardURL() and ReplaceStandardURL()
This CL has no behavior changes.
Bug: 350788890
Change-Id: Id8d0abb08fff549c4d4367fca19823f9c0a07830
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7077619
Commit-Queue: Hayato Ito <hayato@chromium.org>
Auto-Submit: Kent Tamura <tkent@chromium.org>
Reviewed-by: Hayato Ito <hayato@chromium.org>
Owners-Override: Hayato Ito <hayato@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1534728}
NOKEYCHECK=True
GitOrigin-RevId: f22f0455d2910ae8d34f3a5601e4c4857134faa8
diff --git a/url_canon.h b/url_canon.h
index 25b3207..9f3695b 100644
--- a/url_canon.h
+++ b/url_canon.h
@@ -739,14 +739,14 @@
// Use for standard URLs with authorities and paths.
COMPONENT_EXPORT(URL)
-bool CanonicalizeStandardURL(const char* spec,
+bool CanonicalizeStandardUrl(std::string_view spec,
const Parsed& parsed,
SchemeType scheme_type,
CharsetConverter* query_converter,
CanonOutput* output,
Parsed* new_parsed);
COMPONENT_EXPORT(URL)
-bool CanonicalizeStandardURL(const char16_t* spec,
+bool CanonicalizeStandardUrl(std::u16string_view spec,
const Parsed& parsed,
SchemeType scheme_type,
CharsetConverter* query_converter,
@@ -1027,7 +1027,7 @@
// The base must be an 8-bit canonical URL.
COMPONENT_EXPORT(URL)
-bool ReplaceStandardURL(const char* base,
+bool ReplaceStandardUrl(std::string_view base,
const Parsed& base_parsed,
const Replacements<char>& replacements,
SchemeType scheme_type,
@@ -1035,7 +1035,7 @@
CanonOutput* output,
Parsed* new_parsed);
COMPONENT_EXPORT(URL)
-bool ReplaceStandardURL(const char* base,
+bool ReplaceStandardUrl(std::string_view base,
const Parsed& base_parsed,
const Replacements<char16_t>& replacements,
SchemeType scheme_type,
diff --git a/url_canon_filesystemurl.cc b/url_canon_filesystemurl.cc
index 7854e97..e1df962 100644
--- a/url_canon_filesystemurl.cc
+++ b/url_canon_filesystemurl.cc
@@ -61,7 +61,7 @@
inner_scheme_type = SCHEME_WITH_HOST_AND_PORT;
}
success =
- CanonicalizeStandardURL(spec.data(), *inner_parsed, inner_scheme_type,
+ CanonicalizeStandardUrl(spec, *inner_parsed, inner_scheme_type,
charset_converter, output, &new_inner_parsed);
} else {
// TODO(ericu): The URL is wrong, but should we try to output more of what
diff --git a/url_canon_relative.cc b/url_canon_relative.cc
index a24a73d..c9ac0ac 100644
--- a/url_canon_relative.cc
+++ b/url_canon_relative.cc
@@ -530,8 +530,8 @@
query_converter, *output, *out_parsed);
}
- return ReplaceStandardURL(base_url.data(), base_parsed, replacements,
- scheme_type, query_converter, output, out_parsed);
+ return ReplaceStandardUrl(base_url, base_parsed, replacements, scheme_type,
+ query_converter, output, out_parsed);
}
// Resolves a relative URL that happens to be an absolute file path. Examples
diff --git a/url_canon_stdurl.cc b/url_canon_stdurl.cc
index f97e50b..aa8ae44 100644
--- a/url_canon_stdurl.cc
+++ b/url_canon_stdurl.cc
@@ -15,7 +15,7 @@
namespace {
template <typename CHAR>
-bool DoCanonicalizeStandardURL(const URLComponentSource<CHAR>& source,
+bool DoCanonicalizeStandardUrl(const URLComponentSource<CHAR>& source,
const Parsed& parsed,
SchemeType scheme_type,
CharsetConverter* query_converter,
@@ -155,24 +155,24 @@
return PORT_UNSPECIFIED;
}
-bool CanonicalizeStandardURL(const char* spec,
+bool CanonicalizeStandardUrl(std::string_view spec,
const Parsed& parsed,
SchemeType scheme_type,
CharsetConverter* query_converter,
CanonOutput* output,
Parsed* new_parsed) {
- return DoCanonicalizeStandardURL(URLComponentSource(spec), parsed,
+ return DoCanonicalizeStandardUrl(URLComponentSource(spec.data()), parsed,
scheme_type, query_converter, output,
new_parsed);
}
-bool CanonicalizeStandardURL(const char16_t* spec,
+bool CanonicalizeStandardUrl(std::u16string_view spec,
const Parsed& parsed,
SchemeType scheme_type,
CharsetConverter* query_converter,
CanonOutput* output,
Parsed* new_parsed) {
- return DoCanonicalizeStandardURL(URLComponentSource(spec), parsed,
+ return DoCanonicalizeStandardUrl(URLComponentSource(spec.data()), parsed,
scheme_type, query_converter, output,
new_parsed);
}
@@ -186,23 +186,23 @@
//
// You would also need to update DoReplaceComponents in url_util.cc which
// relies on this re-checking everything (see the comment there for why).
-bool ReplaceStandardURL(const char* base,
+bool ReplaceStandardUrl(std::string_view base,
const Parsed& base_parsed,
const Replacements<char>& replacements,
SchemeType scheme_type,
CharsetConverter* query_converter,
CanonOutput* output,
Parsed* new_parsed) {
- URLComponentSource<char> source(base);
+ URLComponentSource<char> source(base.data());
Parsed parsed(base_parsed);
- SetupOverrideComponents(base, replacements, &source, &parsed);
- return DoCanonicalizeStandardURL(source, parsed, scheme_type, query_converter,
+ SetupOverrideComponents(base.data(), replacements, &source, &parsed);
+ return DoCanonicalizeStandardUrl(source, parsed, scheme_type, query_converter,
output, new_parsed);
}
// For 16-bit replacements, we turn all the replacements into UTF-8 so the
// regular code path can be used.
-bool ReplaceStandardURL(const char* base,
+bool ReplaceStandardUrl(std::string_view base,
const Parsed& base_parsed,
const Replacements<char16_t>& replacements,
SchemeType scheme_type,
@@ -210,10 +210,11 @@
CanonOutput* output,
Parsed* new_parsed) {
RawCanonOutput<1024> utf8;
- URLComponentSource<char> source(base);
+ URLComponentSource<char> source(base.data());
Parsed parsed(base_parsed);
- SetupUTF16OverrideComponents(base, replacements, &utf8, &source, &parsed);
- return DoCanonicalizeStandardURL(source, parsed, scheme_type, query_converter,
+ SetupUTF16OverrideComponents(base.data(), replacements, &utf8, &source,
+ &parsed);
+ return DoCanonicalizeStandardUrl(source, parsed, scheme_type, query_converter,
output, new_parsed);
}
diff --git a/url_canon_unittest.cc b/url_canon_unittest.cc
index 11b6c83..7db0db7 100644
--- a/url_canon_unittest.cc
+++ b/url_canon_unittest.cc
@@ -1780,7 +1780,7 @@
Parsed out_parsed;
std::string out_str;
StdStringCanonOutput output(&out_str);
- bool success = CanonicalizeStandardURL(
+ bool success = CanonicalizeStandardUrl(
i.input, parsed, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr,
&output, &out_parsed);
output.Complete();
@@ -1963,7 +1963,7 @@
std::string out_str;
StdStringCanonOutput output(&out_str);
Parsed out_parsed;
- ReplaceStandardURL(replace_case.base, parsed, r,
+ ReplaceStandardUrl(replace_case.base, parsed, r,
SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr,
&output, &out_parsed);
output.Complete();
@@ -1983,7 +1983,7 @@
std::string out_str1;
StdStringCanonOutput output1(&out_str1);
Parsed new_parsed;
- ReplaceStandardURL(src, parsed, r,
+ ReplaceStandardUrl(src, parsed, r,
SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr,
&output1, &new_parsed);
output1.Complete();
@@ -1993,7 +1993,7 @@
r.SetPath(reinterpret_cast<char*>(0x00000001), Component());
std::string out_str2;
StdStringCanonOutput output2(&out_str2);
- ReplaceStandardURL(src, parsed, r,
+ ReplaceStandardUrl(src, parsed, r,
SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr,
&output2, &new_parsed);
output2.Complete();
diff --git a/url_parse_perftest.cc b/url_parse_perftest.cc
index eedd34f..137a0e2 100644
--- a/url_parse_perftest.cc
+++ b/url_parse_perftest.cc
@@ -60,20 +60,20 @@
url::RawCanonOutput<1024> output;
for (int i = 0; i < 333333; i++) { // divide by 3 so we get 1M
output.set_length(0);
- url::CanonicalizeStandardURL(
- kTypicalUrl1.data(), url::ParseStandardURL(kTypicalUrl1),
+ url::CanonicalizeStandardUrl(
+ kTypicalUrl1, url::ParseStandardURL(kTypicalUrl1),
url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr, &output,
&out_parsed);
output.set_length(0);
- url::CanonicalizeStandardURL(
- kTypicalUrl2.data(), url::ParseStandardURL(kTypicalUrl2),
+ url::CanonicalizeStandardUrl(
+ kTypicalUrl2, url::ParseStandardURL(kTypicalUrl2),
url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr, &output,
&out_parsed);
output.set_length(0);
- url::CanonicalizeStandardURL(
- kTypicalUrl3.data(), url::ParseStandardURL(kTypicalUrl3),
+ url::CanonicalizeStandardUrl(
+ kTypicalUrl3, url::ParseStandardURL(kTypicalUrl3),
url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr, &output,
&out_parsed);
}
@@ -87,22 +87,22 @@
for (int i = 0; i < 333333; i++) { // divide by 3 so we get 1M
std::string out1;
url::StdStringCanonOutput output1(&out1);
- url::CanonicalizeStandardURL(
- kTypicalUrl1.data(), url::ParseStandardURL(kTypicalUrl1),
+ url::CanonicalizeStandardUrl(
+ kTypicalUrl1, url::ParseStandardURL(kTypicalUrl1),
url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr, &output1,
&out_parsed);
std::string out2;
url::StdStringCanonOutput output2(&out2);
- url::CanonicalizeStandardURL(
- kTypicalUrl2.data(), url::ParseStandardURL(kTypicalUrl2),
+ url::CanonicalizeStandardUrl(
+ kTypicalUrl2, url::ParseStandardURL(kTypicalUrl2),
url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr, &output2,
&out_parsed);
std::string out3;
url::StdStringCanonOutput output3(&out3);
- url::CanonicalizeStandardURL(
- kTypicalUrl3.data(), url::ParseStandardURL(kTypicalUrl3),
+ url::CanonicalizeStandardUrl(
+ kTypicalUrl3, url::ParseStandardURL(kTypicalUrl3),
url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION, nullptr, &output3,
&out_parsed);
}
diff --git a/url_util.cc b/url_util.cc
index 648d5e9..5f45b59 100644
--- a/url_util.cc
+++ b/url_util.cc
@@ -306,9 +306,8 @@
} else if (DoIsStandard(std::optional(scheme.as_string_view_on(spec.data())),
&scheme_type)) {
// All "normal" URLs.
- success = CanonicalizeStandardURL(spec.data(), ParseStandardURL(spec),
- scheme_type, charset_converter, output,
- output_parsed);
+ success = CanonicalizeStandardUrl(spec, ParseStandardURL(spec), scheme_type,
+ charset_converter, output, output_parsed);
} else {
// Non-special scheme URLs like data:, mailto: and javascript:.
@@ -491,7 +490,7 @@
SchemeType scheme_type = SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION;
if (DoIsStandard(parsed.scheme.maybe_as_string_view_on(spec_ptr),
&scheme_type)) {
- return ReplaceStandardURL(spec_ptr, parsed, replacements, scheme_type,
+ return ReplaceStandardUrl(spec, parsed, replacements, scheme_type,
charset_converter, output, out_parsed);
}