feat(testability): add an initial scaffold for the testability api
Make each application component register itself onto the testability API and exports the API onto the window object.
This commit is contained in:
@ -123,6 +123,7 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
}
|
||||
ShadowRoot createShadowRoot(Element el) => el.createShadowRoot();
|
||||
ShadowRoot getShadowRoot(Element el) => el.shadowRoot;
|
||||
Element getHost(Element el) => (el as ShadowRoot).host;
|
||||
clone(Node node) => node.clone(true);
|
||||
bool hasProperty(Element element, String name) =>
|
||||
new JsObject.fromBrowserObject(element).hasProperty(name);
|
||||
@ -188,6 +189,9 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
bool hasShadowRoot(Node node) {
|
||||
return node is Element && node.shadowRoot != null;
|
||||
}
|
||||
bool isShadowRoot(Node node) {
|
||||
return node is ShadowRoot;
|
||||
}
|
||||
Node importIntoDoc(Node node) {
|
||||
return document.importNode(node, true);
|
||||
}
|
||||
|
@ -158,6 +158,9 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
getShadowRoot(el:HTMLElement): ShadowRoot {
|
||||
return el.shadowRoot;
|
||||
}
|
||||
getHost(el:HTMLElement): HTMLElement {
|
||||
return el.host;
|
||||
}
|
||||
clone(node:Node) {
|
||||
return node.cloneNode(true);
|
||||
}
|
||||
@ -245,6 +248,9 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
hasShadowRoot(node):boolean {
|
||||
return node instanceof HTMLElement && isPresent(node.shadowRoot);
|
||||
}
|
||||
isShadowRoot(node):boolean {
|
||||
return node instanceof ShadowRoot;
|
||||
}
|
||||
importIntoDoc(node:Node) {
|
||||
var result = document.importNode(node, true);
|
||||
// Workaround WebKit https://bugs.webkit.org/show_bug.cgi?id=137619
|
||||
|
6
modules/angular2/src/dom/dom_adapter.js
vendored
6
modules/angular2/src/dom/dom_adapter.js
vendored
@ -147,6 +147,9 @@ export class DomAdapter {
|
||||
getShadowRoot(el) {
|
||||
throw _abstract();
|
||||
}
|
||||
getHost(el) {
|
||||
throw _abstract();
|
||||
}
|
||||
getDistributedNodes(el) {
|
||||
throw _abstract();
|
||||
}
|
||||
@ -231,6 +234,9 @@ export class DomAdapter {
|
||||
hasShadowRoot(node):boolean {
|
||||
throw _abstract();
|
||||
}
|
||||
isShadowRoot(node):boolean {
|
||||
throw _abstract();
|
||||
}
|
||||
importIntoDoc(node) {
|
||||
throw _abstract();
|
||||
}
|
||||
|
@ -120,6 +120,15 @@ class Html5LibDomAdapter implements DomAdapter {
|
||||
createStyleElement(String css, [doc]) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
createShadowRoot(el) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
getShadowRoot(el) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
getHost(el) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
clone(node) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
@ -199,6 +208,9 @@ class Html5LibDomAdapter implements DomAdapter {
|
||||
bool hasShadowRoot(node) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
bool isShadowRoot(node) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
importIntoDoc(node) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
|
@ -252,6 +252,9 @@ export class Parse5DomAdapter extends DomAdapter {
|
||||
getShadowRoot(el) {
|
||||
return el.shadowRoot;
|
||||
}
|
||||
getHost(el) {
|
||||
return el.host;
|
||||
}
|
||||
getDistributedNodes(el) {
|
||||
throw _notImplemented('getDistributedNodes');
|
||||
}
|
||||
@ -395,6 +398,9 @@ export class Parse5DomAdapter extends DomAdapter {
|
||||
hasShadowRoot(node):boolean {
|
||||
return isPresent(node.shadowRoot);
|
||||
}
|
||||
isShadowRoot(node): boolean {
|
||||
return this.getShadowRoot(node) == node;
|
||||
}
|
||||
importIntoDoc(node) {
|
||||
return this.clone(node);
|
||||
}
|
||||
|
Reference in New Issue
Block a user