}
const ADN_PATH = path.join(os.homedir(), 'data/electron/runtime_addon');
+const INSTALLED_ADN_MANIFEST_PATH = path.join(os.homedir(), 'apps_rw/xwalk-service/addon');
const MANIFEST_FILE = 'manifest.json';
const ADDONS_DB_FILE = 'addons_db.json';
this.addonList = list;
}
+ private getInstalledAddonManifest(): void {
+ if (!fs.existsSync(INSTALLED_ADN_MANIFEST_PATH))
+ return;
+ fs.readdirSync(INSTALLED_ADN_MANIFEST_PATH).forEach((file) => {
+ console.log('in xwalkservice directory, add-on : ' + file);
+ let manifestPath = path.join(os.homedir(), 'apps_rw', file, '/shared/res');
+ let pkgname = path.join(file);
+ this.checkAddon(manifestPath, pkgname);
+ });
+ }
+
initialize(): boolean {
wrt.on('addon-installed', (event: any, pathList: string[]) => {
for (let path of pathList) {
console.log('addon-installed at ' + path);
- this.checkAddon(path);
+ this.checkAddon(path, '');
}
this.updateDB();
});
console.log('addon-unistalled named ' + id);
});
- wrt.requestAddonList();
+ if (wrt.tv) {
+ this.getInstalledAddonManifest();
+ this.updateDB();
+ } else {
+ wrt.requestAddonList();
+ }
return this.isAddonAvailable();
}
this.eventManager.emit(eventName, ...args);
}
- private checkAddon(appPath: string) {
+ private checkAddon(appPath: string, pkgname: string) {
let manifest;
try {
let manifestPath = path.join(appPath, MANIFEST_FILE);
}
let arr = appPath.split("/");
- let index = 0;
- for (let i in arr) {
- if (arr[i] == 'shared') {
- index = Number(i) - 1;
- break;
+ if(pkgname === '') {
+ for (let i in arr) {
+ if (arr[i] == 'shared') {
+ let index = 0;
+ index = Number(i) - 1;
+ pkgname = arr[index];
+ break;
+ }
}
}
name: manifest.name,
isChromeExtension,
path: isChromeExtension ? appPath : path.join(appPath, manifest.main),
- pkgid: arr[index],
+ pkgid: pkgname,
activate: true
});
}