Age | Commit message (Collapse) | Author | Files | Lines |
|
For the multi-window case, we need to send 'showing' event when
the AT-SPI bridge turns on. So far, we have sent only 'activate' event
which is enough for the non-multi-window case.
And the 'mIsShown' does not care about the multi-window case.
If one window calls WindowShown, then other windows cannot send 'showing'
event because of the 'mIsShown'.
Change-Id: I501953e8dc1475550afc357293f21dd8fcc98620
|
|
It is not necessary to manually convert an Accessible* to an Address,
because this conversion takes place automatically during serialization
of D-Bus data, and the Accessible* type is generally more useful.
Change-Id: Id58c0b6ab16fd365184d3b070a2b7105a2ac686d
|
|
This patch adds three new utility methods to Bridge:
* EmbedSocket() - calls org.a11y.atspi.Socket.Embed
The manually contstructed D-Bus call in Bridge::ForceUp()
is replaced by EmbedSocket().
* UnembedSocket() - calls org.a11y.atspi.Socket.Unembed
A missing UnembedSocket() is added in Bridge::ForceDown().
* EmbedAtkSocket() - calls org.a11y.atspi.Socket.Embedded
The "Embedded" method is an ATK extension, but is required
to embed an ATK-based subtree, e.g. a Chromium-based WebView,
in a DALi application.
Change-Id: I562072864d6a67272325562eabb91962c6813eab
|
|
|
|
The Accessibility::Accessible::Get for a window could be called
before getting accessible to add window accessible.
So far, we thought that the next part creates an accessible for
window for the first time.
accessible = Accessibility::Accessible::Get(rootLayer, true);
bridge->AddTopLevelWindow(accessible);
However, there is a case where it is created before this part
caused by following symbol
CSharp_Dali_Toolkit_DevelControl_GetAccessibilityStates+0x144
In this case, isRoot is set to `false`. Then window will have
incorrect accessible information.
For more information, please refer to the following.
https://github.sec.samsung.net/tizen/atspi/issues/60
Change-Id: Id2d27f35426e72b67986f132f0c77979016b4252
|
|
Change-Id: I0758bf378e28798486cabb7ef1b8de16127eca53
|
|
AT client needs to know that a window is destroyed.
Change-Id: Id64d31b3a69a7465e8eb382ab6ed2db9b1788007
|
|
|
|
There is not a reason to keep window in ApplicationAccessible to emit
window related signals.
Moreover, keeping window increases the reference count.
In multi window case, Window.Reset() for the second window
cannot make ~Window() is called because of the reference count is not 0.
Change-Id: I13f636b12c62a29dc976602446b5dc13f2b521cb
|
|
|
|
The AtspiEvents can be used for the event mask to suppress
specific event.
Change-Id: I9c639a543c7c5b0db8c813c5a599c2148ea655b3
|
|
ScreenReaderEnabled should be distinguished from IsEnabled.
This is because there are things to do only when the screen reader is enabled.
Change-Id: Ibd9fd26380ef09b8c795696d9f320e0056c2bc41
|
|
|
|
This interface will be used for getting MBR(Minimum Bounding Rectangle)
with following usage on the AT client side.
cc = atspi_text_get_character_count(text, NULL);
rect = atspi_text_get_range_extents(text, 0, cc, ATSPI_COORD_TYPE_WINDOW, NULL);
Change-Id: Iea4881269ee53807d75c0236c35672be7208fdac
|
|
Change-Id: I199c18011d24f7984e5f4cb95b5e626a418ab2ec
|
|
This patch:
* Introduces an AtspiInterface enumeration with all possible AT-SPI
interfaces and an AtspiInterfaces collection (using EnumBitSet), and
changes the return type of Accessible::GetInterfaces() to
AtspiInterfaces. The new, compact storage format allows the collection
of interfaces to be cached. Interfaces will be queried even more often
with the upcoming polymorphic NUIViewAccessible. Thus, it makes sense to
introduce such an optimization, and checking whether a bit is set in a
4-byte bitmask is significantly cheaper than performing a series of
dynamic_cast's every time GetInterfaces() is called. Such calculation is
only performed once by a new virtual method, DoGetInterfaces().
* Adds a new static method Accessible::GetInterfaceName() which converts
an AtspiInterface value to a string identifier used in DBus
communication, which allows to remove most of the macro definitions in
accessibility-common.h.
* Adds some missing operators to Accessibility::BitSet and EnumBitSet.
* Introduces a template type resolver AtspiInterfaceType which converts
an AtspiInterface value to a native C++ type, and adds
Accessible::DownCast() which uses this helper to check both the return
value of GetInterfaces() and the result of dynamic_cast. This double
checking is required by the upcoming NUIViewAccessible. As a possible
optimization, dynamic_cast could be changed to static_cast for release
builds in the future (which should be safe as long as DoGetInterfaces()
is implemented correctly).
* Adds a new template method FindCurrentObjectWithInterface() to
BridgeBase in order to centralize previously duplicated error return
logic in implementations of FindSelf() in various Bridge classes, which
differed only in the target type and interface name to be reported in
the error DBus reply.
* Adds a new virtual method Accessible::DoGetInterfaces() which allows
any derived classes to customize (specifically, narrow down) the set of
interfaces visible to DBus callers (and FindCurrentObjectWithInterface()
respects that). This is the first step towards allowing NUI controls to
freely implement AT-SPI interfaces (currently they have to choose from a
small predefined set of NUIViewAccessible-derived classes due to the use
of dynamic_cast).
Change-Id: I14428ec20693a9b121d40ac1b12b6e30c709d313
|
|
BitSets is renamed to BitSet (like std::bitset or java.util.BitSet) and
split into two parts: BitSet and EnumBitSet. This way, the enumeration
type can be effectively erased, so that EnumBitSet<SomeEnum, 13> and
EnumBitSet<OtherEnum, 30> can share the same copy of the code in the
resulting binary. EnumBitSet also calculates the required storage size
automatically based on the maximum enum value.
Additionally, the BitSet class is moved from accessibility.h (which
contains mostly enum classes) to a separate file and is enriched with
extensive documentation.
Change-Id: Ib79a370fa9e6241402acb00e859ba20760dbb88c
|
|
Accessible::EmitActiveDescendantChanged
Change-Id: Ia7af05e8a4f582f311ef379679a13e74299aa3cb
|
|
1. Ensure early return if !IsUp() or IsHidden().
2. Use a map to convert C++ names to DBus names.
Change-Id: Iab0548c0561d9db0224ef81815a87b7d1aa012d7
|
|
Change-Id: Idfd44364ed26258616711ef9ed786eef1d860c60
|
|
window" into devel/master
|
|
OnAccessibilityDisabled > RemoveTopLevelWindow > WindowHidden
makes mIsShown become FALSE
After this point, if the Accessibility is Enabled then the Bridge
does not call EmitActivate in ForceUp because mIsShown is FALSE by
RemoveTopLevelWindow > WindowHidden (mentioned above)
I cannot find any reason calling WindowHidden in RemoveTopLevelWindow
Please refer to following patch
ttps://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-adaptor/+/264762/8/dali/internal/accessibility/bridge/bridge-base.cpp@277
Change-Id: I6ebf2e4b94ff00867950047591539e8c8bc96c3a
|
|
Hidden means not present in the AT-SPI tree.
Change-Id: Ic6f51ae6fde88828c482adc6966c57d8bc1d805f
|
|
This change adds a new ActorAccessible class as a common ancestor for
both AdaptorAccessible and ControlAccessible. This will allow to reduce
code duplication between dali-adaptor and dali-toolkit. There are no
significant changes to methods moved from AdaptorAccessible to
ActorAccessible, as they will be reworked in a later change.
Change-Id: I61fb8c6610e761cd8d49f8cf67f61af35cfe8dda
|
|
|
|
It is able to be failed at ForceUp.
We did throw an exception if bridge cannot get a11y dbus-daemon address.
There is no proper way to handle this exception on application side.
So we need to recover the failure of ForceUp with this patch set.
Change-Id: I7f58c2fa3283bf6855d58a545ace9acb38252bb8
|
|
This patch adds a `const` qualifier to most getter methods across all
AT-SPI interfaces, with the exception of those that return an
`Accessible*`, since these objects are by nature mutable (i.e. exposed
on DBus for external manipulation, and DBus does not have const
objects), and there is always a possibility to return to `this` with the
`const` cast away, e.g. GetParent()->GetChildAtIndex(i).
There are also some other minor changes like a `noexcept` qualifier for
`~Accessible`, the `EditableText` interface now implying `Text`, and a
data-driven `GetRoleName` in `Accessible`.
Change-Id: I2ab0bb451f188fe0bd6dbd47c4aa0bad56624b42
|
|
BridgeImpl was constructed with an unpaired `new`, causing a memory
leak. Using a smart pointer guarantees that the memory will be freed at
the end of application lifetime.
Change-Id: Ib983d600cda082fa68e87c7d67130770acb78bef
|
|
Every AT-SPI interface now resides in a separate header file. There are
no major changes besides moving code between files and making necessary
adjustments to #include statements.
Change-Id: If693012e7babc63518d9d314d27e534497f7014b
|
|
The 'suppress' mode means that we do not want screen-reader working
for our ATSPI related event. In this case, it would be better NOT to
enable ATSPI bridge.
So far we have used 'suppress-screen-reader' attribute. But sometimes
GetAttributes does not work with following error message.
"get attribute error: Did not receive a reply. Possible causes include:
the remote application did not send a reply, the message bus security
policy blocked the reply, the reply timeout expired, or the network
connection was broken."
We could handle this case, but the best is NOT to send unnecessary
ATSPI events.
The screen-reader should turning on ScreenReaderEnabled property only
The ATSPI bridge will be enabled, when IsEnabled property is set by
another AT client such as Aurum.
Change-Id: I529ae8cc29594915b20c23279371a6488d11ea2d
|
|
Previously the call to GetDefaultLabelInfo() was delegated by bridge to
the corresponding Accessible object which computed the reply locally (by default returned self).
However default labels should be managed globally within given application.
This patch:
* replaces existing API AddPopup()/RemovePopup() by RegisterDefaultLabel()/UnregisterDefaultLabel()
which has wider applicability (not only for popups)
* changes the logic of GetDefaultLabelInfo() to compute default label object globally
Related patches:
https://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-toolkit/+/267323/
https://review.tizen.org/gerrit/#/c/platform/core/uifw/dali-csharp-binder/+/267375/
Change-Id: I68ccaf55835109139ba00e2204fcdfcf2627d403
|
|
The at-spi-bus-launcher cannot reponse immediately on booting time.
So there were lots of error logs can overwrite other logs.
This patch is reducing attempt to initialize bridge and read properties.
Change-Id: I546cc71c7e05b7d494a02b4ce73e16f96a8ef707
|
|
[Reproduce Steps]
1. Screen Reader ON
2. Run any application
3. Turn Screen Reader OFF
4. Turn Screen Reader ON
- It is caused by NULL windowAccessible which is returned
by following function used by EmitActivate()
Dali::Accessibility::Accessible* GetWindowAccessible(Dali::Window window)
- Connected Enabled / Disabled signals to Window
so that Window can add and remove itself from bridge
when the state of bridge changes.
Change-Id: I3bdebedd7bf4f9017d24b72999412a0f70cfd24b
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
|
|
Change-Id: Ic1fd8fc8404614c09d8d35bf630dbc45406ebb92
|
|
into devel/master
|
|
Change-Id: I76987be672b6fba5c994b909973385f4defdeef8
|
|
The NotifyAccessibilityStateChange did not work correctly.
Because "currentState.size()" return 2 always.
And following line set newValue to 1 always.
data->mBridge->EmitStateChanged(this, index, 1, 0);
The NotifyAccessibilityStateChange was totally incorrect.
Change-Id: If897084dc5b12b1c92711ef752187cc82fd7b01b
|
|
Change-Id: I4316bb3d1332d5459b6e02676fb9af28933ef954
|
|
|
|
An application could launch and read a property before at-spi-bus-launcher
is running. The at-spi-bus-launcher is a process writing the property.
If the application reads the property in syncronous way, then it is waiting
until the at-spi-bus-launcher can respond.
For the performance reason we will not read properties in syncronous way.
Change-Id: I0c7f33b25f99d37d57c67bca48e2e617ab5b1b1a
|
|
These signals are emitted whenever the AT-SPI bridge is turned on or
off. Note that `EnabledSignal` is only emitted for the first `ForceUp`
call, i.e. the one that returns `ForceUpResult::JUST_STARTED` (and
a similar story for `DisabledSignal`).
These signals are necessarily static members of `Bridge`, to guarantee
that they are delivered to consumers even in those use cases in which
the object returned by `GetCurrentBridge()` changes during the lifetime
of the application.
Change-Id: Id266b7ed064b8b2690e093804c3f7d23ac4347ce
|
|
- Updated ATSPI codes to tell which window is visible or focused now.
- DevelWindow::VisibilityChangedSignal is used to check
whether the window is shown or not.
- Added Window::FocusChangeSignal to check whether the window is
activated.
1. Window show / hide -> object:state-chaged:showing
2. Window focus / unfocus -> WindowEvent::ACTIVATE
Change-Id: I38a6f8f67c303234857a57e8d812511942a95917
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
|
|
- Added descriptions of the remaining Bridge classes.
- Updated some bridge codes according to dali coding style.
Change-Id: Icf1c9d5968b3397ee7a869ec2ba312037c5d3c56
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
|
|
So far, it has been judged that thye are on different lines
if the "y" value of child A is less than "y + 0.25 * h" value of child B.
But it caused unwanted children order in following case.
[(class=ContentPage)],[0,0,720,1280]
[(class=AppBar)],[0,0,720,120]
[(class=Button)],[64,36,48,48]
[(class=TextLabel)],[136,0,300,120],[NUI Tizen Gallery]
[(class=Control)],[476,0,180,120]
The order should be "Button" > "TextLabel".
Change-Id: Icb11cf1fb63de7a5cea8fbf7697cabdf5a5179eb
|
|
For clean code.
Change-Id: I19615fb3b6f2713b866925957ea9f716dcec5167
|
|
The next accessible should be showing if the next accessible is
under a scrollable parent which is not a scrollable parent of
currently highlighted accessible.
Change-Id: Id2d21528f6a4a1ecd4b4acc1cd3fff86dd80e0a5
|
|
- Added some descriptions for BridgeAccessible and BridgeBase.
I'm going to modify other header files, like BridgeAction, to another patch.
Otherwise, this patch would become too heavy.
- Updated some bridge codes according to dali coding style.
Change-Id: I2cc9e7d222c4082af1cc423fd80e0c3eafbf083e
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
|
|
There is an application launching before dbus.
In this case application cannot use ATSPI interface.
Because the Bridge cannot get a dbus connection.
We prepared BridgeDisableAutoInit.
But someone does not want to make application change.
This patch is providing a way to initialize the Bridge
for an application launching before dbus.
Change-Id: Ic254f8e001c3d4f198b0a7bb680e5c5792b818cd
|
|
- The original role of ApplicationShown/Hidden is to show/hide 'Window', not Application.
Therefore, the name of ApplicationShown/Hidden must be changed to
WindowShown/Hidden.
Change-Id: I58fc8945d8efc95e7f3d73d5a1cf8654baa2f767
Signed-off-by: Seoyeon Kim <seoyeon2.kim@samsung.com>
|
|
Change-Id: Ibee9189930452c4c04856a8a2c1f0fd4512b1680
|