Bug 1224464 patch 2 - Make nsCSSProps keyword tables be arrays of structs, to represent what they logically are. r=heycam
authorL. David Baron <dbaron@dbaron.org>
Thu, 19 Nov 2015 18:08:57 -0800
changeset 273445 fbde9f78976bf61462c3069abdbe87a37303ea59
parent 273444 2cb53b74518d271a2874502ad129b7b4f799c5ae
child 273446 b4f4af049f7d08ccf6d74e45b8aee9ac79801ebf
push id29702
push usercbook@mozilla.com
push dateFri, 20 Nov 2015 12:13:22 +0000
treeherdermozilla-central@ec628289d8b4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersheycam
bugs1224464
milestone45.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1224464 patch 2 - Make nsCSSProps keyword tables be arrays of structs, to represent what they logically are. r=heycam
layout/base/nsLayoutUtils.cpp
layout/inspector/inDOMUtils.cpp
layout/style/nsCSSParser.cpp
layout/style/nsCSSProps.cpp
layout/style/nsCSSProps.h
layout/style/nsMediaFeatures.cpp
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -200,21 +200,21 @@ GridEnabledPrefChangeCallback(const char
     MOZ_ASSERT(sIndexOfInlineGridInDisplayTable >= 0,
                "Couldn't find inline-grid in kDisplayKTable");
     sAreGridKeywordIndicesInitialized = true;
   }
 
   // OK -- now, stomp on or restore the "grid" entries in kDisplayKTable,
   // depending on whether the grid pref is enabled vs. disabled.
   if (sIndexOfGridInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfGridInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfGridInDisplayTable].mKeyword =
       isGridEnabled ? eCSSKeyword_grid : eCSSKeyword_UNKNOWN;
   }
   if (sIndexOfInlineGridInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfInlineGridInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfInlineGridInDisplayTable].mKeyword =
       isGridEnabled ? eCSSKeyword_inline_grid : eCSSKeyword_UNKNOWN;
   }
 }
 
 static void
 RubyEnabledPrefChangeCallback(const char* aPrefName, void* aClosure)
 {
   MOZ_ASSERT(strncmp(aPrefName, RUBY_ENABLED_PREF_NAME,
@@ -260,33 +260,33 @@ RubyEnabledPrefChangeCallback(const char
     MOZ_ASSERT(sIndexOfRubyTextContainerInDisplayTable >= 0,
                "Couldn't find ruby-text-container in kDisplayKTable");
     sAreRubyKeywordIndicesInitialized = true;
   }
 
   // OK -- now, stomp on or restore the "ruby" entries in kDisplayKTable,
   // depending on whether the ruby pref is enabled vs. disabled.
   if (sIndexOfRubyInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfRubyInDisplayTable].mKeyword =
       isRubyEnabled ? eCSSKeyword_ruby : eCSSKeyword_UNKNOWN;
   }
   if (sIndexOfRubyBaseInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyBaseInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfRubyBaseInDisplayTable].mKeyword =
       isRubyEnabled ? eCSSKeyword_ruby_base : eCSSKeyword_UNKNOWN;
   }
   if (sIndexOfRubyBaseContainerInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyBaseContainerInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfRubyBaseContainerInDisplayTable].mKeyword =
       isRubyEnabled ? eCSSKeyword_ruby_base_container : eCSSKeyword_UNKNOWN;
   }
   if (sIndexOfRubyTextInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyTextInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfRubyTextInDisplayTable].mKeyword =
       isRubyEnabled ? eCSSKeyword_ruby_text : eCSSKeyword_UNKNOWN;
   }
   if (sIndexOfRubyTextContainerInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfRubyTextContainerInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfRubyTextContainerInDisplayTable].mKeyword =
       isRubyEnabled ? eCSSKeyword_ruby_text_container : eCSSKeyword_UNKNOWN;
   }
 }
 
 // When the pref "layout.css.sticky.enabled" changes, this function is invoked
 // to let us update kPositionKTable, to selectively disable or restore the
 // entry for "sticky" in that table.
 static void
@@ -310,17 +310,17 @@ StickyEnabledPrefChangeCallback(const ch
                                      nsCSSProps::kPositionKTable);
     MOZ_ASSERT(sIndexOfStickyInPositionTable >= 0,
                "Couldn't find sticky in kPositionKTable");
     sIsStickyKeywordIndexInitialized = true;
   }
 
   // OK -- now, stomp on or restore the "sticky" entry in kPositionKTable,
   // depending on whether the sticky pref is enabled vs. disabled.
-  nsCSSProps::kPositionKTable[sIndexOfStickyInPositionTable] =
+  nsCSSProps::kPositionKTable[sIndexOfStickyInPositionTable].mKeyword =
     isStickyEnabled ? eCSSKeyword_sticky : eCSSKeyword_UNKNOWN;
 }
 
 // When the pref "layout.css.display-contents.enabled" changes, this function is
 // invoked to let us update kDisplayKTable, to selectively disable or restore
 // the entries for "contents" in that table.
 static void
 DisplayContentsEnabledPrefChangeCallback(const char* aPrefName, void* aClosure)
@@ -339,17 +339,17 @@ DisplayContentsEnabledPrefChangeCallback
       nsCSSProps::FindIndexOfKeyword(eCSSKeyword_contents,
                                      nsCSSProps::kDisplayKTable);
     sIsDisplayContentsKeywordIndexInitialized = true;
   }
 
   // OK -- now, stomp on or restore the "contents" entry in kDisplayKTable,
   // depending on whether the pref is enabled vs. disabled.
   if (sIndexOfContentsInDisplayTable >= 0) {
-    nsCSSProps::kDisplayKTable[sIndexOfContentsInDisplayTable] =
+    nsCSSProps::kDisplayKTable[sIndexOfContentsInDisplayTable].mKeyword =
       isDisplayContentsEnabled ? eCSSKeyword_contents : eCSSKeyword_UNKNOWN;
   }
 }
 
 // When the pref "layout.css.text-align-true-value.enabled" changes, this
 // function is called to let us update kTextAlignKTable & kTextAlignLastKTable,
 // to selectively disable or restore the entries for "true" in those tables.
 static void
@@ -374,20 +374,20 @@ TextAlignTrueEnabledPrefChangeCallback(c
       nsCSSProps::FindIndexOfKeyword(eCSSKeyword_true,
                                      nsCSSProps::kTextAlignLastKTable);
     sIsInitialized = true;
   }
 
   // OK -- now, stomp on or restore the "true" entry in the keyword tables,
   // depending on whether the pref is enabled vs. disabled.
   MOZ_ASSERT(sIndexOfTrueInTextAlignTable >= 0);
-  nsCSSProps::kTextAlignKTable[sIndexOfTrueInTextAlignTable] =
+  nsCSSProps::kTextAlignKTable[sIndexOfTrueInTextAlignTable].mKeyword =
     isTextAlignTrueEnabled ? eCSSKeyword_true : eCSSKeyword_UNKNOWN;
   MOZ_ASSERT(sIndexOfTrueInTextAlignLastTable >= 0);
-  nsCSSProps::kTextAlignLastKTable[sIndexOfTrueInTextAlignLastTable] =
+  nsCSSProps::kTextAlignLastKTable[sIndexOfTrueInTextAlignLastTable].mKeyword =
     isTextAlignTrueEnabled ? eCSSKeyword_true : eCSSKeyword_UNKNOWN;
 }
 
 // When the pref "layout.css.float-logical-values.enabled" changes, this
 // function is called to let us update kFloatKTable & kClearKTable,
 // to selectively disable or restore the entries for logical values
 // (inline-start and inline-end) in those tables.
 static void
@@ -423,26 +423,26 @@ FloatLogicalValuesEnabledPrefChangeCallb
       nsCSSProps::FindIndexOfKeyword(eCSSKeyword_inline_end,
                                      nsCSSProps::kClearKTable);
     sIsInitialized = true;
   }
 
   // OK -- now, stomp on or restore the logical entries in the keyword tables,
   // depending on whether the pref is enabled vs. disabled.
   MOZ_ASSERT(sIndexOfInlineStartInFloatTable >= 0);
-  nsCSSProps::kFloatKTable[sIndexOfInlineStartInFloatTable] =
+  nsCSSProps::kFloatKTable[sIndexOfInlineStartInFloatTable].mKeyword =
     isFloatLogicalValuesEnabled ? eCSSKeyword_inline_start : eCSSKeyword_UNKNOWN;
   MOZ_ASSERT(sIndexOfInlineEndInFloatTable >= 0);
-  nsCSSProps::kFloatKTable[sIndexOfInlineEndInFloatTable] =
+  nsCSSProps::kFloatKTable[sIndexOfInlineEndInFloatTable].mKeyword =
     isFloatLogicalValuesEnabled ? eCSSKeyword_inline_end : eCSSKeyword_UNKNOWN;
   MOZ_ASSERT(sIndexOfInlineStartInClearTable >= 0);
-  nsCSSProps::kClearKTable[sIndexOfInlineStartInClearTable] =
+  nsCSSProps::kClearKTable[sIndexOfInlineStartInClearTable].mKeyword =
     isFloatLogicalValuesEnabled ? eCSSKeyword_inline_start : eCSSKeyword_UNKNOWN;
   MOZ_ASSERT(sIndexOfInlineEndInClearTable >= 0);
