Adds support for a new --web-header option to flutter run.
Creates a workaround for https://github.com/flutter/flutter/issues/127902
This PR allows adding additional headers for the flutter run web server. This is useful to add headers like Cross-Origin-Embedder-Policy and Cross-Origin-Opener-Policy without the use of a proxy server. These headers are required enable advanced web features. This approach provides flexibility to the developer to make use of the feature as they see fit and is backward-compatible. One tradeoff is that it increases the surface area to support for future changes to the flutter web server.
https://github.com/flutter/flutter/issues/127902 is not fully addressed by this change. The solution for that task will be more opinionated. This PR creates a general-purpose workaround for anyone who needs a solution sooner while the bigger solution is developed.
To avoid analyzer warnings when utf8.encode() will return the more
precise Uint8List type, we use const Utf8Encoder().convert() which
already returns Uint8List
See https://github.com/dart-lang/sdk/issues/52801
This is already handled by pkg:shelf
There is some subtlety with String here, since String.length might not
align with the size in bytes over the wire, depending on the contents
and the encoding
Best to just let pkg:shelf handle it
* Work in progress.
* Some fixes to the command line.
* Bootstrapping works.
* Change kickoff order to maximize concurrency.
* Fix analyzer errors and formatting issues.
* Fix doc comment.
* Added unit tests for some of the web targets.
* Format issue.
* Add an integration test that builds an app to wasm.
* Add a todo for depfiles.
* Formatting.
* Apparently the license header needs to say 2014.
* `file://` URIs confuse dart2wasm on Windows. Just use absolute paths.
* Update unit tests to match new path passing.
* Have a distinct build directory for wasm, and fixes for some upstream changes.
You can now specify a --local-web-sdk flag to point to a wasm_release folder. This will make it so that only artifacts that pertain to the web sdk are overridden to point to the wasm_release folder. Other artifacts (such as impellerc) will pull from the cache, or from the --local-engine path if that is specified.
This also uses precompiled platform kernel files for both ddc and dart2js
* [flutter_tools] Add --dump-info, --no-frequency-based-minification flags
Also some cleanup to named arguments to the buildWeb function
Fixes https://github.com/flutter/flutter/issues/115854
* fix tests
* Migrate packages/flutter_tools/bin
* Fix NPE
* Fix test
* Fix test
* Fix l10n optionalParameters
* Fix ChromeTab nullability
* Fix another type cast error
* Fix another cast error
* Fix another cast error (copied from #110711)
* Fix NPE
* Fix another NPE
* Assert that testDirectory is not null
The flag is true by default so the behavior does not change.
Next steps:
Use the flag for updated debugger module names:
- Frontend server: make the current behavior controlled
by the flag non-conditional
- Frontend server: add more debugging names changes under
the same flag, false by default
- Dwds: make changes required for the new module names.
- Flutter tools: when matching dwds changes roll to flutter,
pass the flag to the frontend server again.
- Cleanup:
- Frontend server: make new behavior default
- Flutter tools: remove uses of the flag.
- Frontend server: remove the flag.
Towards: https://github.com/dart-lang/webdev/issues/1692
Helps: https://github.com/flutter/flutter/issues/106727
* Provide flutter sdk kernel files to dwds launcher instead of dart ones
* Update log test to report all warnings
* Update licences for new files
* Addressed CR comments
* Addressed CR comments
* Don't generate plugin registry in ResidentWebRunner
generateDartPluginRegistry was being set to true unconditionally in
ResidentRunner, bypassing the primary check in
DartPluginRegistrantTarget, and the targetPlatform was not set in that
codepath, bypassing the second after the changes in
https://github.com/flutter/flutter/pull/87991. This caused web hot
restarts to be slower due to doing unnecessary work.
This ensures that generateDartPluginRegistry is false in the
ResidentWebRunner to skip that unnecessary step.
Fixes https://github.com/flutter/flutter/issues/91262
* Formatting
Co-authored-by: Zachary Anderson <zanderso@users.noreply.github.com>
Co-authored-by: Zachary Anderson <zanderso@users.noreply.github.com>
* Flutter_tools for web platform: report error messages with stacks on toolExit
Print error messages and stacks in verbose mode before calling
`throwToolExit` on communication errors to chrome and dwds.
This will help us disagnose CI flakes:
Helps: https://github.com/flutter/flutter/issues/84012
Closes: https://github.com/flutter/flutter/issues/87149
* Added tests
* Extend timeout for testing failure to connect to chrome
* Update rest of chrome tests to await until matching is finished