Roll chromium to r494365 (#271)

This patch:
- rolls chromium to r494365
- starts using Runtime.evaluate(awaitPromise: true), with new semantic
  we can avoid additional Runtime.awaitPromise call
- stops resolving promises for Console event
This commit is contained in:
Aleksey 2017-08-15 17:35:59 -07:00 committed by Andrey Lushnikov
parent 1e5d9fd8c0
commit 56eab00fa7
5 changed files with 7 additions and 13 deletions

View File

@ -51,7 +51,7 @@ class ElementHandle {
stringifiedArgs.push(...args.map(x => JSON.stringify(x)));
let functionDeclaration = `function() { return (${pageFunction})(${stringifiedArgs.join(',')}) }`;
const objectId = this._remoteObject.objectId;
let { exceptionDetails, result: remoteObject } = await this._client.send('Runtime.callFunctionOn', { objectId, functionDeclaration, returnByValue: false});
let { exceptionDetails, result: remoteObject } = await this._client.send('Runtime.callFunctionOn', { objectId, functionDeclaration, returnByValue: false, awaitPromise: true});
if (exceptionDetails)
throw new Error('Evaluation failed: ' + helper.getExceptionMessage(exceptionDetails));
return await helper.serializeRemoteObject(this._client, remoteObject);

View File

@ -196,7 +196,7 @@ class Frame {
async _rawEvaluate(pageFunction, ...args) {
let expression = helper.evaluationString(pageFunction, ...args);
const contextId = this._defaultContextId;
let { exceptionDetails, result: remoteObject } = await this._client.send('Runtime.evaluate', { expression, contextId, returnByValue: false});
let { exceptionDetails, result: remoteObject } = await this._client.send('Runtime.evaluate', { expression, contextId, returnByValue: false, awaitPromise: true});
if (exceptionDetails)
throw new Error('Evaluation failed: ' + helper.getExceptionMessage(exceptionDetails));
return remoteObject;

View File

@ -54,16 +54,6 @@ class Helper {
* @return {!Promise<!Object>}
*/
static async serializeRemoteObject(client, remoteObject) {
if (remoteObject.subtype === 'promise') {
let response = (await client.send('Runtime.awaitPromise', {
promiseObjectId: remoteObject.objectId,
returnByValue: false
}));
Helper.releaseObject(client, remoteObject);
if (response.exceptionDetails)
throw new Error('Evaluation failed: ' + Helper.getExceptionMessage(response.exceptionDetails));
remoteObject = response.result;
}
if (remoteObject.unserializableValue) {
switch (remoteObject.unserializableValue) {
case '-0':
@ -80,6 +70,8 @@ class Helper {
}
if (!remoteObject.objectId)
return remoteObject.value;
if (remoteObject.subtype === 'promise')
return remoteObject.description;
try {
let response = await client.send('Runtime.callFunctionOn', {
objectId: remoteObject.objectId,

View File

@ -29,7 +29,7 @@
"ws": "^3.0.0"
},
"puppeteer": {
"chromium_revision": "493985"
"chromium_revision": "494365"
},
"devDependencies": {
"commonmark": "^0.27.0",

View File

@ -504,6 +504,7 @@ describe('Page', function() {
console.dir('calling console.dir');
console.warn('calling console.warn');
console.error('calling console.error');
console.log(Promise.resolve('should not wait until resolved!'));
}),
// Wait for 5 events to hit.
waitForEvents(page, 'console', 5)
@ -514,6 +515,7 @@ describe('Page', function() {
'calling console.dir',
'calling console.warn',
'calling console.error',
'Promise',
]);
}));
it('should not fail for window object', SX(async function() {