Revert QUrl::isRelative to its Qt 4 behaviour
authorThiago Macieira <thiago.macieira@intel.com>
Wed, 25 Apr 2012 10:48:02 +0000 (12:48 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 25 Apr 2012 12:58:36 +0000 (14:58 +0200)
Instead of trying to return whether the URL is relative to something
undefined, let's instead follow what the documentation was saying all
along and what the RFC says about "Relative References".

Change-Id: I32722321a6b36c6e3480669ad769390e4c6f7d1c
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/corelib/io/qurl.cpp
tests/auto/corelib/io/qurl/tst_qurl.cpp

index 5cc49c8..44160b3 100644 (file)
@@ -2076,14 +2076,16 @@ QUrl QUrl::resolved(const QUrl &relative) const
 }
 
 /*!
-    Returns true if the URL is relative; otherwise returns false. A
-    URL is relative if its scheme is undefined; this function is
-    therefore equivalent to calling scheme().isEmpty().
+    Returns true if the URL is relative; otherwise returns false. A URL is
+    relative reference if its scheme is undefined; this function is therefore
+    equivalent to calling scheme().isEmpty().
+
+    Relative references are defined in RFC 3986 section 4.2.
 */
 bool QUrl::isRelative() const
 {
     if (!d) return true;
-    return !d->hasScheme() && !d->path.startsWith(QLatin1Char('/'));
+    return !d->hasScheme();
 }
 
 /*!
index 2b7a467..31acd1a 100644 (file)
@@ -1621,7 +1621,7 @@ void tst_QUrl::isRelative_data()
     QTest::newRow("man: URL, is relative") << "man:mmap" << false;
     QTest::newRow("javascript: URL, is relative") << "javascript:doSomething()" << false;
     QTest::newRow("file: URL, is relative") << "file:/blah" << false;
-    QTest::newRow("/path, is relative") << "/path" << false;
+    QTest::newRow("/path, is relative") << "/path" << true;
     QTest::newRow("something, is relative") << "something" << true;
     // end kde
 }