Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Unified Diff: sdk/lib/html/templates/html/impl/impl_Element.darttemplate

Issue 11365019: Merging dart:html interfaces and implementations (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixing merged classes in dartium not compiling under dartc. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/html/templates/html/impl/impl_Element.darttemplate
diff --git a/sdk/lib/html/templates/html/impl/impl_Element.darttemplate b/sdk/lib/html/templates/html/impl/impl_Element.darttemplate
index bc0f0a79ec5561ed4d7fae572fd4d4a1d455b1a0..f5c05f8b86f58d9e8fc9a32ef95c836c17c5041c 100644
--- a/sdk/lib/html/templates/html/impl/impl_Element.darttemplate
+++ b/sdk/lib/html/templates/html/impl/impl_Element.darttemplate
@@ -6,10 +6,10 @@
// functionality.
class _ChildrenElementList implements List {
// Raw Element.
- final _ElementImpl _element;
- final _HTMLCollectionImpl _childElements;
+ final Element _element;
+ final HTMLCollection _childElements;
- _ChildrenElementList._wrap(_ElementImpl element)
+ _ChildrenElementList._wrap(Element element)
: _childElements = element.$dom_children,
_element = element;
@@ -24,7 +24,7 @@ class _ChildrenElementList implements List {
bool contains(Element element) => _childElements.contains(element);
void forEach(void f(Element element)) {
- for (_ElementImpl element in _childElements) {
+ for (Element element in _childElements) {
f(element);
}
}
@@ -73,11 +73,11 @@ class _ChildrenElementList implements List {
return _childElements.length;
}
- _ElementImpl operator [](int index) {
+ Element operator [](int index) {
return _childElements[index];
}
- void operator []=(int index, _ElementImpl value) {
+ void operator []=(int index, Element value) {
_element.$dom_replaceChild(value, _childElements[index]);
}
@@ -86,17 +86,17 @@ class _ChildrenElementList implements List {
throw new UnsupportedError('');
}
- Element add(_ElementImpl value) {
+ Element add(Element value) {
_element.$dom_appendChild(value);
return value;
}
- Element addLast(_ElementImpl value) => add(value);
+ Element addLast(Element value) => add(value);
Iterator<Element> iterator() => _toList().iterator();
void addAll(Collection<Element> collection) {
- for (_ElementImpl element in collection) {
+ for (Element element in collection) {
_element.$dom_appendChild(element);
}
}
@@ -296,9 +296,18 @@ class _FrozenElementListIterator implements Iterator<Element> {
bool get hasNext => _index < _list.length;
}
-class _ElementAttributeMap implements AttributeMap {
+/**
+ * All your attribute manipulation needs in one place.
+ * Extends the regular Map interface by automatically coercing non-string
+ * values to strings.
+ */
+abstract class AttributeMap implements Map<String, String> {
+ void operator []=(String key, value);
+}
- final _ElementImpl _element;
+class _ElementAttributeMap extends AttributeMap {
+
+ final Element _element;
_ElementAttributeMap(this._element);
@@ -391,7 +400,7 @@ class _ElementAttributeMap implements AttributeMap {
* Provides a Map abstraction on top of data-* attributes, similar to the
* dataSet in the old DOM.
*/
-class _DataAttributeMap implements AttributeMap {
+class _DataAttributeMap extends AttributeMap {
final Map<String, String> $dom_attributes;
@@ -461,9 +470,23 @@ class _DataAttributeMap implements AttributeMap {
String _strip(String key) => key.substring(5);
}
-class _CssClassSet implements CSSClassSet {
+abstract class CssClassSet implements Set<String> {
+ /**
+ * Adds the class [token] to the element if it is not on it, removes it if it
+ * is.
+ */
+ bool toggle(String token);
+
+ /**
+ * Returns [:true:] if classes cannot be added or removed from this
+ * [:CssClassSet:].
+ */
+ bool get frozen;
+}
+
+class _CssClassSet extends CssClassSet {
- final _ElementImpl _element;
+ final Element _element;
_CssClassSet(this._element);
@@ -488,6 +511,10 @@ class _CssClassSet implements CSSClassSet {
bool get isEmpty => _read().isEmpty;
+ /**
+ * Returns [:true:] if classes cannot be added or removed from this
+ * [:CssClassSet:].
+ */
bool get frozen => false;
int get length =>_read().length;
@@ -510,6 +537,10 @@ class _CssClassSet implements CSSClassSet {
return result;
}
+ /**
+ * Adds the class [token] to the element if it is not on it, removes it if it
+ * is.
+ */
bool toggle(String value) {
Set<String> s = _read();
bool result = false;
@@ -620,20 +651,21 @@ class _SimpleClientRect implements ClientRect {
// rects as we must perform all measurement queries at a safe point to avoid
// triggering unneeded layouts.
/**
- * All your element measurement needs in one place
+ * All your element measurement needs in one place.
* @domName none
*/
-class _ElementRectImpl implements ElementRect {
+class ElementRect {
+ // Relative to offsetParent.
final ClientRect client;
final ClientRect offset;
final ClientRect scroll;
// TODO(jacobr): should we move these outside of ElementRect to avoid the
// overhead of computing them every time even though they are rarely used.
- final _ClientRectImpl _boundingClientRect;
- final _ClientRectListImpl _clientRects;
+ final ClientRect _boundingClientRect;
+ final _ClientRectList _clientRects;
- _ElementRectImpl(_ElementImpl element) :
+ ElementRect(Element element) :
client = new _SimpleClientRect(element.clientLeft,
element.clientTop,
element.clientWidth,
@@ -649,9 +681,10 @@ class _ElementRectImpl implements ElementRect {
_boundingClientRect = element.getBoundingClientRect(),
_clientRects = element.getClientRects();
- _ClientRectImpl get bounding => _boundingClientRect;
+ // In global coords.
+ ClientRect get bounding => _boundingClientRect;
- // TODO(jacobr): cleanup.
+ // In global coords.
List<ClientRect> get clientRects {
final out = new List(_clientRects.length);
for (num i = 0; i < _clientRects.length; i++) {
@@ -663,6 +696,11 @@ class _ElementRectImpl implements ElementRect {
class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
+ factory $CLASSNAME.html(String html) =>
+ _$(CLASSNAME)FactoryProvider.createElement_html(html);
+ factory $CLASSNAME.tag(String tag) =>
+ _$(CLASSNAME)FactoryProvider.createElement_tag(tag);
+
/**
* @domName Element.hasAttribute, Element.getAttribute, Element.setAttribute,
* Element.removeAttribute
@@ -683,17 +721,22 @@ class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
elements.addAll(value);
}
+ /**
+ * @domName childElementCount, firstElementChild, lastElementChild,
+ * children, Node.nodes.add
+ */
List<Element> get elements => new _ChildrenElementList._wrap(this);
- _ElementImpl query(String selectors) => $dom_querySelector(selectors);
+ Element query(String selectors) => $dom_querySelector(selectors);
List<Element> queryAll(String selectors) =>
new _FrozenElementList._wrap($dom_querySelectorAll(selectors));
- _CssClassSet get classes => new _CssClassSet(this);
+ /** @domName className, classList */
+ CssClassSet get classes => new _CssClassSet(this);
void set classes(Collection<String> value) {
- _CssClassSet classSet = classes;
+ CssClassSet classSet = classes;
classSet.clear();
classSet.addAll(value);
}
@@ -709,32 +752,56 @@ class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
}
}
+ /**
+ * @domName getClientRects, getBoundingClientRect, clientHeight, clientWidth,
+ * clientTop, clientLeft, offsetHeight, offsetWidth, offsetTop, offsetLeft,
+ * scrollHeight, scrollWidth, scrollTop, scrollLeft
+ */
Future<ElementRect> get rect {
return _createMeasurementFuture(
- () => new _ElementRectImpl(this),
+ () => new ElementRect(this),
new Completer<ElementRect>());
}
+ /** @domName Window.getComputedStyle */
Future<CSSStyleDeclaration> get computedStyle {
// TODO(jacobr): last param should be null, see b/5045788
return getComputedStyle('');
}
+ /** @domName Window.getComputedStyle */
Future<CSSStyleDeclaration> getComputedStyle(String pseudoElement) {
return _createMeasurementFuture(
- () => _window.$dom_getComputedStyle(this, pseudoElement),
+ () => window.$dom_getComputedStyle(this, pseudoElement),
new Completer<CSSStyleDeclaration>());
}
+ /**
+ * Adds the specified text as a text node after the last child of this.
+ */
void addText(String text) {
this.insertAdjacentText('beforeend', text);
}
+ /**
+ * Parses the specified text as HTML and adds the resulting node after the
+ * last child of this.
+ */
void addHTML(String text) {
this.insertAdjacentHTML('beforeend', text);
}
// Hooks to support custom WebComponents.
+ /**
+ * Experimental support for [web components][wc]. This field stores a
+ * reference to the component implementation. It was inspired by Mozilla's
+ * [x-tags][] project. Please note: in the future it may be possible to
+ * `extend Element` from your class, in which case this field will be
+ * deprecated and will simply return this [Element] object.
+ *
+ * [wc]: http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html
+ * [x-tags]: http://x-tags.org/
+ */
var xtag;
$if DARTIUM
@@ -855,7 +922,7 @@ class _ElementFactoryProvider {
parentTag = _CUSTOM_PARENT_TAG_MAP[tag];
}
}
- final _ElementImpl temp = new Element.tag(parentTag);
+ final Element temp = new Element.tag(parentTag);
temp.innerHTML = html;
Element element;
@@ -882,6 +949,6 @@ $if DART2JS
JS('Element', 'document.createElement(#)', tag);
$else
static Element createElement_tag(String tag) =>
- _document.$dom_createElement(tag);
+ document.$dom_createElement(tag);
$endif
}

Powered by Google App Engine
This is Rietveld 408576698