summaryrefslogtreecommitdiffstats
path: root/LayoutTests/fast/url/script-tests/relative-win.js
diff options
context:
space:
mode:
Diffstat (limited to 'LayoutTests/fast/url/script-tests/relative-win.js')
-rw-r--r--LayoutTests/fast/url/script-tests/relative-win.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/LayoutTests/fast/url/script-tests/relative-win.js b/LayoutTests/fast/url/script-tests/relative-win.js
new file mode 100644
index 0000000..13ac7af
--- /dev/null
+++ b/LayoutTests/fast/url/script-tests/relative-win.js
@@ -0,0 +1,48 @@
+description("Test resolution of relative Windows-like URLs.");
+
+cases = [
+ // Format: [baseURL, relativeURL, expectedURL],
+ // Resolving against Windows file base URLs.
+ ["file:///C:/foo", "http://host/", "http://host/"],
+ ["file:///C:/foo", "bar", "file:///C:/bar"],
+ ["file:///C:/foo", "../../../bar.html", "file:///C:/bar.html"],
+ ["file:///C:/foo", "/../bar.html", "file:///C:/bar.html"],
+ // But two backslashes on Windows should be UNC so should be treated
+ // as absolute.
+ ["http://host/a", "\\\\\\\\another\\\\path", ""],
+ // IE doesn't support drive specs starting with two slashes. It fails
+ // immediately and doesn't even try to load. We fix it up to either
+ // an absolute path or UNC depending on what it looks like.
+ ["file:///C:/something", "//c:/foo", "file:///C:/foo"],
+ ["file:///C:/something", "//localhost/c:/foo", "file:///C:/foo"],
+ // Windows drive specs should be allowed and treated as absolute.
+ ["file:///C:/foo", "c:", ""],
+ ["file:///C:/foo", "c:/foo", ""],
+ ["http://host/a", "c:\\\\foo", ""],
+ // Relative paths with drive letters should be allowed when the base is
+ // also a file.
+ ["file:///C:/foo", "/z:/bar", "file:///Z:/bar"],
+ // Treat absolute paths as being off of the drive.
+ ["file:///C:/foo", "/bar", "file:///C:/bar"],
+ ["file://localhost/C:/foo", "/bar", "file://localhost/C:/bar"],
+ ["file:///C:/foo/com/", "/bar", "file:///C:/bar"],
+ // On Windows, two slashes without a drive letter when the base is a file
+ // means that the path is UNC.
+ ["file:///C:/something", "//somehost/path", "file://somehost/path"],
+ ["file:///C:/something", "/\\\\//somehost/path", "file://somehost/path"],
+];
+
+var originalBaseURL = canonicalize(".");
+
+for (var i = 0; i < cases.length; ++i) {
+ baseURL = cases[i][0];
+ relativeURL = cases[i][1];
+ expectedURL = cases[i][2];
+ setBaseURL(baseURL);
+ shouldBe("canonicalize('" + relativeURL + "')",
+ "'" + expectedURL + "'");
+}
+
+setBaseURL(originalBaseURL);
+
+var successfullyParsed = true;