Skip to content
This repository was archived by the owner on Feb 2, 2021. It is now read-only.

Add check in iOS device discovery if platform is Android. #985

Merged
merged 3 commits into from
Jul 21, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion definitions/mobile.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -413,7 +413,7 @@ declare module Mobile {
startDeviceDetectionInterval(): Promise<void>;
getDeviceByIdentifier(identifier: string): Mobile.IDevice;
mapAbstractToTcpPort(deviceIdentifier: string, appIdentifier: string, framework: string): Promise<string>;
detectCurrentlyAttachedDevices(): Promise<void>;
detectCurrentlyAttachedDevices(options?: Mobile.IDeviceLookingOptions): Promise<void>;
startEmulator(platform?: string, emulatorImage?: string): Promise<void>;
isCompanionAppInstalledOnDevices(deviceIdentifiers: string[], framework: string): Promise<IAppInstalledInfo>[];
getDebuggableApps(deviceIdentifiers: string[]): Promise<Mobile.IDeviceApplicationInformation[]>[];
Expand Down
8 changes: 6 additions & 2 deletions mobile/mobile-core/android-device-discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ export class AndroidDeviceDiscovery extends DeviceDiscovery implements Mobile.IA
private isStarted: boolean;

constructor(private $injector: IInjector,
private $adb: Mobile.IAndroidDebugBridge) {
private $adb: Mobile.IAndroidDebugBridge,
private $mobileHelper: Mobile.IMobileHelper) {
super();
}

Expand All @@ -29,7 +30,10 @@ export class AndroidDeviceDiscovery extends DeviceDiscovery implements Mobile.IA
this.removeDevice(deviceIdentifier);
}

