Skip to content

Commit

Permalink
feat: Supported selection of a given APK (#1338)
Browse files Browse the repository at this point in the history
This commit is to allow extension development on custom forks of
Firefox for Android.
  • Loading branch information
Khaled authored and rpl committed Jul 21, 2018
1 parent bc4eb1c commit 1cd88a1
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 2 deletions.
3 changes: 2 additions & 1 deletion src/extension-runners/firefox-android.js
Expand Up @@ -338,7 +338,8 @@ export class FirefoxAndroidExtensionRunner {
} = this;
// Discovery and select a Firefox for Android version.
const packages = await adbUtils.discoverInstalledFirefoxAPKs(
selectedAdbDevice
selectedAdbDevice,
firefoxApk
);

if (packages.length === 0) {
Expand Down
8 changes: 7 additions & 1 deletion src/util/adb.js
Expand Up @@ -99,7 +99,8 @@ export default class ADBUtils {
}

async discoverInstalledFirefoxAPKs(
deviceId: string
deviceId: string,
firefoxApk?: string
): Promise<Array<string>> {
log.debug(`Listing installed Firefox APKs on ${deviceId}`);

Expand All @@ -110,6 +111,11 @@ export default class ADBUtils {
return pmList.split('\n')
.map((line) => line.replace('package:', '').trim())
.filter((line) => {
// Look for an exact match if firefoxApk is defined.
if (firefoxApk) {
return line === firefoxApk;
}
// Match any package name that starts with the package name of a Firefox for Android browser.
return (
line.startsWith('org.mozilla.fennec') ||
line.startsWith('org.mozilla.firefox')
Expand Down
25 changes: 25 additions & 0 deletions tests/unit/test-util/test.adb.js
Expand Up @@ -15,6 +15,8 @@ import ADBUtils from '../../../src/util/adb';
const fakeADBPackageList = `
package:org.mozilla.fennec
package:org.mozilla.firefox
package:com.some.firefox.fork
package:com.some.firefox.fork2
package:org.some.other.software
`;

Expand Down Expand Up @@ -236,6 +238,29 @@ describe('utils/adb', () => {
sinon.assert.calledOnce(adb.util.readAll);
assert.deepEqual(packages, ['org.mozilla.fennec', 'org.mozilla.firefox']);
});

it('resolves the given firefox APK with exact package name', async () => {
const adb = getFakeADBKit({
adbClient: {
shell: sinon.spy(() => Promise.resolve('')),
},
adbkitUtil: {
readAll: sinon.spy(() => {
return Promise.resolve(Buffer.from(fakeADBPackageList));
}),
},
});
const adbUtils = new ADBUtils({adb});

const promise = adbUtils.discoverInstalledFirefoxAPKs(
'device1',
'com.some.firefox.fork'
);
const packages = await assert.isFulfilled(promise);
sinon.assert.calledOnce(adb.fakeADBClient.shell);
sinon.assert.calledOnce(adb.util.readAll);
assert.deepEqual(packages, ['com.some.firefox.fork']);
});
});

describe('getAndroidVersionNumber', () => {
Expand Down

0 comments on commit 1cd88a1

Please sign in to comment.