diff options
Diffstat (limited to 'LayoutTests/fast/url/script-tests/relative-win.js')
-rw-r--r-- | LayoutTests/fast/url/script-tests/relative-win.js | 48 |
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; |