@openui5/sap.ui.core 1.120.16 → 1.120.18

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 (327) hide show
  1. package/.dtsgenrc +76 -0
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +4 -4
  4. package/src/jquery.sap.properties.js +2 -2
  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/jquery.sap.ui.js +6 -2
  9. package/src/sap/base/Event.js +1 -1
  10. package/src/sap/base/Eventing.js +1 -1
  11. package/src/sap/base/config.js +1 -1
  12. package/src/sap/base/i18n/LanguageTag.js +1 -1
  13. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +3 -3
  56. package/src/sap/ui/Global.js +4 -4
  57. package/src/sap/ui/base/BindingInfo.js +26 -19
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/Interface.js +1 -1
  61. package/src/sap/ui/base/ManagedObject.js +1 -1
  62. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  63. package/src/sap/ui/base/Metadata.js +1 -1
  64. package/src/sap/ui/base/Object.js +1 -1
  65. package/src/sap/ui/base/ObjectPool.js +1 -1
  66. package/src/sap/ui/core/.library +1 -8
  67. package/src/sap/ui/core/BusyIndicator.js +1 -1
  68. package/src/sap/ui/core/Component.js +1 -1
  69. package/src/sap/ui/core/ComponentContainer.js +1 -1
  70. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  71. package/src/sap/ui/core/ComponentSupport.js +1 -1
  72. package/src/sap/ui/core/Configuration.js +1 -1
  73. package/src/sap/ui/core/Control.js +1 -1
  74. package/src/sap/ui/core/Core.js +1 -1
  75. package/src/sap/ui/core/CustomData.js +1 -1
  76. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  77. package/src/sap/ui/core/Element.js +1 -1
  78. package/src/sap/ui/core/ElementMetadata.js +1 -1
  79. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  80. package/src/sap/ui/core/EventBus.js +1 -1
  81. package/src/sap/ui/core/Fragment.js +1 -1
  82. package/src/sap/ui/core/HTML.js +1 -1
  83. package/src/sap/ui/core/History.js +1 -1
  84. package/src/sap/ui/core/Icon.js +1 -1
  85. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  86. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  87. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  88. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  89. package/src/sap/ui/core/InvisibleText.js +1 -1
  90. package/src/sap/ui/core/Item.js +1 -1
  91. package/src/sap/ui/core/LabelEnablement.js +1 -1
  92. package/src/sap/ui/core/LayoutData.js +1 -1
  93. package/src/sap/ui/core/ListItem.js +1 -1
  94. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  95. package/src/sap/ui/core/Locale.js +1 -1
  96. package/src/sap/ui/core/LocaleData.js +1 -1
  97. package/src/sap/ui/core/Manifest.js +1 -1
  98. package/src/sap/ui/core/Message.js +1 -1
  99. package/src/sap/ui/core/RenderManager.js +1 -1
  100. package/src/sap/ui/core/Renderer.js +1 -1
  101. package/src/sap/ui/core/ResizeHandler.js +1 -1
  102. package/src/sap/ui/core/ScrollBar.js +1 -1
  103. package/src/sap/ui/core/SeparatorItem.js +1 -1
  104. package/src/sap/ui/core/Title.js +1 -1
  105. package/src/sap/ui/core/TooltipBase.js +1 -1
  106. package/src/sap/ui/core/UIArea.js +5 -5
  107. package/src/sap/ui/core/UIComponent.js +1 -1
  108. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  109. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  110. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  111. package/src/sap/ui/core/XMLComposite.js +1 -1
  112. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  113. package/src/sap/ui/core/date/UI5Date.js +1 -1
  114. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  115. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  116. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  117. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  118. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  119. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  120. package/src/sap/ui/core/format/DateFormat.js +3 -3
  121. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  122. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  123. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  124. package/src/sap/ui/core/library.js +3 -3
  125. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  126. package/src/sap/ui/core/message/Message.js +1 -1
  127. package/src/sap/ui/core/message/MessageManager.js +1 -1
  128. package/src/sap/ui/core/message/MessageParser.js +1 -1
  129. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  130. package/src/sap/ui/core/mvc/ControllerExtension.js +16 -0
  131. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  132. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  133. package/src/sap/ui/core/mvc/JSView.js +1 -1
  134. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  135. package/src/sap/ui/core/mvc/View.js +1 -1
  136. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  137. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  138. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  139. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  140. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  141. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  142. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  143. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  144. package/src/sap/ui/core/service/Service.js +1 -1
  145. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  146. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  147. package/src/sap/ui/core/support/Plugin.js +1 -1
  148. package/src/sap/ui/core/support/Support.js +1 -1
  149. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  150. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  151. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  152. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  153. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  154. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  155. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  156. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  157. package/src/sap/ui/core/support/trace/E2eTraceLib.js +1 -1
  158. package/src/sap/ui/core/tmpl/DOMAttribute.js +2 -2
  159. package/src/sap/ui/core/tmpl/DOMElement.js +2 -2
  160. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +2 -2
  161. package/src/sap/ui/core/tmpl/Template.js +1 -1
  162. package/src/sap/ui/core/tmpl/TemplateControl.js +2 -2
  163. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  164. package/src/sap/ui/core/util/Export.js +1 -1
  165. package/src/sap/ui/core/util/ExportCell.js +1 -1
  166. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  167. package/src/sap/ui/core/util/ExportRow.js +1 -1
  168. package/src/sap/ui/core/util/ExportType.js +1 -1
  169. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  170. package/src/sap/ui/core/util/File.js +1 -1
  171. package/src/sap/ui/core/util/LibraryInfo.js +2 -2
  172. package/src/sap/ui/core/util/MockServer.js +1 -2
  173. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  174. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  175. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  176. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  177. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  178. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  179. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  180. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  181. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  182. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  183. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  184. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  185. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  186. package/src/sap/ui/debug/ControlTree.js +1 -1
  187. package/src/sap/ui/debug/DebugEnv.js +1 -1
  188. package/src/sap/ui/debug/PropertyList.js +1 -1
  189. package/src/sap/ui/model/ClientModel.js +1 -1
  190. package/src/sap/ui/model/CompositeDataState.js +1 -1
  191. package/src/sap/ui/model/CompositeType.js +1 -1
  192. package/src/sap/ui/model/DataState.js +1 -1
  193. package/src/sap/ui/model/MetaModel.js +1 -1
  194. package/src/sap/ui/model/Model.js +1 -1
  195. package/src/sap/ui/model/SelectionModel.js +1 -1
  196. package/src/sap/ui/model/SimpleType.js +1 -1
  197. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  198. package/src/sap/ui/model/Type.js +1 -1
  199. package/src/sap/ui/model/json/JSONModel.js +17 -10
  200. package/src/sap/ui/model/message/MessageModel.js +1 -1
  201. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  202. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  203. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  204. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  205. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  206. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  207. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  208. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  209. package/src/sap/ui/model/odata/type/Date.js +1 -1
  210. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  211. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  212. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  213. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  214. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  215. package/src/sap/ui/model/odata/type/Double.js +1 -1
  216. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  217. package/src/sap/ui/model/odata/type/Int.js +1 -1
  218. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  219. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  220. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  221. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  222. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  223. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  224. package/src/sap/ui/model/odata/type/Single.js +1 -1
  225. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  226. package/src/sap/ui/model/odata/type/String.js +1 -1
  227. package/src/sap/ui/model/odata/type/Time.js +1 -1
  228. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  229. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  230. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  231. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  232. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  233. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  234. package/src/sap/ui/model/odata/v4/Context.js +1 -1
  235. package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
  236. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +2 -2
  237. package/src/sap/ui/model/odata/v4/ODataListBinding.js +8 -4
  238. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  239. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  240. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +2 -2
  241. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  242. package/src/sap/ui/model/type/Boolean.js +1 -1
  243. package/src/sap/ui/model/type/Currency.js +1 -1
  244. package/src/sap/ui/model/type/Date.js +1 -1
  245. package/src/sap/ui/model/type/DateInterval.js +1 -1
  246. package/src/sap/ui/model/type/DateTime.js +1 -1
  247. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  248. package/src/sap/ui/model/type/FileSize.js +1 -1
  249. package/src/sap/ui/model/type/Float.js +1 -1
  250. package/src/sap/ui/model/type/Integer.js +1 -1
  251. package/src/sap/ui/model/type/String.js +1 -1
  252. package/src/sap/ui/model/type/Time.js +1 -1
  253. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  254. package/src/sap/ui/model/type/Unit.js +1 -1
  255. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  256. package/src/sap/ui/performance/trace/FESR.js +1 -1
  257. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  258. package/src/sap/ui/performance/trace/Passport.js +1 -1
  259. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  260. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  261. package/src/sap/ui/test/generic/TestBase.js +1 -1
  262. package/src/sap/ui/util/Mobile.js +7 -4
  263. package/src/sap/ui/util/Storage.js +1 -1
  264. package/test/sap/ui/core/demokit/sample/MessageManager/ODataBackendMessagesComp/ui5.yaml +1 -1
  265. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  266. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  267. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  268. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  269. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  270. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  271. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  272. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  273. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  274. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  275. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  276. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  277. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  278. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  279. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  280. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  281. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  282. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  283. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  284. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  285. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  286. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  287. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  288. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  289. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  290. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  291. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  292. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  293. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  294. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  295. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  296. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  297. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  298. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  299. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  300. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  301. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  302. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  303. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  304. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  305. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  306. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  307. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  308. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  309. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  310. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  311. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  312. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  313. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  314. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  315. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  316. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  317. package/test/sap/ui/core/qunit/ManagedObject.qunit.js +19 -0
  318. package/test/sap/ui/core/qunit/json/JSONModel.qunit.js +21 -0
  319. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +3 -3
  320. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +3 -3
  321. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +53 -15
  322. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +54 -2
  323. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +1 -1
  324. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +9 -7
  325. package/test/sap/ui/core/qunit/types/DateFormat.qunit.js +51 -22
  326. package/test/sap/ui/core/qunit/util/Mobile.qunit.js +12 -7
  327. package/test/sap/ui/core/relnotes/changes-1.120.json +61 -0
