tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

MediaQueryList-extends-EventTarget.html (2987B)


      1 <!DOCTYPE html>
      2 <meta charset="utf-8">
      3 <meta name="flags" content="dom">
      4 <title>CSS Test: CSSOM View MediaQueryList extends EventTarget</title>
      5 <link rel="help" href="https://www.w3.org/TR/cssom-view-1/#the-mediaquerylist-interface">
      6 <script src="/resources/testharness.js"></script>
      7 <script src="/resources/testharnessreport.js"></script>
      8 <script src="resources/matchMedia.js"></script>
      9 <div id="log"></div>
     10 <script>
     11 "use strict";
     12 
     13 promise_test(async t => {
     14    const mql = await createMQL(t);
     15 
     16    let _event;
     17    mql.onchange = event => {
     18        _event = event;
     19    };
     20 
     21    triggerMQLEvent(mql);
     22    await waitForChangesReported();
     23    assert_equals(_event.media, mql.media);
     24    assert_equals(_event.matches, mql.matches);
     25 }, "onchange adds listener");
     26 
     27 promise_test(async t => {
     28    const mql = await createMQL(t);
     29 
     30    let calls = 0;
     31    mql.onchange = () => {
     32        calls++;
     33    };
     34 
     35    triggerMQLEvent(mql);
     36    await waitForChangesReported();
     37    assert_equals(calls, 1);
     38 
     39    mql.onchange = null;
     40 
     41    triggerMQLEvent(mql);
     42    await waitForChangesReported();
     43    assert_equals(calls, 1);
     44 }, "onchange removes listener");
     45 
     46 promise_test(async t => {
     47    const mql = await createMQL(t);
     48 
     49    let calls = 0;
     50    mql.addEventListener("change", {
     51        handleEvent() {
     52            calls++;
     53        },
     54    });
     55 
     56    triggerMQLEvent(mql);
     57    await waitForChangesReported();
     58    assert_equals(calls, 1);
     59 }, 'listeners for "change" type are called');
     60 
     61 promise_test(async t => {
     62    const mql = await createMQL(t);
     63    mql.addEventListener("matches", t.unreached_func("should not be called"));
     64 
     65    triggerMQLEvent(mql);
     66    await waitForChangesReported();
     67 }, 'listeners with different type are not called');
     68 
     69 promise_test(async t => {
     70    const mql = await createMQL(t);
     71 
     72    let calls = 0;
     73    mql.addEventListener("change", {
     74        handleEvent() {
     75            calls++;
     76        },
     77    }, {once: true});
     78 
     79    triggerMQLEvent(mql);
     80    await waitForChangesReported();
     81    assert_equals(calls, 1);
     82 
     83    triggerMQLEvent(mql);
     84    await waitForChangesReported();
     85    assert_equals(calls, 1);
     86 }, 'addEventListener "once" option is respected');
     87 
     88 promise_test(async t => {
     89    const mql = await createMQL(t);
     90    const listener = t.unreached_func("should not be called");
     91 
     92    mql.addEventListener("change", listener);
     93    mql.removeEventListener("change", listener);
     94 
     95    triggerMQLEvent(mql);
     96    await waitForChangesReported();
     97 }, "removeEventListener removes listener");
     98 
     99 test(() => {
    100    const mql = window.matchMedia("all");
    101 
    102    let receivedEvent;
    103    mql.addEventListener("custom", event => {
    104        receivedEvent = event;
    105        event.preventDefault();
    106    }, true);
    107 
    108    const dispatchedEvent = new CustomEvent("custom", {
    109        cancelable: true,
    110        detail: {},
    111    });
    112 
    113    const defaultAction = mql.dispatchEvent(dispatchedEvent);
    114 
    115    assert_equals(receivedEvent, dispatchedEvent);
    116    assert_false(defaultAction);
    117 }, "dispatchEvent works as expected");
    118 </script>