support --no-resident on the web (#44028)

This commit is contained in:
Jonah Williams 2019-11-04 09:08:40 -08:00 committed by GitHub
parent ee032f67c7
commit 5e1bb20c83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 3 deletions

View File

@ -36,6 +36,7 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
ResidentRunner createWebRunner(
Device device, {
String target,
@required bool stayResident,
@required FlutterProject flutterProject,
@required bool ipv6,
@required DebuggingOptions debuggingOptions,
@ -46,6 +47,7 @@ class DwdsWebRunnerFactory extends WebRunnerFactory {
flutterProject: flutterProject,
debuggingOptions: debuggingOptions,
ipv6: ipv6,
stayResident: stayResident,
);
}
}
@ -57,12 +59,13 @@ class ResidentWebRunner extends ResidentRunner {
@required this.flutterProject,
@required bool ipv6,
@required DebuggingOptions debuggingOptions,
bool stayResident = true,
}) : super(
<FlutterDevice>[],
target: target ?? fs.path.join('lib', 'main.dart'),
debuggingOptions: debuggingOptions,
ipv6: ipv6,
stayResident: true,
stayResident: stayResident,
);
final Device device;
@ -316,9 +319,15 @@ class ResidentWebRunner extends ResidentRunner {
connectionInfoCompleter?.complete(
DebugConnectionInfo(wsUri: websocketUri)
);
final int result = await waitForAppToFinish();
if (stayResident) {
await waitForAppToFinish();
} else {
await stopEchoingDeviceLog();
await exitApp();
}
await cleanupAtFinish();
return result;
return 0;
}
@override

View File

@ -435,6 +435,7 @@ class AppDomain extends Domain {
target: target,
debuggingOptions: options,
ipv6: ipv6,
stayResident: true,
);
} else if (enableHotReload) {
runner = HotRunner(

View File

@ -457,6 +457,7 @@ class RunCommand extends RunCommandBase {
flutterProject: flutterProject,
ipv6: ipv6,
debuggingOptions: _createDebuggingOptions(),
stayResident: stayResident,
);
} else {
runner = ColdRunner(

View File

@ -19,6 +19,7 @@ abstract class WebRunnerFactory {
ResidentRunner createWebRunner(
Device device, {
String target,
@required bool stayResident,
@required FlutterProject flutterProject,
@required bool ipv6,
@required DebuggingOptions debuggingOptions,

View File

@ -154,6 +154,19 @@ void main() {
Logger: () => DelegateLogger(BufferLogger()),
}));
test('Can successfully run and disconnect with --no-resident', () => testbed.run(() async {
_setupMocks();
residentWebRunner = ResidentWebRunner(
mockWebDevice,
flutterProject: FlutterProject.current(),
debuggingOptions: DebuggingOptions.enabled(BuildInfo.debug),
ipv6: true,
stayResident: false,
);
expect(await residentWebRunner.run(), 0);
}));
test('Listens to stdout streams before running main', () => testbed.run(() async {
_setupMocks();
final BufferLogger bufferLogger = logger;