@openui5/sap.ui.core 1.119.1 → 1.120.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (968) hide show
  1. package/THIRDPARTY.txt +6 -6
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +40 -111
  4. package/src/jquery.sap.properties.js +7 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +5 -3
  7. package/src/jquery.sap.storage.js +6 -3
  8. package/src/sap/base/Event.js +32 -78
  9. package/src/sap/base/Eventing.js +114 -271
  10. package/src/sap/base/Log.js +21 -1
  11. package/src/sap/base/config.js +14 -9
  12. package/src/sap/base/i18n/Formatting.js +400 -256
  13. package/src/sap/base/i18n/LanguageTag.js +64 -66
  14. package/src/sap/base/i18n/Localization.js +125 -87
  15. package/src/sap/base/i18n/ResourceBundle.js +1 -1
  16. package/src/sap/base/i18n/date/CalendarType.js +2 -2
  17. package/src/sap/base/i18n/date/CalendarWeekNumbering.js +2 -2
  18. package/src/sap/base/i18n/date/TimezoneUtils.js +43 -6
  19. package/src/sap/base/util/LoaderExtensions.js +8 -2
  20. package/src/sap/base/util/mixedFetch.js +1 -0
  21. package/src/sap/base/util/resolveReference.js +31 -13
  22. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  23. package/src/sap/base/util/restricted/_castArray.js +1 -1
  24. package/src/sap/base/util/restricted/_compact.js +1 -1
  25. package/src/sap/base/util/restricted/_curry.js +1 -1
  26. package/src/sap/base/util/restricted/_debounce.js +1 -1
  27. package/src/sap/base/util/restricted/_difference.js +1 -1
  28. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  29. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  30. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  31. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  32. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  33. package/src/sap/base/util/restricted/_flatten.js +1 -1
  34. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  35. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  36. package/src/sap/base/util/restricted/_intersection.js +1 -1
  37. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  38. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  39. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  40. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  41. package/src/sap/base/util/restricted/_isNil.js +1 -1
  42. package/src/sap/base/util/restricted/_max.js +1 -1
  43. package/src/sap/base/util/restricted/_merge.js +1 -1
  44. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  45. package/src/sap/base/util/restricted/_min.js +1 -1
  46. package/src/sap/base/util/restricted/_omit.js +1 -1
  47. package/src/sap/base/util/restricted/_pick.js +1 -1
  48. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  49. package/src/sap/base/util/restricted/_throttle.js +1 -1
  50. package/src/sap/base/util/restricted/_toArray.js +1 -1
  51. package/src/sap/base/util/restricted/_union.js +1 -1
  52. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  53. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  54. package/src/sap/base/util/restricted/_uniq.js +1 -1
  55. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  56. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  57. package/src/sap/base/util/restricted/_without.js +1 -1
  58. package/src/sap/base/util/restricted/_xor.js +1 -1
  59. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  60. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  61. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  62. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  63. package/src/sap/base/util/syncFetch.js +1 -0
  64. package/src/sap/ui/Device.js +3 -3
  65. package/src/sap/ui/Global.js +6 -7
  66. package/src/sap/ui/base/BindingInfo.js +3 -3
  67. package/src/sap/ui/base/BindingParser.js +5 -2
  68. package/src/sap/ui/base/DataType.js +57 -1
  69. package/src/sap/ui/base/DesignTime.js +69 -0
  70. package/src/sap/ui/base/Event.js +2 -2
  71. package/src/sap/ui/base/EventProvider.js +1 -1
  72. package/src/sap/ui/base/ExpressionParser.js +25 -4
  73. package/src/sap/ui/base/Interface.js +1 -1
  74. package/src/sap/ui/base/ManagedObject.js +102 -85
  75. package/src/sap/ui/base/ManagedObjectMetadata.js +53 -31
  76. package/src/sap/ui/base/ManagedObjectObserver.js +1 -0
  77. package/src/sap/ui/base/Metadata.js +3 -3
  78. package/src/sap/ui/base/Object.js +19 -1
  79. package/src/sap/ui/base/ObjectPool.js +1 -1
  80. package/src/sap/ui/core/.library +3 -3
  81. package/src/sap/ui/core/AnimationMode.js +2 -2
  82. package/src/sap/ui/core/AppCacheBuster.js +30 -18
  83. package/src/sap/ui/core/BusyIndicator.js +1 -1
  84. package/src/sap/ui/core/CalendarType.js +6 -0
  85. package/src/sap/ui/core/Component.js +175 -86
  86. package/src/sap/ui/core/ComponentContainer.js +6 -5
  87. package/src/sap/ui/core/ComponentMetadata.js +3 -4
  88. package/src/sap/ui/core/ComponentSupport.js +1 -1
  89. package/src/sap/ui/core/Configuration.js +395 -709
  90. package/src/sap/ui/core/Control.js +1 -1
  91. package/src/sap/ui/core/ControlBehavior.js +37 -28
  92. package/src/sap/ui/core/Core.js +338 -216
  93. package/src/sap/ui/core/CustomData.js +1 -1
  94. package/src/sap/ui/core/DeclarativeSupport.js +3 -1
  95. package/src/sap/ui/core/Element.js +24 -10
  96. package/src/sap/ui/core/ElementMetadata.js +1 -1
  97. package/src/sap/ui/core/EnabledPropagator.js +3 -2
  98. package/src/sap/ui/core/EventBus.js +1 -1
  99. package/src/sap/ui/core/Fragment.js +3 -3
  100. package/src/sap/ui/core/HTML.js +1 -1
  101. package/src/sap/ui/core/History.js +1 -1
  102. package/src/sap/ui/core/Icon.js +1 -1
  103. package/src/sap/ui/core/IndicationColorSupport.js +13 -1
  104. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  105. package/src/sap/ui/core/InvisibleMessage.js +2 -3
  106. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  107. package/src/sap/ui/core/InvisibleText.js +17 -1
  108. package/src/sap/ui/core/Item.js +1 -1
  109. package/src/sap/ui/core/LabelEnablement.js +8 -1
  110. package/src/sap/ui/core/LayoutData.js +1 -1
  111. package/src/sap/ui/core/Lib.js +253 -57
  112. package/src/sap/ui/core/ListItem.js +1 -1
  113. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  114. package/src/sap/ui/core/Locale.js +1 -1
  115. package/src/sap/ui/core/LocaleData.js +118 -32
  116. package/src/sap/ui/core/Manifest.js +4 -2
  117. package/src/sap/ui/core/Message.js +1 -1
  118. package/src/sap/ui/core/Placeholder.js +18 -0
  119. package/src/sap/ui/core/Popup.js +5 -0
  120. package/src/sap/ui/core/RenderManager.js +21 -17
  121. package/src/sap/ui/core/Renderer.js +1 -1
  122. package/src/sap/ui/core/Rendering.js +51 -47
  123. package/src/sap/ui/core/ResizeHandler.js +2 -2
  124. package/src/sap/ui/core/ScrollBar.js +1 -1
  125. package/src/sap/ui/core/SeparatorItem.js +1 -1
  126. package/src/sap/ui/core/Shortcut.js +5 -3
  127. package/src/sap/ui/core/Supportability.js +146 -0
  128. package/src/sap/ui/core/Theming.js +130 -88
  129. package/src/sap/ui/core/Title.js +1 -1
  130. package/src/sap/ui/core/TooltipBase.js +4 -3
  131. package/src/sap/ui/core/UIArea.js +5 -4
  132. package/src/sap/ui/core/UIComponent.js +38 -12
  133. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  134. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  135. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  136. package/src/sap/ui/core/XMLComposite.js +1 -1
  137. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  138. package/src/sap/ui/core/XMLTemplateProcessor.js +3 -3
  139. package/src/sap/ui/core/_IconRegistry.js +13 -6
  140. package/src/sap/ui/core/cldr/ar.json +143 -137
  141. package/src/sap/ui/core/cldr/ar_EG.json +143 -137
  142. package/src/sap/ui/core/cldr/ar_SA.json +143 -137
  143. package/src/sap/ui/core/cldr/bg.json +423 -423
  144. package/src/sap/ui/core/cldr/ca.json +541 -494
  145. package/src/sap/ui/core/cldr/cs.json +475 -364
  146. package/src/sap/ui/core/cldr/cy.json +656 -477
  147. package/src/sap/ui/core/cldr/da.json +334 -275
  148. package/src/sap/ui/core/cldr/de.json +388 -291
  149. package/src/sap/ui/core/cldr/de_AT.json +388 -291
  150. package/src/sap/ui/core/cldr/de_CH.json +394 -297
  151. package/src/sap/ui/core/cldr/el.json +169 -166
  152. package/src/sap/ui/core/cldr/el_CY.json +169 -166
  153. package/src/sap/ui/core/cldr/en.json +558 -521
  154. package/src/sap/ui/core/cldr/en_AU.json +558 -520
  155. package/src/sap/ui/core/cldr/en_GB.json +476 -439
  156. package/src/sap/ui/core/cldr/en_HK.json +520 -482
  157. package/src/sap/ui/core/cldr/en_IE.json +486 -448
  158. package/src/sap/ui/core/cldr/en_IN.json +466 -428
  159. package/src/sap/ui/core/cldr/en_NZ.json +506 -468
  160. package/src/sap/ui/core/cldr/en_PG.json +506 -468
  161. package/src/sap/ui/core/cldr/en_SG.json +506 -468
  162. package/src/sap/ui/core/cldr/en_ZA.json +486 -448
  163. package/src/sap/ui/core/cldr/es.json +473 -468
  164. package/src/sap/ui/core/cldr/es_AR.json +445 -440
  165. package/src/sap/ui/core/cldr/es_BO.json +479 -474
  166. package/src/sap/ui/core/cldr/es_CL.json +469 -464
  167. package/src/sap/ui/core/cldr/es_CO.json +387 -381
  168. package/src/sap/ui/core/cldr/es_MX.json +502 -497
  169. package/src/sap/ui/core/cldr/es_PE.json +455 -450
  170. package/src/sap/ui/core/cldr/es_UY.json +479 -474
  171. package/src/sap/ui/core/cldr/es_VE.json +499 -494
  172. package/src/sap/ui/core/cldr/et.json +378 -320
  173. package/src/sap/ui/core/cldr/fa.json +104 -104
  174. package/src/sap/ui/core/cldr/fi.json +401 -315
  175. package/src/sap/ui/core/cldr/fr.json +391 -385
  176. package/src/sap/ui/core/cldr/fr_BE.json +391 -385
  177. package/src/sap/ui/core/cldr/fr_CA.json +499 -493
  178. package/src/sap/ui/core/cldr/fr_CH.json +334 -328
  179. package/src/sap/ui/core/cldr/fr_LU.json +391 -385
  180. package/src/sap/ui/core/cldr/he.json +291 -159
  181. package/src/sap/ui/core/cldr/hi.json +157 -128
  182. package/src/sap/ui/core/cldr/hr.json +514 -461
  183. package/src/sap/ui/core/cldr/hu.json +287 -257
  184. package/src/sap/ui/core/cldr/id.json +463 -416
  185. package/src/sap/ui/core/cldr/it.json +468 -413
  186. package/src/sap/ui/core/cldr/it_CH.json +468 -413
  187. package/src/sap/ui/core/cldr/ja.json +98 -61
  188. package/src/sap/ui/core/cldr/kk.json +631 -571
  189. package/src/sap/ui/core/cldr/ko.json +79 -71
  190. package/src/sap/ui/core/cldr/lt.json +361 -270
  191. package/src/sap/ui/core/cldr/lv.json +234 -242
  192. package/src/sap/ui/core/cldr/ms.json +463 -408
  193. package/src/sap/ui/core/cldr/nb.json +176 -143
  194. package/src/sap/ui/core/cldr/nl.json +463 -393
  195. package/src/sap/ui/core/cldr/nl_BE.json +463 -393
  196. package/src/sap/ui/core/cldr/pl.json +633 -344
  197. package/src/sap/ui/core/cldr/pt.json +447 -336
  198. package/src/sap/ui/core/cldr/pt_PT.json +488 -449
  199. package/src/sap/ui/core/cldr/ro.json +477 -383
  200. package/src/sap/ui/core/cldr/ru.json +367 -332
  201. package/src/sap/ui/core/cldr/ru_UA.json +361 -326
  202. package/src/sap/ui/core/cldr/sk.json +502 -537
  203. package/src/sap/ui/core/cldr/sl.json +168 -161
  204. package/src/sap/ui/core/cldr/sr.json +276 -225
  205. package/src/sap/ui/core/cldr/sr_Latn.json +972 -907
  206. package/src/sap/ui/core/cldr/sv.json +420 -346
  207. package/src/sap/ui/core/cldr/th.json +117 -94
  208. package/src/sap/ui/core/cldr/tr.json +413 -359
  209. package/src/sap/ui/core/cldr/uk.json +395 -368
  210. package/src/sap/ui/core/cldr/vi.json +392 -379
  211. package/src/sap/ui/core/cldr/zh_CN.json +91 -33
  212. package/src/sap/ui/core/cldr/zh_HK.json +90 -32
  213. package/src/sap/ui/core/cldr/zh_SG.json +90 -32
  214. package/src/sap/ui/core/cldr/zh_TW.json +75 -51
  215. package/src/sap/ui/core/date/CalendarWeekNumbering.js +6 -0
  216. package/src/sap/ui/core/date/Islamic.js +4 -4
  217. package/src/sap/ui/core/date/UI5Date.js +1 -1
  218. package/src/sap/ui/core/date/_Calendars.js +5 -2
  219. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  220. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  221. package/src/sap/ui/core/dnd/DragAndDrop.js +3 -2
  222. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  223. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  224. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  225. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  226. package/src/sap/ui/core/format/DateFormat.js +33 -21
  227. package/src/sap/ui/core/format/NumberFormat.js +3 -2
  228. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  229. package/src/sap/ui/core/getCompatibilityVersion.js +2 -2
  230. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  231. package/src/sap/ui/core/library.js +128 -8
  232. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  233. package/src/sap/ui/core/message/Message.js +2 -2
  234. package/src/sap/ui/core/message/MessageManager.js +1 -1
  235. package/src/sap/ui/core/message/MessageParser.js +1 -1
  236. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  237. package/src/sap/ui/core/message/MessageType.js +2 -1
  238. package/src/sap/ui/core/messagebundle.properties +24 -0
  239. package/src/sap/ui/core/messagebundle_ar.properties +15 -3
  240. package/src/sap/ui/core/messagebundle_bg.properties +14 -2
  241. package/src/sap/ui/core/messagebundle_ca.properties +13 -1
  242. package/src/sap/ui/core/messagebundle_cs.properties +15 -3
  243. package/src/sap/ui/core/messagebundle_cy.properties +16 -4
  244. package/src/sap/ui/core/messagebundle_da.properties +15 -3
  245. package/src/sap/ui/core/messagebundle_de.properties +15 -3
  246. package/src/sap/ui/core/messagebundle_el.properties +16 -4
  247. package/src/sap/ui/core/messagebundle_en.properties +12 -0
  248. package/src/sap/ui/core/messagebundle_en_GB.properties +16 -4
  249. package/src/sap/ui/core/messagebundle_es.properties +15 -3
  250. package/src/sap/ui/core/messagebundle_es_MX.properties +15 -3
  251. package/src/sap/ui/core/messagebundle_et.properties +15 -3
  252. package/src/sap/ui/core/messagebundle_fi.properties +15 -3
  253. package/src/sap/ui/core/messagebundle_fr.properties +15 -3
  254. package/src/sap/ui/core/messagebundle_fr_CA.properties +14 -2
  255. package/src/sap/ui/core/messagebundle_hi.properties +16 -4
  256. package/src/sap/ui/core/messagebundle_hr.properties +14 -2
  257. package/src/sap/ui/core/messagebundle_hu.properties +16 -4
  258. package/src/sap/ui/core/messagebundle_id.properties +15 -3
  259. package/src/sap/ui/core/messagebundle_it.properties +17 -5
  260. package/src/sap/ui/core/messagebundle_iw.properties +15 -3
  261. package/src/sap/ui/core/messagebundle_ja.properties +25 -13
  262. package/src/sap/ui/core/messagebundle_kk.properties +15 -3
  263. package/src/sap/ui/core/messagebundle_ko.properties +14 -2
  264. package/src/sap/ui/core/messagebundle_lt.properties +15 -3
  265. package/src/sap/ui/core/messagebundle_lv.properties +15 -3
  266. package/src/sap/ui/core/messagebundle_mk.properties +352 -0
  267. package/src/sap/ui/core/messagebundle_ms.properties +15 -3
  268. package/src/sap/ui/core/messagebundle_nl.properties +15 -3
  269. package/src/sap/ui/core/messagebundle_no.properties +14 -2
  270. package/src/sap/ui/core/messagebundle_pl.properties +15 -3
  271. package/src/sap/ui/core/messagebundle_pt.properties +15 -3
  272. package/src/sap/ui/core/messagebundle_pt_PT.properties +14 -2
  273. package/src/sap/ui/core/messagebundle_ro.properties +15 -3
  274. package/src/sap/ui/core/messagebundle_ru.properties +15 -3
  275. package/src/sap/ui/core/messagebundle_sh.properties +43 -31
  276. package/src/sap/ui/core/messagebundle_sk.properties +16 -4
  277. package/src/sap/ui/core/messagebundle_sl.properties +15 -3
  278. package/src/sap/ui/core/messagebundle_sv.properties +22 -10
  279. package/src/sap/ui/core/messagebundle_th.properties +15 -3
  280. package/src/sap/ui/core/messagebundle_tr.properties +15 -3
  281. package/src/sap/ui/core/messagebundle_uk.properties +18 -6
  282. package/src/sap/ui/core/messagebundle_vi.properties +18 -6
  283. package/src/sap/ui/core/messagebundle_zh_CN.properties +15 -3
  284. package/src/sap/ui/core/messagebundle_zh_TW.properties +15 -3
  285. package/src/sap/ui/core/mvc/Controller.js +22 -16
  286. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +1 -1
  287. package/src/sap/ui/core/mvc/EventHandlerResolver.js +5 -15
  288. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  289. package/src/sap/ui/core/mvc/JSONView.js +4 -1
  290. package/src/sap/ui/core/mvc/JSONViewRenderer.js +1 -0
  291. package/src/sap/ui/core/mvc/JSView.js +1 -1
  292. package/src/sap/ui/core/mvc/OverrideExecution.js +4 -4
  293. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  294. package/src/sap/ui/core/mvc/View.js +25 -15
  295. package/src/sap/ui/core/mvc/ViewType.js +2 -0
  296. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  297. package/src/sap/ui/core/plugin/DeclarativeSupport.js +2 -1
  298. package/src/sap/ui/core/plugin/LessSupport.js +3 -1
  299. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  300. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  301. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  302. package/src/sap/ui/core/routing/Router.js +2 -4
  303. package/src/sap/ui/core/routing/Target.js +1 -3
  304. package/src/sap/ui/core/routing/Targets.js +2 -3
  305. package/src/sap/ui/core/routing/Views.js +2 -3
  306. package/src/sap/ui/core/routing/async/Target.js +1 -1
  307. package/src/sap/ui/core/rules/Config.support.js +11 -17
  308. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -1
  309. package/src/sap/ui/core/search/SearchProvider.js +2 -1
  310. package/src/sap/ui/core/service/Service.js +1 -1
  311. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  312. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  313. package/src/sap/ui/core/support/Hotkeys.js +5 -3
  314. package/src/sap/ui/core/support/Plugin.js +1 -1
  315. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +1 -3
  316. package/src/sap/ui/core/support/Support.js +3 -5
  317. package/src/sap/ui/core/support/ToolsAPI.js +15 -11
  318. package/src/sap/ui/core/support/plugins/ControlTree.js +2 -2
  319. package/src/sap/ui/core/support/plugins/Interaction.js +4 -4
  320. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  321. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  322. package/src/sap/ui/core/support/plugins/Selector.js +7 -5
  323. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  324. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  325. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  326. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +3 -1
  327. package/src/sap/ui/core/syncStyleClass.js +2 -2
  328. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  329. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  330. package/src/sap/ui/core/themes/base/global.less +9 -9
  331. package/src/sap/ui/core/theming/Parameters.js +18 -19
  332. package/src/sap/ui/core/theming/ThemeManager.js +23 -4
  333. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  334. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  335. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  336. package/src/sap/ui/core/tmpl/Template.js +1 -1
  337. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  338. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  339. package/src/sap/ui/core/util/Export.js +1 -1
  340. package/src/sap/ui/core/util/ExportCell.js +1 -1
  341. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  342. package/src/sap/ui/core/util/ExportRow.js +1 -1
  343. package/src/sap/ui/core/util/ExportType.js +1 -1
  344. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  345. package/src/sap/ui/core/util/File.js +1 -1
  346. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  347. package/src/sap/ui/core/util/MockServer.js +1 -1
  348. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  349. package/src/sap/ui/core/util/XMLPreprocessor.js +3 -0
  350. package/src/sap/ui/core/util/_LocalizationHelper.js +122 -0
  351. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  352. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  353. package/src/sap/ui/core/util/serializer/ViewSerializer.js +4 -4
  354. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  355. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  356. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  357. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  358. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  359. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  360. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  361. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  362. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  363. package/src/sap/ui/debug/ControlTree.js +1 -1
  364. package/src/sap/ui/debug/DebugEnv.js +29 -7
  365. package/src/sap/ui/debug/PropertyList.js +1 -1
  366. package/src/sap/ui/model/ClientListBinding.js +9 -4
  367. package/src/sap/ui/model/ClientModel.js +1 -1
  368. package/src/sap/ui/model/ClientTreeBinding.js +9 -4
  369. package/src/sap/ui/model/CompositeDataState.js +1 -1
  370. package/src/sap/ui/model/CompositeType.js +1 -1
  371. package/src/sap/ui/model/DataState.js +2 -2
  372. package/src/sap/ui/model/Filter.js +39 -1
  373. package/src/sap/ui/model/FilterProcessor.js +15 -5
  374. package/src/sap/ui/model/ListBinding.js +5 -0
  375. package/src/sap/ui/model/ManagedObjectBindingSupport.js +4 -4
  376. package/src/sap/ui/model/MetaModel.js +1 -1
  377. package/src/sap/ui/model/Model.js +14 -8
  378. package/src/sap/ui/model/SelectionModel.js +1 -1
  379. package/src/sap/ui/model/SimpleType.js +1 -1
  380. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  381. package/src/sap/ui/model/TreeBinding.js +3 -0
  382. package/src/sap/ui/model/Type.js +1 -1
  383. package/src/sap/ui/model/analytics/AnalyticalBinding.js +3 -1
  384. package/src/sap/ui/model/json/JSONListBinding.js +3 -1
  385. package/src/sap/ui/model/json/JSONModel.js +1 -1
  386. package/src/sap/ui/model/json/JSONTreeBinding.js +3 -2
  387. package/src/sap/ui/model/message/MessageListBinding.js +3 -0
  388. package/src/sap/ui/model/message/MessageModel.js +1 -1
  389. package/src/sap/ui/model/odata/AnnotationHelper.js +9 -3
  390. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  391. package/src/sap/ui/model/odata/ODataListBinding.js +8 -2
  392. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  393. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  394. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  395. package/src/sap/ui/model/odata/ODataModel.js +9 -5
  396. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -2
  397. package/src/sap/ui/model/odata/ODataTreeBinding.js +2 -0
  398. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +9 -14
  399. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  400. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  401. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  402. package/src/sap/ui/model/odata/type/Date.js +1 -1
  403. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  404. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  405. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  406. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  407. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  408. package/src/sap/ui/model/odata/type/Double.js +1 -1
  409. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  410. package/src/sap/ui/model/odata/type/Int.js +1 -1
  411. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  412. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  413. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  414. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  415. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  416. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  417. package/src/sap/ui/model/odata/type/Single.js +1 -1
  418. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  419. package/src/sap/ui/model/odata/type/String.js +1 -1
  420. package/src/sap/ui/model/odata/type/Time.js +1 -1
  421. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  422. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  423. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  424. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  425. package/src/sap/ui/model/odata/v2/ODataListBinding.js +40 -15
  426. package/src/sap/ui/model/odata/v2/ODataModel.js +26 -62
  427. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +38 -4
  428. package/src/sap/ui/model/odata/v4/Context.js +81 -7
  429. package/src/sap/ui/model/odata/v4/ODataBinding.js +3 -0
  430. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  431. package/src/sap/ui/model/odata/v4/ODataListBinding.js +217 -75
  432. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +2 -2
  433. package/src/sap/ui/model/odata/v4/ODataModel.js +6 -6
  434. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  435. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +406 -199
  436. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +12 -7
  437. package/src/sap/ui/model/odata/v4/lib/_Cache.js +53 -30
  438. package/src/sap/ui/model/odata/v4/lib/_Helper.js +6 -4
  439. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +6 -6
  440. package/src/sap/ui/model/resource/ResourceModel.js +5 -6
  441. package/src/sap/ui/model/type/Boolean.js +1 -1
  442. package/src/sap/ui/model/type/Currency.js +1 -1
  443. package/src/sap/ui/model/type/Date.js +1 -1
  444. package/src/sap/ui/model/type/DateInterval.js +1 -1
  445. package/src/sap/ui/model/type/DateTime.js +1 -1
  446. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  447. package/src/sap/ui/model/type/FileSize.js +1 -1
  448. package/src/sap/ui/model/type/Float.js +1 -1
  449. package/src/sap/ui/model/type/Integer.js +1 -1
  450. package/src/sap/ui/model/type/String.js +1 -1
  451. package/src/sap/ui/model/type/Time.js +1 -1
  452. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  453. package/src/sap/ui/model/type/Unit.js +1 -1
  454. package/src/sap/ui/model/xml/XMLListBinding.js +3 -0
  455. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  456. package/src/sap/ui/model/xml/XMLTreeBinding.js +3 -0
  457. package/src/sap/ui/performance/BeaconRequest.js +2 -2
  458. package/src/sap/ui/performance/trace/Interaction.js +20 -16
  459. package/src/sap/ui/qunit/QUnitUtils.js +64 -45
  460. package/src/sap/ui/qunit/qunit-coverage.js +6 -0
  461. package/src/sap/ui/qunit/utils/ControlIterator.js +31 -1
  462. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  463. package/src/sap/ui/security/Security.js +128 -0
  464. package/src/sap/ui/test/BlanketReporter.js +2 -3
  465. package/src/sap/ui/test/BlanketReporterUI.view.xml +1 -1
  466. package/src/sap/ui/test/BranchTracking.js +2 -3
  467. package/src/sap/ui/test/ModuleTracking.js +48 -20
  468. package/src/sap/ui/test/OpaExtension.js +3 -3
  469. package/src/sap/ui/test/OpaPlugin.js +16 -6
  470. package/src/sap/ui/test/TestUtils.js +7 -4
  471. package/src/sap/ui/test/_BrowserLogCollector.js +1 -0
  472. package/src/sap/ui/test/_ControlFinder.js +3 -2
  473. package/src/sap/ui/test/_LogCollector.js +1 -0
  474. package/src/sap/ui/test/_UsageReport.js +115 -114
  475. package/src/sap/ui/test/actions/EnterText.js +24 -2
  476. package/src/sap/ui/test/autowaiter/WaiterBase.js +1 -0
  477. package/src/sap/ui/test/autowaiter/_moduleWaiter.js +1 -2
  478. package/src/sap/ui/test/autowaiter/_timeoutWaiter.js +1 -1
  479. package/src/sap/ui/test/generic/GenericTestCollection.js +5 -0
  480. package/src/sap/ui/test/generic/TestBase.js +1 -1
  481. package/src/sap/ui/test/generic/Utils.js +1 -1
  482. package/src/sap/ui/test/matchers/LabelFor.js +2 -12
  483. package/src/sap/ui/test/matchers/Matcher.js +1 -1
  484. package/src/sap/ui/test/pipelines/PipelineFactory.js +1 -0
  485. package/src/sap/ui/test/selectors/_Selector.js +1 -1
  486. package/src/sap/ui/util/Storage.js +1 -1
  487. package/src/ui5loader-autoconfig.js +84 -11
  488. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/manifest.json +3 -10
  489. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/package.json +13 -0
  490. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +11 -0
  491. package/test/sap/ui/core/demokit/sample/RoutingNestedComponent/localService/mockserver.js +3 -4
  492. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/ChartAnnotation.fragment.xml +7 -7
  493. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Component.js +2 -3
  494. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Detail.view.xml +12 -13
  495. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Facets.fragment.xml +4 -4
  496. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Field.fragment.xml +8 -8
  497. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/FormFacet.fragment.xml +3 -5
  498. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/LabeledField.fragment.xml +3 -3
  499. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/Table.fragment.xml +10 -10
  500. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/TableFacet.fragment.xml +3 -3
  501. package/test/sap/ui/core/demokit/sample/ViewTemplate/scenario/extension/HeaderInfo.fragment.xml +1 -1
  502. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Field.fragment.xml +2 -2
  503. package/test/sap/ui/core/demokit/sample/ViewTemplate/tiny/Template.view.xml +19 -21
  504. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/TemplateV4.view.xml +2 -2
  505. package/test/sap/ui/core/demokit/sample/ViewTemplate/valuelist/Component.js +2 -3
  506. package/test/sap/ui/core/demokit/sample/common/SandboxModelHelper.js +2 -3
  507. package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -3
  508. package/test/sap/ui/core/demokit/sample/common/pages/Any.js +7 -8
  509. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/manifest.json +3 -11
  510. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/package.json +13 -0
  511. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +11 -0
  512. package/test/sap/ui/core/demokit/sample/matcher/Descendant/Component.js +1 -1
  513. package/test/sap/ui/core/demokit/sample/matcher/Descendant/manifest.json +3 -11
  514. package/test/sap/ui/core/demokit/sample/matcher/Descendant/package.json +13 -0
  515. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +11 -0
  516. package/test/sap/ui/core/demokit/sample/matcher/I18NText/manifest.json +3 -11
  517. package/test/sap/ui/core/demokit/sample/matcher/I18NText/package.json +13 -0
  518. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +11 -0
  519. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/manifest.json +3 -11
  520. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/package.json +13 -0
  521. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +11 -0
  522. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.controller.js +15 -6
  523. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.controller.js +2 -3
  524. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.controller.js +3 -4
  525. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +39 -16
  526. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +18 -21
  527. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/all.json +509 -395
  528. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/data/metadata.xml +586 -422
  529. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/manifest.json +1 -1
  530. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -3
  531. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Facets.fragment.xml +22 -23
  532. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/FormattedText.fragment.xml +2 -3
  533. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Main.view.xml +7 -7
  534. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +0 -3
  535. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +54 -9
  536. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +34 -9
  537. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +156 -23
  538. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +3 -2
  539. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Facets.fragment.xml +22 -23
  540. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/FormattedText.fragment.xml +2 -3
  541. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Main.view.xml +5 -5
  542. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Main.controller.js +2 -3
  543. package/test/sap/ui/core/demokit/tutorial/databinding/01/Component.js +9 -25
  544. package/test/sap/ui/core/demokit/tutorial/databinding/01/manifest.json +20 -0
  545. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +2 -2
  546. package/test/sap/ui/core/demokit/tutorial/databinding/01/webapp/manifest.json +5 -0
  547. package/test/sap/ui/core/demokit/tutorial/databinding/02/Component.js +9 -25
  548. package/test/sap/ui/core/demokit/tutorial/databinding/02/manifest.json +20 -0
  549. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +2 -2
  550. package/test/sap/ui/core/demokit/tutorial/databinding/02/webapp/manifest.json +5 -0
  551. package/test/sap/ui/core/demokit/tutorial/databinding/03/Component.js +9 -25
  552. package/test/sap/ui/core/demokit/tutorial/databinding/03/manifest.json +20 -0
  553. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +2 -2
  554. package/test/sap/ui/core/demokit/tutorial/databinding/03/webapp/manifest.json +5 -0
  555. package/test/sap/ui/core/demokit/tutorial/databinding/04/Component.js +9 -26
  556. package/test/sap/ui/core/demokit/tutorial/databinding/04/manifest.json +21 -0
  557. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +2 -2
  558. package/test/sap/ui/core/demokit/tutorial/databinding/04/webapp/manifest.json +5 -0
  559. package/test/sap/ui/core/demokit/tutorial/databinding/05/Component.js +9 -26
  560. package/test/sap/ui/core/demokit/tutorial/databinding/05/manifest.json +21 -0
  561. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +2 -2
  562. package/test/sap/ui/core/demokit/tutorial/databinding/05/webapp/manifest.json +5 -0
  563. package/test/sap/ui/core/demokit/tutorial/databinding/06/Component.js +9 -27
  564. package/test/sap/ui/core/demokit/tutorial/databinding/06/manifest.json +22 -0
  565. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +2 -2
  566. package/test/sap/ui/core/demokit/tutorial/databinding/06/webapp/manifest.json +5 -0
  567. package/test/sap/ui/core/demokit/tutorial/databinding/07/Component.js +9 -28
  568. package/test/sap/ui/core/demokit/tutorial/databinding/07/manifest.json +23 -0
  569. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +2 -2
  570. package/test/sap/ui/core/demokit/tutorial/databinding/07/webapp/manifest.json +5 -0
  571. package/test/sap/ui/core/demokit/tutorial/databinding/08/Component.js +9 -28
  572. package/test/sap/ui/core/demokit/tutorial/databinding/08/manifest.json +23 -0
  573. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +2 -2
  574. package/test/sap/ui/core/demokit/tutorial/databinding/08/webapp/manifest.json +5 -0
  575. package/test/sap/ui/core/demokit/tutorial/databinding/09/Component.js +9 -29
  576. package/test/sap/ui/core/demokit/tutorial/databinding/09/manifest.json +24 -0
  577. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +2 -2
  578. package/test/sap/ui/core/demokit/tutorial/databinding/09/webapp/manifest.json +5 -0
  579. package/test/sap/ui/core/demokit/tutorial/databinding/10/Component.js +9 -29
  580. package/test/sap/ui/core/demokit/tutorial/databinding/10/manifest.json +24 -0
  581. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +2 -2
  582. package/test/sap/ui/core/demokit/tutorial/databinding/10/webapp/manifest.json +5 -0
  583. package/test/sap/ui/core/demokit/tutorial/databinding/11/Component.js +9 -29
  584. package/test/sap/ui/core/demokit/tutorial/databinding/11/manifest.json +24 -0
  585. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +2 -2
  586. package/test/sap/ui/core/demokit/tutorial/databinding/11/webapp/manifest.json +5 -0
  587. package/test/sap/ui/core/demokit/tutorial/databinding/12/Component.js +9 -30
  588. package/test/sap/ui/core/demokit/tutorial/databinding/12/manifest.json +25 -0
  589. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +2 -2
  590. package/test/sap/ui/core/demokit/tutorial/databinding/12/webapp/manifest.json +5 -0
  591. package/test/sap/ui/core/demokit/tutorial/databinding/13/Component.js +9 -30
  592. package/test/sap/ui/core/demokit/tutorial/databinding/13/manifest.json +25 -0
  593. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +2 -2
  594. package/test/sap/ui/core/demokit/tutorial/databinding/13/webapp/manifest.json +5 -0
  595. package/test/sap/ui/core/demokit/tutorial/databinding/14/Component.js +9 -30
  596. package/test/sap/ui/core/demokit/tutorial/databinding/14/manifest.json +25 -0
  597. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +2 -2
  598. package/test/sap/ui/core/demokit/tutorial/databinding/14/webapp/manifest.json +5 -0
  599. package/test/sap/ui/core/demokit/tutorial/databinding/15/Component.js +9 -32
  600. package/test/sap/ui/core/demokit/tutorial/databinding/15/manifest.json +27 -0
  601. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +2 -2
  602. package/test/sap/ui/core/demokit/tutorial/databinding/15/webapp/manifest.json +5 -0
  603. package/test/sap/ui/core/demokit/tutorial/mockserver/01/Component.js +9 -30
  604. package/test/sap/ui/core/demokit/tutorial/mockserver/01/manifest.json +24 -0
  605. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +2 -2
  606. package/test/sap/ui/core/demokit/tutorial/mockserver/02/Component.js +9 -33
  607. package/test/sap/ui/core/demokit/tutorial/mockserver/02/manifest.json +27 -0
  608. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +2 -2
  609. package/test/sap/ui/core/demokit/tutorial/mockserver/03/Component.js +9 -33
  610. package/test/sap/ui/core/demokit/tutorial/mockserver/03/manifest.json +27 -0
  611. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +2 -2
  612. package/test/sap/ui/core/demokit/tutorial/mockserver/04/Component.js +9 -33
  613. package/test/sap/ui/core/demokit/tutorial/mockserver/04/manifest.json +27 -0
  614. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +2 -2
  615. package/test/sap/ui/core/demokit/tutorial/navigation/01/Component.js +9 -33
  616. package/test/sap/ui/core/demokit/tutorial/navigation/01/manifest.json +28 -0
  617. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +2 -2
  618. package/test/sap/ui/core/demokit/tutorial/navigation/02/Component.js +9 -35
  619. package/test/sap/ui/core/demokit/tutorial/navigation/02/manifest.json +30 -0
  620. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +2 -2
  621. package/test/sap/ui/core/demokit/tutorial/navigation/03/Component.js +9 -37
  622. package/test/sap/ui/core/demokit/tutorial/navigation/03/manifest.json +32 -0
  623. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +2 -2
  624. package/test/sap/ui/core/demokit/tutorial/navigation/04/Component.js +9 -38
  625. package/test/sap/ui/core/demokit/tutorial/navigation/04/manifest.json +33 -0
  626. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +2 -2
  627. package/test/sap/ui/core/demokit/tutorial/navigation/05/Component.js +9 -38
  628. package/test/sap/ui/core/demokit/tutorial/navigation/05/manifest.json +33 -0
  629. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +2 -2
  630. package/test/sap/ui/core/demokit/tutorial/navigation/06/Component.js +9 -40
  631. package/test/sap/ui/core/demokit/tutorial/navigation/06/manifest.json +35 -0
  632. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +2 -2
  633. package/test/sap/ui/core/demokit/tutorial/navigation/07/Component.js +9 -42
  634. package/test/sap/ui/core/demokit/tutorial/navigation/07/manifest.json +37 -0
  635. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +2 -2
  636. package/test/sap/ui/core/demokit/tutorial/navigation/08/Component.js +9 -45
  637. package/test/sap/ui/core/demokit/tutorial/navigation/08/manifest.json +40 -0
  638. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +2 -2
  639. package/test/sap/ui/core/demokit/tutorial/navigation/09/Component.js +9 -45
  640. package/test/sap/ui/core/demokit/tutorial/navigation/09/manifest.json +40 -0
  641. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +2 -2
  642. package/test/sap/ui/core/demokit/tutorial/navigation/10/Component.js +9 -47
  643. package/test/sap/ui/core/demokit/tutorial/navigation/10/manifest.json +42 -0
  644. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +2 -2
  645. package/test/sap/ui/core/demokit/tutorial/navigation/11/Component.js +9 -52
  646. package/test/sap/ui/core/demokit/tutorial/navigation/11/manifest.json +47 -0
  647. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +2 -2
  648. package/test/sap/ui/core/demokit/tutorial/navigation/12/Component.js +9 -52
  649. package/test/sap/ui/core/demokit/tutorial/navigation/12/manifest.json +47 -0
  650. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +2 -2
  651. package/test/sap/ui/core/demokit/tutorial/navigation/13/Component.js +9 -52
  652. package/test/sap/ui/core/demokit/tutorial/navigation/13/manifest.json +47 -0
  653. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +2 -2
  654. package/test/sap/ui/core/demokit/tutorial/navigation/14/Component.js +9 -52
  655. package/test/sap/ui/core/demokit/tutorial/navigation/14/manifest.json +47 -0
  656. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +2 -2
  657. package/test/sap/ui/core/demokit/tutorial/navigation/15/Component.js +9 -52
  658. package/test/sap/ui/core/demokit/tutorial/navigation/15/manifest.json +47 -0
  659. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +2 -2
  660. package/test/sap/ui/core/demokit/tutorial/navigation/16/Component.js +9 -52
  661. package/test/sap/ui/core/demokit/tutorial/navigation/16/manifest.json +47 -0
  662. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +2 -2
  663. package/test/sap/ui/core/demokit/tutorial/navigation/17/Component.js +9 -52
  664. package/test/sap/ui/core/demokit/tutorial/navigation/17/manifest.json +47 -0
  665. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +2 -2
  666. package/test/sap/ui/core/demokit/tutorial/odatav4/01/Component.js +3 -27
  667. package/test/sap/ui/core/demokit/tutorial/odatav4/01/manifest.json +28 -0
  668. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +2 -2
  669. package/test/sap/ui/core/demokit/tutorial/odatav4/02/Component.js +3 -27
  670. package/test/sap/ui/core/demokit/tutorial/odatav4/02/manifest.json +28 -0
  671. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +2 -2
  672. package/test/sap/ui/core/demokit/tutorial/odatav4/03/Component.js +3 -27
  673. package/test/sap/ui/core/demokit/tutorial/odatav4/03/manifest.json +28 -0
  674. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +2 -2
  675. package/test/sap/ui/core/demokit/tutorial/odatav4/04/Component.js +3 -27
  676. package/test/sap/ui/core/demokit/tutorial/odatav4/04/manifest.json +28 -0
  677. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +2 -2
  678. package/test/sap/ui/core/demokit/tutorial/odatav4/05/Component.js +3 -27
  679. package/test/sap/ui/core/demokit/tutorial/odatav4/05/manifest.json +28 -0
  680. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +2 -2
  681. package/test/sap/ui/core/demokit/tutorial/odatav4/06/Component.js +3 -27
  682. package/test/sap/ui/core/demokit/tutorial/odatav4/06/manifest.json +28 -0
  683. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +2 -2
  684. package/test/sap/ui/core/demokit/tutorial/odatav4/07/Component.js +3 -27
  685. package/test/sap/ui/core/demokit/tutorial/odatav4/07/manifest.json +28 -0
  686. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +2 -2
  687. package/test/sap/ui/core/demokit/tutorial/odatav4/08/Component.js +3 -27
  688. package/test/sap/ui/core/demokit/tutorial/odatav4/08/manifest.json +28 -0
  689. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +2 -2
  690. package/test/sap/ui/core/demokit/tutorial/odatav4/09/Component.js +3 -27
  691. package/test/sap/ui/core/demokit/tutorial/odatav4/09/manifest.json +28 -0
  692. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +2 -2
  693. package/test/sap/ui/core/demokit/tutorial/odatav4/10/Component.js +3 -27
  694. package/test/sap/ui/core/demokit/tutorial/odatav4/10/manifest.json +28 -0
  695. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +2 -2
  696. package/test/sap/ui/core/demokit/tutorial/odatav4/11/Component.js +3 -27
  697. package/test/sap/ui/core/demokit/tutorial/odatav4/11/manifest.json +28 -0
  698. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +2 -2
  699. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/Component.js +9 -29
  700. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/manifest.json +25 -0
  701. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +2 -2
  702. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Component.js +2 -3
  703. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/Main.view.xml +1 -1
  704. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +2 -3
  705. package/test/sap/ui/core/qunit/ClientModel.qunit.js +28 -28
  706. package/test/sap/ui/core/qunit/CompositeBinding.qunit.js +18 -0
  707. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +4 -3
  708. package/test/sap/ui/core/qunit/Core.qunit.js +5 -14
  709. package/test/sap/ui/core/qunit/Core_libraryPreloadFiles.qunit.js +4 -4
  710. package/test/sap/ui/core/qunit/Core_libraryPreloadFiles_unavoidablyUsingEval.qunit.js +6 -6
  711. package/test/sap/ui/core/qunit/Core_unavoidablyUsingEval.qunit.js +31 -30
  712. package/test/sap/ui/core/qunit/DataState.qunit.js +7 -4
  713. package/test/sap/ui/core/qunit/DuplicateIds.qunit.js +3 -0
  714. package/test/sap/ui/core/qunit/DuplicateIds_noError.qunit.js +4 -0
  715. package/test/sap/ui/core/qunit/Element_metadata_renderer.qunit.js +6 -0
  716. package/test/sap/ui/core/qunit/ExpressionParser.qunit.js +144 -85
  717. package/test/sap/ui/core/qunit/HTML.qunit.js +87 -84
  718. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +22 -1
  719. package/test/sap/ui/core/qunit/LRUPersistentCache.qunit.js +4 -4
  720. package/test/sap/ui/core/qunit/Lib.qunit.js +64 -1
  721. package/test/sap/ui/core/qunit/ListBinding.qunit.js +14 -1
  722. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +90 -4
  723. package/test/sap/ui/core/qunit/ManagedObjectMetadata.qunit.js +41 -40
  724. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +2 -1
  725. package/test/sap/ui/core/qunit/{ManagedObject_noBoot.qunit.js → ManagedObject_BindingParser.qunit.js} +10 -9
  726. package/test/sap/ui/core/qunit/Object.qunit.js +36 -0
  727. package/test/sap/ui/core/qunit/RenderManager.qunit.js +86 -94
  728. package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +11 -97
  729. package/test/sap/ui/core/qunit/StaticBinding.qunit.js +3 -0
  730. package/test/sap/ui/core/qunit/UIArea.qunit.js +34 -35
  731. package/test/sap/ui/core/qunit/analytics/AnalyticalTreeBindingAdapter.qunit.js +3 -0
  732. package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +3 -0
  733. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +3 -0
  734. package/test/sap/ui/core/qunit/app/DesignMode_controllerDeactivated.qunit.js +5 -6
  735. package/test/sap/ui/core/qunit/app/DesignMode_suppressedDeactivation.qunit.js +5 -6
  736. package/test/sap/ui/core/qunit/app/MessageListBinding.qunit.js +3 -0
  737. package/test/sap/ui/core/qunit/app/_createDesignModeTests_legacyAPIs.qunit.js +8 -10
  738. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +2 -2
  739. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +49 -30
  740. package/test/sap/ui/core/qunit/base/i18n/ResourceBundle.qunit.js +123 -10
  741. package/test/sap/ui/core/qunit/base/util/resolveReference.qunit.js +9 -0
  742. package/test/sap/ui/core/qunit/base/util/testdata/MyModule.js +5 -0
  743. package/test/sap/ui/core/qunit/bootstrap/BootstrapCustomBootTaskPreloadCss.beforeBootstrap.qunit.js +4 -2
  744. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.html +1 -0
  745. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +9 -10
  746. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload_legacyAPIs.qunit.js +0 -2
  747. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinBody.qunit.html +2 -1
  748. package/test/sap/ui/core/qunit/bootstrap/BootstrapWithinHead.qunit.html +2 -1
  749. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +122 -266
  750. package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.html +22 -0
  751. package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibConfigured.qunit.js +22 -0
  752. package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.html +22 -0
  753. package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibLoaded.qunit.js +16 -0
  754. package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.html +22 -0
  755. package/test/sap/ui/core/qunit/bootstrap/ConfigurationFlexibility_LibNotLoaded.qunit.js +14 -0
  756. package/test/sap/ui/core/qunit/bootstrap/ControlBehavior.qunit.js +110 -0
  757. package/test/sap/ui/core/qunit/bootstrap/PreloadCfg.qunit.js +4 -3
  758. package/test/sap/ui/core/qunit/bootstrap/ResourceRoot_ResourcesURL_Standard.qunit.html +1 -1
  759. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.beforeBootstrap.qunit.js +2 -3
  760. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +39 -34
  761. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted_legacyAPIs.qunit.js +5 -1
  762. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +51 -15
  763. package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.html +23 -0
  764. package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery-compat.qunit.js +1 -1
  765. package/test/sap/ui/core/qunit/compat_legacyAPIs/jquery.sap.stubs.qunit.js +16 -20
  766. package/test/sap/ui/core/qunit/compat_legacyAPIs/testsuite.compat.qunit.js +1 -4
  767. package/test/sap/ui/core/qunit/component/Component.qunit.js +100 -7
  768. package/test/sap/ui/core/qunit/component/Models.qunit.js +3 -1
  769. package/test/sap/ui/core/qunit/component/Preloading.qunit.js +8 -12
  770. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +8 -2
  771. package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Component.js +23 -0
  772. package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Main.view.xml +8 -0
  773. package/test/sap/ui/core/qunit/component/testdata/routerPreloading/manifest.json +34 -0
  774. package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Component.js +23 -0
  775. package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Main.view.xml +8 -0
  776. package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/manifest.json +28 -0
  777. package/test/sap/ui/core/qunit/date/_Calendars.qunit.js +52 -0
  778. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +18 -0
  779. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaksUsingIterator.qunit.js +3 -4
  780. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +18 -0
  781. package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +15 -0
  782. package/test/sap/ui/core/qunit/generic/testsuite.generic.qunit.js +21 -0
  783. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessAmbiguous.js +2 -3
  784. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessDuplicate.js +2 -3
  785. package/test/sap/ui/core/qunit/gherkin/fixture/testHarnessFailing.js +2 -3
  786. package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.html +16 -0
  787. package/test/sap/ui/core/qunit/gherkin/opa5TestHarness.qunit.js +1 -1
  788. package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.html +16 -0
  789. package/test/sap/ui/core/qunit/gherkin/qUnitTestHarness.qunit.js +1 -1
  790. package/test/sap/ui/core/qunit/gherkin/testsuite.gherkin.qunit.js +3 -2
  791. package/test/sap/ui/core/qunit/i18n/Buddhist.qunit.js +3 -0
  792. package/test/sap/ui/core/qunit/i18n/GenericLocaleData.qunit.js +217 -114
  793. package/test/sap/ui/core/qunit/i18n/Islamic.qunit.js +7 -4
  794. package/test/sap/ui/core/qunit/i18n/Japanese.qunit.js +3 -0
  795. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +341 -7
  796. package/test/sap/ui/core/qunit/i18n/Persian.qunit.js +3 -0
  797. package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +3 -0
  798. package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +10 -1
  799. package/test/sap/ui/core/qunit/i18n/helper/_timezones.js +17 -11
  800. package/test/sap/ui/core/qunit/i18n/testsuite.i18n.qunit.js +7 -1
  801. package/test/sap/ui/core/qunit/internal/1Ring.qunit.html +5 -1
  802. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +2 -2
  803. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +1 -0
  804. package/test/sap/ui/core/qunit/internal/AnnotationParser.qunit.html +1 -2
  805. package/test/sap/ui/core/qunit/internal/ODataV4.qunit.html +6 -1
  806. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +2 -1
  807. package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.html +24 -0
  808. package/test/sap/ui/core/qunit/jquery.sap.global-config.qunit.js +12 -6
  809. package/test/sap/ui/core/qunit/jquery.sap.global-config_beforeBootstrap.qunit.js +1 -1
  810. package/test/sap/ui/core/qunit/json/JSONListBinding.qunit.js +30 -0
  811. package/test/sap/ui/core/qunit/loader/exposeAsAMDLoader.qunit.html +1 -0
  812. package/test/sap/ui/core/qunit/model/Binding.qunit.js +3 -0
  813. package/test/sap/ui/core/qunit/model/ClientListBinding.qunit.js +5 -2
  814. package/test/sap/ui/core/qunit/model/ClientPropertyBinding.qunit.js +3 -0
  815. package/test/sap/ui/core/qunit/model/ClientTreeBinding.qunit.js +5 -2
  816. package/test/sap/ui/core/qunit/model/ClientTreeBindingAdapter.qunit.js +6 -0
  817. package/test/sap/ui/core/qunit/model/CompositeDataState.qunit.js +3 -0
  818. package/test/sap/ui/core/qunit/model/Context.qunit.js +3 -0
  819. package/test/sap/ui/core/qunit/model/ContextBinding.qunit.js +3 -0
  820. package/test/sap/ui/core/qunit/model/Filter.qunit.js +49 -0
  821. package/test/sap/ui/core/qunit/model/FilterProcessor.qunit.js +68 -1
  822. package/test/sap/ui/core/qunit/model/ListBinding.qunit.js +23 -5
  823. package/test/sap/ui/core/qunit/model/Model.qunit.js +46 -2
  824. package/test/sap/ui/core/qunit/model/PropertyBinding.qunit.js +3 -0
  825. package/test/sap/ui/core/qunit/model/Sorter.qunit.js +3 -0
  826. package/test/sap/ui/core/qunit/model/TreeBinding.qunit.js +43 -3
  827. package/test/sap/ui/core/qunit/model/TreeBindingAdapter.qunit.js +3 -0
  828. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +107 -93
  829. package/test/sap/ui/core/qunit/mvc/View.qunit.js +3 -0
  830. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessor.qunit.js +17 -14
  831. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync.qunit.js +23 -12
  832. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +29 -82
  833. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML_unavoidablySync.qunit.js +123 -0
  834. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions.qunit.js +4 -0
  835. package/test/sap/ui/core/qunit/mvc/extensions/Controllerextensions_legacy.qunit.js +4 -0
  836. package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +16 -0
  837. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +408 -419
  838. package/test/sap/ui/core/qunit/odata/AnnotationHelper.qunit.js +6 -4
  839. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +16 -0
  840. package/test/sap/ui/core/qunit/odata/ODataMetaModel.qunit.js +8 -1
  841. package/test/sap/ui/core/qunit/odata/ODataModel_legacyAPIs.qunit.js +22 -22
  842. package/test/sap/ui/core/qunit/odata/ODataTreeBindingAdapter.qunit.js +1 -1
  843. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -1
  844. package/test/sap/ui/core/qunit/odata/type/DateTimeBase.qunit.js +4 -4
  845. package/test/sap/ui/core/qunit/odata/type/DateTimeWithTimezone.qunit.js +6 -6
  846. package/test/sap/ui/core/qunit/odata/type/Time.qunit.js +3 -4
  847. package/test/sap/ui/core/qunit/odata/type/TimeOfDay.qunit.js +4 -4
  848. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +52 -29
  849. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +952 -292
  850. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +8 -15
  851. package/test/sap/ui/core/qunit/odata/v2/ODataPropertyBindingNoFakeService.qunit.js +6 -7
  852. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +215 -1
  853. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingNoFakeService.qunit.js +211 -20
  854. package/test/sap/ui/core/qunit/odata/v2/ODataV2Model.qunit.js +32 -36
  855. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelDataState.qunit.js +3 -2
  856. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +69 -2
  857. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +19 -9
  858. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +601 -99
  859. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +5 -5
  860. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1896 -407
  861. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +7 -5
  862. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +4 -4
  863. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +909 -422
  864. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +21 -6
  865. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +104 -33
  866. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +8 -0
  867. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +4 -4
  868. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +9 -9
  869. package/test/sap/ui/core/qunit/odata/v4/lib/_V2MetadataConverter.qunit.js +3 -3
  870. package/test/sap/ui/core/qunit/odata/v4/lib/_V4MetadataConverter.qunit.js +3 -3
  871. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +16 -0
  872. package/test/sap/ui/core/qunit/opa/_LogCollector.qunit.js +17 -9
  873. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +66 -3
  874. package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +3 -3
  875. package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +3 -3
  876. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +3 -3
  877. package/test/sap/ui/core/qunit/opa/autowaiter/_timeoutWaiter.js +11 -0
  878. package/test/sap/ui/core/qunit/opa/fixture/miniUI5Site.js +14 -8
  879. package/test/sap/ui/core/qunit/opa/fixture/uncaughtError.js +18 -12
  880. package/test/sap/ui/core/qunit/performance/BeaconRequest.qunit.js +18 -2
  881. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +11 -2
  882. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +4 -7
  883. package/test/sap/ui/core/qunit/resource/ResourceBinding.qunit.js +1 -0
  884. package/test/sap/ui/core/qunit/resource/ResourceModel.qunit.js +5 -4
  885. package/test/sap/ui/core/qunit/routing/async/Target.qunit.js +20 -18
  886. package/test/sap/ui/core/qunit/routing/async/Targets.qunit.js +1 -4
  887. package/test/sap/ui/core/qunit/routing/fixture/routingConfig/Component.js +2 -25
  888. package/test/sap/ui/core/qunit/routing/fixture/routingConfig/manifest.json +28 -0
  889. package/test/sap/ui/core/qunit/rule/misc/silentEventBus.qunit.js +1 -2
  890. package/test/sap/ui/core/qunit/testdata/libraries/scenario11/lib1/library.js +11 -0
  891. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library-preload.js +3 -1
  892. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib1/library.js +3 -1
  893. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library-preload.js +3 -1
  894. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib2/library.js +3 -1
  895. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library-preload.js +2 -1
  896. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib3/library.js +2 -1
  897. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library-preload.js +2 -1
  898. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib5/library.js +2 -1
  899. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library-preload.js +2 -1
  900. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib6/library.js +2 -1
  901. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library-preload.js +2 -1
  902. package/test/sap/ui/core/qunit/testdata/libraries/scenario14/lib8/library.js +2 -1
  903. package/test/sap/ui/core/qunit/testdata/libraries/terminologies/integration/lib/library-preload.js +1 -1
  904. package/test/sap/ui/core/qunit/testdata/shortcutHints/Component.js +9 -0
  905. package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.controller.js +8 -0
  906. package/test/sap/ui/core/qunit/testdata/shortcutHints/RootView.view.xml +16 -0
  907. package/test/sap/ui/core/qunit/testdata/shortcutHints/lib/MyControl.js +27 -0
  908. package/test/sap/ui/core/qunit/testdata/shortcutHints/manifest.json +26 -0
  909. package/test/sap/ui/core/qunit/testdata/uilib-custom-theme-fallback/library.js +4 -5
  910. package/test/sap/ui/core/qunit/testdata/uilib-failing-css-import/library.js +5 -6
  911. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.controller.js +2 -1
  912. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_expression.view.xml +18 -1
  913. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +3 -0
  914. package/test/sap/ui/core/qunit/testsuites/testsuite.control.framework.qunit.js +0 -4
  915. package/test/sap/ui/core/qunit/testsuites/testsuite.foundation.enablement.qunit.js +6 -1
  916. package/test/sap/ui/core/qunit/testsuites/testsuite.managed.object.qunit.js +4 -1
  917. package/test/sap/ui/core/qunit/testsuites/testsuite.modular.core.qunit.js +1 -1
  918. package/test/sap/ui/core/qunit/testsuites/testsuite.security.qunit.js +3 -9
  919. package/test/sap/ui/core/qunit/types/DataType.qunit.js +14 -3
  920. package/test/sap/ui/core/qunit/types/Date.qunit.js +3 -0
  921. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +391 -147
  922. package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +32 -29
  923. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +7 -4
  924. package/test/sap/ui/core/qunit/types/FileSizeFormat.qunit.js +5 -1
  925. package/test/sap/ui/core/qunit/types/ListFormat.qunit.js +3 -0
  926. package/test/sap/ui/core/qunit/types/NumberFormat.qunit.js +4 -3
  927. package/test/sap/ui/core/qunit/types/NumberFormatCurrencies.qunit.js +5 -4
  928. package/test/sap/ui/core/qunit/types/NumberFormatCurrenciesTrailing.qunit.js +4 -3
  929. package/test/sap/ui/core/qunit/types/SimpleType.qunit.js +3 -0
  930. package/test/sap/ui/core/qunit/types/TimezoneUtil.qunit.js +23 -0
  931. package/test/sap/ui/core/qunit/types/Types.qunit.js +44 -10
  932. package/test/sap/ui/core/qunit/types/testsuite.types.qunit.js +3 -0
  933. package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +4 -4
  934. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +592 -83
  935. package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-allowlist.js +7 -0
  936. package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-frameOptions.js +7 -0
  937. package/test/sap/ui/core/qunit/{bootstrap/CfgFromGlobalObject.qunit.html → util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.html} +7 -11
  938. package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-mode.qunit.js +3 -4
  939. package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.html +26 -0
  940. package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag-override-service.qunit.js +3 -4
  941. package/test/sap/ui/core/qunit/{bootstrap/CfgDefaults.qunit.html → util/jQuery.sap.FrameOptions-meta-tag.qunit.html} +5 -8
  942. package/test/sap/ui/core/qunit/util/jQuery.sap.FrameOptions-meta-tag.qunit.js +3 -4
  943. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +10 -10
  944. package/test/sap/ui/core/qunit/util/jquery.sap.logger.qunit.html +18 -0
  945. package/test/sap/ui/core/qunit/util/jquery.sap.resources.qunit.js +1 -1
  946. package/test/sap/ui/core/qunit/util/testsuite.util.qunit.js +1 -3
  947. package/test/sap/ui/core/qunit/xml/XMLListBinding.qunit.js +3 -0
  948. package/test/sap/ui/core/qunit/xml/XMLModel.qunit.js +3 -0
  949. package/test/sap/ui/core/qunit/xml/XMLPropertyBinding.qunit.js +3 -0
  950. package/test/sap/ui/core/qunit/xml/XMLTreeBinding.qunit.js +3 -0
  951. package/test/sap/ui/core/relnotes/changes-1.119.json +1 -12
  952. package/test/sap/ui/core/relnotes/changes-1.120.json +442 -0
  953. package/test/sap/ui/core/terminologies/App.controller.js +2 -3
  954. package/test/sap/ui/core/terminologies/main.js +2 -3
  955. package/test/sap/ui/test/qunit/TestUtils.qunit.js +3 -3
  956. package/src/sap/ui/core/ConfigTest.js +0 -17
  957. package/src/sap/ui/core/_ConfigurationProvider.js +0 -187
  958. package/test/sap/ui/core/ComponentExtensibility_CustomizingDisabled.html +0 -57
  959. package/test/sap/ui/core/qunit/bootstrap/CfgDefaults.qunit.js +0 -71
  960. package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.html +0 -29
  961. package/test/sap/ui/core/qunit/bootstrap/CfgFromConfigAttribute.qunit.js +0 -40
  962. package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.beforeBootstrap.qunit.js +0 -20
  963. package/test/sap/ui/core/qunit/bootstrap/CfgFromGlobalObject.qunit.js +0 -40
  964. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.html +0 -42
  965. package/test/sap/ui/core/qunit/bootstrap/CfgFromTagAttributes.qunit.js +0 -49
  966. package/test/sap/ui/core/qunit/util/BusyIndicatorNoCore.qunit.js +0 -96
  967. package/test/sap/ui/core/qunit/util/beforeBootstrap/jQuery.sap.FrameOptions-meta-tag.js +0 -10
  968. package/test/sap/ui/core/samples/mvc/JSONView.html +0 -65
