tor-browser

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

precommitHandler-addHandler.html (1585B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <body>
      5  <script>
      6    promise_test(async (t) => {
      7      let did_delay = false;
      8      navigation.onnavigate = t.step_func((e) => {
      9        e.intercept({
     10          precommitHandler: (controller) =>
     11            controller.addHandler(
     12              t.step_func(
     13                () =>
     14                  new Promise((resolve) =>
     15                    t.step_timeout(() => {
     16                      did_delay = true;
     17                      resolve();
     18                    }, 1)
     19                  )
     20              )
     21            ),
     22        });
     23      });
     24      await navigation.navigate("#").finished;
     25      assert_true(did_delay);
     26    }, "handler added in addHandler() delays navigation finish");
     27 
     28    promise_test(async (t) => {
     29      const events = [];
     30      navigation.onnavigate = t.step_func((e) => {
     31        e.intercept({
     32          precommitHandler: async (controller) => {
     33            controller.addHandler(
     34              t.step_func(() => {
     35                events.push("added");
     36              })
     37            );
     38          },
     39          handler: t.step_func(() => {
     40            events.push("handler1");
     41          }),
     42        });
     43        e.intercept({
     44          handler: t.step_func(() => {
     45            events.push("handler2");
     46          }),
     47        });
     48      });
     49      await navigation.navigate("#").finished;
     50      assert_array_equals(events, ["handler1", "handler2", "added"]);
     51    }, "handler added in addHandler() is executed in the correct order");
     52  </script>
     53 </body>