Skip to content

Commit ed6951f

Browse files
committed
Refactor tizen_emulator.dart
1 parent 35f187a commit ed6951f

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

lib/tizen_emulator.dart

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class TizenEmulatorManager extends EmulatorManager {
8383
);
8484
}
8585

86+
assert(_tizenSdk != null);
8687
final RunResult runResult = await _processUtils.run(
8788
<String>[
8889
_tizenSdk.emCli.path,
@@ -102,6 +103,7 @@ class TizenEmulatorManager extends EmulatorManager {
102103
}
103104

104105
List<PlatformImage> _loadAllPlatformImages() {
106+
assert(_tizenSdk != null);
105107
final Directory platformsDir = _tizenSdk.platformsDirectory;
106108
if (!platformsDir.existsSync()) {
107109
return <PlatformImage>[];
@@ -231,33 +233,39 @@ class TizenEmulators extends EmulatorDiscovery {
231233
return <Emulator>[];
232234
}
233235

234-
// _tizenSdk is not null here.
236+
assert(_tizenSdk != null);
235237
final Directory emulatorDir = _tizenSdk.sdkDataDirectory
236238
.childDirectory('emulator')
237239
.childDirectory('vms');
238240
if (!emulatorDir.existsSync()) {
239241
return <Emulator>[];
240242
}
241243

242-
TizenEmulator loadEmulatorInfo(String id) {
244+
TizenEmulator loadEmulatorInfo(Directory directory) {
245+
final String id = directory.basename;
243246
final File configFile =
244247
emulatorDir.childDirectory(id).childFile('vm_config.xml');
248+
if (!configFile.existsSync()) {
249+
return null;
250+
}
251+
252+
XmlDocument document;
253+
try {
254+
document = XmlDocument.parse(configFile.readAsStringSync().trim());
255+
} on XmlException {
256+
return null;
257+
}
245258

246-
final XmlDocument xmlDocument =
247-
XmlDocument.parse(configFile.readAsStringSync());
248-
final XmlElement deviceTemplate =
249-
xmlDocument.findAllElements('deviceTemplate').first;
250-
final String name = deviceTemplate.getAttribute('name');
251-
final XmlElement diskImage =
252-
xmlDocument.findAllElements('diskImage').first;
253-
final String profile = diskImage.getAttribute('profile');
254-
final String version = diskImage.getAttribute('version');
255-
256-
final Map<String, String> properties = <String, String>{
257-
'name': name,
258-
'profile': profile,
259-
'version': version,
260-
};
259+
final Map<String, String> properties = <String, String>{};
260+
final Iterable<XmlElement> deviceTemplates =
261+
document.findAllElements('deviceTemplate');
262+
final Iterable<XmlElement> diskImages =
263+
document.findAllElements('diskImage');
264+
if (deviceTemplates.isNotEmpty && diskImages.isNotEmpty) {
265+
properties['name'] = deviceTemplates.first.getAttribute('name');
266+
properties['profile'] = diskImages.first.getAttribute('profile');
267+
properties['version'] = diskImages.first.getAttribute('version');
268+
}
261269

262270
return TizenEmulator(
263271
id,
@@ -269,11 +277,10 @@ class TizenEmulators extends EmulatorDiscovery {
269277
}
270278

271279
final List<Emulator> emulators = <Emulator>[];
272-
for (final FileSystemEntity entity in emulatorDir.listSync()) {
273-
if (entity is Directory &&
274-
entity.childFile('vm_config.xml').existsSync()) {
275-
final String id = entity.basename;
276-
emulators.add(loadEmulatorInfo(id));
280+
for (final Directory dir in emulatorDir.listSync().whereType<Directory>()) {
281+
final TizenEmulator emulator = loadEmulatorInfo(dir);
282+
if (emulator != null) {
283+
emulators.add(emulator);
277284
}
278285
}
279286
return emulators;
@@ -288,7 +295,8 @@ class TizenEmulator extends Emulator {
288295
@required Logger logger,
289296
@required ProcessManager processManager,
290297
@required TizenSdk tizenSdk,
291-
}) : _properties = properties,
298+
}) : assert(tizenSdk != null),
299+
_properties = properties,
292300
_logger = logger,
293301
_processUtils =
294302
ProcessUtils(logger: logger, processManager: processManager),
@@ -316,7 +324,7 @@ class TizenEmulator extends Emulator {
316324

317325
@override
318326
Future<void> launch() async {
319-
final File emCli = _tizenSdk?.emCli;
327+
final File emCli = _tizenSdk.emCli;
320328
if (emCli == null || !emCli.existsSync()) {
321329
throwToolExit('Unable to locate Tizen Emulator Manager.');
322330
}

0 commit comments

Comments
 (0)