mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1147551 - IPC Proxy for min/cur/max values, r=davidb
--HG-- extra : rebase_source : d0e107e696d07ae121cc752c451de890c8013970
This commit is contained in:
parent
f5c6da7dce
commit
83952aa43e
@ -8,7 +8,7 @@
|
||||
|
||||
#include "AccessibleWrap.h"
|
||||
#include "nsMai.h"
|
||||
|
||||
#include "ProxyAccessible.h"
|
||||
#include "mozilla/FloatingPoint.h"
|
||||
#include "mozilla/Likely.h"
|
||||
|
||||
@ -20,12 +20,17 @@ extern "C" {
|
||||
static void
|
||||
getCurrentValueCB(AtkValue *obj, GValue *value)
|
||||
{
|
||||
ProxyAccessible* proxy = nullptr;
|
||||
AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(obj));
|
||||
if (!accWrap)
|
||||
return;
|
||||
if (!accWrap) {
|
||||
proxy = GetProxy(ATK_OBJECT(obj));
|
||||
if (!proxy) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
memset (value, 0, sizeof (GValue));
|
||||
double accValue = accWrap->CurValue();
|
||||
double accValue = accWrap ? accWrap->CurValue() : proxy->CurValue();
|
||||
if (IsNaN(accValue))
|
||||
return;
|
||||
|
||||
@ -36,12 +41,17 @@ getCurrentValueCB(AtkValue *obj, GValue *value)
|
||||
static void
|
||||
getMaximumValueCB(AtkValue *obj, GValue *value)
|
||||
{
|
||||
ProxyAccessible* proxy = nullptr;
|
||||
AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(obj));
|
||||
if (!accWrap)
|
||||
return;
|
||||
if (!accWrap) {
|
||||
proxy = GetProxy(ATK_OBJECT(obj));
|
||||
if (!proxy) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
memset(value, 0, sizeof (GValue));
|
||||
double accValue = accWrap->MaxValue();
|
||||
double accValue = accWrap ? accWrap->MaxValue() : proxy->MaxValue();
|
||||
if (IsNaN(accValue))
|
||||
return;
|
||||
|
||||
@ -52,12 +62,17 @@ getMaximumValueCB(AtkValue *obj, GValue *value)
|
||||
static void
|
||||
getMinimumValueCB(AtkValue *obj, GValue *value)
|
||||
{
|
||||
ProxyAccessible* proxy = nullptr;
|
||||
AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(obj));
|
||||
if (!accWrap)
|
||||
return;
|
||||
if (!accWrap) {
|
||||
proxy = GetProxy(ATK_OBJECT(obj));
|
||||
if (!proxy) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
memset(value, 0, sizeof (GValue));
|
||||
double accValue = accWrap->MinValue();
|
||||
double accValue = accWrap ? accWrap->MinValue() : proxy->MinValue();
|
||||
if (IsNaN(accValue))
|
||||
return;
|
||||
|
||||
@ -68,12 +83,17 @@ getMinimumValueCB(AtkValue *obj, GValue *value)
|
||||
static void
|
||||
getMinimumIncrementCB(AtkValue *obj, GValue *minimumIncrement)
|
||||
{
|
||||
ProxyAccessible* proxy = nullptr;
|
||||
AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(obj));
|
||||
if (!accWrap)
|
||||
return;
|
||||
if (!accWrap) {
|
||||
proxy = GetProxy(ATK_OBJECT(obj));
|
||||
if (!proxy) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
memset(minimumIncrement, 0, sizeof (GValue));
|
||||
double accValue = accWrap->Step();
|
||||
double accValue = accWrap ? accWrap->Step() : proxy->Step();
|
||||
if (IsNaN(accValue))
|
||||
accValue = 0; // zero if the minimum increment is undefined
|
||||
|
||||
@ -84,12 +104,17 @@ getMinimumIncrementCB(AtkValue *obj, GValue *minimumIncrement)
|
||||
static gboolean
|
||||
setCurrentValueCB(AtkValue *obj, const GValue *value)
|
||||
{
|
||||
ProxyAccessible* proxy = nullptr;
|
||||
AccessibleWrap* accWrap = GetAccessibleWrap(ATK_OBJECT(obj));
|
||||
if (!accWrap)
|
||||
return FALSE;
|
||||
if (!accWrap) {
|
||||
proxy = GetProxy(ATK_OBJECT(obj));
|
||||
if (!proxy) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
double accValue =g_value_get_double(value);
|
||||
return accWrap->SetCurValue(accValue);
|
||||
return accWrap ? accWrap->SetCurValue(accValue) : proxy->SetCurValue(accValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1517,5 +1517,71 @@ DocAccessibleChild::RecvKeyboardShortcut(const uint64_t& aID,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::RecvCurValue(const uint64_t& aID,
|
||||
double* aValue)
|
||||
{
|
||||
*aValue = UnspecifiedNaN<double>();
|
||||
Accessible* acc = IdToAccessible(aID);
|
||||
if (acc) {
|
||||
*aValue = acc->CurValue();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::RecvSetCurValue(const uint64_t& aID,
|
||||
const double& aValue,
|
||||
bool* aRetVal)
|
||||
{
|
||||
*aRetVal = false;
|
||||
Accessible* acc = IdToAccessible(aID);
|
||||
if (acc) {
|
||||
*aRetVal = acc->SetCurValue(aValue);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::RecvMinValue(const uint64_t& aID,
|
||||
double* aValue)
|
||||
{
|
||||
*aValue = UnspecifiedNaN<double>();
|
||||
Accessible* acc = IdToAccessible(aID);
|
||||
if (acc) {
|
||||
*aValue = acc->MinValue();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::RecvMaxValue(const uint64_t& aID,
|
||||
double* aValue)
|
||||
{
|
||||
*aValue = UnspecifiedNaN<double>();
|
||||
Accessible* acc = IdToAccessible(aID);
|
||||
if (acc) {
|
||||
*aValue = acc->MaxValue();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
DocAccessibleChild::RecvStep(const uint64_t& aID,
|
||||
double* aStep)
|
||||
{
|
||||
*aStep = UnspecifiedNaN<double>();
|
||||
Accessible* acc = IdToAccessible(aID);
|
||||
if (acc) {
|
||||
*aStep = acc->Step();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -374,6 +374,22 @@ public:
|
||||
virtual bool RecvKeyboardShortcut(const uint64_t& aID,
|
||||
uint32_t* aKey,
|
||||
uint32_t* aModifierMask) override;
|
||||
|
||||
virtual bool RecvCurValue(const uint64_t& aID,
|
||||
double* aValue);
|
||||
|
||||
virtual bool RecvSetCurValue(const uint64_t& aID,
|
||||
const double& aValue,
|
||||
bool* aRetVal);
|
||||
|
||||
virtual bool RecvMinValue(const uint64_t& aID,
|
||||
double* aValue);
|
||||
|
||||
virtual bool RecvMaxValue(const uint64_t& aID,
|
||||
double* aValue);
|
||||
|
||||
virtual bool RecvStep(const uint64_t& aID,
|
||||
double* aStep);
|
||||
private:
|
||||
|
||||
Accessible* IdToAccessible(const uint64_t& aID) const;
|
||||
|
@ -198,6 +198,12 @@ child:
|
||||
prio(high) sync ActionNameAt(uint64_t aID, uint8_t aIndex) returns(nsString aName);
|
||||
prio(high) sync AccessKey(uint64_t aID) returns(uint32_t aKey, uint32_t aModifierMask);
|
||||
prio(high) sync KeyboardShortcut(uint64_t aID) returns(uint32_t aKey, uint32_t aModifierMask);
|
||||
|
||||
prio(high) sync CurValue(uint64_t aID) returns(double aValue);
|
||||
prio(high) sync SetCurValue(uint64_t aID, double aValue) returns(bool aRetVal);
|
||||
prio(high) sync MinValue(uint64_t aID) returns(double aValue);
|
||||
prio(high) sync MaxValue(uint64_t aID) returns(double aValue);
|
||||
prio(high) sync Step(uint64_t aID) returns(double aStep);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -845,5 +845,45 @@ ProxyAccessible::KeyboardShortcut()
|
||||
return KeyBinding(key, modifierMask);
|
||||
}
|
||||
|
||||
double
|
||||
ProxyAccessible::CurValue()
|
||||
{
|
||||
double val = UnspecifiedNaN<double>();
|
||||
unused << mDoc->SendCurValue(mID, &val);
|
||||
return val;
|
||||
}
|
||||
|
||||
bool
|
||||
ProxyAccessible::SetCurValue(double aValue)
|
||||
{
|
||||
bool success = false;
|
||||
unused << mDoc->SendSetCurValue(mID, aValue, &success);
|
||||
return success;
|
||||
}
|
||||
|
||||
double
|
||||
ProxyAccessible::MinValue()
|
||||
{
|
||||
double val = UnspecifiedNaN<double>();
|
||||
unused << mDoc->SendMinValue(mID, &val);
|
||||
return val;
|
||||
}
|
||||
|
||||
double
|
||||
ProxyAccessible::MaxValue()
|
||||
{
|
||||
double val = UnspecifiedNaN<double>();
|
||||
unused << mDoc->SendMaxValue(mID, &val);
|
||||
return val;
|
||||
}
|
||||
|
||||
double
|
||||
ProxyAccessible::Step()
|
||||
{
|
||||
double step = UnspecifiedNaN<double>();
|
||||
unused << mDoc->SendStep(mID, &step);
|
||||
return step;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -264,6 +264,12 @@ public:
|
||||
KeyBinding AccessKey();
|
||||
KeyBinding KeyboardShortcut();
|
||||
|
||||
double CurValue();
|
||||
bool SetCurValue(double aValue);
|
||||
double MinValue();
|
||||
double MaxValue();
|
||||
double Step();
|
||||
|
||||
/**
|
||||
* Allow the platform to store a pointers worth of data on us.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user