Index: runtime/bin/vmservice/observatory/deployed/web/packages/polymer/src/js/use_native_dartium_shadowdom.js |
diff --git a/runtime/bin/vmservice/observatory/deployed/web/packages/polymer/src/js/use_native_dartium_shadowdom.js b/runtime/bin/vmservice/observatory/deployed/web/packages/polymer/src/js/use_native_dartium_shadowdom.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7b492b79bad1088d5d1cb7b95985064da95929f0 |
--- /dev/null |
+++ b/runtime/bin/vmservice/observatory/deployed/web/packages/polymer/src/js/use_native_dartium_shadowdom.js |
@@ -0,0 +1,29 @@ |
+// Prevent polyfilled JS Shadow DOM in Dartium |
+// We need this if we want Dart code to be able to interoperate with Polymer.js |
+// code that also uses Shadow DOM. |
+// TODO(jmesserly): we can remove this code once platform.js is correctly |
+// feature detecting Shadow DOM in Dartium. |
+if (navigator.userAgent.indexOf('(Dart)') !== -1) { |
+ window.Platform = window.Platform || {}; |
+ Platform.flags = Platform.flags || {}; |
+ Platform.flags.shadow = 'native'; |
+ |
+ // Note: Dartium 34 hasn't turned on the unprefixed Shadow DOM |
+ // (this happens in Chrome 35), so unless "enable experimental platform |
+ // features" is enabled, things will break. So we expose them as unprefixed |
+ // names instead. |
+ var proto = Element.prototype; |
+ if (!proto.createShadowRoot) { |
+ proto.createShadowRoot = proto.webkitCreateShadowRoot; |
+ |
+ Object.defineProperty(proto, 'shadowRoot', { |
+ get: function() { |
+ return this.webkitShadowRoot; |
+ }, |
+ set: function(value) { |
+ this.webkitShadowRoot = value; |
+ }, |
+ configurable: true |
+ }); |
+ } |
+} |