const fs = require('fs');
const path = require('path');
+const EXT_PATH =
+ path.join(require('os').homedir(), 'data/electron/runtime_addon');
const MANIFEST_FILE = 'manifest.json';
const PRELOAD_JS_FILE = 'preload.js';
const EXTENSIONS_DB_FILE = 'extensions_db.json';
class ExtensionManager {
constructor() {
- this.ext_path_ = path.join(__dirname.split('wrt')[0], 'electron/runtime_addon');
- console.log('Extension path : ' + this.ext_path_);
this.extensions_list_ = null;
this.extensions_ = null;
this.extensions_API_ = null;
var extensions_list = [],
filenames;
try {
- filenames = fs.readdirSync(this.ext_path_);
+ filenames = fs.readdirSync(EXT_PATH);
} catch (e) {
console.error('LoadExtensionsListFromPath - fs.readdirSync error : ' + e);
return false;
if (filenames) {
for (var i in filenames) {
var filename = filenames[i],
- filepath = path.join(this.ext_path_, filename),
+ filepath = path.join(EXT_PATH, filename),
stats = fs.statSync(filepath);
if (stats.isDirectory()) {
loadJsonDB(db_path) {
if (!db_path) {
- db_path = path.join(this.ext_path_, EXTENSIONS_DB_FILE);
+ db_path = path.join(EXT_PATH, EXTENSIONS_DB_FILE);
}
var extensions_list;
try {
saveJsonDB(db_path) {
if (!db_path) {
- db_path = path.join(this.ext_path_, EXTENSIONS_DB_FILE);
+ db_path = path.join(EXT_PATH, EXTENSIONS_DB_FILE);
}
var fd;
try {
generateJsFromAPIs(js_path) {
if (!js_path) {
- js_path = path.join(this.ext_path_, PRELOAD_JS_FILE);
+ js_path = path.join(EXT_PATH, PRELOAD_JS_FILE);
}
console.log('preload.js : ' + js_path);
var fd;
}
}
+ isAddonAvailable() {
+ return this.extensions_ != null;
+ }
+
static getManifestFile() {
return MANIFEST_FILE;
}
}
static getExtensionsPath() {
- return ext_path_;
+ return EXT_PATH;
}
}
console.log('Tizen Web App launch');
if (!_this.webApplication) {
console.log('Creating WebApplication');
+ options.isAddonAvailable = !options.noExtensions &&
+ _this.extensionManager.isAddonAvailable();
options.launchMode = appControl.getData('http://samsung.com/appcontrol/data/launch_mode');
_this.webApplication = new WebApplication(options);
_this.webApplication.mainWindow.loadURL(src);
class WebApplication {
constructor(options) {
- let winopt = this.getBrowserWindowOption();
+ let winopt = this.getBrowserWindowOption(options);
console.log('opt: ' + JSON.stringify(winopt));
this.mainWindow = new BrowserWindow(winopt);
if (options.devMode) {
this.preloadState = 'none';
}
}
- getBrowserWindowOption() {
+ getBrowserWindowOption(options) {
return {
fullscreen: false,
show: false,
webPreferences: {
- nodeIntegration: false,
+ nodeIntegration: options.isAddonAvailable,
nodeIntegrationInWorker: false
},
'web-preferences': {