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

Unified Diff: Source/WebCore/platform/KURLGoogle.cpp

Issue 8856006: WebKit changes needed for supporting filesystem URLs natively in GURL/KURL. (Closed) Base URL: http://svn.webkit.org/repository/webkit/trunk
Patch Set: Remove dead constructor code. Created 9 years 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
« no previous file with comments | « Source/WebCore/platform/KURL.h ('k') | Source/WebCore/platform/KURLGooglePrivate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/WebCore/platform/KURLGoogle.cpp
diff --git a/Source/WebCore/platform/KURLGoogle.cpp b/Source/WebCore/platform/KURLGoogle.cpp
index 6bf9fccb1e9fe192e8dc5b302958cdf11f47924c..e3d74fa2b43c574e02851c3233f702f0260cbc16 100644
--- a/Source/WebCore/platform/KURLGoogle.cpp
+++ b/Source/WebCore/platform/KURLGoogle.cpp
@@ -174,6 +174,35 @@ KURLGooglePrivate::KURLGooglePrivate(WTF::HashTableDeletedValueType)
{
}
+KURLGooglePrivate::KURLGooglePrivate(const KURLGooglePrivate& o)
+ : m_isValid(o.m_isValid)
+ , m_protocolIsInHTTPFamily(o.m_protocolIsInHTTPFamily)
+ , m_parsed(o.m_parsed)
+ , m_utf8(o.m_utf8)
+ , m_utf8IsASCII(o.m_utf8IsASCII)
+ , m_stringIsValid(o.m_stringIsValid)
+ , m_string(o.m_string)
+{
+ if (o.m_innerURL.get())
+ m_innerURL = adoptPtr(new KURL(o.m_innerURL->copy()));
+}
+
+KURLGooglePrivate& KURLGooglePrivate::operator=(const KURLGooglePrivate& o)
+{
+ m_isValid = o.m_isValid;
+ m_protocolIsInHTTPFamily = o.m_protocolIsInHTTPFamily;
+ m_parsed = o.m_parsed;
+ m_utf8 = o.m_utf8;
+ m_utf8IsASCII = o.m_utf8IsASCII;
+ m_stringIsValid = o.m_stringIsValid;
+ m_string = o.m_string;
+ if (o.m_innerURL.get())
+ m_innerURL = adoptPtr(new KURL(o.m_innerURL->copy()));
+ else
+ m_innerURL.clear();
+ return *this;
+}
+
// Setters for the data. Using the ASCII version when you know the
// data is ASCII will be slightly more efficient. The UTF-8 version
// will always be correct if the caller is unsure.
@@ -197,6 +226,7 @@ void KURLGooglePrivate::setUtf8(const CString& str)
m_utf8 = str;
m_stringIsValid = false;
initProtocolIsInHTTPFamily();
+ initInnerURL();
}
void KURLGooglePrivate::setAscii(const CString& str)
@@ -205,6 +235,7 @@ void KURLGooglePrivate::setAscii(const CString& str)
m_utf8IsASCII = true;
m_stringIsValid = false;
initProtocolIsInHTTPFamily();
+ initInnerURL();
}
void KURLGooglePrivate::init(const KURL& base,
@@ -258,6 +289,20 @@ void KURLGooglePrivate::init(const KURL& base, const CHAR* rel, int relLength,
}
}
+void KURLGooglePrivate::initInnerURL() {
+ if (!m_isValid) {
+ m_innerURL.clear();
+ return;
+ }
+ url_parse::Parsed* innerParsed = m_parsed.inner_parsed();
+ if (innerParsed)
+ m_innerURL = adoptPtr(new KURL(
+ ParsedURLString,
+ String(m_utf8.data() + innerParsed->scheme.begin, innerParsed->Length() - innerParsed->scheme.begin)));
+ else
+ m_innerURL.clear();
+}
+
void KURLGooglePrivate::initProtocolIsInHTTPFamily()
{
if (!m_isValid) {
@@ -285,6 +330,11 @@ void KURLGooglePrivate::copyTo(KURLGooglePrivate* dest) const
dest->m_utf8IsASCII = m_utf8IsASCII;
dest->m_stringIsValid = false;
dest->m_string = String(); // Clear the invalid string to avoid cross thread ref counting.
+ if (m_innerURL) {
+ dest->m_innerURL = adoptPtr(new KURL(m_innerURL->copy()));
+ }
+ else
+ dest->m_innerURL.clear();
}
String KURLGooglePrivate::componentString(const url_parse::Component& comp) const
@@ -827,7 +877,10 @@ String encodeWithURLEscapeSequences(const String& notEncodedString)
buffer.Resize(inputLength * 3);
url_util::EncodeURIComponent(input, inputLength, &buffer);
- return String(buffer.data(), buffer.length());
+ String escaped(buffer.data(), buffer.length());
+ // Unescape '/'; it's safe and much prettier.
+ escaped.replace("%2F", "/");
+ return escaped;
}
bool KURL::isHierarchical() const
« no previous file with comments | « Source/WebCore/platform/KURL.h ('k') | Source/WebCore/platform/KURLGooglePrivate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698