add the 'webpreferences' attribute to webviews

This commit is contained in:
Paul Frazee 2016-10-14 17:16:39 -05:00
parent 3dd8377218
commit 194b14100e
4 changed files with 48 additions and 0 deletions

View file

@ -184,6 +184,31 @@ const attachGuest = function (embedder, elementInstanceId, guestInstanceId, para
disableBlinkFeatures: params.disableblinkfeatures
}
// parse the 'webpreferences' attribute string, if set
// this uses the same parsing rules as window.open uses for its features
if (typeof params.webpreferences === 'string') {
// split the attribute's value by ','
let webpreferencesTokens = params.webpreferences.split(/,\s*/)
for (i = 0, len = webpreferencesTokens.length; i < len; i++) {
// expected form is either a name by itself (true boolean flag)
// or a key/value, in the form of 'name=value'
// split the tokens by '='
let pref = webpreferencesTokens[i]
let prefTokens = pref.split(/\s*=/)
name = prefTokens[0]
value = prefTokens[1]
if (!name) continue
// interpret the value as a boolean, if possible
value = (value === 'yes' || value === '1') ? true : (value === 'no' || value === '0') ? false : value
if (value === undefined) {
// no value was specified, default it to true
value = true
}
webPreferences[name] = value
}
}
if (params.preload) {
webPreferences.preloadURL = params.preload
}