@@ -108,16 +108,40 @@ sap.ui.define([
108
108
  }
109
109
 
110
110
  /**
111
- * Creates an <mvc:View> tag with namespace definitions.
111
+ * Creates an <mvc:View> tag with namespace definitions and requires modules.
112
+ *
112
113
  * @param {string} [sPrefix="template"]
113
114
  * the prefix for the template namespace
115
+ * @param {Object<string,object>} [mRequiredModules]
116
+ * map from alias to module content which should be required
117
+ * @param {object} [that]
118
+ * the test context
114
119
  * @returns {string}
115
120
  * <mvc:View> tag
116
121
  */
117
- function mvcView(sPrefix) {
118
- sPrefix = sPrefix || "template";
119
- return '<mvc:View xmlns="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:' + sPrefix
120
- + '="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1">';
122
+ function mvcView(sPrefix, mRequiredModules, that) {
123
+ var sAlias,
124
+ mAlias2Path = {},
125
+ sFakePath,
126
+ sView = '<mvc:View'
127
+ + ' xmlns="sap.ui.core"'
128
+ + ' xmlns:mvc="sap.ui.core.mvc"'
129
+ + ' xmlns:' + (sPrefix || "template")
130
+ + '="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"';
131
+
132
+ if (mRequiredModules) {
133
+ for (sAlias in mRequiredModules) {
134
+ sFakePath = "foo/" + sAlias;
135
+ mAlias2Path[sAlias] = sFakePath;
136
+ that.expectRequire(true, [sFakePath], function () {
137
+ return [mRequiredModules[sAlias]];
138
+ });
139
+ }
140
+
141
+ return sView
142
+ + ' template:require="' + JSON.stringify(mAlias2Path).replaceAll('"', "'") + '">';
143
+ }
144
+ return sView + '>';
121
145
  }
122
146
 
123
147
  /**
@@ -304,8 +328,6 @@ sap.ui.define([
304
328
  // do not rely on ERROR vs. DEBUG due to minified sources
305
329
  Log.setLevel(Log.Level.DEBUG, sComponent);
306
330
 
307
- this.oObjectPathMock = this.mock(ObjectPath);
308
-
309
331
  this.oLogMock = this.mock(Log);
310
332
  this.oLogMock.expects("warning").never();
311
333
  this.oLogMock.expects("error").never();
@@ -562,8 +584,10 @@ sap.ui.define([
562
584
  }, 0); // simulate AMD
563
585
  });
564
586
  }
587
+ /**@deprecated As of version 1.120.0*/
565
588
  this.oSapUiMock.expects("requireSync").never();
566
589
  } else {
590
+ /**@deprecated As of version 1.120.0*/
567
591
  aURNs.forEach(function (sURN, i) {
568
592
  that.oSapUiMock.expects("requireSync").withArgs(sURN)
569
593
  .callsFake(i === 0 ? fnCallback : undefined);
@@ -581,6 +605,8 @@ sap.ui.define([
581
605
  * @param {string} sExpectedMessage
582
606
  * no caller identification expected;
583
607
  * "{0}" is replaced with the line of the view content which has id="unexpected"
608
+ * @returns {sap.ui.base.SyncPromise}
609
+ * A sync promise for timing
584
610
  */
585
611
  unexpected : function (assert, aViewContent, sExpectedMessage) {
586
612
  var iUnexpected;
@@ -591,7 +617,7 @@ sap.ui.define([
591
617
  }
592
618
  });
593
619
 
594
- this.checkError(assert, aViewContent, sExpectedMessage, undefined, iUnexpected);
620
+ return this.checkError(assert, aViewContent, sExpectedMessage, undefined, iUnexpected);
595
621
  }
596
622
  });
597
623
 
@@ -623,14 +649,14 @@ sap.ui.define([
623
649
  Log.setLevel(Log.Level.ERROR, sComponent);
624
650
  }
625
651
 
626
- this.check(assert, aViewContent);
652
+ return this.check(assert, aViewContent);
627
653
  });
628
654
  });
