@openui5/sap.ui.core 1.116.0 → 1.117.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 (474) hide show
  1. package/.eslintrc.json +1 -22
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +1 -1
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/sap/base/Event.js +4 -4
  9. package/src/sap/base/Eventing.js +5 -6
  10. package/src/sap/base/config/MemoryConfigurationProvider.js +10 -1
  11. package/src/sap/base/config.js +3 -2
  12. package/src/sap/base/i18n/Formatting.js +30 -32
  13. package/src/sap/base/i18n/LanguageTag.js +2 -2
  14. package/src/sap/base/i18n/Localization.js +19 -20
  15. package/src/sap/base/i18n/date/CalendarType.js +1 -1
  16. package/src/sap/base/i18n/date/CalendarWeekNumbering.js +1 -1
  17. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  18. package/src/sap/base/util/JSTokenizer.js +1 -1
  19. package/src/sap/base/util/fetch.js +4 -4
  20. package/src/sap/base/util/mixedFetch.js +2 -2
  21. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  22. package/src/sap/base/util/restricted/_castArray.js +1 -1
  23. package/src/sap/base/util/restricted/_compact.js +1 -1
  24. package/src/sap/base/util/restricted/_curry.js +1 -1
  25. package/src/sap/base/util/restricted/_debounce.js +1 -1
  26. package/src/sap/base/util/restricted/_difference.js +1 -1
  27. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  28. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  29. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  30. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  31. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  32. package/src/sap/base/util/restricted/_flatten.js +1 -1
  33. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  34. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  35. package/src/sap/base/util/restricted/_intersection.js +1 -1
  36. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  37. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  38. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  39. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  40. package/src/sap/base/util/restricted/_isNil.js +1 -1
  41. package/src/sap/base/util/restricted/_max.js +1 -1
  42. package/src/sap/base/util/restricted/_merge.js +1 -1
  43. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  44. package/src/sap/base/util/restricted/_min.js +1 -1
  45. package/src/sap/base/util/restricted/_omit.js +1 -1
  46. package/src/sap/base/util/restricted/_pick.js +1 -1
  47. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  48. package/src/sap/base/util/restricted/_throttle.js +1 -1
  49. package/src/sap/base/util/restricted/_toArray.js +1 -1
  50. package/src/sap/base/util/restricted/_union.js +1 -1
  51. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  52. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  53. package/src/sap/base/util/restricted/_uniq.js +1 -1
  54. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  55. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  56. package/src/sap/base/util/restricted/_without.js +1 -1
  57. package/src/sap/base/util/restricted/_xor.js +1 -1
  58. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  59. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  60. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  61. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  62. package/src/sap/base/util/syncFetch.js +2 -2
  63. package/src/sap/ui/Device.js +3 -3
  64. package/src/sap/ui/Global.js +4 -4
  65. package/src/sap/ui/base/Event.js +6 -4
  66. package/src/sap/ui/base/EventProvider.js +1 -1
  67. package/src/sap/ui/base/Interface.js +1 -1
  68. package/src/sap/ui/base/ManagedObject.js +2 -4
  69. package/src/sap/ui/base/ManagedObjectMetadata.js +4 -6
  70. package/src/sap/ui/base/Metadata.js +1 -1
  71. package/src/sap/ui/base/Object.js +1 -1
  72. package/src/sap/ui/base/ObjectPool.js +1 -1
  73. package/src/sap/ui/core/.library +2 -2
  74. package/src/sap/ui/core/AnimationMode.js +1 -1
  75. package/src/sap/ui/core/BusyIndicator.js +1 -1
  76. package/src/sap/ui/core/Component.js +1 -1
  77. package/src/sap/ui/core/ComponentContainer.js +1 -1
  78. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  79. package/src/sap/ui/core/ComponentSupport.js +1 -1
  80. package/src/sap/ui/core/ConfigTest.js +17 -0
  81. package/src/sap/ui/core/Configuration.js +2 -14
  82. package/src/sap/ui/core/Control.js +4 -1
  83. package/src/sap/ui/core/ControlBehavior.js +2 -2
  84. package/src/sap/ui/core/Core.js +3 -1
  85. package/src/sap/ui/core/CustomData.js +1 -1
  86. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  87. package/src/sap/ui/core/Element.js +1 -1
  88. package/src/sap/ui/core/ElementMetadata.js +2 -4
  89. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  90. package/src/sap/ui/core/EventBus.js +1 -1
  91. package/src/sap/ui/core/Fragment.js +1 -1
  92. package/src/sap/ui/core/HTML.js +1 -1
  93. package/src/sap/ui/core/History.js +1 -1
  94. package/src/sap/ui/core/Icon.js +1 -1
  95. package/src/sap/ui/core/IconPool.js +1 -2
  96. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  97. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  98. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  99. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  100. package/src/sap/ui/core/InvisibleText.js +1 -1
  101. package/src/sap/ui/core/Item.js +1 -1
  102. package/src/sap/ui/core/LabelEnablement.js +1 -1
  103. package/src/sap/ui/core/LayoutData.js +1 -1
  104. package/src/sap/ui/core/Lib.js +17 -16
  105. package/src/sap/ui/core/ListItem.js +1 -1
  106. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  107. package/src/sap/ui/core/Locale.js +5 -2
  108. package/src/sap/ui/core/LocaleData.js +12 -4
  109. package/src/sap/ui/core/Manifest.js +5 -5
  110. package/src/sap/ui/core/Message.js +1 -1
  111. package/src/sap/ui/core/Popup.js +37 -50
  112. package/src/sap/ui/core/RenderManager.js +1 -1
  113. package/src/sap/ui/core/Renderer.js +1 -1
  114. package/src/sap/ui/core/Rendering.js +1 -1
  115. package/src/sap/ui/core/ResizeHandler.js +1 -1
  116. package/src/sap/ui/core/ScrollBar.js +1 -1
  117. package/src/sap/ui/core/SeparatorItem.js +1 -1
  118. package/src/sap/ui/core/Shortcut.js +11 -9
  119. package/src/sap/ui/core/StaticArea.js +1 -1
  120. package/src/sap/ui/core/Theming.js +16 -9
  121. package/src/sap/ui/core/Title.js +1 -1
  122. package/src/sap/ui/core/TooltipBase.js +1 -1
  123. package/src/sap/ui/core/UIArea.js +1 -1
  124. package/src/sap/ui/core/UIComponent.js +1 -1
  125. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  126. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  127. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  128. package/src/sap/ui/core/XMLComposite.js +1 -1
  129. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  130. package/src/sap/ui/core/XMLTemplateProcessor.js +27 -5
  131. package/src/sap/ui/core/_IconRegistry.js +82 -11
  132. package/src/sap/ui/core/boot/_bootConfig.js +137 -0
  133. package/src/sap/ui/core/boot/_runBoot.js +16 -0
  134. package/src/sap/ui/core/boot/initDOM.js +96 -0
  135. package/src/sap/ui/core/boot/loadCalendar.js +50 -0
  136. package/src/sap/ui/core/boot/loadManifest.js +55 -0
  137. package/src/sap/ui/core/boot/loadModules.js +80 -0
  138. package/src/sap/ui/core/boot/manifest.json +11 -0
  139. package/src/sap/ui/core/boot/onInit.js +44 -0
  140. package/src/sap/ui/core/boot.js +107 -0
  141. package/src/sap/ui/core/date/UI5Date.js +9 -3
  142. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  143. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  144. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  145. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  146. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  147. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  148. package/src/sap/ui/core/format/DateFormat.js +13 -12
  149. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  150. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  151. package/src/sap/ui/core/library.js +32 -6
  152. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  153. package/src/sap/ui/core/message/Message.js +1 -1
  154. package/src/sap/ui/core/message/MessageManager.js +1 -1
  155. package/src/sap/ui/core/message/MessageMixin.js +6 -5
  156. package/src/sap/ui/core/message/MessageParser.js +1 -1
  157. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  158. package/src/sap/ui/core/messagebundle_ar.properties +57 -55
  159. package/src/sap/ui/core/messagebundle_bg.properties +57 -55
  160. package/src/sap/ui/core/messagebundle_ca.properties +30 -28
  161. package/src/sap/ui/core/messagebundle_cs.properties +43 -41
  162. package/src/sap/ui/core/messagebundle_cy.properties +58 -56
  163. package/src/sap/ui/core/messagebundle_da.properties +56 -54
  164. package/src/sap/ui/core/messagebundle_de.properties +58 -56
  165. package/src/sap/ui/core/messagebundle_el.properties +47 -45
  166. package/src/sap/ui/core/messagebundle_en.properties +58 -56
  167. package/src/sap/ui/core/messagebundle_en_GB.properties +58 -56
  168. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +2 -0
  169. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +2 -0
  170. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +3 -0
  171. package/src/sap/ui/core/messagebundle_es.properties +47 -45
  172. package/src/sap/ui/core/messagebundle_es_MX.properties +57 -55
  173. package/src/sap/ui/core/messagebundle_et.properties +54 -52
  174. package/src/sap/ui/core/messagebundle_fi.properties +51 -49
  175. package/src/sap/ui/core/messagebundle_fr.properties +36 -34
  176. package/src/sap/ui/core/messagebundle_fr_CA.properties +21 -19
  177. package/src/sap/ui/core/messagebundle_hi.properties +42 -40
  178. package/src/sap/ui/core/messagebundle_hr.properties +57 -55
  179. package/src/sap/ui/core/messagebundle_hu.properties +58 -56
  180. package/src/sap/ui/core/messagebundle_id.properties +58 -56
  181. package/src/sap/ui/core/messagebundle_it.properties +59 -57
  182. package/src/sap/ui/core/messagebundle_iw.properties +58 -56
  183. package/src/sap/ui/core/messagebundle_ja.properties +50 -48
  184. package/src/sap/ui/core/messagebundle_kk.properties +43 -41
  185. package/src/sap/ui/core/messagebundle_ko.properties +19 -17
  186. package/src/sap/ui/core/messagebundle_lt.properties +58 -56
  187. package/src/sap/ui/core/messagebundle_lv.properties +58 -56
  188. package/src/sap/ui/core/messagebundle_ms.properties +58 -56
  189. package/src/sap/ui/core/messagebundle_nl.properties +57 -55
  190. package/src/sap/ui/core/messagebundle_no.properties +55 -53
  191. package/src/sap/ui/core/messagebundle_pl.properties +55 -53
  192. package/src/sap/ui/core/messagebundle_pt.properties +57 -55
  193. package/src/sap/ui/core/messagebundle_pt_PT.properties +57 -55
  194. package/src/sap/ui/core/messagebundle_ro.properties +58 -56
  195. package/src/sap/ui/core/messagebundle_ru.properties +57 -55
  196. package/src/sap/ui/core/messagebundle_sh.properties +58 -56
  197. package/src/sap/ui/core/messagebundle_sk.properties +57 -55
  198. package/src/sap/ui/core/messagebundle_sl.properties +58 -56
  199. package/src/sap/ui/core/messagebundle_sv.properties +54 -52
  200. package/src/sap/ui/core/messagebundle_th.properties +17 -15
  201. package/src/sap/ui/core/messagebundle_tr.properties +58 -56
  202. package/src/sap/ui/core/messagebundle_uk.properties +58 -56
  203. package/src/sap/ui/core/messagebundle_vi.properties +58 -56
  204. package/src/sap/ui/core/messagebundle_zh_CN.properties +58 -56
  205. package/src/sap/ui/core/messagebundle_zh_TW.properties +58 -56
  206. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  207. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  208. package/src/sap/ui/core/mvc/JSView.js +1 -1
  209. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  210. package/src/sap/ui/core/mvc/View.js +1 -1
  211. package/src/sap/ui/core/mvc/XMLView.js +14 -2
  212. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  213. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  214. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  215. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  216. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  217. package/src/sap/ui/core/rules/Misc.support.js +1 -1
  218. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  219. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  220. package/src/sap/ui/core/service/Service.js +1 -1
  221. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  222. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  223. package/src/sap/ui/core/support/Plugin.js +1 -1
  224. package/src/sap/ui/core/support/Support.js +7 -4
  225. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  226. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  227. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  228. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  229. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  230. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  231. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  232. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  233. package/src/sap/ui/core/themes/base/Icon.less +2 -2
  234. package/src/sap/ui/core/theming/Parameters.js +0 -5
  235. package/src/sap/ui/core/theming/ThemeManager.js +3 -4
  236. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  237. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  238. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  239. package/src/sap/ui/core/tmpl/Template.js +1 -1
  240. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  241. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  242. package/src/sap/ui/core/util/Export.js +1 -1
  243. package/src/sap/ui/core/util/ExportCell.js +1 -1
  244. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  245. package/src/sap/ui/core/util/ExportRow.js +1 -1
  246. package/src/sap/ui/core/util/ExportType.js +1 -1
  247. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  248. package/src/sap/ui/core/util/File.js +1 -1
  249. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  250. package/src/sap/ui/core/util/MockServer.js +4 -5
  251. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  252. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  253. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  254. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  255. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  256. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  257. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  258. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  259. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  260. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  261. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  262. package/src/sap/ui/debug/ControlTree.js +1 -1
  263. package/src/sap/ui/debug/DebugEnv.js +1 -1
  264. package/src/sap/ui/debug/PropertyList.js +1 -1
  265. package/src/sap/ui/model/ClientModel.js +1 -1
  266. package/src/sap/ui/model/CompositeDataState.js +1 -1
  267. package/src/sap/ui/model/CompositeType.js +1 -1
  268. package/src/sap/ui/model/DataState.js +1 -1
  269. package/src/sap/ui/model/MetaModel.js +1 -1
  270. package/src/sap/ui/model/Model.js +1 -1
  271. package/src/sap/ui/model/SelectionModel.js +1 -1
  272. package/src/sap/ui/model/SimpleType.js +1 -1
  273. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  274. package/src/sap/ui/model/Type.js +1 -1
  275. package/src/sap/ui/model/analytics/AnalyticalBinding.js +166 -79
  276. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +4 -3
  277. package/src/sap/ui/model/analytics/BatchResponseCollector.js +2 -2
  278. package/src/sap/ui/model/analytics/ODataModelAdapter.js +14 -27
  279. package/src/sap/ui/model/analytics/odata4analytics.js +6 -12
  280. package/src/sap/ui/model/base/ManagedObjectModel.js +2 -1
  281. package/src/sap/ui/model/json/JSONModel.js +6 -1
  282. package/src/sap/ui/model/message/MessageModel.js +1 -1
  283. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  284. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  285. package/src/sap/ui/model/odata/ODataMetaModel.js +191 -5
  286. package/src/sap/ui/model/odata/ODataMetadata.js +38 -4
  287. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  288. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  289. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  290. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  291. package/src/sap/ui/model/odata/type/Date.js +1 -1
  292. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  293. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  294. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  295. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  296. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  297. package/src/sap/ui/model/odata/type/Double.js +1 -1
  298. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  299. package/src/sap/ui/model/odata/type/Int.js +1 -1
  300. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  301. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  302. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  303. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  304. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  305. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  306. package/src/sap/ui/model/odata/type/Single.js +1 -1
  307. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  308. package/src/sap/ui/model/odata/type/String.js +1 -1
  309. package/src/sap/ui/model/odata/type/Time.js +1 -1
  310. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  311. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  312. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  313. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  314. package/src/sap/ui/model/odata/v2/ODataModel.js +2 -2
  315. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  316. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +4 -4
  317. package/src/sap/ui/model/odata/v4/Context.js +33 -30
  318. package/src/sap/ui/model/odata/v4/ODataBinding.js +18 -14
  319. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +12 -12
  320. package/src/sap/ui/model/odata/v4/ODataListBinding.js +110 -43
  321. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +20 -28
  322. package/src/sap/ui/model/odata/v4/ODataModel.js +40 -31
  323. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +8 -6
  324. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +14 -14
  325. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +93 -9
  326. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +25 -27
  327. package/src/sap/ui/model/odata/v4/lib/_Cache.js +58 -195
  328. package/src/sap/ui/model/odata/v4/lib/_Helper.js +157 -0
  329. package/src/sap/ui/model/odata/v4/lib/_MetadataRequestor.js +14 -5
  330. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +27 -15
  331. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  332. package/src/sap/ui/model/type/Boolean.js +1 -1
  333. package/src/sap/ui/model/type/Currency.js +1 -1
  334. package/src/sap/ui/model/type/Date.js +1 -1
  335. package/src/sap/ui/model/type/DateInterval.js +1 -1
  336. package/src/sap/ui/model/type/DateTime.js +1 -1
  337. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  338. package/src/sap/ui/model/type/FileSize.js +1 -1
  339. package/src/sap/ui/model/type/Float.js +1 -1
  340. package/src/sap/ui/model/type/Integer.js +1 -1
  341. package/src/sap/ui/model/type/String.js +1 -1
  342. package/src/sap/ui/model/type/Time.js +1 -1
  343. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  344. package/src/sap/ui/model/type/Unit.js +1 -1
  345. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  346. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  347. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  348. package/src/sap/ui/test/TestUtils.js +1 -1
  349. package/src/sap/ui/test/generic/TestBase.js +1 -1
  350. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +1 -3
  351. package/src/sap/ui/test/matchers/_Visitor.js +6 -1
  352. package/src/sap/ui/test/starter/_setupAndStart.js +2 -5
  353. package/src/sap/ui/thirdparty/qunit-2.js +9 -3
  354. package/src/sap/ui/util/Mobile.js +10 -6
  355. package/src/sap/ui/util/Storage.js +1 -1
  356. package/src/sap-ui-boot.js +23 -6
  357. package/src/ui5-boot.js +50 -0
  358. package/src/ui5loader-autoconfig.js +147 -75
  359. package/src/ui5loader.js +320 -360
  360. package/test/sap/ui/core/Device.js +1 -1
  361. package/test/sap/ui/core/demokit/sample/OpaAction/applicationUnderTest/view/Main.view.xml +1 -0
  362. package/test/sap/ui/core/demokit/sample/ViewTemplate/types/Template.controller.js +2 -2
  363. package/test/sap/ui/core/demokit/sample/odata/v2/AutoExpand/AutoExpand.view.xml +24 -5
  364. package/test/sap/ui/core/demokit/sample/odata/v4/Ancestry/Main.view.xml +24 -6
  365. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/DataAggregation.view.xml +20 -5
  366. package/test/sap/ui/core/demokit/sample/odata/v4/DataAggregation/Opa.qunit.js +2 -1
  367. package/test/sap/ui/core/demokit/sample/odata/v4/DeepCreate/Opa.qunit.js +2 -1
  368. package/test/sap/ui/core/demokit/sample/odata/v4/Draft/Opa.qunit.js +2 -1
  369. package/test/sap/ui/core/demokit/sample/odata/v4/FieldGroups/Opa.qunit.js +2 -1
  370. package/test/sap/ui/core/demokit/sample/odata/v4/FlatDataAggregation/FlatDataAggregation.view.xml +4 -1
  371. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/Opa.qunit.js +2 -1
  372. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/GridTable.view.xml +12 -3
  373. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Main.controller.js +2 -1
  374. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.OptimisticBatch.qunit.js +2 -1
  375. package/test/sap/ui/core/demokit/sample/odata/v4/LateProperties/Opa.qunit.js +2 -1
  376. package/test/sap/ui/core/demokit/sample/odata/v4/ListBinding/Opa.qunit.js +2 -1
  377. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Opa.qunit.js +2 -1
  378. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Opa.qunit.js +2 -1
  379. package/test/sap/ui/core/demokit/sample/odata/v4/Products/Opa.qunit.js +2 -1
  380. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +26 -8
  381. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/data/metadata.xml +4 -0
  382. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V2/Opa.qunit.js +2 -1
  383. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrderTP100_V4/Opa.qunit.js +2 -1
  384. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Opa.qunit.js +2 -1
  385. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/pages/Main.js +18 -0
  386. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/Create.js +10 -6
  387. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Opa.qunit.js +2 -1
  388. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/manifest.json +18 -0
  389. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/Opa.qunit.js +2 -1
  390. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/Opa.qunit.js +2 -1
  391. package/test/sap/ui/core/demokit/sample/odata/v4/ServerDrivenPaging/pages/Main.js +4 -1
  392. package/test/sap/ui/core/demokit/sample/odata/v4/Sticky/Opa.qunit.js +2 -1
  393. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/controller/App.controller.js +1 -6
  394. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +1 -0
  395. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/controller/App.controller.js +1 -6
  396. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +1 -0
  397. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/controller/App.controller.js +1 -6
  398. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +1 -0
  399. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/controller/App.controller.js +1 -6
  400. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +1 -0
  401. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/controller/App.controller.js +3 -8
  402. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +1 -0
  403. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/controller/App.controller.js +3 -8
  404. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +1 -0
  405. package/test/sap/ui/core/qunit/IconPool.qunit.js +53 -4
  406. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +43 -5
  407. package/test/sap/ui/core/qunit/Theming.qunit.js +19 -1
  408. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +510 -185
  409. package/test/sap/ui/core/qunit/analytics/ODataModelAdapter.qunit.js +80 -10
  410. package/test/sap/ui/core/qunit/analytics/odata4analytics.qunit.js +20 -29
  411. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +18 -1
  412. package/test/sap/ui/core/qunit/base/i18n/Formatting.qunit.js +15 -13
  413. package/test/sap/ui/core/qunit/base/i18n/Localization.qunit.js +35 -12
  414. package/test/sap/ui/core/qunit/bootstrap/Configuration.main.qunit.js +11 -0
  415. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.html +4 -3
  416. package/test/sap/ui/core/qunit/bootstrap/Configuration.qunit.js +71 -35
  417. package/test/sap/ui/core/qunit/bootstrap/_checkCoreAndLibraryBooted.qunit.js +1 -1
  418. package/test/sap/ui/core/qunit/component/Models.qunit.js +5 -2
  419. package/test/sap/ui/core/qunit/generic/EnforceSemanticRendering.qunit.js +2 -2
  420. package/test/sap/ui/core/qunit/generic/SettersContextReturn.qunit.js +2 -2
  421. package/test/sap/ui/core/qunit/generic/legacy/SettersContextReturn.qunit.js +2 -2
  422. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +48 -13
  423. package/test/sap/ui/core/qunit/i18n/UI5Date.qunit.js +16 -4
  424. package/test/sap/ui/core/qunit/i18n/UniversalDate.qunit.js +73 -103
  425. package/test/sap/ui/core/qunit/i18n/UniversalDateUtils.qunit.js +34 -39
  426. package/test/sap/ui/core/qunit/internal/BeforePush.ODataV4.js +28 -0
  427. package/test/sap/ui/core/qunit/internal/BeforePush.html +1 -0
  428. package/test/sap/ui/core/qunit/internal/BeforePush.js +15 -0
  429. package/test/sap/ui/core/qunit/internal/performance/ExpressionParser.performance.qunit.js +1 -0
  430. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -2
  431. package/test/sap/ui/core/qunit/loader/asyncMode_unavoidablySync.qunit.js +1 -1
  432. package/test/sap/ui/core/qunit/loader/testsuite.loader.qunit.js +0 -3
  433. package/test/sap/ui/core/qunit/model/FAR_CUSTOMER_LINE_ITEMS.metadata.xml +2 -0
  434. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +51 -0
  435. package/test/sap/ui/core/qunit/mvc/testdata/Async.view.xml +1 -1
  436. package/test/sap/ui/core/qunit/mvc/testdata/AsyncTypedView.js +5 -1
  437. package/test/sap/ui/core/qunit/odata/ODataMetadataNoFakeService.qunit.js +68 -4
  438. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +232 -37
  439. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
  440. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +10 -5
  441. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +33 -1
  442. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +5 -3
  443. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +186 -65
  444. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +17 -66
  445. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +528 -60
  446. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +48 -8
  447. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +0 -3
  448. package/test/sap/ui/core/qunit/odata/v4/data/metadata.json +2 -1
  449. package/test/sap/ui/core/qunit/odata/v4/data/metadata.xml +4 -0
  450. package/test/sap/ui/core/qunit/odata/v4/data/metadata_special_cases.xml +2 -0
  451. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +148 -1
  452. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +24 -11
  453. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +196 -404
  454. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +201 -2
  455. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +7 -3
  456. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +21 -4
  457. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +4 -2
  458. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +129 -2
  459. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +5 -1
  460. package/test/sap/ui/core/qunit/routing/fixture/Async1.view.xml +1 -1
  461. package/test/sap/ui/core/qunit/testdata/xml-require/helper/Formatter.js +7 -4
  462. package/test/sap/ui/core/qunit/testdata/xml-require/view/XMLTemplateProcessorAsync_require_in_html.view.xml +36 -0
  463. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +2 -2
  464. package/test/sap/ui/core/qunit/types/DateFormatTimezones.qunit.js +1222 -1201
  465. package/test/sap/ui/core/qunit/util/Popup.qunit.js +7 -11
  466. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +3 -1
  467. package/test/sap/ui/core/qunit/util/jQuery.sap.Version.qunit.js +3 -0
  468. package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +1 -1
  469. package/test/sap/ui/core/relnotes/changes-1.116.json +1 -12
  470. package/test/sap/ui/core/relnotes/changes-1.117.json +127 -0
  471. package/test/sap/ui/core/visual/images/HyphenationPlayground/windows/1600x1200/chrome/horizon/ltr/cozy/19_thirdParty_language_sl.ref.lnk +1 -1
  472. package/ui5.yaml +165 -0
  473. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +0 -45
  474. /package/test/sap/ui/core/qunit/bootstrap/{GlobalConfigurationSettings.js → Configuration.beforeBootstrap.qunit.js} +0 -0