@@ -1382,9 +1382,11 @@ sap.ui.define([
1382
1382
  this.oCachePromise = SyncPromise.resolve(Promise.resolve(oCache));
1383
1383
  });
1384
1384
  oBinding.setContext(oContext);
1385
+ const oBindingMock = that.mock(oBinding);
1386
+ oBindingMock.expects("checkSameCache").never();
1385
1387
 
1386
1388
  this.mock(oCache).expects("hasSentRequest").withExactArgs().returns(oFixture.hasSent);
1387
- this.mock(oBinding).expects("isRelative").exactly(oFixture.hasSent ? 0 : 1)
1389
+ oBindingMock.expects("isRelative").exactly(oFixture.hasSent ? 0 : 1)
1388
1390
  .withExactArgs().returns(!oFixture.isAbsolute);
1389
1391
  this.mock(ODataListBinding).expects("isBelowCreated")
1390
1392
  .exactly(oFixture.hasSent || oFixture.isAbsolute ? 0 : 1)
@@ -1399,11 +1401,7 @@ sap.ui.define([
1399
1401
  oReadMock = this.mock(oCache).expects("read")
1400
1402
  .withExactArgs(1, 2, 3, sinon.match.same(oGroupLock),
1401
1403
  sinon.match.same(fnDataRequested))
1402
- .returns(SyncPromise.resolve(Promise.resolve().then(function () {
1403
- that.mock(oBinding).expects("assertSameCache")
1404
- .withExactArgs(sinon.match.same(oCache));
1405
- return oData;
1406
- })));
1404
+ .returns(SyncPromise.resolve(Promise.resolve(oData)));
1407
1405
 
1408
1406
  // code under test
1409
1407
  oPromise = oBinding.fetchData(1, 2, 3, oGroupLock, fnDataRequested);
@@ -1411,7 +1409,7 @@ sap.ui.define([
1411
1409
  oBinding.sChangeReason = "sChangeReason";
1412
1410
  oBinding.bHasPathReductionToParent = true;
1413
1411
  this.oModel.bAutoExpandSelect = true;
1414
- this.mock(oBinding).expects("checkSuspended").never();
1412
+ oBindingMock.expects("checkSuspended").never();
1415
1413
 
1416
1414
  assert.strictEqual(oBinding.sChangeReason, "sChangeReason");
1417
1415
 
@@ -1420,6 +1418,12 @@ sap.ui.define([
1420
1418
  if (oFixture.elements) {
1421
1419
  assert.ok(oSetCollectionMock.calledBefore(oReadMock));
1422
1420
  }
1421
+
1422
+ oBindingMock.expects("checkSameCache").on(oBinding)
1423
+ .withExactArgs(sinon.match.same(oCache));
1424
+
1425
+ // code under test
1426
+ oResult.$checkStillValid();
1423
1427
  });
1424
1428
  });
1425
1429
  });
