diff --git a/dev/benchmarks/complex_layout/pubspec.yaml b/dev/benchmarks/complex_layout/pubspec.yaml index ea137543ded..6d66b93c8ee 100644 --- a/dev/benchmarks/complex_layout/pubspec.yaml +++ b/dev/benchmarks/complex_layout/pubspec.yaml @@ -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 diff --git a/dev/benchmarks/macrobenchmarks/pubspec.yaml b/dev/benchmarks/macrobenchmarks/pubspec.yaml index b316a151357..ee88edbc9c8 100644 --- a/dev/benchmarks/macrobenchmarks/pubspec.yaml +++ b/dev/benchmarks/macrobenchmarks/pubspec.yaml @@ -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 diff --git a/dev/benchmarks/platform_views_layout/pubspec.yaml b/dev/benchmarks/platform_views_layout/pubspec.yaml index faab7ce9fc8..f106c69133b 100644 --- a/dev/benchmarks/platform_views_layout/pubspec.yaml +++ b/dev/benchmarks/platform_views_layout/pubspec.yaml @@ -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 diff --git a/dev/benchmarks/platform_views_layout_hybrid_composition/pubspec.yaml b/dev/benchmarks/platform_views_layout_hybrid_composition/pubspec.yaml index 33f4366b3c9..3632358b2c3 100644 --- a/dev/benchmarks/platform_views_layout_hybrid_composition/pubspec.yaml +++ b/dev/benchmarks/platform_views_layout_hybrid_composition/pubspec.yaml @@ -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 diff --git a/dev/benchmarks/test_apps/stocks/pubspec.yaml b/dev/benchmarks/test_apps/stocks/pubspec.yaml index 5924800e2c7..fdb02b2a630 100644 --- a/dev/benchmarks/test_apps/stocks/pubspec.yaml +++ b/dev/benchmarks/test_apps/stocks/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/android_semantics_testing/pubspec.yaml b/dev/integration_tests/android_semantics_testing/pubspec.yaml index ddec3514b19..cd68b70e8df 100644 --- a/dev/integration_tests/android_semantics_testing/pubspec.yaml +++ b/dev/integration_tests/android_semantics_testing/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/pubspec.yaml b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/pubspec.yaml index c55eed65efd..85f43620d69 100644 --- a/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/pubspec.yaml +++ b/dev/integration_tests/android_splash_screens/splash_screen_kitchen_sink/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/pubspec.yaml b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/pubspec.yaml index 4c76d68dff3..5ab206e34c2 100644 --- a/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/pubspec.yaml +++ b/dev/integration_tests/android_splash_screens/splash_screen_trans_rotate/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/android_views/pubspec.yaml b/dev/integration_tests/android_views/pubspec.yaml index 78f56c3a803..2dbe4dd4c0c 100644 --- a/dev/integration_tests/android_views/pubspec.yaml +++ b/dev/integration_tests/android_views/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/channels/pubspec.yaml b/dev/integration_tests/channels/pubspec.yaml index 40334c1fd88..08162a9f04a 100644 --- a/dev/integration_tests/channels/pubspec.yaml +++ b/dev/integration_tests/channels/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/external_ui/pubspec.yaml b/dev/integration_tests/external_ui/pubspec.yaml index 19f9191c712..c9fb187a320 100644 --- a/dev/integration_tests/external_ui/pubspec.yaml +++ b/dev/integration_tests/external_ui/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/flavors/pubspec.yaml b/dev/integration_tests/flavors/pubspec.yaml index c0a05bb1f1a..e6a7a595c9e 100644 --- a/dev/integration_tests/flavors/pubspec.yaml +++ b/dev/integration_tests/flavors/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/flutter_driver_screenshot_test/pubspec.yaml b/dev/integration_tests/flutter_driver_screenshot_test/pubspec.yaml index 7a878d65210..a213ff1a9bc 100644 --- a/dev/integration_tests/flutter_driver_screenshot_test/pubspec.yaml +++ b/dev/integration_tests/flutter_driver_screenshot_test/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/flutter_gallery/pubspec.yaml b/dev/integration_tests/flutter_gallery/pubspec.yaml index 82675d06f6c..07add2439b1 100644 --- a/dev/integration_tests/flutter_gallery/pubspec.yaml +++ b/dev/integration_tests/flutter_gallery/pubspec.yaml @@ -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: 672e +# PUBSPEC CHECKSUM: 6c29 diff --git a/dev/integration_tests/hybrid_android_views/pubspec.yaml b/dev/integration_tests/hybrid_android_views/pubspec.yaml index d13d6ec3aea..eeacf03d922 100644 --- a/dev/integration_tests/hybrid_android_views/pubspec.yaml +++ b/dev/integration_tests/hybrid_android_views/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/ios_platform_view_tests/pubspec.yaml b/dev/integration_tests/ios_platform_view_tests/pubspec.yaml index 9c520610b09..e192175d5a6 100644 --- a/dev/integration_tests/ios_platform_view_tests/pubspec.yaml +++ b/dev/integration_tests/ios_platform_view_tests/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/platform_interaction/pubspec.yaml b/dev/integration_tests/platform_interaction/pubspec.yaml index d3b434645e8..c9e08db24cc 100644 --- a/dev/integration_tests/platform_interaction/pubspec.yaml +++ b/dev/integration_tests/platform_interaction/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/release_smoke_test/pubspec.yaml b/dev/integration_tests/release_smoke_test/pubspec.yaml index 43d2f452d10..2af4299cfaf 100644 --- a/dev/integration_tests/release_smoke_test/pubspec.yaml +++ b/dev/integration_tests/release_smoke_test/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/ui/pubspec.yaml b/dev/integration_tests/ui/pubspec.yaml index 60fdf1c68a2..ed411e258d7 100644 --- a/dev/integration_tests/ui/pubspec.yaml +++ b/dev/integration_tests/ui/pubspec.yaml @@ -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 diff --git a/dev/integration_tests/ui/test_driver/license_check_test.dart b/dev/integration_tests/ui/test_driver/license_check_test.dart index 38169a89c76..3e1fce9a315 100644 --- a/dev/integration_tests/ui/test_driver/license_check_test.dart +++ b/dev/integration_tests/ui/test_driver/license_check_test.dart @@ -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 _streamSubscription; - - Future 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 tearDown() async { - if (_streamSubscription != null) { - await _streamSubscription.cancel(); - } - } -} diff --git a/dev/integration_tests/web_e2e_tests/pubspec.yaml b/dev/integration_tests/web_e2e_tests/pubspec.yaml index 9e114b7d27f..94d0f9fdf7a 100644 --- a/dev/integration_tests/web_e2e_tests/pubspec.yaml +++ b/dev/integration_tests/web_e2e_tests/pubspec.yaml @@ -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 diff --git a/examples/hello_world/pubspec.yaml b/examples/hello_world/pubspec.yaml index 4a1887a3139..ae5037e3e0e 100644 --- a/examples/hello_world/pubspec.yaml +++ b/examples/hello_world/pubspec.yaml @@ -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 diff --git a/examples/platform_channel/pubspec.yaml b/examples/platform_channel/pubspec.yaml index 7a7bd8189d8..375e8a04bcb 100644 --- a/examples/platform_channel/pubspec.yaml +++ b/examples/platform_channel/pubspec.yaml @@ -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 diff --git a/examples/platform_channel_swift/pubspec.yaml b/examples/platform_channel_swift/pubspec.yaml index dad11087cd4..aea191f5807 100644 --- a/examples/platform_channel_swift/pubspec.yaml +++ b/examples/platform_channel_swift/pubspec.yaml @@ -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 diff --git a/packages/_flutter_web_build_script/pubspec.yaml b/packages/_flutter_web_build_script/pubspec.yaml index c413170c5cd..9b855f92007 100644 --- a/packages/_flutter_web_build_script/pubspec.yaml +++ b/packages/_flutter_web_build_script/pubspec.yaml @@ -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 diff --git a/packages/flutter_driver/lib/src/driver/driver.dart b/packages/flutter_driver/lib/src/driver/driver.dart index 1703b5e293b..b049ba5c5e3 100644 --- a/packages/flutter_driver/lib/src/driver/driver.dart +++ b/packages/flutter_driver/lib/src/driver/driver.dart @@ -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. - VMIsolate 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(); diff --git a/packages/flutter_driver/lib/src/driver/vmservice_driver.dart b/packages/flutter_driver/lib/src/driver/vmservice_driver.dart index 2074f7ee411..726cfff5d66 100644 --- a/packages/flutter_driver/lib/src/driver/vmservice_driver.dart +++ b/packages/flutter_driver/lib/src/driver/vmservice_driver.dart @@ -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 refs = - await fuchsiaConnection.getMainIsolatesByPattern(fuchsiaModuleTarget); + final fuchsia.FuchsiaRemoteConnection fuchsiaConnection = await FuchsiaCompat.connect(); + final List 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 _waitForRootIsolate() async { - bool _checkIsolate(VMIsolateRef ref) => ref.number == isolateNumber; + Future _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.delayed(_kPauseBetweenReconnectAttempts); continue; @@ -111,7 +107,7 @@ class VMServiceFlutterDriver extends FlutterDriver { } } - final VMIsolateRef isolateRef = await _warnIfSlow( + final vms.IsolateRef isolateRef = await _warnIfSlow( 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 resumeLeniently() async { + Future resumeLeniently() async { _log('Attempting to resume isolate'); // Let subsequent isolates start automatically. try { - final Map result = - await connection.peer.sendRequest('setFlag', { - 'name': 'pause_isolates_on_start', - 'value': 'false', - }) as Map; - 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 waitForServiceExtension() async { - final Future extensionAlreadyAdded = isolateRef - .loadRunnable() - .then((VMIsolate isolate) async { - if (isolate.extensionRpcs.contains(_flutterExtensionMethodName)) { + await client.streamListen(vms.EventStreams.kIsolate); + + final Future 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 extensionAdded = Completer(); - StreamSubscription isolateAddedSubscription; - isolateAddedSubscription = isolate.onExtensionAdded.listen( - (String extensionName) { - if (extensionName == _flutterExtensionMethodName) { + StreamSubscription 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(>[ 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 enableIsolateStreams() async { - await connection.peer.sendRequest('streamListen', { - 'streamId': 'Isolate', - }); + await isolateAddedSubscription.cancel(); + await client.streamCancel(vms.EventStreams.kIsolate); } // Attempt to resume isolate if it was paused - if (isolate.pauseEvent is VMPauseStartEvent) { + if (isolate.pauseEvent.kind == vms.EventKind.kPauseStart) { _log('Isolate is paused at start.'); await resumeLeniently(); - } else if (isolate.pauseEvent is VMPauseExitEvent || - isolate.pauseEvent is VMPauseBreakpointEvent || - isolate.pauseEvent is VMPauseExceptionEvent || - isolate.pauseEvent is VMPauseInterruptedEvent) { + } else if (isolate.pauseEvent.kind == vms.EventKind.kPauseExit || + isolate.pauseEvent.kind == vms.EventKind.kPauseBreakpoint || + 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( @@ -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 _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(); - } + final vms.VmService _serviceClient; @override - VMIsolate get appIsolate => _appIsolate; - - @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 [VMIsolate] to call these extension methods via + /// you can use this [vms.Isolate] to call these extension methods via /// [invokeExtension]. - final VMIsolate _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 serialized = command.serialize(); _logCommunication('>>> $serialized'); - final Future> future = _appIsolate.invokeExtension( + final Future> future = _serviceClient.callServiceExtension( _flutterExtensionMethodName, - serialized, - ).then>((Object value) => value as Map); + isolateId: _appIsolate.id, + args: serialized, + ).then>((vms.Response value) => value.json); response = await _warnIfSlow>( future: future, timeout: command.timeout ?? kUnusuallyLongTimeout, @@ -399,21 +344,20 @@ class VMServiceFlutterDriver extends FlutterDriver { Future> screenshot() async { await Future.delayed(const Duration(seconds: 2)); - final Map result = await _peer.sendRequest('_flutter.screenshot') as Map; - 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>> getVmFlags() async { - await _restorePeerConnectionIfNeeded(); - final Map result = await _peer.sendRequest('getFlagList') as Map; + final vms.FlagList result = await _serviceClient.getFlagList(); return result != null - ? (result['flags'] as List).cast>() + ? result.flags.map((vms.Flag flag) => flag.toJson()).toList() : const >[]; } - Future> _getVMTimelineMicros() async { - return await _peer.sendRequest('getVMTimelineMicros') as Map; + Future _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( - future: _peer.sendRequest(_setVMTimelineFlagsMethodName, { - 'recordedStreams': _timelineStreamsToString(streams), - }), + await _warnIfSlow( + 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( - future: _peer.sendRequest(_setVMTimelineFlagsMethodName, {'recordedStreams': '[]'}), + await _warnIfSlow( + future: _serviceClient.setVMTimelineFlags(const []), 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); + 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> chunks = >[]; do { - final Map chunk = await _peer.sendRequest(_getVMTimelineMethodName, { - '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; - 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 startTimestamp = await _getVMTimelineMicros(); + final vms.Timestamp startTimestamp = await _getVMTimelineMicros(); await startTracing(streams: streams); await action(); - final Map 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( - future: _peer.sendRequest(_clearVMTimelineMethodName, {}), + await _warnIfSlow( + 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 forceGC() async { try { - await _peer - .sendRequest(_collectAllGarbageMethodName, { - '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 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 pathSegments = [ @@ -647,40 +554,32 @@ 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 _waitAndConnect( - String url, {Map headers}) async { +Future _waitAndConnect(String url, Map headers) async { final String webSocketUrl = _getWebSocketUrl(url); int attempts = 0; + WebSocket socket; 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(), + 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) + await socket?.close(); + if (attempts > 5) { _log('It is taking an unusually long time to connect to the VM...'); + } attempts += 1; await Future.delayed(_kPauseBetweenReconnectAttempts); } @@ -694,8 +593,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 streams) { - final String contents = streams.map((TimelineStream stream) { +List _timelineStreamsToString(List streams) { + return streams.map((TimelineStream stream) { switch (stream) { case TimelineStream.all: return 'all'; case TimelineStream.api: return 'API'; @@ -710,8 +609,7 @@ String _timelineStreamsToString(List streams) { default: throw 'Unknown timeline stream $stream'; } - }).join(', '); - return '[$contents]'; + }).toList(); } void _log(String message) { @@ -736,24 +634,5 @@ Future _warnIfSlow({ 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 Function( - String url, {Map headers}); +/// A function that connects to a Dart VM service given the `url` and `headers`. +typedef VMServiceConnectFunction = Future Function(String url, Map headers); diff --git a/packages/flutter_driver/lib/src/driver/web_driver.dart b/packages/flutter_driver/lib/src/driver/web_driver.dart index 961cb172cc9..2126b75e3ed 100644 --- a/packages/flutter_driver/lib/src/driver/web_driver.dart +++ b/packages/flutter_driver/lib/src/driver/web_driver.dart @@ -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 - VMIsolate 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; diff --git a/packages/flutter_driver/pubspec.yaml b/packages/flutter_driver/pubspec.yaml index dbff898a16c..0988e0e36aa 100644 --- a/packages/flutter_driver/pubspec.yaml +++ b/packages/flutter_driver/pubspec.yaml @@ -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 diff --git a/packages/flutter_driver/test/common.dart b/packages/flutter_driver/test/common.dart index 8e7845825a8..70b555d9df7 100644 --- a/packages/flutter_driver/test/common.dart +++ b/packages/flutter_driver/test/common.dart @@ -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()); + +/// Matcher for functions that throw [AssertionError]. +final Matcher throwsAssertionError = throwsA(isA()); diff --git a/packages/flutter_driver/test/flutter_driver_test.dart b/packages/flutter_driver/test/flutter_driver_test.dart index 9fcd8b58033..59db708fd68 100644 --- a/packages/flutter_driver/test/flutter_driver_test.dart +++ b/packages/flutter_driver/test/flutter_driver_test.dart @@ -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.value(mockVM)); - when(mockVM.isolates).thenReturn([mockIsolate]); - when(mockIsolate.loadRunnable()).thenAnswer((_) => Future.value(mockIsolate)); - when(mockIsolate.extensionRpcs).thenReturn([]); - when(mockIsolate.onExtensionAdded).thenAnswer((Invocation invocation) { - return Stream.fromIterable(['ext.flutter.driver']); - }); - when(mockIsolate.invokeExtension(any, any)).thenAnswer( - (Invocation invocation) => makeMockResponse({'status': 'ok'})); - vmServiceConnectFunction = (String url, {Map headers}) { - return Future.value( - VMServiceClientConnection(mockClient, mockPeer) - ); + fakeIsolate = FakeIsolate(); + fakeVM = FakeVM(fakeIsolate); + fakeClient = FakeVmService(fakeVM); + vmServiceConnectFunction = (String url, Map headers) async { + return fakeClient; }; + fakeClient.responses['get_health'] = makeFakeResponse({'status': 'ok'}); }); tearDown(() async { restoreVmServiceConnectFunction(); }); + + test('throws after retries if no isolate', () async { + fakeVM.numberOfTriesBeforeResolvingIsolate = 10000; + FakeAsync().run((FakeAsync time) { + FlutterDriver.connect(dartVmServiceUrl: ''); + time.elapse(kUnusuallyLongTimeout); + }); + expect(log, [ + '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, + [ + '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, + [ + 'getIsolate', + 'setFlag pause_isolates_on_start false', + 'resume', + 'streamListen Isolate', + 'getIsolate', + 'onIsolateEvent', + 'streamCancel Isolate', + ], + ); + }); + test('connects to isolate paused at start', () async { - final List connectionLog = []; - 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.value(null); - }); - when(mockIsolate.onExtensionAdded).thenAnswer((Invocation invocation) { - connectionLog.add('onExtensionAdded'); - return Stream.fromIterable(['ext.flutter.driver']); - }); + 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, ['setFlag', 'resume', 'streamListen', 'onExtensionAdded']); + expect( + fakeClient.connectionLog, + [ + '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.value(null); - }); - when(mockIsolate.onExtensionAdded).thenAnswer((Invocation invocation) { - return Stream.fromIterable(['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.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.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(['ext.flutter.driver']); - when(mockIsolate.onExtensionAdded).thenAnswer((Invocation invocation) { - return const Stream.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 actualHeaders; - vmServiceConnectFunction = (String url, {Map headers}) { - actualHeaders = headers; - return Future.value( - VMServiceClientConnection(mockClient, mockPeer) - ); - }; - - final Map expectedHeaders = {'header-key': 'header-value'}; - final FlutterDriver driver = await FlutterDriver.connect( - dartVmServiceUrl: '', headers: expectedHeaders); - expect(driver, isNotNull); - expect(actualHeaders, equals(expectedHeaders)); - }); }); group('VMServiceFlutterDriver', () { - MockVMServiceClient mockClient; - MockPeer mockPeer; - MockIsolate mockIsolate; + FakeVmService fakeClient; + FakeVM fakeVM; + FakeIsolate fakeIsolate; 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({}); }); test('checks the health of the driver extension', () async { - when(mockIsolate.invokeExtension(any, any)).thenAnswer( - (Invocation invocation) => makeMockResponse({'status': 'ok'})); + fakeClient.responses['get_health'] = makeFakeResponse({'status': 'ok'}); final Health result = await driver.checkHealth(); expect(result.status, HealthStatus.ok); }); test('closes connection', () async { - when(mockClient.close()).thenAnswer((Invocation invocation) => Future.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], { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': 'foo', - 'keyValueType': 'String', - }); - return makeMockResponse({}); - }); await driver.tap(find.byValueKey('foo'), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'BySemanticsLabel', - 'label': 'foo', - }); - return makeMockResponse({}); - }); await driver.tap(find.bySemanticsLabel('foo'), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'BySemanticsLabel', - 'label': '^foo', - 'isRegExp': 'true', - }); - return makeMockResponse({}); - }); await driver.tap(find.bySemanticsLabel(RegExp('^foo')), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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), throwsDriverError); + expect(driver.tap(null), throwsAssertionError); }); test('sends the tap command', () async { - when(mockIsolate.invokeExtension(any, any)).thenAnswer((Invocation i) { - expect(i.positionalArguments[1], { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByText', - 'text': 'foo', - }); - return makeMockResponse({}); - }); await driver.tap(find.text('foo'), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + 'ext.flutter.driver {command: tap, timeout: $_kSerializedTestTimeout, finderType: ByText, text: foo}', + ]); }); }); group('getText', () { test('requires a target reference', () async { - expect(driver.getText(null), throwsDriverError); + expect(driver.getText(null), throwsAssertionError); }); test('sends the getText command', () async { - when(mockIsolate.invokeExtension(any, any)).thenAnswer((Invocation i) { - expect(i.positionalArguments[1], { - 'command': 'get_text', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return makeMockResponse({ - 'text': 'hello', - }); - }); + fakeClient.responses['get_text'] = makeFakeResponse({'text': 'hello'}); final String result = await driver.getText(find.byValueKey(123), timeout: _kTestTimeout); expect(result, 'hello'); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_layer_tree', - 'timeout': _kSerializedTestTimeout, - }); - return makeMockResponse({ - 'tree': 'hello', - }); + fakeClient.responses['get_layer_tree'] = makeFakeResponse({ + 'tree': 'hello', }); final LayerTree result = await driver.getLayerTree(timeout: _kTestTimeout); final LayerTree referenceTree = LayerTree.fromJson({ 'tree': 'hello', }); expect(result.tree, referenceTree.tree); + expect(fakeClient.commandLog, [ + 'ext.flutter.driver {command: get_layer_tree, timeout: $_kSerializedTestTimeout}', + ]); }); }); group('waitFor', () { test('requires a target reference', () async { - expect(driver.waitFor(null), throwsDriverError); + expect(driver.waitFor(null), throwsAssertionError); }); test('sends the waitFor command', () async { - when(mockIsolate.invokeExtension(any, any)).thenAnswer((Invocation i) { - expect(i.positionalArguments[1], { - 'command': 'waitFor', - 'finderType': 'ByTooltipMessage', - 'text': 'foo', - 'timeout': _kSerializedTestTimeout, - }); - return makeMockResponse({}); - }); + fakeClient.responses['waitFor'] = makeFakeResponse({}); await driver.waitFor(find.byTooltip('foo'), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_diagnostics_tree', - 'diagnosticsType': 'widget', - 'finderType': 'ByTooltipMessage', - 'text': 'foo', - 'includeProperties': 'true', - 'subtreeDepth': '0', - 'timeout': _kSerializedTestTimeout, - }); - return makeMockResponse({}); - }); + fakeClient.responses['get_diagnostics_tree'] = makeFakeResponse({}); await driver.getWidgetDiagnostics(find.byTooltip('foo'), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_diagnostics_tree', - 'diagnosticsType': 'renderObject', - 'finderType': 'ByTooltipMessage', - 'text': 'foo', - 'includeProperties': 'true', - 'subtreeDepth': '0', - 'timeout': _kSerializedTestTimeout, - }); - return makeMockResponse({}); - }); + fakeClient.responses['get_diagnostics_tree'] = makeFakeResponse({}); await driver.getRenderObjectDiagnostics(find.byTooltip('foo'), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'NoPendingFrameCondition', - }); - return makeMockResponse({}); - }); + fakeClient.responses['waitForCondition'] = makeFakeResponse({}); await driver.waitForCondition(const NoPendingFrame(), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'NoPendingPlatformMessagesCondition', - }); - return makeMockResponse({}); - }); + fakeClient.responses['waitForCondition'] = makeFakeResponse({}); await driver.waitForCondition(const NoPendingPlatformMessages(), timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'CombinedCondition', - 'conditions': '[{"conditionName":"NoPendingFrameCondition"},{"conditionName":"NoTransientCallbacksCondition"}]', - }); - return makeMockResponse({}); - }); + fakeClient.responses['waitForCondition'] = makeFakeResponse({}); const SerializableWaitCondition combinedCondition = CombinedCondition([NoPendingFrame(), NoTransientCallbacks()]); await driver.waitForCondition(combinedCondition, timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'NoTransientCallbacksCondition', - }); - return makeMockResponse({}); - }); + fakeClient.responses['waitForCondition'] = makeFakeResponse({}); await driver.waitUntilNoTransientCallbacks(timeout: _kTestTimeout); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'waitForCondition', - 'conditionName': 'FirstFrameRasterizedCondition', - }); - return makeMockResponse({}); - }); + fakeClient.responses['waitForCondition'] = makeFakeResponse({}); await driver.waitUntilFirstFrameRasterized(); + expect(fakeClient.commandLog, [ + 'ext.flutter.driver {command: waitForCondition, conditionName: FirstFrameRasterizedCondition}', + ]); }); }); group('getOffset', () { + setUp(() { + fakeClient.responses['get_offset'] = makeFakeResponse({ + 'dx': 11, + 'dy': 12, + }); + }); + test('requires a target reference', () async { - expect(driver.getCenter(null), throwsDriverError); - expect(driver.getTopLeft(null), throwsDriverError); - expect(driver.getTopRight(null), throwsDriverError); - expect(driver.getBottomLeft(null), throwsDriverError); - expect(driver.getBottomRight(null), throwsDriverError); + expect(driver.getCenter(null), throwsAssertionError); + expect(driver.getTopLeft(null), throwsAssertionError); + expect(driver.getTopRight(null), throwsAssertionError); + expect(driver.getBottomLeft(null), throwsAssertionError); + expect(driver.getBottomRight(null), throwsAssertionError); }); test('sends the getCenter command', () async { - when(mockIsolate.invokeExtension(any, any)).thenAnswer((Invocation i) { - expect(i.positionalArguments[1], { - 'command': 'get_offset', - 'offsetType': 'center', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return makeMockResponse({ - 'dx': 11, - 'dy': 12, - }); - }); final DriverOffset result = await driver.getCenter(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_offset', - 'offsetType': 'topLeft', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return makeMockResponse({ - 'dx': 11, - 'dy': 12, - }); - }); final DriverOffset result = await driver.getTopLeft(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_offset', - 'offsetType': 'topRight', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return makeMockResponse({ - 'dx': 11, - 'dy': 12, - }); - }); final DriverOffset result = await driver.getTopRight(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_offset', - 'offsetType': 'bottomLeft', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return makeMockResponse({ - 'dx': 11, - 'dy': 12, - }); - }); final DriverOffset result = await driver.getBottomLeft(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeClient.commandLog, [ + '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], { - 'command': 'get_offset', - 'offsetType': 'bottomRight', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return makeMockResponse({ - 'dx': 11, - 'dy': 12, - }); - }); final DriverOffset result = await driver.getBottomRight(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeClient.commandLog, [ + '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({})))) - .thenAnswer((Invocation invocation) async { - clearWasCalled = true; - return null; - }); await driver.clearTimeline(); - expect(clearWasCalled, isTrue); + expect(fakeClient.connectionLog, contains('clearVMTimeline')); }); }); group('traceAction', () { - List log; - - setUp(() async { - log = []; - - when(mockPeer.sendRequest('clearVMTimeline', argThat(equals({})))) - .thenAnswer((Invocation invocation) async { - log.add('clear'); - return null; - }); - - when(mockPeer.sendRequest('getVMTimelineMicros')) - .thenAnswer((Invocation invocation) async { - log.add('getVMTimelineMicros'); - return {}; - }); - - when(mockPeer.sendRequest('setVMTimelineFlags', argThat(equals({'recordedStreams': '[all]'})))) - .thenAnswer((Invocation invocation) async { - log.add('startTracing'); - return null; - }); - - when(mockPeer.sendRequest('setVMTimelineFlags', argThat(equals({'recordedStreams': '[]'})))) - .thenAnswer((Invocation invocation) async { - log.add('stopTracing'); - return null; - }); - - when(mockPeer.sendRequest('getVMTimeline')).thenAnswer((Invocation invocation) async { - log.add('download'); - return { - 'traceEvents': [ - { - 'name': 'test event', - }, - ], - }; - }); - }); - test('without clearing timeline', () async { final Timeline timeline = await driver.traceAction(() async { - log.add('action'); + fakeClient.connectionLog.add('action'); }, retainPriorEvents: true); - expect(log, const [ - 'startTracing', + expect(fakeClient.connectionLog, const [ + 'setVMTimelineFlags [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 { - log.add('action'); + fakeClient.connectionLog.add('action'); }); - expect(log, const [ - 'clear', + expect(fakeClient.connectionLog, const [ + 'clearVMTimeline', 'getVMTimelineMicros', - 'startTracing', + 'setVMTimelineFlags [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 { - if (count++ == 0) - 'timestamp': 0 - else - 'timestamp': 1000001, - }; - }); - when(mockPeer.sendRequest('getVMTimeline', argThat(equals({ - 'timeOriginMicros': 0, - 'timeExtentMicros': 999999 - })))) - .thenAnswer((Invocation invocation) async { - log.add('download 1'); - return { - 'traceEvents': [ - { - 'name': 'test event 1', - }, - ], - }; - }); - when(mockPeer.sendRequest('getVMTimeline', argThat(equals({ + fakeClient.incrementMicros = true; + fakeClient.timelineResponses[1000001] = vms.Timeline.parse({ + 'traceEvents': [ + { + 'name': 'test event 2', + }, + ], 'timeOriginMicros': 1000000, 'timeExtentMicros': 999999, - })))) - .thenAnswer((Invocation invocation) async { - log.add('download 2'); - return { - 'traceEvents': [ - { - 'name': 'test event 2', - }, - ], - }; - }); - - + }); final Timeline timeline = await driver.traceAction(() async { - log.add('action'); + fakeClient.connectionLog.add('action'); }); - expect(log, const [ - 'clear', + expect(fakeClient.connectionLog, const [ + 'clearVMTimeline', 'getVMTimelineMicros', - 'startTracing', + 'setVMTimelineFlags [all]', 'action', 'getVMTimelineMicros', - 'stopTracing', - 'download 1', - 'download 2', + 'getFlagList', + 'setVMTimelineFlags []', + 'getVMTimeline 1 999999', + 'getVMTimeline 1000001 999999', ]); expect(timeline.events.map((TimelineEvent event) => event.name), [ - '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 {}; - }); - - when(mockPeer.sendRequest('setVMTimelineFlags', argThat(equals({'recordedStreams': '[Dart, GC, Compiler]'})))) - .thenAnswer((Invocation invocation) async { - startTracingCalled = true; - return null; - }); - - when(mockPeer.sendRequest('setVMTimelineFlags', argThat(equals({'recordedStreams': '[]'})))) - .thenAnswer((Invocation invocation) async { - stopTracingCalled = true; - return null; - }); - - when(mockPeer.sendRequest('getVMTimeline')).thenAnswer((Invocation invocation) async { - return { - 'traceEvents': [ - { - '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, [ + '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>().future; - }); + fakeClient.artificialExtensionDelay = Completer().future; FakeAsync().run((FakeAsync time) { driver.waitFor(find.byTooltip('foo')); expect(log, []); @@ -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>().future; - }); + fakeClient.artificialExtensionDelay = Completer().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({ - 'message': 'This is a failure', - }, isError: true); - }); + fakeClient.responses['waitFor'] = makeFakeResponse({ + '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>.error( - rpc.RpcException(9999, 'test error'), - ); - }); + fakeClient.artificialExtensionDelay = Future.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 mockClient; - MockPeer mockPeer; - MockIsolate mockIsolate; + FakeVmService fakeClient; + FakeVM fakeVM; + FakeIsolate fakeIsolate; 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({'status': 'ok'}); }); test('GetHealth has no default timeout', () async { - when(mockIsolate.invokeExtension(any, any)).thenAnswer((Invocation i) { - expect(i.positionalArguments[1], { - 'command': 'get_health', - }); - return makeMockResponse({'status': 'ok'}); - }); await driver.checkHealth(); + expect( + fakeClient.commandLog, + ['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], { - 'command': 'get_health', - 'timeout': _kSerializedTestTimeout, - }); - return makeMockResponse({'status': 'ok'}); - }); await driver.checkHealth(timeout: _kTestTimeout); + expect( + fakeClient.commandLog, + ['ext.flutter.driver {command: get_health, timeout: $_kSerializedTestTimeout}'], + ); }); }); group('WebFlutterDriver', () { - MockFlutterWebConnection mockConnection; + FakeFlutterWebConnection fakeConnection; WebFlutterDriver driver; setUp(() { - mockConnection = MockFlutterWebConnection(); - when(mockConnection.supportsTimelineAction).thenReturn(true); - driver = WebFlutterDriver.connectedTo(mockConnection); + fakeConnection = FakeFlutterWebConnection(); + fakeConnection.supportsTimelineAction = true; + driver = WebFlutterDriver.connectedTo(fakeConnection); }); test('closes connection', () async { - when(mockConnection.close()).thenAnswer((Invocation invocation) => Future.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.from(jsonDecode(script) as Map), { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': 'foo', - 'keyValueType': 'String', - }); - return jsonEncode(await makeMockResponse({})); - }); + fakeConnection.responses['tap'] = jsonEncode(makeFakeResponse({})); await driver.tap(find.byValueKey('foo'), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'BySemanticsLabel', - 'label': 'foo', - }); - return jsonEncode(await makeMockResponse({})); - }); + fakeConnection.responses['tap'] = jsonEncode(makeFakeResponse({})); await driver.tap(find.bySemanticsLabel('foo'), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'BySemanticsLabel', - 'label': '^foo', - 'isRegExp': 'true', - }); - return jsonEncode(await makeMockResponse({})); - }); + fakeConnection.responses['tap'] = jsonEncode(makeFakeResponse({})); await driver.tap(find.bySemanticsLabel(RegExp('^foo')), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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), throwsDriverError); + expect(driver.tap(null), throwsAssertionError); }); test('sends the tap command', () async { - when(mockConnection.sendCommand(any, any)).thenAnswer((Invocation i) async { - final String script = _checkAndEncode(i.positionalArguments[0]); - expect(Map.from(jsonDecode(script) as Map), { - 'command': 'tap', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByText', - 'text': 'foo', - }); - return jsonEncode(await makeMockResponse({})); - }); + fakeConnection.responses['tap'] = jsonEncode(makeFakeResponse({})); await driver.tap(find.text('foo'), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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), throwsDriverError); + expect(driver.getText(null), throwsAssertionError); }); test('sends the getText command', () async { - when(mockConnection.sendCommand(any, any)).thenAnswer((Invocation i) async { - final String script = _checkAndEncode(i.positionalArguments[0]); - expect(Map.from(jsonDecode(script) as Map), { - 'command': 'get_text', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return jsonEncode(await makeMockResponse({ - 'text': 'hello', - })); - }); + fakeConnection.responses['get_text'] = jsonEncode(makeFakeResponse({'text': 'hello'})); final String result = await driver.getText(find.byValueKey(123), timeout: _kTestTimeout); expect(result, 'hello'); + expect(fakeConnection.commandLog, [ + 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), throwsDriverError); + expect(driver.waitFor(null), throwsAssertionError); }); test('sends the waitFor command', () async { - when(mockConnection.sendCommand(any, any)).thenAnswer((Invocation i) async { - final String script = _checkAndEncode(i.positionalArguments[0]); - expect(Map.from(jsonDecode(script) as Map), { - 'command': 'waitFor', - 'finderType': 'ByTooltipMessage', - 'text': 'foo', - 'timeout': _kSerializedTestTimeout, - }); - return jsonEncode(await makeMockResponse({})); - }); + fakeConnection.responses['waitFor'] = jsonEncode(makeFakeResponse({'text': 'hello'})); await driver.waitFor(find.byTooltip('foo'), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + r'''window.$flutterDriver('{"command":"waitFor","timeout":"1234","finderType":"ByTooltipMessage","text":"foo"}') 0:00:01.234000''', + ]); }); }); group('waitForCondition', () { + setUp(() { + fakeConnection.responses['waitForCondition'] = jsonEncode(makeFakeResponse({'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.from(jsonDecode(script) as Map), { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'NoPendingFrameCondition', - }); - return jsonEncode(await makeMockResponse({})); - }); await driver.waitForCondition(const NoPendingFrame(), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'NoPendingPlatformMessagesCondition', - }); - return jsonEncode(await makeMockResponse({})); - }); await driver.waitForCondition(const NoPendingPlatformMessages(), timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'CombinedCondition', - 'conditions': '[{"conditionName":"NoPendingFrameCondition"},{"conditionName":"NoTransientCallbacksCondition"}]', - }); - return jsonEncode(await makeMockResponse({})); - }); - const SerializableWaitCondition combinedCondition = - CombinedCondition([NoPendingFrame(), NoTransientCallbacks()]); + const SerializableWaitCondition combinedCondition = CombinedCondition( + [NoPendingFrame(), NoTransientCallbacks()], + ); await driver.waitForCondition(combinedCondition, timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'waitForCondition', - 'timeout': _kSerializedTestTimeout, - 'conditionName': 'NoTransientCallbacksCondition', - }); - return jsonEncode(await makeMockResponse({})); - }); + fakeConnection.responses['waitForCondition'] = jsonEncode(makeFakeResponse({})); await driver.waitUntilNoTransientCallbacks(timeout: _kTestTimeout); + expect(fakeConnection.commandLog, [ + r'''window.$flutterDriver('{"command":"waitForCondition","timeout":"1234","conditionName":"NoTransientCallbacksCondition"}') 0:00:01.234000''', + ]); }); }); group('getOffset', () { + setUp(() { + fakeConnection.responses['get_offset'] = jsonEncode(makeFakeResponse({ + 'dx': 11, + 'dy': 12, + })); + }); test('requires a target reference', () async { - expect(driver.getCenter(null), throwsDriverError); - expect(driver.getTopLeft(null), throwsDriverError); - expect(driver.getTopRight(null), throwsDriverError); - expect(driver.getBottomLeft(null), throwsDriverError); - expect(driver.getBottomRight(null), throwsDriverError); + expect(driver.getCenter(null), throwsAssertionError); + expect(driver.getTopLeft(null), throwsAssertionError); + expect(driver.getTopRight(null), throwsAssertionError); + expect(driver.getBottomLeft(null), throwsAssertionError); + expect(driver.getBottomRight(null), throwsAssertionError); }); test('sends the getCenter command', () async { - when(mockConnection.sendCommand(any, any)).thenAnswer((Invocation i) async { - final String script = _checkAndEncode(i.positionalArguments[0]); - expect(Map.from(jsonDecode(script) as Map), { - 'command': 'get_offset', - 'offsetType': 'center', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return jsonEncode(await makeMockResponse({ - 'dx': 11, - 'dy': 12, - })); - }); final DriverOffset result = await driver.getCenter(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'get_offset', - 'offsetType': 'topLeft', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return jsonEncode(await makeMockResponse({ - 'dx': 11, - 'dy': 12, - })); - }); final DriverOffset result = await driver.getTopLeft(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'get_offset', - 'offsetType': 'topRight', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return jsonEncode(await makeMockResponse({ - 'dx': 11, - 'dy': 12, - })); - }); final DriverOffset result = await driver.getTopRight(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'get_offset', - 'offsetType': 'bottomLeft', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return jsonEncode(await makeMockResponse({ - 'dx': 11, - 'dy': 12, - })); - }); final DriverOffset result = await driver.getBottomLeft(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'get_offset', - 'offsetType': 'bottomRight', - 'timeout': _kSerializedTestTimeout, - 'finderType': 'ByValueKey', - 'keyValueString': '123', - 'keyValueType': 'int', - }); - return jsonEncode(await makeMockResponse({ - 'dx': 11, - 'dy': 12, - })); - }); final DriverOffset result = await driver.getBottomRight(find.byValueKey(123), timeout: _kTestTimeout); expect(result, const DriverOffset(11, 12)); + expect(fakeConnection.commandLog, [ + 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.from(jsonDecode(script) as Map), { - 'command': 'get_health', - }); - return jsonEncode(await makeMockResponse({'status': 'ok'})); - }); + fakeConnection.responses['get_health'] = jsonEncode(makeFakeResponse({'status': 'ok'})); await driver.checkHealth(); + expect(fakeConnection.commandLog, [ + 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', {'abc': '123'}), + expect(() => driver.appIsolate.extensionRPCs, throwsA(isA())); }); @@ -1179,13 +823,12 @@ void main() { }); group('WebFlutterDriver with non-chrome browser', () { - MockFlutterWebConnection mockConnection; + FakeFlutterWebConnection fakeConnection; 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> makeMockResponse( +vms.Response makeFakeResponse( Map response, { bool isError = false, }) { - return Future>.value({ + return vms.Response.parse({ 'isError': isError, 'response': response, }); } -class MockVMServiceClient extends Mock implements VMServiceClient { } - -class MockVM extends Mock implements VM { } - -class MockIsolate extends Mock implements VMRunnableIsolate { } - -class MockVMPauseStartEvent extends Mock implements VMPauseStartEvent { } - -class MockVMPauseBreakpointEvent extends Mock implements VMPauseBreakpointEvent { } - -class MockVMResumeEvent extends Mock implements VMResumeEvent { } - -class MockFlutterWebConnection extends Mock implements FlutterWebConnection { } - -class MockPeer extends Mock implements rpc.Peer { +class FakeFlutterWebConnection extends Fake implements FlutterWebConnection { @override - bool get isClosed => false; + bool supportsTimelineAction = false; + + Map responses = {}; + List commandLog = []; + @override + Future sendCommand(String script, Duration duration) async { + commandLog.add('$script $duration'); + final Map decoded = jsonDecode(_checkAndEncode(script)) as Map; + final dynamic response = responses[decoded['command']]; + assert(response != null, 'Missing ${decoded['command']} in responses.'); + return response; + } + + @override + Future close() async { + return; + } } + +class FakeVmService extends Fake implements vms.VmService { + FakeVmService(this.vm); + + FakeVM vm; + bool failOnSetFlag = false; + bool failOnResumeWith101 = false; + + final List connectionLog = []; + + @override + Future getVM() async => vm; + + @override + Future getIsolate(String isolateId) async { + connectionLog.add('getIsolate'); + if (isolateId == vm.isolate.id) { + return vm.isolate; + } + return null; + } + + @override + Future 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 streamListen(String streamId) async { + connectionLog.add('streamListen $streamId'); + return vms.Success(); + } + + @override + Future streamCancel(String streamId) async { + connectionLog.add('streamCancel $streamId'); + return vms.Success(); + } + + @override + Future setFlag(String name, String value) async { + connectionLog.add('setFlag $name $value'); + if (failOnSetFlag) { + throw Exception('setFlag failed'); + } + return vms.Success(); + } + + @override + Stream get onIsolateEvent async* { + connectionLog.add('onIsolateEvent'); + yield vms.Event( + kind: vms.EventKind.kServiceExtensionAdded, + extensionRPC: 'ext.flutter.driver', + timestamp: 0, + ); + } + + List commandLog = []; + Map responses = {}; + Future artificialExtensionDelay; + + @override + Future callServiceExtension(String method, {Map 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 clearVMTimeline() async { + connectionLog.add('clearVMTimeline'); + return vms.Success(); + } + + @override + Future getFlagList() async { + connectionLog.add('getFlagList'); + return vms.FlagList(flags: []); + } + + int vmTimelineMicros = -1000000; + bool incrementMicros = false; + + @override + Future getVMTimelineMicros() async { + connectionLog.add('getVMTimelineMicros'); + if (incrementMicros || vmTimelineMicros < 0) { + vmTimelineMicros = vmTimelineMicros + 1000001; + } + return vms.Timestamp(timestamp: vmTimelineMicros); + } + + @override + Future setVMTimelineFlags(List recordedStreams) async { + connectionLog.add('setVMTimelineFlags $recordedStreams'); + return vms.Success(); + } + + final Map timelineResponses = { + 1: vms.Timeline.parse({ + 'traceEvents': [ + { + 'name': 'test event', + }, + ], + 'timeOriginMicros': 0, + 'timeExtentMicros': 999999, + }), + }; + + @override + Future 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; + } + + @override + void dispose() { + connectionLog.add('dispose'); + } + + @override + Future get onDone async {} +} + +class FakeVM extends Fake implements vms.VM { + FakeVM(this.isolate); + + vms.Isolate isolate; + + int numberOfTriesBeforeResolvingIsolate = 0; + + @override + List get isolates { + numberOfTriesBeforeResolvingIsolate -= 1; + return [ + 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 get extensionRPCs => []; +} \ No newline at end of file diff --git a/packages/flutter_driver/test/src/real_tests/find_test.dart b/packages/flutter_driver/test/src/real_tests/find_test.dart index fccf5b5c93f..9f1c83712bb 100644 --- a/packages/flutter_driver/test/src/real_tests/find_test.dart +++ b/packages/flutter_driver/test/src/real_tests/find_test.dart @@ -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 = MockDeserialize(); + final FakeDeserialize fakeDeserialize = FakeDeserialize(); test('Ancestor finder serialize', () { const SerializableFinder of = ByType('Text'); @@ -42,7 +41,7 @@ void main() { 'firstMatchOnly': 'true', }; - final Ancestor a = Ancestor.deserialize(serialized, mockDeserialize); + final Ancestor a = Ancestor.deserialize(serialized, fakeDeserialize); expect(a.of, isA()); expect(a.matching, isA()); expect(a.matchRoot, isTrue); @@ -77,7 +76,7 @@ void main() { 'firstMatchOnly': 'true', }; - final Descendant a = Descendant.deserialize(serialized, mockDeserialize); + final Descendant a = Descendant.deserialize(serialized, fakeDeserialize); expect(a.of, isA()); expect(a.matching, isA()); expect(a.matchRoot, isTrue); @@ -85,4 +84,4 @@ void main() { }); } -class MockDeserialize with Mock, DeserializeFinderFactory { } +class FakeDeserialize extends Fake with DeserializeFinderFactory { } diff --git a/packages/flutter_tools/lib/src/drive/drive_service.dart b/packages/flutter_tools/lib/src/drive/drive_service.dart index f985df32d46..c646195ea8c 100644 --- a/packages/flutter_tools/lib/src/drive/drive_service.dart +++ b/packages/flutter_tools/lib/src/drive/drive_service.dart @@ -204,6 +204,9 @@ class FlutterDriverService extends DriverService { }) async { return _processUtils.stream([ _dartSdkPath, + 'pub', + 'run', + 'test', ...arguments, testFile, '-rexpanded', diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index de1e2c474b2..fef79a26904 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -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 diff --git a/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart b/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart index 9aa02a5f065..d1cf1e7a6fc 100644 --- a/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart +++ b/packages/flutter_tools/test/general.shard/drive/drive_service_test.dart @@ -146,7 +146,7 @@ void main() { ]); final FakeProcessManager processManager = FakeProcessManager.list([ const FakeCommand( - command: ['dart', '--enable-experiment=non-nullable', 'foo.test', '-rexpanded'], + command: ['dart', 'pub', 'run', 'test', '--enable-experiment=non-nullable', 'foo.test', '-rexpanded'], exitCode: 23, environment: { 'FOO': 'BAR', @@ -175,7 +175,7 @@ void main() { ]); final FakeProcessManager processManager = FakeProcessManager.list([ const FakeCommand( - command: ['dart', 'foo.test', '-rexpanded'], + command: ['dart', 'pub', 'run', 'test', 'foo.test', '-rexpanded'], exitCode: 11, environment: { 'VM_SERVICE_URL': 'http://127.0.0.1:1234/' diff --git a/packages/fuchsia_remote_debug_protocol/pubspec.yaml b/packages/fuchsia_remote_debug_protocol/pubspec.yaml index 24c7f2ba1e7..0017209579a 100644 --- a/packages/fuchsia_remote_debug_protocol/pubspec.yaml +++ b/packages/fuchsia_remote_debug_protocol/pubspec.yaml @@ -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