@openui5/sap.ui.core 1.104.0 → 1.105.0

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 (291) hide show
  1. package/.reuse/dep5 +1 -1
  2. package/THIRDPARTY.txt +1 -1
  3. package/package.json +1 -1
  4. package/src/jquery.sap.global.js +1 -1
  5. package/src/jquery.sap.properties.js +1 -1
  6. package/src/jquery.sap.resources.js +1 -1
  7. package/src/jquery.sap.script.js +1 -1
  8. package/src/jquery.sap.storage.js +3 -3
  9. package/src/sap/base/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 +5 -5
  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/ManagedObjectObserver.js +2 -2
  58. package/src/sap/ui/base/Metadata.js +1 -1
  59. package/src/sap/ui/base/Object.js +1 -1
  60. package/src/sap/ui/base/ObjectPool.js +1 -1
  61. package/src/sap/ui/core/.library +54 -51
  62. package/src/sap/ui/core/AccessKeysEnablement.js +173 -0
  63. package/src/sap/ui/core/BusyIndicator.js +1 -1
  64. package/src/sap/ui/core/Component.js +1 -1
  65. package/src/sap/ui/core/ComponentContainer.js +1 -1
  66. package/src/sap/ui/core/ComponentMetadata.js +11 -11
  67. package/src/sap/ui/core/ComponentSupport.js +1 -1
  68. package/src/sap/ui/core/Configuration.js +33 -5
  69. package/src/sap/ui/core/Control.js +1 -1
  70. package/src/sap/ui/core/Core.js +1 -1
  71. package/src/sap/ui/core/CustomData.js +1 -1
  72. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  73. package/src/sap/ui/core/Element.js +1 -1
  74. package/src/sap/ui/core/ElementMetadata.js +6 -4
  75. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  76. package/src/sap/ui/core/EventBus.js +1 -1
  77. package/src/sap/ui/core/ExtensionPoint.js +2 -2
  78. package/src/sap/ui/core/Fragment.js +1 -1
  79. package/src/sap/ui/core/HTML.js +1 -1
  80. package/src/sap/ui/core/History.js +1 -1
  81. package/src/sap/ui/core/Icon.js +1 -1
  82. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  83. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  84. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  85. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  86. package/src/sap/ui/core/InvisibleText.js +1 -1
  87. package/src/sap/ui/core/Item.js +1 -1
  88. package/src/sap/ui/core/LabelEnablement.js +1 -1
  89. package/src/sap/ui/core/LayoutData.js +1 -1
  90. package/src/sap/ui/core/ListItem.js +1 -1
  91. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  92. package/src/sap/ui/core/Locale.js +1 -1
  93. package/src/sap/ui/core/LocaleData.js +2 -3
  94. package/src/sap/ui/core/Manifest.js +3 -5
  95. package/src/sap/ui/core/Message.js +1 -1
  96. package/src/sap/ui/core/RenderManager.js +1 -1
  97. package/src/sap/ui/core/Renderer.js +1 -1
  98. package/src/sap/ui/core/ResizeHandler.js +1 -1
  99. package/src/sap/ui/core/ScrollBar.js +1 -1
  100. package/src/sap/ui/core/SeparatorItem.js +1 -1
  101. package/src/sap/ui/core/Title.js +1 -1
  102. package/src/sap/ui/core/TooltipBase.js +1 -1
  103. package/src/sap/ui/core/UIArea.js +1 -1
  104. package/src/sap/ui/core/UIComponent.js +1 -1
  105. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  106. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  107. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  108. package/src/sap/ui/core/XMLComposite.js +4 -1
  109. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  110. package/src/sap/ui/core/_IconRegistry.js +1 -1
  111. package/src/sap/ui/core/date/Buddhist.js +4 -4
  112. package/src/sap/ui/core/date/UniversalDate.js +144 -34
  113. package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
  114. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  115. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  116. package/src/sap/ui/core/dnd/DragDropInfo.js +3 -3
  117. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  118. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  119. package/src/sap/ui/core/format/DateFormat.js +31 -9
  120. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  121. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  122. package/src/sap/ui/core/library.js +44 -3
  123. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  124. package/src/sap/ui/core/message/Message.js +1 -1
  125. package/src/sap/ui/core/message/MessageManager.js +1 -1
  126. package/src/sap/ui/core/message/MessageParser.js +1 -1
  127. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  128. package/src/sap/ui/core/messagebundle.properties +2 -0
  129. package/src/sap/ui/core/messagebundle_cy.properties +1 -1
  130. package/src/sap/ui/core/messagebundle_el.properties +1 -1
  131. package/src/sap/ui/core/messagebundle_en.properties +57 -56
  132. package/src/sap/ui/core/messagebundle_en_GB.properties +57 -56
  133. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  134. package/src/sap/ui/core/messagebundle_fr_CA.properties +1 -1
  135. package/src/sap/ui/core/messagebundle_hi.properties +1 -1
  136. package/src/sap/ui/core/messagebundle_hu.properties +1 -1
  137. package/src/sap/ui/core/messagebundle_ko.properties +4 -4
  138. package/src/sap/ui/core/messagebundle_sh.properties +1 -1
  139. package/src/sap/ui/core/messagebundle_vi.properties +1 -1
  140. package/src/sap/ui/core/mvc/Controller.js +12 -12
  141. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  142. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  143. package/src/sap/ui/core/mvc/JSView.js +1 -1
  144. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  145. package/src/sap/ui/core/mvc/View.js +7 -7
  146. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  147. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  148. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  149. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  150. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  151. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  152. package/src/sap/ui/core/routing/Router.js +3 -3
  153. package/src/sap/ui/core/search/OpenSearchProvider.js +2 -2
  154. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  155. package/src/sap/ui/core/service/Service.js +1 -1
  156. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  157. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  158. package/src/sap/ui/core/support/Plugin.js +1 -1
  159. package/src/sap/ui/core/support/Support.js +2 -3
  160. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Debugging.js +1 -1
  162. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  163. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  164. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  165. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  166. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  167. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  168. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -3
  169. package/src/sap/ui/core/themes/base/Icon.less +4 -0
  170. package/src/sap/ui/core/themes/base/global.less +5 -1
  171. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  172. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  173. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  174. package/src/sap/ui/core/tmpl/Template.js +1 -1
  175. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  176. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  177. package/src/sap/ui/core/util/Export.js +1 -1
  178. package/src/sap/ui/core/util/ExportCell.js +1 -1
  179. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  180. package/src/sap/ui/core/util/ExportRow.js +1 -1
  181. package/src/sap/ui/core/util/ExportType.js +1 -1
  182. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  183. package/src/sap/ui/core/util/File.js +1 -1
  184. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  185. package/src/sap/ui/core/util/MockServer.js +1 -1
  186. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  187. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +0 -3
  188. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  189. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  190. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  191. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  192. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  193. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  194. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  195. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  196. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  197. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  198. package/src/sap/ui/debug/ControlTree.js +1 -1
  199. package/src/sap/ui/debug/DebugEnv.js +1 -1
  200. package/src/sap/ui/debug/PropertyList.js +1 -1
  201. package/src/sap/ui/model/ClientModel.js +1 -1
  202. package/src/sap/ui/model/CompositeDataState.js +1 -1
  203. package/src/sap/ui/model/CompositeType.js +1 -1
  204. package/src/sap/ui/model/DataState.js +1 -1
  205. package/src/sap/ui/model/MetaModel.js +1 -1
  206. package/src/sap/ui/model/Model.js +1 -1
  207. package/src/sap/ui/model/SelectionModel.js +1 -1
  208. package/src/sap/ui/model/SimpleType.js +1 -1
  209. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  210. package/src/sap/ui/model/Type.js +1 -1
  211. package/src/sap/ui/model/_Helper.js +3 -1
  212. package/src/sap/ui/model/base/ManagedObjectModel.js +2 -2
  213. package/src/sap/ui/model/json/JSONModel.js +1 -1
  214. package/src/sap/ui/model/message/MessageModel.js +1 -1
  215. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  216. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  217. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  218. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  219. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  220. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +310 -153
  221. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  222. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  223. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  224. package/src/sap/ui/model/odata/type/Date.js +1 -1
  225. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  226. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  227. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  228. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  229. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  230. package/src/sap/ui/model/odata/type/Double.js +1 -1
  231. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  232. package/src/sap/ui/model/odata/type/Int.js +1 -1
  233. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  234. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  235. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  236. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  237. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  238. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  239. package/src/sap/ui/model/odata/type/Single.js +1 -1
  240. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  241. package/src/sap/ui/model/odata/type/String.js +1 -1
  242. package/src/sap/ui/model/odata/type/Time.js +1 -1
  243. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  244. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  245. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  246. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  247. package/src/sap/ui/model/odata/v2/ODataListBinding.js +25 -0
  248. package/src/sap/ui/model/odata/v2/ODataModel.js +50 -19
  249. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +4 -1
  250. package/src/sap/ui/model/odata/v4/Context.js +84 -30
  251. package/src/sap/ui/model/odata/v4/ODataBinding.js +4 -8
  252. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +26 -27
  253. package/src/sap/ui/model/odata/v4/ODataListBinding.js +120 -93
  254. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  255. package/src/sap/ui/model/odata/v4/ODataModel.js +3 -2
  256. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +10 -13
  257. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +4 -4
  258. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +135 -28
  259. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +133 -16
  260. package/src/sap/ui/model/odata/v4/lib/_Cache.js +267 -137
  261. package/src/sap/ui/model/odata/v4/lib/_Helper.js +31 -9
  262. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +5 -5
  263. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  264. package/src/sap/ui/model/type/Boolean.js +1 -1
  265. package/src/sap/ui/model/type/Currency.js +1 -1
  266. package/src/sap/ui/model/type/Date.js +1 -1
  267. package/src/sap/ui/model/type/DateInterval.js +1 -1
  268. package/src/sap/ui/model/type/DateTime.js +1 -1
  269. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  270. package/src/sap/ui/model/type/FileSize.js +1 -1
  271. package/src/sap/ui/model/type/Float.js +1 -1
  272. package/src/sap/ui/model/type/Integer.js +1 -1
  273. package/src/sap/ui/model/type/String.js +1 -1
  274. package/src/sap/ui/model/type/Time.js +1 -1
  275. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  276. package/src/sap/ui/model/type/Unit.js +1 -1
  277. package/src/sap/ui/model/xml/XMLModel.js +4 -2
  278. package/src/sap/ui/performance/trace/FESR.js +27 -24
  279. package/src/sap/ui/performance/trace/Interaction.js +66 -16
  280. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  281. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  282. package/src/sap/ui/test/actions/Press.js +7 -0
  283. package/src/sap/ui/test/generic/TestBase.js +1 -1
  284. package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +2 -3
  285. package/src/sap/ui/test/matchers/AggregationFilled.js +2 -3
  286. package/src/sap/ui/test/matchers/AggregationLengthEquals.js +2 -3
  287. package/src/sap/ui/test/opaQunit.js +11 -6
  288. package/src/sap/ui/test/pipelines/ActionPipeline.js +2 -3
  289. package/src/sap/ui/test/pipelines/MatcherPipeline.js +2 -3
  290. package/src/sap/ui/test/pipelines/PipelineFactory.js +2 -3
  291. package/src/sap/ui/util/Storage.js +1 -1
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.model.odata.type.DateTimeBase
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.104.0
31
+ * @version 1.105.0
32
32
  *
