48 Commits

Author SHA1 Message Date
mikaelpessa
7a7804b6d3
Add "input shield" to capture pointer input for reinjection (#22067) 2020-10-29 15:23:02 -07:00
Kaushik Iska
326b202cc7
Reland fuchsia external view embedder will be shared with platform view (#22008)
* Reland fuchsia external view embedder will be shared with platform view

This reverts commit 9b752790f4d25ab238576c719208d7a38c6293f3.

* wait for the external view embedder to be initialized before creating
shell
2020-10-22 13:48:36 -07:00
Chris Bracken
49c35b6177
Eliminate unnecessary linter opt-outs (#21935)
Eliminates FLUTTER_NOLINT where they can be landed without triggering
lint failures.
2020-10-16 17:24:23 -07:00
Ren You
9b752790f4
Revert "[fuchsia] External view embedder will be shared with platform view (#21850)" (#21924)
This reverts commit 1bc025d6cbf1136c2e96c6fb041d24202ea47ff0.
2020-10-16 15:25:13 -07:00
Chinmay Garde
5bd7260a1e
Enable loading snapshots with sound null safety enabled. (#21820)
Snapshots compiled with sound null-safety enabled require changes to the way in
which isolates are launched. Specifically, the `Dart_IsolateFlags::null_safety`
field needs to be known upfront. The value of this field can only be determined
once the kernel snapshot is available. This poses a problem in the engine
because the engine used to launch the isolate at shell initialization and only
need the kernel mappings later at isolate launch (when transitioning the root
isolate to the `DartIsolate::Phase::Running` phase). This patch delays launch of
the isolate on the UI task runner till a kernel mapping is available. The side
effects of this delay (callers no longer having access to the non-running
isolate handle) have been addressed in this patch. The DartIsolate API has also
been amended to hide the method that could return a non-running isolate to the
caller.  Instead, it has been replaced with a method that requires a valid
isolate configuration that returns a running root isolate. The isolate will be
launched by asking the isolate configuration for its null-safety
characteristics.

A side effect of enabling null-safety is that Dart APIs that work with legacy
types will now terminate the process if used with an isolate that has sound
null-safety enabled. These APIs may no longer be used in the engine. This
primarily affects the Dart Convertors in Tonic that convert certain C++ objects
into the Dart counterparts. All known Dart Converters have been updated to
convert C++ objects to non-nullable Dart types inferred using type traits of the
corresponding C++ object. The few spots in the engine that used the old Dart
APIs directly have been manually updated. To ensure that no usage of the legacy
APIs remain in the engine (as these would cause runtime process terminations),
the legacy APIs were prefixed with the `DART_LEGACY_API` macro and the macro
defined to `[[deprecated]]` in all engine translation units. While the engine
now primarily works with non-nullable Dart types, callers can still use
`Dart_TypeToNonNullableType` to acquire nullable types for use directly or with
Tonic. One use case that is not addressed with the Tonic Dart Convertors is the
creation of non-nullable lists of nullable types. This hasn’t come up so far in
the engine.

A minor related change is reworking tonic to define a single library target.
This allows the various tonic subsystems to depend on one another. Primarily,
this is used to make the Dart convertors use the logging utilities. This now
allows errors to be more descriptive as the presence of error handles is caught
(and logged) earlier.

Fixes https://github.com/flutter/flutter/issues/59879
2020-10-16 14:53:26 -07:00
Kaushik Iska
1bc025d6cb
[fuchsia] External view embedder will be shared with platform view (#21850) 2020-10-15 17:22:02 -07:00
Felipe Archondo
12820b573f
[fuchsia] set maxframesinflight to be configurable (#21152)
Add a new field, max_frames_in_flight, to FlutterRunnerProductConfiguration. This allows it to be configurable from Fuchsia.

Tests were added as well to verify the new behavior.
2020-09-17 15:41:03 -04:00
David Worsham
07e2520d5d
fuchsia: create new flutter_runner render path (#19584) 2020-08-28 14:17:17 -07:00
Dan Field
4a88d5e109
Revert hint_freed (#20746)
This caused over-aggressive GCs, which vastly increased CPU usage benchmarks.

* Revert "fix build (#20644)"

This reverts commit b59793ee20be29463fac7a79635bf20253f04107.

* Revert "Hint freed (#19842)"

This reverts commit 3930ac1b25820baee3c67d921a0b009606cb3dae.
2020-08-25 11:55:40 -07:00
Sanjay Chouksey
b6cb1f13dd
Update view attributes after creation (#20638) 2020-08-22 12:46:04 -07:00
Dan Field
3930ac1b25
Hint freed (#19842)
* Hint the VM when a layer or picture goes out of scope
2020-08-19 14:04:31 -07:00
David Worsham
5a2bf6aa4c
Reland: "fuchsia: Remove dead code / break dependencies" (#20532)
Reland #19396 with a fix for improper scale that was affecting internal tests

Tested: Ran all unittests, ran internal tests, and ran workstation on Fuchsia
BUG: 53062, 53063
2020-08-14 20:41:18 -07:00
Dan Field
6d44559b7d
Remove the dummy rasterizer delegate now that flutter_runner is in tree, and cleanup ctor params (#20486) 2020-08-13 14:46:01 -07:00
David Reveman
0cf4809e24
Add Surface::GetContext() support on Fuchsia (#20391)
This improves raster cache control from apps and enables
GPU acceleration for some offscreen workloads that would
fallback to software.

Test: PlatformViewTests.GetGrContextTest

Co-authored-by: David Reveman <reveman@google.com>
2020-08-10 20:51:43 -07:00
Sanjay Chouksey
9632bf3921
Create scenic session with view focuser (#20288)
This change creates the scenic session with request to Focuser. The
focuser is used to request focus to a view, given it's ViewRef. The call to
requestFocus is made from PlatformView messages channel, which will
be used from Flutter side by ChildView.

Adds a PlatformView unittest for the requestFocus method.

Co-authored-by: Sanjay Chouksey <sanjayc@google.com>
2020-08-10 13:57:46 -07:00
Zachary Anderson
47c1c61a92
Revert "fuchsia: Remove dead code / break dependencies (#19396)" (#20302)
This reverts commit 12a37478de2cc9aff7f8fc72bc3a47f5f02e083c.
2020-08-06 12:06:06 -07:00
David Worsham
12a37478de
fuchsia: Remove dead code / break dependencies (#19396)
The fuchsia code around metrics and sizing was just sending this
information through a side-channel, when the engine already had the
information available. So, delete all of it to make future CLs simpler.

Additionally, the SceneUpdateContext has many unneccesary dependencies
re: metrics and PaintTasks. Break those to make future CLs simpler.

Tested: Ran all unittests and ran workstation on Fuchsia
BUG: 53062, 53063
2020-08-03 22:09:26 -07:00
Greg Spencer
98cfd1db78
Move platform specific information to PlatformConfiguration class (#19652) 2020-07-31 17:21:02 -07:00
David Worsham
220a831028
Move fuchsia/scenic integration behind #define (#19003)
Additionally create "_next" permutations for all of the test binaries
on Fuchsia, in order to test both code-paths.

Using the #define follow-up CLs can also create a flutter_runner_next
binary that does not contain any legacy integration code.

BUG: 53847
2020-06-26 14:03:18 -07:00
Sanjay Chouksey
e9edf32d40
Add PlatformView support for Fuchsia (#19132)
* Add PlatformView support for Fuchsia

This change allows embedding views provided by fuchsia components into
a flutter app running on Fuchsia. This conforms to Flutters idiomatic
approach to composite PlatformView alongside other rendered layers.

This uses the `view embedder` infrastructure to allow
`PlatformViewLayer`
to hold fuchsia views. This is meant to eventually supplant the legacy
`SceneHost` and `ChildViewLayer` mechanism to embed fuchsia `ChildView`.

To see how this will get used check out:
https://fuchsia-review.googlesource.com/c/experiences/+/398536/6/examples/hello_experiences/lib/fuchsia_view.dart

Includes unittests for platform_view.cc.

Note: This change has no impact on the legacy code to embed fuchsia
views.

* Rename OnCreateViewMethodCall to OnCreateView

Same for OnDestroyViewMethodCall to OnDestroyView

Co-authored-by: Sanjay Chouksey <sanjayc@google.com>
2020-06-25 16:27:39 -07:00
gaaclarke
bef5ac6132
Made the Rasterizer avoid GPU calls when backgrounded (#18563) 2020-05-26 21:02:40 -07:00
David Worsham
c9f9891454
Reland "fuchsia: Implement CreateViewWithViewProvider" (#18615)
The last commit was a bad push -- this one compiles.

Tested: Manual test via workstation product
BUG: 50875
2020-05-26 19:29:11 -07:00
David Worsham
b0008b0080
Revert "fuchsia: Implement CreateViewWithViewProvider (#18280)" (#18614)
This reverts commit 40043b5faccaa97cf2ffa483c5ff03fc1117c7db.
2020-05-26 17:12:34 -07:00
David Worsham
40043b5fac
fuchsia: Implement CreateViewWithViewProvider (#18280)
Tested: Manual test via workstation product
BUG: 50875
2020-05-26 16:27:15 -07:00
Felipe Archondo
24df4a2768
[fuchsia] set vsync_offset based on config file (#18006)
In order to better support different products on Fuchsia, we should
change performance-sensitive attributes based on config files passed in.
This change does so for `vsync_offset`.
2020-05-01 08:45:53 -07:00
liyuqian
807ca8543c
More rename from GPU thread to raster thread (#17408)
This PR touches variable names, class names, and file names so it's significantly more risky than its predecessor https://github.com/flutter/engine/pull/17329

Due to file name changes, this PR is expected to change the license files.

We haven't rename `shell/gpu` to `shell/raster` yet. It should be optional but I think it's better to have `raster_surface_software.cc` than `gpu_surface_software.cc`.
2020-03-31 14:05:28 -07:00
liyuqian
b3075b3091
Rename GPU thread to raster thread in code comments (#17329)
1. Simple "GPU thread" to "raster thread" replacement.

2. Regex replace "GPU([\n\r\s]+//+ thread)" with "raster$1".

3. Regex replace "// gpu$" with "// raster".

4. Simple test change.

5. Run ci/format.sh
2020-03-25 22:49:59 -07:00
George Wright
f5de1acf94
Revert "Migrate flutter_runner from flutter_runner::{Thread,Loop} to fml::{Thread,MessageLoop} (#15118)" (#16277)
This reverts commit 41e8ed071454cfd9ae02e34198250dea0edab9c4.
2020-01-30 17:19:13 -08:00
Kaushik Iska
bd8c955502
[fuchsia] Expose view_ref as part of dart:fuchsia initialization (#15958)
fixes https://github.com/flutter/flutter/issues/47178
2020-01-24 13:42:19 -08:00
George Wright
41e8ed0714 Migrate flutter_runner from flutter_runner::{Thread,Loop} to fml::{Thread,MessageLoop} (#15118) 2020-01-23 18:54:49 -08:00
George Wright
69bc783016
Revert "Migrate flutter_runner from flutter_runner::{Thread,Loop} to fml::{Thread,MessageLoop} (#15118)" (#15903)
This reverts commit a50f1ef56a05999bfa97a777cca14fd7a00e8454.
2020-01-22 20:35:41 -08:00
chunhtai
7a27e75c67
Add shell api to set default for windows data (#14002) 2020-01-08 19:36:10 -08:00
George Wright
a50f1ef56a
Migrate flutter_runner from flutter_runner::{Thread,Loop} to fml::{Thread,MessageLoop} (#15118) 2020-01-07 19:24:45 -08:00
Dan Field
129c0e30d8
View ref pair (#14602) 2019-12-20 15:55:02 -08:00
Filip Filmar
20e3c5bb83 Revert "[fuchsia] Temporarily disable intl provider (#13696)" (#13721)
This reverts commit 6c763bb551cbc06da59b6a55b4c5ee0eccb6575f.

The reverted code was not the root cause of the issues with rolling
flutter into fuchsia, so adding it back.

In addition, lowering the severity of the connection error at the outset
to WARNING; since it is not a hard failure.
2019-11-08 17:34:04 -08:00
Filip Filmar
6c763bb551 [fuchsia] Temporarily disable intl provider (#13696)
The intention of the property provider is to try to connect, not
bail out if connection is not possible.

This code tried to connect unconditionally, which is not what we wanted.
Removing this initialization code to enable a roll, and will fix in a
followup.
2019-11-05 18:51:37 -08:00
Filip Filmar
400e3b00fb Wires the locale provided by Fuchsia. (#13045)
The FIDL service `fuchsia.intl.PropertyProvider` is a service that
the flutter runner can use to obtain information on system preferred
locales.

This change sends a platform message "setLocale" on the channel
"flutter/localization", based on the values provided by the above
mentioned FIDL service.

Credit: most of this was initially written by @kpozin; I ported it
to out-of-tree flutter engine.

Tested:

1. Compile and publish the unit tests package as shown in
   the script below.
2. In a Fuchsia repository (pointed to by `$FUCHSIA_DIR`), run
   `fx serve`
3. `fx shell run fuchsia-pkg://fuchsia.com/flutter_runner_tests#meta/flutter_runner_tests.cmx`

The script used to update the unit tests.

```bash

set -x

FLUTTER_ENGINE_DIR="${FLUTTER_ENGINE_DIR:-$HOME/fx/flutter/engine/src}"
readonly OUT_DIR="${FLUTTER_ENGINE_DIR}/out"

(
  cd ${FLUTTER_ENGINE_DIR}
  ./flutter/tools/gn --fuchsia --fuchsia-cpu x64 --unoptimized
  ninja -j 100 -C "${OUT_DIR}/fuchsia_debug_unopt_x64"
  cp "${OUT_DIR}/compile_commands.json" "${FLUTTER_ENGINE_DIR}"

  echo "Publishing the tests package"
  "${FLUTTER_ENGINE_DIR}/fuchsia/sdk/linux/tools/pm" publish \
    -a -r $FUCHSIA_DIR/out/release/amber-files \
    -f "${FLUTTER_ENGINE_DIR}/out/fuchsia_debug_unopt_x64/flutter_runner_tests-0.far"
)
```
2019-10-23 15:05:19 -07:00
Ryan Macnak
f6900001eb
Roll Dart to 6a65ea9cad4b014f88d2f1be1b321db493725a1c. (#13294)
Remove dead shared snapshot arguments to Dart_CreateIsolateGroup.

6a65ea9cad4b [vm] Remove shared snapshot and reused instructions features.
db8370e36147 [gardening] Fix frontend-server dartdevc windows test.
4601bd7bffea Modified supertype check error message to be more descriptive.
0449905e2de6 [CFE] Add a serialization-and-unserialization step to strong test
c8b903c2f94f Update CHANGELOG.md
2a12a13d9684 [Test] Skips emit_aot_size_info_flag_test on crossword.
b26127fe01a5 [cfe] Add reachability test skeleton
2019-10-22 13:14:20 -07:00
Kaushik Iska
e0a24d6369
[flutter_runner] Remove usages of shared snapshots from CC sources (#12343)
Build rules still reference creating share snapshot data and instructions. This makes the engine to always pass them as empty to the dart vm. To be followed up with a change to alter the build rules to stop referencing the shared snapshots.

This is not being used currently and the fact that the runner will be built outside of the flutter tree means that the apps will not have much to gain via shared snapshots. The rationale behind this change is to partially make migrating the runner out of topaz tree easier.

Change-Id: Ibc4dd6a298d65082416af753522f5a17c88a750a
2019-09-18 17:31:54 -07:00
Jason Simmons
2592d6efe2
[flutter_runner] Port the accessibility bridge from Topaz (#12054) 2019-09-10 11:29:08 -07:00
Kaushik Iska
03318327d2
[flutter_runner] Port Expose ViewBound Wireframe Functionality (#11635)
Expose scenic's ability to toggle wireframe debug
rendering of view bounds in flutter_runner. This is done
by registering a new function on the platform_views channel
with the PlatformView.

Note: Unittests have not been enabled, will enable once we
have sufficient infra.

SCN-1351 #done

Change-Id: Id4c8ef65cc39a967087d7fa6c9f595da8cfe5f01
2019-08-28 12:46:24 -07:00
Konstantin Pozin
70de3ec2c3 [fuchsia] Migrate from custom FuchsiaFontManager to SkFontMgr_fuchsia (#10700)
Use Skia's own implementation of SkFontMgr for Fuchsia, for consistency with
other Skia clients on Fuchsia.

FL-290
2019-08-09 11:04:43 -07:00
Kaushik Iska
6c0c7319cc
[flutter] Create the compositor context on the GPU task runner. (#10781)
The compositor context owns the session connection. The creation of the
session connection also does the initial present to clear the node
hierarchy. This present was happening perviously on the platform task
runner while all subsequent presents were on the GPU task runner. This
has now been rectified so all presents are on the GPU task runner.

BUG: FL-288
Change-Id: Ib294666ffb3b4575f93ad0b02a5d0fda71bfa0a8
2019-08-08 18:08:57 -07:00
Zachary Anderson
0a2e28d797
Revert tracing changes (#9296)
* Revert "[fuchsia] Fix alignment of Fuchsia/non-Fuchsia tracing (#9289)"

This reverts commit f80ac5f571479053b134e60bca77603269b2ce2a.

* Revert "Align fuchsia and non-fuchsia tracing (#9199)"

This reverts commit 78265484623037c6544dfd5380367bca29fa27b0.
2019-06-12 10:25:49 -07:00
Dan Field
7826548462
Align fuchsia and non-fuchsia tracing (#9199) 2019-06-05 15:14:27 -07:00
Kevin Lindkvist
69ebe5fb28 Remove references to Fuchsia's ContextWriter (#9157) 2019-05-31 16:12:07 -07:00
Chris Bracken
0f1ff3bdb3
Correct typos, adopt US spellings (#9081)
Corects a bnuch of typeos throughout teh engien codebsae. Also makes
a couple minor Commonwealth -> US spelling adjustments for consistency
with the rest of Flutter's codebase.

Made use of `misspell` tool:
https://github.com/client9/misspell
2019-05-25 13:14:46 -07:00
Chinmay Garde
21ad7f051c
Move the Fuchsia Flutter Runner to //flutter/shell/platform/fuchsia/flutter (#8939)
This makes room for the Dart runner at //flutter/shell/platform/fuchsia/dart.
2019-05-12 14:29:34 -07:00