3134 Commits

Author SHA1 Message Date
David Worsham
810e433308
Fix use of multiple shells w/ different snapshots (#24152) 2021-02-03 17:42:36 -08:00
huanghongxun
03e00adc32 No longer redraw window every frame to reduce CPU consumption 2021-02-04 09:30:26 +13:00
chunhtai
62fbba5c19
fixes android deeplink query paremeter null crashes (#24146) 2021-02-02 17:01:03 -08:00
Yuhui Huang
f94cf140c5
Refactor FlRenderer to platform-independent implementation (#24011)
Refactor FlRenderer to platform-independent implementation
2021-02-03 11:31:51 +13:00
Michael Reed
d6b8eba45d
drawBitmap is deprecated, use drawImage (#24135)
Co-authored-by: Mike Reed <reed@google.com>
2021-02-02 08:24:42 -08:00
gaaclarke
e59457b818
Fixed plumbing of the spawning isolate for Shell::Spawn. (#24112) 2021-02-01 15:32:15 -08:00
Michael Reed
9a2795ae17
Use sampling instead of (deprecated) filter-quality (#24101) 2021-02-01 00:16:02 -08:00
George Wright
70327aedcd
Increase logging in AngleSurfaceManager (#23906) 2021-01-29 18:51:01 -08:00
Tong Mu
d325ca78a3
Hardware keyboard: Web, embedder, and dart:ui (#23466) 2021-01-28 17:19:02 -08:00
Alexander Brusher
48e29fd6a8
Ensures that hit testing only resturns focusable nodes. (#23931) 2021-01-28 15:23:06 -08:00
Damian Wrobel
4ba79a34a0
Fix argument specifier for g_warning() (#23674)
Fixes the following compilation error:
 ../../flutter/shell/platform/linux/fl_key_event_plugin.cc:189:7:
 error: format specifies type 'long' but the argument has type
 'uint64_t' (aka 'unsigned long long') [-Werror,-Wformat]
2021-01-28 14:36:02 -08:00
Kaushik Iska
3c3e2a4f91
[windows] Honor only valid resize requests (#23990) 2021-01-28 09:09:03 -08:00
xster
fad9ae8e43
Load FlutterLoader when creating FlutterEngineGroup (#23980) 2021-01-27 13:30:23 -08:00
James Clarke
e005b315d0
Windows: Add CoreWindow implementation of FlutterWindowsView (Flutter#70205) (#23573)
* Windows: Add CoreWindow implementation of FlutterWindowsView (Flutter#70205)
2021-01-26 21:12:38 -08:00
Dragoș Tiselice
6a47296876
Switched engine to use buffer collection. (#23488)
The old way of allocating images meant that one would have to make
sure that Scenic and Flutter were using exactly the same pixel
formats. This patch removes the old image allocation and replaces
it with a sysmem API that uses buffer collections instead. This
permits a smooth negotiation of formats between the two systems.
2021-01-26 12:17:13 -05:00
Lau Ching Jun
424ae67e74
Allow naming shared libraries in deferred component via AndroidManifest (#23925) 2021-01-25 16:34:27 -08:00
chunhtai
ecbafdd523
rename flutter_export to flutter_darwin_export to prevent naming conflict (#23933) 2021-01-25 16:25:07 -08:00
Alexander Brusher
523c8c8883
Adds a mechanism for announce events to be forwarded to a11y. (#23499) 2021-01-25 13:24:05 -08:00
Chase Latta
2707c21c4f
use a single clang toolchain (#23842) 2021-01-25 13:23:04 -08:00
Kaushik Iska
790af8a5b0
[macos] Support smooth resizing for Metal (#23924)
Coordinate command buffer submission with Core Animation
scheduling to ensure smooth resizing.

Fixes: https://github.com/flutter/flutter/issues/74056
2021-01-25 12:50:21 -08:00
Chris Bracken
08daa2c896
Rename TextInputManager to TextInputManagerWin32 (#23905)
The current text input manager is win32-specific due to its use of
IMM32. For UWP, we'll need a TSF implementation. Once that happens we'll
want to extract out a TextInputManager interface and add a separate UWP
implementation of this class.
2021-01-24 16:22:00 -08:00
Chris Bracken
9365230ac2
Add support for IME-based text input on Windows (#23853)
This updates the Win32 desktop embedder to support input method (abbreviated IM
or IME) composing regions.

In contrast to languages such as English, where keyboard input is
managed keystroke-by-keystroke, languages such as Japanese require a
multi-step input process wherein the user begins a composing sequence,
during which point their keystrokes are captured by a system input
method and converted into a text sequence. During composing, the user is
able to edit the composing range and manage the conversion from keyboard
input to text before eventually committing the text to the underlying
text input field.

To illustrate this, in Japanese, this sequence might look something like
the following:

1. User types 'k'. The character 'k' is added to the composing region.
   Typically, the text 'k' will be inserted inline into the underlying
   text field but the composing range will be highlighted in some manner,
   frequently with a highlight or underline.
2. User types 'a'. The composing range is replaced with the phonetic
   kana character 'か' (ka). The composing range continues to be
   highlighted.
3. User types 'k'. The character 'k' is appended to the composing
   range such that the highlighted text is now 'かk'
4. User types 'u'. The trailing 'k' is replaced with the phonetic kana
   character 'く' (ku) such that the composing range now reads 'かく'
   The composing range continues to be highlighted.
5. The user presses the space bar to convert the kana characters to
   kanji. The composing range is replaced with '書く' (kaku: to write).
6. The user presses the space bar again to show other conversions. The
   user's configured input method (for example, ibus) pops up a
   completions menu populated with alternatives such as 各 (kaku:
   every), 描く (kaku: to draw), 核 (kaku: pit of a fruit, nucleus), 角
   (kaku: angle), etc.
7. The user uses the arrow keys to navigate the completions menu and
   select the alternative to input. As they do, the inline composing
   region in the text field is updated. It continues to be highlighted
   or underlined.
8. The user hits enter to commit the composing region. The text is
   committed to the underlying text field and the visual highlighting is
   removed.
9. If the user presses another key, a new composing sequence begins.

If a selection is present when composing begins, it is preserved until
the first keypress of input is received, at which point the selection is
deleted. If a composing sequence is aborted before the first keypress,
the selection is preserved. Creating a new selection (with the mouse,
for example) aborts composing and the composing region is automatically
committed. A composing range and selection, both with an extent, are
not permitted to co-exist.

During composing, keyboard navigation via the arrow keys, or home and
end (or equivalent shortcuts) is restricted to the composing range, as
are deletions via backspace and the delete key. This patch adds two new
private convenience methods, `editing_range` and `text_range`. The
former returns the range for which editing is currently active -- the
composing range, if composing, otherwise the full range of the text. The
latter, returns a range from position 0 (inclusive) to `text_.length()`
exclusive.

Windows IME support revolves around two main UI windows: the composition window
and the candidate window. The composition window is a system window overlaid
within the current window bounds which renders the composing string. Flutter
already renders this string itself, so we request that this window be hidden.
The candidate window is a system-rendered dropdown that displays all possible
conversions for the text in the composing region.  Since the contents of this
window are specific to the particular IME in use, and because the user may have
installed one or more third-party IMEs, Flutter does not attempt to render this
as a widget itself, but rather delegates to the system-rendered window.

The lifecycle of IME composing begins follows the following event order:
1. WM_IME_SETCONTEXT: on window creation this event is received. We strip the
   ISC_SHOWUICOMPOSITIONWINDOW bit from the event lparam before passing it to
   DefWindowProc() in order to hide the composition window, which Flutter
   already renders itself.
2. WM_IME_STARTCOMPOSITION: triggered whenever the user begins inputting new
   text. We use this event to set Flutter's TextInputModel into composing mode.
3. WM_IME_COMPOSITION: triggered on each keypress as the user adds, replaces,
   or deletes text in the composing region, navigates with their cursor within
   the composing region, or selects a new conversion candidate from the
   candidates list.
4. WM_IME_ENDCOMPOSITION: triggered when the user has finished editing the text
   in the composing region and decides to commit or abort the composition.

Additionally, the following IME-related events are emitted but not yet handled:
* WM_INPUTLANGCHANGE: triggered whenever the user selects a new language using
  the system language selection menu. Since there some language-specific
  behaviours to IMEs, we may want to make use of this in the future.
* WM_IME_NOTIFY: triggered to notify of various status events such as opening
  or closing the candidate window, setting the conversion mode, etc. None of
  these are relevant to Flutter at the moment.
* WM_IME_REQUEST: triggered to notify of various commands/requests such as
  triggering reconversion of text, which should begin composition mode, insert
  the selected text into the composing region, and allow the user to select new
  alternative candidates for the text in question before re-committing their
  new selection. This patch doesn't support this feature, but it's an important
  feature that we should support in future.
2021-01-24 12:56:08 -08:00
Gary Qian
4e87f60eaa
Read loading unit mapping from AndroidManifest instead of strings (#23868) 2021-01-23 23:04:02 -08:00
Greg Spencer
c8620c3fc1
Implement delayed key event synthesis for Windows (#23524)
This changes the Windows text handling so that keyboard events are sent to the framework first for handling, and then passed to the text input plugin, so that the framework has a chance to handle keys before they get given to the text field.

This is complicated by the async nature of the interaction with the framework, since Windows wants a synchronous response. So, in this change, I always tell Windows that the event was handled, and if the framework (eventually) responds that it wasn't, then I synthesize a new event and send it with SendEvent.

I also added support for detecting "extended" keys, since that was missing, and converted the OnKey handlers in the API to return a bool to indicate whether or not they have handled the event.
2021-01-22 18:14:39 -08:00
Chris Bracken
8671aef05b
Notify Win32FlutterWindow of cursor updates (#23795)
During multi-step text input composing, such as with Chinese, Japanese,
and Korean text input, the framework sends embedders cursor rect updates
in the form of two messages:

* TextInput.setMarkedTextRect: notifies the embedder the size and
  position of the composing text rect (or cursor when not composing) in
  local coordinates.
* TextInput.setEditableSizeAndTransform: notifies the embedder of the
  size of the EditableText and 4x4 transform matrix from local to
  PipelineOwner.rootNode coordinates.

On receipt of either message, we cache a local copy on the
TextInputPlugin and notify the Win32FlutterWindow of the updated cursor
rect. In a followup patch, we update Win32FlutterWindow to implement the
Win32 input manager (IMM) calls required to position the IME candidates
window while editing.
2021-01-22 16:31:09 -08:00
xster
a4f02b787d
Share Android surface GrDirectContext (#23798) 2021-01-22 12:44:02 -08:00
gaaclarke
7c2da3bf62
reland of https://github.com/flutter/engine/pull/23634 (#23865) 2021-01-22 11:49:37 -08:00
Zachary Anderson
71d264dcf4
Revert "implemented GetMainContext() for opengl (#23634)" (#23859)
This reverts commit 296902b8e818dbd1e1a0ff28e2e5b01d9760988f.
2021-01-22 09:54:24 -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
chunhtai
0118b54392
Implements accessibility bridge in common library (#23491) 2021-01-22 09:29:02 -08:00
Dan Field
5dc24693d5
Reland path vol tracker (#23840)
This time making sure to deref the native object on GC.
2021-01-21 16:03:43 -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
pepsin
9223073706
Fix background crash when FlutterView going appear while app goes background (#23175) 2021-01-21 15:34:02 -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
Sarbagya Dhaubanjar
7f66714833
iOS deeplink sends "path + query" instead of just path (#23562) 2021-01-21 15:09:01 -08:00
Jason Simmons
87960d8b3a
Fix typo in embedder unit tests (#23783) 2021-01-21 14:24:38 -08:00
Wu Zhong
fd9a079ac1
[iOS] Fixes DisplayLinkManager leaks (#22194) 2021-01-21 11:19:51 -08:00
gaaclarke
296902b8e8
implemented GetMainContext() for opengl (#23634) 2021-01-21 09:43:06 -08:00
Dan Field
e37235b647
revert path volatility tracker (#23822) 2021-01-21 08:34:02 -08:00
Jang-Ho Hwang
6fc509a72f
Fix typo in textureFrameAvailable on macOS (#23823) 2021-01-21 08:31:00 -08:00
Daco Harkes
920a33a0fc
add ffi_allocation_patch.dart to libraries.yaml (#23808) 2021-01-20 16:44:02 -08:00
kevinsakuma
6dec80630e
Removes deprecated WLAN API dependency. (#23726) 2021-01-20 09:24:02 -08:00
Gary Qian
9acfb7d59c
Fix JNI void vs object method call (#23785) 2021-01-19 21:54:01 -08:00
gaaclarke
2927e9fb43
block thread merging with shared engines (#23733) 2021-01-19 15:38:56 -08:00
Dan Field
8b27e6fb45
skip flaky test (#23775) 2021-01-19 15:02:36 -08:00
xster
915e2ca178
FlutterEngineGroup for Android (#23675) 2021-01-19 12:29:02 -08:00
Kaushik Iska
f6162dc7b5
[windows] Enable smooth resizing on windows (#23701) 2021-01-19 11:17:41 -08:00
Niklas Schulze
eb031d35ad
Add windows plugin texture support (#19405) 2021-01-19 11:14:01 -08:00
Jody Sankey
23a9a0f4fb
[fuchsia] Add missing static binding check. (#23731) 2021-01-15 22:19:02 -08:00
Alexander Brusher
6cbdd9a46a
Populates fuchsia a11y toggled state. (#23704)
This change ensures that flutter accessibility updates include toggled
state as appropriate.
2021-01-15 10:32:19 -08:00