33
33
  * @alias sap.ui.model.odata.type.DateTimeOffset
34
34
  * @param {object} [oFormatOptions]
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @public
61
61
  * @see {sap.ui.model.odata.v2.ODataModel#bindProperty}
62
62
  * @since 1.99.0
63
- * @version 1.104.0
63
+ * @version 1.105.0
64
64
  */
65
65
  var DateTimeWithTimezone = CompositeType.extend("sap.ui.model.odata.type.DateTimeWithTimezone",
66
66
  {
@@ -201,7 +201,7 @@ sap.ui.define([
201
201
  * @extends sap.ui.model.odata.type.ODataType
202
202
  *
203
203
  * @author SAP SE
204
- * @version 1.104.0
204
+ * @version 1.105.0
205
205
  *
206
206
  * @alias sap.ui.model.odata.type.Decimal
207
207
  * @param {object} [oFormatOptions]
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.model.odata.type.ODataType
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.104.0
98
+ * @version 1.105.0
99
99
  *
100
100
  * @alias sap.ui.model.odata.type.Double
101
101
  * @param {object} [oFormatOptions]
@@ -62,7 +62,7 @@ sap.ui.define([
62
62
  * @extends sap.ui.model.odata.type.ODataType
63
63
  *
64
64
  * @author SAP SE
65
- * @version 1.104.0
65
+ * @version 1.105.0
66
66
  *
67
67
  * @alias sap.ui.model.odata.type.Guid
68
68
  * @param {object} [oFormatOptions]
@@ -80,7 +80,7 @@ sap.ui.define([
80
80
  * @extends sap.ui.model.odata.type.ODataType
81
81
  *
82
82
  * @author SAP SE
83
- * @version 1.104.0
83
+ * @version 1.105.0
84
84
  *
85
85
  * @abstract
86
86
  * @alias sap.ui.model.odata.type.Int
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.104.0
27
+ * @version 1.105.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Int16
30
30
  * @param {object} [oFormatOptions]
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.104.0
27
+ * @version 1.105.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.Int32
30
30
  * @param {object} [oFormatOptions]
@@ -137,7 +137,7 @@ sap.ui.define([
137
137
  * @extends sap.ui.model.odata.type.ODataType
138
138
  *
139
139
  * @author SAP SE
140
- * @version 1.104.0
140
+ * @version 1.105.0
141
141
  *
142
142
  * @alias sap.ui.model.odata.type.Int64
143
143
  * @param {object} [oFormatOptions]
@@ -115,7 +115,7 @@ sap.ui.define([
115
115
  * @extends sap.ui.model.SimpleType
116
116
  *
117
117
  * @author SAP SE
118
- * @version 1.104.0
118
+ * @version 1.105.0
119
119
  *
120
120
  * @abstract
121
121
  * @alias sap.ui.model.odata.type.ODataType
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.model.odata.type.ODataType
31
31
  * @public
32
32
  * @since 1.37.0
33
- * @version 1.104.0
33
+ * @version 1.105.0
34
34
  */
35
35
  var Raw = ODataType.extend("sap.ui.model.odata.type.Raw", {
36
36
  constructor : function (oFormatOptions, oConstraints) {
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.model.odata.type.Int
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.104.0
27
+ * @version 1.105.0
28
28
  *
29
29
  * @alias sap.ui.model.odata.type.SByte
30
30
  * @param {object} [oFormatOptions]
@@ -95,7 +95,7 @@ sap.ui.define([
95
95
  * @extends sap.ui.model.odata.type.ODataType
96
96
  *
97
97
  * @author SAP SE
98
- * @version 1.104.0
98
+ * @version 1.105.0
99
99
  *
100
100
  * @alias sap.ui.model.odata.type.Single
101
101
  * @param {object} [oFormatOptions]
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @extends sap.ui.model.odata.type.ODataType
61
61
  * @public
62
62
  * @since 1.51.0
63
- * @version 1.104.0
63
+ * @version 1.105.0
64
64
  */
65
65
  var Stream = ODataType.extend("sap.ui.model.odata.type.Stream", {
66
66
  constructor : function (oFormatOptions, oConstraints) {
@@ -84,7 +84,7 @@ sap.ui.define([
84
84
  * @extends sap.ui.model.odata.type.ODataType
85
85
  *
86
86
  * @author SAP SE
87
- * @version 1.104.0
87
+ * @version 1.105.0
88
88
  *
89
89
  * @alias sap.ui.model.odata.type.String
90
90
  * @param {object} [oFormatOptions]
@@ -154,7 +154,7 @@ sap.ui.define([
154
154
  * @extends sap.ui.model.odata.type.ODataType
155
155
  *
156
156
  * @author SAP SE
157
- * @version 1.104.0
157
+ * @version 1.105.0
158
158
  *
159
159
  * @alias sap.ui.model.odata.type.Time
160
160
  * @param {object} [oFormatOptions]
@@ -110,7 +110,7 @@ sap.ui.define([
110
110
  * @extends sap.ui.model.odata.type.ODataType
111
111
  * @public
112
112
  * @since 1.37.0
113
- * @version 1.104.0
113
+ * @version 1.105.0
114
114
  */
115
115
  var TimeOfDay = ODataType.extend("sap.ui.model.odata.type.TimeOfDay", {
116
116
  constructor : function (oFormatOptions, oConstraints) {
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @extends sap.ui.model.type.Unit
64
64
  * @public
65
65
  * @since 1.63.0
66
- * @version 1.104.0
66
+ * @version 1.105.0
67
67
  */
68
68
  var Unit = BaseUnit.extend("sap.ui.model.odata.type.Unit", {
69
69
  constructor : function (oFormatOptions, oConstraints, aDynamicFormatOptionNames) {
@@ -60,7 +60,7 @@ sap.ui.define([
60
60
  * @hideconstructor
61
61
  * @public
62
62
  * @since 1.93.0
63
- * @version 1.104.0
63
+ * @version 1.105.0
64
64
  */
65
65
  var Context = BaseContext.extend("sap.ui.model.odata.v2.Context", {
66
66
  constructor : function (oModel, sPath, sDeepPath, oCreatePromise, bInactive) {
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @class Annotation loader for OData V2 services
36
36
  *
37
37
  * @author SAP SE
38
- * @version 1.104.0
38
+ * @version 1.105.0
39
39
  *
40
40
  * @public
41
41
  * @since 1.37.0
@@ -143,6 +143,8 @@ sap.ui.define([
143
143
  this._removePersistedCreatedContexts();
144
144
  this.resetData();
145
145
  }
146
+
147
+ this._reassignCreateActivate();
146
148
  },
147
149
 
148
150
  metadata : {
@@ -1381,9 +1383,14 @@ sap.ui.define([
1381
1383
  }
1382
1384
  if (this.sSortParams) {
1383
1385
  aParams.push(this.sSortParams);
1386
+ } else if (this.aSorters.length && this.useClientMode()) {
1387
+ aParams.push(ODataUtils.createSortParams(this.aSorters));
1384
1388
  }
1385
1389
  if (this.sFilterParams) {
1386
1390
  aParams.push(this.sFilterParams);
1391
+ } else if (this.oCombinedFilter && this.useClientMode()) {
1392
+ aParams.push(ODataUtils.createFilterParams(this.oCombinedFilter, this.oModel.oMetadata,
1393
+ this.oEntityType));
1387
1394
  }
1388
1395
  if (this.sCustomParams) {
1389
1396
  aParams.push(this.sCustomParams);
@@ -2167,5 +2174,23 @@ sap.ui.define([
2167
2174
  }
2168
2175
  };
2169
2176
 
2177
+ /**
2178
+ * Assigns the "createActivate"-event to all already exisiting inactive contexts which are
2179
+ * belonging to this binding.
2180
+ *
2181
+ * @private
2182
+ */
2183
+ ODataListBinding.prototype._reassignCreateActivate = function () {
2184
+ var that = this;
2185
+
2186
+ this._getCreatedContexts().forEach(function (oContext) {
2187
+ if (oContext.isInactive()) {
2188
+ oContext.fetchActivated().then(function () {
2189
+ that.fireEvent("createActivate");
2190
+ });
2191
+ }
2192
+ });
2193
+ };
2194
+
2170
2195
  return ODataListBinding;
2171
2196
  });
@@ -203,7 +203,7 @@ sap.ui.define([
203
203
  * This model is not prepared to be inherited from.
204
204
  *
205
205
  * @author SAP SE
206
- * @version 1.104.0
206
+ * @version 1.105.0
207
207
  *
208
208
  * @public
209
209
  * @alias sap.ui.model.odata.v2.ODataModel
@@ -4329,8 +4329,11 @@ sap.ui.define([
4329
4329
  }
4330
4330
  }
4331
4331
 
4332
- // Parse messages from the back-end
4333
- this._parseResponse(oResponse, oRequest, mLocalGetEntities, mLocalChangeEntities);
4332
+ // Parse messages from the back-end only if not yet reported
4333
+ if (!oResponse.$reported) {
4334
+ this._parseResponse(oResponse, oRequest, mLocalGetEntities, mLocalChangeEntities);
4335
+ oResponse.$reported = true;
4336
+ }
4334
4337
 
4335
4338
  // Add the Get and Change entities from this request to the main ones (which differ in case of batch requests)
4336
4339
  extend(mGetEntities, mLocalGetEntities);
@@ -6277,6 +6280,10 @@ sap.ui.define([
6277
6280
  * taken into account. If <code>bAll</code> is set, also deferred requests triggered through
6278
6281
  * {@link #create}, {@link #update} or {@link #remove} are taken into account.
6279
6282
  *
6283
+ * With a given <code>aPath</code> only specified entities are reset. Note that tree hierarchy
6284
+ * changes are only affected if a given path is equal to the tree binding's resolved binding
6285
+ * path.
6286
+ *
6280
6287
  * If <code>bDeleteCreatedEntities</code> is set, the entity is completely removed, provided it
6281
6288
  * has been created
6282
6289
  * <ul>
@@ -6352,6 +6359,11 @@ sap.ui.define([
6352
6359
  oChangedEntity.__metadata.created && bDeleteCreatedEntities);
6353
6360
  });
6354
6361
  }
6362
+ this.getBindings().forEach(function (oBinding) {
6363
+ if (oBinding._resetChanges) {
6364
+ oBinding._resetChanges(aPath);
6365
+ }
6366
+ });
6355
6367
  this.checkUpdate(true);
6356
6368
 
6357
6369
  return pMetaDataLoaded;
@@ -6447,7 +6459,9 @@ sap.ui.define([
6447
6459
  bFunction = oOriginalEntry.__metadata.created && oOriginalEntry.__metadata.created.functionImport;
6448
6460
 
6449
6461
  // Update property value on change object
6450
- oChangeObject[sPropertyPath] = oValue;
6462
+ oChangeObject[sPropertyPath] = _Helper.isPlainObject(oValue)
6463
+ ? _Helper.merge({}, oValue)
6464
+ : oValue;
6451
6465
 
6452
6466
  // If property is key property of ReferentialConstraint, also update the corresponding
6453
6467
  // navigation property
@@ -6632,27 +6646,29 @@ sap.ui.define([
6632
6646
  /**
6633
6647
  * Checks if there exist pending changes in the model.
6634
6648
  *
6635
- * By default, only client data changes triggered through:
6636
- * {@link #createEntry}
6637
- * {@link #setProperty}
6638
- * are taken into account.
6649
+ * By default, only client data changes triggered through {@link #createEntry} or
6650
+ * {@link #setProperty}, and tree hierarchy changes are taken into account.
6639
6651
  *
6640
- * If <code>bAll</code> is set to <code>true</code>, also deferred requests triggered through:
6641
- * {@link #create}
6642
- * {@link #update}
6643
- * {@link #remove}
6644
- * are taken into account.
6652
+ * If <code>bAll</code> is set to <code>true</code>, also deferred requests triggered through
6653
+ * {@link #create}, {@link #update}, and {@link #remove} are taken into account.
6645
6654
  *
6646
6655
  * @param {boolean}[bAll=false] If set to true, deferred requests are also taken into account.
6647
6656
  * @return {boolean} <code>true</code> if there are pending changes, <code>false</code> otherwise.
6648
6657
  * @public
6649
6658
  */
6650
6659
  ODataModel.prototype.hasPendingChanges = function(bAll) {
6651
- var bChangedEntities = !isEmptyObject(this.mChangedEntities);
6660
+ var bChangedEntities,
6661
+ aChangedEntityKeys = Object.keys(this.mChangedEntities);
6662
+
6663
+ bChangedEntities = this.getBindings().some(function (oBinding) {
6664
+ return oBinding._hasPendingChanges && oBinding._hasPendingChanges(aChangedEntityKeys);
6665
+ });
6666
+ bChangedEntities = bChangedEntities || aChangedEntityKeys.length > 0;
6652
6667
 
6653
- if (bAll){
6654
- bChangedEntities = bChangedEntities || this.iPendingDeferredRequests > 0;
6668
+ if (!bChangedEntities && bAll) {
6669
+ bChangedEntities = this.iPendingDeferredRequests > 0;
6655
6670
  }
6671
+
6656
6672
  return bChangedEntities;
6657
6673
  };
6658
6674
 
@@ -6666,8 +6682,9 @@ sap.ui.define([
6666
6682
  };
6667
6683
 
6668
6684
  /**
6669
- * Returns the changed properties of all changed entities in a map which are still pending.
6670
- * The key is the string name of the entity and the value is an object which contains the changed properties.
6685
+ * Returns the changed properties of all changed entities in a map which are still pending. The
6686
+ * key is the string name of the entity, and the value is an object which contains the changed
6687
+ * properties. The tree hierarchy changes for removed nodes are represented via an empty object.
6671
6688
  *
6672
6689
  * In contrast to the two related functions {@link #hasPendingChanges} and {@link #resetChanges}, only
6673
6690
  * client data changes are supported.
@@ -6676,7 +6693,21 @@ sap.ui.define([
6676
6693
  * @public
6677
6694
  */
6678
6695
  ODataModel.prototype.getPendingChanges = function() {
6679
- return merge({}, this.mChangedEntities);
6696
+ var sChangedEntityKey,
6697
+ mChangedEntities = _Helper.merge({}, this.mChangedEntities);
6698
+
6699
+ this.getBindings().forEach(function (oBinding) {
6700
+ if (oBinding._getPendingChanges) {
6701
+ _Helper.merge(mChangedEntities, oBinding._getPendingChanges());
6702
+ }
6703
+ });
6704
+ for (sChangedEntityKey in mChangedEntities) {
6705
+ if (!mChangedEntities[sChangedEntityKey]) {
6706
+ delete mChangedEntities[sChangedEntityKey];
6707
+ }
6708
+ }
6709
+
6710
+ return mChangedEntities;
6680
6711
  };
6681
6712
 
6682
6713
  /**
@@ -94,7 +94,7 @@ sap.ui.define([
94
94
  * @extends sap.ui.model.TreeBinding
95
95
  * @hideconstructor
96
96
  * @public
97
- * @version 1.104.0
97
+ * @version 1.105.0
98
98
  */
99
99
  var ODataTreeBinding = TreeBinding.extend("sap.ui.model.odata.v2.ODataTreeBinding", /** @lends sap.ui.model.odata.v2.ODataTreeBinding.prototype */ {
100
100
 
@@ -181,6 +181,9 @@ sap.ui.define([
181
181
  this.oAllKeys = null;
182
182
  this.oAllLengths = null;
183
183
  this.oAllFinalLengths = null;
184
+
185
+ // Whether a refresh has been performed
186
+ this.bRefresh = false;
184
187
  }
185
188
 
186
189
  });
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @hideconstructor
43
43
  * @public
44
44
  * @since 1.39.0
45
- * @version 1.104.0
45
+ * @version 1.105.0
46
46
  */
47
47
  Context = BaseContext.extend("sap.ui.model.odata.v4.Context", {
48
48
  constructor : constructor
@@ -126,6 +126,7 @@ sap.ui.define([
126
126
  // ensure to return a promise that is resolved w/o data
127
127
  && Promise.resolve(oCreatePromise).then(function () {});
128
128
  this.oSyncCreatePromise = oCreatePromise;
129
+ this.bDeleted = false; // deleted on the client, but not on the server yet
129
130
  this.iGeneration = iGeneration || 0;
130
131
  this.bInactive = bInactive || undefined; // be in sync with the annotation
131
132
  this.iIndex = iIndex;
@@ -276,16 +277,27 @@ sap.ui.define([
276
277
  };
277
278
 
278
279
  /**
279
- * Deletes the OData entity this context points to.
280
+ * Deletes the OData entity this context points to. The context is removed from the binding
281
+ * immediately, even if {@link sap.ui.model.odata.v4.SubmitMode.API} is used, and the request is
282
+ * only sent later when {@link sap.ui.model.odata.v4.ODataModel#submitBatch} is called. As long
283
+ * as the context is deleted on the client, but not yet on the server, {@link #isDeleted}
284
+ * returns <code>true</code>.
285
+ *
286
+ * Since 1.105 such a pending deletion is a pending change. It causes
287
+ * <code>hasPendingChanges</code> to return <code>true</code> for the context, the binding
288
+ * containing it, and the model. <code>resetChanges</code> in binding or model cancels the
289
+ * deletion and restores the context.
290
+ *
291
+ * The usage of a group ID with {@link sap.ui.model.odata.v4.SubmitMode.API} is possible since
292
+ * 1.105 - this is an experimental API.
280
293
  *
281
294
  * The context must not be used anymore after successful deletion.
282
295
  *
283
296
  * @param {string} [sGroupId]
284
297
  * The group ID to be used for the DELETE request; if not specified, the update group ID for
285
- * the context's binding is used, see {@link #getUpdateGroupId}; the resulting group ID must
286
- * not have {@link sap.ui.model.odata.v4.SubmitMode.API}. Since 1.81, if this context is
287
- * transient (see {@link #isTransient}), no group ID needs to be specified. Since 1.98.0, you
288
- * can use <code>null</code> to prevent the DELETE request in case of a kept-alive context
298
+ * the context's binding is used, see {@link #getUpdateGroupId}. Since 1.81, if this context
299
+ * is transient (see {@link #isTransient}), no group ID needs to be specified. Since 1.98.0,
300
+ * you can use <code>null</code> to prevent the DELETE request in case of a kept-alive context
289
301
  * that is not in the collection and of which you know that it does not exist on the server
290
302
  * anymore (for example, a draft after activation).
291
303
  * @param {boolean} [bDoNotRequestCount]
@@ -294,24 +306,40 @@ sap.ui.define([
294
306
  * Since 1.98.0, this is implied if a <code>null</code> group ID is used.
295
307
  * @returns {Promise}
296
308
  * A promise which is resolved without a result in case of success, or rejected with an
297
- * instance of <code>Error</code> in case of failure, e.g. if the given context does not point
298
- * to an entity, if it is not part of a list binding, if there are pending changes for the
299
- * context's binding, if the resulting group ID has SubmitMode.API, or if the deletion on the
300
- * server fails.
301
- * <p>
302
- * The error instance is flagged with <code>isConcurrentModification</code> in case a
303
- * concurrent modification (e.g. by another user) of the entity between loading and deletion
304
- * has been detected; this should be shown to the user who needs to decide whether to try
305
- * deletion again. If the entity does not exist, we assume it has already been deleted by
306
- * someone else and report success.
307
- * @throws {Error} If the given group ID is invalid, if this context's root binding is
308
- * suspended, or if this context is not transient (see {@link #isTransient}) and has pending
309
- * changes (see {@link #hasPendingChanges}), or if a <code>null</code> group ID is used with
310
- * a context which is not kept-alive (see {@link #isKeepAlive}) or is still in the collection
311
- * (has an index, see {@link #getIndex})
309
+ * instance of <code>Error</code> in case of failure, for example if:
310
+ * <ul>
311
+ * <li> the given context does not point to an entity,
312
+ * <li> the deletion on the server fails,
313
+ * <li> the deletion is canceled via <code>resetChanges</code> (in this case the error
314
+ * instance has the property <code>canceled</code> with value <code>true</code>).
315
+ * </ul>
316
+ * The error instance has the property <code>isConcurrentModification</code> with value
317
+ * <code>true</code> in case a concurrent modification (e.g. by another user) of the entity
318
+ * between loading and deletion has been detected; this should be shown to the user who needs
319
+ * to decide whether to try deletion again. If the entity does not exist, we assume it has
320
+ * already been deleted by someone else and report success.
321
+ * @throws {Error} If
322
+ * <ul>
323
+ * <li> the given group ID is invalid,
324
+ * <li> this context's root binding is suspended,
325
+ * <li> a <code>null</code> group ID is used with a context which is not kept-alive
326
+ * (see {@link #isKeepAlive}),
327
+ * <li> the context is already being deleted,
328
+ * <li> the resulting group ID has {@link sap.ui.model.odata.v4.SubmitMode.API}, and the
329
+ * context is kept alive (see {@link #isKeepAlive}), but not in the current collection,
330
+ * <li> (only before 1.105) the resulting group ID has
331
+ * {@link sap.ui.model.odata.v4.SubmitMode.API}
332
+ * </ul>
312
333
  *
313
334
  * @function
314
335
  * @public
336
+ * @see {#hasPendingChanges}
337
+ * @see {sap.ui.model.odata.v4.ODataContextBinding#hasPendingChanges}
338
+ * @see {sap.ui.model.odata.v4.ODataListBinding#hasPendingChanges}
339
+ * @see {sap.ui.model.odata.v4.ODataModel#hasPendingChanges}
340
+ * @see {sap.ui.model.odata.v4.ODataContextBinding#resetChanges}
341
+ * @see {sap.ui.model.odata.v4.ODataListBinding#resetChanges}
342
+ * @see {sap.ui.model.odata.v4.ODataModel#resetChanges}
315
343
  * @since 1.41.0
316
344
  */
317
345
  Context.prototype.delete = function (sGroupId, bDoNotRequestCount/*, bRejectIfNotFound*/) {
@@ -319,11 +347,12 @@ sap.ui.define([
319
347
  oModel = this.oModel,
320
348
  that = this;
321
349
 
350
+ if (this.isDeleted()) {
351
+ throw new Error("Must not delete twice: " + this);
352
+ }
322
353
  this.oBinding.checkSuspended();
323
354
  if (this.isTransient()) {
324
355
  sGroupId = null;
325
- } else if (this.hasPendingChanges()) {
326
- throw new Error("Cannot delete due to pending changes");
327
356
  } else if (sGroupId === null) {
328
357
  if (!(this.bKeepAlive && this.iIndex === undefined)) {
329
358
  throw new Error("Cannot delete " + this);
@@ -334,15 +363,15 @@ sap.ui.define([
334
363
  } else {
335
364
  oModel.checkGroupId(sGroupId);
336
365
  oGroupLock = this.oBinding.lockGroup(sGroupId, true, true);
337
- sGroupId = oGroupLock.getGroupId();
338
- if (this.oModel.isApiGroup(sGroupId)) {
339
- throw new Error("Illegal update group ID: " + sGroupId);
340
- }
341
366
  }
342
367
 
343
- return this._delete(oGroupLock, /*oETagEntity*/null, bDoNotRequestCount).then(function () {
368
+ this.bDeleted = true;
369
+
370
+ return Promise.resolve(this._delete(oGroupLock, /*oETagEntity*/null, bDoNotRequestCount))
371
+ .then(function () {
344
372
  var sResourcePathPrefix = that.sPath.slice(1);
345
373
 
374
+ that.bDeleted = false;
346
375
  // Messages have been updated via _Cache#_delete; "that" is already destroyed; remove
347
376
  // all dependent caches in all bindings
348
377
  oModel.getAllBindings().forEach(function (oBinding) {
@@ -353,6 +382,8 @@ sap.ui.define([
353
382
  oGroupLock.unlock(true);
354
383
  }
355
384
  oModel.reportError("Failed to delete " + that, sClassName, oError);
385
+ that.bDeleted = false;
386
+ that.checkUpdate();
356
387
  throw oError;
357
388
  });
358
389
  };
@@ -405,6 +436,7 @@ sap.ui.define([
405
436
  * A promise which is resolved without a result in case of success, or rejected with an
406
437
  * instance of <code>Error</code> in case of failure, for example if the annotation belongs to
407
438
  * the read-only namespace "@$ui5.*"
439
+ * @throws {Error} If the context is deleted
408
440
  *
409
441
  * @private
410
442
  */
@@ -414,6 +446,12 @@ sap.ui.define([
414
446
  oValue,
415
447
  that = this;
416
448
 
449
+ if (this.isDeleted()) {
450
+ if (oGroupLock) {
451
+ oGroupLock.unlock();
452
+ }
453
+ throw new Error("must not modify a deleted entity: " + this);
454
+ }
417
455
  if (oGroupLock && this.isTransient() && !this.isInactive()) {
418
456
  oValue = this.getValue();
419
457
  oPromise = oValue && _Helper.getPrivateAnnotation(oValue, "transient");
@@ -875,12 +913,28 @@ sap.ui.define([
875
913
  */
876
914
  Context.prototype.hasPendingChanges = function () {
877
915
  return this.isTransient()
916
+ || this.isDeleted()
878
917
  || this.oModel.getDependentBindings(this).some(function (oDependentBinding) {
879
918
  return oDependentBinding.hasPendingChanges();
880
919
  })
881
920
  || this.oModel.withUnresolvedBindings("hasPendingChangesInCaches", this.sPath.slice(1));
882
921
  };
883
922
 
923
+ /**
924
+ * Returns whether this context is deleted on the client, but not on the server yet. The result
925
+ * of this function can also be accessed via the "@$ui5.context.isDeleted" instance annotation
926
+ * at the entity.
927
+ *
928
+ * @returns {boolean} <code>true</code> if this context is deleted
929
+ *
930
+ * @public
931
+ * @see #delete
932
+ * @since 1.105
933
+ */
934
+ Context.prototype.isDeleted = function () {
935
+ return this.bDeleted;
936
+ };
937
+
884
938
  /**
885
939
  * Tells whether the group node that this context points to is expanded.
886
940
  *
@@ -1617,8 +1671,8 @@ sap.ui.define([
1617
1671
  * <li> {@link sap.ui.model.odata.v4.ODataListBinding#resetChanges}.
1618
1672
  * </ul>
1619
1673
  * @throws {Error}
1620
- * If the binding's root binding is suspended, for invalid group IDs, or if the new value is
1621
- * not primitive
1674
+ * If the binding's root binding is suspended, for invalid group IDs, if the new value is
1675
+ * not primitive, or if the context is deleted
1622
1676
  *
1623
1677
  * @public
1624
1678
  * @see #getProperty
@@ -381,7 +381,7 @@ sap.ui.define([
381
381
  * @private
382
382
  */
383
383
  ODataBinding.prototype.doDeregisterChangeListener = function (sPath, oListener) {
384
- this.oCache.deregisterChange(sPath, oListener);
384
+ this.oCache.deregisterChangeListener(sPath, oListener);
385
385
  };
386
386
 
387
387
  /**
@@ -540,7 +540,7 @@ sap.ui.define([
540
540
  // With $$aggregation, no auto-$expand/$select is needed
541
541
  oQueryOptionsPromise = this.doFetchQueryOptions(oContext);
542
542
  if (this.oModel.bAutoExpandSelect && this.aChildCanUseCachePromises
543
- && !this.mParameters.$$aggregation) {
543
+ && !_Helper.isDataAggregation(this.mParameters)) {
544
544
  // For auto-$expand/$select, wait for query options of dependent bindings:
545
545
  // Promise.resolve() ensures all dependent bindings are created and have sent their
546
546
  // query options promise to this binding via fetchIfChildCanUseCache.
@@ -703,7 +703,7 @@ sap.ui.define([
703
703
  }
704
704
  // Can only become undefined when a list binding's context has been parked and is
705
705
  // destroyed later. Such a context does no longer have a subpath of the binding's
706
- // path. The only caller in this case is ODataPropertyBinding#deregisterChange
706
+ // path. The only caller in this case is ODataPropertyBinding#deregisterChangeListener
707
707
  // which can safely be ignored.
708
708
  return sRelativePath;
709
709
  }
@@ -1293,8 +1293,7 @@ sap.ui.define([
1293
1293
 
1294
1294
  /**
1295
1295
  * Recursively visits all dependent bindings of (the given context of) this binding. Bindings
1296
- * with an own cache will request side effects themselves as applicable. Bindings mentioned
1297
- * in <code>mNavigationPropertyPaths</code> will refresh themselves.
1296
+ * with an own cache will request side effects themselves as applicable.
1298
1297
  *
1299
1298
  * @param {string} sGroupId
1300
1299
  * The group ID to be used for requesting side effects
@@ -1304,9 +1303,6 @@ sap.ui.define([
1304
1303
  * because they may have changed due to side effects of a previous update
1305
1304
  * @param {sap.ui.model.odata.v4.Context} [oContext]
1306
1305
  * The context for which to request side effects; if missing, the whole binding is affected
1307
- * @param {object} mNavigationPropertyPaths
1308
- * Hash set of collection-valued navigation property meta paths (relative to this binding's
1309
- * cache root) which need to be refreshed, maps string to <code>true</code>; read-only
1310
1306
  * @param {Promise[]} aPromises
1311
1307
  * List of (sync) promises which is extended for each call to
1312
1308
  * {@link sap.ui.model.odata.v4.ODataParentBinding#requestSideEffects} or