/**
* @file BrowserManager类
*/
import Browser from "./Browser.js"
/**
* @class BrowserManager
*/
export default class BrowserManager {
/**
* @constructor BrowserManager
*
*/
constructor() {
this._browsers = new Map()
}
/**
* 打开浏览器
* @param {*} options 见Browser的options配置
*/
launch(options) {
const browser = new Browser(this, options)
return browser
.init()
.then(() => (this._browsers.set(browser.id, browser), browser))
}
get size() {
return this._browsers.size
}
/**
* 通过browserId获取browser实例
* @param {string} browserId browser.id
*/
get(browserId) {
return this._browsers.get(browserId)
}
/**
* 获取当前最视窗最前端的browser实例,也就是激活的browser实例
*/
frontBrowser() {
return this._browsers.find((item) => item.isFront === true)
}
/**
* 删除browser,不可直接调用
* 如需要关闭browser,请调用browser.close()
* @private
* @param {string} browserId
*/
_removeBrowser(browserId) {
this._browsers.delete(browserId)
}
/**
* 激活browser,不可直接调用
* 如需要激活页面,请调用browser.bringToFront()
* @private
* @param {string} pageId
*/
_bringBrowserToFront(browserId) {
this._browsers.forEach((browser) => {
if (browserId === browser.id) {
browser._doFront()
} else {
browser._doBack()
}
})
}
}