Use originalGetTag on wrapped object
Upgrade dart_support to use dartNativeDispatchHooksTransformer.
R=sigmund@google.com
Review URL: https://codereview.chromium.org//282893002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/web_components@36135 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/lib/dart_support.js b/lib/dart_support.js
index 44b5a38..503faee 100644
--- a/lib/dart_support.js
+++ b/lib/dart_support.js
@@ -15,11 +15,18 @@
var needsConstructorFix = window.constructor === window.Window;
// TODO(jmesserly): we need to wrap document somehow (a dart:html hook?)
- window.dartExperimentalFixupGetTag = function(originalGetTag) {
+
+ // 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) {
var NodeList = ShadowDOMPolyfill.wrappers.NodeList;
var ShadowRoot = ShadowDOMPolyfill.wrappers.ShadowRoot;
var unwrapIfNeeded = ShadowDOMPolyfill.unwrapIfNeeded;
- function getTag(obj) {
+ var originalGetTag = hooks.getTag;
+ hooks.getTag = function getTag(obj) {
// TODO(jmesserly): do we still need these?
if (obj instanceof NodeList) return 'NodeList';
if (obj instanceof ShadowRoot) return 'ShadowRoot';
@@ -44,8 +51,7 @@
if (ctor === unwrapped.constructor) {
var name = ctor._ShadowDOMPolyfill$cacheTag_;
if (!name) {
- name = Object.prototype.toString.call(unwrapped);
- name = name.substring(8, name.length - 1);
+ name = originalGetTag(unwrapped);
ctor._ShadowDOMPolyfill$cacheTag_ = name;
}
return name;
@@ -55,7 +61,5 @@
}
return originalGetTag(obj);
}
-
- return getTag;
- };
+ });
})();