@openui5/sap.ui.core 1.108.14 → 1.108.17

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 (300) hide show
  1. package/THIRDPARTY.txt +1 -1
  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/util/fetch.js +11 -9
  9. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  10. package/src/sap/base/util/restricted/_castArray.js +1 -1
  11. package/src/sap/base/util/restricted/_compact.js +1 -1
  12. package/src/sap/base/util/restricted/_curry.js +1 -1
  13. package/src/sap/base/util/restricted/_debounce.js +1 -1
  14. package/src/sap/base/util/restricted/_difference.js +1 -1
  15. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  16. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  17. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  18. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  20. package/src/sap/base/util/restricted/_flatten.js +1 -1
  21. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  22. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  23. package/src/sap/base/util/restricted/_intersection.js +1 -1
  24. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  25. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  26. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  27. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isNil.js +1 -1
  29. package/src/sap/base/util/restricted/_max.js +1 -1
  30. package/src/sap/base/util/restricted/_merge.js +1 -1
  31. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  32. package/src/sap/base/util/restricted/_min.js +1 -1
  33. package/src/sap/base/util/restricted/_omit.js +1 -1
  34. package/src/sap/base/util/restricted/_pick.js +1 -1
  35. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  36. package/src/sap/base/util/restricted/_throttle.js +1 -1
  37. package/src/sap/base/util/restricted/_toArray.js +1 -1
  38. package/src/sap/base/util/restricted/_union.js +1 -1
  39. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  40. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  41. package/src/sap/base/util/restricted/_uniq.js +1 -1
  42. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  43. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  44. package/src/sap/base/util/restricted/_without.js +1 -1
  45. package/src/sap/base/util/restricted/_xor.js +1 -1
  46. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  47. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  48. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  49. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  50. package/src/sap/ui/Device.js +3 -3
  51. package/src/sap/ui/Global.js +4 -4
  52. package/src/sap/ui/base/Event.js +1 -1
  53. package/src/sap/ui/base/EventProvider.js +1 -1
  54. package/src/sap/ui/base/Interface.js +1 -1
  55. package/src/sap/ui/base/ManagedObject.js +1 -1
  56. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  57. package/src/sap/ui/base/Metadata.js +1 -1
  58. package/src/sap/ui/base/Object.js +1 -1
  59. package/src/sap/ui/base/ObjectPool.js +1 -1
  60. package/src/sap/ui/core/.library +3 -3
  61. package/src/sap/ui/core/BusyIndicator.js +1 -1
  62. package/src/sap/ui/core/Component.js +1 -1
  63. package/src/sap/ui/core/ComponentContainer.js +1 -1
  64. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  65. package/src/sap/ui/core/ComponentSupport.js +1 -1
  66. package/src/sap/ui/core/Configuration.js +1 -1
  67. package/src/sap/ui/core/Control.js +1 -1
  68. package/src/sap/ui/core/Core.js +1 -1
  69. package/src/sap/ui/core/CustomData.js +1 -1
  70. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  71. package/src/sap/ui/core/Element.js +1 -1
  72. package/src/sap/ui/core/ElementMetadata.js +1 -1
  73. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  74. package/src/sap/ui/core/EventBus.js +1 -1
  75. package/src/sap/ui/core/Fragment.js +1 -1
  76. package/src/sap/ui/core/HTML.js +1 -1
  77. package/src/sap/ui/core/History.js +1 -1
  78. package/src/sap/ui/core/Icon.js +1 -1
  79. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  80. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  81. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  82. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  83. package/src/sap/ui/core/InvisibleText.js +1 -1
  84. package/src/sap/ui/core/Item.js +1 -1
  85. package/src/sap/ui/core/LabelEnablement.js +1 -1
  86. package/src/sap/ui/core/LayoutData.js +1 -1
  87. package/src/sap/ui/core/ListItem.js +1 -1
  88. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  89. package/src/sap/ui/core/Locale.js +1 -1
  90. package/src/sap/ui/core/LocaleData.js +1 -1
  91. package/src/sap/ui/core/Manifest.js +1 -1
  92. package/src/sap/ui/core/Message.js +1 -1
  93. package/src/sap/ui/core/RenderManager.js +1 -1
  94. package/src/sap/ui/core/Renderer.js +1 -1
  95. package/src/sap/ui/core/ResizeHandler.js +1 -1
  96. package/src/sap/ui/core/ScrollBar.js +1 -1
  97. package/src/sap/ui/core/SeparatorItem.js +1 -1
  98. package/src/sap/ui/core/Title.js +1 -1
  99. package/src/sap/ui/core/TooltipBase.js +1 -1
  100. package/src/sap/ui/core/UIArea.js +1 -1
  101. package/src/sap/ui/core/UIComponent.js +1 -1
  102. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  103. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  104. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  105. package/src/sap/ui/core/XMLComposite.js +1 -1
  106. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  107. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  108. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  109. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  110. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  111. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  112. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  113. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  114. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  115. package/src/sap/ui/core/library.js +3 -3
  116. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  117. package/src/sap/ui/core/message/Message.js +1 -1
  118. package/src/sap/ui/core/message/MessageManager.js +1 -1
  119. package/src/sap/ui/core/message/MessageParser.js +1 -1
  120. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  121. package/src/sap/ui/core/messagebundle_ar.properties +1 -0
  122. package/src/sap/ui/core/messagebundle_bg.properties +1 -0
  123. package/src/sap/ui/core/messagebundle_ca.properties +1 -0
  124. package/src/sap/ui/core/messagebundle_cs.properties +1 -0
  125. package/src/sap/ui/core/messagebundle_cy.properties +1 -0
  126. package/src/sap/ui/core/messagebundle_da.properties +1 -0
  127. package/src/sap/ui/core/messagebundle_de.properties +1 -0
  128. package/src/sap/ui/core/messagebundle_el.properties +1 -0
  129. package/src/sap/ui/core/messagebundle_en.properties +1 -0
  130. package/src/sap/ui/core/messagebundle_en_GB.properties +1 -0
  131. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  132. package/src/sap/ui/core/messagebundle_es.properties +1 -0
  133. package/src/sap/ui/core/messagebundle_es_MX.properties +1 -0
  134. package/src/sap/ui/core/messagebundle_et.properties +1 -0
  135. package/src/sap/ui/core/messagebundle_fi.properties +1 -0
  136. package/src/sap/ui/core/messagebundle_fr.properties +3 -2
  137. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -0
  138. package/src/sap/ui/core/messagebundle_hi.properties +1 -0
  139. package/src/sap/ui/core/messagebundle_hr.properties +1 -0
  140. package/src/sap/ui/core/messagebundle_hu.properties +1 -0
  141. package/src/sap/ui/core/messagebundle_id.properties +1 -0
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -0
  143. package/src/sap/ui/core/messagebundle_iw.properties +1 -0
  144. package/src/sap/ui/core/messagebundle_ja.properties +1 -0
  145. package/src/sap/ui/core/messagebundle_kk.properties +1 -0
  146. package/src/sap/ui/core/messagebundle_ko.properties +1 -0
  147. package/src/sap/ui/core/messagebundle_lt.properties +1 -0
  148. package/src/sap/ui/core/messagebundle_lv.properties +1 -0
  149. package/src/sap/ui/core/messagebundle_ms.properties +1 -0
  150. package/src/sap/ui/core/messagebundle_nl.properties +1 -0
  151. package/src/sap/ui/core/messagebundle_no.properties +1 -0
  152. package/src/sap/ui/core/messagebundle_pl.properties +1 -0
  153. package/src/sap/ui/core/messagebundle_pt.properties +1 -0
  154. package/src/sap/ui/core/messagebundle_pt_PT.properties +1 -0
  155. package/src/sap/ui/core/messagebundle_ro.properties +1 -0
  156. package/src/sap/ui/core/messagebundle_ru.properties +3 -2
  157. package/src/sap/ui/core/messagebundle_sh.properties +1 -0
  158. package/src/sap/ui/core/messagebundle_sk.properties +1 -0
  159. package/src/sap/ui/core/messagebundle_sl.properties +1 -0
  160. package/src/sap/ui/core/messagebundle_sv.properties +1 -0
  161. package/src/sap/ui/core/messagebundle_th.properties +1 -0
  162. package/src/sap/ui/core/messagebundle_tr.properties +1 -0
  163. package/src/sap/ui/core/messagebundle_uk.properties +20 -19
  164. package/src/sap/ui/core/messagebundle_vi.properties +1 -0
  165. package/src/sap/ui/core/messagebundle_zh_CN.properties +1 -0
  166. package/src/sap/ui/core/messagebundle_zh_TW.properties +1 -0
  167. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  168. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  169. package/src/sap/ui/core/mvc/JSView.js +1 -1
  170. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  171. package/src/sap/ui/core/mvc/View.js +1 -1
  172. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  173. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  174. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  175. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  176. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  177. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  178. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  179. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  180. package/src/sap/ui/core/service/Service.js +1 -1
  181. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  182. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  183. package/src/sap/ui/core/support/Plugin.js +1 -1
  184. package/src/sap/ui/core/support/Support.js +1 -1
  185. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  186. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  187. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  188. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  189. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  190. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  191. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  192. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  193. package/src/sap/ui/core/themes/base/base.less +4989 -174
  194. package/src/sap/ui/core/themes/base/global.less +114 -8
  195. package/src/sap/ui/core/themes/sap_hcb/global.less +114 -8
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +1 -1
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  201. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  202. package/src/sap/ui/core/util/Export.js +1 -1
  203. package/src/sap/ui/core/util/ExportCell.js +1 -1
  204. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  205. package/src/sap/ui/core/util/ExportRow.js +1 -1
  206. package/src/sap/ui/core/util/ExportType.js +1 -1
  207. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  208. package/src/sap/ui/core/util/File.js +1 -1
  209. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  210. package/src/sap/ui/core/util/MockServer.js +1 -1
  211. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  212. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +3 -1
  213. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  214. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  215. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  216. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  217. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  218. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  219. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  220. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  221. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  222. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  223. package/src/sap/ui/debug/ControlTree.js +1 -1
  224. package/src/sap/ui/debug/DebugEnv.js +1 -1
  225. package/src/sap/ui/debug/PropertyList.js +1 -1
  226. package/src/sap/ui/model/ClientModel.js +1 -1
  227. package/src/sap/ui/model/CompositeDataState.js +1 -1
  228. package/src/sap/ui/model/CompositeType.js +1 -1
  229. package/src/sap/ui/model/DataState.js +1 -1
  230. package/src/sap/ui/model/MetaModel.js +1 -1
  231. package/src/sap/ui/model/Model.js +1 -1
  232. package/src/sap/ui/model/SelectionModel.js +1 -1
  233. package/src/sap/ui/model/SimpleType.js +1 -1
  234. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  235. package/src/sap/ui/model/Type.js +1 -1
  236. package/src/sap/ui/model/json/JSONModel.js +1 -1
  237. package/src/sap/ui/model/message/MessageModel.js +1 -1
  238. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  239. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  240. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  241. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  242. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  243. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  244. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  245. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  246. package/src/sap/ui/model/odata/type/Date.js +1 -1
  247. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  248. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  249. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  250. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  251. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  252. package/src/sap/ui/model/odata/type/Double.js +1 -1
  253. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  254. package/src/sap/ui/model/odata/type/Int.js +1 -1
  255. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  256. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  257. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  258. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  259. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  260. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  261. package/src/sap/ui/model/odata/type/Single.js +1 -1
  262. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  263. package/src/sap/ui/model/odata/type/String.js +1 -1
  264. package/src/sap/ui/model/odata/type/Time.js +1 -1
  265. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  266. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  267. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  268. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  269. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  270. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  271. package/src/sap/ui/model/odata/v4/Context.js +2 -1
  272. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -3
  273. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  274. package/src/sap/ui/model/odata/v4/ODataListBinding.js +60 -9
  275. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +4 -1
  276. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  277. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +17 -12
  278. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +2 -0
  279. package/src/sap/ui/model/odata/v4/lib/_Cache.js +14 -0
  280. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  281. package/src/sap/ui/model/type/Boolean.js +1 -1
  282. package/src/sap/ui/model/type/Currency.js +1 -1
  283. package/src/sap/ui/model/type/Date.js +1 -1
  284. package/src/sap/ui/model/type/DateInterval.js +1 -1
  285. package/src/sap/ui/model/type/DateTime.js +1 -1
  286. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  287. package/src/sap/ui/model/type/FileSize.js +1 -1
  288. package/src/sap/ui/model/type/Float.js +1 -1
  289. package/src/sap/ui/model/type/Integer.js +1 -1
  290. package/src/sap/ui/model/type/String.js +1 -1
  291. package/src/sap/ui/model/type/Time.js +1 -1
  292. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  293. package/src/sap/ui/model/type/Unit.js +1 -1
  294. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  295. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  296. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  297. package/src/sap/ui/test/generic/TestBase.js +1 -1
  298. package/src/sap/ui/thirdparty/qunit-2.js +4 -1
  299. package/src/sap/ui/thirdparty/qunit.js +41 -11
  300. package/src/sap/ui/util/Storage.js +1 -1
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * @mixes sap.ui.model.odata.v4.ODataParentBinding
58
58
  * @public
