UNPKG

foxr

Version:

Node.js API to control Firefox

124 lines (102 loc) 2.95 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _events = require("events"); var _Page = _interopRequireDefault(require("./Page")); var _types = require("./types"); class Browser extends _events.EventEmitter { constructor(arg) { super(); this._send = arg.send; } async close() { await this._send('Marionette:AcceptConnections', { value: false }); await this._send('Marionette:Quit'); this.emit('disconnected'); } async disconnect() { await this._send('WebDriver:DeleteSession'); this.emit('disconnected'); } async getPref(pref, defaultBranch = false) { await this._setContext(_types.Context.CHROME); const value = await this._send('WebDriver:ExecuteScript', { script: `let [pref, defaultBranch] = arguments; Cu.import('resource://gre/modules/Preferences.jsm'); let prefs = new Preferences({defaultBranch}); return prefs.get(pref);`, args: [pref, defaultBranch] }, 'value'); await this._setContext(_types.Context.CONTENT); return value; } async install(path, isTemporary) { const { value } = await this._send('Addon:Install', { path, temporary: isTemporary }); return value; } async newPage() { await this._send('WebDriver:ExecuteScript', { script: 'window.open()' }); const pages = await this._send('WebDriver:GetWindowHandles'); const newPageId = pages[pages.length - 1]; await this._send('WebDriver:SwitchToWindow', { name: newPageId, focus: true }); return new _Page.default({ browser: this, id: newPageId, send: this._send }); } async pages() { const ids = await this._send('WebDriver:GetWindowHandles'); return ids.map(id => new _Page.default({ browser: this, id, send: this._send })); } async _setContext(context) { await this._send('Marionette:SetContext', { value: context }); } async setPref(pref, value, defaultBranch = false) { await this._setContext(_types.Context.CHROME); const error = await this._send('WebDriver:ExecuteScript', { script: `let [pref, value, defaultBranch] = arguments; Cu.import('resource://gre/modules/Preferences.jsm'); let prefs = new Preferences({defaultBranch}); try { prefs.set(pref,value); return null; } catch(e) { return e; }`, args: [pref, value, defaultBranch] }, 'value'); await this._setContext(_types.Context.CONTENT); if (error) { throw new Error(`SetPref failed: ${error.message}`); } } async uninstall(id) { await this._send('Addon:Uninstall', { id }); } } var _default = Browser; exports.default = _default;