Chromium Code Reviews| Index: pkg/web_components/lib/dart_support.js |
| diff --git a/pkg/shadow_dom/lib/src/platform/patches-shadowdom-polyfill.js b/pkg/web_components/lib/dart_support.js |
| similarity index 58% |
| rename from pkg/shadow_dom/lib/src/platform/patches-shadowdom-polyfill.js |
| rename to pkg/web_components/lib/dart_support.js |
| index a5749abba1b791461572c85ecd259b54b1461d09..1f1c8054d6c256fdef89fec4a77cd06d260eb5e5 100644 |
| --- a/pkg/shadow_dom/lib/src/platform/patches-shadowdom-polyfill.js |
| +++ b/pkg/web_components/lib/dart_support.js |
| @@ -1,29 +1,12 @@ |
| -/* |
| - * Copyright 2013 The Polymer Authors. All rights reserved. |
| - * Use of this source code is governed by a BSD-style |
| - * license that can be found in the LICENSE file. |
| - */ |
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
|
Siggi Cherem (dart-lang)
2014/02/10 20:49:23
2014 :)
Jennifer Messerly
2014/02/10 22:17:11
Done.
|
| +// 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. |
| + |
| (function() { |
| var ShadowDOMPolyfill = window.ShadowDOMPolyfill; |
| - var wrap = ShadowDOMPolyfill.wrap; |
| - |
| - // patch in prefixed name |
| - Object.defineProperties(HTMLElement.prototype, { |
| - //TODO(sjmiles): review accessor alias with Arv |
| - webkitShadowRoot: { |
| - get: function() { |
| - return this.shadowRoot; |
| - } |
| - } |
| - }); |
| - |
| - // ShadowCSS needs this: |
| - window.wrap = window.ShadowDOMPolyfill.wrap; |
| - window.unwrap = window.ShadowDOMPolyfill.unwrap; |
| + if (!ShadowDOMPolyfill) return; |
| - //TODO(sjmiles): review method alias with Arv |
| - HTMLElement.prototype.webkitCreateShadowRoot = |
| - HTMLElement.prototype.createShadowRoot; |
| + var needsConstructorFix = window.constructor === window.Window; |
| // TODO(jmesserly): we need to wrap document somehow (a dart:html hook?) |
| window.dartExperimentalFixupGetTag = function(originalGetTag) { |
| @@ -34,9 +17,9 @@ |
| // TODO(jmesserly): do we still need these? |
| if (obj instanceof NodeList) return 'NodeList'; |
| if (obj instanceof ShadowRoot) return 'ShadowRoot'; |
| - if (window.MutationRecord && (obj instanceof MutationRecord)) |
| + if (MutationRecord && (obj instanceof MutationRecord)) |
| return 'MutationRecord'; |
| - if (window.MutationObserver && (obj instanceof MutationObserver)) |
| + if (MutationObserver && (obj instanceof MutationObserver)) |
| return 'MutationObserver'; |
| // TODO(jmesserly): this prevents incorrect interaction between ShadowDOM |
| @@ -47,11 +30,10 @@ |
| if (obj instanceof HTMLTemplateElement) return 'HTMLTemplateElement'; |
| var unwrapped = unwrapIfNeeded(obj); |
| - if (obj !== unwrapped) { |
| - // Fix up class names for Firefox. |
| - // For some of them (like HTMLFormElement and HTMLInputElement), |
| - // the "constructor" property of the unwrapped nodes points at the |
| - // same constructor as the wrapper. |
| + if (needsConstructorFix || obj !== unwrapped) { |
| + // Fix up class names for Firefox, or if using the minified polyfill. |
| + // dart2js prefers .constructor.name, but there are all kinds of cases |
| + // where this will give the wrong answer. |
| var ctor = obj.constructor |
| if (ctor === unwrapped.constructor) { |
| var name = ctor._ShadowDOMPolyfill$cacheTag_; |