1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/src/xul/XULColorPickerAccessible.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,142 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "XULColorPickerAccessible.h" 1.10 + 1.11 +#include "Accessible-inl.h" 1.12 +#include "nsAccUtils.h" 1.13 +#include "nsCoreUtils.h" 1.14 +#include "DocAccessible.h" 1.15 +#include "Role.h" 1.16 +#include "States.h" 1.17 + 1.18 +#include "nsIDOMElement.h" 1.19 +#include "nsMenuPopupFrame.h" 1.20 + 1.21 +using namespace mozilla::a11y; 1.22 + 1.23 +//////////////////////////////////////////////////////////////////////////////// 1.24 +// XULColorPickerTileAccessible 1.25 +//////////////////////////////////////////////////////////////////////////////// 1.26 + 1.27 +XULColorPickerTileAccessible:: 1.28 + XULColorPickerTileAccessible(nsIContent* aContent, DocAccessible* aDoc) : 1.29 + AccessibleWrap(aContent, aDoc) 1.30 +{ 1.31 +} 1.32 + 1.33 +//////////////////////////////////////////////////////////////////////////////// 1.34 +// XULColorPickerTileAccessible: nsIAccessible 1.35 + 1.36 +void 1.37 +XULColorPickerTileAccessible::Value(nsString& aValue) 1.38 +{ 1.39 + aValue.Truncate(); 1.40 + 1.41 + mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::color, aValue); 1.42 +} 1.43 + 1.44 +//////////////////////////////////////////////////////////////////////////////// 1.45 +// XULColorPickerTileAccessible: Accessible 1.46 + 1.47 +role 1.48 +XULColorPickerTileAccessible::NativeRole() 1.49 +{ 1.50 + return roles::PUSHBUTTON; 1.51 +} 1.52 + 1.53 +uint64_t 1.54 +XULColorPickerTileAccessible::NativeState() 1.55 +{ 1.56 + uint64_t state = AccessibleWrap::NativeState(); 1.57 + if (mContent->HasAttr(kNameSpaceID_None, nsGkAtoms::selected)) 1.58 + state |= states::SELECTED; 1.59 + 1.60 + return state; 1.61 +} 1.62 + 1.63 +uint64_t 1.64 +XULColorPickerTileAccessible::NativeInteractiveState() const 1.65 +{ 1.66 + return NativelyUnavailable() ? 1.67 + states::UNAVAILABLE : states::FOCUSABLE | states::SELECTABLE; 1.68 +} 1.69 + 1.70 +//////////////////////////////////////////////////////////////////////////////// 1.71 +// XULColorPickerTileAccessible: Widgets 1.72 + 1.73 +Accessible* 1.74 +XULColorPickerTileAccessible::ContainerWidget() const 1.75 +{ 1.76 + Accessible* parent = Parent(); 1.77 + if (parent) { 1.78 + Accessible* grandParent = parent->Parent(); 1.79 + if (grandParent && grandParent->IsMenuButton()) 1.80 + return grandParent; 1.81 + } 1.82 + return nullptr; 1.83 +} 1.84 + 1.85 +//////////////////////////////////////////////////////////////////////////////// 1.86 +// XULColorPickerAccessible 1.87 +//////////////////////////////////////////////////////////////////////////////// 1.88 + 1.89 +XULColorPickerAccessible:: 1.90 + XULColorPickerAccessible(nsIContent* aContent, DocAccessible* aDoc) : 1.91 + XULColorPickerTileAccessible(aContent, aDoc) 1.92 +{ 1.93 + mGenericTypes |= eMenuButton; 1.94 +} 1.95 + 1.96 +//////////////////////////////////////////////////////////////////////////////// 1.97 +// XULColorPickerAccessible: Accessible 1.98 + 1.99 +uint64_t 1.100 +XULColorPickerAccessible::NativeState() 1.101 +{ 1.102 + uint64_t state = AccessibleWrap::NativeState(); 1.103 + return state | states::HASPOPUP; 1.104 +} 1.105 + 1.106 +role 1.107 +XULColorPickerAccessible::NativeRole() 1.108 +{ 1.109 + return roles::BUTTONDROPDOWNGRID; 1.110 +} 1.111 + 1.112 +//////////////////////////////////////////////////////////////////////////////// 1.113 +// XULColorPickerAccessible: Widgets 1.114 + 1.115 +bool 1.116 +XULColorPickerAccessible::IsWidget() const 1.117 +{ 1.118 + return true; 1.119 +} 1.120 + 1.121 +bool 1.122 +XULColorPickerAccessible::IsActiveWidget() const 1.123 +{ 1.124 + return FocusMgr()->HasDOMFocus(mContent); 1.125 +} 1.126 + 1.127 +bool 1.128 +XULColorPickerAccessible::AreItemsOperable() const 1.129 +{ 1.130 + Accessible* menuPopup = mChildren.SafeElementAt(0, nullptr); 1.131 + if (menuPopup) { 1.132 + nsMenuPopupFrame* menuPopupFrame = do_QueryFrame(menuPopup->GetFrame()); 1.133 + return menuPopupFrame && menuPopupFrame->IsOpen(); 1.134 + } 1.135 + return false; 1.136 +} 1.137 + 1.138 +//////////////////////////////////////////////////////////////////////////////// 1.139 +// XULColorPickerAccessible: protected Accessible 1.140 + 1.141 +bool 1.142 +XULColorPickerAccessible::IsAcceptableChild(Accessible* aPossibleChild) const 1.143 +{ 1.144 + return roles::ALERT == aPossibleChild->Role(); 1.145 +}