67 Commits

Author SHA1 Message Date
Amir Hardon
e80df363d2
Keyboard support for embedded Android views. (#9203)
Generally what this PR is doing is setting up a delegation mechanism
for Android's onCreateInputConnection.

It works by letting the framework know when an embedded view gets loses
focus(within the virtual display), the framework maintains a focus node
for each Android view that is kept in sync with the focus state of the
embedded view.

The TextInputPlugin is extended to allow for 2 type of text clients a
"framework client"(what we had before) and a "platform view client".
When the AndroidView's focus node in the framework is focused the
framework sets a "platform view text client" for the TextInputPlugin,
which will result in the TextInputPlugin delegating
createInputConnection to the platform view.

When a platform view is resized, we are detaching it from a virtual
display and attaching it to a new one, as a side affect a platform view
might lose an active input connection, to workaround that we "lock" the
connection when resizing(by caching it and forcing the cached copy until
the resize is done).

Additional things worth calling out in this PR:

To properly answer which views are allowed for input connection
proxying we compare a candidate view's root view to the set of root
views of all virtual displays.
We also preserve a view's focus state across resizes.
Note that this PR only wires text for the io.flutter.view.FlutterView
For the new Android embedding some additional plumbing is necessary.

Corresponding framework PR: flutter/flutter#33901

flutter/flutter#19718
2019-06-06 21:58:04 -07:00
Amir Hardon
647a8524b0
Revert "Switch PlatformViewsController from Activity ref to Application ref. (#9193)" (#9211)
This reverts commit 5ea125eaf9e15a3e4eefe89b13cb86b0ba820d8f.
2019-06-06 09:29:10 -07:00
Matt Carroll
5ea125eaf9
Switch PlatformViewsController from Activity ref to Application ref. (#9193) 2019-06-05 14:24:16 -07:00
Greg Spencer
bf15bd0803
Add the key event source, vendorId, and productId from Android (#9186)
This adds the key event source from Android so that the framework can differentiate between keyboard events and game controller events. Also added vendor and product ids so that Flutter code can decide to do special processing based on the kind of device, if desired.
2019-06-04 16:46:23 -07:00
Amir Hardon
86aa01442b
Fix platform views channel regression (#9185)
This regression was introduced in #7847.

The PlatformViewsChannel method call handler was always setting the result to `notImplemented` even after handling a result, this resulted in a "Reply already submitted" exception being thrown.
Note that the method channel code is swallowing this exception and logging an error, so we didn't crash instead we were logging an error(this is why the integration test didn't fail).

Filed https://github.com/flutter/flutter/issues/33863 to make sure tests fail when such exceptions are thrown.

This PR also cleans up an unused `NoSuchPlatformViewException` that was introduced in #7847.

https://github.com/flutter/flutter/issues/33866
2019-06-04 12:38:38 -07:00
Matt Carroll
008090b8ab
Extracted PlatformViewsChannel from PlatformViewsController. (#7847) 2019-06-03 11:04:33 -07:00
Jason Simmons
e87326dd7d
Suppress an unchecked cast warning in ShimPluginRegistry (#9145) 2019-05-30 13:10:03 -07:00
Matt Carroll
e8aa120482
New Plugin API PR5: Integrates plugin lifecycle control with FlutterFragment. (#9083) 2019-05-29 20:46:07 -07:00
Matt Carroll
8b1199c4dd
Implemented Log proxy that only logs in BuildConfig.DEBUG (#25391). (#9122) 2019-05-29 20:19:29 -07:00
Matt Carroll
4c4c0f8282
Add plugin shim to facilitate old plugins in new embedding (#33478). (#9120) 2019-05-29 18:39:15 -07:00
Matt Carroll
e8c2b17873
Added support for transparent FlutterActivitys (#32740). (#9115) 2019-05-29 18:34:53 -07:00
Chris Bracken
509a43fe27
Apply minor cleanups to Android embedding (#9088)
Eliminate an unused import, add missing @Override annotations, and
eliminate an unused logger.
2019-05-25 15:45:14 -07:00
Matt Carroll
cfa524fcdf
New Plugin API PR4: Adds Lifecycle support to the new plugin system. (#9049) 2019-05-24 19:28:49 -07:00
Matt Carroll
c181972a40
New Plugin API PR3: Introduces Service, BroadcastReceiver, and ContentProvider awareness, control surfaces, and plugin bindings. (#8962) 2019-05-17 14:25:05 -07:00
Matt Carroll
51486a5494
New Plugin API PR2: Introduces ActivityAware, ActivityControlSurface, and ActivityPluginBinding. (#8943) 2019-05-13 17:07:29 -07:00
Matt Carroll
904cfc4fe3
Add @UiThread to MethodChannel and related classes/calls (#32642). (#8947) 2019-05-13 13:26:31 -07:00
Matt Carroll
816d3fc586
New Plugin API PR1: Introduces PluginRegistry and FlutterPlugin, adds support for plugin registration to FlutterEngine. (#8826) 2019-05-12 16:58:38 -07:00
Matt Carroll
2c9e37c34e
Cause crash in FlutterJNI if invoked on non-main thread (#31263). (#8830) 2019-05-03 14:55:28 -07:00
Dan Field
7ce2666e54
Guard Android logs (#8824) 2019-05-03 14:32:29 -07:00
Matt Carroll
30639ee7b6
Allow FlutterEngine to be used on back-to-back screens (#31264). (#8808) 2019-05-02 13:19:11 -07:00
Chris Bracken
fdd8fdbf40
Fix reflective ctor invocation in FlutterFragment (#8735)
Class.newInstance() propagates any exception thrown by the nullary
constructor, including a checked exception. This effectively bypasses
the compile-time exception checking that would otherwise be performed by
the compiler. The Constructor.newInstance method avoids this problem by
wrapping any exception thrown by the constructor in a (checked)
InvocationTargetException.
2019-04-24 17:50:19 -07:00
Ben Konyi
3e597e1de3
Enable VM service authentication codes by default (#8594) 2019-04-18 14:17:25 -07:00
Matt Carroll
23b0e02ec0
Android Embedding PR29: Improve FlutterFragment construction API + engine config API. (#8540) 2019-04-12 13:19:05 -07:00
Matt Carroll
d84d204c76
Android Embedding PR30: Make FlutterView focusable so that the keyboard can interact with it. (#8551) 2019-04-11 13:50:42 -07:00
Matt Carroll
892591da88
Android Embedding PR28: Report app is active to Flutter in FlutterFragment.onResume() instead of onPostResume() forwarded from Activity. (#8536) 2019-04-10 17:47:56 -07:00
Ben Konyi
0a2869e5c3
Added support for authentication codes for the VM service (#8527) 2019-04-10 14:38:58 -07:00
Matt Carroll
5279132687
Android Embedding PR27: Fix SurfaceView flicker in Fragment transactions (#8504) 2019-04-09 13:45:25 -07:00
Matt Carroll
d3fbaea9a4
Android Embedding PR25: Prevent black rectangle when launching FlutterActivity (#8460) 2019-04-05 15:59:12 -07:00
Matt Carroll
6bc33b5e14
Android Embedding PR24: Allow FlutterActivity to provide an engine, also adjust FlutterFragment timing to avoid Activity launch lag. (#8448) 2019-04-05 13:04:17 -07:00
Jason Simmons
ca7623eb39
Handle null values in TextInputConfiguration.actionLabel JSON (#8377)
Fixes https://github.com/flutter/flutter/issues/29798
2019-03-29 17:15:04 -07:00
Jason Simmons
71d59cde9e
Check for hover motion events in AndroidTouchProcessor (#8376)
Fixes https://github.com/flutter/flutter/issues/30122
2019-03-29 15:42:11 -07:00
Matt Carroll
7620056277
Android Embedding PR22: Polish - FlutterActivity Intent factories, FlutterFragment control of render modes, FlutterSurfaceView transparent until rendering is ready. (#8317) 2019-03-27 14:57:23 -07:00
Matt Carroll
28433c513c
FlutterJNI no longer asserts it is attached when dispatching platform messages and instead fizzles with a warning if not attached. Not sure what root cause of issue is, but this is necessary to avoid crashes. (#8246) 2019-03-21 13:45:13 -07:00
Matt Carroll
1dbd2046b5
Moved io.flutter.embedding.engine.android package to io.flutter.embedding.android (#8221) 2019-03-20 11:30:49 -07:00
Amir Hardon
45f69ac471
Plumb a reference of PlatformViewsController and AccessibilityBridge to each other (#8208)
This is in preparation for implementing platform views a11y on Android.

And e2e working prototype is available here: https://github.com/amirh/engine/tree/a11y_hacks

flutter/flutter#19418
2019-03-19 15:48:45 -07:00
Matt Carroll
b32d0ab982
Bugfix: Prevent crash when responding to a platform message after FlutterJNI detaches from native (#28651). (#8170) 2019-03-14 21:13:03 -07:00
Matt Carroll
09db84fad6
Android Embedding PR 19: Add accessibility to new FlutterView. (#8109) 2019-03-14 14:24:49 -07:00
liyuqian
66fdeb163e
Add dump-shader-skp switch to help ShaderWarmUp (#8148)
Allow Flutter to automatically dump the skp that triggers new shader compilations. This is useful for writing custom ShaderWarmUp to reduce jank. By default, it's not enabled to reduce the overhead. This is only available in profile or debug build.

Later, we can add service protocol support to pull the skp from the client to the host. Currently, it works fine for Android-based devices (including our urgent internal clients) where we can `adb shell` into the cache directory.
2019-03-14 12:58:09 -07:00
Jason Simmons
b1b388f1c2
Encode scroll motion events in the Android touch processor (#8149) 2019-03-13 11:30:42 -07:00
Matt Carroll
20165b3147
Integrated AndroidTouchProcessor within the old FlutterView (#8095) 2019-03-11 16:04:44 -07:00
Matt Carroll
718329ce6e
Android Embedding PR 17: Clarify AccessibilityBridge and move logic out of FlutterView. (#8061) 2019-03-08 18:09:04 -08:00
Matt Carroll
edfc0cfaaf
Android Embedding PR 16: Add touch support to FlutterView. (#8034) 2019-03-08 18:08:26 -08:00
Michael Klimushyn
1d10e0eb67
Guard against NewAPI failures (#8048)
Adds minimum SDK checks around minimum APIs.

flutter/flutter#28848
2019-03-08 13:33:58 -08:00
Matt Carroll
8f1fdcd195
Android Embedding PR 14: Almost done with FlutterFragment. (#8000) 2019-03-04 18:02:24 -08:00
Matt Carroll
fb3e35d6ac
Android Embedding PR15: Add Viewport Metrics to FlutterView (#8029) 2019-03-04 17:12:52 -08:00
Matt Carroll
fe15149d1a
Android Embedding PR 12: Add lifecycle methods to FlutterActivity. (#7974) 2019-02-28 16:51:17 -08:00
Matt Carroll
6145e9046a
Android Embedding PR 13: Integrated text input, keyevent input, and some other channel comms in FlutterView. (#7979) 2019-02-28 15:02:56 -08:00
Matt Carroll
56c16154ea
Android Embedding PR 9: Introduce an AndroidTouchProcessor to convert MotionEvents to Flutter touch data. (#7947) 2019-02-28 14:44:28 -08:00
Matt Carroll
2360b459de
Android Embedding PR 11: Add FlutterEngine to FlutterFragment. (#7972) 2019-02-27 21:09:28 -08:00
Matt Carroll
4db7c30501
Android Embedding PR 10: Add system channels to FlutterEngine. (#7960) 2019-02-26 19:05:18 -08:00