angular-cn/packages/core/test
Miško Hevery 9bd9590767 refactor(ivy): change styling to use programmatic API on updates (#34804)
Previously we would write to class/style as strings `element.className` and `element.style.cssText`. Turns out that approach is good for initial render but not good for updates. Updates using this approach are problematic because we have to check to see if there was an out of bound write to style and than perform reconciliation. This also requires the browser to bring up CSS parser which is expensive.

Another problem with old approach is that we had to queue the DOM writes and flush them twice. Once on element advance instruction and once in `hostBindings`. The double flushing is expensive but it also means that a directive can observe that styles are not yet written (they are written after directive executes.)

The new approach uses `element.classList.add/remove` and `element.style.setProperty/removeProperty` API for updates only (it continues to use `element.className` and `element.style.cssText` for initial render as it is cheaper.) The other change is that the styling changes are applied immediately (no queueing). This means that it is the instruction which computes priority. In some circumstances it may result in intermediate writes which are than overwritten with new value. (This should be rare)

Overall this change deletes most of the previous code and replaces it with new simplified implement. The simplification results in code savings.

PR Close #34804
2020-01-24 12:23:19 -08:00
..
acceptance refactor(ivy): change styling to use programmatic API on updates (#34804) 2020-01-24 12:23:19 -08:00
animation fix(animations): not waiting for child animations to finish when removing parent in Ivy (#34702) 2020-01-21 13:13:20 -05:00
bundling refactor(ivy): change styling to use programmatic API on updates (#34804) 2020-01-24 12:23:19 -08:00
change_detection style: enforce disallowance of object constructor (#33211) 2019-12-03 10:08:25 -08:00
debug fix(ivy): ensure eventListeners added outside angular context are not called... (#34514) 2020-01-22 15:38:13 -08:00
di refactor(core): rename ngInjectableDef to ɵprov (#33151) 2019-10-16 16:36:19 -04:00
dom refactor(core): move Meta methods that only have one version from DomAdapter (#32408) 2019-09-03 11:59:39 -07:00
i18n feat: i18n - include currency code in locale data (#32584) 2020-01-13 09:57:06 -08:00
linker fix(core): make QueryList implement Iterable in the type system (#33536) 2019-11-19 13:43:53 -08:00
metadata test: clean up explicit dynamic query usages (#33015) 2019-10-17 16:10:10 -04:00
reflection fix(core): handle `undefined` meta in `injectArgs` (#31333) 2019-07-01 10:11:08 -07:00
render3 refactor(ivy): change styling to use programmatic API on updates (#34804) 2020-01-24 12:23:19 -08:00
sanitization fix(core): allow css custom variables/properties in the style sanitizer (#33841) 2019-11-20 14:47:59 -08:00
strict_types build: derive ts_library dep from jasmine_node_test boostrap label if it ends in `_es5` (#34736) 2020-01-15 14:58:07 -05:00
testability build: update zone.js to 0.9.0 (#28219) 2019-03-26 12:50:38 -07:00
util refactor(core): Add array modification functions. (#34804) 2020-01-24 12:23:00 -08:00
view build: derive ts_library dep from jasmine_node_test boostrap label if it ends in `_es5` (#34736) 2020-01-15 14:58:07 -05:00
zone fix(core): ngNoopZone should have the same signature with ngZone (#32068) 2019-10-04 11:48:12 -07:00
BUILD.bazel test: setup circular dependency tests for all entry points (#34774) 2020-01-23 11:36:40 -08:00
application_init_spec.ts fix(ivy): Enable AoT tests to run on CI; disable failing tests (#26975) 2018-11-07 10:35:20 -08:00
application_module_spec.ts feat(common): allow default currency code to be configurable (#32584) 2020-01-13 09:57:06 -08:00
application_ref_integration_spec.ts fix(ivy): ensure that `window.ng` utilities are published when NgModules are used (#32725) 2019-09-17 13:32:06 -07:00
application_ref_spec.ts fix(ivy): ensure that `LOCALE_ID` is set after app initializers (#34830) 2020-01-17 16:23:49 -05:00
component_fixture_spec.ts test(ivy): update root causes for @angular/core TestBed failures (#27370) 2018-11-30 13:41:21 -08:00
dev_mode_spec.ts build(core): remove `main()` from specs (#21053) 2017-12-22 13:10:51 -08:00
directive_lifecycle_integration_spec.ts test(ivy): update root causes for @angular/core TestBed failures (#27419) 2018-12-03 08:19:56 -08:00
error_handler_spec.ts refactor(ivy): refactor more files in DI to prepare it for bazel packages (#28098) 2019-01-14 09:55:30 -08:00
event_emitter_spec.ts fix(core): fix proper propagation of subscriptions in EventEmitter (#22016) 2018-02-06 07:56:33 -08:00
fake_async_spec.ts feat: add a flag in bootstrap to enable coalesce event change detection to improve performance (#30533) 2019-11-05 18:58:25 +00:00
forward_ref_integration_spec.ts refactor(core): Migrate TestBed.get to TestBed.inject (#32382) 2019-09-09 19:10:54 -04:00
spies.ts refactor: Move `dom_adapter.ts` to `@angular/common` (#32154) 2019-08-29 21:51:56 -07:00
test_bed_async_spec.ts fix(ivy): stub TestBed.compileComponents implementation (#26506) 2018-10-17 13:08:14 -07:00
test_bed_spec.ts fix(ivy): TestBed not unwrapping imports array function when overriding provider (#34629) 2020-01-06 11:38:02 -08:00
testing_internal_spec.ts build: update to rules_typescript 0.25.1 (#28625) 2019-02-21 07:46:21 -08:00
util_spec.ts build: extract interface and util sub compilation from core (#28028) 2019-01-10 16:31:44 -08:00