Work towards https://github.com/flutter/flutter/issues/143299.
Work towards https://github.com/flutter/flutter/issues/160043.
---
This PR implements, end-to-end, support for `matchesGoldenFile` when (a)
running with `package:integration_test` (b) on a device, such as an
Android emulator, Android device, iOS simulator, or iOS device, where
the _runner_ of a test file does not have process and local-file system
access.
There are multiple parts to this PR; I could make it smaller than 1K
lines, but the bulk of that is tests, and it would mean landing PRs that
are incomplete and unused, which does not seem useful - so instead here
is a quick overview of the PR's contents - questions/feedback welcome,
and I am willing to break code out or land incremental refactors if
requested.
1. Augmented `flutter_platform.dart` (used for iOS and Android), similar
to
[`flutter_web_platform.dart`](1398dc7eec/packages/flutter_tools/lib/src/test/flutter_web_platform.dart (L117-L128)),
now creates and uses
[`test_golden_comparator.dart`](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/test/test_golden_comparator.dart)
to proxy calls (coming from the VM service protocol) for golden-file
updates and comparisons to a `flutter_tester` process. A full
explanation of how (or why) it works this way is too hard to include
here, but see https://github.com/flutter/flutter/pull/160215 for more
details.
1. Added `VmServiceProxyGoldenFileComparator`, which is a currently
unused (outside of a single e2e test) comparator that forwards calls to
`compare` and `update` to the VM service protocol (of which, the other
side of this is implemented above, in `flutter_platform.dart`. The idea
is that this comparator would be used automatically when running in an
integration test on a device that requires it (similar to how web works
today), but that is **not** wired up yet and requires additional work in
`flutter_tools`.
1. Added two unit tests (of both the client and server), and a full
e2e-test using it to run `matchesGoldenFile`.
Towards https://github.com/flutter/flutter/issues/160692.
Prior to `flutter_template_images: 4.3.0`, the `app_shared` directory
was required.
In 4.3.0 it was forked back out to `app`
(https://pub.dev/packages/flutter_template_images/changelog), as the
`skeleton` template has been removed, and the `skeleton` template was
the (only) reason for `app_shared` (to share code between `app` and
`skeleton`).
This is a NOP change tested by existing tests.
Now that "auto" is not supported anymore, it makes more sense to make
this dart define false by default. And there's no need to pass
`FLUTTER_WEB_AUTO_DETECT=false` anymore.
A few clarifications in the gclient file templates:
* Sort sections such that RBE and standard variants are consistent.
* Add web engine instructions in comments.
* Explain how to use SSH-based GitHub checkouts.
dart_style 3.0.1 comes with some minor style fixes:
https://github.com/dart-lang/dart_style/blob/main/CHANGELOG.md#301
This PR applies this fixes in bulk across the repository. (Otherwise,
the next person touching these files would have been the one updating
them to the new format by running the formatter).
Fixes https://github.com/flutter/flutter/issues/160593
Primitive Restart cannot be used on some (All?) Adreno's because it
causes a dramatic performance regression. Opt out and use the GLES
strategy. Refactors the batch submit command buffer capability into
workarounds_vk
This is no longer working after the monorepo merge:
https://github.com/flutter/flutter/issues/160670.
That issue tracks instead teaching the `Linux ci_yaml flutter roller` to
roll both sets of configurations.
## Description
This PR reverts `DropdownMenu` changes from
https://github.com/flutter/flutter/pull/155757.
Automatically rematching the `initialSelection` breaks some use cases.
It is more flexible to let users manipulate the text field content using
the TextEditingController.
## Related Issue
Fixes [Dropdown Menu Creates Infinite Build
Loop](https://github.com/flutter/flutter/issues/160196)
Fixes [Can no longer initialize non selectable value in DropdownMenu as
of flutter version
3.27.1](https://github.com/flutter/flutter/issues/160555)
## Tests
Removes 2 regression tests from
https://github.com/flutter/flutter/pull/155757.
Keeps 2 tests from the original PR (missing test for the
initialSelection behavior).
Adds 1 tests to avoid regressing this revert.
Changes since last roll:
```
fc5db8ea927 Version 3.7.0-267.0.dev
601e85438f3 [tests] Cascade tests for static member and constructor enum shorthands.
4093bdaf5a8 [vm] Change try-catch IL representation.
b3ab7e274c5 Elements. Migrate lib/src/generated/ffi_verifier.dart
6e5fb8baa16 [dart2wasm] Add support for dynamic module options.
7bea7d185d4 [dart2wasm] Add indirection for struct initialization.
```
Work around: https://github.com/flutter/flutter/issues/160689.
I locally verified that we have not regressed what this was testing
(that just invoking `//flutter/bin/dart` will not build the flutter
tool).
Fixes https://github.com/flutter/flutter/issues/160480
Both The Impeller and Skia variant of the OES texture rendering use the
same shared code path, so the Impeller code must match the weird 1x1
texture behavior of Skia. In addition, we have to add back the
TiledTextureContents support, since we need to render a texture with a
transform. I had previously tested this but neglected to force the
SurfaceTexture path, so I only tested the ImageReader path which does
not use a transform.
In the future a hook may be invoked multiple times with different
`supportedAssetTypes` (soon to be renamed to `buildAssetTypes`).
The hook should only emit those asset types that are in
`supportedAssetTypes` - anything else is an error. Right now flutter
happens to invoke hooks only with `Code` asset types, but more asset
types are coming, for which this PR is a preparation for.
No issue
Related to
https://github.com/flutter/packages/pull/7985#issuecomment-2557237025
## 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].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] 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.
Changes since last roll:
```
85569ab5b39 Version 3.7.0-266.0.dev
8c1fa6d05b8 [tfa,aot,dart2wasm] Allow tree-shaking of extension type members independently of their tear-offs
5078a20a6d5 [cfe] Use OffsetMap for BodyBuilder.finishFields
a6b0fced839 [tfa,aot,dart2wasm] Retain libraries which only have extensions and extension types
4bcb4b10443 (tag: 3.7.0-265.0.dev) Version 3.7.0-265.0.dev
982b9fad444 [vm] Turn on entry point checking in JIT mode.
04530d578ff Roll dart_style 3.0.1 into the SDK.
c2abea31557 [deps] Roll dart-lang/native
3b056e1d500 [dart2wasm] Fix deferred loading tests on optimized configs.
ca668b701c3 (tag: 3.7.0-264.0.dev) Version 3.7.0-264.0.dev
54af9b3a39a (tag: 3.7.0-263.0.dev) Version 3.7.0-263.0.dev
72acd9d0ff3 [dart:svg] Add value->newLength parameter name change to templates
57c4da6911d Make Driver.instrumentationService private and final
f934e392f2d analyzer: Remove unnecessary Driver.httpServer
c5c3544b71f Fix Fuchsia build error.
2f857baba7e [dart2js] Make an check.
b3e7e027380 (tag: 3.7.0-262.0.dev) Version 3.7.0-262.0.dev
08252fc9e91 [dartdev] Use VmInteropHandler for invoking sub commands
96c4e4c81f8 [dart2wasm] Use field type instead of global type for static field type.
e3e7ca846a8 [gardening] Fix service/uri_mappings_lookup_test.
580107f8474 Migrate generic_type_alias.test
0a5a8f17af8 [vm] Remove BaseIsolate as it serves no purposes anymore.
9820487a3c4 [analyzer] Support enclosingFragments that are local variables
dbf60082974 DAS: Support monospaced text (eg code snippets) in generated doc comments
59499d362a2 [dart2wasm] Add support for declaring functions as module elements.
a0e1bce4b27 (tag: 3.7.0-261.0.dev) Version 3.7.0-261.0.dev
96fbc264ca1 [dart2wasm] Add indirection for dispatch table calls.
d261ded4c72 Bump tools to febccb92d228e678196aa90c109c708ed7ad6ea8
54d62b478d8 [analysis_server] Move Type Hierarchy off ElementLocation to its own internal uri/name encoding
b67f61a66c3 [tests] Additional tests for ?? with enum shorthands.
e1be04c4704 Implement element and fragment for generic function types
a9c3991a7a6 [analysis_server] Migrate LSP Find References to new element model
11904ed3871 [analyzer] Add LinterContext.currentUnit and use it for content in eol_at_end_of_file
38bce3f507d Elements. Migrate test/generated/simple_resolver_test.dart
34cf29701be Elements. Migrate test/src/dart/analysis/search_test.dart
e70a91d8e38 [analyzer/linter] Simplify implementation of rule State
ee5c4b00840 Roll BoringSSL from 57f525e425a9 to ee0c13ad1808 (22 revisions)
42f0e9aa15b analyzer: Report bad type arg on implicit call
8cc449ac8c1 [dart2wasm] Add utils for pragma reading and updating.
04d70b9fb40 analyzer: Make ResolutionVisitor._libraryElement final
d0f34d918f2 [dynamic_modules] Fix multiple_classes/dynamic_interfaces.yaml for vm.
3fba5fb4633 DAS: Seal TypeDecl for simpler switches
946f3287b46 [dart2wasm] Clean up some dead or unnecessary code.
231b463e8fc Roll Fuchsia SDK from 26.20241210.5.1 to 26.20241211.4.1
4e4fec1830b DAS: Correct some broken comment references
69fef4b123c Elements. Use impl types in a few places to avoid casts.
```
The integration test framework that waits for transitions and
(optionally) takes actions on transitions allows to match patterns.
If one uses a RegExp pattern than the framework only checks whether a
line contains the given RegExp pattern.
If one uses a String pattern it matches it exactly.
=> We add a `Barrier.contains()` and `Multiple.contains()` that allow
matching a line with if it contains the String (just like in RegExp)
=> This makes tests simpler as they don't have to know about the exact
padding of progres bar etc. Those may be irrelevant for the purpose of
the integration test and only complicate it.
These tests are slightly flakey due to the macos cache issue. These
aren't actually tests, instead the prepopulate an RBE cache - so the
failure shouldn't close the tree, because cold caches isn't a failure
state (its just unfortunate).
This splits the web engine into a build phase and a test phase. This
requires a few changes:
* Modify the `generate_builder_json.dart` command to produce two
separate json builder files, `linux_web_engine_build.json` and
`linux_web_engine_test.json`. The former is left as the existing builder
with `release_build: true` (which will run in the merge queue) and the
latter is added as a new builder that runs in the second CI phase.
* Change the `copy_artifacts_step.dart` to pull built artifacts from the
GCS bucket when on LUCI, instead of relying on the CAS bucket. This is
necessary to do the tests separately from the build.
* Move the `felt test --copy-artifacts` command from the build steps to
the test steps, since the test steps themselves need to pull from GCS
instead of relying on the artifacts being populated by CAS.
This auto-formats all *.dart files in the repository outside of the
`engine` subdirectory and enforces that these files stay formatted with
a presubmit check.
**Reviewers:** Please carefully review all the commits except for the
one titled "formatted". The "formatted" commit was auto-generated by
running `dev/tools/format.sh -a -f`. The other commits were hand-crafted
to prepare the repo for the formatting change. I recommend reviewing the
commits one-by-one via the "Commits" tab and avoiding Github's "Files
changed" tab as it will likely slow down your browser because of the
size of this PR.
---------
Co-authored-by: Kate Lovett <katelovett@google.com>
Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
It takes 30 minutes while all other bots are done in 10-20 minutes. The
old Windows build used to test in IE11 and old Edge. Since we stopped
testing on those we switched to Chromium, but that doesn't provide any
extra signal in addition to what we get from Linux Chromium already.
Several use cases for `origin` as default:
* Some github actions checkout the tree
* Some users download from flutter.dev and then use `master`
Fixes#160558