129 Commits

Author SHA1 Message Date
Lazy Llama
7d6180c301
Fix viewInset.bottom and viewPadding.bottom… (#21730) 2020-10-29 17:28:01 -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
Greg Spencer
6bc70e4a11
Reland: Migration to PlatformDispatcher and multi-window (#21932)
This re-lands #20496 and #21780 after fixing the semantics-enabling code that was causing the post-submit web_smoke_test to fail.

Below is the description from the original PR:

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-22 14:54:25 -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
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
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
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
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
18d286a6e4
Add FlutterFragmentActivity#getRenderMode() (#20245) 2020-08-07 18:41:01 -07:00
Greg Spencer
98cfd1db78
Move platform specific information to PlatformConfiguration class (#19652) 2020-07-31 17:21:02 -07:00
Emmanuel Garcia
7f5d044f36
Wait before switching surfaces (#20100) 2020-07-30 20:36:01 -07:00
Jason Simmons
8464208863
Add missing MouseCursorPlugin destroy call (#19968) 2020-07-29 17:01:04 -07:00
Greg Spencer
18200e7e8e
Revert "Implement delayed event synthesis key event handling for Android (#19024)" (#19956)
This reverts commit 8825f9178d884d07b43590ef52bb929ac9a3773f because it breaks flutter_gallery__back_button_memory and a customer test.
2020-07-22 12:36:26 -07:00
Greg Spencer
8825f9178d
Implement delayed event synthesis key event handling for Android (#19024)
This implements the design in flutter.dev/go/handling-synchronous-keyboard-events for Android.

I started with Android, but this will be used for all platforms as we add them.

The related framework PR is: flutter/flutter#59358 (which has already landed)
2020-07-17 11:03:19 -07:00
Stanislav Parshin
bce3451ac8
Fix NullPointerException in FlutterTextView (#19501) 2020-07-16 08:06:04 -07:00
Kaushik Iska
1832613e09
[android] Childview will process its motion events (#19662) 2020-07-14 19:18:14 -07:00
Kaushik Iska
3dc81635db
[android] Pass synthesized eventType to VirtualDisplay platform views and fix memory leak (#19620) 2020-07-09 18:06:02 -07:00
Kaushik Iska
110a57983b
Track motion events for reuse post gesture disambiguation (#19484)
This change makes it so that we track all the motion events encountered by `FlutterView` and all of its subviews in the `MotionEventTracker` class, indexed by a unique `MotionEventId`. This identifier is then passed to the Flutter framework as seen in https://github.com/flutter/flutter/pull/60930. Once the gestures take part in gesture disambiguation and are sent back to the engine, we look-up the original motion event using the `MotionEventId` and dispatch it to the platform.

Bug: https://github.com/flutter/flutter/issues/58837
2020-07-06 22:22:37 -07:00
Emmanuel Garcia
d1f3037c4c
Switch to FlutterSurfaceView if no Android view is in the frame (#19487) 2020-07-06 14:51:46 -07:00
Kaushik Iska
f74c0f0e83
FlutterView will hadle dispatching all touch events to sub-views (#19482) 2020-07-02 12:31:10 -07:00
Jason Simmons
2dc202d823
Basic support for resizing overlay surfaces in hybrid composition (#19402) 2020-06-30 14:08:04 -07:00
Emmanuel Garcia
c332675a8c
Fix hybrid composition bugs (#19325) 2020-06-26 12:33:02 -07:00
Jason Simmons
2b74e8ae8c
Position overlay layer views in PlatformViewsController.onDisplayOverlaySurface (#19295) 2020-06-24 20:48:38 -07:00
Jason Simmons
0c14126211
Initial work toward converting the FlutterView to use a FlutterImageView on demand (#19279) 2020-06-24 16:26:03 -07:00
Emmanuel Garcia
b8b134a666
Fix format (#19261) 2020-06-24 09:14:00 -07:00
Maurice Parrish
1913040ebe
Creates a new RenderMode for FlutterView (#19143) 2020-06-22 14:40:00 -07:00
Gary Qian
3a96741247
Platform resolved locale and Android localization refactor (#18645) 2020-06-16 04:29:50 -07:00
Michael Goderbauer
f7d241fd8a
Wire up channel for restoration data (#18042) 2020-06-12 16:31:25 -07:00
Dan Field
983b6e198d
Call Shell::NotifyLowMemory when backgrounded/memory pressure occurs on Android (#19026)
* Reland "Call Shell::NotifyLowMemoryWarning on Android Trim and LowMemory events (#18979)" (#19023)"

This reverts commit 0a852d8ad7e0b132d86c0a604f2c41a110f2b3b6.
2020-06-12 15:12:25 -07:00
Emmanuel Garcia
0a852d8ad7
Revert "Call Shell::NotifyLowMemoryWarning on Android Trim and LowMemory events (#18979)" (#19023)
This reverts commit f5ab179e7a793e2bd5d087d59911e99f8b45e6c9.
2020-06-12 12:31:12 -07:00
Dan Field
f5ab179e7a
Call Shell::NotifyLowMemoryWarning on Android Trim and LowMemory events (#18979) 2020-06-10 17:18:17 -07:00
xster
5edd766628
Fix intent builder visibility (#18875) 2020-06-08 12:08:04 -07:00
Tong Mu
b3e7732cf9
System mouse cursor: Android (#18569)
Adds system mouse cursor to the Android engine.
2020-06-01 18:08:43 -07:00
Gary Qian
e9f1efa280
Add fullscreen padding workarounds to v2 android embedding (#18193) 2020-05-09 04:31:27 -07:00
xster
45e6cfd1ff
remove top padding when system UI in fullscreen mode (#17985) 2020-04-28 12:21:37 -07:00
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
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
LongCatIsLooong
cf3d738f50
Android text input autofill (#17465) 2020-04-16 03:41:23 -07:00