fix(zone.js): move property patch to legacy (#31660)
Close #31659 PR Close #31660
This commit is contained in:
parent
a182714703
commit
716af1059c
|
@ -10,6 +10,7 @@
|
|||
* @suppress {missingRequire}
|
||||
*/
|
||||
|
||||
import {propertyPatch} from './define-property';
|
||||
import {eventTargetLegacyPatch} from './event-target-legacy';
|
||||
import {propertyDescriptorLegacyPatch} from './property-descriptor-legacy';
|
||||
import {registerElementPatch} from './register-element';
|
||||
|
@ -17,6 +18,7 @@ import {registerElementPatch} from './register-element';
|
|||
(function(_global: any) {
|
||||
_global[Zone.__symbol__('legacyPatch')] = function() {
|
||||
const Zone = _global['Zone'];
|
||||
Zone.__load_patch('defineProperty', () => { propertyPatch(); });
|
||||
Zone.__load_patch('registerElement', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
|
||||
registerElementPatch(global, api);
|
||||
});
|
||||
|
|
|
@ -15,7 +15,6 @@ import {patchTimer} from '../common/timers';
|
|||
import {ZONE_SYMBOL_ADD_EVENT_LISTENER, ZONE_SYMBOL_REMOVE_EVENT_LISTENER, patchClass, patchMethod, patchPrototype, scheduleMacroTaskWithCurrentZone, zoneSymbol} from '../common/utils';
|
||||
|
||||
import {patchCustomElements} from './custom-elements';
|
||||
import {propertyPatch} from './define-property';
|
||||
import {eventTargetPatch, patchEvent} from './event-target';
|
||||
import {propertyDescriptorPatch} from './property-descriptor';
|
||||
|
||||
|
@ -68,7 +67,6 @@ Zone.__load_patch('EventTarget', (global: any, Zone: ZoneType, api: _ZonePrivate
|
|||
|
||||
Zone.__load_patch('on_property', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
|
||||
propertyDescriptorPatch(api, global);
|
||||
propertyPatch();
|
||||
});
|
||||
|
||||
Zone.__load_patch('customElements', (global: any, Zone: ZoneType, api: _ZonePrivate) => {
|
||||
|
|
|
@ -13,15 +13,27 @@ describe('defineProperty', function() {
|
|||
.not.toThrow();
|
||||
});
|
||||
|
||||
it('should not throw error when try to defineProperty with a frozen desc', function() {
|
||||
it('should not be able to change a frozen desc', function() {
|
||||
const obj = {};
|
||||
const desc = Object.freeze({value: null, writable: true});
|
||||
Object.defineProperty(obj, 'prop', desc);
|
||||
let objDesc: any = Object.getOwnPropertyDescriptor(obj, 'prop');
|
||||
expect(objDesc.writable).toBeTruthy();
|
||||
try {
|
||||
Object.defineProperty(obj, 'prop', {configurable: true, writable: true, value: 'test'});
|
||||
} catch (err) {
|
||||
}
|
||||
objDesc = Object.getOwnPropertyDescriptor(obj, 'prop');
|
||||
expect(objDesc.configurable).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should not throw error when try to defineProperty with a frozen obj', function() {
|
||||
const obj = {};
|
||||
Object.freeze(obj);
|
||||
Object.defineProperty(obj, 'prop', {configurable: true, writable: true, value: 'value'});
|
||||
try {
|
||||
Object.defineProperty(obj, 'prop', {configurable: true, writable: true, value: 'value'});
|
||||
} catch (err) {
|
||||
}
|
||||
expect((obj as any).prop).toBeFalsy();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue