OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 #import <Foundation/Foundation.h> | 4 #import <Foundation/Foundation.h> |
5 #if defined(__MAC_10_12) && __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12 | 5 #if defined(__MAC_10_12) && __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_12 |
6 #include <getopt.h> | 6 #include <getopt.h> |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 namespace { | 9 namespace { |
10 | 10 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
82 | 82 |
83 - (void)setStandardError:(id)error { | 83 - (void)setStandardError:(id)error { |
84 [_task setStandardError:error]; | 84 [_task setStandardError:error]; |
85 } | 85 } |
86 | 86 |
87 - (void)run { | 87 - (void)run { |
88 [_task launch]; | 88 [_task launch]; |
89 [_task waitUntilExit]; | 89 [_task waitUntilExit]; |
90 } | 90 } |
91 | 91 |
92 - (void)launch { | |
93 [_task launch]; | |
94 } | |
95 | |
96 - (void)waitUntilExit { | |
97 [_task waitUntilExit]; | |
98 } | |
99 | |
92 @end | 100 @end |
93 | 101 |
94 // Return array of available iOS runtime dictionaries. Unavailable (old Xcode | 102 // Return array of available iOS runtime dictionaries. Unavailable (old Xcode |
95 // versions) or other runtimes (tvOS, watchOS) are removed. | 103 // versions) or other runtimes (tvOS, watchOS) are removed. |
96 NSArray* Runtimes(NSDictionary* simctl_list) { | 104 NSArray* Runtimes(NSDictionary* simctl_list) { |
97 NSMutableArray* runtimes = | 105 NSMutableArray* runtimes = |
98 [[simctl_list[@"runtimes"] mutableCopy] autorelease]; | 106 [[simctl_list[@"runtimes"] mutableCopy] autorelease]; |
99 for (NSDictionary* runtime in simctl_list[@"runtimes"]) { | 107 for (NSDictionary* runtime in simctl_list[@"runtimes"]) { |
100 if (![runtime[@"identifier"] | 108 if (![runtime[@"identifier"] |
101 hasPrefix:@"com.apple.CoreSimulator.SimRuntime.iOS"] || | 109 hasPrefix:@"com.apple.CoreSimulator.SimRuntime.iOS"] || |
(...skipping 18 matching lines...) Expand all Loading... | |
120 } | 128 } |
121 return devicetypes; | 129 return devicetypes; |
122 } | 130 } |
123 | 131 |
124 // Get list of devices, runtimes, etc from sim_ctl. | 132 // Get list of devices, runtimes, etc from sim_ctl. |
125 NSDictionary* GetSimulatorList() { | 133 NSDictionary* GetSimulatorList() { |
126 XCRunTask* task = [[[XCRunTask alloc] | 134 XCRunTask* task = [[[XCRunTask alloc] |
127 initWithArguments:@[ @"simctl", @"list", @"-j" ]] autorelease]; | 135 initWithArguments:@[ @"simctl", @"list", @"-j" ]] autorelease]; |
128 NSPipe* out = [NSPipe pipe]; | 136 NSPipe* out = [NSPipe pipe]; |
129 [task setStandardOutput:out]; | 137 [task setStandardOutput:out]; |
130 [task run]; | |
131 | 138 |
139 [task launch]; | |
132 NSData* data = [[out fileHandleForReading] readDataToEndOfFile]; | 140 NSData* data = [[out fileHandleForReading] readDataToEndOfFile]; |
rohitrao (ping after 24h)
2016/08/13 00:59:05
Add a comment explaining why the code is ordered t
| |
141 [task waitUntilExit]; | |
142 | |
133 NSError* error = nil; | 143 NSError* error = nil; |
134 return [NSJSONSerialization JSONObjectWithData:data | 144 return [NSJSONSerialization JSONObjectWithData:data |
135 options:kNilOptions | 145 options:kNilOptions |
136 error:&error]; | 146 error:&error]; |
137 } | 147 } |
138 | 148 |
139 // List supported runtimes and devices. | 149 // List supported runtimes and devices. |
140 void PrintSupportedDevices(NSDictionary* simctl_list) { | 150 void PrintSupportedDevices(NSDictionary* simctl_list) { |
141 printf("\niOS devices:\n"); | 151 printf("\niOS devices:\n"); |
142 for (NSDictionary* type in Devices(simctl_list)) { | 152 for (NSDictionary* type in Devices(simctl_list)) { |
(...skipping 1115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1258 } | 1268 } |
1259 | 1269 |
1260 // Note that this code is only executed if the simulator fails to start | 1270 // Note that this code is only executed if the simulator fails to start |
1261 // because once the main run loop is started, only the delegate calling | 1271 // because once the main run loop is started, only the delegate calling |
1262 // exit() will end the program. | 1272 // exit() will end the program. |
1263 [pool drain]; | 1273 [pool drain]; |
1264 return kExitFailure; | 1274 return kExitFailure; |
1265 } | 1275 } |
1266 | 1276 |
1267 #endif | 1277 #endif |
OLD | NEW |