summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/dom/usvstring-reflection.https.html
diff options
context:
space:
mode:
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.html139
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>