@openui5/sap.ui.core 1.117.1 → 1.119.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1096) hide show
  1. package/.eslintrc.json +9 -0
  2. package/THIRDPARTY.txt +2 -2
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/Event.js +1 -1
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/i18n/LanguageTag.js +1 -1
  13. package/src/sap/base/i18n/Localization.js +58 -40
  14. package/src/sap/base/i18n/ResourceBundle.js +5 -0
  15. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  16. package/src/sap/base/util/UriParameters.js +26 -19
  17. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  18. package/src/sap/base/util/restricted/_castArray.js +1 -1
  19. package/src/sap/base/util/restricted/_compact.js +1 -1
  20. package/src/sap/base/util/restricted/_curry.js +1 -1
  21. package/src/sap/base/util/restricted/_debounce.js +1 -1
  22. package/src/sap/base/util/restricted/_difference.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  24. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_flatten.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  30. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  31. package/src/sap/base/util/restricted/_intersection.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  33. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  35. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  36. package/src/sap/base/util/restricted/_isNil.js +1 -1
  37. package/src/sap/base/util/restricted/_max.js +1 -1
  38. package/src/sap/base/util/restricted/_merge.js +1 -1
  39. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  40. package/src/sap/base/util/restricted/_min.js +1 -1
  41. package/src/sap/base/util/restricted/_omit.js +1 -1
  42. package/src/sap/base/util/restricted/_pick.js +1 -1
  43. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  44. package/src/sap/base/util/restricted/_throttle.js +1 -1
  45. package/src/sap/base/util/restricted/_toArray.js +1 -1
  46. package/src/sap/base/util/restricted/_union.js +1 -1
  47. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  48. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  49. package/src/sap/base/util/restricted/_uniq.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  51. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  52. package/src/sap/base/util/restricted/_without.js +1 -1
  53. package/src/sap/base/util/restricted/_xor.js +1 -1
  54. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  55. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  57. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  58. package/src/sap/ui/Device.js +3 -3
  59. package/src/sap/ui/Global.js +4 -4
  60. package/src/sap/ui/base/BindingInfo.js +25 -3
  61. package/src/sap/ui/base/BindingParser.js +2 -1
  62. package/src/sap/ui/base/Event.js +1 -1
  63. package/src/sap/ui/base/EventProvider.js +1 -1
  64. package/src/sap/ui/base/Interface.js +1 -1
  65. package/src/sap/ui/base/ManagedObject.js +8 -4
  66. package/src/sap/ui/base/ManagedObjectMetadata.js +4 -3
  67. package/src/sap/ui/base/Metadata.js +3 -3
  68. package/src/sap/ui/base/Object.js +1 -1
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/core/.library +9 -1
  71. package/src/sap/ui/core/AccessKeysEnablement.js +2 -2
  72. package/src/sap/ui/core/AnimationMode.js +1 -1
  73. package/src/sap/ui/core/BlockLayerUtils.js +1 -1
  74. package/src/sap/ui/core/BusyIndicator.js +2 -2
  75. package/src/sap/ui/core/Component.js +85 -61
  76. package/src/sap/ui/core/ComponentContainer.js +2 -2
  77. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  78. package/src/sap/ui/core/ComponentSupport.js +1 -1
  79. package/src/sap/ui/core/Configuration.js +15 -179
  80. package/src/sap/ui/core/Control.js +22 -2
  81. package/src/sap/ui/core/Core.js +223 -128
  82. package/src/sap/ui/core/CustomData.js +1 -1
  83. package/src/sap/ui/core/CustomStyleClassSupport.js +3 -3
  84. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  85. package/src/sap/ui/core/Element.js +40 -4
  86. package/src/sap/ui/core/ElementMetadata.js +1 -1
  87. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  88. package/src/sap/ui/core/EventBus.js +19 -2
  89. package/src/sap/ui/core/FocusHandler.js +3 -24
  90. package/src/sap/ui/core/Fragment.js +2 -2
  91. package/src/sap/ui/core/HTML.js +1 -1
  92. package/src/sap/ui/core/History.js +1 -1
  93. package/src/sap/ui/core/Icon.js +2 -2
  94. package/src/sap/ui/core/IndicationColorSupport.js +2 -2
  95. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  96. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  97. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  98. package/src/sap/ui/core/InvisibleText.js +4 -7
  99. package/src/sap/ui/core/Item.js +1 -1
  100. package/src/sap/ui/core/LabelEnablement.js +11 -4
  101. package/src/sap/ui/core/LayoutData.js +1 -1
  102. package/src/sap/ui/core/Lib.js +51 -55
  103. package/src/sap/ui/core/ListItem.js +1 -1
  104. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  105. package/src/sap/ui/core/Locale.js +1 -1
  106. package/src/sap/ui/core/LocaleData.js +2 -2
  107. package/src/sap/ui/core/Manifest.js +1 -1
  108. package/src/sap/ui/core/Message.js +4 -4
  109. package/src/sap/ui/core/Messaging.js +471 -0
  110. package/src/sap/ui/core/Popup.js +3 -3
  111. package/src/sap/ui/core/RenderManager.js +15 -10
  112. package/src/sap/ui/core/Renderer.js +1 -1
  113. package/src/sap/ui/core/Rendering.js +4 -2
  114. package/src/sap/ui/core/ResizeHandler.js +15 -23
  115. package/src/sap/ui/core/ScrollBar.js +1 -1
  116. package/src/sap/ui/core/SeparatorItem.js +1 -1
  117. package/src/sap/ui/core/ShortcutHint.js +1 -1
  118. package/src/sap/ui/core/ShortcutHintsMixin.js +5 -5
  119. package/src/sap/ui/core/StashedControlSupport.js +4 -4
  120. package/src/sap/ui/core/StaticArea.js +66 -74
  121. package/src/sap/ui/core/Theming.js +99 -39
  122. package/src/sap/ui/core/Title.js +1 -1
  123. package/src/sap/ui/core/TooltipBase.js +1 -1
  124. package/src/sap/ui/core/UIArea.js +93 -24
  125. package/src/sap/ui/core/UIComponent.js +2 -2
  126. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  127. package/src/sap/ui/core/ValueStateSupport.js +2 -2
  128. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  129. package/src/sap/ui/core/XMLComposite.js +4 -2
  130. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  131. package/src/sap/ui/core/_IconRegistry.js +3 -1
  132. package/src/sap/ui/core/boot.js +9 -0
  133. package/src/sap/ui/core/cache/CacheManager.js +22 -16
  134. package/src/sap/ui/core/cache/LRUPersistentCache.js +13 -7
  135. package/src/sap/ui/core/date/UI5Date.js +1 -1
  136. package/src/sap/ui/core/delegate/ItemNavigation.js +3 -3
  137. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  138. package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
  139. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  140. package/src/sap/ui/core/dnd/DragDropInfo.js +6 -6
  141. package/src/sap/ui/core/dnd/DragInfo.js +4 -4
  142. package/src/sap/ui/core/dnd/DropInfo.js +6 -6
  143. package/src/sap/ui/core/format/DateFormat.js +4 -0
  144. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  145. package/src/sap/ui/core/getCompatibilityVersion.js +64 -0
  146. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  147. package/src/sap/ui/core/library.js +26 -50
  148. package/src/sap/ui/core/message/ControlMessageProcessor.js +4 -4
  149. package/src/sap/ui/core/message/Message.js +14 -13
  150. package/src/sap/ui/core/message/MessageManager.js +36 -459
  151. package/src/sap/ui/core/message/MessageMixin.js +5 -5
  152. package/src/sap/ui/core/message/MessageParser.js +1 -1
  153. package/src/sap/ui/core/message/MessageProcessor.js +9 -9
  154. package/src/sap/ui/core/message/MessageType.js +53 -0
  155. package/src/sap/ui/core/messagebundle.properties +3 -0
  156. package/src/sap/ui/core/messagebundle_ar.properties +3 -3
  157. package/src/sap/ui/core/messagebundle_bg.properties +4 -4
  158. package/src/sap/ui/core/messagebundle_ca.properties +2 -2
  159. package/src/sap/ui/core/messagebundle_cs.properties +5 -5
  160. package/src/sap/ui/core/messagebundle_cy.properties +2 -2
  161. package/src/sap/ui/core/messagebundle_da.properties +4 -4
  162. package/src/sap/ui/core/messagebundle_de.properties +3 -3
  163. package/src/sap/ui/core/messagebundle_el.properties +11 -11
  164. package/src/sap/ui/core/messagebundle_en.properties +4 -4
  165. package/src/sap/ui/core/messagebundle_es.properties +18 -18
  166. package/src/sap/ui/core/messagebundle_es_MX.properties +1 -1
  167. package/src/sap/ui/core/messagebundle_et.properties +1 -1
  168. package/src/sap/ui/core/messagebundle_fi.properties +2 -2
  169. package/src/sap/ui/core/messagebundle_fr.properties +22 -22
  170. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -1
  171. package/src/sap/ui/core/messagebundle_hi.properties +3 -3
  172. package/src/sap/ui/core/messagebundle_hr.properties +7 -7
  173. package/src/sap/ui/core/messagebundle_hu.properties +11 -11
  174. package/src/sap/ui/core/messagebundle_id.properties +6 -6
  175. package/src/sap/ui/core/messagebundle_it.properties +58 -58
  176. package/src/sap/ui/core/messagebundle_iw.properties +6 -6
  177. package/src/sap/ui/core/messagebundle_ja.properties +1 -1
  178. package/src/sap/ui/core/messagebundle_kk.properties +2 -2
  179. package/src/sap/ui/core/messagebundle_ko.properties +7 -7
  180. package/src/sap/ui/core/messagebundle_lt.properties +1 -1
  181. package/src/sap/ui/core/messagebundle_lv.properties +6 -6
  182. package/src/sap/ui/core/messagebundle_ms.properties +6 -6
  183. package/src/sap/ui/core/messagebundle_nl.properties +13 -13
  184. package/src/sap/ui/core/messagebundle_no.properties +9 -9
  185. package/src/sap/ui/core/messagebundle_pl.properties +3 -3
  186. package/src/sap/ui/core/messagebundle_pt.properties +9 -9
  187. package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -1
  188. package/src/sap/ui/core/messagebundle_ro.properties +3 -3
  189. package/src/sap/ui/core/messagebundle_ru.properties +8 -8
  190. package/src/sap/ui/core/messagebundle_sh.properties +1 -1
  191. package/src/sap/ui/core/messagebundle_sk.properties +3 -3
  192. package/src/sap/ui/core/messagebundle_sl.properties +10 -10
  193. package/src/sap/ui/core/messagebundle_sv.properties +1 -1
  194. package/src/sap/ui/core/messagebundle_th.properties +19 -19
  195. package/src/sap/ui/core/messagebundle_tr.properties +6 -6
  196. package/src/sap/ui/core/messagebundle_uk.properties +9 -9
  197. package/src/sap/ui/core/messagebundle_vi.properties +2 -2
  198. package/src/sap/ui/core/messagebundle_zh_CN.properties +3 -3
  199. package/src/sap/ui/core/messagebundle_zh_TW.properties +25 -25
  200. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  201. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  202. package/src/sap/ui/core/mvc/JSView.js +1 -1
  203. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  204. package/src/sap/ui/core/mvc/View.js +3 -3
  205. package/src/sap/ui/core/mvc/XMLView.js +9 -2
  206. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  207. package/src/sap/ui/core/plugin/LessSupport.js +3 -3
  208. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  209. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  210. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  211. package/src/sap/ui/core/routing/Router.js +7 -1
  212. package/src/sap/ui/core/routing/async/Route.js +1 -0
  213. package/src/sap/ui/core/routing/async/Target.js +5 -4
  214. package/src/sap/ui/core/routing/sync/Route.js +1 -0
  215. package/src/sap/ui/core/routing/sync/Target.js +3 -3
  216. package/src/sap/ui/core/rules/App.support.js +30 -1
  217. package/src/sap/ui/core/rules/Config.support.js +4 -0
  218. package/src/sap/ui/core/rules/CoreHelper.support.js +3 -3
  219. package/src/sap/ui/core/rules/Theming.support.js +4 -0
  220. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  221. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  222. package/src/sap/ui/core/service/Service.js +1 -1
  223. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  224. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  225. package/src/sap/ui/core/support/Plugin.js +25 -5
  226. package/src/sap/ui/core/support/Support.js +38 -6
  227. package/src/sap/ui/core/support/ToolsAPI.js +14 -20
  228. package/src/sap/ui/core/support/controls/InteractionTree.js +0 -4
  229. package/src/sap/ui/core/support/plugins/Breakpoint.js +4 -6
  230. package/src/sap/ui/core/support/plugins/ControlTree.js +40 -24
  231. package/src/sap/ui/core/support/plugins/Debugging.js +10 -9
  232. package/src/sap/ui/core/support/plugins/Interaction.js +12 -13
  233. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -3
  234. package/src/sap/ui/core/support/plugins/Performance.js +1 -3
  235. package/src/sap/ui/core/support/plugins/Selector.js +2 -2
  236. package/src/sap/ui/core/support/plugins/TechInfo.js +32 -42
  237. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  238. package/src/sap/ui/core/support/plugins/ViewInfo.js +32 -16
  239. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +8 -6
  240. package/src/sap/ui/core/support/usage/EventBroadcaster.js +1 -1
  241. package/src/sap/ui/core/themes/base/base.less +275 -269
  242. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  243. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  244. package/src/sap/ui/core/themes/base/global.less +8 -8
  245. package/src/sap/ui/core/theming/Parameters.js +4 -5
  246. package/src/sap/ui/core/theming/ThemeHelper.js +100 -1
  247. package/src/sap/ui/core/theming/ThemeManager.js +32 -31
  248. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  249. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  250. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  251. package/src/sap/ui/core/tmpl/Template.js +1 -1
  252. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -2
  253. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  254. package/src/sap/ui/core/util/Export.js +1 -1
  255. package/src/sap/ui/core/util/ExportCell.js +1 -1
  256. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  257. package/src/sap/ui/core/util/ExportRow.js +1 -1
  258. package/src/sap/ui/core/util/ExportType.js +1 -1
  259. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  260. package/src/sap/ui/core/util/File.js +1 -1
  261. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  262. package/src/sap/ui/core/util/MockServer.js +1 -1
  263. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  264. package/src/sap/ui/core/util/XMLPreprocessor.js +53 -29
  265. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +27 -4
  266. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +55 -30
  267. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +54 -48
  268. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +2 -2
  269. package/src/sap/ui/core/util/serializer/Serializer.js +3 -3
  270. package/src/sap/ui/core/util/serializer/ViewSerializer.js +27 -10
  271. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +2 -2
  272. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  273. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  274. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  275. package/src/sap/ui/core/webc/WebComponent.js +659 -0
  276. package/src/sap/ui/core/webc/WebComponentMetadata.js +253 -0
  277. package/src/sap/ui/core/webc/WebComponentRenderer.js +323 -0
  278. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  279. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  280. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  281. package/src/sap/ui/debug/ControlTree.js +8 -7
  282. package/src/sap/ui/debug/DebugEnv.js +18 -9
  283. package/src/sap/ui/debug/PropertyList.js +3 -3
  284. package/src/sap/ui/dom/jquery/control.js +3 -4
  285. package/src/sap/ui/events/F6Navigation.js +2 -1
  286. package/src/sap/ui/model/Binding.js +6 -6
  287. package/src/sap/ui/model/ClientModel.js +33 -1
  288. package/src/sap/ui/model/ClientPropertyBinding.js +20 -4
  289. package/src/sap/ui/model/CompositeDataState.js +1 -1
  290. package/src/sap/ui/model/CompositeType.js +1 -1
  291. package/src/sap/ui/model/Context.js +1 -1
  292. package/src/sap/ui/model/DataState.js +1 -1
  293. package/src/sap/ui/model/Filter.js +1 -1
  294. package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
  295. package/src/sap/ui/model/MetaModel.js +1 -1
  296. package/src/sap/ui/model/Model.js +4 -4
  297. package/src/sap/ui/model/SelectionModel.js +1 -1
  298. package/src/sap/ui/model/SimpleType.js +1 -1
  299. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  300. package/src/sap/ui/model/Type.js +1 -1
  301. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +27 -13
  302. package/src/sap/ui/model/json/JSONModel.js +2 -3
  303. package/src/sap/ui/model/message/MessageModel.js +3 -7
  304. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  305. package/src/sap/ui/model/odata/ODataListBinding.js +24 -0
  306. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  307. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  308. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  309. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  310. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +6 -0
  311. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  312. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  313. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  314. package/src/sap/ui/model/odata/type/Date.js +1 -1
  315. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  316. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  317. package/src/sap/ui/model/odata/type/DateTimeOffset.js +7 -2
  318. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -2
  319. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  320. package/src/sap/ui/model/odata/type/Double.js +1 -1
  321. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  322. package/src/sap/ui/model/odata/type/Int.js +1 -1
  323. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  324. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  325. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  326. package/src/sap/ui/model/odata/type/ODataType.js +2 -3
  327. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  328. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  329. package/src/sap/ui/model/odata/type/Single.js +1 -1
  330. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  331. package/src/sap/ui/model/odata/type/String.js +1 -1
  332. package/src/sap/ui/model/odata/type/Time.js +1 -1
  333. package/src/sap/ui/model/odata/type/TimeOfDay.js +6 -2
  334. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  335. package/src/sap/ui/model/odata/v2/Context.js +13 -5
  336. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  337. package/src/sap/ui/model/odata/v2/ODataListBinding.js +108 -59
  338. package/src/sap/ui/model/odata/v2/ODataModel.js +25 -20
  339. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +33 -6
  340. package/src/sap/ui/model/odata/v4/Context.js +83 -23
  341. package/src/sap/ui/model/odata/v4/ODataBinding.js +13 -4
  342. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +162 -33
  343. package/src/sap/ui/model/odata/v4/ODataListBinding.js +151 -48
  344. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  345. package/src/sap/ui/model/odata/v4/ODataModel.js +21 -14
  346. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +4 -2
  347. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +12 -11
  348. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +234 -31
  349. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +3 -5
  350. package/src/sap/ui/model/odata/v4/lib/_Cache.js +180 -76
  351. package/src/sap/ui/model/odata/v4/lib/_Helper.js +36 -24
  352. package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -0
  353. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +17 -7
  354. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +1 -1
  355. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +28 -35
  356. package/src/sap/ui/model/odata/v4/ts.js +44 -0
  357. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  358. package/src/sap/ui/model/type/Boolean.js +1 -1
  359. package/src/sap/ui/model/type/Currency.js +1 -1
  360. package/src/sap/ui/model/type/Date.js +1 -2
  361. package/src/sap/ui/model/type/DateInterval.js +5 -5
  362. package/src/sap/ui/model/type/DateTime.js +1 -1
  363. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  364. package/src/sap/ui/model/type/FileSize.js +1 -1
  365. package/src/sap/ui/model/type/Float.js +1 -1
  366. package/src/sap/ui/model/type/Integer.js +1 -1
  367. package/src/sap/ui/model/type/String.js +1 -1
  368. package/src/sap/ui/model/type/Time.js +1 -1
  369. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  370. package/src/sap/ui/model/type/Unit.js +1 -1
  371. package/src/sap/ui/model/xml/XMLModel.js +2 -2
  372. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -2
  373. package/src/sap/ui/performance/BeaconRequest.js +8 -10
  374. package/src/sap/ui/performance/trace/Interaction.js +11 -2
  375. package/src/sap/ui/qunit/qunit-coverage-istanbul.js +60 -6
  376. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  377. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +10 -11
  378. package/src/sap/ui/qunit/utils/nextUIUpdate.js +51 -0
  379. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +16 -14
  380. package/src/sap/ui/test/BlanketReporterUI.view.xml +5 -2
  381. package/src/sap/ui/test/ModuleTracking.js +326 -0
  382. package/src/sap/ui/test/OpaPlugin.js +3 -3
  383. package/src/sap/ui/test/TestUtils.js +8 -7
  384. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +3 -2
  385. package/src/sap/ui/test/generic/TestBase.js +1 -1
  386. package/src/sap/ui/test/matchers/Descendant.js +1 -1
  387. package/src/sap/ui/test/matchers/Sibling.js +1 -1
  388. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +2 -0
  389. package/src/sap/ui/test/selectors/_DropdownItem.js +1 -0
  390. package/src/sap/ui/test/selectors/_LabelFor.js +3 -2
  391. package/src/sap/ui/test/selectors/_TableRowItem.js +1 -0
  392. package/src/sap/ui/test/starter/_setupAndStart.js +35 -11
  393. package/src/sap/ui/util/Storage.js +1 -1
  394. package/src/ui5loader-autoconfig.js +14 -10
  395. package/test/sap/ui/core/ComponentCleanup.html +228 -225
  396. package/test/sap/ui/core/ComponentConfig.html +1 -1
  397. package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +1 -1
  398. package/test/sap/ui/core/ComponentExtensibility_legacyAPIs.html +1 -1
  399. package/test/sap/ui/core/ComponentSimple.html +1 -1
  400. package/test/sap/ui/core/ComponentSimpleModel.html +1 -1
  401. package/test/sap/ui/core/ComponentSupport.html +1 -1
  402. package/test/sap/ui/core/DateFormat.js +3 -3
  403. package/test/sap/ui/core/EventBroadcaster.html +62 -62
  404. package/test/sap/ui/core/Formats.html +4 -2
  405. package/test/sap/ui/core/GenericEventBinding.html +53 -52
  406. package/test/sap/ui/core/HTMLControl.html +94 -93
  407. package/test/sap/ui/core/HyphenationPlayground.html +10 -9
  408. package/test/sap/ui/core/ListFormat.js +3 -3
  409. package/test/sap/ui/core/NumberFormat.js +3 -3
  410. package/test/sap/ui/core/ODataAnnotationsPerformance.html +28 -28
  411. package/test/sap/ui/core/ODataV2CanonicalRequests.html +3 -2
  412. package/test/sap/ui/core/ODataV2Messages.html +4 -3
  413. package/test/sap/ui/core/PopupWithUserSelection.html +1 -1
  414. package/test/sap/ui/core/Strings.js +3 -3
  415. package/test/sap/ui/core/Strings.view.xml +5 -1
  416. package/test/sap/ui/core/ThemeParameters.html +31 -30
  417. package/test/sap/ui/core/ValidateURL.html +143 -143
  418. package/test/sap/ui/core/demokit/sample/BusyIndicator/manifest.json +2 -1
  419. package/test/sap/ui/core/demokit/sample/Commands/Commands.html +1 -1
  420. package/test/sap/ui/core/demokit/sample/Commands/manifest.json +2 -2
  421. package/test/sap/ui/core/demokit/sample/ControlBusyIndicator/manifest.json +2 -1
  422. package/test/sap/ui/core/demokit/sample/ControllerExtension/manifest.json +1 -0
  423. package/test/sap/ui/core/demokit/sample/FieldGroup/manifest.json +1 -0
  424. package/test/sap/ui/core/demokit/sample/Html/manifest.json +1 -0
  425. package/test/sap/ui/core/demokit/sample/Html/preserveDOM/manifest.json +1 -0
  426. package/test/sap/ui/core/demokit/sample/Html/static/manifest.json +1 -0
  427. package/test/sap/ui/core/demokit/sample/HyphenationAPI/C.controller.js +3 -3
  428. package/test/sap/ui/core/demokit/sample/Icon/manifest.json +2 -1
  429. package/test/sap/ui/core/demokit/sample/InvisibleMessage/InvisibleMessage.controller.js +4 -4
  430. package/test/sap/ui/core/demokit/sample/InvisibleMessage/manifest.json +2 -1
  431. package/test/sap/ui/core/demokit/sample/InvisibleText/manifest.json +2 -1
  432. package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/Controller.controller.js +10 -10
  433. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/Controller.controller.js +7 -7
  434. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/manifest.json +1 -0
  435. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/Component.js +3 -2
  436. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +3 -2
  437. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/index.html +7 -8
  438. package/test/sap/ui/core/demokit/sample/OpaAction/manifest.json +1 -0
  439. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/OpaAutoWaitParams.js +1 -1
  440. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/applicationUnderTest/manifest.json +2 -2
  441. package/test/sap/ui/core/demokit/sample/OpaAutoWaitParams/manifest.json +2 -1
  442. package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/applicationUnderTest/manifest.json +2 -2
  443. package/test/sap/ui/core/demokit/sample/OpaBusyIndicator/manifest.json +2 -1
  444. package/test/sap/ui/core/demokit/sample/OpaById/applicationUnderTest/manifest.json +2 -2
  445. package/test/sap/ui/core/demokit/sample/OpaById/manifest.json +2 -1
  446. package/test/sap/ui/core/demokit/sample/OpaDynamicWait/applicationUnderTest/manifest.json +2 -2
  447. package/test/sap/ui/core/demokit/sample/OpaDynamicWait/manifest.json +2 -1
  448. package/test/sap/ui/core/demokit/sample/OpaGetStarted/applicationUnderTest/index.html +9 -6
  449. package/test/sap/ui/core/demokit/sample/OpaGetStarted/manifest.json +2 -1
  450. package/test/sap/ui/core/demokit/sample/OpaMatchers/applicationUnderTest/manifest.json +2 -2
  451. package/test/sap/ui/core/demokit/sample/OpaMatchers/manifest.json +2 -1
  452. package/test/sap/ui/core/demokit/sample/OpaPageObject/applicationUnderTest/manifest.json +2 -2
  453. package/test/sap/ui/core/demokit/sample/OpaPageObject/manifest.json +2 -1
  454. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/applicationUnderTest/manifest.json +2 -2
  455. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/manifest.json +2 -1
  456. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyUIComponent/applicationUnderTest/manifest.json +2 -2
  457. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyUIComponent/manifest.json +2 -1
  458. package/test/sap/ui/core/demokit/sample/OpaStaticAreaControls/applicationUnderTest/manifest.json +2 -2
  459. package/test/sap/ui/core/demokit/sample/OpaStaticAreaControls/manifest.json +2 -1
  460. package/test/sap/ui/core/demokit/sample/OpaTestLibrary/applicationUnderTest/manifest.json +2 -2
  461. package/test/sap/ui/core/demokit/sample/OpaTestLibrary/manifest.json +2 -1
  462. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyAppInAFrameWithURLParameters/applicationUnderTest/manifest.json +2 -2
  463. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyAppInAFrameWithURLParameters/manifest.json +2 -1
  464. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyUIComponentWithURLParameters/applicationUnderTest/manifest.json +2 -2
  465. package/test/sap/ui/core/demokit/sample/OpaURLParameters/iStartMyUIComponentWithURLParameters/manifest.json +2 -1
  466. package/test/sap/ui/core/demokit/sample/OpaWithSupportAssistant/applicationUnderTest/index.html +13 -10
  467. package/test/sap/ui/core/demokit/sample/OpaWithSupportAssistant/manifest.json +2 -1
  468. package/test/sap/ui/core/demokit/sample/PatternMatching/Patterns.html +11 -8
  469. package/test/sap/ui/core/demokit/sample/PatternMatching/manifest.json +2 -1
  470. package/test/sap/ui/core/demokit/sample/PatternMatching/patternApp/manifest.json +2 -2
  471. package/test/sap/ui/core/demokit/sample/RoutingFullscreen/RoutingFullscreen.html +11 -8
  472. package/test/sap/ui/core/demokit/sample/RoutingFullscreen/manifest.json +2 -1
  473. package/test/sap/ui/core/demokit/sample/RoutingMasterDetail/RoutingMasterDetail.html +11 -8
  474. package/test/sap/ui/core/demokit/sample/RoutingMasterDetail/manifest.json +2 -1
  475. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/RoutingNestedComponent.html +1 -1
  476. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/manifest.json +2 -2
  477. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/categories/manifest.json +2 -1
  478. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/products/manifest.json +2 -1
  479. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/suppliers/manifest.json +2 -1
  480. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.html +1 -1
  481. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.js +5 -4
  482. package/test/sap/ui/core/demokit/sample/TargetsStandalone/TargetsStandalone.html +11 -8
  483. package/test/sap/ui/core/demokit/sample/TargetsStandalone/manifest.json +2 -1
  484. package/test/sap/ui/core/demokit/sample/ThemeCustomClasses/ThemeCustomClasses.controller.js +3 -3
  485. package/test/sap/ui/core/demokit/sample/ThemeCustomClasses/manifest.json +1 -0
  486. package/test/sap/ui/core/demokit/sample/TypeCurrency/manifest.json +1 -0
  487. package/test/sap/ui/core/demokit/sample/TypeDateAsDate/manifest.json +1 -0
  488. package/test/sap/ui/core/demokit/sample/TypeDateAsString/manifest.json +1 -0
  489. package/test/sap/ui/core/demokit/sample/TypeDateTime/manifest.json +1 -0
  490. package/test/sap/ui/core/demokit/sample/TypeFileSize/manifest.json +1 -0
  491. package/test/sap/ui/core/demokit/sample/TypeFloat/manifest.json +1 -0
  492. package/test/sap/ui/core/demokit/sample/TypeInteger/manifest.json +1 -0
  493. package/test/sap/ui/core/demokit/sample/TypeTimeAsTime/manifest.json +1 -0
  494. package/test/sap/ui/core/demokit/sample/View/async/manifest.json +2 -1
  495. package/test/sap/ui/core/demokit/sample/View/preprocessor/manifest.json +2 -1
  496. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.js +9 -8
  497. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/manifest.json +2 -1
  498. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +12 -11
  499. package/test/sap/ui/core/demokit/sample/XMLComposite/02/manifest.json +1 -0
  500. package/test/sap/ui/core/demokit/sample/common/Controller.js +8 -8
  501. package/test/sap/ui/core/demokit/sample/common/Helper.js +19 -2
  502. package/test/sap/ui/core/demokit/sample/common/init.js +25 -21
  503. package/test/sap/ui/core/demokit/sample/common/pages/Any.js +3 -0
  504. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/WebsiteCode.js +8 -7
  505. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/applicationUnderTest/manifest.json +1 -0
  506. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithPageObjects/manifest.json +2 -1
  507. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +2 -1
  508. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/webapp/manifest.json +2 -2
  509. package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +2 -1
  510. package/test/sap/ui/core/demokit/sample/matcher/Descendant/webapp/manifest.json +2 -2
  511. package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +2 -1
  512. package/test/sap/ui/core/demokit/sample/matcher/I18NText/webapp/manifest.json +2 -2
  513. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +2 -1
  514. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/webapp/manifest.json +2 -2
  515. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/manifest.json +1 -0
  516. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/manifest.json +1 -0
  517. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/manifest.json +1 -0
  518. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +6 -2
  519. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +7 -3
  520. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +2 -2
  521. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +7 -4
  522. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +9 -8
  523. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/expandPageCollapse.js +1 -1
  524. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/tests/filter.js +1 -1
  525. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +3 -2
  526. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +13 -11
  527. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/ListReport.controller.js +3 -2
  528. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +13 -14
  529. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +14 -11
  530. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +4 -4
  531. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +6 -4
  532. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +6 -2
  533. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +3 -3
  534. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +19 -25
  535. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +6 -2
  536. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +19 -0
  537. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +93 -0
  538. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +89 -0
  539. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/SandboxModel.js +10 -0
  540. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +396 -0
  541. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +423 -0
  542. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +70 -0
  543. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +11 -10
  544. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +10 -9
  545. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +11 -10
  546. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +8 -7
  547. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +8 -10
  548. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +5 -2
  549. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +16 -13
  550. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.controller.js +3 -2
  551. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +12 -11
  552. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/MIT.RecursiveHierarchy maintenance.html +408 -0
  553. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.js +26 -8
  554. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +78 -13
  555. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +48 -9
  556. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +379 -287
  557. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +38 -5
  558. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/createEdit.js +128 -0
  559. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/pageExpandCollapse.js +24 -23
  560. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +11 -10
  561. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +10 -9
  562. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +3 -2
  563. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +15 -14
  564. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +9 -8
  565. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/ChangeContext.js +1 -1
  566. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +1 -1
  567. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateMultiple.js +1 -1
  568. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateRelative.js +1 -1
  569. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/MessageHandling.js +1 -1
  570. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/TypeDeterminationAndDelete.js +8 -9
  571. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/WriteNonDeferredGroup.js +1 -1
  572. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/additionalTargets.js +1 -1
  573. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +9 -8
  574. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/tests/AdaptSalesOrdersTable.js +1 -1
  575. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +10 -9
  576. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.view.xml +5 -2
  577. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +10 -9
  578. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -2
  579. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +11 -10
  580. package/test/sap/ui/core/demokit/tutorial/databinding/01/package.json +2 -5
  581. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +8 -0
  582. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/index.js +7 -3
  583. package/test/sap/ui/core/demokit/tutorial/databinding/02/package.json +2 -5
  584. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +8 -0
  585. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/index.js +4 -3
  586. package/test/sap/ui/core/demokit/tutorial/databinding/03/package.json +2 -5
  587. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +8 -0
  588. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/index.js +4 -3
  589. package/test/sap/ui/core/demokit/tutorial/databinding/04/package.json +2 -5
  590. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +8 -0
  591. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/index.js +4 -3
  592. package/test/sap/ui/core/demokit/tutorial/databinding/05/package.json +2 -5
  593. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +8 -0
  594. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/index.js +4 -3
  595. package/test/sap/ui/core/demokit/tutorial/databinding/06/package.json +2 -5
  596. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +8 -0
  597. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/index.js +4 -3
  598. package/test/sap/ui/core/demokit/tutorial/databinding/07/package.json +2 -5
  599. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +8 -0
  600. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/index.js +4 -3
  601. package/test/sap/ui/core/demokit/tutorial/databinding/08/package.json +2 -5
  602. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +8 -0
  603. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/index.js +4 -3
  604. package/test/sap/ui/core/demokit/tutorial/databinding/09/package.json +2 -5
  605. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +8 -0
  606. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/index.js +4 -3
  607. package/test/sap/ui/core/demokit/tutorial/databinding/10/package.json +2 -5
  608. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +8 -0
  609. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/index.js +4 -3
  610. package/test/sap/ui/core/demokit/tutorial/databinding/11/package.json +2 -5
  611. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +8 -0
  612. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/index.js +6 -4
  613. package/test/sap/ui/core/demokit/tutorial/databinding/12/package.json +2 -5
  614. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +8 -0
  615. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/index.js +6 -4
  616. package/test/sap/ui/core/demokit/tutorial/databinding/13/package.json +2 -5
  617. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +8 -0
  618. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/index.js +6 -4
  619. package/test/sap/ui/core/demokit/tutorial/databinding/14/package.json +2 -5
  620. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +8 -0
  621. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/index.js +6 -4
  622. package/test/sap/ui/core/demokit/tutorial/databinding/15/package.json +2 -5
  623. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +8 -0
  624. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/index.js +6 -4
  625. package/test/sap/ui/core/demokit/tutorial/mockserver/01/package.json +2 -5
  626. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +8 -0
  627. package/test/sap/ui/core/demokit/tutorial/mockserver/01/webapp/manifest.json +1 -1
  628. package/test/sap/ui/core/demokit/tutorial/mockserver/02/package.json +2 -5
  629. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +8 -0
  630. package/test/sap/ui/core/demokit/tutorial/mockserver/02/webapp/manifest.json +1 -1
  631. package/test/sap/ui/core/demokit/tutorial/mockserver/03/package.json +2 -5
  632. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +8 -0
  633. package/test/sap/ui/core/demokit/tutorial/mockserver/03/webapp/manifest.json +1 -1
  634. package/test/sap/ui/core/demokit/tutorial/mockserver/04/package.json +2 -5
  635. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +8 -0
  636. package/test/sap/ui/core/demokit/tutorial/mockserver/04/webapp/manifest.json +1 -1
  637. package/test/sap/ui/core/demokit/tutorial/navigation/01/package.json +2 -4
  638. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +7 -0
  639. package/test/sap/ui/core/demokit/tutorial/navigation/01/webapp/index.html +1 -1
  640. package/test/sap/ui/core/demokit/tutorial/navigation/02/package.json +2 -4
  641. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +7 -0
  642. package/test/sap/ui/core/demokit/tutorial/navigation/02/webapp/index.html +1 -1
  643. package/test/sap/ui/core/demokit/tutorial/navigation/03/package.json +2 -4
  644. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +7 -0
  645. package/test/sap/ui/core/demokit/tutorial/navigation/03/webapp/index.html +1 -1
  646. package/test/sap/ui/core/demokit/tutorial/navigation/04/package.json +2 -4
  647. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +7 -0
  648. package/test/sap/ui/core/demokit/tutorial/navigation/04/webapp/index.html +1 -1
  649. package/test/sap/ui/core/demokit/tutorial/navigation/05/package.json +2 -4
  650. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +7 -0
  651. package/test/sap/ui/core/demokit/tutorial/navigation/05/webapp/index.html +1 -1
  652. package/test/sap/ui/core/demokit/tutorial/navigation/06/package.json +2 -4
  653. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +7 -0
  654. package/test/sap/ui/core/demokit/tutorial/navigation/06/webapp/index.html +1 -1
  655. package/test/sap/ui/core/demokit/tutorial/navigation/07/package.json +2 -4
  656. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +7 -0
  657. package/test/sap/ui/core/demokit/tutorial/navigation/07/webapp/index.html +1 -1
  658. package/test/sap/ui/core/demokit/tutorial/navigation/08/package.json +2 -4
  659. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +7 -0
  660. package/test/sap/ui/core/demokit/tutorial/navigation/08/webapp/index.html +1 -1
  661. package/test/sap/ui/core/demokit/tutorial/navigation/09/package.json +2 -4
  662. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +7 -0
  663. package/test/sap/ui/core/demokit/tutorial/navigation/09/webapp/index.html +1 -1
  664. package/test/sap/ui/core/demokit/tutorial/navigation/10/package.json +2 -4
  665. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +7 -0
  666. package/test/sap/ui/core/demokit/tutorial/navigation/10/webapp/index.html +1 -1
  667. package/test/sap/ui/core/demokit/tutorial/navigation/11/package.json +2 -4
  668. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +7 -0
  669. package/test/sap/ui/core/demokit/tutorial/navigation/11/webapp/index.html +1 -1
  670. package/test/sap/ui/core/demokit/tutorial/navigation/12/package.json +2 -4
  671. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +7 -0
  672. package/test/sap/ui/core/demokit/tutorial/navigation/12/webapp/index.html +1 -1
  673. package/test/sap/ui/core/demokit/tutorial/navigation/13/package.json +2 -4
  674. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +7 -0
  675. package/test/sap/ui/core/demokit/tutorial/navigation/13/webapp/index.html +1 -1
  676. package/test/sap/ui/core/demokit/tutorial/navigation/14/package.json +2 -4
  677. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +7 -0
  678. package/test/sap/ui/core/demokit/tutorial/navigation/14/webapp/index.html +1 -1
  679. package/test/sap/ui/core/demokit/tutorial/navigation/15/package.json +2 -4
  680. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +7 -0
  681. package/test/sap/ui/core/demokit/tutorial/navigation/15/webapp/index.html +1 -1
  682. package/test/sap/ui/core/demokit/tutorial/navigation/16/package.json +2 -4
  683. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +7 -0
  684. package/test/sap/ui/core/demokit/tutorial/navigation/16/webapp/index.html +1 -1
  685. package/test/sap/ui/core/demokit/tutorial/navigation/17/package.json +4 -6
  686. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +8 -1
  687. package/test/sap/ui/core/demokit/tutorial/navigation/17/webapp/index.html +1 -1
  688. package/test/sap/ui/core/demokit/tutorial/navigation/index.html +2 -2
  689. package/test/sap/ui/core/demokit/tutorial/odatav4/01/package.json +2 -6
  690. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +9 -0
  691. package/test/sap/ui/core/demokit/tutorial/odatav4/02/package.json +2 -6
  692. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +9 -0
  693. package/test/sap/ui/core/demokit/tutorial/odatav4/03/package.json +2 -6
  694. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +9 -0
  695. package/test/sap/ui/core/demokit/tutorial/odatav4/04/package.json +2 -6
  696. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +9 -0
  697. package/test/sap/ui/core/demokit/tutorial/odatav4/05/package.json +2 -6
  698. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +9 -0
  699. package/test/sap/ui/core/demokit/tutorial/odatav4/06/package.json +2 -6
  700. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +9 -0
  701. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +5 -5
  702. package/test/sap/ui/core/demokit/tutorial/odatav4/07/package.json +2 -6
  703. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +9 -0
  704. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +7 -7
  705. package/test/sap/ui/core/demokit/tutorial/odatav4/08/package.json +2 -6
  706. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +9 -0
  707. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +7 -7
  708. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.js +5 -5
  709. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/pages/Tutorial.js +1 -1
  710. package/test/sap/ui/core/demokit/tutorial/odatav4/09/package.json +2 -6
  711. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +9 -0
  712. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +7 -7
  713. package/test/sap/ui/core/demokit/tutorial/odatav4/10/package.json +2 -6
  714. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +9 -0
  715. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +7 -7
  716. package/test/sap/ui/core/demokit/tutorial/odatav4/11/package.json +2 -6
  717. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +9 -0
  718. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +7 -7
  719. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.js +5 -5
  720. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/pages/Tutorial.js +1 -1
  721. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/package.json +2 -5
  722. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +8 -0
  723. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/webapp/manifest.json +1 -1
  724. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/webapp/test/integration/opaTests.qunit.js +6 -6
  725. package/test/sap/ui/core/frameoptions/createcontent.js +7 -6
  726. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -1
  727. package/test/sap/ui/core/internal/samples/composite/xmlcomposite/exStringAndFloat/Test.controller.js +3 -2
  728. package/test/sap/ui/core/internal/samples/composite/xmlcomposite/exTableWrapperOuterBinding/Test.controller.js +3 -2
  729. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -1
  730. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.js +8 -8
  731. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -1
  732. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.html +1 -1
  733. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.js +7 -7
  734. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -1
  735. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +3 -2
  736. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/MIT.SalesOrders(V2).ODLB.create.html +2 -0
  737. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +4 -4
  738. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +6 -3
  739. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.html +1 -1
  740. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.js +9 -6
  741. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +3 -0
  742. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/data/ODLB.create/TC3/SalesOrderSet_desc_4-1.json +16 -0
  743. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/index.html +1 -1
  744. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/tests/ODataListBinding.create/TC3_SalesOrders_InlineCreationRow.js +9 -0
  745. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +3 -2
  746. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +3 -3
  747. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +1 -1
  748. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -1
  749. package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +9 -7
  750. package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +4 -2
  751. package/test/sap/ui/core/qunit/ContextMenuSupport.qunit.js +3 -2
  752. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +49 -28
  753. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +218 -223
  754. package/test/sap/ui/core/qunit/Core.qunit.js +39 -34
  755. package/test/sap/ui/core/qunit/CoreEvents.qunit.js +17 -15
  756. package/test/sap/ui/core/qunit/Core_libraryTerminologies_integration.qunit.js +12 -11
  757. package/test/sap/ui/core/qunit/Core_repeatedExecution.qunit.js +3 -3
  758. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +122 -119
  759. package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +5 -17
  760. package/test/sap/ui/core/qunit/Declarative.qunit.js +37 -37
  761. package/test/sap/ui/core/qunit/Element_base.qunit.js +1 -1
  762. package/test/sap/ui/core/qunit/Element_data.qunit.js +5 -5
  763. package/test/sap/ui/core/qunit/Element_destroy.qunit.js +6 -4
  764. package/test/sap/ui/core/qunit/Element_focus.qunit.js +25 -24
  765. package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +3 -2
  766. package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +7 -6
  767. package/test/sap/ui/core/qunit/EventBus.qunit.js +4 -3
  768. package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +1 -1
  769. package/test/sap/ui/core/qunit/FastNavigation.qunit.js +3 -2
  770. package/test/sap/ui/core/qunit/FastNavigationWithWebComponents.qunit.js +5 -5
  771. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +17 -13
  772. package/test/sap/ui/core/qunit/FocusHandler.qunit.js +11 -9
  773. package/test/sap/ui/core/qunit/Fragment.qunit.js +47 -46
  774. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +63 -61
  775. package/test/sap/ui/core/qunit/HTML.qunit.js +67 -67
  776. package/test/sap/ui/core/qunit/Icon.qunit.js +66 -65
  777. package/test/sap/ui/core/qunit/IconPool.qunit.js +5 -4
  778. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +17 -15
  779. package/test/sap/ui/core/qunit/Lib.qunit.js +8 -8
  780. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +24 -24
  781. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +3 -3
  782. package/test/sap/ui/core/qunit/PlaceAt.qunit.js +2 -2
  783. package/test/sap/ui/core/qunit/RenderManager.qunit.js +54 -53
  784. package/test/sap/ui/core/qunit/ResizeHandler.qunit.js +8 -9
  785. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +7 -6
  786. package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +13 -11
  787. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +15 -14
  788. package/test/sap/ui/core/qunit/ThemeHelper.qunit.js +5 -4
  789. package/test/sap/ui/core/qunit/ThemeManager.qunit.js +47 -79
  790. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +44 -375
  791. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +686 -0
  792. package/test/sap/ui/core/qunit/Theming.qunit.js +88 -50
  793. package/test/sap/ui/core/qunit/Theming_default_and_fallback.qunit.js +130 -0
  794. package/test/sap/ui/core/qunit/TooltipBase.qunit.js +6 -4
  795. package/test/sap/ui/core/qunit/UIArea.qunit.js +258 -28
  796. package/test/sap/ui/core/qunit/analytics/testsuite4analytics.qunit.html +3 -3
  797. package/test/sap/ui/core/qunit/analytics/testsuite4analytics.qunit.js +9 -8
  798. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +10 -10
  799. package/test/sap/ui/core/qunit/base/Config.qunit.js +12 -2
  800. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +123 -52
  801. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -0
  802. package/test/sap/ui/core/qunit/base/config/GlobalConfig.js +3 -1
  803. package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +4 -1
  804. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +4 -3
  805. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +13 -3
  806. package/test/sap/ui/core/qunit/base/util/UriParameters.qunit.js +27 -1
  807. package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.qunit.js +4 -4
  808. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +3 -3
  809. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal_legacyAPIs.qunit.js +13 -11
  810. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -1
  811. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.beforeBootstrap.qunit.js +22 -21
  812. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.qunit.js +4 -9
  813. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomScript_legacyAPIs.qunit.js +13 -11
  814. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery_legacyAPIs.qunit.js +7 -5
  815. package/test/sap/ui/core/qunit/bootstrap/CalendarClassLoadingWithCustomBootTaskAndPreload.qunit.js +27 -14
  816. package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +4 -2
  817. package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.js +4 -3
  818. package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.qunit.js +4 -3
  819. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +5 -4
  820. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +2 -198
  821. package/test/sap/ui/core/qunit/bootstrap/Configuration_language_via_URL.qunit.js +210 -0
  822. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +33 -30
  823. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +18 -6
  824. package/test/sap/ui/core/qunit/component/Component.qunit.js +26 -15
  825. package/test/sap/ui/core/qunit/component/ComponentSupport.qunit.js +6 -5
  826. package/test/sap/ui/core/qunit/component/Component_dependencyLoading.qunit.js +15 -9
  827. package/test/sap/ui/core/qunit/component/Component_dependencyLoading_unavoidablySync.qunit.js +10 -6
  828. package/test/sap/ui/core/qunit/component/Component_unavoidablySync.qunit.js +4 -3
  829. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +11 -11
  830. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +4 -3
  831. package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +9 -10
  832. package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +10 -11
  833. package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +9 -11
  834. package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +9 -11
  835. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +4 -5
  836. package/test/sap/ui/core/qunit/component/ExtensionPoint_unavoidablySync.qunit.js +4 -3
  837. package/test/sap/ui/core/qunit/component/Metadata.qunit.js +3 -3
  838. package/test/sap/ui/core/qunit/component/Models.qunit.js +103 -44
  839. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +38 -22
  840. package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +23 -22
  841. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component1/manifest.json +2 -1
  842. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component2/manifest.json +1 -0
  843. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component3/manifest.json +2 -1
  844. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component4/manifest.json +1 -0
  845. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component5/manifest.json +1 -1
  846. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component6/manifest.json +1 -0
  847. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/componentVariant/manifest.json +1 -0
  848. package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/manifest.json +1 -1
  849. package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +1 -1
  850. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +48 -48
  851. package/test/sap/ui/core/qunit/csp/ContentSecurityPolicy.qunit.js +18 -13
  852. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +19 -18
  853. package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +13 -12
  854. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +5 -4
  855. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +7 -6
  856. package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +7 -6
  857. package/test/sap/ui/core/qunit/generic/legacy/ControlIterator.qunit.js +6 -6
  858. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +20 -17
  859. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +8 -7
  860. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +1 -2
  861. package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +14 -19
  862. package/test/sap/ui/core/qunit/internal/1Ring.qunit.js +34 -22
  863. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +4 -5
  864. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  865. package/test/sap/ui/core/qunit/internal/AnnotationParser.qunit.html +4 -4
  866. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -6
  867. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +4 -0
  868. package/test/sap/ui/core/qunit/internal/testsuite.models.qunit.js +19 -9
  869. package/test/sap/ui/core/qunit/isBehindOtherElement.qunit.js +7 -7
  870. package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
  871. package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +3 -2
  872. package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.js +2 -4
  873. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +20 -19
  874. package/test/sap/ui/core/qunit/json/JSONModel.qunit.js +5 -9
  875. package/test/sap/ui/core/qunit/messages/Messaging.qunit.js +137 -0
  876. package/test/sap/ui/core/qunit/messages/messagesDataBinding.qunit.js +3 -1
  877. package/test/sap/ui/core/qunit/messages/messagesEnd2End.qunit.js +10 -10
  878. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +42 -46
  879. package/test/sap/ui/core/qunit/messages/messagesGeneral_legacyAPIs.qunit.js +158 -0
  880. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +29 -39
  881. package/test/sap/ui/core/qunit/messages/testsuite.messaging.base.qunit.js +9 -2
  882. package/test/sap/ui/core/qunit/model/Binding.qunit.js +8 -8
  883. package/test/sap/ui/core/qunit/model/ClientPropertyBinding.qunit.js +47 -0
  884. package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +24 -14
  885. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +7 -6
  886. package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +3 -2
  887. package/test/sap/ui/core/qunit/mvc/AsyncXMLView.qunit.js +5 -3
  888. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +3 -3
  889. package/test/sap/ui/core/qunit/mvc/View.qunit.js +5 -1
  890. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync_unavoidablyUsingInlineStyle.qunit.js +5 -4
  891. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +8 -9
  892. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +50 -44
  893. package/test/sap/ui/core/qunit/mvc/testdata/TypedViewWithRendererRenderer.js +2 -2
  894. package/test/sap/ui/core/qunit/mvc/testdata/stashed/OP.html +1 -1
  895. package/test/sap/ui/core/qunit/mvc/testdata/stashed/manifest.json +2 -1
  896. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +18 -22
  897. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +23 -27
  898. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyViewAsync_legacyAPIs.qunit.js +10 -11
  899. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyView_legacyAPIs.qunit.js +7 -6
  900. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AsyncXMLView_legacyAPIs.qunit.js +5 -3
  901. package/test/sap/ui/core/qunit/mvc_legacyAPIs/HTMLView_legacyAPIs.qunit.js +8 -7
  902. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +7 -7
  903. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +45 -51
  904. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +52 -20
  905. package/test/sap/ui/core/qunit/odata/{ODataListBinding.qunit.js → ODataListBinding_legacyAPIs.qunit.js} +27 -0
  906. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +44 -48
  907. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +19 -15
  908. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +101 -29
  909. package/test/sap/ui/core/qunit/odata/ODataMetadata.qunit.js +17 -7
  910. package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +147 -89
  911. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +1 -0
  912. package/test/sap/ui/core/qunit/odata/_AnnotationHelperBasics.qunit.js +10 -4
  913. package/test/sap/ui/core/qunit/odata/data/ODataModelFakeService.js +1 -1
  914. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +38 -12
  915. package/test/sap/ui/core/qunit/odata/type/ODataType.qunit.js +9 -0
  916. package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +33 -12
  917. package/test/sap/ui/core/qunit/odata/v2/CanonicalRequests.qunit.js +5 -4
  918. package/test/sap/ui/core/qunit/odata/v2/Context.qunit.js +12 -0
  919. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +485 -22
  920. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +762 -90
  921. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +149 -6
  922. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +21 -0
  923. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +1 -2
  924. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding.qunit.js +7 -207
  925. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding_Filter_legacyAPIs.qunit.js +281 -0
  926. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +9 -8
  927. package/test/sap/ui/core/qunit/odata/v2/ODataV2TreeBinding.qunit.js +1 -0
  928. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +95 -85
  929. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +70 -67
  930. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +19 -20
  931. package/test/sap/ui/core/qunit/odata/v2/testsuite.odatav2.qunit.js +4 -0
  932. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +145 -35
  933. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +64 -13
  934. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +359 -78
  935. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +255 -33
  936. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2267 -148
  937. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +18 -17
  938. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +19 -9
  939. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +6 -27
  940. package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +3 -1
  941. package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +2 -2
  942. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +444 -53
  943. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +7 -8
  944. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +295 -161
  945. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +12 -22
  946. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +108 -10
  947. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +1 -1
  948. package/test/sap/ui/core/qunit/opa/Opa5PageObject.qunit.js +5 -6
  949. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +35 -46
  950. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +13 -14
  951. package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +5 -4
  952. package/test/sap/ui/core/qunit/opa/actions/Action.qunit.js +6 -5
  953. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +22 -21
  954. package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +60 -56
  955. package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +5 -7
  956. package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +5 -9
  957. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +5 -6
  958. package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +5 -4
  959. package/test/sap/ui/core/qunit/opa/autowaiter/_resourceWaiter.js +21 -20
  960. package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +6 -5
  961. package/test/sap/ui/core/qunit/opa/matchers/Interactable.qunit.js +7 -5
  962. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -3
  963. package/test/sap/ui/core/qunit/opa/matchers/Sibling.qunit.js +4 -3
  964. package/test/sap/ui/core/qunit/opa/matchers/Visible.qunit.js +6 -5
  965. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +28 -27
  966. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +11 -10
  967. package/test/sap/ui/core/qunit/opa/matchers/_Enabled.qunit.js +11 -10
  968. package/test/sap/ui/core/qunit/opa/matchers/_Visitor.qunit.js +5 -4
  969. package/test/sap/ui/core/qunit/opa/opa5/actions.qunit.js +8 -7
  970. package/test/sap/ui/core/qunit/opa/opa5/basics.qunit.js +12 -17
  971. package/test/sap/ui/core/qunit/opa/opa5/logging.qunit.js +5 -6
  972. package/test/sap/ui/core/qunit/opa/opa5/matchers.qunit.js +6 -5
  973. package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +10 -9
  974. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +6 -7
  975. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +4 -3
  976. package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +4 -3
  977. package/test/sap/ui/core/qunit/opa/selectors/_GlobalID.js +4 -3
  978. package/test/sap/ui/core/qunit/opa/selectors/_LabelFor.js +4 -3
  979. package/test/sap/ui/core/qunit/opa/selectors/_Properties.js +33 -27
  980. package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +9 -11
  981. package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +8 -9
  982. package/test/sap/ui/core/qunit/opa/selectors/_ViewID.js +5 -7
  983. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +35 -28
  984. package/test/sap/ui/core/qunit/routing/Placeholder.qunit.js +11 -9
  985. package/test/sap/ui/core/qunit/routing/PlaceholderOptOut.qunit.js +5 -3
  986. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +57 -0
  987. package/test/sap/ui/core/qunit/routing/fixture/historyIframe/iframe/index.html +1 -1
  988. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/Component.js +30 -0
  989. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/manifest.json +25 -0
  990. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/Component.js +14 -0
  991. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/manifest.json +51 -0
  992. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/NotFound.view.xml +3 -0
  993. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/RootView.view.xml +5 -0
  994. package/test/sap/ui/core/qunit/rule/app/deprecatedJSViewUsage.qunit.js +4 -0
  995. package/test/sap/ui/core/qunit/rule/app/globalApiUsage.qunit.js +4 -0
  996. package/test/sap/ui/core/qunit/rule/app/jquerySapUsage.qunit.js +4 -0
  997. package/test/sap/ui/core/qunit/rule/app/syncXHR.qunit.js +28 -17
  998. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrap.qunit.js +7 -3
  999. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebug.qunit.js +7 -3
  1000. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebugBeforeBootstrap.js +4 -0
  1001. package/test/sap/ui/core/qunit/rule/config/asynchronousXMLViews.qunit.js +13 -19
  1002. package/test/sap/ui/core/qunit/rule/misc/silentEventBus.qunit.js +8 -7
  1003. package/test/sap/ui/core/qunit/rule/model/modelSupport.qunit.js +11 -2
  1004. package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +18 -0
  1005. package/test/sap/ui/core/qunit/support/techinfo/TechnicalInfoTestbench.html +3 -1
  1006. package/test/sap/ui/core/qunit/test/starter/find/index.html +1 -1
  1007. package/test/sap/ui/core/qunit/test/starter/find/main.js +13 -9
  1008. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +0 -6
  1009. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  1010. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +16 -6
  1011. package/test/sap/ui/core/qunit/testsuites/testsuite.foundation.enablement.qunit.js +7 -1
  1012. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +48 -6
  1013. package/test/sap/ui/core/qunit/tmpl/Template.qunit.js +36 -35
  1014. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +13 -0
  1015. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  1016. package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +2 -2
  1017. package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
  1018. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +27 -31
  1019. package/test/sap/ui/core/qunit/util/Popup.qunit.js +27 -27
  1020. package/test/sap/ui/core/qunit/util/ResponsivePaddingsEnablement.qunit.js +13 -9
  1021. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +60 -7
  1022. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +5 -5
  1023. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +1 -1
  1024. package/test/sap/ui/core/qunit/util/jquery.sap.dom.qunit.js +3 -2
  1025. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +38 -21
  1026. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +64 -40
  1027. package/test/sap/ui/core/qunit/util/static/TechnicalInfoTestbenchInit.js +8 -2
  1028. package/test/sap/ui/core/qunit/util/support/TechnicalInfo.qunit.js +11 -10
  1029. package/test/sap/ui/core/qunit/webc/WebComponent.qunit.js +188 -0
  1030. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.html +14 -0
  1031. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.js +22 -0
  1032. package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +69 -8
  1033. package/test/sap/ui/core/relnotes/changes-1.117.json +1 -34
  1034. package/test/sap/ui/core/relnotes/changes-1.118.json +110 -0
  1035. package/test/sap/ui/core/relnotes/changes-1.119.json +217 -0
  1036. package/test/sap/ui/core/resources/fastnav.js +3 -2
  1037. package/test/sap/ui/core/samples/ResponsiveDemo.html +3 -3
  1038. package/test/sap/ui/core/samples/components/commands/manifest.json +2 -2
  1039. package/test/sap/ui/core/samples/components/resourcesCSS/index.html +1 -1
  1040. package/test/sap/ui/core/samples/components/sample/manifest.json +2 -1
  1041. package/test/sap/ui/core/samples/databinding/DataBindingAsyncType.html +3 -2
  1042. package/test/sap/ui/core/samples/databinding/DatabindingMessages.html +158 -153
  1043. package/test/sap/ui/core/samples/databinding/ODatabindingMessages.html +7 -9
  1044. package/test/sap/ui/core/samples/databinding/UnitTable.view.xml +9 -2
  1045. package/test/sap/ui/core/samples/databinding/UnitTableMain.js +3 -4
  1046. package/test/sap/ui/core/samples/extensions/index_legacyAPIs.html +15 -13
  1047. package/test/sap/ui/core/samples/formatting/controller/ChooseFormatOptions.controller.js +3 -2
  1048. package/test/sap/ui/core/samples/formatting/manifest.json +2 -2
  1049. package/test/sap/ui/core/samples/mvc/ExtendedXMLViewEventHandlerSyntax.html +5 -3
  1050. package/test/sap/ui/core/samples/mvc/XMLViewAsync.html +62 -61
  1051. package/test/sap/ui/core/samples/mvc/XMLViewBindableAggregation.html +1 -1
  1052. package/test/sap/ui/core/samples/routing_legacyAPIs/AsyncViews.html +124 -123
  1053. package/test/sap/ui/core/terminologies/App.controller.js +3 -2
  1054. package/test/sap/ui/core/terminologies/App.view.xml +64 -64
  1055. package/test/sap/ui/core/tmpl_legacyAPIs/TemplateSimple.html +38 -37
  1056. package/test/sap/ui/core/util/PasteHelper.html +5 -4
  1057. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  1058. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  1059. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  1060. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  1061. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  1062. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  1063. package/test/testsuite/testframe.html +4 -4
  1064. package/src/ui5-boot.js +0 -50
  1065. package/test/sap/ui/core/qunit/CoreLock.qunit.js +0 -61
  1066. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.js +0 -30
  1067. package/test/sap/ui/core/qunit/messages/MessageManager.qunit.js +0 -135
  1068. package/test/sap/ui/core/samples/databinding/DataBinding.html +0 -133
  1069. package/test/sap/ui/core/samples/databinding/DataBindingCalculatedFields.html +0 -227
  1070. package/test/sap/ui/core/samples/databinding/DataBindingCompositeTypes.html +0 -273
  1071. package/test/sap/ui/core/samples/databinding/DataBindingFormat.html +0 -294
  1072. package/test/sap/ui/core/samples/databinding/DataBindingList.html +0 -288
  1073. package/test/sap/ui/core/samples/databinding/DataBindingListNamedModel.html +0 -288
  1074. package/test/sap/ui/core/samples/databinding/DataBindingListXML.html +0 -278
  1075. package/test/sap/ui/core/samples/databinding/DataBindingMasterDetail.html +0 -117
  1076. package/test/sap/ui/core/samples/databinding/DataBindingMultiModel.html +0 -152
  1077. package/test/sap/ui/core/samples/databinding/DataBindingResourceModel.html +0 -119
  1078. package/test/sap/ui/core/samples/databinding/DataBindingSortingFiltering.html +0 -101
  1079. package/test/sap/ui/core/samples/databinding/DataBindingTree.html +0 -166
  1080. package/test/sap/ui/core/samples/databinding/DataBindingTreeFilter.html +0 -117
  1081. package/test/sap/ui/core/samples/databinding/DataBindingTreeFilterXML.html +0 -103
  1082. package/test/sap/ui/core/samples/databinding/DataBindingTreeLarge.html +0 -139
  1083. package/test/sap/ui/core/samples/databinding/DataBindingTreeWithArrays.html +0 -132
  1084. package/test/sap/ui/core/samples/databinding/DataBindingTwoWay.html +0 -156
  1085. package/test/sap/ui/core/samples/databinding/DataBindingTwoWayTable.html +0 -140
  1086. package/test/sap/ui/core/samples/databinding/DataBindingTypes.html +0 -265
  1087. package/test/sap/ui/core/samples/databinding/DataBindingValidation.html +0 -194
  1088. package/test/sap/ui/core/samples/databinding/DataBindingXML.html +0 -147
  1089. package/test/sap/ui/core/samples/databinding/DataBindingXMLView.html +0 -53
  1090. package/test/sap/ui/core/samples/databinding/testdata/ListBinding.view.xml +0 -9
  1091. package/test/sap/ui/core/samples/databinding/testdata/test.view.json +0 -15
  1092. package/test/sap/ui/core/samples/databinding/testdata/test.view.xml +0 -8
  1093. /package/test/sap/ui/core/qunit/{MasterDetail.qunit.js → MasterDetail_legacyAPIs.qunit.js} +0 -0
  1094. /package/test/sap/ui/core/qunit/odata/{ODataModel.qunit.js → ODataModel_legacyAPIs.qunit.js} +0 -0
  1095. /package/test/sap/ui/core/qunit/odata/{ODataSharedMetadata.qunit.js → ODataSharedMetadata_legacyAPIs.qunit.js} +0 -0
  1096. /package/test/sap/ui/core/qunit/odata/{ODataTreeBinding.qunit.js → ODataTreeBinding_legacyAPIs.qunit.js} +0 -0
