Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit f587f17

Browse files
committed
fix: wrap Object.defineProperties
Closes #24
1 parent 383b479 commit f587f17

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

test/patch/registerElement.spec.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,30 @@ describe('document.registerElement', function () {
130130
});
131131
});
132132

133+
134+
it('should work with prototypes that have non-writable, non-configurable descriptors', function () {
135+
runs(function () {
136+
var proto = Object.create(HTMLElement.prototype);
137+
Object.defineProperties(proto, {
138+
createdCallback: {
139+
writeable: false,
140+
configurable: false,
141+
value: flagAndCheckZone
142+
}
143+
});
144+
document.registerElement('x-props-desc', {
145+
prototype: proto
146+
});
147+
var elt = document.createElement('x-props-desc');
148+
});
149+
150+
waitsFor(function() {
151+
return flag;
152+
}, 'createdCallback to fire', 100);
153+
154+
runs(function() {
155+
expect(hasParent).toBe(true);
156+
});
157+
});
158+
133159
});

zone.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,13 @@ Zone.patchDefineProperty = function () {
526526
return rewriteDescriptor(obj, prop, desc);
527527
};
528528

529+
Object.defineProperties = function (obj, props) {
530+
Object.keys(props).forEach(function (prop) {
531+
Object.defineProperty(obj, prop, props[prop]);
532+
});
533+
return obj;
534+
};
535+
529536
Object.getOwnPropertyDescriptor = function (obj, prop) {
530537
var desc = _getOwnPropertyDescriptor(obj, prop);
531538
if (isUnconfigurable(obj, prop)) {

0 commit comments

Comments
 (0)