@@ -1540,13 +1544,16 @@ sap.ui.define([
1540
1544
 
1541
1545
  //*********************************************************************************************
1542
1546
  [false, true].forEach(function (bFirstCreateAtEnd) {
1543
- QUnit.test("fetchContexts: created, atEnd=" + bFirstCreateAtEnd, function () {
1547
+ QUnit.test("fetchContexts: created, atEnd=" + bFirstCreateAtEnd, function (assert) {
1544
1548
  var oBinding = this.bindList("/EMPLOYEES"),
1545
1549
  bChanged = {/*boolean*/},
1546
1550
  fnDataRequested = {/*function*/},
1547
1551
  oGroupLock = {},
1548
1552
  iReadStart = bFirstCreateAtEnd ? 3 : 1,
1549
- oResult = {value : {}};
1553
+ oResult = {
1554
+ $checkStillValid : mustBeMocked,
1555
+ value : {}
1556
+ };
1550
1557
 
1551
1558
  oBinding.bFirstCreateAtEnd = bFirstCreateAtEnd;
1552
1559
  oBinding.iCreatedContexts = 2;
@@ -1554,15 +1561,46 @@ sap.ui.define([
1554
1561
  .withExactArgs(iReadStart, 2, 3, sinon.match.same(oGroupLock),
1555
1562
  sinon.match.same(fnDataRequested))
1556
1563
  .returns(SyncPromise.resolve(oResult));
1557
- this.mock(oBinding).expects("createContexts")
1564
+ const oCheckStillValidExpectation
1565
+ = this.mock(oResult).expects("$checkStillValid").withExactArgs();
1566
+ const oCreateContextsExpectation = this.mock(oBinding).expects("createContexts")
1558
1567
  .withExactArgs(iReadStart, sinon.match.same(oResult.value))
1559
1568
  .returns(SyncPromise.resolve(bChanged));
1560
1569
 
1561
1570
  // code under test
1562
- return oBinding.fetchContexts(1, 2, 3, oGroupLock, false, fnDataRequested);
1571
+ return oBinding.fetchContexts(1, 2, 3, oGroupLock, false, fnDataRequested)
1572
+ .then(function () {
1573
+ assert.ok(oCheckStillValidExpectation.calledBefore(oCreateContextsExpectation));
1574
+ });
1563
1575
  });
1564
1576
  });
1565
1577
 
1578
+ //*********************************************************************************************
1579
+ QUnit.test("fetchContexts: invalid cache", function (assert) {
1580
+ var oBinding = this.bindList("/EMPLOYEES"),
1581
+ fnDataRequested = {/*function*/},
1582
+ oError = new Error(),
1583
+ oGroupLock = "~oGroupLock~",
1584
+ oResponse = {
1585
+ $checkStillValid : mustBeMocked,
1586
+ value : {}
1587
+ };
1588
+
1589
+ this.mock(oBinding).expects("fetchData")
1590
+ .withExactArgs(1, 2, 3, sinon.match.same(oGroupLock),
1591
+ sinon.match.same(fnDataRequested))
1592
+ .returns(SyncPromise.resolve(oResponse));
1593
+ this.mock(oResponse).expects("$checkStillValid").withExactArgs().throws(oError);
1594
+
1595
+ // code under test
1596
+ return oBinding.fetchContexts(1, 2, 3, oGroupLock, false, fnDataRequested)
1597
+ .then(function () {
1598
+ assert.ok(false);
1599
+ }, function (oResultError) {
1600
+ assert.strictEqual(oResultError, oError);
1601
+ });
1602
+ });
1603
+
1566
1604
  //*********************************************************************************************
1567
1605
  QUnit.test("fetchContexts: fetchData returns undefined", function (assert) {
1568
1606
  var oBinding = this.bindList("TEAM_2_EMPLOYEES",
@@ -7285,7 +7323,7 @@ sap.ui.define([
7285
7323
  oRefreshSingleExpectation,
7286
7324
  oRefreshSinglePromise = SyncPromise.resolve(Promise.resolve({})),
7287
7325
  oRootBinding = {
7288
- assertSameCache : function () {},
7326
+ checkSameCache : function () {},
7289
7327
  getGroupId : function () {}
7290
7328
  },
7291
7329
  that = this;
@@ -7319,7 +7357,7 @@ sap.ui.define([
7319
7357
 
7320
7358
  // these must only be called when the cache's refreshSingle is finished
7321
7359
  that.mock(oBinding).expects("fireDataReceived").withExactArgs({data : {}});
7322
- that.mock(oRootBinding).expects("assertSameCache")
7360
+ that.mock(oRootBinding).expects("checkSameCache")
7323
7361
  .withExactArgs(sinon.match.same(oCache))
7324
7362
  .callsFake(function () {
7325
7363
  if (!bSameCache) {
@@ -7397,7 +7435,7 @@ sap.ui.define([
7397
7435
  oRemoveCreatedExpectation,
7398
7436
  oResetKeepAliveExpectation,
7399
7437
  oRootBinding = {
7400
- assertSameCache : function () {},
7438
+ checkSameCache : function () {},
7401
7439
  getGroupId : function () {}
7402
7440
  },
7403
7441
  that = this;
@@ -7529,7 +7567,7 @@ sap.ui.define([
7529
7567
  oExpectation,
7530
7568
  oGroupLock = {getGroupId : function () {}},
7531
7569
  oRootBinding = {
7532
- assertSameCache : function () {},
7570
+ checkSameCache : function () {},
7533
7571
  getGroupId : function () {}
7534
7572
  },
7535
7573
  that = this;
@@ -8180,6 +8180,59 @@ sap.ui.define([
8180
8180
  });
8181
8181
  });
8182
8182
 
8183
+ //*********************************************************************************************
8184
+ // Scenario: Table gets a binding context for which data was already loaded and then a refresh
8185
+ // is performed synchronously.
8186
+ // SNOW: CS20240007657519
8187
+ QUnit.test("CS20240007657519", async function (assert) {
8188
+ const oModel = this.createSalesOrdersModel({autoExpandSelect : true});
8189
+ const sView = `
8190
+ <FlexBox binding="{/SalesOrderList('1')}" id="form">
8191
+ <Table id="table" items="{path : 'SO_2_SOITEM', parameters : {$$ownRequest : true}}">
8192
+ <Text id="position" text="{ItemPosition}"/>
8193
+ </Table>
8194
+ </FlexBox>`;
8195
+
8196
+ this.expectRequest("SalesOrderList('1')/SO_2_SOITEM"
8197
+ + "?$select=ItemPosition,SalesOrderID&$skip=0&$top=100", {
8198
+ value : [ // implicitly sorted descending
8199
+ {SalesOrderID : "1", ItemPosition : "0020"},
8200
+ {SalesOrderID : "1", ItemPosition : "0010"}
8201
+ ]
8202
+ })
8203
+ .expectChange("position", ["0020", "0010"]);
8204
+
8205
+ await this.createView(assert, sView, oModel);
8206
+
8207
+ const oTable = this.oView.byId("table");
8208
+ const oFormContext = this.oView.byId("form").getBindingContext();
8209
+
8210
+ oTable.setBindingContext(null);
8211
+
8212
+ await this.waitForChanges(assert);
8213
+
8214
+ oTable.setBindingContext(oFormContext);
8215
+
8216
+ this.expectCanceledError("Failed to get contexts for " + sSalesOrderService
8217
+ + "SalesOrderList('1')/SO_2_SOITEM with start index 0 and length 100",
8218
+ sODLB + ": /SalesOrderList('1')|SO_2_SOITEM"
8219
+ + " is ignoring response from inactive cache: " + sSalesOrderService
8220
+ + "SalesOrderList('1')/SO_2_SOITEM?$select=ItemPosition,SalesOrderID")
8221
+ .expectRequest("SalesOrderList('1')/SO_2_SOITEM"
8222
+ + "?$select=ItemPosition,SalesOrderID&$skip=0&$top=100", {
8223
+ value : [
8224
+ {SalesOrderID : "1", ItemPosition : "0030"}, // a new one!
8225
+ {SalesOrderID : "1", ItemPosition : "0020"},
8226
+ {SalesOrderID : "1", ItemPosition : "0010"}
8227
+ ]
8228
+ })
8229
+ .expectChange("position", ["0030", "0020", "0010"]);
8230
+
8231
+ oFormContext.refresh();
8232
+
8233
+ await this.waitForChanges(assert);
8234
+ });
8235
+
8183
8236
  //*********************************************************************************************
8184
8237
  // Scenario: Read and modify an entity with key aliases
8185
8238
  // CPOUI5ODATAV4-1580: show usage of ODataModel#getKeyPredicate
@@ -41236,8 +41289,7 @@ make root = ${bMakeRoot}`;
41236
41289
  return this.createView(assert, sView).then(function () {
41237
41290
  that.expectCanceledError("Failed to get contexts for " + sTeaBusi
41238
41291
  + "EMPLOYEES with start index 0 and length 100",
41239
- sODLB + ": /EMPLOYEES is ignoring response from inactive cache: " + sTeaBusi
41240
- + "EMPLOYEES");
41292
+ "Binding already destroyed");
41241
41293
 
41242
41294
  that.oView.destroy();
41243
41295
  delete that.oView;
@@ -645,7 +645,7 @@ sap.ui.define([
645
645
  .withExactArgs(sinon.match.same(oGroupLock), undefined, sinon.match.func,
646
646
  sinon.match.same(oBinding))
647
647
  .returns(SyncPromise.resolve(Promise.resolve().then(function () {
648
- that.mock(oBinding).expects("assertSameCache")
648
+ that.mock(oBinding).expects("checkSameCache")
649
649
  .withExactArgs(sinon.match.same(oCache));
650
650
  return vValue;
651
651
  })));
@@ -12,9 +12,10 @@ sap.ui.define(['sap/ui/performance/trace/FESR', 'sap/ui/performance/trace/Intera
12
12
  afterEach: function(assert) {
13
13
  assert.notOk(FESR.getActive(), "FESR is deactivated");
14
14
  },
15
- dummyRequest: function() {
15
+ dummyRequest: function(bUseUrlObject) {
16
16
  var xhr = new XMLHttpRequest();
17
- xhr.open("GET", "resources/ui5loader.js?noCache=" + Date.now() + "-" + (++requestCounter), false);
17
+ const sUrl = "resources/ui5loader.js?noCache=" + Date.now() + "-" + (++requestCounter);
18
+ xhr.open("GET", bUseUrlObject ? new URL(sUrl, document.baseURI) : sUrl, false);
18
19
  xhr.send();
19
20
  return xhr;
20
21
  }
@@ -72,8 +73,8 @@ sap.ui.define(['sap/ui/performance/trace/FESR', 'sap/ui/performance/trace/Intera
72
73
  Interaction.end(true);
73
74
  oXhrHandle.abort();
74
75
 
75
- // trigger another request to send FESR
76
- oXhrHandle = this.dummyRequest();
76
+ // trigger another request to send FESR using URL object to ensure isCORSRequest can handle URL objects as well
77
+ oXhrHandle = this.dummyRequest(/* bUseUrlObject */ true);
77
78
 
78
79
  assert.ok(oHeaderSpy.args.some(function(args) {
79
80
  if (args[0] === "SAP-Perf-FESRec") {
@@ -145,8 +146,8 @@ sap.ui.define(['sap/ui/performance/trace/FESR', 'sap/ui/performance/trace/Intera
145
146
  Interaction.end(true);
146
147
  oXhrHandle.abort();
147
148
 
148
- // trigger another request to send FESR
149
- oXhrHandle = this.dummyRequest();
149
+ // trigger another request to send FESR using URL object to ensure isCORSRequest can handle URL objects as well
150
+ oXhrHandle = this.dummyRequest(/* bUseUrlObject */ true);
150
151
 
151
152
  assert.ok(oHeaderSpy.args.some(function(args) {
152
153
  if (args[0] === "SAP-Perf-FESRec") {
@@ -193,7 +194,8 @@ sap.ui.define(['sap/ui/performance/trace/FESR', 'sap/ui/performance/trace/Intera
193
194
  Interaction.end(true);
194
195
  oXhrHandle.abort();
195
196
  // trigger initial FESR header creation (which should include the actual "action")
196
- oXhrHandle = this.dummyRequest();
197
+ // using URL object to ensure isCORSRequest can handle URL objects as well
198
+ oXhrHandle = this.dummyRequest(/* bUseUrlObject */ true);
197
199
 
198
200
  assert.ok(oHeaderSpy.args.some(function(args) {
199
201
  if (args[0] === "SAP-Perf-FESRec") {
@@ -4,6 +4,7 @@ sap.ui.define([
4
4
  "sap/ui/core/format/DateFormat",
5
5
  "sap/ui/core/Locale",
6
6
  "sap/ui/core/LocaleData",
7
+ "sap/ui/core/date/Buddhist",
7
8
  "sap/ui/core/date/UniversalDate",
8
9
  "sap/ui/core/date/UI5Date",
9
10
  "sap/ui/core/library",
@@ -12,21 +13,20 @@ sap.ui.define([
12
13
  "sap/ui/core/date/CalendarWeekNumbering",
13
14
  "sap/ui/test/TestUtils",
14
15
  // load all required calendars in advance
15
- "sap/ui/core/date/Buddhist",
16
16
  "sap/ui/core/date/Gregorian",
17
17
  "sap/ui/core/date/Islamic",
18
18
  "sap/ui/core/date/Japanese",
19
19
  "sap/ui/core/date/Persian"
20
- ], function (Log, extend, DateFormat, Locale, LocaleData, UniversalDate, UI5Date, library, Configuration,
21
- Supportability, CalendarWeekNumbering, TestUtils) {
20
+ ], function (Log, extend, DateFormat, Locale, LocaleData, Buddhist, UniversalDate, UI5Date, library, Configuration,
21
+ Supportability, CalendarWeekNumbering, TestUtils) {
22
22
  "use strict";
23
23
  /* eslint-disable max-nested-callbacks */
24
24
  /*global QUnit, sinon */
25
25
 
26
26
  // shortcut for sap.ui.core.CalendarType
27
27
  const CalendarType = library.CalendarType;
28
- const oDateTime = UI5Date.getInstance("Tue Sep 23 06:46:13 2000 GMT+0000");
29
- const oTZDateTime = UI5Date.getInstance("Tue Sep 23 03:46:13 2000 GMT+0530");
28
+ const oDateTime = UI5Date.getInstance("2000-09-23T06:46:13Z");
29
+ const oTZDateTime = UI5Date.getInstance("2000-09-23T03:46:13+05:30");
30
30
  const oDefaultDate = DateFormat.getInstance();
31
31
  const oDefaultDateTime = DateFormat.getDateTimeInstance();
32
32
  const oDefaultTime = DateFormat.getTimeInstance();
@@ -695,7 +695,7 @@ sap.ui.define([
695
695
  });
696
696
 
697
697
  QUnit.test("format custom date timezone UTC+2 (EET)", function (assert) {
698
- var oDate = UI5Date.getInstance("Tue Oct 9 11:37:56 2018 GMT+0000"),
698
+ var oDate = UI5Date.getInstance("2018-10-09T11:37:56Z"),
699
699
  oCustomDateFormat, sFormatted;
700
700
  oDate.setMilliseconds(235);
701
701
 
@@ -1645,7 +1645,7 @@ sap.ui.define([
1645
1645
  });
1646
1646
 
1647
1647
  QUnit.test("parse short format without delimiter", function (assert) {
1648
- var oDate = UI5Date.getInstance("Mon Apr 7 00:00:00 2014"),
1648
+ var oDate = UI5Date.getInstance("2014-04-07T00:00:00"),
1649
1649
  oFormat = DateFormat.getDateInstance(),
1650
1650
  sDateIn = "040714", oDateOut = oFormat.parse(sDateIn);
1651
1651
 
@@ -1705,7 +1705,7 @@ sap.ui.define([
1705
1705
  });
1706
1706
 
1707
1707
  QUnit.test("parse and format quarters", function (assert) {
1708
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
1708
+ var oDate = UI5Date.getInstance(2001, 6, 4),
1709
1709
  oQuarter1 = DateFormat.getDateInstance({ pattern: "qq" }),
1710
1710
  oQuarter2 = DateFormat.getDateInstance({ pattern: "qqq" }),
1711
1711
  oQuarter3 = DateFormat.getDateInstance({ pattern: "qqqq" }),
@@ -2980,7 +2980,7 @@ sap.ui.define([
2980
2980
  QUnit.module("Islamic Date in locale en");
2981
2981
 
2982
2982
  QUnit.test("format date to Islamic type with locale en", function (assert) {
2983
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
2983
+ var oDate = UI5Date.getInstance(2001, 6, 4),
2984
2984
  oDateFormat = DateFormat.getDateInstance({
2985
2985
  calendarType: CalendarType.Islamic
2986
2986
  });
@@ -3056,7 +3056,7 @@ sap.ui.define([
3056
3056
 
3057
3057
  ["ar", "ar_EG", "ar_SA", "he"].forEach(function (sLocale, index) {
3058
3058
  QUnit.test("format Islamic date " + sLocale, function (assert) {
3059
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3059
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3060
3060
  oDateFormat = DateFormat.getDateInstance(new Locale(sLocale));
3061
3061
 
3062
3062
  assert.strictEqual(oDateFormat.format(oDate), aResultLocal[index], "Date is formatted to Islamic Date in " + sLocale + " locale");
@@ -3088,7 +3088,7 @@ sap.ui.define([
3088
3088
  QUnit.module("Japanese Date");
3089
3089
 
3090
3090
  QUnit.test("format date to Japanese type", function (assert) {
3091
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3091
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3092
3092
  oDateFormat = DateFormat.getDateInstance({
3093
3093
  calendarType: CalendarType.Japanese
3094
3094
  }, new Locale("ja_JP"));
@@ -3123,7 +3123,7 @@ sap.ui.define([
3123
3123
  });
3124
3124
 
3125
3125
  QUnit.test("format/parse date with Gannen instead of Ichinen", function (assert) {
3126
- var oDate = UI5Date.getInstance("May 1 2019"),
3126
+ var oDate = UI5Date.getInstance(2019, 4, 1),
3127
3127
  sDate = "令和元年5月1日",
3128
3128
  oDateFormat = DateFormat.getDateInstance({
3129
3129
  calendarType: CalendarType.Japanese
@@ -3134,7 +3134,7 @@ sap.ui.define([
3134
3134
  assert.strictEqual(sFormatted, sDate, "Date is formatted correctly with Gannen year");
3135
3135
  assert.deepEqual(oParsed, oDate, "Date with Gannen year is parsed correctly");
3136
3136
 
3137
- oDate = UI5Date.getInstance("Apr 1 2019");
3137
+ oDate = UI5Date.getInstance(2019, 3, 1);
3138
3138
  sDate = "平成31年4月1日";
3139
3139
  sFormatted = oDateFormat.format(oDate);
3140
3140
  oParsed = oDateFormat.parse(sDate);
@@ -3142,7 +3142,7 @@ sap.ui.define([
3142
3142
  assert.strictEqual(sFormatted, sDate, "Year ending with 1 is formatted as a number");
3143
3143
  assert.deepEqual(oParsed, oDate, "Date with numeric year is parsed correctly");
3144
3144
 
3145
- oDate = UI5Date.getInstance("May 1 2019");
3145
+ oDate = UI5Date.getInstance(2019, 4, 1);
3146
3146
  sDate = "R1/5/1";
3147
3147
  oDateFormat = DateFormat.getDateInstance({
3148
3148
  calendarType: CalendarType.Japanese,
@@ -3154,7 +3154,7 @@ sap.ui.define([
3154
3154
  assert.strictEqual(sFormatted, sDate, "Date is formatted correctly with numeric year");
3155
3155
  assert.deepEqual(oParsed, oDate, "Date with numeric year is parsed correctly");
3156
3156
 
3157
- oDate = [UI5Date.getInstance("May 1 2019"), UI5Date.getInstance("May 10 2019")];
3157
+ oDate = [UI5Date.getInstance(2019, 4, 1), UI5Date.getInstance(2019, 4, 10)];
3158
3158
  sDate = "令和元年5月1日~10日";
3159
3159
  oDateFormat = DateFormat.getDateInstance({
3160
3160
  calendarType: CalendarType.Japanese,
@@ -3167,7 +3167,7 @@ sap.ui.define([
3167
3167
  assert.strictEqual(sFormatted, sDate, "Date interval is formatted correctly with Gannen year");
3168
3168
  assert.deepEqual(oParsed, oDate, "Date interval with Gannen year is parsed correctly");
3169
3169
 
3170
- oDate = [UI5Date.getInstance("Apr 1 2019"), UI5Date.getInstance("May 1 2019")];
3170
+ oDate = [UI5Date.getInstance(2019, 3, 1), UI5Date.getInstance(2019, 4, 1)];
3171
3171
  sDate = "平成31年4月1日~令和元年5月1日";
3172
3172
  sFormatted = oDateFormat.format(oDate);
3173
3173
  oParsed = oDateFormat.parse(sDate);
@@ -3204,7 +3204,7 @@ sap.ui.define([
3204
3204
  QUnit.module("Japanese Date in locale en");
3205
3205
 
3206
3206
  QUnit.test("format date to Japanese type with locale en", function (assert) {
3207
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3207
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3208
3208
  oDateFormat = DateFormat.getDateInstance({
3209
3209
  calendarType: CalendarType.Japanese
3210
3210
  });
@@ -3239,7 +3239,7 @@ sap.ui.define([
3239
3239
  QUnit.module("Persian Date");
3240
3240
 
3241
3241
  QUnit.test("format date to Persian type", function (assert) {
3242
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3242
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3243
3243
  oDateFormat = DateFormat.getDateInstance({
3244
3244
  calendarType: CalendarType.Persian
3245
3245
  }, new Locale("fa_IR"));
@@ -3274,7 +3274,7 @@ sap.ui.define([
3274
3274
  QUnit.module("Persian Date in locale en");
3275
3275
 
3276
3276
  QUnit.test("format date to Persian type with locale en", function (assert) {
3277
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3277
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3278
3278
  oDateFormat = DateFormat.getDateInstance({
3279
3279
  calendarType: CalendarType.Persian
3280
3280
  });
@@ -3309,7 +3309,7 @@ sap.ui.define([
3309
3309
  QUnit.module("Buddhist Date");
3310
3310
 
3311
3311
  QUnit.test("format date to Buddhist type", function (assert) {
3312
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3312
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3313
3313
  oDateFormat = DateFormat.getDateInstance({
3314
3314
  calendarType: CalendarType.Buddhist
3315
3315
  }, new Locale("th_TH"));
@@ -3371,7 +3371,7 @@ sap.ui.define([
3371
3371
  QUnit.module("Buddhist Date in locale en");
3372
3372
 
3373
3373
  QUnit.test("format date to Buddhist type with locale en", function (assert) {
3374
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3374
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3375
3375
  oDateFormat = DateFormat.getDateInstance({
3376
3376
  calendarType: CalendarType.Buddhist
3377
3377
  });
@@ -3380,7 +3380,7 @@ sap.ui.define([
3380
3380
  });
3381
3381
 
3382
3382
  QUnit.test("format date to Buddhist type with locale en and calendar week", function (assert) {
3383
- var oDate = UI5Date.getInstance("Wed Jul 4 2001"),
3383
+ var oDate = UI5Date.getInstance(2001, 6, 4),
3384
3384
  oDateFormat = DateFormat.getDateInstance({
3385
3385
  calendarType: CalendarType.Buddhist,
3386
3386
  pattern: "YYYY'/'ww"
@@ -3420,6 +3420,35 @@ sap.ui.define([
3420
3420
  doTestRelative(assert, false, { style: "long", relativeRange: [1, 5], calendarType: CalendarType.Buddhist }, "en", "style long, range [1, 5], en with calendar type Buddhist");
3421
3421
  });
3422
3422
 
3423
+ // DINC0133323
3424
+ [
3425
+ {buddhistYear : 2465, date : "May 1, 2465 BE", expected : {day : 1, month : 4, year : 1922}},
3426
+ {buddhistYear : 2482, date : "Mar 1, 2482 BE", expected : {day : 1, month : 2, year : 1940}},
3427
+ {buddhistYear : 2483, date : "Apr 1, 2483 BE", expected : {day : 1, month : 3, year : 1940}},
3428
+ {buddhistYear : 2484, date : "Jan 1, 2484 BE", expected : {day : 1, month : 0, year : 1941}},
3429
+ {buddhistYear : 2484, date : "Apr 1, 2484 BE", expected : {day : 1, month : 3, year : 1941}}
3430
+ ].forEach(function (oFixture, i) {
3431
+ QUnit.test("parse and format dates with Buddhist calendar around era change " + i, function (assert) {
3432
+ const oDateFormat = DateFormat.getDateInstance({
3433
+ calendarType: CalendarType.Buddhist
3434
+ });
3435
+ const oFullYearSpy = this.spy(Buddhist.prototype, "setUTCFullYear");
3436
+ const oMonthSpy = this.spy(Buddhist.prototype, "setUTCMonth");
3437
+
3438
+ // code under test
3439
+ const oDate = oDateFormat.parse(oFixture.date);
3440
+
3441
+ assert.ok(oFullYearSpy.calledOnceWithExactly(oFixture.buddhistYear, oFixture.expected.month,
3442
+ oFixture.expected.day));
3443
+ assert.ok(oMonthSpy.notCalled, "setMonth is not called");
3444
+ assert.strictEqual(oDate.getFullYear(), oFixture.expected.year);
3445
+ assert.strictEqual(oDate.getMonth(), oFixture.expected.month);
3446
+ assert.strictEqual(oDate.getDate(), 1, oFixture.expected.day);
3447
+
3448
+ // code under test
3449
+ assert.strictEqual(oDateFormat.format(oDate), oFixture.date);
3450
+ });
3451
+ });
3423
3452
 
3424
3453
  QUnit.module("interval options validation", {
3425
3454
  beforeEach: function (assert) {
@@ -22,6 +22,8 @@ sap.ui.define([
22
22
  });
23
23
 
24
24
  QUnit.test("Test init with default settings", function (assert) {
25
+ const done = assert.async();
26
+
25
27
  Mobile.init();
26
28
 
27
29
  // check viewport: <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -36,7 +38,7 @@ sap.ui.define([
36
38
  var $mwac = jQuery("meta").filter("[name=mobile-web-app-capable]");
37
39
  assert.equal($amwac.length, 1, "There should be an apple-mobile-web-app-capable meta tag");
38
40
  assert.equal($amwac.attr("content"), "yes", "The apple-mobile-web-app-capable meta tag content should be correct");
39
- assert.equal($mwac.length, 0, "There shouldn't be any mobile-web-app-capable meta tag due to compatibility");
41
+ assert.equal($mwac.length, 1, "There should be an mobile-web-app-capable meta tag due to compatibility");
40
42
  }
41
43
 
42
44
  // check status bar style: <meta name="apple-mobile-web-app-status-bar-style" content="default">
@@ -50,13 +52,16 @@ sap.ui.define([
50
52
  var $ti = jQuery("link").filter("[rel=apple-touch-icon]");
51
53
  assert.equal($ti.length, 0, "There should be no apple-touch-icon tag");
52
54
 
53
- // Check whether size changes through new viewport were detected and the Device.resize values were adapted.
54
- assert.equal(window.innerHeight, Device.resize.height, "Device.resize.height is set correctly.");
55
- assert.equal(window.innerWidth, Device.resize.width, "Device.resize.width is set correctly.");
55
+ setTimeout(() => {
56
+ // Check whether size changes through new viewport were detected and the Device.resize values were adapted.
57
+ assert.equal(window.innerHeight, Device.resize.height, "Device.resize.height is set correctly.");
58
+ assert.equal(window.innerWidth, Device.resize.width, "Device.resize.width is set correctly.");
56
59
 
57
- // Check that additional init without parameters does not crash ==> See BCP 2270099497
58
- Mobile.init();
59
- assert.ok(true, "Mobile.init() was re-executed without exception.");
60
+ // Check that additional init without parameters does not crash ==> See BCP 2270099497
61
+ Mobile.init();
62
+ assert.ok(true, "Mobile.init() was re-executed without exception.");
63
+ done();
64
+ }, 50);
60
65
  });
61
66
 
62
67
  QUnit.test("Test init with custom settings", function (assert) {
@@ -807,5 +807,66 @@
807
807
  "text": " Add sap-system to OData V4 service URLs"
808
808
  }
809
809
  ]
810
+ },
811
+ "1.120.17": {
812
+ "date": "July 2024",
813
+ "notes": [
814
+ {
815
+ "id": "09f3f3272ebe7034f5cf81763976d3dd1718a80e",
816
+ "type": "FIX",
817
+ "text": " sap.ui.model.json.JSONModel#loadData: Don't use JSONP"
818
+ },
819
+ {
820
+ "id": "bf3541a8b52aac9b7786da3912498cd15a9bfb16",
821
+ "type": "FIX",
822
+ "text": " sap.ui.core.util.LibraryInfo: Loosen baseUrl regex check"
823
+ },
824
+ {
825
+ "id": "1dcad63d6d858e4bcd7685605f40d4fc6289a3c9",
826
+ "type": "FIX",
827
+ "text": " sap/ui/core/.library: Remove wrong component for sap/ui/core/util/MockServer"
828
+ },
829
+ {
830
+ "id": "86d3a35d8991b3a191660626fc77652bb1bfa6de",
831
+ "type": "FIX",
832
+ "text": " sap.ui.performance.XHRInterceptor: Fix CORS check"
833
+ },
834
+ {
835
+ "id": "f6b1d3719a89a64dbc89206fd6b7dcd466a01803",
836
+ "type": "FIX",
837
+ "text": " util/Mobile: update window size with delay after viewport is set"
838
+ },
839
+ {
840
+ "id": "f43529b494184af3a8962108f0fc905acb9682cd",
841
+ "type": "FIX",
842
+ "text": " sap.ui.core.format.DateFormat.qunit: Fix flaky tests"
843
+ },
844
+ {
845
+ "id": "ac4ad92e9770362dfea99a3bad8a9e2dae788421",
846
+ "type": "FIX",
847
+ "text": " sap\\ui\\core\\format\\DateFormat.fnCreateDate: set UTCFullYear must be set with all components"
848
+ }
849
+ ]
850
+ },
851
+ "1.120.18": {
852
+ "date": "July 2024",
853
+ "notes": [
854
+ {
855
+ "id": "ca8190849d7c2a56da46db4e7424ab538ee04f09",
856
+ "type": "FIX",
857
+ "text": " BindingInfo: Ensure that named models are only parsed once"
858
+ },
859
+ {
860
+ "id": "c905be5bc1d5bd6b89c49ae142101e9a466bf137",
861
+ "type": "FIX",
862
+ "text": " ControllerExtension support for TypeScript",
863
+ "references": [
864
+ {
865
+ "type": "BCP",
866
+ "reference": ""
867
+ }
868
+ ]
869
+ }
870
+ ]
810
871
  }
811
872
  }