@@ -1,5 +1,4 @@
1
1
  sap.ui.define([
2
- "sap/ui/core/Core",
3
2
  "sap/ui/core/Control",
4
3
  "sap/ui/core/Element",
5
4
  "sap/ui/core/Renderer",
@@ -8,8 +7,9 @@ sap.ui.define([
8
7
  "sap/ui/core/EnabledPropagator",
9
8
  "sap/ui/core/dnd/DragInfo",
10
9
  "sap/ui/qunit/utils/createAndAppendDiv",
10
+ "sap/ui/qunit/utils/nextUIUpdate",
11
11
  "sap/ui/model/json/JSONModel"
12
- ], function(Core, Control, Element, Renderer, RenderManager, InvisibleText, EnabledPropagator, DragInfo, createAndAppendDiv, JSONModel) {
12
+ ], function(Control, Element, Renderer, RenderManager, InvisibleText, EnabledPropagator, DragInfo, createAndAppendDiv, nextUIUpdate, JSONModel) {
13
13
 
14
14
  "use strict";
15
15
  /*global QUnit,sinon*/
@@ -141,7 +141,7 @@ sap.ui.define([
141
141
 
142
142
  QUnit.test("Custom RM writing text nodes and styles", function(assert) {
143
143
  var oRoot = document.createElement("div");
144
- var oRM = Core.createRenderManager();
144
+ var oRM = new RenderManager();
145
145
  oRM.openStart("div").style("width", "100px").openEnd().text("DivText").close("div");
146
146
  oRM.text("TextNode");
147
147
  oRM.unsafeHtml("<b>BoldText</b>");
@@ -153,7 +153,7 @@ sap.ui.define([
153
153
 
154
154
  QUnit.test("Custom RM writing svg elements", function(assert) {
155
155
  var oRoot = document.createElementNS("http://www.w3.org/2000/svg", "svg");
156
- var oRM = Core.createRenderManager();
156
+ var oRM = new RenderManager();
157
157
  oRM.openStart("circle", "circle").openEnd().close("circle");
158
158
  oRM.flush(oRoot, false, true);
159
159
 
@@ -167,7 +167,7 @@ sap.ui.define([
167
167
  assert.notEqual(oRoot.namespaceURI, oRoot.firstChild.namespaceURI, "div element within the foreignObject is created different than SVG context");
168
168
  });
169
169
 
170
- QUnit.test("String rendering output and events", function(assert) {
170
+ QUnit.test("String rendering output and events", async function(assert) {
171
171
  var oStringControl = new StringControl();
172
172
  var onBeforeRenderingSpy = sinon.spy();
173
173
  var onAfterRenderingSpy = sinon.spy();
@@ -183,7 +183,7 @@ sap.ui.define([
183
183
  });
184
184
 
185
185
  oStringControl.placeAt("qunit-fixture");
186
- Core.applyChanges();
186
+ await nextUIUpdate();
187
187
 
188
188
  assert.equal(onAfterRenderingSpy.callCount, 1, "onAfterRendering is called");
189
189
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called");
@@ -206,14 +206,14 @@ sap.ui.define([
206
206
  assert.equal(oDomRef.lastChild.tagName, "HR", "void hr tag is rendered");
207
207
 
208
208
  oStringControl.invalidate();
209
- Core.applyChanges();
209
+ await nextUIUpdate();
210
210
  assert.equal(onAfterRenderingSpy.callCount, 2, "onAfterRendering is called again");
211
211
  assert.equal(onBeforeRenderingSpy.callCount, 2, "onBeforeRendering is called again");
212
212
 
213
213
  oStringControl.destroy();
214
214
  });
215
215
 
216
- QUnit.test("String rendering style checks", function(assert) {
216
+ QUnit.test("String rendering style checks", async function(assert) {
217
217
  var oStringControl = new StringControl("root", {
218
218
  width: "99.9%",
219
219
  items: [new StringControl("child1", {
@@ -224,7 +224,7 @@ sap.ui.define([
224
224
  });
225
225
 
226
226
  oStringControl.placeAt("qunit-fixture");
227
- Core.applyChanges();
227
+ await nextUIUpdate();
228
228
 
229
229
  assert.equal(document.getElementById("root").style.width, "99.9%", "Width is set correctly for the root");
230
230
  assert.equal(document.getElementById("child1").style.width, "calc(-3rem + 50vw)", "Width is set correctly for the 1st child");
@@ -233,7 +233,7 @@ sap.ui.define([
233
233
  oStringControl.destroy();
234
234
  });
235
235
 
236
- QUnit.test("New rendering output and events", function(assert) {
236
+ QUnit.test("New rendering output and events", async function(assert) {
237
237
  var oPatchingControl = new PatchingControl();
238
238
  var onBeforeRenderingSpy = sinon.spy();
239
239
  var onAfterRenderingSpy = sinon.spy();
@@ -249,7 +249,7 @@ sap.ui.define([
249
249
  });
250
250
 
251
251
  oPatchingControl.placeAt("qunit-fixture");
252
- Core.applyChanges();
252
+ await nextUIUpdate();
253
253
 
254
254
  assert.equal(onAfterRenderingSpy.callCount, 1, "onAfterRendering is called");
255
255
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called");
@@ -271,14 +271,14 @@ sap.ui.define([
271
271
  assert.equal(oDomRef.lastChild.tagName, "HR", "void hr tag is rendered");
272
272
 
273
273
  oPatchingControl.invalidate();
274
- Core.applyChanges();
274
+ await nextUIUpdate();
275
275
  assert.equal(onAfterRenderingSpy.callCount, 2, "onAfterRendering is called again");
276
276
  assert.equal(onBeforeRenderingSpy.callCount, 2, "onBeforeRendering is called again");
277
277
 
278
278
  oPatchingControl.destroy();
279
279
  });
280
280
 
281
- QUnit.test("DOM rendering style checks", function(assert) {
281
+ QUnit.test("DOM rendering style checks", async function(assert) {
282
282
  var oPatchingControl = new PatchingControl("root", {
283
283
  width: "99.9%",
284
284
  items: [new PatchingControl("child1", {
@@ -289,22 +289,22 @@ sap.ui.define([
289
289
  });
290
290
 
291
291
  oPatchingControl.placeAt("qunit-fixture");
292
- Core.applyChanges();
292
+ await nextUIUpdate();
293
293
 
294
294
  assert.equal(document.getElementById("root").style.width, "99.9%", "Width is set correctly for the root");
295
295
  assert.equal(document.getElementById("child1").style.width, "calc(-3rem + 50vw)", "Width is set correctly for the 1st child");
296
296
  assert.notEqual(document.getElementById("child2").style.width, "500px", "Width is not set for the 2nd child since we initially do dom-based rendering");
297
297
  assert.notOk(document.getElementById("child2").hasAttribute("hack"), "Hack attribute is not set");
298
298
 
299
- Core.byId("child2").setWidth('300px;" hack="true"');
300
- Core.applyChanges();
299
+ Element.getElementById("child2").setWidth('300px;" hack="true"');
300
+ await nextUIUpdate();
301
301
  assert.notEqual(document.getElementById("child2").style.width, "300px", "Width is not set for the 2nd child since patching encodes semicolon");
302
302
  assert.notOk(document.getElementById("child2").hasAttribute("hack"), "Hack attribute is not set");
303
303
 
304
304
  oPatchingControl.destroy();
305
305
  });
306
306
 
307
- QUnit.test("Create RenderManager during the rendering", function(assert) {
307
+ QUnit.test("Create RenderManager during the rendering", async function(assert) {
308
308
  var oPatchingControl = new PatchingControl({
309
309
  header: "root",
310
310
  items: new PatchingControl({
@@ -313,10 +313,10 @@ sap.ui.define([
313
313
  });
314
314
 
315
315
  oPatchingControl.placeAt("qunit-fixture");
316
- Core.applyChanges();
316
+ await nextUIUpdate();
317
317
 
318
318
  oPatchingControl.setHeader("root2").getItems()[0].setDoSomething(function() {
319
- var oRM = Core.createRenderManager();
319
+ var oRM = new RenderManager();
320
320
  var oNew = new PatchingControl({ header: "new" });
321
321
  var oDom = document.createElement("section");
322
322
 
@@ -325,13 +325,13 @@ sap.ui.define([
325
325
  oRM.destroy();
326
326
  }).setHeader("child2");
327
327
 
328
- Core.applyChanges();
328
+ await nextUIUpdate();
329
329
  assert.equal(oPatchingControl.getDomRef().textContent, "root2child2");
330
330
 
331
331
  oPatchingControl.destroy();
332
332
  });
333
333
 
334
- QUnit.test("Mix rendering style checks", function(assert) {
334
+ QUnit.test("Mix rendering style checks", async function(assert) {
335
335
  var oPatchingControl = new PatchingControl("root", {
336
336
  width: "99.9%",
337
337
  items: [new StringControl("child1", {
@@ -342,7 +342,7 @@ sap.ui.define([
342
342
  });
343
343
 
344
344
  oPatchingControl.placeAt("qunit-fixture");
345
- Core.applyChanges();
345
+ await nextUIUpdate();
346
346
 
347
347
  assert.equal(document.getElementById("root").style.width, "99.9%", "Width is set correctly for the root");
348
348
  assert.equal(document.getElementById("child1").style.width, "calc(-3rem + 50vw)", "Width is set correctly for the 1st child");
@@ -351,7 +351,7 @@ sap.ui.define([
351
351
  oPatchingControl.destroy();
352
352
  });
353
353
 
354
- QUnit.test("Invalidation in the onBeforeRendering", function(assert) {
354
+ QUnit.test("Invalidation in the onBeforeRendering", async function(assert) {
355
355
  var oPatchingControl = new PatchingControl({
356
356
  items: new PatchingControl()
357
357
  });
@@ -367,24 +367,24 @@ sap.ui.define([
367
367
  onBeforeRendering: onBeforeRenderingSpy
368
368
  });
369
369
 
370
- setTimeout(function() {
370
+ oPatchingControl.placeAt("qunit-fixture");
371
+ await nextUIUpdate();
372
+ setTimeout(async function() {
371
373
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called only once");
372
374
  onBeforeRenderingSpy.resetHistory();
375
+ oPatchingControl.invalidate();
376
+ await nextUIUpdate();
373
377
  setTimeout(function() {
374
378
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called only once");
375
379
  done();
376
380
  });
377
- oPatchingControl.invalidate();
378
- Core.applyChanges();
379
381
  });
380
- oPatchingControl.placeAt("qunit-fixture");
381
- Core.applyChanges();
382
382
  });
383
383
 
384
- QUnit.test("Rerendering mutations", function(assert) {
384
+ QUnit.test("Rerendering mutations", async function(assert) {
385
385
  var oRemovedChild = null;
386
386
  var fnCreateRenderManager = function() {
387
- var oRM = Core.createRenderManager();
387
+ var oRM = new RenderManager();
388
388
  oRM.openStart("div").openEnd().close("div");
389
389
  oRM.destroy();
390
390
  };
@@ -394,11 +394,14 @@ sap.ui.define([
394
394
  oPatchingControl.data("KEY", "VALUE");
395
395
 
396
396
  oPatchingControl.placeAt("qunit-fixture");
397
- Core.applyChanges();
397
+ await nextUIUpdate();
398
398
 
399
- var aMutations;
400
399
  var oDomRef = oPatchingControl.getDomRef();
401
- var oObserver = new MutationObserver(function() {});
400
+ var aMutations = [];
401
+ var oObserver = new MutationObserver(function(mutations) {
402
+ aMutations = [];
403
+ aMutations = mutations;
404
+ });
402
405
 
403
406
  oObserver.observe(oDomRef, {
404
407
  characterDataOldValue: true,
@@ -410,160 +413,143 @@ sap.ui.define([
410
413
  });
411
414
 
412
415
  oPatchingControl.invalidate();
413
- Core.applyChanges();
416
+ await nextUIUpdate();
414
417
  aMutations = oObserver.takeRecords();
415
418
  assert.equal(aMutations.length, 0, "Rerendering needs no mutation");
416
419
 
417
420
  oPatchingControl.setHeader("H/");
418
- Core.applyChanges();
419
- aMutations = oObserver.takeRecords();
421
+ await nextUIUpdate();
420
422
  assert.equal(oDomRef.textContent, "H/", "Header is changed");
421
423
  assert.equal(aMutations.length, 1, "Only header is changed");
422
424
 
423
425
  oPatchingControl.setTooltip("T");
424
- Core.applyChanges();
425
- aMutations = oObserver.takeRecords();
426
+ await nextUIUpdate();
426
427
  assert.equal(oDomRef.title, "T", "Title is changed");
427
428
  assert.equal(aMutations.length, 1, "Only title is changed");
428
429
 
429
430
  oPatchingControl.setWidth("100px");
430
- Core.applyChanges();
431
- aMutations = oObserver.takeRecords();
431
+ await nextUIUpdate();
432
432
  assert.equal(oDomRef.style.width, "100px", "Width is changed");
433
433
  assert.equal(aMutations.length, 1, "Only width is changed");
434
434
 
435
435
  oPatchingControl.addStyleClass("A").invalidate();
436
- Core.applyChanges();
437
- aMutations = oObserver.takeRecords();
436
+ await nextUIUpdate();
438
437
  assert.ok(oDomRef.classList.contains("A"), "Class A is added");
439
438
  assert.equal(aMutations.length, 1, "Only class is changed");
440
439
 
441
440
  oPatchingControl.addStyleClass("Z").invalidate();
442
- Core.applyChanges();
443
- aMutations = oObserver.takeRecords();
441
+ await nextUIUpdate();
444
442
  assert.ok(oDomRef.classList.contains("A"), "Class Z is added");
445
443
  assert.equal(aMutations.length, 1, "Only class is changed");
446
444
 
447
445
  oPatchingControl.data("key", "value", true).invalidate();
448
- Core.applyChanges();
449
- aMutations = oObserver.takeRecords();
446
+ await nextUIUpdate();
450
447
  assert.equal(oDomRef.getAttribute("data-key"), "value", "Data attribute is set");
451
448
  assert.equal(aMutations.length, 1, "Only data-key attribute is set");
452
449
 
453
450
  oPatchingControl.addItem(new PatchingControl({header: "A", doSomething: fnCreateRenderManager}));
454
- Core.applyChanges();
455
- aMutations = oObserver.takeRecords();
451
+ await nextUIUpdate();
456
452
  assert.equal(oDomRef.lastChild.textContent, "A", "Child A is added");
457
453
  assert.equal(aMutations.length, 1, "Only child A is added");
458
454
 
459
455
  oPatchingControl.addItem(new PatchingControl({header: "B"}));
460
- Core.applyChanges();
461
- aMutations = oObserver.takeRecords();
456
+ await nextUIUpdate();
462
457
  assert.equal(oDomRef.lastChild.textContent, "B", "Child B is added");
463
458
  assert.equal(aMutations.length, 1, "Only child B is added");
464
459
 
465
460
  oPatchingControl.addItem(new PatchingControl({header: "C"}));
466
- Core.applyChanges();
467
- aMutations = oObserver.takeRecords();
461
+ await nextUIUpdate();
468
462
  assert.equal(oDomRef.lastChild.textContent, "C", "Child C is added");
469
463
  assert.equal(aMutations.length, 1, "Only child C is added");
470
464
 
471
465
  assert.equal(oDomRef.textContent, "H/ABC", "Rendering is valid after PatchingControls are added");
472
466
 
473
467
  oPatchingControl.getItems()[1].setVisible(false);
474
- Core.applyChanges();
475
- aMutations = oObserver.takeRecords();
468
+ await nextUIUpdate();
476
469
  assert.equal(oDomRef.textContent, "H/AC", "Child B is not visible");
477
470
  assert.equal(aMutations.length, 1, "Child B DOM is replaced with the invisible placeholder");
478
471
 
472
+ aMutations = [];
479
473
  oPatchingControl.invalidate();
480
- Core.applyChanges();
481
- aMutations = oObserver.takeRecords();
474
+ await nextUIUpdate();
482
475
  assert.equal(aMutations.length, 0, "No DOM update");
483
476
 
484
477
  oPatchingControl.getItems()[1].setVisible(true);
485
- Core.applyChanges();
486
- aMutations = oObserver.takeRecords();
478
+ await nextUIUpdate();
487
479
  assert.equal(oDomRef.textContent, "H/ABC", "Child B is visible again");
488
480
  assert.equal(aMutations.length, 1, "Invisible placeholder is replaced with Child B");
489
481
  assert.ok(aMutations[0].removedNodes[0].id.endsWith(aMutations[0].addedNodes[0].id), "Invisible placeholder is replaced via old rendering");
490
482
 
491
483
  oRemovedChild = oPatchingControl.removeItem(0);
492
- Core.applyChanges();
493
- aMutations = oObserver.takeRecords();
484
+ await nextUIUpdate();
494
485
  assert.equal(oDomRef.textContent, "H/BC", "Child A is removed");
495
486
  assert.equal(aMutations.length, 5, "Remove B from 2nd, Insert B to 1st / Remove C from 3nd, Insert C to 1st / Remove A");
496
487
 
497
488
  oPatchingControl.insertItem(oRemovedChild, 0);
498
- Core.applyChanges();
499
- aMutations = oObserver.takeRecords();
489
+ await nextUIUpdate();
500
490
  assert.equal(oDomRef.textContent, "H/ABC", "Child A is inserted to the 1st position");
501
491
  assert.equal(aMutations.length, 1, "Only Child A is inserted");
502
492
 
503
493
  oRemovedChild = oPatchingControl.removeItem(1);
504
- Core.applyChanges();
505
- aMutations = oObserver.takeRecords();
494
+ await nextUIUpdate();
506
495
  assert.equal(oDomRef.textContent, "H/AC", "Child B is removed");
507
496
  assert.equal(aMutations.length, 3, "A is not changed / Remove C from 3nd, Insert C to 1st / Remove B");
508
497
 
509
498
  oPatchingControl.insertItem(oRemovedChild, 1);
510
- Core.applyChanges();
511
- aMutations = oObserver.takeRecords();
499
+ await nextUIUpdate();
512
500
  assert.equal(oDomRef.textContent, "H/ABC", "Child B is inserted to the 2nd position");
513
501
  assert.equal(aMutations.length, 1, "Only Child B is inserted");
514
502
 
515
503
  oRemovedChild = oPatchingControl.removeItem(2);
516
- Core.applyChanges();
517
- aMutations = oObserver.takeRecords();
504
+ await nextUIUpdate();
518
505
  assert.equal(oDomRef.textContent, "H/AB", "Child C is removed");
519
506
  assert.equal(aMutations.length, 1, "A is not changed / B is not changed / Remove C");
520
507
 
521
508
  oPatchingControl.insertItem(oRemovedChild, 2);
522
- Core.applyChanges();
523
- aMutations = oObserver.takeRecords();
509
+ await nextUIUpdate();
524
510
  assert.equal(oDomRef.textContent, "H/ABC", "Child C is inserted to the 3nd position");
525
511
  assert.equal(aMutations.length, 1, "Only Child C is inserted");
526
512
 
513
+ aMutations = [];
527
514
  oPatchingControl.invalidate();
528
- Core.applyChanges();
529
- aMutations = oObserver.takeRecords();
515
+ await nextUIUpdate();
530
516
  assert.equal(aMutations.length, 0, "No DOM update");
531
517
 
532
518
  oPatchingControl.addItem(new StringControl({header: "X", doSomething: fnCreateRenderManager}));
533
- Core.applyChanges();
534
- aMutations = cleanupMutations(oObserver.takeRecords());
519
+ await nextUIUpdate();
520
+ aMutations = cleanupMutations(aMutations);
535
521
  assert.equal(oDomRef.lastChild.textContent, "X", "Child X is added via String Rendering");
536
522
  assert.equal(aMutations.length, 1, "Only child X is added");
537
523
 
538
524
  assert.equal(oDomRef.textContent, "H/ABCX", "Rendering is valid after StringControl is added");
539
525
 
540
526
  oPatchingControl.invalidate();
541
- Core.applyChanges();
542
- aMutations = cleanupMutations(oObserver.takeRecords());
527
+ await nextUIUpdate();
528
+ aMutations = cleanupMutations(aMutations);
543
529
  assert.equal(aMutations.length, 2, "StringControl is replaced(removed from DOM and added again)");
544
530
 
545
531
  oPatchingControl.setWidth("200px");
546
- Core.applyChanges();
547
- aMutations = cleanupMutations(oObserver.takeRecords());
532
+ await nextUIUpdate();
533
+ aMutations = cleanupMutations(aMutations);
548
534
  assert.equal(oDomRef.style.width, "200px", "Width is changed");
549
535
  assert.equal(aMutations.length, 3, "Only width of Patching control is changed and StringControl is replaced");
550
536
 
551
537
  oRemovedChild = oPatchingControl.removeItem(3);
552
538
  oPatchingControl.insertItem(oRemovedChild, 2);
553
- Core.applyChanges();
554
- aMutations = cleanupMutations(oObserver.takeRecords());
539
+ await nextUIUpdate();
540
+ aMutations = cleanupMutations(aMutations);
555
541
  assert.equal(oDomRef.textContent, "H/ABXC", "Child X inserted to right position");
556
542
  assert.equal(aMutations.length, 2, "StringControl is added to 3rd position and old one is removed");
557
543
 
558
544
  oPatchingControl.insertItem(new StringControl({header: "Y"}), 0);
559
- Core.applyChanges();
560
- aMutations = cleanupMutations(oObserver.takeRecords());
545
+ await nextUIUpdate();
546
+ aMutations = cleanupMutations(aMutations);
561
547
  assert.equal(oDomRef.textContent, "H/YABXC", "Child Y inserted to first position");
562
548
  assert.equal(aMutations.length, 3, "StringControl Y is added to first position, StringControl X is replaced");
563
549
 
564
550
  oPatchingControl.removeAllItems();
565
- Core.applyChanges();
566
- aMutations = oObserver.takeRecords();
551
+ await nextUIUpdate();
552
+ oObserver.takeRecords();
567
553
  assert.equal(aMutations.length, 5, "All children are removed");
568
554
  assert.equal(oDomRef.textContent, "H/", "Parent is alone");
569
555
 
@@ -571,14 +557,14 @@ sap.ui.define([
571
557
  oPatchingControl.destroy();
572
558
  });
573
559
 
574
- QUnit.test("UIArea Rendering", function(assert) {
560
+ QUnit.test("UIArea Rendering", async function(assert) {
575
561
  var oPatchingControl = new PatchingControl();
576
562
  oPatchingControl.placeAt("uiArea1");
577
- Core.applyChanges();
563
+ await nextUIUpdate();
578
564
 
579
565
  oPatchingControl.setHeader("New Header");
580
566
  oPatchingControl.placeAt("uiArea2");
581
- Core.applyChanges();
567
+ await nextUIUpdate();
582
568
 
583
569
  var oDomRef = oPatchingControl.getDomRef();
584
570
  assert.equal(oDomRef.textContent, "New Header", "Header is updated");
@@ -588,7 +574,7 @@ sap.ui.define([
588
574
  oPatchingControl.destroy();
589
575
  });
590
576
 
591
- QUnit.test("No Rendering Output", function(assert) {
577
+ QUnit.test("No Rendering Output", async function(assert) {
592
578
  var onBeforeRenderingSpy = sinon.spy();
593
579
  var onAfterRenderingSpy = sinon.spy();
594
580
  var oRootControl = new PatchingControl({
@@ -611,7 +597,7 @@ sap.ui.define([
611
597
  ]
612
598
  });
613
599
  oRootControl.placeAt("qunit-fixture");
614
- Core.applyChanges();
600
+ await nextUIUpdate();
615
601
  var oDomRef = oRootControl.getDomRef();
616
602
 
617
603
  assert.equal(onAfterRenderingSpy.callCount, 0, "onAfterRendering is not called");
@@ -619,31 +605,31 @@ sap.ui.define([
619
605
  assert.equal(oDomRef.textContent, "R/", "Children have no output");
620
606
 
621
607
  oRootControl.invalidate();
622
- Core.applyChanges();
608
+ await nextUIUpdate();
623
609
  assert.equal(onAfterRenderingSpy.callCount, 0, "onAfterRendering is not called");
624
610
  assert.equal(onBeforeRenderingSpy.callCount, 4, "onBeforeRendering is called");
625
611
  assert.equal(oDomRef.textContent, "R/", "Children have still no output");
626
612
 
627
613
  oRootControl.getItems()[0].setRenderNothing(false);
628
- Core.applyChanges();
614
+ await nextUIUpdate();
629
615
  assert.equal(onAfterRenderingSpy.callCount, 1, "onAfterRendering is called");
630
616
  assert.equal(onBeforeRenderingSpy.callCount, 6, "onBeforeRendering is called");
631
617
  assert.equal(oDomRef.textContent, "R/S", "StringControl child has output");
632
618
 
633
619
  oRootControl.getItems()[0].setRenderNothing(true);
634
- Core.applyChanges();
620
+ await nextUIUpdate();
635
621
  assert.equal(onAfterRenderingSpy.callCount, 1, "onAfterRendering is not called");
636
622
  assert.equal(onBeforeRenderingSpy.callCount, 7, "onBeforeRendering is called");
637
623
  assert.equal(oDomRef.textContent, "R/", "StringControl has no output anymore");
638
624
 
639
625
  oRootControl.getItems()[1].setRenderNothing(false);
640
- Core.applyChanges();
626
+ await nextUIUpdate();
641
627
  assert.equal(onAfterRenderingSpy.callCount, 2, "onAfterRendering is called");
642
628
  assert.equal(onBeforeRenderingSpy.callCount, 9, "onBeforeRendering is called");
643
629
  assert.equal(oDomRef.textContent, "R/P", "PatchingControl child has output");
644
630
 
645
631
  oRootControl.getItems()[1].setRenderNothing(true);
646
- Core.applyChanges();
632
+ await nextUIUpdate();
647
633
  assert.equal(onAfterRenderingSpy.callCount, 2, "onAfterRendering is not called");
648
634
  assert.equal(onBeforeRenderingSpy.callCount, 10, "onBeforeRendering is called");
649
635
  assert.equal(oDomRef.textContent, "R/", "PatchingControl child has no output anymore");
@@ -651,7 +637,7 @@ sap.ui.define([
651
637
  oRootControl.destroy();
652
638
  });
653
639
 
654
- QUnit.test("Invisible Rendering", function(assert) {
640
+ QUnit.test("Invisible Rendering", async function(assert) {
655
641
  var onBeforeRenderingSpy = sinon.spy();
656
642
  var onAfterRenderingSpy = sinon.spy();
657
643
  var oRootControl = new PatchingControl({
@@ -679,7 +665,7 @@ sap.ui.define([
679
665
  }
680
666
 
681
667
  oRootControl.placeAt("qunit-fixture");
682
- Core.applyChanges();
668
+ await nextUIUpdate();
683
669
  var oDomRef = oRootControl.getDomRef();
684
670
 
685
671
  assert.equal(onAfterRenderingSpy.callCount, 0, "onAfterRendering is not called");
@@ -695,7 +681,7 @@ sap.ui.define([
695
681
  onAfterRenderingSpy.resetHistory();
696
682
 
697
683
  oRootControl.invalidate();
698
- Core.applyChanges();
684
+ await nextUIUpdate();
699
685
  assert.equal(onAfterRenderingSpy.callCount, 0, "onAfterRendering is not called during rerender");
700
686
  assert.equal(onBeforeRenderingSpy.callCount, 2, "onBeforeRendering is called during rerender");
701
687
  assert.equal(oDomRef.textContent, "R/", "Children have still no output");
@@ -709,7 +695,7 @@ sap.ui.define([
709
695
  onAfterRenderingSpy.resetHistory();
710
696
 
711
697
  oRootControl.getItems()[0].setVisible(true);
712
- Core.applyChanges();
698
+ await nextUIUpdate();
713
699
  assert.equal(onAfterRenderingSpy.callCount, 1, "onAfterRendering is called for string rendering, visible=true");
714
700
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called for string rendering, visible=true");
715
701
  assert.equal(oDomRef.textContent, "R/S", "StringControl child has output");
@@ -717,7 +703,7 @@ sap.ui.define([
717
703
  onAfterRenderingSpy.resetHistory();
718
704
 
719
705
  oRootControl.getItems()[0].setVisible(false);
720
- Core.applyChanges();
706
+ await nextUIUpdate();
721
707
  assert.equal(onAfterRenderingSpy.callCount, 0, "onAfterRendering is not called for string rendering, visible=false");
722
708
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called for string rendering, visible=false");
723
709
  assert.equal(oDomRef.textContent, "R/", "StringControl has no output anymore");
@@ -725,7 +711,7 @@ sap.ui.define([
725
711
  onAfterRenderingSpy.resetHistory();
726
712
 
727
713
  oRootControl.getItems()[1].setVisible(true);
728
- Core.applyChanges();
714
+ await nextUIUpdate();
729
715
  assert.equal(onAfterRenderingSpy.callCount, 1, "onAfterRendering is called for patching control, visible=true");
730
716
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called for patching control, visible=true");
731
717
  assert.equal(oDomRef.textContent, "R/P", "PatchingControl child has output");
@@ -733,7 +719,7 @@ sap.ui.define([
733
719
  onAfterRenderingSpy.resetHistory();
734
720
 
735
721
  oRootControl.getItems()[1].setVisible(false);
736
- Core.applyChanges();
722
+ await nextUIUpdate();
737
723
  assert.equal(onAfterRenderingSpy.callCount, 0, "onAfterRendering is not called for patching control, visible=false");
738
724
  assert.equal(onBeforeRenderingSpy.callCount, 1, "onBeforeRendering is called for patching control, visible=false");
739
725
  assert.equal(oDomRef.textContent, "R/", "PatchingControl child has no output anymore");
@@ -743,7 +729,7 @@ sap.ui.define([
743
729
  oRootControl.destroy();
744
730
  });
745
731
 
746
- QUnit.test("Nested Mixture Rendering", function(assert) {
732
+ QUnit.test("Nested Mixture Rendering", async function(assert) {
747
733
  var oBeforeRenderingSpy = sinon.spy();
748
734
  var oDelegate = { onBeforeRendering: oBeforeRenderingSpy };
749
735
  var oRootControl = new PatchingControl({
@@ -774,19 +760,23 @@ sap.ui.define([
774
760
  ]
775
761
  });
776
762
  oRootControl.placeAt("qunit-fixture");
777
- Core.applyChanges();
763
+ await nextUIUpdate();
778
764
 
779
765
  var o1_1P = oRootControl.getItems()[0].getItems()[0];
780
766
  assert.notOk(oBeforeRenderingSpy.getCall(0).args[0].domInterface, "domInterface=false for the 1.1P/ because its string rendering parent 1S/ force it to render string as well");
781
767
  oBeforeRenderingSpy.resetHistory();
782
768
 
783
769
  o1_1P.invalidate();
784
- Core.applyChanges();
770
+ await nextUIUpdate();
785
771
  o1_1P.removeEventDelegate(oDelegate);
786
772
  oBeforeRenderingSpy.resetHistory();
787
773
 
774
+ var aMutations = [];
788
775
  var oDomRef = oRootControl.getDomRef();
789
- var oObserver = new MutationObserver(function() {});
776
+ var oObserver = new MutationObserver(function(mutations) {
777
+ aMutations = [];
778
+ aMutations = mutations;
779
+ });
790
780
 
791
781
  oObserver.observe(oDomRef, {
792
782
  characterDataOldValue: true,
@@ -797,13 +787,12 @@ sap.ui.define([
797
787
  subtree: true
798
788
  });
799
789
 
800
- var oDomRef = oRootControl.getDomRef();
801
790
  assert.equal(oDomRef.textContent, "R/1S/1.1P/1.2S/2P/2.1S/2.2P/", "Content is correct after initial rendering");
802
791
 
803
792
  oRootControl.invalidate();
804
- Core.applyChanges();
793
+ await nextUIUpdate();
805
794
 
806
- var aMutations = cleanupMutations(oObserver.takeRecords());
795
+ aMutations = cleanupMutations(aMutations);
807
796
  assert.equal(aMutations.length, 4, "Only 1S/ and 2.1S/ String controls need to be replaced");
808
797
  assert.equal(aMutations[0].addedNodes[0].textContent, "1S/1.1P/1.2S/", "New 1S/ String control is inserted with its children");
809
798
  assert.equal(aMutations[1].removedNodes[0].textContent, "1S/1.1P/1.2S/", "Old 1S/ String control is removed with its childre");
@@ -815,15 +804,15 @@ sap.ui.define([
815
804
  oRootControl.destroy();
816
805
  });
817
806
 
818
- QUnit.test("Preserved Area and Patching", function(assert) {
807
+ QUnit.test("Preserved Area and Patching", async function(assert) {
819
808
  var oPatchingControl = new PatchingControl();
820
809
  oPatchingControl.placeAt("qunit-fixture");
821
- Core.applyChanges();
810
+ await nextUIUpdate();
822
811
 
823
812
  oPatchingControl.getDomRef().setAttribute("data-sap-ui-preserve", oPatchingControl.getId());
824
813
  RenderManager.preserveContent(oPatchingControl.getDomRef(), true);
825
814
  oPatchingControl.setHeader("New Header");
826
- Core.applyChanges();
815
+ await nextUIUpdate();
827
816
 
828
817
  assert.equal(oPatchingControl.getDomRef().textContent, "PatchingControl", "PatchingControl control in the preserved area is not patched");
829
818
 
@@ -898,7 +887,7 @@ sap.ui.define([
898
887
  assert.equal(RenderManager.getApiVersion(NewestPatchingControlRenderer), 1, "apiVersion is not inherited from the base class");
899
888
  });
900
889
 
901
- QUnit.test("Focus Handler for Patching Controls", function(assert) {
890
+ QUnit.test("Focus Handler for Patching Controls", async function(assert) {
902
891
  var oChild1 = new PatchingControl({
903
892
  header: "1P"
904
893
  });
@@ -912,7 +901,7 @@ sap.ui.define([
912
901
  ]
913
902
  });
914
903
  oRootControl.placeAt("qunit-fixture");
915
- Core.applyChanges();
904
+ await nextUIUpdate();
916
905
 
917
906
  var oChild1GetFocusInfoSpy = sinon.spy(oChild1, "getFocusInfo");
918
907
  var oChild1ApplyFocusInfoSpy = sinon.spy(oChild1, "applyFocusInfo");
@@ -921,20 +910,20 @@ sap.ui.define([
921
910
 
922
911
  oChild1.focus();
923
912
  oChild1.invalidate();
924
- Core.applyChanges();
913
+ await nextUIUpdate();
925
914
  assert.ok(oChild1GetFocusInfoSpy.called, "Child1.getFocusInfo is called");
926
915
  assert.ok(oChild1ApplyFocusInfoSpy.called, "Child1.applyFocusInfo is called");
927
916
  assert.equal(document.activeElement, oChild1.getFocusDomRef(), "Child1 has still focus after rendering");
928
917
 
929
918
  oChild2.invalidate();
930
- Core.applyChanges();
919
+ await nextUIUpdate();
931
920
  assert.notOk(oChild2GetFocusInfoSpy.called, "Child2.getFocusInfo is not called");
932
921
  assert.notOk(oChild2ApplyFocusInfoSpy.called, "Child2.applyFocusInfo is not called");
933
922
  assert.equal(document.activeElement, oChild1.getFocusDomRef(), "Child1 has still focus after Child2 rendering");
934
923
 
935
924
  oChild2.focus();
936
925
  oRootControl.invalidate();
937
- Core.applyChanges();
926
+ await nextUIUpdate();
938
927
  assert.ok(oChild2GetFocusInfoSpy.called, "Child2.getFocusInfo is called");
939
928
  assert.ok(oChild2ApplyFocusInfoSpy.called, "Child2.applyFocusInfo is called");
940
929
  assert.equal(document.activeElement, oChild2.getFocusDomRef(), "Child2 has still focus after parent rendering");
@@ -953,14 +942,18 @@ sap.ui.define([
953
942
  this.oApiVerionStub = sinon.stub(PatchingControl.getMetadata().getRenderer(), "apiVersion").value(4);
954
943
  this.oBeforeRenderingSpy = sinon.spy(Control.prototype, "onBeforeRendering");
955
944
  },
956
- beforeEach: function() {
945
+ beforeEach: async function() {
957
946
  this.initControlTree();
958
947
  this.oRootControl.placeAt("qunit-fixture");
959
- Core.applyChanges();
948
+ await nextUIUpdate();
960
949
 
961
950
  this.oBeforeRenderingSpy.resetHistory();
962
951
  this.oDomRef = this.oRootControl.getDomRef();
963
- this.oObserver = new MutationObserver(function() {});
952
+ this.aMutations = [];
953
+ this.oObserver = new MutationObserver(function(mutations) {
954
+ this.aMutations = [];
955
+ this.aMutations = mutations;
956
+ }.bind(this));
964
957
  this.oObserver.observe(this.oDomRef, {
965
958
  characterData: true,
966
959
  attributes: true,
@@ -968,11 +961,10 @@ sap.ui.define([
968
961
  subtree: true
969
962
  });
970
963
  },
971
- act: function(fnAct) {
964
+ act: async function(fnAct) {
972
965
  this.oBeforeRenderingSpy.resetHistory();
973
- this.oObserver.takeRecords();
974
966
  fnAct.call(this);
975
- Core.applyChanges();
967
+ await nextUIUpdate();
976
968
  },
977
969
  afterEach: function() {
978
970
  this.oObserver.disconnect();
@@ -1008,42 +1000,42 @@ sap.ui.define([
1008
1000
  assert.equal(this.oDomRef.textContent, "R/1P/1.1P/1.2P/", "Content is correct after initial rendering");
1009
1001
  });
1010
1002
 
1011
- QUnit.test("Insert a new aggregation", function(assert) {
1003
+ QUnit.test("Insert a new aggregation", async function(assert) {
1012
1004
  var oNewControl = new PatchingControl({header: "2P/"});
1013
- this.act(function() {
1005
+ await this.act(function() {
1014
1006
  this.oRootControl.addItem(oNewControl);
1015
1007
  });
1016
1008
 
1017
1009
  assert.equal(this.oDomRef.textContent, "R/1P/1.1P/1.2P/2P/", "The new control has been rendered correctly");
1018
- assert.equal(this.oObserver.takeRecords().length, 1, "Only the new control has been rendered");
1010
+ assert.equal(this.aMutations.length, 1, "Only the new control has been rendered");
1019
1011
  assert.equal(this.oBeforeRenderingSpy.callCount, 2, "oBeforeRenderingSpy is only called for the root and new control");
1020
1012
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.oRootControl), "oBeforeRenderingSpy is called on the root control");
1021
1013
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(oNewControl), "oBeforeRenderingSpy is called on the new control");
1022
1014
  });
1023
1015
 
1024
- QUnit.test("Make a parent control invisible and then visible", function(assert) {
1025
- this.act(function() {
1016
+ QUnit.test("Make a parent control invisible and then visible", async function(assert) {
1017
+ await this.act(function() {
1026
1018
  this.o1P.setVisible(false);
1027
1019
  });
1028
1020
 
1029
1021
  assert.equal(this.oDomRef.textContent, "R/", "1P/ control and its children are not rendered");
1030
- assert.equal(this.oObserver.takeRecords().length, 1, "Control 1P/ DOM node and its children replaced with the invisible placeholder");
1022
+ assert.equal(this.aMutations.length, 1, "Control 1P/ DOM node and its children replaced with the invisible placeholder");
1031
1023
  assert.ok(document.getElementById(RenderManager.createInvisiblePlaceholderId(this.o1P)), "Invisible placeholder has been rendered");
1032
1024
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.o1P), "oBeforeRenderingSpy is called on the 1P Control");
1033
1025
 
1034
- this.act(function() {
1026
+ await this.act(function() {
1035
1027
  this.o1P.setVisible(true);
1036
1028
  });
1037
1029
  assert.equal(this.oDomRef.textContent, "R/1P/1.1P/1.2P/", "Visible item and its children are rendered correctly");
1038
- assert.equal(this.oObserver.takeRecords().length, 1, "invisible placeholder DOM is replaced with the item DOM that contains children");
1030
+ assert.equal(this.aMutations.length, 1, "invisible placeholder DOM is replaced with the item DOM that contains children");
1039
1031
  assert.equal(this.oBeforeRenderingSpy.callCount, 3, "oBeforeRenderingSpy is called for the root invisible control and its children");
1040
1032
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.o1P), "oBeforeRenderingSpy is called for the root invisible item 1P/");
1041
1033
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1_1P), "oBeforeRenderingSpy is called for the invisible item 1.1P/");
1042
1034
  assert.ok(this.oBeforeRenderingSpy.getCall(2).calledOn(this.o1_2P), "oBeforeRenderingSpy is called for the invisible item 1.2P/");
1043
1035
  });
1044
1036
 
1045
- QUnit.test("Child invalidation while parent rendering can be skipped", function(assert) {
1046
- this.act(function() {
1037
+ QUnit.test("Child invalidation while parent rendering can be skipped", async function(assert) {
1038
+ await this.act(function() {
1047
1039
  this.oRootControl.setHeader("RNew/");
1048
1040
  this.o1_1P.setHeader("1.1PNew/");
1049
1041
  assert.ok(this.oRootControl._bNeedsRendering, "parent of 1P/ is invalidated");
@@ -1052,20 +1044,20 @@ sap.ui.define([
1052
1044
  });
1053
1045
 
1054
1046
  assert.equal(this.oDomRef.textContent, "RNew/1P/1.1PNew/1.2P/", "New headers are rendered correctly");
1055
- assert.equal(this.oObserver.takeRecords().length, 2, "Header for the root control and header for 1.1P/ are set");
1047
+ assert.equal(this.aMutations.length, 2, "Header for the root control and header for 1.1P/ are set");
1056
1048
  assert.equal(this.oBeforeRenderingSpy.callCount, 2, "oBeforeRenderingSpy is only called for the root control and the 1.1P/ control");
1057
1049
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.oRootControl), "oBeforeRenderingSpy is called on the root control");
1058
1050
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1_1P), "oBeforeRenderingSpy is called on the 1.1P/ control");
1059
1051
  });
1060
1052
 
1061
- QUnit.test("Make an invisible child visible while parent rendering can be skipped", function(assert) {
1062
- this.act(function() {
1053
+ QUnit.test("Make an invisible child visible while parent rendering can be skipped", async function(assert) {
1054
+ await this.act(function() {
1063
1055
  this.o1_1P.setVisible(false);
1064
1056
  });
1065
1057
 
1066
1058
  assert.equal(this.oDomRef.textContent, "R/1P/1.2P/", "1.1P/ control made invisible");
1067
1059
 
1068
- this.act(function() {
1060
+ await this.act(function() {
1069
1061
  this.oRootControl.setHeader("RNew/");
1070
1062
  this.o1_1P.setVisible(true);
1071
1063
  });
@@ -1073,19 +1065,19 @@ sap.ui.define([
1073
1065
  assert.equal(this.oDomRef.textContent, "RNew/1P/1.1P/1.2P/", "New header is rendered correctly and 1.1P/ control is now visible");
1074
1066
  });
1075
1067
 
1076
- QUnit.test("Rearrange aggregations", function(assert) {
1077
- this.act(function() {
1068
+ QUnit.test("Rearrange aggregations", async function(assert) {
1069
+ await this.act(function() {
1078
1070
  this.o1P.insertItem(this.o1P.removeItem(0), 1); // swap 1.1P/ and 1.2P/
1079
1071
  });
1080
1072
 
1081
1073
  assert.equal(this.oDomRef.textContent, "R/1P/1.2P/1.1P/", "Reordered items are rendered correctly");
1082
- assert.equal(this.oObserver.takeRecords().length, 2, "Only reordered item DOM nodes are swapped");
1074
+ assert.equal(this.aMutations.length, 2, "Only reordered item DOM nodes are swapped");
1083
1075
  assert.equal(this.oBeforeRenderingSpy.callCount, 1, "oBeforeRenderingSpy is called only once for the parent control 1P/");
1084
1076
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.o1P), "oBeforeRenderingSpy is called on the 1P/ control, moving items do not invalidate items");
1085
1077
  });
1086
1078
 
1087
- QUnit.test("Invalidations while controls are not in a UIArea", function(assert) {
1088
- this.act(function() {
1079
+ QUnit.test("Invalidations while controls are not in a UIArea", async function(assert) {
1080
+ await this.act(function() {
1089
1081
  var o1P = this.oRootControl.removeItem(0);
1090
1082
  assert.notOk(o1P.getUIArea(), "1P/ has no UIArea");
1091
1083
  o1P.getItems()[0].setHeader("1.1PNew/");
@@ -1093,47 +1085,50 @@ sap.ui.define([
1093
1085
  });
1094
1086
 
1095
1087
  assert.equal(this.oDomRef.textContent, "R/1P/1.1PNew/1.2P/", "Header of the item is applied correctly, even invalidation is happened while the control had no UIArea");
1096
- assert.equal(cleanupMutations(this.oObserver.takeRecords()).length, 1, "Only the text content of the item is changed");
1088
+ assert.equal(cleanupMutations(this.aMutations).length, 1, "Only the text content of the item is changed");
1097
1089
  assert.equal(this.oBeforeRenderingSpy.callCount, 3, "oBeforeRenderingSpy is called on the root control, 1P/ and 1.1P/");
1098
1090
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.oRootControl), "oBeforeRenderingSpy is called on the RootControl");
1099
1091
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1P), "oBeforeRenderingSpy is called on the 1P/ since invalidation of child bubbled while child has no UIArea ");
1100
1092
  assert.ok(this.oBeforeRenderingSpy.getCall(2).calledOn(this.o1_1P), "oBeforeRenderingSpy is called on the 1.1P/");
1101
1093
  });
1102
1094
 
1103
- QUnit.test("Rendering event delegates and data-sap-ui-render marker", function(assert) {
1104
- ["onAfterRendering", "onBeforeRendering"].forEach(function(sRenderingDelegate) {
1105
- var oDelegate = {};
1106
- oDelegate[sRenderingDelegate] = Function.prototype;
1095
+ QUnit.test("Rendering event delegates and data-sap-ui-render marker", async function(assert) {
1096
+ async function addDelegate(sRenderingDelegate) {
1097
+ var oDelegate = {};
1098
+ oDelegate[sRenderingDelegate] = Function.prototype;
1107
1099
 
1108
- assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not yet set for the 1P/");
1109
- this.o1P.addEventDelegate(oDelegate);
1110
- assert.ok(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is set for the 1P/ after the rendering delegate is added");
1100
+ assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not yet set for the 1P/");
1101
+ this.o1P.addEventDelegate(oDelegate);
1102
+ assert.ok(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is set for the 1P/ after the rendering delegate is added");
1111
1103
 
1112
- this.act(function() {
1113
- this.oRootControl.invalidate();
1114
- });
1115
- assert.ok(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is set for the 1P/ after rerendering");
1116
- assert.equal(this.oBeforeRenderingSpy.callCount, 2, "oBeforeRenderingSpy is called on the root and 1P/ since data-sap-ui-render marker does not allow skipping for 1P/");
1104
+ await this.act(function() {
1105
+ this.oRootControl.invalidate();
1106
+ });
1107
+ assert.ok(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is set for the 1P/ after rerendering");
1108
+ assert.equal(this.oBeforeRenderingSpy.callCount, 2, "oBeforeRenderingSpy is called on the root and 1P/ since data-sap-ui-render marker does not allow skipping for 1P/");
1117
1109
 
1118
- this.o1P.removeEventDelegate(oDelegate);
1119
- assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is removed since there is no more rendering delegate for the 1P/");
1110
+ this.o1P.removeEventDelegate(oDelegate);
1111
+ assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is removed since there is no more rendering delegate for the 1P/");
1120
1112
 
1121
- oDelegate.canSkipRendering = true;
1122
- this.o1P.addEventDelegate(oDelegate);
1123
- assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not set since canSkipRendering is true");
1113
+ oDelegate.canSkipRendering = true;
1114
+ this.o1P.addEventDelegate(oDelegate);
1115
+ assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not set since canSkipRendering is true");
1124
1116
 
1125
- this.act(function() {
1126
- this.oRootControl.invalidate();
1127
- });
1128
- assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is still not set for the 1P/ after rerendering");
1129
- assert.equal(this.oBeforeRenderingSpy.callCount, 1, "oBeforeRenderingSpy is called only on the root control since 1P/ rendering can be skipped");
1130
- }, this);
1117
+ await this.act(function() {
1118
+ this.oRootControl.invalidate();
1119
+ });
1120
+ assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is still not set for the 1P/ after rerendering");
1121
+ assert.equal(this.oBeforeRenderingSpy.callCount, 1, "oBeforeRenderingSpy is called only on the root control since 1P/ rendering can be skipped");
1122
+ }
1123
+
1124
+ await addDelegate.call(this, "onBeforeRendering");
1125
+ await addDelegate.call(this, "onAfterRendering");
1131
1126
  });
1132
1127
 
1133
- QUnit.test("enhanceAccessibilityState and data-sap-ui-render marker", function(assert) {
1128
+ QUnit.test("enhanceAccessibilityState and data-sap-ui-render marker", async function(assert) {
1134
1129
  assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not yet set for the 1P/");
1135
1130
 
1136
- this.act(function() {
1131
+ await this.act(function() {
1137
1132
  this.oRootControl.enhanceAccessibilityState = function(oItem, mAriaProps) {
1138
1133
  mAriaProps.role = "RoleFromParent";
1139
1134
  };
@@ -1142,14 +1137,14 @@ sap.ui.define([
1142
1137
  assert.ok(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is set for the 1P/ because parent implements the enhanceAccessibilityState");
1143
1138
  assert.equal(this.o1P.getDomRef().getAttribute("role"), "RoleFromParent", "role attribute of 1P/ is taken from the parent#enhanceAccessibilityState");
1144
1139
 
1145
- this.act(function() {
1140
+ await this.act(function() {
1146
1141
  this.oRootControl.enhanceAccessibilityState = function(oItem, mAriaProps) { /*nothing is changed here intentionally for testing */ };
1147
1142
  this.o1P.invalidate();
1148
1143
  });
1149
1144
  assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not set because the enhanceAccessibilityState does not change anything");
1150
1145
  assert.notOk(this.o1P.getDomRef().getAttribute("role"), "There is no role set for the 1P/ since parent#enhanceAccessibilityState is empty");
1151
1146
 
1152
- this.act(function() {
1147
+ await this.act(function() {
1153
1148
  this.oRootControl.enhanceAccessibilityState = function(oItem, mAriaProps) {
1154
1149
  mAriaProps.role = "RoleFromParent";
1155
1150
  mAriaProps.canSkipRendering = true;
@@ -1159,14 +1154,14 @@ sap.ui.define([
1159
1154
  assert.notOk(this.o1P.getDomRef().hasAttribute("data-sap-ui-render"), "data-sap-ui-render marker is not set because the enhanceAccessibilityState uses canSkipRendering flag");
1160
1155
  });
1161
1156
 
1162
- QUnit.test("enhanceAccessibilityState and rendering skip", function(assert) {
1157
+ QUnit.test("enhanceAccessibilityState and rendering skip", async function(assert) {
1163
1158
  this.oRootControl.enhanceAccessibilityState = function(oItem, mAriaProps) {
1164
1159
  mAriaProps.role = "newRoleFromParent";
1165
1160
  mAriaProps.setsize = this.getItems().length;
1166
1161
  mAriaProps.posinset = this.indexOfItem(oItem) + 1;
1167
1162
  };
1168
1163
 
1169
- this.act(function() {
1164
+ await this.act(function() {
1170
1165
  this.o1P.invalidate();
1171
1166
  });
1172
1167
  assert.equal(this.o1P.getDomRef().getAttribute("role"), "newRoleFromParent", "enhanceAccessibilityState is called on the parent and role is set correctly for 1P/");
@@ -1174,7 +1169,7 @@ sap.ui.define([
1174
1169
  assert.equal(this.o1P.getDomRef().getAttribute("aria-setsize"), 1, "enhanceAccessibilityState is called on the parent and setsize is set correctly for 1P/");
1175
1170
 
1176
1171
  var oNewControl = new PatchingControl({header: "0P/"});
1177
- this.act(function() {
1172
+ await this.act(function() {
1178
1173
  this.oRootControl.insertItem(oNewControl, 0);
1179
1174
  });
1180
1175
  assert.equal(this.oDomRef.textContent, "R/0P/1P/1.1P/1.2P/", "The new 0P/ control is rendered in correct position");
@@ -1186,18 +1181,18 @@ sap.ui.define([
1186
1181
  });
1187
1182
  });
1188
1183
 
1189
- QUnit.test("DragInfo and DragInfo invalidations", function(assert) {
1184
+ QUnit.test("DragInfo and DragInfo invalidations", async function(assert) {
1190
1185
  var oDragInfo = new DragInfo({
1191
1186
  sourceAggregation: "items"
1192
1187
  });
1193
1188
 
1194
- this.act(function() {
1189
+ await this.act(function() {
1195
1190
  this.oRootControl.addDragDropConfig(oDragInfo);
1196
1191
  });
1197
1192
  assert.ok(this.o1P.getDomRef().draggable, "Item is draggable after rendering, although invalidation was only on the root control the rendering of the item is not skipped");
1198
1193
  assert.equal(this.oBeforeRenderingSpy.callCount, 2, "oBeforeRenderingSpy is called on the root and 1P/");
1199
1194
 
1200
- this.act(function() {
1195
+ await this.act(function() {
1201
1196
  oDragInfo.setEnabled(false);
1202
1197
  });
1203
1198
  assert.notOk(this.o1P.getDomRef().draggable, "Item is not draggable, although invalidation was only on the root control the rendering of the item is not skipped");
@@ -1227,14 +1222,14 @@ sap.ui.define([
1227
1222
  assert.equal(this.oDomRef.textContent, "R/1P/1.1P/1.2S/", "Content is correct after initial rendering");
1228
1223
  });
1229
1224
 
1230
- QUnit.test("Insert a new aggregation", function(assert) {
1225
+ QUnit.test("Insert a new aggregation", async function(assert) {
1231
1226
  var oNewControl = new PatchingControl({header: "2P/"});
1232
- this.act(function() {
1227
+ await this.act(function() {
1233
1228
  this.oRootControl.addItem(oNewControl);
1234
1229
  });
1235
1230
 
1236
1231
  assert.equal(this.oDomRef.textContent, "R/1P/1.1P/1.2S/2P/", "New control (2P) is rendered correctly");
1237
- assert.equal(cleanupMutations(this.oObserver.takeRecords()).length, 3, "The new control (2P) is rendered and string control(1.2S) is replaced(removed+inserted)");
1232
+ assert.equal(cleanupMutations(this.aMutations).length, 3, "The new control (2P) is rendered and string control(1.2S) is replaced(removed+inserted)");
1238
1233
  assert.equal(this.oBeforeRenderingSpy.callCount, 4, "oBeforeRenderingSpy is called for all controls except the PatchingControl 1.1P/");
1239
1234
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.oRootControl), "oBeforeRenderingSpy is called on the root control, since it contains a StringControl we cannot skip its rendering");
1240
1235
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1P), "oBeforeRenderingSpy is called on the 1P, since it contains a StringControl we cannot skip its rendering");
@@ -1242,8 +1237,8 @@ sap.ui.define([
1242
1237
  assert.ok(this.oBeforeRenderingSpy.getCall(3).calledOn(oNewControl), "oBeforeRenderingSpy is called on the new control");
1243
1238
  });
1244
1239
 
1245
- QUnit.test("Child invalidation while parent rendering can be skipped", function(assert) {
1246
- this.act(function() {
1240
+ QUnit.test("Child invalidation while parent rendering can be skipped", async function(assert) {
1241
+ await this.act(function() {
1247
1242
  this.oRootControl.setHeader("RNew/");
1248
1243
  this.o1_1P.setHeader("1.1PNew/");
1249
1244
  assert.ok(this.oRootControl._bNeedsRendering, "parent of 1P/ is invalidated");
@@ -1252,7 +1247,7 @@ sap.ui.define([
1252
1247
  });
1253
1248
 
1254
1249
  assert.equal(this.oDomRef.textContent, "RNew/1P/1.1PNew/1.2S/", "New headers are rendered correctly");
1255
- assert.equal(cleanupMutations(this.oObserver.takeRecords()).length, 4, "Characterdata for root/child are set and the StringControl is replaced even though its parent is not invalidated");
1250
+ assert.equal(cleanupMutations(this.aMutations).length, 4, "Characterdata for root/child are set and the StringControl is replaced even though its parent is not invalidated");
1256
1251
  assert.equal(this.oBeforeRenderingSpy.callCount, 4, "oBeforeRenderingSpy is called for all controls");
1257
1252
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.oRootControl), "oBeforeRenderingSpy is called on the root control, since it contains StringControl");
1258
1253
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1P), "oBeforeRenderingSpy is called on the first child control(1P), since it contains StringControl");
@@ -1260,21 +1255,21 @@ sap.ui.define([
1260
1255
  assert.ok(this.oBeforeRenderingSpy.getCall(3).calledOn(this.o1_2S), "oBeforeRenderingSpy is called on the StringControl");
1261
1256
  });
1262
1257
 
1263
- QUnit.test("Re-rendering", function(assert) {
1264
- this.act(function() {
1258
+ QUnit.test("Re-rendering", async function(assert) {
1259
+ await this.act(function() {
1265
1260
  this.oRootControl.invalidate();
1266
1261
  });
1267
1262
 
1268
1263
  assert.equal(this.oDomRef.textContent, "R/1P/1.1P/1.2S/", "Content is not changed after rerendering");
1269
1264
  assert.equal(this.oBeforeRenderingSpy.callCount, 3, "oBeforeRenderingSpy is called for the StringControl and its parents, since rendering skip is blocked by the StringControl");
1270
- assert.equal(cleanupMutations(this.oObserver.takeRecords()).length, 2, "The StringControl is replaced(removed+inserted)");
1265
+ assert.equal(cleanupMutations(this.aMutations).length, 2, "The StringControl is replaced(removed+inserted)");
1271
1266
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.oRootControl), "oBeforeRenderingSpy is called on the root control, since it contains StringControl");
1272
1267
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1P), "oBeforeRenderingSpy is called on the first child control(1P), since it contains StringControl");
1273
1268
  assert.ok(this.oBeforeRenderingSpy.getCall(2).calledOn(this.o1_2S), "oBeforeRenderingSpy is called on the StringControl");
1274
1269
  });
1275
1270
 
1276
- QUnit.test("EnabledPropagator", function(assert) {
1277
- this.act(function() {
1271
+ QUnit.test("EnabledPropagator", async function(assert) {
1272
+ await this.act(function() {
1278
1273
  this.oRootControl.setEnabled(false);
1279
1274
  });
1280
1275
 
@@ -1283,7 +1278,7 @@ sap.ui.define([
1283
1278
  assert.ok(this.o1_1P.$().hasClass("Disabled"), "Grand child PatchingControl(1.1P/) is disabled via EnabledPropagator as well");
1284
1279
  assert.notOk(this.o1_2S.$().hasClass("Disabled"), "StringControl is not disabled since EnabledPropagator is not implemented by the StringControl");
1285
1280
 
1286
- this.act(function() {
1281
+ await this.act(function() {
1287
1282
  this.oRootControl.setEnabled(true);
1288
1283
  });
1289
1284
 
@@ -1292,7 +1287,7 @@ sap.ui.define([
1292
1287
  assert.notOk(this.o1_1P.$().hasClass("Disabled"), "Grand child PatchingControl(1.1PNew) is enabled via EnabledPropagator as well");
1293
1288
  assert.notOk(this.o1_2S.$().hasClass("Disabled"), "StringControl was not disabled anyway since EnabledPropagator was not implemented by the StringControl");
1294
1289
 
1295
- this.act(function() {
1290
+ await this.act(function() {
1296
1291
  this.o1_1P.useEnabledPropagator(false);
1297
1292
  this.oRootControl.setEnabled(false);
1298
1293
  });
@@ -1301,29 +1296,29 @@ sap.ui.define([
1301
1296
  assert.notOk(this.o1_1P.$().hasClass("Disabled"), "Control 1.1P/ is not disabled since it is excluded from the EnabledPropagator with useEnabledPropagator method");
1302
1297
  });
1303
1298
 
1304
- QUnit.test("Rearrange aggregations", function(assert) {
1305
- this.act(function() {
1299
+ QUnit.test("Rearrange aggregations", async function(assert) {
1300
+ await this.act(function() {
1306
1301
  this.o1P.insertItem(this.o1P.removeItem(0), 1); // swap 1.1P/ and 1.2S/
1307
1302
  });
1308
1303
 
1309
1304
  assert.equal(this.oDomRef.textContent, "R/1P/1.2S/1.1P/", "Reordered items are rendered correctly");
1310
- assert.equal(cleanupMutations(this.oObserver.takeRecords()).length, 2, "String control DOM node is not reused, a new string control DOM created and the original one is removed");
1305
+ assert.equal(cleanupMutations(this.aMutations).length, 2, "String control DOM node is not reused, a new string control DOM created and the original one is removed");
1311
1306
  assert.equal(this.oBeforeRenderingSpy.callCount, 2, "oBeforeRenderingSpy is called for the parent control 1P/ but also for the String control");
1312
1307
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.o1P), "oBeforeRenderingSpy is called on the 1P/ control, moving items do not invalidate items");
1313
1308
  assert.ok(this.oBeforeRenderingSpy.getCall(1).calledOn(this.o1_2S), "oBeforeRenderingSpy is called on the string control since its rendering cannot be skipped");
1314
1309
  });
1315
1310
 
1316
- QUnit.test("Make a parent control invisible", function(assert) {
1317
- this.act(function() {
1311
+ QUnit.test("Make a parent control invisible", async function(assert) {
1312
+ await this.act(function() {
1318
1313
  this.o1P.setVisible(false);
1319
1314
  });
1320
1315
 
1321
1316
  assert.equal(this.oDomRef.textContent, "R/", "1P/ control and its children are not rendered");
1322
- assert.equal(this.oObserver.takeRecords().length, 1, "Control 1P/ DOM node and its children replaced with the invisible placeholder");
1317
+ assert.equal(this.aMutations.length, 1, "Control 1P/ DOM node and its children replaced with the invisible placeholder");
1323
1318
  assert.ok(document.getElementById(RenderManager.createInvisiblePlaceholderId(this.o1P)), "Invisible placeholder has been rendered");
1324
1319
  assert.ok(this.oBeforeRenderingSpy.getCall(0).calledOn(this.o1P), "oBeforeRenderingSpy is called on the 1P Control");
1325
1320
 
1326
- this.act(function() {
1321
+ await this.act(function() {
1327
1322
  this.oRootControl.invalidate();
1328
1323
  });
1329
1324
 
@@ -1333,14 +1328,14 @@ sap.ui.define([
1333
1328
  assert.equal(this.oObserver.takeRecords().length, 0, "No mutation parent control is a Patching control");
1334
1329
  });
1335
1330
 
1336
- QUnit.test("No rendering skip", function(assert) {
1337
- this.act(function() {
1331
+ QUnit.test("No rendering skip", async function(assert) {
1332
+ await this.act(function() {
1338
1333
  this.oApiVerionStub.restore();
1339
1334
  this.oRootControl.invalidate();
1340
1335
  });
1341
1336
 
1342
1337
  assert.equal(this.oBeforeRenderingSpy.callCount, 4, "oBeforeRenderingSpy is called for the root control and every control within the root control");
1343
- assert.equal(cleanupMutations(this.oObserver.takeRecords()).length, 2, "String rendering control must be removed and inserted on parent rerendering");
1338
+ assert.equal(cleanupMutations(this.aMutations).length, 2, "String rendering control must be removed and inserted on parent rerendering");
1344
1339
  });
1345
1340
 
1346
1341
  QUnit.module("invalidation during rendering", {
@@ -1446,7 +1441,7 @@ sap.ui.define([
1446
1441
  }
1447
1442
  });
1448
1443
 
1449
- QUnit.test("child invalidates while parent renders initially, but before parent renders it", function(assert) {
1444
+ QUnit.test("child invalidates while parent renders initially, but before parent renders it", async function(assert) {
1450
1445
  var oParent = new this.ParentWithInvalidatingChildren({
1451
1446
  invalidatesBefore: this.oChild
1452
1447
  }).placeAt("qunit-fixture");
@@ -1456,7 +1451,7 @@ sap.ui.define([
1456
1451
  });
1457
1452
 
1458
1453
  // act
1459
- Core.applyChanges();
1454
+ await nextUIUpdate();
1460
1455
 
1461
1456
  // assert
1462
1457
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent only rendered once");
@@ -1468,7 +1463,7 @@ sap.ui.define([
1468
1463
  oParent.destroy();
1469
1464
  });
1470
1465
 
1471
- QUnit.test("child in an element container invalidates while parent renders initially, but before parent renders it", function(assert) {
1466
+ QUnit.test("child in an element container invalidates while parent renders initially, but before parent renders it", async function(assert) {
1472
1467
  var oContainer = new this.InvalidatingChildContainer({
1473
1468
  content: this.oChild
1474
1469
  });
@@ -1481,7 +1476,7 @@ sap.ui.define([
1481
1476
  });
1482
1477
 
1483
1478
  // act
1484
- Core.applyChanges();
1479
+ await nextUIUpdate();
1485
1480
 
1486
1481
  // assert
1487
1482
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent that contains element only rendered once");
@@ -1492,7 +1487,7 @@ sap.ui.define([
1492
1487
  oParent.destroy();
1493
1488
  });
1494
1489
 
1495
- QUnit.test("child invalidates while parent renders initially, but after parent has rendered it", function(assert) {
1490
+ QUnit.test("child invalidates while parent renders initially, but after parent has rendered it", async function(assert) {
1496
1491
  var oParent = new this.ParentWithInvalidatingChildren({
1497
1492
  invalidatesAfter: this.oChild
1498
1493
  }).placeAt("qunit-fixture");
@@ -1502,7 +1497,7 @@ sap.ui.define([
1502
1497
  });
1503
1498
 
1504
1499
  // act
1505
- Core.applyChanges();
1500
+ await nextUIUpdate();
1506
1501
 
1507
1502
  // assert
1508
1503
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent only rendered once");
@@ -1513,7 +1508,7 @@ sap.ui.define([
1513
1508
  oParent.destroy();
1514
1509
  });
1515
1510
 
1516
- QUnit.test("child invalidates while parent renders initially, but parent does never render it", function(assert) {
1511
+ QUnit.test("child invalidates while parent renders initially, but parent does never render it", async function(assert) {
1517
1512
  var oParent = new this.ParentWithInvalidatingChildren({
1518
1513
  neverRendered: this.oChild
1519
1514
  }).placeAt("qunit-fixture");
@@ -1523,7 +1518,7 @@ sap.ui.define([
1523
1518
  });
1524
1519
 
1525
1520
  // act
1526
- Core.applyChanges();
1521
+ await nextUIUpdate();
1527
1522
 
1528
1523
  // assert
1529
1524
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent only rendered once");
@@ -1534,7 +1529,7 @@ sap.ui.define([
1534
1529
  oParent.destroy();
1535
1530
  });
1536
1531
 
1537
- QUnit.test("child invalidates while parent re-renders, but before parent renders it", function(assert) {
1532
+ QUnit.test("child invalidates while parent re-renders, but before parent renders it", async function(assert) {
1538
1533
  var oParent = new this.ParentWithInvalidatingChildren({
1539
1534
  invalidatesBefore: this.oChild
1540
1535
  }).placeAt("qunit-fixture");
@@ -1542,13 +1537,13 @@ sap.ui.define([
1542
1537
  oParent.addEventDelegate({
1543
1538
  onBeforeRendering: oParentOnBeforeRenderingSpy
1544
1539
  });
1545
- Core.applyChanges();
1540
+ await nextUIUpdate();
1546
1541
  this.onBeforeRenderingSpy.resetHistory();
1547
1542
  oParentOnBeforeRenderingSpy.resetHistory();
1548
1543
 
1549
1544
  // act
1550
1545
  oParent.invalidate();
1551
- Core.applyChanges();
1546
+ await nextUIUpdate();
1552
1547
 
1553
1548
  // assert
1554
1549
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent only rendered once");
@@ -1559,7 +1554,7 @@ sap.ui.define([
1559
1554
  oParent.destroy();
1560
1555
  });
1561
1556
 
1562
- QUnit.test("child invalidates while parent re-renders, but after parent has rendered it", function(assert) {
1557
+ QUnit.test("child invalidates while parent re-renders, but after parent has rendered it", async function(assert) {
1563
1558
  var oParent = new this.ParentWithInvalidatingChildren({
1564
1559
  invalidatesAfter: this.oChild
1565
1560
  }).placeAt("qunit-fixture");
@@ -1567,13 +1562,13 @@ sap.ui.define([
1567
1562
  oParent.addEventDelegate({
1568
1563
  onBeforeRendering: oParentOnBeforeRenderingSpy
1569
1564
  });
1570
- Core.applyChanges();
1565
+ await nextUIUpdate();
1571
1566
  this.onBeforeRenderingSpy.resetHistory();
1572
1567
  oParentOnBeforeRenderingSpy.resetHistory();
1573
1568
 
1574
1569
  // act
1575
1570
  oParent.invalidate();
1576
- Core.applyChanges();
1571
+ await nextUIUpdate();
1577
1572
 
1578
1573
  // assert
1579
1574
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent only rendered once");
@@ -1584,7 +1579,7 @@ sap.ui.define([
1584
1579
  oParent.destroy();
1585
1580
  });
1586
1581
 
1587
- QUnit.test("child invalidates while parent re-renders, but parent does never render it", function(assert) {
1582
+ QUnit.test("child invalidates while parent re-renders, but parent does never render it", async function(assert) {
1588
1583
  var oParent = new this.ParentWithInvalidatingChildren({
1589
1584
  neverRendered: this.oChild
1590
1585
  }).placeAt("qunit-fixture");
@@ -1592,13 +1587,13 @@ sap.ui.define([
1592
1587
  oParent.addEventDelegate({
1593
1588
  onBeforeRendering: oParentOnBeforeRenderingSpy
1594
1589
  });
1595
- Core.applyChanges();
1590
+ await nextUIUpdate();
1596
1591
  this.onBeforeRenderingSpy.resetHistory();
1597
1592
  oParentOnBeforeRenderingSpy.resetHistory();
1598
1593
 
1599
1594
  // act
1600
1595
  oParent.invalidate();
1601
- Core.applyChanges();
1596
+ await nextUIUpdate();
1602
1597
 
1603
1598
  // assert
1604
1599
  assert.strictEqual(oParentOnBeforeRenderingSpy.callCount, 1, "parent only rendered once");
@@ -1614,7 +1609,7 @@ sap.ui.define([
1614
1609
  this.oApiVerionStub = sinon.stub(PatchingControl.getMetadata().getRenderer(), "apiVersion").value(4);
1615
1610
  this.oJSONModel = new JSONModel([{ header: "Header1"}, { header: "Header2"} ]);
1616
1611
  },
1617
- beforeEach: function() {
1612
+ beforeEach: async function() {
1618
1613
  this.oParent = new PatchingControl({
1619
1614
  models: this.oJSONModel,
1620
1615
  items: {
@@ -1625,7 +1620,7 @@ sap.ui.define([
1625
1620
  }
1626
1621
  });
1627
1622
  this.oParent.placeAt("qunit-fixture");
1628
- Core.applyChanges();
1623
+ await nextUIUpdate();
1629
1624
  },
1630
1625
  afterEach: function() {
1631
1626
  this.oParent.destroy();
@@ -1636,7 +1631,7 @@ sap.ui.define([
1636
1631
  }
1637
1632
  });
1638
1633
 
1639
- QUnit.test("Insert aggregation with bSupressInvalidate=true and binding propagation should be reflected in the child", function(assert) {
1634
+ QUnit.test("Insert aggregation with bSupressInvalidate=true and binding propagation should be reflected in the child", async function(assert) {
1640
1635
  var oChild = this.oParent.getItems()[0];
1641
1636
  var sId = oChild.getId();
1642
1637
  this.oParent.destroyAggregation("items", "KeepDom");
@@ -1655,14 +1650,14 @@ sap.ui.define([
1655
1650
  assert.ok(oNewChildInvalidateSpy.calledOnce, "Invalidate is called for the header property change on the child");
1656
1651
 
1657
1652
  this.oParent.invalidate();
1658
- Core.applyChanges();
1653
+ await nextUIUpdate();
1659
1654
  assert.strictEqual(oNewChild.getDomRef().textContent, "Header2", "new child dom is rendered correctly");
1660
1655
 
1661
1656
  oNewChildInvalidateSpy.restore();
1662
1657
  oParentInvalidateSpy.restore();
1663
1658
  });
1664
1659
 
1665
- QUnit.test("Move aggregation with bSupressInvalidate=true and rendering should start for the child only once", function(assert) {
1660
+ QUnit.test("Move aggregation with bSupressInvalidate=true and rendering should start for the child only once", async function(assert) {
1666
1661
  var oAnotherParent = new PatchingControl({
1667
1662
  models: this.oJSONModel,
1668
1663
  items: {
@@ -1673,10 +1668,10 @@ sap.ui.define([
1673
1668
  }
1674
1669
  });
1675
1670
  oAnotherParent.placeAt("qunit-fixture");
1676
- Core.applyChanges();
1671
+ await nextUIUpdate();
1677
1672
 
1678
1673
  oAnotherParent.destroyItems();
1679
- Core.applyChanges();
1674
+ await nextUIUpdate();
1680
1675
 
1681
1676
  var oBinding = this.oParent.getBinding("items");
1682
1677
  var oSecondContext = oBinding.getContexts(1, 1)[0];
@@ -1686,7 +1681,7 @@ sap.ui.define([
1686
1681
  oChild.onAfterRendering = sinon.spy();
1687
1682
  oAnotherParent.addAggregation("items", oChild, true);
1688
1683
  oAnotherParent.invalidate();
1689
- Core.applyChanges();
1684
+ await nextUIUpdate();
1690
1685
 
1691
1686
  assert.strictEqual(oChild.getDomRef().textContent, "Header2", "child dom is rendered correctly");
1692
1687
  assert.ok(oChild.onAfterRendering.calledOnce, "oChild.onAfterRendering is called only once");