[css-pseudo] Expose ::marker styles in devtools

If an element has some styles for its ::marker pseudo-element, expose
them in the Styles panel when the element is inspected.

Bug: 1876407

TEST=http/tests/devtools/elements/elements-panel-styles.js

Change-Id: I56ab2703925966535beb71e0e47ab814c7ee07a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1932447
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Commit-Queue: Oriol Brufau <obrufau@igalia.com>
Cr-Commit-Position: refs/heads/master@{#724094}
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index 0091c32..5a74559cc 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -1469,6 +1469,7 @@
       first-letter
       before
       after
+      marker
       backdrop
       selection
       first-line-inherited
diff --git a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
index 793c275..ed4e07c 100644
--- a/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc
@@ -173,6 +173,9 @@
     case kPseudoIdAfter:
       *type = protocol::DOM::PseudoTypeEnum::After;
       return true;
+    case kPseudoIdMarker:
+      *type = protocol::DOM::PseudoTypeEnum::Marker;
+      return RuntimeEnabledFeatures::CSSMarkerPseudoElementEnabled();
     case kPseudoIdBackdrop:
       *type = protocol::DOM::PseudoTypeEnum::Backdrop;
       return true;
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/elements-panel-styles-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/elements-panel-styles-expected.txt
index 470ddee..9f0daeb 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/elements-panel-styles-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/elements-panel-styles-expected.txt
@@ -9,16 +9,17 @@
 border-top-right-radius: 5px;
     5px - .foo elements-panel-styles.css:21 -> elements-panel-styles.css:21:7
 color: rgb(0, 0, 255);
-    blue - .foo, .foo::before elements-panel-styles.css:34 -> elements-panel-styles.css:34:21
+    blue - .foo, .foo::before elements-panel-styles.css:35 -> elements-panel-styles.css:35:21
     OVERLOADED black - .foo elements-panel-styles.css:21 -> elements-panel-styles.css:21:7
     OVERLOADED red - #container elements-panel-styles.css:10 -> elements-panel-styles.css:10:13
-    OVERLOADED magenta !important - html elements-panel-styles.css:61 -> elements-panel-styles.css:61:7
+    OVERLOADED magenta !important - html elements-panel-styles.css:67 -> elements-panel-styles.css:67:7
     OVERLOADED -internal-root-color - html user agent stylesheet
 content: "[before Foo]";
-    "[before Foo]" - .foo, .foo::before elements-panel-styles.css:34 -> elements-panel-styles.css:34:21
+    "[before Foo]" - .foo, .foo::before elements-panel-styles.css:35 -> elements-panel-styles.css:35:21
 display: block;
     OVERLOADED none - element.style
-    block !important - .foo, .foo::before elements-panel-styles.css:34 -> elements-panel-styles.css:34:21
+    block !important - .foo, .foo::before elements-panel-styles.css:35 -> elements-panel-styles.css:35:21
+    OVERLOADED list-item - .foo elements-panel-styles.css:21 -> elements-panel-styles.css:21:7
     OVERLOADED block - div user agent stylesheet
 font-family: serif;
     serif - #container elements-panel-styles.css:10 -> elements-panel-styles.css:10:13
@@ -68,16 +69,17 @@
 /-- overloaded --/     text-indent: 10px;
 
 [expanded] 
-.foo { (elements-pa…yles.css:53 -> elements-panel-styles.css:53:7)
+.foo { (elements-pa…yles.css:59 -> elements-panel-styles.css:59:7)
 
 [expanded] 
-.foo, .foo::before { (elements-pa…yles.css:34 -> elements-panel-styles.css:34:21)
+.foo, .foo::before { (elements-pa…yles.css:35 -> elements-panel-styles.css:35:21)
     content: "[before Foo]";
     color: blue;
     display: block !important;
 
 [expanded] 
 .foo { (elements-pa…yles.css:21 -> elements-panel-styles.css:21:7)
+/-- overloaded --/     display: list-item;
 /-- overloaded --/     color: black;
     margin-left: 1px;
     margin: 10px 0 2px;
@@ -124,7 +126,7 @@
 
 ======== Inherited from html ========
 [expanded] 
-html { (elements-pa…yles.css:61 -> elements-panel-styles.css:61:7)
+html { (elements-pa…yles.css:67 -> elements-panel-styles.css:67:7)
 /-- overloaded --/     color: magenta !important;
 
 [expanded] 
@@ -133,27 +135,33 @@
 
 ======== Pseudo ::before element ========
 [expanded] 
-.foo::before { (elements-pa…yles.css:57 -> elements-panel-styles.css:57:15)
+.foo::before { (elements-pa…yles.css:63 -> elements-panel-styles.css:63:15)
 
 [expanded] 
-.foo::before { (elements-pa…yles.css:40 -> elements-panel-styles.css:40:15)
+.foo::before { (elements-pa…yles.css:41 -> elements-panel-styles.css:41:15)
     color: red;
 
 [expanded] 
-.foo, .foo::before { (elements-pa…yles.css:34 -> elements-panel-styles.css:34:21)
+.foo, .foo::before { (elements-pa…yles.css:35 -> elements-panel-styles.css:35:21)
     content: "[before Foo]";
 /-- overloaded --/     color: blue;
     display: block !important;
 
 ======== Pseudo ::after element ========
 [expanded] 
-.foo::after { (elements-pa…yles.css:48 -> elements-panel-styles.css:48:14)
+.foo::after { (elements-pa…yles.css:49 -> elements-panel-styles.css:49:14)
     font-family: courier;
     content: "[after Foo 2]";
 
 [expanded] 
-.foo::after { (elements-pa…yles.css:44 -> elements-panel-styles.css:44:14)
+.foo::after { (elements-pa…yles.css:45 -> elements-panel-styles.css:45:14)
 /-- overloaded --/     content: "[after Foo]";
     color: green;
 
+======== Pseudo ::marker element ========
+[expanded] 
+.foo::marker { (elements-pa…yles.css:54 -> elements-panel-styles.css:54:15)
+    content: "[marker Foo]";
+    color: cyan;
+
 
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/resources/elements-panel-styles.css b/third_party/blink/web_tests/http/tests/devtools/elements/resources/elements-panel-styles.css
index dcbefad..4f8a5dedb 100644
--- a/third_party/blink/web_tests/http/tests/devtools/elements/resources/elements-panel-styles.css
+++ b/third_party/blink/web_tests/http/tests/devtools/elements/resources/elements-panel-styles.css
@@ -19,6 +19,7 @@
 }
 
 .foo {
+    display: list-item;
     color: black;
     margin-left: 1px;
     margin: 10px 0 2px;
@@ -50,6 +51,11 @@
     content: "[after Foo 2]";
 }
 
+.foo::marker {
+    content: "[marker Foo]";
+    color: cyan;
+}
+
 .foo {
     /* Empty rule that should be reported in the Styles pane */
 }