<!DOCTYPE HTML>
<html>

<head>
  <title>Test that reports are sent to multiple named endpoints</title>
  <script src='/resources/testharness.js'></script>
  <script src='/resources/testharnessreport.js'></script>
  <script src='resources/report-helper.js'></script>
</head>

<body>
  <iframe name="report1"></iframe>
  <iframe name="report2"></iframe>
  <script>
    const base_url = `${location.protocol}//${location.host}`;
    const endpoint = `${base_url}/reporting/resources/report.py`;
    const report_id = '204d2fb2-018b-4e35-964c-5e298e89d4e2';
    promise_test(async t => {
      const w = window.open(`resources/generate-report.https.sub.html?pipe=header(Reporting-Endpoints,default="/reporting/resources/report.py?reportID=${report_id}")`, "report1");
      const w2 = window.open(`resources/generate-csp-report.https.sub.html?pipe=header(Reporting-Endpoints,default="/reporting/resources/report.py?reportID=${report_id}")`, "report2");
      await wait(3000);
      // Verify that each iframe generated and sent one report.
      const reports = await pollReports(endpoint, report_id);
      assert_equals(reports.length, 2, "Number of reports");
      checkReportExists(reports, 'deprecation', w.location.href);
      checkReportExists(reports, 'csp-violation', w2.location.href);
      const request_count = await pollNumResults(endpoint, report_id);
      // Verify that requests are sent separately.
      assert_equals(request_count, 2, "Count of requests");
    }, "Reports are not batched for same url in different document.");
  </script>

</body>

</html>
