From 3cb4d275501544b67a5986b1f5c60c465376ae84 Mon Sep 17 00:00:00 2001 From: Joel Einbinder Date: Tue, 14 Jan 2020 16:54:07 -0800 Subject: [PATCH] compile with typescript --- src/accessibility.ts | 6 +++--- src/chromium/crAccessibility.ts | 4 ++-- src/firefox/ffAccessibility.ts | 16 ++++++++-------- src/page.ts | 2 +- src/webkit/wkAccessibility.ts | 19 +++++++------------ src/webkit/wkPage.ts | 2 +- 6 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/accessibility.ts b/src/accessibility.ts index 66170aa374..63324b46d1 100644 --- a/src/accessibility.ts +++ b/src/accessibility.ts @@ -59,8 +59,8 @@ export interface AXNode { } export class Accessibility { - private _getAXTree: (needle?: dom.ElementHandle) => Promise<{tree: AXNode, needle?: AXNode}>; - constructor(getAXTree: (needle?: dom.ElementHandle) => Promise<{tree: AXNode, needle?: AXNode}>) { + private _getAXTree: (needle?: dom.ElementHandle) => Promise<{tree: AXNode, needle: AXNode | null}>; + constructor(getAXTree: (needle?: dom.ElementHandle) => Promise<{tree: AXNode, needle: AXNode | null}>) { this._getAXTree = getAXTree; } @@ -81,7 +81,7 @@ export class Accessibility { const interestingNodes: Set = new Set(); collectInterestingNodes(interestingNodes, tree, false); - if (root && !interestingNodes.has(needle)) + if (root && (!needle || !interestingNodes.has(needle))) return null; return serializeTree(needle || tree, interestingNodes)[0]; } diff --git a/src/chromium/crAccessibility.ts b/src/chromium/crAccessibility.ts index 1876b4d277..591dde0009 100644 --- a/src/chromium/crAccessibility.ts +++ b/src/chromium/crAccessibility.ts @@ -20,12 +20,12 @@ import { Protocol } from './protocol'; import * as dom from '../dom'; import * as accessibility from '../accessibility'; -export async function getAccessibilityTree(client: CRSession, needle?: dom.ElementHandle) : Promise<{tree: accessibility.AXNode, needle?: accessibility.AXNode}> { +export async function getAccessibilityTree(client: CRSession, needle?: dom.ElementHandle) : Promise<{tree: accessibility.AXNode, needle: accessibility.AXNode | null}> { const {nodes} = await client.send('Accessibility.getFullAXTree'); const tree = CRAXNode.createTree(client, nodes); return { tree, - needle: needle && await tree._findElement(needle) + needle: needle ? await tree._findElement(needle) : null }; } diff --git a/src/firefox/ffAccessibility.ts b/src/firefox/ffAccessibility.ts index 015026c7fd..a83b7bf5ce 100644 --- a/src/firefox/ffAccessibility.ts +++ b/src/firefox/ffAccessibility.ts @@ -20,13 +20,13 @@ import { FFSession } from './ffConnection'; import { Protocol } from './protocol'; import * as dom from '../dom'; -export async function getAccessibilityTree(session: FFSession, needle: dom.ElementHandle) : Promise<{tree: accessibility.AXNode, needle?: accessibility.AXNode}> { +export async function getAccessibilityTree(session: FFSession, needle?: dom.ElementHandle) : Promise<{tree: accessibility.AXNode, needle: accessibility.AXNode | null}> { const objectId = needle ? needle._remoteObject.objectId : undefined; const { tree } = await session.send('Accessibility.getFullAXTree', { objectId }); const axNode = new FFAXNode(tree); return { tree: axNode, - needle: needle && axNode._findNeedle() + needle: needle ? axNode._findNeedle() : null }; } @@ -59,7 +59,7 @@ const FFRoleToARIARole = new Map(Object.entries({ class FFAXNode implements accessibility.AXNode { _children: FFAXNode[]; - private _payload: Protocol.AXTree; + private _payload: Protocol.Accessibility.AXTree; private _editable: boolean; private _richlyEditable: boolean; private _focusable: boolean; @@ -203,7 +203,7 @@ class FFAXNode implements accessibility.AXNode { role: FFRoleToARIARole.get(this._role) || this._role, name: this._name || '' }; - const userStringProperties: Array = [ + const userStringProperties: Array = [ 'name', 'value', 'description', @@ -216,7 +216,7 @@ class FFAXNode implements accessibility.AXNode { continue; node[userStringProperty] = this._payload[userStringProperty]; } - const booleanProperties: Array = [ + const booleanProperties: Array = [ 'disabled', 'expanded', 'focused', @@ -235,7 +235,7 @@ class FFAXNode implements accessibility.AXNode { continue; node[booleanProperty] = value; } - const tristateProperties: Array = [ + const tristateProperties: Array = [ 'checked', 'pressed', ]; @@ -245,7 +245,7 @@ class FFAXNode implements accessibility.AXNode { const value = this._payload[tristateProperty]; node[tristateProperty] = value; } - const numericalProperties: Array = [ + const numericalProperties: Array = [ 'level' ]; for (const numericalProperty of numericalProperties) { @@ -253,7 +253,7 @@ class FFAXNode implements accessibility.AXNode { continue; node[numericalProperty] = this._payload[numericalProperty]; } - const tokenProperties: Array = [ + const tokenProperties: Array = [ 'autocomplete', 'haspopup', 'invalid', diff --git a/src/page.ts b/src/page.ts index 2af482a45c..7ba29e8d8c 100644 --- a/src/page.ts +++ b/src/page.ts @@ -68,7 +68,7 @@ export interface PageDelegate { setInputFiles(handle: dom.ElementHandle, files: types.FilePayload[]): Promise; getBoundingBox(handle: dom.ElementHandle): Promise; - getAccessibilityTree(needle?: dom.ElementHandle): Promise<{tree: accessibility.AXNode, needle?: accessibility.AXNode}>; + getAccessibilityTree(needle?: dom.ElementHandle): Promise<{tree: accessibility.AXNode, needle: accessibility.AXNode | null}>; pdf?: (options?: types.PDFOptions) => Promise; coverage(): Coverage | undefined; } diff --git a/src/webkit/wkAccessibility.ts b/src/webkit/wkAccessibility.ts index 7347b3b526..f0454737dd 100644 --- a/src/webkit/wkAccessibility.ts +++ b/src/webkit/wkAccessibility.ts @@ -24,7 +24,7 @@ export async function getAccessibilityTree(session: WKSession, needle?: dom.Elem const tree = new WKAXNode(axNode); return { tree, - needle: needle && tree._findNeedle() + needle: needle ? tree._findNeedle() : null }; } @@ -184,22 +184,17 @@ class WKAXNode implements accessibility.AXNode { if ('value' in this._payload && this._payload.role !== 'text') node.value = this._payload.value; - type AXPropertyOfType = { - [Key in keyof Protocol.Page.AXNode]: - Protocol.Page.AXNode[Key] extends Type ? Key : never - }[keyof Protocol.Page.AXNode]; - - const userStringProperties: string[] = [ + const userStringProperties: Array = [ 'keyshortcuts', 'valuetext' ]; for (const userStringProperty of userStringProperties) { if (!(userStringProperty in this._payload)) continue; - (node as any)[userStringProperty] = (this._payload as any)[userStringProperty]; + (node as any)[userStringProperty] = this._payload[userStringProperty]; } - const booleanProperties: string[] = [ + const booleanProperties: Array = [ 'disabled', 'expanded', 'focused', @@ -215,7 +210,7 @@ class WKAXNode implements accessibility.AXNode { // not whether focus is specifically on the root node. if (booleanProperty === 'focused' && (this._payload.role === 'WebArea' || this._payload.role === 'ScrollArea')) continue; - const value = (this._payload as any)[booleanProperty]; + const value = this._payload[booleanProperty]; if (!value) continue; (node as any)[booleanProperty] = value; @@ -231,7 +226,7 @@ class WKAXNode implements accessibility.AXNode { const value = this._payload[tristateProperty]; node[tristateProperty] = value === 'mixed' ? 'mixed' : value === 'true' ? true : false; } - const numericalProperties: string[] = [ + const numericalProperties: Array = [ 'level', 'valuemax', 'valuemin', @@ -241,7 +236,7 @@ class WKAXNode implements accessibility.AXNode { continue; (node as any)[numericalProperty] = (this._payload as any)[numericalProperty]; } - const tokenProperties: string[] = [ + const tokenProperties: Array = [ 'autocomplete', 'haspopup', 'invalid', diff --git a/src/webkit/wkPage.ts b/src/webkit/wkPage.ts index 276bc7cf8d..c3848adf3e 100644 --- a/src/webkit/wkPage.ts +++ b/src/webkit/wkPage.ts @@ -497,7 +497,7 @@ export class WKPage implements PageDelegate { return to._createHandle(result.object) as dom.ElementHandle; } - async getAccessibilityTree(needle?: dom.ElementHandle) : Promise<{tree: accessibility.AXNode, needle?: accessibility.AXNode}> { + async getAccessibilityTree(needle?: dom.ElementHandle) : Promise<{tree: accessibility.AXNode, needle: accessibility.AXNode | null}> { return getAccessibilityTree(this._session, needle); }