mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 11:08:51 +01:00
wip: driver ipc
This commit is contained in:
@@ -21,16 +21,31 @@ export interface IElement {
|
||||
|
||||
export interface IDriver {
|
||||
_serviceBrand: any;
|
||||
|
||||
getWindowIds(): TPromise<number[]>;
|
||||
getElements(windowId: number, selector: string): TPromise<IElement[]>;
|
||||
dispatchKeybinding(windowId: number, keybinding: string): TPromise<void>;
|
||||
click(windowId: number, selector: string, xoffset?: number | undefined, yoffset?: number | undefined): TPromise<void>;
|
||||
doubleClick(windowId: number, selector: string): TPromise<void>;
|
||||
move(windowId: number, selector: string): TPromise<void>;
|
||||
setValue(windowId: number, selector: string, text: string): TPromise<void>;
|
||||
getTitle(windowId: number): TPromise<void>;
|
||||
isActiveElement(windowId: number, selector: string): TPromise<void>;
|
||||
getElements(windowId: number, selector: string): TPromise<IElement[]>;
|
||||
selectorExecute<P>(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise<P>;
|
||||
}
|
||||
//*END
|
||||
|
||||
export interface IDriverChannel extends IChannel {
|
||||
call(command: 'getWindowIds'): TPromise<number[]>;
|
||||
call(command: 'getElements', arg: [number, string]): TPromise<IElement[]>;
|
||||
call(command: 'dispatchKeybinding', arg: [number, string]): TPromise<void>;
|
||||
call(command: 'click', arg: [number, string, number | undefined, number | undefined]): TPromise<void>;
|
||||
call(command: 'doubleClick', arg: [number, string]): TPromise<void>;
|
||||
call(command: 'move', arg: [number, string]): TPromise<void>;
|
||||
call(command: 'setValue', arg: [number, string, string]): TPromise<void>;
|
||||
call(command: 'getTitle', arg: [number]): TPromise<void>;
|
||||
call(command: 'isActiveElement', arg: [number, string]): TPromise<void>;
|
||||
call(command: 'getElements', arg: [number, string]): TPromise<IElement[]>;
|
||||
call(command: 'selectorExecute', arg: [number, string, string, any[]]): TPromise<any>;
|
||||
call(command: string, arg: any): TPromise<any>;
|
||||
}
|
||||
|
||||
@@ -41,8 +56,15 @@ export class DriverChannel implements IDriverChannel {
|
||||
call(command: string, arg?: any): TPromise<any> {
|
||||
switch (command) {
|
||||
case 'getWindowIds': return this.driver.getWindowIds();
|
||||
case 'getElements': return this.driver.getElements(arg[0], arg[1]);
|
||||
case 'dispatchKeybinding': return this.driver.dispatchKeybinding(arg[0], arg[1]);
|
||||
case 'click': return this.driver.click(arg[0], arg[1], arg[2], arg[3]);
|
||||
case 'doubleClick': return this.driver.doubleClick(arg[0], arg[1]);
|
||||
case 'move': return this.driver.move(arg[0], arg[1]);
|
||||
case 'setValue': return this.driver.setValue(arg[0], arg[1], arg[2]);
|
||||
case 'getTitle': return this.driver.getTitle(arg[0]);
|
||||
case 'isActiveElement': return this.driver.isActiveElement(arg[0], arg[1]);
|
||||
case 'getElements': return this.driver.getElements(arg[0], arg[1]);
|
||||
case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], new Function(arg[2]), ...arg[2]);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
@@ -59,12 +81,40 @@ export class DriverChannelClient implements IDriver {
|
||||
return this.channel.call('getWindowIds');
|
||||
}
|
||||
|
||||
dispatchKeybinding(windowId: number, keybinding: string): TPromise<void> {
|
||||
return this.channel.call('dispatchKeybinding', [windowId, keybinding]);
|
||||
}
|
||||
|
||||
click(windowId: number, selector: string, xoffset: number | undefined, yoffset: number | undefined): TPromise<void> {
|
||||
return this.channel.call('click', [windowId, selector, xoffset, yoffset]);
|
||||
}
|
||||
|
||||
doubleClick(windowId: number, selector: string): TPromise<void> {
|
||||
return this.channel.call('doubleClick', [windowId, selector]);
|
||||
}
|
||||
|
||||
move(windowId: number, selector: string): TPromise<void> {
|
||||
return this.channel.call('move', [windowId, selector]);
|
||||
}
|
||||
|
||||
setValue(windowId: number, selector: string, text: string): TPromise<void> {
|
||||
return this.channel.call('setValue', [windowId, selector, text]);
|
||||
}
|
||||
|
||||
getTitle(windowId: number): TPromise<void> {
|
||||
return this.channel.call('getTitle', [windowId]);
|
||||
}
|
||||
|
||||
isActiveElement(windowId: number, selector: string): TPromise<void> {
|
||||
return this.channel.call('isActiveElement', [windowId, selector]);
|
||||
}
|
||||
|
||||
getElements(windowId: number, selector: string): TPromise<IElement[]> {
|
||||
return this.channel.call('getElements', [windowId, selector]);
|
||||
}
|
||||
|
||||
dispatchKeybinding(windowId: number, keybinding: string): TPromise<void> {
|
||||
return this.channel.call('dispatchKeybinding', [windowId, keybinding]);
|
||||
selectorExecute<P>(windowId: number, selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise<P> {
|
||||
return this.channel.call('selectorExecute', [windowId, selector, script.toString(), args]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,13 +152,27 @@ export class WindowDriverRegistryChannelClient implements IWindowDriverRegistry
|
||||
}
|
||||
|
||||
export interface IWindowDriver {
|
||||
getElements(selector: string): TPromise<IElement[]>;
|
||||
dispatchKeybinding(keybinding: string): TPromise<void>;
|
||||
click(selector: string, xoffset?: number | undefined, yoffset?: number | undefined): TPromise<void>;
|
||||
doubleClick(selector: string): TPromise<void>;
|
||||
move(selector: string): TPromise<void>;
|
||||
setValue(selector: string, text: string): TPromise<void>;
|
||||
getTitle(): TPromise<void>;
|
||||
isActiveElement(selector: string): TPromise<void>;
|
||||
getElements(selector: string): TPromise<IElement[]>;
|
||||
selectorExecute<P>(selector: string, script: (elements: HTMLElement[], ...args: any[]) => P, ...args: any[]): TPromise<P>;
|
||||
}
|
||||
|
||||
export interface IWindowDriverChannel extends IChannel {
|
||||
call(command: 'getElements', arg: string): TPromise<IElement[]>;
|
||||
call(command: 'dispatchKeybinding', arg: string): TPromise<void>;
|
||||
call(command: 'click', arg: [string, number | undefined, number | undefined]): TPromise<void>;
|
||||
call(command: 'doubleClick', arg: string): TPromise<void>;
|
||||
call(command: 'move', arg: string): TPromise<void>;
|
||||
call(command: 'setValue', arg: [string, string]): TPromise<void>;
|
||||
call(command: 'getTitle'): TPromise<void>;
|
||||
call(command: 'isActiveElement', arg: string): TPromise<void>;
|
||||
call(command: 'getElements', arg: string): TPromise<IElement[]>;
|
||||
call(command: 'selectorExecute', arg: [string, string, any[]]): TPromise<any>;
|
||||
call(command: string, arg: any): TPromise<any>;
|
||||
}
|
||||
|
||||
@@ -118,8 +182,15 @@ export class WindowDriverChannel implements IWindowDriverChannel {
|
||||
|
||||
call(command: string, arg?: any): TPromise<any> {
|
||||
switch (command) {
|
||||
case 'getElements': return this.driver.getElements(arg);
|
||||
case 'dispatchKeybinding': return this.driver.dispatchKeybinding(arg);
|
||||
case 'click': return this.driver.click(arg[0], arg[1], arg[2]);
|
||||
case 'doubleClick': return this.driver.doubleClick(arg);
|
||||
case 'move': return this.driver.move(arg);
|
||||
case 'setValue': return this.driver.setValue(arg[0], arg[1]);
|
||||
case 'getTitle': return this.driver.getTitle();
|
||||
case 'isActiveElement': return this.driver.isActiveElement(arg);
|
||||
case 'getElements': return this.driver.getElements(arg);
|
||||
case 'selectorExecute': return this.driver.selectorExecute(arg[0], arg[1], arg[2], ...arg[2]);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
|
||||
Reference in New Issue
Block a user