59
59
  * @since 1.37.0
60
- * @version 1.108.14
60
+ * @version 1.108.17
61
61
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
62
62
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
63
63
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -445,6 +445,7 @@ sap.ui.define([
445
445
  sApply = _AggregationHelper.buildApply(mParameters.$$aggregation).$apply;
446
446
  }
447
447
  this.mQueryOptions = this.oModel.buildQueryOptions(mParameters, true);
448
+ this.oQueryOptionsPromise = undefined; // @see #doFetchQueryOptions
448
449
  this.mParameters = mParameters; // store mParameters at binding after validation
449
450
  if (sApply) {
450
451
  this.mQueryOptions.$apply = sApply;
@@ -1092,6 +1093,7 @@ sap.ui.define([
1092
1093
  this.mPreviousContextsByPath = undefined;
1093
1094
  this.aPreviousData = undefined;
1094
1095
  this.mQueryOptions = undefined;
1096
+ this.oQueryOptionsPromise = undefined;
1095
1097
  this.aSorters = undefined;
1096
1098
 
1097
1099
  asODataParentBinding.prototype.destroy.call(this);
@@ -1129,7 +1131,8 @@ sap.ui.define([
1129
1131
  * @private
1130
1132
  */
1131
1133
  ODataListBinding.prototype.destroyPreviousContexts = function (aPathsToDelete) {
1132
- var mPreviousContextsByPath = this.mPreviousContextsByPath;
1134
+ var mPreviousContextsByPath = this.mPreviousContextsByPath,
1135
+ that = this;
1133
1136
 
1134
1137
  if (mPreviousContextsByPath) { // binding may have been destroyed already
1135
1138
  (aPathsToDelete || Object.keys(mPreviousContextsByPath)).forEach(function (sPath) {
@@ -1141,6 +1144,11 @@ sap.ui.define([
1141
1144
  } else {
1142
1145
  if (!oContext.isTransient()) {
1143
1146
  oContext.destroy();
1147
+ if (oContext.iIndex === undefined && that.oCache) {
1148
+ // was kept alive (or deleted)
1149
+ that.oCache.removeKeptElement(
1150
+ _Helper.getRelativePath(sPath, that.oHeaderContext.getPath()));
1151
+ }
1144
1152
  }
1145
1153
  delete mPreviousContextsByPath[sPath];
1146
1154
  }
@@ -1149,6 +1157,23 @@ sap.ui.define([
1149
1157
  }
1150
1158
  };
1151
1159
 
1160
+ /**
1161
+ * Removes and destroys the contexts with the given paths from mPreviousContextsByPaths in a
1162
+ * prerendering task.
1163
+ *
1164
+ * @param {string[]} aPathsToDelete
1165
+ * Only contexts with paths in this list except kept-alive and pending deletes are removed and
1166
+ * destroyed (transient contexts are removed only)
1167
+ *
1168
+ * @private
1169
+ */
1170
+ ODataListBinding.prototype.destroyPreviousContextsLater = function (aPathsToDelete) {
1171
+ if (aPathsToDelete.length) {
1172
+ this.oModel.addPrerenderingTask(
1173
+ this.destroyPreviousContexts.bind(this, aPathsToDelete));
1174
+ }
1175
+ };
1176
+
1152
1177
  /**
1153
1178
  * @override
1154
1179
  * @see sap.ui.model.odata.v4.ODataBinding#doCreateCache
@@ -1189,14 +1214,23 @@ sap.ui.define([
1189
1214
  * @see sap.ui.model.odata.v4.ODataBinding#doFetchQueryOptions
1190
1215
  */
1191
1216
  ODataListBinding.prototype.doFetchQueryOptions = function (oContext) {
1192
- var that = this;
1217
+ // Note: an absolute binding needs no parent context :-)
1218
+ var sMetaPath = oContext && _Helper.getMetaPath(oContext.getPath()),
1219
+ that = this;
1193
1220
 
1194
- return this.fetchResolvedQueryOptions(oContext).then(function (mQueryOptions) {
1195
- return that.fetchFilter(oContext, mQueryOptions.$filter).then(function (aFilters) {
1196
- return _Helper.mergeQueryOptions(mQueryOptions,
1197
- that.getOrderby(mQueryOptions.$orderby), aFilters);
1198
- });
1199
- });
1221
+ if (!(this.oQueryOptionsPromise && this.oQueryOptionsPromise.$metaPath === sMetaPath)) {
1222
+ this.oQueryOptionsPromise
1223
+ = this.fetchResolvedQueryOptions(oContext).then(function (mQueryOptions) {
1224
+ return that.fetchFilter(oContext, mQueryOptions.$filter)
1225
+ .then(function (aFilters) {
1226
+ return _Helper.mergeQueryOptions(mQueryOptions,
1227
+ that.getOrderby(mQueryOptions.$orderby), aFilters);
1228
+ });
1229
+ });
1230
+ this.oQueryOptionsPromise.$metaPath = sMetaPath;
1231
+ }
1232
+
1233
+ return this.oQueryOptionsPromise;
1200
1234
  };
1201
1235
 
1202
1236
  /**
@@ -1793,6 +1827,7 @@ sap.ui.define([
1793
1827
  } else {
1794
1828
  this.aApplicationFilters = aFilters;
1795
1829
  }
1830
+ this.oQueryOptionsPromise = undefined;
1796
1831
 
1797
1832
  if (this.isRootBindingSuspended()) {
1798
1833
  this.setResumeChangeReason(ChangeReason.Filter);
@@ -2748,6 +2783,21 @@ sap.ui.define([
2748
2783
  }
2749
2784
  };
2750
2785
 
2786
+ /**
2787
+ * Notification from a context that its effective keep-alive status changed.
2788
+ *
2789
+ * @param {sap.ui.model.odata.v4.Context} oContext - The context
2790
+ *
2791
+ * @private
2792
+ */
2793
+ ODataListBinding.prototype.onKeepAliveChanged = function (oContext) {
2794
+ if (!oContext.isDeleted() // data of a deleted context must remain for the exclusion filter
2795
+ && oContext.getPath() in this.mPreviousContextsByPath
2796
+ && !oContext.isKeepAlive()) {
2797
+ this.destroyPreviousContextsLater([oContext.getPath()]);
2798
+ }
2799
+ };
2800
+
2751
2801
  /**
2752
2802
  * @override
2753
2803
  * @see sap.ui.model.odata.v4.ODataBinding#refreshInternal
@@ -3745,6 +3795,7 @@ sap.ui.define([
3745
3795
  }
3746
3796
 
3747
3797
  this.aSorters = aSorters;
3798
+ this.oQueryOptionsPromise = undefined;
3748
3799
 
3749
3800
  if (this.isRootBindingSuspended()) {
3750
3801
  this.setResumeChangeReason(ChangeReason.Sort);
@@ -157,7 +157,7 @@ sap.ui.define([
157
157
  * @hideconstructor
158
158
  * @public
159
159
  * @since 1.37.0
160
- * @version 1.108.14
160
+ * @version 1.108.17
161
161
  */
162
162
  ODataMetaModel = MetaModel.extend("sap.ui.model.odata.v4.ODataMetaModel", {
163
163
  constructor : constructor
@@ -2202,6 +2202,9 @@ sap.ui.define([
2202
2202
  if (oProperty.$Nullable === false) {
2203
2203
  setConstraint("nullable", false);
2204
2204
  }
2205
+ if (oProperty.$Type === "Edm.DateTimeOffset") {
2206
+ setConstraint("V4", true);
2207
+ }
2205
2208
  }
2206
2209
  return mConstraints;
2207
2210
  };
@@ -218,7 +218,7 @@ sap.ui.define([
218
218
  * @extends sap.ui.model.Model
219
219
  * @public
220
220
  * @since 1.37.0
221
- * @version 1.108.14
221
+ * @version 1.108.17
222
222
  */
223
223
  ODataModel = Model.extend("sap.ui.model.odata.v4.ODataModel",
224
224
  /** @lends sap.ui.model.odata.v4.ODataModel.prototype */{
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @mixes sap.ui.model.odata.v4.ODataBinding
43
43
  * @public
44
44
  * @since 1.37.0
45
- * @version 1.108.14
45
+ * @version 1.108.17
46
46
  * @borrows sap.ui.model.odata.v4.ODataBinding#getGroupId as #getGroupId
47
47
  * @borrows sap.ui.model.odata.v4.ODataBinding#getRootBinding as #getRootBinding
48
48
  * @borrows sap.ui.model.odata.v4.ODataBinding#getUpdateGroupId as #getUpdateGroupId
@@ -265,12 +265,9 @@ sap.ui.define([
265
265
  that = this;
266
266
 
267
267
  this.oCheckUpdateCallToken = oCallToken;
268
- if (this.bHasDeclaredType === undefined) {
269
- this.bHasDeclaredType = !!vType;
270
- }
271
- if (sResolvedPath && !this.bHasDeclaredType && this.sInternalType !== "any"
272
- && !bIsMeta) {
273
- vType = oMetaModel.fetchUI5Type(sResolvedPath);
268
+ if (!vType && sResolvedPath && this.sInternalType !== "any" && !bIsMeta
269
+ && !sResolvedPath.includes(sVirtualPath)) {
270
+ vType = oMetaModel.fetchUI5Type(this.sReducedPath || sResolvedPath);
274
271
  }
275
272
  if (vValue === undefined) {
276
273
  // if called via #onChange, we need to fetch implicit values
@@ -289,9 +286,7 @@ sap.ui.define([
289
286
  return vResult;
290
287
  });
291
288
  }
292
- if (!that.sReducedPath || !that.isResolved()) {
293
- // binding is unresolved or context was reset by another call to
294
- // checkUpdateInternal
289
+ if (!that.isResolved()) {
295
290
  return undefined;
296
291
  }
297
292
  if (sResolvedPath.includes(sVirtualPath)) {
@@ -332,7 +327,7 @@ sap.ui.define([
332
327
  });
333
328
  if (bForceUpdate && vValue.isFulfilled()) {
334
329
  if (vType && vType.isFulfilled && vType.isFulfilled()) {
335
- this.setType(vType.getResult(), this.sInternalType);
330
+ this.oType = vType.getResult();
336
331
  }
337
332
  this.vValue = vValue.getResult();
338
333
  }
@@ -346,7 +341,7 @@ sap.ui.define([
346
341
 
347
342
  if (oCallToken === that.oCheckUpdateCallToken) { // latest call to checkUpdateInternal
348
343
  that.oCheckUpdateCallToken = undefined;
349
- that.setType(oType, that.sInternalType);
344
+ that.oType = oType;
350
345
  if (oCallToken.forceUpdate || that.vValue !== vValue) {
351
346
  that.bInitial = false;
352
347
  that.vValue = vValue;
@@ -679,6 +674,15 @@ sap.ui.define([
679
674
  if (this.bRelative) {
680
675
  this.checkSuspended(true);
681
676
  this.deregisterChangeListener();
677
+ if (oContext) {
678
+ if (this.oType && !this.bHasDeclaredType
679
+ // Note: this.oType => this.sReducedPath
680
+ && _Helper.getMetaPath(this.oModel.resolve(this.sPath, oContext))
681
+ !== _Helper.getMetaPath(this.sReducedPath)) {
682
+ this.oType = undefined;
683
+ }
684
+ this.sReducedPath = undefined;
685
+ }
682
686
  }
683
687
  this.oContext = oContext;
684
688
  this.sResumeChangeReason = undefined;
@@ -709,6 +713,7 @@ sap.ui.define([
709
713
  ODataPropertyBinding.prototype.setType = function (oType, _sInternalType) {
710
714
  var oOldType = this.oType;
711
715
 
716
+ this.bHasDeclaredType = !!oType;
712
717
  if (oType && oType.getName() === "sap.ui.model.odata.type.DateTimeOffset") {
713
718
  oType.setV4();
714
719
  }
@@ -41,6 +41,7 @@ sap.ui.define([
41
41
  * Whether a grand total is needed
42
42
  *
43
43
  * @alias sap.ui.model.odata.v4.lib._AggregationCache
44
+ * @borrows sap.ui.model.odata.v4.lib._CollectionCache#removeKeptElement as #removeKeptElement
44
45
  * @constructor
45
46
  * @extends sap.ui.model.odata.v4.lib._Cache
46
47
  * @private
@@ -73,6 +74,7 @@ sap.ui.define([
73
74
  });
74
75
  }
75
76
  this.oFirstLevel = this.createGroupLevelCache(null, bHasGrandTotal || !!fnLeaves);
77
+ this.removeKeptElement = this.oFirstLevel.removeKeptElement; // @borrows ...
76
78
  this.oGrandTotalPromise = undefined;
77
79
  if (bHasGrandTotal) {
78
80
  this.oGrandTotalPromise = new SyncPromise(function (resolve) {
@@ -3052,6 +3052,20 @@ sap.ui.define([
3052
3052
  });
3053
3053
  };
3054
3054
 
3055
+ /**
3056
+ * Removes the element with the given predicate from $byPredicate of the cache's element list.
3057
+ *
3058
+ * @param {string} sPredicate - The predicate
3059
+ * @throws {Error}
3060
+ * If the cache is shared
3061
+ *
3062
+ * @public
3063
+ */
3064
+ _CollectionCache.prototype.removeKeptElement = function (sPredicate) {
3065
+ this.checkSharedRequest();
3066
+ delete this.aElements.$byPredicate[sPredicate];
3067
+ };
3068
+
3055
3069
  /**
3056
3070
  * Requests the elements in the given range and places them into the aElements list. Calculates
3057
3071
  * the key predicates for all entities in the result before the promise is resolved. While the
@@ -229,7 +229,7 @@ sap.ui.define([
229
229
  *
230
230
  * @extends sap.ui.model.Model
231
231
  * @public
232
- * @version 1.108.14
232
+ * @version 1.108.17
233
233
  */
234
234
  var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
235
235
 
@@ -19,7 +19,7 @@ sap.ui.define(['sap/ui/model/SimpleType', 'sap/ui/model/FormatException', 'sap/u
19
19
  * @extends sap.ui.model.SimpleType
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.108.14
22
+ * @version 1.108.17
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions]
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.model.CompositeType
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.108.14
35
+ * @version 1.108.17
36
36
  *
37
37
  * @public
38
38
  * @param {object} [oFormatOptions]
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.108.14
29
+ * @version 1.108.17
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * @extends sap.ui.model.CompositeType
34
34
  *
35
35
  * @author SAP SE
36
- * @version 1.108.14
36
+ * @version 1.108.17
37
37
  *
38
38
  * @public
39
39
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.108.14
22
+ * @version 1.108.17
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.108.14
22
+ * @version 1.108.17
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.SimpleType
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.108.14
27
+ * @version 1.108.17
28
28
  *
29
29
  * @public
30
30
  * @param {object} [oFormatOptions] formatting options. Supports the same options as {@link sap.ui.core.format.FileSizeFormat.getInstance FileSizeFormat.getInstance}
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.108.14
29
+ * @version 1.108.17
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.model.SimpleType
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.108.14
29
+ * @version 1.108.17
30
30
  *
31
31
  * @public
32
32
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.NumberFormat NumberFormat}.
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.SimpleType
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.108.14
27
+ * @version 1.108.17
28
28
  *
29
29
  * @alias sap.ui.model.type.String
30
30
  * @param {object} [oFormatOptions]
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.Date
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.108.14
22
+ * @version 1.108.17
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
19
19
  * @extends sap.ui.model.type.DateInterval
20
20
  *
21
21
  * @author SAP SE
22
- * @version 1.108.14
22
+ * @version 1.108.17
23
23
  *
24
24
  * @public
25
25
  * @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
@@ -48,7 +48,7 @@ sap.ui.define([
48
48
  *
49
49
  *
50
50
  * @author SAP SE
51
- * @version 1.108.14
51
+ * @version 1.108.17
52
52
  *
53
53
  * @public
54
54
  * @param {object} [oFormatOptions]
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.model.ClientModel
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.108.14
50
+ * @version 1.108.17
51
51
  *
52
52
  * @param {XMLDocument|string} oData
53
53
  * Either the URL where to load the XML from or an XML document
@@ -53,7 +53,7 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo"],
53
53
  * @namespace
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.108.14
56
+ * @version 1.108.17
57
57
  *
58
58
  * @public
59
59
  * @since 1.48.0
@@ -27,7 +27,7 @@ sap.ui.define([ 'sap/ui/core/Element', 'sap/ui/core/Control', 'sap/ui/core/Core'
27
27
  * @namespace
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.108.14
30
+ * @version 1.108.17
31
31
  *
32
32
  * @public
33
33
  * @since 1.48.0
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.base.Object
25
25
  * @abstract
26
26
  * @author SAP SE
27
- * @version 1.108.14
27
+ * @version 1.108.17
28
28
  * @since 1.100
29
29
  */
30
30
  return BaseObject.extend("sap.ui.test.generic.TestBase", {
@@ -3810,7 +3810,10 @@
3810
3810
  // Show the source of the test when showing assertions
3811
3811
  if (details.source) {
3812
3812
  sourceName = document$$1.createElement("p");
3813
- sourceName.innerHTML = "<strong>Source: </strong>" + details.source;
3813
+ //### BEGIN MODIFIED BY SAP
3814
+ // sourceName.innerHTML = "<strong>Source: </strong>" + details.source;
3815
+ sourceName.innerHTML = "<strong>Source: </strong>" + escapeText( details.source );
3816
+ //### END MODIFIED BY SAP
3814
3817
  addClass(sourceName, "qunit-source");
3815
3818
  if (testPassed) {
3816
3819
  addClass(sourceName, "qunit-collapsed");
@@ -182,26 +182,50 @@ config.modules.push( config.currentModule );
182
182
 
183
183
  // Initialize more QUnit.config and QUnit.urlParams
184
184
  (function() {
185
- var i, current,
185
+ //### BEGIN MODIFIED BY SAP
186
+ // var i, current,
187
+ // location = window.location || { search: "", protocol: "file:" },
188
+ // params = location.search.slice( 1 ).split( "&" ),
189
+ // length = params.length,
190
+ // urlParams = {};
191
+ //
192
+ // if ( params[ 0 ] ) {
193
+ // for ( i = 0; i < length; i++ ) {
194
+ // current = params[ i ].split( "=" );
195
+ // current[ 0 ] = decodeURIComponent( current[ 0 ] );
196
+ //
197
+ // // allow just a key to turn on a flag, e.g., test.html?noglobals
198
+ // current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
199
+ // if ( urlParams[ current[ 0 ] ] ) {
200
+ // urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] );
201
+ // } else {
202
+ // urlParams[ current[ 0 ] ] = current[ 1 ];
203
+ // }
204
+ // }
205
+ // }
206
+
207
+ var i, param, name, value,
186
208
  location = window.location || { search: "", protocol: "file:" },
187
209
  params = location.search.slice( 1 ).split( "&" ),
188
210
  length = params.length,
189
211
  urlParams = {};
190
212
 
191
- if ( params[ 0 ] ) {
192
- for ( i = 0; i < length; i++ ) {
193
- current = params[ i ].split( "=" );
194
- current[ 0 ] = decodeURIComponent( current[ 0 ] );
213
+ for ( i = 0; i < length; i++ ) {
214
+ if ( params[ i ] ) {
215
+ param = params[ i ].split( "=" );
216
+ name = decodeURIComponent( param[ 0 ] );
195
217
 
196
218
  // allow just a key to turn on a flag, e.g., test.html?noglobals
197
- current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
198
- if ( urlParams[ current[ 0 ] ] ) {
199
- urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] );
219
+ value = param.length === 1 ||
220
+ decodeURIComponent( param.slice( 1 ).join( "=" ) );
221
+ if ( urlParams[ name ] ) {
222
+ urlParams[ name ] = [].concat( urlParams[ name ], value );
200
223
  } else {
201
- urlParams[ current[ 0 ] ] = current[ 1 ];
224
+ urlParams[ name ] = value;
202
225
  }
203
226
  }
204
227
  }
228
+ //END MODIFIED BY SAP
205
229
 
206
230
  if ( urlParams.filter === true ) {
207
231
  delete urlParams.filter;
@@ -3510,7 +3534,10 @@ function appendHeader() {
3510
3534
 
3511
3535
  if ( header ) {
3512
3536
  header.innerHTML = "<a href='" +
3513
- setUrl({ filter: undefined, module: undefined, testId: undefined }) +
3537
+ //### BEGIN MODIFIED BY SAP
3538
+ // setUrl({ filter: undefined, module: undefined, testId: undefined }) +
3539
+ escapeText( setUrl( { filter: undefined, module: undefined, testId: undefined } ) ) +
3540
+ //### END MODIFIED BY SAP
3514
3541
  "'>" + header.innerHTML + "</a> ";
3515
3542
  }
3516
3543
  }
@@ -3758,7 +3785,10 @@ QUnit.log(function( details ) {
3758
3785
  message += "<tr class='test-message'><th>Message: </th><td>" +
3759
3786
  "Diff suppressed as the depth of object is more than current max depth (" +
3760
3787
  QUnit.config.maxDepth + ").<p>Hint: Use <code>QUnit.dump.maxDepth</code> to " +
3761
- " run with a higher max depth or <a href='" + setUrl({ maxDepth: -1 }) + "'>" +
3788
+ //### BEGIN MODIFIED BY SAP
3789
+ // " run with a higher max depth or <a href='" + setUrl({ maxDepth: -1 }) + "'>" +
3790
+ " run with a higher max depth or <a href='" + escapeText( setUrl( { maxDepth: -1 } ) ) + "'>" +
3791
+ //### END MODIFIED BY SAP
3762
3792
  "Rerun</a> without max depth.</p></td></tr>";
3763
3793
  }
3764
3794
  }
@@ -250,7 +250,7 @@ sap.ui.define(["sap/base/assert"], function (assert) {
250
250
  *
251
251
  * @enum {string}
252
252
  * @public
253
- * @version 1.108.14
253
+ * @version 1.108.17
254
254
  */
255
255
  Storage.Type = {
256
256
  /**