@openui5/sap.ui.core 1.120.10 → 1.121.1

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 (1065) hide show
  1. package/.eslintrc.json +5 -3
  2. package/.reuse/dep5 +23 -21
  3. package/THIRDPARTY.txt +6 -43
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +7 -7
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/jquery.sap.trace.js +1 -1
  11. package/src/sap/base/Event.js +1 -1
  12. package/src/sap/base/Eventing.js +1 -1
  13. package/src/sap/base/config.js +1 -1
  14. package/src/sap/base/future.js +57 -0
  15. package/src/sap/base/i18n/Formatting.js +7 -5
  16. package/src/sap/base/i18n/LanguageTag.js +2 -2
  17. package/src/sap/base/i18n/Localization.js +2 -2
  18. package/src/sap/base/i18n/ResourceBundle.js +115 -9
  19. package/src/sap/base/i18n/date/TimezoneUtils.js +5 -6
  20. package/src/sap/base/util/now.js +8 -13
  21. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  22. package/src/sap/base/util/restricted/_castArray.js +1 -1
  23. package/src/sap/base/util/restricted/_compact.js +1 -1
  24. package/src/sap/base/util/restricted/_curry.js +1 -1
  25. package/src/sap/base/util/restricted/_debounce.js +1 -1
  26. package/src/sap/base/util/restricted/_difference.js +1 -1
  27. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  28. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  30. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  31. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  32. package/src/sap/base/util/restricted/_flatten.js +1 -1
  33. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  34. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  35. package/src/sap/base/util/restricted/_intersection.js +1 -1
  36. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  37. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  38. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  39. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  40. package/src/sap/base/util/restricted/_isNil.js +1 -1
  41. package/src/sap/base/util/restricted/_max.js +1 -1
  42. package/src/sap/base/util/restricted/_merge.js +1 -1
  43. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  44. package/src/sap/base/util/restricted/_min.js +1 -1
  45. package/src/sap/base/util/restricted/_omit.js +1 -1
  46. package/src/sap/base/util/restricted/_pick.js +1 -1
  47. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  48. package/src/sap/base/util/restricted/_throttle.js +1 -1
  49. package/src/sap/base/util/restricted/_toArray.js +1 -1
  50. package/src/sap/base/util/restricted/_union.js +1 -1
  51. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  52. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  53. package/src/sap/base/util/restricted/_uniq.js +1 -1
  54. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  55. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  56. package/src/sap/base/util/restricted/_without.js +1 -1
  57. package/src/sap/base/util/restricted/_xor.js +1 -1
  58. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  59. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  60. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  61. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  62. package/src/sap/ui/Device.js +6 -3
  63. package/src/sap/ui/Global.js +14 -13
  64. package/src/sap/ui/VersionInfo.js +15 -3
  65. package/src/sap/ui/base/BindingParser.js +25 -15
  66. package/src/sap/ui/base/DataType.js +21 -13
  67. package/src/sap/ui/base/Event.js +1 -1
  68. package/src/sap/ui/base/EventProvider.js +1 -1
  69. package/src/sap/ui/base/ExpressionParser.js +5 -0
  70. package/src/sap/ui/base/Interface.js +1 -1
  71. package/src/sap/ui/base/ManagedObject.js +25 -14
  72. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  73. package/src/sap/ui/base/Metadata.js +28 -13
  74. package/src/sap/ui/base/Object.js +1 -1
  75. package/src/sap/ui/base/ObjectPool.js +1 -1
  76. package/src/sap/ui/core/.library +8 -7
  77. package/src/sap/ui/core/BusyIndicator.js +1 -1
  78. package/src/sap/ui/core/Component.js +133 -56
  79. package/src/sap/ui/core/ComponentContainer.js +14 -17
  80. package/src/sap/ui/core/ComponentMetadata.js +7 -3
  81. package/src/sap/ui/core/ComponentSupport.js +32 -13
  82. package/src/sap/ui/core/Configuration.js +1 -1
  83. package/src/sap/ui/core/Control.js +34 -19
  84. package/src/sap/ui/core/Core.js +42 -37
  85. package/src/sap/ui/core/CustomData.js +1 -1
  86. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  87. package/src/sap/ui/core/Element.js +6 -8
  88. package/src/sap/ui/core/ElementMetadata.js +35 -20
  89. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  90. package/src/sap/ui/core/EventBus.js +1 -1
  91. package/src/sap/ui/core/ExtensionPoint.js +18 -11
  92. package/src/sap/ui/core/Fragment.js +69 -28
  93. package/src/sap/ui/core/HTML.js +3 -1
  94. package/src/sap/ui/core/History.js +1 -1
  95. package/src/sap/ui/core/Icon.js +1 -1
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +145 -125
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +6 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +9 -2
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/Lib.js +19 -12
  105. package/src/sap/ui/core/ListItem.js +1 -1
  106. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  107. package/src/sap/ui/core/Locale.js +2 -2
  108. package/src/sap/ui/core/LocaleData.js +16 -15
  109. package/src/sap/ui/core/Manifest.js +28 -28
  110. package/src/sap/ui/core/Message.js +1 -1
  111. package/src/sap/ui/core/Messaging.js +4 -4
  112. package/src/sap/ui/core/Popup.js +1 -47
  113. package/src/sap/ui/core/RenderManager.js +1 -1
  114. package/src/sap/ui/core/Renderer.js +12 -7
  115. package/src/sap/ui/core/Rendering.js +49 -42
  116. package/src/sap/ui/core/ResizeHandler.js +1 -1
  117. package/src/sap/ui/core/ScrollBar.js +7 -7
  118. package/src/sap/ui/core/ScrollBarRenderer.js +3 -3
  119. package/src/sap/ui/core/SeparatorItem.js +1 -1
  120. package/src/sap/ui/core/Shortcut.js +1 -0
  121. package/src/sap/ui/core/ShortcutHintsMixin.js +1 -1
  122. package/src/sap/ui/core/StashedControlSupport.js +39 -40
  123. package/src/sap/ui/core/Theming.js +15 -25
  124. package/src/sap/ui/core/Title.js +1 -1
  125. package/src/sap/ui/core/TooltipBase.js +4 -3
  126. package/src/sap/ui/core/UIArea.js +5 -3
  127. package/src/sap/ui/core/UIComponent.js +6 -4
  128. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  129. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  130. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  131. package/src/sap/ui/core/XMLComposite.js +1 -1
  132. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -1
  133. package/src/sap/ui/core/XMLTemplateProcessor.js +44 -23
  134. package/src/sap/ui/core/cache/CacheManagerNOP.js +0 -1
  135. package/src/sap/ui/core/cldr/ar.json +47 -88
  136. package/src/sap/ui/core/cldr/ar_EG.json +47 -88
  137. package/src/sap/ui/core/cldr/ar_SA.json +48 -89
  138. package/src/sap/ui/core/cldr/bg.json +44 -156
  139. package/src/sap/ui/core/cldr/ca.json +265 -370
  140. package/src/sap/ui/core/cldr/cnr.json +545 -476
  141. package/src/sap/ui/core/cldr/cs.json +33 -467
  142. package/src/sap/ui/core/cldr/cy.json +36 -762
  143. package/src/sap/ui/core/cldr/da.json +43 -146
  144. package/src/sap/ui/core/cldr/de.json +47 -149
  145. package/src/sap/ui/core/cldr/de_AT.json +48 -150
  146. package/src/sap/ui/core/cldr/de_CH.json +86 -187
  147. package/src/sap/ui/core/cldr/el.json +28 -96
  148. package/src/sap/ui/core/cldr/el_CY.json +28 -96
  149. package/src/sap/ui/core/cldr/en.json +66 -27
  150. package/src/sap/ui/core/cldr/en_AU.json +314 -171
  151. package/src/sap/ui/core/cldr/en_GB.json +167 -33
  152. package/src/sap/ui/core/cldr/en_HK.json +57 -30
  153. package/src/sap/ui/core/cldr/en_IE.json +54 -27
  154. package/src/sap/ui/core/cldr/en_IN.json +139 -28
  155. package/src/sap/ui/core/cldr/en_NZ.json +55 -28
  156. package/src/sap/ui/core/cldr/en_PG.json +49 -22
  157. package/src/sap/ui/core/cldr/en_SG.json +51 -24
  158. package/src/sap/ui/core/cldr/en_ZA.json +61 -34
  159. package/src/sap/ui/core/cldr/es.json +25 -130
  160. package/src/sap/ui/core/cldr/es_AR.json +90 -191
  161. package/src/sap/ui/core/cldr/es_BO.json +63 -165
  162. package/src/sap/ui/core/cldr/es_CL.json +100 -202
  163. package/src/sap/ui/core/cldr/es_CO.json +54 -156
  164. package/src/sap/ui/core/cldr/es_MX.json +163 -258
  165. package/src/sap/ui/core/cldr/es_PE.json +65 -167
  166. package/src/sap/ui/core/cldr/es_UY.json +65 -167
  167. package/src/sap/ui/core/cldr/es_VE.json +43 -145
  168. package/src/sap/ui/core/cldr/et.json +44 -144
  169. package/src/sap/ui/core/cldr/fa.json +75 -80
  170. package/src/sap/ui/core/cldr/fi.json +38 -142
  171. package/src/sap/ui/core/cldr/fr.json +28 -22
  172. package/src/sap/ui/core/cldr/fr_BE.json +31 -25
  173. package/src/sap/ui/core/cldr/fr_CA.json +76 -69
  174. package/src/sap/ui/core/cldr/fr_CH.json +41 -35
  175. package/src/sap/ui/core/cldr/fr_LU.json +28 -22
  176. package/src/sap/ui/core/cldr/he.json +37 -426
  177. package/src/sap/ui/core/cldr/hi.json +40 -83
  178. package/src/sap/ui/core/cldr/hr.json +31 -286
  179. package/src/sap/ui/core/cldr/hu.json +46 -140
  180. package/src/sap/ui/core/cldr/id.json +31 -13
  181. package/src/sap/ui/core/cldr/it.json +59 -182
  182. package/src/sap/ui/core/cldr/it_CH.json +65 -188
  183. package/src/sap/ui/core/cldr/ja.json +103 -13
  184. package/src/sap/ui/core/cldr/kk.json +79 -67
  185. package/src/sap/ui/core/cldr/ko.json +29 -10
  186. package/src/sap/ui/core/cldr/lt.json +24 -366
  187. package/src/sap/ui/core/cldr/lv.json +30 -277
  188. package/src/sap/ui/core/cldr/mk.json +103 -198
  189. package/src/sap/ui/core/cldr/ms.json +30 -10
  190. package/src/sap/ui/core/cldr/nb.json +32 -133
  191. package/src/sap/ui/core/cldr/nl.json +37 -167
  192. package/src/sap/ui/core/cldr/nl_BE.json +108 -238
  193. package/src/sap/ui/core/cldr/pl.json +27 -384
  194. package/src/sap/ui/core/cldr/pt.json +37 -145
  195. package/src/sap/ui/core/cldr/pt_PT.json +32 -133
  196. package/src/sap/ui/core/cldr/ro.json +30 -289
  197. package/src/sap/ui/core/cldr/ru.json +27 -75
  198. package/src/sap/ui/core/cldr/ru_UA.json +27 -75
  199. package/src/sap/ui/core/cldr/sk.json +32 -438
  200. package/src/sap/ui/core/cldr/sl.json +131 -535
  201. package/src/sap/ui/core/cldr/sr.json +41 -332
  202. package/src/sap/ui/core/cldr/sr_Latn.json +192 -483
  203. package/src/sap/ui/core/cldr/sv.json +49 -137
  204. package/src/sap/ui/core/cldr/th.json +39 -20
  205. package/src/sap/ui/core/cldr/tr.json +33 -125
  206. package/src/sap/ui/core/cldr/uk.json +310 -252
  207. package/src/sap/ui/core/cldr/vi.json +458 -331
  208. package/src/sap/ui/core/cldr/zh_CN.json +39 -17
  209. package/src/sap/ui/core/cldr/zh_HK.json +49 -27
  210. package/src/sap/ui/core/cldr/zh_SG.json +53 -31
  211. package/src/sap/ui/core/cldr/zh_TW.json +31 -14
  212. package/src/sap/ui/core/date/CalendarUtils.js +11 -9
  213. package/src/sap/ui/core/date/Islamic.js +7 -2
  214. package/src/sap/ui/core/date/UI5Date.js +86 -34
  215. package/src/sap/ui/core/date/UniversalDate.js +16 -26
  216. package/src/sap/ui/core/date/UniversalDateUtils.js +14 -14
  217. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  218. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  219. package/src/sap/ui/core/dnd/DragAndDrop.js +4 -4
  220. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  221. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  222. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  223. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  224. package/src/sap/ui/core/format/DateFormat.js +37 -45
  225. package/src/sap/ui/core/format/FileSizeFormat.js +15 -16
  226. package/src/sap/ui/core/format/FormatUtils.js +36 -0
  227. package/src/sap/ui/core/format/ListFormat.js +4 -4
  228. package/src/sap/ui/core/format/NumberFormat.js +288 -125
  229. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  230. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  231. package/src/sap/ui/core/hyphenation/Hyphenation.js +16 -15
  232. package/src/sap/ui/core/library.js +26 -9
  233. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  234. package/src/sap/ui/core/message/Message.js +5 -5
  235. package/src/sap/ui/core/message/MessageManager.js +1 -1
  236. package/src/sap/ui/core/message/MessageMixin.js +1 -1
  237. package/src/sap/ui/core/message/MessageParser.js +1 -1
  238. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  239. package/src/sap/ui/core/messagebundle_mk.properties +1 -1
  240. package/src/sap/ui/core/mvc/Controller.js +49 -19
  241. package/src/sap/ui/core/mvc/ControllerExtension.js +5 -4
  242. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +2 -2
  243. package/src/sap/ui/core/mvc/ControllerMetadata.js +3 -3
  244. package/src/sap/ui/core/mvc/EventHandlerResolver.js +6 -8
  245. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  246. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  247. package/src/sap/ui/core/mvc/JSView.js +1 -1
  248. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  249. package/src/sap/ui/core/mvc/View.js +8 -5
  250. package/src/sap/ui/core/mvc/XMLView.js +7 -5
  251. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  252. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  253. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  254. package/src/sap/ui/core/postmessage/Bus.js +5 -3
  255. package/src/sap/ui/core/postmessage/confirmationDialog.js +3 -3
  256. package/src/sap/ui/core/routing/HashChanger.js +21 -10
  257. package/src/sap/ui/core/routing/History.js +5 -5
  258. package/src/sap/ui/core/routing/Route.js +9 -7
  259. package/src/sap/ui/core/routing/Router.js +13 -7
  260. package/src/sap/ui/core/routing/Target.js +1 -1
  261. package/src/sap/ui/core/routing/Targets.js +5 -4
  262. package/src/sap/ui/core/routing/async/Target.js +10 -7
  263. package/src/sap/ui/core/routing/async/Targets.js +3 -3
  264. package/src/sap/ui/core/routing/sync/Target.js +4 -1
  265. package/src/sap/ui/core/rules/Config.support.js +3 -3
  266. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  267. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  268. package/src/sap/ui/core/service/Service.js +1 -1
  269. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  270. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  271. package/src/sap/ui/core/support/Plugin.js +1 -1
  272. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +9 -12
  273. package/src/sap/ui/core/support/Support.js +2 -2
  274. package/src/sap/ui/core/support/ToolsAPI.js +19 -6
  275. package/src/sap/ui/core/support/controls/InteractionTree.js +7 -7
  276. package/src/sap/ui/core/support/plugins/Breakpoint.js +8 -5
  277. package/src/sap/ui/core/support/plugins/ControlTree.js +26 -15
  278. package/src/sap/ui/core/support/plugins/Debugging.js +9 -6
  279. package/src/sap/ui/core/support/plugins/Interaction.js +9 -7
  280. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  281. package/src/sap/ui/core/support/plugins/Performance.js +6 -6
  282. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  283. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  284. package/src/sap/ui/core/support/plugins/Trace.js +4 -3
  285. package/src/sap/ui/core/support/plugins/ViewInfo.js +4 -2
  286. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +4 -4
  287. package/src/sap/ui/core/support/trace/E2eTraceLib.js +5 -5
  288. package/src/sap/ui/core/themes/base/Icon.less +2 -1
  289. package/src/sap/ui/core/themes/base/base.less +370 -371
  290. package/src/sap/ui/core/theming/Parameters.js +9 -8
  291. package/src/sap/ui/core/theming/ThemeHelper.js +4 -3
  292. package/src/sap/ui/core/theming/ThemeManager.js +8 -6
  293. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  294. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  295. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +6 -3
  296. package/src/sap/ui/core/tmpl/Template.js +1 -1
  297. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  298. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  299. package/src/sap/ui/core/util/Export.js +1 -1
  300. package/src/sap/ui/core/util/ExportCell.js +1 -1
  301. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  302. package/src/sap/ui/core/util/ExportRow.js +1 -1
  303. package/src/sap/ui/core/util/ExportType.js +1 -1
  304. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  305. package/src/sap/ui/core/util/File.js +1 -1
  306. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  307. package/src/sap/ui/core/util/MockServer.js +23 -13
  308. package/src/sap/ui/core/util/PasteHelper.js +3 -3
  309. package/src/sap/ui/core/util/_LocalizationHelper.js +10 -1
  310. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +51 -5
  311. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +2 -2
  312. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +1 -0
  313. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  314. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  315. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  316. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  317. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  318. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  319. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  320. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  321. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  322. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  323. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  324. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  325. package/src/sap/ui/debug/ControlTree.js +6 -6
  326. package/src/sap/ui/debug/DebugEnv.js +1 -1
  327. package/src/sap/ui/debug/PropertyList.js +1 -1
  328. package/src/sap/ui/dom/isBehindOtherElement.js +0 -1
  329. package/src/sap/ui/events/isMouseEventDelayed.js +6 -12
  330. package/src/sap/ui/events/jquery/EventSimulation.js +4 -3
  331. package/src/sap/ui/events/jquery/EventTriggerHook.js +2 -3
  332. package/src/sap/ui/model/Binding.js +1 -1
  333. package/src/sap/ui/model/ClientListBinding.js +2 -0
  334. package/src/sap/ui/model/ClientModel.js +1 -1
  335. package/src/sap/ui/model/ClientTreeBinding.js +1 -0
  336. package/src/sap/ui/model/CompositeDataState.js +1 -1
  337. package/src/sap/ui/model/CompositeType.js +1 -1
  338. package/src/sap/ui/model/DataState.js +1 -1
  339. package/src/sap/ui/model/Filter.js +34 -4
  340. package/src/sap/ui/model/ManagedObjectBindingSupport.js +6 -3
  341. package/src/sap/ui/model/MetaModel.js +1 -1
  342. package/src/sap/ui/model/Model.js +6 -2
  343. package/src/sap/ui/model/SelectionModel.js +1 -1
  344. package/src/sap/ui/model/SimpleType.js +1 -1
  345. package/src/sap/ui/model/Sorter.js +4 -4
  346. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  347. package/src/sap/ui/model/Type.js +1 -1
  348. package/src/sap/ui/model/_Helper.js +4 -2
  349. package/src/sap/ui/model/analytics/AnalyticalBinding.js +9 -0
  350. package/src/sap/ui/model/json/JSONModel.js +6 -2
  351. package/src/sap/ui/model/message/MessageModel.js +1 -1
  352. package/src/sap/ui/model/odata/AnnotationHelper.js +12 -7
  353. package/src/sap/ui/model/odata/ODataAnnotations.js +4 -4
  354. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -3
  355. package/src/sap/ui/model/odata/ODataMetaModel.js +2 -1
  356. package/src/sap/ui/model/odata/ODataMetadata.js +34 -4
  357. package/src/sap/ui/model/odata/ODataModel.js +5 -5
  358. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -2
  359. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -0
  360. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +4 -2
  361. package/src/sap/ui/model/odata/ODataUtils.js +166 -131
  362. package/src/sap/ui/model/odata/type/Boolean.js +9 -7
  363. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  364. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  365. package/src/sap/ui/model/odata/type/Date.js +5 -4
  366. package/src/sap/ui/model/odata/type/DateTime.js +2 -2
  367. package/src/sap/ui/model/odata/type/DateTimeBase.js +4 -4
  368. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  369. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +4 -3
  370. package/src/sap/ui/model/odata/type/Decimal.js +5 -5
  371. package/src/sap/ui/model/odata/type/Double.js +4 -3
  372. package/src/sap/ui/model/odata/type/Guid.js +4 -3
  373. package/src/sap/ui/model/odata/type/Int.js +4 -4
  374. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  375. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  376. package/src/sap/ui/model/odata/type/Int64.js +4 -4
  377. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  378. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  379. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  380. package/src/sap/ui/model/odata/type/Single.js +4 -3
  381. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  382. package/src/sap/ui/model/odata/type/String.js +6 -5
  383. package/src/sap/ui/model/odata/type/Time.js +4 -4
  384. package/src/sap/ui/model/odata/type/TimeOfDay.js +5 -4
  385. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  386. package/src/sap/ui/model/odata/type/UnitMixin.js +3 -2
  387. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  388. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +4 -4
  389. package/src/sap/ui/model/odata/v2/ODataModel.js +55 -25
  390. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +5 -4
  391. package/src/sap/ui/model/odata/v4/Context.js +20 -7
  392. package/src/sap/ui/model/odata/v4/ODataBinding.js +14 -10
  393. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +8 -5
  394. package/src/sap/ui/model/odata/v4/ODataListBinding.js +56 -33
  395. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +7 -4
  396. package/src/sap/ui/model/odata/v4/ODataModel.js +25 -37
  397. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +10 -8
  398. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +9 -2
  399. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +4 -4
  400. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +195 -59
  401. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +16 -6
  402. package/src/sap/ui/model/odata/v4/lib/_Cache.js +22 -15
  403. package/src/sap/ui/model/odata/v4/lib/_Helper.js +19 -11
  404. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +20 -11
  405. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +122 -0
  406. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  407. package/src/sap/ui/model/type/Boolean.js +4 -4
  408. package/src/sap/ui/model/type/Currency.js +5 -5
  409. package/src/sap/ui/model/type/Date.js +5 -5
  410. package/src/sap/ui/model/type/DateInterval.js +6 -5
  411. package/src/sap/ui/model/type/DateTime.js +1 -1
  412. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  413. package/src/sap/ui/model/type/FileSize.js +5 -4
  414. package/src/sap/ui/model/type/Float.js +5 -5
  415. package/src/sap/ui/model/type/Integer.js +6 -6
  416. package/src/sap/ui/model/type/String.js +4 -3
  417. package/src/sap/ui/model/type/Time.js +1 -1
  418. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  419. package/src/sap/ui/model/type/Unit.js +8 -7
  420. package/src/sap/ui/model/xml/XMLModel.js +11 -3
  421. package/src/sap/ui/performance/trace/Interaction.js +8 -16
  422. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  423. package/src/sap/ui/qunit/qunit-junit.js +415 -49
  424. package/src/sap/ui/qunit/utils/ControlIterator.js +4 -4
  425. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +3 -2
  426. package/src/sap/ui/qunit/utils/nextUIUpdate.js +15 -5
  427. package/src/sap/ui/test/OpaBuilder.js +3 -1
  428. package/src/sap/ui/test/OpaPlugin.js +103 -10
  429. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +4 -4
  430. package/src/sap/ui/test/autowaiter/_navigationContainerWaiter.js +3 -3
  431. package/src/sap/ui/test/generic/TestBase.js +1 -1
  432. package/src/sap/ui/test/launchers/iFrameLauncher.js +18 -6
  433. package/src/sap/ui/test/matchers/Descendant.js +2 -1
  434. package/src/sap/ui/test/matchers/I18NText.js +6 -2
  435. package/src/sap/ui/test/matchers/Interactable.js +2 -3
  436. package/src/sap/ui/test/matchers/LabelFor.js +5 -3
  437. package/src/sap/ui/test/matchers/Matcher.js +20 -0
  438. package/src/sap/ui/test/matchers/Sibling.js +2 -1
  439. package/src/sap/ui/test/matchers/_Visitor.js +2 -4
  440. package/src/sap/ui/test/qunitPause.js +6 -4
  441. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +4 -3
  442. package/src/sap/ui/test/selectors/_Selector.js +3 -3
  443. package/src/sap/ui/test/starter/_setupAndStart.js +5 -18
  444. package/src/sap/ui/test/starter/_utils.js +15 -1
  445. package/src/sap/ui/test/starter/createSuite.js +2 -0
  446. package/src/sap/ui/thirdparty/RequestRecorder.js +1 -1
  447. package/src/sap/ui/thirdparty/crossroads.js +3 -0
  448. package/src/sap/ui/thirdparty/qunit-2.js +1 -2
  449. package/src/sap/ui/thirdparty/qunit-reporter-junit.js +30 -8
  450. package/src/sap/ui/thirdparty/qunit.js +1 -2
  451. package/src/sap/ui/util/Storage.js +1 -1
  452. package/src/ui5loader-autoconfig.js +18 -4
  453. package/src/ui5loader.js +15 -4
  454. package/test/sap/ui/core/DateFormat.controller.js +3 -3
  455. package/test/sap/ui/core/ILabelableInterface.html +21 -0
  456. package/test/sap/ui/core/ILabelableInterface.js +81 -0
  457. package/test/sap/ui/core/NumberFormat.controller.js +4 -4
  458. package/test/sap/ui/core/Strings.controller.js +4 -4
  459. package/test/sap/ui/core/demokit/docuindex.json +8 -2
  460. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +1 -1
  461. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/Component.js +2 -3
  462. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/css/style.css +3 -3
  463. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/categories/Component.js +2 -3
  464. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/products/Component.js +2 -3
  465. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/reuse/suppliers/Component.js +2 -3
  466. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/Component.js +20 -0
  467. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/controller/Home.controller.js +14 -0
  468. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/controller/Next.controller.js +21 -0
  469. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/manifest.json +94 -0
  470. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/view/HomeContentDesktop.fragment.js +15 -0
  471. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/view/HomeContentMobile.fragment.js +15 -0
  472. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/view/HomeView.js +45 -0
  473. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/view/Next.view.xml +15 -0
  474. package/test/sap/ui/core/demokit/sample/View/navigationTypedView/view/RootView.js +22 -0
  475. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.js +5 -4
  476. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +8 -5
  477. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/ValueHelp.js +38 -35
  478. package/test/sap/ui/core/demokit/sample/common/Helper.js +7 -7
  479. package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +1 -1
  480. package/test/sap/ui/core/demokit/sample/common/pages/Any.js +5 -3
  481. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  482. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  483. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  484. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  485. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTime/DateTime.controller.js +3 -3
  486. package/test/sap/ui/core/demokit/sample/odata/types/v2/DateTimeOffset/DateTimeOffset.controller.js +3 -3
  487. package/test/sap/ui/core/demokit/sample/odata/types/v2/Time/Time.controller.js +3 -3
  488. package/test/sap/ui/core/demokit/sample/odata/types/v4/Date/Date.controller.js +3 -3
  489. package/test/sap/ui/core/demokit/sample/odata/types/v4/DateTimeOffset/DateTimeOffset.controller.js +3 -3
  490. package/test/sap/ui/core/demokit/sample/odata/types/v4/TimeOfDay/TimeOfDay.controller.js +3 -3
  491. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +10 -0
  492. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +3 -0
  493. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +1 -2
  494. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.view.xml +6 -3
  495. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/formatRowHighlight.js +20 -0
  496. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +30 -24
  497. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +10 -8
  498. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Main.controller.js +1 -0
  499. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +1 -1
  500. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +6 -0
  501. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +16 -17
  502. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +8 -14
  503. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +65 -31
  504. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +1 -0
  505. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Main.controller.js +1 -1
  506. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  507. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  508. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  509. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  510. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  511. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  512. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  513. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  514. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  515. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  516. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  517. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  518. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  519. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  520. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  521. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  522. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  523. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  524. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  525. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  526. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  527. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  528. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  529. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  530. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  531. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  532. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  533. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  534. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  535. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  536. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  537. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  538. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  539. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  540. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  541. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  542. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  543. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/localService/mockserver.js +1 -1
  544. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  545. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/localService/mockserver.js +1 -1
  546. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  547. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/localService/mockserver.js +1 -1
  548. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  549. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/localService/mockserver.js +1 -1
  550. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  551. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/localService/mockserver.js +1 -1
  552. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  553. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -1
  554. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  555. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -1
  556. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  557. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -1
  558. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  559. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -1
  560. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  561. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -1
  562. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  563. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -1
  564. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  565. package/test/sap/ui/core/internal/samples/odata/twoFields/Main.controller.js +3 -1
  566. package/test/sap/ui/core/internal/samples/odata/twoFields/tests/pages/Main.js +3 -2
  567. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.js +5 -4
  568. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +4 -6
  569. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +6 -5
  570. package/test/sap/ui/core/qunit/AppCacheBuster.qunit.js +5 -5
  571. package/test/sap/ui/core/qunit/BindingParser.qunit.js +158 -24
  572. package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +3 -6
  573. package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +70 -81
  574. package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +13 -13
  575. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +5 -4
  576. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +1 -1
  577. package/test/sap/ui/core/qunit/Core.qunit.js +42 -57
  578. package/test/sap/ui/core/qunit/Core_libraryPreloadFiles.qunit.js +10 -2
  579. package/test/sap/ui/core/qunit/Core_libraryPreloadFiles_unavoidablyUsingEval.qunit.js +2 -2
  580. package/test/sap/ui/core/qunit/Core_libraryTerminologies.qunit.js +4 -3
  581. package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +2 -3
  582. package/test/sap/ui/core/qunit/DataBinding.qunit.js +125 -65
  583. package/test/sap/ui/core/qunit/Element_base.qunit.js +4 -1
  584. package/test/sap/ui/core/qunit/Element_destroy.qunit.js +6 -10
  585. package/test/sap/ui/core/qunit/Element_metadata_renderer.qunit.js +54 -43
  586. package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +1 -1
  587. package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +3 -2
  588. package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +5 -2
  589. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +3 -2
  590. package/test/sap/ui/core/qunit/Fragment.qunit.js +18 -2
  591. package/test/sap/ui/core/qunit/HTML.qunit.js +3 -2
  592. package/test/sap/ui/core/qunit/Hyphenation.qunit.js +30 -6
  593. package/test/sap/ui/core/qunit/Icon.qunit.js +4 -3
  594. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +6 -5
  595. package/test/sap/ui/core/qunit/Lib.qunit.js +155 -14
  596. package/test/sap/ui/core/qunit/ListBinding.qunit.js +7 -42
  597. package/test/sap/ui/core/qunit/QUnit.qunit.js +6 -0
  598. package/test/sap/ui/core/qunit/RenderManager.qunit.js +13 -10
  599. package/test/sap/ui/core/qunit/{CoreEvents.qunit.js → Rendering.qunit.js} +68 -7
  600. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +8 -7
  601. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +65 -90
  602. package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.qunit.js +706 -0
  603. package/test/sap/ui/core/qunit/StaticBinding.qunit.js +49 -37
  604. package/test/sap/ui/core/qunit/ThemeManager.qunit.js +15 -11
  605. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +5 -5
  606. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +7 -7
  607. package/test/sap/ui/core/qunit/Theming.qunit.js +174 -1
  608. package/test/sap/ui/core/qunit/VersionInfo.qunit.js +3 -0
  609. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +58 -0
  610. package/test/sap/ui/core/qunit/analytics/o4aMetadata.js +3 -0
  611. package/test/sap/ui/core/qunit/app/ThemeClassParameters.qunit.js +4 -4
  612. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.html +1 -1
  613. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +276 -44
  614. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +173 -26
  615. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +408 -3
  616. package/test/sap/ui/core/qunit/base/util/now.qunit.js +2 -30
  617. package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.beforeBootstrap.qunit.js +6 -4
  618. package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.qunit.js +4 -4
  619. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +1 -1
  620. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +15 -6
  621. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload_legacyAPIs.qunit.js +2 -3
  622. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.beforeBootstrap.qunit.js +4 -4
  623. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomBootTask.qunit.js +1 -1
  624. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery.qunit.js +2 -1
  625. package/test/sap/ui/core/qunit/bootstrap/CalendarClassLoadingWithCustomBootTask.beforeBootstrap.qunit.js +8 -4
  626. package/test/sap/ui/core/qunit/bootstrap/{CalendarClassLoadingWithCustomBootTaskAndPreload.beforeBootstrap.qunit.js → CalendarClassLoadingWithCustomBootTask.beforeBootstrap_legacy.qunit.js} +5 -1
  627. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +32 -28
  628. package/test/sap/ui/core/qunit/bootstrap/{ConfigurationFlexibility_LibNotLoaded.qunit.html → ConfigurationFlexibility_LibConfigured_legacyAPIs.qunit.html} +1 -1
  629. package/test/sap/ui/core/qunit/bootstrap/{ConfigurationFlexibility_LibConfigured.qunit.js → ConfigurationFlexibility_LibConfigured_legacyAPIs.qunit.js} +5 -1
  630. package/test/sap/ui/core/qunit/bootstrap/{ConfigurationFlexibility_LibConfigured.qunit.html → ConfigurationFlexibility_LibLoaded_legacyAPIs.qunit.html} +1 -1
  631. package/test/sap/ui/core/qunit/bootstrap/{ConfigurationFlexibility_LibLoaded.qunit.js → ConfigurationFlexibility_LibLoaded_legacyAPIs.qunit.js} +5 -1
  632. package/test/sap/ui/core/qunit/bootstrap/{ConfigurationFlexibility_LibLoaded.qunit.html → ConfigurationFlexibility_LibNotLoaded_legacyAPIs.qunit.html} +1 -1
  633. package/test/sap/ui/core/qunit/bootstrap/{ConfigurationFlexibility_LibNotLoaded.qunit.js → ConfigurationFlexibility_LibNotLoaded_legacyAPIs.qunit.js} +5 -1
  634. package/test/sap/ui/core/qunit/bootstrap/Configuration_language_via_URL.qunit.js +5 -0
  635. package/test/sap/ui/core/qunit/bootstrap/ControlBehavior.qunit.js +5 -0
  636. package/test/sap/ui/core/qunit/bootstrap/DebugMode.beforeBootstrap.qunit.js +2 -2
  637. package/test/sap/ui/core/qunit/bootstrap/DebugMode.qunit.js +8 -8
  638. package/test/sap/ui/core/qunit/bootstrap/PreloadCfg.qunit.js +4 -4
  639. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +11 -10
  640. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +2 -2
  641. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +68 -13
  642. package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery.sap.stubs.qunit.html +0 -1
  643. package/test/sap/ui/core/qunit/component/Component.qunit.js +40 -21
  644. package/test/sap/ui/core/qunit/component/ComponentSupport.qunit.js +65 -39
  645. package/test/sap/ui/core/qunit/component/Component_containedInLibrary.qunit.js +25 -6
  646. package/test/sap/ui/core/qunit/component/Manifest.qunit.js +9 -9
  647. package/test/sap/ui/core/qunit/component/Metadata.qunit.js +5 -5
  648. package/test/sap/ui/core/qunit/component/Metadata_unavoidablySync.qunit.js +1 -2
  649. package/test/sap/ui/core/qunit/component/Models.qunit.js +295 -157
  650. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +3 -3
  651. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.js +3 -4
  652. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library-preload.json +1 -1
  653. package/test/sap/ui/core/qunit/component/testdata/async/lib2/library.js +3 -4
  654. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.js +3 -4
  655. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library-preload.json +1 -1
  656. package/test/sap/ui/core/qunit/component/testdata/async/lib3/library.js +3 -3
  657. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.js +3 -4
  658. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library-preload.json +1 -1
  659. package/test/sap/ui/core/qunit/component/testdata/async/lib4/library.js +3 -4
  660. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/i18n/i18n.properties +3 -0
  661. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/manifest.json +3 -1
  662. package/test/sap/ui/core/qunit/component/testdata/v2models/parent/Component.js +1 -4
  663. package/test/sap/ui/core/qunit/component/testdata/v4models/Component.js +1 -2
  664. package/test/sap/ui/core/qunit/component/testdata/v4models/cacheTokens/Component.js +1 -2
  665. package/test/sap/ui/core/qunit/component/testdata/v4models/unsupportedVersion/Component.js +1 -2
  666. package/test/sap/ui/core/qunit/component/testdata/verticalLayout/Component.js +2 -3
  667. package/test/sap/ui/core/qunit/component/testdata/view/Main.controller.js +1 -1
  668. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +3 -2
  669. package/test/sap/ui/core/qunit/csp/ContentSecurityPolicy.qunit.js +0 -1
  670. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +3 -3
  671. package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +2 -1
  672. package/test/sap/ui/core/qunit/format/FormatUtils.qunit.js +36 -0
  673. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +1 -1
  674. package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +2 -2
  675. package/test/sap/ui/core/qunit/i18n/Buddhist.qunit.js +6 -6
  676. package/test/sap/ui/core/qunit/i18n/CalendarUtils.qunit.js +3 -3
  677. package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +29 -29
  678. package/test/sap/ui/core/qunit/i18n/Japanese.qunit.js +6 -6
  679. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +92 -78
  680. package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +199 -33
  681. package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +111 -119
  682. package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +12 -38
  683. package/test/sap/ui/core/qunit/i18n/helper/_timezones.js +1 -1
  684. package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +29 -28
  685. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +2 -1
  686. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +3 -9
  687. package/test/sap/ui/core/qunit/internal/testsuite.models.qunit.js +7 -0
  688. package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +4 -68
  689. package/test/sap/ui/core/qunit/json/JSONBinding.qunit.js +4 -6
  690. package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +0 -1
  691. package/test/sap/ui/core/qunit/json/JSONModel.qunit.js +5 -18
  692. package/test/sap/ui/core/qunit/json/JSONPropertyBinding.qunit.js +15 -23
  693. package/test/sap/ui/core/qunit/json/JSONTreeBinding.qunit.js +6 -8
  694. package/test/sap/ui/core/qunit/json/JSONTwoWay.qunit.js +11 -13
  695. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.html +0 -2
  696. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +40 -34
  697. package/test/sap/ui/core/qunit/loader/{asyncMode_unavoidablySync.qunit.html → asyncMode_legacyAPIs.qunit.html} +1 -1
  698. package/test/sap/ui/core/qunit/loader/{asyncMode_unavoidablySync.qunit.js → asyncMode_legacyAPIs.qunit.js} +33 -4
  699. package/test/sap/ui/core/qunit/loader/conflictWithRequire.qunit.js +16 -16
  700. package/test/sap/ui/core/qunit/loader/testsuite.loader.qunit.js +2 -2
  701. package/test/sap/ui/core/qunit/messages/MessageMixin.qunit.js +46 -2
  702. package/test/sap/ui/core/qunit/mockserver/MockServer.qunit.js +859 -245
  703. package/test/sap/ui/core/qunit/mockserver/testsuite.mockserver.qunit.js +8 -0
  704. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +3 -0
  705. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata_ItemCustomer.xml +5 -0
  706. package/test/sap/ui/core/qunit/model/Filter.qunit.js +135 -44
  707. package/test/sap/ui/core/qunit/model/Sorter.qunit.js +10 -10
  708. package/test/sap/ui/core/qunit/model/_Helper.qunit.js +3 -1
  709. package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +11 -3
  710. package/test/sap/ui/core/qunit/mvc/AsyncXMLView.qunit.js +5 -5
  711. package/test/sap/ui/core/qunit/mvc/EventHandlerResolver.qunit.js +73 -47
  712. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +0 -4
  713. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +78 -7
  714. package/test/sap/ui/core/qunit/mvc/testdata/inner.view.xml +3 -0
  715. package/test/sap/ui/core/qunit/mvc/testdata/middle.view.xml +8 -0
  716. package/test/sap/ui/core/qunit/mvc/testdata/outer.view.xml +5 -0
  717. package/test/sap/ui/core/qunit/mvc/testdata/test.controller.js +1 -1
  718. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +3 -3
  719. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AsyncHTMLView_legacyAPIs.qunit.js +6 -7
  720. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AsyncXMLView_legacyAPIs.qunit.js +5 -7
  721. package/test/sap/ui/core/qunit/mvc_legacyAPIs/View_legacyAPIs.qunit.js +46 -1
  722. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +0 -4
  723. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +5 -5
  724. package/test/sap/ui/core/qunit/odata/AnnotationHelper.qunit.js +60 -62
  725. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +9 -9
  726. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +12 -46
  727. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +4 -3
  728. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +7 -0
  729. package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +40 -0
  730. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +365 -13
  731. package/test/sap/ui/core/qunit/odata/_AnnotationHelperExpression.qunit.js +7 -7
  732. package/test/sap/ui/core/qunit/odata/type/Boolean.qunit.js +5 -5
  733. package/test/sap/ui/core/qunit/odata/type/Currency.qunit.js +5 -5
  734. package/test/sap/ui/core/qunit/odata/type/Date.qunit.js +11 -11
  735. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +54 -55
  736. package/test/sap/ui/core/qunit/odata/type/DateTimeWithTimezone.qunit.js +8 -8
  737. package/test/sap/ui/core/qunit/odata/type/Decimal.qunit.js +7 -7
  738. package/test/sap/ui/core/qunit/odata/type/Double.qunit.js +7 -7
  739. package/test/sap/ui/core/qunit/odata/type/Int.qunit.js +7 -7
  740. package/test/sap/ui/core/qunit/odata/type/Int64.qunit.js +7 -7
  741. package/test/sap/ui/core/qunit/odata/type/Single.qunit.js +6 -6
  742. package/test/sap/ui/core/qunit/odata/type/Time.qunit.js +7 -7
  743. package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +12 -12
  744. package/test/sap/ui/core/qunit/odata/type/Unit.qunit.js +5 -5
  745. package/test/sap/ui/core/qunit/odata/v2/CanonicalRequests.qunit.js +1 -1
  746. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +580 -130
  747. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +79 -20
  748. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +23 -18
  749. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +24 -0
  750. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +25 -203
  751. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +55 -192
  752. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +47 -261
  753. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +9 -9
  754. package/test/sap/ui/core/qunit/odata/v4/AnnotationHelper.qunit.js +4 -1
  755. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +43 -5
  756. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +30 -49
  757. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +7 -6
  758. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +142 -30
  759. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +8 -6
  760. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2317 -470
  761. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +12 -43
  762. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +75 -40
  763. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +43 -9
  764. package/test/sap/ui/core/qunit/odata/v4/ODataUtils.qunit.js +7 -7
  765. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +4 -0
  766. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +381 -182
  767. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +46 -29
  768. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +38 -26
  769. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +38 -10
  770. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +45 -4
  771. package/test/sap/ui/core/qunit/odata/v4/lib/_TreeState.qunit.js +134 -0
  772. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +7 -7
  773. package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +1 -0
  774. package/test/sap/ui/core/qunit/opa/OpaBuilder.qunit.js +3 -1
  775. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +0 -1
  776. package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +5 -1
  777. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +0 -1
  778. package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +4 -3
  779. package/test/sap/ui/core/qunit/opa/autowaiter/_XHRWaiter.js +1 -1
  780. package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +5 -5
  781. package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +20 -12
  782. package/test/sap/ui/core/qunit/opa/fixture/busyAfterStart.html +4 -4
  783. package/test/sap/ui/core/qunit/opa/fixture/emptySite.html +4 -2
  784. package/test/sap/ui/core/qunit/opa/fixture/emptySiteWithOpaExtensions.html +4 -2
  785. package/test/sap/ui/core/qunit/opa/fixture/failingOpaTest-qunit1.html +4 -1
  786. package/test/sap/ui/core/qunit/opa/fixture/failingOpaTest-qunit2.html +4 -1
  787. package/test/sap/ui/core/qunit/opa/fixture/failingOpaTest.js +6 -3
  788. package/test/sap/ui/core/qunit/opa/fixture/miniUI5Site.html +5 -5
  789. package/test/sap/ui/core/qunit/opa/fixture/opaQUnitTest-qunit1.html +4 -2
  790. package/test/sap/ui/core/qunit/opa/fixture/opaQUnitTest-qunit2.html +4 -2
  791. package/test/sap/ui/core/qunit/opa/fixture/opaQUnitTest.js +4 -1
  792. package/test/sap/ui/core/qunit/opa/fixture/opaReportTest-qunit1.html +4 -2
  793. package/test/sap/ui/core/qunit/opa/fixture/opaReportTest-qunit2.html +4 -2
  794. package/test/sap/ui/core/qunit/opa/fixture/opaReportTest.js +4 -1
  795. package/test/sap/ui/core/qunit/opa/fixture/qunitPause-qunit1.html +3 -1
  796. package/test/sap/ui/core/qunit/opa/fixture/qunitPause-qunit2.html +3 -1
  797. package/test/sap/ui/core/qunit/opa/fixture/qunitPause.qunit.js +4 -1
  798. package/test/sap/ui/core/qunit/opa/fixture/uncaughtError.html +4 -3
  799. package/test/sap/ui/core/qunit/opa/fixture/uncaughtError.js +4 -1
  800. package/test/sap/ui/core/qunit/opa/matchers/I18NText.qunit.js +1 -1
  801. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +2 -1
  802. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +2 -1
  803. package/test/sap/ui/core/qunit/opa/opa5/iFrame.qunit.js +6 -5
  804. package/test/sap/ui/core/qunit/opa/opa5/iFrameLogging.qunit.js +26 -6
  805. package/test/sap/ui/core/qunit/opa/opa5/matchersInFrame.qunit.js +1 -1
  806. package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +2 -2
  807. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +3 -3
  808. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +5 -2
  809. package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +3 -2
  810. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +28 -18
  811. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +26 -12
  812. package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +5 -8
  813. package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +71 -64
  814. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +55 -2
  815. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/Component.js +0 -1
  816. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/manifest.json +5 -1
  817. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/Component.js +0 -1
  818. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/manifest.json +5 -1
  819. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/Component.js +0 -1
  820. package/test/sap/ui/core/qunit/routing/fixture/router/component/titleChanged/homeRoute/Component.js +15 -0
  821. package/test/sap/ui/core/qunit/routing/fixture/router/component/titleChanged/homeRoute/manifest.json +37 -0
  822. package/test/sap/ui/core/qunit/routing/fixture/router/component/titleChanged/homeRoute/view/MyView1.view.xml +3 -0
  823. package/test/sap/ui/core/qunit/routing/fixture/router/component/titleChanged/homeRoute/view/RootView.view.xml +3 -0
  824. package/test/sap/ui/core/qunit/rule/app/syncXHR.qunit.js +9 -0
  825. package/test/sap/ui/core/qunit/rule/model/modelSupport.qunit.js +4 -7
  826. package/test/sap/ui/core/qunit/security/Security.qunit.js +133 -0
  827. package/test/sap/ui/core/qunit/service/Service.qunit.js +13 -10
  828. package/test/sap/ui/core/qunit/testdata/libraries/customBundle/custom-bundle.js +2 -2
  829. package/test/sap/ui/core/qunit/testdata/libraries/customBundle/lib2/library-preload.js +1 -1
  830. package/test/sap/ui/core/qunit/testdata/libraries/customBundle/lib3/library-preload.js +1 -1
  831. package/test/sap/ui/core/qunit/testdata/libraries/customCss/lib1/library.js +3 -4
  832. package/test/sap/ui/core/qunit/testdata/libraries/make.js +4 -4
  833. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib1/library-preload.js +7 -4
  834. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib1/library.js +7 -4
  835. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib2/library-preload.json +1 -1
  836. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib2/library.js +7 -4
  837. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib3/library-preload.js +5 -4
  838. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib3/library.js +5 -4
  839. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib4/library-preload.js +3 -3
  840. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib4/library-preload.json +1 -1
  841. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib4/library.js +3 -3
  842. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib5/library-preload.json +1 -1
  843. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib5/library.js +3 -3
  844. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib6/library-preload.js +3 -3
  845. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib6/library.js +3 -3
  846. package/test/sap/ui/core/qunit/testdata/libraries/scenario1/lib7/library.js +3 -3
  847. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib1/library-preload.js +7 -4
  848. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib1/library.js +7 -4
  849. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib2/library-preload.json +1 -1
  850. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib2/library.js +7 -4
  851. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib3/library-preload.js +5 -4
  852. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib3/library.js +5 -4
  853. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib4/library-preload.js +3 -3
  854. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib4/library-preload.json +1 -1
  855. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib4/library.js +3 -3
  856. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib5/library-preload.json +1 -1
  857. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib5/library.js +3 -3
  858. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib6/library-preload.js +3 -3
  859. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib6/library.js +3 -3
  860. package/test/sap/ui/core/qunit/testdata/libraries/scenario13/lib7/library.js +3 -3
  861. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library-preload.js +3 -3
  862. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library.js +3 -3
  863. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library-preload.js +3 -3
  864. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library.js +3 -3
  865. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library-preload.js +3 -3
  866. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library.js +3 -3
  867. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib4/library-preload.js +3 -3
  868. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib4/library.js +3 -3
  869. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library-preload.js +3 -3
  870. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library.js +3 -3
  871. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library-preload.js +3 -3
  872. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library.js +3 -3
  873. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib7/library-preload.js +3 -3
  874. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib7/library.js +3 -3
  875. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library-preload.js +3 -3
  876. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library.js +3 -3
  877. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib1/library-preload.js +6 -4
  878. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib1/library.js +6 -4
  879. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib10/library-preload.js +3 -3
  880. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib10/library.js +3 -3
  881. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib2/library-preload.json +1 -1
  882. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib2/library.js +7 -4
  883. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib3/library-preload.js +5 -4
  884. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib3/library.js +5 -4
  885. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib4/library-preload.js +3 -3
  886. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib4/library-preload.json +1 -1
  887. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib4/library.js +3 -3
  888. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib5/library-preload.json +1 -1
  889. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib5/library.js +3 -3
  890. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib6/library-preload.js +3 -3
  891. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib6/library.js +3 -3
  892. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib7/library-preload.js +3 -3
  893. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib7/library.js +3 -3
  894. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib8/library-preload.js +5 -4
  895. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib8/library.js +5 -4
  896. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib9/library-preload.js +5 -4
  897. package/test/sap/ui/core/qunit/testdata/libraries/scenario15/lib9/library.js +5 -4
  898. package/test/sap/ui/core/qunit/testdata/libraries/scenario16/embeddingLib/library-preload.js +3 -3
  899. package/test/sap/ui/core/qunit/testdata/libraries/scenario16/embeddingLib/library.js +3 -3
  900. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib1/library-preload.js +7 -4
  901. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib1/library.js +7 -4
  902. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib2/library-preload.json +1 -1
  903. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib2/library.js +7 -4
  904. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib3/library-preload.js +5 -4
  905. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib3/library.js +5 -4
  906. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib4/library-preload.js +3 -3
  907. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib4/library-preload.json +1 -1
  908. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib4/library.js +3 -3
  909. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib5/library-preload.json +1 -1
  910. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib5/library.js +3 -3
  911. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib6/library-preload.js +3 -3
  912. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib6/library.js +3 -3
  913. package/test/sap/ui/core/qunit/testdata/libraries/scenario2/lib7/library.js +3 -3
  914. package/test/sap/ui/core/qunit/testdata/libraries/scenario3/lib1/library-preload.js +5 -4
  915. package/test/sap/ui/core/qunit/testdata/libraries/scenario3/lib1/library.js +5 -4
  916. package/test/sap/ui/core/qunit/testdata/libraries/scenario3/lib2/library-preload.json +1 -1
  917. package/test/sap/ui/core/qunit/testdata/libraries/scenario3/lib2/library.js +6 -4
  918. package/test/sap/ui/core/qunit/testdata/libraries/scenario3/lib3/library-preload.js +3 -3
  919. package/test/sap/ui/core/qunit/testdata/libraries/scenario3/lib3/library.js +3 -3
  920. package/test/sap/ui/core/qunit/testdata/libraries/scenario4/lib1/library-preload.js +5 -4
  921. package/test/sap/ui/core/qunit/testdata/libraries/scenario4/lib1/library.js +5 -4
  922. package/test/sap/ui/core/qunit/testdata/libraries/scenario4/lib2/library-preload.json +1 -1
  923. package/test/sap/ui/core/qunit/testdata/libraries/scenario4/lib2/library.js +5 -4
  924. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib1/library-preload.js +7 -4
  925. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib1/library.js +7 -4
  926. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib2/library-preload.js +6 -4
  927. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib2/library.js +6 -4
  928. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib3/library-preload.js +5 -4
  929. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib3/library.js +5 -4
  930. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib4/library-preload.js +3 -3
  931. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib4/library-preload.json +1 -1
  932. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib4/library.js +3 -3
  933. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib5/library-preload.json +1 -1
  934. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib5/library.js +3 -3
  935. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib6/library-preload.js +3 -3
  936. package/test/sap/ui/core/qunit/testdata/libraries/scenario5/lib6/library.js +3 -3
  937. package/test/sap/ui/core/qunit/testdata/libraries/scenario6/lib1/library-preload.json +1 -1
  938. package/test/sap/ui/core/qunit/testdata/libraries/scenario6/lib1/library.js +3 -3
  939. package/test/sap/ui/core/qunit/testdata/libraries/scenario6/lib2/library-preload.json +1 -1
  940. package/test/sap/ui/core/qunit/testdata/libraries/scenario6/lib2/library.js +3 -3
  941. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib1/library-preload.js +3 -3
  942. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib1/library-preload.json +1 -1
  943. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib1/library.js +3 -3
  944. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib2/library-preload.json +1 -1
  945. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib2/library.js +3 -3
  946. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib3/library-preload.js +3 -3
  947. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib3/library.js +3 -3
  948. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib4/library-preload.json +1 -1
  949. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib4/library.js +3 -3
  950. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib5/library-preload.js +3 -3
  951. package/test/sap/ui/core/qunit/testdata/libraries/scenario7/lib5/library.js +3 -3
  952. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib1/library-preload.js +3 -3
  953. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib1/library-preload.json +1 -1
  954. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib1/library.js +3 -3
  955. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib2/library-preload.json +1 -1
  956. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib2/library.js +3 -3
  957. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib3/library-preload.js +3 -3
  958. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib3/library.js +3 -3
  959. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib4/library-preload.json +1 -1
  960. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib4/library.js +3 -3
  961. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib5/library-preload.js +3 -3
  962. package/test/sap/ui/core/qunit/testdata/libraries/scenario8/lib5/library.js +3 -3
  963. package/test/sap/ui/core/qunit/testdata/libraries/scenario9/lib1/library-preload.js +3 -3
  964. package/test/sap/ui/core/qunit/testdata/libraries/scenario9/lib1/library.js +3 -3
  965. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/absoluteBundleUrl/library-preload.js +2 -2
  966. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/integration/lib/library-preload.js +1 -1
  967. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/notLoadedYet/library-preload.js +2 -2
  968. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/simple/library-preload.js +2 -2
  969. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib1/library.js +6 -4
  970. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib10/library.js +6 -4
  971. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib11/library.js +5 -3
  972. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib12/library.js +5 -3
  973. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib13/library.js +5 -3
  974. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib14/library.js +5 -3
  975. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib15/library.js +5 -3
  976. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib16/library.js +5 -3
  977. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib17/library.js +6 -3
  978. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib2/library.js +6 -4
  979. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib3/library.js +6 -4
  980. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib4/library.js +6 -4
  981. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib5/library.js +6 -4
  982. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib6/library.js +6 -4
  983. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib7/library.js +6 -4
  984. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib8/library.js +6 -4
  985. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib9/library.js +6 -4
  986. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require.view.xml +0 -1
  987. package/test/sap/ui/core/qunit/testsuite.qunit.js +2 -2
  988. package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +35 -0
  989. package/test/sap/ui/core/qunit/testsuites/testsuite.controls.qunit.js +2 -1
  990. package/test/sap/ui/core/qunit/testsuites/testsuite.eventing.qunit.js +0 -11
  991. package/test/sap/ui/core/qunit/testsuites/testsuite.security.qunit.js +7 -0
  992. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +4 -0
  993. package/test/sap/ui/core/qunit/types/Date.qunit.js +5 -5
  994. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +92 -99
  995. package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +50 -50
  996. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +5 -5
  997. package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +74 -4
  998. package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +332 -166
  999. package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +60 -24
  1000. package/test/sap/ui/core/qunit/types/NumberFormatCurrenciesTrailing.qunit.js +21 -21
  1001. package/test/sap/ui/core/qunit/types/Types.qunit.js +51 -48
  1002. package/test/sap/ui/core/qunit/types/ValidationHooks.qunit.js +151 -78
  1003. package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +7 -17
  1004. package/test/sap/ui/core/qunit/{types → ui5classes}/DataType.qunit.js +174 -17
  1005. package/test/sap/ui/core/qunit/{ManagedObjectMetadata.qunit.js → ui5classes/ManagedObjectMetadata.qunit.js} +0 -1
  1006. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry.qunit.js +1 -1
  1007. package/test/sap/ui/core/qunit/{ManagedObject_BindingParser.qunit.js → ui5classes/ManagedObject_BindingParser.qunit.js} +1 -1
  1008. package/test/sap/ui/core/qunit/ui5classes/testsuite.ui5classes.qunit.html +11 -0
  1009. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +62 -0
  1010. package/test/sap/ui/core/qunit/util/PasteHelper.qunit.js +5 -5
  1011. package/test/sap/ui/core/qunit/util/Popup.qunit.js +3 -71
  1012. package/test/sap/ui/core/qunit/util/ValueStateSupport.qunit.js +3 -3
  1013. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +6 -0
  1014. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +31 -16
  1015. package/test/sap/ui/core/qunit/util/jquery.sap.trace.qunit.js +1 -1
  1016. package/test/sap/ui/core/qunit/util/postmessage/ConfirmationDialog.qunit.js +4 -6
  1017. package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +11 -2
  1018. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +4 -4
  1019. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +4 -4
  1020. package/test/sap/ui/core/qunit/util/support/SupportTool.qunit.js +3 -2
  1021. package/test/sap/ui/core/qunit/util/support/TechnicalInfo.opa.qunit.js +22 -83
  1022. package/test/sap/ui/core/qunit/util/support/TechnicalInfo.qunit.js +3 -3
  1023. package/test/sap/ui/core/qunit/util/support/TechnicalInfoDebugModules.opa.qunit.js +22 -83
  1024. package/test/sap/ui/core/qunit/xml/XMLBinding.qunit.js +0 -2
  1025. package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +3 -4
  1026. package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +12 -14
  1027. package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +4 -6
  1028. package/test/sap/ui/core/qunit/xml/XMLTwoWay.qunit.js +8 -10
  1029. package/test/sap/ui/core/relnotes/changes-1.120.json +0 -510
  1030. package/test/sap/ui/core/relnotes/changes-1.121.json +604 -0
  1031. package/test/sap/ui/core/samples/components/config/modelPreloadAndEarlyRequests/manifest.json +3 -5
  1032. package/test/sap/ui/core/samples/databinding/UnitTable.controller.js +5 -5
  1033. package/test/sap/ui/core/terminologies/App.controller.js +3 -4
  1034. package/test/sap/ui/core/terminologies/main.js +4 -4
  1035. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  1036. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  1037. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  1038. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  1039. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  1040. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
  1041. package/test/sap/ui/qunit/testrunner.html +5 -2
  1042. package/test/testsuite/js/samples.js +5 -4
  1043. package/test/testsuite/js/settings.js +1 -1
  1044. package/test/testsuite/js/testframe.js +1 -1
  1045. package/test/testsuite/welcome.html +1 -1
  1046. package/LICENSES/BSD-2-Clause.txt +0 -22
  1047. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Formatter.js +0 -22
  1048. package/test/sap/ui/core/qunit/ManagedObjectRegistry.qunit.js +0 -150
  1049. package/test/sap/ui/core/qunit/testdata/uilib-using-legacy-module-apis/.library +0 -17
  1050. package/test/sap/ui/core/qunit/testdata/uilib-using-legacy-module-apis/TestButton.js +0 -85
  1051. package/test/sap/ui/core/qunit/testdata/uilib-using-legacy-module-apis/TestButtonRenderer.js +0 -63
  1052. package/test/sap/ui/core/qunit/testdata/uilib-using-legacy-module-apis/library.js +0 -24
  1053. package/test/sap/ui/core/qunit/testdata/uilib-using-legacy-module-apis/themes/base/library.css +0 -26
  1054. package/test/sap/ui/core/qunit/testsuites/testsuite.managed.object.qunit.html +0 -12
  1055. package/test/sap/ui/core/qunit/testsuites/testsuite.managed.object.qunit.js +0 -76
  1056. /package/test/sap/ui/core/qunit/bootstrap/{DebugMode.qunit.html → DebugModeSync.qunit.html} +0 -0
  1057. /package/test/sap/ui/core/qunit/{types → ui5classes}/AlternativeTypes.qunit.js +0 -0
  1058. /package/test/sap/ui/core/qunit/{ManagedObject.qunit.js → ui5classes/ManagedObject.qunit.js} +0 -0
  1059. /package/test/sap/ui/core/qunit/{ManagedObjectObserver.qunit.js → ui5classes/ManagedObjectObserver.qunit.js} +0 -0
  1060. /package/test/sap/ui/core/qunit/{ManagedObject_forwardAggregation.qunit.js → ui5classes/ManagedObject_forwardAggregation.qunit.js} +0 -0
  1061. /package/test/sap/ui/core/qunit/{ManagedObject_isPropertyInitial.qunit.js → ui5classes/ManagedObject_isPropertyInitial.qunit.js} +0 -0
  1062. /package/test/sap/ui/core/qunit/{Metadata.qunit.js → ui5classes/Metadata.qunit.js} +0 -0
  1063. /package/test/sap/ui/core/qunit/{Object.qunit.js → ui5classes/Object.qunit.js} +0 -0
  1064. /package/test/sap/ui/core/qunit/{Object_legacyAPIs.qunit.js → ui5classes/Object_legacyAPIs.qunit.js} +0 -0
  1065. /package/test/sap/ui/core/qunit/{testdata → ui5classes/fixture}/customboot/common.configure.ui5.js +0 -0
