UNPKG

2.76 kBPlain TextView Raw
1import {bind, provide, Provider, Injector, OpaqueToken} from 'angular2/src/core/di';
2
3import {isBlank, isPresent} from 'angular2/src/facade/lang';
4import {BaseException, WrappedException} from 'angular2/src/facade/exceptions';
5
6import {Options} from './common_options';
7
8/**
9 * A WebDriverExtension implements extended commands of the webdriver protocol
10 * for a given browser, independent of the WebDriverAdapter.
11 * Needs one implementation for every supported Browser.
12 */
13export abstract class WebDriverExtension {
14 static bindTo(childTokens: any[]): Provider[] {
15 var res = [
16 bind(_CHILDREN)
17 .toFactory((injector: Injector) => childTokens.map(token => injector.get(token)),
18 [Injector]),
19 bind(WebDriverExtension)
20 .toFactory(
21 (children: WebDriverExtension[], capabilities) => {
22 var delegate;
23 children.forEach(extension => {
24 if (extension.supports(capabilities)) {
25 delegate = extension;
26 }
27 });
28 if (isBlank(delegate)) {
29 throw new BaseException('Could not find a delegate for given capabilities!');
30 }
31 return delegate;
32 },
33 [_CHILDREN, Options.CAPABILITIES])
34 ];
35 return res;
36 }
37
38 gc(): Promise<any> { throw new BaseException('NYI'); }
39
40 timeBegin(name: string): Promise<any> { throw new BaseException('NYI'); }
41
42 timeEnd(name: string, restartName: string): Promise<any> { throw new BaseException('NYI'); }
43
44 /**
45 * Format:
46 * - cat: category of the event
47 * - name: event name: 'script', 'gc', 'render', ...
48 * - ph: phase: 'B' (begin), 'E' (end), 'b' (nestable start), 'e' (nestable end), 'X' (Complete
49 *event)
50 * - ts: timestamp in ms, e.g. 12345
51 * - pid: process id
52 * - args: arguments, e.g. {heapSize: 1234}
53 *
54 * Based on [Chrome Trace Event
55 *Format](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/edit)
56 **/
57 readPerfLog(): Promise<any[]> { throw new BaseException('NYI'); }
58
59 perfLogFeatures(): PerfLogFeatures { throw new BaseException('NYI'); }
60
61 supports(capabilities: {[key: string]: any}): boolean { return true; }
62}
63
64export class PerfLogFeatures {
65 render: boolean;
66 gc: boolean;
67 frameCapture: boolean;
68 userTiming: boolean;
69
70 constructor(
71 {render = false, gc = false, frameCapture = false, userTiming = false}:
72 {render?: boolean, gc?: boolean, frameCapture?: boolean, userTiming?: boolean} = {}) {
73 this.render = render;
74 this.gc = gc;
75 this.frameCapture = frameCapture;
76 this.userTiming = userTiming;
77 }
78}
79
80var _CHILDREN = new OpaqueToken('WebDriverExtension.children');