| Index: third_party/WebKit/Source/platform/weborigin/KURL.cpp
|
| diff --git a/third_party/WebKit/Source/platform/weborigin/KURL.cpp b/third_party/WebKit/Source/platform/weborigin/KURL.cpp
|
| index 666ec1043795a491dc0698c7ab5ff94c498730f4..f8f8a1f66bcd5260d7888893676a9df67729fd1d 100644
|
| --- a/third_party/WebKit/Source/platform/weborigin/KURL.cpp
|
| +++ b/third_party/WebKit/Source/platform/weborigin/KURL.cpp
|
| @@ -717,20 +717,6 @@ bool protocolIs(const String& url, const char* protocol) {
|
| void KURL::init(const KURL& base,
|
| const String& relative,
|
| const WTF::TextEncoding* queryEncoding) {
|
| - if (!relative.isNull() && relative.is8Bit()) {
|
| - StringUTF8Adaptor relativeUTF8(relative);
|
| - init(base, relativeUTF8.data(), relativeUTF8.length(), queryEncoding);
|
| - } else
|
| - init(base, relative.characters16(), relative.length(), queryEncoding);
|
| - initProtocolIsInHTTPFamily();
|
| - initInnerURL();
|
| -}
|
| -
|
| -template <typename CHAR>
|
| -void KURL::init(const KURL& base,
|
| - const CHAR* relative,
|
| - int relativeLength,
|
| - const WTF::TextEncoding* queryEncoding) {
|
| // As a performance optimization, we do not use the charset converter
|
| // if encoding is UTF-8 or other Unicode encodings. Note that this is
|
| // per HTML5 2.5.3 (resolving URL). The URL canonicalizer will be more
|
| @@ -746,15 +732,28 @@ void KURL::init(const KURL& base,
|
| : &charsetConverterObject;
|
|
|
| StringUTF8Adaptor baseUTF8(base.getString());
|
| -
|
| url::RawCanonOutputT<char> output;
|
| - m_isValid = url::ResolveRelative(baseUTF8.data(), baseUTF8.length(),
|
| - base.m_parsed, relative, relativeLength,
|
| - charsetConverter, &output, &m_parsed);
|
|
|
| - // See FIXME in KURLPrivate in the header. If canonicalization has not
|
| - // changed the string, we can avoid an extra allocation by using assignment.
|
| - m_string = AtomicString::fromUTF8(output.data(), output.length());
|
| + if (!relative.isNull() && relative.is8Bit()) {
|
| + StringUTF8Adaptor relativeUTF8(relative);
|
| + m_isValid = url::ResolveRelative(baseUTF8.data(), baseUTF8.length(),
|
| + base.m_parsed, relative, relativeLength,
|
| + charsetConverter, &output, &m_parsed);
|
| + } else {
|
| + m_isValid = url::ResolveRelative(baseUTF8.data(), baseUTF8.length(),
|
| + base.m_parsed, relative.characters16(),
|
| + static_cast<int>(relative.length()),
|
| + charsetConverter, &output, &m_parsed);
|
| + }
|
| +
|
| + if (StringView(output.data(), static_cast<unsigned>(output.length())) ==
|
| + relative)
|
| + m_string = AtomicString(relative);
|
| + else
|
| + m_string = AtomicString::fromUTF8(output.data(), output.length());
|
| +
|
| + initProtocolIsInHTTPFamily();
|
| + initInnerURL();
|
| }
|
|
|
| void KURL::initInnerURL() {
|
|
|