Adds Navigator.maybeOf to replace calling Navigator.of(context, nullOk: true), and removes the nullOk parameter. Also changes Navigator.of to return a non-nullable value, and removes many (120!) instances of the ! operator, reducing the possible places where a null dereference could occur.
* Move web integration tool tests to web.shard
Web integration tool tests depend on DDC changes in SDK. This change
moves them to a separate shard and subshard so CI bot configurations
can run them separately.
In particular, with will allow running those tests on dart CI flutter
HHH web bot instead of a non-web one, allowing early detection and easy
classification of issues caused by SDK changes as VM- or Web related.
* Enabled verbose mode for flaky web_tool_tests
* fixed local engine crash with --enable-asserts
* Disable failing tests, fix local engine with asserts
* Removed mac web_tool_tests bot
* Addressed CR comments
* Add disabled mac web_tool_tests and disable win web_tool_tests
* Move web integration tool tests to web.shard
Web integration tool tests depend on DDC changes in SDK. This change
moves them to a separate shard and subshard so CI bot configurations
can run them separately.
In particular, with will allow running those tests on dart CI flutter
HHH web bot instead of a non-web one, allowing early detection and easy
classification of issues caused by SDK changes as VM- or Web related.
* Enabled verbose mode for flaky web_tool_tests
* Split out the test changes to be commited first
* Remove references to dart:ui.Window, and point usages to PlatformDispatcher or SingletonFlutterWindow, as appropriate
* remove new test platform dispatchers
* Amend documentation
This reverts ae0a9cb560 and therefore relands #69629.
Additionally, `flutter update-packages --force-upgrade` has been run to update `pubspec.yaml` to resolve the analyze test failures.
For the ease of code reviews, this only includes minimal code from
MetricPoint, GoogleBenchmarksParser, and their unit tests.
See go/flutter-metrics-center-migration for the overall plan.
Enables build_test for Linux. Currently only flutter_gallery has platform directories for the desktop platforms, so this will run only that build, but this will provide an end-to-end build test for Linux.
Other example/test projects can be brought online for Linux in the future just by adding the linux/ directory to the project.
Currently we only have a test that measures if flutter drive can fail. Unfortunately it has been failing for multiple years based on the fact that the error is due to a missing Gradle config.
Add a smoke success test case, and update both tests to use the test API and the tester-device.
Rolls in several fixes to web tooling, including better handling of absolute file imports. Updates to latest vm service to unblock null safety mode query
Co-authored-by: Gary Roumanis <grouma@google.com>
Co-authored-by: Anna Gringauze <annagrin@google.com>
Enables build_test for Windows. Currently only flutter_gallery has platform directories for the desktop platforms, so this will run only that build, but this will provide an end-to-end build test for Windows.
Other example/test projects can be brought online for Windows in the future just by adding the windows/ directory to the project.
Enables build_test for Windows, macOS, and Linux. Currently only
flutter_gallery has platform directories for the desktop platforms, so
this will run only that build, but this will provide an end-to-end build
test for all three desktop platforms.
Once this lands, other example/test projects can be brought online for
desktop platforms in the future just by adding the relevant platform
directories to the project.
These devicelab tests are incredibly flaky. Currently they will build & install the same application 15 times. This causes the temp storage to fill up on android, and has a good chance of flaking on iOS due to install issues.
The change from 3 to 15 increased total test time for 2 -> 12 minutes on iOS, or roughly 5 more test equivalents for every single iOS test. Reduce the iteration count back to 5
Uninstall the app after each run so temp storage does not fill up.
These devicelab tests are incredibly flaky. Currently they will build & install the same application 15 times. This causes the temp storage to fill up on android, and has a good chance of flaking on iOS due to install issues.
The change from 3 to 15 increased total test time for 2 -> 12 minutes on iOS, or roughly 5 more test equivalents for every single iOS test. Reduce the iteration count back to 5
Uninstall the app after each run so temp storage does not fill up.
Fixes#67370
By running most of these executions through flutter, we get the benefit of the flutter error handling and precaching. IN the test where this is not feasible, call pre-cache directly.
- - When I added notification of key events before processing them as text, it made it so that shortcut key bindings like the spacebar would prevent spaces from being inserted into text fields, which is obviously not desirable (and so that change was reverted). At the same time, we do want to make it possible to override key events so that they can do things like intercept a tab key or arrow keys that change the focus.
This PR changes the behavior of the Shortcuts widget so that if it has a shortcut defined, but no action is bound to the intent, then instead of responding that the key is "handled", it responds as if nothing handled it. This allows the engine to continue to process the key as text entry.
This PR includes:
- Modification of the callback type for key handlers to return a KeyEventResult instead of a bool, so that we can return more information (i.e. the extra state of "stop propagation").
- Modification of the ActionDispatcher.invokeAction contract to require that Action.isEnabled return true before calling it. It will now assert if the action isn't enabled when invokeAction is called. This is to allow optimization of the number of calls to isEnabled, since the shortcuts widget now wants to know if the action was enabled before deciding to either handle the key or to return ignored.
- Modification to ShortcutManager.handleKeypress to return KeyEventResult.ignored for keys which don't have an enabled action associated with them.
- Adds an attribute to DoNothingAction that allows it to mark a key as not handled, even though it does have an action associated with it. This will allow disabling of a shortcut for a subtree.
Remove devicelab specific code for shutting down gradle daemon, add --android-gradle-daemon option to build/run/drive`. Avoids need for un-tested devicelab specific handler. There are also some feature requests for this, so 2 birds one stone.
Example:
flutter build apk --no-android-gradle-daemon will pass --no-daemon on to gradle
Remove devicelab specific code for shutting down gradle daemon, add --android-gradle-daemon option to build/run/drive`. Avoids need for un-tested devicelab specific handler. There are also some feature requests for this, so 2 birds one stone.
Example:
flutter build apk --no-android-gradle-daemon will pass --no-daemon on to gradle
These androidx migration tests require downloading firebase, which is a large library with a number of dependencies - this causes frequent enough flakes.
AndroidX migration is ~2 years in the past, and while it would be nice to confirm this still works, ideally that would be done in a reduced manner.
- run_without_leak_tests: have been disabled for months
- build_benchmark: the tooling work here is mostly done and we're not tracking further improvements, free up more devicelab capacity
- system_debug_ios: does not work post iOS13
- mac_enable_twc: not adding more mac tests to devicelab
- hello_world_start_up: disabled
Any tests that we think will be valuable in the future can be resurrected from the git history.
--use-application-binary allows running with an already built APK. This can be useful for speeding up CI test cases, or in our case eventually supporting some sort of build server. Demonstrate that this works by updating the old gallery test to use it. Fixes#56604
Co-authored-by: Jenn Magder <magder@google.com>
* Fix docset generation.
* Remove checks to be able to test.
* More logging
* More logging
* More logging.
* more logging.
* More logging.
* Add flags to firebase command.
* Re-enable docset generation.
* Disable firebase step.
* Comment docset to speed up validations.
* Re-enable docset.
* Add back condition to prevent uploading docs from PRs.
A change which sped up hot restart locally caused many of the devicelab measures to regress. I think this is because we do not measure when the isolate is actually "ready", so starting a reload or restart prematurely can cause time spent doing initialization to be registered as part of the reload operation.
A fix for this would be to have the framework include some sort of "initialization complete" event ... but it is not clear what the correct trigger would be. Perhaps after the first frame is successfully registered?
(9a3a0dc caused the benchmark regression - possibly since we spend less time syncing files now so we start the restart earlier)
The train command does nothing and was originally added to provide a no-output default for generating app-jit snapshots. The inject-plugins command is only for a repo-only analysis check, which is not necessary since we regenerate during pub get.
#29805
* adding tests that uses integration_test (e2e) package to flutter
* change the package name for the import
* fix licenses. fix README commands. add links
* adding dependency change auto generated by the tool
* more analyzer error fixes
This converts the packages/flutter/test/services directory to NNBD, now that the services package is converted.
I changed the signature of checkMessageHandler and checkMockMessageHandler on BinaryMessenger to take a nullable handler, since the tests wanted to check to make sure a handler wasn't set, and that functionality no longer works if the handler is non-nullable.
Add integration tests to verify that ddc and dart2js can be built and run in sound mode. Updates dart2js compilation to insert a language version comment into the generated entrypoint if necessary.
dart-lang/sdk#42253
Check in linux and windows platform code now that they are stable, so that we could use in devicelab in the future. Removed the ICO from the windows example to avoid analysis check, and since it won't be important for benchmarking or UI tests
* [Docs] [Icons] Updating dart doc styles to recognize more styles of icons. All the 4 icon styles we support have to be pulled from 4 individual web fonts when we show the html page for api docs.
* Better documentation and that special awful case.
* Couple more places to remove.
Registering the service worker immediately after the documented has loaded may cause SW initialization to compete with framework initialization. It was recommended to us that we defer the service worker setup until after the framework is done with setup, which should be sometime after the first frame.
To implement this, I augmented the binding setup to dispatch an event on the document after the binding has initialized. I don't see any obvious risks with this setup.
Fixes#66066
Based on feedback from various desktop developers, and to be consistent between the defaults and the sample code, this PR switches the default for visual density in desktop themes to be compact instead of standard.
It also removes the same setting from the sample code generated by "flutter create" because it is no longer needed now that it is the default.
Updates all null safe dependencies to versions that allow 2.10 stable and 2.11 dev releases.
Also updates flutter_goldens and flutter_goldens_client to allow 2.11 dev.
Currently an invocation of flutter/dart will always attempt to acquire a lock. This can pose problems for tools that attempt to run multiple dart/flutter instances.
Instead update the lock logic (on Linux/macOS) so that we only attempt to acquire it if an update/snapshot needs to be performed. To avoid repeatedly performing downloads/snapshots if multiple flutter/dart invocations are fired off concurrently when an update needs to be performed, do a second check of the download/snapshot condition after the lock is released.
Additionally, moves all of the building/debug output to stderr on both the bash and batch scripts. This allows machine mode consumption of the tool to ignore needing to parse/handle the rebuild messages.
We've gotten feedback that the VelocityTracker change was disruptive, though it did not break any of the flutter framework or customer tests. In order to make the change non-breaking, PointerDeviceKind parameter can be made optional.
Nevertheless, this parameter should be provided so that the existing touch handlers can use more accurate gestures on mouse/stylus inputs, so we can encourage this by deprecating the default constructor and pointing users towards the VelocityTracker.withKind constructor that takes a non-optional parameter
PR #65873 enabled DDS for non-web Flutter applications. This change
surfaced a bug where DDS would not send ServiceRegistered events to VM
service clients when they subscribed to the Service stream. This would
cause tools and tests that rely on these events (e.g., hot reload in
VSCode) to fail.
Fixes#66038.
This fixes a problem where the character field of the RawKeyEvent was not being set at all for non-Android platforms.
I also updated the key maps, and corrected a problem with the Windows key map where the backquote character wasn't correctly mapped.
Port the deprecated settings devicelab test to tool integration shard. Tests that apps can be built using the deprecated android/settings.gradle file.
Part of #65790
Currently these tests are taking CI time without providing any value, because there is no verification that network connectivity is avoided. This is better covered by a unit test that verifies that --offline is passed to pub.
Currently the framework uses fairly large "hit slop" values to disambiguate taps from drags/pans. This makes sense on touch devices where the interaction is not very precise, on mice however it can feel as if the UI is lagging. This is immediately noticeable on our infra dashboard, where it takes almost half of a grid square of drag before the actual drag kicks in.
One potential solution is to always use smaller constants depending on whether the interaction is mouse or touch based. The only reasonable choice is to use the pointer device kind and not target platform - same platform can have different input sources. This requires exposing the pointer device kind in a few new places in several of the gesture detectors, and using the enum to compute the correct hit slop from an expanded set of constants.
This almost works, however there are a few places (notably ListViews) which uses the touch hit slop as a default value in scroll physics. It does not seem like it will be easy to disambiguate a user provided scroll physics constant from the default and/or adjust it somehow - this might require significant changes to scroll physics which I have left out of this PR.
This PR does not adjust:
kTouchSlop used in scroll_physics.dart's minFlingDistance
kTouchSlop used in PrimaryPointerGestureRecognizer/LongPressGestureRecognizer
Previously, the CPU/GPU measurement using gauge happened after the
driver test is done. Now, the measurement happens within the driver
test. So we need to properly increase the delay and duration to get a
comparable reading as the old gauge measurements.
* synthetic packages by default in gen_l10n tool
* Refactor default path for synthetic package
* Remove unused import
* Code cleanup
* Further improvements to help text
* Refactor synthetic package path
* Remove newlines
* Test cleanup
* clean up logic in inputs and outputs list function
* Update l10n.yaml usage
* only add option if value is non-null
* Update stocks app as proof of concept for synthetic package usage
* Address nits
* print pubspec contents
* add print statements
* Do not allow null value for useSyntheticPackage
* +
* +
* +
* +
* Cleanup
* Add test
* Fix text
* Dont parse pubspec directly
* Test using context
* WIP: generate synthetic packages on pub get -- needs tests
* Allow null value
* Update null handling
* Refactor to properly handle null case
* Fix yamlMap condition
* Fix yaml node for real
* WIP: struggling to write tests
* WIP - take absolute path as an option
* Add tests
* Use environment project directory for synthetic package generation pathway
* Fix typo
* Improve help text
* Update defaults
* Remove unauthorized path import
* Fix pathing issues at synthetic package generation
* Fix typo in test
* Use path.join so projectDir matches up based on OS
* Fix Windows pathing in test
* Remove unnecessary replaceApp code for projectDir.path
* Use globals.fs.currentDirectory.path in resident_runner_test.dart
* Fix merge conflict
* Add test to ensure that synthetic package is generated on pub get
* Fix resident_runner_test.dart tests
* Fix tests
* Use package:file instead of dart:io
* WIP - exploration
* Remove synthetic package use from stocks example
* Update integration test to not use synthetic packages
* Remove trailing whitespace
* flutter pub get runs synth package generation
* Remove more print statements
* Add license header
* WIP - minimally working pub.get
* Use own MockBuildSystem
* Modify test and implementation to be a little cleaner
* Fix flutter pub get invocation
* Use synthetic packages in stocks app
* Revert "Use synthetic packages in stocks app"
This reverts commit 45bf24903c.
* Add environment and buildSystem params to flutter test
* Address code review feedback
* +
* Isolate codegen into its own API
* Fix imports
* Slight refactor
* Add one more test for no l10n.yaml file
* Remove unneeded mock class and import in pub_get_test.dart
* More code review feedback
* Remove unnecessary imports
* Remove `return await`s that I missed
* use arrow functions instead
To allow tests to begin migrating to null safety, sound null safety needs to be disabled. Also removes the experiment flag that is unnecessary since the framework is on the SDK allowlist.
This standardizes the handling of nullability for the LogicalKeyboardKey.keyLabel and RawKeyEventData.keyLabel accessors so that they are non-nullable, but can be empty.
Before this change, the keyLabel could be either null or an empty string to indicate that there wasn't a label, which makes it harder to test for, since both need to be checked for. Since an empty string is sufficient, there is no need for it to be nullable.
Also, in raw_keyboard.dart, the web and Windows implementations wouldn't accept null values for parameters in the Map coming from the message, but tests were supplying null for some of them. This makes web and Windows creation of events match the other platforms, and makes the migration of tests to non-nullability easier.
Like Android/iOS, only enable --null-assertions if asked. Previously this was enabled by default for web, but in general this has proved to be too breaking to enable by default.
#61042