diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 08d0f00..d110c29 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -426,6 +426,25 @@
         (WebCore::hasHadRecentUserInteraction):
         (WebCore::ResourceLoadStatistics::toString const):
 
+2019-12-05  Simon Fraser  <simon.fraser@apple.com>
+
+        Add CSS parser support for the highlight pseudoelement
+        https://bugs.webkit.org/show_bug.cgi?id=204902
+
+        Reviewed by Antti Koivisto.
+
+        Add basic CSS parsing support for ::highlight(), per
+        https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/highlight/explainer.md
+
+        * css/CSSSelector.cpp:
+        (WebCore::CSSSelector::pseudoId):
+        (WebCore::CSSSelector::parsePseudoElementType):
+        * css/CSSSelector.h:
+        * css/SelectorPseudoElementTypeMap.in:
+        * css/parser/CSSSelectorParser.cpp:
+        (WebCore::CSSSelectorParser::consumePseudo):
+        * rendering/style/RenderStyleConstants.h:
+
 2019-12-04  Louie Livon-Bemel  <llivonbemel@apple.com>
 
         Add exclusion rule for text manipulation SPI to exclude based on element class
diff --git a/Source/WebCore/css/CSSSelector.cpp b/Source/WebCore/css/CSSSelector.cpp
index 30af91e..ca989dd 100644
--- a/Source/WebCore/css/CSSSelector.cpp
+++ b/Source/WebCore/css/CSSSelector.cpp
@@ -275,6 +275,8 @@
         return PseudoId::FirstLetter;
     case PseudoElementSelection:
         return PseudoId::Selection;
+    case PseudoElementHighlight:
+        return PseudoId::Highlight;
     case PseudoElementMarker:
         return PseudoId::Marker;
     case PseudoElementBefore:
@@ -314,11 +316,16 @@
 {
     if (name.isNull())
         return PseudoElementUnknown;
+
     auto type = parsePseudoElementString(name);
     if (type == PseudoElementUnknown) {
         if (name.startsWith("-webkit-"))
             type = PseudoElementWebKitCustom;
     }
+
+    if (type == PseudoElementHighlight && !RuntimeEnabledFeatures::sharedFeatures().highlightAPIEnabled())
+        return PseudoElementUnknown;
+
     if (type == PseudoElementPart && !RuntimeEnabledFeatures::sharedFeatures().cssShadowPartsEnabled())
         return PseudoElementUnknown;
 
diff --git a/Source/WebCore/css/CSSSelector.h b/Source/WebCore/css/CSSSelector.h
index ea2c102..f4c335f 100644
--- a/Source/WebCore/css/CSSSelector.h
+++ b/Source/WebCore/css/CSSSelector.h
@@ -181,6 +181,7 @@
 #endif
             PseudoElementFirstLetter,
             PseudoElementFirstLine,
+            PseudoElementHighlight,
             PseudoElementMarker,
             PseudoElementPart,
             PseudoElementResizer,
diff --git a/Source/WebCore/css/SelectorPseudoElementTypeMap.in b/Source/WebCore/css/SelectorPseudoElementTypeMap.in
index c07db83..a7bcc10 100644
--- a/Source/WebCore/css/SelectorPseudoElementTypeMap.in
+++ b/Source/WebCore/css/SelectorPseudoElementTypeMap.in
@@ -5,6 +5,7 @@
 #endif
 first-letter
 first-line
+highlight
 marker
 part
 placeholder, PseudoElementWebKitCustom
diff --git a/Source/WebCore/css/parser/CSSSelectorParser.cpp b/Source/WebCore/css/parser/CSSSelectorParser.cpp
index 97363e6..538ff10 100644
--- a/Source/WebCore/css/parser/CSSSelectorParser.cpp
+++ b/Source/WebCore/css/parser/CSSSelectorParser.cpp
@@ -611,7 +611,6 @@
         default:
             break;
         }
-
     }
     
     if (selector->match() == CSSSelector::PseudoElement) {
@@ -627,6 +626,17 @@
             return selector;
         }
 #endif
+        case CSSSelector::PseudoElementHighlight: {
+            DisallowPseudoElementsScope scope(this);
+
+            auto& ident = block.consumeIncludingWhitespace();
+            if (ident.type() != IdentToken)
+                return nullptr;
+
+            auto argumentList = makeUnique<Vector<AtomString>>();
+            argumentList->append(ident.value().toAtomString());
+            return selector;
+        }
         case CSSSelector::PseudoElementPart: {
             auto argumentList = makeUnique<Vector<AtomString>>();
             do {
diff --git a/Source/WebCore/rendering/style/RenderStyleConstants.h b/Source/WebCore/rendering/style/RenderStyleConstants.h
index aa924fe..f8d0673 100644
--- a/Source/WebCore/rendering/style/RenderStyleConstants.h
+++ b/Source/WebCore/rendering/style/RenderStyleConstants.h
@@ -82,13 +82,14 @@
 };
 
 // Static pseudo styles. Dynamic ones are produced on the fly.
-enum class PseudoId : uint8_t {
+enum class PseudoId : uint16_t {
     // The order must be None, public IDs, and then internal IDs.
     None,
 
     // Public:
     FirstLine,
     FirstLetter,
+    Highlight,
     Marker,
     Before,
     After,
