'use strict';
+const EXTENSIONS_PATH = process.env.WAS_EXTENSIONS_PATH;
+const ExtensionManager = require('./extension_manager');
const {app, ipcMain, pwrt} = require('electron');
const IPC_MESSAGE = require('./ipc_message');
const WAS_EVENT = require('./was_event');
this.quitting = false;
this.handleWasEvents();
this.handleIpcMessages();
+ this.extensionManager = null;
this.isLaunched = false;
var _this = this;
+ app.on('will-finish-launching', function() {
+ return runtime_debug('will-finish-launching');
+ });
app.on('before-quit', function(event) {
runtime_debug('before-quit');
- _this.quitting = true;
+ return _this.quitting = true;
});
app.on('will-quit', function(event) {
runtime_debug('will-quit');
+ this.extensionManager.deactivateAll(app);
+ return _this.killAllProcesses();
});
app.on('quit', function(event) {
return runtime_debug('quit');
});
app.on('ready', function(event) {
runtime_debug('ready');
+ this.extensionManager = new ExtensionManager(EXTENSIONS_PATH);
+ if (!options.noExtensions) {
+ this.extensionManager.build();
+ }
if (pwrt.isElectronLaunch()) {
+ this.extensionManager.activateAll(app);
return;
}
this.webApplication = new WebApplication(options);
+ this.extensionManager.activateAll(app);
});
}
onPause(web_window_id) {
onAppControl() {}
onLanguageChanged() {}
onLowMemory() {}
+ killAllProcesses() {}
handleWasEvents() {
var _this = this;
events.on(WAS_EVENT.WEBAPPLICATION.RESUME, (sender, id) => {
runtime_debug('handleWasMessages: destroyed ' + id);
return app.emit(IPC_MESSAGE.WEBCONTENTS.DESTROYED, id);
});
+ ipcMain.on(IPC_MESSAGE.EXTENSIONS.INSTALLED, (sender, name) => {
+ runtime_debug('handleIpcMessages: INSTALLED ' + name);
+ this.extensionManager.build();
+ return this.extensionManager.activate(app, name);
+ });
+ ipcMain.on(IPC_MESSAGE.EXTENSIONS.UNINSTALLED, (sender, name) => {
+ runtime_debug('handleIpcMessages: UNINSTALLED ' + name);
+ return this.extensionManager.deactivate(app, name);
+ });
+ ipcMain.on(IPC_MESSAGE.EXTENSIONS.ACTIVATE, (sender, name) => {
+ runtime_debug('handleIpcMessages: ACTIVATE ' + name);
+ return this.extensionManager.activate(app, name);
+ });
+ ipcMain.on(IPC_MESSAGE.EXTENSIONS.DEACTIVATE, (sender, name) => {
+ runtime_debug('handleIpcMessages: DEACTIVATE ' + name);
+ return this.extensionManager.deactivate(app, name);
+ });
}
}
module.exports = Runtime;