Index: third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..396776d43914edcbff7419a06639efc656449674 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html |
@@ -0,0 +1,54 @@ |
+<!doctype html> |
+<meta charset=utf-8> |
+<title></title> |
+<script src=/resources/testharness.js></script> |
+<script src=/resources/testharnessreport.js></script> |
+<div id=log></div> |
+<iframe id="existing" src="resources/post-your-protocol.html?existing"></iframe> |
+<iframe id="http-and-gunk" src="resources/post-your-protocol.html?http-and-gunk"></iframe> |
+<iframe id="https-and-gunk" src="resources/post-your-protocol.html?https-and-gunk"></iframe> |
+<script> |
+// NOTE: we do not listen to message events until our load event fires, so we |
+// only get them for the things we actually care about. |
+var wrapper_test = async_test("General setup"); |
+var tests = { |
+ "existing": { test: async_test("Set location.protocol = location.protocol"), |
+ result: location.protocol }, |
+ "http-and-gunk": { test: async_test("Set location.protocol to http:gunk"), |
+ result: "http:" }, |
+ // We should really test the "https:gunk" case too, and assert that it ends up |
+ // with a protocol of "https:", but can't. See comments below for why. |
+}; |
+ |
+function messageListener(e) { |
+ test(function() { |
+ var data = e.data; |
+ var id = data.id; |
+ var t = tests[id].test; |
+ t.step(function() { |
+ assert_equals(data.protocol, tests[id].result, "Protocol should match"); |
+ }) |
+ t.done(); |
+ }, "Message listener"); |
+} |
+ |
+addEventListener("load", wrapper_test.step_func_done(function() { |
+ addEventListener("message", messageListener); |
+ |
+ tests["existing"].test.step(function() { |
+ var loc = document.getElementById("existing").contentWindow.location; |
+ loc.protocol = loc.protocol; |
+ }); |
+ tests["http-and-gunk"].test.step(function() { |
+ var loc = document.getElementById("http-and-gunk").contentWindow.location; |
+ loc.protocol = "http:gunk"; |
+ }); |
+ // I wish we could test the https bit, but can't figure out a non-racy way to |
+ // do it, because we need to change both protocol (to https) _and_ port to |
+ // {{ports[https][0]}} to get a successful load unless we're running on the |
+ // default http port, but the setter uses the current value, which doesn't get |
+ // updated sync, as the url to start with for the set. Oh, and there's no |
+ // good way to detect when the port set is "done" either. |
+})); |
+ |
+</script> |