@openui5/sap.ui.core 1.120.0 → 1.120.2

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 (625) hide show
  1. package/.reuse/dep5 +1 -1
  2. package/THIRDPARTY.txt +1 -1
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/Event.js +2 -2
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/i18n/Formatting.js +30 -14
  13. package/src/sap/base/i18n/LanguageTag.js +1 -1
  14. package/src/sap/base/i18n/Localization.js +1 -2
  15. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  16. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  17. package/src/sap/base/util/restricted/_castArray.js +1 -1
  18. package/src/sap/base/util/restricted/_compact.js +1 -1
  19. package/src/sap/base/util/restricted/_curry.js +1 -1
  20. package/src/sap/base/util/restricted/_debounce.js +1 -1
  21. package/src/sap/base/util/restricted/_difference.js +1 -1
  22. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  23. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  25. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_flatten.js +1 -1
  28. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  29. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  30. package/src/sap/base/util/restricted/_intersection.js +1 -1
  31. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  32. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  34. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isNil.js +1 -1
  36. package/src/sap/base/util/restricted/_max.js +1 -1
  37. package/src/sap/base/util/restricted/_merge.js +1 -1
  38. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  39. package/src/sap/base/util/restricted/_min.js +1 -1
  40. package/src/sap/base/util/restricted/_omit.js +1 -1
  41. package/src/sap/base/util/restricted/_pick.js +1 -1
  42. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  43. package/src/sap/base/util/restricted/_throttle.js +1 -1
  44. package/src/sap/base/util/restricted/_toArray.js +1 -1
  45. package/src/sap/base/util/restricted/_union.js +1 -1
  46. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  47. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  48. package/src/sap/base/util/restricted/_uniq.js +1 -1
  49. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  50. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  51. package/src/sap/base/util/restricted/_without.js +1 -1
  52. package/src/sap/base/util/restricted/_xor.js +1 -1
  53. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  54. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  55. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  56. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  57. package/src/sap/ui/Device.js +3 -3
  58. package/src/sap/ui/Global.js +4 -4
  59. package/src/sap/ui/base/BindingParser.js +4 -4
  60. package/src/sap/ui/base/DataType.js +5 -5
  61. package/src/sap/ui/base/Event.js +1 -1
  62. package/src/sap/ui/base/EventProvider.js +1 -1
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +9 -65
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +25 -1
  66. package/src/sap/ui/base/ManagedObjectRegistry.js +186 -169
  67. package/src/sap/ui/base/Metadata.js +1 -1
  68. package/src/sap/ui/base/Object.js +1 -1
  69. package/src/sap/ui/base/ObjectPool.js +1 -1
  70. package/src/sap/ui/core/.library +3 -3
  71. package/src/sap/ui/core/BusyIndicator.js +1 -1
  72. package/src/sap/ui/core/Component.js +55 -150
  73. package/src/sap/ui/core/ComponentContainer.js +5 -5
  74. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  75. package/src/sap/ui/core/ComponentRegistry.js +153 -0
  76. package/src/sap/ui/core/ComponentSupport.js +3 -3
  77. package/src/sap/ui/core/Configuration.js +9 -7
  78. package/src/sap/ui/core/Control.js +6 -4
  79. package/src/sap/ui/core/Core.js +19 -71
  80. package/src/sap/ui/core/CustomData.js +1 -1
  81. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  82. package/src/sap/ui/core/Element.js +30 -142
  83. package/src/sap/ui/core/ElementMetadata.js +1 -1
  84. package/src/sap/ui/core/ElementRegistry.js +159 -0
  85. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  86. package/src/sap/ui/core/EventBus.js +1 -1
  87. package/src/sap/ui/core/ExtensionPoint.js +5 -5
  88. package/src/sap/ui/core/FocusHandler.js +3 -2
  89. package/src/sap/ui/core/Fragment.js +7 -7
  90. package/src/sap/ui/core/HTML.js +1 -1
  91. package/src/sap/ui/core/History.js +1 -1
  92. package/src/sap/ui/core/Icon.js +1 -1
  93. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  94. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  95. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  96. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  97. package/src/sap/ui/core/InvisibleText.js +1 -1
  98. package/src/sap/ui/core/Item.js +1 -1
  99. package/src/sap/ui/core/LabelEnablement.js +1 -1
  100. package/src/sap/ui/core/LayoutData.js +1 -1
  101. package/src/sap/ui/core/Lib.js +62 -32
  102. package/src/sap/ui/core/ListItem.js +1 -1
  103. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  104. package/src/sap/ui/core/Locale.js +1 -1
  105. package/src/sap/ui/core/LocaleData.js +55 -11
  106. package/src/sap/ui/core/Manifest.js +4 -5
  107. package/src/sap/ui/core/Message.js +2 -1
  108. package/src/sap/ui/core/Messaging.js +2 -2
  109. package/src/sap/ui/core/RenderManager.js +1 -1
  110. package/src/sap/ui/core/Renderer.js +1 -1
  111. package/src/sap/ui/core/ResizeHandler.js +1 -1
  112. package/src/sap/ui/core/ScrollBar.js +1 -1
  113. package/src/sap/ui/core/SeparatorItem.js +1 -1
  114. package/src/sap/ui/core/Shortcut.js +15 -9
  115. package/src/sap/ui/core/StaticArea.js +4 -1
  116. package/src/sap/ui/core/Theming.js +3 -3
  117. package/src/sap/ui/core/Title.js +1 -1
  118. package/src/sap/ui/core/TooltipBase.js +1 -1
  119. package/src/sap/ui/core/UIArea.js +54 -12
  120. package/src/sap/ui/core/UIAreaRegistry.js +150 -0
  121. package/src/sap/ui/core/UIComponent.js +3 -3
  122. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  123. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  124. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  125. package/src/sap/ui/core/XMLComposite.js +1 -1
  126. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  127. package/src/sap/ui/core/XMLTemplateProcessor.js +95 -76
  128. package/src/sap/ui/core/cldr/Unicode-Data-Files-LICENSE.txt +1 -1
  129. package/src/sap/ui/core/cldr/cy.json +12 -3
  130. package/src/sap/ui/core/cldr/en_AU.json +48 -12
  131. package/src/sap/ui/core/cldr/en_GB.json +24 -6
  132. package/src/sap/ui/core/cldr/en_HK.json +24 -6
  133. package/src/sap/ui/core/cldr/en_IE.json +24 -6
  134. package/src/sap/ui/core/cldr/en_IN.json +24 -6
  135. package/src/sap/ui/core/cldr/en_NZ.json +24 -6
  136. package/src/sap/ui/core/cldr/en_PG.json +24 -6
  137. package/src/sap/ui/core/cldr/en_SG.json +24 -6
  138. package/src/sap/ui/core/cldr/en_ZA.json +24 -6
  139. package/src/sap/ui/core/cldr/es.json +288 -72
  140. package/src/sap/ui/core/cldr/es_AR.json +288 -72
  141. package/src/sap/ui/core/cldr/es_BO.json +288 -72
  142. package/src/sap/ui/core/cldr/es_CL.json +144 -36
  143. package/src/sap/ui/core/cldr/es_CO.json +144 -36
  144. package/src/sap/ui/core/cldr/es_MX.json +288 -72
  145. package/src/sap/ui/core/cldr/fa.json +48 -12
  146. package/src/sap/ui/core/cldr/id.json +56 -14
  147. package/src/sap/ui/core/cldr/kk.json +184 -46
  148. package/src/sap/ui/core/cldr/ms.json +56 -14
  149. package/src/sap/ui/core/cldr/nb.json +36 -9
  150. package/src/sap/ui/core/cldr/nl.json +264 -66
  151. package/src/sap/ui/core/cldr/nl_BE.json +264 -66
  152. package/src/sap/ui/core/cldr/pt.json +288 -72
  153. package/src/sap/ui/core/cldr/pt_PT.json +288 -72
  154. package/src/sap/ui/core/cldr/sr.json +96 -24
  155. package/src/sap/ui/core/cldr/sr_Latn.json +72 -18
  156. package/src/sap/ui/core/date/Islamic.js +4 -4
  157. package/src/sap/ui/core/date/UI5Date.js +1 -1
  158. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  159. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  160. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  161. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  162. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  163. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  164. package/src/sap/ui/core/format/DateFormat.js +25 -13
  165. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  166. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  167. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  168. package/src/sap/ui/core/library.js +9 -3
  169. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  170. package/src/sap/ui/core/message/Message.js +7 -7
  171. package/src/sap/ui/core/message/MessageManager.js +1 -1
  172. package/src/sap/ui/core/message/MessageParser.js +1 -1
  173. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  174. package/src/sap/ui/core/message/MessageType.js +1 -1
  175. package/src/sap/ui/core/mvc/Controller.js +15 -13
  176. package/src/sap/ui/core/mvc/ControllerExtension.js +7 -5
  177. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +2 -2
  178. package/src/sap/ui/core/mvc/ControllerMetadata.js +1 -1
  179. package/src/sap/ui/core/mvc/EventHandlerResolver.js +4 -4
  180. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  181. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  182. package/src/sap/ui/core/mvc/JSView.js +1 -1
  183. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  184. package/src/sap/ui/core/mvc/View.js +21 -10
  185. package/src/sap/ui/core/mvc/XMLView.js +8 -2
  186. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  187. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  188. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  189. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  190. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  191. package/src/sap/ui/core/routing/History.js +1 -1
  192. package/src/sap/ui/core/routing/Route.js +6 -6
  193. package/src/sap/ui/core/routing/Router.js +6 -6
  194. package/src/sap/ui/core/routing/Targets.js +3 -3
  195. package/src/sap/ui/core/routing/async/Target.js +2 -2
  196. package/src/sap/ui/core/routing/async/Targets.js +1 -1
  197. package/src/sap/ui/core/rules/Misc.support.js +3 -3
  198. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -1
  199. package/src/sap/ui/core/search/SearchProvider.js +2 -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 +1 -1
  204. package/src/sap/ui/core/support/Support.js +1 -1
  205. package/src/sap/ui/core/support/plugins/ControlTree.js +7 -5
  206. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  207. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  208. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  209. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  210. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  211. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  212. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  213. package/src/sap/ui/core/theming/Parameters.js +7 -7
  214. package/src/sap/ui/core/theming/ThemeHelper.js +2 -2
  215. package/src/sap/ui/core/theming/ThemeManager.js +2 -2
  216. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  217. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  218. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  219. package/src/sap/ui/core/tmpl/Template.js +1 -1
  220. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  221. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  222. package/src/sap/ui/core/util/Export.js +1 -1
  223. package/src/sap/ui/core/util/ExportCell.js +1 -1
  224. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  225. package/src/sap/ui/core/util/ExportRow.js +1 -1
  226. package/src/sap/ui/core/util/ExportType.js +1 -1
  227. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  228. package/src/sap/ui/core/util/File.js +1 -1
  229. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  230. package/src/sap/ui/core/util/MockServer.js +34 -3
  231. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  232. package/src/sap/ui/core/util/_LocalizationHelper.js +122 -0
  233. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  234. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  235. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  236. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  237. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  238. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  239. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  240. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  241. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  242. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  243. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  244. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  245. package/src/sap/ui/debug/ControlTree.js +1 -1
  246. package/src/sap/ui/debug/DebugEnv.js +1 -1
  247. package/src/sap/ui/debug/PropertyList.js +1 -1
  248. package/src/sap/ui/model/Binding.js +2 -2
  249. package/src/sap/ui/model/ClientListBinding.js +6 -3
  250. package/src/sap/ui/model/ClientModel.js +1 -1
  251. package/src/sap/ui/model/ClientTreeBinding.js +6 -3
  252. package/src/sap/ui/model/CompositeDataState.js +5 -5
  253. package/src/sap/ui/model/CompositeType.js +1 -1
  254. package/src/sap/ui/model/DataState.js +10 -10
  255. package/src/sap/ui/model/FilterProcessor.js +19 -16
  256. package/src/sap/ui/model/ManagedObjectBindingSupport.js +2 -2
  257. package/src/sap/ui/model/MetaModel.js +1 -1
  258. package/src/sap/ui/model/Model.js +10 -8
  259. package/src/sap/ui/model/SelectionModel.js +1 -1
  260. package/src/sap/ui/model/SimpleType.js +1 -1
  261. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  262. package/src/sap/ui/model/Type.js +1 -1
  263. package/src/sap/ui/model/analytics/odata4analytics.js +6 -6
  264. package/src/sap/ui/model/json/JSONModel.js +1 -1
  265. package/src/sap/ui/model/message/MessageModel.js +1 -1
  266. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  267. package/src/sap/ui/model/odata/ODataListBinding.js +5 -2
  268. package/src/sap/ui/model/odata/ODataMessageParser.js +3 -3
  269. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  270. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  271. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  272. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  273. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  274. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  275. package/src/sap/ui/model/odata/type/Date.js +1 -1
  276. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  277. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  278. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  279. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  280. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  281. package/src/sap/ui/model/odata/type/Double.js +1 -1
  282. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  283. package/src/sap/ui/model/odata/type/Int.js +1 -1
  284. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  285. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  286. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  287. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  288. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  289. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  290. package/src/sap/ui/model/odata/type/Single.js +1 -1
  291. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  292. package/src/sap/ui/model/odata/type/String.js +1 -1
  293. package/src/sap/ui/model/odata/type/Time.js +1 -1
  294. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  295. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  296. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  297. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  298. package/src/sap/ui/model/odata/v2/ODataListBinding.js +5 -2
  299. package/src/sap/ui/model/odata/v2/ODataModel.js +9 -58
  300. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +6 -3
  301. package/src/sap/ui/model/odata/v4/Context.js +32 -27
  302. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
  303. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  304. package/src/sap/ui/model/odata/v4/ODataListBinding.js +198 -155
  305. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
  306. package/src/sap/ui/model/odata/v4/ODataModel.js +9 -4
  307. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +9 -6
  308. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  309. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +220 -85
  310. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +33 -20
  311. package/src/sap/ui/model/odata/v4/lib/_Cache.js +70 -18
  312. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +9 -5
  313. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  314. package/src/sap/ui/model/type/Boolean.js +1 -1
  315. package/src/sap/ui/model/type/Currency.js +1 -1
  316. package/src/sap/ui/model/type/Date.js +1 -1
  317. package/src/sap/ui/model/type/DateInterval.js +1 -1
  318. package/src/sap/ui/model/type/DateTime.js +1 -1
  319. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  320. package/src/sap/ui/model/type/FileSize.js +1 -1
  321. package/src/sap/ui/model/type/Float.js +1 -1
  322. package/src/sap/ui/model/type/Integer.js +1 -1
  323. package/src/sap/ui/model/type/String.js +1 -1
  324. package/src/sap/ui/model/type/Time.js +1 -1
  325. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  326. package/src/sap/ui/model/type/Unit.js +1 -1
  327. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  328. package/src/sap/ui/performance/trace/Interaction.js +20 -16
  329. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  330. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +5 -5
  331. package/src/sap/ui/test/BranchTracking.js +4 -0
  332. package/src/sap/ui/test/actions/EnterText.js +1 -1
  333. package/src/sap/ui/test/generic/GenericTestCollection.js +1 -0
  334. package/src/sap/ui/test/generic/TestBase.js +4 -4
  335. package/src/sap/ui/test/generic/Utils.js +3 -2
  336. package/src/sap/ui/util/Storage.js +1 -1
  337. package/src/ui5loader-autoconfig.js +23 -15
  338. package/src/ui5loader.js +9 -4
  339. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/manifest.json +3 -10
  340. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/package.json +13 -0
  341. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +11 -0
  342. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +3 -3
  343. package/test/sap/ui/core/demokit/sample/common/Controller.js +0 -1
  344. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +3 -11
  345. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/package.json +13 -0
  346. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +11 -0
  347. package/test/sap/ui/core/demokit/sample/matcher/Descendant/Component.js +1 -1
  348. package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +3 -11
  349. package/test/sap/ui/core/demokit/sample/matcher/Descendant/package.json +13 -0
  350. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +11 -0
  351. package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +3 -11
  352. package/test/sap/ui/core/demokit/sample/matcher/I18NText/package.json +13 -0
  353. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +11 -0
  354. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +3 -11
  355. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/package.json +13 -0
  356. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +11 -0
  357. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +1 -1
  358. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +14 -1
  359. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +6 -0
  360. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/MIT.MultipleInlineCreationRowsGrid.html +5 -0
  361. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.view.xml +9 -2
  362. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +23 -0
  363. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/pages/Main.js +58 -1
  364. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +75 -30
  365. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +19 -1
  366. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +84 -28
  367. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +3 -3
  368. package/test/sap/ui/core/demokit/tutorial/databinding/01/Component.js +9 -25
  369. package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +20 -0
  370. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  371. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +5 -0
  372. package/test/sap/ui/core/demokit/tutorial/databinding/02/Component.js +9 -25
  373. package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +20 -0
  374. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  375. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +5 -0
  376. package/test/sap/ui/core/demokit/tutorial/databinding/03/Component.js +9 -25
  377. package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +20 -0
  378. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  379. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +5 -0
  380. package/test/sap/ui/core/demokit/tutorial/databinding/04/Component.js +9 -26
  381. package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +21 -0
  382. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  383. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +5 -0
  384. package/test/sap/ui/core/demokit/tutorial/databinding/05/Component.js +9 -26
  385. package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +21 -0
  386. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  387. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +5 -0
  388. package/test/sap/ui/core/demokit/tutorial/databinding/06/Component.js +9 -27
  389. package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +22 -0
  390. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  391. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +5 -0
  392. package/test/sap/ui/core/demokit/tutorial/databinding/07/Component.js +9 -28
  393. package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +23 -0
  394. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  395. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +5 -0
  396. package/test/sap/ui/core/demokit/tutorial/databinding/08/Component.js +9 -28
  397. package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +23 -0
  398. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  399. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +5 -0
  400. package/test/sap/ui/core/demokit/tutorial/databinding/09/Component.js +9 -29
  401. package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +24 -0
  402. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  403. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +5 -0
  404. package/test/sap/ui/core/demokit/tutorial/databinding/10/Component.js +9 -29
  405. package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +24 -0
  406. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  407. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +5 -0
  408. package/test/sap/ui/core/demokit/tutorial/databinding/11/Component.js +9 -29
  409. package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +24 -0
  410. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  411. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +5 -0
  412. package/test/sap/ui/core/demokit/tutorial/databinding/12/Component.js +9 -30
  413. package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +25 -0
  414. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  415. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +5 -0
  416. package/test/sap/ui/core/demokit/tutorial/databinding/13/Component.js +9 -30
  417. package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +25 -0
  418. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  419. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +5 -0
  420. package/test/sap/ui/core/demokit/tutorial/databinding/14/Component.js +9 -30
  421. package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +25 -0
  422. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  423. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +5 -0
  424. package/test/sap/ui/core/demokit/tutorial/databinding/15/Component.js +9 -32
  425. package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +27 -0
  426. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  427. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +5 -0
  428. package/test/sap/ui/core/demokit/tutorial/mockserver/01/Component.js +9 -30
  429. package/test/sap/ui/core/demokit/tutorial/mockserver/01/manifest.json +24 -0
  430. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  431. package/test/sap/ui/core/demokit/tutorial/mockserver/02/Component.js +9 -33
  432. package/test/sap/ui/core/demokit/tutorial/mockserver/02/manifest.json +27 -0
  433. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  434. package/test/sap/ui/core/demokit/tutorial/mockserver/03/Component.js +9 -33
  435. package/test/sap/ui/core/demokit/tutorial/mockserver/03/manifest.json +27 -0
  436. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  437. package/test/sap/ui/core/demokit/tutorial/mockserver/04/Component.js +9 -33
  438. package/test/sap/ui/core/demokit/tutorial/mockserver/04/manifest.json +27 -0
  439. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  440. package/test/sap/ui/core/demokit/tutorial/navigation/01/Component.js +9 -33
  441. package/test/sap/ui/core/demokit/tutorial/navigation/01/manifest.json +28 -0
  442. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  443. package/test/sap/ui/core/demokit/tutorial/navigation/02/Component.js +9 -35
  444. package/test/sap/ui/core/demokit/tutorial/navigation/02/manifest.json +30 -0
  445. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  446. package/test/sap/ui/core/demokit/tutorial/navigation/03/Component.js +9 -37
  447. package/test/sap/ui/core/demokit/tutorial/navigation/03/manifest.json +32 -0
  448. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  449. package/test/sap/ui/core/demokit/tutorial/navigation/04/Component.js +9 -38
  450. package/test/sap/ui/core/demokit/tutorial/navigation/04/manifest.json +33 -0
  451. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  452. package/test/sap/ui/core/demokit/tutorial/navigation/05/Component.js +9 -38
  453. package/test/sap/ui/core/demokit/tutorial/navigation/05/manifest.json +33 -0
  454. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  455. package/test/sap/ui/core/demokit/tutorial/navigation/06/Component.js +9 -40
  456. package/test/sap/ui/core/demokit/tutorial/navigation/06/manifest.json +35 -0
  457. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  458. package/test/sap/ui/core/demokit/tutorial/navigation/07/Component.js +9 -42
  459. package/test/sap/ui/core/demokit/tutorial/navigation/07/manifest.json +37 -0
  460. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  461. package/test/sap/ui/core/demokit/tutorial/navigation/08/Component.js +9 -45
  462. package/test/sap/ui/core/demokit/tutorial/navigation/08/manifest.json +40 -0
  463. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  464. package/test/sap/ui/core/demokit/tutorial/navigation/09/Component.js +9 -45
  465. package/test/sap/ui/core/demokit/tutorial/navigation/09/manifest.json +40 -0
  466. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  467. package/test/sap/ui/core/demokit/tutorial/navigation/10/Component.js +9 -47
  468. package/test/sap/ui/core/demokit/tutorial/navigation/10/manifest.json +42 -0
  469. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  470. package/test/sap/ui/core/demokit/tutorial/navigation/11/Component.js +9 -52
  471. package/test/sap/ui/core/demokit/tutorial/navigation/11/manifest.json +47 -0
  472. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  473. package/test/sap/ui/core/demokit/tutorial/navigation/12/Component.js +9 -52
  474. package/test/sap/ui/core/demokit/tutorial/navigation/12/manifest.json +47 -0
  475. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  476. package/test/sap/ui/core/demokit/tutorial/navigation/13/Component.js +9 -52
  477. package/test/sap/ui/core/demokit/tutorial/navigation/13/manifest.json +47 -0
  478. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  479. package/test/sap/ui/core/demokit/tutorial/navigation/14/Component.js +9 -52
  480. package/test/sap/ui/core/demokit/tutorial/navigation/14/manifest.json +47 -0
  481. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  482. package/test/sap/ui/core/demokit/tutorial/navigation/15/Component.js +9 -52
  483. package/test/sap/ui/core/demokit/tutorial/navigation/15/manifest.json +47 -0
  484. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  485. package/test/sap/ui/core/demokit/tutorial/navigation/16/Component.js +9 -52
  486. package/test/sap/ui/core/demokit/tutorial/navigation/16/manifest.json +47 -0
  487. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  488. package/test/sap/ui/core/demokit/tutorial/navigation/17/Component.js +9 -52
  489. package/test/sap/ui/core/demokit/tutorial/navigation/17/manifest.json +47 -0
  490. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  491. package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +3 -27
  492. package/test/sap/ui/core/demokit/tutorial/odatav4/01/manifest.json +28 -0
  493. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  494. package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +3 -27
  495. package/test/sap/ui/core/demokit/tutorial/odatav4/02/manifest.json +28 -0
  496. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  497. package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +3 -27
  498. package/test/sap/ui/core/demokit/tutorial/odatav4/03/manifest.json +28 -0
  499. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  500. package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +3 -27
  501. package/test/sap/ui/core/demokit/tutorial/odatav4/04/manifest.json +28 -0
  502. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  503. package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +3 -27
  504. package/test/sap/ui/core/demokit/tutorial/odatav4/05/manifest.json +28 -0
  505. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  506. package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +3 -27
  507. package/test/sap/ui/core/demokit/tutorial/odatav4/06/manifest.json +28 -0
  508. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  509. package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +3 -27
  510. package/test/sap/ui/core/demokit/tutorial/odatav4/07/manifest.json +28 -0
  511. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  512. package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +3 -27
  513. package/test/sap/ui/core/demokit/tutorial/odatav4/08/manifest.json +28 -0
  514. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  515. package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +3 -27
  516. package/test/sap/ui/core/demokit/tutorial/odatav4/09/manifest.json +28 -0
  517. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  518. package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +3 -27
  519. package/test/sap/ui/core/demokit/tutorial/odatav4/10/manifest.json +28 -0
  520. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  521. package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +3 -27
  522. package/test/sap/ui/core/demokit/tutorial/odatav4/11/manifest.json +28 -0
  523. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  524. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/Component.js +9 -29
  525. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/manifest.json +25 -0
  526. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  527. package/test/sap/ui/core/qunit/BindingParser.qunit.js +4 -4
  528. package/test/sap/ui/core/qunit/ClientModel.qunit.js +28 -28
  529. package/test/sap/ui/core/qunit/CommandExecution.qunit.js +3 -1
  530. package/test/sap/ui/core/qunit/Core.qunit.js +1 -1
  531. package/test/sap/ui/core/qunit/DataBinding.qunit.js +6 -6
  532. package/test/sap/ui/core/qunit/Declarative.qunit.js +6 -6
  533. package/test/sap/ui/core/qunit/Element_base.qunit.js +8 -7
  534. package/test/sap/ui/core/qunit/Element_base_legacyAPIs.qunit.js +48 -0
  535. package/test/sap/ui/core/qunit/Element_closestTo.qunit.js +1 -1
  536. package/test/sap/ui/core/qunit/Fragment.qunit.js +63 -13
  537. package/test/sap/ui/core/qunit/HTML.qunit.js +5 -5
  538. package/test/sap/ui/core/qunit/Lib.qunit.js +59 -0
  539. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +86 -3
  540. package/test/sap/ui/core/qunit/PlaceAt.qunit.js +6 -6
  541. package/test/sap/ui/core/qunit/Shortcut.qunit.js +9 -1
  542. package/test/sap/ui/core/qunit/UIArea.qunit.js +7 -6
  543. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +41 -0
  544. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.html +7 -5
  545. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +46 -7
  546. package/test/sap/ui/core/qunit/base/config/GlobalConfigForCascade.js +24 -21
  547. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +19 -0
  548. package/test/sap/ui/core/qunit/component/Component.qunit.js +35 -11
  549. package/test/sap/ui/core/qunit/component/ComponentContainer.qunit.js +1 -1
  550. package/test/sap/ui/core/qunit/component/Models.qunit.js +29 -30
  551. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +3 -3
  552. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +4 -3
  553. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +6 -7
  554. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +3 -2
  555. package/test/sap/ui/core/qunit/generic/legacy/testsuite.generic.qunit.js +3 -0
  556. package/test/sap/ui/core/qunit/i18n/Islamic.qunit.js +4 -4
  557. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +65 -0
  558. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +12 -12
  559. package/test/sap/ui/core/qunit/loader/syncMode_unavoidablySync.qunit.js +54 -1
  560. package/test/sap/ui/core/qunit/messages/messagesGeneral.qunit.js +3 -1
  561. package/test/sap/ui/core/qunit/mockserver/testdata/shopping/Products.json +1 -1
  562. package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +2 -2
  563. package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +2 -2
  564. package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +58 -16
  565. package/test/sap/ui/core/qunit/model/Model.qunit.js +43 -2
  566. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +3 -0
  567. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +3 -2
  568. package/test/sap/ui/core/qunit/mvc/EventHandlerResolver.qunit.js +2 -2
  569. package/test/sap/ui/core/qunit/mvc/View.qunit.js +38 -35
  570. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +1 -1
  571. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +1 -1
  572. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +5 -5
  573. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +1 -1
  574. package/test/sap/ui/core/qunit/mvc/extensions/ControllerMetadata.qunit.js +6 -2
  575. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +12 -0
  576. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +12 -0
  577. package/test/sap/ui/core/qunit/mvc/extensions/testdata/AnotherMain.controller.js +3 -1
  578. package/test/sap/ui/core/qunit/mvc/testdata/XMLViewEmbeddingTypedViews.view.xml +1 -1
  579. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +26 -7
  580. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +5 -5
  581. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +2 -2
  582. package/test/sap/ui/core/qunit/odata/ODataMessageParserNoFakeService.qunit.js +36 -34
  583. package/test/sap/ui/core/qunit/odata/ODataModel_legacyAPIs.qunit.js +22 -22
  584. package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +1 -1
  585. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +16 -16
  586. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +69 -0
  587. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +2 -11
  588. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +17 -17
  589. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +32 -36
  590. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +43 -22
  591. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +19 -9
  592. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +318 -217
  593. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +5 -5
  594. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2148 -124
  595. package/test/sap/ui/core/qunit/odata/v4/ODataParentBinding.qunit.js +43 -35
  596. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +20 -2
  597. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +453 -125
  598. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +70 -33
  599. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +256 -8
  600. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +10 -2
  601. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +40 -1
  602. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +11 -2
  603. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +4 -7
  604. package/test/sap/ui/core/qunit/routing/async/Router.qunit.js +102 -52
  605. package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +1 -1
  606. package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +4 -5
  607. package/test/sap/ui/core/qunit/routing/async/TitleHistory.qunit.js +1 -1
  608. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/Component.js +1 -0
  609. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Child/manifest.json +1 -5
  610. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/Component.js +1 -0
  611. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/Parent/manifest.json +1 -5
  612. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/Component.js +15 -0
  613. package/test/sap/ui/core/qunit/routing/fixture/router/component/parentRoute/ParentExtended/manifest.json +8 -0
  614. package/test/sap/ui/core/qunit/routing/sync/Router.qunit.js +2 -2
  615. package/test/sap/ui/core/qunit/routing/sync/Targets.qunit.js +2 -3
  616. package/test/sap/ui/core/qunit/testdata/fragments/XMLTestFragmentWithXMLView.fragment.xml +5 -0
  617. package/test/sap/ui/core/qunit/testsuites/testsuite.base.configuration.qunit.js +1 -1
  618. package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +4 -0
  619. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +190 -0
  620. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  621. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry.qunit.js +161 -0
  622. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectRegistry_legacyAPIs.qunit.js +150 -0
  623. package/test/sap/ui/core/qunit/ui5classes/testsuite.ui5classes.qunit.js +84 -0
  624. package/test/sap/ui/core/qunit/util/ViewSerializer.qunit.js +4 -3
  625. package/test/sap/ui/core/relnotes/changes-1.120.json +307 -0
