[flutter_tools] Update to latest dwds APIs (#51004)
Update to latest dwds APIs, moving back to dwds driven hot restart and enabling future work on expression evaluation.
This commit is contained in:
parent
6990b8b2d3
commit
6884086e5c
@ -168,6 +168,7 @@ task:
|
||||
# 6 CPUs, and needed at least 8G of RAM to not run out of memory.
|
||||
CPU: 6
|
||||
MEMORY: 8G
|
||||
CHROME_NO_SANDBOX: true
|
||||
script:
|
||||
- dart --enable-asserts ./dev/bots/test.dart
|
||||
|
||||
|
@ -62,7 +62,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # 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.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -74,4 +74,4 @@ flutter:
|
||||
assets:
|
||||
- icon/
|
||||
|
||||
# PUBSPEC CHECKSUM: f833
|
||||
# PUBSPEC CHECKSUM: fb8f
|
||||
|
@ -81,7 +81,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 0.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -93,4 +93,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 2d9e
|
||||
# PUBSPEC CHECKSUM: b0fa
|
||||
|
@ -81,7 +81,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 0.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -94,4 +94,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/food/cherry_pie.png
|
||||
- assets/999x1000.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 2d9e
|
||||
# PUBSPEC CHECKSUM: b0fa
|
||||
|
@ -69,7 +69,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # 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.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -79,4 +79,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 208d
|
||||
# PUBSPEC CHECKSUM: 8ce9
|
||||
|
@ -78,7 +78,7 @@ dev_dependencies:
|
||||
sync_http: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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"
|
||||
@ -88,4 +88,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: e4c1
|
||||
# PUBSPEC CHECKSUM: f41e
|
||||
|
@ -66,7 +66,7 @@ dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -78,4 +78,4 @@ dev_dependencies:
|
||||
mockito: 4.1.1
|
||||
test_api: 0.2.15
|
||||
|
||||
# PUBSPEC CHECKSUM: 4b59
|
||||
# PUBSPEC CHECKSUM: 96b5
|
||||
|
@ -278,11 +278,15 @@ Future<void> _runToolTests() async {
|
||||
final String suffix = Platform.isWindows && subshard == 'commands'
|
||||
? 'permeable'
|
||||
: '';
|
||||
// Only linux has Chrome installed and is running web integration tests.
|
||||
// See `_pubRunTest` for more information.
|
||||
final bool forceSingleCore = Platform.isLinux && subshard == 'integration';
|
||||
await _pubRunTest(
|
||||
toolsPath,
|
||||
testPaths: <String>[path.join(kTest, '$subshard$kDotShard', suffix)],
|
||||
tableData: bigqueryApi?.tabledata,
|
||||
enableFlutterToolAsserts: true,
|
||||
forceSingleCore: forceSingleCore,
|
||||
);
|
||||
},
|
||||
);
|
||||
@ -718,6 +722,7 @@ Future<void> _pubRunTest(String workingDirectory, {
|
||||
bool useBuildRunner = false,
|
||||
String coverage,
|
||||
bq.TabledataResourceApi tableData,
|
||||
bool forceSingleCore = false,
|
||||
}) async {
|
||||
int cpus;
|
||||
final String cpuVariable = Platform.environment['CPU']; // CPU is set in cirrus.yml
|
||||
@ -731,6 +736,11 @@ Future<void> _pubRunTest(String workingDirectory, {
|
||||
} else {
|
||||
cpus = 2; // Don't default to 1, otherwise we won't catch race conditions.
|
||||
}
|
||||
// Integration tests that depend on external processes like chrome
|
||||
// can get stuck if there are multiple instances running at once.
|
||||
if (forceSingleCore) {
|
||||
cpus = 1;
|
||||
}
|
||||
|
||||
final List<String> args = <String>[
|
||||
'run',
|
||||
|
@ -72,9 +72,9 @@ dev_dependencies:
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 0.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: f7b1
|
||||
# PUBSPEC CHECKSUM: a40e
|
||||
|
@ -20,7 +20,7 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
# This plugin is using Android Embedding 1
|
||||
battery: 0.3.1+8
|
||||
battery: 0.3.1+9
|
||||
# TODO(egarciad): Add a plugin that uses Android Embedding 2
|
||||
|
||||
# The following adds the Cupertino Icons font to your application.
|
||||
@ -99,4 +99,4 @@ flutter:
|
||||
# For details regarding fonts from package dependencies,
|
||||
# see https://flutter.dev/custom-fonts/#from-packages
|
||||
|
||||
# PUBSPEC CHECKSUM: cfe7
|
||||
# PUBSPEC CHECKSUM: 7fe8
|
||||
|
@ -60,7 +60,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -71,4 +71,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 29b8
|
||||
# PUBSPEC CHECKSUM: 6415
|
||||
|
@ -93,7 +93,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -140,4 +140,4 @@ flutter:
|
||||
# For details regarding fonts from package dependencies,
|
||||
# see https://flutter.dev/custom-fonts/#from-packages
|
||||
|
||||
# PUBSPEC CHECKSUM: 3345
|
||||
# PUBSPEC CHECKSUM: 51a1
|
||||
|
@ -93,7 +93,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -140,4 +140,4 @@ flutter:
|
||||
# For details regarding fonts from package dependencies,
|
||||
# see https://flutter.dev/custom-fonts/#from-packages
|
||||
|
||||
# PUBSPEC CHECKSUM: 3345
|
||||
# PUBSPEC CHECKSUM: 51a1
|
||||
|
@ -82,7 +82,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 0.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -91,4 +91,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: dcb9
|
||||
# PUBSPEC CHECKSUM: cc16
|
||||
|
@ -64,7 +64,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -75,4 +75,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 29b8
|
||||
# PUBSPEC CHECKSUM: 6415
|
||||
|
@ -70,7 +70,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 0.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -82,4 +82,4 @@ builders:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 29b8
|
||||
# PUBSPEC CHECKSUM: 6415
|
||||
|
@ -64,7 +64,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -75,4 +75,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 29b8
|
||||
# PUBSPEC CHECKSUM: 6415
|
||||
|
@ -64,7 +64,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -75,4 +75,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 29b8
|
||||
# PUBSPEC CHECKSUM: 6415
|
||||
|
@ -71,7 +71,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
webkit_inspection_protocol: 0.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -81,4 +81,4 @@ flutter:
|
||||
assets:
|
||||
- assets/
|
||||
|
||||
# PUBSPEC CHECKSUM: 8f87
|
||||
# PUBSPEC CHECKSUM: 06e3
|
||||
|
@ -94,7 +94,7 @@ dev_dependencies:
|
||||
sync_http: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -274,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: eaa8
|
||||
# PUBSPEC CHECKSUM: 9605
|
||||
|
@ -54,7 +54,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # 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.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -63,4 +63,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: e232
|
||||
# PUBSPEC CHECKSUM: 318e
|
||||
|
@ -72,7 +72,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -88,4 +88,4 @@ flutter:
|
||||
# the material Icons class.
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 509f
|
||||
# PUBSPEC CHECKSUM: d7fb
|
||||
|
@ -64,7 +64,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -75,4 +75,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 29b8
|
||||
# PUBSPEC CHECKSUM: 6415
|
||||
|
@ -65,7 +65,7 @@ dependencies:
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -84,4 +84,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 509f
|
||||
# PUBSPEC CHECKSUM: d7fb
|
||||
|
@ -32,8 +32,8 @@ const List<StackFrame> expectedDebugStackFrames = <StackFrame>[
|
||||
StackFrame(
|
||||
number: -1,
|
||||
packageScheme: 'package',
|
||||
package: 'web_integration',
|
||||
packagePath: 'stack_trace.dart',
|
||||
package: 'packages',
|
||||
packagePath: 'web_integration/stack_trace.dart',
|
||||
line: 121,
|
||||
column: 3,
|
||||
className: '<unknown>',
|
||||
@ -43,8 +43,8 @@ const List<StackFrame> expectedDebugStackFrames = <StackFrame>[
|
||||
StackFrame(
|
||||
number: -1,
|
||||
packageScheme: 'package',
|
||||
package: 'web_integration',
|
||||
packagePath: 'stack_trace.dart',
|
||||
package: 'packages',
|
||||
packagePath: 'web_integration/stack_trace.dart',
|
||||
line: 116,
|
||||
column: 3,
|
||||
className: '<unknown>',
|
||||
@ -54,8 +54,8 @@ const List<StackFrame> expectedDebugStackFrames = <StackFrame>[
|
||||
StackFrame(
|
||||
number: -1,
|
||||
packageScheme: 'package',
|
||||
package: 'web_integration',
|
||||
packagePath: 'stack_trace.dart',
|
||||
package: 'packages',
|
||||
packagePath: 'web_integration/stack_trace.dart',
|
||||
line: 111,
|
||||
column: 3,
|
||||
className: '<unknown>',
|
||||
|
@ -68,7 +68,7 @@ dev_dependencies:
|
||||
stream_channel: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
@ -101,4 +101,4 @@ executables:
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: cf3c
|
||||
# PUBSPEC CHECKSUM: 4698
|
||||
|
@ -63,10 +63,10 @@ dev_dependencies:
|
||||
stack_trace: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stream_channel: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # 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.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 53fb
|
||||
# PUBSPEC CHECKSUM: c858
|
||||
|
@ -72,7 +72,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -84,4 +84,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 509f
|
||||
# PUBSPEC CHECKSUM: d7fb
|
||||
|
@ -71,7 +71,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -80,4 +80,4 @@ dev_dependencies:
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 509f
|
||||
# PUBSPEC CHECKSUM: d7fb
|
||||
|
@ -71,7 +71,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -83,4 +83,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 509f
|
||||
# PUBSPEC CHECKSUM: d7fb
|
||||
|
@ -71,7 +71,7 @@ dev_dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # 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+14 # 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"
|
||||
@ -83,4 +83,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 509f
|
||||
# PUBSPEC CHECKSUM: d7fb
|
||||
|
@ -85,7 +85,7 @@ dependencies:
|
||||
test: 1.14.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
timing: 0.1.1+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 3.0.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # 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.5.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -95,4 +95,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: a925
|
||||
# PUBSPEC CHECKSUM: c381
|
||||
|
@ -103,9 +103,11 @@ class StackFrame {
|
||||
}
|
||||
|
||||
static StackFrame _parseWebDebugFrame(String line) {
|
||||
// This RegExp is only partially correct for flutter run/test differences.
|
||||
// https://github.com/flutter/flutter/issues/52685
|
||||
final bool hasPackage = line.startsWith('package');
|
||||
final RegExp parser = hasPackage
|
||||
? RegExp(r'^(package:.+) (\d+):(\d+)\s+(.+)$')
|
||||
? RegExp(r'^(package.+) (\d+):(\d+)\s+(.+)$')
|
||||
: RegExp(r'^(.+) (\d+):(\d+)\s+(.+)$');
|
||||
final Match match = parser.firstMatch(line);
|
||||
assert(match != null, 'Expected $line to match $parser.');
|
||||
|
@ -41,12 +41,37 @@ import '../web/chrome.dart';
|
||||
/// This is only used in development mode.
|
||||
class WebAssetServer implements AssetReader {
|
||||
@visibleForTesting
|
||||
WebAssetServer(this._httpServer, this._packages, this.internetAddress);
|
||||
WebAssetServer(
|
||||
this._httpServer,
|
||||
this._packages,
|
||||
this.internetAddress,
|
||||
this._modules,
|
||||
this._digests,
|
||||
);
|
||||
|
||||
// Fallback to "application/octet-stream" on null which
|
||||
// makes no claims as to the structure of the data.
|
||||
static const String _kDefaultMimeType = 'application/octet-stream';
|
||||
|
||||
final Map<String, String> _modules;
|
||||
|
||||
final Map<String, String> _digests;
|
||||
|
||||
void performRestart(List<String> modules) {
|
||||
for (final String module in modules) {
|
||||
// We skip computing the digest by using the hashCode of the underlying buffer.
|
||||
// Whenever a file is updated, the corresponding Uint8List.view it corresponds
|
||||
// to will change.
|
||||
final String moduleName = module.startsWith('/')
|
||||
? module.substring(1)
|
||||
: module;
|
||||
final String name = moduleName.replaceAll('.lib.js', '');
|
||||
final String path = moduleName.replaceAll('.js', '');
|
||||
_modules[name] = path;
|
||||
_digests[name] = _files[moduleName].hashCode.toString();
|
||||
}
|
||||
}
|
||||
|
||||
/// Start the web asset server on a [hostname] and [port].
|
||||
///
|
||||
/// If [testMode] is true, do not actually initialize dwds or the shelf static
|
||||
@ -70,7 +95,15 @@ class WebAssetServer implements AssetReader {
|
||||
// ignore: deprecated_member_use
|
||||
final Packages packages = await loadPackagesFile(
|
||||
Uri.base.resolve('.packages'), loader: (Uri uri) => globals.fs.file(uri).readAsBytes());
|
||||
final WebAssetServer server = WebAssetServer(httpServer, packages, address);
|
||||
final Map<String, String> digests = <String, String>{};
|
||||
final Map<String, String> modules = <String, String>{};
|
||||
final WebAssetServer server = WebAssetServer(
|
||||
httpServer,
|
||||
packages,
|
||||
address,
|
||||
modules,
|
||||
digests,
|
||||
);
|
||||
if (testMode) {
|
||||
return server;
|
||||
}
|
||||
@ -92,7 +125,13 @@ class WebAssetServer implements AssetReader {
|
||||
urlEncoder: urlTunneller,
|
||||
enableDebugging: true,
|
||||
serveDevTools: false,
|
||||
logWriter: (Level logLevel, String message) => globals.printTrace(message)
|
||||
logWriter: (Level logLevel, String message) => globals.printTrace(message),
|
||||
loadStrategy: RequireStrategy(
|
||||
ReloadConfiguration.none,
|
||||
'.lib.js',
|
||||
(String path) async => modules,
|
||||
(String path) async => digests,
|
||||
),
|
||||
);
|
||||
shelf.Pipeline pipeline = const shelf.Pipeline();
|
||||
if (enableDwds) {
|
||||
@ -132,6 +171,7 @@ class WebAssetServer implements AssetReader {
|
||||
// handle requests for JavaScript source, dart sources maps, or asset files.
|
||||
@visibleForTesting
|
||||
Future<shelf.Response> handleRequest(shelf.Request request) async {
|
||||
final String requestPath = request.url.path;
|
||||
final Map<String, String> headers = <String, String>{};
|
||||
// If the response is `/`, then we are requesting the index file.
|
||||
if (request.url.path == '/' || request.url.path.isEmpty) {
|
||||
@ -150,11 +190,6 @@ class WebAssetServer implements AssetReader {
|
||||
final String ifNoneMatch = request.headers[HttpHeaders.ifNoneMatchHeader];
|
||||
headers[HttpHeaders.cacheControlHeader] = 'max-age=0, must-revalidate';
|
||||
|
||||
// NOTE: shelf removes leading `/` for some reason.
|
||||
final String requestPath = request.url.path.startsWith('/')
|
||||
? request.url.path
|
||||
: '/${request.url.path}';
|
||||
|
||||
// If this is a JavaScript file, it must be in the in-memory cache.
|
||||
// Attempt to look up the file by URI.
|
||||
if (_files.containsKey(requestPath)) {
|
||||
@ -191,13 +226,13 @@ class WebAssetServer implements AssetReader {
|
||||
// Try and resolve the path relative to the built asset directory.
|
||||
if (!file.existsSync()) {
|
||||
final Uri potential = globals.fs.directory(getAssetBuildDirectory())
|
||||
.uri.resolve(requestPath.replaceFirst('/assets/', ''));
|
||||
.uri.resolve(requestPath.replaceFirst('assets/', ''));
|
||||
file = globals.fs.file(potential);
|
||||
}
|
||||
|
||||
if (!file.existsSync()) {
|
||||
final String webPath = globals.fs.path.join(
|
||||
globals.fs.currentDirectory.childDirectory('web').path, requestPath.substring(1));
|
||||
globals.fs.currentDirectory.childDirectory('web').path, requestPath);
|
||||
file = globals.fs.file(webPath);
|
||||
}
|
||||
|
||||
@ -272,7 +307,10 @@ class WebAssetServer implements AssetReader {
|
||||
codeStart,
|
||||
codeEnd - codeStart,
|
||||
);
|
||||
_files[filePath] = byteView;
|
||||
final String fileName = filePath.startsWith('/')
|
||||
? filePath.substring(1)
|
||||
: filePath;
|
||||
_files[fileName] = byteView;
|
||||
|
||||
final int sourcemapStart = sourcemapOffsets[0];
|
||||
final int sourcemapEnd = sourcemapOffsets[1];
|
||||
@ -285,9 +323,10 @@ class WebAssetServer implements AssetReader {
|
||||
sourcemapStart,
|
||||
sourcemapEnd - sourcemapStart,
|
||||
);
|
||||
_sourcemaps['$filePath.map'] = sourcemapView;
|
||||
final String sourcemapName = '$fileName.map';
|
||||
_sourcemaps[sourcemapName] = sourcemapView;
|
||||
|
||||
modules.add(filePath);
|
||||
modules.add(fileName);
|
||||
}
|
||||
return modules;
|
||||
}
|
||||
@ -331,11 +370,11 @@ class WebAssetServer implements AssetReader {
|
||||
File _resolveDartFile(String path) {
|
||||
// Return the actual file objects so that local engine changes are automatically picked up.
|
||||
switch (path) {
|
||||
case '/dart_sdk.js':
|
||||
case 'dart_sdk.js':
|
||||
return canvasKitRendering
|
||||
? canvasKitDartSdk
|
||||
: dartSdk;
|
||||
case '/dart_sdk.js.map':
|
||||
case 'dart_sdk.js.map':
|
||||
return canvasKitRendering
|
||||
? canvasKitDartSdkSourcemap
|
||||
: dartSdkSourcemap;
|
||||
@ -382,7 +421,13 @@ class WebAssetServer implements AssetReader {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<String> dartSourceContents(String serverPath) {
|
||||
Future<String> dartSourceContents(String serverPath) async {
|
||||
// TODO(jonahwilliams): ensure devtools can correctly hide this file.
|
||||
final bool isEntrypointRequest = serverPath == null || serverPath.isEmpty;
|
||||
if (isEntrypointRequest) {
|
||||
return '/* no sourcemaps available. */';
|
||||
}
|
||||
|
||||
final File result = _resolveDartFile(serverPath);
|
||||
if (result.existsSync()) {
|
||||
return result.readAsString();
|
||||
@ -534,28 +579,24 @@ class WebDevFS implements DevFS {
|
||||
if (bundleFirstUpload) {
|
||||
generator.addFileSystemRoot(outputDirectoryPath);
|
||||
final String entrypoint = globals.fs.path.basename(mainPath);
|
||||
webAssetServer.writeFile('/require.js', requireJS.readAsStringSync());
|
||||
webAssetServer.writeFile('/dart_stack_trace_mapper.js', stackTraceMapper.readAsStringSync());
|
||||
webAssetServer.writeFile('/$entrypoint', globals.fs.file(mainPath).readAsStringSync());
|
||||
webAssetServer.writeFile('/manifest.json', '{"info":"manifest not generated in run mode."}');
|
||||
webAssetServer.writeFile('/flutter_service_worker.js', '// Service worker not loaded in run mode.');
|
||||
webAssetServer.writeFile(entrypoint, globals.fs.file(mainPath).readAsStringSync());
|
||||
webAssetServer.writeFile('manifest.json', '{"info":"manifest not generated in run mode."}');
|
||||
webAssetServer.writeFile('flutter_service_worker.js', '// Service worker not loaded in run mode.');
|
||||
webAssetServer.writeFile('require.js', requireJS.readAsStringSync());
|
||||
webAssetServer.writeFile('stack_trace_mapper.js', stackTraceMapper.readAsStringSync());
|
||||
webAssetServer.writeFile(
|
||||
'/main.dart.js',
|
||||
'main.dart.js',
|
||||
generateBootstrapScript(
|
||||
requireUrl: '/require.js',
|
||||
mapperUrl: '/dart_stack_trace_mapper.js',
|
||||
entrypoint: '/$entrypoint.lib.js',
|
||||
requireUrl: 'require.js',
|
||||
mapperUrl: 'stack_trace_mapper.js',
|
||||
),
|
||||
);
|
||||
webAssetServer.writeFile(
|
||||
'/main_module.bootstrap.js',
|
||||
'main_module.bootstrap.js',
|
||||
generateMainModule(
|
||||
entrypoint: '/$entrypoint.lib.js',
|
||||
entrypoint: entrypoint,
|
||||
),
|
||||
);
|
||||
// TODO(jonahwilliams): switch to DWDS provided APIs when they are ready.
|
||||
webAssetServer.writeFile('/basic.digests', '{}');
|
||||
|
||||
// TODO(jonahwilliams): refactor the asset code in this and the regular devfs to
|
||||
// be shared.
|
||||
if (bundle != null) {
|
||||
@ -602,7 +643,7 @@ class WebDevFS implements DevFS {
|
||||
} on FileSystemException catch (err) {
|
||||
throwToolExit('Failed to load recompiled sources:\n$err');
|
||||
}
|
||||
|
||||
webAssetServer.performRestart(modules);
|
||||
return UpdateFSReport(
|
||||
success: true,
|
||||
syncedBytes: codeFile.lengthSync(),
|
||||
|
@ -470,7 +470,6 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
progressId: 'hot.restart',
|
||||
);
|
||||
|
||||
String reloadModules;
|
||||
if (debuggingOptions.buildInfo.isDebug) {
|
||||
// Full restart is always false for web, since the extra recompile is wasteful.
|
||||
final UpdateFSReport report = await _updateDevFS(fullRestart: false);
|
||||
@ -481,9 +480,6 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
await device.generator.reject();
|
||||
return OperationResult(1, 'Failed to recompile application.');
|
||||
}
|
||||
reloadModules = report.invalidatedModules
|
||||
.map((String module) => '"$module"')
|
||||
.join(',');
|
||||
} else {
|
||||
try {
|
||||
await buildWeb(
|
||||
@ -498,29 +494,22 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
}
|
||||
}
|
||||
|
||||
Duration transferMarker;
|
||||
try {
|
||||
if (!deviceIsDebuggable) {
|
||||
globals.printStatus('Recompile complete. Page requires refresh.');
|
||||
} else if (!debuggingOptions.buildInfo.isDebug) {
|
||||
} else if (isRunningDebug) {
|
||||
await _vmService.callMethod('hotRestart');
|
||||
} else {
|
||||
// On non-debug builds, a hard refresh is required to ensure the
|
||||
// up to date sources are loaded.
|
||||
await _wipConnection?.sendCommand('Page.reload', <String, Object>{
|
||||
'ignoreCache': !debuggingOptions.buildInfo.isDebug,
|
||||
});
|
||||
} else {
|
||||
transferMarker = timer.elapsed;
|
||||
await _wipConnection?.debugger?.sendCommand(
|
||||
'Runtime.evaluate', params: <String, Object>{
|
||||
'expression': 'window.\$hotReloadHook([$reloadModules])',
|
||||
'awaitPromise': true,
|
||||
'returnByValue': true,
|
||||
},
|
||||
);
|
||||
}
|
||||
} on Exception catch (err) {
|
||||
return OperationResult(1, err.toString(), fatal: true);
|
||||
} on WipError catch (err) {
|
||||
globals.printError(err.toString());
|
||||
return OperationResult(1, err.toString());
|
||||
return OperationResult(1, err.toString(), fatal: true);
|
||||
} finally {
|
||||
status.stop();
|
||||
}
|
||||
@ -539,7 +528,6 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
fullRestart: true,
|
||||
reason: reason,
|
||||
overallTimeInMs: timer.elapsed.inMilliseconds,
|
||||
transferTimeInMs: timer.elapsed.inMilliseconds - transferMarker.inMilliseconds
|
||||
).send();
|
||||
}
|
||||
return OperationResult.ok;
|
||||
@ -656,13 +644,19 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
// Cleanup old subscriptions. These will throw if there isn't anything
|
||||
// listening, which is fine because that is what we want to ensure.
|
||||
try {
|
||||
await _vmService.streamCancel('Stdout');
|
||||
await _vmService.streamCancel(vmservice.EventStreams.kStdout);
|
||||
} on vmservice.RPCError {
|
||||
// It is safe to ignore this error because we expect an error to be
|
||||
// thrown if we're not already subscribed.
|
||||
}
|
||||
try {
|
||||
await _vmService.streamListen('Stdout');
|
||||
await _vmService.streamListen(vmservice.EventStreams.kStdout);
|
||||
} on vmservice.RPCError {
|
||||
// It is safe to ignore this error because we expect an error to be
|
||||
// thrown if we're not already subscribed.
|
||||
}
|
||||
try {
|
||||
await _vmService.streamListen(vmservice.EventStreams.kIsolate);
|
||||
} on vmservice.RPCError {
|
||||
// It is safe to ignore this error because we expect an error to be
|
||||
// thrown if we're not already subscribed.
|
||||
@ -677,8 +671,6 @@ class _ResidentWebRunner extends ResidentWebRunner {
|
||||
await restart(benchmarkMode: false, pause: pause, fullRestart: false);
|
||||
return <String, Object>{'type': 'Success'};
|
||||
});
|
||||
// Note: can't register our own hot restart hook. Would be fixed by moving
|
||||
// to DWDS digests.
|
||||
|
||||
websocketUri = Uri.parse(_connectionResult.debugConnection.uri);
|
||||
// Always run main after connecting because start paused doesn't work yet.
|
||||
|
@ -656,6 +656,10 @@ class DefaultResidentCompiler implements ResidentCompiler {
|
||||
sdkRoot,
|
||||
'--incremental',
|
||||
'--target=$targetModel',
|
||||
// TODO(jonahwilliams): remove once this becomes the default behavior
|
||||
// in the frontend_server.
|
||||
// https://github.com/flutter/flutter/issues/52693
|
||||
'--debugger-module-names',
|
||||
'-Ddart.developer.causal_async_stacks=${buildMode == BuildMode.debug}',
|
||||
for (final Object dartDefine in dartDefines)
|
||||
'-D$dartDefine',
|
||||
|
@ -190,7 +190,7 @@ class _FlutterTestRunnerImpl implements FlutterTestRunner {
|
||||
|
||||
return exitCode;
|
||||
} finally {
|
||||
globals.fs.currentDirectory = saved;
|
||||
globals.fs.currentDirectory = saved.path;
|
||||
await platform.close();
|
||||
}
|
||||
}
|
||||
|
@ -4,39 +4,6 @@
|
||||
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
// This logic is taken directly from https://github.com/dart-lang/build/blob/master/build_web_compilers/lib/src/dev_compiler_bootstrap.dart#L272
|
||||
// It should be fairly stable, but is otherwise required to interact with the client.js script
|
||||
// vendored with DWDS.
|
||||
const String _currentDirectoryScript = r'''
|
||||
var _currentDirectory = (function () {
|
||||
var _url;
|
||||
var lines = new Error().stack.split('\n');
|
||||
function lookupUrl() {
|
||||
if (lines.length > 2) {
|
||||
var match = lines[1].match(/^\s+at (.+):\d+:\d+$/);
|
||||
// Chrome.
|
||||
if (match) return match[1];
|
||||
// Chrome nested eval case.
|
||||
match = lines[1].match(/^\s+at eval [(](.+):\d+:\d+[)]$/);
|
||||
if (match) return match[1];
|
||||
// Edge.
|
||||
match = lines[1].match(/^\s+at.+\((.+):\d+:\d+\)$/);
|
||||
if (match) return match[1];
|
||||
// Firefox.
|
||||
match = lines[0].match(/[<][@](.+):\d+:\d+$/)
|
||||
if (match) return match[1];
|
||||
}
|
||||
// Safari.
|
||||
return lines[0].match(/(.+):\d+:\d+$/)[1];
|
||||
}
|
||||
_url = lookupUrl();
|
||||
var lastSlash = _url.lastIndexOf('/');
|
||||
if (lastSlash == -1) return _url;
|
||||
var currentDirectory = _url.substring(0, lastSlash + 1);
|
||||
return currentDirectory;
|
||||
})();
|
||||
''';
|
||||
|
||||
/// The JavaScript bootstrap script to support in-browser hot restart.
|
||||
///
|
||||
/// The [requireUrl] loads our cached RequireJS script file. The [mapperUrl]
|
||||
@ -49,7 +16,6 @@ var _currentDirectory = (function () {
|
||||
String generateBootstrapScript({
|
||||
@required String requireUrl,
|
||||
@required String mapperUrl,
|
||||
@required String entrypoint,
|
||||
}) {
|
||||
return '''
|
||||
"use strict";
|
||||
@ -69,34 +35,6 @@ requireEl.src = "$requireUrl";
|
||||
// This attribute tells require JS what to load as main (defined below).
|
||||
requireEl.setAttribute("data-main", "main_module.bootstrap");
|
||||
document.head.appendChild(requireEl);
|
||||
|
||||
// Invoked by connected chrome debugger for hot reload/restart support.
|
||||
window.\$hotReloadHook = function(modules) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
if (modules == null) {
|
||||
reject();
|
||||
}
|
||||
// If no modules change, return immediately.
|
||||
if (modules.length == 0) {
|
||||
resolve();
|
||||
}
|
||||
var reloadCount = 0;
|
||||
for (var i = 0; i < modules.length; i++) {
|
||||
require.undef(modules[i]);
|
||||
require([modules[i]], function(module) {
|
||||
reloadCount += 1;
|
||||
// once we've reloaded every module, trigger the hot reload.
|
||||
if (reloadCount == modules.length) {
|
||||
require(["$entrypoint", "dart_sdk"], function(app, dart_sdk) {
|
||||
// See the doc comment under in generateMainModule.
|
||||
window.\$dartRunMain = app[Object.keys(app)[0]].main;
|
||||
window.\$hotReload(resolve);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
''';
|
||||
}
|
||||
|
||||
@ -112,127 +50,33 @@ window.\$hotReloadHook = function(modules) {
|
||||
/// this object is the module.
|
||||
String generateMainModule({@required String entrypoint}) {
|
||||
return '''/* ENTRYPOINT_EXTENTION_MARKER */
|
||||
// baseUrlScript
|
||||
var baseUrl = (function () {
|
||||
// Attempt to detect --precompiled mode for tests, and set the base url
|
||||
// appropriately, otherwise set it to '/'.
|
||||
var pathParts = location.pathname.split("/");
|
||||
if (pathParts[0] == "") {
|
||||
pathParts.shift();
|
||||
}
|
||||
if (pathParts.length > 1 && pathParts[1] == "test") {
|
||||
return "/" + pathParts.slice(0, 2).join("/") + "/";
|
||||
}
|
||||
// Attempt to detect base url using <base href> html tag
|
||||
// base href should start and end with "/"
|
||||
if (typeof document !== 'undefined') {
|
||||
var el = document.getElementsByTagName('base');
|
||||
if (el && el[0] && el[0].getAttribute("href") && el[0].getAttribute
|
||||
("href").startsWith("/") && el[0].getAttribute("href").endsWith("/")){
|
||||
return el[0].getAttribute("href");
|
||||
}
|
||||
}
|
||||
// return default value
|
||||
return "/";
|
||||
}());
|
||||
$_currentDirectoryScript
|
||||
// dart loader
|
||||
if(!window.\$dartLoader) {
|
||||
window.\$dartLoader = {
|
||||
appDigests: _currentDirectory + 'basic.digests',
|
||||
moduleIdToUrl: new Map(),
|
||||
urlToModuleId: new Map(),
|
||||
rootDirectories: new Array(),
|
||||
// Used in package:build_runner/src/server/build_updates_client/hot_reload_client.dart
|
||||
moduleParentsGraph: new Map(),
|
||||
moduleLoadingErrorCallbacks: new Map(),
|
||||
forceLoadModule: function (moduleName, callback, onError) {
|
||||
if (typeof onError != 'undefined') {
|
||||
var errorCallbacks = \$dartLoader.moduleLoadingErrorCallbacks;
|
||||
if (!errorCallbacks.has(moduleName)) {
|
||||
errorCallbacks.set(moduleName, new Set());
|
||||
}
|
||||
errorCallbacks.get(moduleName).add(onError);
|
||||
}
|
||||
requirejs.undef(moduleName);
|
||||
requirejs([moduleName], function() {
|
||||
if (typeof onError != 'undefined') {
|
||||
errorCallbacks.get(moduleName).delete(onError);
|
||||
}
|
||||
if (typeof callback != 'undefined') {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
},
|
||||
getModuleLibraries: null, // set up by _initializeTools
|
||||
};
|
||||
}
|
||||
let modulePaths = {};
|
||||
let customModulePaths = {};
|
||||
window.\$dartLoader.rootDirectories.push(window.location.origin + baseUrl);
|
||||
for (let moduleName of Object.getOwnPropertyNames(modulePaths)) {
|
||||
let modulePath = modulePaths[moduleName];
|
||||
if (modulePath != moduleName) {
|
||||
customModulePaths[moduleName] = modulePath;
|
||||
}
|
||||
var src = window.location.origin + '/' + modulePath + '.js';
|
||||
if (window.\$dartLoader.moduleIdToUrl.has(moduleName)) {
|
||||
continue;
|
||||
}
|
||||
\$dartLoader.moduleIdToUrl.set(moduleName, src);
|
||||
\$dartLoader.urlToModuleId.set(src, moduleName);
|
||||
}
|
||||
// Create the main module loaded below.
|
||||
define("main_module.bootstrap", ["$entrypoint", "dart_sdk"], function(app, dart_sdk) {
|
||||
dart_sdk.dart.setStartAsyncSynchronously(true);
|
||||
dart_sdk._debugger.registerDevtoolsFormatter();
|
||||
\$dartLoader.getModuleLibraries = dart_sdk.dart.getModuleLibraries;
|
||||
if (window.\$dartStackTraceUtility && !window.\$dartStackTraceUtility.ready) {
|
||||
window.\$dartStackTraceUtility.ready = true;
|
||||
let dart = dart_sdk.dart;
|
||||
window.\$dartStackTraceUtility.setSourceMapProvider(
|
||||
function(url) {
|
||||
url = url.replace(baseUrl, '/');
|
||||
var module = window.\$dartLoader.urlToModuleId.get(url);
|
||||
if (!module) {
|
||||
if (url.endsWith('dart_sdk.js')) {
|
||||
module = 'dart_sdk';
|
||||
} else {
|
||||
try {
|
||||
module = '/packages' + url.split('packages')[1].split('.')[0] + '.dart';
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
return dart.getSourceMap(module);
|
||||
});
|
||||
}
|
||||
if (typeof document != 'undefined') {
|
||||
window.postMessage({ type: "DDC_STATE_CHANGE", state: "start" }, "*");
|
||||
}
|
||||
dart_sdk._isolate_helper.startRootIsolate(() => {}, []);
|
||||
|
||||
// See the generateMainModule doc comment.
|
||||
var child = {};
|
||||
child.main = app[Object.keys(app)[0]].main;
|
||||
if (window.\$hotReload == null) {
|
||||
window.\$hotReload = function(cb) {
|
||||
dart_sdk.developer.invokeExtension("ext.flutter.disassemble", "{}").then((_) => {
|
||||
dart_sdk.dart.hotRestart();
|
||||
window.\$dartRunMain();
|
||||
window.requestAnimationFrame(cb);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/* MAIN_EXTENSION_MARKER */
|
||||
child.main();
|
||||
});
|
||||
|
||||
// Require JS configuration.
|
||||
require.config({
|
||||
waitSeconds: 0,
|
||||
window.\$dartLoader = {};
|
||||
window.\$dartLoader.rootDirectories = [];
|
||||
window.\$requireLoader.getModuleLibraries = dart_sdk.dart.getModuleLibraries;
|
||||
if (window.\$dartStackTraceUtility && !window.\$dartStackTraceUtility.ready) {
|
||||
window.\$dartStackTraceUtility.ready = true;
|
||||
let dart = dart_sdk.dart;
|
||||
window.\$dartStackTraceUtility.setSourceMapProvider(function(url) {
|
||||
url = url.replace(window.\$dartUriBase + '/', '');
|
||||
if (url == 'dart_sdk.js') {
|
||||
return dart.getSourceMap('dart_sdk');
|
||||
}
|
||||
url = url.replace(".lib.js", "");
|
||||
return dart.getSourceMap(url);
|
||||
});
|
||||
}
|
||||
});
|
||||
''';
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ dependencies:
|
||||
# To update these, use "flutter update-packages --force-upgrade".
|
||||
archive: 2.0.11
|
||||
args: 1.5.2
|
||||
dwds: 1.0.1
|
||||
dwds: 2.0.1
|
||||
completion: 0.2.2
|
||||
coverage: 0.13.9
|
||||
crypto: 2.1.3
|
||||
@ -45,6 +45,8 @@ dependencies:
|
||||
test_api: 0.2.15
|
||||
test_core: 0.3.3
|
||||
|
||||
vm_service: 3.0.0+1
|
||||
|
||||
_fe_analyzer_shared: 1.0.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 0.39.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -55,8 +57,9 @@ dependencies:
|
||||
charcode: 1.1.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"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
devtools: 0.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
devtools_server: 0.1.13 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
devtools: 0.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
devtools_server: 0.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
devtools_shared: 0.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fixnum: 0.10.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -90,7 +93,6 @@ dependencies:
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
uuid: 2.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+14 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
dev_dependencies:
|
||||
@ -109,4 +111,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 8703
|
||||
# PUBSPEC CHECKSUM: 8796
|
||||
|
@ -49,14 +49,15 @@ void main() {
|
||||
|
||||
testUsingContext('Selects assumed port if VM service connection is successful', () async {
|
||||
when(mockVmService.getVM()).thenAnswer((Invocation invocation) async {
|
||||
return VM()..isolates = <IsolateRef>[
|
||||
IsolateRef(),
|
||||
return VM.parse(<String, Object>{})..isolates = <IsolateRef>[
|
||||
IsolateRef.parse(<String, Object>{}),
|
||||
];
|
||||
});
|
||||
when(mockVmService.getIsolate(any)).thenAnswer((Invocation invocation) async {
|
||||
return Isolate()
|
||||
..rootLib = (LibraryRef()..uri = 'package:hello/main.dart');
|
||||
return Isolate.parse(<String, Object>{})
|
||||
..rootLib = (LibraryRef(name: 'main', uri: 'package:hello/main.dart'));
|
||||
});
|
||||
|
||||
expect(await fallbackDiscovery.discover(
|
||||
assumedDevicePort: 23,
|
||||
deivce: null,
|
||||
@ -69,18 +70,18 @@ void main() {
|
||||
|
||||
testUsingContext('Selects assumed port when another isolate has no root library', () async {
|
||||
when(mockVmService.getVM()).thenAnswer((Invocation invocation) async {
|
||||
return VM()..isolates = <IsolateRef>[
|
||||
IsolateRef()..id = '1',
|
||||
IsolateRef()..id = '2',
|
||||
return VM.parse(<String, Object>{})..isolates = <IsolateRef>[
|
||||
IsolateRef.parse(<String, Object>{})..id = '1',
|
||||
IsolateRef.parse(<String, Object>{})..id = '2',
|
||||
];
|
||||
});
|
||||
when(mockVmService.getIsolate('1')).thenAnswer((Invocation invocation) async {
|
||||
return Isolate()
|
||||
return Isolate.parse(<String, Object>{})
|
||||
..rootLib = null;
|
||||
});
|
||||
when(mockVmService.getIsolate('2')).thenAnswer((Invocation invocation) async {
|
||||
return Isolate()
|
||||
..rootLib = (LibraryRef()..uri = 'package:hello/main.dart');
|
||||
return Isolate.parse(<String, Object>{})
|
||||
..rootLib = (LibraryRef.parse(<String, Object>{})..uri = 'package:hello/main.dart');
|
||||
});
|
||||
expect(await fallbackDiscovery.discover(
|
||||
assumedDevicePort: 23,
|
||||
@ -94,12 +95,16 @@ void main() {
|
||||
|
||||
testUsingContext('Selects mdns discovery if VM service connecton fails due to Sentinel', () async {
|
||||
when(mockVmService.getVM()).thenAnswer((Invocation invocation) async {
|
||||
return VM()..isolates = <IsolateRef>[
|
||||
IsolateRef(),
|
||||
return VM.parse(<String, Object>{})..isolates = <IsolateRef>[
|
||||
IsolateRef(
|
||||
id: 'a',
|
||||
name: 'isolate',
|
||||
number: '1',
|
||||
),
|
||||
];
|
||||
});
|
||||
when(mockVmService.getIsolate(any)).thenAnswer((Invocation invocation) async {
|
||||
return Sentinel();
|
||||
return Sentinel(kind: 'Something', valueAsString: 'Something');
|
||||
});
|
||||
|
||||
when(mockMDnsObservatoryDiscovery.getObservatoryUri(
|
||||
|
@ -115,6 +115,11 @@ void main() {
|
||||
when(mockVmService.onDebugEvent).thenAnswer((Invocation _) {
|
||||
return const Stream<Event>.empty();
|
||||
});
|
||||
when(mockVmService.onIsolateEvent).thenAnswer((Invocation _) {
|
||||
return Stream<Event>.fromIterable(<Event>[
|
||||
Event(kind: EventKind.kIsolateStart, timestamp: 1),
|
||||
]);
|
||||
});
|
||||
when(mockDebugConnection.uri).thenReturn('ws://127.0.0.1/abcd/');
|
||||
when(mockFlutterDevice.devFS).thenReturn(mockWebDevFS);
|
||||
when(mockWebDevFS.sources).thenReturn(<Uri>[]);
|
||||
@ -426,7 +431,7 @@ void main() {
|
||||
}));
|
||||
|
||||
test('web resident runner can toggle CanvasKit', () => testbed.run(() async {
|
||||
final WebAssetServer webAssetServer = WebAssetServer(null, null, null);
|
||||
final WebAssetServer webAssetServer = WebAssetServer(null, null, null, null, null);
|
||||
when(mockWebDevFS.webAssetServer).thenReturn(webAssetServer);
|
||||
|
||||
expect(residentWebRunner.supportsCanvasKit, true);
|
||||
|
@ -11,7 +11,6 @@ void main() {
|
||||
final String result = generateBootstrapScript(
|
||||
requireUrl: 'require.js',
|
||||
mapperUrl: 'mapper.js',
|
||||
entrypoint: 'foo/bar/main.js',
|
||||
);
|
||||
// require js source is interpolated correctly.
|
||||
expect(result, contains('requireEl.src = "require.js";'));
|
||||
@ -19,9 +18,6 @@ void main() {
|
||||
expect(result, contains('mapperEl.src = "mapper.js";'));
|
||||
// data-main is set to correct bootstrap module.
|
||||
expect(result, contains('requireEl.setAttribute("data-main", "main_module.bootstrap");'));
|
||||
// bootstrap main module has correct imports.
|
||||
expect(result, contains('require(["foo/bar/main.js", "dart_sdk"],'
|
||||
' function(app, dart_sdk) {'));
|
||||
});
|
||||
|
||||
test('generateMainModule embeds urls correctly', () {
|
||||
|
@ -51,7 +51,13 @@ void main() {
|
||||
linux = FakePlatform(operatingSystem: 'linux', environment: <String, String>{});
|
||||
windows = FakePlatform(operatingSystem: 'windows', environment: <String, String>{});
|
||||
testbed = Testbed(setup: () {
|
||||
webAssetServer = WebAssetServer(mockHttpServer, packages, InternetAddress.loopbackIPv4);
|
||||
webAssetServer = WebAssetServer(
|
||||
mockHttpServer,
|
||||
packages,
|
||||
InternetAddress.loopbackIPv4,
|
||||
null,
|
||||
null,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@ -103,7 +109,7 @@ void main() {
|
||||
}));
|
||||
|
||||
test('serves JavaScript files from in memory cache not from manifest', () => testbed.run(() async {
|
||||
webAssetServer.writeFile('/foo.js', 'main() {}');
|
||||
webAssetServer.writeFile('foo.js', 'main() {}');
|
||||
|
||||
final Response response = await webAssetServer
|
||||
.handleRequest(Request('GET', Uri.parse('http://foobar/foo.js')));
|
||||
@ -118,7 +124,7 @@ void main() {
|
||||
}));
|
||||
|
||||
test('Returns notModified when the ifNoneMatch header matches the etag', () => testbed.run(() async {
|
||||
webAssetServer.writeFile('/foo.js', 'main() {}');
|
||||
webAssetServer.writeFile('foo.js', 'main() {}');
|
||||
|
||||
final Response response = await webAssetServer
|
||||
.handleRequest(Request('GET', Uri.parse('http://foobar/foo.js')));
|
||||
@ -376,24 +382,28 @@ void main() {
|
||||
invalidatedFiles: <Uri>[],
|
||||
);
|
||||
|
||||
expect(webDevFS.webAssetServer.getFile('/require.js'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('/dart_stack_trace_mapper.js'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('/main.dart'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('/manifest.json'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('/flutter_service_worker.js'), isNotNull);
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('/dart_sdk.js'), 'HELLO');
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('/dart_sdk.js.map'), 'THERE');
|
||||
expect(webDevFS.webAssetServer.getFile('require.js'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('stack_trace_mapper.js'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('main.dart'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('manifest.json'), isNotNull);
|
||||
expect(webDevFS.webAssetServer.getFile('flutter_service_worker.js'), isNotNull);
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'HELLO');
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'THERE');
|
||||
|
||||
// Update to the SDK.
|
||||
webDevFS.webAssetServer.dartSdk.writeAsStringSync('BELLOW');
|
||||
|
||||
// New SDK should be visible..
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('/dart_sdk.js'), 'BELLOW');
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'BELLOW');
|
||||
|
||||
// Toggle CanvasKit
|
||||
webDevFS.webAssetServer.canvasKitRendering = true;
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('/dart_sdk.js'), 'OL');
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('/dart_sdk.js.map'), 'CHUM');
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js'), 'OL');
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents('dart_sdk.js.map'), 'CHUM');
|
||||
|
||||
// Generated entrypoint.
|
||||
expect(await webDevFS.webAssetServer.dartSourceContents(null),
|
||||
contains('/* no sourcemaps available. */'));
|
||||
|
||||
await webDevFS.destroy();
|
||||
}));
|
||||
|
@ -0,0 +1,56 @@
|
||||
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:file/file.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
|
||||
import '../src/common.dart';
|
||||
import 'test_data/stepping_project.dart';
|
||||
import 'test_driver.dart';
|
||||
import 'test_utils.dart';
|
||||
|
||||
void main() {
|
||||
Directory tempDirectory;
|
||||
FlutterRunTestDriver flutter;
|
||||
|
||||
setUp(() {
|
||||
tempDirectory = createResolvedTempDirectorySync('debugger_stepping_test.');
|
||||
});
|
||||
|
||||
test('Web debugger can step over statements', () async {
|
||||
final WebSteppingProject _project = WebSteppingProject();
|
||||
await _project.setUpIn(tempDirectory);
|
||||
|
||||
flutter = FlutterRunTestDriver(tempDirectory);
|
||||
|
||||
await flutter.run(withDebugger: true, startPaused: true, chrome: true);
|
||||
await flutter.addBreakpoint(_project.breakpointUri, _project.breakpointLine);
|
||||
await flutter.resume();
|
||||
await flutter.waitForPause(); // Now we should be on the breakpoint.
|
||||
|
||||
expect((await flutter.getSourceLocation()).line, equals(_project.breakpointLine));
|
||||
|
||||
// Issue 5 steps, ensuring that we end up on the annotated lines each time.
|
||||
for (int i = 1; i <= _project.numberOfSteps; i += 1) {
|
||||
await flutter.stepOverOrOverAsyncSuspension();
|
||||
final SourcePosition location = await flutter.getSourceLocation();
|
||||
final int actualLine = location.line;
|
||||
|
||||
// Get the line we're expected to stop at by searching for the comment
|
||||
// within the source code.
|
||||
final int expectedLine = _project.lineForStep(i);
|
||||
|
||||
expect(actualLine, equals(expectedLine),
|
||||
reason: 'After $i steps, debugger should stop at $expectedLine but stopped at $actualLine'
|
||||
);
|
||||
}
|
||||
}, skip: !Platform.isLinux); // only linux shards have Chrome installed.
|
||||
|
||||
tearDown(() async {
|
||||
await flutter.stop();
|
||||
tryToDelete(tempDirectory);
|
||||
});
|
||||
}
|
@ -10,6 +10,17 @@ import 'package:flutter_tools/src/globals.dart' as globals;
|
||||
|
||||
import '../test_utils.dart';
|
||||
|
||||
const String _kDefaultHtml = '''
|
||||
<html>
|
||||
<head>
|
||||
<title>Hello, World</title>
|
||||
</head>
|
||||
<body>
|
||||
<script src="main.dart.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
''';
|
||||
|
||||
abstract class Project {
|
||||
Directory dir;
|
||||
|
||||
@ -24,6 +35,7 @@ abstract class Project {
|
||||
if (main != null) {
|
||||
writeFile(globals.fs.path.join(dir.path, 'lib', 'main.dart'), main);
|
||||
}
|
||||
writeFile(globals.fs.path.join(dir.path, 'web', 'index.html'), _kDefaultHtml);
|
||||
await getPackages(dir.path);
|
||||
}
|
||||
|
||||
|
@ -57,3 +57,57 @@ class SteppingProject extends Project {
|
||||
|
||||
final int numberOfSteps = 8;
|
||||
}
|
||||
|
||||
class WebSteppingProject extends Project {
|
||||
@override
|
||||
final String pubspec = '''
|
||||
name: test
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
''';
|
||||
|
||||
@override
|
||||
final String main = r'''
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
void main() => runApp(new MyApp());
|
||||
|
||||
class MyApp extends StatefulWidget {
|
||||
@override
|
||||
_MyAppState createState() => _MyAppState();
|
||||
}
|
||||
|
||||
class _MyAppState extends State<MyApp> {
|
||||
@override
|
||||
void initState() {
|
||||
doAsyncStuff();
|
||||
super.initState();
|
||||
}
|
||||
|
||||
Future<void> doAsyncStuff() async {
|
||||
print("test"); // BREAKPOINT
|
||||
await new Future.value(true); // STEP 1 // STEP 2
|
||||
await new Future.microtask(() => true);
|
||||
await new Future.delayed(const Duration(milliseconds: 1)); // STEP 3
|
||||
print("done!"); // STEP 4
|
||||
} // STEP 5
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new MaterialApp(
|
||||
title: 'Flutter Demo',
|
||||
home: new Container(),
|
||||
);
|
||||
}
|
||||
}
|
||||
''';
|
||||
|
||||
Uri get breakpointUri => mainDart;
|
||||
int get breakpointLine => lineContaining(main, '// BREAKPOINT');
|
||||
int lineForStep(int i) => lineContaining(main, '// STEP $i');
|
||||
|
||||
final int numberOfSteps = 5;
|
||||
}
|
||||
|
@ -105,7 +105,8 @@ abstract class FlutterTestDriver {
|
||||
.followedBy(arguments)
|
||||
.toList(),
|
||||
workingDirectory: _projectFolder.path,
|
||||
environment: <String, String>{'FLUTTER_TEST': 'true'},
|
||||
// The web environment variable has the same effect as `flutter config --enable-web`.
|
||||
environment: <String, String>{'FLUTTER_TEST': 'true', 'FLUTTER_WEB': 'true'},
|
||||
);
|
||||
|
||||
// This class doesn't use the result of the future. It's made available
|
||||
@ -114,8 +115,8 @@ abstract class FlutterTestDriver {
|
||||
_debugPrint('Process exited ($code)');
|
||||
_hasExited = true;
|
||||
}));
|
||||
transformToLines(_process.stdout).listen((String line) => _stdout.add(line));
|
||||
transformToLines(_process.stderr).listen((String line) => _stderr.add(line));
|
||||
transformToLines(_process.stdout).listen(_stdout.add);
|
||||
transformToLines(_process.stderr).listen(_stderr.add);
|
||||
|
||||
// Capture stderr to a buffer so we can show it all if any requests fail.
|
||||
_stderr.stream.listen(_errorBuffer.writeln);
|
||||
@ -304,7 +305,7 @@ abstract class FlutterTestDriver {
|
||||
|
||||
Future<Frame> getTopStackFrame() async {
|
||||
final String flutterIsolateId = await _getFlutterIsolateId();
|
||||
final Stack stack = await _vmService.getStack(flutterIsolateId);
|
||||
final Stack stack = await _vmService.getStack(flutterIsolateId) as Stack;
|
||||
if (stack.frames.isEmpty) {
|
||||
throw Exception('Stack is empty');
|
||||
}
|
||||
@ -433,15 +434,20 @@ class FlutterRunTestDriver extends FlutterTestDriver {
|
||||
bool withDebugger = false,
|
||||
bool startPaused = false,
|
||||
bool pauseOnExceptions = false,
|
||||
bool chrome = false,
|
||||
File pidFile,
|
||||
}) async {
|
||||
await _setupProcess(
|
||||
<String>[
|
||||
'run',
|
||||
'--disable-service-auth-codes',
|
||||
if (!chrome)
|
||||
'--disable-service-auth-codes',
|
||||
'--machine',
|
||||
'-d',
|
||||
'flutter-tester',
|
||||
if (chrome)
|
||||
...<String>['chrome', '--web-run-headless']
|
||||
else
|
||||
'flutter-tester',
|
||||
],
|
||||
withDebugger: withDebugger,
|
||||
startPaused: startPaused,
|
||||
|
Loading…
x
Reference in New Issue
Block a user