@@ -12,11 +12,12 @@ sap.ui.define([
12
12
  "./_GroupLock",
13
13
  "./_Helper",
14
14
  "./_MinMaxHelper",
15
+ "./_TreeState",
15
16
  "sap/base/Log",
16
17
  "sap/ui/base/SyncPromise",
17
18
  "sap/ui/model/odata/ODataUtils"
18
- ], function (_AggregationHelper, _Cache, _ConcatHelper, _GroupLock, _Helper, _MinMaxHelper, Log,
19
- SyncPromise, ODataUtils) {
19
+ ], function (_AggregationHelper, _Cache, _ConcatHelper, _GroupLock, _Helper, _MinMaxHelper,
20
+ _TreeState, Log, SyncPromise, ODataUtils) {
20
21
  "use strict";
21
22
 
22
23
  //*********************************************************************************************
@@ -116,43 +117,46 @@ sap.ui.define([
116
117
  } else if (fnLeaves) {
117
118
  _ConcatHelper.enhanceCache(that.oFirstLevel, oAggregation, [fnLeaves, fnCount]);
118
119
  }
120
+ this.oTreeState = new _TreeState(oAggregation.$NodeProperty);
121
+ // Whether this cache is a unified cache, using oFirstLevel with ExpandLevels instead of
122
+ // separate group level caches
123
+ this.bUnifiedCache = false;
119
124
  }
120
125
 
121
126
  // make _AggregationCache a _Cache, but actively disinherit some critical methods
122
127
  _AggregationCache.prototype = Object.create(_Cache.prototype);
123
128
  _AggregationCache.prototype.addTransientCollection = null;
124
- _AggregationCache.prototype.getAndRemoveCollection = null;
125
129
 
126
130
  /**
127
- * Deletes an entity on the server and in the cached data.
131
+ * Deletes a node on the server and in the cached data.
128
132
  *
129
133
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
130
134
  * A lock for the group ID to be used for the DELETE request
131
135
  * @param {string} sEditUrl
132
- * The entity's edit URL to be used for the DELETE request
133
- * @param {string} sIndex
134
- * The entity's index
136
+ * The node's edit URL to be used for the DELETE request
137
+ * @param {string} sIndexOrPredicate
138
+ * The node's index or its predicate if it is not in the collection
135
139
  * @param {object} [_oETagEntity]
136
140
  * An entity with the ETag of the binding for which the deletion was requested. Not used and
137
141
  * should always be undefined
138
142
  * @param {function(number,number):void} fnCallback
139
- * A function which is called immediately when an entity has been deleted from the cache, or
140
- * when it was re-inserted; the index of the entity and an offset (-1 for deletion, 1 for
141
- * re-insertion) are passed as parameter
143
+ * A function which is called immediately with the node's index and offset -1 as parameter
144
+ * when the node has been deleted from the cache; reinsertion does not occur
142
145
  * @returns {sap.ui.base.SyncPromise<void>}
143
146
  * A promise which is resolved without a result in case of success, or rejected with an
144
147
  * instance of <code>Error</code> in case of failure
145
- * @throws {Error} If the cache is shared, <code>sIndex</code> is not a number, or the node
146
- * at the given index is expanded.
148
+ * @throws {Error} If the cache is shared, the node is not in the collection (because a
149
+ * predicate was given), or the node at the given index is expanded.
147
150
  *
148
151
  * @public
149
152
  */
150
153
  // @override sap.ui.model.odata.v4.lib._Cache#_delete
151
- _AggregationCache.prototype._delete = function (oGroupLock, sEditUrl, sIndex, _oETagEntity,
152
- fnCallback) {
153
- let iIndex = parseInt(sIndex);
154
- if (isNaN(iIndex)) {
155
- throw new Error(`Unsupported kept-alive entity: ${this.sResourcePath}${sIndex}`);
154
+ _AggregationCache.prototype._delete = function (oGroupLock, sEditUrl, sIndexOrPredicate,
155
+ _oETagEntity, fnCallback) {
156
+ let iIndex = parseInt(sIndexOrPredicate);
157
+ if (isNaN(iIndex)) { // it must be a predicate because the element is not in the collection
158
+ throw new Error(
159
+ `Unsupported kept-alive entity: ${this.sResourcePath}${sIndexOrPredicate}`);
156
160
  }
157
161
 
158
162
  const oElement = this.aElements[iIndex];
@@ -377,6 +381,7 @@ sap.ui.define([
377
381
  const oGroupNode = this.getValue(sGroupNodePath);
378
382
  const oCollapsed = _AggregationHelper.getCollapsedObject(oGroupNode);
379
383
  _Helper.updateAll(this.mChangeListeners, sGroupNodePath, oGroupNode, oCollapsed);
384
+ this.oTreeState.collapse(oGroupNode);
380
385
 
381
386
  const aElements = this.aElements;
382
387
  const iIndex = aElements.indexOf(oGroupNode);
@@ -424,6 +429,9 @@ sap.ui.define([
424
429
  // "top pyramid" only!
425
430
  iGroupNodeLevel = this.oAggregation.expandTo;
426
431
  }
432
+ if (this.bUnifiedCache) {
433
+ iGroupNodeLevel = Infinity;
434
+ }
427
435
  const aElements = this.aElements;
428
436
  for (i = iIndex + 1; i < aElements.length; i += 1) {
429
437
  if (aElements[i]["@$ui5.node.level"] <= iGroupNodeLevel) {
@@ -498,7 +506,7 @@ sap.ui.define([
498
506
  const iLevel = oParentNode
499
507
  ? oParentNode["@$ui5.node.level"] + 1
500
508
  : 1;
501
- let oCache = iLevel > (this.oAggregation.expandTo || 1)
509
+ let oCache = iLevel > this.oAggregation.expandTo
502
510
  ? _Helper.getPrivateAnnotation(oParentNode, "cache")
503
511
  : this.oFirstLevel;
504
512
  if (!oCache) {
@@ -538,16 +546,21 @@ sap.ui.define([
538
546
  // Note: #calculateKeyPredicateRH doesn't know better :-(
539
547
  oEntityData["@$ui5.node.level"] = iLevel;
540
548
 
541
- if (this.oAggregation.expandTo >= 999) { // "expand all"
542
- const iRank = await this.requestRank(oEntityData, oGroupLock.getUnlockedCopy());
549
+ if (oCache === this.oFirstLevel && this.oAggregation.expandTo > 1) {
550
+ const [iRank] = await Promise.all([
551
+ this.requestRank(oEntityData, oGroupLock),
552
+ this.requestNodeProperty(oEntityData, oGroupLock)
553
+ ]);
543
554
 
544
- this.oFirstLevel.removeElement(0, sTransientPredicate);
555
+ oCache.removeElement(0, sTransientPredicate);
545
556
  _Helper.deletePrivateAnnotation(oEntityData, "transientPredicate");
546
- this.oFirstLevel.restoreElement(iRank, oEntityData);
557
+ oCache.restoreElement(iRank, oEntityData);
547
558
 
548
559
  delete this.aElements.$byPredicate[sTransientPredicate];
549
560
  _Helper.setPrivateAnnotation(oEntityData, "rank", iRank);
550
561
  this.shiftRank(iIndex, +1);
562
+ } else {
563
+ await this.requestNodeProperty(oEntityData, oGroupLock);
551
564
  }
552
565
 
553
566
  return oEntityData;
@@ -623,7 +636,9 @@ sap.ui.define([
623
636
  * The function is called just before the back-end request is sent.
624
637
  * If no back-end request is needed, the function is not called.
625
638
  * @returns {sap.ui.base.SyncPromise<number>}
626
- * A promise that is resolved with the number of nodes at the next level
639
+ * A promise that is resolved with the number of nodes at the next level, 0 if the node or
640
+ * one of its parent is collapsed again before the response arrived, or -1 if the cache needs
641
+ * to be refreshed (a unified cache)
627
642
  *
628
643
  * @public
629
644
  * @see #collapse
@@ -640,6 +655,7 @@ sap.ui.define([
640
655
  // Note: this also prevents a 2nd expand of the same node
641
656
  _Helper.updateAll(this.mChangeListeners, vGroupNodeOrPath, oGroupNode,
642
657
  _AggregationHelper.getOrCreateExpandedObject(this.oAggregation, oGroupNode));
658
+ this.oTreeState.expand(oGroupNode);
643
659
  } // else: no update needed!
644
660
 
645
661
  if (aSpliced) {
@@ -686,6 +702,9 @@ sap.ui.define([
686
702
  });
687
703
  return SyncPromise.resolve(iCount);
688
704
  }
705
+ if (this.bUnifiedCache) {
706
+ return SyncPromise.resolve(-1); // refresh needed
707
+ }
689
708
 
690
709
  let oCache = _Helper.getPrivateAnnotation(oGroupNode, "cache");
691
710
  if (!oCache) {
@@ -760,24 +779,26 @@ sap.ui.define([
760
779
  // Note: typeof vGroupNodeOrPath === "string"
761
780
  _Helper.updateAll(that.mChangeListeners, vGroupNodeOrPath, oGroupNode,
762
781
  _AggregationHelper.getCollapsedObject(oGroupNode));
782
+ that.oTreeState.collapse(oGroupNode);
763
783
 
764
784
  throw oError;
765
785
  });
766
786
  };
767
787
 
768
788
  /**
769
- * Returns a promise to be resolved with an OData object for the requested parent node.
789
+ * Returns a promise to be resolved with the index for the requested parent node. The
790
+ * parent is also added to the correct position in this cache.
770
791
  *
771
792
  * @param {number} iIndex
772
793
  * The index of the child node
773
794
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
774
795
  * A lock for the group to associate the requests with
775
- * @returns {sap.ui.base.SyncPromise}
776
- * A promise to be resolved with the requested data of the parent.
796
+ * @returns {Promise<number>}
797
+ * A promise to be resolved with the requested index of the parent.
777
798
  *
778
799
  * @public
779
800
  */
780
- _AggregationCache.prototype.fetchParent = function (iIndex, oGroupLock) {
801
+ _AggregationCache.prototype.fetchParentIndex = function (iIndex, oGroupLock) {
781
802
  const sFilter = _Helper.getKeyFilter(this.aElements[iIndex], this.oAggregation.$metaPath,
782
803
  this.getTypes());
783
804
  const mQueryOptions = Object.assign({}, this.mQueryOptions);
@@ -789,18 +810,31 @@ sap.ui.define([
789
810
  const sQueryString = this.sResourcePath
790
811
  + this.oRequestor.buildQueryString(/*sMetaPath*/null, mQueryOptions);
791
812
 
792
- return SyncPromise.all([
793
- this.oRequestor.request("GET", sQueryString, oGroupLock),
794
- this.fetchTypes()
795
- ]).then((aResults) => {
796
- const oParent = aResults[0].value[0];
797
- this.visitResponse(oParent, aResults[1],
798
- _Helper.getMetaPath(_Helper.buildPath(this.sMetaPath, "")));
799
-
800
- this.aElements.$byPredicate[_Helper.getPrivateAnnotation(oParent, "predicate")]
801
- = oParent;
802
-
803
- return oParent;
813
+ return this.oRequestor.request("GET", sQueryString, oGroupLock).then(async (oResult) => {
814
+ const oParent = oResult.value[0];
815
+ _Helper.setPrivateAnnotation(oParent, "parent", this.oFirstLevel);
816
+ const aSelect = [
817
+ this.oAggregation.$DistanceFromRoot,
818
+ this.oAggregation.$DrillState,
819
+ this.oAggregation.$LimitedDescendantCount
820
+ ];
821
+ const [iRank] = await Promise.all([
822
+ this.requestRank(oParent, oGroupLock),
823
+ this.requestProperties(oParent, aSelect, oGroupLock, true),
824
+ this.requestNodeProperty(oParent, oGroupLock)
825
+ ]);
826
+
827
+ this.oFirstLevel.calculateKeyPredicate(oParent,
828
+ this.getTypes(), _Helper.getMetaPath(_Helper.buildPath(this.sMetaPath, "")));
829
+
830
+ const iParentIndex = this.getArrayIndex(iRank);
831
+ this.addElements(oParent, iParentIndex, this.oFirstLevel, iRank);
832
+
833
+ // poor man's #replaceElement to replace undefined w/ oParent
834
+ this.oFirstLevel.removeElement(iRank);
835
+ this.oFirstLevel.restoreElement(iRank, oParent);
836
+
837
+ return iParentIndex;
804
838
  });
805
839
  };
806
840
 
@@ -880,6 +914,40 @@ sap.ui.define([
880
914
  return aAllElements;
881
915
  };
882
916
 
917
+ /**
918
+ * Returns the index in <code>aElements</code> for a given rank. The given (limited preorder)
919
+ * rank does not reflect the correct position of a node in the cache. On the one hand nodes
920
+ * within group level caches or out of place nodes (e.g. created or moved nodes) are causing
921
+ * that the position of the node to be inserted is further down, on the other hand collapsed
922
+ * nodes in the first level cache are causing that the insert position is further up.
923
+ *
924
+ * @param {number} iRank
925
+ * The (limited preorder) rank of a node
926
+ * @returns {number}
927
+ * The array index
928
+ *
929
+ * @private
930
+ */
931
+ _AggregationCache.prototype.getArrayIndex = function (iRank) {
932
+ let iIndex = iRank;
933
+ for (let i = 0; i < iIndex; i += 1) {
934
+ const oNode = this.aElements[i];
935
+ if (oNode["@$ui5.node.isExpanded"] === false) {
936
+ // descendants of collapsed nodes in oFirstLevel are reducing the rank in the list;
937
+ // descendants of nodes in group level caches must NOT be taken into account, these
938
+ // nodes have no private Annotation for the descendants
939
+ iIndex -= _Helper.getPrivateAnnotation(oNode, "descendants", 0);
940
+ }
941
+ // nodes of group level caches or out of place nodes must be taken into account
942
+ if (_Helper.getPrivateAnnotation(oNode, "parent") !== this.oFirstLevel
943
+ || _Helper.getPrivateAnnotation(oNode, "rank") > iRank) {
944
+ iIndex += 1;
945
+ }
946
+ }
947
+
948
+ return iIndex;
949
+ };
950
+
883
951
  /**
884
952
  * Nothing to do here, we have no created elements.
885
953
  *
@@ -1086,7 +1154,7 @@ sap.ui.define([
1086
1154
  ? _Helper.getPrivateAnnotation(oParentNode, "cache")
1087
1155
  : this.oFirstLevel;
1088
1156
  if (this.oAggregation.expandTo > 1) { // "expand all": GET LimitedRank
1089
- oReadPromise = this.requestRank(oChildNode, oGroupLock.getUnlockedCopy());
1157
+ oReadPromise = this.requestRank(oChildNode, oGroupLock);
1090
1158
  } else if (!oCache && oParentNode["@$ui5.node.isExpanded"] === false) {
1091
1159
  oCache = this.createGroupLevelCache(oParentNode);
1092
1160
  // @see #getExclusiveFilter
@@ -1455,7 +1523,9 @@ sap.ui.define([
1455
1523
  for (j = 0; j < that.aElements.$count; j += 1) {
1456
1524
  if (!that.aElements[j]) {
1457
1525
  that.aElements[j] = _AggregationHelper.createPlaceholder(
1458
- that.oAggregation.expandTo > 1 ? /*don't know*/0 : 1,
1526
+ that.oAggregation.expandTo > 1 || that.bUnifiedCache
1527
+ ? /*don't know*/0
1528
+ : 1,
1459
1529
  j - iOffset, that.oFirstLevel);
1460
1530
  }
1461
1531
  }
@@ -1497,6 +1567,8 @@ sap.ui.define([
1497
1567
  const oPromise = oCache.refreshSingle(oGroupLock, "", -1, sPredicate,
1498
1568
  /*bKeepAlive*/true, false, fnDataRequested)
1499
1569
  .then((oElement) => {
1570
+ _Helper.inheritPathValue(this.oAggregation.$NodeProperty.split("/"),
1571
+ oStartElement, oElement, true); // keep NodeProperty
1500
1572
  // make sure that ODLB reuses the same context instance
1501
1573
  _Helper.copyPrivateAnnotation(oStartElement, "context", oElement);
1502
1574
  this.addElements(oElement, iStart, oCache); // $skip index is undefined!
@@ -1564,34 +1636,85 @@ sap.ui.define([
1564
1636
  };
1565
1637
 
1566
1638
  /**
1567
- * Requests the (limited preorder) rank of the given element which must belong to
1568
- * <code>this.oFirstLevel</code>.
1639
+ * Requests and updates the NodeProperty ("the hierarchy node value") of the given element,
1640
+ * unless already available.
1569
1641
  *
1570
1642
  * @param {object} oElement - The element
1571
1643
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
1572
- * A lock for the group ID to be used for the GET request
1573
- * @returns {Promise<number>}
1574
- * A promise which is resolved with the (limited preorder) rank of the given element, or
1644
+ * An original lock for the group ID to be used for the GET request, to be cloned via
1645
+ * {@link sap.ui.model.odata.v4.lib._GroupLock#getUnlockedCopy}
1646
+ * @returns {Promise<void>}
1647
+ * A promise which is resolved without a defined result in case of success, or
1575
1648
  * rejected in case of an error
1576
1649
  *
1577
1650
  * @private
1578
1651
  */
1579
- _AggregationCache.prototype.requestRank = async function (oElement, oGroupLock) {
1652
+ _AggregationCache.prototype.requestNodeProperty = async function (oElement, oGroupLock) {
1653
+ if (_Helper.drillDown(oElement, this.oAggregation.$NodeProperty) !== undefined) {
1654
+ return; // already available
1655
+ }
1656
+
1657
+ await this.requestProperties(oElement, [this.oAggregation.$NodeProperty], oGroupLock, true);
1658
+ };
1659
+
1660
+ /**
1661
+ * Requests the given properties for the given element via a "mergeable GET".
1662
+ *
1663
+ * @param {object} oElement - The element
1664
+ * @param {string[]} aSelect - The relative paths to properties to be requested
1665
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
1666
+ * An original lock for the group ID to be used for the GET request, to be cloned via
1667
+ * {@link sap.ui.model.odata.v4.lib._GroupLock#getUnlockedCopy}
1668
+ * @param {boolean} [bInheritResult]
1669
+ * Whether the result is inherited in the given element
1670
+ * @returns {Promise<object|void>}
1671
+ * A promise which is resolved without a defined result in case <code>bInheritResult</code> is
1672
+ * set to <code>true</code>, or with the result object, or rejected in case of an error
1673
+ *
1674
+ * @private
1675
+ */
1676
+ _AggregationCache.prototype.requestProperties = async function (oElement, aSelect, oGroupLock,
1677
+ bInheritResult) {
1580
1678
  const sMetaPath = this.oAggregation.$metaPath;
1581
- const {$apply, $orderby} = this.oFirstLevel.getQueryOptions();
1582
1679
  const mQueryOptions = {
1583
- $apply,
1584
- $filter : _Helper.getKeyFilter(oElement, sMetaPath, this.getTypes()),
1585
- $select : this.oAggregation.$LimitedRank
1680
+ $apply : _Helper.getPrivateAnnotation(oElement, "parent").getQueryOptions().$apply,
1681
+ $filter : _Helper.getKeyFilter(oElement, sMetaPath, this.getTypes())
1586
1682
  };
1587
- if ($orderby) {
1588
- mQueryOptions.$orderby = $orderby;
1589
- }
1590
1683
  const sResourcePath = this.sResourcePath
1591
1684
  + this.oRequestor.buildQueryString(sMetaPath, mQueryOptions, false, true);
1592
- const oResult = await this.oRequestor.request("GET", sResourcePath, oGroupLock);
1685
+ const oResult = await this.oRequestor.request("GET", sResourcePath,
1686
+ oGroupLock.getUnlockedCopy(), undefined, undefined, undefined, undefined, sMetaPath,
1687
+ undefined, false, {$select : aSelect}, this);
1688
+ const oRequestedProperties = oResult.value[0];
1689
+
1690
+ if (bInheritResult) {
1691
+ aSelect.forEach((sPath) => {
1692
+ _Helper.inheritPathValue(sPath.split("/"), oRequestedProperties, oElement, true);
1693
+ });
1694
+ } else {
1695
+ return oRequestedProperties;
1696
+ }
1697
+ };
1698
+
1699
+ /**
1700
+ * Requests the (limited preorder) rank of the given element which must belong to
1701
+ * <code>this.oFirstLevel</code>.
1702
+ *
1703
+ * @param {object} oElement - The element
1704
+ * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
1705
+ * An original lock for the group ID to be used for the GET request, to be cloned via
1706
+ * {@link sap.ui.model.odata.v4.lib._GroupLock#getUnlockedCopy}
1707
+ * @returns {Promise<number>}
1708
+ * A promise which is resolved with the (limited preorder) rank of the given element, or
1709
+ * rejected in case of an error
1710
+ *
1711
+ * @private
1712
+ */
1713
+ _AggregationCache.prototype.requestRank = async function (oElement, oGroupLock) {
1714
+ const oResult
1715
+ = await this.requestProperties(oElement, [this.oAggregation.$LimitedRank], oGroupLock);
1593
1716
 
1594
- return parseInt(_Helper.drillDown(oResult.value[0], this.oAggregation.$LimitedRank));
1717
+ return parseInt(_Helper.drillDown(oResult, this.oAggregation.$LimitedRank));
1595
1718
  };
1596
1719
 
1597
1720
  /**
@@ -1620,13 +1743,19 @@ sap.ui.define([
1620
1743
  });
1621
1744
 
1622
1745
  this.oAggregation = oAggregation;
1623
- this.sDownloadUrl = _Cache.prototype.getDownloadUrl.call(this, "");
1624
1746
  // "super" call (like @borrows ...)
1625
1747
  this.oFirstLevel.reset.call(this, aKeptElementPredicates, sGroupId, mQueryOptions);
1626
- if (sGroupId) {
1748
+ // reset modifies the cache's query options => recalculate the download URL
1749
+ this.sDownloadUrl = _Cache.prototype.getDownloadUrl.call(this, "");
1750
+ if (sGroupId) { // sGroupId means we are in a side-effects refresh
1627
1751
  this.oBackup.oCountPromise = this.oCountPromise;
1628
1752
  this.oBackup.oFirstLevel = this.oFirstLevel;
1753
+ this.oBackup.bUnifiedCache = this.bUnifiedCache;
1754
+ this.bUnifiedCache = true;
1755
+ } else {
1756
+ this.oTreeState.reset();
1629
1757
  }
1758
+ this.oAggregation.$ExpandLevels = this.oTreeState.getExpandLevels();
1630
1759
  this.oCountPromise = undefined;
1631
1760
  if (mQueryOptions.$count) {
1632
1761
  this.oCountPromise = new SyncPromise(function (resolve) {
@@ -1653,6 +1782,7 @@ sap.ui.define([
1653
1782
  if (bReally) {
1654
1783
  this.oCountPromise = this.oBackup.oCountPromise;
1655
1784
  this.oFirstLevel = this.oBackup.oFirstLevel;
1785
+ this.bUnifiedCache = this.oBackup.bUnifiedCache;
1656
1786
  }
1657
1787
  // "super" call (like @borrows ...)
1658
1788
  this.oFirstLevel.restore.call(this, bReally);
@@ -1663,7 +1793,7 @@ sap.ui.define([
1663
1793
  * the given array index by the given offset, except for elements where it is
1664
1794
  * <code>undefined</code> or lower than the node's own rank. If the node at the given index
1665
1795
  * itself has an <code>undefined</code> rank, nothing is shifted. Note that inside
1666
- * <code>this.oFirstLevel</code> not only siblings are affected.
1796
+ * <code>this.oFirstLevel</code> not only siblings are affected and it's not simply "after".
1667
1797
  *
1668
1798
  * @param {number} iIndex
1669
1799
  * Index in <code>this.aElements</code> of a node
@@ -1680,8 +1810,14 @@ sap.ui.define([
1680
1810
  }
1681
1811
 
1682
1812
  const oCache = _Helper.getPrivateAnnotation(oNode, "parent");
1813
+ if (oCache === this.oFirstLevel) {
1814
+ iIndex = -1; // search from the start!
1815
+ }
1683
1816
  for (let i = iIndex + 1; i < this.aElements.length; i += 1) {
1684
1817
  const oSibling = this.aElements[i];
1818
+ if (oSibling === oNode) {
1819
+ continue;
1820
+ }
1685
1821
  if (_Helper.getPrivateAnnotation(oSibling, "parent") === oCache) {
1686
1822
  const iRank = _Helper.getPrivateAnnotation(oSibling, "rank");
1687
1823
  if (iRank >= iMinRank) { // Note: undefined >= ... is false
@@ -207,7 +207,7 @@ sap.ui.define([
207
207
  * @param {object} oAggregation
208
208
  * An object holding the information needed for data aggregation; see
209
209
  * {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}. The properties
210
- * "aggregate", "group", and "groupLevels" are normalized if applicable!
210
+ * "aggregate", "group", "groupLevels", and "expandTo" are normalized if applicable!
211
211
  * @param {string} [oAggregation.hierarchyQualifier]
212
212
  * If present, a recursive hierarchy w/o data aggregation is defined and
213
213
  * {@link _AggregationHelper.buildApply4Hierarchy} is invoked instead.
@@ -415,13 +415,19 @@ sap.ui.define([
415
415
  *
416
416
  * @param {object} oAggregation
417
417
  * An object holding the information needed for a recursive hierarchy; see
418
- * {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}.
418
+ * {@link sap.ui.model.odata.v4.ODataListBinding#setAggregation}. The property
419
+ * "expandTo" is normalized if applicable!
419
420
  * @param {function} [oAggregation.$fetchMetadata]
420
421
  * Function which fetches metadata for a given meta path - NOT always available!
421
422
  * @param {string} [oAggregation.$metaPath]
422
423
  * Meta path as set by {@link #setPath}
423
424
  * @param {string} [oAggregation.$path]
424
425
  * Data path as set by {@link #setPath}
426
+ * @param {number} [oAggregation.expandTo=1]
427
+ * The number (as a positive integer) of different levels initially available
428
+ * @param {string} [oAggregation.hierarchyQualifier]
429
+ * The qualifier for the pair of "Org.OData.Aggregation.V1.RecursiveHierarchy" and
430
+ * "com.sap.vocabularies.Hierarchy.v1.RecursiveHierarchy" annotations
425
431
  * @param {string} [oAggregation.search]
426
432
  * Like the value for a "$search" system query option (remember ODATA-1452); it is turned
427
433
  * into the search expression parameter of an "ancestors()" transformation
@@ -522,16 +528,20 @@ sap.ui.define([
522
528
  sApply += "orderby(" + mQueryOptions.$orderby + ")/";
523
529
  delete mQueryOptions.$orderby;
524
530
  }
531
+ oAggregation.expandTo ??= 1;
532
+ const sExpandLevels = !bAllLevels && oAggregation.$ExpandLevels;
525
533
  sApply += "com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root"
526
534
  + (oAggregation.$path || "")
527
535
  + ",HierarchyQualifier='" + oAggregation.hierarchyQualifier
528
536
  + "',NodeProperty='" + sNodeProperty + "'"
529
- + (bAllLevels || oAggregation.expandTo >= 999
530
- ? ")" // "all levels"
531
- : ",Levels=" + (oAggregation.expandTo || 1) + ")");
537
+ + (bAllLevels || oAggregation.expandTo >= Number.MAX_SAFE_INTEGER
538
+ ? "" // "all levels"
539
+ : ",Levels=" + oAggregation.expandTo)
540
+ + (sExpandLevels ? ",ExpandLevels=" + sExpandLevels : "")
541
+ + ")";
532
542
  if (bAllLevels) {
533
543
  select("DistanceFromRoot");
534
- } else if (oAggregation.expandTo > 1) {
544
+ } else if (oAggregation.expandTo > 1 || sExpandLevels) {
535
545
  select("DistanceFromRoot");
536
546
  select("LimitedDescendantCount");
537
547
  }
@@ -1003,8 +1003,8 @@ sap.ui.define([
1003
1003
  $select : this.mQueryOptions.$select,
1004
1004
  $expand : this.mQueryOptions.$expand
1005
1005
  };
1006
- // sRequestedPropertyPath is also a metapath because the binding does not accept a path with
1007
- // a collection-valued navigation property for a late property
1006
+ // sRequestedPropertyPath is also a meta path because the binding does not accept a path
1007
+ // with a collection-valued navigation property for a late property
1008
1008
  mQueryOptions = _Helper.intersectQueryOptions(
1009
1009
  _Helper.getQueryOptionsForPath(mQueryOptions, sResourcePath),
1010
1010
  [sRequestedPropertyPath], this.oRequestor.getModelInterface().fetchMetadata,
@@ -1124,7 +1124,7 @@ sap.ui.define([
1124
1124
  *
1125
1125
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
1126
1126
  * A lock for the group to associate the request with;
1127
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
1127
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
1128
1128
  * @param {string} [sPath]
1129
1129
  * Relative path to drill-down into
1130
1130
  * @param {function} [fnDataRequested]
@@ -1949,7 +1949,11 @@ sap.ui.define([
1949
1949
  this.iLimit += 1; // this doesn't change Infinity
1950
1950
  }
1951
1951
  _Helper.addToCount(this.mChangeListeners, sPath, aElements, 1);
1952
- aElements.splice(iIndex, 0, oElement);
1952
+ if (iIndex >= aElements.length) { // Note: #splice ignores iIndex then!
1953
+ aElements[iIndex] = oElement;
1954
+ } else {
1955
+ aElements.splice(iIndex, 0, oElement);
1956
+ }
1953
1957
  aElements.$byPredicate[_Helper.getPrivateAnnotation(oElement, "predicate")] = oElement;
1954
1958
  };
1955
1959
 
@@ -2585,6 +2589,7 @@ sap.ui.define([
2585
2589
  this.aElements.$count = undefined; // see _Helper.setCount
2586
2590
  // number of all (client-side) created elements (active or inactive)
2587
2591
  this.aElements.$created = 0;
2592
+ // this.aElements.$deleted = []; // only created on demand
2588
2593
  this.aElements.$tail = undefined; // promise for a read w/o $top
2589
2594
  // upper limit for @odata.count, maybe sharp; assumes #getQueryString can $filter out all
2590
2595
  // created elements
@@ -2706,7 +2711,7 @@ sap.ui.define([
2706
2711
  *
2707
2712
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
2708
2713
  * A lock for the group to associate the request with
2709
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
2714
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
2710
2715
  * @param {string} [sPath]
2711
2716
  * Relative path to drill-down into
2712
2717
  * @param {function} [_fnDataRequested]
@@ -3450,6 +3455,7 @@ sap.ui.define([
3450
3455
  var oPromise,
3451
3456
  oReadRequest = {
3452
3457
  iEnd : iEnd,
3458
+ bObsolete : false,
3453
3459
  iStart : iStart
3454
3460
  },
3455
3461
  that = this;
@@ -3472,7 +3478,7 @@ sap.ui.define([
3472
3478
  ]).then(function (aResult) {
3473
3479
  var iFiltered;
3474
3480
 
3475
- if (oReadRequest.obsolete) {
3481
+ if (oReadRequest.bObsolete) {
3476
3482
  const oError = new Error("Request is obsolete");
3477
3483
  oError.canceled = true;
3478
3484
  throw oError;
@@ -3507,7 +3513,7 @@ sap.ui.define([
3507
3513
  *
3508
3514
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
3509
3515
  * A lock for the ID of the group that is associated with the request;
3510
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
3516
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
3511
3517
  * @param {string[]} aPaths
3512
3518
  * The "14.5.11 Expression edm:NavigationPropertyPath" or
3513
3519
  * "14.5.13 Expression edm:PropertyPath" strings describing which properties need to be loaded
@@ -3695,6 +3701,7 @@ sap.ui.define([
3695
3701
  this.aElements.length = this.aElements.$created = iCreated;
3696
3702
  this.aElements.$byPredicate = {};
3697
3703
  this.aElements.$count = undefined; // needed for _Helper.setCount
3704
+ // Note: this.aElements.$deleted must remain unchanged
3698
3705
  this.iLimit = Infinity;
3699
3706
 
3700
3707
  Object.keys(mChangeListeners).forEach(function (sPath) {
@@ -3707,7 +3714,7 @@ sap.ui.define([
3707
3714
  });
3708
3715
  // Beware: fireChange can trigger a read which must not be obsoleted
3709
3716
  this.aReadRequests?.forEach((oReadRequest) => {
3710
- oReadRequest.obsolete = true;
3717
+ oReadRequest.bObsolete = true;
3711
3718
  });
3712
3719
  if (mChangeListeners[""]) {
3713
3720
  this.mChangeListeners[""] = mChangeListeners[""];
@@ -3846,7 +3853,7 @@ sap.ui.define([
3846
3853
  *
3847
3854
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
3848
3855
  * A lock for the group to associate the request with
3849
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
3856
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
3850
3857
  * @param {string} [_sPath]
3851
3858
  * ignored for property caches, should be empty
3852
3859
  * @param {function} [fnDataRequested]
@@ -3979,7 +3986,7 @@ sap.ui.define([
3979
3986
  *
3980
3987
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
3981
3988
  * A lock for the group to associate the request with
3982
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
3989
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
3983
3990
  * @param {string} [sPath]
3984
3991
  * Relative path to drill-down into
3985
3992
  * @param {function} [fnDataRequested]
@@ -4057,7 +4064,7 @@ sap.ui.define([
4057
4064
  *
4058
4065
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
4059
4066
  * A lock for the ID of the group that is associated with the request;
4060
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
4067
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
4061
4068
  * @param {object} [oData]
4062
4069
  * A copy of the data to be sent with the POST request; may be used to tunnel a different
4063
4070
  * HTTP method via a property "X-HTTP-Method" (which is removed)
@@ -4100,7 +4107,7 @@ sap.ui.define([
4100
4107
  * until this request has returned.
4101
4108
  */
4102
4109
  function onSubmit() {
4103
- oRequestLock = that.oRequestor.lockGroup(oGroupLock.getGroupId(), that, true);
4110
+ oRequestLock = that.oRequestor.lockGroup(sGroupId, that, true);
4104
4111
  }
4105
4112
 
4106
4113
  function post(oGroupLock0) {
@@ -4110,7 +4117,7 @@ sap.ui.define([
4110
4117
  return SyncPromise.all([
4111
4118
  that.oRequestor.request(sHttpMethod,
4112
4119
  that.sResourcePath + that.sQueryString, oGroupLock0, mHeaders, oData,
4113
- oEntity && onSubmit),
4120
+ oEntity && sGroupId !== "$single" && onSubmit),
4114
4121
  that.fetchTypes()
4115
4122
  ]).then(function (aResult) {
4116
4123
  that.buildOriginalResourcePath(aResult[0], aResult[1], fnGetOriginalResourcePath);
@@ -4190,7 +4197,7 @@ sap.ui.define([
4190
4197
  *
4191
4198
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
4192
4199
  * A lock for the ID of the group that is associated with the request;
4193
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
4200
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
4194
4201
  * @param {string[]} aPaths
4195
4202
  * The "14.5.11 Expression edm:NavigationPropertyPath" or
4196
4203
  * "14.5.13 Expression edm:PropertyPath" strings describing which properties need to be loaded
@@ -4349,7 +4356,7 @@ sap.ui.define([
4349
4356
  *
4350
4357
  * @param {sap.ui.model.odata.v4.lib._GroupLock} oGroupLock
4351
4358
  * A lock for the group to associate the request with
4352
- * see {sap.ui.model.odata.v4.lib._Requestor#request} for details
4359
+ * see {@link sap.ui.model.odata.v4.lib._Requestor#request} for details
4353
4360
  * @param {string} [_sPath]
4354
4361
  * ignored for property caches, should be empty
4355
4362
  * @param {function} [fnDataRequested]