|  | // 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' show Directory, Process; | 
|  |  | 
|  | import 'package:path/path.dart' as path; | 
|  |  | 
|  | import '../framework/devices.dart' as adb; | 
|  | import '../framework/framework.dart' show TaskFunction; | 
|  | import '../framework/task_result.dart' show TaskResult; | 
|  | import '../framework/utils.dart' as utils; | 
|  | import '../microbenchmarks.dart' as microbenchmarks; | 
|  |  | 
|  | TaskFunction runTask(adb.DeviceOperatingSystem operatingSystem) { | 
|  | return () async { | 
|  | adb.deviceOperatingSystem = operatingSystem; | 
|  | final adb.Device device = await adb.devices.workingDevice; | 
|  | await device.unlock(); | 
|  |  | 
|  | final Directory appDir = utils.dir(path.join(utils.flutterDirectory.path, | 
|  | 'dev/benchmarks/platform_channels_benchmarks')); | 
|  | final Process flutterProcess = await utils.inDirectory(appDir, () async { | 
|  | final List<String> createArgs = <String>[ | 
|  | '--platforms', | 
|  | 'ios,android', | 
|  | '--no-overwrite', | 
|  | '-v', | 
|  | '.', | 
|  | ]; | 
|  | print('\nExecuting: flutter create $createArgs $appDir'); | 
|  | await utils.flutter('create', options: createArgs); | 
|  |  | 
|  | final List<String> options = <String>[ | 
|  | '-v', | 
|  | // --release doesn't work on iOS due to code signing issues | 
|  | '--profile', | 
|  | '--no-publish-port', | 
|  | '-d', | 
|  | device.deviceId, | 
|  | ]; | 
|  | return utils.startFlutter( | 
|  | 'run', | 
|  | options: options, | 
|  | ); | 
|  | }); | 
|  |  | 
|  | final Map<String, double> results = | 
|  | await microbenchmarks.readJsonResults(flutterProcess); | 
|  | return TaskResult.success(results, | 
|  | benchmarkScoreKeys: results.keys.toList()); | 
|  | }; | 
|  | } |