Written by Darin, reviewed by Maciej and me
authorsullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Feb 2005 01:34:06 +0000 (01:34 +0000)
committersullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 17 Feb 2005 01:34:06 +0000 (01:34 +0000)
        - change required to make previous checkin work with English language RSS pages

        * kwq/KWQKURL.h:
        new private method isHierarchical
        * kwq/KWQKURL.mm:
        (KURL::KURL):
        add hierarchical base URL check when determining whether the URL is absolute
        (KURL::isHierarchical):
        new method, returns true if this is a valid URL with a slash just past the scheme's trailing colon

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8604 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/kwq/KWQKURL.h
WebCore/kwq/KWQKURL.mm

index cf5ff53..25fceca 100644 (file)
@@ -1,5 +1,19 @@
 2005-02-16  John Sullivan  <sullivan@apple.com>
 
+        Written by Darin, reviewed by Maciej and me
+        
+        - change required to make previous checkin work with English language RSS pages
+
+        * kwq/KWQKURL.h:
+        new private method isHierarchical
+        * kwq/KWQKURL.mm:
+        (KURL::KURL):
+        add hierarchical base URL check when determining whether the URL is absolute
+        (KURL::isHierarchical):
+        new method, returns true if this is a valid URL with a slash just past the scheme's trailing colon
+
+2005-02-16  John Sullivan  <sullivan@apple.com>
+
         Written by Darin, reviewed by me.
         
         - WebCore part of fix for <rdar://problem/4007384> 
index 5121aaa..1db2bd1 100644 (file)
@@ -88,6 +88,7 @@ public:
     friend bool operator==(const KURL &, const KURL &);
 
 private:
+    bool isHierarchical() const;
     void parse(const char *url, const QString *originalString);
 
 #ifdef CONSTRUCT_CANONICAL_STRING
index 854852b..5b03110 100644 (file)
@@ -392,7 +392,7 @@ KURL::KURL(const KURL &base, const QString &relative, const QTextCodec *codec)
             ++p;
         }
         if (*p == ':') {
-            if (p[1] != '/' && base.protocol().lower() == QString(str, p - str).lower())
+            if (p[1] != '/' && base.protocol().lower() == QString(str, p - str).lower() && base.isHierarchical())
                 str = p + 1;
             else
                 absolute = true;
@@ -1748,3 +1748,11 @@ static QString substituteBackslashes(const QString &string)
 
     return string.left(pathEnd).replace('\\','/') + string.mid(pathEnd);
 }
+
+bool KURL::isHierarchical() const
+{
+    if (!m_isValid)
+        return false;
+    assert(urlString[schemeEndPos] == ':');
+    return urlString[schemeEndPos + 1] == '/';
+}