diff options
Diffstat (limited to 'testing/web-platform/tests/html/dom/usvstring-reflection.https.html')
-rw-r--r-- | testing/web-platform/tests/html/dom/usvstring-reflection.https.html | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/dom/usvstring-reflection.https.html b/testing/web-platform/tests/html/dom/usvstring-reflection.https.html new file mode 100644 index 0000000000..775cb49281 --- /dev/null +++ b/testing/web-platform/tests/html/dom/usvstring-reflection.https.html @@ -0,0 +1,139 @@ +<!doctype html> +<title>USVString test relate to url</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="../../webrtc/RTCPeerConnection-helper.js"></script> +<div id=log></div> +<script> +// Unpaired surrogate codepoints present in USVString are replaced +// with U+FFFD. %EF%BF%BD is UTF-8 encoding of U+FFFD. +'use strict'; +test(() => { + location.hash = '\uD999'; + assert_equals(location.hash, '#%EF%BF%BD'); +}, "location.hash : unpaired surrogate codepoint should be replaced with U+FFFD"); + +test(() => { + var w = window.open("about:blank#\uD800"); + assert_equals(w.location.href, 'about:blank#%EF%BF%BD'); + w.location.href = 'about:blank#\uD999'; + assert_equals(w.location.href, 'about:blank#%EF%BF%BD'); +}, "location.href : unpaired surrogate codepoint should be replaced with U+FFFD"); + +test(() => { + var w = window.open("about:blank#\uD800"); + assert_equals(w.location.hash, '#%EF%BF%BD'); +}, "window.open : unpaired surrogate codepoint should be replaced with U+FFFD"); + +test(() => { + var w = document.open("about:blank#\uD800", "", ""); + assert_equals(w.location.hash, '#%EF%BF%BD'); +}, "document.open : unpaired surrogate codepoint should be replaced with U+FFFD"); + +test(() => { + var element = document.createElement("a"); + element.ping = '\uD989'; + assert_equals(element.ping, '\uFFFD'); +}, "anchor : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var element = document.createElement("area"); + element.ping = '\uDA99'; + assert_equals(element.ping, '\uFFFD'); +}, "area : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var element = document.createElement("base"); + element.href = '\uD989'; + assert_equals(element.href.endsWith('%EF%BF%BD'), true); +}, "base : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var src = new EventSource('\uD899'); + assert_equals(src.url.endsWith('%EF%BF%BD'), true); +}, "EventSource : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var element = document.createElement("frame"); + element.src = '\uDCA9'; + element.longDesc = '\uDCA8'; + assert_equals(element.src.endsWith('%EF%BF%BD'), true); + assert_equals(element.longDesc.endsWith('%EF%BF%BD'), true); +}, "frame : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var element = document.createElement("iframe"); + element.src = '\uDC89'; + element.longDesc = '\uDC88'; + assert_equals(element.src.endsWith('%EF%BF%BD'), true); + assert_equals(element.longDesc.endsWith('%EF%BF%BD'), true); +}, "iframe : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var element = document.createElement("link"); + element.href = '\uDB89'; + assert_equals(element.href.endsWith('%EF%BF%BD'), true); +}, "link : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var element = document.createElement("source"); + element.src = '\uDDDD'; + element.srcset = '\uD800'; + assert_equals(element.src.endsWith('%EF%BF%BD'), true); + assert_equals(element.srcset, '\uFFFD'); +}, "source : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + const event = new StorageEvent('storage', { + url: window.location.href + '\uD999', + }); + assert_equals(event.url, window.location.href + "\uFFFD"); +}, "storage event : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + var wsocket = new EventSource('ws://www.example.com/socketserve\uD899/'); + assert_true(wsocket.url.endsWith('ws://www.example.com/socketserve%EF%BF%BD/')); +}, "websocket url : unpaired surrogate codepoint should be replaced with U+FFFD") + +test(() => { + try { + navigator.sendBeacon("resources/\uD800blank.txt"); + assert_true(true); + } catch (e) { + assert_true(false); + } +}, "sendBeacon URL: unpaired surrogate codepoint should not make any exceptions.") + +test(() => { + // This shouldn't throw an exception. + window.navigator.registerProtocolHandler('web+myprotocol', "custom-scheme\uD800/url=%s", "title"); +}, "RegisterProtocolHandler URL: unpaired surrogate codepoint should not make any exceptions.") + +test(() => { + // This shouldn't throw an exception. + window.navigator.unregisterProtocolHandler('web+myprotocol', "custom-scheme\uD800/url=%s"); +}, "UnregisterProtocolHandler URL: unpaired surrogate codepoint should not make any exceptions.") + +test(() => { + var w = window.open("about:blank#\uD800"); + assert_equals(w.document.URL, 'about:blank#%EF%BF%BD'); + assert_equals(w.document.documentURI, 'about:blank#%EF%BF%BD'); +}, "Document URLs: unpaired surrogate codepoint should be replaced with U+FFFD") + +promise_test(t => { + const sendString = 'hello\uD999'; + const receiveString = 'hello\uFFFD'; + + return createDataChannelPair(t) + .then(([channel1, channel2]) => { + channel1.send(sendString); + return awaitMessage(channel2) + }).then(message => { + assert_equals(typeof message, 'string', + 'Expect message to be a string'); + + assert_equals(message, receiveString); + }); +}, "RTCDataChannel.send: unpaired surrogate codepoint should be replaced with U+FFFD.") + +</script> |