Bug 1255369 - fix getCSSValuesForProperty for line-style-type; r?xidorn draft
authorTom Tromey <tom@tromey.com>
Wed, 31 Jan 2018 08:50:27 -0700
changeset 749457 291ed4ae9dddb881bd8ec73ef4818ca0456d7198
parent 748846 108186af15df3bf00f2bf8c34ce620b541e483f7
push id97412
push userbmo:ttromey@mozilla.com
push dateWed, 31 Jan 2018 15:51:40 +0000
reviewersxidorn
bugs1255369
milestone60.0a1
Bug 1255369 - fix getCSSValuesForProperty for line-style-type; r?xidorn This fixes InspectorUtils::getCSSValuesForProperty to return the correct values for line-style-type. MozReview-Commit-ID: 72Tes6y15j8
devtools/shared/css/generated/properties-db.js
layout/inspector/InspectorUtils.cpp
layout/inspector/tests/test_bug877690.html
layout/style/nsCSSProps.cpp
layout/style/nsCSSProps.h
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -6699,22 +6699,78 @@ exports.CSS_PROPERTIES = {
       "list-style-type",
       "list-style-image",
       "list-style-position"
     ],
     "supports": [
       11
     ],
     "values": [
+      "arabic-indic",
+      "armenian",
+      "bengali",
+      "cambodian",
+      "circle",
+      "cjk-decimal",
+      "cjk-earthly-branch",
+      "cjk-heavenly-stem",
+      "cjk-ideographic",
+      "decimal",
+      "decimal-leading-zero",
+      "devanagari",
+      "disc",
+      "disclosure-closed",
+      "disclosure-open",
+      "ethiopic-numeric",
+      "georgian",
+      "gujarati",
+      "gurmukhi",
+      "hebrew",
+      "hiragana",
+      "hiragana-iroha",
       "inherit",
       "initial",
       "inside",
-      "none",
+      "japanese-formal",
+      "japanese-informal",
+      "kannada",
+      "katakana",
+      "katakana-iroha",
+      "khmer",
+      "korean-hangul-formal",
+      "korean-hanja-formal",
+      "korean-hanja-informal",
+      "lao",
+      "lower-alpha",
+      "lower-armenian",
+      "lower-greek",
+      "lower-latin",
+      "lower-roman",
+      "malayalam",
+      "mongolian",
+      "myanmar",
+      "none",
+      "oriya",
       "outside",
+      "persian",
+      "simp-chinese-formal",
+      "simp-chinese-informal",
+      "square",
+      "symbols",
+      "tamil",
+      "telugu",
+      "thai",
+      "tibetan",
+      "trad-chinese-formal",
+      "trad-chinese-informal",
       "unset",
+      "upper-alpha",
+      "upper-armenian",
+      "upper-latin",
+      "upper-roman",
       "url"
     ]
   },
   "list-style-image": {
     "isInherited": true,
     "subproperties": [
       "list-style-image"
     ],
@@ -6745,19 +6801,76 @@ exports.CSS_PROPERTIES = {
   },
   "list-style-type": {
     "isInherited": true,
     "subproperties": [
       "list-style-type"
     ],
     "supports": [],
     "values": [
-      "inherit",
-      "initial",
-      "unset"
+      "arabic-indic",
+      "armenian",
+      "bengali",
+      "cambodian",
+      "circle",
+      "cjk-decimal",
+      "cjk-earthly-branch",
+      "cjk-heavenly-stem",
+      "cjk-ideographic",
+      "decimal",
+      "decimal-leading-zero",
+      "devanagari",
+      "disc",
+      "disclosure-closed",
+      "disclosure-open",
+      "ethiopic-numeric",
+      "georgian",
+      "gujarati",
+      "gurmukhi",
+      "hebrew",
+      "hiragana",
+      "hiragana-iroha",
+      "inherit",
+      "initial",
+      "japanese-formal",
+      "japanese-informal",
+      "kannada",
+      "katakana",
+      "katakana-iroha",
+      "khmer",
+      "korean-hangul-formal",
+      "korean-hanja-formal",
+      "korean-hanja-informal",
+      "lao",
+      "lower-alpha",
+      "lower-armenian",
+      "lower-greek",
+      "lower-latin",
+      "lower-roman",
+      "malayalam",
+      "mongolian",
+      "myanmar",
+      "none",
+      "oriya",
+      "persian",
+      "simp-chinese-formal",
+      "simp-chinese-informal",
+      "square",
+      "symbols",
+      "tamil",
+      "telugu",
+      "thai",
+      "tibetan",
+      "trad-chinese-formal",
+      "trad-chinese-informal",
+      "unset",
+      "upper-alpha",
+      "upper-armenian",
+      "upper-latin",
+      "upper-roman"
     ]
   },
   "margin": {
     "isInherited": false,
     "subproperties": [
       "margin-top",
       "margin-right",
       "margin-bottom",
--- a/layout/inspector/InspectorUtils.cpp
+++ b/layout/inspector/InspectorUtils.cpp
@@ -483,16 +483,23 @@ static void GetKeywordsForProperty(const
   // More special cases.
   if (aProperty == eCSSProperty_clip_path) {
     InsertNoDuplicates(aArray, NS_LITERAL_STRING("circle"));
     InsertNoDuplicates(aArray, NS_LITERAL_STRING("ellipse"));
     InsertNoDuplicates(aArray, NS_LITERAL_STRING("inset"));
     InsertNoDuplicates(aArray, NS_LITERAL_STRING("polygon"));
   } else if (aProperty == eCSSProperty_clip) {
     InsertNoDuplicates(aArray, NS_LITERAL_STRING("rect"));
+  } else if (aProperty == eCSSProperty_list_style_type) {
+    int32_t length;
+    const char* const* values = nsCSSProps::GetListStyleTypes(&length);
+    for (int32_t i = 0; i < length; ++i) {
+      InsertNoDuplicates(aArray, NS_ConvertASCIItoUTF16(values[i]));
+    }
+    InsertNoDuplicates(aArray, NS_LITERAL_STRING("symbols"));
   }
 }
 
 static void GetColorsForProperty(const uint32_t aParserVariant,
                                  nsTArray<nsString>& aArray)
 {
   if (aParserVariant & VARIANT_COLOR) {
     // GetKeywordsForProperty and GetOtherValuesForProperty assume aArray is sorted,
--- a/layout/inspector/tests/test_bug877690.html
+++ b/layout/inspector/tests/test_bug877690.html
@@ -211,16 +211,34 @@ function do_test() {
   // Regression test for bug 1255380.
   var expected = [ "normal", "none", "url", "counter", "counters",
                    "attr", "open-quote", "close-quote", "no-open-quote",
                    "no-close-quote", "inherit", "initial", "unset",
                    "-moz-alt-content" ];
   var values = InspectorUtils.getCSSValuesForProperty("content");
   ok(testValues(values, expected), "property counter's values");
 
+  // Regression test for bug 1255369.
+  var expected = ["none", "decimal", "decimal-leading-zero", "arabic-indic", "armenian",
+                  "upper-armenian", "lower-armenian", "bengali", "cambodian", "khmer",
+                  "cjk-decimal", "devanagari", "georgian", "gujarati", "gurmukhi", "hebrew",
+                  "kannada", "lao", "malayalam", "mongolian", "myanmar", "oriya", "persian",
+                  "lower-roman", "upper-roman", "tamil", "telugu", "thai", "tibetan",
+                  "lower-alpha", "lower-latin", "upper-alpha", "upper-latin",
+                  "cjk-earthly-branch", "cjk-heavenly-stem", "lower-greek",
+                  "hiragana", "hiragana-iroha", "katakana", "katakana-iroha",
+                  "disc", "circle", "square", "disclosure-open", "disclosure-closed",
+                  "japanese-informal", "japanese-formal",
+                  "korean-hangul-formal", "korean-hanja-informal", "korean-hanja-formal",
+                  "simp-chinese-informal", "simp-chinese-formal",
+                  "trad-chinese-informal", "trad-chinese-formal", "cjk-ideographic",
+                  "ethiopic-numeric", "symbols", "inherit", "initial", "unset" ];
+  var values = InspectorUtils.getCSSValuesForProperty("list-style-type");
+  ok(testValues(values, expected), "property list-style-type's values");
+
   SimpleTest.finish();
 }
 
 SimpleTest.waitForExplicitFinish();
 addLoadEvent(do_test);
 
 </script>
 </head>
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -707,16 +707,23 @@ nsCSSProps::GetStringValue(nsCSSCounterD
   if (gCounterDescTable) {
     return gCounterDescTable->GetStringValue(int32_t(aCounterDesc));
   } else {
     static nsDependentCString sNullStr("");
     return sNullStr;
   }
 }
 
+const char* const*
+nsCSSProps::GetListStyleTypes(int32_t *aLength)
+{
+  *aLength = ArrayLength(kCSSRawPredefinedCounterStyles);
+  return kCSSRawPredefinedCounterStyles;
+}
+
 /***************************************************************************/
 
 const KTableEntry nsCSSProps::kAnimationDirectionKTable[] = {
   { eCSSKeyword_normal, static_cast<uint32_t>(dom::PlaybackDirection::Normal) },
   { eCSSKeyword_reverse, static_cast<uint32_t>(dom::PlaybackDirection::Reverse) },
   { eCSSKeyword_alternate, static_cast<uint32_t>(dom::PlaybackDirection::Alternate) },
   { eCSSKeyword_alternate_reverse, static_cast<uint32_t>(dom::PlaybackDirection::Alternate_reverse) },
   { eCSSKeyword_UNKNOWN, -1 }
--- a/layout/style/nsCSSProps.h
+++ b/layout/style/nsCSSProps.h
@@ -675,16 +675,20 @@ public:
     {
       return true;
     }
     return false;
   }
 
 public:
 
+  // Return an array of possible list style types, and the length of
+  // the array.
+  static const char* const* GetListStyleTypes(int32_t *aLength);
+
 // Storing the enabledstate_ value in an nsCSSPropertyID variable is a small hack
 // to avoid needing a separate variable declaration for its real type
 // (CSSEnabledState), which would then require using a block and
 // therefore a pair of macros by consumers for the start and end of the loop.
 #define CSSPROPS_FOR_SHORTHAND_SUBPROPERTIES(it_, prop_, enabledstate_)   \
   for (const nsCSSPropertyID *it_ = nsCSSProps::SubpropertyEntryFor(prop_), \
                             es_ = (nsCSSPropertyID)((enabledstate_) |       \
                                                   CSSEnabledState(0));    \