DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (c68fe15a81fc)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/open-blank-host.js"></script>
<script>
function nextMessage(target) {
  return new Promise((resolve, reject) => {
    target.addEventListener('message', e => resolve(e), {once: true});
  });
}

async function openPortalAndActivate(logic) {
  let {port1, port2} = new MessageChannel();
  const w = await openBlankPortalHost();
  try {
    const portal = w.document.createElement('portal');
    portal.src = new URL('resources/eval-portal.html?logic=' + encodeURIComponent(logic), location.href);
    w.document.body.appendChild(portal);
    assert_equals((await nextMessage(portal)).data, 'ready');
    const replyPromise = nextMessage(port2);
    await portal.activate({data: {replyPort: port1}, transfer: [port1]});
    port2.start();
    return (await nextMessage(port2)).data;
  } finally {
    w.close();
  }
}

promise_test(async () => {
  assert_implements("HTMLPortalElement" in self);
  let messageFromNewSrc = await openPortalAndActivate(
      'let predecessor = event.adoptPredecessor();' +
      'let readyPromise = new Promise((resolve, reject) => {' +
      '  predecessor.onmessage = e => resolve(e.data + " via new src");' +
      '});' +
      'predecessor.src = "/portals/resources/eval-portal.html";' +
      'document.body.appendChild(predecessor);' +
      'return readyPromise;');
  assert_equals(messageFromNewSrc, 'ready via new src');
}, "can set portal src during portalactivate");
</script>