Unverified Commit 48f4ff6d authored by Danny Tuppeny's avatar Danny Tuppeny Committed by GitHub

Ensure errors launching emulators are exposed to the daemon (#18446)

parent 03b5b1c0
......@@ -11,7 +11,6 @@ import '../android/android_workflow.dart';
import '../base/file_system.dart';
import '../base/process.dart';
import '../emulator.dart';
import '../globals.dart';
import 'android_sdk.dart';
class AndroidEmulators extends EmulatorDiscovery {
......@@ -41,22 +40,20 @@ class AndroidEmulator extends Emulator {
String get label => _properties['avd.ini.displayname'];
@override
Future<bool> launch() async {
final Future<bool> launchResult =
Future<void> launch() async {
final Future<void> launchResult =
runAsync(<String>[getEmulatorPath(), '-avd', id])
.then((RunResult runResult) {
if (runResult.exitCode != 0) {
printError('$runResult');
return false;
throw '$runResult';
}
return true;
});
// emulator continues running on a successful launch so if we
// haven't quit within 3 seconds we assume that's a success and just
// return.
return Future.any<bool>(<Future<bool>>[
return Future.any<void>(<Future<void>>[
launchResult,
new Future<void>.delayed(const Duration(seconds: 3)).then((_) => true)
new Future<void>.delayed(const Duration(seconds: 3))
]);
}
}
......
......@@ -49,7 +49,7 @@ class EmulatorsCommand extends FlutterCommand {
}
}
Future<Null> _launchEmulator(String id) async {
Future<void> _launchEmulator(String id) async {
final List<Emulator> emulators =
await emulatorManager.getEmulatorsMatching(id);
......@@ -61,11 +61,16 @@ class EmulatorsCommand extends FlutterCommand {
"More than one emulator matches '$id':",
);
} else {
try {
await emulators.first.launch();
}
catch (e) {
printError(e);
}
}
}
Future<Null> _listEmulators(String searchText) async {
Future<void> _listEmulators(String searchText) async {
final List<Emulator> emulators = searchText == null
? await emulatorManager.getAllAvailableEmulators()
: await emulatorManager.getEmulatorsMatching(searchText);
......
......@@ -95,7 +95,7 @@ abstract class Emulator {
return id == other.id;
}
Future<bool> launch();
Future<void> launch();
@override
String toString() => name;
......
......@@ -36,8 +36,8 @@ class IOSEmulator extends Emulator {
String get label => null;
@override
Future<bool> launch() async {
Future<bool> launchSimulator(List<String> additionalArgs) async {
Future<void> launch() async {
Future<void> launchSimulator(List<String> additionalArgs) async {
final List<String> args = <String>['open']
.followedBy(additionalArgs)
.followedBy(<String>['-a', getSimulatorPath()]);
......
......@@ -62,7 +62,7 @@ class _MockEmulator extends Emulator {
final String label;
@override
Future<bool> launch() {
Future<void> launch() {
throw new UnimplementedError('Not implemented in Mock');
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment