Merge pull request #8890 from twolfson/dev/proxy.to.string.sqwished

🐛 Add toString support to remote functions
This commit is contained in:
Kevin Sawicki 2017-03-20 09:35:51 -07:00 коммит произвёл GitHub
Родитель 75d934e4a2 c50b518493
Коммит 286f529968
3 изменённых файлов: 21 добавлений и 1 удалений

Просмотреть файл

@ -179,7 +179,15 @@ const proxyFunctionProperties = function (remoteMemberFunction, metaId, name) {
},
get: (target, property, receiver) => {
if (!target.hasOwnProperty(property)) loadRemoteProperties()
return target[property]
const value = target[property]
// Bind toString to target if it is a function to avoid
// Function.prototype.toString is not generic errors
if (property === 'toString' && typeof value === 'function') {
return value.bind(target)
}
return value
},
ownKeys: (target) => {
loadRemoteProperties()

Просмотреть файл

@ -161,6 +161,14 @@ describe('ipc module', function () {
assert.equal(typeof remote.clipboard.readText, 'function')
assert.equal(typeof remote.shell.openExternal, 'function')
})
it('returns toString() of original function via toString()', function () {
const {readText} = remote.clipboard
assert(readText.toString().startsWith('function'))
var {functionWithToStringProperty} = remote.require(path.join(fixtures, 'module', 'to-string-non-function.js'))
assert.equal(functionWithToStringProperty.toString, 'hello')
})
})
describe('remote object in renderer', function () {

4
spec/fixtures/module/to-string-non-function.js поставляемый Normal file
Просмотреть файл

@ -0,0 +1,4 @@
function hello () {
}
hello.toString = 'hello'
module.exports = {functionWithToStringProperty: hello}