@openui5/sap.ui.core 1.117.0 → 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 (833) 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/src/ui5loader.js +2 -2
  348. package/test/sap/ui/core/ComponentCleanup.html +228 -225
  349. package/test/sap/ui/core/ComponentConfig.html +1 -1
  350. package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +1 -1
  351. package/test/sap/ui/core/ComponentExtensibility_legacyAPIs.html +1 -1
  352. package/test/sap/ui/core/ComponentSimple.html +1 -1
  353. package/test/sap/ui/core/ComponentSimpleModel.html +1 -1
  354. package/test/sap/ui/core/ComponentSupport.html +1 -1
  355. package/test/sap/ui/core/DateFormat.js +3 -3
  356. package/test/sap/ui/core/EventBroadcaster.html +62 -62
  357. package/test/sap/ui/core/Formats.html +4 -2
  358. package/test/sap/ui/core/GenericEventBinding.html +53 -52
  359. package/test/sap/ui/core/ListFormat.js +3 -3
  360. package/test/sap/ui/core/NumberFormat.js +3 -3
  361. package/test/sap/ui/core/ODataAnnotationsPerformance.html +28 -28
  362. package/test/sap/ui/core/ODataV2CanonicalRequests.html +3 -2
  363. package/test/sap/ui/core/ODataV2Messages.html +4 -3
  364. package/test/sap/ui/core/PopupWithUserSelection.html +1 -1
  365. package/test/sap/ui/core/Strings.js +3 -3
  366. package/test/sap/ui/core/ValidateURL.html +143 -143
  367. package/test/sap/ui/core/demokit/sample/Commands/Commands.html +1 -1
  368. package/test/sap/ui/core/demokit/sample/MessageManager/BasicMessages/Controller.controller.js +10 -10
  369. package/test/sap/ui/core/demokit/sample/MessageManager/BasicODataMessages/Controller.controller.js +7 -7
  370. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/Component.js +3 -2
  371. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/controller/Employee.controller.js +3 -2
  372. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/webapp/index.html +7 -8
  373. package/test/sap/ui/core/demokit/sample/OpaGetStarted/applicationUnderTest/index.html +9 -6
  374. package/test/sap/ui/core/demokit/sample/OpaWithSupportAssistant/applicationUnderTest/index.html +13 -10
  375. package/test/sap/ui/core/demokit/sample/PatternMatching/Patterns.html +11 -8
  376. package/test/sap/ui/core/demokit/sample/RoutingFullscreen/RoutingFullscreen.html +11 -8
  377. package/test/sap/ui/core/demokit/sample/RoutingMasterDetail/RoutingMasterDetail.html +11 -8
  378. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/RoutingNestedComponent.html +1 -1
  379. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.html +1 -1
  380. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/test/integration/opaTests.qunit.js +5 -4
  381. package/test/sap/ui/core/demokit/sample/TargetsStandalone/TargetsStandalone.html +11 -8
  382. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Opa.qunit.js +9 -8
  383. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Opa.qunit.js +12 -11
  384. package/test/sap/ui/core/demokit/sample/common/Controller.js +6 -7
  385. package/test/sap/ui/core/demokit/sample/common/Helper.js +6 -2
  386. package/test/sap/ui/core/demokit/sample/common/init.js +25 -21
  387. package/test/sap/ui/core/demokit/sample/gherkin/GherkinWithOPA5/WebsiteCode.js +8 -7
  388. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +9 -8
  389. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/ObjectPage.controller.js +3 -2
  390. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +12 -10
  391. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/ListReport.controller.js +3 -2
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +10 -9
  393. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +10 -9
  394. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/Component.js +4 -4
  395. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Main.controller.js +3 -3
  396. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +10 -9
  397. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Component.js +19 -0
  398. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +93 -0
  399. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +85 -0
  400. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/SandboxModel.js +10 -0
  401. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +396 -0
  402. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +423 -0
  403. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +70 -0
  404. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +11 -10
  405. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +9 -8
  406. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +10 -9
  407. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +8 -7
  408. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +8 -10
  409. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +12 -11
  410. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Main.controller.js +3 -2
  411. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +11 -10
  412. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/MIT.RecursiveHierarchy maintenance.html +408 -0
  413. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/Opa.qunit.js +26 -8
  414. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -14
  415. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +24 -10
  416. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +352 -287
  417. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +38 -5
  418. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/createEdit.js +128 -0
  419. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/tests/pageExpandCollapse.js +23 -22
  420. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +10 -9
  421. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +9 -8
  422. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +3 -2
  423. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +15 -14
  424. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +9 -8
  425. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +9 -8
  426. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +10 -9
  427. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +10 -9
  428. package/test/sap/ui/core/demokit/tutorial/databinding/01/package.json +2 -5
  429. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +8 -0
  430. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/index.js +7 -3
  431. package/test/sap/ui/core/demokit/tutorial/databinding/02/package.json +2 -5
  432. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +8 -0
  433. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/index.js +4 -3
  434. package/test/sap/ui/core/demokit/tutorial/databinding/03/package.json +2 -5
  435. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +8 -0
  436. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/index.js +4 -3
  437. package/test/sap/ui/core/demokit/tutorial/databinding/04/package.json +2 -5
  438. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +8 -0
  439. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/index.js +4 -3
  440. package/test/sap/ui/core/demokit/tutorial/databinding/05/package.json +2 -5
  441. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +8 -0
  442. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/index.js +4 -3
  443. package/test/sap/ui/core/demokit/tutorial/databinding/06/package.json +2 -5
  444. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +8 -0
  445. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/index.js +4 -3
  446. package/test/sap/ui/core/demokit/tutorial/databinding/07/package.json +2 -5
  447. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +8 -0
  448. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/index.js +4 -3
  449. package/test/sap/ui/core/demokit/tutorial/databinding/08/package.json +2 -5
  450. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +8 -0
  451. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/index.js +4 -3
  452. package/test/sap/ui/core/demokit/tutorial/databinding/09/package.json +2 -5
  453. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +8 -0
  454. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/index.js +4 -3
  455. package/test/sap/ui/core/demokit/tutorial/databinding/10/package.json +2 -5
  456. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +8 -0
  457. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/index.js +4 -3
  458. package/test/sap/ui/core/demokit/tutorial/databinding/11/package.json +2 -5
  459. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +8 -0
  460. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/index.js +6 -4
  461. package/test/sap/ui/core/demokit/tutorial/databinding/12/package.json +2 -5
  462. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +8 -0
  463. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/index.js +6 -4
  464. package/test/sap/ui/core/demokit/tutorial/databinding/13/package.json +2 -5
  465. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +8 -0
  466. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/index.js +6 -4
  467. package/test/sap/ui/core/demokit/tutorial/databinding/14/package.json +2 -5
  468. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +8 -0
  469. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/index.js +6 -4
  470. package/test/sap/ui/core/demokit/tutorial/databinding/15/package.json +2 -5
  471. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +8 -0
  472. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/index.js +6 -4
  473. package/test/sap/ui/core/demokit/tutorial/mockserver/01/package.json +2 -5
  474. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +8 -0
  475. package/test/sap/ui/core/demokit/tutorial/mockserver/02/package.json +2 -5
  476. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +8 -0
  477. package/test/sap/ui/core/demokit/tutorial/mockserver/03/package.json +2 -5
  478. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +8 -0
  479. package/test/sap/ui/core/demokit/tutorial/mockserver/04/package.json +2 -5
  480. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +8 -0
  481. package/test/sap/ui/core/demokit/tutorial/navigation/01/package.json +2 -4
  482. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +7 -0
  483. package/test/sap/ui/core/demokit/tutorial/navigation/01/webapp/index.html +1 -1
  484. package/test/sap/ui/core/demokit/tutorial/navigation/02/package.json +2 -4
  485. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +7 -0
  486. package/test/sap/ui/core/demokit/tutorial/navigation/02/webapp/index.html +1 -1
  487. package/test/sap/ui/core/demokit/tutorial/navigation/03/package.json +2 -4
  488. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +7 -0
  489. package/test/sap/ui/core/demokit/tutorial/navigation/03/webapp/index.html +1 -1
  490. package/test/sap/ui/core/demokit/tutorial/navigation/04/package.json +2 -4
  491. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +7 -0
  492. package/test/sap/ui/core/demokit/tutorial/navigation/04/webapp/index.html +1 -1
  493. package/test/sap/ui/core/demokit/tutorial/navigation/05/package.json +2 -4
  494. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +7 -0
  495. package/test/sap/ui/core/demokit/tutorial/navigation/05/webapp/index.html +1 -1
  496. package/test/sap/ui/core/demokit/tutorial/navigation/06/package.json +2 -4
  497. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +7 -0
  498. package/test/sap/ui/core/demokit/tutorial/navigation/06/webapp/index.html +1 -1
  499. package/test/sap/ui/core/demokit/tutorial/navigation/07/package.json +2 -4
  500. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +7 -0
  501. package/test/sap/ui/core/demokit/tutorial/navigation/07/webapp/index.html +1 -1
  502. package/test/sap/ui/core/demokit/tutorial/navigation/08/package.json +2 -4
  503. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +7 -0
  504. package/test/sap/ui/core/demokit/tutorial/navigation/08/webapp/index.html +1 -1
  505. package/test/sap/ui/core/demokit/tutorial/navigation/09/package.json +2 -4
  506. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +7 -0
  507. package/test/sap/ui/core/demokit/tutorial/navigation/09/webapp/index.html +1 -1
  508. package/test/sap/ui/core/demokit/tutorial/navigation/10/package.json +2 -4
  509. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +7 -0
  510. package/test/sap/ui/core/demokit/tutorial/navigation/10/webapp/index.html +1 -1
  511. package/test/sap/ui/core/demokit/tutorial/navigation/11/package.json +2 -4
  512. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +7 -0
  513. package/test/sap/ui/core/demokit/tutorial/navigation/11/webapp/index.html +1 -1
  514. package/test/sap/ui/core/demokit/tutorial/navigation/12/package.json +2 -4
  515. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +7 -0
  516. package/test/sap/ui/core/demokit/tutorial/navigation/12/webapp/index.html +1 -1
  517. package/test/sap/ui/core/demokit/tutorial/navigation/13/package.json +2 -4
  518. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +7 -0
  519. package/test/sap/ui/core/demokit/tutorial/navigation/13/webapp/index.html +1 -1
  520. package/test/sap/ui/core/demokit/tutorial/navigation/14/package.json +2 -4
  521. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +7 -0
  522. package/test/sap/ui/core/demokit/tutorial/navigation/14/webapp/index.html +1 -1
  523. package/test/sap/ui/core/demokit/tutorial/navigation/15/package.json +2 -4
  524. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +7 -0
  525. package/test/sap/ui/core/demokit/tutorial/navigation/15/webapp/index.html +1 -1
  526. package/test/sap/ui/core/demokit/tutorial/navigation/16/package.json +2 -4
  527. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +7 -0
  528. package/test/sap/ui/core/demokit/tutorial/navigation/16/webapp/index.html +1 -1
  529. package/test/sap/ui/core/demokit/tutorial/navigation/17/package.json +4 -6
  530. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +8 -1
  531. package/test/sap/ui/core/demokit/tutorial/navigation/17/webapp/index.html +1 -1
  532. package/test/sap/ui/core/demokit/tutorial/navigation/index.html +2 -2
  533. package/test/sap/ui/core/demokit/tutorial/odatav4/01/package.json +2 -6
  534. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +9 -0
  535. package/test/sap/ui/core/demokit/tutorial/odatav4/02/package.json +2 -6
  536. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +9 -0
  537. package/test/sap/ui/core/demokit/tutorial/odatav4/03/package.json +2 -6
  538. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +9 -0
  539. package/test/sap/ui/core/demokit/tutorial/odatav4/04/package.json +2 -6
  540. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +9 -0
  541. package/test/sap/ui/core/demokit/tutorial/odatav4/05/package.json +2 -6
  542. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +9 -0
  543. package/test/sap/ui/core/demokit/tutorial/odatav4/06/package.json +2 -6
  544. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +9 -0
  545. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +5 -5
  546. package/test/sap/ui/core/demokit/tutorial/odatav4/07/package.json +2 -6
  547. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +9 -0
  548. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +7 -7
  549. package/test/sap/ui/core/demokit/tutorial/odatav4/08/package.json +2 -6
  550. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +9 -0
  551. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +7 -7
  552. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/opaTests.qunit.js +5 -5
  553. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/test/integration/pages/Tutorial.js +1 -1
  554. package/test/sap/ui/core/demokit/tutorial/odatav4/09/package.json +2 -6
  555. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +9 -0
  556. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +7 -7
  557. package/test/sap/ui/core/demokit/tutorial/odatav4/10/package.json +2 -6
  558. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +9 -0
  559. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +7 -7
  560. package/test/sap/ui/core/demokit/tutorial/odatav4/11/package.json +2 -6
  561. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +9 -0
  562. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +7 -7
  563. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/opaTests.qunit.js +5 -5
  564. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/test/integration/pages/Tutorial.js +1 -1
  565. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/package.json +2 -5
  566. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +8 -0
  567. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/webapp/test/integration/opaTests.qunit.js +6 -6
  568. package/test/sap/ui/core/frameoptions/createcontent.js +7 -6
  569. package/test/sap/ui/core/internal/samples/client/MusicCollection/index.html +1 -1
  570. package/test/sap/ui/core/internal/samples/composite/xmlcomposite/exStringAndFloat/Test.controller.js +3 -2
  571. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.html +1 -1
  572. package/test/sap/ui/core/internal/samples/odata/twoFields/Opa.qunit.js +8 -8
  573. package/test/sap/ui/core/internal/samples/odata/twoFields/index.html +1 -1
  574. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.html +1 -1
  575. package/test/sap/ui/core/internal/samples/odata/v2/Products/Opa.qunit.js +7 -7
  576. package/test/sap/ui/core/internal/samples/odata/v2/Products/index.html +1 -1
  577. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +3 -2
  578. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/MIT.SalesOrders(V2).ODLB.create.html +2 -0
  579. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.controller.js +3 -3
  580. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.html +1 -1
  581. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Opa.qunit.js +9 -6
  582. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +3 -0
  583. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/data/ODLB.create/TC3/SalesOrderSet_desc_4-1.json +16 -0
  584. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/index.html +1 -1
  585. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/tests/ODataListBinding.create/TC3_SalesOrders_InlineCreationRow.js +9 -0
  586. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Component.js +3 -2
  587. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.controller.js +3 -3
  588. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/index.html +1 -1
  589. package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +9 -7
  590. package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +4 -2
  591. package/test/sap/ui/core/qunit/ContextMenuSupport.qunit.js +3 -2
  592. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +11 -10
  593. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +218 -223
  594. package/test/sap/ui/core/qunit/Core.qunit.js +35 -31
  595. package/test/sap/ui/core/qunit/CoreEvents.qunit.js +17 -15
  596. package/test/sap/ui/core/qunit/Core_repeatedExecution.qunit.js +3 -3
  597. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +4 -3
  598. package/test/sap/ui/core/qunit/Element_data.qunit.js +5 -5
  599. package/test/sap/ui/core/qunit/Element_destroy.qunit.js +6 -4
  600. package/test/sap/ui/core/qunit/Element_focus.qunit.js +25 -24
  601. package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +3 -2
  602. package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +7 -6
  603. package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +1 -1
  604. package/test/sap/ui/core/qunit/FastNavigationWithWebComponents.qunit.js +5 -5
  605. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +9 -6
  606. package/test/sap/ui/core/qunit/FocusHandler.qunit.js +7 -6
  607. package/test/sap/ui/core/qunit/Fragment.qunit.js +35 -34
  608. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +51 -50
  609. package/test/sap/ui/core/qunit/HTML.qunit.js +32 -32
  610. package/test/sap/ui/core/qunit/Icon.qunit.js +66 -65
  611. package/test/sap/ui/core/qunit/IconPool.qunit.js +2 -1
  612. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +13 -12
  613. package/test/sap/ui/core/qunit/Lib.qunit.js +8 -8
  614. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +24 -24
  615. package/test/sap/ui/core/qunit/RenderManager.qunit.js +54 -53
  616. package/test/sap/ui/core/qunit/ResizeHandler.qunit.js +8 -9
  617. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +7 -6
  618. package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +13 -11
  619. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +6 -5
  620. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +5 -4
  621. package/test/sap/ui/core/qunit/Theming.qunit.js +88 -50
  622. package/test/sap/ui/core/qunit/Theming_default_and_fallback.qunit.js +130 -0
  623. package/test/sap/ui/core/qunit/TooltipBase.qunit.js +4 -3
  624. package/test/sap/ui/core/qunit/UIArea.qunit.js +248 -18
  625. package/test/sap/ui/core/qunit/analytics/testsuite4analytics.qunit.js +9 -8
  626. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +10 -10
  627. package/test/sap/ui/core/qunit/base/Config.qunit.js +12 -2
  628. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +123 -52
  629. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -0
  630. package/test/sap/ui/core/qunit/base/config/GlobalConfig.js +3 -1
  631. package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +4 -1
  632. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +3 -3
  633. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal_legacyAPIs.qunit.js +13 -11
  634. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -1
  635. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithCustomScript_legacyAPIs.qunit.js +13 -11
  636. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithNoJQuery_legacyAPIs.qunit.js +7 -5
  637. package/test/sap/ui/core/qunit/bootstrap/CalendarClassLoadingWithCustomBootTaskAndPreload.qunit.js +12 -14
  638. package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +3 -2
  639. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +1 -1
  640. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +1 -1
  641. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +12 -6
  642. package/test/sap/ui/core/qunit/component/Component.qunit.js +14 -15
  643. package/test/sap/ui/core/qunit/component/Component_unavoidablySync.qunit.js +4 -3
  644. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +4 -5
  645. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +4 -3
  646. package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +4 -6
  647. package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +3 -5
  648. package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +3 -6
  649. package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +5 -8
  650. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +4 -5
  651. package/test/sap/ui/core/qunit/component/ExtensionPoint_unavoidablySync.qunit.js +4 -3
  652. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +19 -19
  653. package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +19 -19
  654. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +43 -43
  655. package/test/sap/ui/core/qunit/csp/ContentSecurityPolicy.qunit.js +18 -13
  656. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +19 -18
  657. package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +13 -12
  658. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +5 -4
  659. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +7 -6
  660. package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +7 -6
  661. package/test/sap/ui/core/qunit/generic/legacy/ControlIterator.qunit.js +6 -6
  662. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +20 -17
  663. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +8 -7
  664. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +1 -2
  665. package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +14 -19
  666. package/test/sap/ui/core/qunit/internal/1Ring.qunit.js +34 -22
  667. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -6
  668. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +4 -0
  669. package/test/sap/ui/core/qunit/isBehindOtherElement.qunit.js +7 -7
  670. package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
  671. package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +3 -2
  672. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +16 -16
  673. package/test/sap/ui/core/qunit/messages/{MessageManager.qunit.js → Messaging.qunit.js} +46 -49
  674. package/test/sap/ui/core/qunit/messages/messagesDataBinding.qunit.js +3 -1
  675. package/test/sap/ui/core/qunit/messages/messagesEnd2End.qunit.js +10 -10
  676. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +36 -46
  677. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +25 -36
  678. package/test/sap/ui/core/qunit/messages/testsuite.messaging.base.qunit.js +2 -2
  679. package/test/sap/ui/core/qunit/model/Binding.qunit.js +8 -8
  680. package/test/sap/ui/core/qunit/model/controlhelper/TreeBindingProxy.qunit.js +24 -14
  681. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +7 -6
  682. package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +3 -2
  683. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync_unavoidablyUsingInlineStyle.qunit.js +5 -4
  684. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +8 -9
  685. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +45 -40
  686. package/test/sap/ui/core/qunit/mvc/testdata/stashed/OP.html +1 -1
  687. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +15 -20
  688. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +20 -25
  689. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyViewAsync_legacyAPIs.qunit.js +10 -11
  690. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyView_legacyAPIs.qunit.js +7 -6
  691. package/test/sap/ui/core/qunit/mvc_legacyAPIs/HTMLView_legacyAPIs.qunit.js +8 -7
  692. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +7 -7
  693. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +40 -47
  694. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +52 -20
  695. package/test/sap/ui/core/qunit/odata/{ODataListBinding.qunit.js → ODataListBinding_legacyAPIs.qunit.js} +27 -0
  696. package/test/sap/ui/core/qunit/odata/ODataMessageParser.qunit.js +44 -48
  697. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +8 -8
  698. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +66 -29
  699. package/test/sap/ui/core/qunit/odata/ODataMetadata.qunit.js +17 -7
  700. package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +147 -89
  701. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +1 -0
  702. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +33 -12
  703. package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +33 -12
  704. package/test/sap/ui/core/qunit/odata/v2/CanonicalRequests.qunit.js +5 -4
  705. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +63 -13
  706. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +281 -59
  707. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +28 -4
  708. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +21 -0
  709. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +1 -2
  710. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding.qunit.js +7 -207
  711. package/test/sap/ui/core/qunit/odata/v2/ODataV2ListBinding_Filter_legacyAPIs.qunit.js +281 -0
  712. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +9 -8
  713. package/test/sap/ui/core/qunit/odata/v2/ODataV2TreeBinding.qunit.js +1 -0
  714. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +95 -85
  715. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +70 -67
  716. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +19 -20
  717. package/test/sap/ui/core/qunit/odata/v2/testsuite.odatav2.qunit.js +4 -0
  718. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +50 -27
  719. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +5 -0
  720. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +4 -3
  721. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +103 -14
  722. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1027 -31
  723. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +18 -17
  724. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +272 -36
  725. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +115 -82
  726. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +10 -0
  727. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +108 -10
  728. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +1 -1
  729. package/test/sap/ui/core/qunit/opa/Opa5PageObject.qunit.js +5 -6
  730. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +29 -42
  731. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +13 -14
  732. package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +5 -4
  733. package/test/sap/ui/core/qunit/opa/actions/Action.qunit.js +6 -5
  734. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +22 -21
  735. package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +60 -56
  736. package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +5 -7
  737. package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +5 -9
  738. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +5 -6
  739. package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +5 -4
  740. package/test/sap/ui/core/qunit/opa/autowaiter/_resourceWaiter.js +21 -20
  741. package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +6 -5
  742. package/test/sap/ui/core/qunit/opa/matchers/Interactable.qunit.js +7 -5
  743. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -3
  744. package/test/sap/ui/core/qunit/opa/matchers/Sibling.qunit.js +4 -3
  745. package/test/sap/ui/core/qunit/opa/matchers/Visible.qunit.js +6 -5
  746. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +28 -27
  747. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +11 -10
  748. package/test/sap/ui/core/qunit/opa/matchers/_Enabled.qunit.js +11 -10
  749. package/test/sap/ui/core/qunit/opa/matchers/_Visitor.qunit.js +5 -4
  750. package/test/sap/ui/core/qunit/opa/opa5/actions.qunit.js +8 -7
  751. package/test/sap/ui/core/qunit/opa/opa5/basics.qunit.js +12 -17
  752. package/test/sap/ui/core/qunit/opa/opa5/logging.qunit.js +5 -6
  753. package/test/sap/ui/core/qunit/opa/opa5/matchers.qunit.js +6 -5
  754. package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +10 -9
  755. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +6 -7
  756. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +4 -3
  757. package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +4 -3
  758. package/test/sap/ui/core/qunit/opa/selectors/_GlobalID.js +4 -3
  759. package/test/sap/ui/core/qunit/opa/selectors/_LabelFor.js +4 -3
  760. package/test/sap/ui/core/qunit/opa/selectors/_Properties.js +33 -27
  761. package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +7 -10
  762. package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +5 -7
  763. package/test/sap/ui/core/qunit/opa/selectors/_ViewID.js +5 -7
  764. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +35 -28
  765. package/test/sap/ui/core/qunit/routing/Placeholder.qunit.js +11 -9
  766. package/test/sap/ui/core/qunit/routing/PlaceholderOptOut.qunit.js +5 -3
  767. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +57 -0
  768. package/test/sap/ui/core/qunit/routing/fixture/historyIframe/iframe/index.html +1 -1
  769. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/Component.js +30 -0
  770. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Child/manifest.json +25 -0
  771. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/Component.js +14 -0
  772. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/manifest.json +51 -0
  773. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/NotFound.view.xml +3 -0
  774. package/test/sap/ui/core/qunit/routing/fixture/router/component/2LevelsMultiNavTo/Parent/view/RootView.view.xml +5 -0
  775. package/test/sap/ui/core/qunit/rule/app/syncXHR.qunit.js +24 -17
  776. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrap.qunit.js +3 -3
  777. package/test/sap/ui/core/qunit/rule/app/syncXHRBootstrapDebug.qunit.js +3 -3
  778. package/test/sap/ui/core/qunit/rule/config/asynchronousXMLViews.qunit.js +9 -18
  779. package/test/sap/ui/core/qunit/support/techinfo/TechnicalInfoTestbench.html +3 -1
  780. package/test/sap/ui/core/qunit/test/starter/find/index.html +1 -1
  781. package/test/sap/ui/core/qunit/test/starter/find/main.js +3 -2
  782. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +0 -6
  783. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  784. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +10 -6
  785. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +27 -4
  786. package/test/sap/ui/core/qunit/tmpl/Template.qunit.js +36 -35
  787. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +13 -0
  788. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  789. package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +2 -2
  790. package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
  791. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +27 -31
  792. package/test/sap/ui/core/qunit/util/Popup.qunit.js +27 -27
  793. package/test/sap/ui/core/qunit/util/ResponsivePaddingsEnablement.qunit.js +13 -9
  794. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +37 -6
  795. package/test/sap/ui/core/qunit/util/jQuery.sap.measure.qunit.js +1 -1
  796. package/test/sap/ui/core/qunit/util/jquery.sap.dom.qunit.js +3 -2
  797. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +8 -8
  798. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +24 -24
  799. package/test/sap/ui/core/qunit/util/static/TechnicalInfoTestbenchInit.js +8 -2
  800. package/test/sap/ui/core/qunit/webc/WebComponent.qunit.js +188 -0
  801. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.html +14 -0
  802. package/test/sap/ui/core/qunit/webc/testsuite.webc.qunit.js +22 -0
  803. package/test/sap/ui/core/relnotes/changes-1.117.json +1 -34
  804. package/test/sap/ui/core/relnotes/changes-1.118.json +143 -0
  805. package/test/sap/ui/core/samples/components/resourcesCSS/index.html +1 -1
  806. package/test/sap/ui/core/samples/databinding/DataBinding.html +3 -1
  807. package/test/sap/ui/core/samples/databinding/DataBindingAsyncType.html +3 -2
  808. package/test/sap/ui/core/samples/databinding/DataBindingCalculatedFields.html +3 -1
  809. package/test/sap/ui/core/samples/databinding/DataBindingList.html +3 -1
  810. package/test/sap/ui/core/samples/databinding/DataBindingListNamedModel.html +3 -1
  811. package/test/sap/ui/core/samples/databinding/DataBindingListXML.html +3 -1
  812. package/test/sap/ui/core/samples/databinding/DataBindingMultiModel.html +3 -1
  813. package/test/sap/ui/core/samples/databinding/DataBindingSortingFiltering.html +3 -1
  814. package/test/sap/ui/core/samples/databinding/DataBindingTreeLarge.html +102 -113
  815. package/test/sap/ui/core/samples/databinding/DataBindingTwoWay.html +3 -1
  816. package/test/sap/ui/core/samples/databinding/DataBindingTwoWayTable.html +90 -89
  817. package/test/sap/ui/core/samples/databinding/DataBindingValidation.html +149 -148
  818. package/test/sap/ui/core/samples/databinding/DataBindingXML.html +3 -2
  819. package/test/sap/ui/core/samples/databinding/DatabindingMessages.html +158 -153
  820. package/test/sap/ui/core/samples/databinding/ODatabindingMessages.html +4 -6
  821. package/test/sap/ui/core/samples/databinding/UnitTableMain.js +3 -4
  822. package/test/sap/ui/core/samples/extensions/index_legacyAPIs.html +15 -13
  823. package/test/sap/ui/core/samples/formatting/controller/ChooseFormatOptions.controller.js +3 -2
  824. package/test/sap/ui/core/samples/mvc/ExtendedXMLViewEventHandlerSyntax.html +5 -3
  825. package/test/sap/ui/core/samples/mvc/XMLViewBindableAggregation.html +1 -1
  826. package/test/testsuite/testframe.html +4 -4
  827. package/src/ui5-boot.js +0 -50
  828. package/test/sap/ui/core/qunit/CoreLock.qunit.js +0 -61
  829. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.js +0 -30
  830. /package/test/sap/ui/core/qunit/{MasterDetail.qunit.js → MasterDetail_legacyAPIs.qunit.js} +0 -0
  831. /package/test/sap/ui/core/qunit/odata/{ODataModel.qunit.js → ODataModel_legacyAPIs.qunit.js} +0 -0
  832. /package/test/sap/ui/core/qunit/odata/{ODataSharedMetadata.qunit.js → ODataSharedMetadata_legacyAPIs.qunit.js} +0 -0
  833. /package/test/sap/ui/core/qunit/odata/{ODataTreeBinding.qunit.js → ODataTreeBinding_legacyAPIs.qunit.js} +0 -0
