Bug 1440393 - Move XBL accessibility role="xul:scale" and "xul:thumb" into XULMap.h draft
authorTimothy Guan-tin Chien <timdream@gmail.com>
Thu, 22 Feb 2018 10:24:25 -0800
changeset 758774 4b7ad116157436fb435707965627ffa65d969732
parent 757574 861067332bac96a44bbf41ef366f58a30476057b
push id100169
push usertimdream@gmail.com
push dateFri, 23 Feb 2018 00:40:18 +0000
bugs1440393
milestone60.0a1
Bug 1440393 - Move XBL accessibility role="xul:scale" and "xul:thumb" into XULMap.h MozReview-Commit-ID: 2A264v5AdSV
accessible/base/XULMap.h
accessible/base/nsAccessibilityService.cpp
toolkit/content/widgets/scale.xml
--- a/accessible/base/XULMap.h
+++ b/accessible/base/XULMap.h
@@ -17,16 +17,17 @@ XULMAP_TYPE(menuitem, XULMenuitemAccessi
 XULMAP_TYPE(menulist, XULComboboxAccessible)
 XULMAP_TYPE(menuseparator, XULMenuSeparatorAccessible)
 XULMAP_TYPE(notification, XULAlertAccessible)
 XULMAP_TYPE(progressmeter, XULProgressMeterAccessible)
 XULMAP_TYPE(radio, XULRadioButtonAccessible)
 XULMAP_TYPE(radiogroup, XULRadioGroupAccessible)
 XULMAP_TYPE(richlistbox, XULListboxAccessibleWrap)
 XULMAP_TYPE(richlistitem, XULListitemAccessible)
+XULMAP_TYPE(scale, XULSliderAccessible)
 XULMAP_TYPE(statusbar, XULStatusBarAccessible)
 XULMAP_TYPE(tab, XULTabAccessible)
 XULMAP_TYPE(tabpanels, XULTabpanelsAccessible)
 XULMAP_TYPE(tabs, XULTabsAccessible)
 XULMAP_TYPE(toolbarseparator, XULToolbarSeparatorAccessible)
 XULMAP_TYPE(toolbarspacer, XULToolbarSeparatorAccessible)
 XULMAP_TYPE(toolbarspring, XULToolbarSeparatorAccessible)
 XULMAP_TYPE(treecol, XULColumnItemAccessible)
@@ -69,16 +70,27 @@ XULMAP(
       }
     }
 
     return nullptr;
   }
 )
 
 XULMAP(
+  thumb,
+  [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
+    if (aContent->IsElement() &&
+        aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) {
+      return new XULThumbAccessible(aContent, aContext->Document());
+    }
+    return nullptr;
+  }
+)
+
+XULMAP(
   tree,
   [](nsIContent* aContent, Accessible* aContext) -> Accessible* {
     nsIContent* child = nsTreeUtils::GetDescendantChild(aContent,
                                                         nsGkAtoms::treechildren);
     if (!child)
       return nullptr;
 
     nsTreeBodyFrame* treeFrame = do_QueryFrame(child->GetPrimaryFrame());
--- a/accessible/base/nsAccessibilityService.cpp
+++ b/accessible/base/nsAccessibilityService.cpp
@@ -18,16 +18,17 @@
 #include "HTMLListAccessible.h"
 #include "HTMLSelectAccessible.h"
 #include "HTMLTableAccessibleWrap.h"
 #include "HyperTextAccessibleWrap.h"
 #include "RootAccessible.h"
 #include "nsAccUtils.h"
 #include "nsArrayUtils.h"
 #include "nsAttrName.h"
+#include "nsDOMTokenList.h"
 #include "nsEventShell.h"
 #include "nsIURI.h"
 #include "nsTextFormatter.h"
 #include "OuterDocAccessible.h"
 #include "Role.h"
 #ifdef MOZ_ACCESSIBILITY_ATK
 #include "RootAccessibleWrap.h"
 #endif
@@ -1496,28 +1497,22 @@ nsAccessibilityService::CreateAccessible
     if (aContent->IsElement() &&
         aContent->AsElement()->AttrValueIs(kNameSpaceID_None,
                                            nsGkAtoms::noautofocus,
                                            nsGkAtoms::_true, eCaseMatters))
       accessible = new XULAlertAccessible(aContent, aDoc);
     else
       accessible = new EnumRoleAccessible<roles::PANE>(aContent, aDoc);
 
-  } else if (role.EqualsLiteral("xul:scale")) {
-    accessible = new XULSliderAccessible(aContent, aDoc);
-
   } else if (role.EqualsLiteral("xul:text")) {
     accessible = new XULLabelAccessible(aContent, aDoc);
 
   } else if (role.EqualsLiteral("xul:textbox")) {
     accessible = new EnumRoleAccessible<roles::SECTION>(aContent, aDoc);
 
-  } else if (role.EqualsLiteral("xul:thumb")) {
-    accessible = new XULThumbAccessible(aContent, aDoc);
-
   } else if (role.EqualsLiteral("xul:toolbarbutton")) {
     accessible = new XULToolbarButtonAccessible(aContent, aDoc);
 
   }
 #endif // MOZ_XUL
 
   return accessible.forget();
 }
--- a/toolkit/content/widgets/scale.xml
+++ b/toolkit/content/widgets/scale.xml
@@ -3,43 +3,43 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 
 <bindings id="scaleBindings"
    xmlns="http://www.mozilla.org/xbl"
    xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    xmlns:xbl="http://www.mozilla.org/xbl">
-  
-  <binding id="scalethumb" extends="xul:button" role="xul:thumb">
+
+  <binding id="scalethumb" extends="xul:button">
     <resources>
       <stylesheet src="chrome://global/skin/scale.css"/>
     </resources>
   </binding>
 
   <binding id="scaleslider" display="xul:slider"
            extends="chrome://global/content/bindings/general.xml#basecontrol">
     <resources>
       <stylesheet src="chrome://global/skin/scale.css"/>
     </resources>
   </binding>
 
-  <binding id="scale" role="xul:scale"
+  <binding id="scale"
            extends="chrome://global/content/bindings/general.xml#basecontrol">
     <resources>
       <stylesheet src="chrome://global/skin/scale.css"/>
     </resources>
 
     <content align="center" pack="center">
       <xul:slider anonid="slider" class="scale-slider" snap="true" flex="1"
                   xbl:inherits="disabled,orient,dir,curpos=value,minpos=min,maxpos=max,increment,pageincrement,movetoclick">
         <xul:thumb class="scale-thumb" xbl:inherits="disabled,orient"/>
       </xul:slider>
     </content>
-    
+
     <implementation implements="nsISliderListener">
       <property name="value" onget="return this._getIntegerAttribute('curpos', 0);"
                              onset="return this._setIntegerAttribute('curpos', val);"/>
       <property name="min" onget="return this._getIntegerAttribute('minpos', 0);"
                            onset="return this._setIntegerAttribute('minpos', val);"/>
       <property name="max" onget="return this._getIntegerAttribute('maxpos', 100);"
                            onset="return this._setIntegerAttribute('maxpos', val);"/>
       <property name="increment" onget="return this._getIntegerAttribute('increment', 1);"