@openui5/sap.ui.core 1.125.0 → 1.126.1

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 (464) hide show
  1. package/.dtsgenrc +76 -0
  2. package/.eslintrc.json +4 -1
  3. package/.reuse/dep5 +4 -4
  4. package/THIRDPARTY.txt +6 -6
  5. package/package.json +1 -1
  6. package/src/jquery.sap.global.js +1 -1
  7. package/src/jquery.sap.properties.js +1 -1
  8. package/src/jquery.sap.resources.js +1 -1
  9. package/src/jquery.sap.script.js +1 -1
  10. package/src/jquery.sap.storage.js +3 -3
  11. package/src/sap/base/Event.js +1 -1
  12. package/src/sap/base/Eventing.js +1 -1
  13. package/src/sap/base/Log.js +0 -16
  14. package/src/sap/base/config.js +1 -1
  15. package/src/sap/base/i18n/LanguageTag.js +1 -1
  16. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  17. package/src/sap/base/util/ObjectPath.js +6 -6
  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/ui/Device.js +35 -10
  60. package/src/sap/ui/Global.js +6 -6
  61. package/src/sap/ui/base/Event.js +1 -1
  62. package/src/sap/ui/base/EventProvider.js +1 -1
  63. package/src/sap/ui/base/Interface.js +1 -1
  64. package/src/sap/ui/base/ManagedObject.js +16 -1
  65. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  66. package/src/sap/ui/base/Metadata.js +1 -1
  67. package/src/sap/ui/base/Object.js +1 -1
  68. package/src/sap/ui/base/ObjectPool.js +1 -1
  69. package/src/sap/ui/core/.library +1 -8
  70. package/src/sap/ui/core/BusyIndicator.js +1 -1
  71. package/src/sap/ui/core/Component.js +17 -3
  72. package/src/sap/ui/core/ComponentContainer.js +1 -1
  73. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +1 -1
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +14 -5
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  80. package/src/sap/ui/core/Element.js +1 -1
  81. package/src/sap/ui/core/ElementMetadata.js +1 -1
  82. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  83. package/src/sap/ui/core/EventBus.js +1 -1
  84. package/src/sap/ui/core/Fragment.js +1 -1
  85. package/src/sap/ui/core/HTML.js +1 -1
  86. package/src/sap/ui/core/History.js +1 -1
  87. package/src/sap/ui/core/Icon.js +1 -1
  88. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  89. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  90. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  91. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  92. package/src/sap/ui/core/InvisibleText.js +1 -1
  93. package/src/sap/ui/core/Item.js +1 -1
  94. package/src/sap/ui/core/LabelEnablement.js +1 -1
  95. package/src/sap/ui/core/LayoutData.js +1 -1
  96. package/src/sap/ui/core/Lib.js +2 -2
  97. package/src/sap/ui/core/ListItem.js +1 -1
  98. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  99. package/src/sap/ui/core/Locale.js +1 -1
  100. package/src/sap/ui/core/LocaleData.js +148 -102
  101. package/src/sap/ui/core/Manifest.js +1 -1
  102. package/src/sap/ui/core/Message.js +1 -1
  103. package/src/sap/ui/core/RenderManager.js +1 -1
  104. package/src/sap/ui/core/Renderer.js +1 -1
  105. package/src/sap/ui/core/ResizeHandler.js +1 -1
  106. package/src/sap/ui/core/ScrollBar.js +1 -1
  107. package/src/sap/ui/core/SeparatorItem.js +1 -1
  108. package/src/sap/ui/core/Title.js +1 -1
  109. package/src/sap/ui/core/TooltipBase.js +1 -1
  110. package/src/sap/ui/core/UIArea.js +2 -2
  111. package/src/sap/ui/core/UIComponent.js +1 -1
  112. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  113. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  114. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  115. package/src/sap/ui/core/XMLComposite.js +1 -1
  116. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  117. package/src/sap/ui/core/boot.js +1 -6
  118. package/src/sap/ui/core/date/UI5Date.js +1 -1
  119. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  120. package/src/sap/ui/core/delegate/ScrollEnablement.js +2 -2
  121. package/src/sap/ui/core/dnd/DragAndDrop.js +151 -10
  122. package/src/sap/ui/core/dnd/DragDropBase.js +13 -2
  123. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  124. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  125. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  126. package/src/sap/ui/{model → core/fieldhelp}/FieldHelp.js +92 -65
  127. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +62 -0
  128. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  129. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  130. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  131. package/src/sap/ui/core/hyphenation/Hyphenation.js +2 -1
  132. package/src/sap/ui/core/library.js +49 -9
  133. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  134. package/src/sap/ui/core/message/Message.js +1 -1
  135. package/src/sap/ui/core/message/MessageManager.js +1 -1
  136. package/src/sap/ui/core/message/MessageParser.js +1 -1
  137. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  138. package/src/sap/ui/core/mvc/ControllerExtension.js +16 -0
  139. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  140. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  141. package/src/sap/ui/core/mvc/JSView.js +1 -1
  142. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  143. package/src/sap/ui/core/mvc/View.js +1 -1
  144. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  145. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  146. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  147. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  148. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  149. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  150. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  151. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  152. package/src/sap/ui/core/service/Service.js +1 -1
  153. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  154. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  155. package/src/sap/ui/core/support/Plugin.js +1 -1
  156. package/src/sap/ui/core/support/Support.js +1 -1
  157. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  158. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  159. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  160. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  162. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  163. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  164. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  165. package/src/sap/ui/core/support/trace/E2eTraceLib.js +1 -1
  166. package/src/sap/ui/core/themes/sap_hcb/base_BlindLayer.less +37 -0
  167. package/src/sap/ui/core/themes/sap_hcb/base_BrowserScrollbar.less +36 -0
  168. package/src/sap/ui/core/themes/sap_hcb/base_BusyIndicator.less +19 -0
  169. package/src/sap/ui/core/themes/sap_hcb/base_CommandShortcutHints.less +20 -0
  170. package/src/sap/ui/core/themes/sap_hcb/base_DragAndDrop.less +76 -0
  171. package/src/sap/ui/core/themes/sap_hcb/base_Icon.less +144 -0
  172. package/src/sap/ui/core/themes/sap_hcb/base_LocalBusyIndicator.less +292 -0
  173. package/src/sap/ui/core/themes/sap_hcb/base_SAP-icons.less +10 -0
  174. package/src/sap/ui/core/themes/sap_hcb/base_ScrollBar.less +20 -0
  175. package/src/sap/ui/core/themes/sap_hcb/base_Shadow.less +3 -0
  176. package/src/sap/ui/core/themes/sap_hcb/base_TechnicalInfo.less +157 -0
  177. package/src/sap/ui/core/themes/sap_hcb/base_View.less +12 -0
  178. package/src/sap/ui/core/themes/sap_hcb/base_media.less +36 -0
  179. package/src/sap/ui/core/themes/sap_hcb/base_parameterClasses.less +83 -0
  180. package/src/sap/ui/core/themes/sap_hcb/base_shared.less +340 -0
  181. package/src/sap/ui/core/themes/sap_hcb/library.source.less +27 -1
  182. package/src/sap/ui/core/theming/Parameters.js +68 -8
  183. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  184. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  185. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  186. package/src/sap/ui/core/tmpl/Template.js +1 -1
  187. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  188. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  189. package/src/sap/ui/core/util/Export.js +1 -1
  190. package/src/sap/ui/core/util/ExportCell.js +1 -1
  191. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  192. package/src/sap/ui/core/util/ExportRow.js +1 -1
  193. package/src/sap/ui/core/util/ExportType.js +1 -1
  194. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  195. package/src/sap/ui/core/util/File.js +1 -1
  196. package/src/sap/ui/core/util/LibraryInfo.js +2 -2
  197. package/src/sap/ui/core/util/MockServer.js +1 -2
  198. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  199. package/src/sap/ui/core/util/XMLPreprocessor.js +14 -15
  200. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  201. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  202. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  203. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  204. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  205. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  206. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  207. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  208. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  209. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  210. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  211. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  212. package/src/sap/ui/debug/ControlTree.js +1 -1
  213. package/src/sap/ui/debug/DebugEnv.js +1 -1
  214. package/src/sap/ui/debug/PropertyList.js +1 -1
  215. package/src/sap/ui/model/Binding.js +28 -0
  216. package/src/sap/ui/model/ClientModel.js +1 -1
  217. package/src/sap/ui/model/CompositeDataState.js +1 -1
  218. package/src/sap/ui/model/CompositeType.js +1 -1
  219. package/src/sap/ui/model/DataState.js +1 -1
  220. package/src/sap/ui/model/ManagedObjectBindingSupport.js +5 -0
  221. package/src/sap/ui/model/MetaModel.js +1 -1
  222. package/src/sap/ui/model/Model.js +1 -1
  223. package/src/sap/ui/model/SelectionModel.js +1 -1
  224. package/src/sap/ui/model/SimpleType.js +1 -1
  225. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  226. package/src/sap/ui/model/Type.js +1 -1
  227. package/src/sap/ui/model/base/ManagedObjectModel.js +12 -2
  228. package/src/sap/ui/model/json/JSONModel.js +16 -11
  229. package/src/sap/ui/model/message/MessageModel.js +1 -1
  230. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  231. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  232. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  233. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  234. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  235. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +7 -2
  236. package/src/sap/ui/model/odata/ODataUtils.js +22 -14
  237. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  238. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  239. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  240. package/src/sap/ui/model/odata/type/Date.js +1 -1
  241. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  242. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  243. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  244. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  245. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  246. package/src/sap/ui/model/odata/type/Double.js +1 -1
  247. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  248. package/src/sap/ui/model/odata/type/Int.js +1 -1
  249. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  250. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  251. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  252. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  253. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  254. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  255. package/src/sap/ui/model/odata/type/Single.js +1 -1
  256. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  257. package/src/sap/ui/model/odata/type/String.js +1 -1
  258. package/src/sap/ui/model/odata/type/Time.js +1 -1
  259. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  260. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  261. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  262. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  263. package/src/sap/ui/model/odata/v2/ODataModel.js +1 -1
  264. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  265. package/src/sap/ui/model/odata/v4/Context.js +92 -43
  266. package/src/sap/ui/model/odata/v4/ODataBinding.js +20 -20
  267. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +6 -7
  268. package/src/sap/ui/model/odata/v4/ODataListBinding.js +176 -87
  269. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +9 -9
  270. package/src/sap/ui/model/odata/v4/ODataModel.js +36 -9
  271. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +3 -3
  272. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +12 -11
  273. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +176 -75
  274. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +48 -9
  275. package/src/sap/ui/model/odata/v4/lib/_Cache.js +15 -17
  276. package/src/sap/ui/model/odata/v4/lib/_Helper.js +49 -14
  277. package/src/sap/ui/model/odata/v4/lib/_Parser.js +3 -3
  278. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +20 -12
  279. package/src/sap/ui/model/odata/v4/lib/_V2MetadataConverter.js +2 -2
  280. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +3 -3
  281. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  282. package/src/sap/ui/model/type/Boolean.js +1 -1
  283. package/src/sap/ui/model/type/Currency.js +1 -1
  284. package/src/sap/ui/model/type/Date.js +1 -1
  285. package/src/sap/ui/model/type/DateInterval.js +1 -1
  286. package/src/sap/ui/model/type/DateTime.js +1 -1
  287. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  288. package/src/sap/ui/model/type/FileSize.js +1 -1
  289. package/src/sap/ui/model/type/Float.js +1 -1
  290. package/src/sap/ui/model/type/Integer.js +1 -1
  291. package/src/sap/ui/model/type/String.js +1 -1
  292. package/src/sap/ui/model/type/Time.js +1 -1
  293. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  294. package/src/sap/ui/model/type/Unit.js +1 -1
  295. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  296. package/src/sap/ui/performance/trace/FESR.js +2 -2
  297. package/src/sap/ui/performance/trace/Interaction.js +1 -1
  298. package/src/sap/ui/performance/trace/Passport.js +1 -1
  299. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  300. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  301. package/src/sap/ui/test/generic/TestBase.js +1 -1
  302. package/src/sap/ui/test/starter/_utils.js +18 -3
  303. package/src/sap/ui/util/Mobile.js +7 -4
  304. package/src/sap/ui/util/Storage.js +1 -1
  305. package/src/ui5loader-autoconfig.js +0 -25
  306. package/test/sap/ui/core/BindableResponseHeaders.html +1 -2
  307. package/test/sap/ui/core/ODataV2CanonicalRequests.html +8 -5
  308. package/test/sap/ui/core/ODataV2Messages.html +14 -11
  309. package/test/sap/ui/core/ODataV2MessagesPerf.html +34 -9
  310. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
  311. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.html +2 -1
  312. package/test/sap/ui/core/demokit/sample/OpaStartup/iStartMyAppInAFrame/iStartMyAppInAFrame.js +2 -12
  313. package/test/sap/ui/core/demokit/sample/common/Controller.js +2 -2
  314. package/test/sap/ui/core/demokit/sample/common/ValueHelp.js +2 -2
  315. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  316. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  317. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  318. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  319. package/test/sap/ui/core/demokit/sample/odata/v4/GridTable/SandboxModel.js +6 -6
  320. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +110 -21
  321. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +35 -43
  322. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +118 -26
  323. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +99 -90
  324. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +87 -40
  325. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/pages/Main.js +4 -3
  326. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Component.js +18 -0
  327. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/tests/CreateRelative.js +1 -8
  328. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersRTATest/Main.controller.js +1 -2
  329. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  330. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  331. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  332. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  333. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  334. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  335. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  336. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  337. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  338. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  339. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  340. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  341. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  342. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  343. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  344. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  345. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  346. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  347. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  348. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  349. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  350. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  351. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  352. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  353. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  354. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  355. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  356. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  357. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  358. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  359. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  360. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  361. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  362. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  363. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  364. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  365. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  366. package/test/sap/ui/core/demokit/tutorial/odatav4/01/webapp/localService/mockserver.js +4 -4
  367. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  368. package/test/sap/ui/core/demokit/tutorial/odatav4/02/webapp/localService/mockserver.js +4 -4
  369. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  370. package/test/sap/ui/core/demokit/tutorial/odatav4/03/webapp/localService/mockserver.js +4 -4
  371. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  372. package/test/sap/ui/core/demokit/tutorial/odatav4/04/webapp/localService/mockserver.js +4 -4
  373. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  374. package/test/sap/ui/core/demokit/tutorial/odatav4/05/webapp/localService/mockserver.js +4 -4
  375. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  376. package/test/sap/ui/core/demokit/tutorial/odatav4/06/webapp/localService/mockserver.js +4 -4
  377. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  378. package/test/sap/ui/core/demokit/tutorial/odatav4/07/webapp/localService/mockserver.js +4 -4
  379. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  380. package/test/sap/ui/core/demokit/tutorial/odatav4/08/webapp/localService/mockserver.js +4 -4
  381. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  382. package/test/sap/ui/core/demokit/tutorial/odatav4/09/webapp/localService/mockserver.js +4 -4
  383. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  384. package/test/sap/ui/core/demokit/tutorial/odatav4/10/webapp/localService/mockserver.js +4 -4
  385. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  386. package/test/sap/ui/core/demokit/tutorial/odatav4/11/webapp/localService/mockserver.js +4 -4
  387. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  388. package/test/sap/ui/core/internal/samples/odata/v2/TreeTable/Main.view.xml +3 -3
  389. package/test/sap/ui/core/qunit/CommandExecution.qunit.js +96 -92
  390. package/test/sap/ui/core/qunit/ManagedObjectModel.qunit.js +24 -0
  391. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +80 -0
  392. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +1 -0
  393. package/test/sap/ui/core/qunit/analytics/AnalyticalBinding.qunit.js +1 -1
  394. package/test/sap/ui/core/qunit/app/testsuite.app.qunit.js +2 -1
  395. package/test/sap/ui/core/qunit/base/Config.qunit.js +117 -114
  396. package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.html +3 -3
  397. package/test/sap/ui/core/qunit/base/Config_bootstrap.qunit.js +98 -95
  398. package/test/sap/ui/core/qunit/base/Config_cascade.qunit.js +20 -45
  399. package/test/sap/ui/core/qunit/base/Config_global.qunit.html +2 -2
  400. package/test/sap/ui/core/qunit/base/Config_meta.qunit.html +2 -2
  401. package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.html +2 -2
  402. package/test/sap/ui/core/qunit/base/Config_noUrl.qunit.js +17 -16
  403. package/test/sap/ui/core/qunit/base/Config_url.qunit.html +2 -2
  404. package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.beforeBootstrap.js +6 -0
  405. package/test/sap/ui/core/qunit/bootstrap/BootstrapMainModule.qunit.js +4 -4
  406. package/test/sap/ui/core/qunit/bootstrap/BootstrapMinimal.qunit.js +30 -10
  407. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +5 -1
  408. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +159 -3
  409. package/test/sap/ui/core/qunit/{model → fieldhelp}/FieldHelp.qunit.js +306 -24
  410. package/test/sap/ui/core/qunit/fieldhelp/FieldHelpUtil.qunit.js +55 -0
  411. package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.html +12 -0
  412. package/test/sap/ui/core/qunit/fieldhelp/testsuite.fieldhelp.qunit.js +50 -0
  413. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.html +1 -1
  414. package/test/sap/ui/core/qunit/internal/1RingModels.qunit.js +6 -1
  415. package/test/sap/ui/core/qunit/internal/testsuite.feature-odata-v4.qunit.js +1 -1
  416. package/test/sap/ui/core/qunit/jquery-mobile-custom.beforeBootstrap.js +11 -0
  417. package/test/sap/ui/core/qunit/jquery-mobile-custom.qunit.js +3 -3
  418. package/test/sap/ui/core/qunit/json/JSONModel.qunit.js +21 -0
  419. package/test/sap/ui/core/qunit/loader/asyncMode.qunit.js +2 -6
  420. package/test/sap/ui/core/qunit/loader/config.qunit.js +41 -2
  421. package/test/sap/ui/core/qunit/mvc/testsuite.mvc.qunit.js +9 -4
  422. package/test/sap/ui/core/qunit/odata/ODataUtils.qunit.js +5 -12
  423. package/test/sap/ui/core/qunit/odata/type/testsuite.odata.types.qunit.js +1 -0
  424. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +202 -73
  425. package/test/sap/ui/core/qunit/odata/v2/ODataTreeBindingFlatNoFakeService.qunit.js +94 -2
  426. package/test/sap/ui/core/qunit/odata/v2/data/ZUI5_GWSAMPLE_BASIC.metadata.xml +4 -0
  427. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +106 -103
  428. package/test/sap/ui/core/qunit/odata/v4/ODataBinding.qunit.js +3 -3
  429. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +20 -20
  430. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +370 -109
  431. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +42 -42
  432. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +2260 -177
  433. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +39 -7
  434. package/test/sap/ui/core/qunit/odata/v4/ODataModel.realOData.qunit.js +7 -6
  435. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +13 -14
  436. package/test/sap/ui/core/qunit/odata/v4/_AnnotationHelperExpression.qunit.js +3 -3
  437. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +592 -169
  438. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +82 -2
  439. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +44 -47
  440. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +80 -20
  441. package/test/sap/ui/core/qunit/odata/v4/lib/_MetadataRequestor.qunit.js +2 -2
  442. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +175 -69
  443. package/test/sap/ui/core/qunit/odata/v4/lib/_V2Requestor.qunit.js +3 -3
  444. package/test/sap/ui/core/qunit/odata/v4/testsuite.odatav4.qunit.js +1 -1
  445. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +9 -7
  446. package/test/sap/ui/core/qunit/rule/testsuite.rule.qunit.js +6 -1
  447. package/test/sap/ui/core/qunit/testdata/libraries/themeParameters/lib4/themes/sap_horizon_hcb/library.css +2 -0
  448. package/test/sap/ui/core/qunit/testsuite.qunit.js +1 -0
  449. package/test/sap/ui/core/qunit/testsuites/testsuite.browser.runtime.qunit.js +5 -1
  450. package/test/sap/ui/core/qunit/testsuites/testsuite.databinding.qunit.js +0 -3
  451. package/test/sap/ui/core/qunit/testsuites/testsuite.theming.qunit.js +4 -1
  452. package/test/sap/ui/core/qunit/ui/Device.qunit.js +68 -25
  453. package/test/sap/ui/core/qunit/ui5classes/ManagedObjectMetadata.qunit.js +3 -0
  454. package/test/sap/ui/core/qunit/util/Mobile.qunit.js +12 -7
  455. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +20 -20
  456. package/test/sap/ui/core/relnotes/changes-1.125.json +1 -6
  457. package/test/sap/ui/core/relnotes/changes-1.126.json +63 -0
  458. package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
  459. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/firstItem-contextMenu.ref.lnk +1 -1
  460. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/initial.ref.lnk +1 -1
  461. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/lastItem-contextMenu.ref.lnk +1 -1
  462. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/leftDownBtn-contextMenu.ref.lnk +1 -1
  463. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/myButtonSample-contextMenu.ref.lnk +1 -1
  464. package/test/sap/ui/core/visual/images/ContextMenuSupport/windows/1600x1200/chrome/horizon/ltr/cozy/rightDownBtn-contextMenu.ref.lnk +1 -1