@@ -5225,4 +5225,194 @@ sap.ui.define([
5225
5225
  // code under test
5226
5226
  assert.strictEqual(DateFormat.prototype.parse.call(oFormat, "~value"), "~dateObject");
5227
5227
  });
5228
+
5229
+ //*****************************************************************************************************************
5230
+ // BCP: 2380137559
5231
+ QUnit.test("DateFormat: alternative month abbreviations (integrative test)", function (assert) {
5232
+ Configuration.setLanguage("en_GB");
5233
+ const oDateFormat = DateFormat.getDateInstance();
5234
+ const oDate = UI5Date.getInstance(2023, 8, 15);
5235
+
5236
+ // code under test - format based on current CLDR version
5237
+ assert.strictEqual(oDateFormat.format(oDate), "15 Sept 2023");
5238
+
5239
+ // code under test - parse abreviated month based on current CLDR version (43.0)
5240
+ assert.strictEqual(oDateFormat.parse("15 Sept 2023").getTime(), oDate.getTime());
5241
+
5242
+ // code under test - parsing abreviated month based on older CLDR version (41.0) still possible
5243
+ assert.strictEqual(oDateFormat.parse("15 Sep 2023").getTime(), oDate.getTime());
5244
+ });
5245
+
5246
+ //*****************************************************************************************************************
5247
+ QUnit.test("DateFormat#init", function (assert) {
5248
+ const oLocalData = {
5249
+ _getMonthsWithAlternatives() {},
5250
+ _getMonthsStandAloneWithAlternatives() {},
5251
+ getDayPeriods() {},
5252
+ getDays() {},
5253
+ getDaysStandAlone() {},
5254
+ getEras() {},
5255
+ getFlexibleDayPeriods() {},
5256
+ getFlexibleDayPeriodsStandAlone() {},
5257
+ getMonths() {},
5258
+ getMonthsStandAlone() {},
5259
+ getQuarters() {},
5260
+ getQuartersStandAlone() {}
5261
+ };
5262
+ const oDateFormat = {
5263
+ oFormatOptions: {calendarType: "~calendarType", pattern: "~pattern"},
5264
+ oLocaleData: oLocalData,
5265
+ getAllowedCharacters() {},
5266
+ parseCldrDatePattern() {}
5267
+ };
5268
+ const oLocalDataMock = this.mock(oLocalData);
5269
+ oLocalDataMock.expects("_getMonthsWithAlternatives").withExactArgs("abbreviated", "~calendarType")
5270
+ .returns("~aMonthsAbbrev");
5271
+ oLocalDataMock.expects("getMonths").withExactArgs("wide", "~calendarType").returns("~aMonthsWide");
5272
+ oLocalDataMock.expects("getMonths").withExactArgs("narrow", "~calendarType").returns("~aMonthsNarrow");
5273
+ oLocalDataMock.expects("_getMonthsStandAloneWithAlternatives").withExactArgs("abbreviated", "~calendarType")
5274
+ .returns("~aMonthsAbbrevSt");
5275
+ oLocalDataMock.expects("getMonthsStandAlone").withExactArgs("wide", "~calendarType").returns("~aMonthsWideSt");
5276
+ oLocalDataMock.expects("getMonthsStandAlone").withExactArgs("narrow", "~calendarType")
5277
+ .returns("~aMonthsNarrowSt");
5278
+ oLocalDataMock.expects("getDays").withExactArgs("abbreviated", "~calendarType").returns("~aDaysAbbrev");
5279
+ oLocalDataMock.expects("getDays").withExactArgs("wide", "~calendarType").returns("~aDaysWide");
5280
+ oLocalDataMock.expects("getDays").withExactArgs("narrow", "~calendarType").returns("~aDaysNarrow");
5281
+ oLocalDataMock.expects("getDays").withExactArgs("short", "~calendarType").returns("~aDaysShort");
5282
+ oLocalDataMock.expects("getDaysStandAlone").withExactArgs("abbreviated", "~calendarType")
5283
+ .returns("~aDaysAbbrevSt");
5284
+ oLocalDataMock.expects("getDaysStandAlone").withExactArgs("wide", "~calendarType").returns("~aDaysWideSt");
5285
+ oLocalDataMock.expects("getDaysStandAlone").withExactArgs("narrow", "~calendarType").returns("~aDaysNarrowSt");
5286
+ oLocalDataMock.expects("getDaysStandAlone").withExactArgs("short", "~calendarType").returns("~aDaysShortSt");
5287
+ oLocalDataMock.expects("getQuarters").withExactArgs("abbreviated", "~calendarType").returns("~aQuartersAbbrev");
5288
+ oLocalDataMock.expects("getQuarters").withExactArgs("wide", "~calendarType").returns("~aQuartersWide");
5289
+ oLocalDataMock.expects("getQuarters").withExactArgs("narrow", "~calendarType").returns("~aQuartersNarrow");
5290
+ oLocalDataMock.expects("getQuartersStandAlone").withExactArgs("abbreviated", "~calendarType")
5291
+ .returns("~aQuartersAbbrevSt");
5292
+ oLocalDataMock.expects("getQuartersStandAlone").withExactArgs("wide", "~calendarType")
5293
+ .returns("~aQuartersWideSt");
5294
+ oLocalDataMock.expects("getQuartersStandAlone").withExactArgs("narrow", "~calendarType")
5295
+ .returns("~aQuartersNarrowSt");
5296
+ oLocalDataMock.expects("getEras").withExactArgs("abbreviated", "~calendarType").returns("~aErasAbbrev");
5297
+ oLocalDataMock.expects("getEras").withExactArgs("wide", "~calendarType").returns("~aErasWide");
5298
+ oLocalDataMock.expects("getEras").withExactArgs("narrow", "~calendarType").returns("~aErasNarrow");
5299
+ oLocalDataMock.expects("getDayPeriods").withExactArgs("abbreviated", "~calendarType")
5300
+ .returns("~aDayPeriodsAbbrev");
5301
+ oLocalDataMock.expects("getDayPeriods").withExactArgs("wide", "~calendarType").returns("~aDayPeriodsWide");
5302
+ oLocalDataMock.expects("getDayPeriods").withExactArgs("narrow", "~calendarType").returns("~aDayPeriodsNarrow");
5303
+ oLocalDataMock.expects("getFlexibleDayPeriods").withExactArgs("abbreviated", "~calendarType")
5304
+ .returns("~oFlexibleDayPeriodsAbbrev");
5305
+ oLocalDataMock.expects("getFlexibleDayPeriods").withExactArgs("wide", "~calendarType")
5306
+ .returns("~oFlexibleDayPeriodsWide");
5307
+ oLocalDataMock.expects("getFlexibleDayPeriods").withExactArgs("narrow", "~calendarType")
5308
+ .returns("~oFlexibleDayPeriodsNarrow");
5309
+ oLocalDataMock.expects("getFlexibleDayPeriodsStandAlone").withExactArgs("abbreviated", "~calendarType")
5310
+ .returns("~oFlexibleDayPeriodsAbbrevSt");
5311
+ oLocalDataMock.expects("getFlexibleDayPeriodsStandAlone").withExactArgs("wide", "~calendarType")
5312
+ .returns("~oFlexibleDayPeriodsWideSt");
5313
+ oLocalDataMock.expects("getFlexibleDayPeriodsStandAlone").withExactArgs("narrow", "~calendarType")
5314
+ .returns("~oFlexibleDayPeriodsNarrowSt");
5315
+ this.mock(oDateFormat).expects("parseCldrDatePattern").withExactArgs("~pattern").returns("~aFormatArray");
5316
+ this.mock(oDateFormat).expects("getAllowedCharacters").withExactArgs("~aFormatArray")
5317
+ .returns("~sAllowedCharacters");
5318
+
5319
+ // code under test
5320
+ DateFormat.prototype.init.call(oDateFormat);
5321
+
5322
+ assert.strictEqual(oDateFormat.aMonthsAbbrev, "~aMonthsAbbrev");
5323
+ assert.strictEqual(oDateFormat.aMonthsWide, "~aMonthsWide");
5324
+ assert.strictEqual(oDateFormat.aMonthsNarrow, "~aMonthsNarrow");
5325
+ assert.strictEqual(oDateFormat.aMonthsAbbrevSt, "~aMonthsAbbrevSt");
5326
+ assert.strictEqual(oDateFormat.aMonthsWideSt, "~aMonthsWideSt");
5327
+ assert.strictEqual(oDateFormat.aMonthsNarrowSt, "~aMonthsNarrowSt");
5328
+ assert.strictEqual(oDateFormat.aDaysAbbrev, "~aDaysAbbrev");
5329
+ assert.strictEqual(oDateFormat.aDaysWide, "~aDaysWide");
5330
+ assert.strictEqual(oDateFormat.aDaysNarrow, "~aDaysNarrow");
5331
+ assert.strictEqual(oDateFormat.aDaysShort, "~aDaysShort");
5332
+ assert.strictEqual(oDateFormat.aDaysAbbrevSt, "~aDaysAbbrevSt");
5333
+ assert.strictEqual(oDateFormat.aDaysWideSt, "~aDaysWideSt");
5334
+ assert.strictEqual(oDateFormat.aDaysNarrowSt, "~aDaysNarrowSt");
5335
+ assert.strictEqual(oDateFormat.aDaysShortSt, "~aDaysShortSt");
5336
+ assert.strictEqual(oDateFormat.aQuartersAbbrev, "~aQuartersAbbrev");
5337
+ assert.strictEqual(oDateFormat.aQuartersWide, "~aQuartersWide");
5338
+ assert.strictEqual(oDateFormat.aQuartersNarrow, "~aQuartersNarrow");
5339
+ assert.strictEqual(oDateFormat.aQuartersAbbrevSt, "~aQuartersAbbrevSt");
5340
+ assert.strictEqual(oDateFormat.aQuartersWideSt, "~aQuartersWideSt");
5341
+ assert.strictEqual(oDateFormat.aQuartersNarrowSt, "~aQuartersNarrowSt");
5342
+ assert.strictEqual(oDateFormat.aErasNarrow, "~aErasNarrow");
5343
+ assert.strictEqual(oDateFormat.aErasAbbrev, "~aErasAbbrev");
5344
+ assert.strictEqual(oDateFormat.aErasWide, "~aErasWide");
5345
+ assert.strictEqual(oDateFormat.aDayPeriodsAbbrev, "~aDayPeriodsAbbrev");
5346
+ assert.strictEqual(oDateFormat.aDayPeriodsNarrow, "~aDayPeriodsNarrow");
5347
+ assert.strictEqual(oDateFormat.aDayPeriodsWide, "~aDayPeriodsWide");
5348
+ assert.strictEqual(oDateFormat.oFlexibleDayPeriodsAbbrev, "~oFlexibleDayPeriodsAbbrev");
5349
+ assert.strictEqual(oDateFormat.oFlexibleDayPeriodsNarrow, "~oFlexibleDayPeriodsNarrow");
5350
+ assert.strictEqual(oDateFormat.oFlexibleDayPeriodsWide, "~oFlexibleDayPeriodsWide");
5351
+ assert.strictEqual(oDateFormat.oFlexibleDayPeriodsAbbrevSt, "~oFlexibleDayPeriodsAbbrevSt");
5352
+ assert.strictEqual(oDateFormat.oFlexibleDayPeriodsNarrowSt, "~oFlexibleDayPeriodsNarrowSt");
5353
+ assert.strictEqual(oDateFormat.oFlexibleDayPeriodsWideSt, "~oFlexibleDayPeriodsWideSt");
5354
+ assert.strictEqual(oDateFormat.aFormatArray, "~aFormatArray");
5355
+ assert.strictEqual(oDateFormat.sAllowedCharacters, "~sAllowedCharacters");
5356
+ });
5357
+
5358
+ //*****************************************************************************************************************
5359
+ QUnit.test("DateFormat#findEntry", function (assert) {
5360
+ const oParseHelperMock = this.mock(DateFormat._oParseHelper);
5361
+ oParseHelperMock.expects("startsWithIgnoreCase").never();
5362
+
5363
+ // code under test
5364
+ assert.deepEqual(DateFormat._oParseHelper.findEntry("foo", [], "~sLocale"), {index: -1, length: 0});
5365
+
5366
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "f", "~sLocale").returns(true);
5367
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "foo", "~sLocale").returns(true);
5368
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "FooBar", "~sLocale").returns(false);
5369
+
5370
+ // code under test
5371
+ assert.deepEqual(
5372
+ DateFormat._oParseHelper.findEntry("~value", ["f", "foo", "fo", "FooBar", "baz"], "~sLocale"),
5373
+ {index: 1, length: 3});
5374
+
5375
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "a", "~sLocale").returns(false);
5376
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "f", "~sLocale").returns(true);
5377
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "alt1", "~sLocale").returns(false);
5378
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "alt2", "~sLocale").returns(true);
5379
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "alt99", "~sLocale").returns(true);
5380
+ oParseHelperMock.expects("startsWithIgnoreCase").withExactArgs("~value", "FooBar", "~sLocale").returns(false);
5381
+
5382
+ // code under test
5383
+ assert.deepEqual(
5384
+ DateFormat._oParseHelper.findEntry("~value", ["a", "f", "x", ["alt1", "alt2", "alt3", "alt99"], "FooBar"],
5385
+ "~sLocale"),
5386
+ {index: 3, length: 5});
5387
+ });
5388
+
5389
+ //*****************************************************************************************************************
5390
+ QUnit.test("oSymbols.M#format: abbreviations contains array", function (assert) {
5391
+ const oField = {digits: 3};
5392
+ const oFormat = {aMonthsAbbrev: ["foo", "bar", ["baz", "qux"]]};
5393
+ // code under test
5394
+ assert.strictEqual(
5395
+ DateFormat.prototype.oSymbols.M.format(oField, new Date(Date.UTC(2023, 1, 1)), undefined, oFormat),
5396
+ "bar");
5397
+
5398
+ // code under test
5399
+ assert.strictEqual(
5400
+ DateFormat.prototype.oSymbols.M.format(oField, new Date(Date.UTC(2023, 2, 1)), undefined, oFormat),
5401
+ "baz");
5402
+ });
5403
+
5404
+ //*****************************************************************************************************************
5405
+ QUnit.test("oSymbols.L#format: abbreviations contains array", function (assert) {
5406
+ const oField = {digits: 3};
5407
+ const oFormat = {aMonthsAbbrevSt: ["foo", "bar", ["baz", "qux"]]};
5408
+ // code under test
5409
+ assert.strictEqual(
5410
+ DateFormat.prototype.oSymbols.L.format(oField, new Date(Date.UTC(2023, 1, 1)), undefined, oFormat),
5411
+ "bar");
5412
+
5413
+ // code under test
5414
+ assert.strictEqual(
5415
+ DateFormat.prototype.oSymbols.L.format(oField, new Date(Date.UTC(2023, 2, 1)), undefined, oFormat),
5416
+ "baz");
5417
+ });
5228
5418
  });
