summaryrefslogtreecommitdiffstats
path: root/chromium/url/gurl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/url/gurl.cc')
-rw-r--r--chromium/url/gurl.cc113
1 files changed, 63 insertions, 50 deletions
diff --git a/chromium/url/gurl.cc b/chromium/url/gurl.cc
index 8eb2d6132db..b7374b1f20e 100644
--- a/chromium/url/gurl.cc
+++ b/chromium/url/gurl.cc
@@ -86,16 +86,17 @@ GURL::GURL(const std::string& url_string, RetainWhiteSpaceSelector) {
InitCanonical(url_string, false);
}
-GURL::GURL(const char* canonical_spec, size_t canonical_spec_len,
- const url_parse::Parsed& parsed, bool is_valid)
+GURL::GURL(const char* canonical_spec,
+ size_t canonical_spec_len,
+ const url::Parsed& parsed,
+ bool is_valid)
: spec_(canonical_spec, canonical_spec_len),
is_valid_(is_valid),
parsed_(parsed) {
InitializeFromCanonicalSpec();
}
-GURL::GURL(std::string canonical_spec,
- const url_parse::Parsed& parsed, bool is_valid)
+GURL::GURL(std::string canonical_spec, const url::Parsed& parsed, bool is_valid)
: is_valid_(is_valid),
parsed_(parsed) {
spec_.swap(canonical_spec);
@@ -107,8 +108,8 @@ void GURL::InitCanonical(const STR& input_spec, bool trim_path_end) {
// Reserve enough room in the output for the input, plus some extra so that
// we have room if we have to escape a few things without reallocating.
spec_.reserve(input_spec.size() + 32);
- url_canon::StdStringCanonOutput output(&spec_);
- is_valid_ = url_util::Canonicalize(
+ url::StdStringCanonOutput output(&spec_);
+ is_valid_ = url::Canonicalize(
input_spec.data(), static_cast<int>(input_spec.length()), trim_path_end,
NULL, &output, &parsed_);
@@ -131,12 +132,12 @@ void GURL::InitializeFromCanonicalSpec() {
// what we would have produced. Skip checking for invalid URLs have no meaning
// and we can't always canonicalize then reproducabely.
if (is_valid_) {
- url_parse::Component scheme;
+ url::Component scheme;
// We can't do this check on the inner_url of a filesystem URL, as
// canonical_spec actually points to the start of the outer URL, so we'd
// end up with infinite recursion in this constructor.
- if (!url_util::FindAndCompareScheme(spec_.data(), spec_.length(),
- "filesystem", &scheme) ||
+ if (!url::FindAndCompareScheme(spec_.data(), spec_.length(),
+ url::kFileSystemScheme, &scheme) ||
scheme.begin == parsed_.scheme.begin) {
// We need to retain trailing whitespace on path URLs, as the |parsed_|
// spec we originally received may legitimately contain trailing white-
@@ -186,7 +187,7 @@ GURL GURL::Resolve(const base::string16& relative) const {
// Note: code duplicated below (it's inconvenient to use a template here).
GURL GURL::ResolveWithCharsetConverter(
const std::string& relative,
- url_canon::CharsetConverter* charset_converter) const {
+ url::CharsetConverter* charset_converter) const {
// Not allowed for invalid URLs.
if (!is_valid_)
return GURL();
@@ -196,12 +197,12 @@ GURL GURL::ResolveWithCharsetConverter(
// Reserve enough room in the output for the input, plus some extra so that
// we have room if we have to escape a few things without reallocating.
result.spec_.reserve(spec_.size() + 32);
- url_canon::StdStringCanonOutput output(&result.spec_);
+ url::StdStringCanonOutput output(&result.spec_);
- if (!url_util::ResolveRelative(
- spec_.data(), static_cast<int>(spec_.length()), parsed_,
- relative.data(), static_cast<int>(relative.length()),
- charset_converter, &output, &result.parsed_)) {
+ if (!url::ResolveRelative(spec_.data(), static_cast<int>(spec_.length()),
+ parsed_, relative.data(),
+ static_cast<int>(relative.length()),
+ charset_converter, &output, &result.parsed_)) {
// Error resolving, return an empty URL.
return GURL();
}
@@ -219,7 +220,7 @@ GURL GURL::ResolveWithCharsetConverter(
// Note: code duplicated above (it's inconvenient to use a template here).
GURL GURL::ResolveWithCharsetConverter(
const base::string16& relative,
- url_canon::CharsetConverter* charset_converter) const {
+ url::CharsetConverter* charset_converter) const {
// Not allowed for invalid URLs.
if (!is_valid_)
return GURL();
@@ -229,12 +230,12 @@ GURL GURL::ResolveWithCharsetConverter(
// Reserve enough room in the output for the input, plus some extra so that
// we have room if we have to escape a few things without reallocating.
result.spec_.reserve(spec_.size() + 32);
- url_canon::StdStringCanonOutput output(&result.spec_);
+ url::StdStringCanonOutput output(&result.spec_);
- if (!url_util::ResolveRelative(
- spec_.data(), static_cast<int>(spec_.length()), parsed_,
- relative.data(), static_cast<int>(relative.length()),
- charset_converter, &output, &result.parsed_)) {
+ if (!url::ResolveRelative(spec_.data(), static_cast<int>(spec_.length()),
+ parsed_, relative.data(),
+ static_cast<int>(relative.length()),
+ charset_converter, &output, &result.parsed_)) {
// Error resolving, return an empty URL.
return GURL();
}
@@ -251,7 +252,7 @@ GURL GURL::ResolveWithCharsetConverter(
// Note: code duplicated below (it's inconvenient to use a template here).
GURL GURL::ReplaceComponents(
- const url_canon::Replacements<char>& replacements) const {
+ const url::Replacements<char>& replacements) const {
GURL result;
// Not allowed for invalid URLs.
@@ -261,9 +262,9 @@ GURL GURL::ReplaceComponents(
// Reserve enough room in the output for the input, plus some extra so that
// we have room if we have to escape a few things without reallocating.
result.spec_.reserve(spec_.size() + 32);
- url_canon::StdStringCanonOutput output(&result.spec_);
+ url::StdStringCanonOutput output(&result.spec_);
- result.is_valid_ = url_util::ReplaceComponents(
+ result.is_valid_ = url::ReplaceComponents(
spec_.data(), static_cast<int>(spec_.length()), parsed_, replacements,
NULL, &output, &result.parsed_);
@@ -277,7 +278,7 @@ GURL GURL::ReplaceComponents(
// Note: code duplicated above (it's inconvenient to use a template here).
GURL GURL::ReplaceComponents(
- const url_canon::Replacements<base::char16>& replacements) const {
+ const url::Replacements<base::char16>& replacements) const {
GURL result;
// Not allowed for invalid URLs.
@@ -287,9 +288,9 @@ GURL GURL::ReplaceComponents(
// Reserve enough room in the output for the input, plus some extra so that
// we have room if we have to escape a few things without reallocating.
result.spec_.reserve(spec_.size() + 32);
- url_canon::StdStringCanonOutput output(&result.spec_);
+ url::StdStringCanonOutput output(&result.spec_);
- result.is_valid_ = url_util::ReplaceComponents(
+ result.is_valid_ = url::ReplaceComponents(
spec_.data(), static_cast<int>(spec_.length()), parsed_, replacements,
NULL, &output, &result.parsed_);
@@ -310,7 +311,7 @@ GURL GURL::GetOrigin() const {
if (SchemeIsFileSystem())
return inner_url_->GetOrigin();
- url_canon::Replacements<char> replacements;
+ url::Replacements<char> replacements;
replacements.ClearUsername();
replacements.ClearPassword();
replacements.ClearPath();
@@ -320,6 +321,18 @@ GURL GURL::GetOrigin() const {
return ReplaceComponents(replacements);
}
+GURL GURL::GetAsReferrer() const {
+ if (!is_valid_ ||
+ (!has_ref() && !has_username() && !has_password()))
+ return GURL(*this);
+
+ url::Replacements<char> replacements;
+ replacements.ClearRef();
+ replacements.ClearUsername();
+ replacements.ClearPassword();
+ return ReplaceComponents(replacements);
+}
+
GURL GURL::GetWithEmptyPath() const {
// This doesn't make sense for invalid or nonstandard URLs, so return
// the empty URL.
@@ -345,42 +358,42 @@ GURL GURL::GetWithEmptyPath() const {
}
bool GURL::IsStandard() const {
- return url_util::IsStandard(spec_.data(), parsed_.scheme);
+ return url::IsStandard(spec_.data(), parsed_.scheme);
}
bool GURL::SchemeIs(const char* lower_ascii_scheme) const {
if (parsed_.scheme.len <= 0)
return lower_ascii_scheme == NULL;
- return url_util::LowerCaseEqualsASCII(spec_.data() + parsed_.scheme.begin,
- spec_.data() + parsed_.scheme.end(),
- lower_ascii_scheme);
+ return url::LowerCaseEqualsASCII(spec_.data() + parsed_.scheme.begin,
+ spec_.data() + parsed_.scheme.end(),
+ lower_ascii_scheme);
}
bool GURL::SchemeIsHTTPOrHTTPS() const {
- return SchemeIs("http") || SchemeIs("https");
+ return SchemeIs(url::kHttpScheme) || SchemeIs(url::kHttpsScheme);
}
bool GURL::SchemeIsWSOrWSS() const {
- return SchemeIs("ws") || SchemeIs("wss");
+ return SchemeIs(url::kWsScheme) || SchemeIs(url::kWssScheme);
}
int GURL::IntPort() const {
if (parsed_.port.is_nonempty())
- return url_parse::ParsePort(spec_.data(), parsed_.port);
- return url_parse::PORT_UNSPECIFIED;
+ return url::ParsePort(spec_.data(), parsed_.port);
+ return url::PORT_UNSPECIFIED;
}
int GURL::EffectiveIntPort() const {
int int_port = IntPort();
- if (int_port == url_parse::PORT_UNSPECIFIED && IsStandard())
- return url_canon::DefaultPortForScheme(spec_.data() + parsed_.scheme.begin,
- parsed_.scheme.len);
+ if (int_port == url::PORT_UNSPECIFIED && IsStandard())
+ return url::DefaultPortForScheme(spec_.data() + parsed_.scheme.begin,
+ parsed_.scheme.len);
return int_port;
}
std::string GURL::ExtractFileName() const {
- url_parse::Component file_component;
- url_parse::ExtractFileName(spec_.data(), parsed_.path, &file_component);
+ url::Component file_component;
+ url::ExtractFileName(spec_.data(), parsed_.path, &file_component);
return ComponentString(file_component);
}
@@ -404,7 +417,7 @@ std::string GURL::PathForRequest() const {
std::string GURL::HostNoBrackets() const {
// If host looks like an IPv6 literal, strip the square brackets.
- url_parse::Component h(parsed_.host);
+ url::Component h(parsed_.host);
if (h.len >= 2 && spec_[h.begin] == '[' && spec_[h.end() - 1] == ']') {
h.begin++;
h.len -= 2;
@@ -420,10 +433,10 @@ bool GURL::HostIsIPAddress() const {
if (!is_valid_ || spec_.empty())
return false;
- url_canon::RawCanonOutputT<char, 128> ignored_output;
- url_canon::CanonHostInfo host_info;
- url_canon::CanonicalizeIPAddress(spec_.c_str(), parsed_.host,
- &ignored_output, &host_info);
+ url::RawCanonOutputT<char, 128> ignored_output;
+ url::CanonHostInfo host_info;
+ url::CanonicalizeIPAddress(spec_.c_str(), parsed_.host, &ignored_output,
+ &host_info);
return host_info.IsIPAddress();
}
@@ -490,10 +503,10 @@ bool GURL::DomainIs(const char* lower_ascii_domain,
const char* start_pos = spec_.data() + parsed_.host.begin +
host_len - domain_len;
- if (!url_util::LowerCaseEqualsASCII(start_pos,
- last_pos + 1,
- lower_ascii_domain,
- lower_ascii_domain + domain_len))
+ if (!url::LowerCaseEqualsASCII(start_pos,
+ last_pos + 1,
+ lower_ascii_domain,
+ lower_ascii_domain + domain_len))
return false;
// Check whether host has right domain start with dot, make sure we got