@openui5/sap.ui.core 1.94.0 → 1.97.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 (417) hide show
  1. package/.eslintrc.json +15 -4
  2. package/.reuse/dep5 +12 -12
  3. package/THIRDPARTY.txt +21 -17
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +1 -1
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +2 -2
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  11. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  12. package/src/sap/base/util/restricted/_castArray.js +1 -1
  13. package/src/sap/base/util/restricted/_compact.js +1 -1
  14. package/src/sap/base/util/restricted/_curry.js +1 -1
  15. package/src/sap/base/util/restricted/_debounce.js +1 -1
  16. package/src/sap/base/util/restricted/_difference.js +1 -1
  17. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  19. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  22. package/src/sap/base/util/restricted/_flatten.js +1 -1
  23. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_intersection.js +1 -1
  26. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  28. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isNil.js +1 -1
  31. package/src/sap/base/util/restricted/_max.js +1 -1
  32. package/src/sap/base/util/restricted/_merge.js +1 -1
  33. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  34. package/src/sap/base/util/restricted/_min.js +1 -1
  35. package/src/sap/base/util/restricted/_omit.js +1 -1
  36. package/src/sap/base/util/restricted/_pick.js +1 -1
  37. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  38. package/src/sap/base/util/restricted/_throttle.js +1 -1
  39. package/src/sap/base/util/restricted/_toArray.js +1 -1
  40. package/src/sap/base/util/restricted/_union.js +1 -1
  41. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  42. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  43. package/src/sap/base/util/restricted/_uniq.js +1 -1
  44. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  46. package/src/sap/base/util/restricted/_without.js +1 -1
  47. package/src/sap/base/util/restricted/_xor.js +1 -1
  48. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  49. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  50. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  52. package/src/sap/ui/Device.js +15 -11
  53. package/src/sap/ui/Global.js +13 -17
  54. package/src/sap/ui/base/DataType.js +14 -8
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Interface.js +1 -1
  58. package/src/sap/ui/base/ManagedObject.js +13 -8
  59. package/src/sap/ui/base/ManagedObjectMetadata.js +2 -2
  60. package/src/sap/ui/base/Metadata.js +1 -3
  61. package/src/sap/ui/base/Object.js +1 -1
  62. package/src/sap/ui/base/ObjectPool.js +1 -1
  63. package/src/sap/ui/core/.library +6 -32
  64. package/src/sap/ui/core/AppCacheBuster.js +8 -8
  65. package/src/sap/ui/core/BusyIndicator.js +1 -1
  66. package/src/sap/ui/core/Component.js +303 -135
  67. package/src/sap/ui/core/ComponentContainer.js +11 -7
  68. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  69. package/src/sap/ui/core/ComponentSupport.js +1 -1
  70. package/src/sap/ui/core/Configuration.js +67 -31
  71. package/src/sap/ui/core/Control.js +2 -2
  72. package/src/sap/ui/core/Core.js +79 -15
  73. package/src/sap/ui/core/CustomData.js +1 -1
  74. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  75. package/src/sap/ui/core/Element.js +2 -6
  76. package/src/sap/ui/core/ElementMetadata.js +1 -1
  77. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  78. package/src/sap/ui/core/EventBus.js +1 -1
  79. package/src/sap/ui/core/ExtensionPoint.js +6 -13
  80. package/src/sap/ui/core/Fragment.js +30 -32
  81. package/src/sap/ui/core/HTML.js +3 -3
  82. package/src/sap/ui/core/History.js +1 -1
  83. package/src/sap/ui/core/Icon.js +7 -8
  84. package/src/sap/ui/core/IconPool.js +26 -1097
  85. package/src/sap/ui/core/IconRenderer.js +6 -6
  86. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  87. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  88. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  89. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  90. package/src/sap/ui/core/InvisibleText.js +1 -1
  91. package/src/sap/ui/core/Item.js +1 -1
  92. package/src/sap/ui/core/LabelEnablement.js +1 -1
  93. package/src/sap/ui/core/LayoutData.js +1 -1
  94. package/src/sap/ui/core/ListItem.js +1 -1
  95. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  96. package/src/sap/ui/core/Locale.js +26 -4
  97. package/src/sap/ui/core/LocaleData.js +3 -3
  98. package/src/sap/ui/core/Manifest.js +2 -60
  99. package/src/sap/ui/core/Message.js +1 -1
  100. package/src/sap/ui/core/Patcher.js +27 -3
  101. package/src/sap/ui/core/Placeholder.js +4 -4
  102. package/src/sap/ui/core/RenderManager.js +38 -8
  103. package/src/sap/ui/core/Renderer.js +13 -3
  104. package/src/sap/ui/core/ResizeHandler.js +1 -1
  105. package/src/sap/ui/core/ScrollBar.js +4 -3
  106. package/src/sap/ui/core/SeparatorItem.js +1 -1
  107. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  108. package/src/sap/ui/core/ThemeCheck.js +2 -2
  109. package/src/sap/ui/core/Title.js +1 -1
  110. package/src/sap/ui/core/TooltipBase.js +1 -1
  111. package/src/sap/ui/core/UIArea.js +3 -3
  112. package/src/sap/ui/core/UIComponent.js +19 -11
  113. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  114. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  115. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  116. package/src/sap/ui/core/XMLComposite.js +2 -2
  117. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  118. package/src/sap/ui/core/XMLTemplateProcessor.js +132 -43
  119. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  120. package/src/sap/ui/core/cache/LRUPersistentCache.js +4 -2
  121. package/src/sap/ui/core/date/UniversalDateUtils.js +33 -0
  122. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  123. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  124. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  125. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  126. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  127. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  128. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  129. package/src/sap/ui/core/hyphenation/Hyphenation.js +61 -80
  130. package/src/sap/ui/core/library.js +5 -5
  131. package/src/sap/ui/core/message/ControlMessageProcessor.js +5 -5
  132. package/src/sap/ui/core/message/Message.js +1 -1
  133. package/src/sap/ui/core/message/MessageManager.js +13 -15
  134. package/src/sap/ui/core/message/MessageParser.js +1 -1
  135. package/src/sap/ui/core/message/MessageProcessor.js +22 -12
  136. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  137. package/src/sap/ui/core/messagebundle_fr.properties +8 -8
  138. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  139. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  140. package/src/sap/ui/core/messagebundle_ru.properties +21 -21
  141. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  142. package/src/sap/ui/core/mvc/Controller.js +5 -5
  143. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  144. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  145. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  146. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  147. package/src/sap/ui/core/mvc/JSView.js +2 -2
  148. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  149. package/src/sap/ui/core/mvc/View.js +58 -85
  150. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  151. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  152. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  153. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  154. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  155. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  156. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  157. package/src/sap/ui/core/routing/Route.js +10 -1
  158. package/src/sap/ui/core/routing/Router.js +16 -6
  159. package/src/sap/ui/core/routing/Targets.js +26 -0
  160. package/src/sap/ui/core/routing/async/Route.js +6 -3
  161. package/src/sap/ui/core/routing/async/Target.js +28 -4
  162. package/src/sap/ui/core/routing/sync/Target.js +15 -0
  163. package/src/sap/ui/core/rules/Misc.support.js +51 -1
  164. package/src/sap/ui/core/rules/Rendering.support.js +1 -4
  165. package/src/sap/ui/core/rules/View.support.js +14 -46
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/Plugin.js +2 -2
  172. package/src/sap/ui/core/support/RuleEngineOpaExtension.js +0 -1
  173. package/src/sap/ui/core/support/Support.js +1 -1
  174. package/src/sap/ui/core/support/controls/TreeViewer.js +1 -1
  175. package/src/sap/ui/core/support/plugins/ControlTree.js +37 -43
  176. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  177. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  178. package/src/sap/ui/core/support/plugins/Performance.js +1 -2
  179. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  180. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  181. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  182. package/src/sap/ui/core/support/plugins/ViewInfo.js +2 -2
  183. package/src/sap/ui/core/support/support.css +2 -8
  184. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  185. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +150 -73
  186. package/src/sap/ui/core/support/trace/E2eTraceLib.js +3 -3
  187. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  188. package/src/sap/ui/core/themes/base/SAP-icons.css +2 -0
  189. package/src/sap/ui/core/themes/base/SAP-icons.less +10 -0
  190. package/src/sap/ui/core/themes/base/base.less +543 -390
  191. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  192. package/src/sap/ui/core/themes/base/global.less +38 -0
  193. package/src/sap/ui/core/themes/base/library.source.less +1 -2
  194. package/src/sap/ui/core/themes/sap_hcb/global.less +34 -0
  195. package/src/sap/ui/core/theming/Parameters.js +21 -0
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +1 -1
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  201. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  202. package/src/sap/ui/core/util/Export.js +1 -1
  203. package/src/sap/ui/core/util/ExportCell.js +1 -1
  204. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  205. package/src/sap/ui/core/util/ExportRow.js +1 -1
  206. package/src/sap/ui/core/util/ExportType.js +1 -1
  207. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  208. package/src/sap/ui/core/util/File.js +1 -1
  209. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  210. package/src/sap/ui/core/util/MockServer.js +2 -2
  211. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  212. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  213. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +10 -12
  214. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +6 -3
  215. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  216. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  217. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  218. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  219. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  220. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  221. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  222. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  223. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  224. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  225. package/src/sap/ui/debug/ControlTree.js +1 -1
  226. package/src/sap/ui/debug/DebugEnv.js +1 -1
  227. package/src/sap/ui/debug/Highlighter.js +8 -2
  228. package/src/sap/ui/debug/PropertyList.js +1 -1
  229. package/src/sap/ui/model/Binding.js +174 -118
  230. package/src/sap/ui/model/ChangeReason.js +1 -1
  231. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  232. package/src/sap/ui/model/ClientListBinding.js +8 -3
  233. package/src/sap/ui/model/ClientModel.js +9 -8
  234. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  235. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  236. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  237. package/src/sap/ui/model/CompositeBinding.js +98 -77
  238. package/src/sap/ui/model/CompositeDataState.js +2 -2
  239. package/src/sap/ui/model/CompositeType.js +2 -2
  240. package/src/sap/ui/model/Context.js +4 -2
  241. package/src/sap/ui/model/ContextBinding.js +6 -14
  242. package/src/sap/ui/model/DataState.js +2 -2
  243. package/src/sap/ui/model/Filter.js +255 -53
  244. package/src/sap/ui/model/FilterOperator.js +1 -1
  245. package/src/sap/ui/model/FilterProcessor.js +27 -17
  246. package/src/sap/ui/model/FilterType.js +1 -1
  247. package/src/sap/ui/model/ListBinding.js +200 -118
  248. package/src/sap/ui/model/MetaModel.js +4 -9
  249. package/src/sap/ui/model/Model.js +349 -303
  250. package/src/sap/ui/model/PropertyBinding.js +92 -58
  251. package/src/sap/ui/model/SelectionModel.js +2 -2
  252. package/src/sap/ui/model/SimpleType.js +2 -2
  253. package/src/sap/ui/model/Sorter.js +1 -1
  254. package/src/sap/ui/model/SorterProcessor.js +1 -1
  255. package/src/sap/ui/model/StaticBinding.js +1 -1
  256. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  257. package/src/sap/ui/model/TreeBinding.js +1 -1
  258. package/src/sap/ui/model/TreeBindingAdapter.js +249 -100
  259. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  260. package/src/sap/ui/model/TreeBindingUtils.js +3 -0
  261. package/src/sap/ui/model/Type.js +1 -1
  262. package/src/sap/ui/model/analytics/AnalyticalBinding.js +20 -10
  263. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +17 -19
  264. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  265. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  266. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  267. package/src/sap/ui/model/analytics/odata4analytics.js +3 -2
  268. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  269. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  270. package/src/sap/ui/model/json/JSONModel.js +29 -20
  271. package/src/sap/ui/model/json/JSONPropertyBinding.js +5 -4
  272. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  273. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  274. package/src/sap/ui/model/message/MessageModel.js +25 -17
  275. package/src/sap/ui/model/message/MessagePropertyBinding.js +3 -3
  276. package/src/sap/ui/model/odata/AnnotationHelper.js +3 -3
  277. package/src/sap/ui/model/odata/AnnotationParser.js +5 -3
  278. package/src/sap/ui/model/odata/CountMode.js +1 -1
  279. package/src/sap/ui/model/odata/Filter.js +1 -1
  280. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  281. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  282. package/src/sap/ui/model/odata/ODataListBinding.js +62 -39
  283. package/src/sap/ui/model/odata/ODataMessageParser.js +3 -3
  284. package/src/sap/ui/model/odata/ODataMetaModel.js +6 -4
  285. package/src/sap/ui/model/odata/ODataMetadata.js +137 -86
  286. package/src/sap/ui/model/odata/ODataModel.js +443 -216
  287. package/src/sap/ui/model/odata/ODataPropertyBinding.js +8 -6
  288. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  289. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +28 -18
  290. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +442 -262
  291. package/src/sap/ui/model/odata/ODataUtils.js +36 -19
  292. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  293. package/src/sap/ui/model/odata/_AnnotationHelperBasics.js +2 -1
  294. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +11 -9
  295. package/src/sap/ui/model/odata/_ODataMetaModelUtils.js +6 -4
  296. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  297. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  298. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  299. package/src/sap/ui/model/odata/type/Date.js +1 -1
  300. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  301. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  303. package/src/sap/ui/model/odata/type/Decimal.js +5 -1
  304. package/src/sap/ui/model/odata/type/Double.js +1 -1
  305. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  306. package/src/sap/ui/model/odata/type/Int.js +1 -1
  307. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  310. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  311. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  312. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  313. package/src/sap/ui/model/odata/type/Single.js +1 -1
  314. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  315. package/src/sap/ui/model/odata/type/String.js +1 -1
  316. package/src/sap/ui/model/odata/type/Time.js +1 -1
  317. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  318. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  319. package/src/sap/ui/model/odata/type/UnitMixin.js +0 -1
  320. package/src/sap/ui/model/odata/v2/Context.js +98 -17
  321. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +2 -2
  322. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +1 -1
  323. package/src/sap/ui/model/odata/v2/ODataListBinding.js +416 -132
  324. package/src/sap/ui/model/odata/v2/ODataModel.js +465 -250
  325. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +191 -109
  326. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +179 -0
  327. package/src/sap/ui/model/odata/v4/Context.js +48 -7
  328. package/src/sap/ui/model/odata/v4/ODataBinding.js +60 -30
  329. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +177 -53
  330. package/src/sap/ui/model/odata/v4/ODataListBinding.js +304 -91
  331. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +32 -20
  332. package/src/sap/ui/model/odata/v4/ODataModel.js +29 -15
  333. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +83 -51
  334. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +13 -9
  335. package/src/sap/ui/model/odata/v4/lib/_Cache.js +115 -19
  336. package/src/sap/ui/model/odata/v4/lib/_Helper.js +35 -5
  337. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +50 -5
  338. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  339. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  340. package/src/sap/ui/model/type/Boolean.js +2 -2
  341. package/src/sap/ui/model/type/Currency.js +2 -2
  342. package/src/sap/ui/model/type/Date.js +9 -3
  343. package/src/sap/ui/model/type/DateInterval.js +4 -2
  344. package/src/sap/ui/model/type/DateTime.js +2 -2
  345. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  346. package/src/sap/ui/model/type/FileSize.js +4 -2
  347. package/src/sap/ui/model/type/Float.js +4 -2
  348. package/src/sap/ui/model/type/Integer.js +4 -2
  349. package/src/sap/ui/model/type/String.js +2 -2
  350. package/src/sap/ui/model/type/Time.js +2 -2
  351. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  352. package/src/sap/ui/model/type/Unit.js +14 -7
  353. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  354. package/src/sap/ui/model/xml/XMLModel.js +74 -45
  355. package/src/sap/ui/model/xml/XMLPropertyBinding.js +5 -5
  356. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  357. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  358. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  359. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  360. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  361. package/src/sap/ui/test/TestUtils.js +11 -4
  362. package/src/sap/ui/test/actions/Action.js +9 -2
  363. package/src/sap/ui/test/actions/Press.js +28 -1
  364. package/src/sap/ui/test/generic/_EnforceSemanticRendering.js +111 -0
  365. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  366. package/src/sap/ui/test/opaQunit.js +5 -0
  367. package/src/sap/ui/thirdparty/IPv6.js +2 -2
  368. package/src/sap/ui/thirdparty/SecondLevelDomains.js +2 -2
  369. package/src/sap/ui/thirdparty/URI.js +14 -5
  370. package/src/sap/ui/thirdparty/URITemplate.js +2 -2
  371. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  372. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  373. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  374. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  375. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  376. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  377. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  380. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  399. package/src/sap/ui/thirdparty/jquery.js +9 -1
  400. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  401. package/src/sap/ui/thirdparty/qunit.js +1 -1
  402. package/src/sap/ui/util/Mobile.js +30 -59
  403. package/src/sap/ui/util/Storage.js +1 -1
  404. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  405. package/src/ui5loader.js +6 -6
  406. package/ui5.yaml +248 -2
  407. package/src/sap/ui/core/CustomizingConfiguration.js +0 -272
  408. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  409. package/src/sap/ui/thirdparty/baseuri.js +0 -1
  410. package/src/sap/ui/thirdparty/es6-object-assign.js +0 -1
  411. package/src/sap/ui/thirdparty/es6-promise.js +0 -1
  412. package/src/sap/ui/thirdparty/es6-shim-nopromise.js +0 -1
  413. package/src/sap/ui/thirdparty/es6-string-methods.js +0 -1
  414. package/src/sap/ui/thirdparty/flexie.js +0 -1
  415. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
  416. package/src/sap/ui/thirdparty/unorm.js +0 -1
  417. package/src/sap/ui/thirdparty/unormdata.js +0 -1