629
655
  });
630
656
 
631
657
  //*********************************************************************************************
632
658
  QUnit.test("XML with template:if test='true'", function (assert) {
633
- this.check(assert, [
659
+ return this.check(assert, [
634
660
  mvcView(),
635
661
  '<template:if test="true">',
636
662
  '<In id="first"/>',
@@ -650,7 +676,7 @@ sap.ui.define([
650
676
  warn(this.oLogMock, "Warning(s) during processing of qux", null)
651
677
  .exactly(bWarn ? 1 : 0);
652
678
 
653
- this.check(assert, [
679
+ return this.check(assert, [
654
680
  mvcView(),
655
681
  '<template:if test="true"/>', // 1st warning
656
682
  '<template:if test="true"/>', // 2nd warning
@@ -661,7 +687,7 @@ sap.ui.define([
661
687
 
662
688
  //*********************************************************************************************
663
689
  QUnit.test("XML with multiple template:if", function (assert) {
664
- this.check(assert, [
690
+ return this.check(assert, [
665
691
  mvcView(),
666
692
  '<template:if test="true">',
667
693
  '<In id="true"/>',
@@ -675,7 +701,7 @@ sap.ui.define([
675
701
 
676
702
  //*********************************************************************************************
677
703
  QUnit.test("XML with nested template:if (as last child)", function (assert) {
678
- this.check(assert, [
704
+ return this.check(assert, [
679
705
  mvcView(),
680
706
  '<template:if test="true">',
681
707
  '<In id="true"/>',
@@ -689,7 +715,7 @@ sap.ui.define([
689
715
 
690
716
  //*********************************************************************************************
691
717
  QUnit.test("XML with nested template:if (as inner child)", function (assert) {
692
- this.check(assert, [
718
+ return this.check(assert, [
693
719
  mvcView(),
694
720
  '<template:if test="true">',
695
721
  '<In id="true"/>',
@@ -733,7 +759,7 @@ sap.ui.define([
733
759
  function (assert) {
734
760
  this.oSapUiMock.expects("require").on(sap.ui)
735
761
  .atLeast(0) // only for the 1st run
736
- .withArgs(["sap/ui/model/type/Boolean"]).callThrough();
762
+ .withArgs("sap/ui/model/type/Boolean").callThrough();
737
763
  return this.check(assert, [
738
764
  mvcView("t"),
739
765
  '<t:if test="{path: \'/flag\', type: \'sap.ui.model.type.Boolean\'}">',
@@ -752,7 +778,7 @@ sap.ui.define([
752
778
  ["false", false, 0, null, undefined, NaN, ""].forEach(function (oFlag) {
753
779
  QUnit.test("XML with template:if test='{/flag}', falsy, flag = " + oFlag,
754
780
  function (assert) {
755
- this.check(assert, [
781
+ return this.check(assert, [
756
782
  mvcView(),
757
783
  '<template:if test="{/flag}">',
758
784
  '<Out/>',
@@ -772,7 +798,7 @@ sap.ui.define([
772
798
  function (assert) {
773
799
  var oModel = new JSONModel({flag: oFlag});
774
800
 
775
- this.check(assert, [
801
+ return this.check(assert, [
776
802
  mvcView(),
777
803
  '<template:if test="{flag}">',
778
804
  '<In id="flag"/>',
@@ -794,7 +820,7 @@ sap.ui.define([
794
820
  }
795
821
  }
796
822
  };
797
- this.check(assert, [
823
+ return this.check(assert, [
798
824
  mvcView(),
799
825
  '<template:if test="{formatter: \'foo.Helper.not\', path:\'/flag\'}">',
800
826
  '<In id="flag"/>',
@@ -862,14 +888,13 @@ sap.ui.define([
862
888
  };
863
889
 
864
890
  if (bWarn && oFixture.aDebugMessages) {
865
- this.checkTracing(assert, true, oFixture.aDebugMessages, aViewContent, {
866
- models : new JSONModel({flag : true})
867
- }, vExpected);
868
- } else {
869
- this.check(assert, aViewContent, {
870
- models : new JSONModel({flag : true})
871
- }, vExpected);
891
+ return this.checkTracing(assert, true, oFixture.aDebugMessages,
892
+ aViewContent, {models : new JSONModel({flag : true})}, vExpected);
872
893
  }
894
+
895
+ return this.check(assert, aViewContent, {
896
+ models : new JSONModel({flag : true})
897
+ }, vExpected);
873
898
  }
874
899
  );
875
900
  });
@@ -943,7 +968,7 @@ sap.ui.define([
943
968
  aViewContent[1])
944
969
  .exactly(bWarn ? 1 : 0); // do not construct arguments in vain!
945
970
 
946
- this.check(assert, aViewContent, {
971
+ return this.check(assert, aViewContent, {
947
972
  models : new JSONModel()
948
973
  }, vExpected);
949
974
  });
@@ -959,7 +984,7 @@ sap.ui.define([
959
984
  }
960
985
  }
961
986
  };
962
- this.check(assert, [
987
+ return this.check(assert, [
963
988
  mvcView(),
964
989
  '<template:if test="false">',
965
990
  '<template:if test="{formatter: \'foo.Helper.forbidden\', path:\'/flag\'}"/>',
@@ -972,7 +997,7 @@ sap.ui.define([
972
997
 
973
998
  //*********************************************************************************************
974
999
  QUnit.test("XML with template:if test='false' and template:then", function (assert) {
975
- this.check(assert, [
1000
+ return this.check(assert, [
976
1001
  mvcView(),
977
1002
  '<template:if test="false">',
978
1003
  '<template:then>',
@@ -985,7 +1010,7 @@ sap.ui.define([
985
1010
 
986
1011
  //*********************************************************************************************
987
1012
  QUnit.test("XML with template:if test='true' and template:then", function (assert) {
988
- this.check(assert, [
1013
+ return this.check(assert, [
989
1014
  mvcView(),
990
1015
  '<template:if test="true">',
991
1016
  '<!-- some comment node -->',
@@ -999,7 +1024,7 @@ sap.ui.define([
999
1024
 
1000
1025
  //*********************************************************************************************
1001
1026
  QUnit.test("XML with nested template:if test='true' and template:then", function (assert) {
1002
- this.check(assert, [
1027
+ return this.check(assert, [
1003
1028
  mvcView(),
1004
1029
  // it is essential for the test that there is not tag between the if's
1005
1030
  '<template:if test="true">',
@@ -1015,7 +1040,7 @@ sap.ui.define([
1015
1040
 
1016
1041
  //*********************************************************************************************
1017
1042
  QUnit.test("XML with template:if test='true' and template:then/else", function (assert) {
1018
- this.check(assert, [
1043
+ return this.check(assert, [
1019
1044
  mvcView(),
1020
1045
  '<template:if test="true">',
1021
1046
  '<template:then>',
@@ -1032,7 +1057,7 @@ sap.ui.define([
1032
1057
 
1033
1058
  //*********************************************************************************************
1034
1059
  QUnit.test("XML with template:if test='false' and template:then/else", function (assert) {
1035
- this.check(assert, [
1060
+ return this.check(assert, [
1036
1061
  mvcView(),
1037
1062
  '<template:if test="false">',
1038
1063
  '<template:then>',
@@ -1049,7 +1074,7 @@ sap.ui.define([
1049
1074
  //*********************************************************************************************
1050
1075
  QUnit.test("XML with nested template:if test='true' and template:then/else",
1051
1076
  function (assert) {
1052
- this.check(assert, [
1077
+ return this.check(assert, [
1053
1078
  mvcView(),
1054
1079
  '<template:if test="true">',
1055
1080
  '<In id="true"/>',
@@ -1142,7 +1167,7 @@ sap.ui.define([
1142
1167
 
1143
1168
  //*********************************************************************************************
1144
1169
  QUnit.test('<template:elseif>: if is true', function (assert) {
1145
- this.check(assert, [
1170
+ return this.check(assert, [
1146
1171
  mvcView(),
1147
1172
  '<template:if test="true">',
1148
1173
  '<template:then>',
@@ -1162,7 +1187,7 @@ sap.ui.define([
1162
1187
 
1163
1188
  //*********************************************************************************************
1164
1189
  QUnit.test('<template:elseif>: all false, w/ else', function (assert) {
1165
- this.check(assert, [
1190
+ return this.check(assert, [
1166
1191
  mvcView(),
1167
1192
  '<template:if test="false">',
1168
1193
  '<template:then>',
@@ -1181,7 +1206,7 @@ sap.ui.define([
1181
1206
 
1182
1207
  //*********************************************************************************************
1183
1208
  QUnit.test('<template:elseif>: all false, w/o else', function (assert) {
1184
- this.check(assert, [
1209
+ return this.check(assert, [
1185
1210
  mvcView(),
1186
1211
  '<template:if test="false">',
1187
1212
  '<template:then>',
@@ -1197,7 +1222,7 @@ sap.ui.define([
1197
1222
 
1198
1223
  //*********************************************************************************************
1199
1224
  QUnit.test('<template:elseif>: elseif is true', function (assert) {
1200
- this.check(assert, [
1225
+ return this.check(assert, [
1201
1226
  mvcView(),
1202
1227
  '<template:if test="false">',
1203
1228
  '<template:then>',
@@ -1230,7 +1255,7 @@ sap.ui.define([
1230
1255
  }
1231
1256
  };
1232
1257
 
1233
- this.check(assert, [
1258
+ return this.check(assert, [
1234
1259
  mvcView().replace(">", ' xmlns:html="http://www.w3.org/1999/xhtml">'),
1235
1260
  '<!-- some comment node -->', // to test skipping of none ELEMENT_NODES while visiting
1236
1261
  '<Label text="{formatter: \'foo.Helper.help\','
@@ -1280,7 +1305,7 @@ sap.ui.define([
1280
1305
  var sTitle = "binding resolution: ignore [object Object], debug = " + bDebug;
1281
1306
 
1282
1307
  QUnit.test(sTitle, function (assert) {
1283
- this.checkTracing(assert, bDebug, [
1308
+ return this.checkTracing(assert, bDebug, [
1284
1309
  {m : "[ 0] Start processing qux"},
1285
1310
  {m : "[ 0] text = [object Object]", d : 1},
1286
1311
  {m : "[ 0] Ignoring [object Array] value for attribute text", d : 3},
@@ -1572,7 +1597,7 @@ sap.ui.define([
1572
1597
  }
1573
1598
  };
1574
1599
 
1575
- this.checkTracing(assert, bDebug, [
1600
+ return this.checkTracing(assert, bDebug, [
1576
1601
  {m : "[ 0] Start processing qux"},
1577
1602
  {m : "[ 0] undefined = /somewhere/com.sap.vocabularies.UI.v1.HeaderInfo"},
1578
1603
  {m : "[ 0] Removed attribute text", d : 1},
@@ -1649,7 +1674,7 @@ sap.ui.define([
1649
1674
  }
1650
1675
  };
1651
1676
 
1652
- this.checkTracing(assert, bDebug, [
1677
+ return this.checkTracing(assert, bDebug, [
1653
1678
  {m : "[ 0] Start processing qux"},
1654
1679
  {m : "[ 0] Error in formatter of attribute text Error: deliberate failure",
1655
1680
  d : 1},
@@ -1683,7 +1708,7 @@ sap.ui.define([
1683
1708
 
1684
1709
  //*********************************************************************************************
1685
1710
  QUnit.test("template:with", function (assert) {
1686
- this.check(assert, [
1711
+ return this.check(assert, [
1687
1712
  mvcView(),
1688
1713
  '<template:with path="/some/random/path">',
1689
1714
  '<template:if test="{flag}">',
@@ -1721,7 +1746,7 @@ sap.ui.define([
1721
1746
  .withExactArgs("/some/#random/path")
1722
1747
  .returns(oMetaModel.createBindingContext("/some/random/path"));
1723
1748
 
1724
- this.check(assert, [
1749
+ return this.check(assert, [
1725
1750
  mvcView(),
1726
1751
  '<template:with path="/some/#random/path" var="path">',
1727
1752
  '<template:if test="{path>flag}">',
@@ -1736,6 +1761,9 @@ sap.ui.define([
1736
1761
  //TODO createBindingContext should also be used w/o var
1737
1762
 
1738
1763
  //*********************************************************************************************
1764
+ /**
1765
+ * @deprecated As of version 1.120.0
1766
+ */
1739
1767
  [false, true].forEach(function (bHasHelper) {
1740
1768
  QUnit.test("template:with and 'named context', has helper = " + bHasHelper,
1741
1769
  function (assert) {
@@ -1744,7 +1772,7 @@ sap.ui.define([
1744
1772
  help : function () {} // empty helper must not make any difference
1745
1773
  }
1746
1774
  };
1747
- this.check(assert, [
1775
+ return this.check(assert, [
1748
1776
  mvcView(),
1749
1777
  '<template:with path="/some" var="some">',
1750
1778
  '<template:with path="some>random/path" var="path"'
@@ -1770,9 +1798,44 @@ sap.ui.define([
1770
1798
  );
1771
1799
  });
1772
1800
 
1801
+ //*********************************************************************************************
1802
+ [false, true].forEach(function (bHasHelper) {
1803
+ QUnit.test("template:with and 'named context', has helper = " + bHasHelper,
1804
+ function (assert) {
1805
+ return this.check(assert, [
1806
+ mvcView("", {
1807
+ Helper : {
1808
+ // empty helper must not make any difference
1809
+ help : function () { }
1810
+ }
1811
+ }, this),
1812
+ '<template:with path="/some" var="some">',
1813
+ '<template:with path="some>random/path" var="path"'
1814
+ + (bHasHelper ? ' helper="Helper.help"' : '') + '>',
1815
+ '<template:if test="{path>flag}">',
1816
+ '<In id="flag"/>',
1817
+ '</template:if>',
1818
+ '</template:with>',
1819
+ '</template:with>',
1820
+ '</mvc:View>'
1821
+ ], {
1822
+ models : new JSONModel({
1823
+ some : {
1824
+ random : {
1825
+ path : {
1826
+ flag : true
1827
+ }
1828
+ }
1829
+ }
1830
+ })
1831
+ });
1832
+ }
1833
+ );
1834
+ });
1835
+
1773
1836
  //*********************************************************************************************
1774
1837
  QUnit.test("template:with and 'named context', missing variable name", function (assert) {
1775
- this.checkError(assert, [
1838
+ return this.checkError(assert, [
1776
1839
  mvcView(),
1777
1840
  '<template:with path="/unused" var=""/>',
1778
1841
  '</mvc:View>'
@@ -1781,7 +1844,7 @@ sap.ui.define([
1781
1844
 
1782
1845
  //*********************************************************************************************
1783
1846
  QUnit.test("template:with and 'named context', missing model", function (assert) {
1784
- this.checkError(assert, [
1847
+ return this.checkError(assert, [
1785
1848
  mvcView(),
1786
1849
  '<template:with path="some>random/path" var="path"/>', // "some" not defined here!
1787
1850
  '</mvc:View>'
@@ -1790,7 +1853,7 @@ sap.ui.define([
1790
1853
 
1791
1854
  //*********************************************************************************************
1792
1855
  QUnit.test("template:with and 'named context', missing context", function (assert) {
1793
- this.checkError(assert, [
1856
+ return this.checkError(assert, [
1794
1857
  mvcView(),
1795
1858
  '<template:with path="some/random/place" var="place"/>',
1796
1859
  '</mvc:View>'
@@ -1800,6 +1863,9 @@ sap.ui.define([
1800
1863
  });
1801
1864
 
1802
1865
  //*********************************************************************************************
1866
+ /**
1867
+ * @deprecated As of version 1.120.0
1868
+ */
1803
1869
  [false, true].forEach(function (bAsync) {
1804
1870
  [false, true].forEach(function (bWithVar) {
1805
1871
  QUnit.test("template:with and helper, async = " + bAsync + ", with var = " + bWithVar,
@@ -1844,6 +1910,50 @@ sap.ui.define([
1844
1910
  });
1845
1911
 
1846
1912
  //*********************************************************************************************
1913
+ [false, true].forEach(function (bWithVar) {
1914
+ QUnit.test("template:with and helper, with var = " + bWithVar,
1915
+ function (assert) {
1916
+ var oModel = new JSONModel({
1917
+ target : {
1918
+ flag : true
1919
+ }
1920
+ });
1921
+
1922
+ return this.checkTracing(assert, true, [
1923
+ {m : "[ 0] Start processing qux"},
1924
+ {m : "[ 1] " + (bWithVar ? "target" : "") + " = /target", d : 1},
1925
+ {m : "[ 2] test == true --> true", d : 2},
1926
+ {m : "[ 2] Finished", d : "</template:if>"},
1927
+ {m : "[ 1] Finished", d : "</template:with>"},
1928
+ {m : "[ 0] Finished processing qux"}
1929
+ ], [
1930
+ mvcView("", {
1931
+ Helper : {
1932
+ help : function (oContext) {
1933
+ assert.ok(oContext instanceof Context);
1934
+ assert.strictEqual(oContext.getModel(), oModel);
1935
+ assert.strictEqual(oContext.getPath(), "/some/random/path");
1936
+ return Promise.resolve("/target");
1937
+ }
1938
+ }
1939
+ }, this),
1940
+ '<template:with path="/some/random/path" helper="Helper.help"'
1941
+ + (bWithVar ? ' var="target"' : '') + '>',
1942
+ '<template:if test="{' + (bWithVar ? 'target>' : '') + 'flag}">',
1943
+ '<In id="flag"/>',
1944
+ '</template:if>',
1945
+ '</template:with>',
1946
+ '</mvc:View>'
1947
+ ], {
1948
+ models : oModel
1949
+ }, /*vExpected*/undefined, true);
1950
+ });
1951
+ });
1952
+
1953
+ //*********************************************************************************************
1954
+ /**
1955
+ * @deprecated As of version 1.120.0
1956
+ */
1847
1957
  [false, true].forEach(function (bWithVar) {
1848
1958
  QUnit.test("template:with and helper changing the model, with var = " + bWithVar,
1849
1959
  function (assert) {
@@ -1864,7 +1974,7 @@ sap.ui.define([
1864
1974
  }
1865
1975
  }
1866
1976
  };
1867
- this.check(assert, [
1977
+ return this.check(assert, [
1868
1978
  mvcView(),
1869
1979
  '<template:with path="/some/random/path" helper="foo.Helper.help"'
1870
1980
  + (bWithVar ? ' var="target"' : '') + '>',
@@ -1884,10 +1994,52 @@ sap.ui.define([
1884
1994
  });
1885
1995
 
1886
1996
  //*********************************************************************************************
1997
+ [false, true].forEach(function (bWithVar) {
1998
+ QUnit.test("template:with and helper changing the model, with var = " + bWithVar,
1999
+ function (assert) {
2000
+ var oMetaModel = new JSONModel({
2001
+ target : {
2002
+ flag : true
2003
+ }
2004
+ }),
2005
+ oModel = new JSONModel();
2006
+
2007
+ return this.check(assert, [
2008
+ mvcView("", {
2009
+ Helper : {
2010
+ help : function (oContext) {
2011
+ assert.ok(oContext instanceof Context);
2012
+ assert.strictEqual(oContext.getModel(), oModel);
2013
+ assert.strictEqual(oContext.getPath(), "/some/random/path");
2014
+ return oMetaModel.createBindingContext("/target");
2015
+ }
2016
+ }
2017
+ }, this),
2018
+ '<template:with path="/some/random/path" helper="Helper.help"'
2019
+ + (bWithVar ? ' var="target"' : '') + '>',
2020
+ '<template:if test="{' + (bWithVar ? 'target>' : '') + 'flag}">',
2021
+ '<In id="flag"/>',
2022
+ '</template:if>',
2023
+ '</template:with>',
2024
+ '</mvc:View>'
2025
+ ], {
2026
+ models : {
2027
+ meta : oMetaModel,
2028
+ "undefined" : oModel
2029
+ }
2030
+ });
2031
+ }
2032
+ );
2033
+ });
2034
+
2035
+ //*********************************************************************************************
2036
+ /**
2037
+ * @deprecated As of version 1.120.0
2038
+ */
1887
2039
  [undefined, {}].forEach(function (fnHelper) {
1888
2040
  QUnit.test("template:with and helper = " + fnHelper, function (assert) {
1889
2041
  window.foo = fnHelper;
1890
- this.checkError(assert, [
2042
+ return this.checkError(assert, [
1891
2043
  mvcView(),
1892
2044
  '<template:with path="/unused" var="target" helper="foo"/>',
1893
2045
  '</mvc:View>'
@@ -1897,9 +2049,24 @@ sap.ui.define([
1897
2049
  });
1898
2050
  });
1899
2051
 
2052
+ //*********************************************************************************************
2053
+ [undefined, {}].forEach(function (fnHelper) {
2054
+ QUnit.test("template:with and helper = " + fnHelper, function (assert) {
2055
+ return this.checkError(assert, [
2056
+ mvcView("", {
2057
+ Helper : fnHelper
2058
+ }, this),
2059
+ '<template:with path="/unused" var="target" helper="foo"/>',
2060
+ '</mvc:View>'
2061
+ ], "Cannot resolve helper for {0}", {
2062
+ models : new JSONModel()
2063
+ });
2064
+ });
2065
+ });
2066
+
1900
2067
  //*********************************************************************************************
1901
2068
  QUnit.test('<template:with helper=".">', function (assert) {
1902
- this.checkError(assert, [
2069
+ return this.checkError(assert, [
1903
2070
  mvcView(),
1904
2071
  '<template:with path="/unused" var="target" helper="."/>',
1905
2072
  '</mvc:View>'
@@ -1909,6 +2076,9 @@ sap.ui.define([
1909
2076
  });
1910
2077
 
1911
2078
  //*********************************************************************************************
2079
+ /**
2080
+ * @deprecated As of version 1.120.0
2081
+ */
1912
2082
  [false, true].forEach(function (bAsync) {
1913
2083
  [true, ""].forEach(function (vResult) {
1914
2084
  QUnit.test("template:with and helper returning " + vResult + ", bAsync = " + bAsync,
@@ -1928,6 +2098,26 @@ sap.ui.define([
1928
2098
  });
1929
2099
 
1930
2100
  //*********************************************************************************************
2101
+ [true, ""].forEach(function (vResult) {
2102
+ QUnit.test("template:with and helper returning " + vResult, function (assert) {
2103
+ return this.checkError(assert, [
2104
+ mvcView("", {
2105
+ foo : function () {
2106
+ return vResult;
2107
+ }
2108
+ }, this),
2109
+ '<template:with path="/unused" var="target" helper="foo"/>',
2110
+ '</mvc:View>'
2111
+ ], "Illegal helper result '" + vResult + "' in {0}", {
2112
+ models : new JSONModel()
2113
+ }, undefined, true);
2114
+ });
2115
+ });
2116
+
2117
+ //*********************************************************************************************
2118
+ /**
2119
+ * @deprecated As of version 1.120.0
2120
+ */
1931
2121
  QUnit.test('template:with repeated w/ same variable and value', function (assert) {
1932
2122
  var oModel = new JSONModel(),
1933
2123
  sTemplate1 = '<template:with path="bar>/my/path" var="bar"/>',
@@ -1942,7 +2132,7 @@ sap.ui.define([
1942
2132
  warn(this.oLogMock, "[ 1] Set unchanged path: /my/path", sTemplate2);
1943
2133
  warn(this.oLogMock, "[ 1] Set unchanged path: /my/path", sTemplate3);
1944
2134
 
1945
- this.check(assert, [
2135
+ return this.check(assert, [
1946
2136
  mvcView(),
1947
2137
  sTemplate1,
1948
2138
  sTemplate2,
@@ -1955,13 +2145,44 @@ sap.ui.define([
1955
2145
  }
1956
2146
  });
1957
2147
  });
2148
+ //*********************************************************************************************
2149
+ QUnit.test('template:with repeated w/ same variable and value', function (assert) {
2150
+ var oModel = new JSONModel(),
2151
+ sTemplate1 = '<template:with path="bar>/my/path" var="bar"/>',
2152
+ sTemplate2 = '<template:with path="bar>bla" helper="foo"/>',
2153
+ sTemplate3 = '<template:with path="bar>/my/path"/>';
2154
+
2155
+ warn(this.oLogMock, "[ 1] Set unchanged path: /my/path", sTemplate1);
2156
+ warn(this.oLogMock, "[ 1] Set unchanged path: /my/path", sTemplate2);
2157
+ warn(this.oLogMock, "[ 1] Set unchanged path: /my/path", sTemplate3);
2158
+
2159
+ return this.check(assert, [
2160
+ mvcView("", {
2161
+ foo : function () {
2162
+ return "/my/path";
2163
+ }
2164
+ }, this),
2165
+ sTemplate1,
2166
+ sTemplate2,
2167
+ sTemplate3,
2168
+ '</mvc:View>'
2169
+ ], {
2170
+ models : {bar : oModel},
2171
+ bindingContexts : {
2172
+ bar : oModel.createBindingContext("/my/path")
2173
+ }
2174
+ });
2175
+ });
1958
2176
 
1959
2177
  //*********************************************************************************************
2178
+ /**
2179
+ * @deprecated As of version 1.120.0
2180
+ */
1960
2181
  QUnit.test("template:with synchronously and helper returning Promise", function (assert) {
1961
2182
  window.foo = function () {
1962
2183
  return Promise.resolve();
1963
2184
  };
1964
- this.checkError(assert, [
2185
+ return this.checkError(assert, [
1965
2186
  mvcView(),
1966
2187
  '<template:with path="/unused" helper="foo"/>',
1967
2188
  '</mvc:View>'
@@ -1971,6 +2192,24 @@ sap.ui.define([
1971
2192
  });
1972
2193
 
1973
2194
  //*********************************************************************************************
2195
+ QUnit.test("template:with synchronously and helper returning Promise", function (assert) {
2196
+ return this.checkError(assert, [
2197
+ mvcView("", {
2198
+ foo : function () {
2199
+ return Promise.resolve();
2200
+ }
2201
+ }, this),
2202
+ '<template:with path="/unused" helper="foo"/>',
2203
+ '</mvc:View>'
2204
+ ], "Async helper in sync view in {0}", {
2205
+ models : new JSONModel()
2206
+ });
2207
+ });
2208
+
2209
+ //*********************************************************************************************
2210
+ /**
2211
+ * @deprecated As of version 1.120.0
2212
+ */
1974
2213
  QUnit.test("template:with synchronously and helper returning SyncPromise", function (assert) {
1975
2214
  var oModel = new JSONModel({
1976
2215
  target : {
@@ -1981,7 +2220,7 @@ sap.ui.define([
1981
2220
  window.foo = function (oContext) {
1982
2221
  return SyncPromise.resolve("/target");
1983
2222
  };
1984
- this.check(assert, [
2223
+ return this.check(assert, [
1985
2224
  mvcView(),
1986
2225
  '<template:with path="/some/random/path" helper="foo">',
1987
2226
  '<template:if test="{flag}">',
@@ -1994,9 +2233,34 @@ sap.ui.define([
1994
2233
  });
1995
2234
  });
1996
2235
 
2236
+ //*********************************************************************************************
2237
+ QUnit.test("template:with synchronously and helper returning SyncPromise", function (assert) {
2238
+ var oModel = new JSONModel({
2239
+ target : {
2240
+ flag : true
2241
+ }
2242
+ });
2243
+
2244
+ return this.check(assert, [
2245
+ mvcView("", {
2246
+ foo : function (oContext) {
2247
+ return SyncPromise.resolve("/target");
2248
+ }
2249
+ }, this),
2250
+ '<template:with path="/some/random/path" helper="foo">',
2251
+ '<template:if test="{flag}">',
2252
+ '<In id="flag"/>',
2253
+ '</template:if>',
2254
+ '</template:with>',
2255
+ '</mvc:View>'
2256
+ ], {
2257
+ models : oModel
2258
+ });
2259
+ });
2260
+
1997
2261
  //*********************************************************************************************
1998
2262
  QUnit.test("template:repeat w/o named models", function (assert) {
1999
- this.check(assert, [
2263
+ return this.check(assert, [
2000
2264
  mvcView(),
2001
2265
  '<template:repeat list="{/items}">',
2002
2266
  '<In src="{src}"/>',
@@ -2032,7 +2296,7 @@ sap.ui.define([
2032
2296
  return aArray;
2033
2297
  }
2034
2298
 
2035
- this.check(assert, [
2299
+ return this.check(assert, [
2036
2300
  mvcView(),
2037
2301
  '<template:repeat list="{/items}">',
2038
2302
  '<In src="{src}"/>',
@@ -2047,7 +2311,7 @@ sap.ui.define([
2047
2311
 
2048
2312
  //*********************************************************************************************
2049
2313
  QUnit.test("template:repeat, startIndex & length", function (assert) {
2050
- this.check(assert, [
2314
+ return this.check(assert, [
2051
2315
  mvcView(),
2052
2316
  '<template:repeat list="' + "{path:'/items',startIndex:1,length:2}" + '">',
2053
2317
  '<In src="{src}"/>',
@@ -2073,7 +2337,7 @@ sap.ui.define([
2073
2337
 
2074
2338
  //*********************************************************************************************
2075
2339
  QUnit.test("template:repeat with named models", function (assert) {
2076
- this.check(assert, [
2340
+ return this.check(assert, [
2077
2341
  mvcView(),
2078
2342
  '<template:repeat list="{modelName>/items}">',
2079
2343
  '<In src="{modelName>src}"/>',
@@ -2100,7 +2364,7 @@ sap.ui.define([
2100
2364
 
2101
2365
  //*********************************************************************************************
2102
2366
  QUnit.test('template:repeat w/o list', function (assert) {
2103
- this.checkError(assert, [
2367
+ return this.checkError(assert, [
2104
2368
  mvcView(),
2105
2369
  '<template:repeat/>',
2106
2370
  '</mvc:View>'
@@ -2109,7 +2373,7 @@ sap.ui.define([
2109
2373
 
2110
2374
  //*********************************************************************************************
2111
2375
  QUnit.test('template:repeat list="no binding"', function (assert) {
2112
- this.checkError(assert, [
2376
+ return this.checkError(assert, [
2113
2377
  mvcView(),
2114
2378
  '<template:repeat list="no binding"/>',
2115
2379
  '</mvc:View>'
@@ -2118,7 +2382,7 @@ sap.ui.define([
2118
2382
 
2119
2383
  //*********************************************************************************************
2120
2384
  QUnit.test('template:repeat list="{unknown>foo}"', function (assert) {
2121
- this.checkError(assert, [
2385
+ return this.checkError(assert, [
2122
2386
  mvcView(),
2123
2387
  '<template:repeat list="{unknown>foo}"/>',
2124
2388
  '</mvc:View>'
@@ -2129,7 +2393,7 @@ sap.ui.define([
2129
2393
  QUnit.test('template:repeat list="{/unsupported/path}"', function (assert) {
2130
2394
  //TODO is this the expected behavior? the loop has no iterations and that's it?
2131
2395
  // Note: the same happens with a relative path if there is no binding context for the model
2132
- this.check(assert, [
2396
+ return this.check(assert, [
2133
2397
  mvcView(),
2134
2398
  '<template:repeat list="{/unsupported/path}"/>',
2135
2399
  '</mvc:View>'
@@ -2140,7 +2404,7 @@ sap.ui.define([
2140
2404
 
2141
2405
  //*********************************************************************************************
2142
2406
  QUnit.test("template:repeat w/ complex binding and model", function (assert) {
2143
- this.check(assert, [
2407
+ return this.check(assert, [
2144
2408
  mvcView(),
2145
2409
  // Note: foo: 'bar' just serves as placeholder for any parameter (complex syntax)
2146
2410
  '<template:repeat list="{foo: \'bar\', path:\'modelName>/items\'}">',
@@ -2168,7 +2432,7 @@ sap.ui.define([
2168
2432
 
2169
2433
  //*********************************************************************************************
2170
2434
  QUnit.test("template:repeat nested", function (assert) {
2171
- this.check(assert, [
2435
+ return this.check(assert, [
2172
2436
  mvcView(),
2173
2437
  '<template:repeat list="{customer>/orders}">',
2174
2438
  '<In src="{customer>id}"/>',
@@ -2209,7 +2473,7 @@ sap.ui.define([
2209
2473
 
2210
2474
  //*********************************************************************************************
2211
2475
  QUnit.test("template:repeat with loop variable", function (assert) {
2212
- this.check(assert, [
2476
+ return this.check(assert, [
2213
2477
  mvcView(),
2214
2478
  '<template:repeat list="{modelName>/items}" var="item">',
2215
2479
  '<In src="{item>src}"/>',
@@ -2236,14 +2500,14 @@ sap.ui.define([
2236
2500
 
2237
2501
  //*********************************************************************************************
2238
2502
  QUnit.test("template:repeat with missing loop variable", function (assert) {
2239
- this.checkError(assert, [
2503
+ return this.checkError(assert, [
2240
2504
  mvcView(),
2241
2505
  '<template:repeat var="" list="{/unused}"/>',
2242
2506
  '</mvc:View>'
2243
2507
  ], "Missing variable name for {0}");
2244
2508
  });
2245
2509
 
2246
- [false, true].forEach(function (bAsync) {
2510
+ [/**@deprecated As of version 1.120.0*/false, true].forEach(function (bAsync) {
2247
2511
  [false, true].forEach(function (bDebug) {
2248
2512
  //**************************************************************************************
2249
2513
  QUnit.test("fragment support incl. template:require, async = " + bAsync
@@ -2293,6 +2557,9 @@ sap.ui.define([
2293
2557
  });
2294
2558
 
2295
2559
  //**************************************************************************************
2560
+ /**
2561
+ * @deprecated As of version 1.120.0
2562
+ */
2296
2563
  QUnit.test("fragment with FragmentDefinition incl. template:require, async = " + bAsync
2297
2564
  + ", debug = " + bDebug, function (assert) {
2298
2565
  var aModuleNames = [
@@ -2358,10 +2625,73 @@ sap.ui.define([
2358
2625
  });
2359
2626
  });
2360
2627
 
2628
+ //**************************************************************************************
2629
+ [false, true].forEach(function (bDebug) {
2630
+ //**************************************************************************************
2631
+ var sTitle = "fragment with FragmentDefinition incl. template:require, debug = "
2632
+ + bDebug;
2633
+
2634
+ QUnit.test(sTitle, function (assert) {
2635
+ var mModuleNames = {
2636
+ MyHelper : "foo.Helper",
2637
+ Helper : "sap.ui.core.sample.ViewTemplate.scenario.Helper",
2638
+ AnnotationHelper : "sap.ui.model.odata.AnnotationHelper"
2639
+ },
2640
+ aFragmentContent = [
2641
+ '<FragmentDefinition xmlns="sap.ui.core" xmlns:template='
2642
+ + '"http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"'
2643
+ + ' template:require="'
2644
+ + JSON.stringify(mModuleNames).replaceAll('"', "'") + '">',
2645
+ '<Text id="first" text="'
2646
+ + "{formatter: 'MyHelper.bar', path: '/flag'}" + '"/>',
2647
+ '<Fragment fragmentName="innerFragment" type="XML"/>',
2648
+ '<In id="last"/>',
2649
+ '</FragmentDefinition>'
2650
+ ];
2651
+
2652
+ this.expectLoad(true, "myFragment", xml(assert, aFragmentContent));
2653
+ this.expectRequire(true, Object.values(mModuleNames), function () {
2654
+ return [{
2655
+ bar : function (vValue) {
2656
+ return "*" + vValue + "*";
2657
+ }
2658
+ }, {}, {}];
2659
+ });
2660
+ this.expectLoad(true, "innerFragment",
2661
+ xml(assert, ['<In xmlns="sap.ui.core" id="inner"/>']));
2662
+ this.expectLoad(true, "yetAnotherFragment",
2663
+ xml(assert, ['<In xmlns="sap.ui.core" id="yetAnother"/>']));
2664
+
2665
+ return this.checkTracing(assert, bDebug, [
2666
+ {m : "[ 0] Start processing qux"},
2667
+ {m : "[ 1] fragmentName = myFragment", d : 1},
2668
+ {m : "[ 1] text = *true*", d : aFragmentContent[1]},
2669
+ {m : "[ 2] fragmentName = innerFragment", d : aFragmentContent[2]},
2670
+ {m : "[ 2] Finished", d : "</Fragment>"},
2671
+ {m : "[ 1] Finished", d : "</Fragment>"},
2672
+ {m : "[ 1] fragmentName = yetAnotherFragment", d : 2},
2673
+ {m : "[ 1] Finished", d : "</Fragment>"},
2674
+ {m : "[ 0] Finished processing qux"}
2675
+ ], [
2676
+ mvcView(),
2677
+ '<Fragment fragmentName="myFragment" type="XML"/>',
2678
+ '<Fragment fragmentName="yetAnotherFragment" type="XML"/>',
2679
+ '</mvc:View>'
2680
+ ], {
2681
+ models : new JSONModel({flag : true})
2682
+ }, [
2683
+ '<Text id="first" text="*true*"/>',
2684
+ '<In id="inner"/>',
2685
+ '<In id="last"/>',
2686
+ '<In id="yetAnother"/>'
2687
+ ], true);
2688
+ });
2689
+ });
2690
+
2361
2691
  //*********************************************************************************************
2362
2692
  QUnit.test("dynamic fragment names", function (assert) {
2363
2693
  this.expectLoad(false, "dynamicFragmentName", xml(assert, ['<In xmlns="sap.ui.core"/>']));
2364
- this.check(assert, [
2694
+ return this.check(assert, [
2365
2695
  mvcView(),
2366
2696
  '<Fragment fragmentName="{= \'dynamicFragmentName\' }" type="XML"/>',
2367
2697
  '</mvc:View>'
@@ -2401,7 +2731,7 @@ sap.ui.define([
2401
2731
  this.expectLoad(false, "myFragment",
2402
2732
  xml(assert, ['<In xmlns="sap.ui.core" src="{src}" />']));
2403
2733
 
2404
- this.check(assert, [
2734
+ return this.check(assert, [
2405
2735
  mvcView(),
2406
2736
  '<template:repeat list="{/items}">',
2407
2737
  '<Fragment fragmentName="myFragment" type="XML"/>',
@@ -2426,7 +2756,7 @@ sap.ui.define([
2426
2756
 
2427
2757
  //*********************************************************************************************
2428
2758
  QUnit.test("fragment with type != XML", function (assert) {
2429
- this.check(assert, [
2759
+ return this.check(assert, [
2430
2760
  mvcView(),
2431
2761
  '<Fragment fragmentName="nonXMLFragment" type="JS"/>',
2432
2762
  '</mvc:View>'
@@ -2439,7 +2769,7 @@ sap.ui.define([
2439
2769
  QUnit.test("error on fragment with simple cyclic reference", function (assert) {
2440
2770
  this.expectLoad(false, "cycle",
2441
2771
  xml(assert, ['<Fragment xmlns="sap.ui.core" fragmentName="cycle" type="XML"/>']));
2442
- this.checkError(assert, [
2772
+ return this.checkError(assert, [
2443
2773
  mvcView(),
2444
2774
  '<Fragment fragmentName="cycle" type="XML"/>',
2445
2775
  '</mvc:View>'
@@ -2466,7 +2796,7 @@ sap.ui.define([
2466
2796
  this.expectLoad(false, "B",
2467
2797
  xml(assert, ['<Fragment xmlns="sap.ui.core" fragmentName="A" type="XML"/>']));
2468
2798
 
2469
- this.checkError(assert, [
2799
+ return this.checkError(assert, [
2470
2800
  mvcView(),
2471
2801
  '<Fragment fragmentName="A" type="XML"/>',
2472
2802
  '</mvc:View>'
@@ -2532,7 +2862,7 @@ sap.ui.define([
2532
2862
  '</FragmentDefinition>'
2533
2863
  ]));
2534
2864
 
2535
- this.checkTracing(assert, bDebug, [
2865
+ return this.checkTracing(assert, bDebug, [
2536
2866
  {m : "[ 0] Start processing qux"},
2537
2867
  {m : "[ 0] bar = /com.sap.vocabularies.UI.v1.HeaderInfo/Title"},
2538
2868
  {m : "[ 0] baz = /"},
@@ -2594,7 +2924,7 @@ sap.ui.define([
2594
2924
  })
2595
2925
  .returns(oViewExtension);
2596
2926
 
2597
- this.check(assert, [
2927
+ return this.check(assert, [
2598
2928
  mvcView(),
2599
2929
  '<ExtensionPoint name="myExtensionPoint">',
2600
2930
  '<template:if test="true">', // checks that content is processed
@@ -2689,7 +3019,7 @@ sap.ui.define([
2689
3019
  type : "sap.ui.viewExtensions"
2690
3020
  });
2691
3021
 
2692
- this.check(assert, [
3022
+ return this.check(assert, [
2693
3023
  mvcView(),
2694
3024
  '<ExtensionPoint name="' + sName + '">',
2695
3025
  '<template:error />', // this must not be processed!
@@ -2741,7 +3071,12 @@ sap.ui.define([
2741
3071
  });
2742
3072
 
2743
3073
  //*********************************************************************************************
3074
+ /**
3075
+ * @deprecated As of version 1.120.0
3076
+ */
2744
3077
  QUnit.test("template:alias", function (assert) {
3078
+ var oObjectPathMock = this.mock(ObjectPath);
3079
+
2745
3080
  window.foo = {
2746
3081
  Helper : {
2747
3082
  bar : function () {
@@ -2768,9 +3103,10 @@ sap.ui.define([
2768
3103
  };
2769
3104
 
2770
3105
  // make sure we do not create namespaces!
2771
- this.oObjectPathMock.expects("get").atLeast(1).withExactArgs(sinon.match.string.or(sinon.match.array))
3106
+ oObjectPathMock.expects("get").atLeast(1)
3107
+ .withExactArgs(sinon.match.string.or(sinon.match.array))
2772
3108
  .callThrough();
2773
- this.oObjectPathMock.expects("get").atLeast(1)
3109
+ oObjectPathMock.expects("get").atLeast(1)
2774
3110
  .withExactArgs(sinon.match.string.or(sinon.match.array), sinon.match.object)
2775
3111
  .callThrough();
2776
3112
  this.mock(BindingParser).expects("complexParser").atLeast(1)
@@ -2832,6 +3168,95 @@ sap.ui.define([
2832
3168
  ]);
2833
3169
  });
2834
3170
 
3171
+ //*********************************************************************************************
3172
+ QUnit.test("template:alias", function (assert) {
3173
+ var oObjectPathMock = this.mock(ObjectPath),
3174
+ mRequiredModules = {
3175
+ Helper : {
3176
+ bar : function () {
3177
+ assert.ok(!this || !("bar" in this), "no jQuery.proxy(..., oScope) used");
3178
+ // return absolute path so this function serves as helper & formatter!
3179
+ return "/bar";
3180
+ },
3181
+ checkScope : function () {
3182
+ // Note: this makes sure that the current scope of aliases is passed as
3183
+ // binding parameter for v4.ODataMetaModel's computed annotations
3184
+ assert.deepEqual(this.getBindingInfo("any").parameters, {
3185
+ scope : {
3186
+ Helper : mRequiredModules.Helper,
3187
+ bar : mRequiredModules.Helper.bar,
3188
+ // see "redefine existing alias" below
3189
+ foo : mRequiredModules.Helper.bar
3190
+ }
3191
+ }, "scope available in binding info");
3192
+ },
3193
+ foo : function () {
3194
+ assert.ok(!this || !("foo" in this), "no jQuery.proxy(..., oScope) used");
3195
+ return "/foo";
3196
+ }
3197
+ }
3198
+ };
3199
+
3200
+ oObjectPathMock.expects("get").atLeast(1)
3201
+ .withExactArgs(sinon.match.string.or(sinon.match.array), sinon.match.object)
3202
+ .callThrough();
3203
+ this.mock(BindingParser).expects("complexParser").atLeast(1)
3204
+ .withExactArgs(sinon.match.string, sinon.match.object, sinon.match.bool,
3205
+ /*bTolerateFunctionsNotFound*/true, /*bStaticContext*/true, /*bPreferContext*/true)
3206
+ .callThrough();
3207
+
3208
+ // Note: <Label text="..."> remains unresolved, <Text text="..."> MUST be resolved
3209
+ return this.check(assert, [
3210
+ mvcView("", mRequiredModules, this),
3211
+ "<Label text=\"{formatter: '.bar', path: '/'}\"/>",
3212
+ "<Label text=\"{formatter: '.foo', path: '/'}\"/>",
3213
+ '<template:alias name=".bar" value="Helper.bar">',
3214
+ "<Text text=\"{formatter: '.bar', path: '/', parameters: {foo : 'bar'}}\"/>",
3215
+ "<Label text=\"{formatter: '.foo', path: '/'}\"/>",
3216
+ '<template:alias name=".foo" value="Helper.foo">',
3217
+ "<Text text=\"{formatter: '.foo', path: '/'}\"/>",
3218
+ // redefine existing alias
3219
+ '<template:alias name=".foo" value="Helper.bar">',
3220
+ "<Text text=\"{formatter: '.foo', path: '/'}\"/>",
3221
+ "<Label text=\"{formatter: 'Helper.checkScope', path: '/'}\"/>",
3222
+ '</template:alias>',
3223
+ // old value must be used again
3224
+ "<Text text=\"{formatter: '.foo', path: '/'}\"/>",
3225
+ '</template:alias>',
3226
+ // <template:repeat> uses scope
3227
+ "<template:repeat list=\"{path: '/', factory: '.bar'}\"/>",
3228
+ // <template:with> uses scope
3229
+ '<template:with path="/" helper=".bar"/>',
3230
+ '</template:alias>',
3231
+ // aliases go out of scope
3232
+ "<Label text=\"{formatter: '.bar', path: '/'}\"/>",
3233
+ "<Label text=\"{formatter: '.foo', path: '/'}\"/>",
3234
+ // relative aliases
3235
+ '<template:alias name=".H" value="Helper">',
3236
+ "<Text text=\"{formatter: '.H.foo', path: '/'}\"/>",
3237
+ '<template:alias name=".bar" value=".H.bar">',
3238
+ "<Text text=\"{formatter: '.bar', path: '/'}\"/>",
3239
+ '</template:alias>',
3240
+ '</template:alias>',
3241
+ '</mvc:View>'
3242
+ ], {
3243
+ models : new JSONModel({/*don't care*/})
3244
+ }, [
3245
+ "<Label text=\"{formatter: '.bar', path: '/'}\"/>",
3246
+ "<Label text=\"{formatter: '.foo', path: '/'}\"/>",
3247
+ '<Text text="/bar"/>',
3248
+ "<Label text=\"{formatter: '.foo', path: '/'}\"/>",
3249
+ '<Text text="/foo"/>',
3250
+ '<Text text="/bar"/>',
3251
+ "<Label/>", // checkScope() returns undefined
3252
+ '<Text text="/foo"/>',
3253
+ "<Label text=\"{formatter: '.bar', path: '/'}\"/>",
3254
+ "<Label text=\"{formatter: '.foo', path: '/'}\"/>",
3255
+ '<Text text="/foo"/>',
3256
+ '<Text text="/bar"/>'
3257
+ ]);
3258
+ });
3259
+
2835
3260
  //*********************************************************************************************
2836
3261
  [
2837
3262
  '<template:alias/>',
@@ -2840,7 +3265,7 @@ sap.ui.define([
2840
3265
  '<template:alias name=".foo.bar"/>'
2841
3266
  ].forEach(function (sViewContent) {
2842
3267
  QUnit.test(sViewContent, function (assert) {
2843
- this.checkError(assert, [
3268
+ return this.checkError(assert, [
2844
3269
  mvcView(),
2845
3270
  sViewContent,
2846
3271
  '</mvc:View>'
@@ -2856,7 +3281,7 @@ sap.ui.define([
2856
3281
  'value=".notFound"'
2857
3282
  ].forEach(function (sValue) {
2858
3283
  QUnit.test('<template:alias name=".foo" ' + sValue + '>', function (assert) {
2859
- this.checkError(assert, [
3284
+ return this.checkError(assert, [
2860
3285
  mvcView(),
2861
3286
  '<template:alias name=".foo" ' + sValue + '/>',
2862
3287
  '</mvc:View>'
@@ -2866,7 +3291,7 @@ sap.ui.define([
2866
3291
 
2867
3292
  //*********************************************************************************************
2868
3293
  QUnit.test("Test console log for two digit nesting level", function (assert) {
2869
- this.check(assert, [
3294
+ return this.check(assert, [
2870
3295
  mvcView(),
2871
3296
  '<template:if test="true">',
2872
3297
  '<template:if test="true">',
@@ -3102,7 +3527,7 @@ sap.ui.define([
3102
3527
  return SyncPromise.resolve();
3103
3528
  }, "foo", "Bar");
3104
3529
 
3105
- this.checkTracing(assert, bDebug, aExpectedMessages, aViewContent, {},
3530
+ return this.checkTracing(assert, bDebug, aExpectedMessages, aViewContent, {},
3106
3531
  [aViewContent[1]]);
3107
3532
  });
3108
3533
  });
@@ -3190,7 +3615,7 @@ sap.ui.define([
3190
3615
  ], true, function (oElement, oInterface) { // visitor for f:Bar
3191
3616
 
3192
3617
  // code under test
3193
- const oPromise = oInterface.getResult(); // will fail, first param is not optional
3618
+ var oPromise = oInterface.getResult(); // will fail, first param is not optional
3194
3619
  assert.strictEqual(oPromise.isRejected(), true);
3195
3620
  oPromise.caught();
3196
3621
 
@@ -3425,7 +3850,7 @@ sap.ui.define([
3425
3850
  return SyncPromise.resolve(null); // something other than undefined
3426
3851
  }, "foo", "Bar");
3427
3852
 
3428
- this.checkError(assert, aViewContent, "Unexpected return value from visitor for {0}",
3853
+ return this.checkError(assert, aViewContent, "Unexpected return value from visitor for {0}",
3429
3854
  null, 1);
3430
3855
  });
3431
3856
 
@@ -3614,6 +4039,9 @@ sap.ui.define([
3614
4039
  //TODO sanity check that visitor returns a *sync* promise in case of sync XML Templating?
3615
4040
 
3616
4041
  //*********************************************************************************************
4042
+ /**
4043
+ * @deprecated As of version 1.120.0
4044
+ */
3617
4045
  QUnit.test("async fragment in template:alias/if/repeat/with", function (assert) {
3618
4046
  // Note: <Label text="..."> remains unresolved, <Text text="..."> MUST be resolved
3619
4047
  var aFragmentContent = ["<Text text=\"{formatter: '.bar', path: 'here>flag'}\"/>"],
@@ -3696,6 +4124,87 @@ sap.ui.define([
3696
4124
  ], true);
3697
4125
  });
3698
4126
 
4127
+ //*********************************************************************************************
4128
+ QUnit.test("async fragment in template:alias/if/repeat/with", function (assert) {
4129
+ // Note: <Label text="..."> remains unresolved, <Text text="..."> MUST be resolved
4130
+ var aFragmentContent = ["<Text text=\"{formatter: '.bar', path: 'here>flag'}\"/>"],
4131
+ sFragmentXml = xml(assert, aFragmentContent),
4132
+ aViewContent = [
4133
+ mvcView("", {
4134
+ Helper : {
4135
+ bar : function (vValue) {
4136
+ return "*" + vValue + "*";
4137
+ }
4138
+ }
4139
+ }, this),
4140
+ '<template:alias name=".bar" value="Helper.bar">',
4141
+ '<template:with path="/some/random/path" var="here">',
4142
+ '<template:if test="true">',
4143
+ '<template:repeat list="{/items}">',
4144
+ '<Fragment fragmentName="{src}" type="XML"/>',
4145
+ '</template:repeat>',
4146
+ '</template:if>',
4147
+ '</template:with>', // context goes out of scope
4148
+ '</template:alias>', // alias goes out of scope
4149
+ '<Text text="{here>flag}"/>',
4150
+ "<Label text=\"{formatter: '.bar', path: '/'}\"/>",
4151
+ '</mvc:View>'
4152
+ ];
4153
+
4154
+ this.expectLoad(true, "myFragmentA", sFragmentXml);
4155
+ this.expectLoad(true, "myFragmentB", sFragmentXml);
4156
+ this.expectLoad(true, "myFragmentC", sFragmentXml);
4157
+
4158
+ return this.checkTracing(assert, true, [
4159
+ {m : "[ 0] Start processing qux"},
4160
+ {m : "[ 1] here = /some/random/path", d : 2},
4161
+ {m : "[ 2] test == \"true\" --> true", d : 3},
4162
+ {m : "[ 3] Starting", d : 4},
4163
+ {m : "[ 3] = /items/0", d : 4},
4164
+ {m : "[ 4] fragmentName = myFragmentA", d : 5},
4165
+ {m : "[ 4] text = *true*", d : aFragmentContent[0]},
4166
+ {m : "[ 4] Finished", d : "</Fragment>"},
4167
+ {m : "[ 3] = /items/1", d : 4},
4168
+ {m : "[ 4] fragmentName = myFragmentB", d : 5},
4169
+ {m : "[ 4] text = *true*", d : aFragmentContent[0]},
4170
+ {m : "[ 4] Finished", d : "</Fragment>"},
4171
+ {m : "[ 3] = /items/2", d : 4},
4172
+ {m : "[ 4] fragmentName = myFragmentC", d : 5},
4173
+ {m : "[ 4] text = *true*", d : aFragmentContent[0]},
4174
+ {m : "[ 4] Finished", d : "</Fragment>"},
4175
+ {m : "[ 3] Finished", d : "</template:repeat>"},
4176
+ {m : "[ 2] Finished", d : "</template:if>"},
4177
+ {m : "[ 1] Finished", d : "</template:with>"},
4178
+ {m : "[ 0] Binding not ready for attribute text", d : 10},
4179
+ {m : "[ 0] Binding not ready for attribute text", d : 11},
4180
+ {m : "[ 0] Finished processing qux"}
4181
+ ], aViewContent, {
4182
+ models : new JSONModel({
4183
+ items : [{
4184
+ src : "myFragmentA"
4185
+ }, {
4186
+ src : "myFragmentB"
4187
+ }, {
4188
+ src : "myFragmentC"
4189
+ }],
4190
+ some : {
4191
+ random : {
4192
+ path : {
4193
+ flag : true
4194
+ }
4195
+ }
4196
+ }
4197
+ })
4198
+ }, [
4199
+ '<Text text="*true*"/>',
4200
+ '<Text text="*true*"/>',
4201
+ '<Text text="*true*"/>',
4202
+ // Note: XML serializer outputs &gt; encoding...
4203
+ aViewContent[10].replace(">", "&gt;"),
4204
+ aViewContent[11]
4205
+ ], true);
4206
+ });
4207
+
3699
4208
  //*********************************************************************************************
3700
4209
  QUnit.test("async binding resolution", function (assert) {
3701
4210
  var aViewContent = [
@@ -4018,7 +4527,7 @@ sap.ui.define([
4018
4527
  window.foo = function () {
4019
4528
  return Promise.resolve();
4020
4529
  };
4021
- this.checkError(assert, [
4530
+ return this.checkError(assert, [
4022
4531
  mvcView(),
4023
4532
  '<Text text="{path: \'/\', formatter: \'foo\'}" tooltip="{/bar}"/>',
4024
4533
  '</mvc:View>'