Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
3ecac303
Unverified
Commit
3ecac303
authored
Oct 27, 2020
by
Dan Field
Committed by
GitHub
Oct 27, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Driver vm service (#68654)
Migrate flutter_driver to use package:vm_service
parent
e949ff54
Changes
34
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
749 additions
and
1155 deletions
+749
-1155
pubspec.yaml
dev/benchmarks/complex_layout/pubspec.yaml
+8
-10
pubspec.yaml
dev/benchmarks/macrobenchmarks/pubspec.yaml
+8
-10
pubspec.yaml
dev/benchmarks/platform_views_layout/pubspec.yaml
+8
-10
pubspec.yaml
...rks/platform_views_layout_hybrid_composition/pubspec.yaml
+8
-10
pubspec.yaml
dev/benchmarks/test_apps/stocks/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/android_semantics_testing/pubspec.yaml
+1
-3
pubspec.yaml
...id_splash_screens/splash_screen_kitchen_sink/pubspec.yaml
+1
-3
pubspec.yaml
...id_splash_screens/splash_screen_trans_rotate/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/android_views/pubspec.yaml
+8
-10
pubspec.yaml
dev/integration_tests/channels/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/external_ui/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/flavors/pubspec.yaml
+1
-3
pubspec.yaml
...gration_tests/flutter_driver_screenshot_test/pubspec.yaml
+8
-10
pubspec.yaml
dev/integration_tests/flutter_gallery/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/hybrid_android_views/pubspec.yaml
+8
-10
pubspec.yaml
dev/integration_tests/ios_platform_view_tests/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/platform_interaction/pubspec.yaml
+1
-3
pubspec.yaml
dev/integration_tests/release_smoke_test/pubspec.yaml
+2
-5
pubspec.yaml
dev/integration_tests/ui/pubspec.yaml
+1
-3
license_check_test.dart
dev/integration_tests/ui/test_driver/license_check_test.dart
+0
-43
pubspec.yaml
dev/integration_tests/web_e2e_tests/pubspec.yaml
+1
-3
pubspec.yaml
examples/hello_world/pubspec.yaml
+1
-3
pubspec.yaml
examples/platform_channel/pubspec.yaml
+1
-3
pubspec.yaml
examples/platform_channel_swift/pubspec.yaml
+1
-3
pubspec.yaml
packages/_flutter_web_build_script/pubspec.yaml
+2
-2
driver.dart
packages/flutter_driver/lib/src/driver/driver.dart
+33
-37
vmservice_driver.dart
packages/flutter_driver/lib/src/driver/vmservice_driver.dart
+118
-241
web_driver.dart
packages/flutter_driver/lib/src/driver/web_driver.dart
+3
-3
pubspec.yaml
packages/flutter_driver/pubspec.yaml
+5
-7
common.dart
packages/flutter_driver/test/common.dart
+4
-0
flutter_driver_test.dart
packages/flutter_driver/test/flutter_driver_test.dart
+502
-691
find_test.dart
packages/flutter_driver/test/src/real_tests/find_test.dart
+4
-5
pubspec.yaml
packages/flutter_tools/pubspec.yaml
+2
-2
pubspec.yaml
packages/fuchsia_remote_debug_protocol/pubspec.yaml
+3
-4
No files found.
dev/benchmarks/complex_layout/pubspec.yaml
View file @
3ecac303
...
...
@@ -19,27 +19,20 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
collection
:
1.15.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
...
...
@@ -50,6 +43,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
clock
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -70,17 +64,21 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -90,4 +88,4 @@ flutter:
-
packages/flutter_gallery_assets/people/square/ali.png
-
packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
# PUBSPEC CHECKSUM:
4929
# PUBSPEC CHECKSUM:
6324
dev/benchmarks/macrobenchmarks/pubspec.yaml
View file @
3ecac303
...
...
@@ -19,27 +19,20 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
collection
:
1.15.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
...
...
@@ -50,6 +43,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
clock
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -70,17 +64,21 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -214,4 +212,4 @@ flutter:
fonts
:
-
asset
:
packages/flutter_gallery_assets/fonts/GalleryIcons.ttf
# PUBSPEC CHECKSUM:
06f9
# PUBSPEC CHECKSUM:
f9f4
dev/benchmarks/platform_views_layout/pubspec.yaml
View file @
3ecac303
...
...
@@ -18,27 +18,20 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
collection
:
1.15.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
...
...
@@ -48,6 +41,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
clock
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -68,17 +62,21 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -88,4 +86,4 @@ flutter:
-
packages/flutter_gallery_assets/people/square/ali.png
-
packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
# PUBSPEC CHECKSUM:
2b81
# PUBSPEC CHECKSUM:
977c
dev/benchmarks/platform_views_layout_hybrid_composition/pubspec.yaml
View file @
3ecac303
...
...
@@ -18,27 +18,20 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
collection
:
1.15.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
...
...
@@ -48,6 +41,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
clock
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -68,17 +62,21 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -88,4 +86,4 @@ flutter:
-
packages/flutter_gallery_assets/people/square/ali.png
-
packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
# PUBSPEC CHECKSUM:
2b81
# PUBSPEC CHECKSUM:
977c
dev/benchmarks/test_apps/stocks/pubspec.yaml
View file @
3ecac303
...
...
@@ -61,7 +61,6 @@ dev_dependencies:
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
http_multi_server
:
2.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -79,7 +78,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -87,4 +85,4 @@ dev_dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
0d05
# PUBSPEC CHECKSUM:
a800
dev/integration_tests/android_semantics_testing/pubspec.yaml
View file @
3ecac303
...
...
@@ -31,7 +31,6 @@ dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -61,7 +60,6 @@ dependencies:
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -71,4 +69,4 @@ dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
3a76
# PUBSPEC CHECKSUM:
5c71
dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/pubspec.yaml
View file @
3ecac303
...
...
@@ -64,7 +64,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -91,7 +90,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -136,4 +134,4 @@ flutter:
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
# PUBSPEC CHECKSUM:
e284
# PUBSPEC CHECKSUM:
4c7f
dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/pubspec.yaml
View file @
3ecac303
...
...
@@ -64,7 +64,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -91,7 +90,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -136,4 +134,4 @@ flutter:
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
# PUBSPEC CHECKSUM:
e284
# PUBSPEC CHECKSUM:
4c7f
dev/integration_tests/android_views/pubspec.yaml
View file @
3ecac303
...
...
@@ -19,13 +19,11 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -35,16 +33,11 @@ dependencies:
platform
:
3.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
plugin_platform_interface
:
1.0.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
process
:
4.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
xdg_directories
:
0.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -55,6 +48,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
clock
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -75,21 +69,25 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
d4d0
# PUBSPEC CHECKSUM:
becb
dev/integration_tests/channels/pubspec.yaml
View file @
3ecac303
...
...
@@ -33,7 +33,6 @@ dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -63,7 +62,6 @@ dependencies:
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -73,4 +71,4 @@ dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
3a76
# PUBSPEC CHECKSUM:
5c71
dev/integration_tests/external_ui/pubspec.yaml
View file @
3ecac303
...
...
@@ -33,7 +33,6 @@ dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -63,7 +62,6 @@ dependencies:
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -73,4 +71,4 @@ dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
3a76
# PUBSPEC CHECKSUM:
5c71
dev/integration_tests/flavors/pubspec.yaml
View file @
3ecac303
...
...
@@ -33,7 +33,6 @@ dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -63,7 +62,6 @@ dependencies:
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -73,4 +71,4 @@ dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
3a76
# PUBSPEC CHECKSUM:
5c71
dev/integration_tests/flutter_driver_screenshot_test/pubspec.yaml
View file @
3ecac303
...
...
@@ -14,7 +14,6 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
collection
:
1.15.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -22,21 +21,15 @@ dependencies:
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
device_info_platform_interface
:
1.0.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
plugin_platform_interface
:
1.0.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
...
...
@@ -44,6 +37,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
coverage
:
0.14.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -62,17 +56,21 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -81,4 +79,4 @@ flutter:
assets
:
-
assets/
# PUBSPEC CHECKSUM:
d5a7
# PUBSPEC CHECKSUM:
e9a2
dev/integration_tests/flutter_gallery/pubspec.yaml
View file @
3ecac303
...
...
@@ -73,7 +73,6 @@ dev_dependencies:
http_multi_server
:
2.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -98,7 +97,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -276,4 +274,4 @@ flutter:
-
asset
:
packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Regular.ttf
-
asset
:
packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Light.ttf
# PUBSPEC CHECKSUM: 6
72e
# PUBSPEC CHECKSUM: 6
c29
dev/integration_tests/hybrid_android_views/pubspec.yaml
View file @
3ecac303
...
...
@@ -19,13 +19,11 @@ dependencies:
archive
:
2.0.13
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
args
:
1.6.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
characters
:
1.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
charcode
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -35,16 +33,11 @@ dependencies:
platform
:
3.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
plugin_platform_interface
:
1.0.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
process
:
4.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
xdg_directories
:
0.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -55,6 +48,7 @@ dev_dependencies:
_fe_analyzer_shared
:
7.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
analyzer
:
0.39.17
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
async
:
2.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
boolean_selector
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
cli_util
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
clock
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -75,21 +69,25 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_web_socket
:
0.2.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
string_scanner
:
1.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
d4d0
# PUBSPEC CHECKSUM:
becb
dev/integration_tests/ios_platform_view_tests/pubspec.yaml
View file @
3ecac303
...
...
@@ -43,7 +43,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -70,7 +69,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -84,4 +82,4 @@ flutter:
# the material Icons class.
uses-material-design
:
true
# PUBSPEC CHECKSUM:
a8e1
# PUBSPEC CHECKSUM:
b4dc
dev/integration_tests/platform_interaction/pubspec.yaml
View file @
3ecac303
...
...
@@ -33,7 +33,6 @@ dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -63,7 +62,6 @@ dependencies:
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -73,4 +71,4 @@ dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
3a76
# PUBSPEC CHECKSUM:
5c71
dev/integration_tests/release_smoke_test/pubspec.yaml
View file @
3ecac303
...
...
@@ -30,10 +30,8 @@ dev_dependencies:
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
fake_async
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
file
:
6.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -41,8 +39,7 @@ dev_dependencies:
sync_http
:
0.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
term_glyph
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
# PUBSPEC CHECKSUM:
6126
# PUBSPEC CHECKSUM:
a26a
dev/integration_tests/ui/pubspec.yaml
View file @
3ecac303
...
...
@@ -34,7 +34,6 @@ dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -64,7 +63,6 @@ dependencies:
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -83,4 +81,4 @@ dev_dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
5e11
# PUBSPEC CHECKSUM:
820c
dev/integration_tests/ui/test_driver/license_check_test.dart
View file @
3ecac303
...
...
@@ -2,13 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
'dart:async'
;
import
'dart:io'
;
import
'package:flutter_driver/flutter_driver.dart'
;
import
'package:path/path.dart'
as
path
;
import
'package:test/test.dart'
hide
TypeMatcher
,
isInstanceOf
;
import
'package:vm_service_client/vm_service_client.dart'
;
// Connect and disconnect from the empty app.
void
main
(
)
{
...
...
@@ -23,19 +21,15 @@ void main() {
group
(
'License file check'
,
()
{
FlutterDriver
driver
;
IsolatesWorkaround
workaround
;
setUpAll
(()
async
{
driver
=
await
FlutterDriver
.
connect
();
workaround
=
IsolatesWorkaround
(
driver
);
await
workaround
.
resumeIsolates
();
await
driver
.
waitUntilFirstFrameRasterized
();
});
tearDownAll
(()
async
{
if
(
driver
!=
null
)
{
await
driver
.
close
();
await
workaround
.
tearDown
();
}
});
...
...
@@ -57,40 +51,3 @@ void main() {
});
});
}
/// Workaround for isolates being paused by driver tests.
/// https://github.com/flutter/flutter/issues/24703
class
IsolatesWorkaround
{
IsolatesWorkaround
(
this
.
_driver
);
final
FlutterDriver
_driver
;
StreamSubscription
<
VMIsolateRef
>
_streamSubscription
;
Future
<
void
>
resumeIsolates
()
async
{
final
VM
vm
=
await
_driver
.
serviceClient
.
getVM
();
// Resume any paused isolate
for
(
final
VMIsolateRef
isolateRef
in
vm
.
isolates
)
{
final
VMIsolate
isolate
=
await
isolateRef
.
load
();
if
(
isolate
.
isPaused
)
{
isolate
.
resume
();
}
}
if
(
_streamSubscription
!=
null
)
{
return
;
}
_streamSubscription
=
_driver
.
serviceClient
.
onIsolateRunnable
.
asBroadcastStream
()
.
listen
((
VMIsolateRef
isolateRef
)
async
{
final
VMIsolate
isolate
=
await
isolateRef
.
load
();
if
(
isolate
.
isPaused
)
{
isolate
.
resume
();
}
});
}
Future
<
void
>
tearDown
()
async
{
if
(
_streamSubscription
!=
null
)
{
await
_streamSubscription
.
cancel
();
}
}
}
dev/integration_tests/web_e2e_tests/pubspec.yaml
View file @
3ecac303
...
...
@@ -44,7 +44,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -71,11 +70,10 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
# PUBSPEC CHECKSUM:
c598
# PUBSPEC CHECKSUM:
7093
examples/hello_world/pubspec.yaml
View file @
3ecac303
...
...
@@ -42,7 +42,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -69,11 +68,10 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
# PUBSPEC CHECKSUM:
a8e1
# PUBSPEC CHECKSUM:
b4dc
examples/platform_channel/pubspec.yaml
View file @
3ecac303
...
...
@@ -42,7 +42,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -69,7 +68,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -79,4 +77,4 @@ dev_dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
a8e1
# PUBSPEC CHECKSUM:
b4dc
examples/platform_channel_swift/pubspec.yaml
View file @
3ecac303
...
...
@@ -42,7 +42,6 @@ dev_dependencies:
http_parser
:
3.1.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
io
:
0.3.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
js
:
0.6.3-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
logging
:
0.11.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
mime
:
0.9.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -69,7 +68,6 @@ dev_dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -79,4 +77,4 @@ dev_dependencies:
flutter
:
uses-material-design
:
true
# PUBSPEC CHECKSUM:
a8e1
# PUBSPEC CHECKSUM:
b4dc
packages/_flutter_web_build_script/pubspec.yaml
View file @
3ecac303
...
...
@@ -66,7 +66,7 @@ dependencies:
protobuf
:
1.0.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pubspec_parse
:
0.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
quiver
:
2.1.
3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
quiver
:
2.1.
4+1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
scratch_space
:
0.0.4+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -93,4 +93,4 @@ dartdoc:
# Exclude this package from the hosted API docs.
nodoc
:
true
# PUBSPEC CHECKSUM:
3d88
# PUBSPEC CHECKSUM:
dce5
packages/flutter_driver/lib/src/driver/driver.dart
View file @
3ecac303
...
...
@@ -6,9 +6,8 @@
import
'dart:io'
;
import
'package:json_rpc_2/json_rpc_2.dart'
as
rpc
;
import
'package:meta/meta.dart'
;
import
'package:vm_service
_client/vm_service_client.dart'
;
import
'package:vm_service
/vm_service.dart'
as
vms
;
import
'package:webdriver/async_io.dart'
as
async_io
;
import
'../common/diagnostics_tree.dart'
;
...
...
@@ -92,53 +91,50 @@ abstract class FlutterDriver {
FlutterDriver
();
/// Creates a driver that uses a connection provided by either the combination
/// of [webConnection], or the combination of [serviceClient]
,
///
[peer] and [appIsolate]
/// of [webConnection], or the combination of [serviceClient]
and [appIsolate]
///
for the VM.
@visibleForTesting
factory
FlutterDriver
.
connectedTo
({
FlutterWebConnection
webConnection
,
VMServiceClient
serviceClient
,
rpc
.
Peer
peer
,
VMIsolate
appIsolate
,
vms
.
VmService
serviceClient
,
vms
.
Isolate
appIsolate
,
})
{
if
(
webConnection
!=
null
)
{
return
WebFlutterDriver
.
connectedTo
(
webConnection
);
}
return
VMServiceFlutterDriver
.
connectedTo
(
serviceClient
,
peer
,
appIsolate
);
return
VMServiceFlutterDriver
.
connectedTo
(
serviceClient
,
appIsolate
);
}
/// Connects to a Flutter application.
///
/// Resumes the application if it is currently paused (e.g. at a breakpoint).
///
/// `dartVmServiceUrl` is the URL to Dart observatory (a.k.a. VM service). If
/// not specified, the URL specified by the `VM_SERVICE_URL` environment
/// variable is used. One or the other must be specified.
/// The `dartVmServiceUrl` parameter is the URL to Dart observatory
/// (a.k.a. VM service). If not specified, the URL specified by the
/// `VM_SERVICE_URL` environment variable is used. One or the other must be
/// specified.
///
///
`printCommunication` determines whether the command communication between
/// the test and the app should be printed to stdout.
///
The `printCommunication` parameter determines whether the command
///
communication between
the test and the app should be printed to stdout.
///
/// `logCommunicationToFile` determines whether the command communication
/// between the test and the app should be logged to `flutter_driver_commands.log`.
/// The `logCommunicationToFile` parameter determines whether the command
/// communication between the test and the app should be logged to
/// `flutter_driver_commands.log`.
///
///
`isolateNumber` determines the specific isolate to connect to.
/// If this is left as `null`, will connect to the first isolate found
///
The `isolateNumber` parameter determines the specific isolate to connect
///
to.
If this is left as `null`, will connect to the first isolate found
/// running on `dartVmServiceUrl`.
///
///
`fuchsiaModuleTarget` specifies the pattern for determining which mod to
///
control. When running on a Fuchsia device, either this or the environment
///
variable `FUCHSIA_MODULE_TARGET` must be set (the environment variable is
/// treated as a substring pattern). This field will be ignored if
///
The `fuchsiaModuleTarget` parameter specifies the pattern for determining
///
which mod to control. When running on a Fuchsia device, either this or the
///
environment variable `FUCHSIA_MODULE_TARGET` must be set (the environment
///
variable is
treated as a substring pattern). This field will be ignored if
/// `isolateNumber` is set, as this is already enough information to connect
/// to an isolate.
/// to an isolate.
This parameter is ignored on non-fuchsia devices.
///
/// `headers` optionally specifies HTTP headers to be included in the
/// [WebSocket] connection. This is only used for [VMServiceFlutterDriver]
/// connections.
///
/// `browser` specifies which FlutterDriver implementation to use. If not
/// speicifed or set to false, [VMServiceFlutterDriver] implementation
/// will be used. Otherwise, [WebFlutterDriver] implementation will be used.
/// The `headers` parameter optionally specifies HTTP headers to be included
/// in the [WebSocket] connection. This is only used for
/// [VMServiceFlutterDriver] connections.
///
/// The return value is a future. This method never times out, though it may
/// fail (completing with an error). A timeout can be applied by the caller
...
...
@@ -156,20 +152,20 @@ abstract class FlutterDriver {
return
WebFlutterDriver
.
connectWeb
(
hostUrl:
dartVmServiceUrl
,
timeout:
timeout
);
}
return
VMServiceFlutterDriver
.
connect
(
dartVmServiceUrl:
dartVmServiceUrl
,
printCommunication:
printCommunication
,
logCommunicationToFile:
logCommunicationToFile
,
isolateNumber:
isolateNumber
,
fuchsiaModuleTarget:
fuchsiaModuleTarget
,
headers:
headers
,
dartVmServiceUrl:
dartVmServiceUrl
,
printCommunication:
printCommunication
,
logCommunicationToFile:
logCommunicationToFile
,
isolateNumber:
isolateNumber
,
fuchsiaModuleTarget:
fuchsiaModuleTarget
,
headers:
headers
,
);
}
/// Getter of appIsolate.
VM
Isolate
get
appIsolate
=>
throw
UnimplementedError
();
vms
.
Isolate
get
appIsolate
=>
throw
UnimplementedError
();
/// Getter of serviceClient.
VMServiceClient
get
serviceClient
=>
throw
UnimplementedError
();
vms
.
VmService
get
serviceClient
=>
throw
UnimplementedError
();
/// Getter of webDriver.
async_io
.
WebDriver
get
webDriver
=>
throw
UnimplementedError
();
...
...
packages/flutter_driver/lib/src/driver/vmservice_driver.dart
View file @
3ecac303
...
...
@@ -10,11 +10,9 @@ import 'dart:io';
import
'package:file/file.dart'
as
f
;
import
'package:fuchsia_remote_debug_protocol/fuchsia_remote_debug_protocol.dart'
as
fuchsia
;
import
'package:json_rpc_2/json_rpc_2.dart'
as
rpc
;
import
'package:meta/meta.dart'
;
import
'package:path/path.dart'
as
p
;
import
'package:vm_service_client/vm_service_client.dart'
;
import
'package:web_socket_channel/io.dart'
;
import
'package:vm_service/vm_service.dart'
as
vms
;
import
'package:webdriver/async_io.dart'
as
async_io
;
import
'../../flutter_driver.dart'
;
...
...
@@ -29,16 +27,15 @@ import 'timeline.dart';
/// An implementation of the Flutter Driver over the vmservice protocol.
class
VMServiceFlutterDriver
extends
FlutterDriver
{
/// Creates a driver that uses a connection provided by the given
/// [serviceClient]
, [_peer]
and [appIsolate].
/// [serviceClient] and [appIsolate].
VMServiceFlutterDriver
.
connectedTo
(
this
.
_serviceClient
,
this
.
_peer
,
this
.
_appIsolate
,
{
bool
printCommunication
=
false
,
bool
logCommunicationToFile
=
true
,
})
:
_printCommunication
=
printCommunication
,
_logCommunicationToFile
=
logCommunicationToFile
,
_driverId
=
_nextDriverId
++;
this
.
_serviceClient
,
this
.
_appIsolate
,
{
bool
printCommunication
=
false
,
bool
logCommunicationToFile
=
true
,
})
:
_printCommunication
=
printCommunication
,
_logCommunicationToFile
=
logCommunicationToFile
,
_driverId
=
_nextDriverId
++;
/// Connects to a Flutter application.
///
...
...
@@ -66,14 +63,15 @@ class VMServiceFlutterDriver extends FlutterDriver {
if
(
fuchsiaModuleTarget
==
null
)
{
throw
DriverError
(
'No Fuchsia module target has been specified.
\n
'
'Please make sure to specify the FUCHSIA_MODULE_TARGET '
'environment variable.'
'Please make sure to specify the FUCHSIA_MODULE_TARGET '
'environment variable.'
);
}
final
fuchsia
.
FuchsiaRemoteConnection
fuchsiaConnection
=
await
FuchsiaCompat
.
connect
();
final
List
<
fuchsia
.
IsolateRef
>
refs
=
await
fuchsiaConnection
.
getMainIsolatesByPattern
(
fuchsiaModuleTarget
);
final
fuchsia
.
FuchsiaRemoteConnection
fuchsiaConnection
=
await
FuchsiaCompat
.
connect
();
final
List
<
fuchsia
.
IsolateRef
>
refs
=
await
fuchsiaConnection
.
getMainIsolatesByPattern
(
fuchsiaModuleTarget
);
if
(
refs
.
isEmpty
)
{
throw
DriverError
(
'Failed to get any isolate refs!'
);
}
final
fuchsia
.
IsolateRef
ref
=
refs
.
first
;
isolateNumber
=
ref
.
number
;
dartVmServiceUrl
=
ref
.
dartVm
.
uri
.
toString
();
...
...
@@ -86,21 +84,19 @@ class VMServiceFlutterDriver extends FlutterDriver {
if
(
dartVmServiceUrl
==
null
)
{
throw
DriverError
(
'Could not determine URL to connect to application.
\n
'
'Either the VM_SERVICE_URL environment variable should be set, or an explicit '
'URL should be provided to the FlutterDriver.connect() method.'
'Either the VM_SERVICE_URL environment variable should be set, or an explicit '
'URL should be provided to the FlutterDriver.connect() method.'
);
}
// Connect to Dart VM services
_log
(
'Connecting to Flutter application at
$dartVmServiceUrl
'
);
final
VMServiceClientConnection
connection
=
await
vmServiceConnectFunction
(
dartVmServiceUrl
,
headers:
headers
);
final
VMServiceClient
client
=
connection
.
client
;
final
vms
.
VmService
client
=
await
vmServiceConnectFunction
(
dartVmServiceUrl
,
headers
);
Future
<
VM
IsolateRef
>
_waitForRootIsolate
()
async
{
bool
_checkIsolate
(
VMIsolateRef
ref
)
=>
ref
.
number
==
isolateNumber
;
Future
<
vms
.
IsolateRef
>
_waitForRootIsolate
()
async
{
bool
_checkIsolate
(
vms
.
IsolateRef
ref
)
=>
ref
.
number
==
isolateNumber
.
toString
()
;
while
(
true
)
{
final
VM
vm
=
await
client
.
getVM
();
final
vms
.
VM
vm
=
await
client
.
getVM
();
if
(
vm
.
isolates
.
isEmpty
||
(
isolateNumber
!=
null
&&
!
vm
.
isolates
.
any
(
_checkIsolate
)))
{
await
Future
<
void
>.
delayed
(
_kPauseBetweenReconnectAttempts
);
continue
;
...
...
@@ -111,7 +107,7 @@ class VMServiceFlutterDriver extends FlutterDriver {
}
}
final
VMIsolateRef
isolateRef
=
await
_warnIfSlow
<
VM
IsolateRef
>(
final
vms
.
IsolateRef
isolateRef
=
await
_warnIfSlow
<
vms
.
IsolateRef
>(
future:
_waitForRootIsolate
(),
timeout:
kUnusuallyLongTimeout
,
message:
isolateNumber
==
null
...
...
@@ -119,60 +115,42 @@ class VMServiceFlutterDriver extends FlutterDriver {
:
'Isolate
$isolateNumber
is taking an unusually long time to start.'
,
);
_log
(
'Isolate found with number:
${isolateRef.number}
'
);
vms
.
Isolate
isolate
=
await
client
.
getIsolate
(
isolateRef
.
id
);
VMIsolate
isolate
=
await
isolateRef
.
loadRunnable
();
// TODO(yjbanov): vm_service_client does not support "None" pause event yet.
// It is currently reported as null, but we cannot rely on it because
// eventually the event will be reported as a non-null object. For now,
// list all the events we know about. Later we'll check for "None" event
// explicitly.
//
// See: https://github.com/dart-lang/vm_service_client/issues/4
if
(
isolate
.
pauseEvent
is
!
VMPauseStartEvent
&&
isolate
.
pauseEvent
is
!
VMPauseExitEvent
&&
isolate
.
pauseEvent
is
!
VMPauseBreakpointEvent
&&
isolate
.
pauseEvent
is
!
VMPauseExceptionEvent
&&
isolate
.
pauseEvent
is
!
VMPauseInterruptedEvent
&&
isolate
.
pauseEvent
is
!
VMResumeEvent
)
{
isolate
=
await
isolateRef
.
loadRunnable
();
if
(
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kNone
)
{
isolate
=
await
client
.
getIsolate
(
isolateRef
.
id
);
}
final
VMServiceFlutterDriver
driver
=
VMServiceFlutterDriver
.
connectedTo
(
client
,
connection
.
peer
,
isolate
,
client
,
isolate
,
printCommunication:
printCommunication
,
logCommunicationToFile:
logCommunicationToFile
,
);
driver
.
_dartVmReconnectUrl
=
dartVmServiceUrl
;
// Attempts to resume the isolate, but does not crash if it fails because
// the isolate is already resumed. There could be a race with other tools,
// such as a debugger, any of which could have resumed the isolate.
Future
<
dynamic
>
resumeLeniently
()
async
{
Future
<
vms
.
Success
>
resumeLeniently
()
async
{
_log
(
'Attempting to resume isolate'
);
// Let subsequent isolates start automatically.
try
{
final
Map
<
String
,
dynamic
>
result
=
await
connection
.
peer
.
sendRequest
(
'setFlag'
,
<
String
,
String
>{
'name'
:
'pause_isolates_on_start'
,
'value'
:
'false'
,
})
as
Map
<
String
,
dynamic
>;
if
(
result
==
null
||
result
[
'type'
]
!=
'Success'
)
{
final
vms
.
Response
result
=
await
client
.
setFlag
(
'pause_isolates_on_start'
,
'false'
);
if
(
result
==
null
||
result
.
type
!=
'Success'
)
{
_log
(
'setFlag failure:
$result
'
);
}
}
catch
(
e
)
{
_log
(
'Failed to set pause_isolates_on_start=false, proceeding. Error:
$e
'
);
}
return
isolate
.
resume
(
).
catchError
((
dynamic
e
)
{
return
client
.
resume
(
isolate
.
id
).
catchError
((
dynamic
e
)
{
const
int
vmMustBePausedCode
=
101
;
if
(
e
is
rpc
.
RpcException
&&
e
.
code
==
vmMustBePausedCode
)
{
if
(
e
is
vms
.
RPCError
&&
e
.
code
==
vmMustBePausedCode
)
{
// No biggie; something else must have resumed the isolate
_log
(
'Attempted to resume an already resumed isolate. This may happen '
'when we lose a race with another tool (usually a debugger) that
'
'is connected to the same isolate
.'
'when another tool (usually a debugger) resumed the isolate
'
'before the flutter_driver did
.'
);
}
else
{
// Failed to resume due to another reason. Fail hard.
...
...
@@ -186,10 +164,12 @@ class VMServiceFlutterDriver extends FlutterDriver {
/// Looks at the list of loaded extensions for the current [isolateRef], as
/// well as the stream of added extensions.
Future
<
void
>
waitForServiceExtension
()
async
{
final
Future
<
void
>
extensionAlreadyAdded
=
isolateRef
.
loadRunnable
()
.
then
((
VMIsolate
isolate
)
async
{
if
(
isolate
.
extensionRpcs
.
contains
(
_flutterExtensionMethodName
))
{
await
client
.
streamListen
(
vms
.
EventStreams
.
kIsolate
);
final
Future
<
void
>
extensionAlreadyAdded
=
client
.
getIsolate
(
isolateRef
.
id
)
.
then
((
vms
.
Isolate
isolate
)
async
{
if
(
isolate
.
extensionRPCs
.
contains
(
_flutterExtensionMethodName
))
{
return
;
}
// Never complete. Rely on the stream listener to find the service
...
...
@@ -198,60 +178,49 @@ class VMServiceFlutterDriver extends FlutterDriver {
});
final
Completer
<
void
>
extensionAdded
=
Completer
<
void
>();
StreamSubscription
<
String
>
isolateAddedSubscription
;
isolateAddedSubscription
=
isolate
.
onExtensionAdded
.
listen
(
(
String
extensionName
)
{
if
(
extensionName
==
_flutterExtensionMethodName
)
{
StreamSubscription
<
vms
.
Event
>
isolateAddedSubscription
;
isolateAddedSubscription
=
client
.
onIsolateEvent
.
listen
(
(
vms
.
Event
data
)
{
if
(
data
.
kind
==
vms
.
EventKind
.
kServiceExtensionAdded
&&
data
.
extensionRPC
==
_flutterExtensionMethodName
)
{
extensionAdded
.
complete
();
isolateAddedSubscription
.
cancel
();
}
},
onError:
extensionAdded
.
completeError
,
cancelOnError:
true
);
cancelOnError:
true
,
);
await
Future
.
any
(<
Future
<
void
>>[
extensionAlreadyAdded
,
extensionAdded
.
future
,
]);
}
/// Tells the Dart VM Service to notify us about "Isolate" events.
///
/// This is a workaround for an issue in package:vm_service_client, which
/// subscribes to the "Isolate" stream lazily upon subscription, which
/// results in lost events.
///
/// Details: https://github.com/dart-lang/vm_service_client/issues/17
Future
<
void
>
enableIsolateStreams
()
async
{
await
connection
.
peer
.
sendRequest
(
'streamListen'
,
<
String
,
String
>{
'streamId'
:
'Isolate'
,
});
await
isolateAddedSubscription
.
cancel
();
await
client
.
streamCancel
(
vms
.
EventStreams
.
kIsolate
);
}
// Attempt to resume isolate if it was paused
if
(
isolate
.
pauseEvent
is
VMPauseStartEven
t
)
{
if
(
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kPauseStar
t
)
{
_log
(
'Isolate is paused at start.'
);
await
resumeLeniently
();
}
else
if
(
isolate
.
pauseEvent
is
VMPauseExitEven
t
||
isolate
.
pauseEvent
is
VMPauseBreakpointEve
nt
||
isolate
.
pauseEvent
is
VMPauseExceptionEvent
||
isolate
.
pauseEvent
is
VMPauseInterruptedEvent
)
{
}
else
if
(
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kPauseExi
t
||
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kPauseBreakpoi
nt
||
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kPauseException
||
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kPauseInterrupted
)
{
// If the isolate is paused for any other reason, assume the extension is
// already there.
_log
(
'Isolate is paused mid-flight.'
);
await
resumeLeniently
();
}
else
if
(
isolate
.
pauseEvent
is
VMResumeEvent
)
{
}
else
if
(
isolate
.
pauseEvent
.
kind
==
vms
.
EventKind
.
kResume
)
{
_log
(
'Isolate is not paused. Assuming application is ready.'
);
}
else
{
_log
(
'Unknown pause event type
${isolate.pauseEvent.runtimeType}
. '
'Assuming application is ready.'
'Assuming application is ready.'
);
}
await
enableIsolateStreams
();
// We will never receive the extension event if the user does not register
// it. If that happens, show a message but continue waiting.
await
_warnIfSlow
<
void
>(
...
...
@@ -265,7 +234,8 @@ class VMServiceFlutterDriver extends FlutterDriver {
final
Health
health
=
await
driver
.
checkHealth
();
if
(
health
.
status
!=
HealthStatus
.
ok
)
{
await
client
.
close
();
client
.
dispose
();
await
client
.
onDone
;
throw
DriverError
(
'Flutter application health check failed.'
);
}
...
...
@@ -276,9 +246,6 @@ class VMServiceFlutterDriver extends FlutterDriver {
static
int
_nextDriverId
=
0
;
static
const
String
_flutterExtensionMethodName
=
'ext.flutter.driver'
;
static
const
String
_setVMTimelineFlagsMethodName
=
'setVMTimelineFlags'
;
static
const
String
_getVMTimelineMethodName
=
'getVMTimeline'
;
static
const
String
_clearVMTimelineMethodName
=
'clearVMTimeline'
;
static
const
String
_collectAllGarbageMethodName
=
'_collectAllGarbage'
;
// The additional blank line in the beginning is for _log.
...
...
@@ -299,42 +266,19 @@ class VMServiceFlutterDriver extends FlutterDriver {
/// The unique ID of this driver instance.
final
int
_driverId
;
@override
vms
.
Isolate
get
appIsolate
=>
_appIsolate
;
/// Client connected to the Dart VM running the Flutter application.
///
/// You can use [VMServiceClient] to check VM version, flags and get
/// notified when a new isolate has been instantiated. That could be
/// useful if your application spawns multiple isolates that you
/// would like to instrument.
final
VMServiceClient
_serviceClient
;
/// JSON-RPC client useful for sending raw JSON requests.
rpc
.
Peer
_peer
;
String
_dartVmReconnectUrl
;
Future
<
void
>
_restorePeerConnectionIfNeeded
()
async
{
if
(!
_peer
.
isClosed
||
_dartVmReconnectUrl
==
null
)
{
return
;
}
_log
(
'Peer connection is closed! Trying to restore the connection...'
);
final
String
webSocketUrl
=
_getWebSocketUrl
(
_dartVmReconnectUrl
);
final
WebSocket
ws
=
await
WebSocket
.
connect
(
webSocketUrl
);
ws
.
done
.
whenComplete
(()
=>
_checkCloseCode
(
ws
));
_peer
=
rpc
.
Peer
(
IOWebSocketChannel
(
ws
).
cast
(),
onUnhandledError:
_unhandledJsonRpcError
,
)..
listen
();
}
@override
VMIsolate
get
appIsolate
=>
_appIsolate
;
final
vms
.
VmService
_serviceClient
;
@override
VMServiceClient
get
serviceClient
=>
_serviceClient
;
vms
.
VmService
get
serviceClient
=>
_serviceClient
;
@override
async_io
.
WebDriver
get
webDriver
=>
throw
UnsupportedError
(
'VMServiceFlutterDriver does not support webDriver'
);
...
...
@@ -342,9 +286,9 @@ class VMServiceFlutterDriver extends FlutterDriver {
/// The main isolate hosting the Flutter application.
///
/// If you used the [registerExtension] API to instrument your application,
/// you can use this [
VM
Isolate] to call these extension methods via
/// you can use this [
vms.
Isolate] to call these extension methods via
/// [invokeExtension].
final
VM
Isolate
_appIsolate
;
final
vms
.
Isolate
_appIsolate
;
/// Whether to print communication between host and app to `stdout`.
final
bool
_printCommunication
;
...
...
@@ -363,10 +307,11 @@ class VMServiceFlutterDriver extends FlutterDriver {
try
{
final
Map
<
String
,
String
>
serialized
=
command
.
serialize
();
_logCommunication
(
'>>>
$serialized
'
);
final
Future
<
Map
<
String
,
dynamic
>>
future
=
_
appIsolate
.
invok
eExtension
(
final
Future
<
Map
<
String
,
dynamic
>>
future
=
_
serviceClient
.
callServic
eExtension
(
_flutterExtensionMethodName
,
serialized
,
).
then
<
Map
<
String
,
dynamic
>>((
Object
value
)
=>
value
as
Map
<
String
,
dynamic
>);
isolateId:
_appIsolate
.
id
,
args:
serialized
,
).
then
<
Map
<
String
,
dynamic
>>((
vms
.
Response
value
)
=>
value
.
json
);
response
=
await
_warnIfSlow
<
Map
<
String
,
dynamic
>>(
future:
future
,
timeout:
command
.
timeout
??
kUnusuallyLongTimeout
,
...
...
@@ -399,21 +344,20 @@ class VMServiceFlutterDriver extends FlutterDriver {
Future
<
List
<
int
>>
screenshot
()
async
{
await
Future
<
void
>.
delayed
(
const
Duration
(
seconds:
2
));
final
Map
<
String
,
dynamic
>
result
=
await
_peer
.
sendRequest
(
'_flutter.screenshot'
)
as
Map
<
String
,
dynamic
>
;
return
base64
.
decode
(
result
[
'screenshot'
]
as
String
);
final
vms
.
Response
result
=
await
_serviceClient
.
callMethod
(
'_flutter.screenshot'
)
;
return
base64
.
decode
(
result
.
json
[
'screenshot'
]
as
String
);
}
@override
Future
<
List
<
Map
<
String
,
dynamic
>>>
getVmFlags
()
async
{
await
_restorePeerConnectionIfNeeded
();
final
Map
<
String
,
dynamic
>
result
=
await
_peer
.
sendRequest
(
'getFlagList'
)
as
Map
<
String
,
dynamic
>;
final
vms
.
FlagList
result
=
await
_serviceClient
.
getFlagList
();
return
result
!=
null
?
(
result
[
'flags'
]
as
List
<
dynamic
>).
cast
<
Map
<
String
,
dynamic
>>
()
?
result
.
flags
.
map
((
vms
.
Flag
flag
)
=>
flag
.
toJson
()).
toList
()
:
const
<
Map
<
String
,
dynamic
>>[];
}
Future
<
Map
<
String
,
Object
>
>
_getVMTimelineMicros
()
async
{
return
await
_
peer
.
sendRequest
(
'getVMTimelineMicros'
)
as
Map
<
String
,
dynamic
>
;
Future
<
vms
.
Timestamp
>
_getVMTimelineMicros
()
async
{
return
await
_
serviceClient
.
getVMTimelineMicros
()
;
}
@override
...
...
@@ -424,10 +368,10 @@ class VMServiceFlutterDriver extends FlutterDriver {
assert
(
streams
!=
null
&&
streams
.
isNotEmpty
);
assert
(
timeout
!=
null
);
try
{
await
_warnIfSlow
<
v
oid
>(
future:
_
peer
.
sendRequest
(
_setVMTimelineFlagsMethodName
,
<
String
,
String
>{
'recordedStreams'
:
_timelineStreamsToString
(
streams
),
}
),
await
_warnIfSlow
<
v
ms
.
Success
>(
future:
_
serviceClient
.
setVMTimelineFlags
(
_timelineStreamsToString
(
streams
),
),
timeout:
timeout
,
message:
'VM is taking an unusually long time to respond to being told to start tracing...'
,
);
...
...
@@ -451,26 +395,27 @@ class VMServiceFlutterDriver extends FlutterDriver {
(
startTime
!=
null
&&
endTime
!=
null
));
try
{
await
_warnIfSlow
<
v
oid
>(
future:
_
peer
.
sendRequest
(
_setVMTimelineFlagsMethodName
,
<
String
,
String
>{
'recordedStreams'
:
'[]'
}
),
await
_warnIfSlow
<
v
ms
.
Success
>(
future:
_
serviceClient
.
setVMTimelineFlags
(
const
<
String
>[]
),
timeout:
timeout
,
message:
'VM is taking an unusually long time to respond to being told to stop tracing...'
,
);
if
(
startTime
==
null
)
{
return
Timeline
.
fromJson
(
await
_peer
.
sendRequest
(
_getVMTimelineMethodName
)
as
Map
<
String
,
dynamic
>);
final
vms
.
Timeline
timeline
=
await
_serviceClient
.
getVMTimeline
();
return
Timeline
.
fromJson
(
timeline
.
json
);
}
const
int
kSecondInMicros
=
1000000
;
int
currentStart
=
startTime
;
int
currentEnd
=
startTime
+
kSecondInMicros
;
// 1 second of timeline
final
List
<
Map
<
String
,
Object
>>
chunks
=
<
Map
<
String
,
Object
>>[];
do
{
final
Map
<
String
,
Object
>
chunk
=
await
_peer
.
sendRequest
(
_getVMTimelineMethodName
,
<
String
,
Object
>{
'timeOriginMicros'
:
currentStart
,
final
vms
.
Timeline
chunk
=
await
_serviceClient
.
getVMTimeline
(
timeOriginMicros
:
currentStart
,
// The range is inclusive, avoid double counting on the chance something
// aligns on the boundary.
'timeExtentMicros'
:
kSecondInMicros
-
1
,
})
as
Map
<
String
,
dynamic
>
;
chunks
.
add
(
chunk
);
timeExtentMicros
:
kSecondInMicros
-
1
,
)
;
chunks
.
add
(
chunk
.
json
);
currentStart
=
currentEnd
;
currentEnd
+=
kSecondInMicros
;
}
while
(
currentStart
<
endTime
);
...
...
@@ -518,18 +463,18 @@ class VMServiceFlutterDriver extends FlutterDriver {
await
clearTimeline
();
final
Map
<
String
,
Object
>
startTimestamp
=
await
_getVMTimelineMicros
();
final
vms
.
Timestamp
startTimestamp
=
await
_getVMTimelineMicros
();
await
startTracing
(
streams:
streams
);
await
action
();
final
Map
<
String
,
Object
>
endTimestamp
=
await
_getVMTimelineMicros
();
final
vms
.
Timestamp
endTimestamp
=
await
_getVMTimelineMicros
();
if
(!(
await
_isPrecompiledMode
()))
{
_log
(
_kDebugWarning
);
}
return
stopTracingAndDownloadTimeline
(
startTime:
startTimestamp
[
'timestamp'
]
as
int
,
endTime:
endTimestamp
[
'timestamp'
]
as
int
,
startTime:
startTimestamp
.
timestamp
,
endTime:
endTimestamp
.
timestamp
,
);
}
...
...
@@ -539,8 +484,8 @@ class VMServiceFlutterDriver extends FlutterDriver {
})
async
{
assert
(
timeout
!=
null
);
try
{
await
_warnIfSlow
<
v
oid
>(
future:
_
peer
.
sendRequest
(
_clearVMTimelineMethodName
,
<
String
,
String
>{}
),
await
_warnIfSlow
<
v
ms
.
Success
>(
future:
_
serviceClient
.
clearVMTimeline
(
),
timeout:
timeout
,
message:
'VM is taking an unusually long time to respond to being told to clear its timeline buffer...'
,
);
...
...
@@ -568,10 +513,7 @@ class VMServiceFlutterDriver extends FlutterDriver {
@override
Future
<
void
>
forceGC
()
async
{
try
{
await
_peer
.
sendRequest
(
_collectAllGarbageMethodName
,
<
String
,
String
>{
'isolateId'
:
'isolates/
${_appIsolate.numberAsString}
'
,
});
await
_serviceClient
.
callMethod
(
_collectAllGarbageMethodName
,
isolateId:
_appIsolate
.
id
);
}
catch
(
error
,
stackTrace
)
{
throw
DriverError
(
'Failed to force a GC due to remote error'
,
...
...
@@ -583,9 +525,8 @@ class VMServiceFlutterDriver extends FlutterDriver {
@override
Future
<
void
>
close
()
async
{
// Don't leak vm_service_client-specific objects, if any
await
_serviceClient
.
close
();
await
_peer
.
close
();
_serviceClient
.
dispose
();
await
_serviceClient
.
onDone
;
}
}
...
...
@@ -601,40 +542,6 @@ void restoreVmServiceConnectFunction() {
vmServiceConnectFunction
=
_waitAndConnect
;
}
/// The JSON RPC 2 spec says that a notification from a client must not respond
/// to the client. It's possible the client sent a notification as a "ping", but
/// the service isn't set up yet to respond.
///
/// For example, if the client sends a notification message to the server for
/// 'streamNotify', but the server has not finished loading, it will throw an
/// exception. Since the message is a notification, the server follows the
/// specification and does not send a response back, but is left with an
/// unhandled exception. That exception is safe for us to ignore - the client
/// is signaling that it will try again later if it doesn't get what it wants
/// here by sending a notification.
// This may be ignoring too many exceptions. It would be best to rewrite
// the client code to not use notifications so that it gets error replies back
// and can decide what to do from there.
// TODO(dnfield): https://github.com/flutter/flutter/issues/31813
bool
_ignoreRpcError
(
dynamic
error
)
{
if
(
error
is
rpc
.
RpcException
)
{
final
rpc
.
RpcException
exception
=
error
;
return
exception
.
data
==
null
||
exception
.
data
[
'id'
]
==
null
;
}
else
if
(
error
is
String
&&
error
.
startsWith
(
'JSON-RPC error -32601'
))
{
return
true
;
}
return
false
;
}
void
_unhandledJsonRpcError
(
dynamic
error
,
dynamic
stack
)
{
if
(
_ignoreRpcError
(
error
))
{
return
;
}
_log
(
'Unhandled RPC error:
\n
$error
\n
$stack
'
);
// TODO(dnfield): https://github.com/flutter/flutter/issues/31813
// assert(false);
}
String
_getWebSocketUrl
(
String
url
)
{
Uri
uri
=
Uri
.
parse
(
url
);
final
List
<
String
>
pathSegments
=
<
String
>[
...
...
@@ -647,40 +554,30 @@ String _getWebSocketUrl(String url) {
return
uri
.
toString
();
}
void
_checkCloseCode
(
WebSocket
ws
)
{
if
(
ws
.
closeCode
!=
1000
&&
ws
.
closeCode
!=
null
)
{
_log
(
'
$ws
is closed with an unexpected code
${ws.closeCode}
'
);
}
}
/// Waits for a real Dart VM service to become available, then connects using
/// the [VMServiceClient].
Future
<
VMServiceClientConnection
>
_waitAndConnect
(
String
url
,
{
Map
<
String
,
dynamic
>
headers
})
async
{
Future
<
vms
.
VmService
>
_waitAndConnect
(
String
url
,
Map
<
String
,
dynamic
>
headers
)
async
{
final
String
webSocketUrl
=
_getWebSocketUrl
(
url
);
int
attempts
=
0
;
while
(
true
)
{
WebSocket
ws1
;
WebSocket
ws2
;
try
{
ws1
=
await
WebSocket
.
connect
(
webSocketUrl
,
headers:
headers
);
ws2
=
await
WebSocket
.
connect
(
webSocketUrl
,
headers:
headers
);
ws1
.
done
.
whenComplete
(()
=>
_checkCloseCode
(
ws1
));
ws2
.
done
.
whenComplete
(()
=>
_checkCloseCode
(
ws2
));
return
VMServiceClientConnection
(
VMServiceClient
(
IOWebSocketChannel
(
ws1
).
cast
()),
rpc
.
Peer
(
IOWebSocketChannel
(
ws2
).
cast
(),
onUnhandledError:
_unhandledJsonRpcError
,
)..
listen
(),
final
WebSocket
socket
=
await
WebSocket
.
connect
(
webSocketUrl
,
headers:
headers
);
final
vms
.
VmService
service
=
vms
.
VmService
(
socket
,
socket
.
add
,
log:
null
,
disposeHandler:
()
async
{
await
socket
.
close
();
},
);
// This call is to ensure we are able to establish a connection instead of
// keeping on trucking and failing farther down the process.
await
service
.
getVersion
();
return
service
;
}
catch
(
e
)
{
await
ws1
?.
close
();
await
ws2
?.
close
();
if
(
attempts
>
5
)
if
(
attempts
>
5
)
{
_log
(
'It is taking an unusually long time to connect to the VM...'
);
}
attempts
+=
1
;
await
Future
<
void
>.
delayed
(
_kPauseBetweenReconnectAttempts
);
}
...
...
@@ -694,8 +591,8 @@ const Duration _kPauseBetweenReconnectAttempts = Duration(seconds: 1);
// See `timeline_streams` in
// https://github.com/dart-lang/sdk/blob/master/runtime/vm/timeline.cc
String
_timelineStreamsToString
(
List
<
TimelineStream
>
streams
)
{
final
String
contents
=
streams
.
map
<
String
>((
TimelineStream
stream
)
{
List
<
String
>
_timelineStreamsToString
(
List
<
TimelineStream
>
streams
)
{
return
streams
.
map
<
String
>((
TimelineStream
stream
)
{
switch
(
stream
)
{
case
TimelineStream
.
all
:
return
'all'
;
case
TimelineStream
.
api
:
return
'API'
;
...
...
@@ -710,8 +607,7 @@ String _timelineStreamsToString(List<TimelineStream> streams) {
default
:
throw
'Unknown timeline stream
$stream
'
;
}
}).
join
(
', '
);
return
'[
$contents
]'
;
}).
toList
();
}
void
_log
(
String
message
)
{
...
...
@@ -736,24 +632,5 @@ Future<T> _warnIfSlow<T>({
return
future
;
}
/// Encapsulates connection information to an instance of a Flutter application.
@visibleForTesting
class
VMServiceClientConnection
{
/// Creates an instance of this class given a [client] and a [peer].
VMServiceClientConnection
(
this
.
client
,
this
.
peer
);
/// Use this for structured access to the VM service's public APIs.
final
VMServiceClient
client
;
/// Use this to make arbitrary raw JSON-RPC calls.
///
/// This object allows reaching into private VM service APIs. Use with
/// caution.
final
rpc
.
Peer
peer
;
}
/// A function that connects to a Dart VM service
/// with [headers] given the [url].
typedef
VMServiceConnectFunction
=
Future
<
VMServiceClientConnection
>
Function
(
String
url
,
{
Map
<
String
,
dynamic
>
headers
});
/// A function that connects to a Dart VM service given the `url` and `headers`.
typedef
VMServiceConnectFunction
=
Future
<
vms
.
VmService
>
Function
(
String
url
,
Map
<
String
,
dynamic
>
headers
);
packages/flutter_driver/lib/src/driver/web_driver.dart
View file @
3ecac303
...
...
@@ -9,7 +9,7 @@ import 'dart:io';
import
'package:matcher/matcher.dart'
;
import
'package:meta/meta.dart'
;
import
'package:vm_service
_client/vm_service_client.dart'
;
import
'package:vm_service
/vm_service.dart'
as
vms
;
import
'package:webdriver/async_io.dart'
as
async_io
;
import
'package:webdriver/support/async.dart'
;
...
...
@@ -38,10 +38,10 @@ class WebFlutterDriver extends FlutterDriver {
DateTime
get
startTime
=>
_startTime
;
@override
VM
Isolate
get
appIsolate
=>
throw
UnsupportedError
(
'WebFlutterDriver does not support appIsolate'
);
vms
.
Isolate
get
appIsolate
=>
throw
UnsupportedError
(
'WebFlutterDriver does not support appIsolate'
);
@override
VMServiceClient
get
serviceClient
=>
throw
UnsupportedError
(
'WebFlutterDriver does not support serviceClient'
);
vms
.
VmService
get
serviceClient
=>
throw
UnsupportedError
(
'WebFlutterDriver does not support serviceClient'
);
@override
async_io
.
WebDriver
get
webDriver
=>
_connection
.
_driver
;
...
...
packages/flutter_driver/pubspec.yaml
View file @
3ecac303
...
...
@@ -9,11 +9,9 @@ environment:
dependencies
:
file
:
6.0.0-nullsafety.3
json_rpc_2
:
2.2.2
meta
:
1.3.0-nullsafety.5
path
:
1.8.0-nullsafety.2
web_socket_channel
:
1.1.0
vm_service_client
:
0.2.6+2
vm_service
:
4.2.0
webdriver
:
2.1.2
flutter
:
sdk
:
flutter
...
...
@@ -33,10 +31,10 @@ dependencies:
convert
:
2.1.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
crypto
:
2.1.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
fake_async
:
1.2.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
json_rpc_2
:
2.2.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
matcher
:
0.12.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
platform
:
3.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
process
:
4.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -46,9 +44,9 @@ dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
web_socket_channel
:
1.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
mockito
:
4.1.1
quiver
:
2.1.3
quiver
:
2.1.4+1
# PUBSPEC CHECKSUM:
9a64
# PUBSPEC CHECKSUM:
23ae
packages/flutter_driver/test/common.dart
View file @
3ecac303
...
...
@@ -11,6 +11,7 @@ import 'package:test_api/test_api.dart' hide TypeMatcher, isInstanceOf; // ignor
import
'package:test_api/test_api.dart'
as
test_package
show
TypeMatcher
;
// ignore: deprecated_member_use
export
'package:test_api/test_api.dart'
hide
TypeMatcher
,
isInstanceOf
;
// ignore: deprecated_member_use
export
'package:test_api/fake.dart'
;
// ignore: deprecated_member_use
// Defines a 'package:test' shim.
// TODO(ianh): Clean this up once https://github.com/dart-lang/matcher/issues/98 is fixed
...
...
@@ -31,3 +32,6 @@ void tryToDelete(Directory directory) {
/// Matcher for functions that throw [DriverError].
final
Matcher
throwsDriverError
=
throwsA
(
isA
<
DriverError
>());
/// Matcher for functions that throw [AssertionError].
final
Matcher
throwsAssertionError
=
throwsA
(
isA
<
AssertionError
>());
packages/flutter_driver/test/flutter_driver_test.dart
View file @
3ecac303
...
...
@@ -13,9 +13,7 @@ import 'package:flutter_driver/src/common/layer_tree.dart';
import
'package:flutter_driver/src/common/wait.dart'
;
import
'package:flutter_driver/src/driver/driver.dart'
;
import
'package:flutter_driver/src/driver/timeline.dart'
;
import
'package:json_rpc_2/json_rpc_2.dart'
as
rpc
;
import
'package:mockito/mockito.dart'
;
import
'package:vm_service_client/vm_service_client.dart'
;
import
'package:vm_service/vm_service.dart'
as
vms
;
import
'package:quiver/testing/async.dart'
;
import
'common.dart'
;
...
...
@@ -33,10 +31,9 @@ void main() {
};
group
(
'VMServiceFlutterDriver.connect'
,
()
{
MockVMServiceClient
mockClient
;
MockVM
mockVM
;
MockIsolate
mockIsolate
;
MockPeer
mockPeer
;
FakeVmService
fakeClient
;
FakeVM
fakeVM
;
FakeIsolate
fakeIsolate
;
void
expectLogContains
(
String
message
)
{
expect
(
log
,
anyElement
(
contains
(
message
)));
...
...
@@ -44,65 +41,92 @@ void main() {
setUp
(()
{
log
.
clear
();
mockClient
=
MockVMServiceClient
();
mockVM
=
MockVM
();
mockIsolate
=
MockIsolate
();
mockPeer
=
MockPeer
();
when
(
mockClient
.
getVM
()).
thenAnswer
((
_
)
=>
Future
<
MockVM
>.
value
(
mockVM
));
when
(
mockVM
.
isolates
).
thenReturn
(<
VMRunnableIsolate
>[
mockIsolate
]);
when
(
mockIsolate
.
loadRunnable
()).
thenAnswer
((
_
)
=>
Future
<
MockIsolate
>.
value
(
mockIsolate
));
when
(
mockIsolate
.
extensionRpcs
).
thenReturn
(<
String
>[]);
when
(
mockIsolate
.
onExtensionAdded
).
thenAnswer
((
Invocation
invocation
)
{
return
Stream
<
String
>.
fromIterable
(<
String
>[
'ext.flutter.driver'
]);
});
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
(
(
Invocation
invocation
)
=>
makeMockResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
}));
vmServiceConnectFunction
=
(
String
url
,
{
Map
<
String
,
dynamic
>
headers
})
{
return
Future
<
VMServiceClientConnection
>.
value
(
VMServiceClientConnection
(
mockClient
,
mockPeer
)
);
fakeIsolate
=
FakeIsolate
();
fakeVM
=
FakeVM
(
fakeIsolate
);
fakeClient
=
FakeVmService
(
fakeVM
);
vmServiceConnectFunction
=
(
String
url
,
Map
<
String
,
dynamic
>
headers
)
async
{
return
fakeClient
;
};
fakeClient
.
responses
[
'get_health'
]
=
makeFakeResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
});
});
tearDown
(()
async
{
restoreVmServiceConnectFunction
();
});
test
(
'connects to isolate paused at start'
,
()
async
{
final
List
<
String
>
connectionLog
=
<
String
>[];
when
(
mockPeer
.
sendRequest
(
'streamListen'
,
any
)).
thenAnswer
((
Invocation
invocation
)
{
connectionLog
.
add
(
'streamListen'
);
return
null
;
});
when
(
mockPeer
.
sendRequest
(
'setFlag'
,
any
)).
thenAnswer
((
Invocation
invocation
)
{
connectionLog
.
add
(
'setFlag'
);
return
null
;
});
when
(
mockIsolate
.
pauseEvent
).
thenReturn
(
MockVMPauseStartEvent
());
when
(
mockIsolate
.
resume
()).
thenAnswer
((
Invocation
invocation
)
{
connectionLog
.
add
(
'resume'
);
return
Future
<
dynamic
>.
value
(
null
);
});
when
(
mockIsolate
.
onExtensionAdded
).
thenAnswer
((
Invocation
invocation
)
{
connectionLog
.
add
(
'onExtensionAdded'
);
return
Stream
<
String
>.
fromIterable
(<
String
>[
'ext.flutter.driver'
]);
test
(
'throws after retries if no isolate'
,
()
async
{
fakeVM
.
numberOfTriesBeforeResolvingIsolate
=
10000
;
FakeAsync
().
run
((
FakeAsync
time
)
{
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
time
.
elapse
(
kUnusuallyLongTimeout
);
});
expect
(
log
,
<
String
>[
'VMServiceFlutterDriver: Connecting to Flutter application at '
,
'VMServiceFlutterDriver: The root isolate is taking an unuusally long time to start.'
,
]);
});
test
(
'Retries connections if isolate is not available'
,
()
async
{
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kPauseStart
,
timestamp:
0
);
fakeVM
.
numberOfTriesBeforeResolvingIsolate
=
5
;
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expect
(
driver
,
isNotNull
);
expect
(
fakeClient
.
connectionLog
,
<
String
>[
'getIsolate'
,
'setFlag pause_isolates_on_start false'
,
'resume'
,
'streamListen Isolate'
,
'getIsolate'
,
'onIsolateEvent'
,
'streamCancel Isolate'
,
],
);
});
test
(
'Connects to isolate number'
,
()
async
{
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kPauseStart
,
timestamp:
0
);
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
,
isolateNumber:
int
.
parse
(
fakeIsolate
.
number
));
expect
(
driver
,
isNotNull
);
expect
(
fakeClient
.
connectionLog
,
<
String
>[
'getIsolate'
,
'setFlag pause_isolates_on_start false'
,
'resume'
,
'streamListen Isolate'
,
'getIsolate'
,
'onIsolateEvent'
,
'streamCancel Isolate'
,
],
);
});
test
(
'connects to isolate paused at start'
,
()
async
{
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kPauseStart
,
timestamp:
0
);
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expect
(
driver
,
isNotNull
);
expectLogContains
(
'Isolate is paused at start'
);
expect
(
connectionLog
,
<
String
>[
'setFlag'
,
'resume'
,
'streamListen'
,
'onExtensionAdded'
]);
expect
(
fakeClient
.
connectionLog
,
<
String
>[
'getIsolate'
,
'setFlag pause_isolates_on_start false'
,
'resume'
,
'streamListen Isolate'
,
'getIsolate'
,
'onIsolateEvent'
,
'streamCancel Isolate'
,
],
);
});
test
(
'ignores setFlag failure'
,
()
async
{
when
(
mockPeer
.
sendRequest
(
'setFlag'
,
any
)).
thenThrow
(
Exception
(
'setFlag failed'
));
when
(
mockIsolate
.
pauseEvent
).
thenReturn
(
MockVMPauseStartEvent
());
when
(
mockIsolate
.
resume
()).
thenAnswer
((
Invocation
invocation
)
{
return
Future
<
dynamic
>.
value
(
null
);
});
when
(
mockIsolate
.
onExtensionAdded
).
thenAnswer
((
Invocation
invocation
)
{
return
Stream
<
String
>.
fromIterable
(<
String
>[
'ext.flutter.driver'
]);
});
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kPauseStart
,
timestamp:
0
);
fakeClient
.
failOnSetFlag
=
true
;
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expectLogContains
(
'Failed to set pause_isolates_on_start=false, proceeding. '
...
...
@@ -112,8 +136,7 @@ void main() {
test
(
'connects to isolate paused mid-flight'
,
()
async
{
when
(
mockIsolate
.
pauseEvent
).
thenReturn
(
MockVMPauseBreakpointEvent
());
when
(
mockIsolate
.
resume
()).
thenAnswer
((
Invocation
invocation
)
=>
Future
<
dynamic
>.
value
(
null
));
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kPauseBreakpoint
,
timestamp:
0
);
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expect
(
driver
,
isNotNull
);
...
...
@@ -125,12 +148,8 @@ void main() {
// we do. There's no need to fail as we should be able to drive the app
// just fine.
test
(
'connects despite losing the race to resume isolate'
,
()
async
{
when
(
mockIsolate
.
pauseEvent
).
thenReturn
(
MockVMPauseBreakpointEvent
());
when
(
mockIsolate
.
resume
()).
thenAnswer
((
Invocation
invocation
)
{
// This needs to be wrapped in a closure to not be considered uncaught
// by package:test
return
Future
<
dynamic
>.
error
(
rpc
.
RpcException
(
101
,
''
));
});
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kPauseBreakpoint
,
timestamp:
0
);
fakeClient
.
failOnResumeWith101
=
true
;
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expect
(
driver
,
isNotNull
);
...
...
@@ -138,7 +157,8 @@ void main() {
});
test
(
'connects to unpaused isolate'
,
()
async
{
when
(
mockIsolate
.
pauseEvent
).
thenReturn
(
MockVMResumeEvent
());
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kResume
,
timestamp:
0
);
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expect
(
driver
,
isNotNull
);
expectLogContains
(
'Isolate is not paused. Assuming application is ready.'
);
...
...
@@ -146,56 +166,38 @@ void main() {
test
(
'connects to unpaused when onExtensionAdded does not contain the '
'driver extension'
,
()
async
{
when
(
mockIsolate
.
pauseEvent
).
thenReturn
(
MockVMResumeEvent
());
when
(
mockIsolate
.
extensionRpcs
).
thenReturn
(<
String
>[
'ext.flutter.driver'
]);
when
(
mockIsolate
.
onExtensionAdded
).
thenAnswer
((
Invocation
invocation
)
{
return
const
Stream
<
String
>.
empty
();
});
fakeIsolate
.
pauseEvent
=
vms
.
Event
(
kind:
vms
.
EventKind
.
kResume
,
timestamp:
0
);
fakeIsolate
.
extensionRPCs
.
add
(
'ext.flutter.driver'
);
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
);
expect
(
driver
,
isNotNull
);
expectLogContains
(
'Isolate is not paused. Assuming application is ready.'
);
});
test
(
'connects with headers'
,
()
async
{
Map
<
String
,
dynamic
>
actualHeaders
;
vmServiceConnectFunction
=
(
String
url
,
{
Map
<
String
,
dynamic
>
headers
})
{
actualHeaders
=
headers
;
return
Future
<
VMServiceClientConnection
>.
value
(
VMServiceClientConnection
(
mockClient
,
mockPeer
)
);
};
final
Map
<
String
,
String
>
expectedHeaders
=
<
String
,
String
>{
'header-key'
:
'header-value'
};
final
FlutterDriver
driver
=
await
FlutterDriver
.
connect
(
dartVmServiceUrl:
''
,
headers:
expectedHeaders
);
expect
(
driver
,
isNotNull
);
expect
(
actualHeaders
,
equals
(
expectedHeaders
));
});
});
group
(
'VMServiceFlutterDriver'
,
()
{
MockVMServiceClient
mock
Client
;
MockPeer
mockPeer
;
MockIsolate
mock
Isolate
;
FakeVmService
fake
Client
;
FakeVM
fakeVM
;
FakeIsolate
fake
Isolate
;
VMServiceFlutterDriver
driver
;
setUp
(()
{
mockClient
=
MockVMServiceClient
();
mockPeer
=
MockPeer
();
mockIsolate
=
MockIsolate
();
driver
=
VMServiceFlutterDriver
.
connectedTo
(
mockClient
,
mockPeer
,
mockIsolate
);
fakeIsolate
=
FakeIsolate
();
fakeVM
=
FakeVM
(
fakeIsolate
);
fakeClient
=
FakeVmService
(
fakeVM
);
driver
=
VMServiceFlutterDriver
.
connectedTo
(
fakeClient
,
fakeIsolate
);
fakeClient
.
responses
[
'tap'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
});
test
(
'checks the health of the driver extension'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
(
(
Invocation
invocation
)
=>
makeMockResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
}));
fakeClient
.
responses
[
'get_health'
]
=
makeFakeResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
});
final
Health
result
=
await
driver
.
checkHealth
();
expect
(
result
.
status
,
HealthStatus
.
ok
);
});
test
(
'closes connection'
,
()
async
{
when
(
mockClient
.
close
()).
thenAnswer
((
Invocation
invocation
)
=>
Future
<
dynamic
>.
value
(
null
));
await
driver
.
close
();
expect
(
fakeClient
.
connectionLog
.
last
,
'dispose'
);
});
group
(
'ByValueKey'
,
()
{
...
...
@@ -204,482 +206,281 @@ void main() {
});
test
(
'finds by ValueKey'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'foo'
,
'keyValueType'
:
'String'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
await
driver
.
tap
(
find
.
byValueKey
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: tap, timeout:
$_kSerializedTestTimeout
, finderType: ByValueKey, keyValueString: foo, keyValueType: String}'
,
]);
});
});
group
(
'BySemanticsLabel'
,
()
{
test
(
'finds by Semantic label using String'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'BySemanticsLabel'
,
'label'
:
'foo'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
await
driver
.
tap
(
find
.
bySemanticsLabel
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: tap, timeout:
$_kSerializedTestTimeout
, finderType: BySemanticsLabel, label: foo}'
,
]);
});
test
(
'finds by Semantic label using RegExp'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'BySemanticsLabel'
,
'label'
:
'^foo'
,
'isRegExp'
:
'true'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
await
driver
.
tap
(
find
.
bySemanticsLabel
(
RegExp
(
'^foo'
)),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: tap, timeout:
$_kSerializedTestTimeout
, finderType: BySemanticsLabel, label: ^foo, isRegExp: true}'
,
]);
});
});
group
(
'tap'
,
()
{
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
tap
(
null
),
throws
Driver
Error
);
expect
(
driver
.
tap
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the tap command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByText'
,
'text'
:
'foo'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
await
driver
.
tap
(
find
.
text
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: tap, timeout:
$_kSerializedTestTimeout
, finderType: ByText, text: foo}'
,
]);
});
});
group
(
'getText'
,
()
{
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
getText
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getText
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the getText command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_text'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
makeMockResponse
(<
String
,
String
>{
'text'
:
'hello'
,
});
});
fakeClient
.
responses
[
'get_text'
]
=
makeFakeResponse
(<
String
,
dynamic
>{
'text'
:
'hello'
});
final
String
result
=
await
driver
.
getText
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
'hello'
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_text, timeout:
$_kSerializedTestTimeout
, finderType: ByValueKey, keyValueString: 123, keyValueType: int}'
,
]);
});
});
group
(
'getLayerTree'
,
()
{
test
(
'sends the getLayerTree command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_layer_tree'
,
'timeout'
:
_kSerializedTestTimeout
,
});
return
makeMockResponse
(<
String
,
String
>{
'tree'
:
'hello'
,
});
fakeClient
.
responses
[
'get_layer_tree'
]
=
makeFakeResponse
(<
String
,
String
>{
'tree'
:
'hello'
,
});
final
LayerTree
result
=
await
driver
.
getLayerTree
(
timeout:
_kTestTimeout
);
final
LayerTree
referenceTree
=
LayerTree
.
fromJson
(<
String
,
String
>{
'tree'
:
'hello'
,
});
expect
(
result
.
tree
,
referenceTree
.
tree
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_layer_tree, timeout:
$_kSerializedTestTimeout
}'
,
]);
});
});
group
(
'waitFor'
,
()
{
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
waitFor
(
null
),
throws
Driver
Error
);
expect
(
driver
.
waitFor
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the waitFor command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'waitFor'
,
'finderType'
:
'ByTooltipMessage'
,
'text'
:
'foo'
,
'timeout'
:
_kSerializedTestTimeout
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'waitFor'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
waitFor
(
find
.
byTooltip
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: waitFor, timeout:
$_kSerializedTestTimeout
, finderType: ByTooltipMessage, text: foo}'
,
]);
});
});
group
(
'getWidgetDiagnostics'
,
()
{
test
(
'sends the getWidgetDiagnostics command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_diagnostics_tree'
,
'diagnosticsType'
:
'widget'
,
'finderType'
:
'ByTooltipMessage'
,
'text'
:
'foo'
,
'includeProperties'
:
'true'
,
'subtreeDepth'
:
'0'
,
'timeout'
:
_kSerializedTestTimeout
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'get_diagnostics_tree'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
getWidgetDiagnostics
(
find
.
byTooltip
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_diagnostics_tree, timeout:
$_kSerializedTestTimeout
, finderType: ByTooltipMessage, text: foo, subtreeDepth: 0, includeProperties: true, diagnosticsType: widget}'
,
]);
});
});
group
(
'getRenderObjectDiagnostics'
,
()
{
test
(
'sends the getRenderObjectDiagnostics command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_diagnostics_tree'
,
'diagnosticsType'
:
'renderObject'
,
'finderType'
:
'ByTooltipMessage'
,
'text'
:
'foo'
,
'includeProperties'
:
'true'
,
'subtreeDepth'
:
'0'
,
'timeout'
:
_kSerializedTestTimeout
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'get_diagnostics_tree'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
getRenderObjectDiagnostics
(
find
.
byTooltip
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_diagnostics_tree, timeout:
$_kSerializedTestTimeout
, finderType: ByTooltipMessage, text: foo, subtreeDepth: 0, includeProperties: true, diagnosticsType: renderObject}'
,
]);
});
});
group
(
'waitForCondition'
,
()
{
test
(
'sends the wait for NoPendingFrameCondition command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'NoPendingFrameCondition'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'waitForCondition'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
waitForCondition
(
const
NoPendingFrame
(),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: waitForCondition, timeout:
$_kSerializedTestTimeout
, conditionName: NoPendingFrameCondition}'
,
]);
});
test
(
'sends the wait for NoPendingPlatformMessages command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'NoPendingPlatformMessagesCondition'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'waitForCondition'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
waitForCondition
(
const
NoPendingPlatformMessages
(),
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: waitForCondition, timeout:
$_kSerializedTestTimeout
, conditionName: NoPendingPlatformMessagesCondition}'
,
]);
});
test
(
'sends the waitForCondition of combined conditions command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'CombinedCondition'
,
'conditions'
:
'[{"conditionName":"NoPendingFrameCondition"},{"conditionName":"NoTransientCallbacksCondition"}]'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'waitForCondition'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
const
SerializableWaitCondition
combinedCondition
=
CombinedCondition
(<
SerializableWaitCondition
>[
NoPendingFrame
(),
NoTransientCallbacks
()]);
await
driver
.
waitForCondition
(
combinedCondition
,
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: waitForCondition, timeout:
$_kSerializedTestTimeout
, conditionName: CombinedCondition, conditions: [{"conditionName":"NoPendingFrameCondition"},{"conditionName":"NoTransientCallbacksCondition"}]}'
,
]);
});
});
group
(
'waitUntilNoTransientCallbacks'
,
()
{
test
(
'sends the waitUntilNoTransientCallbacks command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'NoTransientCallbacksCondition'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'waitForCondition'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
waitUntilNoTransientCallbacks
(
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: waitForCondition, timeout:
$_kSerializedTestTimeout
, conditionName: NoTransientCallbacksCondition}'
,
]);
});
});
group
(
'waitUntilFirstFrameRasterized'
,
()
{
test
(
'sends the waitUntilFirstFrameRasterized command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'waitForCondition'
,
'conditionName'
:
'FirstFrameRasterizedCondition'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{});
});
fakeClient
.
responses
[
'waitForCondition'
]
=
makeFakeResponse
(<
String
,
dynamic
>{});
await
driver
.
waitUntilFirstFrameRasterized
();
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: waitForCondition, conditionName: FirstFrameRasterizedCondition}'
,
]);
});
});
group
(
'getOffset'
,
()
{
setUp
(()
{
fakeClient
.
responses
[
'get_offset'
]
=
makeFakeResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
});
});
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
getCenter
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getTopLeft
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getTopRight
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getBottomLeft
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getBottomRight
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getCenter
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getTopLeft
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getTopRight
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getBottomLeft
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getBottomRight
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the getCenter command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_offset'
,
'offsetType'
:
'center'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
});
});
final
DriverOffset
result
=
await
driver
.
getCenter
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_offset, timeout: 1234, finderType: ByValueKey, keyValueString: 123, keyValueType: int, offsetType: center}'
,
]);
});
test
(
'sends the getTopLeft command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_offset'
,
'offsetType'
:
'topLeft'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
});
});
final
DriverOffset
result
=
await
driver
.
getTopLeft
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_offset, timeout: 1234, finderType: ByValueKey, keyValueString: 123, keyValueType: int, offsetType: topLeft}'
,
]);
});
test
(
'sends the getTopRight command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_offset'
,
'offsetType'
:
'topRight'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
});
});
final
DriverOffset
result
=
await
driver
.
getTopRight
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_offset, timeout: 1234, finderType: ByValueKey, keyValueString: 123, keyValueType: int, offsetType: topRight}'
,
]);
});
test
(
'sends the getBottomLeft command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_offset'
,
'offsetType'
:
'bottomLeft'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
});
});
final
DriverOffset
result
=
await
driver
.
getBottomLeft
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_offset, timeout: 1234, finderType: ByValueKey, keyValueString: 123, keyValueType: int, offsetType: bottomLeft}'
,
]);
});
test
(
'sends the getBottomRight command'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
dynamic
>{
'command'
:
'get_offset'
,
'offsetType'
:
'bottomRight'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
});
});
final
DriverOffset
result
=
await
driver
.
getBottomRight
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_offset, timeout: 1234, finderType: ByValueKey, keyValueString: 123, keyValueType: int, offsetType: bottomRight}'
,
]);
});
});
group
(
'clearTimeline'
,
()
{
test
(
'clears timeline'
,
()
async
{
bool
clearWasCalled
=
false
;
when
(
mockPeer
.
sendRequest
(
'clearVMTimeline'
,
argThat
(
equals
(<
String
,
dynamic
>{}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
clearWasCalled
=
true
;
return
null
;
});
await
driver
.
clearTimeline
();
expect
(
clearWasCalled
,
isTrue
);
expect
(
fakeClient
.
connectionLog
,
contains
(
'clearVMTimeline'
)
);
});
});
group
(
'traceAction'
,
()
{
List
<
String
>
log
;
setUp
(()
async
{
log
=
<
String
>[];
when
(
mockPeer
.
sendRequest
(
'clearVMTimeline'
,
argThat
(
equals
(<
String
,
dynamic
>{}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'clear'
);
return
null
;
});
when
(
mockPeer
.
sendRequest
(
'getVMTimelineMicros'
))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'getVMTimelineMicros'
);
return
<
String
,
Object
>{};
});
when
(
mockPeer
.
sendRequest
(
'setVMTimelineFlags'
,
argThat
(
equals
(<
String
,
dynamic
>{
'recordedStreams'
:
'[all]'
}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'startTracing'
);
return
null
;
});
when
(
mockPeer
.
sendRequest
(
'setVMTimelineFlags'
,
argThat
(
equals
(<
String
,
dynamic
>{
'recordedStreams'
:
'[]'
}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'stopTracing'
);
return
null
;
});
when
(
mockPeer
.
sendRequest
(
'getVMTimeline'
)).
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'download'
);
return
<
String
,
dynamic
>{
'traceEvents'
:
<
dynamic
>[
<
String
,
String
>{
'name'
:
'test event'
,
},
],
};
});
});
test
(
'without clearing timeline'
,
()
async
{
final
Timeline
timeline
=
await
driver
.
traceAction
(()
async
{
l
og
.
add
(
'action'
);
fakeClient
.
connectionL
og
.
add
(
'action'
);
},
retainPriorEvents:
true
);
expect
(
l
og
,
const
<
String
>[
's
tartTracing
'
,
expect
(
fakeClient
.
connectionL
og
,
const
<
String
>[
's
etVMTimelineFlags [all]
'
,
'action'
,
'stopTracing'
,
'download'
,
'getFlagList'
,
'setVMTimelineFlags []'
,
'getVMTimeline null null'
,
]);
expect
(
timeline
.
events
.
single
.
name
,
'test event'
);
});
test
(
'with clearing timeline'
,
()
async
{
final
Timeline
timeline
=
await
driver
.
traceAction
(()
async
{
l
og
.
add
(
'action'
);
fakeClient
.
connectionL
og
.
add
(
'action'
);
});
expect
(
l
og
,
const
<
String
>[
'clear'
,
expect
(
fakeClient
.
connectionL
og
,
const
<
String
>[
'clear
VMTimeline
'
,
'getVMTimelineMicros'
,
's
tartTracing
'
,
's
etVMTimelineFlags [all]
'
,
'action'
,
'getVMTimelineMicros'
,
'stopTracing'
,
'download'
,
'getFlagList'
,
'setVMTimelineFlags []'
,
'getVMTimeline 1 999999'
,
]);
expect
(
timeline
.
events
.
single
.
name
,
'test event'
);
});
test
(
'with time interval'
,
()
async
{
int
count
=
0
;
when
(
mockPeer
.
sendRequest
(
'getVMTimelineMicros'
))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'getVMTimelineMicros'
);
return
<
String
,
Object
>{
if
(
count
++
==
0
)
'timestamp'
:
0
else
'timestamp'
:
1000001
,
};
});
when
(
mockPeer
.
sendRequest
(
'getVMTimeline'
,
argThat
(
equals
(<
String
,
dynamic
>{
'timeOriginMicros'
:
0
,
'timeExtentMicros'
:
999999
}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'download 1'
);
return
<
String
,
dynamic
>{
'traceEvents'
:
<
dynamic
>[
<
String
,
String
>{
'name'
:
'test event 1'
,
},
],
};
});
when
(
mockPeer
.
sendRequest
(
'getVMTimeline'
,
argThat
(
equals
(<
String
,
dynamic
>{
fakeClient
.
incrementMicros
=
true
;
fakeClient
.
timelineResponses
[
1000001
]
=
vms
.
Timeline
.
parse
(<
String
,
dynamic
>{
'traceEvents'
:
<
dynamic
>[
<
String
,
dynamic
>{
'name'
:
'test event 2'
,
},
],
'timeOriginMicros'
:
1000000
,
'timeExtentMicros'
:
999999
,
}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'download 2'
);
return
<
String
,
dynamic
>{
'traceEvents'
:
<
dynamic
>[
<
String
,
String
>{
'name'
:
'test event 2'
,
},
],
};
});
});
final
Timeline
timeline
=
await
driver
.
traceAction
(()
async
{
l
og
.
add
(
'action'
);
fakeClient
.
connectionL
og
.
add
(
'action'
);
});
expect
(
l
og
,
const
<
String
>[
'clear'
,
expect
(
fakeClient
.
connectionL
og
,
const
<
String
>[
'clear
VMTimeline
'
,
'getVMTimelineMicros'
,
's
tartTracing
'
,
's
etVMTimelineFlags [all]
'
,
'action'
,
'getVMTimelineMicros'
,
'stopTracing'
,
'download 1'
,
'download 2'
,
'getFlagList'
,
'setVMTimelineFlags []'
,
'getVMTimeline 1 999999'
,
'getVMTimeline 1000001 999999'
,
]);
expect
(
timeline
.
events
.
map
((
TimelineEvent
event
)
=>
event
.
name
),
<
String
>[
'test event
1
'
,
'test event'
,
'test event 2'
,
]);
});
...
...
@@ -688,36 +489,6 @@ void main() {
group
(
'traceAction with timeline streams'
,
()
{
test
(
'specify non-default timeline streams'
,
()
async
{
bool
actionCalled
=
false
;
bool
startTracingCalled
=
false
;
bool
stopTracingCalled
=
false
;
when
(
mockPeer
.
sendRequest
(
'getVMTimelineMicros'
))
.
thenAnswer
((
Invocation
invocation
)
async
{
log
.
add
(
'getVMTimelineMicros'
);
return
<
String
,
Object
>{};
});
when
(
mockPeer
.
sendRequest
(
'setVMTimelineFlags'
,
argThat
(
equals
(<
String
,
dynamic
>{
'recordedStreams'
:
'[Dart, GC, Compiler]'
}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
startTracingCalled
=
true
;
return
null
;
});
when
(
mockPeer
.
sendRequest
(
'setVMTimelineFlags'
,
argThat
(
equals
(<
String
,
dynamic
>{
'recordedStreams'
:
'[]'
}))))
.
thenAnswer
((
Invocation
invocation
)
async
{
stopTracingCalled
=
true
;
return
null
;
});
when
(
mockPeer
.
sendRequest
(
'getVMTimeline'
)).
thenAnswer
((
Invocation
invocation
)
async
{
return
<
String
,
dynamic
>{
'traceEvents'
:
<
dynamic
>[
<
String
,
String
>{
'name'
:
'test event'
,
},
],
};
});
final
Timeline
timeline
=
await
driver
.
traceAction
(()
async
{
actionCalled
=
true
;
...
...
@@ -730,8 +501,13 @@ void main() {
retainPriorEvents:
true
);
expect
(
actionCalled
,
isTrue
);
expect
(
startTracingCalled
,
isTrue
);
expect
(
stopTracingCalled
,
isTrue
);
expect
(
fakeClient
.
connectionLog
,
<
String
>[
'setVMTimelineFlags [Dart, GC, Compiler]'
,
'getFlagList'
,
'setVMTimelineFlags []'
,
'getVMTimeline null null'
]);
expect
(
timeline
.
events
.
single
.
name
,
'test event'
);
});
});
...
...
@@ -739,10 +515,7 @@ void main() {
group
(
'sendCommand error conditions'
,
()
{
test
(
'local default timeout'
,
()
async
{
log
.
clear
();
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
// completer never completed to trigger timeout
return
Completer
<
Map
<
String
,
dynamic
>>().
future
;
});
fakeClient
.
artificialExtensionDelay
=
Completer
<
void
>().
future
;
FakeAsync
().
run
((
FakeAsync
time
)
{
driver
.
waitFor
(
find
.
byTooltip
(
'foo'
));
expect
(
log
,
<
String
>[]);
...
...
@@ -753,10 +526,7 @@ void main() {
test
(
'local custom timeout'
,
()
async
{
log
.
clear
();
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
// completer never completed to trigger timeout
return
Completer
<
Map
<
String
,
dynamic
>>().
future
;
});
fakeClient
.
artificialExtensionDelay
=
Completer
<
void
>().
future
;
FakeAsync
().
run
((
FakeAsync
time
)
{
final
Duration
customTimeout
=
kUnusuallyLongTimeout
-
const
Duration
(
seconds:
1
);
driver
.
waitFor
(
find
.
byTooltip
(
'foo'
),
timeout:
customTimeout
);
...
...
@@ -767,11 +537,9 @@ void main() {
});
test
(
'remote error'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
return
makeMockResponse
(<
String
,
dynamic
>{
'message'
:
'This is a failure'
,
},
isError:
true
);
});
fakeClient
.
responses
[
'waitFor'
]
=
makeFakeResponse
(<
String
,
dynamic
>{
'message'
:
'This is a failure'
,
},
isError:
true
);
try
{
await
driver
.
waitFor
(
find
.
byTooltip
(
'foo'
));
fail
(
'expected an exception'
);
...
...
@@ -782,11 +550,9 @@ void main() {
});
test
(
'uncaught remote error'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
return
Future
<
Map
<
String
,
dynamic
>>.
error
(
rpc
.
RpcException
(
9999
,
'test error'
),
);
});
fakeClient
.
artificialExtensionDelay
=
Future
<
void
>.
error
(
vms
.
RPCError
(
'callServiceExtension'
,
9999
,
'test error'
),
);
expect
(
driver
.
waitFor
(
find
.
byTooltip
(
'foo'
)),
throwsDriverError
);
});
...
...
@@ -804,52 +570,47 @@ void main() {
});
group
(
'VMServiceFlutterDriver with custom timeout'
,
()
{
MockVMServiceClient
mock
Client
;
MockPeer
mockPeer
;
MockIsolate
mock
Isolate
;
FakeVmService
fake
Client
;
FakeVM
fakeVM
;
FakeIsolate
fake
Isolate
;
VMServiceFlutterDriver
driver
;
setUp
(()
{
mockClient
=
MockVMServiceClient
();
mockPeer
=
MockPeer
();
mockIsolate
=
MockIsolate
();
driver
=
VMServiceFlutterDriver
.
connectedTo
(
mockClient
,
mockPeer
,
mockIsolate
);
fakeIsolate
=
FakeIsolate
();
fakeVM
=
FakeVM
(
fakeIsolate
);
fakeClient
=
FakeVmService
(
fakeVM
);
driver
=
VMServiceFlutterDriver
.
connectedTo
(
fakeClient
,
fakeIsolate
);
fakeClient
.
responses
[
'get_health'
]
=
makeFakeResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
});
});
test
(
'GetHealth has no default timeout'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
String
>{
'command'
:
'get_health'
,
});
return
makeMockResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
});
});
await
driver
.
checkHealth
();
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_health}'
],
);
});
test
(
'does not interfere with explicit timeouts'
,
()
async
{
when
(
mockIsolate
.
invokeExtension
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
{
expect
(
i
.
positionalArguments
[
1
],
<
String
,
String
>{
'command'
:
'get_health'
,
'timeout'
:
_kSerializedTestTimeout
,
});
return
makeMockResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
});
});
await
driver
.
checkHealth
(
timeout:
_kTestTimeout
);
expect
(
fakeClient
.
commandLog
,
<
String
>[
'ext.flutter.driver {command: get_health, timeout:
$_kSerializedTestTimeout
}'
],
);
});
});
group
(
'WebFlutterDriver'
,
()
{
MockFlutterWebConnection
mock
Connection
;
FakeFlutterWebConnection
fake
Connection
;
WebFlutterDriver
driver
;
setUp
(()
{
mockConnection
=
Mock
FlutterWebConnection
();
when
(
mockConnection
.
supportsTimelineAction
).
thenReturn
(
true
)
;
driver
=
WebFlutterDriver
.
connectedTo
(
mock
Connection
);
fakeConnection
=
Fake
FlutterWebConnection
();
fakeConnection
.
supportsTimelineAction
=
true
;
driver
=
WebFlutterDriver
.
connectedTo
(
fake
Connection
);
});
test
(
'closes connection'
,
()
async
{
when
(
mockConnection
.
close
()).
thenAnswer
((
Invocation
invocation
)
=>
Future
<
dynamic
>.
value
(
null
));
await
driver
.
close
();
});
...
...
@@ -860,294 +621,177 @@ void main() {
});
test
(
'finds by ValueKey'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'foo'
,
'keyValueType'
:
'String'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
fakeConnection
.
responses
[
'tap'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{}));
await
driver
.
tap
(
find
.
byValueKey
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"tap"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"foo"
,
"keyValueType"
:
"String"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'BySemanticsLabel'
,
()
{
test
(
'finds by Semantic label using String'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'BySemanticsLabel'
,
'label'
:
'foo'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
fakeConnection
.
responses
[
'tap'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{}));
await
driver
.
tap
(
find
.
bySemanticsLabel
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"tap"
,
"timeout"
:
"1234"
,
"finderType"
:
"BySemanticsLabel"
,
"label"
:
"foo"
}
') 0:00:01.234000'''
,
]);
});
test
(
'finds by Semantic label using RegExp'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'BySemanticsLabel'
,
'label'
:
'^foo'
,
'isRegExp'
:
'true'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
fakeConnection
.
responses
[
'tap'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{}));
await
driver
.
tap
(
find
.
bySemanticsLabel
(
RegExp
(
'^foo'
)),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"tap"
,
"timeout"
:
"1234"
,
"finderType"
:
"BySemanticsLabel"
,
"label"
:
"^foo"
,
"isRegExp"
:
"true"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'tap'
,
()
{
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
tap
(
null
),
throws
Driver
Error
);
expect
(
driver
.
tap
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the tap command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'tap'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByText'
,
'text'
:
'foo'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
fakeConnection
.
responses
[
'tap'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{}));
await
driver
.
tap
(
find
.
text
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"tap"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByText"
,
"text"
:
"foo"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'getText'
,
()
{
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
getText
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getText
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the getText command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_text'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
String
>{
'text'
:
'hello'
,
}));
});
fakeConnection
.
responses
[
'get_text'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{
'text'
:
'hello'
}));
final
String
result
=
await
driver
.
getText
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
'hello'
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_text"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"123"
,
"keyValueType"
:
"int"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'waitFor'
,
()
{
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
waitFor
(
null
),
throws
Driver
Error
);
expect
(
driver
.
waitFor
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the waitFor command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'waitFor'
,
'finderType'
:
'ByTooltipMessage'
,
'text'
:
'foo'
,
'timeout'
:
_kSerializedTestTimeout
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
fakeConnection
.
responses
[
'waitFor'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{
'text'
:
'hello'
}));
await
driver
.
waitFor
(
find
.
byTooltip
(
'foo'
),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"waitFor"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByTooltipMessage"
,
"text"
:
"foo"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'waitForCondition'
,
()
{
setUp
(()
{
fakeConnection
.
responses
[
'waitForCondition'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{
'text'
:
'hello'
}));
});
test
(
'sends the wait for NoPendingFrameCondition command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'NoPendingFrameCondition'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
await
driver
.
waitForCondition
(
const
NoPendingFrame
(),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"waitForCondition"
,
"timeout"
:
"1234"
,
"conditionName"
:
"NoPendingFrameCondition"
}
') 0:00:01.234000'''
,
]);
});
test
(
'sends the wait for NoPendingPlatformMessages command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'NoPendingPlatformMessagesCondition'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
await
driver
.
waitForCondition
(
const
NoPendingPlatformMessages
(),
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"waitForCondition"
,
"timeout"
:
"1234"
,
"conditionName"
:
"NoPendingPlatformMessagesCondition"
}
') 0:00:01.234000'''
,
]);
});
test
(
'sends the waitForCondition of combined conditions command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'CombinedCondition'
,
'conditions'
:
'[{"conditionName":"NoPendingFrameCondition"},{"conditionName":"NoTransientCallbacksCondition"}]'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
const
SerializableWaitCondition
combinedCondition
=
CombinedCondition
(<
SerializableWaitCondition
>[
NoPendingFrame
(),
NoTransientCallbacks
()]);
const
SerializableWaitCondition
combinedCondition
=
CombinedCondition
(
<
SerializableWaitCondition
>[
NoPendingFrame
(),
NoTransientCallbacks
()],
);
await
driver
.
waitForCondition
(
combinedCondition
,
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"waitForCondition"
,
"timeout"
:
"1234"
,
"conditionName"
:
"CombinedCondition"
,
"conditions"
:
"[{
\"
conditionName
\"
:
\"
NoPendingFrameCondition
\"
},{
\"
conditionName
\"
:
\"
NoTransientCallbacksCondition
\"
}]"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'waitUntilNoTransientCallbacks'
,
()
{
test
(
'sends the waitUntilNoTransientCallbacks command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'waitForCondition'
,
'timeout'
:
_kSerializedTestTimeout
,
'conditionName'
:
'NoTransientCallbacksCondition'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{}));
});
fakeConnection
.
responses
[
'waitForCondition'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{}));
await
driver
.
waitUntilNoTransientCallbacks
(
timeout:
_kTestTimeout
);
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"waitForCondition"
,
"timeout"
:
"1234"
,
"conditionName"
:
"NoTransientCallbacksCondition"
}
') 0:00:01.234000'''
,
]);
});
});
group
(
'getOffset'
,
()
{
setUp
(()
{
fakeConnection
.
responses
[
'get_offset'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
}));
});
test
(
'requires a target reference'
,
()
async
{
expect
(
driver
.
getCenter
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getTopLeft
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getTopRight
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getBottomLeft
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getBottomRight
(
null
),
throws
Driver
Error
);
expect
(
driver
.
getCenter
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getTopLeft
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getTopRight
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getBottomLeft
(
null
),
throws
Assertion
Error
);
expect
(
driver
.
getBottomRight
(
null
),
throws
Assertion
Error
);
});
test
(
'sends the getCenter command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_offset'
,
'offsetType'
:
'center'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
}));
});
final
DriverOffset
result
=
await
driver
.
getCenter
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_offset"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"123"
,
"keyValueType"
:
"int"
,
"offsetType"
:
"center"
}
') 0:00:01.234000'''
,
]);
});
test
(
'sends the getTopLeft command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_offset'
,
'offsetType'
:
'topLeft'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
}));
});
final
DriverOffset
result
=
await
driver
.
getTopLeft
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_offset"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"123"
,
"keyValueType"
:
"int"
,
"offsetType"
:
"topLeft"
}
') 0:00:01.234000'''
,
]);
});
test
(
'sends the getTopRight command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_offset'
,
'offsetType'
:
'topRight'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
}));
});
final
DriverOffset
result
=
await
driver
.
getTopRight
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_offset"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"123"
,
"keyValueType"
:
"int"
,
"offsetType"
:
"topRight"
}
') 0:00:01.234000'''
,
]);
});
test
(
'sends the getBottomLeft command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_offset'
,
'offsetType'
:
'bottomLeft'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
}));
});
final
DriverOffset
result
=
await
driver
.
getBottomLeft
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_offset"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"123"
,
"keyValueType"
:
"int"
,
"offsetType"
:
"bottomLeft"
}
') 0:00:01.234000'''
,
]);
});
test
(
'sends the getBottomRight command'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_offset'
,
'offsetType'
:
'bottomRight'
,
'timeout'
:
_kSerializedTestTimeout
,
'finderType'
:
'ByValueKey'
,
'keyValueString'
:
'123'
,
'keyValueType'
:
'int'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
double
>{
'dx'
:
11
,
'dy'
:
12
,
}));
});
final
DriverOffset
result
=
await
driver
.
getBottomRight
(
find
.
byValueKey
(
123
),
timeout:
_kTestTimeout
);
expect
(
result
,
const
DriverOffset
(
11
,
12
));
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_offset"
,
"timeout"
:
"1234"
,
"finderType"
:
"ByValueKey"
,
"keyValueString"
:
"123"
,
"keyValueType"
:
"int"
,
"offsetType"
:
"bottomRight"
}
') 0:00:01.234000'''
,
]);
});
});
test
(
'checks the health of the driver extension'
,
()
async
{
when
(
mockConnection
.
sendCommand
(
any
,
any
)).
thenAnswer
((
Invocation
i
)
async
{
final
String
script
=
_checkAndEncode
(
i
.
positionalArguments
[
0
]);
expect
(
Map
<
String
,
String
>.
from
(
jsonDecode
(
script
)
as
Map
<
String
,
dynamic
>),
<
String
,
String
>{
'command'
:
'get_health'
,
});
return
jsonEncode
(
await
makeMockResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
}));
});
fakeConnection
.
responses
[
'get_health'
]
=
jsonEncode
(
makeFakeResponse
(<
String
,
dynamic
>{
'status'
:
'ok'
}));
await
driver
.
checkHealth
();
expect
(
fakeConnection
.
commandLog
,
<
String
>[
r''
'window.
$flutterDriver
('
{
"command"
:
"get_health"
}
') null'''
,
]);
});
group
(
'WebFlutterDriver Unimplemented/Unsupported error'
,
()
{
...
...
@@ -1167,7 +811,7 @@ void main() {
});
test
(
'appIsoloate'
,
()
async
{
expect
(()
=>
driver
.
appIsolate
.
invokeExtension
(
'abc'
,
<
String
,
String
>{
'abc'
:
'123'
})
,
expect
(()
=>
driver
.
appIsolate
.
extensionRPCs
,
throwsA
(
isA
<
UnsupportedError
>()));
});
...
...
@@ -1179,13 +823,12 @@ void main() {
});
group
(
'WebFlutterDriver with non-chrome browser'
,
()
{
MockFlutterWebConnection
mock
Connection
;
FakeFlutterWebConnection
fake
Connection
;
WebFlutterDriver
driver
;
setUp
(()
{
mockConnection
=
MockFlutterWebConnection
();
when
(
mockConnection
.
supportsTimelineAction
).
thenReturn
(
false
);
driver
=
WebFlutterDriver
.
connectedTo
(
mockConnection
);
fakeConnection
=
FakeFlutterWebConnection
();
driver
=
WebFlutterDriver
.
connectedTo
(
fakeConnection
);
});
test
(
'tracing'
,
()
async
{
...
...
@@ -1213,31 +856,199 @@ String _checkAndEncode(dynamic script) {
return
script
.
substring
(
_kWebScriptPrefix
.
length
,
script
.
length
-
2
)
as
String
;
}
Future
<
Map
<
String
,
dynamic
>>
makeMock
Response
(
vms
.
Response
makeFake
Response
(
Map
<
String
,
dynamic
>
response
,
{
bool
isError
=
false
,
})
{
return
Future
<
Map
<
String
,
dynamic
>>.
valu
e
(<
String
,
dynamic
>{
return
vms
.
Response
.
pars
e
(<
String
,
dynamic
>{
'isError'
:
isError
,
'response'
:
response
,
});
}
class
MockVMServiceClient
extends
Mock
implements
VMServiceClient
{
}
class
FakeFlutterWebConnection
extends
Fake
implements
FlutterWebConnection
{
@override
bool
supportsTimelineAction
=
false
;
Map
<
String
,
dynamic
>
responses
=
<
String
,
dynamic
>{};
List
<
String
>
commandLog
=
<
String
>[];
@override
Future
<
dynamic
>
sendCommand
(
String
script
,
Duration
duration
)
async
{
commandLog
.
add
(
'
$script
$duration
'
);
final
Map
<
String
,
dynamic
>
decoded
=
jsonDecode
(
_checkAndEncode
(
script
))
as
Map
<
String
,
dynamic
>;
final
dynamic
response
=
responses
[
decoded
[
'command'
]];
assert
(
response
!=
null
,
'Missing
${decoded['command']}
in responses.'
);
return
response
;
}
@override
Future
<
void
>
close
()
async
{
return
;
}
}
class
FakeVmService
extends
Fake
implements
vms
.
VmService
{
FakeVmService
(
this
.
vm
);
FakeVM
vm
;
bool
failOnSetFlag
=
false
;
bool
failOnResumeWith101
=
false
;
final
List
<
String
>
connectionLog
=
<
String
>[];
@override
Future
<
vms
.
VM
>
getVM
()
async
=>
vm
;
@override
Future
<
vms
.
Isolate
>
getIsolate
(
String
isolateId
)
async
{
connectionLog
.
add
(
'getIsolate'
);
if
(
isolateId
==
vm
.
isolate
.
id
)
{
return
vm
.
isolate
;
}
return
null
;
}
@override
Future
<
vms
.
Success
>
resume
(
String
isolateId
,
{
String
step
,
int
frameIndex
})
async
{
assert
(
isolateId
==
vm
.
isolate
.
id
);
connectionLog
.
add
(
'resume'
);
if
(
failOnResumeWith101
)
{
throw
vms
.
RPCError
(
'resume'
,
101
,
''
);
}
return
vms
.
Success
();
}
@override
Future
<
vms
.
Success
>
streamListen
(
String
streamId
)
async
{
connectionLog
.
add
(
'streamListen
$streamId
'
);
return
vms
.
Success
();
}
@override
Future
<
vms
.
Success
>
streamCancel
(
String
streamId
)
async
{
connectionLog
.
add
(
'streamCancel
$streamId
'
);
return
vms
.
Success
();
}
@override
Future
<
vms
.
Response
>
setFlag
(
String
name
,
String
value
)
async
{
connectionLog
.
add
(
'setFlag
$name
$value
'
);
if
(
failOnSetFlag
)
{
throw
Exception
(
'setFlag failed'
);
}
return
vms
.
Success
();
}
@override
Stream
<
vms
.
Event
>
get
onIsolateEvent
async
*
{
connectionLog
.
add
(
'onIsolateEvent'
);
yield
vms
.
Event
(
kind:
vms
.
EventKind
.
kServiceExtensionAdded
,
extensionRPC:
'ext.flutter.driver'
,
timestamp:
0
,
);
}
List
<
String
>
commandLog
=
<
String
>[];
Map
<
String
,
vms
.
Response
>
responses
=
<
String
,
vms
.
Response
>{};
Future
<
void
>
artificialExtensionDelay
;
@override
Future
<
vms
.
Response
>
callServiceExtension
(
String
method
,
{
Map
<
dynamic
,
dynamic
>
args
,
String
isolateId
})
async
{
commandLog
.
add
(
'
$method
$args
'
);
await
artificialExtensionDelay
;
final
vms
.
Response
response
=
responses
[
args
[
'command'
]];
assert
(
response
!=
null
,
'Failed to create a response for
${args['command']}
'
);
return
response
;
}
@override
Future
<
vms
.
Success
>
clearVMTimeline
()
async
{
connectionLog
.
add
(
'clearVMTimeline'
);
return
vms
.
Success
();
}
@override
Future
<
vms
.
FlagList
>
getFlagList
()
async
{
connectionLog
.
add
(
'getFlagList'
);
return
vms
.
FlagList
(
flags:
<
vms
.
Flag
>[]);
}
int
vmTimelineMicros
=
-
1000000
;
bool
incrementMicros
=
false
;
@override
Future
<
vms
.
Timestamp
>
getVMTimelineMicros
()
async
{
connectionLog
.
add
(
'getVMTimelineMicros'
);
if
(
incrementMicros
||
vmTimelineMicros
<
0
)
{
vmTimelineMicros
=
vmTimelineMicros
+
1000001
;
}
return
vms
.
Timestamp
(
timestamp:
vmTimelineMicros
);
}
@override
Future
<
vms
.
Success
>
setVMTimelineFlags
(
List
<
String
>
recordedStreams
)
async
{
connectionLog
.
add
(
'setVMTimelineFlags
$recordedStreams
'
);
return
vms
.
Success
();
}
final
Map
<
int
,
vms
.
Timeline
>
timelineResponses
=
<
int
,
vms
.
Timeline
>{
1
:
vms
.
Timeline
.
parse
(<
String
,
dynamic
>{
'traceEvents'
:
<
dynamic
>[
<
String
,
dynamic
>{
'name'
:
'test event'
,
},
],
'timeOriginMicros'
:
0
,
'timeExtentMicros'
:
999999
,
}),
};
class
MockVM
extends
Mock
implements
VM
{
}
@override
Future
<
vms
.
Timeline
>
getVMTimeline
({
int
timeOriginMicros
,
int
timeExtentMicros
})
async
{
connectionLog
.
add
(
'getVMTimeline
$timeOriginMicros
$timeExtentMicros
'
);
final
vms
.
Timeline
timeline
=
timelineResponses
[
timeOriginMicros
??
1
];
assert
(
timeline
!=
null
,
'Missing entry in timelineResponses[
$timeOriginMicros
]'
);
return
timeline
;
}
class
MockIsolate
extends
Mock
implements
VMRunnableIsolate
{
}
@override
void
dispose
()
{
connectionLog
.
add
(
'dispose'
);
}
class
MockVMPauseStartEvent
extends
Mock
implements
VMPauseStartEvent
{
}
@override
Future
<
void
>
get
onDone
async
{}
}
class
MockVMPauseBreakpointEvent
extends
Mock
implements
VMPauseBreakpointEvent
{
}
class
FakeVM
extends
Fake
implements
vms
.
VM
{
FakeVM
(
this
.
isolate
);
class
MockVMResumeEvent
extends
Mock
implements
VMResumeEvent
{
}
vms
.
Isolate
isolate
;
class
MockFlutterWebConnection
extends
Mock
implements
FlutterWebConnection
{
}
int
numberOfTriesBeforeResolvingIsolate
=
0
;
class
MockPeer
extends
Mock
implements
rpc
.
Peer
{
@override
bool
get
isClosed
=>
false
;
List
<
vms
.
IsolateRef
>
get
isolates
{
numberOfTriesBeforeResolvingIsolate
-=
1
;
return
<
vms
.
Isolate
>[
if
(
numberOfTriesBeforeResolvingIsolate
<=
0
)
isolate
,
];
}
}
class
FakeIsolate
extends
Fake
implements
vms
.
Isolate
{
@override
String
get
number
=>
'123'
;
@override
String
get
id
=>
number
;
@override
vms
.
Event
pauseEvent
;
@override
List
<
String
>
get
extensionRPCs
=>
<
String
>[];
}
\ No newline at end of file
packages/flutter_driver/test/src/real_tests/find_test.dart
View file @
3ecac303
...
...
@@ -7,12 +7,11 @@
import
'package:flutter_driver/driver_extension.dart'
;
import
'package:flutter_driver/flutter_driver.dart'
;
import
'package:flutter_driver/src/common/find.dart'
;
import
'package:mockito/mockito.dart'
;
import
'../../common.dart'
;
void
main
(
)
{
final
MockDeserialize
mockDeserialize
=
Mock
Deserialize
();
final
FakeDeserialize
fakeDeserialize
=
Fake
Deserialize
();
test
(
'Ancestor finder serialize'
,
()
{
const
SerializableFinder
of
=
ByType
(
'Text'
);
...
...
@@ -42,7 +41,7 @@ void main() {
'firstMatchOnly'
:
'true'
,
};
final
Ancestor
a
=
Ancestor
.
deserialize
(
serialized
,
mock
Deserialize
);
final
Ancestor
a
=
Ancestor
.
deserialize
(
serialized
,
fake
Deserialize
);
expect
(
a
.
of
,
isA
<
ByType
>());
expect
(
a
.
matching
,
isA
<
ByValueKey
>());
expect
(
a
.
matchRoot
,
isTrue
);
...
...
@@ -77,7 +76,7 @@ void main() {
'firstMatchOnly'
:
'true'
,
};
final
Descendant
a
=
Descendant
.
deserialize
(
serialized
,
mock
Deserialize
);
final
Descendant
a
=
Descendant
.
deserialize
(
serialized
,
fake
Deserialize
);
expect
(
a
.
of
,
isA
<
ByType
>());
expect
(
a
.
matching
,
isA
<
ByValueKey
>());
expect
(
a
.
matchRoot
,
isTrue
);
...
...
@@ -85,4 +84,4 @@ void main() {
});
}
class
MockDeserialize
with
Mock
,
DeserializeFinderFactory
{
}
class
FakeDeserialize
extends
Fake
with
DeserializeFinderFactory
{
}
packages/flutter_tools/pubspec.yaml
View file @
3ecac303
...
...
@@ -85,7 +85,7 @@ dependencies:
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
petitparser
:
3.1.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
platform
:
3.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
quiver
:
2.1.
3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
quiver
:
2.1.
4+1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_proxy
:
0.1.0+7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -113,4 +113,4 @@ dartdoc:
# Exclude this package from the hosted API docs.
nodoc
:
true
# PUBSPEC CHECKSUM:
cda8
# PUBSPEC CHECKSUM:
3206
packages/fuchsia_remote_debug_protocol/pubspec.yaml
View file @
3ecac303
...
...
@@ -32,7 +32,6 @@ dependencies:
meta
:
1.3.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
path
:
1.8.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
platform
:
3.0.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_span
:
1.8.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stack_trace
:
1.10.0-nullsafety.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
stream_channel
:
2.1.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -42,7 +41,7 @@ dependencies:
test_api
:
0.2.19-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
typed_data
:
1.3.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vector_math
:
2.1.0-nullsafety.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
_client
:
0.2.6+2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webdriver
:
2.1.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
dev_dependencies
:
...
...
@@ -68,6 +67,7 @@ dev_dependencies:
package_config
:
1.9.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pedantic
:
1.10.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pool
:
1.5.0-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
pub_semver
:
1.4.4
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf
:
0.7.5
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_packages_handler
:
2.0.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
shelf_static
:
0.2.8
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
...
...
@@ -75,9 +75,8 @@ dev_dependencies:
source_map_stack_trace
:
2.1.0-nullsafety.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
source_maps
:
0.10.10-nullsafety.2
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
test_core
:
0.3.12-nullsafety.7
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
vm_service
:
4.2.0
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
watcher
:
0.9.7+15
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
webkit_inspection_protocol
:
0.7.3
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
yaml
:
2.2.1
# THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
# PUBSPEC CHECKSUM:
2393
# PUBSPEC CHECKSUM:
81ce
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment