228 Commits

Author SHA1 Message Date
Jackson Gardner
b2a4a05683
[skwasm] Dynamic Threading (#164748)
This switches skwasm over from the emscripten pthreads implementation to
emscripten's "wasm workers" threading implementation. The pthreads
implementation simply will not run at all in a non-crossOriginIsolated
context, but the wasm workers implementation only fails if we actually
attempt to spawn a thread. This means we can actually choose whether to
use a single-threaded or multi-threaded strategy at runtime, which means
we don't have to build two variants of skwasm for single- vs
multi-threaded.
2025-03-10 21:23:29 +00:00
Kevin Moore
2bc40b39dc
[web_ui] dependency cleanup (#164256)
Update dependencies across 3 web engine packages
Remove unneeded dependencies
One set of associated code fixes
2025-02-27 19:21:18 +00:00
Devon Carew
2bf32d855e
[deps] update dep references from older repos to newer (current SOT) repos (#163891)
Update dep references from older repos to newer (current SOT) repos:

- package:markdown is now part of the dart-lang/tools monorepo
- package:glob is now part of the dart-lang/tools monorepo
- package:web_socket_channel is now in dart-lang/http
- package:intl moved (quite a while ago) to the dart-lang/i18n monorepo
- package:gcloud moved (a while ago) to dart-lang/labs

I didn't have to update any references to package:intl as part of this;
I suspect that means that its not actually used here.

I was not able to update package:gcloud to the most recent commit; I had
to stop short of that because the package is now referencing
package:retry - in google/dart-neats - and there's no mirror for that.

Generally, it would be useful to have a process to update older
references here and / or garbage collect the dep'd in repos.

Done as the last bit of https://github.com/dart-lang/sdk/issues/56591.

## 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], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [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/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-02-24 20:13:03 +00:00
Matan Lurey
78d0f5f0f6
Remove duplicate sources in the web_sdk. (#163636)
Post-submit feedback on https://github.com/flutter/flutter/pull/163015.
2025-02-19 19:59:12 +00:00
Matan Lurey
b728c4c06a
Remove unsound artifacts, remove *Sound qualifier. (#163015)
Towards https://github.com/flutter/flutter/issues/162846.

Removes all of the unsound host artifacts, and then uses their name for
the sound artifacts.

That is, for something like `webPlatformDDCKernelDill`, this PR:

- Changes the web GN builders to only emit the sound SDK, without the
`-sound` suffixes
- Deletes `webPlatformDDCKernelDill` and all usages of it (implicitly
unsound, and unused).
- Renames `webPlatformDDCKernelSoundDill` to `webPlatformDDCKernelDill`.

No user impact expected, as there was no way to use the unsound
artifacts from the Flutter tool.
2025-02-12 02:40:18 +00:00
Mouad Debbar
fca7da1eb0
[web] Remove HTML build artifacts (#162528)
Stop building artifacts for the HTML/AUTO renderers.
2025-01-31 19:40:27 +00:00
Devon Carew
b53181a01d
[deps] remove no-longer-used repo deps (#161605)
Remove older repo references; remove older references to `yaml_edit`,
`yaml`, `watcher`, `term_glyph`, `string_scanner`, `stream_channel`,
`stack_trace`, and `watcher`.

Done as part of https://github.com/dart-lang/sdk/issues/56591.

## 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], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [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/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-01-14 21:50:11 +00:00
Srujan Gaddam
a38abc864c
Support DDC library bundle format and remove support for DDC module format (#161276)
This gets us closer to enabling [hot
reload](https://github.com/dart-lang/sdk/issues/54934) on the web as
this format is a prerequisite. Historically, we added support for the
DDC module format only to enable hot reload, but that format is not
feasible for the goal, so we added the DDC library bundle format. The
DDC library bundle format is currently represented as the combination of
the `ddc` module format and `canary`. We no longer need to support the
old DDC module format.

- Adds build artifacts to build the SDKs for this format (but only in
sound mode as unsound is unsupported), and removes said artifacts for
the DDC module format.
- Update artifact maps and constants to add the new format and remove
the old format.
- Adds handling of the `canaryFeatures` flag.
- Update dwds to 24.3.0 and use the new
`FrontendServerDdcLibraryBundleStrategyProvider`.
- Add bootstrap code for the new format. Kept DDC module format
bootstrap code as it's used internally.
- Updates tests.

I ran `spinning_square` with the new module format to verify that it can
run.

## 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], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.
2025-01-09 20:36:43 +00:00
Devon Carew
ad5e1fe300
[deps] remove references to archived repos (#161248)
- remove references to archived repos; test_reflective_loader, sse,
source_span, source_maps, pub_semver, pool and package_config

These have moved into the dart-lang/tools monorepo.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

- done as part of https://github.com/dart-lang/sdk/issues/56591

## 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], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [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/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-01-07 21:49:48 +00:00
Michael Goderbauer
8e0993eda8
Auto-format Dart code in engine (#160576)
This auto-formats all *.dart files in the `engine` subdirectory and
enforces that these files stay formatted with a presubmit check.
2024-12-19 17:13:07 +00:00
Yegor
f344c4699a [web] allow imports to line-break (flutter/engine#57170)
We are about to `dart format` all the Dart code in the repo, which line-breaks some of our imports.

This PR updates `sdk_rewriter.dart` to support line-broken imports.
2024-12-13 20:42:30 +00:00
Michael Goderbauer
75f9549553 Bump Dart SDK to 3.7 (flutter/engine#56989) 2024-12-06 01:41:03 +00:00
Jackson Gardner
8cced6a0ac Reland single threaded Skwasm (flutter/engine#56282)
This attempts to reland the single-threaded Skwasm PR: https://github.com/flutter/engine/pull/56206

The main changes here are in the second commit:
* We need to actually bundle the `skwasm_st` artifacts in `flutter_web_sdk.zip`
* The `locateFile` hack no longer works since emscripten doesn't actually create a worker.js file anymore. So instead, that has been modified to use the `mainScriptUrlOrBlob` module API to do a very similar hack.

Note: I did presubmit testing with the framework CI and it appears the pertinent tests pass. See https://github.com/flutter/flutter/pull/157967
2024-11-01 19:00:08 +00:00
auto-submit[bot]
38f7a81e37 Reverts "Skwasm single threaded (#56206)" (flutter/engine#56264)
Reverts: flutter/engine#56206
Initiated by: jonahwilliams
Reason for reverting: failing to roll into framework: https://github.com/flutter/flutter/pull/157919 
Original PR Author: eyebrowsoffire

Reviewed By: {harryterkelsen}

This change reverts the following previous change:
This PR creates a single-threaded version of the skwasm renderer, appropriate for non-crossOriginIsolated browsing contexts.
* The single threaded renderer is essentially the same as the multi-threaded renderer, except instead of spawning a web worker and posting messages to it, it simply schedules microtasks on the main thread in their place.
* The new renderer is vended as `skwasm_st.js` and `skwasm_st.wasm` in the same location as multithreaded skwasm. In order to properly build and function, we needed some fixes I put into emscripten that landed in version 3.1.70. That version also changed some behavior that required a few fixes to the CanvasKit build files.
* The skwasm loader in flutter.js has been modified to use the skwasm_st variants when encountering a non-crossOriginIsolated context but a browser and configuration that otherwise would allow the use of skwasm. I also added a new `forceSingleThreadedSkwasm` option to the flutter configuration so that we can override this behavior, especially so that we can accurately benchmark the single threaded renderer in a crossOriginIsolated environment.
* I also consolidated a bunch of our shards that run tests to just have one per browser/platform combination, so four total. This will address https://github.com/flutter/flutter/issues/124682
2024-10-31 14:12:47 +00:00
Jackson Gardner
1a4f588e1f Skwasm single threaded (flutter/engine#56206)
This PR creates a single-threaded version of the skwasm renderer, appropriate for non-crossOriginIsolated browsing contexts.
* The single threaded renderer is essentially the same as the multi-threaded renderer, except instead of spawning a web worker and posting messages to it, it simply schedules microtasks on the main thread in their place.
* The new renderer is vended as `skwasm_st.js` and `skwasm_st.wasm` in the same location as multithreaded skwasm. In order to properly build and function, we needed some fixes I put into emscripten that landed in version 3.1.70. That version also changed some behavior that required a few fixes to the CanvasKit build files.
* The skwasm loader in flutter.js has been modified to use the skwasm_st variants when encountering a non-crossOriginIsolated context but a browser and configuration that otherwise would allow the use of skwasm. I also added a new `forceSingleThreadedSkwasm` option to the flutter configuration so that we can override this behavior, especially so that we can accurately benchmark the single threaded renderer in a crossOriginIsolated environment.
* I also consolidated a bunch of our shards that run tests to just have one per browser/platform combination, so four total. This will address https://github.com/flutter/flutter/issues/124682
2024-10-31 00:42:07 +00:00
Devon Carew
f233f9eaf4 [deps] update deps and pubspecs for the new locations of package:matcher, package:collection, and package:boolean_selector (flutter/engine#56107)
Update the deps and pubspec files for the new SoT locations for:

- package:matcher (dart-lang/test)
- package:collection (dart-lang/core)
- package:boolean_selector (dart-lang/tools)

See also issue https://github.com/dart-lang/sdk/issues/56591. 

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-10-24 22:37:01 +00:00
Siva
4595712f73 Switch the web compilation step to use an AOT snapshot (flutter/engine#56040)
Switch the Dart Development Compiler compilation step to use the
dartdevc AOT snapshot.
2024-10-23 13:18:11 -07:00
Devon Carew
7ffe338915 Update the engine deps to track new SoT git locations for several packages (flutter/engine#56028)
This PR updates the deps and pubspec overrides to track the new SoT of
several Dart core packages (these now live in dart-lang/core).

- `package:args`
- `package:async`
- `package:convert`
- `package:crypto`
- `package:fixnum`
- `package:logging`
- `package:path`
- `package:platform`
- `package:typed_data`

issues
- https://github.com/dart-lang/sdk/issues/56591

## 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 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
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[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
2024-10-23 11:14:58 -07:00
Devon Carew
b21f22cc50 re-land "update the repo references for package:file (#55906)" (flutter/engine#55935)
This is a re-land of the reverted PR, flutter/engine#55916 (it depended
on a dart roll that was reverted, and has subsequently been re-landed).

From the original PR:

> The SoT repository for `package:file` has changed from
google/file.dart to dart-lang/tools; this PR updates the DEPS file and
the hard-coded paths in the two pubspec.yaml files (see
https://github.com/dart-lang/tools/issues/674).
2024-10-21 10:39:02 -07:00
auto-submit[bot]
599de28a39 Reverts "update the repo references for package:file (#55906)" (flutter/engine#55916)
Reverts: flutter/engine#55906
Initiated by: zanderso
Reason for reverting: b/373907578
Original PR Author: devoncarew

Reviewed By: {zanderso}

This change reverts the following previous change:
The SoT repository for `package:file` has changed from google/file.dart to dart-lang/tools; this PR updates the DEPS file and the hard-coded paths in the two pubspec.yaml files.

- https://github.com/dart-lang/tools/issues/674

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-10-16 21:46:47 +00:00
Devon Carew
ff569a9bdc update the repo references for package:file (flutter/engine#55906)
The SoT repository for `package:file` has changed from google/file.dart
to dart-lang/tools; this PR updates the DEPS file and the hard-coded
paths in the two pubspec.yaml files.

- https://github.com/dart-lang/tools/issues/674

## 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 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
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[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
2024-10-16 13:23:03 -07:00
Srujan Gaddam
d16a9057a0 Update package:js version constraints to ^0.7.0 and update test versions to match (flutter/engine#54629)
This removes the dependency on `dart:js` and allows that library to be removed from dart2wasm. Also updates `test` dependencies to work with the new `package:js` constraints.
2024-08-20 02:58:58 +00:00
Kevin Moore
28e7d0ec2a web_ui: bump min Dart SDK to 3.6.0-0 (flutter/engine#54626)
Also removed two unused dev dependencies

Enables usage of `Since` in dart:js_interop
2024-08-19 22:11:55 +00:00
Matan Lurey
e301288885 Pub workspace-ify most of testing/ and parts of tools/ (flutter/engine#54124)
Replaces and closes https://github.com/flutter/engine/pull/53997.

This PR migrates the following packages to the pub workspace:
  - testing/benchmark
  - testing/dart
  - testing/litetest
  - testing/pkg_test_demo
  - testing/scenario_app
  - testing/skia_gold_client
  - testing/symbols
  - tools/golden_tests_harvester
  - tools/pkg/process_fakes

It also makes minor changes to the Dart build rules in order to resolve the root package_config, instead of per-package.

I am _not_ totally confident of the `_embedder.yaml` change, but I also can't explain what is needed to continue analyzing `lib/ui` without analysis failures that all of the symbols in `dart:nativewrappers` are missing.
2024-07-26 17:35:50 +00:00
Jason Simmons
285c718c82 Roll web_ui dependencies to enable the next roll of the Dart SDK (flutter/engine#53399)
Dart has removed the UnmodifiableXXXView classes, which were used by older versions of the archive package.

See https://dart.googlesource.com/sdk/+/18994e6e46ec9fb2fac8368c43d448119abd579f
2024-06-14 20:52:04 +00:00
Martin Kustermann
d82c365da3 Use dart.library.html to distinguish dart2wasm from dart2js/ddc in conditional imports (flutter/engine#53307)
Users of packages that have specialized code for the VM (which supports
FFI) use conditional imports based on `dart.library.ffi`. We don't want
the VM-specific code to be used for web in dart2wasm.

As a result we're going to make `dart.library.ffi` be false in
conditional imports (as well as in
`const bool.fromEnvironment('dart.library.ffi')`).

Issue https://github.com/dart-lang/sdk/issues/55948
Issue https://github.com/flutter/flutter/issues/149984
2024-06-10 15:58:43 +02:00
David Iglesias
6eacdf2be8 [web] Adds allowPlatformDefault for wheel signals. (flutter/engine#51566)
Adds a function to each 'wheel' DataPacket sent to the framework so it can signal whether to `allowPlatformDefault` or not.

The current default is to always `preventDefault` on browser events that get sent to the framework.

This PR enables the framework to call a method on the `DataPacket`s to `allowPlatformDefault: true`, if the framework won't handle the Signal (signals are handled synchronously on the framework).

This lets the engine "wait" for the framework to decide whether to `preventDefault` on a `wheel` event or not.

## Issues

* Needed for: https://github.com/flutter/flutter/issues/139263

## Tests

* Added unit tests for the feature in the engine repo, veryfing whether the event has had its `defaultPrevented` or not.
* Manually tested in a demo app (see below)

## Demo

* https://dit-multiview-scroll.web.app

<details>
<summary>

## Previous approaches

</summary>

1. Add a `handled` bool property to `PointerDataPacket` that the framework can write to (brittle)
2. Modifications to the `PlatformDispatcher` so the framework can `acknowledgePointerData` with a `PointerDataResponse` (fffffatttt change)
3. `acknowledge` function in `PointerDataPacket`

</details>

> [!IMPORTANT]
> * Related: https://github.com/flutter/flutter/pull/145500

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-06-05 23:25:53 +00:00
Zachary Anderson
a1257de605 Simplify GN pools, use in more places (flutter/engine#52721)
This PR changes from using a different GN pool for each non-compiler tool, to using one GN pool for everything.

Additionally, since we are no longer linking remotely in any configuration, this PR uses the pool for linking.

ObjC and impellerc tasks also do not (yet) run on RBE, so they are also now governed by the pool.

Needs https://github.com/flutter/buildroot/pull/856
2024-05-10 22:43:23 +00:00
Jason Simmons
f745408809 Move the Dart SDK to //flutter/third_party/dart (flutter/engine#51917) 2024-04-09 12:48:09 +00:00
Jason Simmons
7ab0f69480 Add local paths for the Dart macros package, which is now a dependency of the analyzer package (flutter/engine#51709) 2024-03-27 17:27:02 +00:00
Matan Lurey
31b0fb1ea3 Remove or replaced unused or duplicate code in SkiaGoldClient. (flutter/engine#51399)
- `get isAvailable` -> `SkiaGoldClient.isAvailable()`
- `get isLuciEnv` -> `SkiaGoldClient.isLuciEnv()`
- Remove unused `SkiaGoldHttpOverrides`
2024-03-14 08:45:34 -07:00
Zachary Anderson
7fac661f11 [gn] Change sdk_rewriter() template to use depfiles (flutter/engine#51314)
Part of https://github.com/flutter/flutter/issues/144430

From `gn help inputs`: "It may be tempting to write a script that enumerates all files in a directory
as inputs. Don't do this!"
2024-03-11 21:46:01 +00:00
Chinmay Garde
6c17d7bf9d Use a GN variable (dart_src) to reference the location of the Dart checkout. (flutter/engine#50624)
Towards https://github.com/flutter/flutter/issues/143335
2024-02-14 21:12:23 -08:00
Mouad Debbar
7b3f9d595a [web] Increase tolerance for golden diffs on Safari (flutter/engine#50655)
1. Re-institute the 10% pixel count tolerance number that was accidentally lost in [this commit](2232f767bd (diff-356abf8d8d08b3ba08c35d6399e2a21d3107aa16c55f4303bb3b8f96195bbcc0)) (this applies to all web environments).
2. Allow each individual pixel on Safari to differ by a value of 16 per RGB channel.
2024-02-14 22:47:10 +00:00
Matan Lurey
748e3f8e0b Remove legacy references to Cirrus and suspected dead-code. (flutter/engine#50442) 2024-02-10 22:08:23 +00:00
MarkZ
6d345a5475 Adding DDC module system targets to web SDK artifacts. (flutter/engine#47783)
This is part of an ongoing effort to replace DDC's module system in Flutter Web (for hot reload support).

Side effects of this change include doubling the code generated by DDC whenever this build pathway is hit (until the full module system transition lands), but this shouldn't affect debug performance. We may be able to lock this behind a build flag if this is an issue. 

See related issue: https://github.com/dart-lang/sdk/issues/52361
2024-01-25 00:52:16 +00:00
Jackson Gardner
3133e1fbca Add the flutter_js target as a dep to web_sdk. (flutter/engine#48814)
Currently, the `flutter_js` target is built as part of the flutter_web_sdk_archive target. However, it should also be built when doing the normal web_sdk, as that is what the monorepo builds (and does its own archiving).
2023-12-08 15:28:12 +00:00
Jackson Gardner
9549a0fbe2 Bundle flutter.js via esbuild (flutter/engine#47573)
* Roll esbuild as a CIPD package along with the browser roller. I renamed `browser_lock`/`browser_roller` etc to `package_lock` and `package_roller` since it will handle more than just browsers now.
* Download the esbuild CIPD package via DEPS.
* Have a build rule for running esbuild on some JavaScript or TypeScript
* Bundle and minify `flutter.js` using esbuild.
* Include in `flutter_web_sdk` the original `flutter.js` source, the minified `flutter.js`, and a sourcemap file to map between thnm.
* Also slightly changed the structure to put the `flutter.js` stuff in `flutter_web_sdk/flutter_js` instead of just at the root level of `flutter_web_sdk`. This should be fine because I haven't merged the change that has the flutter tool consume this yet.
2023-11-03 20:24:29 +00:00
Dan Field
23b2847379 [Impeller] Skia gold for flutter_tester dart tests. (flutter/engine#47066)
This removes skips for the golden tests in `//testing/dart/canvas_test.dart` and instead passes them up to Skia gold.

Adds a utility class for dealing with Skia gold from these tests, as well as the existing fuzzy identical image comparison for tests that just want to do in memory comparison of images generated from the same test.

Removes the old golden files that were in tree.

Part of https://github.com/flutter/flutter/issues/53784
2023-11-02 17:48:28 +00:00
Jackson Gardner
d6ca6b37d2 Move flutter.js into the engine. (flutter/engine#47240)
This will allow us to add tooling to do some bundling/minifying of `flutter.js`, which should make this more scalable/extensible long-term.

Also, this removes a few redundant build rules that produce artifacts that the flutter tool doesn't use anymore.
2023-10-31 19:19:17 +00:00
Zachary Anderson
14a7db93d1 Cleanup Dart package dependencies a bit (flutter/engine#47306)
Removes package:quiver, and an older second copy of package:file
2023-10-25 13:09:30 -07:00
Nate Bosch
fbb4b6abd9 Update to the latest package:test (flutter/engine#46592)
- Update the pinned version of `test` to the latest published.
- Add support for reading the `source.location` of messages to the JS
  interop library.
- Update `host.dart` to support the new communication pattern with the
  test frame. See https://github.com/dart-lang/test/issues/2065
- Use `Runtime.edge` for the edge browser. We may deprecate or remove
  the constant. Edge is a more appropriate value for this usage.
2023-10-23 19:08:10 +00:00
Jackson Gardner
ef900554cb Include symbol maps in CanvasKit and Skwasm builds. (flutter/engine#46973)
This should help with https://github.com/flutter/flutter/issues/122834

Emitting DWARF data or source maps actually significantly changes the size of the build, since some binaryen optimizations must actually be skipped when producing either of those. So we can emit symbol maps for now, which don't affect the size of the actual wasm output. With these, we can at least manually deobfuscate stack traces.
2023-10-17 16:24:18 +00:00
Jackson Gardner
2c58573690 Use dart:_wasm constructs to avoid dependence on WebAssembly.Function (flutter/engine#46388)
Use the newly exposed functionality in `dart:_wasm` to fix up two different hacks we have:
1) When creating an image from an image source, use `wasm:import` instead of `@Native` and pass the image source directly as an externref. (Direct wasm binding instead of a JS interop shim, yay).
2) When binding the surface callback, previously we were wrapping the callback in a JS function, and then using `WebAssembly.Function` to create a wasm function wrapper around that. Now, we can create a `WasmFuncRef` that is a direct reference to a dart function and pass that over. Now there are no intermediary JavaScript layers when skwasm calls back to us, and we no longer are dependent on the type reflection flag in Chrome.

This fixes https://github.com/flutter/flutter/issues/134556
2023-09-29 20:52:36 +00:00
Michael Goderbauer
efc22ee283 Enable private field promotion (flutter/engine#45722)
New feature in upcoming Dart 3.2. See https://github.com/dart-lang/language/issues/2020. Feature is enabled by bumping the min SDK version to 3.2.

Part of https://github.com/flutter/flutter/issues/134476.
2023-09-14 21:02:03 +00:00
Jackson Gardner
c93da27b95 Compile a platform dill for dart2wasm (flutter/engine#45797)
This continues work on https://github.com/flutter/flutter/issues/133467

We still need a change on the tool side to consume this platform dill file after this lands.
2023-09-13 22:12:13 +00:00
Nicholas Shahan
f7132b576d Update deps on DDC build targets (flutter/engine#45404)
Update deps to use the new Dart SDK DDC build targets introduced in
these changes:
 - https://dart-review.googlesource.com/c/sdk/+/313081
 - https://dart-review.googlesource.com/c/sdk/+/315561

Fixes: https://github.com/flutter/flutter/issues/133606
2023-09-06 11:10:39 -07:00
Jacob MacDonald
660bdd6b03 add dart_internal override where necessary (flutter/engine#42920)
A dependency to dart_internal was added in https://dart-review.googlesource.com/c/sdk/+/309460/6 and all transitive deps need to have overrides.
2023-06-16 17:20:18 +00:00
Mouad Debbar
3a4677a6d7 [web] Cleanup assertionsEnabled (flutter/engine#41829)
For consistency with the rest of the flutter code, this PR explores the possibility of removing our proprietary `assertionsEnabled`.
2023-05-24 15:08:50 +00:00
Mouad Debbar
9aec8c5c62 [web] Move platformViewRegistry to ui_web (flutter/engine#41877)
In this PR, I'm leaving a getter for `platformViewRegistry` in `dart:ui` for backwards compatibility. At some point, we need to properly deprecate it (e.g. print a warning asking users to import it from `dart:ui_web` instead).

Next step is to migrate all call sites in flutter/flutter, flutter/packages and flutter/devtools (anything else?).

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

Fixes https://github.com/flutter/flutter/issues/41563
2023-05-23 16:17:56 +00:00