@openui5/sap.ui.core 1.117.1 → 1.118.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (831) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/Event.js +1 -1
  8. package/src/sap/base/Eventing.js +1 -1
  9. package/src/sap/base/config.js +1 -1
  10. package/src/sap/base/i18n/LanguageTag.js +1 -1
  11. package/src/sap/base/i18n/Localization.js +42 -39
  12. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  13. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  14. package/src/sap/base/util/restricted/_castArray.js +1 -1
  15. package/src/sap/base/util/restricted/_compact.js +1 -1
  16. package/src/sap/base/util/restricted/_curry.js +1 -1
  17. package/src/sap/base/util/restricted/_debounce.js +1 -1
  18. package/src/sap/base/util/restricted/_difference.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  24. package/src/sap/base/util/restricted/_flatten.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_intersection.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isNil.js +1 -1
  33. package/src/sap/base/util/restricted/_max.js +1 -1
  34. package/src/sap/base/util/restricted/_merge.js +1 -1
  35. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  36. package/src/sap/base/util/restricted/_min.js +1 -1
  37. package/src/sap/base/util/restricted/_omit.js +1 -1
  38. package/src/sap/base/util/restricted/_pick.js +1 -1
  39. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  40. package/src/sap/base/util/restricted/_throttle.js +1 -1
  41. package/src/sap/base/util/restricted/_toArray.js +1 -1
  42. package/src/sap/base/util/restricted/_union.js +1 -1
  43. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  44. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  45. package/src/sap/base/util/restricted/_uniq.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  48. package/src/sap/base/util/restricted/_without.js +1 -1
  49. package/src/sap/base/util/restricted/_xor.js +1 -1
  50. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  51. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  54. package/src/sap/ui/Device.js +3 -3
  55. package/src/sap/ui/Global.js +4 -4
  56. package/src/sap/ui/base/BindingParser.js +2 -1
  57. package/src/sap/ui/base/Event.js +1 -1
  58. package/src/sap/ui/base/EventProvider.js +1 -1
  59. package/src/sap/ui/base/Interface.js +1 -1
  60. package/src/sap/ui/base/ManagedObject.js +7 -3
  61. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  62. package/src/sap/ui/base/Metadata.js +1 -1
  63. package/src/sap/ui/base/Object.js +1 -1
  64. package/src/sap/ui/base/ObjectPool.js +1 -1
  65. package/src/sap/ui/core/.library +9 -1
  66. package/src/sap/ui/core/AnimationMode.js +1 -1
  67. package/src/sap/ui/core/BlockLayerUtils.js +1 -1
  68. package/src/sap/ui/core/BusyIndicator.js +2 -2
  69. package/src/sap/ui/core/Component.js +22 -15
  70. package/src/sap/ui/core/ComponentContainer.js +2 -2
  71. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  72. package/src/sap/ui/core/ComponentSupport.js +1 -1
  73. package/src/sap/ui/core/Configuration.js +1 -13
  74. package/src/sap/ui/core/Control.js +21 -1
  75. package/src/sap/ui/core/Core.js +67 -41
  76. package/src/sap/ui/core/CustomData.js +1 -1
  77. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  78. package/src/sap/ui/core/Element.js +1 -1
  79. package/src/sap/ui/core/ElementMetadata.js +1 -1
  80. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  81. package/src/sap/ui/core/EventBus.js +1 -1
  82. package/src/sap/ui/core/Fragment.js +1 -1
  83. package/src/sap/ui/core/HTML.js +1 -1
  84. package/src/sap/ui/core/History.js +1 -1
  85. package/src/sap/ui/core/Icon.js +2 -2
  86. package/src/sap/ui/core/IndicationColorSupport.js +2 -2
  87. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  88. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  89. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  90. package/src/sap/ui/core/InvisibleText.js +3 -6
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +1 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/Lib.js +9 -13
  95. package/src/sap/ui/core/ListItem.js +1 -1
  96. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  97. package/src/sap/ui/core/Locale.js +1 -1
  98. package/src/sap/ui/core/LocaleData.js +2 -2
  99. package/src/sap/ui/core/Manifest.js +1 -1
  100. package/src/sap/ui/core/Message.js +1 -1
  101. package/src/sap/ui/core/Messaging.js +472 -0
  102. package/src/sap/ui/core/RenderManager.js +1 -1
  103. package/src/sap/ui/core/Renderer.js +1 -1
  104. package/src/sap/ui/core/Rendering.js +3 -2
  105. package/src/sap/ui/core/ResizeHandler.js +1 -4
  106. package/src/sap/ui/core/ScrollBar.js +1 -1
  107. package/src/sap/ui/core/SeparatorItem.js +1 -1
  108. package/src/sap/ui/core/ShortcutHint.js +1 -1
  109. package/src/sap/ui/core/Theming.js +28 -31
  110. package/src/sap/ui/core/Title.js +1 -1
  111. package/src/sap/ui/core/TooltipBase.js +1 -1
  112. package/src/sap/ui/core/UIArea.js +85 -17
  113. package/src/sap/ui/core/UIComponent.js +1 -1
  114. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  115. package/src/sap/ui/core/ValueStateSupport.js +2 -2
  116. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  117. package/src/sap/ui/core/XMLComposite.js +1 -1
  118. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  119. package/src/sap/ui/core/_IconRegistry.js +1 -1
  120. package/src/sap/ui/core/boot.js +9 -0
  121. package/src/sap/ui/core/date/UI5Date.js +1 -1
  122. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  123. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  124. package/src/sap/ui/core/dnd/DragAndDrop.js +1 -1
  125. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  126. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  127. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  128. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  129. package/src/sap/ui/core/format/DateFormat.js +4 -0
  130. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  131. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  132. package/src/sap/ui/core/library.js +18 -47
  133. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  134. package/src/sap/ui/core/message/Message.js +1 -1
  135. package/src/sap/ui/core/message/MessageManager.js +37 -459
  136. package/src/sap/ui/core/message/MessageMixin.js +3 -3
  137. package/src/sap/ui/core/message/MessageParser.js +1 -1
  138. package/src/sap/ui/core/message/MessageProcessor.js +9 -9
  139. package/src/sap/ui/core/message/MessageType.js +53 -0
  140. package/src/sap/ui/core/messagebundle.properties +3 -0
  141. package/src/sap/ui/core/messagebundle_ar.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_bg.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_ca.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_cs.properties +1 -1
  145. package/src/sap/ui/core/messagebundle_cy.properties +1 -1
  146. package/src/sap/ui/core/messagebundle_da.properties +1 -1
  147. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  148. package/src/sap/ui/core/messagebundle_el.properties +1 -1
  149. package/src/sap/ui/core/messagebundle_es.properties +1 -1
  150. package/src/sap/ui/core/messagebundle_es_MX.properties +1 -1
  151. package/src/sap/ui/core/messagebundle_et.properties +1 -1
  152. package/src/sap/ui/core/messagebundle_fi.properties +1 -1
  153. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  154. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -1
  155. package/src/sap/ui/core/messagebundle_hi.properties +1 -1
  156. package/src/sap/ui/core/messagebundle_hr.properties +1 -1
  157. package/src/sap/ui/core/messagebundle_hu.properties +1 -1
  158. package/src/sap/ui/core/messagebundle_id.properties +1 -1
  159. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  160. package/src/sap/ui/core/messagebundle_iw.properties +1 -1
  161. package/src/sap/ui/core/messagebundle_ja.properties +1 -1
  162. package/src/sap/ui/core/messagebundle_kk.properties +1 -1
  163. package/src/sap/ui/core/messagebundle_ko.properties +1 -1
  164. package/src/sap/ui/core/messagebundle_lt.properties +1 -1
  165. package/src/sap/ui/core/messagebundle_lv.properties +1 -1
  166. package/src/sap/ui/core/messagebundle_ms.properties +1 -1
  167. package/src/sap/ui/core/messagebundle_nl.properties +1 -1
  168. package/src/sap/ui/core/messagebundle_no.properties +1 -1
  169. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  170. package/src/sap/ui/core/messagebundle_pt.properties +1 -1
  171. package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -1
  172. package/src/sap/ui/core/messagebundle_ro.properties +1 -1
  173. package/src/sap/ui/core/messagebundle_ru.properties +1 -1
  174. package/src/sap/ui/core/messagebundle_sh.properties +1 -1
  175. package/src/sap/ui/core/messagebundle_sk.properties +1 -1
  176. package/src/sap/ui/core/messagebundle_sl.properties +1 -1
  177. package/src/sap/ui/core/messagebundle_sv.properties +9 -9
  178. package/src/sap/ui/core/messagebundle_th.properties +1 -1
  179. package/src/sap/ui/core/messagebundle_tr.properties +1 -1
  180. package/src/sap/ui/core/messagebundle_uk.properties +1 -1
  181. package/src/sap/ui/core/messagebundle_vi.properties +1 -1
  182. package/src/sap/ui/core/messagebundle_zh_CN.properties +1 -1
  183. package/src/sap/ui/core/messagebundle_zh_TW.properties +1 -1
  184. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  185. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  186. package/src/sap/ui/core/mvc/JSView.js +1 -1
  187. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  188. package/src/sap/ui/core/mvc/View.js +1 -1
  189. package/src/sap/ui/core/mvc/XMLView.js +9 -2
  190. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  191. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  192. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  193. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  194. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  195. package/src/sap/ui/core/routing/Router.js +7 -1
  196. package/src/sap/ui/core/routing/async/Route.js +1 -0
  197. package/src/sap/ui/core/routing/sync/Route.js +1 -0
  198. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  199. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  200. package/src/sap/ui/core/service/Service.js +1 -1
  201. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  202. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  203. package/src/sap/ui/core/support/Plugin.js +25 -5
  204. package/src/sap/ui/core/support/Support.js +34 -4
  205. package/src/sap/ui/core/support/ToolsAPI.js +6 -16
  206. package/src/sap/ui/core/support/controls/InteractionTree.js +0 -4
  207. package/src/sap/ui/core/support/plugins/Breakpoint.js +0 -2
  208. package/src/sap/ui/core/support/plugins/ControlTree.js +10 -12
  209. package/src/sap/ui/core/support/plugins/Debugging.js +10 -9
  210. package/src/sap/ui/core/support/plugins/Interaction.js +12 -13
  211. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -3
  212. package/src/sap/ui/core/support/plugins/Performance.js +1 -3
  213. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  214. package/src/sap/ui/core/support/plugins/TechInfo.js +32 -42
  215. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  216. package/src/sap/ui/core/support/plugins/ViewInfo.js +27 -13
  217. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +4 -4
  218. package/src/sap/ui/core/theming/ThemeHelper.js +100 -0
  219. package/src/sap/ui/core/theming/ThemeManager.js +18 -18
  220. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  221. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  222. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  223. package/src/sap/ui/core/tmpl/Template.js +1 -1
  224. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  225. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  226. package/src/sap/ui/core/util/Export.js +1 -1
  227. package/src/sap/ui/core/util/ExportCell.js +1 -1
  228. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  229. package/src/sap/ui/core/util/ExportRow.js +1 -1
  230. package/src/sap/ui/core/util/ExportType.js +1 -1
  231. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  232. package/src/sap/ui/core/util/File.js +1 -1
  233. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  234. package/src/sap/ui/core/util/MockServer.js +1 -1
  235. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  236. package/src/sap/ui/core/util/XMLPreprocessor.js +53 -29
  237. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  238. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  239. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  240. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  241. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  242. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  243. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  244. package/src/sap/ui/core/webc/WebComponent.js +659 -0
  245. package/src/sap/ui/core/webc/WebComponentMetadata.js +253 -0
  246. package/src/sap/ui/core/webc/WebComponentRenderer.js +323 -0
  247. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  248. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  249. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  250. package/src/sap/ui/debug/ControlTree.js +4 -3
  251. package/src/sap/ui/debug/DebugEnv.js +4 -4
  252. package/src/sap/ui/debug/PropertyList.js +1 -1
  253. package/src/sap/ui/model/Binding.js +6 -6
  254. package/src/sap/ui/model/ClientModel.js +1 -1
  255. package/src/sap/ui/model/ClientPropertyBinding.js +3 -3
  256. package/src/sap/ui/model/CompositeDataState.js +1 -1
  257. package/src/sap/ui/model/CompositeType.js +1 -1
  258. package/src/sap/ui/model/Context.js +1 -1
  259. package/src/sap/ui/model/DataState.js +1 -1
  260. package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
  261. package/src/sap/ui/model/MetaModel.js +1 -1
  262. package/src/sap/ui/model/Model.js +4 -4
  263. package/src/sap/ui/model/SelectionModel.js +1 -1
  264. package/src/sap/ui/model/SimpleType.js +1 -1
  265. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  266. package/src/sap/ui/model/Type.js +1 -1
  267. package/src/sap/ui/model/controlhelper/TreeBindingProxy.js +27 -13
  268. package/src/sap/ui/model/json/JSONModel.js +1 -1
  269. package/src/sap/ui/model/message/MessageModel.js +1 -1
  270. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  271. package/src/sap/ui/model/odata/ODataListBinding.js +24 -0
  272. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  273. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  274. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  275. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  276. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +6 -0
  277. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  278. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  279. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  280. package/src/sap/ui/model/odata/type/Date.js +1 -1
  281. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  282. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  283. package/src/sap/ui/model/odata/type/DateTimeOffset.js +7 -2
  284. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  285. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  286. package/src/sap/ui/model/odata/type/Double.js +1 -1
  287. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  288. package/src/sap/ui/model/odata/type/Int.js +1 -1
  289. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  290. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  291. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  292. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  293. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  294. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  295. package/src/sap/ui/model/odata/type/Single.js +1 -1
  296. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  297. package/src/sap/ui/model/odata/type/String.js +1 -1
  298. package/src/sap/ui/model/odata/type/Time.js +1 -1
  299. package/src/sap/ui/model/odata/type/TimeOfDay.js +6 -2
  300. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  301. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  302. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  303. package/src/sap/ui/model/odata/v2/ODataListBinding.js +23 -3
  304. package/src/sap/ui/model/odata/v2/ODataModel.js +6 -6
  305. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +33 -6
  306. package/src/sap/ui/model/odata/v4/Context.js +26 -16
  307. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -2
  308. package/src/sap/ui/model/odata/v4/ODataListBinding.js +62 -29
  309. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  310. package/src/sap/ui/model/odata/v4/ODataModel.js +17 -10
  311. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +5 -1
  312. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +129 -6
  313. package/src/sap/ui/model/odata/v4/lib/_Cache.js +102 -57
  314. package/src/sap/ui/model/odata/v4/lib/_Helper.js +30 -4
  315. package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -0
  316. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +14 -4
  317. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +28 -35
  318. package/src/sap/ui/model/odata/v4/ts.js +44 -0
  319. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  320. package/src/sap/ui/model/type/Boolean.js +1 -1
  321. package/src/sap/ui/model/type/Currency.js +1 -1
  322. package/src/sap/ui/model/type/Date.js +1 -1
  323. package/src/sap/ui/model/type/DateInterval.js +5 -4
  324. package/src/sap/ui/model/type/DateTime.js +1 -1
  325. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  326. package/src/sap/ui/model/type/FileSize.js +1 -1
  327. package/src/sap/ui/model/type/Float.js +1 -1
  328. package/src/sap/ui/model/type/Integer.js +1 -1
  329. package/src/sap/ui/model/type/String.js +1 -1
  330. package/src/sap/ui/model/type/Time.js +1 -1
  331. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  332. package/src/sap/ui/model/type/Unit.js +1 -1
  333. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  334. package/src/sap/ui/performance/trace/Interaction.js +11 -2
  335. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  336. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +10 -11
  337. package/src/sap/ui/qunit/utils/nextUIUpdate.js +51 -0
  338. package/src/sap/ui/test/ModuleTracking.js +326 -0
  339. package/src/sap/ui/test/TestUtils.js +7 -6
  340. package/src/sap/ui/test/autowaiter/_UIUpdatesWaiter.js +3 -2
  341. package/src/sap/ui/test/generic/TestBase.js +1 -1
  342. package/src/sap/ui/test/selectors/_ControlSelectorGenerator.js +2 -0
  343. package/src/sap/ui/test/selectors/_DropdownItem.js +1 -0
  344. package/src/sap/ui/test/selectors/_TableRowItem.js +1 -0
  345. package/src/sap/ui/util/Storage.js +1 -1
  346. package/src/ui5loader-autoconfig.js +14 -10
  347. package/test/sap/ui/core/ComponentCleanup.html +228 -225
  348. package/test/sap/ui/core/ComponentConfig.html +1 -1
  349. package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +1 -1
  350. package/test/sap/ui/core/ComponentExtensibility_legacyAPIs.html +1 -1
  351. package/test/sap/ui/core/ComponentSimple.html +1 -1
  352. package/test/sap/ui/core/ComponentSimpleModel.html +1 -1
  353. package/test/sap/ui/core/ComponentSupport.html +1 -1
  354. package/test/sap/ui/core/DateFormat.js +3 -3
  355. package/test/sap/ui/core/EventBroadcaster.html +62 -62
  356. package/test/sap/ui/core/Formats.html +4 -2
  357. package/test/sap/ui/core/GenericEventBinding.html +53 -52
  358. package/test/sap/ui/core/ListFormat.js +3 -3
  359. package/test/sap/ui/core/NumberFormat.js +3 -3
  360. package/test/sap/ui/core/ODataAnnotationsPerformance.html +28 -28
  361. package/test/sap/ui/core/ODataV2CanonicalRequests.html +3 -2
  362. package/test/sap/ui/core/ODataV2Messages.html +4 -3
  363. package/test/sap/ui/core/PopupWithUserSelection.html +1 -1
  364. package/test/sap/ui/core/Strings.js +3 -3
  365. package/test/sap/ui/core/ValidateURL.html +143 -143
  366. package/test/sap/ui/core/demokit/sample/Commands/Commands.html +1 -1
  367. package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/Controller.controller.js +10 -10
  368. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/Controller.controller.js +7 -7
  369. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/Component.js +3 -2
  370. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +3 -2
  371. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/index.html +7 -8
  372. package/test/sap/ui/core/demokit/sample/OpaGetStarted/applicationUnderTest/index.html +9 -6
  373. package/test/sap/ui/core/demokit/sample/OpaWithSupportAssistant/applicationUnderTest/index.html +13 -10
  374. package/test/sap/ui/core/demokit/sample/PatternMatching/Patterns.html +11 -8
  375. package/test/sap/ui/core/demokit/sample/RoutingFullscreen/RoutingFullscreen.html +11 -8
  376. package/test/sap/ui/core/demokit/sample/RoutingMasterDetail/RoutingMasterDetail.html +11 -8
  377. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/RoutingNestedComponent.html +1 -1
  378. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.html +1 -1
  379. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.js +5 -4
  380. package/test/sap/ui/core/demokit/sample/TargetsStandalone/TargetsStandalone.html +11 -8
  381. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.js +9 -8
  382. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +12 -11
  383. package/test/sap/ui/core/demokit/sample/common/Controller.js +6 -7
  384. package/test/sap/ui/core/demokit/sample/common/Helper.js +6 -2
  385. package/test/sap/ui/core/demokit/sample/common/init.js +25 -21
  386. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/WebsiteCode.js +8 -7
  387. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +9 -8
  388. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +3 -2
  389. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +12 -10
  390. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/ListReport.controller.js +3 -2
  391. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +10 -9
  392. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +10 -9
  393. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +4 -4
  394. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +3 -3
  395. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +10 -9
  396. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +19 -0
  397. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +93 -0
  398. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +85 -0
  399. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/SandboxModel.js +10 -0
  400. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +396 -0
  401. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +423 -0
  402. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +70 -0
  403. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +11 -10
  404. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +9 -8
  405. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +10 -9
  406. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +8 -7
  407. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +8 -10
  408. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +12 -11
  409. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.controller.js +3 -2
  410. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +11 -10
  411. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/MIT.RecursiveHierarchy maintenance.html +408 -0
  412. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.js +26 -8
  413. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -14
  414. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +24 -10
  415. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +352 -287
  416. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +38 -5
  417. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/createEdit.js +128 -0
  418. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/pageExpandCollapse.js +23 -22
  419. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +10 -9
  420. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +9 -8
  421. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +3 -2
  422. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +15 -14
  423. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +9 -8
  424. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +9 -8
  425. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +10 -9
  426. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +10 -9
  427. package/test/sap/ui/core/demokit/tutorial/databinding/01/package.json +2 -5
  428. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +8 -0
  429. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/index.js +7 -3
  430. package/test/sap/ui/core/demokit/tutorial/databinding/02/package.json +2 -5
  431. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +8 -0
  432. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/index.js +4 -3
  433. package/test/sap/ui/core/demokit/tutorial/databinding/03/package.json +2 -5
  434. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +8 -0
  435. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/index.js +4 -3
  436. package/test/sap/ui/core/demokit/tutorial/databinding/04/package.json +2 -5
  437. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +8 -0
  438. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/index.js +4 -3
  439. package/test/sap/ui/core/demokit/tutorial/databinding/05/package.json +2 -5
  440. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +8 -0
  441. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/index.js +4 -3
  442. package/test/sap/ui/core/demokit/tutorial/databinding/06/package.json +2 -5
  443. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +8 -0
  444. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/index.js +4 -3
  445. package/test/sap/ui/core/demokit/tutorial/databinding/07/package.json +2 -5
  446. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +8 -0
  447. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/index.js +4 -3
  448. package/test/sap/ui/core/demokit/tutorial/databinding/08/package.json +2 -5
  449. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +8 -0
  450. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/index.js +4 -3
  451. package/test/sap/ui/core/demokit/tutorial/databinding/09/package.json +2 -5
  452. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +8 -0
  453. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/index.js +4 -3
  454. package/test/sap/ui/core/demokit/tutorial/databinding/10/package.json +2 -5
  455. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +8 -0
  456. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/index.js +4 -3
  457. package/test/sap/ui/core/demokit/tutorial/databinding/11/package.json +2 -5
  458. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +8 -0
  459. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/index.js +6 -4
  460. package/test/sap/ui/core/demokit/tutorial/databinding/12/package.json +2 -5
  461. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +8 -0
  462. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/index.js +6 -4
  463. package/test/sap/ui/core/demokit/tutorial/databinding/13/package.json +2 -5
  464. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +8 -0
  465. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/index.js +6 -4
  466. package/test/sap/ui/core/demokit/tutorial/databinding/14/package.json +2 -5
  467. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +8 -0
  468. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/index.js +6 -4
  469. package/test/sap/ui/core/demokit/tutorial/databinding/15/package.json +2 -5
  470. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +8 -0
  471. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/index.js +6 -4
  472. package/test/sap/ui/core/demokit/tutorial/mockserver/01/package.json +2 -5
  473. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +8 -0
  474. package/test/sap/ui/core/demokit/tutorial/mockserver/02/package.json +2 -5
  475. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +8 -0
  476. package/test/sap/ui/core/demokit/tutorial/mockserver/03/package.json +2 -5
  477. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +8 -0
  478. package/test/sap/ui/core/demokit/tutorial/mockserver/04/package.json +2 -5
  479. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +8 -0
  480. package/test/sap/ui/core/demokit/tutorial/navigation/01/package.json +2 -4
  481. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +7 -0
  482. package/test/sap/ui/core/demokit/tutorial/navigation/01/webapp/index.html +1 -1
  483. package/test/sap/ui/core/demokit/tutorial/navigation/02/package.json +2 -4
  484. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +7 -0
  485. package/test/sap/ui/core/demokit/tutorial/navigation/02/webapp/index.html +1 -1
  486. package/test/sap/ui/core/demokit/tutorial/navigation/03/package.json +2 -4
  487. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +7 -0
  488. package/test/sap/ui/core/demokit/tutorial/navigation/03/webapp/index.html +1 -1
  489. package/test/sap/ui/core/demokit/tutorial/navigation/04/package.json +2 -4
  490. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +7 -0
  491. package/test/sap/ui/core/demokit/tutorial/navigation/04/webapp/index.html +1 -1
  492. package/test/sap/ui/core/demokit/tutorial/navigation/05/package.json +2 -4
  493. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +7 -0
  494. package/test/sap/ui/core/demokit/tutorial/navigation/05/webapp/index.html +1 -1
  495. package/test/sap/ui/core/demokit/tutorial/navigation/06/package.json +2 -4
  496. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +7 -0
  497. package/test/sap/ui/core/demokit/tutorial/navigation/06/webapp/index.html +1 -1
  498. package/test/sap/ui/core/demokit/tutorial/navigation/07/package.json +2 -4
  499. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +7 -0
  500. package/test/sap/ui/core/demokit/tutorial/navigation/07/webapp/index.html +1 -1
  501. package/test/sap/ui/core/demokit/tutorial/navigation/08/package.json +2 -4
  502. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +7 -0
  503. package/test/sap/ui/core/demokit/tutorial/navigation/08/webapp/index.html +1 -1
  504. package/test/sap/ui/core/demokit/tutorial/navigation/09/package.json +2 -4
  505. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +7 -0
  506. package/test/sap/ui/core/demokit/tutorial/navigation/09/webapp/index.html +1 -1
  507. package/test/sap/ui/core/demokit/tutorial/navigation/10/package.json +2 -4
  508. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +7 -0
  509. package/test/sap/ui/core/demokit/tutorial/navigation/10/webapp/index.html +1 -1
  510. package/test/sap/ui/core/demokit/tutorial/navigation/11/package.json +2 -4
  511. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +7 -0
  512. package/test/sap/ui/core/demokit/tutorial/navigation/11/webapp/index.html +1 -1
  513. package/test/sap/ui/core/demokit/tutorial/navigation/12/package.json +2 -4
  514. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +7 -0
  515. package/test/sap/ui/core/demokit/tutorial/navigation/12/webapp/index.html +1 -1
  516. package/test/sap/ui/core/demokit/tutorial/navigation/13/package.json +2 -4
  517. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +7 -0
  518. package/test/sap/ui/core/demokit/tutorial/navigation/13/webapp/index.html +1 -1
  519. package/test/sap/ui/core/demokit/tutorial/navigation/14/package.json +2 -4
  520. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +7 -0
  521. package/test/sap/ui/core/demokit/tutorial/navigation/14/webapp/index.html +1 -1
  522. package/test/sap/ui/core/demokit/tutorial/navigation/15/package.json +2 -4
  523. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +7 -0
  524. package/test/sap/ui/core/demokit/tutorial/navigation/15/webapp/index.html +1 -1
  525. package/test/sap/ui/core/demokit/tutorial/navigation/16/package.json +2 -4
  526. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +7 -0
  527. package/test/sap/ui/core/demokit/tutorial/navigation/16/webapp/index.html +1 -1
  528. package/test/sap/ui/core/demokit/tutorial/navigation/17/package.json +4 -6
  529. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +8 -1
  530. package/test/sap/ui/core/demokit/tutorial/navigation/17/webapp/index.html +1 -1
  531. package/test/sap/ui/core/demokit/tutorial/navigation/index.html +2 -2
  532. package/test/sap/ui/core/demokit/tutorial/odatav4/01/package.json +2 -6
  533. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +9 -0
  534. package/test/sap/ui/core/demokit/tutorial/odatav4/02/package.json +2 -6
  535. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +9 -0
  536. package/test/sap/ui/core/demokit/tutorial/odatav4/03/package.json +2 -6
  537. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +9 -0
  538. package/test/sap/ui/core/demokit/tutorial/odatav4/04/package.json +2 -6
  539. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +9 -0
  540. package/test/sap/ui/core/demokit/tutorial/odatav4/05/package.json +2 -6
  541. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +9 -0
  542. package/test/sap/ui/core/demokit/tutorial/odatav4/06/package.json +2 -6
  543. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +9 -0
  544. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +5 -5
  545. package/test/sap/ui/core/demokit/tutorial/odatav4/07/package.json +2 -6
  546. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +9 -0
  547. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +7 -7
  548. package/test/sap/ui/core/demokit/tutorial/odatav4/08/package.json +2 -6
  549. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +9 -0
  550. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +7 -7
  551. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.js +5 -5
  552. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/pages/Tutorial.js +1 -1
  553. package/test/sap/ui/core/demokit/tutorial/odatav4/09/package.json +2 -6
  554. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +9 -0
  555. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +7 -7
  556. package/test/sap/ui/core/demokit/tutorial/odatav4/10/package.json +2 -6
  557. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +9 -0
  558. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +7 -7
  559. package/test/sap/ui/core/demokit/tutorial/odatav4/11/package.json +2 -6
  560. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +9 -0
  561. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +7 -7
  562. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.js +5 -5
  563. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/pages/Tutorial.js +1 -1
  564. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/package.json +2 -5
  565. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +8 -0
  566. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/webapp/test/integration/opaTests.qunit.js +6 -6
  567. package/test/sap/ui/core/frameoptions/createcontent.js +7 -6
  568. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -1
  569. package/test/sap/ui/core/internal/samples/composite/xmlcomposite/exStringAndFloat/Test.controller.js +3 -2
  570. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -1
  571. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.js +8 -8
  572. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -1
  573. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.html +1 -1
  574. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.js +7 -7
  575. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -1
  576. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +3 -2
  577. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/MIT.SalesOrders(V2).ODLB.create.html +2 -0
  578. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +3 -3
  579. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.html +1 -1
  580. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.js +9 -6
  581. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +3 -0
  582. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/data/ODLB.create/TC3/SalesOrderSet_desc_4-1.json +16 -0
  583. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/index.html +1 -1
  584. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/tests/ODataListBinding.create/TC3_SalesOrders_InlineCreationRow.js +9 -0
  585. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +3 -2
  586. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +3 -3
  587. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -1
  588. package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +9 -7
  589. package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +4 -2
  590. package/test/sap/ui/core/qunit/ContextMenuSupport.qunit.js +3 -2
  591. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +11 -10
  592. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +218 -223
  593. package/test/sap/ui/core/qunit/Core.qunit.js +35 -31
  594. package/test/sap/ui/core/qunit/CoreEvents.qunit.js +17 -15
  595. package/test/sap/ui/core/qunit/Core_repeatedExecution.qunit.js +3 -3
  596. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +4 -3
  597. package/test/sap/ui/core/qunit/Element_data.qunit.js +5 -5
  598. package/test/sap/ui/core/qunit/Element_destroy.qunit.js +6 -4
  599. package/test/sap/ui/core/qunit/Element_focus.qunit.js +25 -24
  600. package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +3 -2
  601. package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +7 -6
  602. package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +1 -1
  603. package/test/sap/ui/core/qunit/FastNavigationWithWebComponents.qunit.js +5 -5
  604. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +9 -6
  605. package/test/sap/ui/core/qunit/FocusHandler.qunit.js +7 -6
  606. package/test/sap/ui/core/qunit/Fragment.qunit.js +35 -34
  607. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +51 -50
  608. package/test/sap/ui/core/qunit/HTML.qunit.js +32 -32
  609. package/test/sap/ui/core/qunit/Icon.qunit.js +66 -65
  610. package/test/sap/ui/core/qunit/IconPool.qunit.js +2 -1
  611. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +13 -12
  612. package/test/sap/ui/core/qunit/Lib.qunit.js +8 -8
  613. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +24 -24
  614. package/test/sap/ui/core/qunit/RenderManager.qunit.js +54 -53
  615. package/test/sap/ui/core/qunit/ResizeHandler.qunit.js +8 -9
  616. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +7 -6
  617. package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +13 -11
  618. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +6 -5
  619. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +5 -4
  620. package/test/sap/ui/core/qunit/Theming.qunit.js +88 -50
  621. package/test/sap/ui/core/qunit/Theming_default_and_fallback.qunit.js +130 -0
  622. package/test/sap/ui/core/qunit/TooltipBase.qunit.js +4 -3
  623. package/test/sap/ui/core/qunit/UIArea.qunit.js +248 -18
  624. package/test/sap/ui/core/qunit/analytics/testsuite4analytics.qunit.js +9 -8
  625. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +10 -10
  626. package/test/sap/ui/core/qunit/base/Config.qunit.js +12 -2
  627. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +123 -52
  628. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -0
  629. package/test/sap/ui/core/qunit/base/config/GlobalConfig.js +3 -1
  630. package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +4 -1
  631. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +3 -3
  632. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal_legacyAPIs.qunit.js +13 -11
  633. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -1
  634. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomScript_legacyAPIs.qunit.js +13 -11
  635. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery_legacyAPIs.qunit.js +7 -5
  636. package/test/sap/ui/core/qunit/bootstrap/CalendarClassLoadingWithCustomBootTaskAndPreload.qunit.js +12 -14
  637. package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +3 -2
  638. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +1 -1
  639. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +12 -6
  640. package/test/sap/ui/core/qunit/component/Component.qunit.js +14 -15
  641. package/test/sap/ui/core/qunit/component/Component_unavoidablySync.qunit.js +4 -3
  642. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +4 -5
  643. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +4 -3
  644. package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +4 -6
  645. package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +3 -5
  646. package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +3 -6
  647. package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +5 -8
  648. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +4 -5
  649. package/test/sap/ui/core/qunit/component/ExtensionPoint_unavoidablySync.qunit.js +4 -3
  650. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +19 -19
  651. package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +19 -19
  652. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +43 -43
  653. package/test/sap/ui/core/qunit/csp/ContentSecurityPolicy.qunit.js +18 -13
  654. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +19 -18
  655. package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +13 -12
  656. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +5 -4
  657. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +7 -6
  658. package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +7 -6
  659. package/test/sap/ui/core/qunit/generic/legacy/ControlIterator.qunit.js +6 -6
  660. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +20 -17
  661. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +8 -7
  662. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +1 -2
  663. package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +14 -19
  664. package/test/sap/ui/core/qunit/internal/1Ring.qunit.js +34 -22
  665. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -6
  666. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +4 -0
  667. package/test/sap/ui/core/qunit/isBehindOtherElement.qunit.js +7 -7
  668. package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
  669. package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +3 -2
  670. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +16 -16
  671. package/test/sap/ui/core/qunit/messages/{MessageManager.qunit.js → Messaging.qunit.js} +46 -49
  672. package/test/sap/ui/core/qunit/messages/messagesDataBinding.qunit.js +3 -1
  673. package/test/sap/ui/core/qunit/messages/messagesEnd2End.qunit.js +10 -10
  674. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +36 -46
  675. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +25 -36
  676. package/test/sap/ui/core/qunit/messages/testsuite.messaging.base.qunit.js +2 -2
  677. package/test/sap/ui/core/qunit/model/Binding.qunit.js +8 -8
  678. package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +24 -14
  679. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +7 -6
  680. package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +3 -2
  681. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync_unavoidablyUsingInlineStyle.qunit.js +5 -4
  682. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +8 -9
  683. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +45 -40
  684. package/test/sap/ui/core/qunit/mvc/testdata/stashed/OP.html +1 -1
  685. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +15 -20
  686. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +20 -25
  687. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyViewAsync_legacyAPIs.qunit.js +10 -11
  688. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyView_legacyAPIs.qunit.js +7 -6
  689. package/test/sap/ui/core/qunit/mvc_legacyAPIs/HTMLView_legacyAPIs.qunit.js +8 -7
  690. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +7 -7
  691. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +40 -47
  692. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +52 -20
  693. package/test/sap/ui/core/qunit/odata/{ODataListBinding.qunit.js → ODataListBinding_legacyAPIs.qunit.js} +27 -0
  694. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +44 -48
  695. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +8 -8
  696. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +66 -29
  697. package/test/sap/ui/core/qunit/odata/ODataMetadata.qunit.js +17 -7
  698. package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +147 -89
  699. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +1 -0
  700. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +33 -12
  701. package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +33 -12
  702. package/test/sap/ui/core/qunit/odata/v2/CanonicalRequests.qunit.js +5 -4
  703. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +63 -13
  704. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +281 -59
  705. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +28 -4
  706. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +21 -0
  707. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +1 -2
  708. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding.qunit.js +7 -207
  709. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding_Filter_legacyAPIs.qunit.js +281 -0
  710. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +9 -8
  711. package/test/sap/ui/core/qunit/odata/v2/ODataV2TreeBinding.qunit.js +1 -0
  712. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +95 -85
  713. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +70 -67
  714. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +19 -20
  715. package/test/sap/ui/core/qunit/odata/v2/testsuite.odatav2.qunit.js +4 -0
  716. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +50 -27
  717. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +5 -0
  718. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +4 -3
  719. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +103 -14
  720. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1027 -31
  721. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +18 -17
  722. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +272 -36
  723. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +115 -82
  724. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +10 -0
  725. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +108 -10
  726. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +1 -1
  727. package/test/sap/ui/core/qunit/opa/Opa5PageObject.qunit.js +5 -6
  728. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +29 -42
  729. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +13 -14
  730. package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +5 -4
  731. package/test/sap/ui/core/qunit/opa/actions/Action.qunit.js +6 -5
  732. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +22 -21
  733. package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +60 -56
  734. package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +5 -7
  735. package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +5 -9
  736. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +5 -6
  737. package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +5 -4
  738. package/test/sap/ui/core/qunit/opa/autowaiter/_resourceWaiter.js +21 -20
  739. package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +6 -5
  740. package/test/sap/ui/core/qunit/opa/matchers/Interactable.qunit.js +7 -5
  741. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -3
  742. package/test/sap/ui/core/qunit/opa/matchers/Sibling.qunit.js +4 -3
  743. package/test/sap/ui/core/qunit/opa/matchers/Visible.qunit.js +6 -5
  744. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +28 -27
  745. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +11 -10
  746. package/test/sap/ui/core/qunit/opa/matchers/_Enabled.qunit.js +11 -10
  747. package/test/sap/ui/core/qunit/opa/matchers/_Visitor.qunit.js +5 -4
  748. package/test/sap/ui/core/qunit/opa/opa5/actions.qunit.js +8 -7
  749. package/test/sap/ui/core/qunit/opa/opa5/basics.qunit.js +12 -17
  750. package/test/sap/ui/core/qunit/opa/opa5/logging.qunit.js +5 -6
  751. package/test/sap/ui/core/qunit/opa/opa5/matchers.qunit.js +6 -5
  752. package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +10 -9
  753. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +6 -7
  754. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +4 -3
  755. package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +4 -3
  756. package/test/sap/ui/core/qunit/opa/selectors/_GlobalID.js +4 -3
  757. package/test/sap/ui/core/qunit/opa/selectors/_LabelFor.js +4 -3
  758. package/test/sap/ui/core/qunit/opa/selectors/_Properties.js +33 -27
  759. package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +7 -10
  760. package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +5 -7
  761. package/test/sap/ui/core/qunit/opa/selectors/_ViewID.js +5 -7
  762. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +35 -28
  763. package/test/sap/ui/core/qunit/routing/Placeholder.qunit.js +11 -9
  764. package/test/sap/ui/core/qunit/routing/PlaceholderOptOut.qunit.js +5 -3
  765. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +57 -0
  766. package/test/sap/ui/core/qunit/routing/fixture/historyIframe/iframe/index.html +1 -1
  767. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/Component.js +30 -0
  768. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/manifest.json +25 -0
  769. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/Component.js +14 -0
  770. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/manifest.json +51 -0
  771. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/NotFound.view.xml +3 -0
  772. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/RootView.view.xml +5 -0
  773. package/test/sap/ui/core/qunit/rule/app/syncXHR.qunit.js +24 -17
  774. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrap.qunit.js +3 -3
  775. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebug.qunit.js +3 -3
  776. package/test/sap/ui/core/qunit/rule/config/asynchronousXMLViews.qunit.js +9 -18
  777. package/test/sap/ui/core/qunit/support/techinfo/TechnicalInfoTestbench.html +3 -1
  778. package/test/sap/ui/core/qunit/test/starter/find/index.html +1 -1
  779. package/test/sap/ui/core/qunit/test/starter/find/main.js +3 -2
  780. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +0 -6
  781. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  782. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +10 -6
  783. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +27 -4
  784. package/test/sap/ui/core/qunit/tmpl/Template.qunit.js +36 -35
  785. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +13 -0
  786. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  787. package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +2 -2
  788. package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
  789. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +27 -31
  790. package/test/sap/ui/core/qunit/util/Popup.qunit.js +27 -27
  791. package/test/sap/ui/core/qunit/util/ResponsivePaddingsEnablement.qunit.js +13 -9
  792. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +37 -6
  793. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +1 -1
  794. package/test/sap/ui/core/qunit/util/jquery.sap.dom.qunit.js +3 -2
  795. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +8 -8
  796. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +24 -24
  797. package/test/sap/ui/core/qunit/util/static/TechnicalInfoTestbenchInit.js +8 -2
  798. package/test/sap/ui/core/qunit/webc/WebComponent.qunit.js +188 -0
  799. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.html +14 -0
  800. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.js +22 -0
  801. package/test/sap/ui/core/relnotes/changes-1.117.json +1 -34
  802. package/test/sap/ui/core/relnotes/changes-1.118.json +143 -0
  803. package/test/sap/ui/core/samples/components/resourcesCSS/index.html +1 -1
  804. package/test/sap/ui/core/samples/databinding/DataBinding.html +3 -1
  805. package/test/sap/ui/core/samples/databinding/DataBindingAsyncType.html +3 -2
  806. package/test/sap/ui/core/samples/databinding/DataBindingCalculatedFields.html +3 -1
  807. package/test/sap/ui/core/samples/databinding/DataBindingList.html +3 -1
  808. package/test/sap/ui/core/samples/databinding/DataBindingListNamedModel.html +3 -1
  809. package/test/sap/ui/core/samples/databinding/DataBindingListXML.html +3 -1
  810. package/test/sap/ui/core/samples/databinding/DataBindingMultiModel.html +3 -1
  811. package/test/sap/ui/core/samples/databinding/DataBindingSortingFiltering.html +3 -1
  812. package/test/sap/ui/core/samples/databinding/DataBindingTreeLarge.html +102 -113
  813. package/test/sap/ui/core/samples/databinding/DataBindingTwoWay.html +3 -1
  814. package/test/sap/ui/core/samples/databinding/DataBindingTwoWayTable.html +90 -89
  815. package/test/sap/ui/core/samples/databinding/DataBindingValidation.html +149 -148
  816. package/test/sap/ui/core/samples/databinding/DataBindingXML.html +3 -2
  817. package/test/sap/ui/core/samples/databinding/DatabindingMessages.html +158 -153
  818. package/test/sap/ui/core/samples/databinding/ODatabindingMessages.html +4 -6
  819. package/test/sap/ui/core/samples/databinding/UnitTableMain.js +3 -4
  820. package/test/sap/ui/core/samples/extensions/index_legacyAPIs.html +15 -13
  821. package/test/sap/ui/core/samples/formatting/controller/ChooseFormatOptions.controller.js +3 -2
  822. package/test/sap/ui/core/samples/mvc/ExtendedXMLViewEventHandlerSyntax.html +5 -3
  823. package/test/sap/ui/core/samples/mvc/XMLViewBindableAggregation.html +1 -1
  824. package/test/testsuite/testframe.html +4 -4
  825. package/src/ui5-boot.js +0 -50
  826. package/test/sap/ui/core/qunit/CoreLock.qunit.js +0 -61
  827. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.js +0 -30
  828. /package/test/sap/ui/core/qunit/{MasterDetail.qunit.js → MasterDetail_legacyAPIs.qunit.js} +0 -0
  829. /package/test/sap/ui/core/qunit/odata/{ODataModel.qunit.js → ODataModel_legacyAPIs.qunit.js} +0 -0
  830. /package/test/sap/ui/core/qunit/odata/{ODataSharedMetadata.qunit.js → ODataSharedMetadata_legacyAPIs.qunit.js} +0 -0
  831. /package/test/sap/ui/core/qunit/odata/{ODataTreeBinding.qunit.js → ODataTreeBinding_legacyAPIs.qunit.js} +0 -0
