@openui5/sap.ui.core 1.126.1 → 1.127.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 (647) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +1 -1
  3. package/src/jquery.sap.global.js +1 -1
  4. package/src/jquery.sap.properties.js +1 -1
  5. package/src/jquery.sap.resources.js +1 -1
  6. package/src/jquery.sap.script.js +1 -1
  7. package/src/jquery.sap.storage.js +3 -3
  8. package/src/sap/base/Event.js +1 -1
  9. package/src/sap/base/Eventing.js +1 -1
  10. package/src/sap/base/config.js +1 -1
  11. package/src/sap/base/i18n/LanguageTag.js +1 -1
  12. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  13. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  14. package/src/sap/base/util/restricted/_castArray.js +1 -1
  15. package/src/sap/base/util/restricted/_compact.js +1 -1
  16. package/src/sap/base/util/restricted/_curry.js +1 -1
  17. package/src/sap/base/util/restricted/_debounce.js +1 -1
  18. package/src/sap/base/util/restricted/_difference.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  24. package/src/sap/base/util/restricted/_flatten.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  27. package/src/sap/base/util/restricted/_intersection.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  32. package/src/sap/base/util/restricted/_isNil.js +1 -1
  33. package/src/sap/base/util/restricted/_max.js +1 -1
  34. package/src/sap/base/util/restricted/_merge.js +1 -1
  35. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  36. package/src/sap/base/util/restricted/_min.js +1 -1
  37. package/src/sap/base/util/restricted/_omit.js +1 -1
  38. package/src/sap/base/util/restricted/_pick.js +1 -1
  39. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  40. package/src/sap/base/util/restricted/_throttle.js +1 -1
  41. package/src/sap/base/util/restricted/_toArray.js +1 -1
  42. package/src/sap/base/util/restricted/_union.js +1 -1
  43. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  44. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  45. package/src/sap/base/util/restricted/_uniq.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  48. package/src/sap/base/util/restricted/_without.js +1 -1
  49. package/src/sap/base/util/restricted/_xor.js +1 -1
  50. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  51. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  54. package/src/sap/ui/Device.js +3 -3
  55. package/src/sap/ui/Global.js +5 -15
  56. package/src/sap/ui/base/BindingInfo.js +45 -24
  57. package/src/sap/ui/base/DataType.js +19 -0
  58. package/src/sap/ui/base/Event.js +1 -1
  59. package/src/sap/ui/base/EventProvider.js +1 -1
  60. package/src/sap/ui/base/Interface.js +31 -1
  61. package/src/sap/ui/base/ManagedObject.js +3 -4
  62. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  63. package/src/sap/ui/base/Metadata.js +1 -1
  64. package/src/sap/ui/base/Object.js +1 -1
  65. package/src/sap/ui/base/ObjectPool.js +1 -1
  66. package/src/sap/ui/core/.library +1 -1
  67. package/src/sap/ui/core/.theming +8 -0
  68. package/src/sap/ui/core/BusyIndicator.js +1 -1
  69. package/src/sap/ui/core/Component.js +1 -1
  70. package/src/sap/ui/core/ComponentContainer.js +1 -1
  71. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  72. package/src/sap/ui/core/ComponentSupport.js +1 -1
  73. package/src/sap/ui/core/Configuration.js +1 -1
  74. package/src/sap/ui/core/Control.js +2 -2
  75. package/src/sap/ui/core/Core.js +57 -2
  76. package/src/sap/ui/core/CustomData.js +1 -1
  77. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  78. package/src/sap/ui/core/Element.js +166 -16
  79. package/src/sap/ui/core/ElementMetadata.js +1 -1
  80. package/src/sap/ui/core/EnabledPropagator.js +17 -31
  81. package/src/sap/ui/core/EventBus.js +1 -1
  82. package/src/sap/ui/core/Fragment.js +1 -1
  83. package/src/sap/ui/core/HTML.js +1 -1
  84. package/src/sap/ui/core/History.js +1 -1
  85. package/src/sap/ui/core/Icon.js +1 -1
  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 +2 -2
  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 +1 -1
  97. package/src/sap/ui/core/LocaleData.js +118 -55
  98. package/src/sap/ui/core/Manifest.js +1 -1
  99. package/src/sap/ui/core/Message.js +1 -1
  100. package/src/sap/ui/core/Popup.js +8 -0
  101. package/src/sap/ui/core/RenderManager.js +1 -1
  102. package/src/sap/ui/core/Renderer.js +1 -1
  103. package/src/sap/ui/core/ResizeHandler.js +1 -1
  104. package/src/sap/ui/core/ScrollBar.js +1 -1
  105. package/src/sap/ui/core/SeparatorItem.js +1 -1
  106. package/src/sap/ui/core/Theming.js +4 -4
  107. package/src/sap/ui/core/Title.js +2 -2
  108. package/src/sap/ui/core/TooltipBase.js +2 -2
  109. package/src/sap/ui/core/UIArea.js +1 -1
  110. package/src/sap/ui/core/UIComponent.js +1 -1
  111. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  112. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  113. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  114. package/src/sap/ui/core/XMLComposite.js +1 -1
  115. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  116. package/src/sap/ui/core/cache/CacheManagerNOP.js +3 -0
  117. package/src/sap/ui/core/cache/LRUPersistentCache.js +13 -4
  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 +1 -1
  121. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  122. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  123. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  124. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  125. package/src/sap/ui/core/fieldhelp/FieldHelp.js +53 -11
  126. package/src/sap/ui/core/fieldhelp/FieldHelpUtil.js +4 -0
  127. package/src/sap/ui/core/format/FormatUtils.js +1 -1
  128. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  129. package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
  130. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  131. package/src/sap/ui/core/library.js +37 -21
  132. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  133. package/src/sap/ui/core/message/Message.js +1 -1
  134. package/src/sap/ui/core/message/MessageManager.js +1 -1
  135. package/src/sap/ui/core/message/MessageParser.js +1 -1
  136. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  137. package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +30 -18
  138. package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +294 -282
  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 +4 -4
  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/ToolsAPI.js +5 -5
  158. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  159. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  160. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  161. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  162. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  163. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  164. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  165. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  166. package/src/sap/ui/core/themes/base/base.less +119 -49
  167. package/src/sap/ui/core/themes/base/fonts/SAP-icons.ttf +0 -0
  168. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  169. package/src/sap/ui/core/themes/base/library.source.less +2 -0
  170. package/src/sap/ui/core/themes/base/skeleton.less +958 -0
  171. package/src/sap/ui/core/theming/ThemeManager.js +56 -73
  172. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  173. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  174. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  175. package/src/sap/ui/core/tmpl/Template.js +1 -1
  176. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  177. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  178. package/src/sap/ui/core/util/Export.js +1 -1
  179. package/src/sap/ui/core/util/ExportCell.js +1 -1
  180. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  181. package/src/sap/ui/core/util/ExportRow.js +1 -1
  182. package/src/sap/ui/core/util/ExportType.js +1 -1
  183. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  184. package/src/sap/ui/core/util/File.js +1 -1
  185. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  186. package/src/sap/ui/core/util/MockServer.js +1 -1
  187. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  188. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  189. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  190. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  191. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  192. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  193. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  194. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  195. package/src/sap/ui/core/webc/WebComponent.js +1 -1
  196. package/src/sap/ui/core/webc/WebComponentMetadata.js +1 -1
  197. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  198. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  199. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  200. package/src/sap/ui/debug/ControlTree.js +1 -1
  201. package/src/sap/ui/debug/DebugEnv.js +1 -1
  202. package/src/sap/ui/debug/PropertyList.js +1 -1
  203. package/src/sap/ui/dom/findTabbable.js +244 -0
  204. package/src/sap/ui/dom/isElementCovered.js +51 -0
  205. package/src/sap/ui/events/F6Navigation.js +10 -164
  206. package/src/sap/ui/model/ClientModel.js +1 -1
  207. package/src/sap/ui/model/CompositeDataState.js +1 -1
  208. package/src/sap/ui/model/CompositeType.js +1 -1
  209. package/src/sap/ui/model/DataState.js +1 -1
  210. package/src/sap/ui/model/MetaModel.js +1 -1
  211. package/src/sap/ui/model/Model.js +1 -1
  212. package/src/sap/ui/model/SelectionModel.js +1 -1
  213. package/src/sap/ui/model/SimpleType.js +1 -1
  214. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  215. package/src/sap/ui/model/Type.js +1 -1
  216. package/src/sap/ui/model/json/JSONModel.js +1 -1
  217. package/src/sap/ui/model/message/MessageModel.js +1 -1
  218. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  219. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  220. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  221. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  222. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  223. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  224. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  225. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  226. package/src/sap/ui/model/odata/type/Date.js +1 -1
  227. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  228. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  229. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  230. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  231. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  232. package/src/sap/ui/model/odata/type/Double.js +1 -1
  233. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  234. package/src/sap/ui/model/odata/type/Int.js +1 -1
  235. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  236. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  237. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  238. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  239. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  240. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  241. package/src/sap/ui/model/odata/type/Single.js +1 -1
  242. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  243. package/src/sap/ui/model/odata/type/String.js +1 -1
  244. package/src/sap/ui/model/odata/type/Time.js +1 -1
  245. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  246. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  247. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  248. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  249. package/src/sap/ui/model/odata/v2/ODataModel.js +144 -14
  250. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  251. package/src/sap/ui/model/odata/v4/Context.js +18 -8
  252. package/src/sap/ui/model/odata/v4/ODataBinding.js +1 -1
  253. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +12 -9
  254. package/src/sap/ui/model/odata/v4/ODataListBinding.js +30 -14
  255. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +254 -189
  256. package/src/sap/ui/model/odata/v4/ODataModel.js +51 -13
  257. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +4 -1
  258. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +68 -32
  259. package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +9 -6
  260. package/src/sap/ui/model/odata/v4/lib/_Cache.js +7 -7
  261. package/src/sap/ui/model/odata/v4/lib/_Helper.js +17 -11
  262. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +11 -3
  263. package/src/sap/ui/model/odata/v4/lib/_TreeState.js +10 -4
  264. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  265. package/src/sap/ui/model/type/Boolean.js +1 -1
  266. package/src/sap/ui/model/type/Currency.js +1 -1
  267. package/src/sap/ui/model/type/Date.js +1 -1
  268. package/src/sap/ui/model/type/DateInterval.js +1 -1
  269. package/src/sap/ui/model/type/DateTime.js +1 -1
  270. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  271. package/src/sap/ui/model/type/FileSize.js +1 -1
  272. package/src/sap/ui/model/type/Float.js +1 -1
  273. package/src/sap/ui/model/type/Integer.js +1 -1
  274. package/src/sap/ui/model/type/String.js +1 -1
  275. package/src/sap/ui/model/type/Time.js +1 -1
  276. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  277. package/src/sap/ui/model/type/Unit.js +1 -1
  278. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  279. package/src/sap/ui/performance/trace/FESR.js +3 -0
  280. package/src/sap/ui/performance/trace/Interaction.js +4 -2
  281. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  282. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  283. package/src/sap/ui/qunit/utils/nextUIUpdate.js +7 -53
  284. package/src/sap/ui/qunit/utils/waitForThemeApplied.js +6 -42
  285. package/src/sap/ui/test/ModuleTracking.js +1 -1
  286. package/src/sap/ui/test/generic/TestBase.js +1 -1
  287. package/src/sap/ui/test/generic/Utils.js +3 -7
  288. package/src/sap/ui/test/opaQunit.js +3 -3
  289. package/src/sap/ui/test/utils/nextUIUpdate.js +64 -0
  290. package/src/sap/ui/test/utils/waitForThemeApplied.js +58 -0
  291. package/src/sap/ui/util/Storage.js +1 -1
  292. package/src/ui5loader.js +9 -0
  293. package/test/sap/ui/core/demokit/sample/Messaging/ODataBackendMessagesComp/ui5.yaml +1 -1
  294. package/test/sap/ui/core/demokit/sample/matcher/BindingPath/ui5.yaml +1 -1
  295. package/test/sap/ui/core/demokit/sample/matcher/Descendant/ui5.yaml +1 -1
  296. package/test/sap/ui/core/demokit/sample/matcher/I18NText/ui5.yaml +1 -1
  297. package/test/sap/ui/core/demokit/sample/matcher/LabelFor/ui5.yaml +1 -1
  298. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/SandboxModel.js +1 -1
  299. package/test/sap/ui/core/demokit/sample/odata/v4/FlexibleColumnLayout/data/SalesOrderList('0500000000')-requestSideEffects.json +14 -14
  300. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.controller.js +32 -2
  301. package/test/sap/ui/core/demokit/sample/odata/v4/HierarchyBindAction/Main.view.xml +22 -0
  302. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Component.js +69 -0
  303. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/MIT.ListBindingTemplate.AnnotationChanges.html +63 -0
  304. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/Main.view.xml +19 -7
  305. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/SandboxModel.js +1 -4
  306. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/data/equipments.json +37 -22
  307. package/test/sap/ui/core/demokit/sample/odata/v4/ListBindingTemplate/data/localAnnotations.xml +10 -2
  308. package/test/sap/ui/core/demokit/sample/odata/v4/MultipleInlineCreationRowsGrid/Main.controller.js +5 -5
  309. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.controller.js +32 -2
  310. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/RecursiveHierarchy.view.xml +30 -0
  311. package/test/sap/ui/core/demokit/sample/odata/v4/RecursiveHierarchy/SandboxModel.js +12 -6
  312. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.controller.js +7 -0
  313. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/Main.view.xml +2 -0
  314. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrders/SandboxModel.js +14 -14
  315. package/test/sap/ui/core/demokit/sample/odata/v4/SalesOrdersTemplate/pages/Main.js +1 -1
  316. package/test/sap/ui/core/demokit/tutorial/databinding/01/ui5.yaml +1 -1
  317. package/test/sap/ui/core/demokit/tutorial/databinding/02/ui5.yaml +1 -1
  318. package/test/sap/ui/core/demokit/tutorial/databinding/03/ui5.yaml +1 -1
  319. package/test/sap/ui/core/demokit/tutorial/databinding/04/ui5.yaml +1 -1
  320. package/test/sap/ui/core/demokit/tutorial/databinding/05/ui5.yaml +1 -1
  321. package/test/sap/ui/core/demokit/tutorial/databinding/06/ui5.yaml +1 -1
  322. package/test/sap/ui/core/demokit/tutorial/databinding/07/ui5.yaml +1 -1
  323. package/test/sap/ui/core/demokit/tutorial/databinding/08/ui5.yaml +1 -1
  324. package/test/sap/ui/core/demokit/tutorial/databinding/09/ui5.yaml +1 -1
  325. package/test/sap/ui/core/demokit/tutorial/databinding/10/ui5.yaml +1 -1
  326. package/test/sap/ui/core/demokit/tutorial/databinding/11/ui5.yaml +1 -1
  327. package/test/sap/ui/core/demokit/tutorial/databinding/12/ui5.yaml +1 -1
  328. package/test/sap/ui/core/demokit/tutorial/databinding/13/ui5.yaml +1 -1
  329. package/test/sap/ui/core/demokit/tutorial/databinding/14/ui5.yaml +1 -1
  330. package/test/sap/ui/core/demokit/tutorial/databinding/15/ui5.yaml +1 -1
  331. package/test/sap/ui/core/demokit/tutorial/mockserver/01/ui5.yaml +1 -1
  332. package/test/sap/ui/core/demokit/tutorial/mockserver/02/ui5.yaml +1 -1
  333. package/test/sap/ui/core/demokit/tutorial/mockserver/03/ui5.yaml +1 -1
  334. package/test/sap/ui/core/demokit/tutorial/mockserver/04/ui5.yaml +1 -1
  335. package/test/sap/ui/core/demokit/tutorial/navigation/01/ui5.yaml +1 -1
  336. package/test/sap/ui/core/demokit/tutorial/navigation/02/ui5.yaml +1 -1
  337. package/test/sap/ui/core/demokit/tutorial/navigation/03/ui5.yaml +1 -1
  338. package/test/sap/ui/core/demokit/tutorial/navigation/04/ui5.yaml +1 -1
  339. package/test/sap/ui/core/demokit/tutorial/navigation/05/ui5.yaml +1 -1
  340. package/test/sap/ui/core/demokit/tutorial/navigation/06/ui5.yaml +1 -1
  341. package/test/sap/ui/core/demokit/tutorial/navigation/07/ui5.yaml +1 -1
  342. package/test/sap/ui/core/demokit/tutorial/navigation/08/ui5.yaml +1 -1
  343. package/test/sap/ui/core/demokit/tutorial/navigation/09/ui5.yaml +1 -1
  344. package/test/sap/ui/core/demokit/tutorial/navigation/10/ui5.yaml +1 -1
  345. package/test/sap/ui/core/demokit/tutorial/navigation/11/ui5.yaml +1 -1
  346. package/test/sap/ui/core/demokit/tutorial/navigation/12/ui5.yaml +1 -1
  347. package/test/sap/ui/core/demokit/tutorial/navigation/13/ui5.yaml +1 -1
  348. package/test/sap/ui/core/demokit/tutorial/navigation/14/ui5.yaml +1 -1
  349. package/test/sap/ui/core/demokit/tutorial/navigation/15/ui5.yaml +1 -1
  350. package/test/sap/ui/core/demokit/tutorial/navigation/16/ui5.yaml +1 -1
  351. package/test/sap/ui/core/demokit/tutorial/navigation/17/ui5.yaml +1 -1
  352. package/test/sap/ui/core/demokit/tutorial/odatav4/01/ui5.yaml +1 -1
  353. package/test/sap/ui/core/demokit/tutorial/odatav4/02/ui5.yaml +1 -1
  354. package/test/sap/ui/core/demokit/tutorial/odatav4/03/ui5.yaml +1 -1
  355. package/test/sap/ui/core/demokit/tutorial/odatav4/04/ui5.yaml +1 -1
  356. package/test/sap/ui/core/demokit/tutorial/odatav4/05/ui5.yaml +1 -1
  357. package/test/sap/ui/core/demokit/tutorial/odatav4/06/ui5.yaml +1 -1
  358. package/test/sap/ui/core/demokit/tutorial/odatav4/07/ui5.yaml +1 -1
  359. package/test/sap/ui/core/demokit/tutorial/odatav4/08/ui5.yaml +1 -1
  360. package/test/sap/ui/core/demokit/tutorial/odatav4/09/ui5.yaml +1 -1
  361. package/test/sap/ui/core/demokit/tutorial/odatav4/10/ui5.yaml +1 -1
  362. package/test/sap/ui/core/demokit/tutorial/odatav4/11/ui5.yaml +1 -1
  363. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/package.json +3 -0
  364. package/test/sap/ui/core/demokit/tutorial/troubleshooting/01/ui5.yaml +1 -1
  365. package/test/sap/ui/core/qunit/BlockLayerUtils.qunit.js +1 -1
  366. package/test/sap/ui/core/qunit/CalculatedFields.qunit.js +1 -1
  367. package/test/sap/ui/core/qunit/ContextMenuSupport.qunit.js +1 -1
  368. package/test/sap/ui/core/qunit/ControlDefinition.qunit.js +2 -2
  369. package/test/sap/ui/core/qunit/ControlRenderer.qunit.js +1 -1
  370. package/test/sap/ui/core/qunit/Core.qunit.js +1 -1
  371. package/test/sap/ui/core/qunit/CustomStyleClassSupport.qunit.js +1 -1
  372. package/test/sap/ui/core/qunit/CustomThemeFallback.qunit.js +1 -1
  373. package/test/sap/ui/core/qunit/CustomThemeFallback_unavoidablySync.qunit.js +1 -1
  374. package/test/sap/ui/core/qunit/Element_data.qunit.js +1 -1
  375. package/test/sap/ui/core/qunit/Element_destroy.qunit.js +1 -1
  376. package/test/sap/ui/core/qunit/Element_focus.qunit.js +196 -3
  377. package/test/sap/ui/core/qunit/Element_metadata_selector.qunit.js +1 -1
  378. package/test/sap/ui/core/qunit/EnabledPropagator.qunit.js +2 -3
  379. package/test/sap/ui/core/qunit/FastNavigationWithWebComponents.qunit.js +1 -1
  380. package/test/sap/ui/core/qunit/FieldGroup.qunit.js +1 -1
  381. package/test/sap/ui/core/qunit/FocusHandler.qunit.js +1 -1
  382. package/test/sap/ui/core/qunit/Fragment.qunit.js +1 -1
  383. package/test/sap/ui/core/qunit/Fragment_legacyAPIs.qunit.js +1 -1
  384. package/test/sap/ui/core/qunit/HTML.qunit.js +1 -1
  385. package/test/sap/ui/core/qunit/Icon.qunit.js +1 -1
  386. package/test/sap/ui/core/qunit/InvisibleText.qunit.js +1 -1
  387. package/test/sap/ui/core/qunit/LRUPersistentCache.qunit.js +8 -4
  388. package/test/sap/ui/core/qunit/LocalBusyIndicator.qunit.js +1 -1
  389. package/test/sap/ui/core/qunit/RenderManager.qunit.js +1 -1
  390. package/test/sap/ui/core/qunit/Rendering.qunit.js +1 -1
  391. package/test/sap/ui/core/qunit/ResizeHandler.qunit.js +1 -1
  392. package/test/sap/ui/core/qunit/ScrollBar.qunit.js +1 -1
  393. package/test/sap/ui/core/qunit/ShortcutHints.qunit.js +1 -1
  394. package/test/sap/ui/core/qunit/StashedControlSupport.qunit.js +1 -1
  395. package/test/sap/ui/core/qunit/StashedControlSupport_unavoidablySync.qunit.js +1 -1
  396. package/test/sap/ui/core/qunit/ThemeManager.qunit.js +1 -1
  397. package/test/sap/ui/core/qunit/ThemeParameters.qunit.js +1 -1
  398. package/test/sap/ui/core/qunit/ThemeParameters_legacyAPIs.qunit.js +1 -1
  399. package/test/sap/ui/core/qunit/Theming.qunit.js +1 -1
  400. package/test/sap/ui/core/qunit/Theming_default_and_fallback.qunit.js +1 -1
  401. package/test/sap/ui/core/qunit/TooltipBase.qunit.js +1 -1
  402. package/test/sap/ui/core/qunit/UIArea.qunit.js +1 -1
  403. package/test/sap/ui/core/qunit/bootstrap/ThemeVersion.qunit.js +1 -1
  404. package/test/sap/ui/core/qunit/bootstrap/testsuite.bootstrap.qunit.js +1 -8
  405. package/test/sap/ui/core/qunit/component/Component.qunit.js +36 -36
  406. package/test/sap/ui/core/qunit/component/ComponentContainer.qunit.js +2 -10
  407. package/test/sap/ui/core/qunit/component/ComponentContainer_unavoidablySync.qunit.js +2 -10
  408. package/test/sap/ui/core/qunit/component/ComponentSupport.qunit.js +5 -5
  409. package/test/sap/ui/core/qunit/component/Component_containedInLibrary.qunit.js +10 -10
  410. package/test/sap/ui/core/qunit/component/Component_dependencyLoading.qunit.js +7 -7
  411. package/test/sap/ui/core/qunit/component/Component_dependencyLoading_unavoidablySync.qunit.js +6 -6
  412. package/test/sap/ui/core/qunit/component/Component_unavoidablySync.qunit.js +8 -8
  413. package/test/sap/ui/core/qunit/component/Customizing.qunit.js +1 -1
  414. package/test/sap/ui/core/qunit/component/Customizing_async.qunit.js +3 -3
  415. package/test/sap/ui/core/qunit/component/Customizing_disabled.qunit.js +1 -1
  416. package/test/sap/ui/core/qunit/component/Customizing_legacyAPIs.qunit.js +2 -2
  417. package/test/sap/ui/core/qunit/component/Customizing_multi.qunit.js +1 -1
  418. package/test/sap/ui/core/qunit/component/Customizing_unavoidablySync.qunit.js +1 -1
  419. package/test/sap/ui/core/qunit/component/ExtensionPoint.qunit.js +3 -3
  420. package/test/sap/ui/core/qunit/component/ExtensionPoint_unavoidablySync.qunit.js +1 -1
  421. package/test/sap/ui/core/qunit/component/Manifest.qunit.js +10 -10
  422. package/test/sap/ui/core/qunit/component/Manifest_unavoidablySync.qunit.js +1 -1
  423. package/test/sap/ui/core/qunit/component/Metadata.qunit.js +47 -47
  424. package/test/sap/ui/core/qunit/component/Metadata_unavoidablySync.qunit.js +33 -33
  425. package/test/sap/ui/core/qunit/component/Models.qunit.js +57 -57
  426. package/test/sap/ui/core/qunit/component/Models_unavoidablySync.qunit.js +12 -12
  427. package/test/sap/ui/core/qunit/component/UIComponent.qunit.js +2 -2
  428. package/test/sap/ui/core/qunit/component/UIComponent_unavoidablySync.qunit.js +1 -1
  429. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component1/Component.js +2 -2
  430. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component1/manifest.json +3 -3
  431. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component2/Component.js +2 -2
  432. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component2/manifest.json +1 -1
  433. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component3/Component.js +2 -2
  434. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component3/manifest.json +2 -2
  435. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component4/Component.js +2 -2
  436. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component4/manifest.json +2 -2
  437. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component5/Component.js +2 -2
  438. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component5/manifest.json +2 -2
  439. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component6/Component.js +2 -2
  440. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/component6/manifest.json +2 -2
  441. package/test/sap/ui/core/qunit/component/testdata/dependencyLoading/componentVariant/manifest.json +2 -2
  442. package/test/sap/ui/core/qunit/component/testdata/embedded/Component.js +2 -2
  443. package/test/sap/ui/core/qunit/component/testdata/embedded/manifest.json +2 -2
  444. package/test/sap/ui/core/qunit/component/testdata/inherit/Component.js +2 -2
  445. package/test/sap/ui/core/qunit/component/testdata/inherit/component.json +1 -1
  446. package/test/sap/ui/core/qunit/component/testdata/inherit/manifest.json +9 -9
  447. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/Component.js +2 -2
  448. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/component.json +1 -1
  449. package/test/sap/ui/core/qunit/component/testdata/inherit/parent/manifest.json +9 -9
  450. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/Component.js +2 -2
  451. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/manifest.json +3 -3
  452. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/Component.js +2 -2
  453. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentA/manifest.json +2 -2
  454. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/Component.js +2 -2
  455. package/test/sap/ui/core/qunit/component/testdata/inheritAsync/parentB/manifest.json +3 -3
  456. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/Component.js +2 -2
  457. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/manifest.json +3 -3
  458. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/Component.js +2 -2
  459. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentA/manifest.json +2 -2
  460. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/Component.js +2 -2
  461. package/test/sap/ui/core/qunit/component/testdata/inheritAsyncError/parentB/manifest.json +3 -3
  462. package/test/sap/ui/core/qunit/component/testdata/manifestload/manifest.json +2 -2
  463. package/test/sap/ui/core/qunit/component/testdata/minUI5Version/Component.js +1 -1
  464. package/test/sap/ui/core/qunit/component/testdata/minUI5Version/manifest.json +1 -1
  465. package/test/sap/ui/core/qunit/component/testdata/mixed/Component.js +1 -1
  466. package/test/sap/ui/core/qunit/component/testdata/mixed/manifest.json +9 -9
  467. package/test/sap/ui/core/qunit/component/testdata/mixed_legacyAPIs/Component.js +1 -1
  468. package/test/sap/ui/core/qunit/component/testdata/mixed_legacyAPIs/component.json +8 -8
  469. package/test/sap/ui/core/qunit/component/testdata/mixed_legacyAPIs/manifest.json +9 -9
  470. package/test/sap/ui/core/qunit/component/testdata/modelsMisc/Component.js +1 -1
  471. package/test/sap/ui/core/qunit/component/testdata/modelsMisc/manifest.json +1 -1
  472. package/test/sap/ui/core/qunit/component/testdata/other/Component.js +2 -2
  473. package/test/sap/ui/core/qunit/component/testdata/routerClass/Component.js +1 -1
  474. package/test/sap/ui/core/qunit/component/testdata/routerClass/manifest.json +2 -2
  475. package/test/sap/ui/core/qunit/component/testdata/routerPreloading/Component.js +1 -1
  476. package/test/sap/ui/core/qunit/component/testdata/routerPreloading/manifest.json +2 -2
  477. package/test/sap/ui/core/qunit/component/testdata/routing/Component.js +2 -2
  478. package/test/sap/ui/core/qunit/component/testdata/routing/RouterExtension.js +1 -1
  479. package/test/sap/ui/core/qunit/component/testdata/routing/TestView.js +1 -8
  480. package/test/sap/ui/core/qunit/component/testdata/routing/targets/Component.js +2 -2
  481. package/test/sap/ui/core/qunit/component/testdata/routing_legacyAPIs/Component.js +5 -5
  482. package/test/sap/ui/core/qunit/component/testdata/routing_legacyAPIs/targets/Component.js +5 -5
  483. package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/Component.js +1 -1
  484. package/test/sap/ui/core/qunit/component/testdata/targetsPreloading/manifest.json +2 -2
  485. package/test/sap/ui/core/qunit/component/testdata/terminologies/Component.js +1 -1
  486. package/test/sap/ui/core/qunit/component/testdata/terminologies/Main.controller.js +1 -1
  487. package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Component.js +1 -1
  488. package/test/sap/ui/core/qunit/component/testdata/terminologies/component1/Main.controller.js +1 -1
  489. package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Component.js +1 -1
  490. package/test/sap/ui/core/qunit/component/testdata/terminologies/component2/Main.controller.js +1 -1
  491. package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Component.js +1 -1
  492. package/test/sap/ui/core/qunit/component/testdata/terminologies/component3/Main.controller.js +1 -1
  493. package/test/sap/ui/core/qunit/component/testdata/terminologies/component4/Component.js +1 -1
  494. package/test/sap/ui/core/qunit/component/testdata/terminologies/component4/Main.controller.js +1 -1
  495. package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Component.js +1 -1
  496. package/test/sap/ui/core/qunit/component/testdata/terminologies/component5/Main.controller.js +1 -1
  497. package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Component.js +1 -1
  498. package/test/sap/ui/core/qunit/component/testdata/terminologies/reuse/Main.controller.js +1 -1
  499. package/test/sap/ui/core/qunit/component/testdata/v1/Component.js +2 -2
  500. package/test/sap/ui/core/qunit/component/testdata/v1/component.json +8 -8
  501. package/test/sap/ui/core/qunit/component/testdata/v1empty/Component.js +2 -2
  502. package/test/sap/ui/core/qunit/component/testdata/v1empty/component.json +1 -1
  503. package/test/sap/ui/core/qunit/component/testdata/v1inline/Component.js +10 -10
  504. package/test/sap/ui/core/qunit/component/testdata/v1missing/Component.js +2 -2
  505. package/test/sap/ui/core/qunit/component/testdata/v2/Component.js +2 -2
  506. package/test/sap/ui/core/qunit/component/testdata/v2/manifest.json +9 -9
  507. package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/Component.js +2 -2
  508. package/test/sap/ui/core/qunit/component/testdata/v2asyncRootView/manifest.json +9 -9
  509. package/test/sap/ui/core/qunit/component/testdata/v2empty/Component.js +1 -1
  510. package/test/sap/ui/core/qunit/component/testdata/v2empty/manifest.json +1 -1
  511. package/test/sap/ui/core/qunit/component/testdata/v2inline/Component.js +10 -10
  512. package/test/sap/ui/core/qunit/component/testdata/v2missing/Component.js +1 -1
  513. package/test/sap/ui/core/qunit/component/testdata/v2models/empty/Component.js +3 -3
  514. package/test/sap/ui/core/qunit/component/testdata/v2models/empty/manifest.json +1 -1
  515. package/test/sap/ui/core/qunit/component/testdata/v2models/extension/Component.js +4 -4
  516. package/test/sap/ui/core/qunit/component/testdata/v2models/parent/Component.js +12 -12
  517. package/test/sap/ui/core/qunit/component/testdata/v2models/parent/CustomModel.js +2 -2
  518. package/test/sap/ui/core/qunit/component/testdata/v2models/parent/ModelNotDefined.js +2 -2
  519. package/test/sap/ui/core/qunit/component/testdata/v2models/parentValid/Component.js +11 -11
  520. package/test/sap/ui/core/qunit/component/testdata/v2models/ui5Urls/Component.js +2 -2
  521. package/test/sap/ui/core/qunit/component/testdata/v2models/ui5Urls/manifest.json +2 -2
  522. package/test/sap/ui/core/qunit/component/testdata/v2version/Component.js +2 -2
  523. package/test/sap/ui/core/qunit/component/testdata/v2version/manifest.json +2 -2
  524. package/test/sap/ui/core/qunit/component/testdata/v4models/Component.js +3 -3
  525. package/test/sap/ui/core/qunit/component/testdata/v4models/cacheTokens/Component.js +3 -3
  526. package/test/sap/ui/core/qunit/component/testdata/v4models/sapSystem/Component.js +2 -2
  527. package/test/sap/ui/core/qunit/component/testdata/v4models/sapSystem/manifest.json +1 -1
  528. package/test/sap/ui/core/qunit/component/testdata/v4models/unsupportedVersion/Component.js +3 -3
  529. package/test/sap/ui/core/qunit/component/testdata/verticalLayout/Component.js +1 -1
  530. package/test/sap/ui/core/qunit/component/testdata/verticalLayout_legacyAPIs/Component.js +1 -1
  531. package/test/sap/ui/core/qunit/component/testdata/view/Main.controller.js +2 -2
  532. package/test/sap/ui/core/qunit/component/testdata/view/Main.view.xml +1 -1
  533. package/test/sap/ui/core/qunit/component/testdata/view/MainAsync.view.xml +1 -1
  534. package/test/sap/ui/core/qunit/component/testdata/view/MainAsyncWithWrongNesting.view.xml +1 -1
  535. package/test/sap/ui/core/qunit/component/testdata/view/Nested.view.xml +1 -1
  536. package/test/sap/ui/core/qunit/component/testsuite.component.qunit.js +2 -8
  537. package/test/sap/ui/core/qunit/composite/XMLComposite.qunit.js +1 -1
  538. package/test/sap/ui/core/qunit/dnd/DragAndDrop.qunit.js +1 -1
  539. package/test/sap/ui/core/qunit/dnd/DragInfo.qunit.js +1 -1
  540. package/test/sap/ui/core/qunit/dnd/DropInfo.qunit.js +1 -1
  541. package/test/sap/ui/core/qunit/fieldhelp/FieldHelp.qunit.js +184 -51
  542. package/test/sap/ui/core/qunit/fieldhelp/FieldHelpUtil.qunit.js +2 -0
  543. package/test/sap/ui/core/qunit/generic/ControlMemoryLeaks.qunit.js +1 -1
  544. package/test/sap/ui/core/qunit/generic/DuplicateIdCheck.qunit.js +1 -1
  545. package/test/sap/ui/core/qunit/generic/legacy/ControlIterator.qunit.js +1 -1
  546. package/test/sap/ui/core/qunit/generic/legacy/ControlMemoryLeaks.qunit.js +1 -1
  547. package/test/sap/ui/core/qunit/generic/legacy/DuplicateIdCheck.qunit.js +1 -1
  548. package/test/sap/ui/core/qunit/i18n/LocaleData.qunit.js +188 -61
  549. package/test/sap/ui/core/qunit/isBehindOtherElement.qunit.js +1 -1
  550. package/test/sap/ui/core/qunit/jquery.sap.events.qunit.js +1 -1
  551. package/test/sap/ui/core/qunit/jquery.sap.ui.qunit.js +1 -1
  552. package/test/sap/ui/core/qunit/messages/messagesUsage.qunit.js +1 -1
  553. package/test/sap/ui/core/qunit/mvc/AnyView.qunit.js +1 -1
  554. package/test/sap/ui/core/qunit/mvc/AnyViewAsync.qunit.js +1 -1
  555. package/test/sap/ui/core/qunit/mvc/Controller.qunit.js +1 -1
  556. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorAsync_unavoidablyUsingInlineStyle.qunit.js +1 -1
  557. package/test/sap/ui/core/qunit/mvc/XMLTemplateProcessorRequireXML.qunit.js +1 -1
  558. package/test/sap/ui/core/qunit/mvc/XMLView.qunit.js +1 -1
  559. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing.qunit.js +1 -1
  560. package/test/sap/ui/core/qunit/mvc/viewprocessing/ViewProcessing_legacyAPIs.qunit.js +1 -1
  561. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyViewAsync_legacyAPIs.qunit.js +1 -1
  562. package/test/sap/ui/core/qunit/mvc_legacyAPIs/AnyView_legacyAPIs.qunit.js +1 -1
  563. package/test/sap/ui/core/qunit/mvc_legacyAPIs/HTMLView_legacyAPIs.qunit.js +1 -1
  564. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLTemplateProcessorRequireXML_legacyAPIs.qunit.js +1 -1
  565. package/test/sap/ui/core/qunit/mvc_legacyAPIs/XMLView_legacyAPIs.qunit.js +1 -1
  566. package/test/sap/ui/core/qunit/odata/ODataAnnotations.qunit.js +1 -1
  567. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +511 -21
  568. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +382 -3
  569. package/test/sap/ui/core/qunit/odata/v2/V2ODataModel.qunit.js +1 -1
  570. package/test/sap/ui/core/qunit/odata/v2/V2ODataModelB.qunit.js +1 -1
  571. package/test/sap/ui/core/qunit/odata/v4/Context.qunit.js +28 -4
  572. package/test/sap/ui/core/qunit/odata/v4/ODataContextBinding.qunit.js +34 -20
  573. package/test/sap/ui/core/qunit/odata/v4/ODataListBinding.qunit.js +80 -15
  574. package/test/sap/ui/core/qunit/odata/v4/ODataMetaModel.qunit.js +90 -6
  575. package/test/sap/ui/core/qunit/odata/v4/ODataModel.integration.qunit.js +1201 -202
  576. package/test/sap/ui/core/qunit/odata/v4/ODataModel.qunit.js +34 -0
  577. package/test/sap/ui/core/qunit/odata/v4/ODataPropertyBinding.qunit.js +38 -0
  578. package/test/sap/ui/core/qunit/odata/v4/data/annotations_tea_busi.xml +14 -0
  579. package/test/sap/ui/core/qunit/odata/v4/data/metadata_tea_busi_supplier.xml +36 -0
  580. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationCache.qunit.js +319 -38
  581. package/test/sap/ui/core/qunit/odata/v4/lib/_AggregationHelper.qunit.js +22 -9
  582. package/test/sap/ui/core/qunit/odata/v4/lib/_Cache.qunit.js +2 -2
  583. package/test/sap/ui/core/qunit/odata/v4/lib/_Helper.qunit.js +53 -10
  584. package/test/sap/ui/core/qunit/odata/v4/lib/_Requestor.qunit.js +6 -0
  585. package/test/sap/ui/core/qunit/odata/v4/lib/_TreeState.qunit.js +30 -1
  586. package/test/sap/ui/core/qunit/opa/Opa5PageObject.qunit.js +1 -1
  587. package/test/sap/ui/core/qunit/opa/OpaPlugin.qunit.js +1 -1
  588. package/test/sap/ui/core/qunit/opa/RecordReplay.qunit.js +1 -1
  589. package/test/sap/ui/core/qunit/opa/_ControlFinder.qunit.js +1 -1
  590. package/test/sap/ui/core/qunit/opa/actions/Action.qunit.js +1 -1
  591. package/test/sap/ui/core/qunit/opa/actions/EnterText.qunit.js +1 -1
  592. package/test/sap/ui/core/qunit/opa/actions/Press.qunit.js +1 -1
  593. package/test/sap/ui/core/qunit/opa/autowaiter/_cssAnimationWaiter.js +1 -1
  594. package/test/sap/ui/core/qunit/opa/autowaiter/_cssTransitionWaiter.js +1 -1
  595. package/test/sap/ui/core/qunit/opa/autowaiter/_jsAnimationWaiter.js +1 -1
  596. package/test/sap/ui/core/qunit/opa/autowaiter/_navigationContainerWaiter.js +1 -1
  597. package/test/sap/ui/core/qunit/opa/autowaiter/_resourceWaiter.js +1 -1
  598. package/test/sap/ui/core/qunit/opa/fixture/bindingPath.js +1 -1
  599. package/test/sap/ui/core/qunit/opa/matchers/Interactable.qunit.js +1 -1
  600. package/test/sap/ui/core/qunit/opa/matchers/LabelFor.qunit.js +1 -1
  601. package/test/sap/ui/core/qunit/opa/matchers/Sibling.qunit.js +1 -1
  602. package/test/sap/ui/core/qunit/opa/matchers/Visible.qunit.js +1 -1
  603. package/test/sap/ui/core/qunit/opa/matchers/_Busy.qunit.js +1 -1
  604. package/test/sap/ui/core/qunit/opa/matchers/_Editable.qunit.js +1 -1
  605. package/test/sap/ui/core/qunit/opa/matchers/_Enabled.qunit.js +1 -1
  606. package/test/sap/ui/core/qunit/opa/matchers/_Visitor.qunit.js +1 -1
  607. package/test/sap/ui/core/qunit/opa/opa5/actions.qunit.js +1 -1
  608. package/test/sap/ui/core/qunit/opa/opa5/basics.qunit.js +1 -1
  609. package/test/sap/ui/core/qunit/opa/opa5/logging.qunit.js +1 -1
  610. package/test/sap/ui/core/qunit/opa/opa5/matchers.qunit.js +1 -1
  611. package/test/sap/ui/core/qunit/opa/selectors/_BindingPath.js +1 -1
  612. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorGenerator.js +1 -1
  613. package/test/sap/ui/core/qunit/opa/selectors/_ControlSelectorValidator.js +1 -1
  614. package/test/sap/ui/core/qunit/opa/selectors/_DropdownItem.js +1 -1
  615. package/test/sap/ui/core/qunit/opa/selectors/_GlobalID.js +1 -1
  616. package/test/sap/ui/core/qunit/opa/selectors/_LabelFor.js +1 -1
  617. package/test/sap/ui/core/qunit/opa/selectors/_Properties.js +1 -1
  618. package/test/sap/ui/core/qunit/opa/selectors/_Selector.js +1 -1
  619. package/test/sap/ui/core/qunit/opa/selectors/_TableRowItem.js +1 -1
  620. package/test/sap/ui/core/qunit/opa/selectors/_ViewID.js +1 -1
  621. package/test/sap/ui/core/qunit/opa/testsuite.opa.qunit.js +448 -426
  622. package/test/sap/ui/core/qunit/performance/trace/FESR.qunit.js +8 -4
  623. package/test/sap/ui/core/qunit/performance/trace/Interaction.qunit.js +1 -1
  624. package/test/sap/ui/core/qunit/routing/Placeholder.qunit.js +1 -1
  625. package/test/sap/ui/core/qunit/routing/PlaceholderOptOut.qunit.js +1 -1
  626. package/test/sap/ui/core/qunit/tmpl/Template.qunit.js +1 -1
  627. package/test/sap/ui/core/qunit/ui5classes/ManagedObject.qunit.js +62 -1
  628. package/test/sap/ui/core/qunit/util/InvisibleMessage.qunit.js +1 -1
  629. package/test/sap/ui/core/qunit/util/LabelEnablement.qunit.js +1 -1
  630. package/test/sap/ui/core/qunit/util/Popup.qunit.js +1 -1
  631. package/test/sap/ui/core/qunit/util/ResponsivePaddingsEnablement.qunit.js +1 -1
  632. package/test/sap/ui/core/qunit/util/XMLPreprocessor.qunit.js +1 -1
  633. package/test/sap/ui/core/qunit/util/jquery.sap.dom.qunit.js +1 -1
  634. package/test/sap/ui/core/qunit/util/reflection/BaseTreeModifier.qunit.js +3 -3
  635. package/test/sap/ui/core/qunit/util/reflection/JsControlTreeModifier.qunit.js +3 -3
  636. package/test/sap/ui/core/qunit/util/reflection/XmlTreeModifier.qunit.js +3 -3
  637. package/test/sap/ui/core/qunit/util/reflection/testdata/comp/Component.js +10 -0
  638. package/test/sap/ui/core/qunit/util/reflection/testsuite.reflection.qunit.html +14 -0
  639. package/test/sap/ui/core/qunit/util/reflection/testsuite.reflection.qunit.js +30 -0
  640. package/test/sap/ui/core/qunit/util/testsuite.util.qunit.js +3 -56
  641. package/test/sap/ui/core/relnotes/changes-1.126.json +1 -17
  642. package/test/sap/ui/core/relnotes/changes-1.127.json +52 -0
  643. package/test/sap/ui/core/samples/databinding/UnitTable/ui5.yaml +1 -1
  644. package/test/sap/ui/qunit/TestRunner.js +721 -521
  645. package/test/sap/ui/qunit/testrunner.css +123 -20
  646. package/test/sap/ui/qunit/testrunner.html +57 -287
  647. /package/test/sap/ui/core/qunit/{component/testdata/other → util/reflection/testdata/comp}/fragment-withTemplating.fragment.xml +0 -0