@@ -606,6 +606,7 @@ sap.ui.define([
606
606
 
607
607
  sResponseBody = '{"@odata.context": "' + getBaseUrl(oXhr.url)
608
608
  + '$metadata#People/$entity",';
609
+ oUser.HomeAddress = oUser.HomeAddress || null; // prevents drillDown errors
609
610
  sResponseBody += JSON.stringify(oUser).slice(1);
610
611
 
611
612
  // The response to POST requests is http 201 (Created)
@@ -46,12 +46,7 @@ sap.ui.define([
46
46
  var oList = this.byId("peopleList"),
47
47
  oBinding = oList.getBinding("items"),
48
48
  // Create a new entry through the table's list binding
49
- oContext = oBinding.create({
50
- UserName : "",
51
- FirstName : "",
52
- LastName : "",
53
- Age : "18"
54
- });
49
+ oContext = oBinding.create({Age : "18"});
55
50
 
56
51
  this._setUIChanges(true);
57
52
  this.getView().getModel("appView").setProperty("/usernameEmpty", true);
@@ -606,6 +606,7 @@ sap.ui.define([
606
606
 
607
607
  sResponseBody = '{"@odata.context": "' + getBaseUrl(oXhr.url)
608
608
  + '$metadata#People/$entity",';
609
+ oUser.HomeAddress = oUser.HomeAddress || null; // prevents drillDown errors
609
610
  sResponseBody += JSON.stringify(oUser).slice(1);
610
611
 
611
612
  // The response to POST requests is http 201 (Created)
@@ -46,12 +46,7 @@ sap.ui.define([
46
46
  var oList = this.byId("peopleList"),
47
47
  oBinding = oList.getBinding("items"),
48
48
  // Create a new entry through the table's list binding
49
- oContext = oBinding.create({
50
- UserName : "",
51
- FirstName : "",
52
- LastName : "",
53
- Age : "18"
54
- });
49
+ oContext = oBinding.create({Age : "18"});
55
50
 
56
51
  this._setUIChanges(true);
57
52
  this.getView().getModel("appView").setProperty("/usernameEmpty", true);
@@ -606,6 +606,7 @@ sap.ui.define([
606
606
 
607
607
  sResponseBody = '{"@odata.context": "' + getBaseUrl(oXhr.url)
608
608
  + '$metadata#People/$entity",';
609
+ oUser.HomeAddress = oUser.HomeAddress || null; // prevents drillDown errors
609
610
  sResponseBody += JSON.stringify(oUser).slice(1);
610
611
 
611
612
  // The response to POST requests is http 201 (Created)
@@ -46,12 +46,7 @@ sap.ui.define([
46
46
  var oList = this.byId("peopleList"),
47
47
  oBinding = oList.getBinding("items"),
48
48
  // Create a new entry through the table's list binding
49
- oContext = oBinding.create({
50
- UserName : "",
51
- FirstName : "",
52
- LastName : "",
53
- Age : "18"
54
- });
49
+ oContext = oBinding.create({Age : "18"});
55
50
 
56
51
  this._setUIChanges(true);
57
52
  this.getView().getModel("appView").setProperty("/usernameEmpty", true);
@@ -606,6 +606,7 @@ sap.ui.define([
606
606
 
607
607
  sResponseBody = '{"@odata.context": "' + getBaseUrl(oXhr.url)
608
608
  + '$metadata#People/$entity",';
609
+ oUser.HomeAddress = oUser.HomeAddress || null; // prevents drillDown errors
609
610
  sResponseBody += JSON.stringify(oUser).slice(1);
610
611
 
611
612
  // The response to POST requests is http 201 (Created)
@@ -46,12 +46,7 @@ sap.ui.define([
46
46
  var oList = this.byId("peopleList"),
47
47
  oBinding = oList.getBinding("items"),
48
48
  // Create a new entry through the table's list binding
49
- oContext = oBinding.create({
50
- UserName : "",
51
- FirstName : "",
52
- LastName : "",
53
- Age : "18"
54
- });
49
+ oContext = oBinding.create({Age : "18"});
55
50
 
56
51
  this._setUIChanges(true);
57
52
  this.getView().getModel("appView").setProperty("/usernameEmpty", true);
@@ -299,10 +294,10 @@ sap.ui.define([
299
294
  }
300
295
 
301
296
  oOldContext = oDetailArea.getBindingContext();
302
- if (oOldContext) {
297
+ if (oOldContext && !oOldContext.isTransient()) {
303
298
  oOldContext.setKeepAlive(false);
304
299
  }
305
- if (oUserContext) {
300
+ if (oUserContext && !oUserContext.isTransient()) {
306
301
  oUserContext.setKeepAlive(true,
307
302
  // hide details if kept entity was refreshed but does not exist any more
308
303
  this._setDetailArea.bind(this));
@@ -607,6 +607,7 @@ sap.ui.define([
607
607
 
608
608
  sResponseBody = '{"@odata.context": "' + getBaseUrl(oXhr.url)
609
609
  + '$metadata#People/$entity",';
610
+ oUser.HomeAddress = oUser.HomeAddress || null; // prevents drillDown errors
610
611
  sResponseBody += JSON.stringify(oUser).slice(1);
611
612
 
612
613
  // The response to POST requests is http 201 (Created)
@@ -46,12 +46,7 @@ sap.ui.define([
46
46
  var oList = this.byId("peopleList"),
47
47
  oBinding = oList.getBinding("items"),
48
48
  // Create a new entry through the table's list binding
49
- oContext = oBinding.create({
50
- UserName : "",
51
- FirstName : "",
52
- LastName : "",
53
- Age : "18"
54
- });
49
+ oContext = oBinding.create({Age : "18"});
55
50
 
56
51
  this._setUIChanges(true);
57
52
  this.getView().getModel("appView").setProperty("/usernameEmpty", true);
@@ -299,10 +294,10 @@ sap.ui.define([
299
294
  }
300
295
 
301
296
  oOldContext = oDetailArea.getBindingContext();
302
- if (oOldContext) {
297
+ if (oOldContext && !oOldContext.isTransient()) {
303
298
  oOldContext.setKeepAlive(false);
304
299
  }
305
- if (oUserContext) {
300
+ if (oUserContext && !oUserContext.isTransient()) {
306
301
  oUserContext.setKeepAlive(true,
307
302
  // hide details if kept entity was refreshed but does not exist any more
308
303
  this._setDetailArea.bind(this));
@@ -606,6 +606,7 @@ sap.ui.define([
606
606
 
607
607
  sResponseBody = '{"@odata.context": "' + getBaseUrl(oXhr.url)
608
608
  + '$metadata#People/$entity",';
609
+ oUser.HomeAddress = oUser.HomeAddress || null; // prevents drillDown errors
609
610
  sResponseBody += JSON.stringify(oUser).slice(1);
610
611
 
611
612
  // The response to POST requests is http 201 (Created)
@@ -1,13 +1,15 @@
1
1
 
2
- /* global QUnit */
2
+ /* global sinon QUnit */
3
3
  sap.ui.define([
4
4
  "sap/ui/core/IconPool",
5
+ "sap/ui/core/_IconRegistry",
5
6
  "sap/ui/core/Icon",
7
+ "sap/ui/core/Theming",
6
8
  "sap/m/Image",
7
9
  "sap/base/Log",
8
10
  "sap/ui/test/TestUtils",
9
11
  "sap/ui/thirdparty/jquery"
10
- ], function(IconPool, Icon, Image, Log, TestUtils, jQuery) {
12
+ ], function(IconPool, _IconRegistry, Icon, Theming, Image, Log, TestUtils, jQuery) {
11
13
  "use strict";
12
14
 
13
15
  QUnit.config.reorder = false;
@@ -185,7 +187,7 @@ sap.ui.define([
185
187
 
186
188
  IconPool.registerFont({
187
189
  fontFamily: sFontFamily,
188
- fontURI: sap.ui.require.toUrl("sap/tnt/themes/base/fonts")
190
+ fontURI: sap.ui.require.toUrl("sap/tnt/themes/base/fonts/")
189
191
  });
190
192
 
191
193
  // insert sap-icons-TNT font
@@ -200,7 +202,7 @@ sap.ui.define([
200
202
 
201
203
  iFontFaceCount = document.fonts.size;
202
204
  // insert font again
203
- IconPool.insertFontFaceStyle(sFontFamily, sap.ui.require.toUrl("sap/tnt/themes/base/fonts"));
205
+ IconPool.insertFontFaceStyle(sFontFamily, sap.ui.require.toUrl("sap/tnt/themes/base/fonts/"));
204
206
  assert.equal(document.fonts.size, iFontFaceCount, "No new FontFace is created");
205
207
  });
206
208
 
@@ -420,6 +422,53 @@ sap.ui.define([
420
422
  assert.strictEqual(IconPool.fontLoaded("invalid"), undefined, "fontLoaded returns undefined");
421
423
  });
422
424
 
425
+ QUnit.module("Theme dependent Icons", {});
426
+
427
+ QUnit.test("registerFont with SAP-icons-TNT (Horizon Theme)", function(assert) {
428
+ const oInsertFontFaceStyleSpy = sinon.spy(_IconRegistry, "insertFontFaceStyle");
429
+ const oGetThemeStub = sinon.stub(Theming, "getTheme").returns("sap_horizon");
430
+
431
+ IconPool.registerFont({
432
+ collectionName: "my-tnt-icons-horizon",
433
+ fontFamily: "SAP-icons-TNT",
434
+ fontURI: sap.ui.require.toUrl("sap/tnt/themes/base/fonts/")
435
+ });
436
+
437
+ return IconPool.fontLoaded("my-tnt-icons-horizon").then(function() {
438
+ const sExpectedFontURI = sap.ui.require.toUrl("sap/tnt/themes/base/fonts/horizon/");
439
+ assert.ok(oInsertFontFaceStyleSpy.calledWith("SAP-icons-TNT", sExpectedFontURI, "my-tnt-icons-horizon"), "Correct font face inserted.");
440
+
441
+ // restore stubs
442
+ oGetThemeStub.restore();
443
+ oInsertFontFaceStyleSpy.restore();
444
+ });
445
+ });
446
+
447
+ QUnit.test("registerFont with SAP-icons-TNT (switching themes) ", function(assert) {
448
+ // set initial theme so that we enforce a theme change event
449
+ Theming.setTheme("sap_belize");
450
+
451
+ IconPool.registerFont({
452
+ collectionName: "sap-tnt-icons-horizon-2",
453
+ fontFamily: "SAP-icons-TNT",
454
+ fontURI: sap.ui.require.toUrl("sap/tnt/themes/base/fonts/")
455
+ });
456
+
457
+ return new Promise((res, rej) => {
458
+ IconPool.fontLoaded("sap-tnt-icons-horizon-2").then(function() {
459
+ const oInsertFontFaceStyleSpy = sinon.spy(_IconRegistry, "insertFontFaceStyle");
460
+ const sExpectedFontURI = sap.ui.require.toUrl("sap/tnt/themes/base/fonts/horizon/");
461
+
462
+ Theming.attachApplied(() => {
463
+ assert.ok(oInsertFontFaceStyleSpy.calledWith("SAP-icons-TNT", sExpectedFontURI, "sap-tnt-icons-horizon-2"));
464
+ res();
465
+ });
466
+
467
+ Theming.setTheme("sap_horizon");
468
+ });
469
+ });
470
+ });
471
+
423
472
  QUnit.module("Sync getIconInfo");
424
473
 
425
474
  QUnit.test("Calling getIconInfo with 'sync' mode on the default icon font returns the result immediately", function(assert) {
@@ -1002,18 +1002,56 @@ sap.ui.define([
1002
1002
  this.spy(oBinding3, "checkUpdate");
1003
1003
  var fnDone = assert.async();
1004
1004
  oModel.checkUpdate(true, true, fnFilter);
1005
- oModel.checkUpdate(false, true, fnFilter); // to test foceUpdate wins
1005
+ oModel.checkUpdate(false, true, fnFilter); // to test forceUpdate wins
1006
1006
  setTimeout(function() { // wait for Model update
1007
1007
  assert.equal(aTrueBindings.length, 1, "The test is called an delivers true for one binding");
1008
1008
  assert.deepEqual(aTrueBindings[0], oBinding1, "And this is exactly the first binding");
1009
- assert.ok(oBinding1.checkUpdate.calledWith(true), "chechUpdate called as forced");
1010
- assert.ok(oBinding1.checkUpdate.calledOnce, "chechUpdate called only once");
1011
- assert.notOk(oBinding2.checkUpdate.called, "chechUpdate not called on other Binding");
1012
- assert.notOk(oBinding3.checkUpdate.called, "chechUpdate not called on other Binding");
1009
+ assert.ok(oBinding1.checkUpdate.calledWith(true), "checkUpdate called as forced");
1010
+ assert.ok(oBinding1.checkUpdate.calledOnce, "checkUpdate called only once");
1011
+ assert.notOk(oBinding2.checkUpdate.called, "checkUpdate not called on other Binding");
1012
+ assert.notOk(oBinding3.checkUpdate.called, "checkUpdate not called on other Binding");
1013
1013
  fnDone();
1014
1014
  }, 0);
1015
1015
  });
1016
1016
 
1017
+ QUnit.test("Check Update with different binding test function async", function (assert) {
1018
+ var aTrueBindings = [];
1019
+ var oModel = this.oManagedObjectModel;
1020
+ var oBinding1 = oModel.bindProperty("/value");
1021
+ var oBinding2 = oModel.bindProperty("/stringValue");
1022
+ var oBinding3 = oModel.bindProperty("/floatValue");
1023
+ oModel.addBinding(oBinding1);
1024
+ oModel.addBinding(oBinding2);
1025
+ oModel.addBinding(oBinding3);
1026
+
1027
+ assert.equal(oModel.getBindings().length, 3, "There are three bindings");
1028
+
1029
+ var fnFilter1 = function (oBinding) {
1030
+ if (oBinding == oBinding1) {
1031
+ aTrueBindings.push(oBinding);
1032
+ return true;
1033
+ }
1034
+ return false;
1035
+ };
1036
+ var fnFilter2 = function (oBinding) {
1037
+ if (oBinding == oBinding2) {
1038
+ aTrueBindings.push(oBinding);
1039
+ return true;
1040
+ }
1041
+ return false;
1042
+ };
1043
+
1044
+ this.spy(oBinding1, "checkUpdate");
1045
+ this.spy(oBinding2, "checkUpdate");
1046
+ this.spy(oBinding3, "checkUpdate");
1047
+ oModel.checkUpdate(true, true, fnFilter1);
1048
+ oModel.checkUpdate(true, true, fnFilter2);
1049
+ oModel.checkUpdate(false, false, fnFilter2);
1050
+ assert.ok(oBinding1.checkUpdate.calledOnce, "checkUpdate called only once");
1051
+ assert.ok(oBinding2.checkUpdate.calledOnce, "checkUpdate called only once");
1052
+ assert.ok(oBinding3.checkUpdate.calledOnce, "checkUpdate called only once");
1053
+ });
1054
+
1017
1055
  QUnit.test("ManagedObject Model - handle object properties", function(assert) {
1018
1056
  var oData = {value: "A string", text: "A text"};
1019
1057
  var oModel = new JSONModel({
@@ -1,11 +1,13 @@
1
1
  /* global QUnit, sinon, globalThis */
2
2
 
3
3
  sap.ui.define([
4
+ "sap/base/config",
4
5
  "sap/base/Event",
5
6
  "sap/ui/base/config/URLConfigurationProvider",
6
7
  "sap/ui/core/Theming",
7
8
  "sap/ui/qunit/utils/waitForThemeApplied"
8
9
  ], function (
10
+ BaseConfig,
9
11
  BaseEvent,
10
12
  URLConfigurationProvider,
11
13
  Theming,
@@ -74,23 +76,36 @@ sap.ui.define([
74
76
  }
75
77
  });
76
78
 
79
+ /**
80
+ * This is regression test for when the initial theme is an empty string ("").
81
+ * The empty string is given in the "testsuite.theming.qunit.js" as a bootstrap parameter.
82
+ *
83
+ * Before fixing this regression, an empty string lead to a "Maximum call stack size exceeded" error.
84
+ */
85
+ QUnit.test("Initial Theme - empty string fallback", function(assert) {
86
+ assert.equal(Theming.getTheme(), "base", "Initial Theme after bootstrapping should be 'base'");
87
+ });
88
+
77
89
  QUnit.test("getTheme", function (assert) {
78
90
  assert.expect(bThemeManagerNotActive ? 28 : 27);
79
-
91
+ BaseConfig._.invalidate();
80
92
  mConfigStubValues = {
81
93
  "sapTheme": "sap_test_theme_1",
82
94
  "sapUiTheme": "sap_test_theme_2"
83
95
  };
84
96
  // sapTheme should be first
85
97
  return fnAssert("sap_test_theme_1").then(function() {
98
+ BaseConfig._.invalidate();
86
99
  mConfigStubValues["sapTheme"] = undefined;
87
100
  // if there is no sapTheme sapUiTheme should be used
88
101
  return fnAssert("sap_test_theme_2");
89
102
  }).then(function() {
103
+ BaseConfig._.invalidate();
90
104
  mConfigStubValues["sapUiTheme"] = undefined;
91
105
  // use default value 'base' in case there is no theming parameter at all
92
106
  return fnAssert("base");
93
107
  }).then(function() {
108
+ BaseConfig._.invalidate();
94
109
  mConfigStubValues["sapTheme"] = "sap_test_theme_3@/sap/test/themeroot";
95
110
  // first call with themeroot should trigger a change event for the implicit setThemeRoot call
96
111
  return fnAssert("sap_test_theme_3", [{
@@ -105,6 +120,7 @@ sap.ui.define([
105
120
  return fnAssert("sap_test_theme_3");
106
121
  }).then(function() {
107
122
  // third call with identical theme but different themeroot should trigger a change event for the implicit setThemeRoot call
123
+ BaseConfig._.invalidate();
108
124
  mConfigStubValues["sapTheme"] = "sap_test_theme_3@/sap/different/test/themeroot";
109
125
  return fnAssert("sap_test_theme_3", [{
110
126
  themeRoots: {
@@ -115,10 +131,12 @@ sap.ui.define([
115
131
  }]);
116
132
  }).then(function() {
117
133
  // sap_corbu theme should be normalized to sap_fiori_3 theme
134
+ BaseConfig._.invalidate();
118
135
  mConfigStubValues["sapTheme"] = "sap_corbu";
119
136
  return fnAssert("sap_fiori_3");
120
137
  }).then(function() {
121
138
  // sap_corbu theme with specific themeroots should not be normalized and themeroots for sap_corbu should trigger a change event
139
+ BaseConfig._.invalidate();
122
140
  mConfigStubValues["sapTheme"] = "sap_corbu@/sap/test/themeroot";
123
141
  return fnAssert("sap_corbu", [{
124
142
  themeRoots: {