feat(firefox): roll firefox to r1012 (#493)

This roll puts Firefox protocol types under related protocol domains,
so protocol type generator had to be updated as well.
This commit is contained in:
Andrey Lushnikov 2020-01-14 15:32:31 -08:00 committed by Yury Semikhatsky
parent a662f2fdfd
commit e03f1e4c2c
5 changed files with 12 additions and 11 deletions

View file

@ -9,7 +9,7 @@
"main": "index.js", "main": "index.js",
"playwright": { "playwright": {
"chromium_revision": "724623", "chromium_revision": "724623",
"firefox_revision": "1011", "firefox_revision": "1012",
"webkit_revision": "1087" "webkit_revision": "1087"
}, },
"scripts": { "scripts": {

View file

@ -35,7 +35,7 @@ class FFAXNode implements accessibility.AXNode {
private _role: string; private _role: string;
private _cachedHasFocusableChild: boolean|undefined; private _cachedHasFocusableChild: boolean|undefined;
constructor(payload: Protocol.AXTree) { constructor(payload: Protocol.Accessibility.AXTree) {
this._payload = payload; this._payload = payload;
this._children = (payload.children || []).map(x => new FFAXNode(x)); this._children = (payload.children || []).map(x => new FFAXNode(x));
this._editable = !!payload.editable; this._editable = !!payload.editable;

View file

@ -173,7 +173,7 @@ function checkException(exceptionDetails?: any) {
} }
} }
export function deserializeValue({unserializableValue, value}: Protocol.RemoteObject) { export function deserializeValue({unserializableValue, value}: Protocol.Runtime.RemoteObject) {
if (unserializableValue === 'Infinity') if (unserializableValue === 'Infinity')
return Infinity; return Infinity;
if (unserializableValue === '-Infinity') if (unserializableValue === '-Infinity')

View file

@ -260,12 +260,13 @@ export class FFPage implements PageDelegate {
await this._session.send('Page.close', { runBeforeUnload }); await this._session.send('Page.close', { runBeforeUnload });
} }
getBoundingBoxForScreenshot(handle: dom.ElementHandle<Node>): Promise<types.Rect | null> { async getBoundingBoxForScreenshot(handle: dom.ElementHandle<Node>): Promise<types.Rect | null> {
const frameId = handle._context.frame._id; const frameId = handle._context.frame._id;
return this._session.send('Page.getBoundingBox', { const response = await this._session.send('Page.getBoundingBox', {
frameId, frameId,
objectId: handle._remoteObject.objectId, objectId: handle._remoteObject.objectId,
}); });
return response.boundingBox;
} }
canScreenshotOutsideViewport(): boolean { canScreenshotOutsideViewport(): boolean {
@ -373,6 +374,6 @@ export function normalizeWaitUntil(waitUntil: frames.LifecycleEvent | frames.Lif
return waitUntil; return waitUntil;
} }
function toRemoteObject(handle: dom.ElementHandle): Protocol.RemoteObject { function toRemoteObject(handle: dom.ElementHandle): Protocol.Runtime.RemoteObject {
return handle._remoteObject; return handle._remoteObject;
} }

View file

@ -162,7 +162,7 @@ async function generateFirefoxProtocol(revision) {
return {"$type": "ref", "$ref": schemeName }; return {"$type": "ref", "$ref": schemeName };
} }
} }
const json = vm.runInContext(`(${inject})();${protocolJSCode}; this.protocol.types = types; this.protocol;`, ctx); const json = vm.runInContext(`(${inject})();${protocolJSCode}; this.protocol;`, ctx);
fs.writeFileSync(outputPath, firefoxJSONToTS(json)); fs.writeFileSync(outputPath, firefoxJSONToTS(json));
console.log(`Wrote protocol.ts for Firefox to ${path.relative(process.cwd(), outputPath)}`); console.log(`Wrote protocol.ts for Firefox to ${path.relative(process.cwd(), outputPath)}`);
} }
@ -170,10 +170,10 @@ async function generateFirefoxProtocol(revision) {
function firefoxJSONToTS(json) { function firefoxJSONToTS(json) {
const domains = Object.entries(json.domains); const domains = Object.entries(json.domains);
return `// This is generated from /utils/protocol-types-generator/index.js return `// This is generated from /utils/protocol-types-generator/index.js
export module Protocol {${Object.entries(json.types).map(([typeName, type]) => ` export module Protocol {
export type ${typeName} = ${firefoxTypeToString(type, ' ')};`).join('')}
${domains.map(([domainName, domain]) => ` ${domains.map(([domainName, domain]) => `
export module ${domainName} {${(Object.entries(domain.events)).map(([eventName, event]) => ` export module ${domainName} {${Object.entries(domain.types).map(([typeName, type]) => `
export type ${typeName} = ${firefoxTypeToString(type, ' ')};`).join('')}${(Object.entries(domain.events)).map(([eventName, event]) => `
export type ${eventName}Payload = ${firefoxTypeToString(event)}`).join('')}${(Object.entries(domain.methods)).map(([commandName, command]) => ` export type ${eventName}Payload = ${firefoxTypeToString(event)}`).join('')}${(Object.entries(domain.methods)).map(([commandName, command]) => `
export type ${commandName}Parameters = ${firefoxTypeToString(command.params)}; export type ${commandName}Parameters = ${firefoxTypeToString(command.params)};
export type ${commandName}ReturnValue = ${firefoxTypeToString(command.returns)};`).join('')} export type ${commandName}ReturnValue = ${firefoxTypeToString(command.returns)};`).join('')}
@ -215,4 +215,4 @@ function firefoxTypeToString(type, indent=' ') {
return type['$type']; return type['$type'];
} }
module.exports = {generateChromiunProtocol, generateFirefoxProtocol, generateWebKitProtocol}; module.exports = {generateChromiunProtocol, generateFirefoxProtocol, generateWebKitProtocol};