@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
@@ -1447,10 +1447,6 @@ sap.ui.define([
1447
1447
  * The meta path for the cache root's type, for example "/SalesOrderList/SO_2_BP" or
1448
1448
  * "/Artists/foo.EditAction/@$ui5.overload/0/$ReturnType/$Type", such that an OData simple
1449
1449
  * identifier may be appended
1450
- * @param {object} mNavigationPropertyPaths
1451
- * Hash set of collection-valued navigation property meta paths (relative to the cache's
1452
- * root, that is without the root meta path prefix) which need to be refreshed, maps
1453
- * string to <code>true</code>; is modified
1454
1450
  * @param {string} [sPrefix=""]
1455
1451
  * Optional prefix for navigation property meta paths used during recursion
1456
1452
  * @param {boolean} [bAllowEmptySelect]
@@ -1462,7 +1458,7 @@ sap.ui.define([
1462
1458
  * collection-valued navigation property
1463
1459
  */
1464
1460
  intersectQueryOptions : function (mCacheQueryOptions, aPaths, fnFetchMetadata,
1465
- sRootMetaPath, mNavigationPropertyPaths, sPrefix, bAllowEmptySelect) {
1461
+ sRootMetaPath, sPrefix, bAllowEmptySelect) {
1466
1462
  var aExpands = [],
1467
1463
  mExpands = {},
1468
1464
  mResult,
@@ -1519,9 +1515,6 @@ sap.ui.define([
1519
1515
 
1520
1516
  _Helper.addChildrenWithAncestor([sNavigationPropertyPath], aPaths, mSet);
1521
1517
  if (!isEmptyObject(mSet)) {
1522
- if (fnFetchMetadata(sMetaPath).getResult().$isCollection) {
1523
- mNavigationPropertyPaths[sPrefixedNavigationPropertyPath] = true;
1524
- }
1525
1518
  // complete navigation property may change, same expand as initially
1526
1519
  mExpands[sNavigationPropertyPath]
1527
1520
  = mCacheQueryOptions.$expand[sNavigationPropertyPath];
@@ -1539,7 +1532,7 @@ sap.ui.define([
1539
1532
  mChildQueryOptions = _Helper.intersectQueryOptions(
1540
1533
  mCacheQueryOptions.$expand[sNavigationPropertyPath] || {},
1541
1534
  aStrippedPaths, fnFetchMetadata, sMetaPath,
1542
- mNavigationPropertyPaths, sPrefixedNavigationPropertyPath);
1535
+ sPrefixedNavigationPropertyPath);
1543
1536
  if (mChildQueryOptions) {
1544
1537
  mExpands[sNavigationPropertyPath] = mChildQueryOptions;
1545
1538
  }
@@ -1584,6 +1577,19 @@ sap.ui.define([
1584
1577
  return _Helper.getRelativePath(sPath, sBasePath) !== undefined;
1585
1578
  },
1586
1579
 
1580
+ /**
1581
+ * Tells whether the given map of binding parameters is defining data aggregation, but not a
1582
+ * recursive hierarchy.
1583
+ *
1584
+ * @param {object} [mParameters] - Map of binding parameters
1585
+ * @returns {boolean} Whether it's about data aggregation
1586
+ */
1587
+ isDataAggregation : function (mParameters) {
1588
+ return mParameters
1589
+ && mParameters.$$aggregation
1590
+ && !mParameters.$$aggregation.hierarchyQualifier;
1591
+ },
1592
+
1587
1593
  /**
1588
1594
  * Tells whether the value is a safe integer.
1589
1595
  *
@@ -1867,6 +1873,22 @@ sap.ui.define([
1867
1873
  }
1868
1874
  },
1869
1875
 
1876
+ /**
1877
+ * Sets the new value of the annotation with the given name at the given object; removes it
1878
+ * in case of an <code>undefined</code> value.
1879
+ *
1880
+ * @param {object} oObject - Any object
1881
+ * @param {string} sAnnotation - The annotation's name
1882
+ * @param {any} [vValue] - The annotation's new value
1883
+ */
1884
+ setAnnotation : function (oObject, sAnnotation, vValue) {
1885
+ if (vValue !== undefined) {
1886
+ oObject[sAnnotation] = vValue;
1887
+ } else {
1888
+ delete oObject[sAnnotation];
1889
+ }
1890
+ },
1891
+
1870
1892
  /**
1871
1893
  * Sets the new value of the private client-side instance annotation with the given
1872
1894
  * unqualified name at the given object.
@@ -1599,18 +1599,18 @@ sap.ui.define([
1599
1599
  };
1600
1600
 
1601
1601
  /**
1602
- * Removes the pending PATCH request for the given promise from its group. Only requests for
1603
- * which the <code>$cancel</code> callback is defined are removed.
1602
+ * Removes the pending PATCH or DELETE request for the given promise from its group. Only
1603
+ * requests for which the <code>$cancel</code> callback is defined are removed.
1604
1604
  *
1605
1605
  * @param {Promise} oPromise
1606
- * A promise that has been returned for a PATCH request. That request will be rejected with
1607
- * an error with property <code>canceled = true</code>.
1606
+ * A promise that has been returned for a PATCH or DELETE request. That request will be
1607
+ * rejected with an error with property <code>canceled = true</code>.
1608
1608
  * @throws {Error}
1609
1609
  * If the request is not in the queue, assuming that it has been submitted already
1610
1610
  *
1611
1611
  * @private
1612
1612
  */
1613
- _Requestor.prototype.removePatch = function (oPromise) {
1613
+ _Requestor.prototype.removeChangeRequest = function (oPromise) {
1614
1614
  var bCanceled = this.cancelChangesByFilter(function (oChangeRequest) {
1615
1615
  return oChangeRequest.$promise === oPromise;
1616
1616
  });
@@ -228,7 +228,7 @@ sap.ui.define([
228
228
  *
229
229
  * @extends sap.ui.model.Model
230
230
  * @public
231
- * @version 1.104.0
231
+ * @version 1.105.0
232
232
  */
233
233
  var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
234
234
 
@@ -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.104.0
22
+ * @version 1.105.0
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.104.0
35
+ * @version 1.105.0
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.104.0
29
+ * @version 1.105.0
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.104.0
36
+ * @version 1.105.0
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.104.0
22
+ * @version 1.105.0
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.104.0
22
+ * @version 1.105.0
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.104.0
27
+ * @version 1.105.0
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.104.0
29
+ * @version 1.105.0
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.104.0
29
+ * @version 1.105.0
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.104.0
27
+ * @version 1.105.0
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.104.0
22
+ * @version 1.105.0
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.104.0
22
+ * @version 1.105.0
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}.
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  *
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.104.0
50
+ * @version 1.105.0
51
51
  *
52
52
  * @public
53
53
  * @param {object} [oFormatOptions]
@@ -47,9 +47,11 @@ sap.ui.define([
47
47
  * @extends sap.ui.model.ClientModel
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.104.0
50
+ * @version 1.105.0
51
+ *
52
+ * @param {XMLDocument|string} oData
53
+ * Either the URL where to load the XML from or an XML document
51
54
  *
52
- * @param {object} oData either the URL where to load the XML from or an XML
53
55
  * @public
54
56
  * @alias sap.ui.model.xml.XMLModel
55
57
  */
@@ -203,35 +203,38 @@ sap.ui.define([
203
203
  }
204
204
 
205
205
  function onInteractionFinished(oFinishedInteraction) {
206
- var sStepName = oFinishedInteraction.semanticStepName ? oFinishedInteraction.semanticStepName : oFinishedInteraction.trigger + "_" + oFinishedInteraction.event;
207
- var oFESRHandle = FESR.onBeforeCreated({
208
- stepName: sStepName,
209
- appNameLong: oFinishedInteraction.stepComponent || oFinishedInteraction.component,
210
- appNameShort: oFinishedInteraction.stepComponent || oFinishedInteraction.component,
211
- timeToInteractive: oFinishedInteraction.duration,
212
- interactionType: determineInteractionType(sStepName)
213
- }, oFinishedInteraction);
214
-
215
- // do not send UI-only FESR with piggyback approach
216
- if (oBeaconRequest || oFinishedInteraction.requests.length > 0) {
217
- createHeader(oFinishedInteraction, oFESRHandle);
218
- if (oBeaconRequest) {
219
- // reset the transactionId for Beacon approach
220
- sFESRTransactionId = null;
206
+ if (oFinishedInteraction) {
207
+ var sStepName = oFinishedInteraction.semanticStepName ? oFinishedInteraction.semanticStepName : oFinishedInteraction.trigger + "_" + oFinishedInteraction.event;
208
+ var oFESRHandle = FESR.onBeforeCreated({
209
+ stepName: sStepName,
210
+ appNameLong: oFinishedInteraction.stepComponent || oFinishedInteraction.component,
211
+ appNameShort: oFinishedInteraction.stepComponent || oFinishedInteraction.component,
212
+ timeToInteractive: oFinishedInteraction.duration,
213
+ interactionType: determineInteractionType(sStepName)
214
+ }, oFinishedInteraction);
215
+
216
+ // do not send UI-only FESR with piggyback approach
217
+ if (oBeaconRequest || oFinishedInteraction.requests.length > 0) {
218
+ createHeader(oFinishedInteraction, oFESRHandle);
219
+ if (oBeaconRequest) {
220
+ // reset the transactionId for Beacon approach
221
+ sFESRTransactionId = null;
222
+ }
221
223
  }
222
- }
223
224
 
224
- // use the sendBeacon API instead of the piggyback approach
225
- if (oBeaconRequest && sFESR && sFESRopt) {
226
- oBeaconRequest.append("SAP-Perf-FESRec", sFESR + "SAP-Perf-FESRec-opt" + sFESRopt);
227
- sendBeaconRequest();
228
- }
225
+ // use the sendBeacon API instead of the piggyback approach
226
+ if (oBeaconRequest && sFESR && sFESRopt) {
227
+ oBeaconRequest.append("SAP-Perf-FESRec", sFESR + "SAP-Perf-FESRec-opt" + sFESRopt);
228
+ sendBeaconRequest();
229
+ }
229
230
 
230
- if (sAppVersionFull != oFinishedInteraction.appVersion) {
231
- sAppVersionFull = oFinishedInteraction.appVersion;
232
- sAppVersion = sAppVersionFull ? formatVersion(sAppVersionFull) : "";
231
+ if (sAppVersionFull != oFinishedInteraction.appVersion) {
232
+ sAppVersionFull = oFinishedInteraction.appVersion;
233
+ sAppVersion = sAppVersionFull ? formatVersion(sAppVersionFull) : "";
234
+ }
233
235
  }
234
236
 
237
+ sPassportComponentInfo = "undefined";
235
238
  sPassportAction = "undefined";
236
239
  }
237
240
 
@@ -83,18 +83,22 @@ sap.ui.define([
83
83
  }
84
84
 
85
85
  /**
86
- * Check if request is initiated by XHR
86
+ * Check if request is initiated by XHR, comleted and timeframe of request is within timeframe of current interaction
87
87
  *
88
- * @param {object} oRequestTiming
88
+ * @param {object} oRequestTiming PerformanceResourceTiming as retrieved by window.performance.getEntryByType("resource")
89
+ * @return {boolean} true if the request is a completed XHR with started and ended within the current interaction
89
90
  * @private
90
91
  */
91
- function isXHR(oRequestTiming) {
92
+ function isValidInteractionXHR(oRequestTiming) {
92
93
  // if the request has been completed it has complete timing figures)
93
94
  var bComplete = oRequestTiming.startTime > 0 &&
94
95
  oRequestTiming.startTime <= oRequestTiming.requestStart &&
95
96
  oRequestTiming.requestStart <= oRequestTiming.responseEnd;
96
97
 
97
- return bComplete && oRequestTiming.initiatorType === "xmlhttprequest";
98
+ var bPartOfInteraction = oPendingInteraction.start <= (performance.timing.navigationStart + oRequestTiming.requestStart) &&
99
+ oPendingInteraction.end >= (performance.timing.navigationStart + oRequestTiming.responseEnd);
100
+
101
+ return bPartOfInteraction && bComplete && oRequestTiming.initiatorType === "xmlhttprequest";
98
102
  }
99
103
 
100
104
  function aggregateRequestTiming(oRequest) {
@@ -155,9 +159,11 @@ sap.ui.define([
155
159
  function finalizeInteraction(iTime) {
156
160
  if (oPendingInteraction) {
157
161
  var aAllRequestTimings = window.performance.getEntriesByType("resource");
162
+ var oFinshedInteraction;
158
163
  oPendingInteraction.end = iTime;
164
+ oPendingInteraction.processing = iTime - oPendingInteraction.start;
159
165
  oPendingInteraction.duration = oPendingInteraction.processing;
160
- oPendingInteraction.requests = aAllRequestTimings.filter(isXHR);
166
+ oPendingInteraction.requests = aAllRequestTimings.filter(isValidInteractionXHR);
161
167
  oPendingInteraction.completeRoundtrips = 0;
162
168
  oPendingInteraction.measurements = Measurement.filterMeasurements(isCompleteMeasurement, true);
163
169
  if (oPendingInteraction.requests.length > 0) {
@@ -173,16 +179,18 @@ sap.ui.define([
173
179
  oPendingInteraction.completed = true;
174
180
  Object.freeze(oPendingInteraction);
175
181
 
176
- if (oPendingInteraction.duration !== 0 || oPendingInteraction.requests.length > 0 || isNavigation) {
182
+ // Duration threshold 2 in order to filter not performance relevant interactions such as liveChange
183
+ if (oPendingInteraction.semanticStepName || oPendingInteraction.duration >= 2 || oPendingInteraction.requests.length > 0 || isNavigation) {
177
184
  aInteractions.push(oPendingInteraction);
178
- var oFinshedInteraction = aInteractions[aInteractions.length - 1];
179
- if (Interaction.onInteractionFinished && oFinshedInteraction) {
180
- Interaction.onInteractionFinished(oFinshedInteraction);
181
- }
185
+ oFinshedInteraction = aInteractions[aInteractions.length - 1];
182
186
  if (Log.isLoggable()) {
183
187
  Log.debug("Interaction step finished: trigger: " + oPendingInteraction.trigger + "; duration: " + oPendingInteraction.duration + "; requests: " + oPendingInteraction.requests.length, "Interaction.js");
184
188
  }
185
189
  }
190
+ // Execute onInteractionFinished always in case function exist to enable cleanup in FESR independent of filtering
191
+ if (Interaction.onInteractionFinished) {
192
+ Interaction.onInteractionFinished(oFinshedInteraction);
193
+ }
186
194
  oPendingInteraction = null;
187
195
  oCurrentBrowserEvent = null;
188
196
  isNavigation = false;
@@ -512,7 +520,6 @@ sap.ui.define([
512
520
  } else {
513
521
  // set provisionary processing time from start to end and calculate later
514
522
  oPendingInteraction.preliminaryEnd = now();
515
- oPendingInteraction.processing = oPendingInteraction.preliminaryEnd - oPendingInteraction.start;
516
523
  }
517
524
  }
518
525
  },
@@ -607,12 +614,33 @@ sap.ui.define([
607
614
  if (oPendingInteraction && !oPendingInteraction.completed && Interaction.onInteractionStarted) {
608
615
  oPendingInteraction.passportAction = Interaction.onInteractionStarted(oPendingInteraction, bForce);
609
616
  }
617
+ // Interaction.start will delete oCurrentBrowserEvent in case there is an oPendingInteraction
618
+ // (notifyStepStart is called with parameter bForce)
619
+ // Conscious decision to not move the coding because this shouldn't be a productive scenario
610
620
  if (oCurrentBrowserEvent) {
611
621
  oBrowserElement = oCurrentBrowserEvent.srcControl;
612
622
  }
613
623
  // if browser event matches the first control event we take it for trigger/event determination (step name)
614
624
  if (oElement && oElement.getId && oBrowserElement && oElement.getId() === oBrowserElement.getId()) {
615
625
  bMatched = true;
626
+ } else {
627
+ var elem = oBrowserElement;
628
+ while (elem && elem.getParent()) {
629
+ elem = elem.getParent();
630
+ if (oElement.getId() === elem.getId()) {
631
+ // Stop looking for better fitting control in case the current browser event source control
632
+ // is already child of the control event which triggers the interaction because all other
633
+ // control events most likely does not suit better.
634
+ // Example: Click on image of an button will not pass the previous if
635
+ // (oElement.getId() !== oBrowserElement.getId() ==> btn !== btn-img).
636
+ // In case the button is part of an popover and the click on the button closes the popover,
637
+ // the coding below overwrites the button control id with the popover control id in case we
638
+ // don't stop here.
639
+ // Only look for better fitting control in case browser and control event does not fit at all
640
+ bMatched = true;
641
+ break;
642
+ }
643
+ }
616
644
  }
617
645
  oCurrentBrowserEvent = null;
618
646
  //only handle the first browser event within a call stack. Ignore virtual/harmonization events.
@@ -623,6 +651,8 @@ sap.ui.define([
623
651
  oCurrentBrowserEvent = null;
624
652
  bInteractionProcessed = false;
625
653
  }, 0);
654
+ bIdle = false;
655
+ Interaction.notifyStepEnd(true); // Start timer to end Interaction in case there is no timing relevant action e.g. rendering, request
626
656
  } else if (oPendingInteraction && oBrowserElement && !bMatched) {
627
657
  // if browser event matches one of the next control events we take it for trigger/event determination (step name)
628
658
  var elem = oBrowserElement;
@@ -630,13 +660,13 @@ sap.ui.define([
630
660
  oPendingInteraction.trigger = oElement.getId();
631
661
  oPendingInteraction.semanticStepName = FESRHelper.getSemanticStepname(oElement, sEventId);
632
662
  oPendingInteraction.event = sEventId;
633
- bMatched = true;
663
+ bMatched = true;
634
664
  } else {
635
665
  while (elem && elem.getParent()) {
636
666
  elem = elem.getParent();
637
667
  if (oElement.getId() === elem.getId()) {
638
- oPendingInteraction.trigger = oElement.getId();
639
- oPendingInteraction.semanticStepName = FESRHelper.getSemanticStepname(oElement, sEventId);
668
+ oPendingInteraction.trigger = oElement.getId();
669
+ oPendingInteraction.semanticStepName = FESRHelper.getSemanticStepname(oElement, sEventId);
640
670
  oPendingInteraction.event = sEventId;
641
671
  //if we find no direct match we consider the last control event for the trigger/event (step name)
642
672
  break;
@@ -652,7 +682,7 @@ sap.ui.define([
652
682
  * Register async operation, that is relevant for a running interaction.
653
683
  * Invoking the returned handle stops the async operation.
654
684
  *
655
- * @params {string} sStepName a step name
685
+ * @param {string} sStepName a step name
656
686
  * @returns {function} The async handle
657
687
  * @private
658
688
  */
@@ -664,6 +694,7 @@ sap.ui.define([
664
694
  }
665
695
  /*eslint-enable no-console */
666
696
  var sInteractionId = oPendingInteraction.id;
697
+ delete oPendingInteraction.preliminaryEnd; // Delete prelimanry end to force current timestamp of finalization
667
698
  Interaction.notifyAsyncStepStart();
668
699
  return function() {
669
700
  Interaction.notifyAsyncStepEnd(sInteractionId);
@@ -730,7 +761,10 @@ sap.ui.define([
730
761
  if (iInteractionStepTimer) {
731
762
  clearTimeout(iInteractionStepTimer);
732
763
  }
733
- iInteractionStepTimer = setTimeout(Interaction.notifyStepEnd, 250);
764
+ // There are control events using a debouncing mechanism for e.g. suggest event (see sap.m.Input)
765
+ // A common debounce treshhold (also used by sap.m.Input) is 300ms therefore we use setTimeout
766
+ // with 301ms to end the Interaction after execution of the debounced event
767
+ iInteractionStepTimer = setTimeout(Interaction.notifyStepEnd, 301);
734
768
  if (Log.isLoggable()) {
735
769
  Log.debug("Interaction check for idle time - Number of pending steps: " + iInteractionCounter);
736
770
  }
@@ -774,6 +808,22 @@ sap.ui.define([
774
808
  if (oCurrentBrowserEvent.type.match(/^(mousedown|touchstart|keydown)$/)) {
775
809
  Interaction.end(/*bForce*/true);
776
810
  }
811
+ // Clean up oCurrentBrowserEvent at the end to prevent dangling events
812
+ // Since oCurrentBrowser event is prerequisite to start an event we need to
813
+ // clean dangling browser events to avoid creating interactions based on these events
814
+ // e.g. The user clicks first somewhere on the UI on a control without press handler.
815
+ // After that the user scrolls in a table and triggers implicit requests via paging.
816
+ // This combination will create an interaction based on the first browser event,
817
+ // created and not cleaned up by the first click within the UI
818
+ if (this.eventEndTimer) {
819
+ clearTimeout(this.eventEndTimer);
820
+ }
821
+ this.eventEndTimer = setTimeout(function() {
822
+ oCurrentBrowserEvent = null;
823
+ delete this.eventEndTimer;
824
+ // There are events fired within a timeout with delay. Cleanup after 10ms
825
+ // to hopefully prevent cleaning up to early (before control event was fired)
826
+ }.bind(this), 10);
777
827
  }
778
828
  },
779
829
 
@@ -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.104.0
56
+ * @version 1.105.0
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.104.0
30
+ * @version 1.105.0
31
31
  *
32
32
  * @public
33
33
  * @since 1.48.0
@@ -231,6 +231,13 @@ sap.ui.define([
231
231
  Press.controlAdapters["sap.ui.comp.smartfilterbar.SmartFilterBar"] = "btnGo"; // always available?
232
232
 
233
233
  Press.controlAdapters["sap.m.ObjectAttribute"] = "text"; // suffix is the same in active state. focusDomRef: <div> -- root
234
+ Press.controlAdapters["sap.m.ObjectStatus"] = function (oControl) {
235
+ if (oControl.getActive()) {
236
+ return "link";
237
+ } else {
238
+ return null; // focusDomRef: <div> -- root
239
+ }
240
+ };
234
241
 
235
242
  Press.controlAdapters["sap.m.ObjectIdentifier"] = function (oControl) {
236
243
  if (oControl.getTitleActive()) {
@@ -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.104.0
27
+ * @version 1.105.0
28
28
  * @since 1.100
29
29
  */
30
30
  return BaseObject.extend("sap.ui.test.generic.TestBase", {
@@ -7,9 +7,8 @@
7
7
  sap.ui.define([
8
8
  "sap/ui/base/ManagedObject",
9
9
  "sap/ui/test/matchers/Matcher",
10
- "sap/base/strings/capitalize",
11
- "sap/ui/thirdparty/jquery"
12
- ], function (ManagedObject, Matcher, capitalize, jQueryDOM) {
10
+ "sap/base/strings/capitalize"
11
+ ], function (ManagedObject, Matcher, capitalize) {
13
12
  "use strict";
14
13
 
15
14
  /**
@@ -6,9 +6,8 @@
6
6
 
7
7
  sap.ui.define([
8
8
  "sap/ui/test/matchers/Matcher",
9
- "sap/base/strings/capitalize",
10
- "sap/ui/thirdparty/jquery"
11
- ], function (Matcher, capitalize, jQueryDOM) {
9
+ "sap/base/strings/capitalize"
10
+ ], function (Matcher, capitalize) {
12
11
  "use strict";
13
12
 
14
13
  /**
@@ -6,9 +6,8 @@
6
6
 
7
7
  sap.ui.define([
8
8
  "sap/ui/test/matchers/Matcher",
9
- "sap/base/strings/capitalize",
10
- "sap/ui/thirdparty/jquery"
11
- ], function (Matcher, capitalize, jQueryDOM) {
9
+ "sap/base/strings/capitalize"
10
+ ], function (Matcher, capitalize) {
12
11
  "use strict";
13
12
 
14
13
  /**
@@ -293,12 +293,17 @@ sap.ui.define([
293
293
  // assertion is async, push results when ready
294
294
  var oAssertionPromise = fnAssertion.apply(oParams.appWindow, arguments)
295
295
  .always(function (oResult) {
296
- qunitThis.push(
297
- oResult.result,
298
- oResult.actual,
299
- oResult.expected,
300
- oResult.message
301
- );
296
+ if ( typeof qunitThis.pushResult === "function" ) {
297
+ qunitThis.pushResult(oResult);
298
+ } else {
299
+ // fallback for QUnit < 1.22.0
300
+ qunitThis.push(
301
+ oResult.result,
302
+ oResult.actual,
303
+ oResult.expected,
304
+ oResult.message
305
+ );
306
+ }
302
307
  });
303
308
 
304
309
  // schedule async assertion promise on waitFor flow so test waits till assertion is ready
@@ -6,9 +6,8 @@
6
6
 
7
7
  sap.ui.define([
8
8
  'sap/ui/base/Object',
9
- 'sap/ui/test/pipelines/PipelineFactory',
10
- "sap/ui/thirdparty/jquery"
11
- ], function(UI5Object, PipelineFactory, jQueryDOM) {
9
+ 'sap/ui/test/pipelines/PipelineFactory'
10
+ ], function(UI5Object, PipelineFactory) {
12
11
  "use strict";
13
12
  var oPipelineFactory = new PipelineFactory({
14
13
  name: "Action",
@@ -7,9 +7,8 @@
7
7
  sap.ui.define([
8
8
  "sap/ui/test/_OpaLogger",
9
9
  "sap/ui/base/Object",
10
- "sap/ui/test/pipelines/PipelineFactory",
11
- "sap/ui/thirdparty/jquery"
12
- ], function(_OpaLogger, UI5Object, PipelineFactory, jQueryDOM) {
10
+ "sap/ui/test/pipelines/PipelineFactory"
11
+ ], function(_OpaLogger, UI5Object, PipelineFactory) {
13
12
  "use strict";
14
13
  var oPipelineFactory = new PipelineFactory({
15
14
  name: "Matcher",