| Index: pkg/polymer/lib/src/loader.dart
|
| diff --git a/pkg/polymer/lib/src/loader.dart b/pkg/polymer/lib/src/loader.dart
|
| index 0417bcb5d4a3855322f890a448ae76c3a21a35b4..f80353223f5d7b39bd1d79eb5d3a120d956e2df0 100644
|
| --- a/pkg/polymer/lib/src/loader.dart
|
| +++ b/pkg/polymer/lib/src/loader.dart
|
| @@ -103,11 +103,7 @@ void _hookJsPolymer() {
|
| polymerJs.callMethod('whenPolymerReady',
|
| [zone.bindCallback(() => Polymer._onReady.complete())]);
|
|
|
| - var polyElem = document.createElement('polymer-element');
|
| - var proto = new JsObject.fromBrowserObject(polyElem)['__proto__'];
|
| - if (proto is Node) proto = new JsObject.fromBrowserObject(proto);
|
| -
|
| - JsFunction originalRegister = proto['register'];
|
| + JsFunction originalRegister = _polymerElementProto['register'];
|
| if (originalRegister == null) {
|
| throw new StateError('polymer.js must expose "register" function on '
|
| 'polymer-element to enable polymer.dart to interoperate.');
|
| @@ -127,5 +123,14 @@ void _hookJsPolymer() {
|
| return originalRegister.apply([name, extendee], thisArg: jsElem);
|
| }
|
|
|
| - proto['register'] = new JsFunction.withThis(registerDart);
|
| + _polymerElementProto['register'] = new JsFunction.withThis(registerDart);
|
| }
|
| +
|
| +// Note: we cache this so we can use it later to look up 'init'.
|
| +// See registerSync.
|
| +JsObject _polymerElementProto = () {
|
| + var polyElem = document.createElement('polymer-element');
|
| + var proto = new JsObject.fromBrowserObject(polyElem)['__proto__'];
|
| + if (proto is Node) proto = new JsObject.fromBrowserObject(proto);
|
| + return proto;
|
| +}();
|
|
|