Chrome's implementation of UI Automation support was only
partially-complete at the time we forked //third_party/accessibility. We
don't use UIA in Flutter, but rely instead entirely on the MSAA
accessiblity implementation.
Disabling these tests for now, rather than deleting, since we'll need to
make a decision on whetheer to port the updates from the Chromium tree,
or write our own simpler UIA implementation.
Issue: https://github.com/flutter/flutter/issues/98427
Related issue: https://github.com/flutter/flutter/issues/94782
Delegates string encoding conversions between UTF-8 and UTF-16 strings
in //third_party/accessibility/base to our existing implementations in
FML.
Issue: https://github.com/flutter/flutter/issues/98061
This change adds additional Tonic templates for automatically generating bindings for Dart FFI, as well as serialisation of the bindings.
- Adds parallel FfiDispather templates to the existing DartDispatcher used for (old) native bindings.
- Adds serialisation of the bindings to enable automatic conversion and verification.
- Extends existing DartConverters with conversions to and from the FFI transport types.
- Adds new test (ffi_native_unittest.cc) for the above.
This will allow us to replace the existing native functions in e.g. dart:ui with new Dart FFI native functions.
This reverts commit e7c6dea to re-land the previous change in #29773.
Chinmay realized that because we link the whole engine into one DLL on Windows, the export settings for the symbols don't affect this code: If we include a second copy of the double-conversion library, the duplicate symbols are all internal to the DLL. Consequently, we need to link to the copy in the Dart runtime, so this is the correct implementation. If the Dart team decides to change/remove the library in the future, we will need to add in our own copy at that time.
This adds some accessibility improvements for reading out numbers. Currently this code is only used on Windows.
When calling Unserialize on an AXTreeUpdate, check whether the focus_id
has changed. If so, emit a FOCUS_CHANGED event from the event generator.
This allows the platform-specific FlutterPlatformNodeDelegate
implementations to handle focus changes originating from the framework,
and trigger the appropriate operating system focus-changed
notifications.
Issue: https://github.com/flutter/flutter/issues/77838
When performing an accessibilty scroll, the default scroll distance is
kSmallScrollIncrement (40 pixels). This value is then multiplied by the
system scale factor, as set in the display settings drop-down in the Windows
system settings.
When we imported the AX tree from Chromium, we hard-coded the system
scale factor to 1.0 due to a fair amount of abstraction of the scale
factor lookup in their code. This fills it back in.
Issue: https://github.com/flutter/flutter/issues/78798
* Win32 a11y bridge and platform node delegates
This is the third in a series of patches adding accessibility support
for the Windows embedder. This patch wires in the Accessibility bridge,
and lands the core structure of the Windows FlutterPlatformNodeDelegate
and AccessibilityBridgeDelegate classes, including:
* Instantiating the AccessibilityBridge when the semantics tree is
enabled.
* Creating FlutterPlatformNodeDelegate wrappers for semantics tree
nodes.
* Handling custom action updates.
* Building and updating the accessibility tree on semantics updates.
* Returning the native IAccessible objects when queried.
Breaking this out so that the follow-up patches can be reviewed and
landed in smaller, independent chunks.
Issue: https://github.com/flutter/flutter/issues/77838
Issue: https://github.com/flutter/flutter/issues/93928
* Roll benchmark to upstream github @ 431abd149fd76a072f821913c0340137cc755f36
Roll buildroot to bfa04ad85fed176aa909f880ef5c8009c945ba03 to get build files for benchmark
* Roll flutter_packages to b1fdbabbe70caa21566f6a815235d624c716ea16
* Add a task name to parse_and_send.dart's call to FlutterDestination.update()
//flutter/third_party/accessiblity/ax/ax_event_generator.cc includes the
AXEventGenerator::Iterator class which subclasses std::iterator, which
triggers an MSVC C++17 deprecation warning. This warning, can be
suppressed by defining _SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING
which is already done in the accessibility_config config.
Also updates the TODO to reference the issue tracking the cleanup and
removal of that definition.
Issue: https://github.com/flutter/flutter/issues/92229
Originally I wanted to update to 3f443830bd52d3aa5fab3c1aa2b6d0848bb5039d.
However, that change had a problem with a misspelled build target which
I also had to fix.
But, that fix turned out to be infeasible on its own, and led to a
bugfix in `gn`.
Fixes:
- Updates gn to commit 0153d369bbccc908f4da4993b1ba82728055926a to take
in the fix at https://gn-review.googlesource.com/c/gn/+/12220 which
prevented the correct treatment of target refactoring.
- Updates ICU to commit 2b50fa94b07b601293d7c1f791e853bba8ffbb84 to
correct the target naming, which should now work thanks to the
previous update to gn. See
https://gn-review.googlesource.com/c/gn/+/12220 for the details of
that bug.
- Fixed the visibility declaration in `//flutter/third_party/accessibility:accessibility_config`
which used to not be enforced due to a bug in `gn` which was fixed in
https://gn.googlesource.com/gn/+/46b572ce4ceedfe57f4f84051bd7da624c98bf01,
a revision which we took in by updating `gn` in the first bullet.
Fun times.
See: https://chromium-review.googlesource.com/c/chromium/deps/icu/+/3163524
Please see the linked issue for details about why this update.
* Make dart wrappable classes use only one native field
It appears like the second native field is never really used for
anything: It is set, cleared and verified it was cleared, but that is
it.
=> The only native field that is necessary is the `this` pointer of the
equivalent C++ object.
=> The [DartWrapperInfo] object which was stored as second native field
is always accessible via the virtual `GetDartWrapperInfo()` method on
`this`.
Group together externally-managed UIDartState.
It's a frequent pattern to enable access to shell resources from the
framework via UIDartState. These handles are passed through several
other objects, where they lay mostly dormant. This refactor just aims
to ease maintenance of this state.
UIDartState is essentially just an easy to extend bus for dropping
off the shell kids in UIDartState, with constructors/operators that
remove the need for providing a full initializer lists in unittests.