-  nsCSSProps::kClearKTable[sIndexOfInlineEndInClearTable] =
+  nsCSSProps::kClearKTable[sIndexOfInlineEndInClearTable].mKeyword =
     isFloatLogicalValuesEnabled ? eCSSKeyword_inline_end : eCSSKeyword_UNKNOWN;
 }
 
 bool
 nsLayoutUtils::HasAnimationsForCompositor(const nsIFrame* aFrame,
                                           nsCSSProperty aProperty)
 {
   nsPresContext* presContext = aFrame->PresContext();
--- a/layout/inspector/inDOMUtils.cpp
+++ b/layout/inspector/inDOMUtils.cpp
@@ -575,24 +575,20 @@ static void GetKeywordsForProperty(const
 {
   if (nsCSSProps::IsShorthand(aProperty)) {
     // Shorthand props have no keywords.
     return;
   }
   const nsCSSProps::KTableValue *keywordTable =
     nsCSSProps::kKeywordTableTable[aProperty];
   if (keywordTable) {
-    size_t i = 0;
-    while (nsCSSKeyword(keywordTable[i]) != eCSSKeyword_UNKNOWN) {
-      nsCSSKeyword word = nsCSSKeyword(keywordTable[i]);
+    for (size_t i = 0; keywordTable[i].mKeyword != eCSSKeyword_UNKNOWN; ++i) {
+      nsCSSKeyword word = keywordTable[i].mKeyword;
       InsertNoDuplicates(aArray,
                          NS_ConvertASCIItoUTF16(nsCSSKeywords::GetStringValue(word)));
-      // Increment counter by 2, because in this table every second
-      // element is a nsCSSKeyword.
-      i += 2;
     }
   }
 }
 
 static void GetColorsForProperty(const uint32_t aParserVariant,
                                  nsTArray<nsString>& aArray)
 {
   if (aParserVariant & VARIANT_COLOR) {
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -12535,36 +12535,37 @@ CSSParserImpl::ParseColumns()
 #define VARIANT_CONTENT (VARIANT_STRING | VARIANT_URL | VARIANT_COUNTER | VARIANT_ATTR | \
                          VARIANT_KEYWORD)
 bool
 CSSParserImpl::ParseContent()
 {
   // We need to divide the 'content' keywords into two classes for
   // ParseVariant's sake, so we can't just use nsCSSProps::kContentKTable.
   static const KTableValue kContentListKWs[] = {
-    eCSSKeyword_open_quote, NS_STYLE_CONTENT_OPEN_QUOTE,
-    eCSSKeyword_close_quote, NS_STYLE_CONTENT_CLOSE_QUOTE,
-    eCSSKeyword_no_open_quote, NS_STYLE_CONTENT_NO_OPEN_QUOTE,
-    eCSSKeyword_no_close_quote, NS_STYLE_CONTENT_NO_CLOSE_QUOTE,
-    eCSSKeyword_UNKNOWN,-1
+    { eCSSKeyword_open_quote, NS_STYLE_CONTENT_OPEN_QUOTE },
+    { eCSSKeyword_close_quote, NS_STYLE_CONTENT_CLOSE_QUOTE },
+    { eCSSKeyword_no_open_quote, NS_STYLE_CONTENT_NO_OPEN_QUOTE },
+    { eCSSKeyword_no_close_quote, NS_STYLE_CONTENT_NO_CLOSE_QUOTE },
+    { eCSSKeyword_UNKNOWN, -1 }
   };
 
   static const KTableValue kContentSolitaryKWs[] = {
-    eCSSKeyword__moz_alt_content, NS_STYLE_CONTENT_ALT_CONTENT,
-    eCSSKeyword_UNKNOWN,-1
+    { eCSSKeyword__moz_alt_content, NS_STYLE_CONTENT_ALT_CONTENT },
+    { eCSSKeyword_UNKNOWN, -1 }
   };
 
   // Verify that these two lists add up to the size of
   // nsCSSProps::kContentKTable.
   MOZ_ASSERT(nsCSSProps::kContentKTable[
                ArrayLength(kContentListKWs) +
-               ArrayLength(kContentSolitaryKWs) - 4] == eCSSKeyword_UNKNOWN &&
+               ArrayLength(kContentSolitaryKWs) - 2].mKeyword ==
+                 eCSSKeyword_UNKNOWN &&
              nsCSSProps::kContentKTable[
                ArrayLength(kContentListKWs) +
-               ArrayLength(kContentSolitaryKWs) - 3] == -1,
+               ArrayLength(kContentSolitaryKWs) - 2].mValue == -1,
              "content keyword tables out of sync");
 
   nsCSSValue value;
   // 'inherit', 'initial', 'unset', 'normal', 'none', and 'alt-content' must
   // be alone
   if (!ParseSingleTokenVariant(value, VARIANT_HMK | VARIANT_NONE,
                                kContentSolitaryKWs)) {
     nsCSSValueList* cur = value.SetListValue();
@@ -15684,25 +15685,25 @@ CSSParserImpl::ParseMarker()
 bool
 CSSParserImpl::ParsePaintOrder()
 {
   static_assert
     ((1 << NS_STYLE_PAINT_ORDER_BITWIDTH) > NS_STYLE_PAINT_ORDER_LAST_VALUE,
      "bitfield width insufficient for paint-order constants");
 
   static const KTableValue kPaintOrderKTable[] = {
-    eCSSKeyword_normal,  NS_STYLE_PAINT_ORDER_NORMAL,
-    eCSSKeyword_fill,    NS_STYLE_PAINT_ORDER_FILL,
-    eCSSKeyword_stroke,  NS_STYLE_PAINT_ORDER_STROKE,
-    eCSSKeyword_markers, NS_STYLE_PAINT_ORDER_MARKERS,
-    eCSSKeyword_UNKNOWN,-1
+    { eCSSKeyword_normal,  NS_STYLE_PAINT_ORDER_NORMAL },
+    { eCSSKeyword_fill,    NS_STYLE_PAINT_ORDER_FILL },
+    { eCSSKeyword_stroke,  NS_STYLE_PAINT_ORDER_STROKE },
+    { eCSSKeyword_markers, NS_STYLE_PAINT_ORDER_MARKERS },
+    { eCSSKeyword_UNKNOWN, -1 }
   };
 
   static_assert(MOZ_ARRAY_LENGTH(kPaintOrderKTable) ==
-                  2 * (NS_STYLE_PAINT_ORDER_LAST_VALUE + 2),
+                  NS_STYLE_PAINT_ORDER_LAST_VALUE + 2,
                 "missing paint-order values in kPaintOrderKTable");
 
   nsCSSValue value;
   if (!ParseSingleTokenVariant(value, VARIANT_HK, kPaintOrderKTable)) {
     return false;
   }
 
   uint32_t seen = 0;
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -697,1626 +697,1622 @@ nsCSSProps::GetStringValue(nsCSSCounterD
     static nsDependentCString sNullStr("");
     return sNullStr;
   }
 }
 
 /***************************************************************************/
 
 const KTableValue nsCSSProps::kAnimationDirectionKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_ANIMATION_DIRECTION_NORMAL,
-  eCSSKeyword_reverse, NS_STYLE_ANIMATION_DIRECTION_REVERSE,
-  eCSSKeyword_alternate, NS_STYLE_ANIMATION_DIRECTION_ALTERNATE,
-  eCSSKeyword_alternate_reverse, NS_STYLE_ANIMATION_DIRECTION_ALTERNATE_REVERSE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_ANIMATION_DIRECTION_NORMAL },
+  { eCSSKeyword_reverse, NS_STYLE_ANIMATION_DIRECTION_REVERSE },
+  { eCSSKeyword_alternate, NS_STYLE_ANIMATION_DIRECTION_ALTERNATE },
+  { eCSSKeyword_alternate_reverse, NS_STYLE_ANIMATION_DIRECTION_ALTERNATE_REVERSE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kAnimationFillModeKTable[] = {
-  eCSSKeyword_none, NS_STYLE_ANIMATION_FILL_MODE_NONE,
-  eCSSKeyword_forwards, NS_STYLE_ANIMATION_FILL_MODE_FORWARDS,
-  eCSSKeyword_backwards, NS_STYLE_ANIMATION_FILL_MODE_BACKWARDS,
-  eCSSKeyword_both, NS_STYLE_ANIMATION_FILL_MODE_BOTH,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_ANIMATION_FILL_MODE_NONE },
+  { eCSSKeyword_forwards, NS_STYLE_ANIMATION_FILL_MODE_FORWARDS },
+  { eCSSKeyword_backwards, NS_STYLE_ANIMATION_FILL_MODE_BACKWARDS },
+  { eCSSKeyword_both, NS_STYLE_ANIMATION_FILL_MODE_BOTH },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kAnimationIterationCountKTable[] = {
-  eCSSKeyword_infinite, NS_STYLE_ANIMATION_ITERATION_COUNT_INFINITE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_infinite, NS_STYLE_ANIMATION_ITERATION_COUNT_INFINITE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kAnimationPlayStateKTable[] = {
-  eCSSKeyword_running, NS_STYLE_ANIMATION_PLAY_STATE_RUNNING,
-  eCSSKeyword_paused, NS_STYLE_ANIMATION_PLAY_STATE_PAUSED,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_running, NS_STYLE_ANIMATION_PLAY_STATE_RUNNING },
+  { eCSSKeyword_paused, NS_STYLE_ANIMATION_PLAY_STATE_PAUSED },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kAppearanceKTable[] = {
-  eCSSKeyword_none,                   NS_THEME_NONE,
-  eCSSKeyword_button,                 NS_THEME_BUTTON,
-  eCSSKeyword_radio,                  NS_THEME_RADIO,
-  eCSSKeyword_checkbox,               NS_THEME_CHECKBOX,
-  eCSSKeyword_button_bevel,           NS_THEME_BUTTON_BEVEL,
-  eCSSKeyword_toolbox,                NS_THEME_TOOLBOX,
-  eCSSKeyword_toolbar,                NS_THEME_TOOLBAR,
-  eCSSKeyword_toolbarbutton,          NS_THEME_TOOLBAR_BUTTON,
-  eCSSKeyword_toolbargripper,         NS_THEME_TOOLBAR_GRIPPER,
-  eCSSKeyword_dualbutton,             NS_THEME_TOOLBAR_DUAL_BUTTON,
-  eCSSKeyword_toolbarbutton_dropdown, NS_THEME_TOOLBAR_BUTTON_DROPDOWN,
-  eCSSKeyword_button_arrow_up,        NS_THEME_BUTTON_ARROW_UP,
-  eCSSKeyword_button_arrow_down,      NS_THEME_BUTTON_ARROW_DOWN,
-  eCSSKeyword_button_arrow_next,      NS_THEME_BUTTON_ARROW_NEXT,
-  eCSSKeyword_button_arrow_previous,  NS_THEME_BUTTON_ARROW_PREVIOUS,
-  eCSSKeyword_meterbar,               NS_THEME_METERBAR,
-  eCSSKeyword_meterchunk,             NS_THEME_METERBAR_CHUNK,
-  eCSSKeyword_number_input,           NS_THEME_NUMBER_INPUT,
-  eCSSKeyword_separator,              NS_THEME_TOOLBAR_SEPARATOR,
-  eCSSKeyword_splitter,               NS_THEME_SPLITTER,
-  eCSSKeyword_statusbar,              NS_THEME_STATUSBAR,
-  eCSSKeyword_statusbarpanel,         NS_THEME_STATUSBAR_PANEL,
-  eCSSKeyword_resizerpanel,           NS_THEME_STATUSBAR_RESIZER_PANEL,
-  eCSSKeyword_resizer,                NS_THEME_RESIZER,
-  eCSSKeyword_listbox,                NS_THEME_LISTBOX,
-  eCSSKeyword_listitem,               NS_THEME_LISTBOX_LISTITEM,
-  eCSSKeyword_treeview,               NS_THEME_TREEVIEW,
-  eCSSKeyword_treeitem,               NS_THEME_TREEVIEW_TREEITEM,
-  eCSSKeyword_treetwisty,             NS_THEME_TREEVIEW_TWISTY,
-  eCSSKeyword_treetwistyopen,         NS_THEME_TREEVIEW_TWISTY_OPEN,
-  eCSSKeyword_treeline,               NS_THEME_TREEVIEW_LINE,
-  eCSSKeyword_treeheader,             NS_THEME_TREEVIEW_HEADER,
-  eCSSKeyword_treeheadercell,         NS_THEME_TREEVIEW_HEADER_CELL,
-  eCSSKeyword_treeheadersortarrow,    NS_THEME_TREEVIEW_HEADER_SORTARROW,
-  eCSSKeyword_progressbar,            NS_THEME_PROGRESSBAR,
-  eCSSKeyword_progresschunk,          NS_THEME_PROGRESSBAR_CHUNK,
-  eCSSKeyword_progressbar_vertical,   NS_THEME_PROGRESSBAR_VERTICAL,
-  eCSSKeyword_progresschunk_vertical, NS_THEME_PROGRESSBAR_CHUNK_VERTICAL,
-  eCSSKeyword_tab,                    NS_THEME_TAB,
-  eCSSKeyword_tabpanels,              NS_THEME_TAB_PANELS,
-  eCSSKeyword_tabpanel,               NS_THEME_TAB_PANEL,
-  eCSSKeyword_tab_scroll_arrow_back,  NS_THEME_TAB_SCROLLARROW_BACK,
-  eCSSKeyword_tab_scroll_arrow_forward, NS_THEME_TAB_SCROLLARROW_FORWARD,
-  eCSSKeyword_tooltip,                NS_THEME_TOOLTIP,
-  eCSSKeyword_spinner,                NS_THEME_SPINNER,
-  eCSSKeyword_spinner_upbutton,       NS_THEME_SPINNER_UP_BUTTON,
-  eCSSKeyword_spinner_downbutton,     NS_THEME_SPINNER_DOWN_BUTTON,
-  eCSSKeyword_spinner_textfield,      NS_THEME_SPINNER_TEXTFIELD,
-  eCSSKeyword_scrollbar,              NS_THEME_SCROLLBAR,
-  eCSSKeyword_scrollbar_small,        NS_THEME_SCROLLBAR_SMALL,
-  eCSSKeyword_scrollbarbutton_up,     NS_THEME_SCROLLBAR_BUTTON_UP,
-  eCSSKeyword_scrollbarbutton_down,   NS_THEME_SCROLLBAR_BUTTON_DOWN,
-  eCSSKeyword_scrollbarbutton_left,   NS_THEME_SCROLLBAR_BUTTON_LEFT,
-  eCSSKeyword_scrollbarbutton_right,  NS_THEME_SCROLLBAR_BUTTON_RIGHT,
-  eCSSKeyword_scrollbartrack_horizontal,    NS_THEME_SCROLLBAR_TRACK_HORIZONTAL,
-  eCSSKeyword_scrollbartrack_vertical,      NS_THEME_SCROLLBAR_TRACK_VERTICAL,
-  eCSSKeyword_scrollbarthumb_horizontal,    NS_THEME_SCROLLBAR_THUMB_HORIZONTAL,
-  eCSSKeyword_scrollbarthumb_vertical,      NS_THEME_SCROLLBAR_THUMB_VERTICAL,
-  eCSSKeyword_textfield,              NS_THEME_TEXTFIELD,
-  eCSSKeyword_textfield_multiline,    NS_THEME_TEXTFIELD_MULTILINE,
-  eCSSKeyword_caret,                  NS_THEME_TEXTFIELD_CARET,
-  eCSSKeyword_searchfield,            NS_THEME_SEARCHFIELD,
-  eCSSKeyword_menulist,               NS_THEME_DROPDOWN,
-  eCSSKeyword_menulist_button,        NS_THEME_DROPDOWN_BUTTON,
-  eCSSKeyword_menulist_text,          NS_THEME_DROPDOWN_TEXT,
-  eCSSKeyword_menulist_textfield,     NS_THEME_DROPDOWN_TEXTFIELD,
-  eCSSKeyword_range,                  NS_THEME_RANGE,
-  eCSSKeyword_range_thumb,            NS_THEME_RANGE_THUMB,
-  eCSSKeyword_scale_horizontal,       NS_THEME_SCALE_HORIZONTAL,
-  eCSSKeyword_scale_vertical,         NS_THEME_SCALE_VERTICAL,
-  eCSSKeyword_scalethumb_horizontal,  NS_THEME_SCALE_THUMB_HORIZONTAL,
-  eCSSKeyword_scalethumb_vertical,    NS_THEME_SCALE_THUMB_VERTICAL,
-  eCSSKeyword_scalethumbstart,        NS_THEME_SCALE_THUMB_START,
-  eCSSKeyword_scalethumbend,          NS_THEME_SCALE_THUMB_END,
-  eCSSKeyword_scalethumbtick,         NS_THEME_SCALE_TICK,
-  eCSSKeyword_groupbox,               NS_THEME_GROUPBOX,
-  eCSSKeyword_checkbox_container,     NS_THEME_CHECKBOX_CONTAINER,
-  eCSSKeyword_radio_container,        NS_THEME_RADIO_CONTAINER,
-  eCSSKeyword_checkbox_label,         NS_THEME_CHECKBOX_LABEL,
-  eCSSKeyword_radio_label,            NS_THEME_RADIO_LABEL,
-  eCSSKeyword_button_focus,           NS_THEME_BUTTON_FOCUS,
-  eCSSKeyword_window,                 NS_THEME_WINDOW,
-  eCSSKeyword_dialog,                 NS_THEME_DIALOG,
-  eCSSKeyword_menubar,                NS_THEME_MENUBAR,
-  eCSSKeyword_menupopup,              NS_THEME_MENUPOPUP,
-  eCSSKeyword_menuitem,               NS_THEME_MENUITEM,
-  eCSSKeyword_checkmenuitem,          NS_THEME_CHECKMENUITEM,
-  eCSSKeyword_radiomenuitem,          NS_THEME_RADIOMENUITEM,
-  eCSSKeyword_menucheckbox,           NS_THEME_MENUCHECKBOX,
-  eCSSKeyword_menuradio,              NS_THEME_MENURADIO,
-  eCSSKeyword_menuseparator,          NS_THEME_MENUSEPARATOR,
-  eCSSKeyword_menuarrow,              NS_THEME_MENUARROW,
-  eCSSKeyword_menuimage,              NS_THEME_MENUIMAGE,
-  eCSSKeyword_menuitemtext,           NS_THEME_MENUITEMTEXT,
-  eCSSKeyword__moz_win_media_toolbox, NS_THEME_WIN_MEDIA_TOOLBOX,
-  eCSSKeyword__moz_win_communications_toolbox, NS_THEME_WIN_COMMUNICATIONS_TOOLBOX,
-  eCSSKeyword__moz_win_browsertabbar_toolbox,  NS_THEME_WIN_BROWSER_TAB_BAR_TOOLBOX,
-  eCSSKeyword__moz_win_glass,         NS_THEME_WIN_GLASS,
-  eCSSKeyword__moz_win_borderless_glass,      NS_THEME_WIN_BORDERLESS_GLASS,
-  eCSSKeyword__moz_mac_fullscreen_button,     NS_THEME_MOZ_MAC_FULLSCREEN_BUTTON,
-  eCSSKeyword__moz_mac_help_button,           NS_THEME_MOZ_MAC_HELP_BUTTON,
-  eCSSKeyword__moz_window_titlebar,           NS_THEME_WINDOW_TITLEBAR,
-  eCSSKeyword__moz_window_titlebar_maximized, NS_THEME_WINDOW_TITLEBAR_MAXIMIZED,
-  eCSSKeyword__moz_window_frame_left,         NS_THEME_WINDOW_FRAME_LEFT,
-  eCSSKeyword__moz_window_frame_right,        NS_THEME_WINDOW_FRAME_RIGHT,
-  eCSSKeyword__moz_window_frame_bottom,       NS_THEME_WINDOW_FRAME_BOTTOM,
-  eCSSKeyword__moz_window_button_close,       NS_THEME_WINDOW_BUTTON_CLOSE,
-  eCSSKeyword__moz_window_button_minimize,    NS_THEME_WINDOW_BUTTON_MINIMIZE,
-  eCSSKeyword__moz_window_button_maximize,    NS_THEME_WINDOW_BUTTON_MAXIMIZE,
-  eCSSKeyword__moz_window_button_restore,     NS_THEME_WINDOW_BUTTON_RESTORE,
-  eCSSKeyword__moz_window_button_box,         NS_THEME_WINDOW_BUTTON_BOX,
-  eCSSKeyword__moz_window_button_box_maximized, NS_THEME_WINDOW_BUTTON_BOX_MAXIMIZED,
-  eCSSKeyword__moz_win_exclude_glass,         NS_THEME_WIN_EXCLUDE_GLASS,
-  eCSSKeyword__moz_mac_vibrancy_light,        NS_THEME_MAC_VIBRANCY_LIGHT,
-  eCSSKeyword__moz_mac_vibrancy_dark,         NS_THEME_MAC_VIBRANCY_DARK,
-  eCSSKeyword__moz_mac_disclosure_button_open,   NS_THEME_MAC_DISCLOSURE_BUTTON_OPEN,
-  eCSSKeyword__moz_mac_disclosure_button_closed, NS_THEME_MAC_DISCLOSURE_BUTTON_CLOSED,
-  eCSSKeyword__moz_gtk_info_bar,              NS_THEME_GTK_INFO_BAR,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,                   NS_THEME_NONE },
+  { eCSSKeyword_button,                 NS_THEME_BUTTON },
+  { eCSSKeyword_radio,                  NS_THEME_RADIO },
+  { eCSSKeyword_checkbox,               NS_THEME_CHECKBOX },
+  { eCSSKeyword_button_bevel,           NS_THEME_BUTTON_BEVEL },
+  { eCSSKeyword_toolbox,                NS_THEME_TOOLBOX },
+  { eCSSKeyword_toolbar,                NS_THEME_TOOLBAR },
+  { eCSSKeyword_toolbarbutton,          NS_THEME_TOOLBAR_BUTTON },
+  { eCSSKeyword_toolbargripper,         NS_THEME_TOOLBAR_GRIPPER },
+  { eCSSKeyword_dualbutton,             NS_THEME_TOOLBAR_DUAL_BUTTON },
+  { eCSSKeyword_toolbarbutton_dropdown, NS_THEME_TOOLBAR_BUTTON_DROPDOWN },
+  { eCSSKeyword_button_arrow_up,        NS_THEME_BUTTON_ARROW_UP },
+  { eCSSKeyword_button_arrow_down,      NS_THEME_BUTTON_ARROW_DOWN },
+  { eCSSKeyword_button_arrow_next,      NS_THEME_BUTTON_ARROW_NEXT },
+  { eCSSKeyword_button_arrow_previous,  NS_THEME_BUTTON_ARROW_PREVIOUS },
+  { eCSSKeyword_meterbar,               NS_THEME_METERBAR },
+  { eCSSKeyword_meterchunk,             NS_THEME_METERBAR_CHUNK },
+  { eCSSKeyword_number_input,           NS_THEME_NUMBER_INPUT },
+  { eCSSKeyword_separator,              NS_THEME_TOOLBAR_SEPARATOR },
+  { eCSSKeyword_splitter,               NS_THEME_SPLITTER },
+  { eCSSKeyword_statusbar,              NS_THEME_STATUSBAR },
+  { eCSSKeyword_statusbarpanel,         NS_THEME_STATUSBAR_PANEL },
+  { eCSSKeyword_resizerpanel,           NS_THEME_STATUSBAR_RESIZER_PANEL },
+  { eCSSKeyword_resizer,                NS_THEME_RESIZER },
+  { eCSSKeyword_listbox,                NS_THEME_LISTBOX },
+  { eCSSKeyword_listitem,               NS_THEME_LISTBOX_LISTITEM },
+  { eCSSKeyword_treeview,               NS_THEME_TREEVIEW },
+  { eCSSKeyword_treeitem,               NS_THEME_TREEVIEW_TREEITEM },
+  { eCSSKeyword_treetwisty,             NS_THEME_TREEVIEW_TWISTY },
+  { eCSSKeyword_treetwistyopen,         NS_THEME_TREEVIEW_TWISTY_OPEN },
+  { eCSSKeyword_treeline,               NS_THEME_TREEVIEW_LINE },
+  { eCSSKeyword_treeheader,             NS_THEME_TREEVIEW_HEADER },
+  { eCSSKeyword_treeheadercell,         NS_THEME_TREEVIEW_HEADER_CELL },
+  { eCSSKeyword_treeheadersortarrow,    NS_THEME_TREEVIEW_HEADER_SORTARROW },
+  { eCSSKeyword_progressbar,            NS_THEME_PROGRESSBAR },
+  { eCSSKeyword_progresschunk,          NS_THEME_PROGRESSBAR_CHUNK },
+  { eCSSKeyword_progressbar_vertical,   NS_THEME_PROGRESSBAR_VERTICAL },
+  { eCSSKeyword_progresschunk_vertical, NS_THEME_PROGRESSBAR_CHUNK_VERTICAL },
+  { eCSSKeyword_tab,                    NS_THEME_TAB },
+  { eCSSKeyword_tabpanels,              NS_THEME_TAB_PANELS },
+  { eCSSKeyword_tabpanel,               NS_THEME_TAB_PANEL },
+  { eCSSKeyword_tab_scroll_arrow_back,  NS_THEME_TAB_SCROLLARROW_BACK },
+  { eCSSKeyword_tab_scroll_arrow_forward, NS_THEME_TAB_SCROLLARROW_FORWARD },
+  { eCSSKeyword_tooltip,                NS_THEME_TOOLTIP },
+  { eCSSKeyword_spinner,                NS_THEME_SPINNER },
+  { eCSSKeyword_spinner_upbutton,       NS_THEME_SPINNER_UP_BUTTON },
+  { eCSSKeyword_spinner_downbutton,     NS_THEME_SPINNER_DOWN_BUTTON },
+  { eCSSKeyword_spinner_textfield,      NS_THEME_SPINNER_TEXTFIELD },
+  { eCSSKeyword_scrollbar,              NS_THEME_SCROLLBAR },
+  { eCSSKeyword_scrollbar_small,        NS_THEME_SCROLLBAR_SMALL },
+  { eCSSKeyword_scrollbarbutton_up,     NS_THEME_SCROLLBAR_BUTTON_UP },
+  { eCSSKeyword_scrollbarbutton_down,   NS_THEME_SCROLLBAR_BUTTON_DOWN },
+  { eCSSKeyword_scrollbarbutton_left,   NS_THEME_SCROLLBAR_BUTTON_LEFT },
+  { eCSSKeyword_scrollbarbutton_right,  NS_THEME_SCROLLBAR_BUTTON_RIGHT },
+  { eCSSKeyword_scrollbartrack_horizontal,    NS_THEME_SCROLLBAR_TRACK_HORIZONTAL },
+  { eCSSKeyword_scrollbartrack_vertical,      NS_THEME_SCROLLBAR_TRACK_VERTICAL },
+  { eCSSKeyword_scrollbarthumb_horizontal,    NS_THEME_SCROLLBAR_THUMB_HORIZONTAL },
+  { eCSSKeyword_scrollbarthumb_vertical,      NS_THEME_SCROLLBAR_THUMB_VERTICAL },
+  { eCSSKeyword_textfield,              NS_THEME_TEXTFIELD },
+  { eCSSKeyword_textfield_multiline,    NS_THEME_TEXTFIELD_MULTILINE },
+  { eCSSKeyword_caret,                  NS_THEME_TEXTFIELD_CARET },
+  { eCSSKeyword_searchfield,            NS_THEME_SEARCHFIELD },
+  { eCSSKeyword_menulist,               NS_THEME_DROPDOWN },
+  { eCSSKeyword_menulist_button,        NS_THEME_DROPDOWN_BUTTON },
+  { eCSSKeyword_menulist_text,          NS_THEME_DROPDOWN_TEXT },
+  { eCSSKeyword_menulist_textfield,     NS_THEME_DROPDOWN_TEXTFIELD },
+  { eCSSKeyword_range,                  NS_THEME_RANGE },
+  { eCSSKeyword_range_thumb,            NS_THEME_RANGE_THUMB },
+  { eCSSKeyword_scale_horizontal,       NS_THEME_SCALE_HORIZONTAL },
+  { eCSSKeyword_scale_vertical,         NS_THEME_SCALE_VERTICAL },
+  { eCSSKeyword_scalethumb_horizontal,  NS_THEME_SCALE_THUMB_HORIZONTAL },
+  { eCSSKeyword_scalethumb_vertical,    NS_THEME_SCALE_THUMB_VERTICAL },
+  { eCSSKeyword_scalethumbstart,        NS_THEME_SCALE_THUMB_START },
+  { eCSSKeyword_scalethumbend,          NS_THEME_SCALE_THUMB_END },
+  { eCSSKeyword_scalethumbtick,         NS_THEME_SCALE_TICK },
+  { eCSSKeyword_groupbox,               NS_THEME_GROUPBOX },
+  { eCSSKeyword_checkbox_container,     NS_THEME_CHECKBOX_CONTAINER },
+  { eCSSKeyword_radio_container,        NS_THEME_RADIO_CONTAINER },
+  { eCSSKeyword_checkbox_label,         NS_THEME_CHECKBOX_LABEL },
+  { eCSSKeyword_radio_label,            NS_THEME_RADIO_LABEL },
+  { eCSSKeyword_button_focus,           NS_THEME_BUTTON_FOCUS },
+  { eCSSKeyword_window,                 NS_THEME_WINDOW },
+  { eCSSKeyword_dialog,                 NS_THEME_DIALOG },
+  { eCSSKeyword_menubar,                NS_THEME_MENUBAR },
+  { eCSSKeyword_menupopup,              NS_THEME_MENUPOPUP },
+  { eCSSKeyword_menuitem,               NS_THEME_MENUITEM },
+  { eCSSKeyword_checkmenuitem,          NS_THEME_CHECKMENUITEM },
+  { eCSSKeyword_radiomenuitem,          NS_THEME_RADIOMENUITEM },
+  { eCSSKeyword_menucheckbox,           NS_THEME_MENUCHECKBOX },
+  { eCSSKeyword_menuradio,              NS_THEME_MENURADIO },
+  { eCSSKeyword_menuseparator,          NS_THEME_MENUSEPARATOR },
+  { eCSSKeyword_menuarrow,              NS_THEME_MENUARROW },
+  { eCSSKeyword_menuimage,              NS_THEME_MENUIMAGE },
+  { eCSSKeyword_menuitemtext,           NS_THEME_MENUITEMTEXT },
+  { eCSSKeyword__moz_win_media_toolbox, NS_THEME_WIN_MEDIA_TOOLBOX },
+  { eCSSKeyword__moz_win_communications_toolbox, NS_THEME_WIN_COMMUNICATIONS_TOOLBOX },
+  { eCSSKeyword__moz_win_browsertabbar_toolbox,  NS_THEME_WIN_BROWSER_TAB_BAR_TOOLBOX },
+  { eCSSKeyword__moz_win_glass,         NS_THEME_WIN_GLASS },
+  { eCSSKeyword__moz_win_borderless_glass,      NS_THEME_WIN_BORDERLESS_GLASS },
+  { eCSSKeyword__moz_mac_fullscreen_button,     NS_THEME_MOZ_MAC_FULLSCREEN_BUTTON },
+  { eCSSKeyword__moz_mac_help_button,           NS_THEME_MOZ_MAC_HELP_BUTTON },
+  { eCSSKeyword__moz_window_titlebar,           NS_THEME_WINDOW_TITLEBAR },
+  { eCSSKeyword__moz_window_titlebar_maximized, NS_THEME_WINDOW_TITLEBAR_MAXIMIZED },
+  { eCSSKeyword__moz_window_frame_left,         NS_THEME_WINDOW_FRAME_LEFT },
+  { eCSSKeyword__moz_window_frame_right,        NS_THEME_WINDOW_FRAME_RIGHT },
+  { eCSSKeyword__moz_window_frame_bottom,       NS_THEME_WINDOW_FRAME_BOTTOM },
+  { eCSSKeyword__moz_window_button_close,       NS_THEME_WINDOW_BUTTON_CLOSE },
+  { eCSSKeyword__moz_window_button_minimize,    NS_THEME_WINDOW_BUTTON_MINIMIZE },
+  { eCSSKeyword__moz_window_button_maximize,    NS_THEME_WINDOW_BUTTON_MAXIMIZE },
+  { eCSSKeyword__moz_window_button_restore,     NS_THEME_WINDOW_BUTTON_RESTORE },
+  { eCSSKeyword__moz_window_button_box,         NS_THEME_WINDOW_BUTTON_BOX },
+  { eCSSKeyword__moz_window_button_box_maximized, NS_THEME_WINDOW_BUTTON_BOX_MAXIMIZED },
+  { eCSSKeyword__moz_win_exclude_glass,         NS_THEME_WIN_EXCLUDE_GLASS },
+  { eCSSKeyword__moz_mac_vibrancy_light,        NS_THEME_MAC_VIBRANCY_LIGHT },
+  { eCSSKeyword__moz_mac_vibrancy_dark,         NS_THEME_MAC_VIBRANCY_DARK },
+  { eCSSKeyword__moz_mac_disclosure_button_open,   NS_THEME_MAC_DISCLOSURE_BUTTON_OPEN },
+  { eCSSKeyword__moz_mac_disclosure_button_closed, NS_THEME_MAC_DISCLOSURE_BUTTON_CLOSED },
+  { eCSSKeyword__moz_gtk_info_bar,              NS_THEME_GTK_INFO_BAR },
+  { eCSSKeyword_UNKNOWN,                        -1 }
 };
 
 const KTableValue nsCSSProps::kBackfaceVisibilityKTable[] = {
-  eCSSKeyword_visible, NS_STYLE_BACKFACE_VISIBILITY_VISIBLE,
-  eCSSKeyword_hidden, NS_STYLE_BACKFACE_VISIBILITY_HIDDEN,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_visible, NS_STYLE_BACKFACE_VISIBILITY_VISIBLE },
+  { eCSSKeyword_hidden, NS_STYLE_BACKFACE_VISIBILITY_HIDDEN },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTransformStyleKTable[] = {
-  eCSSKeyword_flat, NS_STYLE_TRANSFORM_STYLE_FLAT,
-  eCSSKeyword_preserve_3d, NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_flat, NS_STYLE_TRANSFORM_STYLE_FLAT },
+  { eCSSKeyword_preserve_3d, NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBackgroundAttachmentKTable[] = {
-  eCSSKeyword_fixed, NS_STYLE_BG_ATTACHMENT_FIXED,
-  eCSSKeyword_scroll, NS_STYLE_BG_ATTACHMENT_SCROLL,
-  eCSSKeyword_local, NS_STYLE_BG_ATTACHMENT_LOCAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_fixed, NS_STYLE_BG_ATTACHMENT_FIXED },
+  { eCSSKeyword_scroll, NS_STYLE_BG_ATTACHMENT_SCROLL },
+  { eCSSKeyword_local, NS_STYLE_BG_ATTACHMENT_LOCAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 static_assert(NS_STYLE_BG_CLIP_BORDER == NS_STYLE_BG_ORIGIN_BORDER &&
               NS_STYLE_BG_CLIP_PADDING == NS_STYLE_BG_ORIGIN_PADDING &&
               NS_STYLE_BG_CLIP_CONTENT == NS_STYLE_BG_ORIGIN_CONTENT,
               "bg-clip and bg-origin style constants must agree");
 const KTableValue nsCSSProps::kBackgroundOriginKTable[] = {
-  eCSSKeyword_border_box, NS_STYLE_BG_ORIGIN_BORDER,
-  eCSSKeyword_padding_box, NS_STYLE_BG_ORIGIN_PADDING,
-  eCSSKeyword_content_box, NS_STYLE_BG_ORIGIN_CONTENT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_border_box, NS_STYLE_BG_ORIGIN_BORDER },
+  { eCSSKeyword_padding_box, NS_STYLE_BG_ORIGIN_PADDING },
+  { eCSSKeyword_content_box, NS_STYLE_BG_ORIGIN_CONTENT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 // Note: Don't change this table unless you update
 // parseBackgroundPosition!
 
 const KTableValue nsCSSProps::kBackgroundPositionKTable[] = {
-  eCSSKeyword_center, NS_STYLE_BG_POSITION_CENTER,
-  eCSSKeyword_top, NS_STYLE_BG_POSITION_TOP,
-  eCSSKeyword_bottom, NS_STYLE_BG_POSITION_BOTTOM,
-  eCSSKeyword_left, NS_STYLE_BG_POSITION_LEFT,
-  eCSSKeyword_right, NS_STYLE_BG_POSITION_RIGHT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_center, NS_STYLE_BG_POSITION_CENTER },
+  { eCSSKeyword_top, NS_STYLE_BG_POSITION_TOP },
+  { eCSSKeyword_bottom, NS_STYLE_BG_POSITION_BOTTOM },
+  { eCSSKeyword_left, NS_STYLE_BG_POSITION_LEFT },
+  { eCSSKeyword_right, NS_STYLE_BG_POSITION_RIGHT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBackgroundRepeatKTable[] = {
-  eCSSKeyword_no_repeat,  NS_STYLE_BG_REPEAT_NO_REPEAT,
-  eCSSKeyword_repeat,     NS_STYLE_BG_REPEAT_REPEAT,
-  eCSSKeyword_repeat_x,   NS_STYLE_BG_REPEAT_REPEAT_X,
-  eCSSKeyword_repeat_y,   NS_STYLE_BG_REPEAT_REPEAT_Y,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_no_repeat,  NS_STYLE_BG_REPEAT_NO_REPEAT },
+  { eCSSKeyword_repeat,     NS_STYLE_BG_REPEAT_REPEAT },
+  { eCSSKeyword_repeat_x,   NS_STYLE_BG_REPEAT_REPEAT_X },
+  { eCSSKeyword_repeat_y,   NS_STYLE_BG_REPEAT_REPEAT_Y },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBackgroundRepeatPartKTable[] = {
-  eCSSKeyword_no_repeat,  NS_STYLE_BG_REPEAT_NO_REPEAT,
-  eCSSKeyword_repeat,     NS_STYLE_BG_REPEAT_REPEAT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_no_repeat,  NS_STYLE_BG_REPEAT_NO_REPEAT },
+  { eCSSKeyword_repeat,     NS_STYLE_BG_REPEAT_REPEAT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBackgroundSizeKTable[] = {
-  eCSSKeyword_contain, NS_STYLE_BG_SIZE_CONTAIN,
-  eCSSKeyword_cover,   NS_STYLE_BG_SIZE_COVER,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_contain, NS_STYLE_BG_SIZE_CONTAIN },
+  { eCSSKeyword_cover,   NS_STYLE_BG_SIZE_COVER },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBlendModeKTable[] = {
-    eCSSKeyword_normal,      NS_STYLE_BLEND_NORMAL,
-    eCSSKeyword_multiply,    NS_STYLE_BLEND_MULTIPLY,
-    eCSSKeyword_screen,      NS_STYLE_BLEND_SCREEN,
-    eCSSKeyword_overlay,     NS_STYLE_BLEND_OVERLAY,
-    eCSSKeyword_darken,      NS_STYLE_BLEND_DARKEN,
-    eCSSKeyword_lighten,     NS_STYLE_BLEND_LIGHTEN,
-    eCSSKeyword_color_dodge, NS_STYLE_BLEND_COLOR_DODGE,
-    eCSSKeyword_color_burn,  NS_STYLE_BLEND_COLOR_BURN,
-    eCSSKeyword_hard_light,  NS_STYLE_BLEND_HARD_LIGHT,
-    eCSSKeyword_soft_light,  NS_STYLE_BLEND_SOFT_LIGHT,
-    eCSSKeyword_difference,  NS_STYLE_BLEND_DIFFERENCE,
-    eCSSKeyword_exclusion,   NS_STYLE_BLEND_EXCLUSION,
-    eCSSKeyword_hue,         NS_STYLE_BLEND_HUE,
-    eCSSKeyword_saturation,  NS_STYLE_BLEND_SATURATION,
-    eCSSKeyword_color,       NS_STYLE_BLEND_COLOR,
-    eCSSKeyword_luminosity,  NS_STYLE_BLEND_LUMINOSITY,
-    eCSSKeyword_UNKNOWN,-1
+    { eCSSKeyword_normal,      NS_STYLE_BLEND_NORMAL },
+    { eCSSKeyword_multiply,    NS_STYLE_BLEND_MULTIPLY },
+    { eCSSKeyword_screen,      NS_STYLE_BLEND_SCREEN },
+    { eCSSKeyword_overlay,     NS_STYLE_BLEND_OVERLAY },
+    { eCSSKeyword_darken,      NS_STYLE_BLEND_DARKEN },
+    { eCSSKeyword_lighten,     NS_STYLE_BLEND_LIGHTEN },
+    { eCSSKeyword_color_dodge, NS_STYLE_BLEND_COLOR_DODGE },
+    { eCSSKeyword_color_burn,  NS_STYLE_BLEND_COLOR_BURN },
+    { eCSSKeyword_hard_light,  NS_STYLE_BLEND_HARD_LIGHT },
+    { eCSSKeyword_soft_light,  NS_STYLE_BLEND_SOFT_LIGHT },
+    { eCSSKeyword_difference,  NS_STYLE_BLEND_DIFFERENCE },
+    { eCSSKeyword_exclusion,   NS_STYLE_BLEND_EXCLUSION },
+    { eCSSKeyword_hue,         NS_STYLE_BLEND_HUE },
+    { eCSSKeyword_saturation,  NS_STYLE_BLEND_SATURATION },
+    { eCSSKeyword_color,       NS_STYLE_BLEND_COLOR },
+    { eCSSKeyword_luminosity,  NS_STYLE_BLEND_LUMINOSITY },
+    { eCSSKeyword_UNKNOWN,     -1 }
 };
 
 const KTableValue nsCSSProps::kBorderCollapseKTable[] = {
-  eCSSKeyword_collapse,  NS_STYLE_BORDER_COLLAPSE,
-  eCSSKeyword_separate,  NS_STYLE_BORDER_SEPARATE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_collapse,  NS_STYLE_BORDER_COLLAPSE },
+  { eCSSKeyword_separate,  NS_STYLE_BORDER_SEPARATE },
+  { eCSSKeyword_UNKNOWN,   -1 }
 };
 
 const KTableValue nsCSSProps::kBorderColorKTable[] = {
-  eCSSKeyword__moz_use_text_color, NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_use_text_color, NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBorderImageRepeatKTable[] = {
-  eCSSKeyword_stretch, NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH,
-  eCSSKeyword_repeat, NS_STYLE_BORDER_IMAGE_REPEAT_REPEAT,
-  eCSSKeyword_round, NS_STYLE_BORDER_IMAGE_REPEAT_ROUND,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_stretch, NS_STYLE_BORDER_IMAGE_REPEAT_STRETCH },
+  { eCSSKeyword_repeat, NS_STYLE_BORDER_IMAGE_REPEAT_REPEAT },
+  { eCSSKeyword_round, NS_STYLE_BORDER_IMAGE_REPEAT_ROUND },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBorderImageSliceKTable[] = {
-  eCSSKeyword_fill, NS_STYLE_BORDER_IMAGE_SLICE_FILL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_fill, NS_STYLE_BORDER_IMAGE_SLICE_FILL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBorderStyleKTable[] = {
-  eCSSKeyword_none,   NS_STYLE_BORDER_STYLE_NONE,
-  eCSSKeyword_hidden, NS_STYLE_BORDER_STYLE_HIDDEN,
-  eCSSKeyword_dotted, NS_STYLE_BORDER_STYLE_DOTTED,
-  eCSSKeyword_dashed, NS_STYLE_BORDER_STYLE_DASHED,
-  eCSSKeyword_solid,  NS_STYLE_BORDER_STYLE_SOLID,
-  eCSSKeyword_double, NS_STYLE_BORDER_STYLE_DOUBLE,
-  eCSSKeyword_groove, NS_STYLE_BORDER_STYLE_GROOVE,
-  eCSSKeyword_ridge,  NS_STYLE_BORDER_STYLE_RIDGE,
-  eCSSKeyword_inset,  NS_STYLE_BORDER_STYLE_INSET,
-  eCSSKeyword_outset, NS_STYLE_BORDER_STYLE_OUTSET,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,   NS_STYLE_BORDER_STYLE_NONE },
+  { eCSSKeyword_hidden, NS_STYLE_BORDER_STYLE_HIDDEN },
+  { eCSSKeyword_dotted, NS_STYLE_BORDER_STYLE_DOTTED },
+  { eCSSKeyword_dashed, NS_STYLE_BORDER_STYLE_DASHED },
+  { eCSSKeyword_solid,  NS_STYLE_BORDER_STYLE_SOLID },
+  { eCSSKeyword_double, NS_STYLE_BORDER_STYLE_DOUBLE },
+  { eCSSKeyword_groove, NS_STYLE_BORDER_STYLE_GROOVE },
+  { eCSSKeyword_ridge,  NS_STYLE_BORDER_STYLE_RIDGE },
+  { eCSSKeyword_inset,  NS_STYLE_BORDER_STYLE_INSET },
+  { eCSSKeyword_outset, NS_STYLE_BORDER_STYLE_OUTSET },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBorderWidthKTable[] = {
-  eCSSKeyword_thin, NS_STYLE_BORDER_WIDTH_THIN,
-  eCSSKeyword_medium, NS_STYLE_BORDER_WIDTH_MEDIUM,
-  eCSSKeyword_thick, NS_STYLE_BORDER_WIDTH_THICK,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_thin, NS_STYLE_BORDER_WIDTH_THIN },
+  { eCSSKeyword_medium, NS_STYLE_BORDER_WIDTH_MEDIUM },
+  { eCSSKeyword_thick, NS_STYLE_BORDER_WIDTH_THICK },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBoxDecorationBreakKTable[] = {
-  eCSSKeyword_slice, NS_STYLE_BOX_DECORATION_BREAK_SLICE,
-  eCSSKeyword_clone, NS_STYLE_BOX_DECORATION_BREAK_CLONE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_slice, NS_STYLE_BOX_DECORATION_BREAK_SLICE },
+  { eCSSKeyword_clone, NS_STYLE_BOX_DECORATION_BREAK_CLONE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBoxShadowTypeKTable[] = {
-  eCSSKeyword_inset, NS_STYLE_BOX_SHADOW_INSET,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_inset, NS_STYLE_BOX_SHADOW_INSET },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBoxSizingKTable[] = {
-  eCSSKeyword_content_box,  NS_STYLE_BOX_SIZING_CONTENT,
-  eCSSKeyword_border_box,   NS_STYLE_BOX_SIZING_BORDER,
-  eCSSKeyword_padding_box,  NS_STYLE_BOX_SIZING_PADDING,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_content_box,  NS_STYLE_BOX_SIZING_CONTENT },
+  { eCSSKeyword_border_box,   NS_STYLE_BOX_SIZING_BORDER },
+  { eCSSKeyword_padding_box,  NS_STYLE_BOX_SIZING_PADDING },
+  { eCSSKeyword_UNKNOWN,      -1 }
 };
 
 const KTableValue nsCSSProps::kCaptionSideKTable[] = {
-  eCSSKeyword_top,                  NS_STYLE_CAPTION_SIDE_TOP,
-  eCSSKeyword_right,                NS_STYLE_CAPTION_SIDE_RIGHT,
-  eCSSKeyword_bottom,               NS_STYLE_CAPTION_SIDE_BOTTOM,
-  eCSSKeyword_left,                 NS_STYLE_CAPTION_SIDE_LEFT,
-  eCSSKeyword_top_outside,          NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE,
-  eCSSKeyword_bottom_outside,       NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE,
-  eCSSKeyword_UNKNOWN,              -1
+  { eCSSKeyword_top,                  NS_STYLE_CAPTION_SIDE_TOP },
+  { eCSSKeyword_right,                NS_STYLE_CAPTION_SIDE_RIGHT },
+  { eCSSKeyword_bottom,               NS_STYLE_CAPTION_SIDE_BOTTOM },
+  { eCSSKeyword_left,                 NS_STYLE_CAPTION_SIDE_LEFT },
+  { eCSSKeyword_top_outside,          NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE },
+  { eCSSKeyword_bottom_outside,       NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE },
+  { eCSSKeyword_UNKNOWN,              -1 }
 };
 
 KTableValue nsCSSProps::kClearKTable[] = {
-  eCSSKeyword_none,         NS_STYLE_CLEAR_NONE,
-  eCSSKeyword_left,         NS_STYLE_CLEAR_LEFT,
-  eCSSKeyword_right,        NS_STYLE_CLEAR_RIGHT,
-  eCSSKeyword_inline_start, NS_STYLE_CLEAR_INLINE_START,
-  eCSSKeyword_inline_end,   NS_STYLE_CLEAR_INLINE_END,
-  eCSSKeyword_both,         NS_STYLE_CLEAR_BOTH,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,         NS_STYLE_CLEAR_NONE },
+  { eCSSKeyword_left,         NS_STYLE_CLEAR_LEFT },
+  { eCSSKeyword_right,        NS_STYLE_CLEAR_RIGHT },
+  { eCSSKeyword_inline_start, NS_STYLE_CLEAR_INLINE_START },
+  { eCSSKeyword_inline_end,   NS_STYLE_CLEAR_INLINE_END },
+  { eCSSKeyword_both,         NS_STYLE_CLEAR_BOTH },
+  { eCSSKeyword_UNKNOWN,      -1 }
 };
 
 // See also kContextPatternKTable for SVG paint-specific values
 const KTableValue nsCSSProps::kColorKTable[] = {
-  eCSSKeyword_activeborder, LookAndFeel::eColorID_activeborder,
-  eCSSKeyword_activecaption, LookAndFeel::eColorID_activecaption,
-  eCSSKeyword_appworkspace, LookAndFeel::eColorID_appworkspace,
-  eCSSKeyword_background, LookAndFeel::eColorID_background,
-  eCSSKeyword_buttonface, LookAndFeel::eColorID_buttonface,
-  eCSSKeyword_buttonhighlight, LookAndFeel::eColorID_buttonhighlight,
-  eCSSKeyword_buttonshadow, LookAndFeel::eColorID_buttonshadow,
-  eCSSKeyword_buttontext, LookAndFeel::eColorID_buttontext,
-  eCSSKeyword_captiontext, LookAndFeel::eColorID_captiontext,
-  eCSSKeyword_graytext, LookAndFeel::eColorID_graytext,
-  eCSSKeyword_highlight, LookAndFeel::eColorID_highlight,
-  eCSSKeyword_highlighttext, LookAndFeel::eColorID_highlighttext,
-  eCSSKeyword_inactiveborder, LookAndFeel::eColorID_inactiveborder,
-  eCSSKeyword_inactivecaption, LookAndFeel::eColorID_inactivecaption,
-  eCSSKeyword_inactivecaptiontext, LookAndFeel::eColorID_inactivecaptiontext,
-  eCSSKeyword_infobackground, LookAndFeel::eColorID_infobackground,
-  eCSSKeyword_infotext, LookAndFeel::eColorID_infotext,
-  eCSSKeyword_menu, LookAndFeel::eColorID_menu,
-  eCSSKeyword_menutext, LookAndFeel::eColorID_menutext,
-  eCSSKeyword_scrollbar, LookAndFeel::eColorID_scrollbar,
-  eCSSKeyword_threeddarkshadow, LookAndFeel::eColorID_threeddarkshadow,
-  eCSSKeyword_threedface, LookAndFeel::eColorID_threedface,
-  eCSSKeyword_threedhighlight, LookAndFeel::eColorID_threedhighlight,
-  eCSSKeyword_threedlightshadow, LookAndFeel::eColorID_threedlightshadow,
-  eCSSKeyword_threedshadow, LookAndFeel::eColorID_threedshadow,
-  eCSSKeyword_window, LookAndFeel::eColorID_window,
-  eCSSKeyword_windowframe, LookAndFeel::eColorID_windowframe,
-  eCSSKeyword_windowtext, LookAndFeel::eColorID_windowtext,
-  eCSSKeyword__moz_activehyperlinktext, NS_COLOR_MOZ_ACTIVEHYPERLINKTEXT,
-  eCSSKeyword__moz_buttondefault, LookAndFeel::eColorID__moz_buttondefault,
-  eCSSKeyword__moz_buttonhoverface, LookAndFeel::eColorID__moz_buttonhoverface,
-  eCSSKeyword__moz_buttonhovertext, LookAndFeel::eColorID__moz_buttonhovertext,
-  eCSSKeyword__moz_cellhighlight, LookAndFeel::eColorID__moz_cellhighlight,
-  eCSSKeyword__moz_cellhighlighttext, LookAndFeel::eColorID__moz_cellhighlighttext,
-  eCSSKeyword__moz_eventreerow, LookAndFeel::eColorID__moz_eventreerow,
-  eCSSKeyword__moz_field, LookAndFeel::eColorID__moz_field,
-  eCSSKeyword__moz_fieldtext, LookAndFeel::eColorID__moz_fieldtext,
-  eCSSKeyword__moz_default_background_color, NS_COLOR_MOZ_DEFAULT_BACKGROUND_COLOR,
-  eCSSKeyword__moz_default_color, NS_COLOR_MOZ_DEFAULT_COLOR,
-  eCSSKeyword__moz_dialog, LookAndFeel::eColorID__moz_dialog,
-  eCSSKeyword__moz_dialogtext, LookAndFeel::eColorID__moz_dialogtext,
-  eCSSKeyword__moz_dragtargetzone, LookAndFeel::eColorID__moz_dragtargetzone,
-  eCSSKeyword__moz_gtk_info_bar_text, LookAndFeel::eColorID__moz_gtk_info_bar_text,
-  eCSSKeyword__moz_hyperlinktext, NS_COLOR_MOZ_HYPERLINKTEXT,
-  eCSSKeyword__moz_html_cellhighlight, LookAndFeel::eColorID__moz_html_cellhighlight,
-  eCSSKeyword__moz_html_cellhighlighttext, LookAndFeel::eColorID__moz_html_cellhighlighttext,
-  eCSSKeyword__moz_mac_buttonactivetext, LookAndFeel::eColorID__moz_mac_buttonactivetext,
-  eCSSKeyword__moz_mac_chrome_active, LookAndFeel::eColorID__moz_mac_chrome_active,
-  eCSSKeyword__moz_mac_chrome_inactive, LookAndFeel::eColorID__moz_mac_chrome_inactive,
-  eCSSKeyword__moz_mac_defaultbuttontext, LookAndFeel::eColorID__moz_mac_defaultbuttontext,
-  eCSSKeyword__moz_mac_focusring, LookAndFeel::eColorID__moz_mac_focusring,
-  eCSSKeyword__moz_mac_menuselect, LookAndFeel::eColorID__moz_mac_menuselect,
-  eCSSKeyword__moz_mac_menushadow, LookAndFeel::eColorID__moz_mac_menushadow,
-  eCSSKeyword__moz_mac_menutextdisable, LookAndFeel::eColorID__moz_mac_menutextdisable,
-  eCSSKeyword__moz_mac_menutextselect, LookAndFeel::eColorID__moz_mac_menutextselect,
-  eCSSKeyword__moz_mac_disabledtoolbartext, LookAndFeel::eColorID__moz_mac_disabledtoolbartext,
-  eCSSKeyword__moz_mac_secondaryhighlight, LookAndFeel::eColorID__moz_mac_secondaryhighlight,
-  eCSSKeyword__moz_menuhover, LookAndFeel::eColorID__moz_menuhover,
-  eCSSKeyword__moz_menuhovertext, LookAndFeel::eColorID__moz_menuhovertext,
-  eCSSKeyword__moz_menubartext, LookAndFeel::eColorID__moz_menubartext,
-  eCSSKeyword__moz_menubarhovertext, LookAndFeel::eColorID__moz_menubarhovertext,
-  eCSSKeyword__moz_oddtreerow, LookAndFeel::eColorID__moz_oddtreerow,
-  eCSSKeyword__moz_visitedhyperlinktext, NS_COLOR_MOZ_VISITEDHYPERLINKTEXT,
-  eCSSKeyword_currentcolor, NS_COLOR_CURRENTCOLOR,
-  eCSSKeyword__moz_win_mediatext, LookAndFeel::eColorID__moz_win_mediatext,
-  eCSSKeyword__moz_win_communicationstext, LookAndFeel::eColorID__moz_win_communicationstext,
-  eCSSKeyword__moz_nativehyperlinktext, LookAndFeel::eColorID__moz_nativehyperlinktext,
-  eCSSKeyword__moz_comboboxtext, LookAndFeel::eColorID__moz_comboboxtext,
-  eCSSKeyword__moz_combobox, LookAndFeel::eColorID__moz_combobox,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_activeborder, LookAndFeel::eColorID_activeborder },
+  { eCSSKeyword_activecaption, LookAndFeel::eColorID_activecaption },
+  { eCSSKeyword_appworkspace, LookAndFeel::eColorID_appworkspace },
+  { eCSSKeyword_background, LookAndFeel::eColorID_background },
+  { eCSSKeyword_buttonface, LookAndFeel::eColorID_buttonface },
+  { eCSSKeyword_buttonhighlight, LookAndFeel::eColorID_buttonhighlight },
+  { eCSSKeyword_buttonshadow, LookAndFeel::eColorID_buttonshadow },
+  { eCSSKeyword_buttontext, LookAndFeel::eColorID_buttontext },
+  { eCSSKeyword_captiontext, LookAndFeel::eColorID_captiontext },
+  { eCSSKeyword_graytext, LookAndFeel::eColorID_graytext },
+  { eCSSKeyword_highlight, LookAndFeel::eColorID_highlight },
+  { eCSSKeyword_highlighttext, LookAndFeel::eColorID_highlighttext },
+  { eCSSKeyword_inactiveborder, LookAndFeel::eColorID_inactiveborder },
+  { eCSSKeyword_inactivecaption, LookAndFeel::eColorID_inactivecaption },
+  { eCSSKeyword_inactivecaptiontext, LookAndFeel::eColorID_inactivecaptiontext },
+  { eCSSKeyword_infobackground, LookAndFeel::eColorID_infobackground },
+  { eCSSKeyword_infotext, LookAndFeel::eColorID_infotext },
+  { eCSSKeyword_menu, LookAndFeel::eColorID_menu },
+  { eCSSKeyword_menutext, LookAndFeel::eColorID_menutext },
+  { eCSSKeyword_scrollbar, LookAndFeel::eColorID_scrollbar },
+  { eCSSKeyword_threeddarkshadow, LookAndFeel::eColorID_threeddarkshadow },
+  { eCSSKeyword_threedface, LookAndFeel::eColorID_threedface },
+  { eCSSKeyword_threedhighlight, LookAndFeel::eColorID_threedhighlight },
+  { eCSSKeyword_threedlightshadow, LookAndFeel::eColorID_threedlightshadow },
+  { eCSSKeyword_threedshadow, LookAndFeel::eColorID_threedshadow },
+  { eCSSKeyword_window, LookAndFeel::eColorID_window },
+  { eCSSKeyword_windowframe, LookAndFeel::eColorID_windowframe },
+  { eCSSKeyword_windowtext, LookAndFeel::eColorID_windowtext },
+  { eCSSKeyword__moz_activehyperlinktext, NS_COLOR_MOZ_ACTIVEHYPERLINKTEXT },
+  { eCSSKeyword__moz_buttondefault, LookAndFeel::eColorID__moz_buttondefault },
+  { eCSSKeyword__moz_buttonhoverface, LookAndFeel::eColorID__moz_buttonhoverface },
+  { eCSSKeyword__moz_buttonhovertext, LookAndFeel::eColorID__moz_buttonhovertext },
+  { eCSSKeyword__moz_cellhighlight, LookAndFeel::eColorID__moz_cellhighlight },
+  { eCSSKeyword__moz_cellhighlighttext, LookAndFeel::eColorID__moz_cellhighlighttext },
+  { eCSSKeyword__moz_eventreerow, LookAndFeel::eColorID__moz_eventreerow },
+  { eCSSKeyword__moz_field, LookAndFeel::eColorID__moz_field },
+  { eCSSKeyword__moz_fieldtext, LookAndFeel::eColorID__moz_fieldtext },
+  { eCSSKeyword__moz_default_background_color, NS_COLOR_MOZ_DEFAULT_BACKGROUND_COLOR },
+  { eCSSKeyword__moz_default_color, NS_COLOR_MOZ_DEFAULT_COLOR },
+  { eCSSKeyword__moz_dialog, LookAndFeel::eColorID__moz_dialog },
+  { eCSSKeyword__moz_dialogtext, LookAndFeel::eColorID__moz_dialogtext },
+  { eCSSKeyword__moz_dragtargetzone, LookAndFeel::eColorID__moz_dragtargetzone },
+  { eCSSKeyword__moz_gtk_info_bar_text, LookAndFeel::eColorID__moz_gtk_info_bar_text },
+  { eCSSKeyword__moz_hyperlinktext, NS_COLOR_MOZ_HYPERLINKTEXT },
+  { eCSSKeyword__moz_html_cellhighlight, LookAndFeel::eColorID__moz_html_cellhighlight },
+  { eCSSKeyword__moz_html_cellhighlighttext, LookAndFeel::eColorID__moz_html_cellhighlighttext },
+  { eCSSKeyword__moz_mac_buttonactivetext, LookAndFeel::eColorID__moz_mac_buttonactivetext },
+  { eCSSKeyword__moz_mac_chrome_active, LookAndFeel::eColorID__moz_mac_chrome_active },
+  { eCSSKeyword__moz_mac_chrome_inactive, LookAndFeel::eColorID__moz_mac_chrome_inactive },
+  { eCSSKeyword__moz_mac_defaultbuttontext, LookAndFeel::eColorID__moz_mac_defaultbuttontext },
+  { eCSSKeyword__moz_mac_focusring, LookAndFeel::eColorID__moz_mac_focusring },
+  { eCSSKeyword__moz_mac_menuselect, LookAndFeel::eColorID__moz_mac_menuselect },
+  { eCSSKeyword__moz_mac_menushadow, LookAndFeel::eColorID__moz_mac_menushadow },
+  { eCSSKeyword__moz_mac_menutextdisable, LookAndFeel::eColorID__moz_mac_menutextdisable },
+  { eCSSKeyword__moz_mac_menutextselect, LookAndFeel::eColorID__moz_mac_menutextselect },
+  { eCSSKeyword__moz_mac_disabledtoolbartext, LookAndFeel::eColorID__moz_mac_disabledtoolbartext },
+  { eCSSKeyword__moz_mac_secondaryhighlight, LookAndFeel::eColorID__moz_mac_secondaryhighlight },
+  { eCSSKeyword__moz_menuhover, LookAndFeel::eColorID__moz_menuhover },
+  { eCSSKeyword__moz_menuhovertext, LookAndFeel::eColorID__moz_menuhovertext },
+  { eCSSKeyword__moz_menubartext, LookAndFeel::eColorID__moz_menubartext },
+  { eCSSKeyword__moz_menubarhovertext, LookAndFeel::eColorID__moz_menubarhovertext },
+  { eCSSKeyword__moz_oddtreerow, LookAndFeel::eColorID__moz_oddtreerow },
+  { eCSSKeyword__moz_visitedhyperlinktext, NS_COLOR_MOZ_VISITEDHYPERLINKTEXT },
+  { eCSSKeyword_currentcolor, NS_COLOR_CURRENTCOLOR },
+  { eCSSKeyword__moz_win_mediatext, LookAndFeel::eColorID__moz_win_mediatext },
+  { eCSSKeyword__moz_win_communicationstext, LookAndFeel::eColorID__moz_win_communicationstext },
+  { eCSSKeyword__moz_nativehyperlinktext, LookAndFeel::eColorID__moz_nativehyperlinktext },
+  { eCSSKeyword__moz_comboboxtext, LookAndFeel::eColorID__moz_comboboxtext },
+  { eCSSKeyword__moz_combobox, LookAndFeel::eColorID__moz_combobox },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kContentKTable[] = {
-  eCSSKeyword_open_quote, NS_STYLE_CONTENT_OPEN_QUOTE,
-  eCSSKeyword_close_quote, NS_STYLE_CONTENT_CLOSE_QUOTE,
-  eCSSKeyword_no_open_quote, NS_STYLE_CONTENT_NO_OPEN_QUOTE,
-  eCSSKeyword_no_close_quote, NS_STYLE_CONTENT_NO_CLOSE_QUOTE,
-  eCSSKeyword__moz_alt_content, NS_STYLE_CONTENT_ALT_CONTENT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_open_quote, NS_STYLE_CONTENT_OPEN_QUOTE },
+  { eCSSKeyword_close_quote, NS_STYLE_CONTENT_CLOSE_QUOTE },
+  { eCSSKeyword_no_open_quote, NS_STYLE_CONTENT_NO_OPEN_QUOTE },
+  { eCSSKeyword_no_close_quote, NS_STYLE_CONTENT_NO_CLOSE_QUOTE },
+  { eCSSKeyword__moz_alt_content, NS_STYLE_CONTENT_ALT_CONTENT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kControlCharacterVisibilityKTable[] = {
-  eCSSKeyword_hidden, NS_STYLE_CONTROL_CHARACTER_VISIBILITY_HIDDEN,
-  eCSSKeyword_visible, NS_STYLE_CONTROL_CHARACTER_VISIBILITY_VISIBLE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_hidden, NS_STYLE_CONTROL_CHARACTER_VISIBILITY_HIDDEN },
+  { eCSSKeyword_visible, NS_STYLE_CONTROL_CHARACTER_VISIBILITY_VISIBLE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kCounterRangeKTable[] = {
-  eCSSKeyword_infinite, NS_STYLE_COUNTER_RANGE_INFINITE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_infinite, NS_STYLE_COUNTER_RANGE_INFINITE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kCounterSpeakAsKTable[] = {
-  eCSSKeyword_bullets, NS_STYLE_COUNTER_SPEAKAS_BULLETS,
-  eCSSKeyword_numbers, NS_STYLE_COUNTER_SPEAKAS_NUMBERS,
-  eCSSKeyword_words, NS_STYLE_COUNTER_SPEAKAS_WORDS,
-  eCSSKeyword_spell_out, NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_bullets, NS_STYLE_COUNTER_SPEAKAS_BULLETS },
+  { eCSSKeyword_numbers, NS_STYLE_COUNTER_SPEAKAS_NUMBERS },
+  { eCSSKeyword_words, NS_STYLE_COUNTER_SPEAKAS_WORDS },
+  { eCSSKeyword_spell_out, NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kCounterSymbolsSystemKTable[] = {
-  eCSSKeyword_cyclic, NS_STYLE_COUNTER_SYSTEM_CYCLIC,
-  eCSSKeyword_numeric, NS_STYLE_COUNTER_SYSTEM_NUMERIC,
-  eCSSKeyword_alphabetic, NS_STYLE_COUNTER_SYSTEM_ALPHABETIC,
-  eCSSKeyword_symbolic, NS_STYLE_COUNTER_SYSTEM_SYMBOLIC,
-  eCSSKeyword_fixed, NS_STYLE_COUNTER_SYSTEM_FIXED,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_cyclic, NS_STYLE_COUNTER_SYSTEM_CYCLIC },
+  { eCSSKeyword_numeric, NS_STYLE_COUNTER_SYSTEM_NUMERIC },
+  { eCSSKeyword_alphabetic, NS_STYLE_COUNTER_SYSTEM_ALPHABETIC },
+  { eCSSKeyword_symbolic, NS_STYLE_COUNTER_SYSTEM_SYMBOLIC },
+  { eCSSKeyword_fixed, NS_STYLE_COUNTER_SYSTEM_FIXED },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kCounterSystemKTable[] = {
-  eCSSKeyword_cyclic, NS_STYLE_COUNTER_SYSTEM_CYCLIC,
-  eCSSKeyword_numeric, NS_STYLE_COUNTER_SYSTEM_NUMERIC,
-  eCSSKeyword_alphabetic, NS_STYLE_COUNTER_SYSTEM_ALPHABETIC,
-  eCSSKeyword_symbolic, NS_STYLE_COUNTER_SYSTEM_SYMBOLIC,
-  eCSSKeyword_additive, NS_STYLE_COUNTER_SYSTEM_ADDITIVE,
-  eCSSKeyword_fixed, NS_STYLE_COUNTER_SYSTEM_FIXED,
-  eCSSKeyword_extends, NS_STYLE_COUNTER_SYSTEM_EXTENDS,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_cyclic, NS_STYLE_COUNTER_SYSTEM_CYCLIC },
+  { eCSSKeyword_numeric, NS_STYLE_COUNTER_SYSTEM_NUMERIC },
+  { eCSSKeyword_alphabetic, NS_STYLE_COUNTER_SYSTEM_ALPHABETIC },
+  { eCSSKeyword_symbolic, NS_STYLE_COUNTER_SYSTEM_SYMBOLIC },
+  { eCSSKeyword_additive, NS_STYLE_COUNTER_SYSTEM_ADDITIVE },
+  { eCSSKeyword_fixed, NS_STYLE_COUNTER_SYSTEM_FIXED },
+  { eCSSKeyword_extends, NS_STYLE_COUNTER_SYSTEM_EXTENDS },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kCursorKTable[] = {
   // CSS 2.0
-  eCSSKeyword_auto, NS_STYLE_CURSOR_AUTO,
-  eCSSKeyword_crosshair, NS_STYLE_CURSOR_CROSSHAIR,
-  eCSSKeyword_default, NS_STYLE_CURSOR_DEFAULT,
-  eCSSKeyword_pointer, NS_STYLE_CURSOR_POINTER,
-  eCSSKeyword_move, NS_STYLE_CURSOR_MOVE,
-  eCSSKeyword_e_resize, NS_STYLE_CURSOR_E_RESIZE,
-  eCSSKeyword_ne_resize, NS_STYLE_CURSOR_NE_RESIZE,
-  eCSSKeyword_nw_resize, NS_STYLE_CURSOR_NW_RESIZE,
-  eCSSKeyword_n_resize, NS_STYLE_CURSOR_N_RESIZE,
-  eCSSKeyword_se_resize, NS_STYLE_CURSOR_SE_RESIZE,
-  eCSSKeyword_sw_resize, NS_STYLE_CURSOR_SW_RESIZE,
-  eCSSKeyword_s_resize, NS_STYLE_CURSOR_S_RESIZE,
-  eCSSKeyword_w_resize, NS_STYLE_CURSOR_W_RESIZE,
-  eCSSKeyword_text, NS_STYLE_CURSOR_TEXT,
-  eCSSKeyword_wait, NS_STYLE_CURSOR_WAIT,
-  eCSSKeyword_help, NS_STYLE_CURSOR_HELP,
+  { eCSSKeyword_auto, NS_STYLE_CURSOR_AUTO },
+  { eCSSKeyword_crosshair, NS_STYLE_CURSOR_CROSSHAIR },
+  { eCSSKeyword_default, NS_STYLE_CURSOR_DEFAULT },
+  { eCSSKeyword_pointer, NS_STYLE_CURSOR_POINTER },
+  { eCSSKeyword_move, NS_STYLE_CURSOR_MOVE },
+  { eCSSKeyword_e_resize, NS_STYLE_CURSOR_E_RESIZE },
+  { eCSSKeyword_ne_resize, NS_STYLE_CURSOR_NE_RESIZE },
+  { eCSSKeyword_nw_resize, NS_STYLE_CURSOR_NW_RESIZE },
+  { eCSSKeyword_n_resize, NS_STYLE_CURSOR_N_RESIZE },
+  { eCSSKeyword_se_resize, NS_STYLE_CURSOR_SE_RESIZE },
+  { eCSSKeyword_sw_resize, NS_STYLE_CURSOR_SW_RESIZE },
+  { eCSSKeyword_s_resize, NS_STYLE_CURSOR_S_RESIZE },
+  { eCSSKeyword_w_resize, NS_STYLE_CURSOR_W_RESIZE },
+  { eCSSKeyword_text, NS_STYLE_CURSOR_TEXT },
+  { eCSSKeyword_wait, NS_STYLE_CURSOR_WAIT },
+  { eCSSKeyword_help, NS_STYLE_CURSOR_HELP },
   // CSS 2.1
-  eCSSKeyword_progress, NS_STYLE_CURSOR_SPINNING,
+  { eCSSKeyword_progress, NS_STYLE_CURSOR_SPINNING },
   // CSS3 basic user interface module
-  eCSSKeyword_copy, NS_STYLE_CURSOR_COPY,
-  eCSSKeyword_alias, NS_STYLE_CURSOR_ALIAS,
-  eCSSKeyword_context_menu, NS_STYLE_CURSOR_CONTEXT_MENU,
-  eCSSKeyword_cell, NS_STYLE_CURSOR_CELL,
-  eCSSKeyword_not_allowed, NS_STYLE_CURSOR_NOT_ALLOWED,
-  eCSSKeyword_col_resize, NS_STYLE_CURSOR_COL_RESIZE,
-  eCSSKeyword_row_resize, NS_STYLE_CURSOR_ROW_RESIZE,
-  eCSSKeyword_no_drop, NS_STYLE_CURSOR_NO_DROP,
-  eCSSKeyword_vertical_text, NS_STYLE_CURSOR_VERTICAL_TEXT,
-  eCSSKeyword_all_scroll, NS_STYLE_CURSOR_ALL_SCROLL,
-  eCSSKeyword_nesw_resize, NS_STYLE_CURSOR_NESW_RESIZE,
-  eCSSKeyword_nwse_resize, NS_STYLE_CURSOR_NWSE_RESIZE,
-  eCSSKeyword_ns_resize, NS_STYLE_CURSOR_NS_RESIZE,
-  eCSSKeyword_ew_resize, NS_STYLE_CURSOR_EW_RESIZE,
-  eCSSKeyword_none, NS_STYLE_CURSOR_NONE,
-  eCSSKeyword_grab, NS_STYLE_CURSOR_GRAB,
-  eCSSKeyword_grabbing, NS_STYLE_CURSOR_GRABBING,
-  eCSSKeyword_zoom_in, NS_STYLE_CURSOR_ZOOM_IN,
-  eCSSKeyword_zoom_out, NS_STYLE_CURSOR_ZOOM_OUT,
+  { eCSSKeyword_copy, NS_STYLE_CURSOR_COPY },
+  { eCSSKeyword_alias, NS_STYLE_CURSOR_ALIAS },
+  { eCSSKeyword_context_menu, NS_STYLE_CURSOR_CONTEXT_MENU },
+  { eCSSKeyword_cell, NS_STYLE_CURSOR_CELL },
+  { eCSSKeyword_not_allowed, NS_STYLE_CURSOR_NOT_ALLOWED },
+  { eCSSKeyword_col_resize, NS_STYLE_CURSOR_COL_RESIZE },
+  { eCSSKeyword_row_resize, NS_STYLE_CURSOR_ROW_RESIZE },
+  { eCSSKeyword_no_drop, NS_STYLE_CURSOR_NO_DROP },
+  { eCSSKeyword_vertical_text, NS_STYLE_CURSOR_VERTICAL_TEXT },
+  { eCSSKeyword_all_scroll, NS_STYLE_CURSOR_ALL_SCROLL },
+  { eCSSKeyword_nesw_resize, NS_STYLE_CURSOR_NESW_RESIZE },
+  { eCSSKeyword_nwse_resize, NS_STYLE_CURSOR_NWSE_RESIZE },
+  { eCSSKeyword_ns_resize, NS_STYLE_CURSOR_NS_RESIZE },
+  { eCSSKeyword_ew_resize, NS_STYLE_CURSOR_EW_RESIZE },
+  { eCSSKeyword_none, NS_STYLE_CURSOR_NONE },
+  { eCSSKeyword_grab, NS_STYLE_CURSOR_GRAB },
+  { eCSSKeyword_grabbing, NS_STYLE_CURSOR_GRABBING },
+  { eCSSKeyword_zoom_in, NS_STYLE_CURSOR_ZOOM_IN },
+  { eCSSKeyword_zoom_out, NS_STYLE_CURSOR_ZOOM_OUT },
   // -moz- prefixed vendor specific
-  eCSSKeyword__moz_grab, NS_STYLE_CURSOR_GRAB,
-  eCSSKeyword__moz_grabbing, NS_STYLE_CURSOR_GRABBING,
-  eCSSKeyword__moz_zoom_in, NS_STYLE_CURSOR_ZOOM_IN,
-  eCSSKeyword__moz_zoom_out, NS_STYLE_CURSOR_ZOOM_OUT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_grab, NS_STYLE_CURSOR_GRAB },
+  { eCSSKeyword__moz_grabbing, NS_STYLE_CURSOR_GRABBING },
+  { eCSSKeyword__moz_zoom_in, NS_STYLE_CURSOR_ZOOM_IN },
+  { eCSSKeyword__moz_zoom_out, NS_STYLE_CURSOR_ZOOM_OUT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kDirectionKTable[] = {
-  eCSSKeyword_ltr,      NS_STYLE_DIRECTION_LTR,
-  eCSSKeyword_rtl,      NS_STYLE_DIRECTION_RTL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_ltr,      NS_STYLE_DIRECTION_LTR },
+  { eCSSKeyword_rtl,      NS_STYLE_DIRECTION_RTL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 KTableValue nsCSSProps::kDisplayKTable[] = {
-  eCSSKeyword_none,                NS_STYLE_DISPLAY_NONE,
-  eCSSKeyword_inline,              NS_STYLE_DISPLAY_INLINE,
-  eCSSKeyword_block,               NS_STYLE_DISPLAY_BLOCK,
-  eCSSKeyword_inline_block,        NS_STYLE_DISPLAY_INLINE_BLOCK,
-  eCSSKeyword_list_item,           NS_STYLE_DISPLAY_LIST_ITEM,
-  eCSSKeyword_table,               NS_STYLE_DISPLAY_TABLE,
-  eCSSKeyword_inline_table,        NS_STYLE_DISPLAY_INLINE_TABLE,
-  eCSSKeyword_table_row_group,     NS_STYLE_DISPLAY_TABLE_ROW_GROUP,
-  eCSSKeyword_table_header_group,  NS_STYLE_DISPLAY_TABLE_HEADER_GROUP,
-  eCSSKeyword_table_footer_group,  NS_STYLE_DISPLAY_TABLE_FOOTER_GROUP,
-  eCSSKeyword_table_row,           NS_STYLE_DISPLAY_TABLE_ROW,
-  eCSSKeyword_table_column_group,  NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP,
-  eCSSKeyword_table_column,        NS_STYLE_DISPLAY_TABLE_COLUMN,
-  eCSSKeyword_table_cell,          NS_STYLE_DISPLAY_TABLE_CELL,
-  eCSSKeyword_table_caption,       NS_STYLE_DISPLAY_TABLE_CAPTION,
+  { eCSSKeyword_none,                NS_STYLE_DISPLAY_NONE },
+  { eCSSKeyword_inline,              NS_STYLE_DISPLAY_INLINE },
+  { eCSSKeyword_block,               NS_STYLE_DISPLAY_BLOCK },
+  { eCSSKeyword_inline_block,        NS_STYLE_DISPLAY_INLINE_BLOCK },
+  { eCSSKeyword_list_item,           NS_STYLE_DISPLAY_LIST_ITEM },
+  { eCSSKeyword_table,               NS_STYLE_DISPLAY_TABLE },
+  { eCSSKeyword_inline_table,        NS_STYLE_DISPLAY_INLINE_TABLE },
+  { eCSSKeyword_table_row_group,     NS_STYLE_DISPLAY_TABLE_ROW_GROUP },
+  { eCSSKeyword_table_header_group,  NS_STYLE_DISPLAY_TABLE_HEADER_GROUP },
+  { eCSSKeyword_table_footer_group,  NS_STYLE_DISPLAY_TABLE_FOOTER_GROUP },
+  { eCSSKeyword_table_row,           NS_STYLE_DISPLAY_TABLE_ROW },
+  { eCSSKeyword_table_column_group,  NS_STYLE_DISPLAY_TABLE_COLUMN_GROUP },
+  { eCSSKeyword_table_column,        NS_STYLE_DISPLAY_TABLE_COLUMN },
+  { eCSSKeyword_table_cell,          NS_STYLE_DISPLAY_TABLE_CELL },
+  { eCSSKeyword_table_caption,       NS_STYLE_DISPLAY_TABLE_CAPTION },
   // Make sure this is kept in sync with the code in
   // nsCSSFrameConstructor::ConstructXULFrame
-  eCSSKeyword__moz_box,            NS_STYLE_DISPLAY_BOX,
-  eCSSKeyword__moz_inline_box,     NS_STYLE_DISPLAY_INLINE_BOX,
+  { eCSSKeyword__moz_box,            NS_STYLE_DISPLAY_BOX },
+  { eCSSKeyword__moz_inline_box,     NS_STYLE_DISPLAY_INLINE_BOX },
 #ifdef MOZ_XUL
-  eCSSKeyword__moz_grid,           NS_STYLE_DISPLAY_XUL_GRID,
-  eCSSKeyword__moz_inline_grid,    NS_STYLE_DISPLAY_INLINE_XUL_GRID,
-  eCSSKeyword__moz_grid_group,     NS_STYLE_DISPLAY_XUL_GRID_GROUP,
-  eCSSKeyword__moz_grid_line,      NS_STYLE_DISPLAY_XUL_GRID_LINE,
-  eCSSKeyword__moz_stack,          NS_STYLE_DISPLAY_STACK,
-  eCSSKeyword__moz_inline_stack,   NS_STYLE_DISPLAY_INLINE_STACK,
-  eCSSKeyword__moz_deck,           NS_STYLE_DISPLAY_DECK,
-  eCSSKeyword__moz_popup,          NS_STYLE_DISPLAY_POPUP,
-  eCSSKeyword__moz_groupbox,       NS_STYLE_DISPLAY_GROUPBOX,
+  { eCSSKeyword__moz_grid,           NS_STYLE_DISPLAY_XUL_GRID },
+  { eCSSKeyword__moz_inline_grid,    NS_STYLE_DISPLAY_INLINE_XUL_GRID },
+  { eCSSKeyword__moz_grid_group,     NS_STYLE_DISPLAY_XUL_GRID_GROUP },
+  { eCSSKeyword__moz_grid_line,      NS_STYLE_DISPLAY_XUL_GRID_LINE },
+  { eCSSKeyword__moz_stack,          NS_STYLE_DISPLAY_STACK },
+  { eCSSKeyword__moz_inline_stack,   NS_STYLE_DISPLAY_INLINE_STACK },
+  { eCSSKeyword__moz_deck,           NS_STYLE_DISPLAY_DECK },
+  { eCSSKeyword__moz_popup,          NS_STYLE_DISPLAY_POPUP },
+  { eCSSKeyword__moz_groupbox,       NS_STYLE_DISPLAY_GROUPBOX },
 #endif
-  eCSSKeyword_flex,                NS_STYLE_DISPLAY_FLEX,
-  eCSSKeyword_inline_flex,         NS_STYLE_DISPLAY_INLINE_FLEX,
+  { eCSSKeyword_flex,                NS_STYLE_DISPLAY_FLEX },
+  { eCSSKeyword_inline_flex,         NS_STYLE_DISPLAY_INLINE_FLEX },
   // The next two entries are controlled by the layout.css.grid.enabled pref.
-  eCSSKeyword_grid,                NS_STYLE_DISPLAY_GRID,
-  eCSSKeyword_inline_grid,         NS_STYLE_DISPLAY_INLINE_GRID,
+  { eCSSKeyword_grid,                NS_STYLE_DISPLAY_GRID },
+  { eCSSKeyword_inline_grid,         NS_STYLE_DISPLAY_INLINE_GRID },
   // The next five entries are controlled by the layout.css.ruby.enabled pref.
-  eCSSKeyword_ruby,                NS_STYLE_DISPLAY_RUBY,
-  eCSSKeyword_ruby_base,           NS_STYLE_DISPLAY_RUBY_BASE,
-  eCSSKeyword_ruby_base_container, NS_STYLE_DISPLAY_RUBY_BASE_CONTAINER,
-  eCSSKeyword_ruby_text,           NS_STYLE_DISPLAY_RUBY_TEXT,
-  eCSSKeyword_ruby_text_container, NS_STYLE_DISPLAY_RUBY_TEXT_CONTAINER,
+  { eCSSKeyword_ruby,                NS_STYLE_DISPLAY_RUBY },
+  { eCSSKeyword_ruby_base,           NS_STYLE_DISPLAY_RUBY_BASE },
+  { eCSSKeyword_ruby_base_container, NS_STYLE_DISPLAY_RUBY_BASE_CONTAINER },
+  { eCSSKeyword_ruby_text,           NS_STYLE_DISPLAY_RUBY_TEXT },
+  { eCSSKeyword_ruby_text_container, NS_STYLE_DISPLAY_RUBY_TEXT_CONTAINER },
   // The next entry is controlled by the layout.css.display-contents.enabled
   // pref.
-  eCSSKeyword_contents,            NS_STYLE_DISPLAY_CONTENTS,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_contents,            NS_STYLE_DISPLAY_CONTENTS },
+  { eCSSKeyword_UNKNOWN,             -1 }
 };
 
 const KTableValue nsCSSProps::kEmptyCellsKTable[] = {
-  eCSSKeyword_show,                 NS_STYLE_TABLE_EMPTY_CELLS_SHOW,
-  eCSSKeyword_hide,                 NS_STYLE_TABLE_EMPTY_CELLS_HIDE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_show,                 NS_STYLE_TABLE_EMPTY_CELLS_SHOW },
+  { eCSSKeyword_hide,                 NS_STYLE_TABLE_EMPTY_CELLS_HIDE },
+  { eCSSKeyword_UNKNOWN,              -1 }
 };
 
 const KTableValue nsCSSProps::kAlignAllKeywords[] = {
-  eCSSKeyword_auto,          NS_STYLE_ALIGN_AUTO,
-  eCSSKeyword_start,         NS_STYLE_ALIGN_START,
-  eCSSKeyword_end,           NS_STYLE_ALIGN_END,
-  eCSSKeyword_flex_start,    NS_STYLE_ALIGN_FLEX_START,
-  eCSSKeyword_flex_end,      NS_STYLE_ALIGN_FLEX_END,
-  eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER,
-  eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT,
-  eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT,
-  eCSSKeyword_baseline,      NS_STYLE_ALIGN_BASELINE,
-  eCSSKeyword_last_baseline, NS_STYLE_ALIGN_LAST_BASELINE,
-  eCSSKeyword_stretch,       NS_STYLE_ALIGN_STRETCH,
-  eCSSKeyword_self_start,    NS_STYLE_ALIGN_SELF_START,
-  eCSSKeyword_self_end,      NS_STYLE_ALIGN_SELF_END,
-  eCSSKeyword_space_between, NS_STYLE_ALIGN_SPACE_BETWEEN,
-  eCSSKeyword_space_around,  NS_STYLE_ALIGN_SPACE_AROUND,
-  eCSSKeyword_space_evenly,  NS_STYLE_ALIGN_SPACE_EVENLY,
-  eCSSKeyword_legacy,        NS_STYLE_ALIGN_LEGACY,
-  eCSSKeyword_safe,          NS_STYLE_ALIGN_SAFE,
-  eCSSKeyword_true,          NS_STYLE_ALIGN_TRUE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto,          NS_STYLE_ALIGN_AUTO },
+  { eCSSKeyword_start,         NS_STYLE_ALIGN_START },
+  { eCSSKeyword_end,           NS_STYLE_ALIGN_END },
+  { eCSSKeyword_flex_start,    NS_STYLE_ALIGN_FLEX_START },
+  { eCSSKeyword_flex_end,      NS_STYLE_ALIGN_FLEX_END },
+  { eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER },
+  { eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT },
+  { eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT },
+  { eCSSKeyword_baseline,      NS_STYLE_ALIGN_BASELINE },
+  { eCSSKeyword_last_baseline, NS_STYLE_ALIGN_LAST_BASELINE },
+  { eCSSKeyword_stretch,       NS_STYLE_ALIGN_STRETCH },
+  { eCSSKeyword_self_start,    NS_STYLE_ALIGN_SELF_START },
+  { eCSSKeyword_self_end,      NS_STYLE_ALIGN_SELF_END },
+  { eCSSKeyword_space_between, NS_STYLE_ALIGN_SPACE_BETWEEN },
+  { eCSSKeyword_space_around,  NS_STYLE_ALIGN_SPACE_AROUND },
+  { eCSSKeyword_space_evenly,  NS_STYLE_ALIGN_SPACE_EVENLY },
+  { eCSSKeyword_legacy,        NS_STYLE_ALIGN_LEGACY },
+  { eCSSKeyword_safe,          NS_STYLE_ALIGN_SAFE },
+  { eCSSKeyword_true,          NS_STYLE_ALIGN_TRUE },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignOverflowPosition[] = {
-  eCSSKeyword_true,          NS_STYLE_ALIGN_TRUE,
-  eCSSKeyword_safe,          NS_STYLE_ALIGN_SAFE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_true,          NS_STYLE_ALIGN_TRUE },
+  { eCSSKeyword_safe,          NS_STYLE_ALIGN_SAFE },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignSelfPosition[] = {
-  eCSSKeyword_start,         NS_STYLE_ALIGN_START,
-  eCSSKeyword_end,           NS_STYLE_ALIGN_END,
-  eCSSKeyword_flex_start,    NS_STYLE_ALIGN_FLEX_START,
-  eCSSKeyword_flex_end,      NS_STYLE_ALIGN_FLEX_END,
-  eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER,
-  eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT,
-  eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT,
-  eCSSKeyword_self_start,    NS_STYLE_ALIGN_SELF_START,
-  eCSSKeyword_self_end,      NS_STYLE_ALIGN_SELF_END,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_start,         NS_STYLE_ALIGN_START },
+  { eCSSKeyword_end,           NS_STYLE_ALIGN_END },
+  { eCSSKeyword_flex_start,    NS_STYLE_ALIGN_FLEX_START },
+  { eCSSKeyword_flex_end,      NS_STYLE_ALIGN_FLEX_END },
+  { eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER },
+  { eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT },
+  { eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT },
+  { eCSSKeyword_self_start,    NS_STYLE_ALIGN_SELF_START },
+  { eCSSKeyword_self_end,      NS_STYLE_ALIGN_SELF_END },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignLegacy[] = {
-  eCSSKeyword_legacy,        NS_STYLE_ALIGN_LEGACY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_legacy,        NS_STYLE_ALIGN_LEGACY },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignLegacyPosition[] = {
-  eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER,
-  eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT,
-  eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER },
+  { eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT },
+  { eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignAutoStretchBaseline[] = {
-  eCSSKeyword_auto,          NS_STYLE_ALIGN_AUTO,
-  eCSSKeyword_stretch,       NS_STYLE_ALIGN_STRETCH,
-  eCSSKeyword_baseline,      NS_STYLE_ALIGN_BASELINE,
-  eCSSKeyword_last_baseline, NS_STYLE_ALIGN_LAST_BASELINE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto,          NS_STYLE_ALIGN_AUTO },
+  { eCSSKeyword_stretch,       NS_STYLE_ALIGN_STRETCH },
+  { eCSSKeyword_baseline,      NS_STYLE_ALIGN_BASELINE },
+  { eCSSKeyword_last_baseline, NS_STYLE_ALIGN_LAST_BASELINE },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignAutoBaseline[] = {
-  eCSSKeyword_auto,          NS_STYLE_ALIGN_AUTO,
-  eCSSKeyword_baseline,      NS_STYLE_ALIGN_BASELINE,
-  eCSSKeyword_last_baseline, NS_STYLE_ALIGN_LAST_BASELINE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto,          NS_STYLE_ALIGN_AUTO },
+  { eCSSKeyword_baseline,      NS_STYLE_ALIGN_BASELINE },
+  { eCSSKeyword_last_baseline, NS_STYLE_ALIGN_LAST_BASELINE },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignContentDistribution[] = {
-  eCSSKeyword_stretch,       NS_STYLE_ALIGN_STRETCH,
-  eCSSKeyword_space_between, NS_STYLE_ALIGN_SPACE_BETWEEN,
-  eCSSKeyword_space_around,  NS_STYLE_ALIGN_SPACE_AROUND,
-  eCSSKeyword_space_evenly,  NS_STYLE_ALIGN_SPACE_EVENLY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_stretch,       NS_STYLE_ALIGN_STRETCH },
+  { eCSSKeyword_space_between, NS_STYLE_ALIGN_SPACE_BETWEEN },
+  { eCSSKeyword_space_around,  NS_STYLE_ALIGN_SPACE_AROUND },
+  { eCSSKeyword_space_evenly,  NS_STYLE_ALIGN_SPACE_EVENLY },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kAlignContentPosition[] = {
-  eCSSKeyword_start,         NS_STYLE_ALIGN_START,
-  eCSSKeyword_end,           NS_STYLE_ALIGN_END,
-  eCSSKeyword_flex_start,    NS_STYLE_ALIGN_FLEX_START,
-  eCSSKeyword_flex_end,      NS_STYLE_ALIGN_FLEX_END,
-  eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER,
-  eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT,
-  eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_start,         NS_STYLE_ALIGN_START },
+  { eCSSKeyword_end,           NS_STYLE_ALIGN_END },
+  { eCSSKeyword_flex_start,    NS_STYLE_ALIGN_FLEX_START },
+  { eCSSKeyword_flex_end,      NS_STYLE_ALIGN_FLEX_END },
+  { eCSSKeyword_center,        NS_STYLE_ALIGN_CENTER },
+  { eCSSKeyword_left,          NS_STYLE_ALIGN_LEFT },
+  { eCSSKeyword_right,         NS_STYLE_ALIGN_RIGHT },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kFlexDirectionKTable[] = {
-  eCSSKeyword_row,            NS_STYLE_FLEX_DIRECTION_ROW,
-  eCSSKeyword_row_reverse,    NS_STYLE_FLEX_DIRECTION_ROW_REVERSE,
-  eCSSKeyword_column,         NS_STYLE_FLEX_DIRECTION_COLUMN,
-  eCSSKeyword_column_reverse, NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_row,            NS_STYLE_FLEX_DIRECTION_ROW },
+  { eCSSKeyword_row_reverse,    NS_STYLE_FLEX_DIRECTION_ROW_REVERSE },
+  { eCSSKeyword_column,         NS_STYLE_FLEX_DIRECTION_COLUMN },
+  { eCSSKeyword_column_reverse, NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE },
+  { eCSSKeyword_UNKNOWN,        -1 }
 };
 
 const KTableValue nsCSSProps::kFlexWrapKTable[] = {
-  eCSSKeyword_nowrap,       NS_STYLE_FLEX_WRAP_NOWRAP,
-  eCSSKeyword_wrap,         NS_STYLE_FLEX_WRAP_WRAP,
-  eCSSKeyword_wrap_reverse, NS_STYLE_FLEX_WRAP_WRAP_REVERSE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_nowrap,       NS_STYLE_FLEX_WRAP_NOWRAP },
+  { eCSSKeyword_wrap,         NS_STYLE_FLEX_WRAP_WRAP },
+  { eCSSKeyword_wrap_reverse, NS_STYLE_FLEX_WRAP_WRAP_REVERSE },
+  { eCSSKeyword_UNKNOWN,      -1 }
 };
 
 const KTableValue nsCSSProps::kHyphensKTable[] = {
-  eCSSKeyword_none, NS_STYLE_HYPHENS_NONE,
-  eCSSKeyword_manual, NS_STYLE_HYPHENS_MANUAL,
-  eCSSKeyword_auto, NS_STYLE_HYPHENS_AUTO,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_HYPHENS_NONE },
+  { eCSSKeyword_manual, NS_STYLE_HYPHENS_MANUAL },
+  { eCSSKeyword_auto, NS_STYLE_HYPHENS_AUTO },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 KTableValue nsCSSProps::kFloatKTable[] = {
-  eCSSKeyword_none,         NS_STYLE_FLOAT_NONE,
-  eCSSKeyword_left,         NS_STYLE_FLOAT_LEFT,
-  eCSSKeyword_right,        NS_STYLE_FLOAT_RIGHT,
-  eCSSKeyword_inline_start, NS_STYLE_FLOAT_INLINE_START,
-  eCSSKeyword_inline_end,   NS_STYLE_FLOAT_INLINE_END,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,         NS_STYLE_FLOAT_NONE },
+  { eCSSKeyword_left,         NS_STYLE_FLOAT_LEFT },
+  { eCSSKeyword_right,        NS_STYLE_FLOAT_RIGHT },
+  { eCSSKeyword_inline_start, NS_STYLE_FLOAT_INLINE_START },
+  { eCSSKeyword_inline_end,   NS_STYLE_FLOAT_INLINE_END },
+  { eCSSKeyword_UNKNOWN,      -1 }
 };
 
 const KTableValue nsCSSProps::kFloatEdgeKTable[] = {
-  eCSSKeyword_content_box,  NS_STYLE_FLOAT_EDGE_CONTENT,
-  eCSSKeyword_margin_box,  NS_STYLE_FLOAT_EDGE_MARGIN,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_content_box, NS_STYLE_FLOAT_EDGE_CONTENT },
+  { eCSSKeyword_margin_box, NS_STYLE_FLOAT_EDGE_MARGIN },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontKTable[] = {
   // CSS2.
-  eCSSKeyword_caption, NS_STYLE_FONT_CAPTION,
-  eCSSKeyword_icon, NS_STYLE_FONT_ICON,
-  eCSSKeyword_menu, NS_STYLE_FONT_MENU,
-  eCSSKeyword_message_box, NS_STYLE_FONT_MESSAGE_BOX,
-  eCSSKeyword_small_caption, NS_STYLE_FONT_SMALL_CAPTION,
-  eCSSKeyword_status_bar, NS_STYLE_FONT_STATUS_BAR,
+  { eCSSKeyword_caption, NS_STYLE_FONT_CAPTION },
+  { eCSSKeyword_icon, NS_STYLE_FONT_ICON },
+  { eCSSKeyword_menu, NS_STYLE_FONT_MENU },
+  { eCSSKeyword_message_box, NS_STYLE_FONT_MESSAGE_BOX },
+  { eCSSKeyword_small_caption, NS_STYLE_FONT_SMALL_CAPTION },
+  { eCSSKeyword_status_bar, NS_STYLE_FONT_STATUS_BAR },
 
   // Proposed for CSS3.
-  eCSSKeyword__moz_window, NS_STYLE_FONT_WINDOW,
-  eCSSKeyword__moz_document, NS_STYLE_FONT_DOCUMENT,
-  eCSSKeyword__moz_workspace, NS_STYLE_FONT_WORKSPACE,
-  eCSSKeyword__moz_desktop, NS_STYLE_FONT_DESKTOP,
-  eCSSKeyword__moz_info, NS_STYLE_FONT_INFO,
-  eCSSKeyword__moz_dialog, NS_STYLE_FONT_DIALOG,
-  eCSSKeyword__moz_button, NS_STYLE_FONT_BUTTON,
-  eCSSKeyword__moz_pull_down_menu, NS_STYLE_FONT_PULL_DOWN_MENU,
-  eCSSKeyword__moz_list, NS_STYLE_FONT_LIST,
-  eCSSKeyword__moz_field, NS_STYLE_FONT_FIELD,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_window, NS_STYLE_FONT_WINDOW },
+  { eCSSKeyword__moz_document, NS_STYLE_FONT_DOCUMENT },
+  { eCSSKeyword__moz_workspace, NS_STYLE_FONT_WORKSPACE },
+  { eCSSKeyword__moz_desktop, NS_STYLE_FONT_DESKTOP },
+  { eCSSKeyword__moz_info, NS_STYLE_FONT_INFO },
+  { eCSSKeyword__moz_dialog, NS_STYLE_FONT_DIALOG },
+  { eCSSKeyword__moz_button, NS_STYLE_FONT_BUTTON },
+  { eCSSKeyword__moz_pull_down_menu, NS_STYLE_FONT_PULL_DOWN_MENU },
+  { eCSSKeyword__moz_list, NS_STYLE_FONT_LIST },
+  { eCSSKeyword__moz_field, NS_STYLE_FONT_FIELD },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontKerningKTable[] = {
-  eCSSKeyword_auto, NS_FONT_KERNING_AUTO,
-  eCSSKeyword_none, NS_FONT_KERNING_NONE,
-  eCSSKeyword_normal, NS_FONT_KERNING_NORMAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_FONT_KERNING_AUTO },
+  { eCSSKeyword_none, NS_FONT_KERNING_NONE },
+  { eCSSKeyword_normal, NS_FONT_KERNING_NORMAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontSizeKTable[] = {
-  eCSSKeyword_xx_small, NS_STYLE_FONT_SIZE_XXSMALL,
-  eCSSKeyword_x_small, NS_STYLE_FONT_SIZE_XSMALL,
-  eCSSKeyword_small, NS_STYLE_FONT_SIZE_SMALL,
-  eCSSKeyword_medium, NS_STYLE_FONT_SIZE_MEDIUM,
-  eCSSKeyword_large, NS_STYLE_FONT_SIZE_LARGE,
-  eCSSKeyword_x_large, NS_STYLE_FONT_SIZE_XLARGE,
-  eCSSKeyword_xx_large, NS_STYLE_FONT_SIZE_XXLARGE,
-  eCSSKeyword_larger, NS_STYLE_FONT_SIZE_LARGER,
-  eCSSKeyword_smaller, NS_STYLE_FONT_SIZE_SMALLER,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_xx_small, NS_STYLE_FONT_SIZE_XXSMALL },
+  { eCSSKeyword_x_small, NS_STYLE_FONT_SIZE_XSMALL },
+  { eCSSKeyword_small, NS_STYLE_FONT_SIZE_SMALL },
+  { eCSSKeyword_medium, NS_STYLE_FONT_SIZE_MEDIUM },
+  { eCSSKeyword_large, NS_STYLE_FONT_SIZE_LARGE },
+  { eCSSKeyword_x_large, NS_STYLE_FONT_SIZE_XLARGE },
+  { eCSSKeyword_xx_large, NS_STYLE_FONT_SIZE_XXLARGE },
+  { eCSSKeyword_larger, NS_STYLE_FONT_SIZE_LARGER },
+  { eCSSKeyword_smaller, NS_STYLE_FONT_SIZE_SMALLER },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontSmoothingKTable[] = {
-  eCSSKeyword_auto, NS_FONT_SMOOTHING_AUTO,
-  eCSSKeyword_grayscale, NS_FONT_SMOOTHING_GRAYSCALE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_FONT_SMOOTHING_AUTO },
+  { eCSSKeyword_grayscale, NS_FONT_SMOOTHING_GRAYSCALE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontStretchKTable[] = {
-  eCSSKeyword_ultra_condensed, NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED,
-  eCSSKeyword_extra_condensed, NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED,
-  eCSSKeyword_condensed, NS_STYLE_FONT_STRETCH_CONDENSED,
-  eCSSKeyword_semi_condensed, NS_STYLE_FONT_STRETCH_SEMI_CONDENSED,
-  eCSSKeyword_normal, NS_STYLE_FONT_STRETCH_NORMAL,
-  eCSSKeyword_semi_expanded, NS_STYLE_FONT_STRETCH_SEMI_EXPANDED,
-  eCSSKeyword_expanded, NS_STYLE_FONT_STRETCH_EXPANDED,
-  eCSSKeyword_extra_expanded, NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED,
-  eCSSKeyword_ultra_expanded, NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_ultra_condensed, NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED },
+  { eCSSKeyword_extra_condensed, NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED },
+  { eCSSKeyword_condensed, NS_STYLE_FONT_STRETCH_CONDENSED },
+  { eCSSKeyword_semi_condensed, NS_STYLE_FONT_STRETCH_SEMI_CONDENSED },
+  { eCSSKeyword_normal, NS_STYLE_FONT_STRETCH_NORMAL },
+  { eCSSKeyword_semi_expanded, NS_STYLE_FONT_STRETCH_SEMI_EXPANDED },
+  { eCSSKeyword_expanded, NS_STYLE_FONT_STRETCH_EXPANDED },
+  { eCSSKeyword_extra_expanded, NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED },
+  { eCSSKeyword_ultra_expanded, NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontStyleKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_FONT_STYLE_NORMAL,
-  eCSSKeyword_italic, NS_STYLE_FONT_STYLE_ITALIC,
-  eCSSKeyword_oblique, NS_STYLE_FONT_STYLE_OBLIQUE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_FONT_STYLE_NORMAL },
+  { eCSSKeyword_italic, NS_STYLE_FONT_STYLE_ITALIC },
+  { eCSSKeyword_oblique, NS_STYLE_FONT_STYLE_OBLIQUE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontSynthesisKTable[] = {
-  eCSSKeyword_weight, NS_FONT_SYNTHESIS_WEIGHT,
-  eCSSKeyword_style, NS_FONT_SYNTHESIS_STYLE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_weight, NS_FONT_SYNTHESIS_WEIGHT },
+  { eCSSKeyword_style, NS_FONT_SYNTHESIS_STYLE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantAlternatesKTable[] = {
-  eCSSKeyword_historical_forms, NS_FONT_VARIANT_ALTERNATES_HISTORICAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_historical_forms, NS_FONT_VARIANT_ALTERNATES_HISTORICAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantAlternatesFuncsKTable[] = {
-  eCSSKeyword_stylistic, NS_FONT_VARIANT_ALTERNATES_STYLISTIC,
-  eCSSKeyword_styleset, NS_FONT_VARIANT_ALTERNATES_STYLESET,
-  eCSSKeyword_character_variant, NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT,
-  eCSSKeyword_swash, NS_FONT_VARIANT_ALTERNATES_SWASH,
-  eCSSKeyword_ornaments, NS_FONT_VARIANT_ALTERNATES_ORNAMENTS,
-  eCSSKeyword_annotation, NS_FONT_VARIANT_ALTERNATES_ANNOTATION,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_stylistic, NS_FONT_VARIANT_ALTERNATES_STYLISTIC },
+  { eCSSKeyword_styleset, NS_FONT_VARIANT_ALTERNATES_STYLESET },
+  { eCSSKeyword_character_variant, NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT },
+  { eCSSKeyword_swash, NS_FONT_VARIANT_ALTERNATES_SWASH },
+  { eCSSKeyword_ornaments, NS_FONT_VARIANT_ALTERNATES_ORNAMENTS },
+  { eCSSKeyword_annotation, NS_FONT_VARIANT_ALTERNATES_ANNOTATION },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantCapsKTable[] = {
-  eCSSKeyword_small_caps, NS_FONT_VARIANT_CAPS_SMALLCAPS,
-  eCSSKeyword_all_small_caps, NS_FONT_VARIANT_CAPS_ALLSMALL,
-  eCSSKeyword_petite_caps, NS_FONT_VARIANT_CAPS_PETITECAPS,
-  eCSSKeyword_all_petite_caps, NS_FONT_VARIANT_CAPS_ALLPETITE,
-  eCSSKeyword_titling_caps, NS_FONT_VARIANT_CAPS_TITLING,
-  eCSSKeyword_unicase, NS_FONT_VARIANT_CAPS_UNICASE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_small_caps, NS_FONT_VARIANT_CAPS_SMALLCAPS },
+  { eCSSKeyword_all_small_caps, NS_FONT_VARIANT_CAPS_ALLSMALL },
+  { eCSSKeyword_petite_caps, NS_FONT_VARIANT_CAPS_PETITECAPS },
+  { eCSSKeyword_all_petite_caps, NS_FONT_VARIANT_CAPS_ALLPETITE },
+  { eCSSKeyword_titling_caps, NS_FONT_VARIANT_CAPS_TITLING },
+  { eCSSKeyword_unicase, NS_FONT_VARIANT_CAPS_UNICASE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantEastAsianKTable[] = {
-  eCSSKeyword_jis78, NS_FONT_VARIANT_EAST_ASIAN_JIS78,
-  eCSSKeyword_jis83, NS_FONT_VARIANT_EAST_ASIAN_JIS83,
-  eCSSKeyword_jis90, NS_FONT_VARIANT_EAST_ASIAN_JIS90,
-  eCSSKeyword_jis04, NS_FONT_VARIANT_EAST_ASIAN_JIS04,
-  eCSSKeyword_simplified, NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED,
-  eCSSKeyword_traditional, NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL,
-  eCSSKeyword_full_width, NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH,
-  eCSSKeyword_proportional_width, NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH,
-  eCSSKeyword_ruby, NS_FONT_VARIANT_EAST_ASIAN_RUBY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_jis78, NS_FONT_VARIANT_EAST_ASIAN_JIS78 },
+  { eCSSKeyword_jis83, NS_FONT_VARIANT_EAST_ASIAN_JIS83 },
+  { eCSSKeyword_jis90, NS_FONT_VARIANT_EAST_ASIAN_JIS90 },
+  { eCSSKeyword_jis04, NS_FONT_VARIANT_EAST_ASIAN_JIS04 },
+  { eCSSKeyword_simplified, NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED },
+  { eCSSKeyword_traditional, NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL },
+  { eCSSKeyword_full_width, NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH },
+  { eCSSKeyword_proportional_width, NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH },
+  { eCSSKeyword_ruby, NS_FONT_VARIANT_EAST_ASIAN_RUBY },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantLigaturesKTable[] = {
-  eCSSKeyword_common_ligatures, NS_FONT_VARIANT_LIGATURES_COMMON,
-  eCSSKeyword_no_common_ligatures, NS_FONT_VARIANT_LIGATURES_NO_COMMON,
-  eCSSKeyword_discretionary_ligatures, NS_FONT_VARIANT_LIGATURES_DISCRETIONARY,
-  eCSSKeyword_no_discretionary_ligatures, NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY,
-  eCSSKeyword_historical_ligatures, NS_FONT_VARIANT_LIGATURES_HISTORICAL,
-  eCSSKeyword_no_historical_ligatures, NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL,
-  eCSSKeyword_contextual, NS_FONT_VARIANT_LIGATURES_CONTEXTUAL,
-  eCSSKeyword_no_contextual, NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_common_ligatures, NS_FONT_VARIANT_LIGATURES_COMMON },
+  { eCSSKeyword_no_common_ligatures, NS_FONT_VARIANT_LIGATURES_NO_COMMON },
+  { eCSSKeyword_discretionary_ligatures, NS_FONT_VARIANT_LIGATURES_DISCRETIONARY },
+  { eCSSKeyword_no_discretionary_ligatures, NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY },
+  { eCSSKeyword_historical_ligatures, NS_FONT_VARIANT_LIGATURES_HISTORICAL },
+  { eCSSKeyword_no_historical_ligatures, NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL },
+  { eCSSKeyword_contextual, NS_FONT_VARIANT_LIGATURES_CONTEXTUAL },
+  { eCSSKeyword_no_contextual, NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantNumericKTable[] = {
-  eCSSKeyword_lining_nums, NS_FONT_VARIANT_NUMERIC_LINING,
-  eCSSKeyword_oldstyle_nums, NS_FONT_VARIANT_NUMERIC_OLDSTYLE,
-  eCSSKeyword_proportional_nums, NS_FONT_VARIANT_NUMERIC_PROPORTIONAL,
-  eCSSKeyword_tabular_nums, NS_FONT_VARIANT_NUMERIC_TABULAR,
-  eCSSKeyword_diagonal_fractions, NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS,
-  eCSSKeyword_stacked_fractions, NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS,
-  eCSSKeyword_slashed_zero, NS_FONT_VARIANT_NUMERIC_SLASHZERO,
-  eCSSKeyword_ordinal, NS_FONT_VARIANT_NUMERIC_ORDINAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_lining_nums, NS_FONT_VARIANT_NUMERIC_LINING },
+  { eCSSKeyword_oldstyle_nums, NS_FONT_VARIANT_NUMERIC_OLDSTYLE },
+  { eCSSKeyword_proportional_nums, NS_FONT_VARIANT_NUMERIC_PROPORTIONAL },
+  { eCSSKeyword_tabular_nums, NS_FONT_VARIANT_NUMERIC_TABULAR },
+  { eCSSKeyword_diagonal_fractions, NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS },
+  { eCSSKeyword_stacked_fractions, NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS },
+  { eCSSKeyword_slashed_zero, NS_FONT_VARIANT_NUMERIC_SLASHZERO },
+  { eCSSKeyword_ordinal, NS_FONT_VARIANT_NUMERIC_ORDINAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontVariantPositionKTable[] = {
-  eCSSKeyword_super, NS_FONT_VARIANT_POSITION_SUPER,
-  eCSSKeyword_sub, NS_FONT_VARIANT_POSITION_SUB,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_super, NS_FONT_VARIANT_POSITION_SUPER },
+  { eCSSKeyword_sub, NS_FONT_VARIANT_POSITION_SUB },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFontWeightKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_FONT_WEIGHT_NORMAL,
-  eCSSKeyword_bold, NS_STYLE_FONT_WEIGHT_BOLD,
-  eCSSKeyword_bolder, NS_STYLE_FONT_WEIGHT_BOLDER,
-  eCSSKeyword_lighter, NS_STYLE_FONT_WEIGHT_LIGHTER,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_FONT_WEIGHT_NORMAL },
+  { eCSSKeyword_bold, NS_STYLE_FONT_WEIGHT_BOLD },
+  { eCSSKeyword_bolder, NS_STYLE_FONT_WEIGHT_BOLDER },
+  { eCSSKeyword_lighter, NS_STYLE_FONT_WEIGHT_LIGHTER },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kGridAutoFlowKTable[] = {
-  eCSSKeyword_row, NS_STYLE_GRID_AUTO_FLOW_ROW,
-  eCSSKeyword_column, NS_STYLE_GRID_AUTO_FLOW_COLUMN,
-  eCSSKeyword_dense, NS_STYLE_GRID_AUTO_FLOW_DENSE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_row, NS_STYLE_GRID_AUTO_FLOW_ROW },
+  { eCSSKeyword_column, NS_STYLE_GRID_AUTO_FLOW_COLUMN },
+  { eCSSKeyword_dense, NS_STYLE_GRID_AUTO_FLOW_DENSE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kGridTrackBreadthKTable[] = {
-  eCSSKeyword_min_content, NS_STYLE_GRID_TRACK_BREADTH_MIN_CONTENT,
-  eCSSKeyword_max_content, NS_STYLE_GRID_TRACK_BREADTH_MAX_CONTENT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_min_content, NS_STYLE_GRID_TRACK_BREADTH_MIN_CONTENT },
+  { eCSSKeyword_max_content, NS_STYLE_GRID_TRACK_BREADTH_MAX_CONTENT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kImageOrientationKTable[] = {
-  eCSSKeyword_flip, NS_STYLE_IMAGE_ORIENTATION_FLIP,
-  eCSSKeyword_from_image, NS_STYLE_IMAGE_ORIENTATION_FROM_IMAGE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_flip, NS_STYLE_IMAGE_ORIENTATION_FLIP },
+  { eCSSKeyword_from_image, NS_STYLE_IMAGE_ORIENTATION_FROM_IMAGE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kImageOrientationFlipKTable[] = {
-  eCSSKeyword_flip, NS_STYLE_IMAGE_ORIENTATION_FLIP,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_flip, NS_STYLE_IMAGE_ORIENTATION_FLIP },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kIsolationKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_ISOLATION_AUTO,
-  eCSSKeyword_isolate, NS_STYLE_ISOLATION_ISOLATE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_STYLE_ISOLATION_AUTO },
+  { eCSSKeyword_isolate, NS_STYLE_ISOLATION_ISOLATE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kIMEModeKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_IME_MODE_NORMAL,
-  eCSSKeyword_auto, NS_STYLE_IME_MODE_AUTO,
-  eCSSKeyword_active, NS_STYLE_IME_MODE_ACTIVE,
-  eCSSKeyword_disabled, NS_STYLE_IME_MODE_DISABLED,
-  eCSSKeyword_inactive, NS_STYLE_IME_MODE_INACTIVE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_IME_MODE_NORMAL },
+  { eCSSKeyword_auto, NS_STYLE_IME_MODE_AUTO },
+  { eCSSKeyword_active, NS_STYLE_IME_MODE_ACTIVE },
+  { eCSSKeyword_disabled, NS_STYLE_IME_MODE_DISABLED },
+  { eCSSKeyword_inactive, NS_STYLE_IME_MODE_INACTIVE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kLineHeightKTable[] = {
   // -moz- prefixed, intended for internal use for single-line controls
-  eCSSKeyword__moz_block_height, NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_block_height, NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kListStylePositionKTable[] = {
-  eCSSKeyword_inside, NS_STYLE_LIST_STYLE_POSITION_INSIDE,
-  eCSSKeyword_outside, NS_STYLE_LIST_STYLE_POSITION_OUTSIDE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_inside, NS_STYLE_LIST_STYLE_POSITION_INSIDE },
+  { eCSSKeyword_outside, NS_STYLE_LIST_STYLE_POSITION_OUTSIDE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kListStyleKTable[] = {
   // none and decimal are not redefinable, so they should not be moved.
-  eCSSKeyword_none, NS_STYLE_LIST_STYLE_NONE,
-  eCSSKeyword_decimal, NS_STYLE_LIST_STYLE_DECIMAL,
+  { eCSSKeyword_none, NS_STYLE_LIST_STYLE_NONE },
+  { eCSSKeyword_decimal, NS_STYLE_LIST_STYLE_DECIMAL },
   // the following graphic styles are processed in a different way.
-  eCSSKeyword_disc, NS_STYLE_LIST_STYLE_DISC,
-  eCSSKeyword_circle, NS_STYLE_LIST_STYLE_CIRCLE,
-  eCSSKeyword_square, NS_STYLE_LIST_STYLE_SQUARE,
-  eCSSKeyword_disclosure_closed, NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED,
-  eCSSKeyword_disclosure_open, NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN,
+  { eCSSKeyword_disc, NS_STYLE_LIST_STYLE_DISC },
+  { eCSSKeyword_circle, NS_STYLE_LIST_STYLE_CIRCLE },
+  { eCSSKeyword_square, NS_STYLE_LIST_STYLE_SQUARE },
+  { eCSSKeyword_disclosure_closed, NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED },
+  { eCSSKeyword_disclosure_open, NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN },
   // the following counter styles require specific algorithms to generate.
-  eCSSKeyword_hebrew, NS_STYLE_LIST_STYLE_HEBREW,
-  eCSSKeyword_japanese_informal, NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL,
-  eCSSKeyword_japanese_formal, NS_STYLE_LIST_STYLE_JAPANESE_FORMAL,
-  eCSSKeyword_korean_hangul_formal, NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL,
-  eCSSKeyword_korean_hanja_informal, NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL,
-  eCSSKeyword_korean_hanja_formal, NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL,
-  eCSSKeyword_simp_chinese_informal, NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL,
-  eCSSKeyword_simp_chinese_formal, NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL,
-  eCSSKeyword_trad_chinese_informal, NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL,
-  eCSSKeyword_trad_chinese_formal, NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL,
-  eCSSKeyword_ethiopic_numeric, NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_hebrew, NS_STYLE_LIST_STYLE_HEBREW },
+  { eCSSKeyword_japanese_informal, NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL },
+  { eCSSKeyword_japanese_formal, NS_STYLE_LIST_STYLE_JAPANESE_FORMAL },
+  { eCSSKeyword_korean_hangul_formal, NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL },
+  { eCSSKeyword_korean_hanja_informal, NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL },
+  { eCSSKeyword_korean_hanja_formal, NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL },
+  { eCSSKeyword_simp_chinese_informal, NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL },
+  { eCSSKeyword_simp_chinese_formal, NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL },
+  { eCSSKeyword_trad_chinese_informal, NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL },
+  { eCSSKeyword_trad_chinese_formal, NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL },
+  { eCSSKeyword_ethiopic_numeric, NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kMathVariantKTable[] = {
-  eCSSKeyword_none, NS_MATHML_MATHVARIANT_NONE,
-  eCSSKeyword_normal, NS_MATHML_MATHVARIANT_NORMAL,
-  eCSSKeyword_bold, NS_MATHML_MATHVARIANT_BOLD,
-  eCSSKeyword_italic, NS_MATHML_MATHVARIANT_ITALIC,
-  eCSSKeyword_bold_italic, NS_MATHML_MATHVARIANT_BOLD_ITALIC,
-  eCSSKeyword_script, NS_MATHML_MATHVARIANT_SCRIPT,
-  eCSSKeyword_bold_script, NS_MATHML_MATHVARIANT_BOLD_SCRIPT,
-  eCSSKeyword_fraktur, NS_MATHML_MATHVARIANT_FRAKTUR,
-  eCSSKeyword_double_struck, NS_MATHML_MATHVARIANT_DOUBLE_STRUCK,
-  eCSSKeyword_bold_fraktur, NS_MATHML_MATHVARIANT_BOLD_FRAKTUR,
-  eCSSKeyword_sans_serif, NS_MATHML_MATHVARIANT_SANS_SERIF,
-  eCSSKeyword_bold_sans_serif, NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF,
-  eCSSKeyword_sans_serif_italic, NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC,
-  eCSSKeyword_sans_serif_bold_italic, NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC,
-  eCSSKeyword_monospace, NS_MATHML_MATHVARIANT_MONOSPACE,
-  eCSSKeyword_initial, NS_MATHML_MATHVARIANT_INITIAL,
-  eCSSKeyword_tailed, NS_MATHML_MATHVARIANT_TAILED,
-  eCSSKeyword_looped, NS_MATHML_MATHVARIANT_LOOPED,
-  eCSSKeyword_stretched, NS_MATHML_MATHVARIANT_STRETCHED,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_MATHML_MATHVARIANT_NONE },
+  { eCSSKeyword_normal, NS_MATHML_MATHVARIANT_NORMAL },
+  { eCSSKeyword_bold, NS_MATHML_MATHVARIANT_BOLD },
+  { eCSSKeyword_italic, NS_MATHML_MATHVARIANT_ITALIC },
+  { eCSSKeyword_bold_italic, NS_MATHML_MATHVARIANT_BOLD_ITALIC },
+  { eCSSKeyword_script, NS_MATHML_MATHVARIANT_SCRIPT },
+  { eCSSKeyword_bold_script, NS_MATHML_MATHVARIANT_BOLD_SCRIPT },
+  { eCSSKeyword_fraktur, NS_MATHML_MATHVARIANT_FRAKTUR },
+  { eCSSKeyword_double_struck, NS_MATHML_MATHVARIANT_DOUBLE_STRUCK },
+  { eCSSKeyword_bold_fraktur, NS_MATHML_MATHVARIANT_BOLD_FRAKTUR },
+  { eCSSKeyword_sans_serif, NS_MATHML_MATHVARIANT_SANS_SERIF },
+  { eCSSKeyword_bold_sans_serif, NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF },
+  { eCSSKeyword_sans_serif_italic, NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC },
+  { eCSSKeyword_sans_serif_bold_italic, NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC },
+  { eCSSKeyword_monospace, NS_MATHML_MATHVARIANT_MONOSPACE },
+  { eCSSKeyword_initial, NS_MATHML_MATHVARIANT_INITIAL },
+  { eCSSKeyword_tailed, NS_MATHML_MATHVARIANT_TAILED },
+  { eCSSKeyword_looped, NS_MATHML_MATHVARIANT_LOOPED },
+  { eCSSKeyword_stretched, NS_MATHML_MATHVARIANT_STRETCHED },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kMathDisplayKTable[] = {
-  eCSSKeyword_inline, NS_MATHML_DISPLAYSTYLE_INLINE,
-  eCSSKeyword_block, NS_MATHML_DISPLAYSTYLE_BLOCK,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_inline, NS_MATHML_DISPLAYSTYLE_INLINE },
+  { eCSSKeyword_block, NS_MATHML_DISPLAYSTYLE_BLOCK },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kContainKTable[] = {
-  eCSSKeyword_none,    NS_STYLE_CONTAIN_NONE,
-  eCSSKeyword_strict,  NS_STYLE_CONTAIN_STRICT,
-  eCSSKeyword_layout,  NS_STYLE_CONTAIN_LAYOUT,
-  eCSSKeyword_style,   NS_STYLE_CONTAIN_STYLE,
-  eCSSKeyword_paint,   NS_STYLE_CONTAIN_PAINT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,    NS_STYLE_CONTAIN_NONE },
+  { eCSSKeyword_strict,  NS_STYLE_CONTAIN_STRICT },
+  { eCSSKeyword_layout,  NS_STYLE_CONTAIN_LAYOUT },
+  { eCSSKeyword_style,   NS_STYLE_CONTAIN_STYLE },
+  { eCSSKeyword_paint,   NS_STYLE_CONTAIN_PAINT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kContextOpacityKTable[] = {
-  eCSSKeyword_context_fill_opacity, NS_STYLE_CONTEXT_FILL_OPACITY,
-  eCSSKeyword_context_stroke_opacity, NS_STYLE_CONTEXT_STROKE_OPACITY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_context_fill_opacity, NS_STYLE_CONTEXT_FILL_OPACITY },
+  { eCSSKeyword_context_stroke_opacity, NS_STYLE_CONTEXT_STROKE_OPACITY },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kContextPatternKTable[] = {
-  eCSSKeyword_context_fill, NS_COLOR_CONTEXT_FILL,
-  eCSSKeyword_context_stroke, NS_COLOR_CONTEXT_STROKE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_context_fill, NS_COLOR_CONTEXT_FILL },
+  { eCSSKeyword_context_stroke, NS_COLOR_CONTEXT_STROKE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kObjectFitKTable[] = {
-  eCSSKeyword_fill,       NS_STYLE_OBJECT_FIT_FILL,
-  eCSSKeyword_contain,    NS_STYLE_OBJECT_FIT_CONTAIN,
-  eCSSKeyword_cover,      NS_STYLE_OBJECT_FIT_COVER,
-  eCSSKeyword_none,       NS_STYLE_OBJECT_FIT_NONE,
-  eCSSKeyword_scale_down, NS_STYLE_OBJECT_FIT_SCALE_DOWN,
-  eCSSKeyword_UNKNOWN,    -1
+  { eCSSKeyword_fill,       NS_STYLE_OBJECT_FIT_FILL },
+  { eCSSKeyword_contain,    NS_STYLE_OBJECT_FIT_CONTAIN },
+  { eCSSKeyword_cover,      NS_STYLE_OBJECT_FIT_COVER },
+  { eCSSKeyword_none,       NS_STYLE_OBJECT_FIT_NONE },
+  { eCSSKeyword_scale_down, NS_STYLE_OBJECT_FIT_SCALE_DOWN },
+  { eCSSKeyword_UNKNOWN,    -1 }
 };
 
 const KTableValue nsCSSProps::kOrientKTable[] = {
-  eCSSKeyword_inline,     NS_STYLE_ORIENT_INLINE,
-  eCSSKeyword_block,      NS_STYLE_ORIENT_BLOCK,
-  eCSSKeyword_horizontal, NS_STYLE_ORIENT_HORIZONTAL,
-  eCSSKeyword_vertical,   NS_STYLE_ORIENT_VERTICAL,
-  eCSSKeyword_UNKNOWN,    -1
+  { eCSSKeyword_inline,     NS_STYLE_ORIENT_INLINE },
+  { eCSSKeyword_block,      NS_STYLE_ORIENT_BLOCK },
+  { eCSSKeyword_horizontal, NS_STYLE_ORIENT_HORIZONTAL },
+  { eCSSKeyword_vertical,   NS_STYLE_ORIENT_VERTICAL },
+  { eCSSKeyword_UNKNOWN,    -1 }
 };
 
 // Same as kBorderStyleKTable except 'hidden'.
 const KTableValue nsCSSProps::kOutlineStyleKTable[] = {
-  eCSSKeyword_none,   NS_STYLE_BORDER_STYLE_NONE,
-  eCSSKeyword_auto,   NS_STYLE_BORDER_STYLE_AUTO,
-  eCSSKeyword_dotted, NS_STYLE_BORDER_STYLE_DOTTED,
-  eCSSKeyword_dashed, NS_STYLE_BORDER_STYLE_DASHED,
-  eCSSKeyword_solid,  NS_STYLE_BORDER_STYLE_SOLID,
-  eCSSKeyword_double, NS_STYLE_BORDER_STYLE_DOUBLE,
-  eCSSKeyword_groove, NS_STYLE_BORDER_STYLE_GROOVE,
-  eCSSKeyword_ridge,  NS_STYLE_BORDER_STYLE_RIDGE,
-  eCSSKeyword_inset,  NS_STYLE_BORDER_STYLE_INSET,
-  eCSSKeyword_outset, NS_STYLE_BORDER_STYLE_OUTSET,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,   NS_STYLE_BORDER_STYLE_NONE },
+  { eCSSKeyword_auto,   NS_STYLE_BORDER_STYLE_AUTO },
+  { eCSSKeyword_dotted, NS_STYLE_BORDER_STYLE_DOTTED },
+  { eCSSKeyword_dashed, NS_STYLE_BORDER_STYLE_DASHED },
+  { eCSSKeyword_solid,  NS_STYLE_BORDER_STYLE_SOLID },
+  { eCSSKeyword_double, NS_STYLE_BORDER_STYLE_DOUBLE },
+  { eCSSKeyword_groove, NS_STYLE_BORDER_STYLE_GROOVE },
+  { eCSSKeyword_ridge,  NS_STYLE_BORDER_STYLE_RIDGE },
+  { eCSSKeyword_inset,  NS_STYLE_BORDER_STYLE_INSET },
+  { eCSSKeyword_outset, NS_STYLE_BORDER_STYLE_OUTSET },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kOutlineColorKTable[] = {
-  eCSSKeyword__moz_use_text_color, NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_use_text_color, NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kOverflowKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_OVERFLOW_AUTO,
-  eCSSKeyword_visible, NS_STYLE_OVERFLOW_VISIBLE,
-  eCSSKeyword_hidden, NS_STYLE_OVERFLOW_HIDDEN,
-  eCSSKeyword_scroll, NS_STYLE_OVERFLOW_SCROLL,
+  { eCSSKeyword_auto, NS_STYLE_OVERFLOW_AUTO },
+  { eCSSKeyword_visible, NS_STYLE_OVERFLOW_VISIBLE },
+  { eCSSKeyword_hidden, NS_STYLE_OVERFLOW_HIDDEN },
+  { eCSSKeyword_scroll, NS_STYLE_OVERFLOW_SCROLL },
   // Deprecated:
-  eCSSKeyword__moz_scrollbars_none, NS_STYLE_OVERFLOW_HIDDEN,
-  eCSSKeyword__moz_scrollbars_horizontal, NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL,
-  eCSSKeyword__moz_scrollbars_vertical, NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL,
-  eCSSKeyword__moz_hidden_unscrollable, NS_STYLE_OVERFLOW_CLIP,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_scrollbars_none, NS_STYLE_OVERFLOW_HIDDEN },
+  { eCSSKeyword__moz_scrollbars_horizontal, NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL },
+  { eCSSKeyword__moz_scrollbars_vertical, NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL },
+  { eCSSKeyword__moz_hidden_unscrollable, NS_STYLE_OVERFLOW_CLIP },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kOverflowClipBoxKTable[] = {
-  eCSSKeyword_padding_box, NS_STYLE_OVERFLOW_CLIP_BOX_PADDING_BOX,
-  eCSSKeyword_content_box, NS_STYLE_OVERFLOW_CLIP_BOX_CONTENT_BOX,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_padding_box, NS_STYLE_OVERFLOW_CLIP_BOX_PADDING_BOX },
+  { eCSSKeyword_content_box, NS_STYLE_OVERFLOW_CLIP_BOX_CONTENT_BOX },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kOverflowSubKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_OVERFLOW_AUTO,
-  eCSSKeyword_visible, NS_STYLE_OVERFLOW_VISIBLE,
-  eCSSKeyword_hidden, NS_STYLE_OVERFLOW_HIDDEN,
-  eCSSKeyword_scroll, NS_STYLE_OVERFLOW_SCROLL,
+  { eCSSKeyword_auto, NS_STYLE_OVERFLOW_AUTO },
+  { eCSSKeyword_visible, NS_STYLE_OVERFLOW_VISIBLE },
+  { eCSSKeyword_hidden, NS_STYLE_OVERFLOW_HIDDEN },
+  { eCSSKeyword_scroll, NS_STYLE_OVERFLOW_SCROLL },
   // Deprecated:
-  eCSSKeyword__moz_hidden_unscrollable, NS_STYLE_OVERFLOW_CLIP,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_hidden_unscrollable, NS_STYLE_OVERFLOW_CLIP },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kPageBreakKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_PAGE_BREAK_AUTO,
-  eCSSKeyword_always, NS_STYLE_PAGE_BREAK_ALWAYS,
-  eCSSKeyword_avoid, NS_STYLE_PAGE_BREAK_AVOID,
-  eCSSKeyword_left, NS_STYLE_PAGE_BREAK_LEFT,
-  eCSSKeyword_right, NS_STYLE_PAGE_BREAK_RIGHT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_STYLE_PAGE_BREAK_AUTO },
+  { eCSSKeyword_always, NS_STYLE_PAGE_BREAK_ALWAYS },
+  { eCSSKeyword_avoid, NS_STYLE_PAGE_BREAK_AVOID },
+  { eCSSKeyword_left, NS_STYLE_PAGE_BREAK_LEFT },
+  { eCSSKeyword_right, NS_STYLE_PAGE_BREAK_RIGHT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kPageBreakInsideKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_PAGE_BREAK_AUTO,
-  eCSSKeyword_avoid, NS_STYLE_PAGE_BREAK_AVOID,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_STYLE_PAGE_BREAK_AUTO },
+  { eCSSKeyword_avoid, NS_STYLE_PAGE_BREAK_AVOID },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kPageMarksKTable[] = {
-  eCSSKeyword_none, NS_STYLE_PAGE_MARKS_NONE,
-  eCSSKeyword_crop, NS_STYLE_PAGE_MARKS_CROP,
-  eCSSKeyword_cross, NS_STYLE_PAGE_MARKS_REGISTER,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_PAGE_MARKS_NONE },
+  { eCSSKeyword_crop, NS_STYLE_PAGE_MARKS_CROP },
+  { eCSSKeyword_cross, NS_STYLE_PAGE_MARKS_REGISTER },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kPageSizeKTable[] = {
-  eCSSKeyword_landscape, NS_STYLE_PAGE_SIZE_LANDSCAPE,
-  eCSSKeyword_portrait, NS_STYLE_PAGE_SIZE_PORTRAIT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_landscape, NS_STYLE_PAGE_SIZE_LANDSCAPE },
+  { eCSSKeyword_portrait, NS_STYLE_PAGE_SIZE_PORTRAIT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kPointerEventsKTable[] = {
-  eCSSKeyword_none, NS_STYLE_POINTER_EVENTS_NONE,
-  eCSSKeyword_visiblepainted, NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED,
-  eCSSKeyword_visiblefill, NS_STYLE_POINTER_EVENTS_VISIBLEFILL,
-  eCSSKeyword_visiblestroke, NS_STYLE_POINTER_EVENTS_VISIBLESTROKE,
-  eCSSKeyword_visible, NS_STYLE_POINTER_EVENTS_VISIBLE,
-  eCSSKeyword_painted, NS_STYLE_POINTER_EVENTS_PAINTED,
-  eCSSKeyword_fill, NS_STYLE_POINTER_EVENTS_FILL,
-  eCSSKeyword_stroke, NS_STYLE_POINTER_EVENTS_STROKE,
-  eCSSKeyword_all, NS_STYLE_POINTER_EVENTS_ALL,
-  eCSSKeyword_auto, NS_STYLE_POINTER_EVENTS_AUTO,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_none, NS_STYLE_POINTER_EVENTS_NONE },
+  { eCSSKeyword_visiblepainted, NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED },
+  { eCSSKeyword_visiblefill, NS_STYLE_POINTER_EVENTS_VISIBLEFILL },
+  { eCSSKeyword_visiblestroke, NS_STYLE_POINTER_EVENTS_VISIBLESTROKE },
+  { eCSSKeyword_visible, NS_STYLE_POINTER_EVENTS_VISIBLE },
+  { eCSSKeyword_painted, NS_STYLE_POINTER_EVENTS_PAINTED },
+  { eCSSKeyword_fill, NS_STYLE_POINTER_EVENTS_FILL },
+  { eCSSKeyword_stroke, NS_STYLE_POINTER_EVENTS_STROKE },
+  { eCSSKeyword_all, NS_STYLE_POINTER_EVENTS_ALL },
+  { eCSSKeyword_auto, NS_STYLE_POINTER_EVENTS_AUTO },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 KTableValue nsCSSProps::kPositionKTable[] = {
-  eCSSKeyword_static, NS_STYLE_POSITION_STATIC,
-  eCSSKeyword_relative, NS_STYLE_POSITION_RELATIVE,
-  eCSSKeyword_absolute, NS_STYLE_POSITION_ABSOLUTE,
-  eCSSKeyword_fixed, NS_STYLE_POSITION_FIXED,
+  { eCSSKeyword_static, NS_STYLE_POSITION_STATIC },
+  { eCSSKeyword_relative, NS_STYLE_POSITION_RELATIVE },
+  { eCSSKeyword_absolute, NS_STYLE_POSITION_ABSOLUTE },
+  { eCSSKeyword_fixed, NS_STYLE_POSITION_FIXED },
   // The next entry is controlled by the layout.css.sticky.enabled pref.
-  eCSSKeyword_sticky, NS_STYLE_POSITION_STICKY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_sticky, NS_STYLE_POSITION_STICKY },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kRadialGradientShapeKTable[] = {
-  eCSSKeyword_circle,  NS_STYLE_GRADIENT_SHAPE_CIRCULAR,
-  eCSSKeyword_ellipse, NS_STYLE_GRADIENT_SHAPE_ELLIPTICAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_circle,  NS_STYLE_GRADIENT_SHAPE_CIRCULAR },
+  { eCSSKeyword_ellipse, NS_STYLE_GRADIENT_SHAPE_ELLIPTICAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kRadialGradientSizeKTable[] = {
-  eCSSKeyword_closest_side,    NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE,
-  eCSSKeyword_closest_corner,  NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER,
-  eCSSKeyword_farthest_side,   NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE,
-  eCSSKeyword_farthest_corner, NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_closest_side,    NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE },
+  { eCSSKeyword_closest_corner,  NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER },
+  { eCSSKeyword_farthest_side,   NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE },
+  { eCSSKeyword_farthest_corner, NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER },
+  { eCSSKeyword_UNKNOWN,         -1 }
 };
 
 const KTableValue nsCSSProps::kRadialGradientLegacySizeKTable[] = {
-  eCSSKeyword_closest_side,    NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE,
-  eCSSKeyword_closest_corner,  NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER,
-  eCSSKeyword_farthest_side,   NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE,
-  eCSSKeyword_farthest_corner, NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER,
+  { eCSSKeyword_closest_side,    NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE },
+  { eCSSKeyword_closest_corner,  NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER },
+  { eCSSKeyword_farthest_side,   NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE },
+  { eCSSKeyword_farthest_corner, NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER },
   // synonyms
-  eCSSKeyword_contain,         NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE,
-  eCSSKeyword_cover,           NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_contain,         NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE },
+  { eCSSKeyword_cover,           NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER },
+  { eCSSKeyword_UNKNOWN,         -1 }
 };
 
 const KTableValue nsCSSProps::kResizeKTable[] = {
-  eCSSKeyword_none,       NS_STYLE_RESIZE_NONE,
-  eCSSKeyword_both,       NS_STYLE_RESIZE_BOTH,
-  eCSSKeyword_horizontal, NS_STYLE_RESIZE_HORIZONTAL,
-  eCSSKeyword_vertical,   NS_STYLE_RESIZE_VERTICAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,       NS_STYLE_RESIZE_NONE },
+  { eCSSKeyword_both,       NS_STYLE_RESIZE_BOTH },
+  { eCSSKeyword_horizontal, NS_STYLE_RESIZE_HORIZONTAL },
+  { eCSSKeyword_vertical,   NS_STYLE_RESIZE_VERTICAL },
+  { eCSSKeyword_UNKNOWN,    -1 }
 };
 
 const KTableValue nsCSSProps::kRubyAlignKTable[] = {
-  eCSSKeyword_start, NS_STYLE_RUBY_ALIGN_START,
-  eCSSKeyword_center, NS_STYLE_RUBY_ALIGN_CENTER,
-  eCSSKeyword_space_between, NS_STYLE_RUBY_ALIGN_SPACE_BETWEEN,
-  eCSSKeyword_space_around, NS_STYLE_RUBY_ALIGN_SPACE_AROUND,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_start, NS_STYLE_RUBY_ALIGN_START },
+  { eCSSKeyword_center, NS_STYLE_RUBY_ALIGN_CENTER },
+  { eCSSKeyword_space_between, NS_STYLE_RUBY_ALIGN_SPACE_BETWEEN },
+  { eCSSKeyword_space_around, NS_STYLE_RUBY_ALIGN_SPACE_AROUND },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kRubyPositionKTable[] = {
-  eCSSKeyword_over, NS_STYLE_RUBY_POSITION_OVER,
-  eCSSKeyword_under, NS_STYLE_RUBY_POSITION_UNDER,
+  { eCSSKeyword_over, NS_STYLE_RUBY_POSITION_OVER },
+  { eCSSKeyword_under, NS_STYLE_RUBY_POSITION_UNDER },
   // bug 1055672 for 'inter-character' support
-  // eCSSKeyword_inter_character, NS_STYLE_RUBY_POSITION_INTER_CHARACTER,
-  eCSSKeyword_UNKNOWN, -1
+  // { eCSSKeyword_inter_character, NS_STYLE_RUBY_POSITION_INTER_CHARACTER },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kScrollBehaviorKTable[] = {
-  eCSSKeyword_auto,       NS_STYLE_SCROLL_BEHAVIOR_AUTO,
-  eCSSKeyword_smooth,     NS_STYLE_SCROLL_BEHAVIOR_SMOOTH,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto,       NS_STYLE_SCROLL_BEHAVIOR_AUTO },
+  { eCSSKeyword_smooth,     NS_STYLE_SCROLL_BEHAVIOR_SMOOTH },
+  { eCSSKeyword_UNKNOWN,    -1 }
 };
 
 const KTableValue nsCSSProps::kScrollSnapTypeKTable[] = {
-  eCSSKeyword_none,      NS_STYLE_SCROLL_SNAP_TYPE_NONE,
-  eCSSKeyword_mandatory, NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY,
-  eCSSKeyword_proximity, NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,      NS_STYLE_SCROLL_SNAP_TYPE_NONE },
+  { eCSSKeyword_mandatory, NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY },
+  { eCSSKeyword_proximity, NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY },
+  { eCSSKeyword_UNKNOWN,   -1 }
 };
 
 const KTableValue nsCSSProps::kStackSizingKTable[] = {
-  eCSSKeyword_ignore, NS_STYLE_STACK_SIZING_IGNORE,
-  eCSSKeyword_stretch_to_fit, NS_STYLE_STACK_SIZING_STRETCH_TO_FIT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_ignore, NS_STYLE_STACK_SIZING_IGNORE },
+  { eCSSKeyword_stretch_to_fit, NS_STYLE_STACK_SIZING_STRETCH_TO_FIT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTableLayoutKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_TABLE_LAYOUT_AUTO,
-  eCSSKeyword_fixed, NS_STYLE_TABLE_LAYOUT_FIXED,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_STYLE_TABLE_LAYOUT_AUTO },
+  { eCSSKeyword_fixed, NS_STYLE_TABLE_LAYOUT_FIXED },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 KTableValue nsCSSProps::kTextAlignKTable[] = {
-  eCSSKeyword_left, NS_STYLE_TEXT_ALIGN_LEFT,
-  eCSSKeyword_right, NS_STYLE_TEXT_ALIGN_RIGHT,
-  eCSSKeyword_center, NS_STYLE_TEXT_ALIGN_CENTER,
-  eCSSKeyword_justify, NS_STYLE_TEXT_ALIGN_JUSTIFY,
-  eCSSKeyword__moz_center, NS_STYLE_TEXT_ALIGN_MOZ_CENTER,
-  eCSSKeyword__moz_right, NS_STYLE_TEXT_ALIGN_MOZ_RIGHT,
-  eCSSKeyword__moz_left, NS_STYLE_TEXT_ALIGN_MOZ_LEFT,
-  eCSSKeyword_start, NS_STYLE_TEXT_ALIGN_DEFAULT,
-  eCSSKeyword_end, NS_STYLE_TEXT_ALIGN_END,
-  eCSSKeyword_true, NS_STYLE_TEXT_ALIGN_TRUE,
-  eCSSKeyword_match_parent, NS_STYLE_TEXT_ALIGN_MATCH_PARENT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_left, NS_STYLE_TEXT_ALIGN_LEFT },
+  { eCSSKeyword_right, NS_STYLE_TEXT_ALIGN_RIGHT },
+  { eCSSKeyword_center, NS_STYLE_TEXT_ALIGN_CENTER },
+  { eCSSKeyword_justify, NS_STYLE_TEXT_ALIGN_JUSTIFY },
+  { eCSSKeyword__moz_center, NS_STYLE_TEXT_ALIGN_MOZ_CENTER },
+  { eCSSKeyword__moz_right, NS_STYLE_TEXT_ALIGN_MOZ_RIGHT },
+  { eCSSKeyword__moz_left, NS_STYLE_TEXT_ALIGN_MOZ_LEFT },
+  { eCSSKeyword_start, NS_STYLE_TEXT_ALIGN_DEFAULT },
+  { eCSSKeyword_end, NS_STYLE_TEXT_ALIGN_END },
+  { eCSSKeyword_true, NS_STYLE_TEXT_ALIGN_TRUE },
+  { eCSSKeyword_match_parent, NS_STYLE_TEXT_ALIGN_MATCH_PARENT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 KTableValue nsCSSProps::kTextAlignLastKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_TEXT_ALIGN_AUTO,
-  eCSSKeyword_left, NS_STYLE_TEXT_ALIGN_LEFT,
-  eCSSKeyword_right, NS_STYLE_TEXT_ALIGN_RIGHT,
-  eCSSKeyword_center, NS_STYLE_TEXT_ALIGN_CENTER,
-  eCSSKeyword_justify, NS_STYLE_TEXT_ALIGN_JUSTIFY,
-  eCSSKeyword_start, NS_STYLE_TEXT_ALIGN_DEFAULT,
-  eCSSKeyword_end, NS_STYLE_TEXT_ALIGN_END,
-  eCSSKeyword_true, NS_STYLE_TEXT_ALIGN_TRUE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_auto, NS_STYLE_TEXT_ALIGN_AUTO },
+  { eCSSKeyword_left, NS_STYLE_TEXT_ALIGN_LEFT },
+  { eCSSKeyword_right, NS_STYLE_TEXT_ALIGN_RIGHT },
+  { eCSSKeyword_center, NS_STYLE_TEXT_ALIGN_CENTER },
+  { eCSSKeyword_justify, NS_STYLE_TEXT_ALIGN_JUSTIFY },
+  { eCSSKeyword_start, NS_STYLE_TEXT_ALIGN_DEFAULT },
+  { eCSSKeyword_end, NS_STYLE_TEXT_ALIGN_END },
+  { eCSSKeyword_true, NS_STYLE_TEXT_ALIGN_TRUE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextCombineUprightKTable[] = {
-  eCSSKeyword_none, NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE,
-  eCSSKeyword_all, NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL,
-  eCSSKeyword_digits, NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_2,  // w/o number ==> 2
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE },
+  { eCSSKeyword_all, NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL },
+  { eCSSKeyword_digits, NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_2 }, // w/o number ==> 2
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextDecorationLineKTable[] = {
-  eCSSKeyword_none, NS_STYLE_TEXT_DECORATION_LINE_NONE,
-  eCSSKeyword_underline, NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE,
-  eCSSKeyword_overline, NS_STYLE_TEXT_DECORATION_LINE_OVERLINE,
-  eCSSKeyword_line_through, NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH,
-  eCSSKeyword_blink, NS_STYLE_TEXT_DECORATION_LINE_BLINK,
-  eCSSKeyword__moz_anchor_decoration, NS_STYLE_TEXT_DECORATION_LINE_PREF_ANCHORS,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_TEXT_DECORATION_LINE_NONE },
+  { eCSSKeyword_underline, NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE },
+  { eCSSKeyword_overline, NS_STYLE_TEXT_DECORATION_LINE_OVERLINE },
+  { eCSSKeyword_line_through, NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH },
+  { eCSSKeyword_blink, NS_STYLE_TEXT_DECORATION_LINE_BLINK },
+  { eCSSKeyword__moz_anchor_decoration, NS_STYLE_TEXT_DECORATION_LINE_PREF_ANCHORS },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextDecorationStyleKTable[] = {
-  eCSSKeyword__moz_none, NS_STYLE_TEXT_DECORATION_STYLE_NONE,
-  eCSSKeyword_solid, NS_STYLE_TEXT_DECORATION_STYLE_SOLID,
-  eCSSKeyword_double, NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE,
-  eCSSKeyword_dotted, NS_STYLE_TEXT_DECORATION_STYLE_DOTTED,
-  eCSSKeyword_dashed, NS_STYLE_TEXT_DECORATION_STYLE_DASHED,
-  eCSSKeyword_wavy, NS_STYLE_TEXT_DECORATION_STYLE_WAVY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_none, NS_STYLE_TEXT_DECORATION_STYLE_NONE },
+  { eCSSKeyword_solid, NS_STYLE_TEXT_DECORATION_STYLE_SOLID },
+  { eCSSKeyword_double, NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE },
+  { eCSSKeyword_dotted, NS_STYLE_TEXT_DECORATION_STYLE_DOTTED },
+  { eCSSKeyword_dashed, NS_STYLE_TEXT_DECORATION_STYLE_DASHED },
+  { eCSSKeyword_wavy, NS_STYLE_TEXT_DECORATION_STYLE_WAVY },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextOrientationKTable[] = {
-  eCSSKeyword_mixed, NS_STYLE_TEXT_ORIENTATION_MIXED,
-  eCSSKeyword_upright, NS_STYLE_TEXT_ORIENTATION_UPRIGHT,
-  eCSSKeyword_sideways, NS_STYLE_TEXT_ORIENTATION_SIDEWAYS,
-  eCSSKeyword_sideways_right, NS_STYLE_TEXT_ORIENTATION_SIDEWAYS,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_mixed, NS_STYLE_TEXT_ORIENTATION_MIXED },
+  { eCSSKeyword_upright, NS_STYLE_TEXT_ORIENTATION_UPRIGHT },
+  { eCSSKeyword_sideways, NS_STYLE_TEXT_ORIENTATION_SIDEWAYS },
+  { eCSSKeyword_sideways_right, NS_STYLE_TEXT_ORIENTATION_SIDEWAYS },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextOverflowKTable[] = {
-  eCSSKeyword_clip, NS_STYLE_TEXT_OVERFLOW_CLIP,
-  eCSSKeyword_ellipsis, NS_STYLE_TEXT_OVERFLOW_ELLIPSIS,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_clip, NS_STYLE_TEXT_OVERFLOW_CLIP },
+  { eCSSKeyword_ellipsis, NS_STYLE_TEXT_OVERFLOW_ELLIPSIS },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextTransformKTable[] = {
-  eCSSKeyword_none, NS_STYLE_TEXT_TRANSFORM_NONE,
-  eCSSKeyword_capitalize, NS_STYLE_TEXT_TRANSFORM_CAPITALIZE,
-  eCSSKeyword_lowercase, NS_STYLE_TEXT_TRANSFORM_LOWERCASE,
-  eCSSKeyword_uppercase, NS_STYLE_TEXT_TRANSFORM_UPPERCASE,
-  eCSSKeyword_full_width, NS_STYLE_TEXT_TRANSFORM_FULLWIDTH,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_TEXT_TRANSFORM_NONE },
+  { eCSSKeyword_capitalize, NS_STYLE_TEXT_TRANSFORM_CAPITALIZE },
+  { eCSSKeyword_lowercase, NS_STYLE_TEXT_TRANSFORM_LOWERCASE },
+  { eCSSKeyword_uppercase, NS_STYLE_TEXT_TRANSFORM_UPPERCASE },
+  { eCSSKeyword_full_width, NS_STYLE_TEXT_TRANSFORM_FULLWIDTH },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTouchActionKTable[] = {
-  eCSSKeyword_none,         NS_STYLE_TOUCH_ACTION_NONE,
-  eCSSKeyword_auto,         NS_STYLE_TOUCH_ACTION_AUTO,
-  eCSSKeyword_pan_x,        NS_STYLE_TOUCH_ACTION_PAN_X,
-  eCSSKeyword_pan_y,        NS_STYLE_TOUCH_ACTION_PAN_Y,
-  eCSSKeyword_manipulation, NS_STYLE_TOUCH_ACTION_MANIPULATION,
-  eCSSKeyword_UNKNOWN,      -1
+  { eCSSKeyword_none,         NS_STYLE_TOUCH_ACTION_NONE },
+  { eCSSKeyword_auto,         NS_STYLE_TOUCH_ACTION_AUTO },
+  { eCSSKeyword_pan_x,        NS_STYLE_TOUCH_ACTION_PAN_X },
+  { eCSSKeyword_pan_y,        NS_STYLE_TOUCH_ACTION_PAN_Y },
+  { eCSSKeyword_manipulation, NS_STYLE_TOUCH_ACTION_MANIPULATION },
+  { eCSSKeyword_UNKNOWN,      -1 }
 };
 
 const KTableValue nsCSSProps::kTopLayerKTable[] = {
-  eCSSKeyword_none,     NS_STYLE_TOP_LAYER_NONE,
-  eCSSKeyword_top,      NS_STYLE_TOP_LAYER_TOP,
-  eCSSKeyword_UNKNOWN,  -1
+  { eCSSKeyword_none,     NS_STYLE_TOP_LAYER_NONE },
+  { eCSSKeyword_top,      NS_STYLE_TOP_LAYER_TOP },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTransformBoxKTable[] = {
-  eCSSKeyword_border_box, NS_STYLE_TRANSFORM_BOX_BORDER_BOX,
-  eCSSKeyword_fill_box, NS_STYLE_TRANSFORM_BOX_FILL_BOX,
-  eCSSKeyword_view_box, NS_STYLE_TRANSFORM_BOX_VIEW_BOX,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_border_box, NS_STYLE_TRANSFORM_BOX_BORDER_BOX },
+  { eCSSKeyword_fill_box, NS_STYLE_TRANSFORM_BOX_FILL_BOX },
+  { eCSSKeyword_view_box, NS_STYLE_TRANSFORM_BOX_VIEW_BOX },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTransitionTimingFunctionKTable[] = {
-  eCSSKeyword_ease, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE,
-  eCSSKeyword_linear, NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR,
-  eCSSKeyword_ease_in, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN,
-  eCSSKeyword_ease_out, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_OUT,
-  eCSSKeyword_ease_in_out, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN_OUT,
-  eCSSKeyword_step_start, NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_START,
-  eCSSKeyword_step_end, NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_END,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_ease, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE },
+  { eCSSKeyword_linear, NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR },
+  { eCSSKeyword_ease_in, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN },
+  { eCSSKeyword_ease_out, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_OUT },
+  { eCSSKeyword_ease_in_out, NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN_OUT },
+  { eCSSKeyword_step_start, NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_START },
+  { eCSSKeyword_step_end, NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_END },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kUnicodeBidiKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_UNICODE_BIDI_NORMAL,
-  eCSSKeyword_embed, NS_STYLE_UNICODE_BIDI_EMBED,
-  eCSSKeyword_bidi_override, NS_STYLE_UNICODE_BIDI_OVERRIDE,
-  eCSSKeyword__moz_isolate, NS_STYLE_UNICODE_BIDI_ISOLATE,
-  eCSSKeyword__moz_isolate_override, NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE,
-  eCSSKeyword__moz_plaintext, NS_STYLE_UNICODE_BIDI_PLAINTEXT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_UNICODE_BIDI_NORMAL },
+  { eCSSKeyword_embed, NS_STYLE_UNICODE_BIDI_EMBED },
+  { eCSSKeyword_bidi_override, NS_STYLE_UNICODE_BIDI_OVERRIDE },
+  { eCSSKeyword__moz_isolate, NS_STYLE_UNICODE_BIDI_ISOLATE },
+  { eCSSKeyword__moz_isolate_override, NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE },
+  { eCSSKeyword__moz_plaintext, NS_STYLE_UNICODE_BIDI_PLAINTEXT },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kUserFocusKTable[] = {
-  eCSSKeyword_none,           NS_STYLE_USER_FOCUS_NONE,
-  eCSSKeyword_normal,         NS_STYLE_USER_FOCUS_NORMAL,
-  eCSSKeyword_ignore,         NS_STYLE_USER_FOCUS_IGNORE,
-  eCSSKeyword_select_all,     NS_STYLE_USER_FOCUS_SELECT_ALL,
-  eCSSKeyword_select_before,  NS_STYLE_USER_FOCUS_SELECT_BEFORE,
-  eCSSKeyword_select_after,   NS_STYLE_USER_FOCUS_SELECT_AFTER,
-  eCSSKeyword_select_same,    NS_STYLE_USER_FOCUS_SELECT_SAME,
-  eCSSKeyword_select_menu,    NS_STYLE_USER_FOCUS_SELECT_MENU,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,           NS_STYLE_USER_FOCUS_NONE },
+  { eCSSKeyword_normal,         NS_STYLE_USER_FOCUS_NORMAL },
+  { eCSSKeyword_ignore,         NS_STYLE_USER_FOCUS_IGNORE },
+  { eCSSKeyword_select_all,     NS_STYLE_USER_FOCUS_SELECT_ALL },
+  { eCSSKeyword_select_before,  NS_STYLE_USER_FOCUS_SELECT_BEFORE },
+  { eCSSKeyword_select_after,   NS_STYLE_USER_FOCUS_SELECT_AFTER },
+  { eCSSKeyword_select_same,    NS_STYLE_USER_FOCUS_SELECT_SAME },
+  { eCSSKeyword_select_menu,    NS_STYLE_USER_FOCUS_SELECT_MENU },
+  { eCSSKeyword_UNKNOWN,        -1 }
 };
 
 const KTableValue nsCSSProps::kUserInputKTable[] = {
-  eCSSKeyword_none,     NS_STYLE_USER_INPUT_NONE,
-  eCSSKeyword_auto,     NS_STYLE_USER_INPUT_AUTO,
-  eCSSKeyword_enabled,  NS_STYLE_USER_INPUT_ENABLED,
-  eCSSKeyword_disabled, NS_STYLE_USER_INPUT_DISABLED,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,     NS_STYLE_USER_INPUT_NONE },
+  { eCSSKeyword_auto,     NS_STYLE_USER_INPUT_AUTO },
+  { eCSSKeyword_enabled,  NS_STYLE_USER_INPUT_ENABLED },
+  { eCSSKeyword_disabled, NS_STYLE_USER_INPUT_DISABLED },
+  { eCSSKeyword_UNKNOWN,  -1 }
 };
 
 const KTableValue nsCSSProps::kUserModifyKTable[] = {
-  eCSSKeyword_read_only,  NS_STYLE_USER_MODIFY_READ_ONLY,
-  eCSSKeyword_read_write, NS_STYLE_USER_MODIFY_READ_WRITE,
-  eCSSKeyword_write_only, NS_STYLE_USER_MODIFY_WRITE_ONLY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_read_only,  NS_STYLE_USER_MODIFY_READ_ONLY },
+  { eCSSKeyword_read_write, NS_STYLE_USER_MODIFY_READ_WRITE },
+  { eCSSKeyword_write_only, NS_STYLE_USER_MODIFY_WRITE_ONLY },
+  { eCSSKeyword_UNKNOWN,    -1 }
 };
 
 const KTableValue nsCSSProps::kUserSelectKTable[] = {
-  eCSSKeyword_none,       NS_STYLE_USER_SELECT_NONE,
-  eCSSKeyword_auto,       NS_STYLE_USER_SELECT_AUTO,
-  eCSSKeyword_text,       NS_STYLE_USER_SELECT_TEXT,
-  eCSSKeyword_element,    NS_STYLE_USER_SELECT_ELEMENT,
-  eCSSKeyword_elements,   NS_STYLE_USER_SELECT_ELEMENTS,
-  eCSSKeyword_all,        NS_STYLE_USER_SELECT_ALL,
-  eCSSKeyword_toggle,     NS_STYLE_USER_SELECT_TOGGLE,
-  eCSSKeyword_tri_state,  NS_STYLE_USER_SELECT_TRI_STATE,
-  eCSSKeyword__moz_all,   NS_STYLE_USER_SELECT_MOZ_ALL,
-  eCSSKeyword__moz_none,  NS_STYLE_USER_SELECT_NONE,
-  eCSSKeyword__moz_text,  NS_STYLE_USER_SELECT_MOZ_TEXT,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none,       NS_STYLE_USER_SELECT_NONE },
+  { eCSSKeyword_auto,       NS_STYLE_USER_SELECT_AUTO },
+  { eCSSKeyword_text,       NS_STYLE_USER_SELECT_TEXT },
+  { eCSSKeyword_element,    NS_STYLE_USER_SELECT_ELEMENT },
+  { eCSSKeyword_elements,   NS_STYLE_USER_SELECT_ELEMENTS },
+  { eCSSKeyword_all,        NS_STYLE_USER_SELECT_ALL },
+  { eCSSKeyword_toggle,     NS_STYLE_USER_SELECT_TOGGLE },
+  { eCSSKeyword_tri_state,  NS_STYLE_USER_SELECT_TRI_STATE },
+  { eCSSKeyword__moz_all,   NS_STYLE_USER_SELECT_MOZ_ALL },
+  { eCSSKeyword__moz_none,  NS_STYLE_USER_SELECT_NONE },
+  { eCSSKeyword__moz_text,  NS_STYLE_USER_SELECT_MOZ_TEXT },
+  { eCSSKeyword_UNKNOWN,    -1 }
 };
 
 const KTableValue nsCSSProps::kVerticalAlignKTable[] = {
-  eCSSKeyword_baseline, NS_STYLE_VERTICAL_ALIGN_BASELINE,
-  eCSSKeyword_sub, NS_STYLE_VERTICAL_ALIGN_SUB,
-  eCSSKeyword_super, NS_STYLE_VERTICAL_ALIGN_SUPER,
-  eCSSKeyword_top, NS_STYLE_VERTICAL_ALIGN_TOP,
-  eCSSKeyword_text_top, NS_STYLE_VERTICAL_ALIGN_TEXT_TOP,
-  eCSSKeyword_middle, NS_STYLE_VERTICAL_ALIGN_MIDDLE,
-  eCSSKeyword__moz_middle_with_baseline, NS_STYLE_VERTICAL_ALIGN_MIDDLE_WITH_BASELINE,
-  eCSSKeyword_bottom, NS_STYLE_VERTICAL_ALIGN_BOTTOM,
-  eCSSKeyword_text_bottom, NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_baseline, NS_STYLE_VERTICAL_ALIGN_BASELINE },
+  { eCSSKeyword_sub, NS_STYLE_VERTICAL_ALIGN_SUB },
+  { eCSSKeyword_super, NS_STYLE_VERTICAL_ALIGN_SUPER },
+  { eCSSKeyword_top, NS_STYLE_VERTICAL_ALIGN_TOP },
+  { eCSSKeyword_text_top, NS_STYLE_VERTICAL_ALIGN_TEXT_TOP },
+  { eCSSKeyword_middle, NS_STYLE_VERTICAL_ALIGN_MIDDLE },
+  { eCSSKeyword__moz_middle_with_baseline, NS_STYLE_VERTICAL_ALIGN_MIDDLE_WITH_BASELINE },
+  { eCSSKeyword_bottom, NS_STYLE_VERTICAL_ALIGN_BOTTOM },
+  { eCSSKeyword_text_bottom, NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kVisibilityKTable[] = {
-  eCSSKeyword_visible, NS_STYLE_VISIBILITY_VISIBLE,
-  eCSSKeyword_hidden, NS_STYLE_VISIBILITY_HIDDEN,
-  eCSSKeyword_collapse, NS_STYLE_VISIBILITY_COLLAPSE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_visible, NS_STYLE_VISIBILITY_VISIBLE },
+  { eCSSKeyword_hidden, NS_STYLE_VISIBILITY_HIDDEN },
+  { eCSSKeyword_collapse, NS_STYLE_VISIBILITY_COLLAPSE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWhitespaceKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_WHITESPACE_NORMAL,
-  eCSSKeyword_pre, NS_STYLE_WHITESPACE_PRE,
-  eCSSKeyword_nowrap, NS_STYLE_WHITESPACE_NOWRAP,
-  eCSSKeyword_pre_wrap, NS_STYLE_WHITESPACE_PRE_WRAP,
-  eCSSKeyword_pre_line, NS_STYLE_WHITESPACE_PRE_LINE,
-  eCSSKeyword__moz_pre_space, NS_STYLE_WHITESPACE_PRE_SPACE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_WHITESPACE_NORMAL },
+  { eCSSKeyword_pre, NS_STYLE_WHITESPACE_PRE },
+  { eCSSKeyword_nowrap, NS_STYLE_WHITESPACE_NOWRAP },
+  { eCSSKeyword_pre_wrap, NS_STYLE_WHITESPACE_PRE_WRAP },
+  { eCSSKeyword_pre_line, NS_STYLE_WHITESPACE_PRE_LINE },
+  { eCSSKeyword__moz_pre_space, NS_STYLE_WHITESPACE_PRE_SPACE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWidthKTable[] = {
-  eCSSKeyword__moz_max_content, NS_STYLE_WIDTH_MAX_CONTENT,
-  eCSSKeyword__moz_min_content, NS_STYLE_WIDTH_MIN_CONTENT,
-  eCSSKeyword__moz_fit_content, NS_STYLE_WIDTH_FIT_CONTENT,
-  eCSSKeyword__moz_available, NS_STYLE_WIDTH_AVAILABLE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword__moz_max_content, NS_STYLE_WIDTH_MAX_CONTENT },
+  { eCSSKeyword__moz_min_content, NS_STYLE_WIDTH_MIN_CONTENT },
+  { eCSSKeyword__moz_fit_content, NS_STYLE_WIDTH_FIT_CONTENT },
+  { eCSSKeyword__moz_available, NS_STYLE_WIDTH_AVAILABLE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWindowDraggingKTable[] = {
-  eCSSKeyword_drag, NS_STYLE_WINDOW_DRAGGING_DRAG,
-  eCSSKeyword_no_drag, NS_STYLE_WINDOW_DRAGGING_NO_DRAG,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_drag, NS_STYLE_WINDOW_DRAGGING_DRAG },
+  { eCSSKeyword_no_drag, NS_STYLE_WINDOW_DRAGGING_NO_DRAG },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWindowShadowKTable[] = {
-  eCSSKeyword_none, NS_STYLE_WINDOW_SHADOW_NONE,
-  eCSSKeyword_default, NS_STYLE_WINDOW_SHADOW_DEFAULT,
-  eCSSKeyword_menu, NS_STYLE_WINDOW_SHADOW_MENU,
-  eCSSKeyword_tooltip, NS_STYLE_WINDOW_SHADOW_TOOLTIP,
-  eCSSKeyword_sheet, NS_STYLE_WINDOW_SHADOW_SHEET,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_none, NS_STYLE_WINDOW_SHADOW_NONE },
+  { eCSSKeyword_default, NS_STYLE_WINDOW_SHADOW_DEFAULT },
+  { eCSSKeyword_menu, NS_STYLE_WINDOW_SHADOW_MENU },
+  { eCSSKeyword_tooltip, NS_STYLE_WINDOW_SHADOW_TOOLTIP },
+  { eCSSKeyword_sheet, NS_STYLE_WINDOW_SHADOW_SHEET },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWordBreakKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_WORDBREAK_NORMAL,
-  eCSSKeyword_break_all, NS_STYLE_WORDBREAK_BREAK_ALL,
-  eCSSKeyword_keep_all, NS_STYLE_WORDBREAK_KEEP_ALL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_WORDBREAK_NORMAL },
+  { eCSSKeyword_break_all, NS_STYLE_WORDBREAK_BREAK_ALL },
+  { eCSSKeyword_keep_all, NS_STYLE_WORDBREAK_KEEP_ALL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWordWrapKTable[] = {
-  eCSSKeyword_normal, NS_STYLE_WORDWRAP_NORMAL,
-  eCSSKeyword_break_word, NS_STYLE_WORDWRAP_BREAK_WORD,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_WORDWRAP_NORMAL },
+  { eCSSKeyword_break_word, NS_STYLE_WORDWRAP_BREAK_WORD },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kWritingModeKTable[] = {
-  eCSSKeyword_horizontal_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB,
-  eCSSKeyword_vertical_lr, NS_STYLE_WRITING_MODE_VERTICAL_LR,
-  eCSSKeyword_vertical_rl, NS_STYLE_WRITING_MODE_VERTICAL_RL,
-  eCSSKeyword_sideways_lr, NS_STYLE_WRITING_MODE_SIDEWAYS_LR,
-  eCSSKeyword_sideways_rl, NS_STYLE_WRITING_MODE_SIDEWAYS_RL,
-  eCSSKeyword_lr, NS_STYLE_WRITING_MODE_HORIZONTAL_TB,
-  eCSSKeyword_lr_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB,
-  eCSSKeyword_rl, NS_STYLE_WRITING_MODE_HORIZONTAL_TB,
-  eCSSKeyword_rl_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB,
-  eCSSKeyword_tb, NS_STYLE_WRITING_MODE_VERTICAL_RL,
-  eCSSKeyword_tb_rl, NS_STYLE_WRITING_MODE_VERTICAL_RL,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_horizontal_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB },
+  { eCSSKeyword_vertical_lr, NS_STYLE_WRITING_MODE_VERTICAL_LR },
+  { eCSSKeyword_vertical_rl, NS_STYLE_WRITING_MODE_VERTICAL_RL },
+  { eCSSKeyword_sideways_lr, NS_STYLE_WRITING_MODE_SIDEWAYS_LR },
+  { eCSSKeyword_sideways_rl, NS_STYLE_WRITING_MODE_SIDEWAYS_RL },
+  { eCSSKeyword_lr, NS_STYLE_WRITING_MODE_HORIZONTAL_TB },
+  { eCSSKeyword_lr_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB },
+  { eCSSKeyword_rl, NS_STYLE_WRITING_MODE_HORIZONTAL_TB },
+  { eCSSKeyword_rl_tb, NS_STYLE_WRITING_MODE_HORIZONTAL_TB },
+  { eCSSKeyword_tb, NS_STYLE_WRITING_MODE_VERTICAL_RL },
+  { eCSSKeyword_tb_rl, NS_STYLE_WRITING_MODE_VERTICAL_RL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 // Specific keyword tables for XUL.properties
 const KTableValue nsCSSProps::kBoxAlignKTable[] = {
-  eCSSKeyword_stretch,  NS_STYLE_BOX_ALIGN_STRETCH,
-  eCSSKeyword_start,   NS_STYLE_BOX_ALIGN_START,
-  eCSSKeyword_center, NS_STYLE_BOX_ALIGN_CENTER,
-  eCSSKeyword_baseline, NS_STYLE_BOX_ALIGN_BASELINE,
-  eCSSKeyword_end, NS_STYLE_BOX_ALIGN_END,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_stretch, NS_STYLE_BOX_ALIGN_STRETCH },
+  { eCSSKeyword_start, NS_STYLE_BOX_ALIGN_START },
+  { eCSSKeyword_center, NS_STYLE_BOX_ALIGN_CENTER },
+  { eCSSKeyword_baseline, NS_STYLE_BOX_ALIGN_BASELINE },
+  { eCSSKeyword_end, NS_STYLE_BOX_ALIGN_END },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBoxDirectionKTable[] = {
-  eCSSKeyword_normal,  NS_STYLE_BOX_DIRECTION_NORMAL,
-  eCSSKeyword_reverse,   NS_STYLE_BOX_DIRECTION_REVERSE,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_normal, NS_STYLE_BOX_DIRECTION_NORMAL },
+  { eCSSKeyword_reverse, NS_STYLE_BOX_DIRECTION_REVERSE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBoxOrientKTable[] = {
-  eCSSKeyword_horizontal,  NS_STYLE_BOX_ORIENT_HORIZONTAL,
-  eCSSKeyword_vertical,   NS_STYLE_BOX_ORIENT_VERTICAL,
-  eCSSKeyword_inline_axis, NS_STYLE_BOX_ORIENT_HORIZONTAL,
-  eCSSKeyword_block_axis, NS_STYLE_BOX_ORIENT_VERTICAL,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_horizontal, NS_STYLE_BOX_ORIENT_HORIZONTAL },
+  { eCSSKeyword_vertical, NS_STYLE_BOX_ORIENT_VERTICAL },
+  { eCSSKeyword_inline_axis, NS_STYLE_BOX_ORIENT_HORIZONTAL },
+  { eCSSKeyword_block_axis, NS_STYLE_BOX_ORIENT_VERTICAL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kBoxPackKTable[] = {
-  eCSSKeyword_start,  NS_STYLE_BOX_PACK_START,
-  eCSSKeyword_center,   NS_STYLE_BOX_PACK_CENTER,
-  eCSSKeyword_end, NS_STYLE_BOX_PACK_END,
-  eCSSKeyword_justify, NS_STYLE_BOX_PACK_JUSTIFY,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_start, NS_STYLE_BOX_PACK_START },
+  { eCSSKeyword_center, NS_STYLE_BOX_PACK_CENTER },
+  { eCSSKeyword_end, NS_STYLE_BOX_PACK_END },
+  { eCSSKeyword_justify, NS_STYLE_BOX_PACK_JUSTIFY },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 // keyword tables for SVG properties
 
 const KTableValue nsCSSProps::kDominantBaselineKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_DOMINANT_BASELINE_AUTO,
-  eCSSKeyword_use_script, NS_STYLE_DOMINANT_BASELINE_USE_SCRIPT,
-  eCSSKeyword_no_change, NS_STYLE_DOMINANT_BASELINE_NO_CHANGE,
-  eCSSKeyword_reset_size, NS_STYLE_DOMINANT_BASELINE_RESET_SIZE,
-  eCSSKeyword_alphabetic, NS_STYLE_DOMINANT_BASELINE_ALPHABETIC,
-  eCSSKeyword_hanging, NS_STYLE_DOMINANT_BASELINE_HANGING,
-  eCSSKeyword_ideographic, NS_STYLE_DOMINANT_BASELINE_IDEOGRAPHIC,
-  eCSSKeyword_mathematical, NS_STYLE_DOMINANT_BASELINE_MATHEMATICAL,
-  eCSSKeyword_central, NS_STYLE_DOMINANT_BASELINE_CENTRAL,
-  eCSSKeyword_middle, NS_STYLE_DOMINANT_BASELINE_MIDDLE,
-  eCSSKeyword_text_after_edge, NS_STYLE_DOMINANT_BASELINE_TEXT_AFTER_EDGE,
-  eCSSKeyword_text_before_edge, NS_STYLE_DOMINANT_BASELINE_TEXT_BEFORE_EDGE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_auto, NS_STYLE_DOMINANT_BASELINE_AUTO },
+  { eCSSKeyword_use_script, NS_STYLE_DOMINANT_BASELINE_USE_SCRIPT },
+  { eCSSKeyword_no_change, NS_STYLE_DOMINANT_BASELINE_NO_CHANGE },
+  { eCSSKeyword_reset_size, NS_STYLE_DOMINANT_BASELINE_RESET_SIZE },
+  { eCSSKeyword_alphabetic, NS_STYLE_DOMINANT_BASELINE_ALPHABETIC },
+  { eCSSKeyword_hanging, NS_STYLE_DOMINANT_BASELINE_HANGING },
+  { eCSSKeyword_ideographic, NS_STYLE_DOMINANT_BASELINE_IDEOGRAPHIC },
+  { eCSSKeyword_mathematical, NS_STYLE_DOMINANT_BASELINE_MATHEMATICAL },
+  { eCSSKeyword_central, NS_STYLE_DOMINANT_BASELINE_CENTRAL },
+  { eCSSKeyword_middle, NS_STYLE_DOMINANT_BASELINE_MIDDLE },
+  { eCSSKeyword_text_after_edge, NS_STYLE_DOMINANT_BASELINE_TEXT_AFTER_EDGE },
+  { eCSSKeyword_text_before_edge, NS_STYLE_DOMINANT_BASELINE_TEXT_BEFORE_EDGE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFillRuleKTable[] = {
-  eCSSKeyword_nonzero, NS_STYLE_FILL_RULE_NONZERO,
-  eCSSKeyword_evenodd, NS_STYLE_FILL_RULE_EVENODD,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_nonzero, NS_STYLE_FILL_RULE_NONZERO },
+  { eCSSKeyword_evenodd, NS_STYLE_FILL_RULE_EVENODD },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kClipShapeSizingKTable[] = {
-  eCSSKeyword_content_box,   NS_STYLE_CLIP_SHAPE_SIZING_CONTENT,
-  eCSSKeyword_padding_box,   NS_STYLE_CLIP_SHAPE_SIZING_PADDING,
-  eCSSKeyword_border_box,    NS_STYLE_CLIP_SHAPE_SIZING_BORDER,
-  eCSSKeyword_margin_box,    NS_STYLE_CLIP_SHAPE_SIZING_MARGIN,
-  eCSSKeyword_fill_box,      NS_STYLE_CLIP_SHAPE_SIZING_FILL,
-  eCSSKeyword_stroke_box,    NS_STYLE_CLIP_SHAPE_SIZING_STROKE,
-  eCSSKeyword_view_box,      NS_STYLE_CLIP_SHAPE_SIZING_VIEW,
-  eCSSKeyword_UNKNOWN,-1
+  { eCSSKeyword_content_box,   NS_STYLE_CLIP_SHAPE_SIZING_CONTENT },
+  { eCSSKeyword_padding_box,   NS_STYLE_CLIP_SHAPE_SIZING_PADDING },
+  { eCSSKeyword_border_box,    NS_STYLE_CLIP_SHAPE_SIZING_BORDER },
+  { eCSSKeyword_margin_box,    NS_STYLE_CLIP_SHAPE_SIZING_MARGIN },
+  { eCSSKeyword_fill_box,      NS_STYLE_CLIP_SHAPE_SIZING_FILL },
+  { eCSSKeyword_stroke_box,    NS_STYLE_CLIP_SHAPE_SIZING_STROKE },
+  { eCSSKeyword_view_box,      NS_STYLE_CLIP_SHAPE_SIZING_VIEW },
+  { eCSSKeyword_UNKNOWN,       -1 }
 };
 
 const KTableValue nsCSSProps::kShapeRadiusKTable[] = {
-  eCSSKeyword_closest_side, NS_RADIUS_CLOSEST_SIDE,
-  eCSSKeyword_farthest_side, NS_RADIUS_FARTHEST_SIDE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_closest_side, NS_RADIUS_CLOSEST_SIDE },
+  { eCSSKeyword_farthest_side, NS_RADIUS_FARTHEST_SIDE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kFilterFunctionKTable[] = {
-  eCSSKeyword_blur, NS_STYLE_FILTER_BLUR,
-  eCSSKeyword_brightness, NS_STYLE_FILTER_BRIGHTNESS,
-  eCSSKeyword_contrast, NS_STYLE_FILTER_CONTRAST,
-  eCSSKeyword_grayscale, NS_STYLE_FILTER_GRAYSCALE,
-  eCSSKeyword_invert, NS_STYLE_FILTER_INVERT,
-  eCSSKeyword_opacity, NS_STYLE_FILTER_OPACITY,
-  eCSSKeyword_saturate, NS_STYLE_FILTER_SATURATE,
-  eCSSKeyword_sepia, NS_STYLE_FILTER_SEPIA,
-  eCSSKeyword_hue_rotate, NS_STYLE_FILTER_HUE_ROTATE,
-  eCSSKeyword_drop_shadow, NS_STYLE_FILTER_DROP_SHADOW,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_blur, NS_STYLE_FILTER_BLUR },
+  { eCSSKeyword_brightness, NS_STYLE_FILTER_BRIGHTNESS },
+  { eCSSKeyword_contrast, NS_STYLE_FILTER_CONTRAST },
+  { eCSSKeyword_grayscale, NS_STYLE_FILTER_GRAYSCALE },
+  { eCSSKeyword_invert, NS_STYLE_FILTER_INVERT },
+  { eCSSKeyword_opacity, NS_STYLE_FILTER_OPACITY },
+  { eCSSKeyword_saturate, NS_STYLE_FILTER_SATURATE },
+  { eCSSKeyword_sepia, NS_STYLE_FILTER_SEPIA },
+  { eCSSKeyword_hue_rotate, NS_STYLE_FILTER_HUE_ROTATE },
+  { eCSSKeyword_drop_shadow, NS_STYLE_FILTER_DROP_SHADOW },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kImageRenderingKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_IMAGE_RENDERING_AUTO,
-  eCSSKeyword_optimizespeed, NS_STYLE_IMAGE_RENDERING_OPTIMIZESPEED,
-  eCSSKeyword_optimizequality, NS_STYLE_IMAGE_RENDERING_OPTIMIZEQUALITY,
-  eCSSKeyword__moz_crisp_edges, NS_STYLE_IMAGE_RENDERING_CRISPEDGES,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_auto, NS_STYLE_IMAGE_RENDERING_AUTO },
+  { eCSSKeyword_optimizespeed, NS_STYLE_IMAGE_RENDERING_OPTIMIZESPEED },
+  { eCSSKeyword_optimizequality, NS_STYLE_IMAGE_RENDERING_OPTIMIZEQUALITY },
+  { eCSSKeyword__moz_crisp_edges, NS_STYLE_IMAGE_RENDERING_CRISPEDGES },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kMaskTypeKTable[] = {
-  eCSSKeyword_luminance, NS_STYLE_MASK_TYPE_LUMINANCE,
-  eCSSKeyword_alpha, NS_STYLE_MASK_TYPE_ALPHA,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_luminance, NS_STYLE_MASK_TYPE_LUMINANCE },
+  { eCSSKeyword_alpha, NS_STYLE_MASK_TYPE_ALPHA },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kShapeRenderingKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_SHAPE_RENDERING_AUTO,
-  eCSSKeyword_optimizespeed, NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED,
-  eCSSKeyword_crispedges, NS_STYLE_SHAPE_RENDERING_CRISPEDGES,
-  eCSSKeyword_geometricprecision, NS_STYLE_SHAPE_RENDERING_GEOMETRICPRECISION,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_auto, NS_STYLE_SHAPE_RENDERING_AUTO },
+  { eCSSKeyword_optimizespeed, NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED },
+  { eCSSKeyword_crispedges, NS_STYLE_SHAPE_RENDERING_CRISPEDGES },
+  { eCSSKeyword_geometricprecision, NS_STYLE_SHAPE_RENDERING_GEOMETRICPRECISION },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kStrokeLinecapKTable[] = {
-  eCSSKeyword_butt, NS_STYLE_STROKE_LINECAP_BUTT,
-  eCSSKeyword_round, NS_STYLE_STROKE_LINECAP_ROUND,
-  eCSSKeyword_square, NS_STYLE_STROKE_LINECAP_SQUARE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_butt, NS_STYLE_STROKE_LINECAP_BUTT },
+  { eCSSKeyword_round, NS_STYLE_STROKE_LINECAP_ROUND },
+  { eCSSKeyword_square, NS_STYLE_STROKE_LINECAP_SQUARE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kStrokeLinejoinKTable[] = {
-  eCSSKeyword_miter, NS_STYLE_STROKE_LINEJOIN_MITER,
-  eCSSKeyword_round, NS_STYLE_STROKE_LINEJOIN_ROUND,
-  eCSSKeyword_bevel, NS_STYLE_STROKE_LINEJOIN_BEVEL,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_miter, NS_STYLE_STROKE_LINEJOIN_MITER },
+  { eCSSKeyword_round, NS_STYLE_STROKE_LINEJOIN_ROUND },
+  { eCSSKeyword_bevel, NS_STYLE_STROKE_LINEJOIN_BEVEL },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 // Lookup table to store the sole objectValue keyword to let SVG glyphs inherit
 // certain stroke-* properties from the outer text object
 const KTableValue nsCSSProps::kStrokeContextValueKTable[] = {
-  eCSSKeyword_context_value, NS_STYLE_STROKE_PROP_CONTEXT_VALUE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_context_value, NS_STYLE_STROKE_PROP_CONTEXT_VALUE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextAnchorKTable[] = {
-  eCSSKeyword_start, NS_STYLE_TEXT_ANCHOR_START,
-  eCSSKeyword_middle, NS_STYLE_TEXT_ANCHOR_MIDDLE,
-  eCSSKeyword_end, NS_STYLE_TEXT_ANCHOR_END,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_start, NS_STYLE_TEXT_ANCHOR_START },
+  { eCSSKeyword_middle, NS_STYLE_TEXT_ANCHOR_MIDDLE },
+  { eCSSKeyword_end, NS_STYLE_TEXT_ANCHOR_END },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kTextRenderingKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_TEXT_RENDERING_AUTO,
-  eCSSKeyword_optimizespeed, NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED,
-  eCSSKeyword_optimizelegibility, NS_STYLE_TEXT_RENDERING_OPTIMIZELEGIBILITY,
-  eCSSKeyword_geometricprecision, NS_STYLE_TEXT_RENDERING_GEOMETRICPRECISION,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_auto, NS_STYLE_TEXT_RENDERING_AUTO },
+  { eCSSKeyword_optimizespeed, NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED },
+  { eCSSKeyword_optimizelegibility, NS_STYLE_TEXT_RENDERING_OPTIMIZELEGIBILITY },
+  { eCSSKeyword_geometricprecision, NS_STYLE_TEXT_RENDERING_GEOMETRICPRECISION },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kVectorEffectKTable[] = {
-  eCSSKeyword_none, NS_STYLE_VECTOR_EFFECT_NONE,
-  eCSSKeyword_non_scaling_stroke, NS_STYLE_VECTOR_EFFECT_NON_SCALING_STROKE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_none, NS_STYLE_VECTOR_EFFECT_NONE },
+  { eCSSKeyword_non_scaling_stroke, NS_STYLE_VECTOR_EFFECT_NON_SCALING_STROKE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kColorInterpolationKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_COLOR_INTERPOLATION_AUTO,
-  eCSSKeyword_srgb, NS_STYLE_COLOR_INTERPOLATION_SRGB,
-  eCSSKeyword_linearrgb, NS_STYLE_COLOR_INTERPOLATION_LINEARRGB,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_auto, NS_STYLE_COLOR_INTERPOLATION_AUTO },
+  { eCSSKeyword_srgb, NS_STYLE_COLOR_INTERPOLATION_SRGB },
+  { eCSSKeyword_linearrgb, NS_STYLE_COLOR_INTERPOLATION_LINEARRGB },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
 const KTableValue nsCSSProps::kColumnFillKTable[] = {
-  eCSSKeyword_auto, NS_STYLE_COLUMN_FILL_AUTO,
-  eCSSKeyword_balance, NS_STYLE_COLUMN_FILL_BALANCE,
-  eCSSKeyword_UNKNOWN, -1
+  { eCSSKeyword_auto, NS_STYLE_COLUMN_FILL_AUTO },
+  { eCSSKeyword_balance, NS_STYLE_COLUMN_FILL_BALANCE },
+  { eCSSKeyword_UNKNOWN, -1 }
 };
 
-static bool IsKeyValSentinel(nsCSSKeyword aKey, KTableValue aValue)
+static inline bool
+IsKeyValSentinel(const KTableValue& aTableEntry)
 {
-  return aKey == eCSSKeyword_UNKNOWN && aValue == -1;
+  return aTableEntry.mKeyword == eCSSKeyword_UNKNOWN &&
+         aTableEntry.mValue == -1;
 }
 
 int32_t
 nsCSSProps::FindIndexOfKeyword(nsCSSKeyword aKeyword,
                                const KTableValue aTable[])
 {
   if (eCSSKeyword_UNKNOWN == aKeyword) {
     // NOTE: we can have keyword tables where eCSSKeyword_UNKNOWN is used
     // not only for the sentinel, but also in the middle of the table to
     // knock out values that have been disabled by prefs, e.g. kDisplayKTable.
     // So we deal with eCSSKeyword_UNKNOWN up front to avoid returning a valid
     // index in the loop below.
     return -1;
   }
-  int32_t i = 0;
-  for (;;) {
-    nsCSSKeyword key = nsCSSKeyword(aTable[i]);
-    int32_t val = aTable[i + 1];
-    if (::IsKeyValSentinel(key, val)) {
+  for (int32_t i = 0; ; ++i) {
+    const KTableValue& entry = aTable[i];
+    if (::IsKeyValSentinel(entry)) {
       break;
     }
-    if (aKeyword == key) {
+    if (aKeyword == entry.mKeyword) {
       return i;
     }
-    i += 2;
   }
   return -1;
 }
 
 bool
 nsCSSProps::FindKeyword(nsCSSKeyword aKeyword, const KTableValue aTable[],
                         int32_t& aResult)
 {
   int32_t index = FindIndexOfKeyword(aKeyword, aTable);
   if (index >= 0) {
-    aResult = aTable[index + 1];
+    aResult = aTable[index].mValue;
     return true;
   }
   return false;
 }
 
 nsCSSKeyword
 nsCSSProps::ValueToKeywordEnum(int32_t aValue, const KTableValue aTable[])
 {
-  NS_ASSERTION(KTableValue(aValue) == aValue, "Value out of range");
-  int32_t i = 1;
-  for (;;) {
-    int32_t val = aTable[i];
-    nsCSSKeyword key = nsCSSKeyword(aTable[i - 1]);
-    if (::IsKeyValSentinel(key, val)) {
+  typedef decltype(aTable[0].mValue) table_value_type;
+  NS_ASSERTION(table_value_type(aValue) == aValue, "Value out of range");
+  for (int32_t i = 0; ; ++i) {
+    const KTableValue& entry = aTable[i];
+    if (::IsKeyValSentinel(entry)) {
       break;
     }
-    if (aValue == val) {
-      return key;
+    if (aValue == entry.mValue) {
+      return entry.mKeyword;
     }
-    i += 2;
   }
   return eCSSKeyword_UNKNOWN;
 }
 
 const nsAFlatCString&
 nsCSSProps::ValueToKeyword(int32_t aValue, const KTableValue aTable[])
 {
-  NS_ASSERTION(KTableValue(aValue) == aValue, "Value out of range");
   nsCSSKeyword keyword = ValueToKeywordEnum(aValue, aTable);
   if (keyword == eCSSKeyword_UNKNOWN) {
     static nsDependentCString sNullStr("");
     return sNullStr;
   } else {
     return nsCSSKeywords::GetStringValue(keyword);
   }
 }
@@ -2332,17 +2328,18 @@ nsCSSProps::kKeywordTableTable[eCSSPrope
   #undef CSS_PROP
 };
 
 const nsAFlatCString&
 nsCSSProps::LookupPropertyValue(nsCSSProperty aProp, int32_t aValue)
 {
   MOZ_ASSERT(aProp >= 0 && aProp < eCSSProperty_COUNT,
              "property out of range");
-  NS_ASSERTION(KTableValue(aValue) == aValue, "Value out of range");
+  typedef decltype(KTableValue::mValue) table_value_type;
+  NS_ASSERTION(table_value_type(aValue) == aValue, "Value out of range");
 
   const KTableValue* kwtable = nullptr;
   if (aProp < eCSSProperty_COUNT_no_shorthands)
     kwtable = kKeywordTableTable[aProp];
 
   if (kwtable)
     return ValueToKeyword(aValue, kwtable);
 
--- a/layout/style/nsCSSProps.h
+++ b/layout/style/nsCSSProps.h
@@ -302,17 +302,20 @@ enum nsStyleAnimType {
   eStyleAnimType_Shadow,
 
   // property not animatable
   eStyleAnimType_None
 };
 
 class nsCSSProps {
 public:
-  typedef int16_t KTableValue;
+  struct KTableValue {
+    nsCSSKeyword mKeyword;
+    int16_t mValue;
+  };
 
   static void AddRefTable(void);
   static void ReleaseTable(void);
 
   enum EnabledState {
     // The default EnabledState: only enable what's enabled for all content,
     // given the current values of preferences.
     eEnabledForAllContent = 0,
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -16,25 +16,25 @@
 #endif
 #include "nsCSSRuleProcessor.h"
 #include "nsDeviceContext.h"
 #include "nsIDocument.h"
 
 using namespace mozilla;
 
 static const nsCSSProps::KTableValue kOrientationKeywords[] = {
-  eCSSKeyword_portrait,                 NS_STYLE_ORIENTATION_PORTRAIT,
-  eCSSKeyword_landscape,                NS_STYLE_ORIENTATION_LANDSCAPE,
-  eCSSKeyword_UNKNOWN,                  -1
+  { eCSSKeyword_portrait,                 NS_STYLE_ORIENTATION_PORTRAIT },
+  { eCSSKeyword_landscape,                NS_STYLE_ORIENTATION_LANDSCAPE },
+  { eCSSKeyword_UNKNOWN,                  -1 }
 };
 
 static const nsCSSProps::KTableValue kScanKeywords[] = {
-  eCSSKeyword_progressive,              NS_STYLE_SCAN_PROGRESSIVE,
-  eCSSKeyword_interlace,                NS_STYLE_SCAN_INTERLACE,
-  eCSSKeyword_UNKNOWN,                  -1
+  { eCSSKeyword_progressive,              NS_STYLE_SCAN_PROGRESSIVE },
+  { eCSSKeyword_interlace,                NS_STYLE_SCAN_INTERLACE },
+  { eCSSKeyword_UNKNOWN,                  -1 }
 };
 
 #ifdef XP_WIN
 struct WindowsThemeName {
     LookAndFeel::WindowsTheme id;
     const wchar_t* name;
 };