It's possible (but unlikely) that two DDS instances can try and start at
the same time (e.g., a "flutter run" is initiated while an existing
"flutter attach" is waiting for a target to attach to). This can lead to
DDS failing to initialize for one of the processes when the VM service
disconnects it after the other process successfully invokes the
"_yieldControlToDDS" RPC.
This change adds some retry logic to avoid crashing in this scenario.
Fixes https://github.com/flutter/flutter/issues/169265
The `flutter logs` path for a module does not pass the buildInfo to the
`fromAndroidProject` function. This will cause an exception to be thrown
when `buildInfo!` is invoked. Instead, just allow the buildInfo to be
null and check for the manifest with the code that already exists.
Fixes: #172884
## 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.
- [ ] 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].
- [X] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.
---------
Co-authored-by: Reid Baker <reidbaker@google.com>
Closes https://github.com/flutter/flutter/issues/171637
As mentioned in the issue, I am proposing a new argument to the flutter
build web command: `--static-assets-url`.
This argument would accept a full URL string ending with `/` as its
value. During the build process, the Flutter tool would use this value
to replace a dedicated placeholder within the `web/index.html` file
(inspired by `--base-href` approach).
Example Implementation:
A developer would modify their `web/index.html` to use a new
placeholder, for instance, `$FLUTTER_STATIC_ASSETS_URL`:
```html
...
<body>
<script>
{{flutter_js}}
{{flutter_build_config}}
_flutter.loader.load({
config: {
entryPointBaseUrl: "$FLUTTER_STATIC_ASSETS_URL",
},
onEntrypointLoaded: async function (engineInitializer) {
const appRunner = await engineInitializer.initializeEngine({
assetBase: "$FLUTTER_STATIC_ASSETS_URL",
});
await appRunner.runApp();
},
});
</script>
</body>
...
```
The build command would be run with the new flag: `flutter build web --static-assets-url="https://static.company.com/some-webapp/“` - and the resulting `build/web/index.html` would have the placeholder replaced:
```html
...
<body>
<script>
{{flutter_js}}
{{flutter_build_config}}
_flutter.loader.load({
config: {
entryPointBaseUrl: "https://static.company.com/some-webapp/",
},
onEntrypointLoaded: async function (engineInitializer) {
const appRunner = await engineInitializer.initializeEngine({
assetBase: "https://static.company.com/some-webapp/",
});
await appRunner.runApp();
},
});
</script>
</body>
...
```
I discovered we had a duplicate entry for what the min sdk api level
flutter supports along with duplicate code for telling the user.
This pr keeps the duplicate warnings but removed duplicate definitions.
Updates the related tests
Updates workflow_test and android_workflow to compare against the
compile sdk version since the validation was ensuring that the lastest
of the installed sdks was at least what was needed for flutter to
compile. This make this pr more than a formatting/refactoring change and
an actual user facing change. Requesting re-review.
## 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.
- [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.
Widget previews are being released as an experimental feature in the
next stable release.
This change has some minor last minute changes to prepare for release:
- Makes `flutter widget-preview` visible
- Adds documentation links to docs.flutter.dev (not yet staged)
- Fixes minor bug with asset loading due to `AssetManifest.bin.json` not
being accounted for in the asset path mapping logic
## What's new?
- Added the `windowing` feature flag to the project
- Created the internal `_window.dart` API with support for regular
windows
- Implemented a `_WindowingOwnerUnsupported` implementation of the
`WindowingOwner` interface
- Marked all points of the public API as `@internal` with a
corresponding warning documentation
- Threw an `UnsupportedError` where it is appropriate to do so
Note that this PR does **NOT** include a real implementation of
`WindowingOwner` (e.g. for win32 or macOS). That work will be opened as
a follow up.
This work is based off of https://github.com/flutter/flutter/pull/168697
and http://github.com/flutter/flutter/pull/168437, as well as this
design document:
https://docs.flutter.dev/go/multi-window-experimental-apis
## 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].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
---------
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
Fixes#172055
~For some reason a trailing slash at the end of a comment or a line
below the commented out line that otherwise would match would cause the
regex to match that should be ignored.~
~I could not reason about why the trailing slash would cause a match but
the primary change apart from more robust tests is adding `^\s*` which
pins the match on lines that start with some amount of space before
excluding lines that use `//`~
The regex was overbroad at matching and we were getting lucky that the
second "version" was the one being selected a trailing slash broke the
overbroad match and selected the smaller match that was inside the
comment. The new fix was to pin the multi line regex to the start of a
line that way we can still handle newlines in the definition while
ensuring that commented out lines are not included.
The bug was for AGP version in plugins but the fix was applied to all of
the regular expressions in this area of code along with adversarial
units tests to prevent regression.
Note for other contributors https://regex101.com/ was a great resource
for debugging what was happening here.
## 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].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
`MultiPreview` is an abstract class that allows for developers to create
custom preview annotations that can be used to easily create multiple
previews from a single annotation.
Fixes https://github.com/flutter/flutter/issues/166447
This reverts commit cfe6f3d95b3fb1ccf2cf944eab0273efc944bcf3.
The change broke the vscode extension. The extension has been updated in
https://github.com/Dart-Code/Dart-Code/pull/5610 but it is worth keeping
this for a little while longer.
Closes https://github.com/flutter/flutter/issues/74165.
The original issue called for, on Windows, telling `CYGWIN` to use
`=noglob`, to work around some git operation errors that happen when
using non-native Git. There ... was no great way to do this with the
existing codebase without, IMO, adding lots of confusing code.
So, I refactored all the calls of:
- before: `processUtils.<method>(['git', ...args], ...params)`
- after: `git.<method>([...args], ...params)`
... and implicitly add the new environment variables, if
`Platform.isWindows`.
Did some minor test cleanup and process execution cleanup while I was at
it.
reland of https://github.com/flutter/flutter/pull/171927
towards https://github.com/flutter/flutter/issues/171790
Use the content aware hash when downloading engine artifacts. These are
currently produced when changes to DEPs, engine/, or the release file
are changed in a not-seen-before way.
We can eventually remove engine.version being tracked in release
branches as an optimization.
FLUTTER_PREBUILT_ENGINE_VERSION will stay for overriding the
engine.version for testing. Though Cocoon does not need to actually set
it for framework only PRs anymore.
fxies post submit tests for content_hash download:
SHARD=framework_tests SUBSHARD=misc dart --enable-asserts
dev/bots/test.dart
SHARD=tool_host_cross_arch_tests dart --enable-asserts
dev/bots/test.dart
```
╔═╡ERROR https://github.com/flutter/flutter/pull/1╞════════════════════════════════════════════════════════════════════
║ Expected "Flutter Engine Version: 45b085ab2118f30441ae6e2daab4b8eb3e4a063c", but found "Flutter Engine Version: 407c051ec9".
╚═══════════════════════════════════════════════════════════════════════════════
```
```
Expected: contains '45b085ab2118f30441ae6e2daab4b8eb3e4a063c'
Which: does not contain '45b085ab2118f30441ae6e2daab4b8eb3e4a063c'
```
<!-- start_original_pr_link -->
Reverts: flutter/flutter#171927
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: matanlurey
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: Broke the tree, due to naughty tests but too
intensive to fix forward.
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: jtmcdole
<!-- end_original_pr_author -->
<!-- start_reviewers -->
Reviewed By: {matanlurey, chingjun}
<!-- end_reviewers -->
<!-- start_revert_body -->
This change reverts the following previous change:
towards #171790
Use the content aware hash when downloading engine artifacts. These are
currently produced when changes to DEPs, engine/, or the release file
are changed in a not-seen-before way.
We can eventually remove `engine.version` being tracked in release
branches as an optimization.
`FLUTTER_PREBUILT_ENGINE_VERSION` will stay for overriding the
engine.version for testing. Though Cocoon does not need to actually set
it for framework only PRs anymore.
<!-- end_revert_body -->
Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
We already use the baseUri when computing hot reload sources metadata as
it can never be null. The member is changed to be non-nullable to
reflect that.
To be consistent, we also use the baseUri (full url) for a hot restart
when running with the DDC library bundle format.
Related PR: https://github.com/dart-lang/webdev/pull/2650
## 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.
- [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.
towards #171790
Use the content aware hash when downloading engine artifacts. These are
currently produced when changes to DEPs, engine/, or the release file
are changed in a not-seen-before way.
We can eventually remove `engine.version` being tracked in release
branches as an optimization.
`FLUTTER_PREBUILT_ENGINE_VERSION` will stay for overriding the
engine.version for testing. Though Cocoon does not need to actually set
it for framework only PRs anymore.