WebKit export: Add priority for CSS Highlight API (#40791)

https://bugs.webkit.org/show_bug.cgi?id=257611

Co-authored-by: Jessica Cheung <jessicacheung@Jessicas-Laptop.local>
diff --git a/css/css-highlight-api/highlight-priority-painting-ref.html b/css/css-highlight-api/highlight-priority-painting-ref.html
new file mode 100644
index 0000000..1865f1e
--- /dev/null
+++ b/css/css-highlight-api/highlight-priority-painting-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Highlight priority attribute painting</title>
+    <style>
+    #green-highlight {
+        background-color: green;
+    }
+    .yellow-highlight {
+        background-color: yellow;
+    }
+    .blue-highlight {
+        background-color: blue;
+    }
+    </style>
+</head>
+<body>
+    <span id="green-highlight">Green</span>
+    <span class="yellow-highlight">Yellow</span>
+    <span class="blue-highlight">Blue</span>
+    <span class="yellow-highlight">Yellow</span><span class="blue-highlight">-Blue</span>
+</body>
+</html>
diff --git a/css/css-highlight-api/highlight-priority-painting.html b/css/css-highlight-api/highlight-priority-painting.html
new file mode 100644
index 0000000..89ae873
--- /dev/null
+++ b/css/css-highlight-api/highlight-priority-painting.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Highlight priority attribute painting correctness</title>
+    <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#priorities">
+    <link rel="match" href="highlight-priority-painting-ref.html">
+    <style>
+    ::highlight(yellow-highlight) {
+        background-color: yellow;
+    }
+    ::highlight(green-highlight) {
+        background-color: green;
+    }
+    ::highlight(blue-highlight) {
+        background-color: blue;
+    }
+    </style>
+</head>
+<body>
+    <span id="green-highlight">Green</span>
+    <span id="yellow-highlight">Yellow</span>
+    <span id="blue-highlight">Blue</span>
+    <span id="yellow-blue-highlight">Yellow-Blue</span>
+
+    <script>
+        let yellowBlue = document.getElementById("yellow-blue-highlight");
+        let green = document.getElementById("green-highlight");
+        let highlightGreen = new Highlight(new StaticRange({
+            startContainer: green.childNodes[0],
+            startOffset: 0,
+            endContainer: green.childNodes[0],
+            endOffset: 5
+        }));
+        let yellow = document.getElementById("yellow-highlight");
+        let highlightYellow = new Highlight(new StaticRange({
+            startContainer: yellow.childNodes[0],
+            startOffset: 0,
+            endContainer: yellow.childNodes[0],
+            endOffset: 6
+        }), new StaticRange({
+            startContainer: yellowBlue.childNodes[0],
+            startOffset: 0,
+            endContainer: yellowBlue.childNodes[0],
+            endOffset: 6
+        }));
+        let blue = document.getElementById("blue-highlight");
+        let highlightBlue = new Highlight(new StaticRange({
+            startContainer: blue.childNodes[0],
+            startOffset: 0,
+            endContainer: blue.childNodes[0],
+            endOffset: 4
+        }), new StaticRange({
+            startContainer: yellowBlue.childNodes[0],
+            startOffset: 0,
+            endContainer: yellowBlue.childNodes[0],
+            endOffset: 11
+        }));
+        CSS.highlights.set("yellow-highlight", highlightYellow);
+        CSS.highlights.set("green-highlight", highlightGreen);
+        CSS.highlights.set("blue-highlight", highlightBlue);
+        highlightYellow.priority = 10;
+        highlightBlue.priority = -1;
+    </script>
+</body>
+</html>
diff --git a/css/css-highlight-api/highlight-priority.html b/css/css-highlight-api/highlight-priority.html
new file mode 100644
index 0000000..ac0ef8a
--- /dev/null
+++ b/css/css-highlight-api/highlight-priority.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Highlight priority attribute is mutable</title>
+    <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#priorities">
+    <script src="/resources/testharness.js"></script>
+    <script src="/resources/testharnessreport.js"></script>
+    <style>
+        ::highlight(yellow-highlight) {
+            background-color: yellow;
+        }
+        ::highlight(green-highlight) {
+            background-color: green;
+        }
+        ::highlight(blue-highlight) {
+            background-color: blue;
+        }
+    </style>
+</head>
+<body>
+    <span id="green-highlight">Green</span>
+    <span id="yellow-highlight">Yellow</span>
+    <span id="blue-highlight">Blue</span>
+    <span id="yellow-blue-highlight">Yellow-Blue</span>
+
+    <script>
+    test(() => {
+        let yellowBlue = document.getElementById("yellow-blue-highlight");
+
+        let green = document.getElementById("green-highlight");
+        let highlightGreen = new Highlight(new StaticRange({
+            startContainer: green.childNodes[0],
+            startOffset: 0,
+            endContainer: green.childNodes[0],
+            endOffset: 6
+        }));
+
+        let yellow = document.getElementById("yellow-highlight");
+        let highlightYellow = new Highlight(new StaticRange({
+            startContainer: yellow.childNodes[0],
+            startOffset: 0,
+            endContainer: yellow.childNodes[0],
+            endOffset: 6
+        }), new StaticRange({
+            startContainer: yellowBlue.childNodes[0],
+            startOffset: 0,
+            endContainer: yellowBlue.childNodes[0],
+            endOffset: 6
+        }));
+
+        let blue = document.getElementById("blue-highlight");
+        let highlightBlue = new Highlight(new StaticRange({
+            startContainer: blue.childNodes[0],
+            startOffset: 0,
+            endContainer: blue.childNodes[0],
+            endOffset: 4
+        }), new StaticRange({
+            startContainer: yellowBlue.childNodes[0],
+            startOffset: 0,
+            endContainer: yellowBlue.childNodes[0],
+            endOffset: 11
+        }));
+
+        CSS.highlights.set("yellow-highlight", highlightYellow);
+        CSS.highlights.set("green-highlight", highlightGreen);
+        CSS.highlights.set("blue-highlight", highlightBlue);
+
+        highlightYellow.priority = 10;
+        highlightBlue.priority = -1;
+
+        assert_equals(highlightYellow.priority, 10);
+        assert_equals(highlightGreen.priority, 0);
+        assert_equals(highlightBlue.priority, -1);
+    });
+    </script>
+</body>
+</html>