@openui5/sap.ui.core 1.108.1 → 1.108.2

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 (250) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  8. package/src/sap/base/util/restricted/_castArray.js +1 -1
  9. package/src/sap/base/util/restricted/_compact.js +1 -1
  10. package/src/sap/base/util/restricted/_curry.js +1 -1
  11. package/src/sap/base/util/restricted/_debounce.js +1 -1
  12. package/src/sap/base/util/restricted/_difference.js +1 -1
  13. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  14. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  15. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  16. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  17. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  18. package/src/sap/base/util/restricted/_flatten.js +1 -1
  19. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  20. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  21. package/src/sap/base/util/restricted/_intersection.js +1 -1
  22. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  23. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  24. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  25. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  26. package/src/sap/base/util/restricted/_isNil.js +1 -1
  27. package/src/sap/base/util/restricted/_max.js +1 -1
  28. package/src/sap/base/util/restricted/_merge.js +1 -1
  29. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  30. package/src/sap/base/util/restricted/_min.js +1 -1
  31. package/src/sap/base/util/restricted/_omit.js +1 -1
  32. package/src/sap/base/util/restricted/_pick.js +1 -1
  33. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  34. package/src/sap/base/util/restricted/_throttle.js +1 -1
  35. package/src/sap/base/util/restricted/_toArray.js +1 -1
  36. package/src/sap/base/util/restricted/_union.js +1 -1
  37. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  38. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  39. package/src/sap/base/util/restricted/_uniq.js +1 -1
  40. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  41. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  42. package/src/sap/base/util/restricted/_without.js +1 -1
  43. package/src/sap/base/util/restricted/_xor.js +1 -1
  44. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  45. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  46. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  47. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  48. package/src/sap/ui/Device.js +3 -3
  49. package/src/sap/ui/Global.js +4 -4
  50. package/src/sap/ui/base/Event.js +1 -1
  51. package/src/sap/ui/base/EventProvider.js +1 -1
  52. package/src/sap/ui/base/Interface.js +1 -1
  53. package/src/sap/ui/base/ManagedObject.js +1 -1
  54. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  55. package/src/sap/ui/base/ManagedObjectObserver.js +33 -11
  56. package/src/sap/ui/base/Metadata.js +1 -1
  57. package/src/sap/ui/base/Object.js +1 -1
  58. package/src/sap/ui/base/ObjectPool.js +1 -1
  59. package/src/sap/ui/core/.library +1 -1
  60. package/src/sap/ui/core/BusyIndicator.js +1 -1
  61. package/src/sap/ui/core/Component.js +1 -1
  62. package/src/sap/ui/core/ComponentContainer.js +1 -1
  63. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  64. package/src/sap/ui/core/ComponentSupport.js +1 -1
  65. package/src/sap/ui/core/Configuration.js +1 -1
  66. package/src/sap/ui/core/Control.js +1 -1
  67. package/src/sap/ui/core/Core.js +4 -2
  68. package/src/sap/ui/core/CustomData.js +1 -1
  69. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  70. package/src/sap/ui/core/Element.js +1 -1
  71. package/src/sap/ui/core/ElementMetadata.js +1 -1
  72. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  73. package/src/sap/ui/core/EventBus.js +1 -1
  74. package/src/sap/ui/core/Fragment.js +1 -1
  75. package/src/sap/ui/core/HTML.js +1 -1
  76. package/src/sap/ui/core/History.js +1 -1
  77. package/src/sap/ui/core/Icon.js +1 -1
  78. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  79. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  80. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  81. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  82. package/src/sap/ui/core/InvisibleText.js +1 -1
  83. package/src/sap/ui/core/Item.js +1 -1
  84. package/src/sap/ui/core/LabelEnablement.js +1 -1
  85. package/src/sap/ui/core/LayoutData.js +1 -1
  86. package/src/sap/ui/core/ListItem.js +1 -1
  87. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  88. package/src/sap/ui/core/Locale.js +1 -1
  89. package/src/sap/ui/core/LocaleData.js +1 -1
  90. package/src/sap/ui/core/Manifest.js +1 -1
  91. package/src/sap/ui/core/Message.js +1 -1
  92. package/src/sap/ui/core/RenderManager.js +1 -1
  93. package/src/sap/ui/core/Renderer.js +1 -1
  94. package/src/sap/ui/core/ResizeHandler.js +1 -1
  95. package/src/sap/ui/core/ScrollBar.js +1 -1
  96. package/src/sap/ui/core/SeparatorItem.js +1 -1
  97. package/src/sap/ui/core/Title.js +1 -1
  98. package/src/sap/ui/core/TooltipBase.js +1 -1
  99. package/src/sap/ui/core/UIArea.js +1 -1
  100. package/src/sap/ui/core/UIComponent.js +1 -1
  101. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  102. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  103. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  104. package/src/sap/ui/core/XMLComposite.js +1 -1
  105. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  106. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  107. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  108. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  109. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  110. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  111. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  112. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  113. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  114. package/src/sap/ui/core/library.js +3 -3
  115. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  116. package/src/sap/ui/core/message/Message.js +1 -1
  117. package/src/sap/ui/core/message/MessageManager.js +1 -1
  118. package/src/sap/ui/core/message/MessageParser.js +1 -1
  119. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  120. package/src/sap/ui/core/messagebundle_hr.properties +2 -2
  121. package/src/sap/ui/core/messagebundle_nl.properties +1 -1
  122. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  123. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  124. package/src/sap/ui/core/mvc/JSView.js +1 -1
  125. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  126. package/src/sap/ui/core/mvc/View.js +1 -1
  127. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  128. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  129. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  130. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  131. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  132. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  133. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  134. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  135. package/src/sap/ui/core/service/Service.js +1 -1
  136. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  137. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  138. package/src/sap/ui/core/support/Plugin.js +1 -1
  139. package/src/sap/ui/core/support/Support.js +1 -1
  140. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  141. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  142. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  143. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  144. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  145. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  146. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  147. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  148. package/src/sap/ui/core/theming/ThemeManager.js +3 -1
  149. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  150. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  151. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  152. package/src/sap/ui/core/tmpl/Template.js +1 -1
  153. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  154. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  155. package/src/sap/ui/core/util/Export.js +1 -1
  156. package/src/sap/ui/core/util/ExportCell.js +1 -1
  157. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  158. package/src/sap/ui/core/util/ExportRow.js +1 -1
  159. package/src/sap/ui/core/util/ExportType.js +1 -1
  160. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  161. package/src/sap/ui/core/util/File.js +1 -1
  162. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  163. package/src/sap/ui/core/util/MockServer.js +1 -1
  164. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  165. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  166. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  167. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  168. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  169. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  170. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  171. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  172. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  173. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  174. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  175. package/src/sap/ui/debug/ControlTree.js +1 -1
  176. package/src/sap/ui/debug/DebugEnv.js +1 -1
  177. package/src/sap/ui/debug/PropertyList.js +1 -1
  178. package/src/sap/ui/model/ClientModel.js +1 -1
  179. package/src/sap/ui/model/CompositeDataState.js +1 -1
  180. package/src/sap/ui/model/CompositeType.js +1 -1
  181. package/src/sap/ui/model/DataState.js +1 -1
  182. package/src/sap/ui/model/MetaModel.js +1 -1
  183. package/src/sap/ui/model/Model.js +1 -1
  184. package/src/sap/ui/model/SelectionModel.js +1 -1
  185. package/src/sap/ui/model/SimpleType.js +1 -1
  186. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  187. package/src/sap/ui/model/Type.js +1 -1
  188. package/src/sap/ui/model/json/JSONModel.js +1 -1
  189. package/src/sap/ui/model/message/MessageModel.js +1 -1
  190. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  191. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  192. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  193. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  194. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  195. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  196. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  197. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  198. package/src/sap/ui/model/odata/type/Date.js +1 -1
  199. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  200. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  201. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  202. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  203. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  204. package/src/sap/ui/model/odata/type/Double.js +1 -1
  205. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  206. package/src/sap/ui/model/odata/type/Int.js +1 -1
  207. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  208. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  209. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  210. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  211. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  212. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  213. package/src/sap/ui/model/odata/type/Single.js +1 -1
  214. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  215. package/src/sap/ui/model/odata/type/String.js +1 -1
  216. package/src/sap/ui/model/odata/type/Time.js +1 -1
  217. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  218. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  219. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  220. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  221. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  222. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  223. package/src/sap/ui/model/odata/v4/Context.js +1 -1
  224. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +2 -4
  225. package/src/sap/ui/model/odata/v4/ODataListBinding.js +2 -2
  226. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  227. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  228. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  229. package/src/sap/ui/model/odata/v4/lib/_Cache.js +51 -35
  230. package/src/sap/ui/model/odata/v4/lib/_Helper.js +16 -9
  231. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  232. package/src/sap/ui/model/type/Boolean.js +1 -1
  233. package/src/sap/ui/model/type/Currency.js +1 -1
  234. package/src/sap/ui/model/type/Date.js +1 -1
  235. package/src/sap/ui/model/type/DateInterval.js +1 -1
  236. package/src/sap/ui/model/type/DateTime.js +1 -1
  237. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  238. package/src/sap/ui/model/type/FileSize.js +1 -1
  239. package/src/sap/ui/model/type/Float.js +1 -1
  240. package/src/sap/ui/model/type/Integer.js +1 -1
  241. package/src/sap/ui/model/type/String.js +1 -1
  242. package/src/sap/ui/model/type/Time.js +1 -1
  243. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  244. package/src/sap/ui/model/type/Unit.js +1 -1
  245. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  246. package/src/sap/ui/performance/trace/Interaction.js +23 -9
  247. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  248. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  249. package/src/sap/ui/test/generic/TestBase.js +1 -1
  250. package/src/sap/ui/util/Storage.js +1 -1
