Fenced frames: Add reporting to custom destination urls [1/N]
This CL adds the API surface for custom destination urls in reportEvent.
Later CLs will send this information to the browser and send reporting
beacons based on it.
https://github.com/WICG/turtledove/issues/477
Change-Id: If901ceb39f759a2911e1781d91caf133874ac389
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4711374
Reviewed-by: Dominic Farolino <dom@chromium.org>
Reviewed-by: Shivani Sharma <shivanisha@chromium.org>
Commit-Queue: Garrett Tanzer <gtanzer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1175044}
diff --git a/fenced-frame/fence-report-event-destination-url.https.html b/fenced-frame/fence-report-event-destination-url.https.html
new file mode 100644
index 0000000..6c0bdd8
--- /dev/null
+++ b/fenced-frame/fence-report-event-destination-url.https.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<title>Test window.fence.reportEvent destination URL.</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'});
+ await fencedframe.execute(() => {
+ // The destinationURL must be a valid URL.
+ let event = {destinationURL: "foobarbaz"};
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+
+ // The destinationURL must be an https URL.
+ event.destinationURL = "http://3pat.com";
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+
+ event.destinationURL = "https://3pat.com";
+ window.fence.reportEvent(event);
+
+ // `eventType` isn't allowed.
+ event.eventType = 'click';
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+ event.eventType = undefined;
+
+ // `eventData` isn't allowed.
+ event.eventData = 'payload';
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+ event.eventData = undefined;
+
+ // `destination` isn't allowed.
+ event.destination = ['buyer'];
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+ event.destination = undefined;
+ });
+}, 'window.fence.reportEvent destinationURL');
+</script>
+</body>