@ -234,7 +234,7 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
return node.nodeType === Node.TEXT_NODE;
|
||||
}
|
||||
isCommentNode(node:Node):boolean {
|
||||
return node.nodeType === Node.TEXT_NODE;
|
||||
return node.nodeType === Node.COMMENT_NODE;
|
||||
}
|
||||
isElementNode(node:Node):boolean {
|
||||
return node.nodeType === Node.ELEMENT_NODE;
|
||||
|
9
modules/angular2/src/dom/dom_adapter.js
vendored
9
modules/angular2/src/dom/dom_adapter.js
vendored
@ -144,6 +144,9 @@ export class DomAdapter {
|
||||
getShadowRoot(el) {
|
||||
throw _abstract();
|
||||
}
|
||||
getDistributedNodes(el) {
|
||||
throw _abstract();
|
||||
}
|
||||
clone(node) {
|
||||
throw _abstract();
|
||||
}
|
||||
@ -249,4 +252,10 @@ export class DomAdapter {
|
||||
cssToRules(css:string): List {
|
||||
throw _abstract();
|
||||
}
|
||||
supportsDOMEvents(): boolean {
|
||||
throw _abstract();
|
||||
}
|
||||
supportsNativeShadowDOM(): boolean {
|
||||
throw _abstract();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import {ABSTRACT} from 'angular2/src/facade/lang';
|
||||
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
||||
import {isPresent} from 'angular2/src/facade/lang';
|
||||
import {isPresent, isFunction} from 'angular2/src/facade/lang';
|
||||
import {DomAdapter} from './dom_adapter';
|
||||
|
||||
/**
|
||||
@ -8,6 +8,9 @@ import {DomAdapter} from './dom_adapter';
|
||||
*/
|
||||
@ABSTRACT()
|
||||
export class GenericBrowserDomAdapter extends DomAdapter {
|
||||
getDistributedNodes(el) {
|
||||
return el.getDistributedNodes();
|
||||
}
|
||||
resolveAndSetHref(el, baseUrl:string, href:string) {
|
||||
el.href = href == null ? baseUrl : baseUrl + '/../' + href;
|
||||
}
|
||||
@ -34,4 +37,10 @@ export class GenericBrowserDomAdapter extends DomAdapter {
|
||||
this.remove(style);
|
||||
return rules;
|
||||
}
|
||||
supportsDOMEvents(): boolean {
|
||||
return true;
|
||||
}
|
||||
supportsNativeShadowDOM(): boolean {
|
||||
return isFunction(this.defaultDoc().body.createShadowRoot);
|
||||
}
|
||||
}
|
||||
|
@ -223,4 +223,13 @@ class Html5LibDomAdapter implements DomAdapter {
|
||||
List cssToRules(String css) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
List getDistributedNodes(Node) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
bool supportsDOMEvents() {
|
||||
throw 'not implemented';
|
||||
}
|
||||
bool supportsNativeShadowDOM() {
|
||||
throw 'not implemented';
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ var parser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
|
||||
var serializer = new parse5.Serializer(parse5.TreeAdapters.htmlparser2);
|
||||
var treeAdapter = parser.treeAdapter;
|
||||
|
||||
var cssParse = require('css-parse');
|
||||
var cssParse = require('css').parse;
|
||||
|
||||
var url = require('url');
|
||||
|
||||
@ -252,6 +252,9 @@ export class Parse5DomAdapter extends DomAdapter {
|
||||
getShadowRoot(el) {
|
||||
return el.shadowRoot;
|
||||
}
|
||||
getDistributedNodes(el) {
|
||||
throw _notImplemented('getDistributedNodes');
|
||||
}
|
||||
clone(node) {
|
||||
var temp = treeAdapter.createElement("template", null, []);
|
||||
treeAdapter.appendChild(temp, node);
|
||||
@ -384,7 +387,7 @@ export class Parse5DomAdapter extends DomAdapter {
|
||||
return treeAdapter.isTextNode(node);
|
||||
}
|
||||
isCommentNode(node):boolean {
|
||||
throw treeAdapter.isCommentNode(node);
|
||||
return treeAdapter.isCommentNode(node);
|
||||
}
|
||||
isElementNode(node):boolean {
|
||||
return node ? treeAdapter.isElementNode(node) : false;
|
||||
@ -455,6 +458,12 @@ export class Parse5DomAdapter extends DomAdapter {
|
||||
}
|
||||
return rules;
|
||||
}
|
||||
supportsDOMEvents(): boolean {
|
||||
return false;
|
||||
}
|
||||
supportsNativeShadowDOM(): boolean {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//TODO: build a proper list, this one is all the keys of a HTMLInputElement
|
||||
|
@ -24,6 +24,7 @@ class IMPLEMENTS {
|
||||
bool isPresent(obj) => obj != null;
|
||||
bool isBlank(obj) => obj == null;
|
||||
bool isString(obj) => obj is String;
|
||||
bool isFunction(obj) => obj is Function;
|
||||
|
||||
String stringify(obj) => obj.toString();
|
||||
|
||||
|
@ -38,6 +38,10 @@ export function isString(obj):boolean {
|
||||
return typeof obj === "string";
|
||||
}
|
||||
|
||||
export function isFunction(obj):boolean {
|
||||
return typeof obj === "function";
|
||||
}
|
||||
|
||||
export function stringify(token):string {
|
||||
if (typeof token === 'string') {
|
||||
return token;
|
||||
|
@ -18,7 +18,6 @@ import './test_injector.dart';
|
||||
export './test_injector.dart' show inject;
|
||||
|
||||
bool IS_DARTIUM = true;
|
||||
bool IS_NODEJS = false;
|
||||
|
||||
List _testBindings = [];
|
||||
Injector _injector;
|
||||
@ -165,11 +164,11 @@ String elementText(n) {
|
||||
}
|
||||
|
||||
if (DOM.isElementNode(n) && DOM.tagName(n) == 'CONTENT') {
|
||||
return elementText(n.getDistributedNodes());
|
||||
return elementText(DOM.getDistributedNodes(n));
|
||||
}
|
||||
|
||||
if (DOM.hasShadowRoot(n)) {
|
||||
return elementText(DOM.childNodesAsList(n.shadowRoot));
|
||||
return elementText(DOM.childNodesAsList(DOM.getShadowRoot(n)));
|
||||
}
|
||||
|
||||
if (hasNodes(n)) {
|
||||
|
@ -14,7 +14,6 @@ export var afterEach = _global.afterEach;
|
||||
export var expect = _global.expect;
|
||||
|
||||
export var IS_DARTIUM = false;
|
||||
export var IS_NODEJS = typeof window === 'undefined';
|
||||
|
||||
export class AsyncTestCompleter {
|
||||
_done: Function;
|
||||
@ -293,23 +292,26 @@ export class SpyObject {
|
||||
|
||||
function elementText(n) {
|
||||
var hasNodes = (n) => {var children = DOM.childNodes(n); return children && children.length > 0;}
|
||||
if (!IS_NODEJS) {
|
||||
if (n instanceof Comment) return '';
|
||||
|
||||
if (n instanceof Array) return n.map((nn) => elementText(nn)).join("");
|
||||
if (n instanceof Element && DOM.tagName(n) == 'CONTENT')
|
||||
return elementText(Array.prototype.slice.apply(n.getDistributedNodes()));
|
||||
if (DOM.hasShadowRoot(n)) return elementText(DOM.childNodesAsList(n.shadowRoot));
|
||||
if (hasNodes(n)) return elementText(DOM.childNodesAsList(n));
|
||||
|
||||
return n.textContent;
|
||||
} else {
|
||||
if (n instanceof Array) {
|
||||
return n.map((nn) => elementText(nn)).join("");
|
||||
} else if (hasNodes(n)) {
|
||||
return elementText(DOM.childNodesAsList(n));
|
||||
} else {
|
||||
return DOM.getText(n);
|
||||
}
|
||||
if (n instanceof Array) {
|
||||
return n.map((nn) => elementText(nn)).join("");
|
||||
}
|
||||
|
||||
if (DOM.isCommentNode(n)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (DOM.isElementNode(n) && DOM.tagName(n) == 'CONTENT') {
|
||||
return elementText(Array.prototype.slice.apply(DOM.getDistributedNodes(n)));
|
||||
}
|
||||
|
||||
if (DOM.hasShadowRoot(n)) {
|
||||
return elementText(DOM.childNodesAsList(DOM.getShadowRoot(n)));
|
||||
}
|
||||
|
||||
if (hasNodes(n)) {
|
||||
return elementText(DOM.childNodesAsList(n));
|
||||
}
|
||||
|
||||
return DOM.getText(n);
|
||||
}
|
||||
|
Reference in New Issue
Block a user