Bug 1448757 part 1 - Add more filters for InspectorUtils.getCSSPropertyNames. r?heycam draft
authorXidorn Quan <me@upsuper.org>
Fri, 20 Apr 2018 13:42:14 +1000
changeset 785429 0774327e708bba1144b1aa709e02a02166fe2d43
parent 785425 38b6a9f8333d056b3e0c442a5ec92fe24dcbfd41
child 785430 a9c7326033191c888b2b4d6b5490b741a6073a11
child 785522 021704f4bf40b086d1dfc5988c33644574937a8e
push id107229
push userxquan@mozilla.com
push dateFri, 20 Apr 2018 04:59:32 +0000
reviewersheycam
bugs1448757
milestone61.0a1
Bug 1448757 part 1 - Add more filters for InspectorUtils.getCSSPropertyNames. r?heycam MozReview-Commit-ID: 4io5CRLE7op
dom/chrome-webidl/InspectorUtils.webidl
layout/inspector/InspectorUtils.cpp
--- a/dom/chrome-webidl/InspectorUtils.webidl
+++ b/dom/chrome-webidl/InspectorUtils.webidl
@@ -83,16 +83,18 @@ namespace InspectorUtils {
   boolean hasPseudoClassLock(Element element, DOMString pseudoClass);
   void clearPseudoClassLocks(Element element);
   [Throws] void parseStyleSheet(CSSStyleSheet sheet, DOMString input);
   void scrollElementIntoView(Element element);
 };
 
 dictionary PropertyNamesOptions {
   boolean includeAliases = false;
+  boolean includeShorthands = true;
+  boolean includeExperimentals = false;
 };
 
 dictionary InspectorRGBATuple {
   /*
    * NOTE: This tuple is in the normal 0-255-sized RGB space but can be
    * fractional and may extend outside the 0-255 range.
    *
    * a is in the range 0 - 1.
--- a/layout/inspector/InspectorUtils.cpp
+++ b/layout/inspector/InspectorUtils.cpp
@@ -364,44 +364,47 @@ InspectorUtils::IsInheritedProperty(Glob
   return Servo_Property_IsInherited(&propName);
 }
 
 /* static */ void
 InspectorUtils::GetCSSPropertyNames(GlobalObject& aGlobalObject,
                                     const PropertyNamesOptions& aOptions,
                                     nsTArray<nsString>& aResult)
 {
-#define DO_PROP(_prop)                                                      \
-  PR_BEGIN_MACRO                                                            \
-    nsCSSPropertyID cssProp = nsCSSPropertyID(_prop);                       \
-    if (nsCSSProps::IsEnabled(cssProp, CSSEnabledState::eForAllContent)) {  \
-      nsDependentCString name(kCSSRawProperties[_prop]);                    \
-      aResult.AppendElement(NS_ConvertASCIItoUTF16(name));                  \
-    }                                                                       \
-  PR_END_MACRO
+  CSSEnabledState enabledState = aOptions.mIncludeExperimentals
+    ? CSSEnabledState::eIgnoreEnabledState
+    : CSSEnabledState::eForAllContent;
+
+  auto appendProperty = [enabledState, &aResult](uint32_t prop) {
+    nsCSSPropertyID cssProp = nsCSSPropertyID(prop);
+    if (nsCSSProps::IsEnabled(cssProp, enabledState)) {
+      nsDependentCString name(kCSSRawProperties[prop]);
+      aResult.AppendElement(NS_ConvertASCIItoUTF16(name));
+    }
+  };
 
   uint32_t prop = 0;
   for ( ; prop < eCSSProperty_COUNT_no_shorthands; ++prop) {
     if (nsCSSProps::PropertyParseType(nsCSSPropertyID(prop)) !=
         CSS_PROPERTY_PARSE_INACCESSIBLE) {
-      DO_PROP(prop);
+      appendProperty(prop);
     }
   }
 
-  for ( ; prop < eCSSProperty_COUNT; ++prop) {
-    DO_PROP(prop);
+  if (aOptions.mIncludeShorthands) {
+    for ( ; prop < eCSSProperty_COUNT; ++prop) {
+      appendProperty(prop);
+    }
   }
 
   if (aOptions.mIncludeAliases) {
     for (prop = eCSSProperty_COUNT; prop < eCSSProperty_COUNT_with_aliases; ++prop) {
-      DO_PROP(prop);
+      appendProperty(prop);
     }
   }
-
-#undef DO_PROP
 }
 
 static void InsertNoDuplicates(nsTArray<nsString>& aArray,
                                const nsAString& aString)
 {
   size_t i = aArray.IndexOfFirstElementGt(aString);
   if (i > 0 && aArray[i-1].Equals(aString)) {
     return;