refactor(ivy): remove TStylingContext locking in favor of firstUpdatePass flag (#33521)
This patch removes the need to lock the style and class context instances to track when bindings can be added. What happens now is that the `tNode.firstUpdatePass` is used to track when bindings are registered on the context instances. PR Close #33521
This commit is contained in:
@ -692,9 +692,6 @@
|
||||
{
|
||||
"name": "getLViewParent"
|
||||
},
|
||||
{
|
||||
"name": "getLockedConfig"
|
||||
},
|
||||
{
|
||||
"name": "getMapProp"
|
||||
},
|
||||
@ -917,9 +914,6 @@
|
||||
{
|
||||
"name": "isContentQueryHost"
|
||||
},
|
||||
{
|
||||
"name": "isContextLocked"
|
||||
},
|
||||
{
|
||||
"name": "isCreationMode"
|
||||
},
|
||||
@ -938,9 +932,6 @@
|
||||
{
|
||||
"name": "isForwardRef"
|
||||
},
|
||||
{
|
||||
"name": "isHostStyling"
|
||||
},
|
||||
{
|
||||
"name": "isHostStylingActive"
|
||||
},
|
||||
@ -1007,12 +998,6 @@
|
||||
{
|
||||
"name": "locateHostElement"
|
||||
},
|
||||
{
|
||||
"name": "lockAndFinalizeContext"
|
||||
},
|
||||
{
|
||||
"name": "lockContext"
|
||||
},
|
||||
{
|
||||
"name": "looseIdentical"
|
||||
},
|
||||
@ -1292,6 +1277,9 @@
|
||||
{
|
||||
"name": "stylingProp"
|
||||
},
|
||||
{
|
||||
"name": "syncContextInitialStyling"
|
||||
},
|
||||
{
|
||||
"name": "syncViewWithBlueprint"
|
||||
},
|
||||
|
@ -170,21 +170,21 @@ describe('instructions', () => {
|
||||
const detectedValues: string[] = [];
|
||||
const sanitizerInterceptor =
|
||||
new MockSanitizerInterceptor(value => { detectedValues.push(value); });
|
||||
const fixture =
|
||||
createTemplateFixtureWithSanitizer(() => createDiv(), 1, sanitizerInterceptor);
|
||||
|
||||
fixture.update(() => {
|
||||
ɵɵstyleSanitizer(sanitizerInterceptor.getStyleSanitizer());
|
||||
ɵɵstyleMap({
|
||||
'background-image': 'background-image',
|
||||
'background': 'background',
|
||||
'border-image': 'border-image',
|
||||
'list-style': 'list-style',
|
||||
'list-style-image': 'list-style-image',
|
||||
'filter': 'filter',
|
||||
'width': 'width'
|
||||
});
|
||||
});
|
||||
const fixture = new TemplateFixture(
|
||||
() => { return createDiv(); }, //
|
||||
() => {
|
||||
ɵɵstyleSanitizer(sanitizerInterceptor.getStyleSanitizer());
|
||||
ɵɵstyleMap({
|
||||
'background-image': 'background-image',
|
||||
'background': 'background',
|
||||
'border-image': 'border-image',
|
||||
'list-style': 'list-style',
|
||||
'list-style-image': 'list-style-image',
|
||||
'filter': 'filter',
|
||||
'width': 'width'
|
||||
});
|
||||
},
|
||||
1, 0, null, null, sanitizerInterceptor);
|
||||
|
||||
const props = detectedValues.sort();
|
||||
expect(props).toEqual([
|
||||
@ -197,8 +197,8 @@ describe('instructions', () => {
|
||||
function createDivWithStyling() { ɵɵelement(0, 'div'); }
|
||||
|
||||
it('should add class', () => {
|
||||
const fixture = new TemplateFixture(createDivWithStyling, () => {}, 1);
|
||||
fixture.update(() => { ɵɵclassMap('multiple classes'); });
|
||||
const fixture =
|
||||
new TemplateFixture(createDivWithStyling, () => { ɵɵclassMap('multiple classes'); }, 1);
|
||||
expect(fixture.html).toEqual('<div class="classes multiple"></div>');
|
||||
});
|
||||
});
|
||||
@ -486,8 +486,3 @@ function stripStyleWsCharacters(value: string): string {
|
||||
// color: blue; => color:blue
|
||||
return value.replace(/;/g, '').replace(/:\s+/g, ':');
|
||||
}
|
||||
|
||||
function createTemplateFixtureWithSanitizer(
|
||||
buildFn: () => any, decls: number, sanitizer: Sanitizer) {
|
||||
return new TemplateFixture(buildFn, () => {}, decls, 0, null, null, sanitizer);
|
||||
}
|
||||
|
Reference in New Issue
Block a user