810 Commits

Author SHA1 Message Date
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
Jason Simmons
c7e5d546f2
Prevent a race between SurfaceTexture.release and updateTexImage (#21777) 2020-10-14 15:02:02 -07:00
Jason Simmons
2e3f1326d2
Call PlatformView.dispose when removing hybrid composition platform views (#21790)
Also force disposal of all hybrid platform views when shutting down the
engine.

Fixes https://github.com/flutter/flutter/issues/66764
2020-10-13 18:40:55 -07:00
Emmanuel Garcia
9981026173
Allow TalkBack navigation while a platform view is rendered (#21719) 2020-10-13 17:52:02 -07:00
Yuqian Li
c2938d06b1
Revert "Migration to PlatformDispatcher and multi-window #20496" (#21792)
* Revert "Fix documentation build for window changes. (#21780)"

This reverts commit 931a04683d6eb49fc92059b2384ac5b1618d5422.

* Revert "Migration to PlatformDispatcher and multi-window (#20496)"

This reverts commit 85b0031f73544e448354047dc6a236c0b0808252.
2020-10-12 19:26:41 -07:00
Greg Spencer
85b0031f73
Migration to PlatformDispatcher and multi-window (#20496)
This is a PR for converting the dart:ui code in the engine to use a multi-window API. The goal here is to convert from the window singleton to an API that has the concept of multiple windows. Also, I'm matching up the new PlatformDispatcher class to talk directly to the PlatformConfiguration class in the engine. I'm not attempting to actually enable creating multiple windows here, just migrate to an API that has a concept of multiple windows. The multi-window API in this PR currently only ever creates one window.

The design doc for this change is here.

The major changes in this PR:

Move the platfom-specific attributes out of Window, and into the new PlatformDispatcher class that holds all of the platform state, so that the platform code need only update the configuration on this class.
Create FlutterView, FlutterWindow, and SingletonFlutterWindow classes to separate out the concepts of a view (of which there may be multiple in a window), a window (of which there may be multiple on a screen, and they host views), and a window where there is only ever expected to be one (this hosts the entire API of the former Window class, and will eventually be the type of the window singleton).
Next step after this PR lands:

Remove the Window class entirely (it is replaced by SingletonFlutterWindow). Some minor changes in the Framework are needed to switch to using SingletonFlutterWindow directly first.

The Window class still exists in this PR, but will be removed as soon as the framework is converted to point to the SingletonFlutterWindow class instead. They share the same API, just have different names (Window is currently a subclass of SingletonFlutterWindow). The intention is that the Window name will be freed up to use as a widget class name in the framework for managing windows. The singleton called window will remain, and keep the same API it has now.
2020-10-09 16:29:16 -07:00
Dan Field
48687ca3ca
Forbid android.util.Log (#21696) 2020-10-08 14:52:05 -07:00
Hamdi Kahloun
b2ace0cccb
SecurityException: Permission Denial (#21290)
Fix `java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider`

Fixes flutter/flutter#66108

Co-authored-by: Dan Field <dfield@gmail.com>
2020-10-08 14:36:51 -07:00
Jason Simmons
88fd4cea43
Extract the WindowInsetsAnimation.Callback subclass into a separate class that will be lazily loaded (#21548)
WindowInsetsAnimation.Callback was introduced in API level 30.  This
PR moves the text input plugin's WindowInsetsAnimation.Callback subclass
into a class that will only be loaded if the embedding has checked for a
sufficient API level.

See https://github.com/flutter/flutter/issues/66908
2020-10-02 11:23:42 -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
Gary Qian
de3db5db92
Locale -> LanguageRange conversion to be more general in Android platformResolvedLocale (#21350) 2020-09-23 21:52:02 -07:00
Jason Simmons
1345359642
Fix boolean value checks in StandardMessageCodec (#21270)
Fixes https://github.com/flutter/flutter/issues/65619
2020-09-23 16:31:07 -07:00
xster
caa8e6dd9f
Re-land deprecate Android v1 embedding classes (#21347) 2020-09-23 11:25:20 -07:00
Jason Simmons
034ab2e18e
Retain the WindowInsetsAnimation callback if code shrinking is enabled (#21330) 2020-09-23 09:17:02 -07:00
Zachary Anderson
c62d665299
Revert "Deprecate Android v1 embedding classes (#20868)" (#21338)
This reverts commit 3011b14a25ea5c9fd54ecffc2e154e587c4a6b1a.
2020-09-22 14:38:18 -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
xster
3011b14a25
Deprecate Android v1 embedding classes (#20868) 2020-09-21 15:02:02 -07:00
Gary Qian
933f811d94
Remove extraneous window inset call on IME animation (#21213) 2020-09-16 14:04:50 -07:00
Hamdi Kahloun
8d7103f572
Fix NPE in PlatformPlugin.getClipboardData() (#21189) 2020-09-15 17:00:57 -07:00
Emmanuel Garcia
1ef10b240e
Account for current open image in FlutterImageView (#21191) 2020-09-15 14:10:55 -07:00
kele86838437
ab0d4b43be
Update Androidx import (#19059) 2020-09-09 16:10:03 -07:00
Gary Qian
242d522077
[Android R] Sync keyboard animation with view insets vs Android 11/R/API 30 WindowInsetsAnimation (#20843) 2020-09-04 02:06:30 -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
Jason Simmons
d67923feb1
Pass text input key events to the EventResponder if they do not yield characters (#20912)
If the InputConnectionAdaptor receives a key event that does not move
the caret or produce a text character (such as the back button), then
the event should be given to the EventResponder which will forward it
to the view.

Fixes https://github.com/flutter/flutter/issues/64864
2020-08-31 17:56:09 -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
Mehmet Fidanboylu
569fd19357
Reland "Pass platform configuration to Dart VM for insecure socket policy (#20733)"
This reverts commit 77dd1c05b99d137b5b348598f69ec75c93e0a433.
2020-08-27 14:23:31 -07:00
Jason Simmons
fc4da62b8c
Ignore calls to AccessibilityBridge listeners after release (#20701)
AccessibilityBridge installs various listeners for Android events
that invoke Flutter engine APIs.  These listeners are removed in
AccessibilityBridge.release.  However, in some environments there may
be deferred calls to the listener that will still execute even after
the listener has been removed.  This change sets a flag during release
and ignores any listener invocations that happen after the flag is set.

See https://github.com/flutter/flutter/issues/63555 and
https://github.com/flutter/engine/pull/17311
2020-08-27 12:24:33 -07:00
renyou
77dd1c05b9
Revert "Pass platform configuration to Dart VM for insecure socket policy (#20733)" (#20812)
This reverts commit d241105d7a840a7ba88bc2c0ce4a9f415f83aaab.
2020-08-27 08:23:30 -07:00
Gary Qian
93f17e9ea6
Use Android R (API 30) getInsets() to compute padding (#18339) 2020-08-26 18:15:40 -07:00
Mehmet Fidanboylu
d241105d7a
Pass platform configuration to Dart VM for insecure socket policy (#20733) 2020-08-25 10:56:03 -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
LI DONGZE
da5eb26b5d
Reporting back native stacktrace to dart side for crash reporting. (#20280)
* Add native stacktrace on iOS

* Add native stacktrace on Android

* format and changing naming to errorWithCode on iOS

* reformat

* Remove stacktrace from decodeEnvelope, not needed.

* Separate encodeErrorEnvelopeWithStacktrace with original encode function

* Add unit tests

* re-format

* change comments for stacktrace

* Remove changes for iOS

Co-authored-by: Ben Li <libe@google.com>
2020-08-21 19:59:36 -07:00
Jason Simmons
d41e10bd75
Release the AccessibilityBridge when destroying a legacy FlutterView (#20610) 2020-08-19 14:11:02 -07:00
chunhtai
ccaee70b05
Missing default focus when navigating to a page with no SemanticsNode that sets namesRoute:true (#20516) 2020-08-19 14:06:03 -07:00
Stas Parshin
8177937133
Fix NPE in PlatformViewsController.checkInputConnectionProxy (#20622) 2020-08-19 08:34:04 -07:00
Emmanuel Garcia
615679865a
Reland: Create PlatformView instance right after method channel call from Dart (#20568) 2020-08-17 16:28:15 -07:00
gaaclarke
7b9ac278c9
Revert "Create PlatformView instance right after method channel call from Dart (#20500)" (#20564)
This reverts commit 9333b7c1d0ac7b2ae97998df116fcb0f99b1f26f.
2020-08-17 11:17:03 -07:00
Emmanuel Garcia
9333b7c1d0
Create PlatformView instance right after method channel call from Dart (#20500) 2020-08-14 15:06:02 -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