<!DOCTYPE html>
<title>Test window.fence.reportEvent</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="resources/utils.js"></script>

<body>
<script>
promise_test(async(t) => {
  const fencedframe = await attachFencedFrameContext({
    generator_api: "fledge",
    register_beacon: true,
  });
  const new_url = new URL("resources/dummy.html", location.href);
  const beacon_data = "This is the beacon data!";
  const beacon_type = "reserved.top_navigation_commit";

  await fencedframe.execute(
    (new_url, beacon_data, beacon_type) => {
      let beacon_event = {
        eventType: beacon_type,
        eventData: beacon_data,
        destination: ["buyer", "seller"],
      };
      window.fence.reportEvent(beacon_event);
    },
    [new_url, beacon_data, beacon_type]
  );

  const timeout = new Promise(resolve => t.step_timeout(resolve, 1000));
  const result = await Promise.race(
      [nextBeacon(beacon_type, beacon_data), timeout]);
  assert_true(typeof result === "undefined",
      "A beacon should not have been sent.");

}, 'Reserved events should not be callable through reportEvent()');
</script>
</body>
