11376 Commits

Author SHA1 Message Date
Kaushik Iska
ce530b3770 [ios] Refactor IOSSurface factory and unify surface creation (flutter/engine#21877) 2020-10-15 19:56:13 -07:00
Kaushik Iska
6109d23046 [embedder] Platform View owns lifecycle of external view embedder (flutter/engine#21847)
Changing it to shared_ptr and migrating the ownership from surface
to platform view.
2020-10-15 17:48:14 -07:00
Chris Bracken
90c2138fb5 Add multi-step IME support to TextInputModel (flutter/engine#21682)
* Add multi-step IME support to TextInputModel

This updates the platform-independent TextInputModel to add support for
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.

* Move SetComposingLength to TextRange::set_*

Adds set_base, set_extent, set_start, set_end methods to TextRange.
2020-10-15 17:43:16 -07:00
Kaushik Iska
8b0b5acd5a [fuchsia] External view embedder will be shared with platform view (flutter/engine#21850) 2020-10-15 17:22:02 -07:00
skia-flutter-autoroll
3443d555f8 Roll Skia from f4bda743ff8d to f1b53836b705 (21 revisions) (flutter/engine#21892) 2020-10-15 17:17:03 -07:00
Chris Bracken
c3e83ddf84 Add TextRange::Contains tests spanning base/extent (flutter/engine#21874)
Adds tests for TextRange::Contains(const TextRange&) where the range
being tested spans the base/extent of the testing range.

This was originally intended to land in #21854, but it seems I didn't
push the additional tests before landing.
2020-10-15 16:59:15 -07:00
Jason Simmons
35c366442a Check for null images in ImageFromCompressedData (flutter/engine#21891) 2020-10-15 16:57:02 -07:00
Kaushik Iska
fea7e59a66 Fix incldues to be flutter/shell rather than shell/ (flutter/engine#21889) 2020-10-15 16:51:17 -07:00
gaaclarke
2758d604ba disabled the auto assign bot (flutter/engine#21341) 2020-10-15 16:40:23 -07:00
Harry Terkelsen
2407e893a3 Add more TextStyle support to Paragraph in CanvasKit mode (flutter/engine#21629)
* WIP on Paragraph

* WIP skparagraph

* Add more Paragraph features in CanvasKit mode

* Fix addRoundRect test

* Respond to review comments

* Remove unused (and potentially harmful) getters from Sk classes
2020-10-15 16:33:51 -07:00
Adlai Holler
986c45ae4a Update more class names from GrContext to GrDirectContext (flutter/engine#21864)
This name change has to do with SkDeferredDisplayList, which Flutter
does not use. As far as Flutter is concerned, this is a no-op.
2020-10-15 16:14:23 -07:00
Jenn Magder
14dee41f00 Add flag to not publish the observatory port over mDNS (flutter/engine#21883) 2020-10-15 14:53:20 -07:00
Jenn Magder
1be440e077 Revert "Add flag to not publish the observatory port over mDNS (#21632)" (flutter/engine#21882)
This reverts commit a23a450aebfb917907e3e9647dffc210e2f31bde.
2020-10-15 12:32:24 -07:00
stuartmorgan
ac99ac4c27 Fix destruction order in C++ plugin registrar (flutter/engine#21840)
The C++ wrapper's plugin registrar can own plugins to provided lifetime
management. However, plugins expect the registrar to be valid for the
life of the object, including during destruction, so any owned plugins
must be explicitly cleared before any registrar-specific destruction
happens.
2020-10-15 10:54:08 -07:00
Jenn Magder
a23a450aeb Add flag to not publish the observatory port over mDNS (flutter/engine#21632)
* Add flag to not publish the observatory port over mDNS

* Review edits

* Format
2020-10-15 10:48:50 -07:00
stuartmorgan
dae32b99fb Add a style note about Linux embedding style (flutter/engine#21819) 2020-10-15 10:47:01 -07:00
Chris Bracken
60e1170f62 Migrate TextInputPlugin API to TextRange (flutter/engine#21854)
Replaces selection_base() and selection_extent() with selection() and
SetSelection(int, int) with SetSelection(range).

This also adds the following convenience methods to TextRange:
* reversed()
* Contains(size_t position)
* Contains(const TextRange& range)

as well as operator== for use in unit tests. When Flutter migrates to
C++20, we can replace that method with a default declaration.
2020-10-15 09:54:06 -07:00
skia-flutter-autoroll
fefa1d8811 Roll Skia from 99446001182c to f4bda743ff8d (22 revisions) (flutter/engine#21848) 2020-10-14 17:27:04 -07:00
gaaclarke
12cd3076af Revert "Explicitly make the X connection for EGL. (#21831)" (flutter/engine#21851)
This reverts commit a9019523c09d8c50e2f9e29d3246825cad886f64.
2020-10-14 16:30:40 -07:00
Robert Ancell
a9019523c0 Explicitly make the X connection for EGL. (flutter/engine#21831)
Explicitly make the X connection for EGL.

EGL can mistakenly choose the GBM backend when using EGL_DEFAULT_DISPLAY.

Fixes https://github.com/flutter/flutter/issues/60429
2020-10-15 11:06:08 +13:00
Jason Simmons
d6720f7085 Prevent a race between SurfaceTexture.release and updateTexImage (flutter/engine#21777) 2020-10-14 15:02:02 -07:00
Greg Spencer
14b9c22b2c Upgrade to latest process runner, fix commands that throw to fail test (flutter/engine#21827)
This fixes the lint script to fail when the clang-tidy command itself fails to execute, and print the exception that was raised.
2020-10-14 14:33:42 -07:00
Kaushik Iska
fba087b5e3 [android] Refactor surface factory and wire in external view embedder (flutter/engine#21839) 2020-10-14 14:27:02 -07:00
egdaniel
19f8afc6bc Update flutter to pass Skia the VkImageUsageFlags and Samples (flutter/engine#21842)
Previously Skia did not require the clients to pass in the usage flags and Skia would just assumed they contained specific ones depending on how the client wrapped the VkImage. Now Skia allows the client to pass in the specific usage flags used so that Skia knows exactly what type of operations are legal without having to guess/assume what the client did.

Also update to set the sample count as well while I'm in here.
2020-10-14 13:55:09 -07:00
Jason Simmons
640ac5dce9 Fix the offset passed to minikin::GraphemeBreak::isGraphemeBreak (flutter/engine#21706)
The character offset passed to isGraphemeBreak is relative to the beginning
of the string (not relative to the text_start parameter).  This caused bad
results when searching for grapheme breaks beyond the first line of text
(see https://github.com/flutter/flutter/issues/24802).

This PR fixes the offset value.  It also reverts the workaround applied in
https://github.com/flutter/engine/pull/10063, which caused incorrect
calculation of boundaries between graphemes within ligatures.
2020-10-14 11:44:38 -07:00
skia-flutter-autoroll
3f9f0d8e0e Roll Skia from 7bbdde059685 to 99446001182c (5 revisions) (flutter/engine#21834) 2020-10-14 11:22:01 -07:00
skia-flutter-autoroll
cca03809c0 Roll Dart SDK from a3b62f366529 to 4226116043f5 (1 revision) (flutter/engine#21830) 2020-10-14 11:12:01 -07:00
Zachary Anderson
c66332c58c Revert Linux Fuchsia SDK rolls to 10/8 (flutter/engine#21829) 2020-10-14 09:44:45 -07:00
nturgut
eabb39ad5f [web] enabling firefox screenshot tests. adding to documentation (flutter/engine#21807)
* enabling firefox screenshot tests. adding to documentation

* test with correct goldens

* update goldens SHA

* change the goldens with flutter/goldens repo

* do not run preparation step twice. this will cause test_results to be deleted
2020-10-13 19:26:34 -07:00
Felipe Archondo
106d42b946 [fuchsia] add intercept_all_input flag support (flutter/engine#21821)
[fuchsia] add intercept_all_input flag support

This change also fixes an issue where FlutterRunnerProductConfiguration
crashes when a field is missing, when building with --unopt.

Test: Added unit tests
Bug: fxb/61466, fxb/61942
2020-10-13 22:11:24 -04:00
Jason Simmons
190b35170f Call PlatformView.dispose when removing hybrid composition platform views (flutter/engine#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
skia-flutter-autoroll
5fc0a24973 Roll Skia from 2e0c70dc9c3e to 7bbdde059685 (10 revisions) (flutter/engine#21816) 2020-10-13 18:02:01 -07:00
Greg Spencer
17aa0b4708 Add missing ninja call to analyze.sh so it can be run locally easily (flutter/engine#21782) 2020-10-13 17:57:02 -07:00
Kaushik Iska
b5c49443f9 [ios] Create a standalone external view embedder on iOS (flutter/engine#21798) 2020-10-13 17:56:31 -07:00
Emmanuel Garcia
a36600d4b0 Allow TalkBack navigation while a platform view is rendered (flutter/engine#21719) 2020-10-13 17:52:02 -07:00
Zachary Anderson
6055b64893 Revert "Roll Fuchsia Linux SDK from gdo4mZ5oI... to 41fVbRhb0... (#21814)" (flutter/engine#21823)
This reverts commit 0adc19f3894cd0a2ee9a6307d5428055f6e82815.
2020-10-13 16:35:14 -07:00
skia-flutter-autoroll
0adc19f389 Roll Fuchsia Linux SDK from gdo4mZ5oI... to 41fVbRhb0... (flutter/engine#21814) 2020-10-13 11:47:03 -07:00
skia-flutter-autoroll
efb8a21cfb Roll Skia from 01b93eabe25b to 2e0c70dc9c3e (10 revisions) (flutter/engine#21810) 2020-10-13 10:27:02 -07:00
Dan Field
1c9b3e2299 Ocmock dylib (flutter/engine#21786)
- Build OCMock as a dylib for iOS tests
- Set install_name for ios_flutter_test and ocmock dylibs
- Copy and sign dylibs during build process
2020-10-13 09:36:29 -07:00
skia-flutter-autoroll
ebeaa845f8 Roll Skia from fa8891164062 to 01b93eabe25b (4 revisions) (flutter/engine#21805) 2020-10-13 09:07:02 -07:00
Ferhat
5b422245ca [web] Fix Altgr keyboard crash (flutter/engine#21781)
* Fix AltGr modifier crash
* update integration test
2020-10-13 08:53:28 -07:00
skia-flutter-autoroll
13bb8ef37c Roll Skia from c89a7ee628db to fa8891164062 (1 revision) (flutter/engine#21804) 2020-10-13 07:47:01 -07:00
skia-flutter-autoroll
c6d9411e6e Roll Skia from 387fd62a1280 to c89a7ee628db (1 revision) (flutter/engine#21803) 2020-10-13 06:27:01 -07:00
skia-flutter-autoroll
e422a50b30 Roll Skia from f58db3c94da3 to 387fd62a1280 (3 revisions) (flutter/engine#21801) 2020-10-13 00:22:01 -07:00
skia-flutter-autoroll
059847d87d Roll Fuchsia Linux SDK from h-DeV4tgE... to gdo4mZ5oI... (flutter/engine#21797) 2020-10-12 22:27:01 -07:00
skia-flutter-autoroll
2a9281b2ee Roll Skia from ab6e62c131e9 to f58db3c94da3 (6 revisions) (flutter/engine#21794) 2020-10-12 21:42:02 -07:00
Damian Wrobel
cc2aa3ca3c Support Wayland only (without X11 support in gdk) (flutter/engine#21218)
Adds a support for compiling flutter engine when
gdk does not have X11 backend. In such a configuration
the generated gdkconfig.h header file looks like the following:

 /* gdkconfig.h
  *
  * This is a generated file.  Please modify `configure.ac'
  */

 #ifndef __GDKCONFIG_H__
 #define __GDKCONFIG_H__

 #if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
 #error "Only <gdk/gdk.h> can be included directly."
 #endif

 #include <glib.h>

 G_BEGIN_DECLS

 #define GDK_WINDOWING_WAYLAND

 G_END_DECLS

 #endif  /* __GDKCONFIG_H__ */

Additionally headers like <gdk/gdkx.h> are not available at all.

Above configuration can be found on the most of the embedded systems.

This patch enables compilation of X11 specific code only when gdk
defines GDK_WINDOWING_X11.

Signed-off-by: Damian Wrobel <dwrobel@ertelnet.rybnik.pl>
2020-10-13 15:54:44 +13:00
J-P Nurmi
9453cb51b6 Add workaround for missing fl_method_xxx_response_get_type() symbols (flutter/engine#21405) 2020-10-12 19:32:02 -07:00
Yuqian Li
0c645869e3 Revert "Migration to PlatformDispatcher and multi-window #20496" (flutter/engine#21792)
* Revert "Fix documentation build for window changes. (#21780)"

This reverts commit a539d91840d2fbbb4aa07eeed6a92d654db167ab.

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

This reverts commit a58fec63f196175eedfc5fbaedce9336dab5c508.
2020-10-12 19:26:41 -07:00
Chris Bracken
796b559455 Extract a TextRange class for selection (flutter/engine#21722)
Extracts a TextRange class with a base and extent, and start(), end(),
collapsed(), and length() getters.

The possibility of reversed base and extent in selections and composing
ranges makes reasoning about them complex and increases the chances of
errors in the code. This change migrates most uses of base and extent in
the text model to start()/end() or position(). The position() method is
intended purely as an aid to readability to indicate that a collapsed
selection is expected at the call site; it also enforces a debug-time
assertion that this is the case.
2020-10-12 17:50:11 -07:00