summaryrefslogtreecommitdiffstats
path: root/dom/webidl/Highlight.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl/Highlight.webidl')
-rw-r--r--dom/webidl/Highlight.webidl71
1 files changed, 71 insertions, 0 deletions
diff --git a/dom/webidl/Highlight.webidl b/dom/webidl/Highlight.webidl
new file mode 100644
index 0000000000..e09f0aed3f
--- /dev/null
+++ b/dom/webidl/Highlight.webidl
@@ -0,0 +1,71 @@
+/* -*- 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://drafts.csswg.org/css-highlight-api-1/
+ *
+ * Copyright © 2021 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
+ * liability, trademark and document use rules apply.
+ */
+
+/**
+ * Enum defining the available highlight types.
+ * See https://drafts.csswg.org/css-highlight-api-1/#enumdef-highlighttype
+ */
+enum HighlightType {
+ "highlight",
+ "spelling-error",
+ "grammar-error"
+};
+
+/**
+ * Definition of a highlight object, consisting of a set of ranges,
+ * a priority and a highlight type.
+ *
+ * See https://drafts.csswg.org/css-highlight-api-1/#highlight
+ */
+[Pref="dom.customHighlightAPI.enabled", Exposed=Window]
+interface Highlight {
+
+ [Throws]
+ constructor(AbstractRange... initialRanges);
+ setlike<AbstractRange>;
+ attribute long priority;
+ attribute HighlightType type;
+};
+
+partial interface Highlight {
+ // Setlike methods need to be overridden.
+ // Iterating a setlike is not possible from C++ yet.
+ // Therefore a separate data structure must be held and kept in sync.
+ [Throws]
+ undefined add(AbstractRange range);
+ [Throws]
+ undefined clear();
+ [Throws]
+ boolean delete(AbstractRange range);
+};
+
+/**
+ * Registry object that contains all Highlights associated with a Document.
+ *
+ * See https://drafts.csswg.org/css-highlight-api-1/#highlightregistry
+ */
+[Pref="dom.customHighlightAPI.enabled", Exposed=Window]
+interface HighlightRegistry {
+ maplike<DOMString, Highlight>;
+};
+
+partial interface HighlightRegistry {
+ // Maplike interface methods need to be overridden.
+ // Iterating a maplike is not possible from C++ yet.
+ // Therefore, a separate data structure must be held and kept in sync.
+ [Throws]
+ undefined set(DOMString key, Highlight value);
+ [Throws]
+ undefined clear();
+ [Throws]
+ boolean delete(DOMString key);
+};