@openui5/sap.ui.core 1.103.1 → 1.106.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 (405) hide show
  1. package/.reuse/dep5 +35 -15
  2. package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
  3. package/THIRDPARTY.txt +64 -21
  4. package/package.json +1 -1
  5. package/src/jquery.sap.dom.js +10 -10
  6. package/src/jquery.sap.global.js +24 -216
  7. package/src/jquery.sap.history.js +1 -1
  8. package/src/jquery.sap.properties.js +2 -2
  9. package/src/jquery.sap.resources.js +1 -1
  10. package/src/jquery.sap.script.js +1 -1
  11. package/src/jquery.sap.storage.js +4 -4
  12. package/src/sap/base/i18n/ResourceBundle.js +7 -11
  13. package/src/sap/base/util/LoaderExtensions.js +69 -61
  14. package/src/sap/base/util/ObjectPath.js +1 -1
  15. package/src/sap/base/util/Properties.js +1 -1
  16. package/src/sap/base/util/fetch.js +228 -0
  17. package/src/sap/base/util/mixedFetch.js +69 -0
  18. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  19. package/src/sap/base/util/restricted/_castArray.js +1 -1
  20. package/src/sap/base/util/restricted/_compact.js +1 -1
  21. package/src/sap/base/util/restricted/_curry.js +1 -1
  22. package/src/sap/base/util/restricted/_debounce.js +1 -1
  23. package/src/sap/base/util/restricted/_difference.js +1 -1
  24. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  25. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  26. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  27. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  28. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  29. package/src/sap/base/util/restricted/_flatten.js +1 -1
  30. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  31. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  32. package/src/sap/base/util/restricted/_intersection.js +1 -1
  33. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  34. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  35. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  36. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  37. package/src/sap/base/util/restricted/_isNil.js +1 -1
  38. package/src/sap/base/util/restricted/_max.js +1 -1
  39. package/src/sap/base/util/restricted/_merge.js +1 -1
  40. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  41. package/src/sap/base/util/restricted/_min.js +1 -1
  42. package/src/sap/base/util/restricted/_omit.js +1 -1
  43. package/src/sap/base/util/restricted/_pick.js +1 -1
  44. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  45. package/src/sap/base/util/restricted/_throttle.js +1 -1
  46. package/src/sap/base/util/restricted/_toArray.js +1 -1
  47. package/src/sap/base/util/restricted/_union.js +1 -1
  48. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  49. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  50. package/src/sap/base/util/restricted/_uniq.js +1 -1
  51. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  52. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  53. package/src/sap/base/util/restricted/_without.js +1 -1
  54. package/src/sap/base/util/restricted/_xor.js +1 -1
  55. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  56. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  57. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  58. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  59. package/src/sap/base/util/syncFetch.js +66 -0
  60. package/src/sap/ui/Device.js +5 -5
  61. package/src/sap/ui/Global.js +7 -14
  62. package/src/sap/ui/VersionInfo.js +57 -54
  63. package/src/sap/ui/base/BindingInfo.js +198 -0
  64. package/src/sap/ui/base/DataType.js +1 -1
  65. package/src/sap/ui/base/Event.js +2 -2
  66. package/src/sap/ui/base/EventProvider.js +2 -2
  67. package/src/sap/ui/base/Interface.js +1 -1
  68. package/src/sap/ui/base/ManagedObject.js +209 -979
  69. package/src/sap/ui/base/ManagedObjectMetadata.js +6 -6
  70. package/src/sap/ui/base/ManagedObjectObserver.js +2 -2
  71. package/src/sap/ui/base/Metadata.js +1 -1
  72. package/src/sap/ui/base/Object.js +1 -1
  73. package/src/sap/ui/base/ObjectPool.js +1 -1
  74. package/src/sap/ui/core/.library +72 -50
  75. package/src/sap/ui/core/AccessKeysEnablement.js +173 -0
  76. package/src/sap/ui/core/AppCacheBuster.js +65 -51
  77. package/src/sap/ui/core/BusyIndicator.js +1 -1
  78. package/src/sap/ui/core/Component.js +52 -25
  79. package/src/sap/ui/core/ComponentContainer.js +1 -1
  80. package/src/sap/ui/core/ComponentMetadata.js +16 -23
  81. package/src/sap/ui/core/ComponentSupport.js +1 -1
  82. package/src/sap/ui/core/Configuration.js +598 -358
  83. package/src/sap/ui/core/Control.js +1 -1
  84. package/src/sap/ui/core/Core.js +126 -185
  85. package/src/sap/ui/core/CustomData.js +1 -1
  86. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  87. package/src/sap/ui/core/Element.js +68 -4
  88. package/src/sap/ui/core/ElementMetadata.js +6 -4
  89. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  90. package/src/sap/ui/core/EventBus.js +1 -1
  91. package/src/sap/ui/core/ExtensionPoint.js +2 -2
  92. package/src/sap/ui/core/FocusHandler.js +84 -39
  93. package/src/sap/ui/core/Fragment.js +1 -1
  94. package/src/sap/ui/core/HTML.js +1 -1
  95. package/src/sap/ui/core/History.js +1 -1
  96. package/src/sap/ui/core/Icon.js +1 -1
  97. package/src/sap/ui/core/IconPool.js +8 -8
  98. package/src/sap/ui/core/IndicationColorSupport.js +2 -2
  99. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  100. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  101. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  102. package/src/sap/ui/core/InvisibleText.js +4 -1
  103. package/src/sap/ui/core/Item.js +1 -1
  104. package/src/sap/ui/core/LabelEnablement.js +1 -1
  105. package/src/sap/ui/core/LayoutData.js +1 -1
  106. package/src/sap/ui/core/ListItem.js +1 -1
  107. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  108. package/src/sap/ui/core/Locale.js +1 -1
  109. package/src/sap/ui/core/LocaleData.js +8 -51
  110. package/src/sap/ui/core/Manifest.js +3 -5
  111. package/src/sap/ui/core/Message.js +1 -1
  112. package/src/sap/ui/core/Popup.js +13 -8
  113. package/src/sap/ui/core/RenderManager.js +17 -21
  114. package/src/sap/ui/core/Renderer.js +1 -1
  115. package/src/sap/ui/core/ResizeHandler.js +28 -49
  116. package/src/sap/ui/core/ScrollBar.js +1 -1
  117. package/src/sap/ui/core/SeparatorItem.js +1 -1
  118. package/src/sap/ui/core/Title.js +1 -1
  119. package/src/sap/ui/core/TooltipBase.js +12 -13
  120. package/src/sap/ui/core/UIArea.js +13 -12
  121. package/src/sap/ui/core/UIComponent.js +3 -3
  122. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  123. package/src/sap/ui/core/ValueStateSupport.js +2 -2
  124. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  125. package/src/sap/ui/core/XMLComposite.js +5 -2
  126. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  127. package/src/sap/ui/core/XMLTemplateProcessor.js +7 -7
  128. package/src/sap/ui/core/_ConfigurationProvider.js +187 -0
  129. package/src/sap/ui/core/_IconRegistry.js +66 -55
  130. package/src/sap/ui/core/cache/CacheManager.js +20 -16
  131. package/src/sap/ui/core/cache/CacheManagerNOP.js +5 -2
  132. package/src/sap/ui/core/cache/LRUPersistentCache.js +15 -8
  133. package/src/sap/ui/core/cldr/en.json +0 -1
  134. package/src/sap/ui/core/cldr/es_BO.json +3 -3
  135. package/src/sap/ui/core/cldr/es_CL.json +3 -3
  136. package/src/sap/ui/core/cldr/es_MX.json +3 -3
  137. package/src/sap/ui/core/cldr/es_PE.json +3 -3
  138. package/src/sap/ui/core/cldr/es_UY.json +3 -3
  139. package/src/sap/ui/core/cldr/es_VE.json +2 -2
  140. package/src/sap/ui/core/date/Buddhist.js +15 -13
  141. package/src/sap/ui/core/date/Japanese.js +0 -6
  142. package/src/sap/ui/core/date/UniversalDate.js +144 -34
  143. package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
  144. package/src/sap/ui/core/delegate/ScrollEnablement.js +7 -6
  145. package/src/sap/ui/core/dnd/DragAndDrop.js +13 -9
  146. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  147. package/src/sap/ui/core/dnd/DragDropInfo.js +3 -3
  148. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  149. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  150. package/src/sap/ui/core/format/DateFormat.js +36 -9
  151. package/src/sap/ui/core/format/NumberFormat.js +92 -26
  152. package/src/sap/ui/core/format/TimezoneUtil.js +2 -2
  153. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  154. package/src/sap/ui/core/library.js +44 -3
  155. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  156. package/src/sap/ui/core/message/Message.js +1 -1
  157. package/src/sap/ui/core/message/MessageManager.js +1 -1
  158. package/src/sap/ui/core/message/MessageParser.js +1 -1
  159. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  160. package/src/sap/ui/core/messagebundle.properties +2 -0
  161. package/src/sap/ui/core/messagebundle_ar.properties +54 -53
  162. package/src/sap/ui/core/messagebundle_bg.properties +54 -53
  163. package/src/sap/ui/core/messagebundle_ca.properties +28 -27
  164. package/src/sap/ui/core/messagebundle_cs.properties +37 -36
  165. package/src/sap/ui/core/messagebundle_cy.properties +57 -56
  166. package/src/sap/ui/core/messagebundle_da.properties +53 -52
  167. package/src/sap/ui/core/messagebundle_de.properties +54 -53
  168. package/src/sap/ui/core/messagebundle_el.properties +46 -45
  169. package/src/sap/ui/core/messagebundle_en.properties +57 -56
  170. package/src/sap/ui/core/messagebundle_en_GB.properties +57 -56
  171. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
  172. package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
  173. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +1 -0
  174. package/src/sap/ui/core/messagebundle_es.properties +42 -41
  175. package/src/sap/ui/core/messagebundle_es_MX.properties +54 -53
  176. package/src/sap/ui/core/messagebundle_et.properties +51 -50
  177. package/src/sap/ui/core/messagebundle_fi.properties +48 -47
  178. package/src/sap/ui/core/messagebundle_fr.properties +37 -36
  179. package/src/sap/ui/core/messagebundle_fr_CA.properties +22 -21
  180. package/src/sap/ui/core/messagebundle_hi.properties +42 -41
  181. package/src/sap/ui/core/messagebundle_hr.properties +55 -54
  182. package/src/sap/ui/core/messagebundle_hu.properties +56 -55
  183. package/src/sap/ui/core/messagebundle_id.properties +55 -54
  184. package/src/sap/ui/core/messagebundle_it.properties +55 -54
  185. package/src/sap/ui/core/messagebundle_iw.properties +55 -54
  186. package/src/sap/ui/core/messagebundle_ja.properties +48 -47
  187. package/src/sap/ui/core/messagebundle_kk.properties +41 -40
  188. package/src/sap/ui/core/messagebundle_ko.properties +21 -20
  189. package/src/sap/ui/core/messagebundle_lt.properties +55 -54
  190. package/src/sap/ui/core/messagebundle_lv.properties +55 -54
  191. package/src/sap/ui/core/messagebundle_ms.properties +52 -51
  192. package/src/sap/ui/core/messagebundle_nl.properties +53 -52
  193. package/src/sap/ui/core/messagebundle_no.properties +53 -52
  194. package/src/sap/ui/core/messagebundle_pl.properties +52 -51
  195. package/src/sap/ui/core/messagebundle_pt.properties +54 -53
  196. package/src/sap/ui/core/messagebundle_pt_PT.properties +55 -54
  197. package/src/sap/ui/core/messagebundle_ro.properties +56 -55
  198. package/src/sap/ui/core/messagebundle_ru.properties +52 -51
  199. package/src/sap/ui/core/messagebundle_sh.properties +57 -56
  200. package/src/sap/ui/core/messagebundle_sk.properties +54 -53
  201. package/src/sap/ui/core/messagebundle_sl.properties +56 -55
  202. package/src/sap/ui/core/messagebundle_sv.properties +52 -51
  203. package/src/sap/ui/core/messagebundle_th.properties +25 -24
  204. package/src/sap/ui/core/messagebundle_tr.properties +56 -55
  205. package/src/sap/ui/core/messagebundle_uk.properties +55 -54
  206. package/src/sap/ui/core/messagebundle_vi.properties +56 -55
  207. package/src/sap/ui/core/messagebundle_zh_CN.properties +55 -54
  208. package/src/sap/ui/core/messagebundle_zh_TW.properties +55 -54
  209. package/src/sap/ui/core/mvc/Controller.js +17 -12
  210. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  211. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  212. package/src/sap/ui/core/mvc/JSView.js +2 -2
  213. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  214. package/src/sap/ui/core/mvc/View.js +7 -7
  215. package/src/sap/ui/core/mvc/XMLView.js +1 -2
  216. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  217. package/src/sap/ui/core/plugin/LessSupport.js +16 -14
  218. package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -1
  219. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  220. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  221. package/src/sap/ui/core/routing/Router.js +4 -4
  222. package/src/sap/ui/core/routing/async/TargetCache.js +4 -0
  223. package/src/sap/ui/core/rules/App.support.js +11 -13
  224. package/src/sap/ui/core/rules/Config.support.js +14 -14
  225. package/src/sap/ui/core/rules/CoreHelper.support.js +3 -3
  226. package/src/sap/ui/core/rules/Model.support.js +8 -8
  227. package/src/sap/ui/core/rules/Rendering.support.js +1 -1
  228. package/src/sap/ui/core/rules/Theming.support.js +8 -8
  229. package/src/sap/ui/core/rules/View.support.js +20 -13
  230. package/src/sap/ui/core/search/OpenSearchProvider.js +25 -12
  231. package/src/sap/ui/core/search/SearchProvider.js +2 -2
  232. package/src/sap/ui/core/service/Service.js +1 -1
  233. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  234. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  235. package/src/sap/ui/core/support/Hotkeys.js +2 -3
  236. package/src/sap/ui/core/support/Plugin.js +1 -1
  237. package/src/sap/ui/core/support/Support.js +3 -4
  238. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  239. package/src/sap/ui/core/support/plugins/Debugging.js +4 -4
  240. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  241. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  242. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  243. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  244. package/src/sap/ui/core/support/plugins/TechInfo.js +46 -33
  245. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  246. package/src/sap/ui/core/support/plugins/ViewInfo.js +3 -4
  247. package/src/sap/ui/core/support/support.html +1 -1
  248. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +3 -3
  249. package/src/sap/ui/core/themes/base/Icon.less +4 -0
  250. package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -1
  251. package/src/sap/ui/core/themes/base/base.less +26 -26
  252. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  253. package/src/sap/ui/core/themes/base/global.less +5 -1
  254. package/src/sap/ui/core/themes/base/shared.less +6 -0
  255. package/src/sap/ui/core/theming/Parameters.js +52 -53
  256. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  257. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  258. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  259. package/src/sap/ui/core/tmpl/Template.js +7 -5
  260. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  261. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  262. package/src/sap/ui/core/util/Export.js +1 -1
  263. package/src/sap/ui/core/util/ExportCell.js +1 -1
  264. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  265. package/src/sap/ui/core/util/ExportRow.js +1 -1
  266. package/src/sap/ui/core/util/ExportType.js +1 -1
  267. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  268. package/src/sap/ui/core/util/File.js +1 -1
  269. package/src/sap/ui/core/util/LibraryInfo.js +61 -42
  270. package/src/sap/ui/core/util/MockServer.js +45 -71
  271. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  272. package/src/sap/ui/core/util/ResponsivePaddingsEnablement.js +4 -3
  273. package/src/sap/ui/core/util/XMLPreprocessor.js +3 -3
  274. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +1 -4
  275. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  276. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  277. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  278. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  279. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  280. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  281. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  282. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  283. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  284. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  285. package/src/sap/ui/debug/ControlTree.js +1 -1
  286. package/src/sap/ui/debug/DebugEnv.js +1 -1
  287. package/src/sap/ui/debug/PropertyList.css +1 -31
  288. package/src/sap/ui/debug/PropertyList.js +6 -240
  289. package/src/sap/ui/dom/getScrollbarSize.js +1 -1
  290. package/src/sap/ui/dom/jquery/control.js +1 -0
  291. package/src/sap/ui/events/jquery/EventSimulation.js +4 -4
  292. package/src/sap/ui/model/ClientModel.js +1 -1
  293. package/src/sap/ui/model/CompositeDataState.js +1 -1
  294. package/src/sap/ui/model/CompositeType.js +1 -1
  295. package/src/sap/ui/model/Context.js +3 -0
  296. package/src/sap/ui/model/ContextBinding.js +1 -1
  297. package/src/sap/ui/model/DataState.js +3 -3
  298. package/src/sap/ui/model/ListBinding.js +2 -2
  299. package/src/sap/ui/model/ManagedObjectBindingSupport.js +871 -0
  300. package/src/sap/ui/model/MetaModel.js +1 -1
  301. package/src/sap/ui/model/Model.js +16 -5
  302. package/src/sap/ui/model/SelectionModel.js +1 -1
  303. package/src/sap/ui/model/SimpleType.js +2 -2
  304. package/src/sap/ui/model/Sorter.js +2 -2
  305. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  306. package/src/sap/ui/model/Type.js +1 -1
  307. package/src/sap/ui/model/_Helper.js +3 -1
  308. package/src/sap/ui/model/analytics/odata4analytics.js +2 -2
  309. package/src/sap/ui/model/base/ManagedObjectModel.js +2 -2
  310. package/src/sap/ui/model/json/JSONModel.js +2 -2
  311. package/src/sap/ui/model/message/MessageModel.js +1 -1
  312. package/src/sap/ui/model/odata/AnnotationHelper.js +4 -4
  313. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  314. package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
  315. package/src/sap/ui/model/odata/ODataMetaModel.js +10 -10
  316. package/src/sap/ui/model/odata/ODataMetadata.js +6 -3
  317. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  318. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +459 -268
  319. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  320. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  321. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  322. package/src/sap/ui/model/odata/type/Date.js +1 -1
  323. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  324. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  325. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  326. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  327. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  328. package/src/sap/ui/model/odata/type/Double.js +1 -1
  329. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  330. package/src/sap/ui/model/odata/type/Int.js +1 -1
  331. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  332. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  333. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  334. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  335. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  336. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  337. package/src/sap/ui/model/odata/type/Single.js +1 -1
  338. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  339. package/src/sap/ui/model/odata/type/String.js +1 -1
  340. package/src/sap/ui/model/odata/type/Time.js +1 -1
  341. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  342. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  343. package/src/sap/ui/model/odata/v2/Context.js +5 -5
  344. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  345. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +5 -2
  346. package/src/sap/ui/model/odata/v2/ODataListBinding.js +26 -1
  347. package/src/sap/ui/model/odata/v2/ODataModel.js +164 -125
  348. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +18 -2
  349. package/src/sap/ui/model/odata/v4/AnnotationHelper.js +3 -3
  350. package/src/sap/ui/model/odata/v4/Context.js +169 -79
  351. package/src/sap/ui/model/odata/v4/ODataBinding.js +51 -12
  352. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +111 -92
  353. package/src/sap/ui/model/odata/v4/ODataListBinding.js +206 -150
  354. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +13 -10
  355. package/src/sap/ui/model/odata/v4/ODataModel.js +249 -28
  356. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +33 -18
  357. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +17 -11
  358. package/src/sap/ui/model/odata/v4/ODataUtils.js +7 -4
  359. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +142 -35
  360. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +167 -16
  361. package/src/sap/ui/model/odata/v4/lib/_Cache.js +388 -188
  362. package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +2 -3
  363. package/src/sap/ui/model/odata/v4/lib/_Helper.js +119 -43
  364. package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +2 -3
  365. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +13 -6
  366. package/src/sap/ui/model/resource/ResourceModel.js +2 -2
  367. package/src/sap/ui/model/type/Boolean.js +1 -1
  368. package/src/sap/ui/model/type/Currency.js +2 -2
  369. package/src/sap/ui/model/type/Date.js +1 -1
  370. package/src/sap/ui/model/type/DateInterval.js +1 -1
  371. package/src/sap/ui/model/type/DateTime.js +1 -1
  372. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  373. package/src/sap/ui/model/type/FileSize.js +1 -1
  374. package/src/sap/ui/model/type/Float.js +1 -1
  375. package/src/sap/ui/model/type/Integer.js +1 -1
  376. package/src/sap/ui/model/type/String.js +2 -2
  377. package/src/sap/ui/model/type/Time.js +1 -1
  378. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  379. package/src/sap/ui/model/type/Unit.js +1 -1
  380. package/src/sap/ui/model/xml/XMLModel.js +4 -2
  381. package/src/sap/ui/performance/trace/FESR.js +27 -24
  382. package/src/sap/ui/performance/trace/Interaction.js +66 -16
  383. package/src/sap/ui/qunit/QUnitUtils.js +1 -2
  384. package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
  385. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  386. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  387. package/src/sap/ui/test/Opa5.js +1 -1
  388. package/src/sap/ui/test/OpaBuilder.js +1 -1
  389. package/src/sap/ui/test/TestUtils.js +35 -2
  390. package/src/sap/ui/test/actions/Press.js +7 -0
  391. package/src/sap/ui/test/generic/TestBase.js +1 -1
  392. package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +2 -3
  393. package/src/sap/ui/test/matchers/AggregationFilled.js +2 -3
  394. package/src/sap/ui/test/matchers/AggregationLengthEquals.js +2 -3
  395. package/src/sap/ui/test/matchers/Matcher.js +9 -11
  396. package/src/sap/ui/test/opaQunit.js +15 -9
  397. package/src/sap/ui/test/pipelines/ActionPipeline.js +2 -3
  398. package/src/sap/ui/test/pipelines/MatcherPipeline.js +2 -3
  399. package/src/sap/ui/test/pipelines/PipelineFactory.js +2 -3
  400. package/src/sap/ui/thirdparty/IPv6.js +1 -1
  401. package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
  402. package/src/sap/ui/thirdparty/URI.js +8 -2
  403. package/src/sap/ui/thirdparty/URITemplate.js +1 -1
  404. package/src/sap/ui/util/Storage.js +1 -1
  405. package/src/sap/ui/util/XMLHelper.js +1 -1
