Merge pull request #5915 from electron/remove-result-collection

Remove unused results collection
This commit is contained in:
Cheng Zhao 2016-06-08 00:58:16 +00:00 committed by GitHub
commit d2331bc2c0

View file

@ -4,9 +4,9 @@ const ipcMain = require('electron').ipcMain
const webContents = require('electron').webContents const webContents = require('electron').webContents
// Doesn't exist in early initialization. // Doesn't exist in early initialization.
var webViewManager = null let webViewManager = null
var supportedWebViewEvents = [ const supportedWebViewEvents = [
'load-commit', 'load-commit',
'did-finish-load', 'did-finish-load',
'did-fail-load', 'did-fail-load',
@ -40,29 +40,29 @@ var supportedWebViewEvents = [
'update-target-url' 'update-target-url'
] ]
var nextInstanceId = 0 let nextInstanceId = 0
var guestInstances = {} const guestInstances = {}
var embedderElementsMap = {} const embedderElementsMap = {}
var reverseEmbedderElementsMap = {} const reverseEmbedderElementsMap = {}
// Moves the last element of array to the first one. // Moves the last element of array to the first one.
var moveLastToFirst = function (list) { const moveLastToFirst = function (list) {
return list.unshift(list.pop()) return list.unshift(list.pop())
} }
// Generate guestInstanceId. // Generate guestInstanceId.
var getNextInstanceId = function () { const getNextInstanceId = function () {
return ++nextInstanceId return ++nextInstanceId
} }
// Create a new guest instance. // Create a new guest instance.
var createGuest = function (embedder, params) { const createGuest = function (embedder, params) {
var destroy, destroyEvents, event, fn, guest, i, id, j, len, len1, listeners
if (webViewManager == null) { if (webViewManager == null) {
webViewManager = process.atomBinding('web_view_manager') webViewManager = process.atomBinding('web_view_manager')
} }
id = getNextInstanceId(embedder)
guest = webContents.create({ const id = getNextInstanceId(embedder)
const guest = webContents.create({
isGuest: true, isGuest: true,
partition: params.partition, partition: params.partition,
embedder: embedder embedder: embedder
@ -73,37 +73,32 @@ var createGuest = function (embedder, params) {
} }
// Destroy guest when the embedder is gone or navigated. // Destroy guest when the embedder is gone or navigated.
destroyEvents = ['will-destroy', 'crashed', 'did-navigate'] const destroyEvents = ['will-destroy', 'crashed', 'did-navigate']
destroy = function () { const destroy = function () {
if (guestInstances[id] != null) { if (guestInstances[id] != null) {
return destroyGuest(embedder, id) destroyGuest(embedder, id)
} }
} }
for (i = 0, len = destroyEvents.length; i < len; i++) { for (const event of destroyEvents) {
event = destroyEvents[i]
embedder.once(event, destroy) embedder.once(event, destroy)
// Users might also listen to the crashed event, so We must ensure the guest // Users might also listen to the crashed event, so we must ensure the guest
// is destroyed before users' listener gets called. It is done by moving our // is destroyed before users' listener gets called. It is done by moving our
// listener to the first one in queue. // listener to the first one in queue.
listeners = embedder._events[event] const listeners = embedder._events[event]
if (Array.isArray(listeners)) { if (Array.isArray(listeners)) {
moveLastToFirst(listeners) moveLastToFirst(listeners)
} }
} }
guest.once('destroyed', function () { guest.once('destroyed', function () {
var j, len1, results for (const event of destroyEvents) {
results = [] embedder.removeListener(event, destroy)
for (j = 0, len1 = destroyEvents.length; j < len1; j++) {
event = destroyEvents[j]
results.push(embedder.removeListener(event, destroy))
} }
return results
}) })
// Init guest web view after attached. // Init guest web view after attached.
guest.once('did-attach', function () { guest.once('did-attach', function () {
var opts let opts
params = this.attachParams params = this.attachParams
delete this.attachParams delete this.attachParams
this.viewInstanceId = params.instanceId this.viewInstanceId = params.instanceId
@ -136,13 +131,12 @@ var createGuest = function (embedder, params) {
}) })
// Dispatch events to embedder. // Dispatch events to embedder.
fn = function (event) { const fn = function (event) {
return guest.on(event, function (_, ...args) { guest.on(event, function (_, ...args) {
embedder.send.apply(embedder, ['ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT-' + guest.viewInstanceId, event].concat(args)) embedder.send.apply(embedder, ['ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT-' + guest.viewInstanceId, event].concat(args))
}) })
} }
for (j = 0, len1 = supportedWebViewEvents.length; j < len1; j++) { for (const event of supportedWebViewEvents) {
event = supportedWebViewEvents[j]
fn(event) fn(event)
} }
@ -155,12 +149,13 @@ var createGuest = function (embedder, params) {
guest.on('size-changed', function (_, ...args) { guest.on('size-changed', function (_, ...args) {
embedder.send.apply(embedder, ['ELECTRON_GUEST_VIEW_INTERNAL_SIZE_CHANGED-' + guest.viewInstanceId].concat(args)) embedder.send.apply(embedder, ['ELECTRON_GUEST_VIEW_INTERNAL_SIZE_CHANGED-' + guest.viewInstanceId].concat(args))
}) })
return id return id
} }
// Attach the guest to an element of embedder. // Attach the guest to an element of embedder.
var attachGuest = function (embedder, elementInstanceId, guestInstanceId, params) { const attachGuest = function (embedder, elementInstanceId, guestInstanceId, params) {
var guest, key, oldGuestInstanceId, ref1, webPreferences let guest, key, oldGuestInstanceId, ref1, webPreferences
guest = guestInstances[guestInstanceId].guest guest = guestInstances[guestInstanceId].guest
// Destroy the old guest when attaching. // Destroy the old guest when attaching.
@ -195,12 +190,12 @@ var attachGuest = function (embedder, elementInstanceId, guestInstanceId, params
} }
// Destroy an existing guest instance. // Destroy an existing guest instance.
var destroyGuest = function (embedder, id) { const destroyGuest = function (embedder, id) {
var key
webViewManager.removeGuest(embedder, id) webViewManager.removeGuest(embedder, id)
guestInstances[id].guest.destroy() guestInstances[id].guest.destroy()
delete guestInstances[id] delete guestInstances[id]
key = reverseEmbedderElementsMap[id]
const key = reverseEmbedderElementsMap[id]
if (key != null) { if (key != null) {
delete reverseEmbedderElementsMap[id] delete reverseEmbedderElementsMap[id]
return delete embedderElementsMap[key] return delete embedderElementsMap[key]
@ -220,18 +215,18 @@ ipcMain.on('ELECTRON_GUEST_VIEW_MANAGER_DESTROY_GUEST', function (event, id) {
}) })
ipcMain.on('ELECTRON_GUEST_VIEW_MANAGER_SET_SIZE', function (event, id, params) { ipcMain.on('ELECTRON_GUEST_VIEW_MANAGER_SET_SIZE', function (event, id, params) {
var ref1 const guestInstance = guestInstances[id]
return (ref1 = guestInstances[id]) != null ? ref1.guest.setSize(params) : void 0 return guestInstance != null ? guestInstance.guest.setSize(params) : void 0
}) })
// Returns WebContents from its guest id. // Returns WebContents from its guest id.
exports.getGuest = function (id) { exports.getGuest = function (id) {
var ref1 const guestInstance = guestInstances[id]
return (ref1 = guestInstances[id]) != null ? ref1.guest : void 0 return guestInstance != null ? guestInstance.guest : void 0
} }
// Returns the embedder of the guest. // Returns the embedder of the guest.
exports.getEmbedder = function (id) { exports.getEmbedder = function (id) {
var ref1 const guestInstance = guestInstances[id]
return (ref1 = guestInstances[id]) != null ? ref1.embedder : void 0 return guestInstance != null ? guestInstance.embedder : void 0
} }