summaryrefslogtreecommitdiffstats
path: root/dom/webidl/Reporting.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl/Reporting.webidl')
-rw-r--r--dom/webidl/Reporting.webidl99
1 files changed, 99 insertions, 0 deletions
diff --git a/dom/webidl/Reporting.webidl b/dom/webidl/Reporting.webidl
new file mode 100644
index 0000000000..db0582411c
--- /dev/null
+++ b/dom/webidl/Reporting.webidl
@@ -0,0 +1,99 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * The origin of this IDL file is
+ * https://w3c.github.io/reporting/#interface-reporting-observer
+ */
+
+[Pref="dom.reporting.enabled",
+ Exposed=(Window,Worker)]
+interface ReportBody {
+ [Default] object toJSON
+();
+};
+
+[Pref="dom.reporting.enabled",
+ Exposed=(Window,Worker)]
+interface Report {
+ [Default] object toJSON
+();
+ readonly attribute DOMString type;
+ readonly attribute DOMString url;
+ readonly attribute ReportBody? body;
+};
+
+[Pref="dom.reporting.enabled",
+ Exposed=(Window,Worker)]
+interface ReportingObserver {
+ [Throws]
+ constructor(ReportingObserverCallback callback, optional ReportingObserverOptions options = {});
+ undefined observe();
+ undefined disconnect();
+ ReportList takeRecords();
+};
+
+callback ReportingObserverCallback = undefined (sequence<Report> reports, ReportingObserver observer);
+
+dictionary ReportingObserverOptions {
+ sequence<DOMString> types;
+ boolean buffered = false;
+};
+
+typedef sequence<Report> ReportList;
+
+[Pref="dom.reporting.enabled",
+ Exposed=Window]
+interface DeprecationReportBody : ReportBody {
+ readonly attribute DOMString id;
+ // The spec currently has Date, but that's not a type that exists in Web IDL.
+ // In any case, we always return null, so we just need _some_ nullable type
+ // here.
+ readonly attribute DOMTimeStamp? anticipatedRemoval;
+ readonly attribute DOMString message;
+ readonly attribute DOMString? sourceFile;
+ readonly attribute unsigned long? lineNumber;
+ readonly attribute unsigned long? columnNumber;
+};
+
+[Deprecated="DeprecatedTestingInterface",
+ Pref="dom.reporting.testing.enabled",
+ Exposed=(Window,DedicatedWorker)]
+interface TestingDeprecatedInterface {
+ constructor();
+
+ [Deprecated="DeprecatedTestingMethod"]
+ undefined deprecatedMethod();
+
+ [Deprecated="DeprecatedTestingAttribute"]
+ readonly attribute boolean deprecatedAttribute;
+};
+
+// Used internally to process the JSON
+[GenerateInit]
+dictionary ReportingHeaderValue {
+ sequence<ReportingItem> items;
+};
+
+// Used internally to process the JSON
+dictionary ReportingItem {
+ // This is a long.
+ any max_age;
+ // This is a sequence of ReportingEndpoint.
+ any endpoints;
+ // This is a string. If missing, the value is 'default'.
+ any group;
+ boolean include_subdomains = false;
+};
+
+// Used internally to process the JSON
+[GenerateInit]
+dictionary ReportingEndpoint {
+ // This is a string.
+ any url;
+ // This is an unsigned long.
+ any priority;
+ // This is an unsigned long.
+ any weight;
+};