371 Commits

Author SHA1 Message Date
Mehmet Fidanboylu
feb94f6c97
Protect LanguageRange behind Android O. (#17882) 2020-04-23 05:59:52 -07:00
Gary Qian
8dc91229b4
PlatformResolvedLocale localization message channel (#17755) 2020-04-21 15:34:44 -07:00
Gary Qian
52a815df0a
Accessibility null check to catch out of bounds hitTest (#17833) 2020-04-21 06:16:42 -07:00
Jason Simmons
f9e53c72c6
Unregister the TextInputChannel method handler when the TextInputPlugin is destroyed (#17646)
Fixes https://github.com/flutter/flutter/issues/54275
2020-04-17 14:25:34 -07:00
Michael Goderbauer
f4d6ce13dc
Clear focus if a platform view goes away (#17381) 2020-04-16 13:23:05 -07:00
LongCatIsLooong
cf3d738f50
Android text input autofill (#17465) 2020-04-16 03:41:23 -07:00
Jonah Williams
6e1d7f8883
[a11y] Support TalkBack reading by word, character, and paragraph (#17626) 2020-04-15 19:07:12 -07:00
Emmanuel Garcia
025e2d82dd
Migrate embedding to AndroidX (#17075) 2020-03-13 21:19:24 -07:00
xster
1ff81bc117
Make a pass through all the embedding javadocs (#17109) 2020-03-13 16:34:34 -07:00
Dan Field
826b2d46ef
Apply lints from internal roll (#16509) 2020-02-10 13:53:04 -08:00
Michael Klimushyn
077918dcfd
Apply Google Java format (#16501)
This shouldn't result in any logical changes. I've done a quick smoke
test by building a local Android engine and running Flutter gallery, no
compile errors or other obvious issues.

Applied by running `/ci/format.sh | patch -p0` with the altered script
added in flutter/engine#16500. I did locally modify the script slightly
further so it would run against all Java files in the repo instead of
just modified ones.
2020-02-07 16:10:46 -08:00
Chris Bracken
1a4f4e3943
Fix unused import in Android embedder (#16494)
android.os.Parcelable was added in commit
6d5aaa090abe19ff0f08eb28f6663173750fd80c but never used.
2020-02-07 12:26:50 -08:00
Amir Hardon
7f6149cbdd
Revert "Remove use of the deprecated AccessibilityNodeInfo boundsInPa… (#16355) 2020-02-04 11:43:03 -08:00
Michael Klimushyn
0816c040fb
Deprecated FlutterView v1 points to FlutterView v2 (#16304)
FlutterView#enableTransparentBackground has been deprecated for some
time now since it breaks a11y highlighting in most cases. When the
warning was first added there was no known workaround, but now the v2
embedding is in stable and ready to support this usecase. Update the
warning to point to the v2 embedding.
2020-01-31 15:06:52 -08:00
Dan Field
e3e2a3899e
Remove suprious warning (#14079) 2019-12-02 16:51:30 -08:00
Dan Field
ea721ebf1a
Fix live region logic (#14081) 2019-12-02 15:49:15 -08:00
Darren Austin
3ea4005844
Added Semantic header support on Android. (#13262)
Added Semantic header support on Android.
2019-11-05 15:27:25 -08:00
Mehmet Fidanboylu
4092b0c4fe
Add isRunningInRobolectricTest back (#13424) 2019-10-29 19:46:21 -07:00
Jason Simmons
c081ee7f2c
Use DartExecutor.getBinaryMessenger in FlutterNativeView instead of deprecated send methods (#13403) 2019-10-29 09:48:54 -07:00
Jonah Williams
6ab23d37d5
fix NPE in accessibility bridge (#13255) 2019-10-21 15:35:34 -07:00
Michael Klimushyn
531a9cfb8e
Fire PlatformViewController FlutterView callbacks (#13015)
Fixes a bug where `PlatformViewController` was not being notified of `FlutterView` attachment changes.
2019-10-14 14:03:25 -07:00
Matt Carroll
9acec4102a
Move initialization into FlutterEngine (#12806) 2019-10-11 16:15:55 -07:00
Greg Spencer
21b8224ae1
Send AccessibilityEvent.TYPE_VIEW_FOCUSED when input focus is set. (#12746)
When the focus changes, we should be sending a TYPE_VIEW_FOCUSED event. This enables that.
2019-10-08 16:54:17 -07:00
Kate Lovett
58d7b84177
Re-land Adding Link Semantics (#12972) 2019-10-08 11:27:56 -07:00
Kate Lovett
ac45051f2a
Revert "Adding Link SemanticsFlag (#12453)" (#12815)
This reverts commit 974ca210f5275aee0775b363e9c3416e1603cf73.
2019-10-04 17:06:32 -07:00
Kate Lovett
974ca210f5
Adding Link SemanticsFlag (#12453) 2019-10-04 12:51:10 -07:00
Greg Spencer
e76089a451
Stop setting the accessibility text if a node has SCOPES_ROUTE set. (#12730)
This keeps us from setting the text on a node if it is a SCOPES_ROUTE node, and sends the "TYPE_VIEW_FOCUSED" event when we update the semantics information and a view has the input focus.
2019-10-02 10:35:28 -07:00
Greg Spencer
05f4b33cd2
Add isFocusable to SemanticsFlag (#12618)
This adds an isFocusable to SemanticsFlag so that the framework can tell the engine what semantics nodes are allowed to be focused, which will affect what platform flags are applied to the semantics information.

This flag is not yet in use by the frame
2019-09-30 09:46:48 -07:00
Jonah Williams
6f5eb1332f
Add support for JIT release mode (#12446) 2019-09-27 11:20:54 -07:00
Greg Spencer
b3f2aad1c6
Revert "Send TYPE_VIEW_FOCUSED for views with input focus. (#12410)" (#12455)
This reverts commit c1773f3c57eb957fbc1702b8353b35648c38e372 because it breaks the Flutter framework build.
2019-09-25 20:35:55 -07:00
Greg Spencer
c1773f3c57
Send TYPE_VIEW_FOCUSED for views with input focus. (#12410)
This change modifies the accessibility bridge so that if a node has input focus, then it will tell TalkBack so that it will request the accessibility focus for the view.

It also sets the content change types bit field to include CONTENT_CHANGE_TYPE_SUBTREE to indicate that the subtree for the view has changed for API levels after, and including, KitKat (19)
2019-09-25 14:14:00 -07:00
Michael Goderbauer
ef7bcafd5c
a11y: expose max character count for text fields (#12269) 2019-09-16 09:37:25 -07:00
Emmanuel Garcia
edee1fea58
Add @Keep annotation (#11893) 2019-09-05 13:23:04 -07:00
Matt Carroll
fde7c8c334
Rename first frame method and notify FlutterActivity when full drawn (#38714 #36796). (#11357) 2019-09-03 15:49:53 -07:00
Shi-Hao Hong
014ab76ad0
Pass Android Q insets.systemGestureInsets to Window (#10413)
* Pass Android Q system gesture inset information from insets.systemGestureInsets to Window.systemGestureInsets
2019-08-16 13:42:56 -04:00
Michael Klimushyn
ed88d0a44d
Change SemanticsNode#children lists to be non-null (#10952)
Prevents NPEs and simplifies the code needed to handle these collections. There doesn't seem to have been a meaningful difference between null and empty collection here. The specific crash was happening when `object.scrollChildren > 0` while `object.childrenInHitTestOrder == null`, which looks like it may be a bug on its own and probably needs further investigation.
2019-08-12 17:16:59 -07:00
Jason Simmons
d9bbe37ce3
Remove use of the deprecated AccessibilityNodeInfo boundsInParent API (#10773) 2019-08-08 15:25:56 -07:00
Matt Carroll
4c6948a88a
Android Embedding Refactor 38: Removed AssetManager from DartEntrypoint. (#10250) 2019-07-30 12:57:01 -07:00
Matt Carroll
f336e05a69
Android Embedding PR37: Separated FlutterActivity and FlutterFragment via FlutterActivityAndFragmentDelegate (#9895) 2019-07-29 17:40:25 -07:00
Michael Klimushyn
839f9a2707
Deprecate FlutterView#enableTransparentBackground (#10235)
The API breaks accessibility highlighting because of
SurfaceView#setZOrderOnTop. Deprecate it since the underlying issue is
an Android SDK one that can't be worked around from within a
SurfaceView.
2019-07-29 12:46:26 -07:00
Matt Carroll
9cf13568e2
Added hasRenderedFirstFrame() to old FlutterView for Espresso (#36211). (#9939) 2019-07-19 16:46:02 -07:00
Mouad Debbar
8849d3092d
Add multi-line flag to semantics (#9850) 2019-07-17 09:51:09 -07:00
Jason Simmons
3c9a22c778
Fall back to a fully qualified path to libapp.so if the library can not be loaded by name (#9762)
libapp.so contains compiled application Dart code.  On most Android systems,
this library can be loaded by calling dlopen("libapp.so"), which will search
Android's default library directories.

On some Android devices this does not work as expected.  As a workaround, this
patch provides a fallback path to libapp.so based on ApplicationInfo.nativeLibraryDir.

Fixes https://github.com/flutter/flutter/issues/35838
2019-07-11 12:39:42 -07:00
Jason Simmons
3f4f606105
Simplify loading of app bundles on Android (#9360)
* Remove deprecated runBundle APIs
* Remove code related to dynamic patching (including support for multiple
  bundle paths)
* Change FlutterRunArugments.bundlePath to be the Android AssetManager path
  where the app's assets are located
2019-06-25 14:17:50 -07:00
Chris Bracken
14d2954a52
Eliminate unused import in FlutterView (#9439)
Eliminates an unused import in FlutterView.java. Fixes import ordering.
2019-06-24 11:17:18 -07:00
Amir Hardon
3757f19923
delegate checkInputConnectionProxy to the relevant platform view (#9426)
The previous logic allowed proxying for any view that belonged to one of the platform views' virtual displays which may lead to us allowing proxying for a view that the platform view isn't allowing proxying for, previous logic also didn't account for unattached views.

This change instead delegates the decision to the platform view.

We use the fact that each virtual display has its unique context to associate any view with its relevant virtual display.

A nice side effect of calling the platform view's checkInputConnectionProxy for webviews is that the plugin now has a way to get a handle to the ThreadedInputConnectionProxyView, which may be useful for getting keyboard working on webview's prior to Android N.
2019-06-21 14:30:58 -07:00
Matt Carroll
a2db2ea6f1
Android Embedding Refactor PR35: Ensure all JNI methods are in FlutterJNI (#34751). (#9391) 2019-06-20 17:13:58 -07:00
chunhtai
9ab6550b45
Introduce read only text field semantics (#9281) 2019-06-19 09:42:23 -07:00
Jason Simmons
fcff2d619c
Use the DartServiceIsolate status callback to publish the observatory URI to the Android embedder (#9337)
The Android embedder had been using a JNI call to get the observatory URI from
DartServiceIsolate.  This call was not thread safe and was redundant with the
server status callback mechanism used on iOS.
2019-06-17 16:17:29 -07:00
Michael Klimushyn
6d5aaa090a
Fix a11y in embedded Android views post O (#9321)
This patch works around Android's limitations on reflection. With it embedded
platform views that use virtual node hierarchy trees should be accessible on all
Android versions to date.

The workarounds in this PR are brittle. Ideally the methods would be made public
in Android instead so we wouldn't need to employ tactics like these to work
around the missing methods.

`AccessibilityNodeInfo#getChildId` is blocked from any type of reflection
access, but the underlying private member that the getter accesses,
`mChildNodeIds`, can still be reflected on. On Android versions where we can't
access the getter, this patch falls back on reflectively accessing the field
instead. Unfortunately this field is a
[`LongArray`](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/LongArray.java),
a utility data class private to Android. So in this case we're reflecting to
both access the member and actually read data from it, since we need to use
reflection to call `LongArray.get(index)`.

`AccessibilityNodeInfo#getParent()` doesn't have any lucky available underlying
members. However, `AccessibilityNodeInfo` itself is `Parcelable`, and
`mParentNodeId` is one of the pieces of data that's written to a parcel via
`AccessibilityNodeInfo#writeToParcel`. So the fallback for that is to write the
node to a parcel and then read the parcel for the ID in question. This will
break if the implementation details of `AccessibilityNodeInfo#writeToParcel`
ever change. The details have already changed enough in the past to require two
sets of logic for reading from the parcel.
2019-06-14 11:43:41 -07:00