@@ -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
 
@@ -23,8 +23,7 @@ sap.ui.define('sap/ui/qunit/QUnitUtils', [
23
23
  "sap/base/strings/camelize",
24
24
  "sap/base/strings/capitalize",
25
25
  "sap/base/util/UriParameters",
26
- "sap/base/Log",
27
- "sap/ui/dom/jquery/control" // jQuery Plugin "control"
26
+ "sap/base/Log"
28
27
  ],
29
28
  function(
30
29
  jQuery,
@@ -85,7 +85,7 @@
85
85
  useFakeTimers: bUseFakeTimers
86
86
  };
87
87
 
88
- if (sinon.createSandBox) {
88
+ if (sinon.createSandbox) {
89
89
  this._oSandbox = sinon.createSandbox(oSandboxConfig);
90
90
  } else {
91
91
  this._oSandbox = sinon.sandbox.create(oSandboxConfig);
@@ -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.103.1
56
+ * @version 1.106.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.103.1
30
+ * @version 1.106.0
31
31
  *
32
32
  * @public
33
33
  * @since 1.48.0
@@ -860,7 +860,7 @@ sap.ui.define([
860
860
  /**
861
861
  * Returns the QUnit utils object in the current context. If an iframe is launched, it will return the iframe's QUnit utils.
862
862
  * @public
863
- * @returns {sap.ui.test.qunit} The QUnit utils
863
+ * @returns {object} The QUnit utils
864
864
  */
865
865
  Opa5.getUtils = function () {
866
866
  return iFrameLauncher.getUtils() || QUnitUtils;
@@ -1123,7 +1123,7 @@ sap.ui.define(
1123
1123
  * Creates a matcher function that returns an aggregation element of a control at a given index.
1124
1124
  * @param {string} sAggregationName the name of the aggregation that is used for matching
1125
1125
  * @param {int} iIndex the index within the aggregation
1126
- * @returns {function} the matcher function returns the item at a certain index in the aggregation or <code>undefined</code> if index not in range
1126
+ * @returns {function(sap.ui.core.Control): sap.ui.base.ManagedObject} the matcher function returns the item at a certain index in the aggregation or <code>undefined</code> if index not in range
1127
1127
  * @public
1128
1128
  * @static
1129
1129
  */
@@ -681,7 +681,11 @@ sap.ui.define([
681
681
 
682
682
  // set up the fake server
683
683
  oServer = sinon.fakeServer.create();
684
- oSandbox.add(oServer);
684
+ if (oSandbox.getFakes) { // Sinon.JS version >= 5
685
+ oSandbox.getFakes().push(oServer); // not a public API of Sinon.JS
686
+ } else {
687
+ oSandbox.add(oServer); // not a public API of Sinon.JS
688
+ }
685
689
  oServer.autoRespond = true;
686
690
  if (sAutoRespondAfter) {
687
691
  oServer.autoRespondAfter = parseInt(sAutoRespondAfter);
@@ -774,7 +778,13 @@ sap.ui.define([
774
778
  * @since 1.27.1
775
779
  */
776
780
  withNormalizedMessages : function (fnCodeUnderTest) {
777
- var oSandbox = sinon.sandbox.create();
781
+ var oSandbox;
782
+
783
+ if (sinon.createSandbox) {
784
+ oSandbox = sinon.createSandbox();
785
+ } else {
786
+ oSandbox = sinon.sandbox.create();
787
+ }
778
788
 
779
789
  try {
780
790
  var oCore = sap.ui.getCore(),
@@ -953,6 +963,29 @@ sap.ui.define([
953
963
  });
954
964
  TestUtils.useFakeServer(oSandbox, sSourceBase || "sap/ui/core/qunit/odata/v4/data",
955
965
  mResultingFixture, aRegExps, sFilterBase !== "/" ? sFilterBase : undefined);
966
+ },
967
+
968
+ /**
969
+ * Creates and returns a spy for <code>XMLHttpRequest.prototype.open</code> which is
970
+ * used in {@link sap.base.util.fetch}.
971
+ *
972
+ * @param {object} oSandbox
973
+ * a Sinon sandbox as created using <code>sinon.sandbox.create()</code>
974
+ * @return {object} Returns the spy
975
+ */
976
+ spyFetch : function(oSandbox) {
977
+ var spy = oSandbox.spy(XMLHttpRequest.prototype, "open");
978
+
979
+ /**
980
+ * Returns the request URL
981
+ * @param {number} iCall The 'nth' call
982
+ * @return {string} Returns the request URL
983
+ */
984
+ spy.calledWithUrl = function(iCall) {
985
+ return spy.getCall(iCall).args[1];
986
+ };
987
+
988
+ return spy;
956
989
  }
957
990
  };
958
991
 
@@ -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.103.1
27
+ * @version 1.106.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
  /**
@@ -15,11 +15,11 @@ sap.ui.define([
15
15
  * @abstract
16
16
  * @extends sap.ui.base.ManagedObject
17
17
  * @public
18
- * @name sap.ui.test.matchers.Matcher
18
+ * @alias sap.ui.test.matchers.Matcher
19
19
  * @author SAP SE
20
20
  * @since 1.23
21
21
  */
22
- var Matcher = ManagedObject.extend("sap.ui.test.matchers.Matcher", {
22
+ var Matcher = ManagedObject.extend("sap.ui.test.matchers.Matcher", /** @lends sap.ui.test.matchers.Matcher.prototype */ {
23
23
 
24
24
  metadata : {
25
25
  publicMethods : [ "isMatching" ]
@@ -38,24 +38,22 @@ sap.ui.define([
38
38
  * @param {sap.ui.core.Control} oControl the control that is checked by the matcher
39
39
  * @return {boolean} true if the Control is matching the condition of the matcher
40
40
  * @protected
41
- * @name sap.ui.test.matchers.Matcher#isMatching
42
- * @function
43
41
  */
44
42
  isMatching : function (oControl) {
45
43
  return true;
46
44
  },
47
45
 
48
46
  /**
49
- * @return {object} window of the application under test, or the current window if OPA5 is not loaded
50
- * Note: declared matchers are instanciated in the app context (by MatcherFactory)
51
- * while users instanciate matchers in the test context (in a waitFor)
47
+ * @returns {Window} window of the application under test, or the current window if Opa5 is not loaded
48
+ * Note: declared matchers are instantiated in the app context (by MatcherFactory)
49
+ * while users instantiate matchers in the test context (in a waitFor)
52
50
  * @private
53
- * @function
54
51
  */
55
52
  _getApplicationWindow: function () {
56
- if (sap.ui.test && sap.ui.test.Opa5) {
57
- // matcher context === test context, because Opa5 is loadded
58
- return sap.ui.test.Opa5.getWindow();
53
+ var Opa5 = sap.ui.require("sap/ui/test/Opa5");
54
+ if (Opa5) {
55
+ // matcher context === test context, because Opa5 is loaded
56
+ return Opa5.getWindow();
59
57
  } else {
60
58
  // matcher context === app context
61
59
  return window;
@@ -6,11 +6,12 @@
6
6
  /*global QUnit */
7
7
  sap.ui.define([
8
8
  'sap/base/util/each',
9
+ 'sap/ui/Global',
9
10
  'sap/ui/test/Opa',
10
11
  'sap/ui/test/Opa5',
11
12
  'sap/ui/test/qunitPause',
12
13
  'sap/ui/thirdparty/jquery'
13
- ], function(each, Opa, Opa5, QUnitPause, jQuery) {
14
+ ], function(each, Global, Opa, Opa5, QUnitPause, jQuery) {
14
15
  "use strict";
15
16
 
16
17
  QUnitPause.setupAfterQUnit();
@@ -18,8 +19,8 @@ sap.ui.define([
18
19
  QUnit.begin(function (oDetails) {
19
20
  // add ui5 version in the user agent string bar
20
21
  var oQUnitUserAgent = document.getElementById("#qunit-userAgent");
21
- if (sap && sap.ui && oQUnitUserAgent) {
22
- oQUnitUserAgent.innerText += "; UI5: " + sap.ui.version;
22
+ if (oQUnitUserAgent) {
23
+ oQUnitUserAgent.innerText += "; UI5: " + Global.version;
23
24
  }
24
25
 
25
26
  Opa._usageReport.begin({uri: window.location.href, totalTests: oDetails.totalTests});
@@ -292,12 +293,17 @@ sap.ui.define([
292
293
  // assertion is async, push results when ready
293
294
  var oAssertionPromise = fnAssertion.apply(oParams.appWindow, arguments)
294
295
  .always(function (oResult) {
295
- qunitThis.push(
296
- oResult.result,
297
- oResult.actual,
298
- oResult.expected,
299
- oResult.message
300
- );
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
+ }
301
307
  });
302
308
 
303
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",
@@ -6,10 +6,9 @@
6
6
 
7
7
  sap.ui.define([
8
8
  'sap/ui/base/Object',
9
- "sap/base/Log",
10
- "sap/ui/thirdparty/jquery"
9
+ "sap/base/Log"
11
10
  ],
12
- function(BaseObject, Log, jQueryDOM) {
11
+ function(BaseObject, Log) {
13
12
  "use strict";
14
13
 
15
14
  /**
@@ -2,7 +2,7 @@
2
2
  * URI.js - Mutating URLs
3
3
  * IPv6 Support
4
4
  *
5
- * Version: 1.19.10
5
+ * Version: 1.19.11
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.io/URI.js/
@@ -2,7 +2,7 @@
2
2
  * URI.js - Mutating URLs
3
3
  * Second Level Domain (SLD) Support
4
4
  *
5
- * Version: 1.19.10
5
+ * Version: 1.19.11
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.io/URI.js/
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * URI.js - Mutating URLs
3
3
  *
4
- * Version: 1.19.10
4
+ * Version: 1.19.11
5
5
  *
6
6
  * Author: Rodney Rehm
7
7
  * Web: http://medialize.github.io/URI.js/
@@ -90,7 +90,7 @@
90
90
  return /^[0-9]+$/.test(value);
91
91
  }
92
92
 
93
- URI.version = '1.19.10';
93
+ URI.version = '1.19.11';
94
94
 
95
95
  var p = URI.prototype;
96
96
  var hasOwn = Object.prototype.hasOwnProperty;
@@ -249,6 +249,8 @@
249
249
  parens: /(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g,
250
250
  };
251
251
  URI.leading_whitespace_expression = /^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/
252
+ // https://infra.spec.whatwg.org/#ascii-tab-or-newline
253
+ URI.ascii_tab_whitespace = /[\u0009\u000A\u000D]+/g
252
254
  // http://www.iana.org/assignments/uri-schemes.html
253
255
  // http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports
254
256
  URI.defaultPorts = {
@@ -506,6 +508,8 @@
506
508
  }
507
509
 
508
510
  string = string.replace(URI.leading_whitespace_expression, '')
511
+ // https://infra.spec.whatwg.org/#ascii-tab-or-newline
512
+ string = string.replace(URI.ascii_tab_whitespace, '')
509
513
 
510
514
  // [protocol"://"[username[":"password]"@"]hostname[":"port]"/"?][path]["?"querystring]["#"fragment]
511
515
 
@@ -527,6 +531,8 @@
527
531
 
528
532
  // slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)
529
533
  string = string.replace(/^(https?|ftp|wss?)?:+[/\\]*/i, '$1://');
534
+ // slashes and backslashes have lost all meaning for scheme relative URLs
535
+ string = string.replace(/^[/\\]{2,}/i, '//');
530
536
 
531
537
  // extract protocol
532
538
  if (string.substring(0, 2) === '//') {
@@ -2,7 +2,7 @@
2
2
  * URI.js - Mutating URLs
3
3
  * URI Template Support - http://tools.ietf.org/html/rfc6570
4
4
  *
5
- * Version: 1.19.10
5
+ * Version: 1.19.11
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.io/URI.js/
@@ -250,7 +250,7 @@ sap.ui.define(["sap/base/assert"], function (assert) {
250
250
  *
251
251
  * @enum {string}
252
252
  * @public
253
- * @version 1.103.1
253
+ * @version 1.106.0
254
254
  */
255
255
  Storage.Type = {
256
256
  /**
@@ -33,7 +33,7 @@ sap.ui.define(['sap/ui/Device'], function(Device) {
33
33
  var oParseError;
34
34
  var DomHelper = new DOMParser();
35
35
 
36
- oXMLDocument = DomHelper.parseFromString(sXMLText, "text/xml");
36
+ oXMLDocument = DomHelper.parseFromString(sXMLText, "application/xml");
37
37
 
38
38
  oParseError = Helper.getParseError(oXMLDocument);
39
39
  if (oParseError) {