<!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>