public async startLookingForDevices(): Promise<void> {
public async startLookingForDevices(options?: Mobile.IDeviceLookingOptions): Promise<void> {
if (options && options.platform && !this.$mobileHelper.isAndroidPlatform(options.platform)) {
return;
}
await this.ensureAdbServerStarted();
await this.checkForDevices();
}
Expand Down
30 changes: 21 additions & 9 deletions mobile/mobile-core/devices-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,8 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi

for (const deviceDiscovery of this._allDeviceDiscoveries) {
try {
await deviceDiscovery.startLookingForDevices();
const deviceLookingOptions = this.getDeviceLookingOptions();
await deviceDiscovery.startLookingForDevices(deviceLookingOptions);
} catch (err) {
this.$logger.trace("Error while checking for new devices.", err);
}
Expand Down Expand Up @@ -219,15 +220,18 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi
*/
private async startLookingForDevices(options?: Mobile.IDeviceLookingOptions): Promise<void> {
this.$logger.trace("startLookingForDevices; platform is %s", this._platform);
if (!options) {
options = this.getDeviceLookingOptions();
}
if (!this._platform) {
await this.detectCurrentlyAttachedDevices(options);
await this.startDeviceDetectionInterval();
} else {
if (this.$mobileHelper.isiOSPlatform(this._platform)) {
await this.$iOSDeviceDiscovery.startLookingForDevices();
await this.$iOSSimulatorDiscovery.startLookingForDevices();
await this.$iOSDeviceDiscovery.startLookingForDevices(options);
await this.$iOSSimulatorDiscovery.startLookingForDevices(options);
} else if (this.$mobileHelper.isAndroidPlatform(this._platform)) {
await this.$androidDeviceDiscovery.startLookingForDevices();
await this.$androidDeviceDiscovery.startLookingForDevices(options);
}

for (const deviceDiscovery of this._otherDeviceDiscoveries) {
Expand Down Expand Up @@ -256,7 +260,8 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi
* @param identifier parameter passed by the user to --device flag
*/
public async getDevice(deviceOption: string): Promise<Mobile.IDevice> {
await this.detectCurrentlyAttachedDevices();
const deviceLookingOptions = this.getDeviceLookingOptions();
await this.detectCurrentlyAttachedDevices(deviceLookingOptions);
let device: Mobile.IDevice = null;

let emulatorIdentifier = null;
Expand Down Expand Up @@ -459,7 +464,8 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi
if (data.skipDeviceDetectionInterval) {
await this.detectCurrentlyAttachedDevices();
} else {
await this.startLookingForDevices({ shouldReturnImmediateResult: true, platform: this._platform });
const deviceLookingOptions = this.getDeviceLookingOptions(this._platform, true);
await this.startLookingForDevices(deviceLookingOptions);
}
} else {
await this.detectCurrentlyAttachedDevices();
Expand Down Expand Up @@ -597,7 +603,7 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi
public async startEmulator(platform?: string, emulatorImage?: string): Promise<void> {

platform = platform || this._platform;

const deviceLookingOptions = this.getDeviceLookingOptions(platform);
let emulatorServices = this.resolveEmulatorServices(platform);
if (!emulatorServices) {
this.$errors.failWithoutHelp("Unable to detect platform for which to start emulator.");
Expand All @@ -606,9 +612,9 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi
await emulatorServices.startEmulator(emulatorImage);

if (this.$mobileHelper.isAndroidPlatform(platform)) {
await this.$androidDeviceDiscovery.startLookingForDevices();
await this.$androidDeviceDiscovery.startLookingForDevices(deviceLookingOptions);
} else if (this.$mobileHelper.isiOSPlatform(platform) && this.$hostInfo.isDarwin) {
await this.$iOSSimulatorDiscovery.startLookingForDevices();
await this.$iOSSimulatorDiscovery.startLookingForDevices(deviceLookingOptions);
}
}

Expand Down Expand Up @@ -660,6 +666,12 @@ export class DevicesService extends EventEmitter implements Mobile.IDevicesServi
isLiveSyncSupported
};
}

private getDeviceLookingOptions(platform?: string, shouldReturnImmediateResult?: boolean): Mobile.IDeviceLookingOptions {
platform = platform || this._platform;
shouldReturnImmediateResult = shouldReturnImmediateResult || false;
return { shouldReturnImmediateResult: shouldReturnImmediateResult, platform: platform };
}
}

$injector.register("devicesService", DevicesService);
4 changes: 4 additions & 0 deletions mobile/mobile-core/ios-device-discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ export class IOSDeviceDiscovery extends DeviceDiscovery {
constructor(private $injector: IInjector,
private $logger: ILogger,
private $iTunesValidator: Mobile.IiTunesValidator,
private $mobileHelper: Mobile.IMobileHelper,
private $iosDeviceOperations: IIOSDeviceOperations) {
super();
}
Expand All @@ -24,6 +25,9 @@ export class IOSDeviceDiscovery extends DeviceDiscovery {
}

public async startLookingForDevices(options?: Mobile.IDeviceLookingOptions): Promise<void> {
if (options && options.platform && !this.$mobileHelper.isiOSPlatform(options.platform)) {
return;
}
if (this.validateiTunes()) {
await this.$iosDeviceOperations.startLookingForDevices((deviceInfo: IOSDeviceLib.IDeviceActionInfo) => {
this.createAndAddDevice(deviceInfo);
Expand Down
7 changes: 6 additions & 1 deletion mobile/mobile-core/ios-simulator-discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,16 @@ export class IOSSimulatorDiscovery extends DeviceDiscovery {
constructor(private $injector: IInjector,
private $childProcess: IChildProcess,
private $iOSSimResolver: Mobile.IiOSSimResolver,
private $mobileHelper: Mobile.IMobileHelper,
private $hostInfo: IHostInfo) {
super();
}

public async startLookingForDevices(): Promise<void> {
public async startLookingForDevices(options?: Mobile.IDeviceLookingOptions): Promise<void> {
if (options && options.platform && !this.$mobileHelper.isiOSPlatform(options.platform)) {
return;
}

return new Promise<void>((resolve, reject) => {
return this.checkForDevices(resolve, reject);
});
Expand Down
5 changes: 5 additions & 0 deletions test/unit-tests/mobile/android-device-discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ function createTestInjector(): IInjector {
injector.register("errors", {});
injector.register("logger", {});
injector.register("androidDebugBridgeResultHandler", AndroidDebugBridgeResultHandler);
injector.register("mobileHelper", {
isAndroidPlatform: () => {
return true;
}
});
injector.register("childProcess", {
spawn: (command: string, args?: string[], options?: any) => {
mockChildProcess = new MockEventEmitter();
Expand Down
6 changes: 6 additions & 0 deletions test/unit-tests/mobile/ios-simulator-discovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ function createTestInjector(): IInjector {

injector.register("devicePlatformsConstants", DevicePlatformsConstants);

injector.register("mobileHelper", {
isiOSPlatform: () => {
return true;
}
});

injector.register("iOSSimulatorDiscovery", IOSSimulatorDiscovery);

injector.register("iOSSimulatorLogProvider", {});
Expand Down