| 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) :
|
| + 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
|
| +// 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;
|
| + }
|
| +}
|
|
|