@@ -13,7 +13,8 @@
13
13
  * @name sap.ui.test
14
14
  * @public
15
15
  */
16
-
16
+ // The module ID argument is given because QUnitUtils.js often was included as a script Element in the past.
17
+ // It is now recommended to use it via a module dependency (sap.ui.define).
17
18
  sap.ui.define('sap/ui/qunit/QUnitUtils', [
18
19
  'jquery.sap.global',
19
20
  'sap/base/util/ObjectPath',
@@ -78,7 +79,7 @@ sap.ui.define('sap/ui/qunit/QUnitUtils', [
78
79
  var QUnit = window.QUnit;
79
80
  window.QUnit = undefined;
80
81
  // load the blanket instance
81
- sap.ui.requireSync("sap/ui/thirdparty/blanket");
82
+ sap.ui.requireSync("sap/ui/thirdparty/blanket"); // legacy-relevant
82
83
  // restore the QUnit object
83
84
  window.QUnit = QUnit;
84
85
  // trigger blanket to display the coverage report
@@ -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.94.0
56
+ * @version 1.97.0
57
57
  *
58
58
  * @public
59
59
  * @since 1.48.0
@@ -6,18 +6,16 @@
6
6
 
7
7
  /*global QUnit*/
8
8
 
9
- sap.ui.define([ 'jquery.sap.global', 'sap/ui/core/Element', 'sap/ui/core/Control', 'sap/ui/core/Core' /* provides sap.ui.getCore() */ ],
10
- function(jQuery, Element, Control) {
9
+ sap.ui.define([ 'sap/ui/core/Element', 'sap/ui/core/Control', 'sap/ui/core/Core' /* provides sap.ui.getCore() */ ],
10
+ function(Element, Control) {
11
11
  "use strict";
12
12
 
13
- //TODO: global jquery call found
14
- jQuery.sap.require("sap.ui.qunit.qunit-css");
15
- //TODO: global jquery call found
16
- jQuery.sap.require("sap.ui.thirdparty.qunit");
17
- //TODO: global jquery call found
18
- jQuery.sap.require("sap.ui.qunit.qunit-junit");
19
- //TODO: global jquery call found
20
- jQuery.sap.require("sap.ui.qunit.qunit-coverage");
13
+ if ( typeof QUnit === "undefined" ) {
14
+ sap.ui.requireSync("sap/ui/qunit/qunit-css"); // legacy-relevant - sync fallback when caller did not load QUnit
15
+ sap.ui.requireSync("sap/ui/thirdparty/qunit"); // legacy-relevant - sync fallback when caller did not load QUnit
16
+ sap.ui.requireSync("sap/ui/qunit/qunit-junit"); // legacy-relevant - sync fallback when caller did not load QUnit
17
+ sap.ui.requireSync("sap/ui/qunit/qunit-coverage"); // legacy-relevant - sync fallback when caller did not load QUnit
18
+ }
21
19
 
22
20
  QUnit.config.reorder = false; // make sure results are consistent/stable and the "statistics" test in the end is actually run in the end
23
21
 
@@ -29,7 +27,7 @@ sap.ui.define([ 'jquery.sap.global', 'sap/ui/core/Element', 'sap/ui/core/Control
29
27
  * @namespace
30
28
  *
31
29
  * @author SAP SE
32
- * @version 1.94.0
30
+ * @version 1.97.0
33
31
  *
34
32
  * @public
35
33
  * @since 1.48.0
@@ -272,8 +272,12 @@ sap.ui.define([
272
272
  * The service URL which determines a prefix for all requests the fake server responds to;
273
273
  * it responds with an error for requests not given in the fixture, except DELETE, MERGE,
274
274
  * PATCH, or POST. A missing URL is ignored.
275
+ * @param {boolean} [bStrict]
276
+ * Whether responses are created from the given fixture only, without defaults per method.
277
+ * @returns {object}
278
+ * The SinonJS fake server instance
275
279
  */
276
- useFakeServer : function (oSandbox, sBase, mFixture, aRegExps, sServiceUrl) {
280
+ useFakeServer : function (oSandbox, sBase, mFixture, aRegExps, sServiceUrl, bStrict) {
277
281
  // a map from "method path" incl. service URL to a list of response objects with
278
282
  // properties code, headers, ifMatch and message
279
283
  var aRegexpResponses, mUrlToResponses;
@@ -363,7 +367,8 @@ sap.ui.define([
363
367
 
364
368
  // Logs and returns a response for the given error
365
369
  function error(iCode, oRequest, sMessage) {
366
- Log.error(oRequest.requestLine, sMessage, "sap.ui.test.TestUtils");
370
+ Log.error(oRequest.requestLine || oRequest.method + " " + oRequest.url, sMessage,
371
+ "sap.ui.test.TestUtils");
367
372
 
368
373
  return {
369
374
  code : iCode,
@@ -509,7 +514,7 @@ sap.ui.define([
509
514
  if (oMatch.responses.length > 1) {
510
515
  iAlternative = oMatch.responses.indexOf(oResponse);
511
516
  }
512
- } else {
517
+ } else if (!bStrict) {
513
518
  switch (oRequest.method) {
514
519
  case "HEAD":
515
520
  oResponse = {code : 200};
@@ -711,12 +716,14 @@ sap.ui.define([
711
716
  // must return true if the request is NOT processed by the fake server
712
717
  return !bOurs;
713
718
  });
719
+
720
+ return oServer;
714
721
  }
715
722
 
716
723
  // ensure to always search the fake data in test-resources, remove cache buster token
717
724
  sBase = sap.ui.require.toUrl(sBase)
718
725
  .replace(/(^|\/)resources\/(~[-a-zA-Z0-9_.]*~\/)?/, "$1test-resources/") + "/";
719
- setupServer();
726
+ return setupServer();
720
727
  },
721
728
 
722
729
  /**
@@ -207,9 +207,12 @@ function (ManagedObject, QUnitUtils, Opa5, Device, jQueryDOM, _OpaLogger) {
207
207
  *
208
208
  * @param {string} sName Name of the mouse event
209
209
  * @param {Element} oDomRef DOM element on which the event is going to be triggered
210
+ * @param {boolean} bShiftKey Indicates whether the shift key is down in addition
211
+ * @param {boolean} bAltKey Indicates whether the alt key is down in addition
212
+ * @param {boolean} bCtrlKey Indicates whether the ctrl key is down in addition
210
213
  * @private
211
214
  */
212
- _createAndDispatchMouseEvent: function (sName, oDomRef) {
215
+ _createAndDispatchMouseEvent: function (sName, oDomRef, bShiftKey, bAltKey, bCtrlKey) {
213
216
  // ignore scrolled down stuff (client X, Y not set)
214
217
  // and assume stuff is over the whole screen (screen X, Y not set)
215
218
  // See file jquery.sap.events.js for some insights to the magic
@@ -224,8 +227,12 @@ function (ManagedObject, QUnitUtils, Opa5, Device, jQueryDOM, _OpaLogger) {
224
227
  radiusY: 1,
225
228
  rotationAngle: 0,
226
229
  button: iLeftMouseButtonIndex,
227
- type: sName // include the type so jQuery.event.fixHooks can copy properties properly
230
+ type: sName, // include the type so jQuery.event.fixHooks can copy properties properly
231
+ shiftKey: bShiftKey,
232
+ altKey: bAltKey,
233
+ ctrlKey: bCtrlKey
228
234
  });
235
+
229
236
  oDomRef.dispatchEvent(oMouseEvent);
230
237
  },
231
238
 
@@ -42,6 +42,29 @@ sap.ui.define([
42
42
  var Press = Action.extend("sap.ui.test.actions.Press", /** @lends sap.ui.test.actions.Press.prototype */ {
43
43
 
44
44
  metadata : {
45
+ properties: {
46
+ /**
47
+ * If it is set to <code>true</code>, the Alt Key modifier will be used
48
+ * @since 1.97
49
+ */
50
+ altKey: {
51
+ type: "boolean"
52
+ },
53
+ /**
54
+ * If it is set to <code>true</code>, the Shift Key modifier will be used
55
+ * @since 1.97
56
+ */
57
+ shiftKey: {
58
+ type: "boolean"
59
+ },
60
+ /**
61
+ * If it is set to <code>true</code>, the Control Key modifier will be used
62
+ * @since 1.97
63
+ */
64
+ ctrlKey: {
65
+ type: "boolean"
66
+ }
67
+ },
45
68
  publicMethods : [ "executeOn" ]
46
69
  },
47
70
 
@@ -62,6 +85,10 @@ sap.ui.define([
62
85
  var $ActionDomRef = this.$(oControl),
63
86
  oActionDomRef = $ActionDomRef[0];
64
87
 
88
+ var bAltKey = this.getAltKey();
89
+ var bCtrlKey = this.getCtrlKey();
90
+ var bShiftKey = this.getShiftKey();
91
+
65
92
  if ($ActionDomRef.length) {
66
93
  this.oLogger.timestamp("opa.actions.press");
67
94
  this.oLogger.debug("Pressed the control " + oControl);
@@ -72,7 +99,7 @@ sap.ui.define([
72
99
  this._createAndDispatchMouseEvent("mousedown", oActionDomRef);
73
100
  this.getUtils().triggerEvent("selectstart", oActionDomRef);
74
101
  this._createAndDispatchMouseEvent("mouseup", oActionDomRef);
75
- this._createAndDispatchMouseEvent("click", oActionDomRef);
102
+ this._createAndDispatchMouseEvent("click", oActionDomRef, bShiftKey, bAltKey, bCtrlKey);
76
103
  //Focusout simulation removed in order to fix Press action behavior
77
104
  //since in real scenario manual press action does not fire focusout event
78
105
  }
@@ -0,0 +1,111 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ /* global QUnit */
8
+ sap.ui.define([], function() {
9
+ "use strict";
10
+
11
+ /**
12
+ * @namespace
13
+ * @private
14
+ * @ui5-restricted Only for DIST layer libraries
15
+ */
16
+ var _EnforceSemanticRendering = {
17
+ /**
18
+ * @param {object} mLibInfo Info object containing the library name and an array with excludes
19
+ * @param {string} mLibInfo.library The library name in dot notation, e.g. "sap.ui.core"
20
+ * @param {string[]} mLibInfo.exlcudes An array of control names in dot notation, which are NOT migrated and should be excluded from the test
21
+ * @returns {Promise<undefined>} Returns resovled Promise after all tests are executed
22
+ *
23
+ * @private
24
+ * @ui5-restricted Only for DIST layer libraries
25
+ */
26
+ run : function(mLibInfo) {
27
+ var sLib = mLibInfo.library;
28
+ var aExcludes = mLibInfo.excludes || [];
29
+
30
+ return new Promise(function(res, rej) {
31
+ sap.ui.getCore().loadLibrary(sLib, { async: true }).then(function(library) {
32
+ var aControls = (library && library.controls) || [];
33
+ var aPromises = [];
34
+
35
+ aControls.forEach(function(sClass) {
36
+ // Generate QUnit test for all controls
37
+ aPromises.push(new Promise(function(res, rej) {
38
+ var oInfo = {
39
+ control: sClass
40
+ };
41
+
42
+ var sControlClass = sClass.replace(/\./g, "/");
43
+ sap.ui.require([sControlClass], function(ControlClass) {
44
+ try {
45
+ var oRenderer = ControlClass.getMetadata().getRenderer();
46
+
47
+ if (oRenderer) {
48
+ oInfo.version = Object.prototype.hasOwnProperty.call(oRenderer, "apiVersion") ? oRenderer.apiVersion : 1;
49
+
50
+ if (aExcludes.includes(sClass)) {
51
+ if (oInfo.version == 2) {
52
+ oInfo.wrongExclude = true;
53
+ oInfo.description = "defined in the excludes";
54
+ } else { // version 1
55
+ oInfo.skip = true;
56
+ }
57
+ }
58
+ } else {
59
+ oInfo.description = "No Renderer Class available";
60
+ oInfo.skip = true;
61
+ }
62
+
63
+ } catch (e) {
64
+ oInfo.description = "No Renderer Class available";
65
+ oInfo.skip = true;
66
+ }
67
+
68
+ res(oInfo);
69
+ }, function() {
70
+ oInfo.description = "Control Class could not be loaded";
71
+
72
+ if (aExcludes.includes(sClass)) {
73
+ oInfo.skip = true;
74
+ } // else don't skip if control class is not maintained in excludes
75
+
76
+ res(oInfo);
77
+ });
78
+ }));
79
+ });
80
+
81
+ res(aPromises);
82
+ });
83
+ }).then(function(aPromises) {
84
+ // Add tests
85
+ return new Promise(function(res, rej) {
86
+ Promise.all(aPromises).then(function(aInfo) {
87
+ QUnit.module("EnforceSemanticRendering Tests: " + mLibInfo.library);
88
+
89
+ QUnit.test("library controls loaded", function(assert) {
90
+ assert.ok(aInfo, aInfo.length + " controls loaded");
91
+ });
92
+
93
+ aInfo.forEach(function(oInfo) {
94
+ QUnit[oInfo.skip ? "skip" : "test"](oInfo.control + " " + (oInfo.description || ""), function(assert) {
95
+ if (oInfo.wrongExclude) {
96
+ assert.ok(false, "The control '" + oInfo.control + "' is maintained in the exclude configuration, but its renderer is configured with apiVersion 2.");
97
+ } else {
98
+ assert.equal(oInfo.version, 2, "Semantic Rendering enabled.");
99
+ }
100
+ });
101
+ });
102
+
103
+ res();
104
+ });
105
+ });
106
+ });
107
+ }
108
+ };
109
+
110
+ return _EnforceSemanticRendering;
111
+ });
@@ -13,7 +13,7 @@ sap.ui.define(['sap/ui/test/matchers/Matcher', "sap/base/strings/capitalize"], f
13
13
  * The matcher automatically:
14
14
  * <ul>
15
15
  * <li>
16
- * retrieves the text from the assigned 'i18n' model (name can be changed)
16
+ * retrieves the text from the assigned 'i18n' model (name can be changed) or library resource bundle
17
17
  * </li>
18
18
  * <li>
19
19
  * checks that the I18N key does actually exist in the file
@@ -34,6 +34,9 @@ sap.ui.define(['sap/ui/test/matchers/Matcher', "sap/base/strings/capitalize"], f
34
34
  * }
35
35
  * </code></pre>
36
36
  *
37
+ * As of version 1.95 if the <code>useLibraryBundle</code> flag is set to <code>true</code>, the library resource bundle
38
+ * of the control is used to resolve the i18n key.
39
+ *
37
40
  * @extends sap.ui.test.matchers.Matcher
38
41
  * @param {object} [mSettings] optional map/JSON-object with initial settings for the new I18NText
39
42
  * @public
@@ -70,6 +73,12 @@ sap.ui.define(['sap/ui/test/matchers/Matcher', "sap/base/strings/capitalize"], f
70
73
  modelName: {
71
74
  type: "string",
72
75
  defaultValue: "i18n"
76
+ },
77
+ /**
78
+ * The boolean flag to indicate whether to utiliize the library bundle of the control
79
+ */
80
+ useLibraryBundle: {
81
+ type: "boolean"
73
82
  }
74
83
  }
75
84
  },
@@ -88,6 +97,7 @@ sap.ui.define(['sap/ui/test/matchers/Matcher', "sap/base/strings/capitalize"], f
88
97
  aParameters = this.getParameters(),
89
98
  sModelName = this.getModelName(),
90
99
  oModel = oControl.getModel(sModelName),
100
+ bUseLibraryBundle = this.getUseLibraryBundle(),
91
101
  fnProperty = oControl["get" + capitalize(sPropertyName, 0)];
92
102
 
93
103
  // check model existence
@@ -104,16 +114,24 @@ sap.ui.define(['sap/ui/test/matchers/Matcher', "sap/base/strings/capitalize"], f
104
114
 
105
115
  // check resource bundle
106
116
  var oAppWindow = this._getApplicationWindow();
107
- var oBundle = oModel.getResourceBundle();
108
- if (oBundle instanceof oAppWindow.Promise) {
109
- if (oModel._oResourceBundle instanceof oAppWindow.Object && oModel._oResourceBundle.getText) {
110
- // we access the loaded bundle from the internal variable of the resource model
111
- // ... instead of using the asynchronous promises which is no option for a synchronous matcher
112
- // !!! we have a qunit in place that ensures this internal implementation of the ResourceModel
113
- oBundle = oModel._oResourceBundle;
114
- } else {
115
- this._oLogger.debug("The model '" + sModelName + "' of '" + oControl + "' is in async mode and not loaded yet");
116
- return false;
117
+ var oBundle;
118
+ if (bUseLibraryBundle) {
119
+ var sLibraryName = oControl.getMetadata().getLibraryName();
120
+
121
+ oBundle = sap.ui.getCore().getLibraryResourceBundle(sLibraryName);
122
+ } else {
123
+ oBundle = oModel.getResourceBundle();
124
+
125
+ if (oBundle instanceof oAppWindow.Promise) {
126
+ if (oModel._oResourceBundle instanceof oAppWindow.Object && oModel._oResourceBundle.getText) {
127
+ // we access the loaded bundle from the internal variable of the resource model
128
+ // ... instead of using the asynchronous promises which is no option for a synchronous matcher
129
+ // !!! we have a qunit in place that ensures this internal implementation of the ResourceModel
130
+ oBundle = oModel._oResourceBundle;
131
+ } else {
132
+ this._oLogger.debug("The model '" + sModelName + "' of '" + oControl + "' is in async mode and not loaded yet");
133
+ return false;
134
+ }
117
135
  }
118
136
  }
119
137
 
@@ -16,6 +16,11 @@ sap.ui.define([
16
16
  QUnitPause.setupAfterQUnit();
17
17
 
18
18
  QUnit.begin(function (oDetails) {
19
+ // add ui5 version in the user agent string bar
20
+ if (sap && sap.ui && jQueryDOM('#qunit-userAgent').length > 0) {
21
+ jQueryDOM('#qunit-userAgent')[0].innerText += "; UI5: " + sap.ui.version;
22
+ }
23
+
19
24
  Opa._usageReport.begin({uri: new URI().toString(), totalTests: oDetails.totalTests});
20
25
  });
21
26
 
@@ -2,7 +2,7 @@
2
2
  * URI.js - Mutating URLs
3
3
  * IPv6 Support
4
4
  *
5
- * Version: 1.19.6
5
+ * Version: 1.19.7
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.io/URI.js/
@@ -182,4 +182,4 @@
182
182
  best: bestPresentation,
183
183
  noConflict: noConflict
184
184
  };
185
- }));
185
+ }));
@@ -2,7 +2,7 @@
2
2
  * URI.js - Mutating URLs
3
3
  * Second Level Domain (SLD) Support
4
4
  *
5
- * Version: 1.19.6
5
+ * Version: 1.19.7
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.io/URI.js/
@@ -242,4 +242,4 @@
242
242
  };
243
243
 
244
244
  return SLD;
245
- }));
245
+ }));
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * URI.js - Mutating URLs
3
3
  *
4
- * Version: 1.19.6
4
+ * Version: 1.19.7
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.6';
93
+ URI.version = '1.19.7';
94
94
 
95
95
  var p = URI.prototype;
96
96
  var hasOwn = Object.prototype.hasOwnProperty;
@@ -521,6 +521,9 @@
521
521
  string = string.substring(0, pos);
522
522
  }
523
523
 
524
+ // slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)
525
+ string = string.replace(/^(https?|ftp|wss?)?:[/\\]*/, '$1://');
526
+
524
527
  // extract protocol
525
528
  if (string.substring(0, 2) === '//') {
526
529
  // relative-scheme
@@ -667,7 +670,10 @@
667
670
  // no "=" is null according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#collect-url-parameters
668
671
  value = v.length ? URI.decodeQuery(v.join('='), escapeQuerySpace) : null;
669
672
 
670
- if (hasOwn.call(items, name)) {
673
+ if (name === '__proto__') {
674
+ // ignore attempt at exploiting JavaScript internals
675
+ continue;
676
+ } else if (hasOwn.call(items, name)) {
671
677
  if (typeof items[name] === 'string' || items[name] === null) {
672
678
  items[name] = [items[name]];
673
679
  }
@@ -760,7 +766,10 @@
760
766
  var t = '';
761
767
  var unique, key, i, length;
762
768
  for (key in data) {
763
- if (hasOwn.call(data, key)) {
769
+ if (key === '__proto__') {
770
+ // ignore attempt at exploiting JavaScript internals
771
+ continue;
772
+ } else if (hasOwn.call(data, key)) {
764
773
  if (isArray(data[key])) {
765
774
  unique = {};
766
775
  for (i = 0, length = data[key].length; i < length; i++) {
@@ -2351,4 +2360,4 @@
2351
2360
  };
2352
2361
 
2353
2362
  return URI;
2354
- }));
2363
+ }));
@@ -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.6
5
+ * Version: 1.19.7
6
6
  *
7
7
  * Author: Rodney Rehm
8
8
  * Web: http://medialize.github.io/URI.js/
@@ -513,4 +513,4 @@
513
513
  };
514
514
 
515
515
  return URITemplate;
516
- }));
516
+ }));