8000 Merge pull request #9287 from electron/store-frames-to-guest-as-map · electron/electron@0aa53f4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0aa53f4

Browse files
authored
Merge pull request #9287 from electron/store-frames-to-guest-as-map
Store frames to guest as Map
2 parents b9b3abb + 91a1e5c commit 0aa53f4

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

lib/browser/guest-window-manager.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const {isSameOrigin} = process.atomBinding('v8_util')
55
const parseFeaturesString = require('../common/parse-features-string')
66

77
const hasProp = {}.hasOwnProperty
8-
const frameToGuest = {}
8+
const frameToGuest = new Map()
99

1010
// Copy attribute of |parent| to |child| if it is not defined in |child|.
1111
const mergeOptions = function (child, parent, visited) {
@@ -92,18 +92,18 @@ const setupGuest = function (embedder, frameName, guest, options) {
9292
guest.once('closed', closedByUser)
9393
}
9494
if (frameName) {
95-
frameToGuest[frameName] = guest
95+
frameToGuest.set(frameName, guest)
9696
guest.frameName = frameName
9797
guest.once('closed', function () {
98-
delete frameToGuest[frameName]
98+
frameToGuest.delete(frameName)
9999
})
100100
}
101101
return guestId
102102
}
103103

104104
// Create a new guest created by |embedder| with |options|.
105105
const createGuest = function (embedder, url, frameName, options, postData) {
106-
let guest = frameToGuest[frameName]
106+
let guest = frameToGuest.get(frameName)
107107
if (frameName && (guest != null)) {
108108
guest.loadURL(url)
109109
return guest.webContents.id

spec/chromium-spec.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,26 @@ describe('chromium feature', function () {
371371
window.open('', '', {toString: 3})
372372
}, /Cannot convert object to primitive value/)
373373
})
374+
375+
it('sets the window title to the specified frameName', function (done) {
376+
let b
377+
app.once('browser-window-created', (event, createdWindow) => {
378+
assert.equal(createdWindow.getTitle(), 'hello')
379+
b.close()
380+
done()
381+
})
382+
b = window.open('', 'hello')
383+
})
384+
385+
it('does not throw an exception when the frameName is a built-in object property', function (done) {
386+
let b
387+
app.once('browser-window-created', (event, createdWindow) => {
388+
assert.equal(createdWindow.getTitle(), '__proto__')
389+
b.close()
390+
done()
391+
})
392+
b = window.open('', '__proto__')
393+
})
374394
})
375395

376396
describe('window.opener', function () {

0 commit comments

Comments
 (0)
0