@@ -92,10 +92,10 @@ sap.ui.define([
92
92
  * Whether the paths in $expand and $select shall be sorted in the cache's query string;
93
93
  * note that this flag can safely be ignored for all "new" features (after 1.47) which
94
94
  * should just sort always
95
- * @param {function} [fnGetOriginalResourcePath]
96
- * A function that returns the cache's original resource path to be used to build the target
97
- * path for bound messages; if it is not given or returns nothing, <code>sResourcePath</code>
98
- * is used instead. See {@link #getOriginalResourcePath}.
95
+ * @param {string|function} [vOriginalResourcePath]
96
+ * The cache's original resource path to be used to build the target path for bound messages,
97
+ * or a function returning it; if it is not given or the function returns nothing,
98
+ * <code>sResourcePath</code> is used instead
99
99
  * @param {boolean} [bSharedRequest]
100
100
  * If this parameter is set, the cache is read-only and modifying calls lead to an error.
101
101
  *
@@ -104,13 +104,13 @@ sap.ui.define([
104
104
  * @private
105
105
  */
106
106
  function _Cache(oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
107
- fnGetOriginalResourcePath, bSharedRequest) {
107
+ vOriginalResourcePath, bSharedRequest) {
108
108
  // the number of active usages of this cache (initially 1 because the first usage that
109
109
  // creates the cache does not call #setActive)
110
110
  this.iActiveUsages = 1;
111
111
  this.mChangeListeners = {}; // map from path to an array of change listeners
112
112
  this.mChangeRequests = {}; // map from path to an array of DELETE or PATCH promises
113
- this.fnGetOriginalResourcePath = fnGetOriginalResourcePath;
113
+ this.vOriginalResourcePath = vOriginalResourcePath;
114
114
  // the point in time when the cache became inactive; active caches have Infinity so that
115
115
  // they are always "newer"
116
116
  this.iInactiveSince = Infinity;
@@ -211,7 +211,7 @@ sap.ui.define([
211
211
  oRequestPromise = oGroupLock
212
212
  ? that.oRequestor.request("DELETE", sEditUrl, oGroupLock, mHeaders, undefined,
213
213
  undefined, /*onCancel*/function () {}, undefined,
214
- _Helper.buildPath(that.getOriginalResourcePath(oEntity), sEntityPath))
214
+ _Helper.buildPath(that.getOriginalResourcePath(), sEntityPath))
215
215
  : SyncPromise.resolve();
216
216
  _Helper.addByPath(that.mChangeRequests, sEntityPath, oRequestPromise);
217
217
  return oRequestPromise.catch(function (oError) {
@@ -1158,16 +1158,14 @@ sap.ui.define([
1158
1158
  * Gets the cache's original resource path to be used to build the target path for bound
1159
1159
  * messages.
1160
1160
  *
1161
- * @param {object} oEntity
1162
- * The entity to compute the original resource path for
1163
1161
  * @returns {string}
1164
1162
  * The original resource path
1165
1163
  *
1166
1164
  * @private
1167
1165
  */
1168
- _Cache.prototype.getOriginalResourcePath = function (oEntity) {
1169
- return this.fnGetOriginalResourcePath && this.fnGetOriginalResourcePath(oEntity)
1170
- || this.sResourcePath;
1166
+ _Cache.prototype.getOriginalResourcePath = function () {
1167
+ // If vOriginalResourcePath was a function, it has already been replaced by its result
1168
+ return this.vOriginalResourcePath || this.sResourcePath;
1171
1169
  };
1172
1170
 
1173
1171
  /**
@@ -1972,7 +1970,7 @@ sap.ui.define([
1972
1970
  }
1973
1971
  oPatchPromise = that.oRequestor.request("PATCH", sEditUrl, oPatchGroupLock,
1974
1972
  mHeaders, oUpdateData, onSubmit, onCancel, /*sMetaPath*/ undefined,
1975
- _Helper.buildPath(that.getOriginalResourcePath(oEntity), sEntityPath),
1973
+ _Helper.buildPath(that.getOriginalResourcePath(), sEntityPath),
1976
1974
  bAtFront, /*mQueryOptions*/ undefined, /*vOwner*/ undefined,
1977
1975
  mergePatchRequests);
1978
1976
  oPatchPromise.$isKeepAlive = fnIsKeepAlive;
@@ -2303,7 +2301,7 @@ sap.ui.define([
2303
2301
  visitInstance(oRoot, sRootMetaPath || this.sMetaPath, sRootPath || "", sRequestUrl);
2304
2302
  }
2305
2303
  if (bHasMessages && !this.bSharedRequest) {
2306
- this.sReportedMessagesPath = this.getOriginalResourcePath(oRoot);
2304
+ this.sReportedMessagesPath = this.getOriginalResourcePath();
2307
2305
  this.oRequestor.getModelInterface().reportStateMessages(this.sReportedMessagesPath,
2308
2306
  mPathToODataMessages, aCachePaths);
2309
2307
  }
@@ -2335,9 +2333,8 @@ sap.ui.define([
2335
2333
  */
2336
2334
  function _CollectionCache(oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
2337
2335
  sDeepResourcePath, bSharedRequest) {
2338
- _Cache.call(this, oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect, function () {
2339
- return sDeepResourcePath;
2340
- }, bSharedRequest);
2336
+ _Cache.call(this, oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
2337
+ sDeepResourcePath, bSharedRequest);
2341
2338
 
2342
2339
  this.iActiveElements = 0; // number of active (client-side) created elements
2343
2340
  this.oBackup = null; // see #reset
@@ -2385,7 +2382,7 @@ sap.ui.define([
2385
2382
  * @param {number} iStart
2386
2383
  * The start index
2387
2384
  * @param {number} iEnd
2388
- * The end index (will not be filled)
2385
+ * The end index (will not be checked)
2389
2386
  * @throws {Error}
2390
2387
  * If there is an index no longer containing the promise
2391
2388
  *
@@ -2394,7 +2391,7 @@ sap.ui.define([
2394
2391
  _CollectionCache.prototype.checkRange = function (oPromise, iStart, iEnd) {
2395
2392
  var i;
2396
2393
 
2397
- // if the request used $tail, not all indexes got the promise, so we cannot check
2394
+ // if the request used $tail, not all indexes got the promise, so we cannot easily check
2398
2395
  if (oPromise !== this.aElements.$tail) {
2399
2396
  iEnd = Math.min(iEnd, this.aElements.length);
2400
2397
  for (i = iStart; i < iEnd; i += 1) {
@@ -2526,10 +2523,9 @@ sap.ui.define([
2526
2523
  * @private
2527
2524
  */
2528
2525
  _CollectionCache.prototype.fill = function (oPromise, iStart, iEnd) {
2529
- var i,
2530
- n = Math.max(this.aElements.length, 1024);
2526
+ var i;
2531
2527
 
2532
- if (iEnd > n) {
2528
+ if (iEnd > this.aElements.length && iEnd - iStart > 1024) {
2533
2529
  if (this.aElements.$tail && oPromise) {
2534
2530
  throw new Error("Cannot fill from " + iStart + " to " + iEnd
2535
2531
  + ", $tail already in use, # of elements is " + this.aElements.length);
@@ -3479,10 +3475,10 @@ sap.ui.define([
3479
3475
  * Whether the paths in $expand and $select shall be sorted in the cache's query string
3480
3476
  * @param {boolean} [bSharedRequest]
3481
3477
  * If this parameter is set, the cache is read-only and modifying calls lead to an error.
3482
- * @param {function} [fnGetOriginalResourcePath]
3483
- * A function that returns the cache's original resource path to be used to build the target
3484
- * path for bound messages; if it is not given or returns nothing, <code>sResourcePath</code>
3485
- * is used instead
3478
+ * @param {string|function} [vOriginalResourcePath]
3479
+ * The cache's original resource path to be used to build the target path for bound messages,
3480
+ * or a function returning it; if it is not given or the function returns nothing,
3481
+ * <code>sResourcePath</code> is used instead
3486
3482
  * @param {boolean} [bPost]
3487
3483
  * Whether the cache uses POST requests. If <code>true</code>, the initial request must be
3488
3484
  * done via {@link #post}. {@link #fetchValue} expects to have cache data, but may trigger
@@ -3497,9 +3493,9 @@ sap.ui.define([
3497
3493
  * @private
3498
3494
  */
3499
3495
  function _SingleCache(oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
3500
- bSharedRequest, fnGetOriginalResourcePath, bPost, sMetaPath, bEmpty) {
3496
+ bSharedRequest, vOriginalResourcePath, bPost, sMetaPath, bEmpty) {
3501
3497
  _Cache.call(this, oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
3502
- fnGetOriginalResourcePath, bSharedRequest);
3498
+ vOriginalResourcePath, bSharedRequest);
3503
3499
 
3504
3500
  this.sMetaPath = sMetaPath || this.sMetaPath; // overrides Cache c'tor
3505
3501
  this.bPost = bPost;
@@ -3515,6 +3511,24 @@ sap.ui.define([
3515
3511
  // make SingleCache a Cache
3516
3512
  _SingleCache.prototype = Object.create(_Cache.prototype);
3517
3513
 
3514
+ /**
3515
+ * Builds the cache's original resource path to be used to build the target path for bound
3516
+ * messages.
3517
+ *
3518
+ * @param {object} oRootEntity
3519
+ * The root entity
3520
+ * @param {object} mTypeForMetaPath
3521
+ * A map from absolute meta path to entity type (as delivered by {@link #fetchTypes})
3522
+ *
3523
+ * @private
3524
+ */
3525
+ _Cache.prototype.buildOriginalResourcePath = function (oRootEntity, mTypeForMetaPath) {
3526
+ if (typeof this.vOriginalResourcePath === "function") {
3527
+ this.calculateKeyPredicate(oRootEntity, mTypeForMetaPath, this.sMetaPath);
3528
+ this.vOriginalResourcePath = this.vOriginalResourcePath(oRootEntity);
3529
+ }
3530
+ };
3531
+
3518
3532
  /**
3519
3533
  * Returns a promise to be resolved with an OData object for the requested data. Calculates
3520
3534
  * the key predicates for all entities in the result before the promise is resolved.
@@ -3559,6 +3573,7 @@ sap.ui.define([
3559
3573
  fnDataRequested, undefined, this.sMetaPath),
3560
3574
  this.fetchTypes()
3561
3575
  ]).then(function (aResult) {
3576
+ that.buildOriginalResourcePath(aResult[0], aResult[1]);
3562
3577
  that.visitResponse(aResult[0], aResult[1]);
3563
3578
  return aResult[0];
3564
3579
  });
@@ -3637,6 +3652,7 @@ sap.ui.define([
3637
3652
  that.sResourcePath + that.sQueryString, oGroupLock0, mHeaders, oData),
3638
3653
  that.fetchTypes()
3639
3654
  ]).then(function (aResult) {
3655
+ that.buildOriginalResourcePath(aResult[0], aResult[1]);
3640
3656
  that.visitResponse(aResult[0], aResult[1]);
3641
3657
  that.bPosting = false;
3642
3658
 
@@ -3845,7 +3861,7 @@ sap.ui.define([
3845
3861
  this.oSingleton = mSingletonCacheByPath[sSingletonKey]
3846
3862
  = new _SingleCache(oRequestor, sSingleton, mQueryOptions,
3847
3863
  /*bSortExpandSelect*/ undefined, /*bSharedRequest*/ undefined,
3848
- /*fnGetOriginalResourcePath*/ undefined, /*bPost*/ undefined,
3864
+ /*vOriginalResourcePath*/ undefined, /*bPost*/ undefined,
3849
3865
  /*sMetaPath*/ undefined, /*bEmpty*/ true);
3850
3866
  }
3851
3867
  this.sRelativePath = sResourcePath.split(sSingleton + "/")[1];
@@ -4036,10 +4052,10 @@ sap.ui.define([
4036
4052
  * If this parameter is set, multiple requests for a cache using the same resource path might
4037
4053
  * always return the same, shared cache. This cache is read-only, modifying calls lead to an
4038
4054
  * error.
4039
- * @param {function} [fnGetOriginalResourcePath]
4040
- * A function that returns the cache's original resource path to be used to build the target
4041
- * path for bound messages; if it is not given or returns nothing, <code>sResourcePath</code>
4042
- * is used instead
4055
+ * @param {string|function} [vOriginalResourcePath]
4056
+ * The cache's original resource path to be used to build the target path for bound messages,
4057
+ * or a function returning it; if it is not given or the function returns nothing,
4058
+ * <code>sResourcePath</code> is used instead
4043
4059
  * @param {boolean} [bPost]
4044
4060
  * Whether the cache uses POST requests. If <code>true</code>, only {@link #post} may
4045
4061
  * lead to a request, {@link #read} may only read from the cache; otherwise {@link #post}
@@ -4052,9 +4068,9 @@ sap.ui.define([
4052
4068
  * @public
4053
4069
  */
4054
4070
  _Cache.createSingle = function (oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
4055
- bSharedRequest, fnGetOriginalResourcePath, bPost, sMetaPath) {
4071
+ bSharedRequest, vOriginalResourcePath, bPost, sMetaPath) {
4056
4072
  return new _SingleCache(oRequestor, sResourcePath, mQueryOptions, bSortExpandSelect,
4057
- bSharedRequest, fnGetOriginalResourcePath, bPost, sMetaPath);
4073
+ bSharedRequest, vOriginalResourcePath, bPost, sMetaPath);
4058
4074
  };
4059
4075
 
4060
4076
  /**
@@ -347,13 +347,18 @@ sap.ui.define([
347
347
  * @param {any} vValue - Any value, including <code>undefined</code>
348
348
  * @param {function} [fnReplacer] - The replacer function to transform the result, see
349
349
  * <code>JSON.stringify</code>
350
- * @returns {any} - A clone
350
+ * @param {boolean} [bAsString] - Whether to return the result of JSON.stringify
351
+ * @returns {any} A clone or its string representation
351
352
  */
352
- clone : function clone(vValue, fnReplacer) {
353
- return vValue === undefined || vValue === Infinity || vValue === -Infinity
354
- || /*NaN?*/vValue !== vValue // eslint-disable-line no-self-compare
355
- ? vValue
356
- : JSON.parse(JSON.stringify(vValue, fnReplacer));
353
+ clone : function clone(vValue, fnReplacer, bAsString) {
354
+ var sStringified;
355
+
356
+ if (vValue === undefined || vValue === Infinity || vValue === -Infinity
357
+ || Number.isNaN(vValue)) {
358
+ return vValue;
359
+ }
360
+ sStringified = JSON.stringify(vValue, fnReplacer);
361
+ return bAsString ? sStringified : JSON.parse(sStringified);
357
362
  },
358
363
 
359
364
  /**
@@ -1871,18 +1876,20 @@ sap.ui.define([
1871
1876
  * Any value, including <code>undefined</code>
1872
1877
  * @param {boolean} [bRemoveClientAnnotations]
1873
1878
  * Whether to remove all client-side annotations, not just private ones
1879
+ * @param {boolean} [bAsString]
1880
+ * Whether to return the result of JSON.stringify
1874
1881
  * @returns {any}
1875
- * A public clone
1882
+ * A public clone or its string representation
1876
1883
  *
1877
1884
  * @see sap.ui.model.odata.v4.lib._Helper.clone
1878
1885
  */
1879
- publicClone : function (vValue, bRemoveClientAnnotations) {
1886
+ publicClone : function (vValue, bRemoveClientAnnotations, bAsString) {
1880
1887
  return _Helper.clone(vValue, function (sKey, vValue) {
1881
1888
  if (bRemoveClientAnnotations ? !sKey.startsWith("@$ui5.") : sKey !== "@$ui5._") {
1882
1889
  return vValue;
1883
1890
  }
1884
1891
  // return undefined;
1885
- });
1892
+ }, bAsString);
1886
1893
  },
1887
1894
 
1888
1895
  /**
@@ -229,7 +229,7 @@ sap.ui.define([
229
229
  *
230
230
  * @extends sap.ui.model.Model
231
231
  * @public
232
- * @version 1.108.1
232
+ * @version 1.108.2
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.1
22
+ * @version 1.108.2
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.1
35
+ * @version 1.108.2
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.1
29
+ * @version 1.108.2
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.1
36
+ * @version 1.108.2
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.1
22
+ * @version 1.108.2
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.1
22
+ * @version 1.108.2
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.1
27
+ * @version 1.108.2
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.1
29
+ * @version 1.108.2
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.1
29
+ * @version 1.108.2
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.1
27
+ * @version 1.108.2
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.1
22
+ * @version 1.108.2
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.1
22
+ * @version 1.108.2
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.1
51
+ * @version 1.108.2
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.1
50
+ * @version 1.108.2
51
51
  *
52
52
  * @param {XMLDocument|string} oData
53
53
  * Either the URL where to load the XML from or an XML document
@@ -195,6 +195,7 @@ sap.ui.define([
195
195
  oCurrentBrowserEvent = null;
196
196
  isNavigation = false;
197
197
  bMatched = false;
198
+ bPerfectMatch = false;
198
199
  }
199
200
  }
200
201
 
@@ -229,6 +230,7 @@ sap.ui.define([
229
230
  oCurrentBrowserEvent,
230
231
  oBrowserElement,
231
232
  bMatched = false,
233
+ bPerfectMatch = false,
232
234
  iInteractionStepTimer,
233
235
  bIdle = false,
234
236
  bSuspended = false,
@@ -600,8 +602,11 @@ sap.ui.define([
600
602
  */
601
603
  notifyStepStart : function(sEventId, oElement, bForce) {
602
604
  if (bInteractionActive) {
605
+ var sType,
606
+ elem,
607
+ sClosestSemanticStepName;
608
+
603
609
  if ((!oPendingInteraction && oCurrentBrowserEvent && !bInteractionProcessed) || bForce) {
604
- var sType;
605
610
  if (bForce) {
606
611
  sType = "startup";
607
612
  } else {
@@ -621,10 +626,15 @@ sap.ui.define([
621
626
  oBrowserElement = oCurrentBrowserEvent.srcControl;
622
627
  }
623
628
  // if browser event matches the first control event we take it for trigger/event determination (step name)
629
+ sClosestSemanticStepName = FESRHelper.getSemanticStepname(oBrowserElement, sEventId);
624
630
  if (oElement && oElement.getId && oBrowserElement && oElement.getId() === oBrowserElement.getId()) {
625
- bMatched = true;
631
+ bPerfectMatch = true;
632
+ } else if (sClosestSemanticStepName) {
633
+ oPendingInteraction.trigger = oBrowserElement.getId();
634
+ oPendingInteraction.semanticStepName = sClosestSemanticStepName;
635
+ bPerfectMatch = true;
626
636
  } else {
627
- var elem = oBrowserElement;
637
+ elem = oBrowserElement;
628
638
  while (elem && elem.getParent()) {
629
639
  elem = elem.getParent();
630
640
  if (oElement.getId() === elem.getId()) {
@@ -653,15 +663,20 @@ sap.ui.define([
653
663
  }, 0);
654
664
  bIdle = false;
655
665
  Interaction.notifyStepEnd(true); // Start timer to end Interaction in case there is no timing relevant action e.g. rendering, request
656
- } else if (oPendingInteraction && oBrowserElement && !bMatched) {
666
+ } else if (oPendingInteraction && oBrowserElement && !bPerfectMatch) {
657
667
  // if browser event matches one of the next control events we take it for trigger/event determination (step name)
658
- var elem = oBrowserElement;
668
+ elem = oBrowserElement;
669
+ sClosestSemanticStepName = FESRHelper.getSemanticStepname(oBrowserElement, sEventId);
659
670
  if (elem && oElement.getId() === elem.getId()) {
660
671
  oPendingInteraction.trigger = oElement.getId();
661
- oPendingInteraction.semanticStepName = FESRHelper.getSemanticStepname(oElement, sEventId);
672
+ oPendingInteraction.semanticStepName = sClosestSemanticStepName;
662
673
  oPendingInteraction.event = sEventId;
663
- bMatched = true;
664
- } else {
674
+ bPerfectMatch = true;
675
+ } else if (sClosestSemanticStepName) {
676
+ oPendingInteraction.trigger = oBrowserElement.getId();
677
+ oPendingInteraction.semanticStepName = sClosestSemanticStepName;
678
+ bPerfectMatch = true;
679
+ } else if (!bMatched) {
665
680
  while (elem && elem.getParent()) {
666
681
  elem = elem.getParent();
667
682
  if (oElement.getId() === elem.getId()) {
@@ -674,7 +689,6 @@ sap.ui.define([
674
689
  }
675
690
  }
676
691
  }
677
-
678
692
  }
679
693
  },
680
694
 
@@ -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.1
56
+ * @version 1.108.2
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.1
30
+ * @version 1.108.2
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.1
27
+ * @version 1.108.2
28
28
  * @since 1.100
29
29
  */
30
30
  return BaseObject.extend("sap.ui.test.generic.TestBase", {
@@ -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.1
253
+ * @version 1.108.2
254
254
  */
255
255
  Storage.Type = {
256
256
  /**