@@ -110,7 +110,7 @@ sap.ui.define([
110
110
  "Cannot format date interval: " + oDate1 + " is expected as an Array but given the wrong format");
111
111
  assert.strictEqual(oDateInterval.formatValue([oDate1], "string"), "", "format type with invalid parameter");
112
112
  // logged by DataType.getType
113
- this.oLogMock.expects("error").withExactArgs("data type 'untype' could not be found.");
113
+ this.oLogMock.expects("error").withExactArgs("[FUTURE FATAL] data type 'untype' could not be found.");
114
114
  checkFormatException(assert, oDateInterval, [oDate1, oDate2], "untype",
115
115
  "Don't know how to format Date to untype");
116
116
 
@@ -142,7 +142,7 @@ sap.ui.define([
142
142
  [oDate1, oDate2], "Interval string can be parsed into an array of dates");
143
143
  checkParseException(assert, oDateInterval, "Nov 6", "string", "DateInterval.Invalid");
144
144
  // logged by DataType.getType
145
- this.oLogMock.expects("error").withExactArgs("data type 'untype' could not be found.");
145
+ this.oLogMock.expects("error").withExactArgs("[FUTURE FATAL] data type 'untype' could not be found.");
146
146
  checkParseException(assert, oDateInterval, "Nov 6 - Dec 6, 2003", "untype",
147
147
  "Don't know how to parse a date interval from untype");
148
148
 
@@ -0,0 +1,161 @@
1
+ /* global QUnit, sinon */
2
+ sap.ui.define(["sap/ui/base/ManagedObjectRegistry", "sap/ui/base/ManagedObject"],
3
+ function (ManagedObjectRegistry, ManagedObject) {
4
+ "use strict";
5
+
6
+ function createInstance(aInstanceId, FNClass) {
7
+ var aInstance = [];
8
+ var sTimeStamp = Date.now().toString(); // Ensure that ids are unique
9
+ aInstanceId.forEach(function (sId) {
10
+ aInstance.push(new FNClass(sId + sTimeStamp));
11
+ });
12
+ return aInstance;
13
+ }
14
+
15
+ function destroyInstance(aInstance) {
16
+ aInstance.forEach(function (oInstance) {
17
+ oInstance.destroy();
18
+ });
19
+ }
20
+
21
+ QUnit.module("ManagedObjectRegistry (Happy Path)");
22
+
23
+ QUnit.test("Should mixin register/deregister", function (assert) {
24
+ var Foo = ManagedObject.extend("Foo", {
25
+ constructor: function () {
26
+ ManagedObject.apply(this, arguments);
27
+ }
28
+ });
29
+
30
+ const registry = ManagedObjectRegistry.create();
31
+ registry.init(Foo);
32
+
33
+ assert.ok(Foo.prototype.register, "Has register prototype function");
34
+ assert.ok(Foo.prototype.deregister, "Has deregister prototype function");
35
+ });
36
+
37
+ QUnit.test("Construction and destruction", function (assert) {
38
+ var aInstanceId = ["A", "B", "C"];
39
+ var Foo = ManagedObject.extend("Foo", {
40
+ constructor: function () {
41
+ ManagedObject.apply(this, arguments);
42
+ }
43
+ });
44
+
45
+ const registry = ManagedObjectRegistry.create();
46
+ registry.init(Foo);
47
+
48
+ var aInstance = createInstance(aInstanceId, Foo);
49
+ assert.equal(registry.size, 3, "3 instances added");
50
+ destroyInstance(aInstance);
51
+ assert.equal(registry.size, 0, "3 instances removed");
52
+ });
53
+
54
+ QUnit.test("Should retrieve added instances as copy", function (assert) {
55
+ var Foo = ManagedObject.extend("Foo", {
56
+ constructor: function () {
57
+ ManagedObject.apply(this, arguments);
58
+ }
59
+ });
60
+
61
+ const registry = ManagedObjectRegistry.create();
62
+ registry.init(Foo);
63
+
64
+ var oFoo = new Foo("A");
65
+
66
+ var mElementsInRegistry = registry.all();
67
+ assert.equal(Object.keys(mElementsInRegistry).length, 1, "Contains 1 instance in map");
68
+ assert.equal(Object.getPrototypeOf(mElementsInRegistry), null, "Retrieved object contains no prototype functions");
69
+
70
+ oFoo.destroy();
71
+ });
72
+
73
+ QUnit.test("Should retrieve instance by id", function (assert) {
74
+ var Foo = ManagedObject.extend("Foo", {
75
+ constructor: function () {
76
+ ManagedObject.apply(this, arguments);
77
+ }
78
+ });
79
+
80
+ const registry = ManagedObjectRegistry.create();
81
+ registry.init(Foo);
82
+
83
+ var oFoo1 = new Foo("A");
84
+ var oFoo2 = new Foo("B");
85
+
86
+ assert.ok(registry.get("B"), "Retrieves instance with id B");
87
+ destroyInstance([oFoo1, oFoo2]);
88
+ });
89
+
90
+ QUnit.test("Should execute callback for all instances", function (assert) {
91
+ var Foo = ManagedObject.extend("Foo", {
92
+ constructor: function () {
93
+ ManagedObject.apply(this, arguments);
94
+ }
95
+ });
96
+
97
+ const registry = ManagedObjectRegistry.create();
98
+ registry.init(Foo);
99
+
100
+ var aCallbackCallee = [];
101
+ var oFoo1 = new Foo("A");
102
+ var oFoo2 = new Foo("B");
103
+ var oFoo3 = new Foo("C");
104
+
105
+ var fnCallback = function(oInstance, sId) {
106
+ aCallbackCallee.push(oInstance);
107
+ };
108
+ var fnCallbackSpy = sinon.spy(fnCallback);
109
+
110
+ registry.forEach(fnCallbackSpy);
111
+ assert.equal(fnCallbackSpy.callCount, 3, "Executed callback 3 times");
112
+ assert.ok(aCallbackCallee.indexOf(oFoo1) !== -1, "Executed callback for oFoo1");
113
+ assert.ok(aCallbackCallee.indexOf(oFoo2) !== -1, "Executed callback for oFoo2");
114
+ assert.ok(aCallbackCallee.indexOf(oFoo3) !== -1, "Executed callback for oFoo3");
115
+
116
+ destroyInstance([oFoo1, oFoo2, oFoo3]);
117
+ });
118
+
119
+ QUnit.module("ManagedObjectRegistry (Sad Path)");
120
+
121
+ QUnit.test("Should ensure that static registry property is immutable", function (assert) {
122
+ var Foo = ManagedObject.extend("Foo", {
123
+ constructor: function () {
124
+ ManagedObject.apply(this, arguments);
125
+ }
126
+ });
127
+
128
+ const registry = ManagedObjectRegistry.create();
129
+ registry.init(Foo);
130
+
131
+ assert.throws(function () {
132
+ registry.mutator = null;
133
+ }, "Throw on mutation");
134
+ });
135
+
136
+
137
+ QUnit.test("Should ensure that extended function is subclass of ManagedObject", function (assert) {
138
+ assert.throws(function () {
139
+ const registry = ManagedObjectRegistry.create();
140
+ registry.init(function Foo() { });
141
+ }, new TypeError("ManagedObjectRegistry mixin can only be applied to subclasses of sap.ui.base.ManagedObject"),
142
+ "throws because function is not subclass of ManagedObject");
143
+ });
144
+
145
+ QUnit.test("Should throw when object with same id is added", function (assert) {
146
+ var Foo = ManagedObject.extend("Foo", {
147
+ constructor: function () {
148
+ ManagedObject.apply(this, arguments);
149
+ }
150
+ });
151
+
152
+ const registry = ManagedObjectRegistry.create();
153
+ registry.init(Foo);
154
+
155
+ assert.throws(function () {
156
+ new Foo("A");
157
+ new Foo("A");
158
+ }, new Error("Error: adding object \"object\" with duplicate id 'A'"), "Same ids are not allowed");
159
+ });
160
+
161
+ });
@@ -0,0 +1,150 @@
1
+ /* global QUnit, sinon */
2
+ sap.ui.define(["sap/ui/base/ManagedObjectRegistry", "sap/ui/base/ManagedObject"],
3
+ function (ManagedObjectRegistry, ManagedObject) {
4
+ "use strict";
5
+
6
+ function createInstance(aInstanceId, FNClass) {
7
+ var aInstance = [];
8
+ var sTimeStamp = Date.now().toString(); // Ensure that ids are unique
9
+ aInstanceId.forEach(function (sId) {
10
+ aInstance.push(new FNClass(sId + sTimeStamp));
11
+ });
12
+ return aInstance;
13
+ }
14
+
15
+ function destroyInstance(aInstance) {
16
+ aInstance.forEach(function (oInstance) {
17
+ oInstance.destroy();
18
+ });
19
+ }
20
+
21
+ QUnit.module("ManagedObjectRegistry (Happy Path)");
22
+
23
+ QUnit.test("Should mixin object", function (assert) {
24
+ var Foo = ManagedObject.extend("Foo", {
25
+ constructor: function () {
26
+ ManagedObject.apply(this, arguments);
27
+ }
28
+ });
29
+
30
+ ManagedObjectRegistry.apply(Foo);
31
+
32
+ assert.ok(Foo.prototype.register, "Has register prototype function");
33
+ assert.ok(Foo.prototype.deregister, "Has deregister prototype function");
34
+ assert.ok(Foo.hasOwnProperty("registry"), "Extended object has static property \"registry\"");
35
+ });
36
+
37
+ QUnit.test("Construction and destruction", function (assert) {
38
+ var aInstanceId = ["A", "B", "C"];
39
+ var Foo = ManagedObject.extend("Foo", {
40
+ constructor: function () {
41
+ ManagedObject.apply(this, arguments);
42
+ }
43
+ });
44
+ ManagedObjectRegistry.apply(Foo);
45
+
46
+ var aInstance = createInstance(aInstanceId, Foo);
47
+ assert.equal(Foo.registry.size, 3, "3 instances added");
48
+ destroyInstance(aInstance);
49
+ assert.equal(Foo.registry.size, 0, "3 instances removed");
50
+ });
51
+
52
+ QUnit.test("Should retrieve added instances as copy", function (assert) {
53
+ var Foo = ManagedObject.extend("Foo", {
54
+ constructor: function () {
55
+ ManagedObject.apply(this, arguments);
56
+ }
57
+ });
58
+
59
+ ManagedObjectRegistry.apply(Foo);
60
+
61
+ var oFoo = new Foo("A");
62
+
63
+ var mElementsInRegistry = Foo.registry.all();
64
+ assert.equal(Object.keys(mElementsInRegistry).length, 1, "Contains 1 instance in map");
65
+ assert.equal(Object.getPrototypeOf(mElementsInRegistry), null, "Retrieved object contains no prototype functions");
66
+
67
+ oFoo.destroy();
68
+ });
69
+
70
+ QUnit.test("Should retrieve instance by id", function (assert) {
71
+ var Foo = ManagedObject.extend("Foo", {
72
+ constructor: function () {
73
+ ManagedObject.apply(this, arguments);
74
+ }
75
+ });
76
+
77
+ ManagedObjectRegistry.apply(Foo);
78
+
79
+ var oFoo1 = new Foo("A");
80
+ var oFoo2 = new Foo("B");
81
+
82
+ assert.ok(Foo.registry.get("B"), "Retrieves instance with id B");
83
+ destroyInstance([oFoo1, oFoo2]);
84
+ });
85
+
86
+ QUnit.test("Should execute callback for all instances", function (assert) {
87
+ var Foo = ManagedObject.extend("Foo", {
88
+ constructor: function () {
89
+ ManagedObject.apply(this, arguments);
90
+ }
91
+ });
92
+
93
+ ManagedObjectRegistry.apply(Foo);
94
+ var aCallbackCallee = [];
95
+ var oFoo1 = new Foo("A");
96
+ var oFoo2 = new Foo("B");
97
+ var oFoo3 = new Foo("C");
98
+
99
+ var fnCallback = function(oInstance, sId) {
100
+ aCallbackCallee.push(oInstance);
101
+ };
102
+ var fnCallbackSpy = sinon.spy(fnCallback);
103
+
104
+ Foo.registry.forEach(fnCallbackSpy);
105
+ assert.equal(fnCallbackSpy.callCount, 3, "Executed callback 3 times");
106
+ assert.ok(aCallbackCallee.indexOf(oFoo1) !== -1, "Executed callback for oFoo1");
107
+ assert.ok(aCallbackCallee.indexOf(oFoo2) !== -1, "Executed callback for oFoo2");
108
+ assert.ok(aCallbackCallee.indexOf(oFoo3) !== -1, "Executed callback for oFoo3");
109
+
110
+ destroyInstance([oFoo1, oFoo2, oFoo3]);
111
+ });
112
+
113
+ QUnit.module("ManagedObjectRegistry (Sad Path)");
114
+
115
+ QUnit.test("Should ensure that static registry property is immutable", function (assert) {
116
+ var Foo = ManagedObject.extend("Foo", {
117
+ constructor: function () {
118
+ ManagedObject.apply(this, arguments);
119
+ }
120
+ });
121
+ ManagedObjectRegistry.apply(Foo);
122
+
123
+ assert.throws(function () {
124
+ Foo.registry.mutator = null;
125
+ }, "Throw on mutation");
126
+ });
127
+
128
+
129
+ QUnit.test("Should ensure that extended function is subclass of ManagedObject", function (assert) {
130
+ assert.throws(function () {
131
+ ManagedObjectRegistry.apply(function Foo() { });
132
+ }, new TypeError("ManagedObjectRegistry mixin can only be applied to subclasses of sap.ui.base.ManagedObject"),
133
+ "throws because function is not subclass of ManagedObject");
134
+ });
135
+
136
+ QUnit.test("Should throw when object with same id is added", function (assert) {
137
+ var Foo = ManagedObject.extend("Foo", {
138
+ constructor: function () {
139
+ ManagedObject.apply(this, arguments);
140
+ }
141
+ });
142
+ ManagedObjectRegistry.apply(Foo);
143
+
144
+ assert.throws(function () {
145
+ new Foo("A");
146
+ new Foo("A");
147
+ }, new Error("Error: adding object \"object\" with duplicate id 'A'"), "Same ids are not allowed");
148
+ });
149
+
150
+ });
@@ -0,0 +1,84 @@
1
+ sap.ui.define(function() {
2
+
3
+ "use strict";
4
+ return {
5
+ name: "TestSuite for BaseObject, ManagedObject and their Helpers",
6
+ defaults: {
7
+ loader:{
8
+ paths:{
9
+ "fixture": "test-resources/sap/ui/core/qunit/ui5classes/fixture/"
10
+ }
11
+ },
12
+ qunit: {
13
+ version: 2
14
+ },
15
+ sinon: {
16
+ version: 4
17
+ },
18
+ module: "./{name}.qunit"
19
+ },
20
+ tests: {
21
+ AlternativeTypes: {
22
+ title: "QUnit Page for AlternativeTypes",
23
+ loader: {
24
+ paths: {
25
+ "sap/ui/testlib": "test-resources/sap/ui/core/qunit/testdata/uilib/"
26
+ }
27
+ },
28
+ ui5: {
29
+ libs: "sap.ui.testlib"
30
+ }
31
+ },
32
+ DataType: {
33
+ coverage : {
34
+ only : "sap/ui/base/DataType"
35
+ },
36
+ title: "QUnit Page for sap/ui/base/DataType"
37
+ },
38
+ ManagedObject: {
39
+ title: "sap.ui.base.ManagedObject"
40
+ },
41
+ ManagedObject_BindingParser: {
42
+ title: "sap.ui.base.ManagedObject (no core boot)",
43
+ bootCore: false
44
+ },
45
+ ManagedObject_forwardAggregation: {
46
+ title: "sap.ui.base.ManagedObject (forward Aggregation)"
47
+ },
48
+ ManagedObject_isPropertyInitial: {
49
+ title: "sap.ui.base.ManagedObject (is Property Initial)"
50
+ },
51
+ ManagedObjectObserver: {
52
+ title: "sap.ui.base.ManagedObjectObserver"
53
+ },
54
+ ManagedObjectRegistry: {
55
+ title: "sap.ui.base.ManagedObjectRegistry"
56
+ },
57
+ ManagedObjectRegistry_legacyAPIs: {
58
+ title: "sap.ui.base.ManagedObjectRegistry_legacyAPIs"
59
+ },
60
+ ManagedObjectMetadata: {
61
+ title: "sap.ui.base.ManagedObjectMetadata",
62
+ sinon: {
63
+ version: 1, // bridge does not support nested modules
64
+ qunitBridge: true
65
+ }
66
+ },
67
+ /**
68
+ * @deprecated As of version 1.111 Mostly testing deprecated APIs
69
+ */
70
+ Metadata: {
71
+ title: "sap.ui.base.Metadata"
72
+ },
73
+ Object: {
74
+ title: "sap.ui.base.Object"
75
+ },
76
+ /**
77
+ * @deprecated As of version 1.111
78
+ */
79
+ Object_legacyAPIs: {
80
+ title: "sap.ui.base.Object (legacy APIs)"
81
+ }
82
+ }
83
+ };
84
+ });
@@ -6,11 +6,12 @@ sap.ui.define([
6
6
  "sap/m/Image",
7
7
  "sap/m/Label",
8
8
  "sap/ui/core/UIArea",
9
+ "sap/ui/core/UIAreaRegistry",
9
10
  "sap/ui/core/mvc/XMLView",
10
11
  "sap/ui/core/util/serializer/ViewSerializer",
11
12
  "sap/ui/qunit/utils/createAndAppendDiv"
12
13
  ],
13
- function (Log, Button, Image, Label, UIArea, XMLView, ViewSerializer, createAndAppendDiv) {
14
+ function (Log, Button, Image, Label, UIArea, UIAreaRegistry, XMLView, ViewSerializer, createAndAppendDiv) {
14
15
  "use strict";
15
16
 
16
17
  createAndAppendDiv(["xmlViewArea", "xmlViewWithoutControllerArea"]);
@@ -68,7 +69,7 @@ sap.ui.define([
68
69
  });
69
70
 
70
71
  QUnit.test("Serialize, Re-Instantiate and Check an XML View", function (assert) {
71
- var oViewSerializer = new ViewSerializer(UIArea.registry.get("xmlViewArea"), null, "sap.m");
72
+ var oViewSerializer = new ViewSerializer(UIAreaRegistry.get("xmlViewArea"), null, "sap.m");
72
73
 
73
74
  var mXMLViews = oViewSerializer.serializeToXML();
74
75
  var sXMLResult = mXMLViews["serializer.view.TestXml"];
@@ -84,7 +85,7 @@ sap.ui.define([
84
85
  });
85
86
 
86
87
  QUnit.test("Serialize, Check if a view that has no controller is still serializable", function (assert) {
87
- var oViewSerializer = new ViewSerializer(UIArea.registry.get("xmlViewWithoutControllerArea"), null, "sap.m");
88
+ var oViewSerializer = new ViewSerializer(UIAreaRegistry.get("xmlViewWithoutControllerArea"), null, "sap.m");
88
89
 
89
90
  var mXMLViews = oViewSerializer.serializeToXML();
90
91
  var sResult = mXMLViews["serializer.view.TestViewWithoutController"];