124 Commits

Author SHA1 Message Date
Lau Ching Jun
424ae67e74
Allow naming shared libraries in deferred component via AndroidManifest (#23925) 2021-01-25 16:34:27 -08:00
Gary Qian
4e87f60eaa
Read loading unit mapping from AndroidManifest instead of strings (#23868) 2021-01-23 23:04:02 -08:00
Lau Ching Jun
ffc77f0da3
Search multiple paths when loading deferred component .so files. (#23849)
This is a partial revert of 7c19824c6d08bb8e3fc4217058178d42d451e26b

On some devices we still need to the original search paths approach
because dlopen with just the base file name doesn't work. We're
combining both approaches now, adding the base filename as the first
entry in the searchPaths.
2021-01-22 09:41:22 -08:00
Lau Ching Jun
7c19824c6d
Pass the filename directly to JNI for loading deferred component. (#23824)
When .so files are in the lib/ path in the APK, it can be dlopen-ed
directly using just the filename. We don't need to search for the file.
The interface has thus been changed to accept a single path instead of a
search directory.

Also instead of hardcoding the .so basename and assets directory, read
them from FlutterApplicationInfo instead.
2021-01-21 16:01:13 -08:00
Greg Spencer
3da13fccf3
Make android more lenient when it comes to out-of-order key event responses (#23604)
Relaxes enforcement of key events being handled in order, to match similar code in the Linux and Windows implementations.
2021-01-21 15:31:21 -08:00
xster
915e2ca178
FlutterEngineGroup for Android (#23675) 2021-01-19 12:29:02 -08:00
Sarbagya Dhaubanjar
fb56b4be2a
Android deeplink sends "path + query" instead of just path (#23561)
* added .cpid & .gclient to gitignore

* updated tests

* minor change

* fixed formating

* compact concatenation

* minor change

* Revert "added .cpid & .gclient to gitignore"

* cleanup
2021-01-12 16:02:08 -08:00
Gary Qian
3f200606c1
Rename DynamicFeature->DeferredComponent and impl uninstall DeferredComponents (#23224) 2021-01-07 21:02:05 -08:00
Dan Field
df27e691b3
Fix SurfaceView usage when status bar is transparent for a11y (#23457) 2021-01-06 11:53:42 -08:00
chunhtai
e682f2aba3
fixes android deeplink to push the path only (#23255) 2021-01-05 11:14:01 -08:00
Gary Qian
1c975f1e7c
AssetResolver updating in AssetManager for Dynamic features (#23130) 2020-12-23 17:39:55 -08:00
Gary Qian
056b8be933
DynamicFeatureChannel MethodChannel and Install state tracking (#22833) 2020-12-14 15:43:56 -08:00
ftsui
a26e80c931
Allow the root layout to be overriden. (#22887)
a
2020-12-07 14:15:45 -08:00
Greg Spencer
78b567f7d5
Reland: "Fix race condition in key event handling on Android (#22658)" (#22834) 2020-12-03 08:53:02 -08:00
Greg Spencer
6c8342f76a
Revert "Fix race condition in key event handling on Android (#22658)" (#22823)
This reverts commit 40fa345 (#22658) because it breaks some Google tests. Will investigate and re-land.
2020-12-02 12:03:48 -08:00
Greg Spencer
40fa345c02
Fix race condition in key event handling on Android (#22658)
This fixes a problem in Android key event handling where, because I was only using a single bool to indicate that we were re-dispatching, there was a race condition when multiple keys were pending (sent to the framework, awaiting responses).

This fixes that by switching to a mechanism that uses the event itself to tell if it was redispatched.

In doing this, I realized that because key events can come from either the dispatchEvent call, or through the InputConnectionAdaptor, I needed to handle both routes properly so that the events would all be handled, and all go through the same mechanism on the framework side.
2020-12-01 09:42:38 -08:00
xster
a35e3fe4a3
Let FlutterFragment not pop the whole activity by default when more fragments are in the activity (#22692) 2020-11-30 12:43:03 -08:00
Gary Qian
53fc019aab
Split AOT Android Embedder and shell (#22179) 2020-11-19 17:22:26 -08:00
Gary Qian
139fc64129
Rename padding->viewPadding to match framework naming conventions (#22599) 2020-11-19 09:50:51 -08:00
Ari Weiland
ccbc2e6cf1
Fix some serious lifecycle bugs with Android embedding code (#22203) 2020-11-13 11:58:02 -08:00
Dan Field
d07368169e
Limit heap growth on Android (#20473)
Limit heap growth to half of totalMem by default, with the option to set it higher or lower in the AndroidManifest
2020-11-12 14:53:54 -08:00
chunhtai
d97a81c889
reland support uri launch in android (#22363)
* Revert "Revert "support uri intent launcher in android (#21275)" (#22298)"

This reverts commit f61cbc05f01ffb5dbda6a9c20eb0feda524774ab.

* reland support uri launch for android

* refactor

* update

* fix test

* addressing comments

* addressing comments

* revert throw error
2020-11-11 14:51:04 -08:00
Greg Spencer
13a624ac31
Use dispatchKeyEvent, and handle keys sent to InputConnection.sendKeyEvent on Android (#22340)
This (mostly) re-lands #21163, which was reverted in #22321

This switches from using onKeyDown to using dispatchKeyEvent on Android so that keys can be intercepted handled by the framework and not continue to be dispatched to other controls.

It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends them to Flutter.

This fixes the problem where (for example) pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.

Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent, and system keys (like the back button) are only received if the IME doesn't eat them.
2020-11-06 12:45:47 -08:00
Greg Spencer
5d481fb9c1
Revert "Reland: Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#22304)" (#22321)
This reverts commit 7a8057bd728772d5b7ff2451301d6c095d6bda1b because it breaks back button functionality.
2020-11-05 09:02:25 -08:00
Greg Spencer
7a8057bd72
Reland: Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#22304)
This re-lands #21163, which was reverted in #22004

Now that flutter/flutter#67359 has landed, this change will no longer cause spaces (and other shortcuts) to be ignored in text fields if there is no action associated with the intent, even if there is a shortcut key mapping to an intent.

It also no longer causes web test failures (as far as I can tell without submitting it: the same tests don't fail locally).

Here's the original PR description:

This switches from using dispatchKeyEvent to using dispatchKeyEventPreIme so that keys can be intercepted before they reach the IME and be handled by the framework.

It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends the to Flutter before sending them to the IME (which it now only does if they are not handled by the framework).

This fixes the problem where pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.

Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent.
2020-11-04 15:54:21 -08:00
chunhtai
f61cbc05f0
Revert "support uri intent launcher in android (#21275)" (#22298) 2020-11-04 15:04:02 -08:00
Lazy Llama
7d6180c301
Fix viewInset.bottom and viewPadding.bottom… (#21730) 2020-10-29 17:28:01 -07:00
Jason Simmons
5677d3dea5
Reformat some files that were not auto-formatted (#21940) 2020-10-23 18:57:03 -07:00
chunhtai
742dfbefad
support uri intent launcher in android (#21275)
* support uri intent launcher in android

* fix comment
2020-10-22 15:54:30 -07:00
Lau Ching Jun
3d27fd5b2c
Support loading assets from Android dynamic feature modules (#21504)
Initialize the AssetManager from the application context so that assets from dynamic feature modules can be loaded.
2020-10-22 15:53:11 -07:00
Greg Spencer
3658bd7ea7
Revert "Reland: Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#21979)" (#22004)
This reverts commit 3cd70f2cfb21baf30cc62de29d311118aa757c60 because it causes some failures in web tests.
2020-10-20 11:42:01 -07:00
Greg Spencer
3cd70f2cfb
Reland: Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#21979)
This re-lands #21163, which was reverted in #21513

Now that flutter/flutter#67359 has landed, this change will no longer cause spaces (and other shortcuts) to be ignored in text fields if there is no action associated with the intent, even if there is a shortcut key mapping to an intent.

Here's the original PR description:

This switches from using dispatchKeyEvent to using dispatchKeyEventPreIme so that keys can be intercepted before they reach the IME and be handled by the framework.

It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends the to Flutter before sending them to the IME (which it now only does if they are not handled by the framework).

This fixes the problem where pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.

Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent.
2020-10-20 10:14:31 -07:00
Mehmet Fidanboylu
abdc8d3853
Forward Error objects to uncaught exception handler if there is one. (#21806) 2020-10-16 08:21:04 -07:00
Ren You
83b9df9df5
Revert "Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#21163)" (#21513)
This reverts commit 539034ae850d422a5449edcb36c60ad90ac91905.
2020-09-30 09:34:05 -07:00
Greg Spencer
539034ae85
Use dispatchKeyEventPreIme, and handle keys sent to InputConnection.sendKeyEvent on Android (#21163)
This switches from using dispatchKeyEvent to using dispatchKeyEventPreIme so that keys can be intercepted before they reach the IME and be handled by the framework.

It also now intercepts key events sent to InputConnection.sendKeyEvent, as some IMEs do (e.g. the Hacker's Keyboard), and sends the to Flutter before sending them to the IME (which it now only does if they are not handled by the framework).

This fixes the problem where pressing TAB on a hardware keyboard sends the tab to both the text field and to the focus traversal system.

Note that we still can't intercept all keystrokes given to a soft keyboard, only those which the soft keyboard decides to send to InputConnection.sendKeyEvent.
2020-09-29 12:46:29 -07:00
Emmanuel Garcia
db9991279d
Support dragging native platform views (#21396) 2020-09-25 17:46:34 -07:00
xster
88e53777d1
Enforce exclusivity for activity and fragments attached to the FlutterEngine (#21272) 2020-09-22 10:34:52 -07:00
Jason Simmons
11befe419e
Disconnect the view's AndroidKeyProcessor when detaching from the engine (#21307) 2020-09-21 17:42:02 -07:00
Emmanuel Garcia
1ef10b240e
Account for current open image in FlutterImageView (#21191) 2020-09-15 14:10:55 -07:00
xster
b22a8c69d9
Let FlutterActivity/Fragment/FragmentActivity have an app bundle path override instead of eager resolving during construction (#20769) 2020-09-03 17:31:30 -07:00
Gary Qian
15bf1bbf6f
[Android R] Integrate DisplayCutouts into viewportMetrics (#20921) 2020-09-02 05:18:35 -07:00
Emmanuel Garcia
49d6805324
Ensure all images are closed in FlutterImageView (#20842) 2020-09-01 16:57:45 -07:00
xster
5f49a95499
Add auto plugin registration to FlutterFragmentActivity as well (#20865) 2020-08-31 13:43:46 -07:00
Emmanuel Garcia
5e54c707e8
Reland: Enable hybrid composition by default on Android (#20722) (#20864)
This reverts commit 4de62c7c2659607acdc75ab8c1ccd305a3c6f9d1.
2020-08-31 12:17:11 -07:00
xster
15f5696c41
Add a java injector for testing (#20789) 2020-08-29 22:29:23 -07:00
Greg Spencer
88fd13fcd3
Reland: Implement delayed event synthesis key event handling for Android (#20736)
This re-lands the key event synthesis implementation for Android (Original PR: #19024, Revert PR: #19956). The only difference is sending the synthesized key events to the root view instead of the current view.

Without sending it to the root view, the system doesn't have any chance of handling keys like the back button. The event will still not be sent to the framework twice, since we turn off event propagation while re-dispatching the event.
2020-08-28 14:45:38 -07:00
Gary Qian
93f17e9ea6
Use Android R (API 30) getInsets() to compute padding (#18339) 2020-08-26 18:15:40 -07:00
Emmanuel Garcia
4de62c7c26
Revert "Enable hybrid composition by default on Android (#20722)" (#20745)
This reverts commit d16ba48e1d79cf0197e96c51c38300ee921baeb0.
2020-08-25 09:54:13 -07:00
Emmanuel Garcia
d16ba48e1d
Enable hybrid composition by default on Android (#20722) 2020-08-24 13:10:23 -07:00
Justin McCandless
33015c6c7a
hasStrings on Android (#20393)
hasStrings message for checking for pasteable clipboard contents without actually reading them, for iOS14 clipboard alerts.
2020-08-14 08:45:18 -07:00