@@ -384,12 +384,10 @@ sap.ui.define([
384
384
  "@odata.etag" : sEtag
385
385
  }, {}],
386
386
  fnCallback = this.spy(),
387
- oCountExpectation,
388
387
  oDeleted = {index : "~insert~"},
389
388
  oError = new Error(""),
390
389
  oGroupLock = {getGroupId : function () {}},
391
390
  oHelperMock = this.mock(_Helper),
392
- oIndexExpectation,
393
391
  oMessage1 = {code : "CODE1"},
394
392
  oMessage2 = {code : "CODE2", persistent : true},
395
393
  oMessageExpectation,
@@ -398,14 +396,12 @@ sap.ui.define([
398
396
  oPromise,
399
397
  oRequestExpectation,
400
398
  oRequestPromise,
401
- oSpliceExpectation,
399
+ oRestoreExpectation,
402
400
  bSuccess = oFixture.iStatus === 200 || oFixture.iStatus === 404;
403
401
 
404
402
  function checkCleanedUp() {
405
403
  assert.notOk("@$ui5.context.isDeleted" in aCacheData[1]);
406
404
  assert.deepEqual(aCacheData.$deleted, ["a", "b", "c"]);
407
- assert.strictEqual(aCacheData.$created, oFixture.bCreated ? 2 : 1);
408
- assert.strictEqual(oCache.iActiveElements, oFixture.bCreated && !sPath ? 2 : 1);
409
405
  if (oFixture.bInactive) {
410
406
  sinon.assert.calledOnceWithExactly(fnCallback, 1, -1);
411
407
  } else {
@@ -427,16 +423,12 @@ sap.ui.define([
427
423
  .exactly(oFixture.bMessagesToRestore ? 1 : 0)
428
424
  .withExactArgs(undefined, oFixture.iStatus < 0
429
425
  ? [oMessage1, oMessage2] : [oMessage1]);
430
- aCacheData.$count = 2; // ensure that count is updated
431
- oCountExpectation = oHelperMock.expects("addToCount").exactly(iOnFailure)
432
- .withExactArgs(sinon.match.same(oCache.mChangeListeners), sPath,
433
- sinon.match.same(aCacheData), 1);
434
- aCacheData.$created = 1;
435
- oCache.iActiveElements = 1;
436
- oSpliceExpectation = that.mock(aCacheData).expects("splice").exactly(iOnFailure)
437
- .withExactArgs("~insert~", 0, sinon.match.same(aCacheData[1]));
438
- oIndexExpectation = that.mock(oCache).expects("adjustIndexes").exactly(iOnFailure)
439
- .withExactArgs(sPath, sinon.match.same(aCacheData), "~insert~", 1, 2);
426
+ oRestoreExpectation = that.mock(oCache).expects("restoreElement").exactly(iOnFailure)
427
+ .withExactArgs(sinon.match.same(aCacheData), "~insert~",
428
+ sinon.match.same(aCacheData[1]), sPath, 2)
429
+ .callsFake(() => {
430
+ assert.deepEqual(aCacheData.$deleted.length, 4);
431
+ });
440
432
  if (oFixture.iStatus !== 200) {
441
433
  if (oFixture.iStatus < 0) { // simulate the cancel
442
434
  oError.canceled = true;
@@ -445,9 +437,7 @@ sap.ui.define([
445
437
  oRequestExpectation.args[0][6]();
446
438
 
447
439
  assert.strictEqual(oMessageExpectation.called, !!oFixture.bMessagesToRestore);
448
- assert.ok(oCountExpectation.called);
449
- assert.ok(oSpliceExpectation.called);
450
- assert.ok(oIndexExpectation.called);
440
+ assert.ok(oRestoreExpectation.called);
451
441
  checkCleanedUp();
452
442
  }
453
443
  throw oError;
@@ -462,9 +452,6 @@ sap.ui.define([
462
452
  this.mock(oCache).expects("fetchValue")
463
453
  .withExactArgs(sinon.match.same(_GroupLock.$cached), sPath)
464
454
  .returns(SyncPromise.resolve(aCacheData));
465
- this.mock(_Cache).expects("from$skip")
466
- .withExactArgs(oFixture.bCreated ? "-1" : "0", sinon.match.same(aCacheData))
467
- .returns(1);
468
455
  oError.status = oFixture.iStatus;
469
456
  oHelperMock.expects("getPrivateAnnotation")
470
457
  .withExactArgs(aCacheData[1], "predicate").callThrough();
@@ -507,9 +494,8 @@ sap.ui.define([
507
494
  sinon.match.same(oRequestPromise));
508
495
 
509
496
  // code under test
510
- oPromise = oCache._delete(oGroupLock, "Equipments('1')",
511
- (sPath && sPath + "/") + (oFixture.bCreated ? "-1" : "0"), oFixture.oEntity,
512
- fnCallback);
497
+ oPromise = oCache._delete(oGroupLock, "Equipments('1')", (sPath && sPath + "/") + "1",
498
+ oFixture.oEntity, fnCallback);
513
499
 
514
500
  assert.strictEqual(aCacheData[1]["@$ui5.context.isDeleted"], true);
515
501
  sinon.assert.calledOnceWithExactly(fnCallback, 1, -1);
@@ -605,8 +591,7 @@ sap.ui.define([
605
591
  };
606
592
 
607
593
  oCache.fetchValue = function () {};
608
- aCacheData.$count = 2; // ensure that count is not updated
609
- this.mock(_Helper).expects("setCount").never();
594
+ this.mock(oCache).expects("restoreElement").never();
610
595
  this.mock(oCache).expects("fetchValue")
611
596
  .withExactArgs(sinon.match.same(_GroupLock.$cached), "")
612
597
  .returns(SyncPromise.resolve(aCacheData));
@@ -670,9 +655,6 @@ sap.ui.define([
670
655
  this.mock(oCache).expects("fetchValue")
671
656
  .withExactArgs(sinon.match.same(_GroupLock.$cached), "EMPLOYEE_2_EQUIPMENTS")
672
657
  .returns(SyncPromise.resolve(aCacheData));
673
- this.mock(_Cache).expects("from$skip")
674
- .withExactArgs("1", sinon.match.same(aCacheData))
675
- .returns(1);
676
658
  // not interested in buildQueryString
677
659
  this.oRequestorMock.expects("request").never();
678
660
  this.mock(oCache).expects("requestCount").never();
@@ -721,8 +703,6 @@ sap.ui.define([
721
703
  this.mock(oCache).expects("fetchValue")
722
704
  .withExactArgs(sinon.match.same(_GroupLock.$cached), "SO_2_SOITEM")
723
705
  .returns(SyncPromise.resolve(aElements));
724
- this.mock(_Cache).expects("from$skip").withExactArgs("-1", sinon.match.same(aElements))
725
- .returns(1);
726
706
  oHelperMock.expects("getPrivateAnnotation")
727
707
  .withExactArgs(sinon.match.same(oElement), "predicate").returns("n/a");
728
708
  oHelperMock.expects("getPrivateAnnotation")
@@ -738,7 +718,7 @@ sap.ui.define([
738
718
  .withExactArgs(sinon.match.same(oElement), "Deleted from deep create");
739
719
 
740
720
  // code under test
741
- oPromise = oCache._delete(oGroupLock, undefined, "SO_2_SOITEM/-1", null, fnCallback);
721
+ oPromise = oCache._delete(oGroupLock, undefined, "SO_2_SOITEM/1", null, fnCallback);
742
722
 
743
723
  assert.strictEqual(oPromise.getResult(), undefined);
744
724
  assert.deepEqual(aPostBodyCollection, ["~a~", "~c~"]);
@@ -997,6 +977,36 @@ sap.ui.define([
997
977
  assert.deepEqual(aCacheData.$byPredicate, {"('2')" : aCacheData[0]});
998
978
  });
999
979
 
980
+ //*********************************************************************************************
981
+ ["", "~path~"].forEach(function (sPath) {
982
+ [false, true].forEach(function (bTransient) {
983
+ QUnit.test(`_Cache#restoreElement, path=${sPath}, transient=${bTransient}`, function (assert) {
984
+ const oCache = new _Cache(this.oRequestor, "TEAMS");
985
+ oCache.iLimit = 234;
986
+ oCache.iActiveElements = 1;
987
+ const aElements = [];
988
+ aElements.$created = 2;
989
+
990
+ this.mock(oCache).expects("adjustIndexes")
991
+ .withExactArgs(sPath, sinon.match.same(aElements), 42, 1, "~iDeletedIndex~");
992
+ this.mock(_Helper).expects("getPrivateAnnotation")
993
+ .withExactArgs("~oElement~", "transientPredicate")
994
+ .returns(bTransient ? "($uid=id-1-23)" : undefined);
995
+ this.mock(_Helper).expects("addToCount")
996
+ .withExactArgs(sinon.match.same(oCache.mChangeListeners), sPath,
997
+ sinon.match.same(aElements), 1);
998
+ this.mock(aElements).expects("splice").withExactArgs(42, 0, "~oElement~");
999
+
1000
+ // code under test
1001
+ oCache.restoreElement(aElements, 42, "~oElement~", sPath, "~iDeletedIndex~");
1002
+
1003
+ assert.strictEqual(oCache.iLimit, bTransient || sPath ? 234 : 235);
1004
+ assert.strictEqual(aElements.$created, bTransient ? 3 : 2);
1005
+ assert.strictEqual(oCache.iActiveElements, bTransient && !sPath ? 2 : 1);
1006
+ });
1007
+ });
1008
+ });
1009
+
1000
1010
  //*********************************************************************************************
1001
1011
  QUnit.test("_Cache#registerChangeListener", function () {
1002
1012
  var oCache = new _Cache(this.oRequestor, "TEAMS");
@@ -5605,6 +5615,13 @@ sap.ui.define([
5605
5615
  "insert a created entity at the end: only non-created entities move");
5606
5616
  });
5607
5617
 
5618
+ //*********************************************************************************************
5619
+ QUnit.test("Cache#adjustIndexes: no path and no aReadRequests", function () {
5620
+ const oCache = new _Cache(this.oRequestor, "Employees"); // would be an _AggregationCache
5621
+
5622
+ oCache.adjustIndexes("", [], 1);
5623
+ });
5624
+
5608
5625
  //*********************************************************************************************
5609
5626
  [false, true].forEach(function (bSharedRequest) {
5610
5627
  QUnit.test("CollectionCache: bSharedRequest = " + bSharedRequest, function (assert) {
@@ -8037,6 +8054,7 @@ sap.ui.define([
8037
8054
  QUnit.test("CollectionCache#read: $count & create, bInactive=" + bInactive, function (assert) {
8038
8055
  var sResourcePath = "Employees",
8039
8056
  oCache = this.createCache(sResourcePath),
8057
+ fnCancelCallback = sinon.spy(),
8040
8058
  iCountAfterCreate = bInactive ? 26 : 27,
8041
8059
  oCountChangeListener = {onChange : function () {}},
8042
8060
  oCountChangeListenerMock = this.mock(oCountChangeListener),
@@ -8069,7 +8087,8 @@ sap.ui.define([
8069
8087
  oCache.registerChangeListener("$count", oCountChangeListener);
8070
8088
 
8071
8089
  return oCache.create(oGroupLock, SyncPromise.resolve("Employees"), "",
8072
- sTransientPredicate, {}, null, false, function fnSubmitCallback() {});
8090
+ sTransientPredicate, {}, false, null, function fnSubmitCallback() {},
8091
+ fnCancelCallback);
8073
8092
  })
8074
8093
  .then(function () {
8075
8094
  var oReadGroupLock = {
@@ -8086,8 +8105,14 @@ sap.ui.define([
8086
8105
  assert.strictEqual(oCache.iActiveElements, bInactive ? 0 : 1);
8087
8106
 
8088
8107
  oCountChangeListenerMock.expects("onChange").exactly(bInactive ? 0 : 1)
8089
- .withExactArgs(26, undefined);
8090
- that.mock(oGroupLock).expects("cancel").withExactArgs();
8108
+ .withExactArgs(26, undefined)
8109
+ .callsFake(function () {
8110
+ assert.strictEqual(fnCancelCallback.callCount, 0, "not yet");
8111
+ });
8112
+ that.mock(oGroupLock).expects("cancel").withExactArgs()
8113
+ .callsFake(function () {
8114
+ assert.strictEqual(fnCancelCallback.callCount, 1);
8115
+ });
8091
8116
 
8092
8117
  // code under test - cancel the create
8093
8118
  oPostRequest.args[0][6]();
@@ -8552,7 +8577,7 @@ sap.ui.define([
8552
8577
 
8553
8578
  // code under test
8554
8579
  oCache._delete(null, "TEAMS('0')/TEAM_2_EMPLOYEES",
8555
- sPathInCache + "/-1", //TODO sPathInCache + sTransientPredicate
8580
+ sPathInCache + "/1", //TODO sPathInCache + sTransientPredicate
8556
8581
  null, false, fnDeleteCallback);
8557
8582
 
8558
8583
  assert.strictEqual(aCollection.$count, 41);
@@ -8973,7 +8998,7 @@ sap.ui.define([
8973
8998
  "No 'update' allowed while waiting for server response",
8974
8999
  oError.message);
8975
9000
  });
8976
- oCache._delete(oDeleteGroupLock, "n/a", /*TODO sTransientPredicate*/"-1")
9001
+ oCache._delete(oDeleteGroupLock, "n/a", /*TODO sTransientPredicate*/"0")
8977
9002
  .then(function () {
8978
9003
  assert.ok(false, "unexpected success - _delete");
8979
9004
  }, function (oError) {
@@ -9182,6 +9207,9 @@ sap.ui.define([
9182
9207
  that.oRequestorMock.expects("relocate")
9183
9208
  .withExactArgs(sParkedGroupId, sinon.match.same(oPostBody), sUpdateGroupId);
9184
9209
 
9210
+ if (oFixture.createGroupId === "$inactive.$auto") {
9211
+ oCache.setInactive(sTransientPredicate, false); // activate
9212
+ }
9185
9213
  // code under test - first update -> relocate
9186
9214
  aPromises.push(oCache.update(oGroupLock1, "Name", "John Doe", that.spy(), "n/a",
9187
9215
  sTransientPredicate));
@@ -9202,15 +9230,9 @@ sap.ui.define([
9202
9230
  //*********************************************************************************************
9203
9231
  //TODO move to _Cache!
9204
9232
  [false, true].forEach(function (bInactive) {
9205
- [false, true].forEach(function (bStayInactive) {
9206
- [false, true].forEach(function (bAtEndOfCreated) {
9207
- var sTitle = "CollectionCache: create entity without initial data, bInactive="
9208
- + bInactive + ", bStayInactive= " + bStayInactive + ", bAtEndOfCreated="
9209
- + bAtEndOfCreated;
9210
-
9211
- if (!bInactive && bStayInactive) {
9212
- return;
9213
- }
9233
+ [false, true].forEach(function (bAtEndOfCreated) {
9234
+ var sTitle = "CollectionCache: create entity without initial data, bInactive="
9235
+ + bInactive + ", bAtEndOfCreated=" + bAtEndOfCreated;
9214
9236
 
9215
9237
  QUnit.test(sTitle, function (assert) {
9216
9238
  var oCache = _Cache.create(this.oRequestor, "Employees"),
@@ -9277,27 +9299,13 @@ sap.ui.define([
9277
9299
  }
9278
9300
 
9279
9301
  this.mock(oUpdateGroupLock).expects("getGroupId").withExactArgs().returns("updateGroup");
9280
- oHelperMock.expects("updateAll").exactly(bStayInactive ? 1 : 0)
9281
- .withExactArgs(sinon.match.same(oCache.mChangeListeners), sTransientPredicate,
9282
- sinon.match.same(oCache.aElements[bAtEndOfCreated ? 1 : 0]),
9283
- {"@$ui5.context.isInactive" : 1}).callThrough();
9284
- this.oRequestorMock.expects("relocate").exactly(bInactive && !bStayInactive ? 1 : 0)
9285
- .withExactArgs("$inactive.updateGroup",
9286
- sinon.match.same(oCache.aElements[bAtEndOfCreated ? 1 : 0]["@$ui5._"].postBody),
9287
- "updateGroup");
9288
9302
  oHelperMock.expects("updateAll")
9289
9303
  .withExactArgs({}, sTransientPredicate, sinon.match.object, {Name : "foo"});
9290
- this.mock(oCountChangeListener).expects("onChange")
9291
- .exactly(bInactive && !bStayInactive ? 1 : 0)
9292
- .withExactArgs(43, undefined);
9293
9304
  oCache.registerChangeListener("$count", oCountChangeListener);
9294
9305
  oHelperMock.expects("updateAll")
9295
9306
  .withExactArgs(sinon.match.same(oCache.mChangeListeners), sTransientPredicate,
9296
- sinon.match.same(oCache.aElements[bAtEndOfCreated ? 1 : 0]),
9297
- bInactive && !bStayInactive
9298
- ? {Name : "foo", "@$ui5.context.isInactive" : false}
9299
- : {Name : "foo"}
9300
- ).callThrough();
9307
+ sinon.match.same(oCache.aElements[bAtEndOfCreated ? 1 : 0]), {Name : "foo"})
9308
+ .callThrough();
9301
9309
  oHelperMock.expects("updateSelected")
9302
9310
  .withExactArgs(sinon.match.same(oCache.mChangeListeners), sTransientPredicate,
9303
9311
  sinon.match.same(oCache.aElements[bAtEndOfCreated ? 1 : 0]),
@@ -9310,29 +9318,20 @@ sap.ui.define([
9310
9318
  this.mock(oUpdateGroupLock).expects("unlock").withExactArgs();
9311
9319
 
9312
9320
  // code under test
9313
- oCache.update(oUpdateGroupLock, "Name", "foo", this.spy(), undefined, sTransientPredicate,
9314
- undefined, undefined, undefined, undefined, bStayInactive);
9321
+ oCache.update(oUpdateGroupLock, "Name", "foo", this.spy(), undefined, sTransientPredicate);
9315
9322
 
9316
9323
  assert.strictEqual(oCache.aElements[bAtEndOfCreated ? 1 : 0]["@$ui5._"].transient,
9317
- bStayInactive ? "$inactive.updateGroup" : "updateGroup");
9318
-
9319
- if (bInactive) {
9320
- assert.strictEqual(
9321
- _Helper.hasPrivateAnnotation(oCache.aElements[bAtEndOfCreated ? 1 : 0],
9322
- "initialData"), bStayInactive);
9323
- assert.strictEqual(
9324
- oCache.aElements[bAtEndOfCreated ? 1 : 0]["@$ui5.context.isInactive"],
9325
- bStayInactive ? 1 : false, "isInactive");
9326
- assert.strictEqual(oCache.iActiveElements, bStayInactive ? 0 : 1);
9327
- } else {
9328
- assert.strictEqual(
9329
- oCache.aElements[bAtEndOfCreated ? 1 : 0]["@$ui5.context.isInactive"], undefined);
9330
- assert.strictEqual(oCache.iActiveElements, 1);
9331
- }
9324
+ bInactive ? "$inactive.updateGroup" : "updateGroup");
9325
+ assert.strictEqual(
9326
+ _Helper.hasPrivateAnnotation(oCache.aElements[bAtEndOfCreated ? 1 : 0],
9327
+ "initialData"), bInactive);
9328
+ assert.strictEqual(
9329
+ oCache.aElements[bAtEndOfCreated ? 1 : 0]["@$ui5.context.isInactive"],
9330
+ bInactive ? true : undefined, "isInactive");
9331
+ assert.strictEqual(oCache.iActiveElements, bInactive ? 0 : 1);
9332
9332
 
9333
9333
  return oPromise;
9334
9334
  });
9335
- });
9336
9335
  });
9337
9336
  });
9338
9337
 
@@ -9644,7 +9643,7 @@ sap.ui.define([
9644
9643
 
9645
9644
  // code under test
9646
9645
  oDeletePromise = oCache._delete(null, "n/a",
9647
- /*TODO sTransientPredicate*/"-1", null, false, function () {
9646
+ /*TODO sTransientPredicate*/"0", null, false, function () {
9648
9647
  throw new Error();
9649
9648
  });
9650
9649
 
@@ -9727,7 +9726,7 @@ sap.ui.define([
9727
9726
  .returns(Promise.resolve());
9728
9727
 
9729
9728
  // code under test
9730
- return oCache._delete(oDeleteGroupLock, sEditUrl, /*TODO sTransientPredicate*/"-1",
9729
+ return oCache._delete(oDeleteGroupLock, sEditUrl, /*TODO sTransientPredicate*/"0",
9731
9730
  null, fnCallback)
9732
9731
  .then(function () {
9733
9732
  sinon.assert.calledOnceWithExactly(fnCallback, 0, -1);
@@ -10685,6 +10684,40 @@ sap.ui.define([
10685
10684
  assert.strictEqual(oCache.isDeletingInOtherGroup("group"), true);
10686
10685
  });
10687
10686
 
10687
+ //*********************************************************************************************
10688
+ [false, 1].forEach(function (bInactive) {
10689
+ QUnit.test(`CollectionCache#setInactive(${bInactive})`, function (assert) {
10690
+ const iActivateCount = bInactive ? 0 : 1;
10691
+ const oCache = this.createCache("Employees");
10692
+ oCache.iActiveElements = 42;
10693
+ this.mock(oCache).expects("getValue").withExactArgs("($uid=id-1-23)").returns("~oElement~");
10694
+ this.mock(_Helper).expects("updateAll")
10695
+ .withExactArgs(sinon.match.same(oCache.mChangeListeners), "($uid=id-1-23)",
10696
+ "~oElement~", {"@$ui5.context.isInactive" : bInactive});
10697
+ this.mock(_Helper).expects("deletePrivateAnnotation").exactly(iActivateCount)
10698
+ .withExactArgs("~oElement~", "initialData");
10699
+ this.mock(_Helper).expects("addToCount").exactly(iActivateCount)
10700
+ .withExactArgs(sinon.match.same(oCache.mChangeListeners), "",
10701
+ sinon.match.same(oCache.aElements), 1);
10702
+
10703
+ // code under test
10704
+ oCache.setInactive("($uid=id-1-23)", bInactive);
10705
+
10706
+ assert.strictEqual(oCache.iActiveElements, bInactive ? 42 : 43);
10707
+ });
10708
+ });
10709
+
10710
+ //*********************************************************************************************
10711
+ QUnit.test("CollectionCache#setEmpty", function (assert) {
10712
+ const oCache = this.createCache("Employees");
10713
+
10714
+ // code under test
10715
+ oCache.setEmpty();
10716
+
10717
+ assert.strictEqual(oCache.aElements.$count, 0);
10718
+ assert.strictEqual(oCache.iLimit, 0);
10719
+ });
10720
+
10688
10721
  //*********************************************************************************************
10689
10722
  QUnit.test("SingleCache", function (assert) {
10690
10723
  var oCache,
@@ -2009,6 +2009,16 @@ sap.ui.define([
2009
2009
  "/service/Foo('1')/Bar(baz='2',qux=3)");
2010
2010
  });
2011
2011
 
2012
+ //*********************************************************************************************
2013
+ QUnit.test("makeRelativeUrl", function (assert) {
2014
+ assert.strictEqual(_Helper.makeRelativeUrl("/foo/baz", "/foo/bar"), "baz");
2015
+ assert.strictEqual(_Helper.makeRelativeUrl("/foo/bar/qux", "/foo/baz"), "bar/qux");
2016
+ assert.strictEqual(_Helper.makeRelativeUrl("/foo/baz", "/foo/bar/qux"), "../baz");
2017
+ assert.strictEqual(
2018
+ _Helper.makeRelativeUrl("/Bar(baz='2',qux=3)", "/Foo"),
2019
+ "Bar(baz='2',qux=3)");
2020
+ });
2021
+
2012
2022
  //*********************************************************************************************
2013
2023
  QUnit.test("drillDown", function (assert) {
2014
2024
  var oObject = {
@@ -5465,8 +5465,15 @@ sap.ui.define([
5465
5465
  });
5466
5466
 
5467
5467
  //*****************************************************************************************
5468
- QUnit.test("processOptimisticBatch: n+1 start, optimistic batch matches", function (assert) {
5469
- var sKey = window.location.href,
5468
+ [false, true, undefined].forEach((bEnabled) => { // undefined -> no enabler assigned
5469
+ [false, true].forEach((bCacheManagerRejects) => {
5470
+ const sTitle = `processOptimisticBatch: n+1 start, optimistic batch matches,
5471
+ enabler=${bEnabled}, del rejects=${bCacheManagerRejects}`;
5472
+ QUnit.test(sTitle, function (assert) {
5473
+ var done = assert.async(),
5474
+ oError = new Error("CacheManager.del rejected"),
5475
+ iGetReporterCount,
5476
+ sKey = window.location.href,
5470
5477
  oOptimisticBatch = {
5471
5478
  firstBatch : {
5472
5479
  requests : "~optimisticRequests~",
@@ -5475,26 +5482,108 @@ sap.ui.define([
5475
5482
  key : sKey,
5476
5483
  result : "~optimisticBatchResult~"
5477
5484
  },
5478
- oRequestor = _Requestor.create("/", oModelInterface);
5485
+ fnEnabler = bEnabled === undefined ? undefined : sinon.stub().resolves(bEnabled),
5486
+ oRequestor = _Requestor.create("/", oModelInterface),
5487
+ fnReporter = function (oError0) {
5488
+ assert.strictEqual(oError0, oError);
5489
+ done();
5490
+ };
5491
+
5492
+ if (bEnabled) {
5493
+ iGetReporterCount = 1;
5494
+ } else {
5495
+ iGetReporterCount = bEnabled !== undefined ? 1 : 0;
5496
+ }
5479
5497
 
5480
5498
  oRequestor.oOptimisticBatch = oOptimisticBatch;
5499
+
5481
5500
  this.mock(_Requestor).expects("matchesOptimisticBatch")
5482
5501
  .withExactArgs("~requests~", "~group~", "~optimisticRequests~", "~optimisticGroup~")
5483
5502
  .returns(true);
5503
+
5504
+ this.mock(oModelInterface).expects("getOptimisticBatchEnabler").returns(fnEnabler);
5505
+ this.mock(oModelInterface).expects("getReporter").exactly(iGetReporterCount)
5506
+ .withExactArgs().returns(fnReporter);
5507
+ if (bEnabled === false) {
5508
+ if (bCacheManagerRejects) {
5509
+ this.mock(CacheManager).expects("del")
5510
+ .withExactArgs("sap.ui.model.odata.v4.optimisticBatch:" + sKey).rejects(oError);
5511
+ } else {
5512
+ this.mock(CacheManager).expects("del")
5513
+ .withExactArgs("sap.ui.model.odata.v4.optimisticBatch:" + sKey).resolves();
5514
+ this.oLogMock.expects("info")
5515
+ .withExactArgs("optimistic batch: disabled, response deleted", sKey,
5516
+ sClassName);
5517
+ done();
5518
+ }
5519
+ }
5484
5520
  this.oLogMock.expects("info")
5485
5521
  .withExactArgs("optimistic batch: success, response consumed", sKey, sClassName);
5486
5522
  this.mock(CacheManager).expects("set").never();
5487
- this.mock(oModelInterface).expects("getOptimisticBatchEnabler").never();
5488
5523
 
5489
5524
  // code under test
5490
5525
  assert.strictEqual(oRequestor.processOptimisticBatch("~requests~", "~group~"),
5491
5526
  "~optimisticBatchResult~");
5492
5527
 
5493
5528
  assert.strictEqual(oRequestor.oOptimisticBatch, null);
5529
+
5530
+ if (bEnabled !== undefined) {
5531
+ assert.strictEqual(fnEnabler.calledOnce, true);
5532
+ }
5533
+ if (bEnabled !== false) {
5534
+ done();
5535
+ }
5536
+ });
5537
+ });
5538
+ });
5539
+
5540
+ //*****************************************************************************************
5541
+ const sTitle = "processOptimisticBatch: n+1 start, optimistic batch matches, enabler rejects";
5542
+ QUnit.test(sTitle, function (assert) {
5543
+ var oError = new Error("Enabler rejects"),
5544
+ sKey = window.location.href,
5545
+ oOptimisticBatch = {
5546
+ firstBatch : {
5547
+ requests : "~optimisticRequests~",
5548
+ groupId : "~optimisticGroup~"
5549
+ },
5550
+ key : sKey,
5551
+ result : "~optimisticBatchResult~"
5552
+ },
5553
+ fnEnabler = sinon.stub().rejects(oError),
5554
+ oRequestor = _Requestor.create("/", oModelInterface),
5555
+ fnReporter = function (oError0) {
5556
+ assert.strictEqual(oError0, oError);
5557
+ };
5558
+
5559
+ oRequestor.oOptimisticBatch = oOptimisticBatch;
5560
+
5561
+ this.mock(_Requestor).expects("matchesOptimisticBatch")
5562
+ .withExactArgs("~requests~", "~group~", "~optimisticRequests~", "~optimisticGroup~")
5563
+ .returns(true);
5564
+
5565
+ this.mock(oModelInterface).expects("getOptimisticBatchEnabler").returns(fnEnabler);
5566
+ this.mock(oModelInterface).expects("getReporter").withExactArgs().returns(fnReporter);
5567
+
5568
+ this.oLogMock.expects("info")
5569
+ .withExactArgs("optimistic batch: disabled, response deleted", sKey, sClassName)
5570
+ .never();
5571
+ this.oLogMock.expects("info")
5572
+ .withExactArgs("optimistic batch: success, response consumed", sKey, sClassName);
5573
+ this.mock(CacheManager).expects("set").never();
5574
+ this.mock(CacheManager).expects("del").never();
5575
+
5576
+ // code under test
5577
+ assert.strictEqual(oRequestor.processOptimisticBatch("~requests~", "~group~"),
5578
+ "~optimisticBatchResult~");
5579
+
5580
+ assert.strictEqual(fnEnabler.calledOnce, true);
5494
5581
  });
5495
5582
 
5496
5583
  //*****************************************************************************************
5497
- QUnit.test("processOptimisticBatch: mismatch, CacheManager.del rejects", function (assert) {
5584
+ [false, true].forEach((bRejects) => {
5585
+ const sTitle = `processOptimisticBatch: mismatch, CacheManager.del rejects=${bRejects}`;
5586
+ QUnit.test(sTitle, function (assert) {
5498
5587
  // Note: this test covers also the successful CacheManager.del case
5499
5588
  var oCacheManagerMock = this.mock(CacheManager),
5500
5589
  done = assert.async(),
@@ -5519,11 +5608,19 @@ sap.ui.define([
5519
5608
  this.mock(_Requestor).expects("matchesOptimisticBatch")
5520
5609
  .withExactArgs("~requests~", "~group~", "~optimisticRequests~", "~optimisticGroup~")
5521
5610
  .returns(false);
5522
- this.oLogMock.expects("warning")
5523
- .withExactArgs("optimistic batch: mismatch, response skipped", sKey, sClassName);
5524
- oCacheManagerMock.expects("del")
5525
- .withExactArgs("sap.ui.model.odata.v4.optimisticBatch:" + sKey)
5526
- .rejects(oError);
5611
+
5612
+ if (bRejects) {
5613
+ oCacheManagerMock.expects("del")
5614
+ .withExactArgs("sap.ui.model.odata.v4.optimisticBatch:" + sKey)
5615
+ .rejects(oError);
5616
+ } else {
5617
+ oCacheManagerMock.expects("del")
5618
+ .withExactArgs("sap.ui.model.odata.v4.optimisticBatch:" + sKey)
5619
+ .resolves();
5620
+ this.oLogMock.expects("warning")
5621
+ .withExactArgs("optimistic batch: mismatch, response skipped", sKey, sClassName);
5622
+ done();
5623
+ }
5527
5624
  oModelInterfaceMock.expects("getReporter")
5528
5625
  .withExactArgs()
5529
5626
  .returns(fnReporter);
@@ -5537,6 +5634,7 @@ sap.ui.define([
5537
5634
 
5538
5635
  assert.strictEqual(oRequestor.oOptimisticBatch, null);
5539
5636
  });
5637
+ });
5540
5638
 
5541
5639
  //*****************************************************************************************
5542
5640
  QUnit.test("hasOnlyPatchesWithoutSideEffects", function (assert) {
@@ -1735,7 +1735,7 @@ sap.ui.define([
1735
1735
  oRequestor = _Requestor.create("/", oModelInterface, undefined, undefined, "2.0");
1736
1736
 
1737
1737
  // code under test
1738
- oRequestor.reportHeaderMessages("[]");
1738
+ oRequestor.reportHeaderMessages("resource/path", "[]");
1739
1739
 
1740
1740
  assert.notOk(fnreportTransitionMessages.called);
1741
1741
  });
@@ -4,8 +4,9 @@ sap.ui.define([
4
4
  "sap/ui/test/Opa5",
5
5
  "sap/ui/test/PageObjectFactory",
6
6
  "sap/base/Log",
7
- "./utils/view"
8
- ], function (Opa, Opa5, PageObjectFactory, Log, viewUtils) {
7
+ "./utils/view",
8
+ "sap/ui/qunit/utils/nextUIUpdate"
9
+ ], function (Opa, Opa5, PageObjectFactory, Log, viewUtils, nextUIUpdate) {
9
10
  "use strict";
10
11
 
11
12
  // preset some globals to avoid issues with QUnit's 'noglobals' option
@@ -226,15 +227,13 @@ sap.ui.define([
226
227
  beforeEach: function (assert) {
227
228
  // Note: This test is executed with QUnit 1 and QUnit 2.
228
229
  // We therefore cannot rely on the built-in promise handling of QUnit 2.
229
- var done = assert.async();
230
- Promise.all([
230
+ return Promise.all([
231
231
  viewUtils.createXmlView("foo", "myFooView"),
232
232
  viewUtils.createXmlView("bar", "myBarView")
233
233
  ]).then(function (aViews) {
234
234
  this.oView = aViews[0].placeAt("qunit-fixture");
235
235
  this.oView2 = aViews[1].placeAt("qunit-fixture");
236
- sap.ui.getCore().applyChanges();
237
- done();
236
+ return nextUIUpdate();
238
237
  }.bind(this), function(oErr) {
239
238
  assert.strictEqual(oErr, undefined, "failed to load view");
240
239
  });