@@ -4001,7 +4001,7 @@ sap.ui.define([
4001
4001
  oContext0 = Context.create(this.oModel, oBinding, "/EMPLOYEES($uid=id-1-23)", -1,
4002
4002
  SyncPromise.resolve(Promise.resolve())),
4003
4003
  oContext1 = Context.create(this.oModel, oBinding, "/EMPLOYEES($uid=id-1-24)", -2,
4004
- SyncPromise.resolve()), // let's assume this is created, persisted, kept-alive
4004
+ SyncPromise.resolve()), // let's assume this is created, persisted, kept alive
4005
4005
  oContext2 = Context.create(this.oModel, oBinding, "/EMPLOYEES($uid=id-1-25)", -3,
4006
4006
  SyncPromise.resolve(Promise.resolve()), /*bInactive*/true),
4007
4007
  oContext3 = Context.create(this.oModel, oBinding, "/EMPLOYEES($uid=id-1-26)", -4,
@@ -4650,7 +4650,7 @@ sap.ui.define([
4650
4650
  .withExactArgs([sContext1Path]);
4651
4651
  // expectations for catch
4652
4652
  oBindingMock.expects("expand").exactly(!bSuccess && bExpanded ? 1 : 0)
4653
- .withExactArgs(sinon.match.same(oContext1), true)
4653
+ .withExactArgs(sinon.match.same(oContext1), 1, true)
4654
4654
  .returns(bExpandFailure
4655
4655
  ? SyncPromise.reject("~oExpandError~")
4656
4656
  : SyncPromise.resolve());
@@ -5965,8 +5965,9 @@ sap.ui.define([
5965
5965
  .withExactArgs("~sGroupId~", true, true, sinon.match.func).returns("~oGroupLock~");
5966
5966
  const oContext = {
5967
5967
  destroy : mustBeMocked,
5968
- fetchValue : mustBeMocked,
5969
5968
  doSetSelected : mustBeMocked,
5969
+ fetchValue : mustBeMocked,
5970
+ setPersisted : mustBeMocked,
5970
5971
  updateAfterCreate : mustBeMocked
5971
5972
  };
5972
5973
  const oCreatePromise = new SyncPromise((resolve) => {
@@ -5984,6 +5985,8 @@ sap.ui.define([
5984
5985
  .returns(iRank);
5985
5986
  const bUseContext = iRank && !bRefresh;
5986
5987
  this.mock(oContext).expects("destroy").exactly(bUseContext ? 0 : 1).withExactArgs();
5988
+ this.mock(oContext).expects("setPersisted").exactly(bUseContext ? 1 : 0)
5989
+ .withExactArgs(true);
5987
5990
  this.mock(oBinding).expects("insertContext").exactly(bUseContext ? 1 : 0)
5988
5991
  .withExactArgs(sinon.match.same(oContext), 42);
5989
5992
  oHelperMock.expects("getPrivateAnnotation").exactly(bUseContext ? 1 : 0)
@@ -9712,7 +9715,8 @@ sap.ui.define([
9712
9715
  .withExactArgs("~contextpath~", "~bindingpath~").returns("~cachepath~");
9713
9716
 
9714
9717
  oExpectation = this.mock(oBinding.oCache).expects("expand")
9715
- .withExactArgs(sinon.match.same(oGroupLock), "~cachepath~", sinon.match.func)
9718
+ .withExactArgs(sinon.match.same(oGroupLock), "~cachepath~", "~iLevels~",
9719
+ sinon.match.func)
9716
9720
  .returns(Promise.resolve().then(function () {
9717
9721
  if (bSuccess) {
9718
9722
  that.mock(oContext).expects("getModelIndex").exactly(iCount > 0 ? 1 : 0)
@@ -9741,7 +9745,7 @@ sap.ui.define([
9741
9745
  }));
9742
9746
 
9743
9747
  // code under test
9744
- oPromise = oBinding.expand(oContext, bSilent).then(function (vResult) {
9748
+ oPromise = oBinding.expand(oContext, "~iLevels~", bSilent).then(function (vResult) {
9745
9749
  assert.ok(bSuccess);
9746
9750
  if (bDataRequested && iCount) {
9747
9751
  if (bSilent) {
@@ -9761,7 +9765,7 @@ sap.ui.define([
9761
9765
  that.mock(oBinding).expects("fireDataRequested").exactly(bDataRequested ? 1 : 0)
9762
9766
  .withExactArgs();
9763
9767
  if (bDataRequested) {
9764
- oExpectation.args[0][2]();
9768
+ oExpectation.args[0][3]();
9765
9769
  }
9766
9770
 
9767
9771
  return oPromise;
@@ -9781,6 +9785,8 @@ sap.ui.define([
9781
9785
 
9782
9786
  oBinding.aContexts = [, oContext];
9783
9787
 
9788
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
9789
+
9784
9790
  assert.throws(function () {
9785
9791
  // code under test
9786
9792
  oBinding.expand(oContext);
@@ -9874,6 +9880,7 @@ sap.ui.define([
9874
9880
  oBinding.iMaxLength = 8;
9875
9881
  aContextsBefore = oBinding.aContexts.slice();
9876
9882
  assert.deepEqual(oBinding.mPreviousContextsByPath, {});
9883
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
9877
9884
  this.mock(oContext).expects("getModelIndex").exactly(iCount ? 1 : 0).withExactArgs()
9878
9885
  .returns(1);
9879
9886
  this.mock(oContext).expects("getPath").exactly(bCountGiven ? 0 : 1).withExactArgs()
@@ -9937,6 +9944,8 @@ sap.ui.define([
9937
9944
 
9938
9945
  oBinding.aContexts = [, oContext];
9939
9946
 
9947
+ this.mock(oBinding).expects("checkSuspended").withExactArgs();
9948
+
9940
9949
  assert.throws(function () {
9941
9950
  // code under test
9942
9951
  oBinding.collapse(oContext);
@@ -11299,7 +11308,7 @@ sap.ui.define([
11299
11308
  sinon.match.same(oChildContext))
11300
11309
  .callThrough(); // needed for "setIndices"
11301
11310
  this.mock(oBinding).expects("expand").exactly(bIsExpanded ? 1 : 0)
11302
- .withExactArgs(sinon.match.same(oChildContext))
11311
+ .withExactArgs(sinon.match.same(oChildContext), 1)
11303
11312
  .returns(SyncPromise.resolve());
11304
11313
  this.mock(oBinding).expects("_fireChange").exactly(bIsExpanded ? 0 : 1)
11305
11314
  .withExactArgs({reason : ChangeReason.Change});
@@ -11482,7 +11491,7 @@ sap.ui.define([
11482
11491
  .withExactArgs(sinon.match.same(oBinding.aContexts), 43,
11483
11492
  sinon.match.same(oChildContext));
11484
11493
  this.mock(oBinding).expects("expand")
11485
- .withExactArgs(sinon.match.same(oChildContext))
11494
+ .withExactArgs(sinon.match.same(oChildContext), 1)
11486
11495
  .returns(SyncPromise.reject("~error~"));
11487
11496
  this.mock(oBinding).expects("_fireChange").never();
11488
11497
 
@@ -12170,13 +12179,27 @@ sap.ui.define([
12170
12179
  //*********************************************************************************************
12171
12180
  [{in : undefined, out : +1}, {in : +1, out : +1}, {in : -1, out : -1}].forEach((oOffset, i) => {
12172
12181
  [{in : -1, out : null}, {in : undefined, out : undefined}].forEach((oResult, j) => {
12173
- QUnit.test(`fetchOrGetSibling: null/undefined #${i},${j}`, function (assert) {
12182
+ [false, true].forEach((bCreated) => {
12183
+ [false, true].forEach((bRoot) => {
12184
+ if (bCreated && oOffset.in === -1 && oResult.out !== null) {
12185
+ // out-of-place nodes have no previous sibling
12186
+ return;
12187
+ }
12188
+ if (bRoot && !bCreated || bCreated && oResult.in === undefined) {
12189
+ return;
12190
+ }
12191
+ const sTitle = `fetchOrGetSibling: null/undefined #${i},${j}; created: ${bCreated};
12192
+ root: ${bRoot}`;
12193
+
12194
+ QUnit.test(sTitle, function (assert) {
12174
12195
  const oBinding = this.bindList("/EMPLOYEES");
12175
12196
  // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
12176
12197
  // too far :-(
12177
12198
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
12178
12199
  const oNode = {
12179
12200
  iIndex : "~iIndex~",
12201
+ created : mustBeMocked,
12202
+ getParent : mustBeMocked,
12180
12203
  isDeleted : mustBeMocked,
12181
12204
  isTransient : mustBeMocked
12182
12205
  };
@@ -12185,33 +12208,60 @@ sap.ui.define([
12185
12208
  oBinding.aContexts["~iIndex~"] = oNode;
12186
12209
  const oCheckSuspendedExpectation
12187
12210
  = this.mock(oBinding).expects("checkSuspended").withExactArgs();
12188
- this.mock(oBinding).expects("lockGroup").never();
12211
+ this.mock(oNode).expects("created").withExactArgs().returns(bCreated ? {} : undefined);
12212
+ this.mock(oNode).expects("getParent").exactly(bCreated && oOffset.in !== -1 ? 1 : 0)
12213
+ .withExactArgs().returns(bRoot ? null : {iIndex : "~oParent.iIndex~"});
12189
12214
  const oCache = {
12215
+ get1stInPlaceChildIndex : mustBeMocked,
12190
12216
  getSiblingIndex : mustBeMocked
12217
+ // NO: requestSiblingIndex
12191
12218
  };
12192
12219
  oBinding.oCache = oCache;
12220
+ const oGet1stInPlaceChildIndexExpectation = this.mock(oCache)
12221
+ .expects("get1stInPlaceChildIndex").exactly(bCreated && oOffset.in !== -1 ? 1 : 0)
12222
+ .withExactArgs(bRoot ? -1 : "~oParent.iIndex~").returns(oResult.in);
12193
12223
  const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
12224
+ .exactly(bCreated ? 0 : 1)
12194
12225
  .withExactArgs("~iIndex~", oOffset.out).returns(oResult.in);
12195
12226
  this.mock(oBinding).expects("fetchContexts").never();
12227
+ this.mock(oBinding).expects("lockGroup").never();
12196
12228
  this.mock(oBinding).expects("requestContexts").never();
12197
12229
 
12198
12230
  // code under test
12199
12231
  assert.strictEqual(oBinding.fetchOrGetSibling(oNode, oOffset.in), oResult.out);
12200
12232
 
12201
- sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
12233
+ if (bCreated && oOffset.in === -1) {
12234
+ // #get1stInPlaceChildIndex never called
12235
+ } else {
12236
+ sinon.assert.callOrder(oCheckSuspendedExpectation, bCreated
12237
+ ? oGet1stInPlaceChildIndexExpectation
12238
+ : oGetSiblingIndexExpectation);
12239
+ }
12202
12240
  });
12241
+ });
12242
+ });
12203
12243
  });
12204
12244
  });
12205
12245
 
12206
12246
  //*********************************************************************************************
12207
12247
  [0, 1, 42].forEach((iIndex) => {
12208
- QUnit.test(`fetchOrGetSibling: no request, index = ${iIndex}`, function (assert) {
12248
+ [false, true].forEach((bCreated) => {
12249
+ [false, true].forEach((bRoot) => {
12250
+ if (bRoot && !bCreated) {
12251
+ return;
12252
+ }
12253
+ const sTitle = `fetchOrGetSibling: no request, index = ${iIndex}; created: ${bCreated};
12254
+ root: ${bRoot}`;
12255
+
12256
+ QUnit.test(sTitle, function (assert) {
12209
12257
  const oBinding = this.bindList("/EMPLOYEES");
12210
12258
  // Note: autoExpandSelect at model would be required for hierarchyQualifier, but that leads
12211
12259
  // too far :-(
12212
12260
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
12213
12261
  const oNode = {
12214
12262
  iIndex : "~iIndex~",
12263
+ created : mustBeMocked,
12264
+ getParent : mustBeMocked,
12215
12265
  isDeleted : mustBeMocked,
12216
12266
  isTransient : mustBeMocked
12217
12267
  };
@@ -12220,12 +12270,20 @@ sap.ui.define([
12220
12270
  oBinding.aContexts["~iIndex~"] = oNode;
12221
12271
  const oCheckSuspendedExpectation
12222
12272
  = this.mock(oBinding).expects("checkSuspended").withExactArgs();
12223
- this.mock(oBinding).expects("lockGroup").never();
12273
+ this.mock(oNode).expects("created").withExactArgs().returns(bCreated ? {} : undefined);
12274
+ this.mock(oNode).expects("getParent").exactly(bCreated ? 1 : 0)
12275
+ .withExactArgs().returns(bRoot ? null : {iIndex : "~oParent.iIndex~"});
12224
12276
  const oCache = {
12277
+ get1stInPlaceChildIndex : mustBeMocked,
12225
12278
  getSiblingIndex : mustBeMocked
12279
+ // NO: requestSiblingIndex
12226
12280
  };
12227
12281
  oBinding.oCache = oCache;
12282
+ const oGet1stInPlaceChildIndexExpectation = this.mock(oCache)
12283
+ .expects("get1stInPlaceChildIndex").exactly(bCreated ? 1 : 0)
12284
+ .withExactArgs(bRoot ? -1 : "~oParent.iIndex~").returns(iIndex);
12228
12285
  const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
12286
+ .exactly(bCreated ? 0 : 1)
12229
12287
  .withExactArgs("~iIndex~", +1).returns(iIndex);
12230
12288
  this.mock(oBinding).expects("fetchContexts")
12231
12289
  .withExactArgs(iIndex, 1, 0, sinon.match.same(_GroupLock.$cached))
@@ -12233,12 +12291,17 @@ sap.ui.define([
12233
12291
  oBinding.aContexts[iIndex] = "~oSiblingContext~";
12234
12292
  return "n/a";
12235
12293
  });
12294
+ this.mock(oBinding).expects("lockGroup").never();
12236
12295
  this.mock(oBinding).expects("requestContexts").never();
12237
12296
 
12238
12297
  // code under test
12239
12298
  assert.strictEqual(oBinding.fetchOrGetSibling(oNode), "~oSiblingContext~");
12240
12299
 
12241
- sinon.assert.callOrder(oCheckSuspendedExpectation, oGetSiblingIndexExpectation);
12300
+ sinon.assert.callOrder(oCheckSuspendedExpectation, bCreated
12301
+ ? oGet1stInPlaceChildIndexExpectation
12302
+ : oGetSiblingIndexExpectation);
12303
+ });
12304
+ });
12242
12305
  });
12243
12306
  });
12244
12307
 
@@ -12251,6 +12314,7 @@ sap.ui.define([
12251
12314
  oBinding.mParameters.$$aggregation = {hierarchyQualifier : "X"};
12252
12315
  const oNode = {
12253
12316
  iIndex : "~iIndex~",
12317
+ created : mustBeMocked,
12254
12318
  isDeleted : mustBeMocked,
12255
12319
  isTransient : mustBeMocked
12256
12320
  };
@@ -12259,7 +12323,7 @@ sap.ui.define([
12259
12323
  oBinding.aContexts["~iIndex~"] = oNode;
12260
12324
  const oCheckSuspendedExpectation
12261
12325
  = this.mock(oBinding).expects("checkSuspended").withExactArgs();
12262
- this.mock(oBinding).expects("lockGroup").withExactArgs().returns("~oGroupLock~");
12326
+ this.mock(oNode).expects("created").withExactArgs().returns(undefined);
12263
12327
  const oCache = {
12264
12328
  getSiblingIndex : mustBeMocked,
12265
12329
  requestSiblingIndex : mustBeMocked
@@ -12268,6 +12332,7 @@ sap.ui.define([
12268
12332
  const oGetSiblingIndexExpectation = this.mock(oCache).expects("getSiblingIndex")
12269
12333
  .withExactArgs("~iIndex~", -1).returns(undefined);
12270
12334
  this.mock(oBinding).expects("fetchContexts").never();
12335
+ this.mock(oBinding).expects("lockGroup").withExactArgs().returns("~oGroupLock~");
12271
12336
  this.mock(oCache).expects("requestSiblingIndex")
12272
12337
  .withExactArgs("~iIndex~", -1, "~oGroupLock~").resolves(bNull ? -1 : 42);
12273
12338
  this.mock(oBinding).expects("requestContexts").exactly(bNull ? 0 : 1)
@@ -1160,6 +1160,7 @@ sap.ui.define([
1160
1160
  reportError : function (_sLogMessage, _sReportingClassName, oError) {
1161
1161
  throw oError;
1162
1162
  },
1163
+ _requestAnnotationChanges : mustBeMocked,
1163
1164
  resolve : ODataModel.prototype.resolve
1164
1165
  };
1165
1166
  this.oMetaModel = new ODataMetaModel(oMetadataRequestor, sUrl, undefined, this.oModel);
@@ -1181,12 +1182,14 @@ sap.ui.define([
1181
1182
  * returning a clone of the given scope.
1182
1183
  *
1183
1184
  * @param {object} mScope0
1185
+ * @returns {object} the cloned mScope0
1184
1186
  */
1185
1187
  expectFetchEntityContainer : function (mScope0) {
1186
1188
  mScope0 = clone(mScope0);
1187
1189
  this.oMetaModel.validate("n/a", mScope0); // fill mSchema2MetadataUrl!
1188
1190
  this.oMetaModelMock.expects("fetchEntityContainer").atLeast(1)
1189
1191
  .returns(SyncPromise.resolve(mScope0));
1192
+ return mScope0;
1190
1193
  },
1191
1194
 
1192
1195
  /**
@@ -1331,7 +1334,7 @@ sap.ui.define([
1331
1334
  QUnit.test(title, function (assert) {
1332
1335
  var oRequestorMock = this.mock(this.oMetaModel.oRequestor),
1333
1336
  aReadResults,
1334
- mRootScope = {},
1337
+ mRootScope = {$Annotations : {}},
1335
1338
  oSyncPromise,
1336
1339
  that = this;
1337
1340
 
@@ -1352,6 +1355,7 @@ sap.ui.define([
1352
1355
 
1353
1356
  this.oMetaModel.aAnnotationUris = aAnnotationURI;
1354
1357
  this.oMetaModelMock.expects("_mergeAnnotations").never();
1358
+ this.oMetaModelMock.expects("_changeAnnotations").never();
1355
1359
  expectReads(true);
1356
1360
 
1357
1361
  // code under test
@@ -1366,7 +1370,15 @@ sap.ui.define([
1366
1370
  // now test [bPrefetch=false]
1367
1371
  expectReads();
1368
1372
  this.oMetaModelMock.expects("_mergeAnnotations")
1369
- .withExactArgs(mRootScope, aReadResults);
1373
+ .withExactArgs(sinon.match.same(mRootScope), aReadResults);
1374
+ this.mock(this.oModel).expects("_requestAnnotationChanges").withExactArgs()
1375
+ .resolves("~aAnnotationChanges~");
1376
+ this.oMetaModelMock.expects("_changeAnnotations")
1377
+ .withExactArgs(sinon.match.same(mRootScope.$Annotations))
1378
+ .callsFake(function () {
1379
+ assert.strictEqual(that.oMetaModel.aAnnotationChanges, "~aAnnotationChanges~");
1380
+ assert.strictEqual(oSyncPromise.isPending(), false);
1381
+ });
1370
1382
 
1371
1383
  // code under test
1372
1384
  oSyncPromise = this.oMetaModel.fetchEntityContainer();
@@ -1394,6 +1406,7 @@ sap.ui.define([
1394
1406
  this.mock(this.oMetaModel.oRequestor).expects("read")
1395
1407
  .withExactArgs(this.oMetaModel.sUrl, false, undefined)
1396
1408
  .resolves({});
1409
+ this.mock(this.oModel).expects("_requestAnnotationChanges").withExactArgs().resolves();
1397
1410
  this.oMetaModelMock.expects("_mergeAnnotations").throws(oError);
1398
1411
 
1399
1412
  return this.oMetaModel.fetchEntityContainer().then(function () {
@@ -1794,6 +1807,7 @@ sap.ui.define([
1794
1807
  "/T€AMS/@sapui.name" : "tea_busi.TEAM",
1795
1808
  "/T€AMS/Team_Id@sapui.name" : "Team_Id",
1796
1809
  "/T€AMS/TEAM_2_EMPLOYEES@sapui.name" : "TEAM_2_EMPLOYEES",
1810
+ "/T€AMS/$NavigationPropertyBinding/TEAM_2_EMPLOYEES@sapui.name" : "EMPLOYEES", // no slash
1797
1811
  "/T€AMS/$NavigationPropertyBinding/TEAM_2_EMPLOYEES/@sapui.name" : "tea_busi.Worker",
1798
1812
  "/T€AMS/$NavigationPropertyBinding/TEAM_2_EMPLOYEES/AGE@sapui.name" : "AGE",
1799
1813
  "/T€AMS@T€AMS@sapui.name" : "@T€AMS",
@@ -1811,8 +1825,10 @@ sap.ui.define([
1811
1825
  "/T€AMS/tea_busi.NewAction/Team_Id/@sapui.name" : "name.space.Id", // due to $Type insertion
1812
1826
  "/name.space.OverloadedAction@sapui.name" : "name.space.OverloadedAction",
1813
1827
  "/name.space.OverloadedAction/_it@sapui.name" : "_it",
1814
- // "/TEAMS/$NavigationPropertyBinding/TEAM_2_CONTAINED_S%2FS_2_EMPLOYEE/@sapui.name"
1815
- // : "TEAM_2_CONTAINED_S%2FS_2_EMPLOYEE",
1828
+ "/TEAMS/$NavigationPropertyBinding/TEAM_2_CONTAINED_S%2FS_2_EMPLOYEE@sapui.name"
1829
+ : "EMPLOYEES",
1830
+ "/TEAMS/$NavigationPropertyBinding/TEAM_2_CONTAINED_S%2FS_2_EMPLOYEE/@sapui.name"
1831
+ : "tea_busi.Worker", // slash makes a difference!
1816
1832
  // .../$ ----------------------------------------------------------------------------------
1817
1833
  "/$" : mScope, // @see #fetchData, but no clone
1818
1834
  // "/$@sapui.name" --> "Unsupported path before @sapui.name"
@@ -1828,7 +1844,15 @@ sap.ui.define([
1828
1844
  "/T€AMS/name.space.OverloadedAction@Core.OperationAvailable/$Path/$" : oTeamData.Name,
1829
1845
  "/T€AMS/name.space.OverloadedAction/parameter1@Core.OperationAvailable/$Path/$"
1830
1846
  : mScope["tea_busi.ContainedS"].Id,
1831
- "/T€AMS/name.space.OverloadedAction/_it/@Common.Text/$Path/$" : oTeamData.Name
1847
+ "/T€AMS/name.space.OverloadedAction/_it/@Common.Text/$Path/$" : oTeamData.Name,
1848
+ // @$ui5.target ---------------------------------------------------------------------------
1849
+ "/@$ui5.target" : "tea_busi.DefaultContainer",
1850
+ "/T€AMS@$ui5.target" : "tea_busi.DefaultContainer/T€AMS",
1851
+ "/T€AMS/@$ui5.target" : "tea_busi.TEAM",
1852
+ "/T€AMS/Team_Id@$ui5.target" : "tea_busi.TEAM/Team_Id",
1853
+ "/T€AMS/TEAM_2_EMPLOYEES@$ui5.target" : "tea_busi.TEAM/TEAM_2_EMPLOYEES", // not needed(?)
1854
+ "/T€AMS/TEAM_2_EMPLOYEES/@$ui5.target" : "tea_busi.Worker",
1855
+ "/T€AMS/TEAM_2_EMPLOYEES/AGE@$ui5.target" : "tea_busi.Worker/AGE"
1832
1856
  }, function (sPath, vResult) {
1833
1857
  QUnit.test("fetchObject: " + sPath, function (assert) {
1834
1858
  var oSyncPromise;
@@ -2006,6 +2030,14 @@ sap.ui.define([
2006
2030
  // Unsupported path after @sapui.name -------------------------------------------------
2007
2031
  "/@sapui.name/foo" : "Unsupported path after @sapui.name",
2008
2032
  "/$EntityContainer/T€AMS/@sapui.name/foo" : "Unsupported path after @sapui.name",
2033
+ // Unsupported path before @$ui5.target -----------------------------------------------
2034
+ "/$@$ui5.target" : "Unsupported path before @$ui5.target",
2035
+ "/OverloadedAction/@$ui5.overload/0/@$ui5.target" // no external targeting here
2036
+ : "Unsupported path before @$ui5.target",
2037
+ "/ChangeManagerOfTeam/$Action/0/$ReturnType/@$ui5.target" // no external targeting here
2038
+ : "Unsupported path before @$ui5.target",
2039
+ // Unsupported path after @$ui5.target -------------------------------------------------
2040
+ "/T€AMS/@$ui5.target/foo" : "Unsupported path after @$ui5.target",
2009
2041
  // Unsupported path after @@... -------------------------------------------------------
2010
2042
  "/EMPLOYEES/@UI.Facets/1/Target/$AnnotationPath@@this.is.ignored/foo"
2011
2043
  : "Unsupported path after @@this.is.ignored",
@@ -2483,7 +2515,7 @@ sap.ui.define([
2483
2515
  }));
2484
2516
  }
2485
2517
 
2486
- this.expectFetchEntityContainer(mXServiceScope);
2518
+ const mClonedScope = this.expectFetchEntityContainer(mXServiceScope);
2487
2519
  oRequestorMock.expects("read")
2488
2520
  .withExactArgs("/a/default/iwbep/tea_busi_product/0001/$metadata")
2489
2521
  .resolves(mClonedProductScope);
@@ -2493,6 +2525,8 @@ sap.ui.define([
2493
2525
  oRequestorMock.expects("read")
2494
2526
  .withExactArgs("/empty/$metadata")
2495
2527
  .resolves(mMostlyEmptyScope);
2528
+ this.oMetaModelMock.expects("_changeAnnotations")
2529
+ .withExactArgs(sinon.match.same(mClonedScope.$Annotations));
2496
2530
 
2497
2531
  expectDebug("Namespace tea_busi_product.v0001. found in $Include"
2498
2532
  + " of /a/default/iwbep/tea_busi_product/0001/$metadata"
@@ -2651,6 +2685,16 @@ sap.ui.define([
2651
2685
  that = this;
2652
2686
 
2653
2687
  this.expectFetchEntityContainer(mScope0);
2688
+
2689
+ {
2690
+ const oSyncPromise
2691
+ // code under test (do not fetch schema)
2692
+ = this.oMetaModel.fetchObject("/tea_busi_product.v0001.@$ui5.target");
2693
+
2694
+ assert.strictEqual(oSyncPromise.isFulfilled(), true);
2695
+ assert.strictEqual(oSyncPromise.getResult(), undefined);
2696
+ }
2697
+
2654
2698
  oRequestorMock.expects("read")
2655
2699
  .withExactArgs("/a/default/iwbep/tea_busi_product/0001/$metadata")
2656
2700
  .resolves(mReferencedScope);
@@ -5156,6 +5200,46 @@ sap.ui.define([
5156
5200
  }
5157
5201
  );
5158
5202
 
5203
+ //*********************************************************************************************
5204
+ QUnit.test("_changeAnnotations", function (assert) {
5205
+ const mAnnotations = {};
5206
+
5207
+ // code under test
5208
+ this.oMetaModel._changeAnnotations(mAnnotations);
5209
+
5210
+ assert.deepEqual(mAnnotations, {}, "nothing to do yet");
5211
+
5212
+ this.oMetaModel.aAnnotationChanges = [{
5213
+ path : "/first/part@second/part",
5214
+ value : "foo"
5215
+ }, {
5216
+ path : "/first/part@other/part",
5217
+ value : "bar"
5218
+ }, {
5219
+ path : "/not/yet/available@n/a",
5220
+ value : "n/a"
5221
+ }, {
5222
+ path : "/no/target@n/a",
5223
+ value : "n/a"
5224
+ }];
5225
+ this.oMetaModelMock.expects("getObject").twice().withExactArgs("/first/part@$ui5.target")
5226
+ .returns("~target~");
5227
+ this.oMetaModelMock.expects("getObject").withExactArgs("/not/yet/available@$ui5.target")
5228
+ .returns(undefined);
5229
+ this.oMetaModelMock.expects("getObject").withExactArgs("/no/target@$ui5.target")
5230
+ .returns(undefined);
5231
+
5232
+ // code under test
5233
+ this.oMetaModel._changeAnnotations(mAnnotations);
5234
+
5235
+ assert.deepEqual(mAnnotations, {
5236
+ "~target~" : {
5237
+ "@second/part" : "foo",
5238
+ "@other/part" : "bar"
5239
+ }
5240
+ });
5241
+ });
5242
+
5159
5243
  //*********************************************************************************************
5160
5244
  QUnit.test("getAbsoluteServiceUrl", function (assert) {
5161
5245
  var oModel = new ODataModel({serviceUrl : "/Foo/DataService/"}),