@@ -3,10 +3,9 @@ sap.ui.define([
3
3
  "sap/base/Log",
4
4
  "sap/ui/core/Control",
5
5
  "sap/ui/core/ResizeHandler",
6
- "sap/ui/dom/includeStylesheet",
7
6
  "sap/ui/qunit/utils/createAndAppendDiv",
8
- "require"
9
- ], function(Log, Control, ResizeHandler, includeStylesheet, createAndAppendDiv, require) {
7
+ "sap/ui/qunit/utils/nextUIUpdate"
8
+ ], function(Log, Control, ResizeHandler, createAndAppendDiv, nextUIUpdate) {
10
9
  "use strict";
11
10
 
12
11
  // setup page content
@@ -367,14 +366,14 @@ sap.ui.define([
367
366
 
368
367
  QUnit.module("Control Resize");
369
368
 
370
- QUnit.test("Check Control Resize - With Rerendering", function(assert) {
369
+ QUnit.test("Check Control Resize - With Rerendering", async function(assert) {
371
370
  var done = assert.async();
372
371
  assert.expect(3);
373
372
  var sResizeListenerId = _register(control);
374
373
 
375
374
  control.setWidth("150px");
376
375
  control.setHeight("150px");
377
- sap.ui.getCore().applyChanges();
376
+ await nextUIUpdate();
378
377
 
379
378
  setTimeout(function() {
380
379
  assert.ok(lastResizeTargetCtrl == control, "Listener should be called on DOM Resize");
@@ -399,16 +398,16 @@ sap.ui.define([
399
398
  }, 300);
400
399
  });
401
400
 
402
- QUnit.test("Check Control Resize - After Destroy no resize should be triggered", function(assert) {
401
+ QUnit.test("Check Control Resize - After Destroy no resize should be triggered", async function(assert) {
403
402
  assert.expect(4);
404
403
  var done = assert.async();
405
404
  _register(control);
406
405
 
407
406
  control.setWidth("151px");
408
407
  control.setHeight("150px");
409
- sap.ui.getCore().applyChanges();
408
+ await nextUIUpdate();
410
409
 
411
- setTimeout(function() {
410
+ setTimeout(async function() {
412
411
  assert.ok(lastResizeTargetCtrl == control, "Listener should be called on DOM Resize");
413
412
  assert.ok(lastSize && lastSize.width == 151 && lastSize.height == 150, "New Size given");
414
413
 
@@ -420,7 +419,7 @@ sap.ui.define([
420
419
  // after destruction, this should not lead to another resize-handler call
421
420
  control.setWidth("150px");
422
421
  control.setHeight("150px");
423
- sap.ui.getCore().applyChanges();
422
+ await nextUIUpdate();
424
423
 
425
424
  setTimeout(function() {
426
425
  assert.ok(lastResizeTargetCtrl == null, "Listener should not have been called on control resize");
@@ -5,8 +5,9 @@ sap.ui.define([
5
5
  "sap/ui/events/jquery/EventSimulation",
6
6
  "sap/ui/thirdparty/jquery",
7
7
  "sap/ui/qunit/utils/createAndAppendDiv",
8
+ "sap/ui/qunit/utils/nextUIUpdate",
8
9
  "sap/ui/core/Configuration"
9
- ], function(ScrollBar, Device, EventSimulation, jQuery, createAndAppendDiv, Configuration) {
10
+ ], function(ScrollBar, Device, EventSimulation, jQuery, createAndAppendDiv, nextUIUpdate, Configuration) {
10
11
  "use strict";
11
12
 
12
13
  // create page content
@@ -34,7 +35,7 @@ sap.ui.define([
34
35
  QUnit.module("API and initial rendering", {
35
36
  beforeEach: function() {
36
37
  createTestScrollbars(this);
37
- sap.ui.getCore().applyChanges();
38
+ return nextUIUpdate();
38
39
  },
39
40
  afterEach: function() {
40
41
  this.oHSB.destroy();
@@ -85,7 +86,7 @@ sap.ui.define([
85
86
  QUnit.module("Event handler", {
86
87
  beforeEach: function() {
87
88
  createTestScrollbars(this);
88
- sap.ui.getCore().applyChanges();
89
+ return nextUIUpdate();
89
90
  },
90
91
  afterEach: function() {
91
92
  this.oHSB.destroy();
@@ -134,8 +135,8 @@ sap.ui.define([
134
135
  // Support of Huge number of steps
135
136
  this.oVSB.setSteps(1000000); //8000000px in Chrom
136
137
  this.oVSB.setScrollPosition(300000);
137
- sap.ui.getCore().applyChanges();
138
- setTimeout(function() {
138
+ setTimeout(async function() {
139
+ await nextUIUpdate();
139
140
  assert.equal(this.oVSB.getScrollPosition(), "300000", "scroll position is 300000 step");
140
141
  done();
141
142
  }.bind(this), 500);
@@ -159,7 +160,7 @@ sap.ui.define([
159
160
  this.oHSB.setSize("200px");
160
161
  this.oHSB.setContentSize("1000px");
161
162
  this.oHSB.placeAt("target4");
162
- sap.ui.getCore().applyChanges();
163
+ return nextUIUpdate();
163
164
  },
164
165
 
165
166
  afterEach : function() {
@@ -3,12 +3,14 @@ sap.ui.define([
3
3
  "sap/ui/core/Component",
4
4
  "sap/ui/core/ShortcutHintsMixin",
5
5
  "sap/ui/core/Fragment",
6
- "sap/ui/Device"
6
+ "sap/ui/Device",
7
+ "sap/ui/qunit/utils/nextUIUpdate"
7
8
  ], function(
8
9
  Component,
9
10
  ShortcutHintsMixin,
10
11
  Fragment,
11
- Device
12
+ Device,
13
+ nextUIUpdate
12
14
  ) {
13
15
  "use strict";
14
16
 
@@ -257,13 +259,13 @@ sap.ui.define([
257
259
  });
258
260
 
259
261
  QUnit.test("focusin", function(assert) {
260
- return waitForViewReady().then(function(oView) {
262
+ return waitForViewReady().then(async function(oView) {
261
263
  var oCtrl2 = oView.byId("myControl2");
262
264
  var oSpy = sinon.spy(ShortcutHintsMixin.prototype, "showShortcutHint");
263
265
 
264
266
  //render
265
267
  oView.placeAt('qunit-fixture');
266
- sap.ui.getCore().applyChanges();
268
+ await nextUIUpdate();
267
269
 
268
270
  ShortcutHintsMixin.addConfig(oCtrl2, { event: "myEvent" }, oCtrl2);
269
271
  oCtrl2._handleEvent({
@@ -282,7 +284,7 @@ sap.ui.define([
282
284
  });
283
285
 
284
286
  QUnit.test("popup content", function(assert) {
285
- return waitForViewReady().then(function(oView) {
287
+ return waitForViewReady().then(async function(oView) {
286
288
  var oCtrl2 = oView.byId("myControl2");
287
289
 
288
290
  var oEl = document.createElement('div');
@@ -291,7 +293,7 @@ sap.ui.define([
291
293
 
292
294
  //render
293
295
  oView.placeAt('container');
294
- sap.ui.getCore().applyChanges();
296
+ await nextUIUpdate();
295
297
 
296
298
  ShortcutHintsMixin.addConfig(oCtrl2, { event: "myEvent" }, oCtrl2);
297
299
  oCtrl2._handleEvent({
@@ -306,7 +308,7 @@ sap.ui.define([
306
308
 
307
309
  //with tooltip
308
310
  oCtrl2.setTooltip("some tooltip");
309
- sap.ui.getCore().applyChanges();
311
+ await nextUIUpdate();
310
312
 
311
313
  oCtrl2._handleEvent({
312
314
  type: "focusin",
@@ -343,7 +345,7 @@ sap.ui.define([
343
345
  //the inner control wants to show a hint for the command
344
346
  //of the outer control
345
347
 
346
- return waitForViewReady().then(function(oView) {
348
+ return waitForViewReady().then(async function(oView) {
347
349
  var oCtrl = oView.byId("myControl");
348
350
  var oButton1 = oView.byId("b1");
349
351
 
@@ -352,7 +354,7 @@ sap.ui.define([
352
354
  }, oButton1);
353
355
 
354
356
  oView.placeAt('qunit-fixture');
355
- sap.ui.getCore().applyChanges();
357
+ await nextUIUpdate();
356
358
 
357
359
  // assert
358
360
  assert.ok(ShortcutHintsMixin.isDOMIDRegistered(oCtrl.getId()),
@@ -369,14 +371,14 @@ sap.ui.define([
369
371
  QUnit.module("integration");
370
372
 
371
373
  QUnit.test("sap.m.Button accessibility", function(assert) {
372
- return waitForViewReady().then(function(oView) {
374
+ return waitForViewReady().then(async function(oView) {
373
375
  var oButton1 = oView.byId("b1"); //icon-only
374
376
  var oButton2 = oView.byId("b2"); //text with user tooltip
375
377
  var oButton3 = oView.byId("b3"); //icon-only with user tooltip
376
378
 
377
379
  //render
378
380
  oView.placeAt('qunit-fixture');
379
- sap.ui.getCore().applyChanges();
381
+ await nextUIUpdate();
380
382
 
381
383
  assert.ok(!oButton1.getDomRef().getAttribute('title'),
382
384
  "no native tooltip");
@@ -13,8 +13,9 @@ sap.ui.define([
13
13
  "sap/m/Panel",
14
14
  "sap/uxap/ObjectPageLayout",
15
15
  "sap/base/Log",
16
- "sap/ui/qunit/utils/createAndAppendDiv"],
17
- function(StashedControlSupport, Element, Component, XMLView, Fragment, ListItem, JSONModel, Button, SegmentedButton, SegmentedButtonItem, Select, Panel, ObjectPageLayout, Log, createAndAppendDiv) {
16
+ "sap/ui/qunit/utils/createAndAppendDiv",
17
+ "sap/ui/qunit/utils/nextUIUpdate"],
18
+ function(StashedControlSupport, Element, Component, XMLView, Fragment, ListItem, JSONModel, Button, SegmentedButton, SegmentedButtonItem, Select, Panel, ObjectPageLayout, Log, createAndAppendDiv, nextUIUpdate) {
18
19
  /* global QUnit sinon*/
19
20
  "use strict";
20
21
 
@@ -593,11 +594,11 @@ function(StashedControlSupport, Element, Component, XMLView, Fragment, ListItem,
593
594
  models: {
594
595
  "undefined": oJSONModel
595
596
  }
596
- }).then(function(oView) {
597
+ }).then(async function(oView) {
597
598
  this.oView = oView;
598
599
 
599
600
  oView.placeAt("content");
600
- sap.ui.getCore().applyChanges();
601
+ await nextUIUpdate();
601
602
 
602
603
  var oOPL = this.oView.byId("ObjectPageLayout");
603
604
  var aAllSections = oOPL.getSections();
@@ -621,7 +622,7 @@ function(StashedControlSupport, Element, Component, XMLView, Fragment, ListItem,
621
622
  stashed[0].unstash();
622
623
 
623
624
  // force rendering
624
- sap.ui.getCore().applyChanges();
625
+ await nextUIUpdate();
625
626
 
626
627
  // get sections anew, instances now have changed after unstash
627
628
  aAllSections = oOPL.getSections();
@@ -7,8 +7,9 @@ sap.ui.define([
7
7
  "sap/ui/core/Lib",
8
8
  "sap/ui/dom/includeStylesheet",
9
9
  "sap/m/Bar",
10
- "sap/ui/thirdparty/URI"
11
- ], function(Parameters, Control, Element, Icon, Library, includeStylesheet, Bar, URI) {
10
+ "sap/ui/thirdparty/URI",
11
+ "sap/ui/qunit/utils/nextUIUpdate"
12
+ ], function(Parameters, Control, Element, Icon, Library, includeStylesheet, Bar, URI, nextUIUpdate) {
12
13
  "use strict";
13
14
 
14
15
  QUnit.module("Parmeters.get", {
@@ -555,7 +556,7 @@ sap.ui.define([
555
556
  sap.ui.getCore().attachThemeChanged(fnAssertThemeChanged);
556
557
  });
557
558
 
558
- QUnit.test("getActiveScopesFor: Check scope chain for given rendered control", function(assert) {
559
+ QUnit.test("getActiveScopesFor: Check scope chain for given rendered control", async function(assert) {
559
560
  assert.expect(18);
560
561
  var done = assert.async();
561
562
 
@@ -571,7 +572,7 @@ sap.ui.define([
571
572
  oOuterBar.addStyleClass("TestScope2"); // No valid TestScope ==> only checking that this is not part of the ScopeChain
572
573
  oOuterBar.placeAt("qunit-fixture");
573
574
 
574
- sap.ui.getCore().applyChanges();
575
+ await nextUIUpdate();
575
576
 
576
577
  var fnAssertThemeChanged = function () {
577
578
  // CSS is loaded and scope 'TestScope1' is defined therefore different scope chains expected
@@ -5,12 +5,14 @@ sap.ui.define([
5
5
  "sap/base/Event",
6
6
  "sap/ui/base/config/URLConfigurationProvider",
7
7
  "sap/ui/core/Theming",
8
+ "sap/ui/core/theming/ThemeHelper",
8
9
  "sap/ui/qunit/utils/waitForThemeApplied"
9
10
  ], function (
10
11
  BaseConfig,
11
12
  BaseEvent,
12
13
  URLConfigurationProvider,
13
14
  Theming,
15
+ ThemeHelper,
14
16
  themeApplied
15
17
  ) {
16
18
  "use strict";
@@ -51,29 +53,37 @@ sap.ui.define([
51
53
  });
52
54
  }
53
55
 
54
- QUnit.module("Theming", {
55
- beforeEach: function (assert) {
56
- mConfigStubValues = {};
57
- mEventCalls = {
58
- aChange: [],
59
- aApplied: []
60
- };
61
- oURLConfigurationProviderStub = sinon.stub(URLConfigurationProvider, "get");
62
- oURLConfigurationProviderStub.callsFake(function(sKey) {
63
- return mConfigStubValues.hasOwnProperty(sKey) ? mConfigStubValues[sKey] : oURLConfigurationProviderStub.wrappedMethod.call(this, sKey);
64
- });
65
- Theming.attachChange(checkChange);
66
- Theming.attachApplied(checkApplied);
67
- if (bThemeManagerNotActive) {
68
- assert.strictEqual(mEventCalls.aApplied[0].theme, Theming.getTheme(), "In case there is no ThemeManager, the applied event should be called immediately.");
69
- mEventCalls.aApplied.pop();
70
- }
71
- },
72
- afterEach: function () {
73
- Theming.detachChange(checkChange);
74
- Theming.detachApplied(checkApplied);
75
- oURLConfigurationProviderStub.restore();
56
+ function setupTestsBeforeEach(assert) {
57
+ mConfigStubValues = {};
58
+ oURLConfigurationProviderStub = sinon.stub(URLConfigurationProvider, "get");
59
+ oURLConfigurationProviderStub.callsFake(function(sKey) {
60
+ return mConfigStubValues.hasOwnProperty(sKey) ? mConfigStubValues[sKey] : oURLConfigurationProviderStub.wrappedMethod.call(this, sKey);
61
+ });
62
+ mEventCalls = {
63
+ aChange: [],
64
+ aApplied: []
65
+ };
66
+ Theming.attachChange(checkChange);
67
+ Theming.attachApplied(checkApplied);
68
+ if (bThemeManagerNotActive) {
69
+ assert.strictEqual(mEventCalls.aApplied[0].theme, Theming.getTheme(), "In case there is no ThemeManager, the applied event should be called immediately.");
70
+ mEventCalls.aApplied.pop();
76
71
  }
72
+ mEventCalls = {
73
+ aChange: [],
74
+ aApplied: []
75
+ };
76
+ }
77
+
78
+ function setupTestsAfterEach() {
79
+ Theming.detachChange(checkChange);
80
+ Theming.detachApplied(checkApplied);
81
+ oURLConfigurationProviderStub.restore();
82
+ }
83
+
84
+ QUnit.module("Initial Configuration", {
85
+ beforeEach: setupTestsBeforeEach,
86
+ afterEach: setupTestsAfterEach
77
87
  });
78
88
 
79
89
  /**
@@ -83,27 +93,31 @@ sap.ui.define([
83
93
  * Before fixing this regression, an empty string lead to a "Maximum call stack size exceeded" error.
84
94
  */
85
95
  QUnit.test("Initial Theme - empty string fallback", function(assert) {
86
- assert.equal(Theming.getTheme(), "base", "Initial Theme after bootstrapping should be 'base'");
96
+ const sExpectedDefaultTheme = ThemeHelper.getDefaultThemeInfo().DEFAULT_THEME;
97
+ assert.equal(Theming.getTheme(), sExpectedDefaultTheme, `Initial Theme after bootstrapping should be ${sExpectedDefaultTheme}`);
87
98
  });
88
99
 
89
100
  QUnit.test("getTheme", function (assert) {
90
101
  assert.expect(bThemeManagerNotActive ? 28 : 27);
91
102
  BaseConfig._.invalidate();
103
+
104
+ const sExpectedDefaultTheme = ThemeHelper.getDefaultThemeInfo().DEFAULT_THEME;
105
+
92
106
  mConfigStubValues = {
93
- "sapTheme": "sap_test_theme_1",
94
- "sapUiTheme": "sap_test_theme_2"
107
+ "sapTheme": "sap_horizon",
108
+ "sapUiTheme": "sap_fiori_3"
95
109
  };
96
110
  // sapTheme should be first
97
- return fnAssert("sap_test_theme_1").then(function() {
111
+ return fnAssert("sap_horizon").then(function() {
98
112
  BaseConfig._.invalidate();
99
113
  mConfigStubValues["sapTheme"] = undefined;
100
114
  // if there is no sapTheme sapUiTheme should be used
101
- return fnAssert("sap_test_theme_2");
115
+ return fnAssert("sap_fiori_3");
102
116
  }).then(function() {
103
117
  BaseConfig._.invalidate();
104
118
  mConfigStubValues["sapUiTheme"] = undefined;
105
- // use default value 'base' in case there is no theming parameter at all
106
- return fnAssert("base");
119
+ // internally we determine a valid default theme in case there is no theme given at all
120
+ return fnAssert(sExpectedDefaultTheme);
107
121
  }).then(function() {
108
122
  BaseConfig._.invalidate();
109
123
  mConfigStubValues["sapTheme"] = "sap_test_theme_3@/sap/test/themeroot";
@@ -132,8 +146,9 @@ sap.ui.define([
132
146
  }).then(function() {
133
147
  // sap_corbu theme should be normalized to sap_fiori_3 theme
134
148
  BaseConfig._.invalidate();
149
+ // sap_corbu theme should be normalized to the latest default theme
135
150
  mConfigStubValues["sapTheme"] = "sap_corbu";
136
- return fnAssert("sap_fiori_3");
151
+ return fnAssert(sExpectedDefaultTheme);
137
152
  }).then(function() {
138
153
  // sap_corbu theme with specific themeroots should not be normalized and themeroots for sap_corbu should trigger a change event
139
154
  BaseConfig._.invalidate();
@@ -148,12 +163,23 @@ sap.ui.define([
148
163
  });
149
164
  });
150
165
 
166
+ QUnit.module("Theming runtime behavior", {
167
+ beforeEach: async function (assert) {
168
+ // make sure we have a fixed theme to begin with
169
+ Theming.setTheme("sap_horizon");
170
+ await themeApplied();
171
+
172
+ setupTestsBeforeEach(assert);
173
+ },
174
+ afterEach: setupTestsAfterEach
175
+ });
176
+
151
177
  QUnit.test("setTheme", function(assert) {
152
178
  Theming.setTheme("sap_hcb");
153
179
 
154
180
  return fnAssert("sap_hcb", [{
155
181
  theme: {
156
- "old": "base",
182
+ "old": ThemeHelper.getDefaultThemeInfo().DEFAULT_THEME,
157
183
  "new": "sap_hcb"
158
184
  }
159
185
  }], [{
@@ -175,22 +201,22 @@ sap.ui.define([
175
201
  var sOldTheme = Theming.getTheme();
176
202
  var sExpectedOldThemeRoot;
177
203
  var sExpectedNewThemeRoot;
178
- Theming.setTheme("sap_test_theme_4");
204
+ Theming.setTheme("my_private_theme");
179
205
 
180
- return fnAssert("sap_test_theme_4", [{
206
+ return fnAssert("my_private_theme", [{
181
207
  theme: {
182
208
  "old": sOldTheme,
183
- "new": "sap_test_theme_4"
209
+ "new": "my_private_theme"
184
210
  }
185
211
  }], [{
186
- theme: "sap_test_theme_4"
212
+ theme: "my_private_theme"
187
213
  }]).then(function() {
188
214
  assert.strictEqual(Theming.getThemeRoot(), sExpectedNewThemeRoot, "ThemeRoot without parameter should return the expected themeRoot '" + sExpectedNewThemeRoot + "'");
189
- assert.strictEqual(Theming.getThemeRoot("sap_test_theme_4"), sExpectedNewThemeRoot, "ThemeRoot for current theme should return the expected themeRoot '" + sExpectedNewThemeRoot + "'");
215
+ assert.strictEqual(Theming.getThemeRoot("my_private_theme"), sExpectedNewThemeRoot, "ThemeRoot for current theme should return the expected themeRoot '" + sExpectedNewThemeRoot + "'");
190
216
 
191
217
  sExpectedNewThemeRoot = "sap/another/themeroot";
192
- Theming.setThemeRoot("sap_test_theme_4", "sap/another/themeroot", true);
193
- return fnAssert("sap_test_theme_4", [{
218
+ Theming.setThemeRoot("my_private_theme", "sap/another/themeroot", true);
219
+ return fnAssert("my_private_theme", [{
194
220
  themeRoots: {
195
221
  "new": sExpectedNewThemeRoot,
196
222
  "old": sExpectedOldThemeRoot,
@@ -199,12 +225,12 @@ sap.ui.define([
199
225
  }]);
200
226
  }).then(function() {
201
227
  assert.strictEqual(Theming.getThemeRoot(), sExpectedNewThemeRoot, "ThemeRoot without parameter should return the expected themeRoot '" + sExpectedNewThemeRoot + "'");
202
- assert.strictEqual(Theming.getThemeRoot("sap_test_theme_4"), sExpectedNewThemeRoot, "ThemeRoot for current theme should return the expected themeRoot '" + sExpectedNewThemeRoot + "'");
228
+ assert.strictEqual(Theming.getThemeRoot("my_private_theme"), sExpectedNewThemeRoot, "ThemeRoot for current theme should return the expected themeRoot '" + sExpectedNewThemeRoot + "'");
203
229
 
204
230
  sExpectedOldThemeRoot = sExpectedNewThemeRoot;
205
231
  sExpectedNewThemeRoot = "sap/themeroot/for/libs";
206
- Theming.setThemeRoot("sap_test_theme_4", "sap/themeroot/for/libs", ["sap_test_lib1", "sap_test_lib2"], true);
207
- return fnAssert("sap_test_theme_4", [{
232
+ Theming.setThemeRoot("my_private_theme", "sap/themeroot/for/libs", ["sap_test_lib1", "sap_test_lib2"], true);
233
+ return fnAssert("my_private_theme", [{
208
234
  themeRoots: {
209
235
  "old": {
210
236
  "": sExpectedOldThemeRoot
@@ -221,27 +247,39 @@ sap.ui.define([
221
247
  });
222
248
 
223
249
  QUnit.test("setThemeRoot - Initial 'string' value must be overridable by API", function(assert) {
224
- var sThemeName = "sap_initialThemeRoot";
250
+ var sThemeName = "theme_with_initial_themeRoot";
225
251
  var sInitialThemeRoot = "/somewhere/outside";
226
252
 
227
253
  assert.strictEqual(Theming.getThemeRoot(sThemeName), sInitialThemeRoot, "ThemeRoot for '" + sThemeName + "' should return the expected themeRoot '" + sInitialThemeRoot + "'");
228
254
 
229
255
  // Regression test: must not fail when initial theme-root is given only as a string, e.g.
230
256
  // themeRoots: {
231
- // "sap_initialThemeRoot": "/somewhere/outside"
257
+ // "theme_with_initial_themeRoot": "/somewhere/outside"
232
258
  // }
233
259
  Theming.setThemeRoot(sThemeName, "https://back/inside");
234
260
  });
235
261
 
236
- QUnit.test("isApplied", function(assert) {
237
- assert.ok(Theming.isApplied(), "Theming should be applied.");
262
+ QUnit.test("isApplied", async function(assert) {
263
+ function isApplied() {
264
+ var bApplied = false;
265
+ function fnCheckApplied() {
266
+ bApplied = true;
267
+ }
268
+ // if theme is applied fnCheckApplied is called sync
269
+ Theming.attachApplied(fnCheckApplied);
270
+ Theming.detachApplied(fnCheckApplied);
271
+ return bApplied;
272
+ }
238
273
 
239
- Theming.setTheme("sap_test_theme_5");
240
- assert.strictEqual(Theming.isApplied(), bThemeManagerNotActive, "'true' if ThemeManager is active; else 'false'");
274
+ assert.ok(isApplied(), "Theming should be applied.");
241
275
 
242
- return themeApplied().then(function() {
243
- assert.ok(Theming.isApplied(), "Theming should be applied.");
244
- });
276
+ // check if isApplied flag is reset after setting a new theme
277
+ Theming.setTheme("my_test_theme_for_applied");
278
+ assert.strictEqual(isApplied(), bThemeManagerNotActive, "'true' if ThemeManager is active; else 'false'");
279
+
280
+ await themeApplied();
281
+
282
+ assert.ok(isApplied(), "Theming should be applied.");
245
283
  });
246
284
 
247
285
  });
@@ -0,0 +1,130 @@
1
+ /* global QUnit, sinon, globalThis */
2
+
3
+ sap.ui.define([
4
+ "sap/base/Event",
5
+ "sap/ui/base/config/URLConfigurationProvider",
6
+ "sap/ui/core/Theming",
7
+ "sap/ui/core/theming/ThemeHelper",
8
+ "sap/ui/qunit/utils/waitForThemeApplied"
9
+ ], function (
10
+ BaseEvent,
11
+ URLConfigurationProvider,
12
+ Theming,
13
+ ThemeHelper,
14
+ themeApplied
15
+ ) {
16
+ "use strict";
17
+
18
+ var oURLConfigurationProviderStub,
19
+ mConfigStubValues,
20
+ mEventCalls,
21
+ bThemeManagerNotActive = !!globalThis["sap-ui-test-config"].themeManagerNotActive;
22
+
23
+ function checkChange(oEvent) {
24
+ mEventCalls.aChange.push(BaseEvent.getParameters(oEvent));
25
+ }
26
+
27
+ function checkApplied(oEvent) {
28
+ mEventCalls.aApplied.push(BaseEvent.getParameters(oEvent));
29
+ }
30
+
31
+ function fnAssert(sTheme, aChangeEvents, aAppliedEvents) {
32
+ // Always wait for possible themeApplied
33
+ aChangeEvents = aChangeEvents || [];
34
+ aAppliedEvents = aAppliedEvents || [];
35
+ QUnit.assert.strictEqual(Theming.getTheme(), sTheme, "Theming.getTheme() should return theme '" + sTheme + "' with provider setup " + JSON.stringify(mConfigStubValues) + ".");
36
+ return themeApplied().then(function() {
37
+ QUnit.assert.strictEqual(mEventCalls.aChange.length, aChangeEvents.length, "There should " + aChangeEvents.length + " 'change' event(s).");
38
+ QUnit.assert.strictEqual(mEventCalls.aApplied.length, aAppliedEvents.length, "There should " + aAppliedEvents.length + " 'applied' event(s).");
39
+
40
+ for (var i = aChangeEvents.length - 1; i >= 0; i--) {
41
+ QUnit.assert.deepEqual(mEventCalls.aChange[i], aChangeEvents[i], "Expected parameters in 'change' event.");
42
+ mEventCalls.aChange.pop();
43
+ aChangeEvents.pop();
44
+ }
45
+
46
+ for (var j = aAppliedEvents.length - 1; j >= 0; j--) {
47
+ QUnit.assert.deepEqual(mEventCalls.aApplied[j], aAppliedEvents[j], "Expected parameters in 'applied' event.");
48
+ mEventCalls.aApplied.pop();
49
+ aAppliedEvents.pop();
50
+ }
51
+ });
52
+ }
53
+
54
+ QUnit.module("Theming", {
55
+ beforeEach: function (assert) {
56
+ mConfigStubValues = {};
57
+ mEventCalls = {
58
+ aChange: [],
59
+ aApplied: []
60
+ };
61
+ oURLConfigurationProviderStub = sinon.stub(URLConfigurationProvider, "get");
62
+ oURLConfigurationProviderStub.callsFake(function(sKey) {
63
+ return mConfigStubValues.hasOwnProperty(sKey) ? mConfigStubValues[sKey] : oURLConfigurationProviderStub.wrappedMethod.call(this, sKey);
64
+ });
65
+ Theming.attachChange(checkChange);
66
+ Theming.attachApplied(checkApplied);
67
+ if (bThemeManagerNotActive) {
68
+ assert.strictEqual(mEventCalls.aApplied[0].theme, Theming.getTheme(), "In case there is no ThemeManager, the applied event should be called immediately.");
69
+ mEventCalls.aApplied.pop();
70
+ }
71
+ mEventCalls = {
72
+ aChange: [],
73
+ aApplied: []
74
+ };
75
+ },
76
+ afterEach: function () {
77
+ Theming.detachChange(checkChange);
78
+ Theming.detachApplied(checkApplied);
79
+ oURLConfigurationProviderStub.restore();
80
+ }
81
+ });
82
+
83
+ QUnit.test("setTheme - fallback to default theme", async function(assert) {
84
+ const sCurrentTheme = Theming.getTheme();
85
+ const sCalculatedDefaultTheme = ThemeHelper.getDefaultThemeInfo().DEFAULT_THEME;
86
+
87
+ // 0. Check if initially set theme via bootstrap is correctly changed to a valid default
88
+ assert.equal(sCurrentTheme, sCalculatedDefaultTheme, "Initial theme is correctly set when bootstrap provides outdated theme name");
89
+
90
+ // 1. fresh start with a consistent valid theme
91
+ // no fallback should be applied
92
+ Theming.setTheme("sap_fiori_3_hcw");
93
+
94
+ await fnAssert("sap_fiori_3_hcw",
95
+ // change event for "theme"
96
+ [{ theme: { "old": sCurrentTheme, "new": "sap_fiori_3_hcw" } }],
97
+ // applied event with new theme name
98
+ [{ theme: "sap_fiori_3_hcw" }]);
99
+
100
+ // 2. set a theme that is no longer supported
101
+ // fallback to default (Aug. 2023: "sap_horizon") should be applied
102
+ Theming.setTheme("sap_goldreflection");
103
+
104
+ await fnAssert(sCalculatedDefaultTheme,
105
+ // change event for "theme"
106
+ [{ theme: { "old": "sap_fiori_3_hcw", "new": sCalculatedDefaultTheme } }],
107
+ // applied event with new theme name
108
+ [{ theme: sCalculatedDefaultTheme }]);
109
+
110
+ // 3. another invalid theme is set
111
+ // no further events should be fired after setting another invalid theme
112
+ Theming.setTheme("sap_platinum");
113
+
114
+ await fnAssert(sCalculatedDefaultTheme,
115
+ // no change event for "theme"
116
+ [],
117
+ // no further applied event, since the theme is not changed
118
+ []);
119
+
120
+ // 4. setting a valid theme again should work
121
+ Theming.setTheme("sap_belize");
122
+
123
+ await fnAssert("sap_belize",
124
+ // change event for "theme"
125
+ [{ theme: { "old": sCalculatedDefaultTheme, "new": "sap_belize" } }],
126
+ // applied event with new theme name
127
+ [{ theme: "sap_belize" }]);
128
+ });
129
+
130
+ });
@@ -5,8 +5,9 @@ sap.ui.define([
5
5
  "sap/ui/layout/HorizontalLayout",
6
6
  "sap/m/Button",
7
7
  "sap/ui/qunit/utils/createAndAppendDiv",
8
+ "sap/ui/qunit/utils/nextUIUpdate",
8
9
  "sap/ui/events/KeyCodes"
9
- ], function (TooltipBase, QUnitUtils, HorizontalLayout, Button, createAndAppendDiv, KeyCodes) {
10
+ ], function (TooltipBase, QUnitUtils, HorizontalLayout, Button, createAndAppendDiv, nextUIUpdate, KeyCodes) {
10
11
  "use strict";
11
12
 
12
13
  createAndAppendDiv("target");
@@ -213,7 +214,7 @@ sap.ui.define([
213
214
  this.oSpyOpenPopup1 = sinon.spy(this.oTooltip1, "openPopup");
214
215
  this.oSpyClosePopup1 = sinon.spy(this.oTooltip1, "closePopup");
215
216
 
216
- sap.ui.getCore().applyChanges();
217
+ return nextUIUpdate();
217
218
  },
218
219
 
219
220
  afterEach: function() {
@@ -354,7 +355,7 @@ sap.ui.define([
354
355
  this.oSpyOpenPopupLayout = sinon.spy(this.oTooltipLayout, "openPopup");
355
356
  this.oSpyClosePopupLayout = sinon.spy(this.oTooltipLayout, "closePopup");
356
357
 
357
- sap.ui.getCore().applyChanges();
358
+ return nextUIUpdate();
358
359
  },
359
360
 
360
361
  afterEach: function() {