Return remote object description for unserializable objects

This patch starts handling unserializable objects by returning their
description.

Fixes #86.
This commit is contained in:
Andrey Lushnikov
2017-07-18 00:03:52 -07:00
parent 72b7e50f9e
commit 6c1c3a0c45
2 changed files with 26 additions and 7 deletions

View File

@@ -75,13 +75,21 @@ class Helper {
}
if (!remoteObject.objectId)
return remoteObject.value;
let response = await client.send('Runtime.callFunctionOn', {
objectId: remoteObject.objectId,
functionDeclaration: 'function() { return this; }',
returnByValue: true,
});
client.send('Runtime.releaseObject', {objectId: remoteObject.objectId});
return response.result.value;
try {
let response = await client.send('Runtime.callFunctionOn', {
objectId: remoteObject.objectId,
functionDeclaration: 'function() { return this; }',
returnByValue: true,
});
return response.result.value;
} catch (e) {
// Return description for unserializable object, e.g. 'window'.
return remoteObject.description;
} finally {
client.send('Runtime.releaseObject', {objectId: remoteObject.objectId}).catch(e => {
// While we were serializing object, the page might've navigated.
});
}
}
}