Index: tools/dom/src/dart2js_CustomElementSupport.dart |
diff --git a/tools/dom/src/dart2js_CustomElementSupport.dart b/tools/dom/src/dart2js_CustomElementSupport.dart |
index 67cc05b34ff115f36e244169de4f218881d337b2..0f941fd981ec67676f798cc83f2fd756ecb0ed45 100644 |
--- a/tools/dom/src/dart2js_CustomElementSupport.dart |
+++ b/tools/dom/src/dart2js_CustomElementSupport.dart |
@@ -4,8 +4,10 @@ |
part of dart.dom.html; |
-_callConstructor(constructor) { |
+_callConstructor(constructor, interceptor) { |
return (receiver) { |
+ setNativeSubclassDispatchRecord(receiver, interceptor); |
+ |
return JS('', '#(#)', constructor, receiver); |
}; |
} |
@@ -62,6 +64,8 @@ void _registerCustomElement(context, document, String tag, Type type, |
throw new ArgumentError(type); |
} |
+ var interceptor = JS('=Object', '#.prototype', interceptorClass); |
+ |
var constructor = findConstructorForNativeSubclassType(type, 'created'); |
if (constructor == null) { |
throw new ArgumentError("$type has no constructor called 'created'"); |
@@ -94,7 +98,7 @@ void _registerCustomElement(context, document, String tag, Type type, |
JS('void', '#.createdCallback = #', properties, |
JS('=Object', '{value: #}', |
- _makeCallbackMethod(_callConstructor(constructor)))); |
+ _makeCallbackMethod(_callConstructor(constructor, interceptor)))); |
JS('void', '#.enteredViewCallback = #', properties, |
JS('=Object', '{value: #}', _makeCallbackMethod(_callEnteredView))); |
JS('void', '#.leftViewCallback = #', properties, |
@@ -111,8 +115,6 @@ void _registerCustomElement(context, document, String tag, Type type, |
var baseProto = JS('=Object', '#.prototype', baseConstructor); |
var proto = JS('=Object', 'Object.create(#, #)', baseProto, properties); |
- var interceptor = JS('=Object', '#.prototype', interceptorClass); |
- |
setNativeSubclassDispatchRecord(proto, interceptor); |
var options = JS('=Object', '{prototype: #}', proto); |