21758 Commits

Author SHA1 Message Date
Chris Bracken
35cb38e820 [macOS] Remove FlutterApplication class (flutter/engine#40939)
The need for the FlutterApplication NSApplication subclass was
eliminated in eef10ab310178c3e646b255d7f3073984d2359f7. The relevant app
termination logic was moved into FlutterAppDelegate in that patch.
Removing FlutterApplication needs to be done in three stages:
1. Migrate logic to FlutterAppDelegate (done in above patch)
2. Update Flutter tool template. Update migrator to migrate all apps
using FlutterApplication back to NSApplication. This is done in
https://github.com/flutter/flutter/pull/124173.
3. Eliminate FlutterApplication.h header since all references to it have
now been removed.

No tests since, as described above, this is the removal of unused (as of
step 2 above) code.

Issue: https://github.com/flutter/flutter/issues/30735

## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [ ] I added new tests to check the change I am making or feature I am
adding, or Hixie said the PR is test-exempt. See [testing the engine]
for instructions on writing and running engine tests.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I signed the [CLA].
- [X] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-04-05 09:07:00 -07:00
godofredoc
aa08e3ed32 Migrate mac_unopt to engine_v2. (flutter/engine#40860)
Migrate mac_unopt to engine_v2.
2023-04-05 15:53:14 +00:00
skia-flutter-autoroll
ec2a481035 Roll Skia from c162dae2b297 to dfc65350a1fd (16 revisions) (flutter/engine#40940)
Roll Skia from c162dae2b297 to dfc65350a1fd (16 revisions)
2023-04-05 15:18:09 +00:00
Brandon DeRosier
6142206a83 [Impeller] Snap glyph positions to screen space pixels and map UVs correctly (flutter/engine#40912) 2023-04-04 23:00:34 -07:00
Chris Bracken
eef10ab310 [macOS] Handle termination in FlutterAppDelegate (flutter/engine#40929)
Moves application termination handling to FlutterAppDelegate.
Previously, we required macOS applications using Flutter to ensure their
main application class was FlutterApplication. Instead, we now do all
handling in FlutterAppDelegate and FlutterEngine.

There are two termination workflows to consider:
* Termination requested from framework side: In this case, then engine
receives a `System.exitApplication` method call, and starts the app
termination workflow via `[FlutterEngine
requestApplicationTermination:exitType:result]`.
* Termination requested from macOS (e.g. Cmd-Q): In this case,
`FlutterAppDelegate`'s `applicationShouldTerminate:` handler is invoked
by AppKit, and the delegate starts the app termination workflow via
`[FlutterEngine requestApplicationTermination:exitType:result]`.

In either case, at this point, if the request is not cancellable, the
app immediately exits. If it is cancellable, the embedder sends a
`System.requestAppExit` method channel invocation to the framework,
which responds with either `exit` or `cancel`. In the case of `exit` we
immediately exit, otherwise we do nothing and the app continues running.

This is a minor refactoring of the original approach we took in:
https://github.com/flutter/engine/pull/39836

This does not remove the FlutterApplication class, since the framework
migration from NSApplication to FlutterApplication still depends on it.
A followup patch with replace the migration with a reverse migration
will land, then FlutterApplication will be removed.

Issue: https://github.com/flutter/flutter/issues/30735

No new tests since this refactors existing behaviour while retaining the
same app semantics as before.
2023-04-04 22:19:18 -07:00
skia-flutter-autoroll
89d0e52d90 Manual roll Dart SDK from f97b9d9b2f64 to beff36793081 (1 revision) (flutter/engine#40934)
Manual roll requested by asiva@google.com

https://dart.googlesource.com/sdk.git/+log/f97b9d9b2f64..beff36793081

2023-04-04 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.0.0-409.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter-engine
Please CC
aam@google.com,asiva@google.com,dart-vm-team@google.com,jonahwilliams@google.com,rmistry@google.com
on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter Engine:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2023-04-04 22:13:47 -07:00
Casey Hillers
8a7ac5f702 Revert "[web] remove obsolete object caches; simplify native object management" (flutter/engine#40937)
Reverts flutter/engine#40894

This is breaking Google Testing. See b/277004090
2023-04-04 21:49:35 -07:00
godofredoc
7b7de6bb5d Reland "Sync Mac Host Engine with its engine v2 counterpart."" (flutter/engine#40906)
Reland "Sync Mac Host Engine with its engine v2 counterpart.""
2023-04-05 03:46:56 +00:00
Jackson Gardner
28005d57f6 The dart:wasm library is no longer used directly by user code. (flutter/engine#40920)
The `dart:wasm` library is no longer used directly by user code.
2023-04-04 22:33:25 +00:00
Chinmay Garde
f79930b74c [Impeller] Update API name to indicate descriptor set registrations. (flutter/engine#40922)
[Impeller] Update API name to indicate descriptor set registrations.
2023-04-04 22:32:49 +00:00
Chinmay Garde
e30a98acbc [Impeller] Clarify validation log behavior. (flutter/engine#40921)
[Impeller] Clarify validation log behavior.
2023-04-04 22:24:58 +00:00
skia-flutter-autoroll
5a9470ab3c Roll Skia from 827013b3dbef to c162dae2b297 (6 revisions) (flutter/engine#40919)
Roll Skia from 827013b3dbef to c162dae2b297 (6 revisions)
2023-04-04 22:01:37 +00:00
Yegor
ebfd37a6f7 [web] remove obsolete object caches; simplify native object management (flutter/engine#40894)
(this is attempt 3; details below)

Remove obsolete object caches and introduce a simpler way to manage
native objects:

* Remove the unused `SynchronousSkiaObjectCache`.
* Introduce new library `native_memory.dart` that's smaller and simpler
than `skia_object_cache.dart`.
* Introduce two types of native object references:
  * `UniqueRef` a reference with a unique Dart object owner.
* `CountedRef` a ref-counted reference with multiple Dart object owners.
* All native references use GC (via `FinalizationRegistry`) as a
back-up.
* The new library removes everything related to object resurrection that
was needed only in browsers that didn't support `FinalizationRegistry`.
All browsers support it now.
* Remove the ad hoc `SkParagraph` cache that predates the introduction
of `Paragraph.dispose`.
* Rewrite `CkParagraph` in terms of `UniqueRef`.
* Rewrite `CkImage` in terms of `CountedRef`; delete `SkiaObjectBox`.

This PR does not migrate all objects from the old
`skia_object_cache.dart` to `native_memory.dart`. That would be too big
of a change. The migration can be done in multiple smaller PRs.

This also removes a few unnecessary relayouts observed in
https://github.com/flutter/flutter/issues/120921, but not all of them
(more details in
https://github.com/flutter/flutter/issues/120921#issuecomment-1481958762)

## About attempt 3

More about [attempt 2
here](https://github.com/flutter/engine/pull/40862).

In this attempt 3 I'm replacing the `factory` with a top-level function.
2023-04-04 12:43:31 -07:00
Jonah Williams
b0d4533ab9 Revert "[Impeller] reduce advanced blend subpass count for single input with foreground color" (flutter/engine#40914)
Reverts flutter/engine#40886

This renders incorrectly when applied directly to contents instead of as
a filter, essentially due to some transform mis handling.

The code only works when the snapshot has an identity transform, which
is only true as a subpass
2023-04-04 12:12:49 -07:00
skia-flutter-autoroll
5ded9d978a Roll Skia from 548bef69d1ae to 827013b3dbef (8 revisions) (flutter/engine#40913)
Roll Skia from 548bef69d1ae to 827013b3dbef (8 revisions)
2023-04-04 17:46:31 +00:00
joshualitt
bee9f91790 [web] Migrate EventListener's to JS types. (flutter/engine#40566) 2023-04-04 09:53:13 -07:00
skia-flutter-autoroll
cfb2ed4e06 Roll Skia from ad459a5b8df4 to 548bef69d1ae (1 revision) (flutter/engine#40905)
Roll Skia from ad459a5b8df4 to 548bef69d1ae (1 revision)
2023-04-04 15:21:02 +00:00
Jason Simmons
ae08695e6d [Impeller] Emulate Skia's SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER in drawVertices (flutter/engine#40893)
[Impeller] Emulate Skia's SK_LEGACY_IGNORE_DRAW_VERTICES_BLEND_WITH_NO_SHADER in drawVertices
2023-04-04 14:32:18 +00:00
Tim Maffett
52b55a57b7 [Impeller] Fix variable name spelling/typos in several comments. (flutter/engine#40909)
[Impeller] Fix variable name spelling/typos in several comments.
2023-04-04 08:24:53 +00:00
skia-flutter-autoroll
d760d36cbc Roll Dart SDK from f08901c71710 to 1f98bd4cf916 (2 revisions) (flutter/engine#40910)
Roll Dart SDK from f08901c71710 to 1f98bd4cf916 (2 revisions)
2023-04-04 07:43:34 +00:00
Chinmay Garde
219d65bb51 [Impeller] Enable SSBOs in the Vulkan backend. (flutter/engine#40908)
[Impeller] Enable SSBOs in the Vulkan backend.
2023-04-04 03:24:26 +00:00
Jonah Williams
b24bdc96b7 [Impeller] convert blend shaders to half precision (flutter/engine#40897)
[Impeller] convert blend shaders to half precision
2023-04-04 01:53:17 +00:00
Dan Field
567701279a Exit early on invalid gn CPU argument combos for simulators (flutter/engine#40903)
Exit early on invalid gn CPU argument combos for simulators
2023-04-04 01:38:04 +00:00
gaaclarke
4806e7d6e1 [Impeller] More impeller goldens from aiks_unittests (flutter/engine#40901)
This brings over the last of the tests mentioned in
https://github.com/flutter/engine/pull/40804#issuecomment-1492516301

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or Hixie said the PR is test-exempt. See [testing the engine]
for instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I signed the [CLA].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2023-04-03 18:07:19 -07:00
Jackson Gardner
1f7f52ffac Fail the run_suite_step if any test failures are detected. (flutter/engine#40834)
We need to throw if the `run_suite_step` encounters any test failures.
2023-04-03 18:02:31 -07:00
Robert Ancell
2ff5380c01 Change back to using the memory address of a texture as its ID. (flutter/engine#40899)
Change back to using the memory address of a texture as its ID.
2023-04-04 00:43:49 +00:00
Dan Field
668566b8fa [Impeller] Respect enable-impeller command line setting over info.plist setting (flutter/engine#40902)
[Impeller] Respect enable-impeller command line setting over info.plist setting
2023-04-04 00:34:58 +00:00
Jonah Williams
234decefd7 [Impeller] reduce gaussian sampling by 2x (flutter/engine#40871)
[Impeller] reduce gaussian sampling by 2x
2023-04-04 00:28:04 +00:00
Jonah Williams
f82dc83970 Disable partial repaint on Android (flutter/engine#40898)
Disable partial repaint on Android
2023-04-03 23:36:58 +00:00
Jonah Williams
d56b15d1a3 [Impeller] reduce advanced blend subpass count for single input with foreground color (flutter/engine#40886)
[Impeller] reduce advanced blend subpass count for single input with foreground color
2023-04-03 23:04:03 +00:00
gaaclarke
6cf914a15b [Impeller] Adds the ability to specify a golden threshold (flutter/engine#40824)
[Impeller] Adds the ability to specify a golden threshold
2023-04-03 22:50:12 +00:00
Brandon DeRosier
869f90866e [Impeller] Add subpass blend goldens (flutter/engine#40879) 2023-04-03 15:28:20 -07:00
Jonah Williams
ed0d748688 Revert "[Impeller] iOS/macOS: Only wait for command scheduling prior to present" (flutter/engine#40895)
Reverts flutter/engine#40781

Fixes https://github.com/flutter/flutter/issues/124056

When unmerging threads we appear to get stuck for multiple seconds.
Haven't debugged further, but bisected to this commit.
2023-04-03 14:50:27 -07:00
Jason Simmons
cf25261c4a [Impeller] Skip the color blend in drawVertices when using the destination blend mode (flutter/engine#40891)
[Impeller] Skip the color blend in drawVertices when using the destination blend mode
2023-04-03 20:50:04 +00:00
Chinmay Garde
51aca8ead9 [Impeller] Don't crash in image decompression if the context is unavailable. (flutter/engine#40890)
[Impeller] Don't crash in image decompression if the context is unavailable.
2023-04-03 19:49:04 +00:00
Zachary Anderson
ebe7291fee Revert "Sync Mac Host Engine with its engine v2 counterpart." (flutter/engine#40892)
Reverts flutter/engine#40856

Failure on
https://ci.chromium.org/ui/p/flutter/builders/prod/Mac%20mac_host_engine/2864/overview
2023-04-03 12:31:17 -07:00
yaakovschectman
a3fec2cae5 Re-introduce WM_CLOSE listener, new quit protocol posts a second message to next handler (flutter/engine#40802)
With this approach, when the last window of an app is closed, the engine
sends a message to the framework to check if it is allowed to exit. If
it may, the windows lifecycle manager synthesizes a second `WM_CLOSE`
message that it will ignore, and so the next registered top level window
proc delegate, if any, will be able to process the message. If none do
so, the message will be handled by the default window proc, so the app
will be able to close.

I was not able to get a full system tray example application running to
test this, but I could get an application that stays open when its
window is closed and can be seen as a system tray icon as long as it is
running, albeit the icon was non-functional. As this repro app still
exhibited this behavior when using this engine build, I am reasonably
confident in concluding that applications that want to be able to run
headless when their windows close will function properly.

Addresses https://github.com/flutter/flutter/issues/123654.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or Hixie said the PR is test-exempt. See [testing the engine]
for instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [ ] I signed the [CLA].
- [x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat

---------

Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
2023-04-03 14:32:02 -04:00
godofredoc
89511339e2 Sync Mac Host Engine with its engine v2 counterpart. (flutter/engine#40856)
Sync Mac Host Engine with its engine v2 counterpart.
2023-04-03 18:21:55 +00:00
Brandon DeRosier
fb4efeb175 [Impeller] Build fixes for impeller-cmake (flutter/engine#40880) 2023-04-03 11:11:08 -07:00
Casey Hillers
20cb8b8efc Revert "[web] remove obsolete object caches; simplify native object management" (flutter/engine#40882)
Reverts flutter/engine#40862

Google Testing is failing on

```
The compiler crashed: root:🎯_engine::SkObjectFinalizationRegistry::@methods::|staticInteropFactoryStub is already bound to Reference to dart:_engine::SkObjectFinalizationRegistry::@methods::|staticInteropFactoryStub, trying to bind to Reference to SkObjectFinalizationRegistry.|staticInteropFactoryStub with node SkObjectFinalizationRegistry.|staticInteropFactoryStub (Procedure:1207727)
```
2023-04-03 10:18:26 -07:00
skia-flutter-autoroll
65de4a52e5 Roll Skia from 5d72f0cd7c3b to 1dcbcaa213e7 (2 revisions) (flutter/engine#40885)
Roll Skia from 5d72f0cd7c3b to 1dcbcaa213e7 (2 revisions)
2023-04-03 17:15:48 +00:00
skia-flutter-autoroll
42809da881 Roll Skia from fbff5b8e6bee to 58c9a8096801 (1 revision) (flutter/engine#40875)
Roll Skia from fbff5b8e6bee to 58c9a8096801 (1 revision)
2023-04-03 14:30:23 +00:00
dependabot[bot]
d933f044c2 Bump ossf/scorecard-action from 2.1.2 to 2.1.3 (flutter/engine#40878)
Bump ossf/scorecard-action from 2.1.2 to 2.1.3
2023-04-03 09:45:12 +00:00
dependabot[bot]
c15f2e9384 Bump github/codeql-action from 2.2.8 to 2.2.9 (flutter/engine#40877)
Bump github/codeql-action from 2.2.8 to 2.2.9
2023-04-03 09:43:26 +00:00
Yegor
e55fd93f5f [web] remove obsolete object caches; simplify native object management (flutter/engine#40862)
[web] remove obsolete object caches; simplify native object management
2023-04-03 04:31:16 +00:00
Chinmay Garde
743b066d9f [Impeller] Add a Stage 2 pass to the Vulkan shader compilation pipeline. (flutter/engine#40873)
[Impeller] Add a Stage 2 pass to the Vulkan shader compilation pipeline.
2023-04-03 00:23:04 +00:00
Kingtous
bcaa44592e [Linux] fix: make textures thread-safe on linux (flutter/engine#40478)
Make textures GHashTable thread-safe
2023-04-03 11:30:04 +12:00
skia-flutter-autoroll
2129e53dda Roll Skia from 47d56658e6bf to 51fa1d5813d3 (2 revisions) (flutter/engine#40866)
Roll Skia from 47d56658e6bf to 51fa1d5813d3 (2 revisions)
2023-04-02 06:26:36 +00:00
Casey Hillers
5a226729ad Revert "[web] remove obsolete object caches; simplify native object management" (flutter/engine#40861)
Reverts flutter/engine#40617

See b/276167870. This is causing a build breakage to Google testing for
all web projects.
2023-04-01 18:55:02 -07:00
skia-flutter-autoroll
8aea49351b Roll Skia from e3aa2ce8a38b to 47d56658e6bf (1 revision) (flutter/engine#40858)
Roll Skia from e3aa2ce8a38b to 47d56658e6bf (1 revision)
2023-04-01 22:18:35 +00:00