Index: pkg/web_components/lib/dart_support.js |
diff --git a/pkg/web_components/lib/dart_support.js b/pkg/web_components/lib/dart_support.js |
index 4e1995a4e2840564771c22dee5d0c37f25019821..7d73f50979b616658d5ad7da32e33c1082db8e34 100644 |
--- a/pkg/web_components/lib/dart_support.js |
+++ b/pkg/web_components/lib/dart_support.js |
@@ -116,6 +116,28 @@ |
upgraders[name] = upgrader; |
} |
+ // dartNativeDispatchHooksTransformer is described on initHooks() in |
+ // sdk/lib/_internal/lib/native_helper.dart. |
+ if (typeof window.dartNativeDispatchHooksTransformer == 'undefined') |
+ window.dartNativeDispatchHooksTransformer = []; |
+ |
+ window.dartNativeDispatchHooksTransformer.push(function(hooks) { |
Siggi Cherem (dart-lang)
2014/06/11 19:34:57
should we also check for !!ShadowDOMPOlyfill?
See
sra1
2014/06/11 19:43:24
Done.
|
+ var originalGetUnknownTag = hooks.getUnknownTag; |
+ hooks.getUnknownTag = function(o, tag) { |
+ // Custom elements outside the app in chrome have a constructor |
+ // names like "x-b". |
Siggi Cherem (dart-lang)
2014/06/11 19:34:57
nit: say x-tag instead of x-b (more commonly used
sra1
2014/06/11 19:43:24
Done.
|
+ if (/-/.test(tag)) { |
+ var s = Object.prototype.toString.call(o); |
+ var match = s.match(/^\[object ([A-Za-z]*)\]$/); |
Siggi Cherem (dart-lang)
2014/06/11 19:34:57
let's add Element in the regex
sra1
2014/06/11 19:43:24
Done.
|
+ if (match) { |
+ var name = match[1]; |
+ if (name != "Object") return name; |
+ } |
+ return originalGetUnknownTag(o, tag); |
+ } |
+ }; |
+ }); |
+ |
doc._registerDartTypeUpgrader = registerDartTypeUpgrader; |
doc.registerElement = registerElement; |
})(document); |