| Index: pkg/polymer/lib/src/instance.dart
|
| diff --git a/pkg/polymer/lib/src/instance.dart b/pkg/polymer/lib/src/instance.dart
|
| index 4dae271e308fa9d849e8ade33849b8c39a5e26c5..815c6bdf49c9b9cd6aa72b166628850cd05fe558 100644
|
| --- a/pkg/polymer/lib/src/instance.dart
|
| +++ b/pkg/polymer/lib/src/instance.dart
|
| @@ -520,15 +520,13 @@ abstract class Polymer implements Element, Observable, NodeBindExtension {
|
| }
|
|
|
| void observeProperty(String name, Symbol method) {
|
| - final self = reflect(this);
|
| - _observe(name, (value, old) => self.invoke(method, [old]));
|
| + _observe(name, (value, old) => _invoke(method, [old]));
|
| }
|
|
|
| void observeBoth(String name, Symbol methodName) {
|
| - final self = reflect(this);
|
| _observe(name, (value, old) {
|
| reflectPropertyToAttribute(name);
|
| - self.invoke(methodName, [old]);
|
| + _invoke(methodName, [old]);
|
| });
|
| }
|
|
|
| @@ -657,10 +655,15 @@ abstract class Polymer implements Element, Observable, NodeBindExtension {
|
| bool log = _eventsLog.isLoggable(Level.FINE);
|
| if (log) _eventsLog.fine('>>> [$localName]: dispatch $methodName');
|
|
|
| - // TODO(sigmund): consider making event listeners list all arguments
|
| - // explicitly. Unless VM mirrors are optimized first, this reflectClass call
|
| - // will be expensive once custom elements extend directly from Element (see
|
| - // dartbug.com/11108).
|
| + _invoke(methodName, args);
|
| +
|
| + if (log) _eventsLog.info('<<< [$localName]: dispatch $methodName');
|
| + }
|
| +
|
| + InstanceMirror _invoke(Symbol methodName, List args) {
|
| + // TODO(sigmund): consider making callbacks list all arguments
|
| + // explicitly. Unless VM mirrors are optimized first, this will be expensive
|
| + // once custom elements extend directly from Element (see issue 11108).
|
| var self = reflect(this);
|
| var method = self.type.methods[methodName];
|
| if (method != null) {
|
| @@ -670,9 +673,7 @@ abstract class Polymer implements Element, Observable, NodeBindExtension {
|
| // them appart from named arguments (see http://dartbug.com/11334)
|
| args.length = method.parameters.where((p) => !p.isOptional).length;
|
| }
|
| - self.invoke(methodName, args);
|
| -
|
| - if (log) _eventsLog.fine('<<< [$localName]: dispatch $methodName');
|
| + return self.invoke(methodName, args);
|
| }
|
|
|
| void instanceEventListener(Event event) {
|
|
|