Chromium Code Reviews| Index: client/dom/templates/html/dartium/impl_Document.darttemplate |
| diff --git a/client/dom/templates/html/dartium/impl_Document.darttemplate b/client/dom/templates/html/dartium/impl_Document.darttemplate |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..08df5eea66cd89df139cfc06d4c0ba61694161f6 |
| --- /dev/null |
| +++ b/client/dom/templates/html/dartium/impl_Document.darttemplate |
| @@ -0,0 +1,53 @@ |
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +class $CLASSNAME extends _ElementImpl |
| + implements Document { |
| +$!MEMBERS |
| + |
| + final dom.Document _documentPtr; |
| + final _NodeImpl _wrappedDocumentPtr; |
| + |
| +_DocumentImpl._wrap(ptr) : |
|
nweiz
2012/03/01 21:18:03
Nit: indentation
|
| + super._wrap(ptr), |
| + _documentPtr = ptr.parentNode, |
| + _wrappedDocumentPtr = ptr.parentNode != null ? |
| + new _SecretHtmlDocumentImpl._wrap(ptr.parentNode) : null; |
| + |
| + // TODO(jacobr): remove these methods and let them be generated automatically |
| + // once dart supports defining fields with the same name in an interface and |
| + // its parent interface. |
| + String get title() => _documentPtr.title; |
| + void set title(String value) => _documentPtr.title = title; |
| + |
| + // For efficiency and simplicity, we always use the HtmlElement as the |
| + // Document but sometimes internally we need the real JS document object. |
| + _NodeImpl get _rawDocument() => _wrappedDocumentPtr; |
| + |
| + // The document doesn't have a parent element. |
| + _ElementImpl get parent() => null; |
| +} |
| + |
| +// This class should not be externally visible. If a user ever gets access to |
| +// a _SecretHtmlDocumentImpl object that is a bug. This object is hidden by |
| +// adding checks to all methods that could an HTMLDocument. We believe that |
|
nweiz
2012/03/01 21:18:03
"that could return an HTMLDocument"
|
| +// list is limited to Event.target, and HTMLHtmlElement.parent. |
| +// In a wrapper based world there isn't a need for this complexity but we |
| +// use this design for consistency with the wrapperless implementation so |
| +// that bugs show up in both cases. |
| +class _SecretHtmlDocumentImpl extends _NodeImpl implements Node { |
| + |
| + _SecretHtmlDocumentImpl._wrap(ptr) : super._wrap(ptr); |
| + |
| + _DocumentImpl get _documentElement() => _wrap(_ptr.documentElement); |
| +} |
| + |
| +EventTarget _FixHtmlDocumentReference(EventTarget eventTarget) { |
| + if (eventTarget is _SecretHtmlDocumentImpl) { |
| + _SecretHtmlDocumentImpl secretDocument = eventTarget; |
| + return secretDocument._documentElement; |
| + } else { |
| + return eventTarget; |
| + } |
| +} |