@@ -4592,104 +4592,83 @@ sap.ui.define([
4592
4592
  //*********************************************************************************************
4593
4593
  [false, true].forEach(function (bIsHeaderContext) {
4594
4594
  [false, true].forEach(function (bHasChangeListeners) {
4595
+ [false, true].forEach(function (bRowsChanged) {
4596
+ [false, true].forEach(function (bSelectionChanged) {
4595
4597
  if (!bIsHeaderContext && bHasChangeListeners) {
4596
4598
  return; // unrealistic
4597
4599
  }
4600
+ if (bRowsChanged && !bSelectionChanged) {
4601
+ return;
4602
+ }
4598
4603
  const sTitle = `setSelected: is header context=${bIsHeaderContext},
4599
- with change listeners=${bHasChangeListeners}`;
4604
+ with change listeners=${bHasChangeListeners} and rows' selection state
4605
+ has changed=${bRowsChanged}`;
4600
4606
 
4601
4607
  QUnit.test(sTitle, function () {
4602
- const oBinding = {getHeaderContext : mustBeMocked, _getAllExistingContexts : mustBeMocked};
4608
+ const oBinding = {
4609
+ fireSelectionChanged : mustBeMocked,
4610
+ getHeaderContext : mustBeMocked,
4611
+ _getAllExistingContexts : mustBeMocked
4612
+ };
4603
4613
  // Note: oBinding is optional, it might already be missing in certain cases!
4604
4614
  const oContext = Context.create({/*oModel*/}, oBinding, "/some/path", 42);
4605
4615
 
4606
4616
  if (bHasChangeListeners) {
4607
4617
  oContext.mChangeListeners = "~mChangeListeners~";
4608
4618
  }
4609
- this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
4610
4619
  this.mock(oBinding).expects("getHeaderContext").returns(bIsHeaderContext ? oContext : null);
4620
+ this.stub(oContext, "toString"); // called by SinonJS, would call #isDeleted :-(
4621
+ this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
4611
4622
  if (bIsHeaderContext) {
4612
4623
  const aRowContexts = [
4613
- {setSelected : mustBeMocked},
4614
- {setSelected : mustBeMocked}
4624
+ {doSetSelected : mustBeMocked},
4625
+ {doSetSelected : mustBeMocked}
4615
4626
  ];
4616
4627
  this.mock(oBinding).expects("_getAllExistingContexts").withExactArgs()
4617
4628
  .returns(aRowContexts);
4618
4629
  aRowContexts.forEach((oRowContext) => {
4619
- this.mock(oRowContext).expects("setSelected").withExactArgs("~selected~");
4630
+ this.mock(oRowContext).expects("doSetSelected")
4631
+ .withExactArgs("~selected~")
4632
+ .returns(bRowsChanged);
4620
4633
  });
4621
4634
  }
4622
- this.mock(_Helper).expects("fireChange").exactly(bHasChangeListeners ? 1 : 0)
4635
+ this.mock(oContext).expects("doSetSelected")
4636
+ .withExactArgs("~selected~")
4637
+ .returns(bSelectionChanged);
4638
+ this.mock(_Helper).expects("fireChange")
4639
+ .exactly((bSelectionChanged && bHasChangeListeners) ? 1 : 0)
4623
4640
  .withExactArgs("~mChangeListeners~", "", "~selected~");
4624
- this.mock(oContext).expects("withCache")
4625
- .withExactArgs(sinon.match.func, "")
4626
- .callsFake((fnProcessor) => {
4627
- const oCache = {setProperty : mustBeMocked};
4628
- this.mock(oCache).expects("setProperty")
4629
- .withExactArgs("@$ui5.context.isSelected", "~selected~", "~sPath~");
4630
-
4631
- return fnProcessor(oCache, "~sPath~");
4632
- });
4633
- this.mock(oContext).expects("doSetSelected").withExactArgs("~selected~");
4641
+ this.mock(oContext.oBinding).expects("fireSelectionChanged")
4642
+ .exactly((bSelectionChanged || bRowsChanged) ? 1 : 0)
4643
+ .withExactArgs(sinon.match.same(oContext));
4634
4644
 
4635
4645
  // code under test
4636
4646
  oContext.setSelected("~selected~");
4637
4647
  });
4648
+ });
4649
+ });
4638
4650
  });
4639
4651
  });
4640
4652
 
4641
4653
  //*********************************************************************************************
4642
4654
  QUnit.test("setSelected: binding destroyed", function () {
4643
4655
  const oBinding = {
4656
+ fireSelectionChanged : mustBeMocked,
4644
4657
  getHeaderContext : mustBeMocked
4645
4658
  };
4646
4659
  const oContext = Context.create({/*oModel*/}, oBinding, "/some/path", 42);
4647
4660
 
4661
+ this.stub(oContext, "toString"); // called by SinonJS, would call #isDeleted :-(
4648
4662
  this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
4649
4663
  this.mock(oBinding).expects("getHeaderContext").returns(undefined);
4650
- this.mock(oContext).expects("withCache")
4651
- .withExactArgs(sinon.match.func, "")
4652
- .callsFake((fnProcessor) => {
4653
- oContext.oBinding = undefined;
4654
-
4655
- return fnProcessor({}, "~sPath~");
4656
- });
4657
- this.mock(oContext).expects("doSetSelected").withExactArgs(true);
4664
+ this.mock(oContext).expects("doSetSelected").withExactArgs(true).returns(true);
4665
+ this.mock(oContext.oBinding).expects("fireSelectionChanged")
4666
+ .withExactArgs(sinon.match.same(oContext));
4658
4667
 
4659
4668
  // code under test - binding destroyed
4660
4669
  oContext.setSelected(true);
4661
4670
  });
4662
4671
 
4663
- //*********************************************************************************************
4664
- QUnit.test("setSelected: flag already set", function () {
4665
- const oBinding = {
4666
- getHeaderContext : mustBeMocked,
4667
- onKeepAliveChanged : mustBeMocked
4668
- };
4669
- const oContext = Context.create({/*oModel*/}, oBinding, "/some/path", 42);
4670
-
4671
- oContext.mChangeListeners = "~mChangeListeners~";
4672
- this.mock(oContext).expects("isDeleted").twice().withExactArgs().returns(false);
4673
- this.mock(oBinding).expects("getHeaderContext").twice().returns(undefined);
4674
- this.mock(_Helper).expects("fireChange").withExactArgs("~mChangeListeners~", "", true);
4675
- this.mock(oContext).expects("withCache")
4676
- .withExactArgs(sinon.match.func, "")
4677
- .callsFake((fnProcessor) => {
4678
- const oCache = {setProperty : mustBeMocked};
4679
- this.mock(oCache).expects("setProperty")
4680
- .withExactArgs("@$ui5.context.isSelected", true, "~sPath~");
4681
-
4682
- return fnProcessor(oCache, "~sPath~");
4683
- });
4684
- this.mock(oBinding).expects("onKeepAliveChanged").twice().withExactArgs(oContext);
4685
-
4686
- // code under test
4687
- oContext.setSelected(true);
4688
-
4689
- // code under test
4690
- oContext.setSelected(true);
4691
- });
4692
-
4693
4672
  //*********************************************************************************************
4694
4673
  QUnit.test("setSelected: error handling", function (assert) {
4695
4674
  const oBinding = {
@@ -4714,34 +4693,80 @@ sap.ui.define([
4714
4693
  });
4715
4694
 
4716
4695
  //*********************************************************************************************
4717
- QUnit.test("doSetSelected", function (assert) {
4696
+ [true, false].forEach(function (bDoNotUpdateAnnotation) {
4697
+ const sTitle = "doSetSelected, binding is missing, update Annotation: "
4698
+ + !bDoNotUpdateAnnotation;
4699
+
4700
+ QUnit.test(sTitle, function (assert) {
4718
4701
  // Note: oBinding is optional, it might already be missing in certain cases!
4719
- let oContext = Context.create({/*oModel*/}, /*oBinding*/undefined, "/some/path", 42);
4702
+ const oContext = Context.create({/*oModel*/}, /*oBinding*/undefined, "/some/path", 42);
4720
4703
 
4721
4704
  // code under test
4722
4705
  assert.strictEqual(oContext.isSelected(), false);
4723
4706
 
4707
+ const oContextMock = this.mock(oContext);
4708
+ oContextMock.expects("withCache").exactly(bDoNotUpdateAnnotation ? 0 : 1)
4709
+ .withExactArgs(sinon.match.func, "")
4710
+ .callsFake((fnProcessor) => {
4711
+ const oCache = {setProperty : mustBeMocked};
4712
+ this.mock(oCache).expects("setProperty").never();
4713
+
4714
+ return fnProcessor(oCache, "/some/path");
4715
+ });
4716
+
4724
4717
  // code under test
4725
- oContext.doSetSelected(true);
4718
+ assert.strictEqual(oContext.doSetSelected(true, bDoNotUpdateAnnotation), true);
4726
4719
 
4727
4720
  assert.strictEqual(oContext.isSelected(), true);
4728
4721
 
4729
4722
  // code under test
4730
4723
  assert.strictEqual(oContext.toString(), "/some/path[42;selected]");
4731
4724
 
4725
+ oContextMock.expects("withCache").never();
4726
+
4732
4727
  // code under test
4733
- oContext.doSetSelected(false);
4728
+ assert.strictEqual(oContext.doSetSelected(true, bDoNotUpdateAnnotation), false);
4729
+
4730
+ oContextMock.expects("withCache").exactly(bDoNotUpdateAnnotation ? 0 : 1)
4731
+ .withExactArgs(sinon.match.func, "")
4732
+ .callsFake((fnProcessor) => {
4733
+ const oCache = {setProperty : mustBeMocked};
4734
+ this.mock(oCache).expects("setProperty").never();
4735
+
4736
+ return fnProcessor(oCache, "/some/path");
4737
+ });
4738
+
4739
+ // code under test
4740
+ assert.strictEqual(oContext.doSetSelected(false, bDoNotUpdateAnnotation), true);
4734
4741
 
4735
4742
  assert.strictEqual(oContext.isSelected(), false);
4736
4743
 
4737
4744
  // code under test
4738
4745
  assert.strictEqual(oContext.toString(), "/some/path[42]");
4746
+ });
4747
+ });
4748
+
4749
+ //*********************************************************************************************
4750
+ [true, false].forEach(function (bDoNotUpdateAnnotation) {
4751
+ const sTitle = "doSetSelected, context has binding, update Annotation: "
4752
+ + !bDoNotUpdateAnnotation;
4739
4753
 
4740
- oContext = Context.create({/*oModel*/}, {
4754
+ QUnit.test(sTitle, function (assert) {
4755
+ const oContext = Context.create({/*oModel*/}, {
4741
4756
  getHeaderContext : true,
4742
4757
  onKeepAliveChanged : function () {}
4743
4758
  }, "/some/path", 42);
4744
4759
 
4760
+ this.mock(oContext).expects("withCache").exactly(bDoNotUpdateAnnotation ? 0 : 1)
4761
+ .withExactArgs(sinon.match.func, "")
4762
+ .callsFake((fnProcessor) => {
4763
+ const oCache = {setProperty : mustBeMocked};
4764
+ this.mock(oCache).expects("setProperty")
4765
+ .withExactArgs("@$ui5.context.isSelected", "~selected~", "/some/path");
4766
+
4767
+ return fnProcessor(oCache, "/some/path");
4768
+ });
4769
+
4745
4770
  this.mock(oContext.oBinding).expects("onKeepAliveChanged")
4746
4771
  .withExactArgs(sinon.match.same(oContext))
4747
4772
  .callsFake(function () {
@@ -4749,8 +4774,9 @@ sap.ui.define([
4749
4774
  });
4750
4775
 
4751
4776
  // code under test
4752
- oContext.doSetSelected("~selected~");
4777
+ assert.strictEqual(oContext.doSetSelected("~selected~", bDoNotUpdateAnnotation), true);
4753
4778
  });
4779
+ });
4754
4780
 
4755
4781
  //*********************************************************************************************
4756
4782
  QUnit.test("isEffectivelyKeptAlive: explicitly", function (assert) {
@@ -4965,58 +4991,35 @@ sap.ui.define([
4965
4991
  });
4966
4992
 
4967
4993
  //*********************************************************************************************
4968
- [-2, +2, -3, +3, 0].forEach((iOffset) => {
4969
- QUnit.test(`requestSibling: unsupported offset ${iOffset}`, function (assert) {
4970
- const oContext = Context.create({/*oModel*/}, {/*oBinding*/}, "/EMPLOYEES('42')", 42);
4971
-
4972
- assert.throws(function () {
4973
- // code under test
4974
- oContext.requestSibling(iOffset);
4975
- }, new Error("Unsupported offset: " + iOffset));
4976
- });
4977
- });
4978
-
4979
- //*********************************************************************************************
4980
- QUnit.test("requestSibling: deleted/transient", function (assert) {
4981
- const oContext = Context.create({/*oModel*/}, {/*oBinding*/}, "/EMPLOYEES('42')", 42);
4982
- // also called by SinonJS, would call #isDeleted etc. :-(
4983
- oContext.toString = function () { return "~toString~"; };
4984
- const oContextMock = this.mock(oContext);
4985
- oContextMock.expects("isDeleted").withExactArgs().returns(true);
4986
- oContextMock.expects("isTransient").never();
4987
-
4988
- assert.throws(function () {
4989
- // code under test
4990
- oContext.requestSibling();
4991
- }, new Error("Unsupported context: ~toString~"));
4992
-
4993
- oContextMock.expects("isDeleted").withExactArgs().returns(false);
4994
- oContextMock.expects("isTransient").withExactArgs().returns(true);
4994
+ QUnit.test("getSibling", function (assert) {
4995
+ const oBinding = {
4996
+ fetchOrGetSibling : mustBeMocked
4997
+ };
4998
+ const oContext = Context.create({/*oModel*/}, oBinding, "/EMPLOYEES('42')", 42);
4999
+ this.mock(oBinding).expects("fetchOrGetSibling")
5000
+ .withExactArgs(sinon.match.same(oContext), "~offset~")
5001
+ .returns("~result~");
4995
5002
 
4996
- assert.throws(function () {
4997
- // code under test
4998
- oContext.requestSibling();
4999
- }, new Error("Unsupported context: ~toString~"));
5003
+ // code under test
5004
+ assert.strictEqual(oContext.getSibling("~offset~"), "~result~");
5000
5005
  });
5001
5006
 
5002
5007
  //*********************************************************************************************
5003
- [{in : undefined, out : +1}, {in : +1, out : +1}, {in : -1, out : -1}].forEach((oFixture, i) => {
5004
- QUnit.test("requestSibling: #" + i, function (assert) {
5008
+ QUnit.test("requestSibling", async function (assert) {
5005
5009
  const oBinding = {
5006
- requestSibling : mustBeMocked
5010
+ fetchOrGetSibling : mustBeMocked
5007
5011
  };
5008
5012
  const oContext = Context.create({/*oModel*/}, oBinding, "/EMPLOYEES('42')", 42);
5009
- // also called by SinonJS, would call #isDeleted etc. :-(
5010
- oContext.toString = function () { return "n/a"; };
5011
- this.mock(oContext).expects("isDeleted").withExactArgs().returns(false);
5012
- this.mock(oContext).expects("isTransient").withExactArgs().returns(false);
5013
- this.mock(oBinding).expects("requestSibling")
5014
- .withExactArgs(sinon.match.same(oContext), oFixture.out).returns("~result~");
5013
+ this.mock(oBinding).expects("fetchOrGetSibling")
5014
+ .withExactArgs(sinon.match.same(oContext), "~offset~", true)
5015
+ .returns("~result~");
5015
5016
 
5016
5017
  // code under test
5017
- assert.strictEqual(oContext.requestSibling(oFixture.in), "~result~");
5018
+ const oPromise = oContext.requestSibling("~offset~");
5019
+
5020
+ assert.ok(oPromise instanceof Promise);
5021
+ assert.strictEqual(await oPromise, "~result~");
5018
5022
  });
5019
- });
5020
5023
 
5021
5024
  //*********************************************************************************************
5022
5025
  [0, 1].forEach(function (iFailureIndex) {
@@ -3100,7 +3100,7 @@ sap.ui.define([
3100
3100
  });
3101
3101
 
3102
3102
  //*********************************************************************************************
3103
- QUnit.test("assertSameCache", function (assert) {
3103
+ QUnit.test("checkSameCache", function (assert) {
3104
3104
  var oBinding = new ODataBinding({
3105
3105
  oCache : {}
3106
3106
  }),
@@ -3108,10 +3108,10 @@ sap.ui.define([
3108
3108
  toString : function () { return "~"; }
3109
3109
  };
3110
3110
 
3111
- oBinding.assertSameCache(oBinding.oCache);
3111
+ oBinding.checkSameCache(oBinding.oCache);
3112
3112
 
3113
3113
  try {
3114
- oBinding.assertSameCache(oCache);
3114
+ oBinding.checkSameCache(oCache);
3115
3115
  assert.ok(false);
3116
3116
  } catch (oError) {
3117
3117
  assert.strictEqual(oError.message,
@@ -862,7 +862,7 @@ sap.ui.define([
862
862
  .withExactArgs(sinon.match.same(oGroupLock), "foo", sinon.match.func, undefined)
863
863
  .callsArg(2)
864
864
  .returns(SyncPromise.resolve(Promise.resolve()).then(function () {
865
- that.mock(oBinding).expects("assertSameCache")
865
+ that.mock(oBinding).expects("checkSameCache")
866
866
  .withExactArgs(sinon.match.same(oCache))
867
867
  .throws(oError);
868
868
  return {};
@@ -1102,7 +1102,7 @@ sap.ui.define([
1102
1102
  this.mock(oCache).expects("fetchValue")
1103
1103
  .withExactArgs(sinon.match.same(_GroupLock.$cached), "bar", sinon.match.func, null)
1104
1104
  .returns(SyncPromise.resolve(42));
1105
- this.mock(oBinding).expects("assertSameCache").withExactArgs(oCache);
1105
+ this.mock(oBinding).expects("checkSameCache").withExactArgs(oCache);
1106
1106
 
1107
1107
  // code under test
1108
1108
  return oBinding.fetchValue("/absolute/bar", null, true).then(function (vResult) {
@@ -1141,7 +1141,7 @@ sap.ui.define([
1141
1141
  this.mock(oCache).expects("fetchValue")
1142
1142
  .withExactArgs(sinon.match.same(oGroupLock), "bar", sinon.match.func, undefined)
1143
1143
  .returns(SyncPromise.resolve(42));
1144
- this.mock(oBinding).expects("assertSameCache").withExactArgs(oCache);
1144
+ this.mock(oBinding).expects("checkSameCache").withExactArgs(oCache);
1145
1145
 
1146
1146
  // code under test
1147
1147
  return oBinding.fetchValue("/absolute/bar").then(function (vResult) {
@@ -1678,8 +1678,8 @@ sap.ui.define([
1678
1678
  // code under test: invoke creates a new cache with the new path
1679
1679
  return oBinding.setParameter("foo", "bar")
1680
1680
  ._invoke(oGroupLock1, "~mParameters~", "~bIgnoreETag~")
1681
- .then(function (oReturnValueContext) {
1682
- assert.strictEqual(oReturnValueContext, undefined);
1681
+ .then(function (oReturnValueContext0) {
1682
+ assert.strictEqual(oReturnValueContext0, undefined);
1683
1683
  if (oExpectation) {
1684
1684
  assert.strictEqual(oExpectation.args[0][4](), oEntity);
1685
1685
  }
@@ -2018,8 +2018,8 @@ sap.ui.define([
2018
2018
  this.mock(this.oModel).expects("reportError")
2019
2019
  .withExactArgs("Failed to invoke /TEAMS('42')/name.space.Operation(...)",
2020
2020
  sClassName, sinon.match.same(oError))
2021
- .callsFake(function (_sLogMessage, _sReportingClassName, oError) {
2022
- assert.strictEqual(oError.resourcePath, "~"); // unchanged
2021
+ .callsFake(function (_sLogMessage, _sReportingClassName, oError0) {
2022
+ assert.strictEqual(oError0.resourcePath, "~"); // unchanged
2023
2023
  });
2024
2024
 
2025
2025
  // code under test
@@ -2071,8 +2071,8 @@ sap.ui.define([
2071
2071
  this.mock(this.oModel).expects("reportError")
2072
2072
  .withExactArgs("Failed to invoke /ActionImport(...)",
2073
2073
  sClassName, sinon.match.same(oError))
2074
- .callsFake(function (_sLogMessage, _sReportingClassName, oError) {
2075
- assert.strictEqual(oError.resourcePath, "~"); // unchanged
2074
+ .callsFake(function (_sLogMessage, _sReportingClassName, oError0) {
2075
+ assert.strictEqual(oError0.resourcePath, "~"); // unchanged
2076
2076
  });
2077
2077
 
2078
2078
  // code under test
@@ -3090,8 +3090,8 @@ sap.ui.define([
3090
3090
  .withExactArgs(sinon.match.same(oError), sinon.match.same(oOperationMetadata), "~Path~",
3091
3091
  bRelative ? "~contextPath~" : undefined);
3092
3092
  this.mock(_Helper).expects("extractMessages")
3093
- .withExactArgs(sinon.match(function (oError) {
3094
- return oError.error.$ignoreTopLevel === true;
3093
+ .withExactArgs(sinon.match(function (oError0) {
3094
+ return oError0.error.$ignoreTopLevel === true;
3095
3095
  }))
3096
3096
  .returns(aRawMessages);
3097
3097
 
@@ -3454,13 +3454,13 @@ sap.ui.define([
3454
3454
 
3455
3455
  that.mock(oBinding).expects("createRefreshPromise").never();
3456
3456
  oBinding.attachChange(function (oEvent) {
3457
- var oElementContext = oBinding.getBoundContext();
3457
+ var oElementContext0 = oBinding.getBoundContext();
3458
3458
 
3459
3459
  assert.strictEqual(oEvent.getParameter("reason"), ChangeReason.Refresh);
3460
- assert.strictEqual(oElementContext.getBinding(), oBinding);
3461
- assert.strictEqual(oElementContext.getModelIndex(), undefined);
3462
- assert.strictEqual(oElementContext.getModel(), this.oModel);
3463
- assert.strictEqual(oElementContext.getPath(), "/EMPLOYEES('42')");
3460
+ assert.strictEqual(oElementContext0.getBinding(), oBinding);
3461
+ assert.strictEqual(oElementContext0.getModelIndex(), undefined);
3462
+ assert.strictEqual(oElementContext0.getModel(), this.oModel);
3463
+ assert.strictEqual(oElementContext0.getPath(), "/EMPLOYEES('42')");
3464
3464
  });
3465
3465
 
3466
3466
  // code under test
@@ -4790,11 +4790,11 @@ sap.ui.define([
4790
4790
  that.mock(oBinding).expects("visitSideEffects")
4791
4791
  .withExactArgs(sGroupId, sinon.match.same(aPaths),
4792
4792
  sinon.match.same(oContext), aPromises)
4793
- .callsFake(function (_sGroupId, _aPaths, _oContext, aPromises) {
4794
- aPromises.push(Promise.resolve());
4795
- aPromises.push(Promise.reject(oCanceledError));
4793
+ .callsFake(function (_sGroupId, _aPaths, _oContext, aPromises0) {
4794
+ aPromises0.push(Promise.resolve());
4795
+ aPromises0.push(Promise.reject(oCanceledError));
4796
4796
  if (bRecursionRejects) {
4797
- aPromises.push(Promise.reject(oError));
4797
+ aPromises0.push(Promise.reject(oError));
4798
4798
  }
4799
4799
  });
4800
4800
  that.mock(oBinding).expects("refreshDependentListBindingsWithoutCache")