зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1727643 - P3: Make numeric value methods abstract in Accessible and wire it thru. r=morgan
Differential Revision: https://phabricator.services.mozilla.com/D123697
This commit is contained in:
Родитель
17e9670742
Коммит
2c5a1217db
|
@ -115,6 +115,11 @@ class Accessible {
|
||||||
*/
|
*/
|
||||||
virtual ENameValueFlag Name(nsString& aName) const = 0;
|
virtual ENameValueFlag Name(nsString& aName) const = 0;
|
||||||
|
|
||||||
|
virtual double CurValue() const = 0;
|
||||||
|
virtual double MinValue() const = 0;
|
||||||
|
virtual double MaxValue() const = 0;
|
||||||
|
virtual double Step() const = 0;
|
||||||
|
|
||||||
// Type "is" methods
|
// Type "is" methods
|
||||||
|
|
||||||
bool IsDoc() const { return HasGenericType(eDocument); }
|
bool IsDoc() const { return HasGenericType(eDocument); }
|
||||||
|
|
|
@ -702,10 +702,10 @@ class LocalAccessible : public nsISupports, public Accessible {
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
// Value (numeric value interface)
|
// Value (numeric value interface)
|
||||||
|
|
||||||
virtual double MaxValue() const;
|
virtual double MaxValue() const override;
|
||||||
virtual double MinValue() const;
|
virtual double MinValue() const override;
|
||||||
virtual double CurValue() const;
|
virtual double CurValue() const override;
|
||||||
virtual double Step() const;
|
virtual double Step() const override;
|
||||||
virtual bool SetCurValue(double aValue);
|
virtual bool SetCurValue(double aValue);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -175,6 +175,42 @@ ENameValueFlag RemoteAccessibleBase<Derived>::Name(nsString& aName) const {
|
||||||
return eNameOK;
|
return eNameOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class Derived>
|
||||||
|
double RemoteAccessibleBase<Derived>::CurValue() const {
|
||||||
|
if (auto value = mCachedFields->GetAttribute<double>(nsGkAtoms::value)) {
|
||||||
|
return *value;
|
||||||
|
}
|
||||||
|
|
||||||
|
return UnspecifiedNaN<double>();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Derived>
|
||||||
|
double RemoteAccessibleBase<Derived>::MinValue() const {
|
||||||
|
if (auto min = mCachedFields->GetAttribute<double>(nsGkAtoms::min)) {
|
||||||
|
return *min;
|
||||||
|
}
|
||||||
|
|
||||||
|
return UnspecifiedNaN<double>();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Derived>
|
||||||
|
double RemoteAccessibleBase<Derived>::MaxValue() const {
|
||||||
|
if (auto max = mCachedFields->GetAttribute<double>(nsGkAtoms::max)) {
|
||||||
|
return *max;
|
||||||
|
}
|
||||||
|
|
||||||
|
return UnspecifiedNaN<double>();
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class Derived>
|
||||||
|
double RemoteAccessibleBase<Derived>::Step() const {
|
||||||
|
if (auto step = mCachedFields->GetAttribute<double>(nsGkAtoms::step)) {
|
||||||
|
return *step;
|
||||||
|
}
|
||||||
|
|
||||||
|
return UnspecifiedNaN<double>();
|
||||||
|
}
|
||||||
|
|
||||||
template class RemoteAccessibleBase<RemoteAccessible>;
|
template class RemoteAccessibleBase<RemoteAccessible>;
|
||||||
|
|
||||||
} // namespace a11y
|
} // namespace a11y
|
||||||
|
|
|
@ -164,8 +164,15 @@ class RemoteAccessibleBase : public Accessible {
|
||||||
return HasGenericType(eNumericValue);
|
return HasGenericType(eNumericValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Methods that potentially access a cache.
|
||||||
|
|
||||||
virtual ENameValueFlag Name(nsString& aName) const override;
|
virtual ENameValueFlag Name(nsString& aName) const override;
|
||||||
|
|
||||||
|
virtual double CurValue() const override;
|
||||||
|
virtual double MinValue() const override;
|
||||||
|
virtual double MaxValue() const override;
|
||||||
|
virtual double Step() const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allow the platform to store a pointers worth of data on us.
|
* Allow the platform to store a pointers worth of data on us.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -239,11 +239,11 @@ KeyBinding AccessKey();
|
||||||
KeyBinding KeyboardShortcut();
|
KeyBinding KeyboardShortcut();
|
||||||
void AtkKeyBinding(nsString& aBinding);
|
void AtkKeyBinding(nsString& aBinding);
|
||||||
|
|
||||||
double CurValue();
|
double CurValue() const override;
|
||||||
|
double MinValue() const override;
|
||||||
|
double MaxValue() const override;
|
||||||
|
double Step() const override;
|
||||||
bool SetCurValue(double aValue);
|
bool SetCurValue(double aValue);
|
||||||
double MinValue();
|
|
||||||
double MaxValue();
|
|
||||||
double Step();
|
|
||||||
|
|
||||||
void TakeFocus();
|
void TakeFocus();
|
||||||
RemoteAccessible* FocusedChild();
|
RemoteAccessible* FocusedChild();
|
||||||
|
|
|
@ -744,7 +744,11 @@ void RemoteAccessible::AtkKeyBinding(nsString& aBinding) {
|
||||||
Unused << mDoc->SendAtkKeyBinding(mID, &aBinding);
|
Unused << mDoc->SendAtkKeyBinding(mID, &aBinding);
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::CurValue() {
|
double RemoteAccessible::CurValue() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::CurValue();
|
||||||
|
}
|
||||||
|
|
||||||
double val = UnspecifiedNaN<double>();
|
double val = UnspecifiedNaN<double>();
|
||||||
Unused << mDoc->SendCurValue(mID, &val);
|
Unused << mDoc->SendCurValue(mID, &val);
|
||||||
return val;
|
return val;
|
||||||
|
@ -756,19 +760,31 @@ bool RemoteAccessible::SetCurValue(double aValue) {
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::MinValue() {
|
double RemoteAccessible::MinValue() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::MinValue();
|
||||||
|
}
|
||||||
|
|
||||||
double val = UnspecifiedNaN<double>();
|
double val = UnspecifiedNaN<double>();
|
||||||
Unused << mDoc->SendMinValue(mID, &val);
|
Unused << mDoc->SendMinValue(mID, &val);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::MaxValue() {
|
double RemoteAccessible::MaxValue() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::MaxValue();
|
||||||
|
}
|
||||||
|
|
||||||
double val = UnspecifiedNaN<double>();
|
double val = UnspecifiedNaN<double>();
|
||||||
Unused << mDoc->SendMaxValue(mID, &val);
|
Unused << mDoc->SendMaxValue(mID, &val);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::Step() {
|
double RemoteAccessible::Step() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::Step();
|
||||||
|
}
|
||||||
|
|
||||||
double step = UnspecifiedNaN<double>();
|
double step = UnspecifiedNaN<double>();
|
||||||
Unused << mDoc->SendStep(mID, &step);
|
Unused << mDoc->SendStep(mID, &step);
|
||||||
return step;
|
return step;
|
||||||
|
|
|
@ -160,7 +160,11 @@ void RemoteAccessible::Value(nsString& aValue) const {
|
||||||
aValue = (wchar_t*)resultWrap;
|
aValue = (wchar_t*)resultWrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::Step() {
|
double RemoteAccessible::Step() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::Step();
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<IGeckoCustom> custom = QueryInterface<IGeckoCustom>(this);
|
RefPtr<IGeckoCustom> custom = QueryInterface<IGeckoCustom>(this);
|
||||||
if (!custom) {
|
if (!custom) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -394,7 +398,11 @@ nsTArray<RemoteAccessible*> RemoteAccessible::RelationByType(
|
||||||
return proxies;
|
return proxies;
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::CurValue() {
|
double RemoteAccessible::CurValue() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::CurValue();
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<IAccessibleValue> acc = QueryInterface<IAccessibleValue>(this);
|
RefPtr<IAccessibleValue> acc = QueryInterface<IAccessibleValue>(this);
|
||||||
if (!acc) {
|
if (!acc) {
|
||||||
return UnspecifiedNaN<double>();
|
return UnspecifiedNaN<double>();
|
||||||
|
@ -423,7 +431,11 @@ bool RemoteAccessible::SetCurValue(double aValue) {
|
||||||
return SUCCEEDED(hr);
|
return SUCCEEDED(hr);
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::MinValue() {
|
double RemoteAccessible::MinValue() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::MinValue();
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<IAccessibleValue> acc = QueryInterface<IAccessibleValue>(this);
|
RefPtr<IAccessibleValue> acc = QueryInterface<IAccessibleValue>(this);
|
||||||
if (!acc) {
|
if (!acc) {
|
||||||
return UnspecifiedNaN<double>();
|
return UnspecifiedNaN<double>();
|
||||||
|
@ -438,7 +450,11 @@ double RemoteAccessible::MinValue() {
|
||||||
return minimumValue.dblVal;
|
return minimumValue.dblVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
double RemoteAccessible::MaxValue() {
|
double RemoteAccessible::MaxValue() const {
|
||||||
|
if (mCachedFields) {
|
||||||
|
return RemoteAccessibleBase<RemoteAccessible>::MaxValue();
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<IAccessibleValue> acc = QueryInterface<IAccessibleValue>(this);
|
RefPtr<IAccessibleValue> acc = QueryInterface<IAccessibleValue>(this);
|
||||||
if (!acc) {
|
if (!acc) {
|
||||||
return UnspecifiedNaN<double>();
|
return UnspecifiedNaN<double>();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче