Skip to content

Commit 1389737

Browse files
committed
Avoid extra target probes in Android boot fast lookup
1 parent c206a0b commit 1389737

3 files changed

Lines changed: 8 additions & 7 deletions

File tree

src/daemon/handlers/session.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ type EnsureAndroidEmulatorBoot = (params: {
5757
type ResolveAndroidBootSelectorDevice = (params: {
5858
deviceName?: string;
5959
serial?: string;
60+
includeTarget?: boolean;
6061
}) => Promise<DeviceInfo | undefined>;
6162

6263
const IOS_APPSTATE_SESSION_REQUIRED_MESSAGE =
@@ -258,9 +259,9 @@ const defaultEnsureAndroidEmulatorBoot: EnsureAndroidEmulatorBoot = async ({ avd
258259
return await ensureAndroidEmulatorBooted({ avdName, serial, headless });
259260
};
260261

261-
const defaultResolveAndroidBootSelectorDevice: ResolveAndroidBootSelectorDevice = async ({ deviceName, serial }) => {
262+
const defaultResolveAndroidBootSelectorDevice: ResolveAndroidBootSelectorDevice = async ({ deviceName, serial, includeTarget }) => {
262263
const { resolveAndroidBootSelectorDevice } = await import('../../platforms/android/devices.ts');
263-
return await resolveAndroidBootSelectorDevice({ deviceName, serial });
264+
return await resolveAndroidBootSelectorDevice({ deviceName, serial, includeTarget });
264265
};
265266

266267
const defaultReinstallOps: ReinstallOps = {
@@ -611,6 +612,7 @@ export async function handleSessionCommands(params: {
611612
? await resolveAndroidBootSelectorDeviceOverride({
612613
deviceName: flags.device,
613614
serial: flags.serial,
615+
includeTarget: Boolean(flags.target),
614616
})
615617
: undefined;
616618
const targetMismatch = Boolean(flags.target)

src/platforms/android/__tests__/devices.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ test('ensureAndroidEmulatorBooted launches emulator with GUI by default', async
185185
test('resolveAndroidBootSelectorDevice matches emulator by device name', async () => {
186186
await withMockedAndroidTools(async () => {
187187
await fs.writeFile(process.env.AGENT_DEVICE_TEST_EMU_BOOTED_FILE!, 'ready', 'utf8');
188-
const device = await resolveAndroidBootSelectorDevice({ deviceName: 'Pixel 9 Pro XL' });
188+
const device = await resolveAndroidBootSelectorDevice({ deviceName: 'Pixel 9 Pro XL', includeTarget: true });
189189
assert.ok(device);
190190
assert.equal(device?.id, 'emulator-5554');
191191
assert.equal(device?.kind, 'emulator');

src/platforms/android/devices.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ async function listAndroidDeviceEntries(): Promise<AndroidDeviceEntry[]> {
190190
export async function resolveAndroidBootSelectorDevice(params: {
191191
deviceName?: string;
192192
serial?: string;
193+
includeTarget?: boolean;
193194
}): Promise<DeviceInfo | undefined> {
194195
const adbAvailable = await whichCmd('adb');
195196
if (!adbAvailable) {
@@ -230,10 +231,8 @@ export async function resolveAndroidBootSelectorDevice(params: {
230231
}
231232

232233
if (!matched) return undefined;
233-
const [booted, target] = await Promise.all([
234-
isAndroidBooted(matched.serial),
235-
resolveAndroidTarget(matched.serial),
236-
]);
234+
const booted = await isAndroidBooted(matched.serial);
235+
const target = params.includeTarget ? await resolveAndroidTarget(matched.serial) : undefined;
237236
return {
238237
platform: 'android',
239238
id: matched.serial,

0 commit comments

Comments
 (0)