@openui5/sap.ui.core 1.93.3 → 1.96.2

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 (416) hide show
  1. package/.eslintrc.json +13 -2
  2. package/.reuse/dep5 +6 -11
  3. package/THIRDPARTY.txt +10 -16
  4. package/package.json +1 -1
  5. package/src/jquery.sap.global.js +5 -2
  6. package/src/jquery.sap.properties.js +1 -1
  7. package/src/jquery.sap.resources.js +1 -1
  8. package/src/jquery.sap.script.js +1 -1
  9. package/src/jquery.sap.storage.js +3 -3
  10. package/src/jquery.sap.stubs.js +2 -1
  11. package/src/jquery.sap.trace.js +2 -1
  12. package/src/sap/base/i18n/ResourceBundle.js +6 -2
  13. package/src/sap/base/strings/whitespaceReplacer.js +52 -0
  14. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  15. package/src/sap/base/util/restricted/_castArray.js +1 -1
  16. package/src/sap/base/util/restricted/_compact.js +1 -1
  17. package/src/sap/base/util/restricted/_curry.js +1 -1
  18. package/src/sap/base/util/restricted/_debounce.js +1 -1
  19. package/src/sap/base/util/restricted/_difference.js +1 -1
  20. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  21. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  23. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  24. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  25. package/src/sap/base/util/restricted/_flatten.js +1 -1
  26. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  27. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  28. package/src/sap/base/util/restricted/_intersection.js +1 -1
  29. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  30. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  32. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  33. package/src/sap/base/util/restricted/_isNil.js +1 -1
  34. package/src/sap/base/util/restricted/_max.js +1 -1
  35. package/src/sap/base/util/restricted/_merge.js +1 -1
  36. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  37. package/src/sap/base/util/restricted/_min.js +1 -1
  38. package/src/sap/base/util/restricted/_omit.js +1 -1
  39. package/src/sap/base/util/restricted/_pick.js +1 -1
  40. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  41. package/src/sap/base/util/restricted/_throttle.js +1 -1
  42. package/src/sap/base/util/restricted/_toArray.js +1 -1
  43. package/src/sap/base/util/restricted/_union.js +1 -1
  44. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  45. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  46. package/src/sap/base/util/restricted/_uniq.js +1 -1
  47. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  48. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  49. package/src/sap/base/util/restricted/_without.js +1 -1
  50. package/src/sap/base/util/restricted/_xor.js +1 -1
  51. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  52. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  53. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  54. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  55. package/src/sap/ui/Device.js +37 -42
  56. package/src/sap/ui/Global.js +8 -7
  57. package/src/sap/ui/base/DataType.js +14 -8
  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/ExpressionParser.js +9 -6
  61. package/src/sap/ui/base/Interface.js +3 -49
  62. package/src/sap/ui/base/ManagedObject.js +12 -7
  63. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  64. package/src/sap/ui/base/Metadata.js +1 -1
  65. package/src/sap/ui/base/Object.js +49 -4
  66. package/src/sap/ui/base/ObjectPool.js +1 -1
  67. package/src/sap/ui/base/syncXHRFix.js +2 -1
  68. package/src/sap/ui/core/.library +5 -5
  69. package/src/sap/ui/core/AppCacheBuster.js +4 -4
  70. package/src/sap/ui/core/BusyIndicator.js +1 -11
  71. package/src/sap/ui/core/Component.js +300 -140
  72. package/src/sap/ui/core/ComponentContainer.js +24 -8
  73. package/src/sap/ui/core/ComponentMetadata.js +14 -3
  74. package/src/sap/ui/core/ComponentSupport.js +1 -1
  75. package/src/sap/ui/core/Configuration.js +67 -31
  76. package/src/sap/ui/core/Control.js +1 -1
  77. package/src/sap/ui/core/Core.js +103 -25
  78. package/src/sap/ui/core/CustomData.js +1 -1
  79. package/src/sap/ui/core/CustomizingConfiguration.js +35 -260
  80. package/src/sap/ui/core/DeclarativeSupport.js +3 -2
  81. package/src/sap/ui/core/Element.js +1 -1
  82. package/src/sap/ui/core/ElementMetadata.js +4 -2
  83. package/src/sap/ui/core/EnabledPropagator.js +91 -73
  84. package/src/sap/ui/core/EventBus.js +1 -1
  85. package/src/sap/ui/core/ExtensionPoint.js +7 -14
  86. package/src/sap/ui/core/Fragment.js +30 -32
  87. package/src/sap/ui/core/HTML.js +1 -1
  88. package/src/sap/ui/core/History.js +1 -1
  89. package/src/sap/ui/core/Icon.js +7 -8
  90. package/src/sap/ui/core/IconPool.js +26 -1097
  91. package/src/sap/ui/core/IconRenderer.js +6 -6
  92. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  93. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  94. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  95. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  96. package/src/sap/ui/core/InvisibleText.js +1 -1
  97. package/src/sap/ui/core/Item.js +1 -1
  98. package/src/sap/ui/core/LabelEnablement.js +1 -1
  99. package/src/sap/ui/core/LayoutData.js +1 -1
  100. package/src/sap/ui/core/ListItem.js +1 -1
  101. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  102. package/src/sap/ui/core/Locale.js +26 -4
  103. package/src/sap/ui/core/LocaleData.js +1 -1
  104. package/src/sap/ui/core/Manifest.js +4 -61
  105. package/src/sap/ui/core/Message.js +1 -1
  106. package/src/sap/ui/core/Patcher.js +27 -3
  107. package/src/sap/ui/core/Placeholder.js +28 -15
  108. package/src/sap/ui/core/RenderManager.js +36 -6
  109. package/src/sap/ui/core/Renderer.js +13 -3
  110. package/src/sap/ui/core/ResizeHandler.js +1 -1
  111. package/src/sap/ui/core/ScrollBar.js +2 -2
  112. package/src/sap/ui/core/SeparatorItem.js +1 -1
  113. package/src/sap/ui/core/ShortcutHintsMixin.js +14 -7
  114. package/src/sap/ui/core/Title.js +1 -1
  115. package/src/sap/ui/core/TooltipBase.js +1 -1
  116. package/src/sap/ui/core/UIArea.js +1 -1
  117. package/src/sap/ui/core/UIComponent.js +42 -16
  118. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  119. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  120. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  121. package/src/sap/ui/core/XMLComposite.js +2 -2
  122. package/src/sap/ui/core/XMLCompositeMetadata.js +2 -2
  123. package/src/sap/ui/core/XMLTemplateProcessor.js +116 -41
  124. package/src/sap/ui/core/_IconRegistry.js +1148 -0
  125. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  126. package/src/sap/ui/core/delegate/ScrollEnablement.js +6 -3
  127. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  128. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  129. package/src/sap/ui/core/dnd/DragInfo.js +2 -2
  130. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  131. package/src/sap/ui/core/format/NumberFormat.js +16 -1
  132. package/src/sap/ui/core/hyphenation/Hyphenation.js +73 -221
  133. package/src/sap/ui/core/hyphenation/HyphenationTestingWords.js +11 -10
  134. package/src/sap/ui/core/library.js +3 -3
  135. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  136. package/src/sap/ui/core/message/Message.js +1 -1
  137. package/src/sap/ui/core/message/MessageManager.js +13 -15
  138. package/src/sap/ui/core/message/MessageParser.js +1 -1
  139. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  140. package/src/sap/ui/core/messagebundle_de.properties +1 -1
  141. package/src/sap/ui/core/messagebundle_fr.properties +1 -1
  142. package/src/sap/ui/core/messagebundle_it.properties +1 -1
  143. package/src/sap/ui/core/messagebundle_pl.properties +1 -1
  144. package/src/sap/ui/core/messagebundle_th.properties +2 -2
  145. package/src/sap/ui/core/mvc/Controller.js +38 -19
  146. package/src/sap/ui/core/mvc/ControllerExtensionProvider.js +30 -32
  147. package/src/sap/ui/core/mvc/ControllerMetadata.js +18 -18
  148. package/src/sap/ui/core/mvc/HTMLView.js +2 -2
  149. package/src/sap/ui/core/mvc/JSONView.js +2 -2
  150. package/src/sap/ui/core/mvc/JSView.js +2 -2
  151. package/src/sap/ui/core/mvc/TemplateView.js +2 -2
  152. package/src/sap/ui/core/mvc/View.js +58 -85
  153. package/src/sap/ui/core/mvc/XMLView.js +2 -2
  154. package/src/sap/ui/core/mvc/XMLViewRenderer.js +17 -20
  155. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  156. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  157. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  158. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  159. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  160. package/src/sap/ui/core/routing/History.js +10 -2
  161. package/src/sap/ui/core/routing/Router.js +8 -1
  162. package/src/sap/ui/core/routing/Target.js +13 -0
  163. package/src/sap/ui/core/routing/Targets.js +13 -2
  164. package/src/sap/ui/core/routing/async/Route.js +1 -1
  165. package/src/sap/ui/core/routing/async/Target.js +353 -259
  166. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  167. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  168. package/src/sap/ui/core/service/Service.js +1 -1
  169. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  170. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  171. package/src/sap/ui/core/support/BootSupportTool.js +11 -0
  172. package/src/sap/ui/core/support/InteractionTree.css +4 -0
  173. package/src/sap/ui/core/support/Plugin.js +1 -1
  174. package/src/sap/ui/core/support/Support.js +1 -1
  175. package/src/sap/ui/core/support/ViewInfo.css +599 -0
  176. package/src/sap/ui/core/support/controls/InteractionTree.js +352 -222
  177. package/src/sap/ui/core/support/controls/ObjectViewer.js +3 -41
  178. package/src/sap/ui/core/support/controls/TimelineOverview.js +49 -24
  179. package/src/sap/ui/core/support/controls/TreeViewer.js +12 -58
  180. package/src/sap/ui/core/support/plugins/ControlTree.js +59 -68
  181. package/src/sap/ui/core/support/plugins/Debugging.js +9 -11
  182. package/src/sap/ui/core/support/plugins/Interaction.js +2 -2
  183. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  184. package/src/sap/ui/core/support/plugins/Performance.js +147 -75
  185. package/src/sap/ui/core/support/plugins/Selector.js +19 -24
  186. package/src/sap/ui/core/support/plugins/TechInfo.js +5 -5
  187. package/src/sap/ui/core/support/plugins/Trace.js +95 -32
  188. package/src/sap/ui/core/support/plugins/ViewInfo.js +9 -73
  189. package/src/sap/ui/core/support/support.css +109 -14
  190. package/src/sap/ui/core/support/support.html +6 -2
  191. package/src/sap/ui/core/support/techinfo/TechnicalInfo.fragment.xml +1 -0
  192. package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +149 -72
  193. package/src/sap/ui/core/themes/base/Icon.less +9 -0
  194. package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
  195. package/src/sap/ui/core/theming/Parameters.js +6 -4
  196. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  197. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  198. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  199. package/src/sap/ui/core/tmpl/Template.js +10 -28
  200. package/src/sap/ui/core/tmpl/TemplateControl.js +4 -4
  201. package/src/sap/ui/core/tmpl/_parsePath.js +35 -0
  202. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  203. package/src/sap/ui/core/util/DraftEnabledMockServer.js +9 -4
  204. package/src/sap/ui/core/util/Export.js +1 -1
  205. package/src/sap/ui/core/util/ExportCell.js +1 -1
  206. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  207. package/src/sap/ui/core/util/ExportRow.js +1 -1
  208. package/src/sap/ui/core/util/ExportType.js +1 -1
  209. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  210. package/src/sap/ui/core/util/File.js +1 -1
  211. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  212. package/src/sap/ui/core/util/MockServer.js +5 -5
  213. package/src/sap/ui/core/util/MockServerAnnotationsHandler.js +3 -2
  214. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  215. package/src/sap/ui/core/util/XMLPreprocessor.js +11 -12
  216. package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +136 -63
  217. package/src/sap/ui/core/util/reflection/JsControlTreeModifier.js +170 -153
  218. package/src/sap/ui/core/util/reflection/XmlTreeModifier.js +424 -293
  219. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  220. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  221. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  222. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  223. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  224. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  225. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  226. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  227. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  228. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  229. package/src/sap/ui/debug/ControlTree.js +10 -4
  230. package/src/sap/ui/debug/DebugEnv.js +3 -4
  231. package/src/sap/ui/debug/Highlighter.js +8 -2
  232. package/src/sap/ui/debug/PropertyList.css +55 -0
  233. package/src/sap/ui/debug/PropertyList.js +111 -182
  234. package/src/sap/ui/model/Binding.js +174 -118
  235. package/src/sap/ui/model/ClientContextBinding.js +1 -1
  236. package/src/sap/ui/model/ClientListBinding.js +1 -3
  237. package/src/sap/ui/model/ClientModel.js +4 -4
  238. package/src/sap/ui/model/ClientPropertyBinding.js +4 -2
  239. package/src/sap/ui/model/ClientTreeBinding.js +15 -9
  240. package/src/sap/ui/model/ClientTreeBindingAdapter.js +28 -23
  241. package/src/sap/ui/model/CompositeBinding.js +98 -77
  242. package/src/sap/ui/model/CompositeDataState.js +2 -2
  243. package/src/sap/ui/model/CompositeType.js +2 -2
  244. package/src/sap/ui/model/Context.js +4 -2
  245. package/src/sap/ui/model/ContextBinding.js +6 -14
  246. package/src/sap/ui/model/DataState.js +2 -2
  247. package/src/sap/ui/model/Filter.js +255 -53
  248. package/src/sap/ui/model/FilterOperator.js +1 -1
  249. package/src/sap/ui/model/FilterProcessor.js +27 -17
  250. package/src/sap/ui/model/FilterType.js +1 -1
  251. package/src/sap/ui/model/ListBinding.js +180 -117
  252. package/src/sap/ui/model/MetaModel.js +4 -9
  253. package/src/sap/ui/model/Model.js +345 -294
  254. package/src/sap/ui/model/PropertyBinding.js +92 -58
  255. package/src/sap/ui/model/SelectionModel.js +2 -2
  256. package/src/sap/ui/model/SimpleType.js +2 -2
  257. package/src/sap/ui/model/Sorter.js +1 -1
  258. package/src/sap/ui/model/SorterProcessor.js +1 -1
  259. package/src/sap/ui/model/StaticBinding.js +1 -1
  260. package/src/sap/ui/model/TreeAutoExpandMode.js +2 -2
  261. package/src/sap/ui/model/TreeBinding.js +1 -1
  262. package/src/sap/ui/model/TreeBindingAdapter.js +251 -100
  263. package/src/sap/ui/model/TreeBindingCompatibilityAdapter.js +16 -9
  264. package/src/sap/ui/model/TreeBindingUtils.js +1 -0
  265. package/src/sap/ui/model/Type.js +1 -1
  266. package/src/sap/ui/model/analytics/AnalyticalBinding.js +8 -4
  267. package/src/sap/ui/model/analytics/AnalyticalTreeBindingAdapter.js +1 -1
  268. package/src/sap/ui/model/analytics/AnalyticalVersionInfo.js +1 -1
  269. package/src/sap/ui/model/analytics/BatchResponseCollector.js +1 -1
  270. package/src/sap/ui/model/analytics/ODataModelAdapter.js +1 -1
  271. package/src/sap/ui/model/analytics/odata4analytics.js +34 -25
  272. package/src/sap/ui/model/base/ManagedObjectModel.js +4 -0
  273. package/src/sap/ui/model/json/JSONListBinding.js +8 -5
  274. package/src/sap/ui/model/json/JSONModel.js +24 -15
  275. package/src/sap/ui/model/json/JSONPropertyBinding.js +4 -3
  276. package/src/sap/ui/model/json/JSONTreeBinding.js +1 -1
  277. package/src/sap/ui/model/message/MessageListBinding.js +6 -3
  278. package/src/sap/ui/model/message/MessageModel.js +23 -15
  279. package/src/sap/ui/model/message/MessagePropertyBinding.js +2 -2
  280. package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
  281. package/src/sap/ui/model/odata/AnnotationParser.js +1 -1
  282. package/src/sap/ui/model/odata/CountMode.js +1 -1
  283. package/src/sap/ui/model/odata/Filter.js +1 -1
  284. package/src/sap/ui/model/odata/ODataAnnotations.js +2 -2
  285. package/src/sap/ui/model/odata/ODataContextBinding.js +1 -1
  286. package/src/sap/ui/model/odata/ODataListBinding.js +1 -1
  287. package/src/sap/ui/model/odata/ODataMessageParser.js +2 -2
  288. package/src/sap/ui/model/odata/ODataMetaModel.js +5 -3
  289. package/src/sap/ui/model/odata/ODataMetadata.js +2 -2
  290. package/src/sap/ui/model/odata/ODataModel.js +8 -7
  291. package/src/sap/ui/model/odata/ODataPropertyBinding.js +1 -1
  292. package/src/sap/ui/model/odata/ODataTreeBinding.js +65 -33
  293. package/src/sap/ui/model/odata/ODataTreeBindingAdapter.js +1 -1
  294. package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +2 -2
  295. package/src/sap/ui/model/odata/ODataUtils.js +13 -11
  296. package/src/sap/ui/model/odata/OperationMode.js +1 -1
  297. package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +1 -1
  298. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  299. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  300. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  301. package/src/sap/ui/model/odata/type/Date.js +1 -1
  302. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  303. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  304. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  305. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  306. package/src/sap/ui/model/odata/type/Double.js +1 -1
  307. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  308. package/src/sap/ui/model/odata/type/Int.js +1 -1
  309. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  310. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  311. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  312. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  313. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  314. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  315. package/src/sap/ui/model/odata/type/Single.js +1 -1
  316. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  317. package/src/sap/ui/model/odata/type/String.js +1 -1
  318. package/src/sap/ui/model/odata/type/Time.js +1 -1
  319. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  320. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  321. package/src/sap/ui/model/odata/v2/Context.js +81 -9
  322. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +3 -3
  323. package/src/sap/ui/model/odata/v2/ODataContextBinding.js +39 -49
  324. package/src/sap/ui/model/odata/v2/ODataListBinding.js +236 -73
  325. package/src/sap/ui/model/odata/v2/ODataModel.js +314 -164
  326. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +110 -97
  327. package/src/sap/ui/model/odata/v2/_CreatedContextsCache.js +129 -0
  328. package/src/sap/ui/model/odata/v4/Context.js +6 -3
  329. package/src/sap/ui/model/odata/v4/ODataBinding.js +5 -6
  330. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +117 -40
  331. package/src/sap/ui/model/odata/v4/ODataListBinding.js +95 -15
  332. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +44 -31
  333. package/src/sap/ui/model/odata/v4/ODataModel.js +86 -78
  334. package/src/sap/ui/model/odata/v4/ODataParentBinding.js +47 -28
  335. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +11 -7
  336. package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +10 -3
  337. package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +8 -1
  338. package/src/sap/ui/model/odata/v4/lib/_Cache.js +24 -16
  339. package/src/sap/ui/model/odata/v4/lib/_Helper.js +32 -30
  340. package/src/sap/ui/model/odata/v4/lib/_Requestor.js +52 -17
  341. package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
  342. package/src/sap/ui/model/resource/ResourceModel.js +6 -2
  343. package/src/sap/ui/model/resource/ResourcePropertyBinding.js +1 -1
  344. package/src/sap/ui/model/type/Boolean.js +2 -2
  345. package/src/sap/ui/model/type/Currency.js +2 -2
  346. package/src/sap/ui/model/type/Date.js +9 -3
  347. package/src/sap/ui/model/type/DateInterval.js +4 -2
  348. package/src/sap/ui/model/type/DateTime.js +2 -2
  349. package/src/sap/ui/model/type/DateTimeInterval.js +2 -2
  350. package/src/sap/ui/model/type/FileSize.js +4 -2
  351. package/src/sap/ui/model/type/Float.js +4 -2
  352. package/src/sap/ui/model/type/Integer.js +4 -2
  353. package/src/sap/ui/model/type/String.js +2 -2
  354. package/src/sap/ui/model/type/Time.js +2 -2
  355. package/src/sap/ui/model/type/TimeInterval.js +2 -2
  356. package/src/sap/ui/model/type/Unit.js +14 -7
  357. package/src/sap/ui/model/xml/XMLListBinding.js +15 -9
  358. package/src/sap/ui/model/xml/XMLModel.js +70 -41
  359. package/src/sap/ui/model/xml/XMLPropertyBinding.js +4 -4
  360. package/src/sap/ui/model/xml/XMLTreeBinding.js +5 -4
  361. package/src/sap/ui/performance/trace/Interaction.js +30 -15
  362. package/src/sap/ui/performance/trace/initTraces.js +1 -1
  363. package/src/sap/ui/qunit/QUnitUtils.js +3 -2
  364. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  365. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +9 -11
  366. package/src/sap/ui/test/TestUtils.js +11 -4
  367. package/src/sap/ui/test/actions/Drag.js +6 -2
  368. package/src/sap/ui/test/actions/Drop.js +6 -2
  369. package/src/sap/ui/test/actions/EnterText.js +6 -0
  370. package/src/sap/ui/test/actions/Press.js +6 -0
  371. package/src/sap/ui/test/actions/Scroll.js +6 -0
  372. package/src/sap/ui/test/autowaiter/_resourceWaiter.js +4 -4
  373. package/src/sap/ui/test/launchers/componentLauncher.js +0 -4
  374. package/src/sap/ui/test/matchers/I18NText.js +29 -11
  375. package/src/sap/ui/test/opaQunit.js +5 -0
  376. package/src/sap/ui/thirdparty/crossroads.js +6 -4
  377. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly.js +1196 -0
  378. package/src/sap/ui/thirdparty/hyphenopoly/Hyphenopoly_Loader.js +797 -0
  379. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.asm.js +108 -127
  380. package/src/sap/ui/thirdparty/hyphenopoly/hyphenEngine.wasm +0 -0
  381. package/src/sap/ui/thirdparty/hyphenopoly/patterns/bg.hpb +0 -0
  382. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ca.hpb +0 -0
  383. package/src/sap/ui/thirdparty/hyphenopoly/patterns/da.hpb +0 -0
  384. package/src/sap/ui/thirdparty/hyphenopoly/patterns/de.hpb +0 -0
  385. package/src/sap/ui/thirdparty/hyphenopoly/patterns/el-monoton.hpb +0 -0
  386. package/src/sap/ui/thirdparty/hyphenopoly/patterns/en-us.hpb +0 -0
  387. package/src/sap/ui/thirdparty/hyphenopoly/patterns/es.hpb +0 -0
  388. package/src/sap/ui/thirdparty/hyphenopoly/patterns/et.hpb +0 -0
  389. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fi.hpb +0 -0
  390. package/src/sap/ui/thirdparty/hyphenopoly/patterns/fr.hpb +0 -0
  391. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hi.hpb +0 -0
  392. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hr.hpb +0 -0
  393. package/src/sap/ui/thirdparty/hyphenopoly/patterns/hu.hpb +0 -0
  394. package/src/sap/ui/thirdparty/hyphenopoly/patterns/it.hpb +0 -0
  395. package/src/sap/ui/thirdparty/hyphenopoly/patterns/lt.hpb +0 -0
  396. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nb-no.hpb +0 -0
  397. package/src/sap/ui/thirdparty/hyphenopoly/patterns/nl.hpb +0 -0
  398. package/src/sap/ui/thirdparty/hyphenopoly/patterns/pt.hpb +0 -0
  399. package/src/sap/ui/thirdparty/hyphenopoly/patterns/ru.hpb +0 -0
  400. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sl.hpb +0 -0
  401. package/src/sap/ui/thirdparty/hyphenopoly/patterns/sv.hpb +0 -0
  402. package/src/sap/ui/thirdparty/hyphenopoly/patterns/th.hpb +0 -0
  403. package/src/sap/ui/thirdparty/hyphenopoly/patterns/tr.hpb +0 -0
  404. package/src/sap/ui/thirdparty/hyphenopoly/patterns/uk.hpb +0 -0
  405. package/src/sap/ui/thirdparty/jquery.js +9 -1
  406. package/src/sap/ui/thirdparty/qunit-2.js +1 -1
  407. package/src/sap/ui/thirdparty/qunit.js +1 -1
  408. package/src/sap/ui/util/Mobile.js +2 -20
  409. package/src/sap/ui/util/Storage.js +1 -1
  410. package/src/sap/ui/util/isCrossOriginURL.js +16 -6
  411. package/src/sap-ui-core-nojQuery.js +1 -1
  412. package/src/sap-ui-core.js +1 -1
  413. package/src/sap-ui-debug.js +3 -17
  414. package/ui5.yaml +5 -2
  415. package/src/sap/ui/core/support/plugins/MessageTest.js +0 -96
  416. package/src/sap/ui/thirdparty/hyphenopoly/hyphenopoly.bundle.js +0 -860
@@ -13,7 +13,7 @@ sap.ui.define([
13
13
  "sap/base/util/ObjectPath",
14
14
  "sap/ui/util/XMLHelper",
15
15
  "sap/base/util/merge",
16
- "sap/ui/core/Fragment" // also needed to have sap.ui.xmlfragment
16
+ "sap/ui/core/Fragment"
17
17
  ], function (
18
18
  BindingParser,
19
19
  BaseTreeModifier,
@@ -56,9 +56,9 @@ sap.ui.define([
56
56
  */
57
57
  getVisible: function (oControl) {
58
58
  if (oControl.getVisible) {
59
- return oControl.getVisible();
59
+ return Promise.resolve(oControl.getVisible());
60
60
  } else {
61
- throw new Error("Provided control instance has no getVisible method");
61
+ return Promise.reject(new Error("Provided control instance has no getVisible method"));
62
62
  }
63
63
  },
64
64
 
@@ -89,9 +89,15 @@ sap.ui.define([
89
89
  */
90
90
  getStashed: function (oControl) {
91
91
  if (oControl.isStashed) {
92
- return oControl.isStashed() ? oControl.isStashed() : !this.getVisible(oControl);
92
+ if (oControl.isStashed()) {
93
+ return Promise.resolve(true);
94
+ }
95
+ return this.getVisible(oControl)
96
+ .then(function (bIsVisible) {
97
+ return !bIsVisible;
98
+ });
93
99
  }
94
- throw new Error("Provided control instance has no isStashed method");
100
+ return Promise.reject(new Error("Provided control instance has no isStashed method"));
95
101
  },
96
102
 
97
103
  /**
@@ -145,10 +151,12 @@ sap.ui.define([
145
151
  */
146
152
  getProperty: function (oControl, sPropertyName) {
147
153
  var oMetadata = oControl.getMetadata().getPropertyLikeSetting(sPropertyName);
154
+ var oProperty;
148
155
  if (oMetadata) {
149
156
  var sPropertyGetter = oMetadata._sGetter;
150
- return oControl[sPropertyGetter]();
157
+ oProperty = oControl[sPropertyGetter]();
151
158
  }
159
+ return Promise.resolve(oProperty);
152
160
  },
153
161
 
154
162
  /**
@@ -165,7 +173,7 @@ sap.ui.define([
165
173
  this.unbindProperty(oControl, sPropertyName);
166
174
  var mSettings = {};
167
175
  mSettings[sPropertyName] = oPropertyBinding;
168
- oControl.applySettings(mSettings);
176
+ return oControl.applySettings(mSettings);
169
177
  },
170
178
 
171
179
  /**
@@ -179,53 +187,42 @@ sap.ui.define([
179
187
  * @inheritDoc
180
188
  */
181
189
  createAndAddCustomData: function(oControl, sCustomDataKey, sValue, oAppComponent) {
182
- var oCustomData = this.createControl("sap.ui.core.CustomData", oAppComponent);
183
- this.setProperty(oCustomData, "key", sCustomDataKey);
184
- this.setProperty(oCustomData, "value", sValue);
185
- this.insertAggregation(oControl, "customData", oCustomData, 0);
190
+ return this.createControl("sap.ui.core.CustomData", oAppComponent)
191
+ .then(function (oCustomData) {
192
+ this.setProperty(oCustomData, "key", sCustomDataKey);
193
+ this.setProperty(oCustomData, "value", sValue);
194
+ return this.insertAggregation(oControl, "customData", oCustomData, 0);
195
+ }.bind(this));
186
196
  },
187
197
 
188
198
  /**
189
199
  * @inheritDoc
190
200
  */
191
- createControl: function (sClassName, oAppComponent, oView, oSelector, mSettings, bAsync) {
192
- var sErrorMessage;
193
- if (this.bySelector(oSelector, oAppComponent)) {
194
- sErrorMessage = "Can't create a control with duplicated ID " + (oSelector.id || oSelector);
195
- if (bAsync) {
196
- return Promise.reject(sErrorMessage);
201
+ createControl: function (sClassName, oAppComponent, oView, oSelector, mSettings) {
202
+ return new Promise(function(fnResolve, fnReject) {
203
+ if (this.bySelector(oSelector, oAppComponent)) {
204
+ var sErrorMessage = "Can't create a control with duplicated ID " + (oSelector.id || oSelector);
205
+ fnReject(sErrorMessage);
206
+ return;
197
207
  }
198
- throw new Error(sErrorMessage);
199
- }
200
-
201
- if (bAsync) {
202
- return new Promise(function(fnResolve, fnReject) {
203
- sap.ui.require([sClassName.replace(/\./g,"/")],
204
- function(ClassObject) {
205
- var sId = this.getControlIdBySelector(oSelector, oAppComponent);
206
- fnResolve(new ClassObject(sId, mSettings));
207
- }.bind(this),
208
- function() {
209
- fnReject(new Error("Required control '" + sClassName + "' couldn't be created asynchronously"));
210
- }
211
- );
212
- }.bind(this));
213
- }
208
+ sap.ui.require([sClassName.replace(/\./g,"/")],
209
+ function(ClassObject) {
210
+ var sId = this.getControlIdBySelector(oSelector, oAppComponent);
211
+ fnResolve(new ClassObject(sId, mSettings));
212
+ }.bind(this),
213
+ function() {
214
+ fnReject(new Error("Required control '" + sClassName + "' couldn't be created asynchronously"));
215
+ }
216
+ );
217
+ }.bind(this));
214
218
 
215
- // in the synchronous case, object should already be preloaded
216
- var ClassObject = ObjectPath.get(sClassName);
217
- if (!ClassObject) {
218
- throw new Error("Can't create a control because the matching class object has not yet been loaded. Please preload the '" + sClassName + "' module");
219
- }
220
- var sId = this.getControlIdBySelector(oSelector, oAppComponent);
221
- return new ClassObject(sId, mSettings);
222
219
  },
223
220
 
224
221
  /**
225
222
  * @inheritDoc
226
223
  */
227
224
  applySettings: function(oControl, mSettings) {
228
- oControl.applySettings(mSettings);
225
+ return Promise.resolve(oControl.applySettings(mSettings));
229
226
  },
230
227
 
231
228
  /**
@@ -253,7 +250,7 @@ sap.ui.define([
253
250
  * @inheritDoc
254
251
  */
255
252
  getControlMetadata: function (oControl) {
256
- return oControl && oControl.getMetadata();
253
+ return Promise.resolve(oControl && oControl.getMetadata());
257
254
  },
258
255
 
259
256
  /**
@@ -283,17 +280,20 @@ sap.ui.define([
283
280
  * @inheritDoc
284
281
  */
285
282
  getAllAggregations: function (oParent) {
286
- return oParent.getMetadata().getAllAggregations();
283
+ return Promise.resolve(oParent.getMetadata().getAllAggregations());
287
284
  },
288
285
 
289
286
  /**
290
287
  * @inheritDoc
291
288
  */
292
289
  getAggregation: function (oParent, sName) {
293
- var oAggregation = this.findAggregation(oParent, sName);
294
- if (oAggregation) {
295
- return oParent[oAggregation._sGetter]();
296
- }
290
+ return this.findAggregation(oParent, sName)
291
+ .then(function (oAggregation) {
292
+ if (oAggregation) {
293
+ return oParent[oAggregation._sGetter]();
294
+ }
295
+ return undefined;
296
+ });
297
297
  },
298
298
 
299
299
  /**
@@ -302,19 +302,19 @@ sap.ui.define([
302
302
  insertAggregation: function (oParent, sName, oObject, iIndex) {
303
303
  //special handling without invalidation for customData
304
304
  if ( sName === "customData"){
305
- oParent.insertAggregation(sName, oObject, iIndex, /*bSuppressInvalidate=*/true);
306
- } else {
307
- var oAggregation = this.findAggregation(oParent, sName);
308
- if (oAggregation) {
309
- if (oAggregation.multiple) {
310
- var iInsertIndex = iIndex || 0;
311
- oParent[oAggregation._sInsertMutator](oObject, iInsertIndex);
312
- } else {
313
- oParent[oAggregation._sMutator](oObject);
314
- }
315
- }
305
+ return oParent.insertAggregation(sName, oObject, iIndex, /*bSuppressInvalidate=*/true);
316
306
  }
317
-
307
+ return this.findAggregation(oParent, sName)
308
+ .then(function (oAggregation) {
309
+ if (oAggregation) {
310
+ if (oAggregation.multiple) {
311
+ var iInsertIndex = iIndex || 0;
312
+ oParent[oAggregation._sInsertMutator](oObject, iInsertIndex);
313
+ } else {
314
+ oParent[oAggregation._sMutator](oObject);
315
+ }
316
+ }
317
+ });
318
318
  },
319
319
 
320
320
  /**
@@ -324,12 +324,14 @@ sap.ui.define([
324
324
  //special handling without invalidation for customData
325
325
  if ( sName === "customData"){
326
326
  oControl.removeAggregation(sName, oObject, /*bSuppressInvalidate=*/true);
327
- } else {
328
- var oAggregation = this.findAggregation(oControl, sName);
329
- if (oAggregation) {
330
- oControl[oAggregation._sRemoveMutator](oObject);
331
- }
327
+ return Promise.resolve();
332
328
  }
329
+ return this.findAggregation(oControl, sName)
330
+ .then(function (oAggregation) {
331
+ if (oAggregation) {
332
+ oControl[oAggregation._sRemoveMutator](oObject);
333
+ }
334
+ });
333
335
  },
334
336
 
335
337
  /**
@@ -339,12 +341,14 @@ sap.ui.define([
339
341
  //special handling without invalidation for customData
340
342
  if ( sName === "customData"){
341
343
  oControl.removeAllAggregation(sName, /*bSuppressInvalidate=*/true);
342
- } else {
343
- var oAggregation = this.findAggregation(oControl, sName);
344
- if (oAggregation) {
345
- oControl[oAggregation._sRemoveAllMutator]();
346
- }
344
+ return Promise.resolve();
347
345
  }
346
+ return this.findAggregation(oControl, sName)
347
+ .then(function (oAggregation) {
348
+ if (oAggregation) {
349
+ oControl[oAggregation._sRemoveAllMutator]();
350
+ }
351
+ });
348
352
  },
349
353
 
350
354
  /**
@@ -352,67 +356,76 @@ sap.ui.define([
352
356
  */
353
357
  getBindingTemplate: function (oControl, sAggregationName) {
354
358
  var oBinding = oControl.getBindingInfo(sAggregationName);
355
- return oBinding && oBinding.template;
359
+ return Promise.resolve(oBinding && oBinding.template);
356
360
  },
357
361
 
358
362
  /**
359
363
  * @inheritDoc
360
364
  */
361
365
  updateAggregation: function (oControl, sAggregationName) {
362
- var oAggregation = this.findAggregation(oControl, sAggregationName);
363
- if (oAggregation && oControl.getBinding(sAggregationName)) {
364
- oControl[oAggregation._sDestructor]();
365
- oControl.updateAggregation(sAggregationName);
366
- }
366
+ return this.findAggregation(oControl, sAggregationName)
367
+ .then(function (oAggregation) {
368
+ if (oAggregation && oControl.getBinding(sAggregationName)) {
369
+ oControl[oAggregation._sDestructor]();
370
+ oControl.updateAggregation(sAggregationName);
371
+ }
372
+ });
367
373
  },
368
374
 
369
375
  /**
370
376
  * @inheritDoc
371
377
  */
372
378
  findIndexInParentAggregation: function(oControl) {
373
- var oParent = this.getParent(oControl),
374
- aControlsInAggregation;
379
+ var oParent = this.getParent(oControl);
375
380
 
376
381
  if (!oParent) {
377
- return -1;
382
+ return Promise.resolve(-1);
378
383
  }
379
384
 
380
- // we need all controls in the aggregation
381
- aControlsInAggregation = this.getAggregation(oParent, this.getParentAggregationName(oControl));
382
-
383
- // if aControls is an array:
384
- if (Array.isArray(aControlsInAggregation)) {
385
- // then the aggregtion is multiple and we can find the index of
386
- // oControl in the array
387
- return aControlsInAggregation.indexOf(oControl);
388
- } else {
389
- // if aControlsInAggregation is not an array, then the aggregation is
390
- // of type 0..1 and aControlsInAggregation is the oControl provided
391
- // to the function initially, so its index is 0
392
- return 0;
393
- }
385
+ return this.getParentAggregationName(oControl)
386
+ .then(function (sParentAggregationName) {
387
+ // we need all controls in the aggregation
388
+ return this.getAggregation(oParent, sParentAggregationName);
389
+ }.bind(this))
390
+ .then(function (aControlsInAggregation) {
391
+ // if aControls is an array:
392
+ if (Array.isArray(aControlsInAggregation)) {
393
+ // then the aggregtion is multiple and we can find the index of
394
+ // oControl in the array
395
+ return aControlsInAggregation.indexOf(oControl);
396
+ } else {
397
+ // if aControlsInAggregation is not an array, then the aggregation is
398
+ // of type 0..1 and aControlsInAggregation is the oControl provided
399
+ // to the function initially, so its index is 0
400
+ return 0;
401
+ }
402
+ });
394
403
  },
395
404
 
396
405
  /**
397
406
  * @inheritDoc
398
407
  */
399
408
  getParentAggregationName: function (oControl) {
400
- return oControl.sParentAggregationName;
409
+ return Promise.resolve(oControl.sParentAggregationName);
401
410
  },
402
411
 
403
412
  /**
404
413
  * @inheritDoc
405
414
  */
406
415
  findAggregation: function(oControl, sAggregationName) {
407
- if (oControl) {
408
- if (oControl.getMetadata) {
409
- var oMetadata = oControl.getMetadata();
410
- var oAggregations = oMetadata.getAllAggregations();
411
- if (oAggregations) {
412
- return oAggregations[sAggregationName];
416
+ return new Promise(function (resolve, reject) {
417
+ if (oControl) {
418
+ if (oControl.getMetadata) {
419
+ var oMetadata = oControl.getMetadata();
420
+ var oAggregations = oMetadata.getAllAggregations();
421
+ if (oAggregations) {
422
+ resolve(oAggregations[sAggregationName]);
423
+ return;
424
+ }
413
425
  }
414
426
  }
415
- }
427
+ resolve();
428
+ });
416
429
  },
417
430
 
418
431
  /**
@@ -421,12 +434,14 @@ sap.ui.define([
421
434
  validateType: function(oControl, oAggregationMetadata, oParent, sFragment) {
422
435
  var sTypeOrInterface = oAggregationMetadata.type;
423
436
 
424
- // if aggregation is not multiple and already has element inside, then it is not valid for element
425
- if (oAggregationMetadata.multiple === false && this.getAggregation(oParent, oAggregationMetadata.name) &&
426
- this.getAggregation(oParent, oAggregationMetadata.name).length > 0) {
427
- return false;
428
- }
429
- return oControl.isA(sTypeOrInterface);
437
+ return this.getAggregation(oParent, oAggregationMetadata.name)
438
+ .then(function (oAggregation) {
439
+ // if aggregation is not multiple and already has element inside, then it is not valid for element
440
+ if (oAggregationMetadata.multiple === false && oAggregation && oAggregation.length > 0) {
441
+ return false;
442
+ }
443
+ return oControl.isA(sTypeOrInterface);
444
+ });
430
445
  },
431
446
 
432
447
  /**
@@ -434,20 +449,20 @@ sap.ui.define([
434
449
  */
435
450
  instantiateFragment: function(sFragment, sNamespace, oView) {
436
451
  var oFragment = XMLHelper.parse(sFragment);
437
- oFragment = this._checkAndPrefixIdsInFragment(oFragment, sNamespace);
438
-
439
- var aNewControls;
440
- var sId = oView && oView.getId();
441
- var oController = oView.getController();
442
- aNewControls = sap.ui.xmlfragment({
443
- fragmentContent: oFragment,
444
- sId:sId
445
- }, oController);
446
-
447
- if (!Array.isArray(aNewControls)) {
448
- aNewControls = [aNewControls];
449
- }
450
- return aNewControls;
452
+
453
+ return this._checkAndPrefixIdsInFragment(oFragment, sNamespace)
454
+ .then(function (oFragment) {
455
+ return Fragment.load({
456
+ definition: oFragment,
457
+ sId: oView && oView.getId(),
458
+ controller: oView.getController()
459
+ });
460
+ }).then(function(aNewControls) {
461
+ if (!Array.isArray(aNewControls)) {
462
+ aNewControls = [aNewControls];
463
+ }
464
+ return aNewControls;
465
+ });
451
466
  },
452
467
 
453
468
  /**
@@ -484,35 +499,35 @@ sap.ui.define([
484
499
  * @inheritDoc
485
500
  */
486
501
  attachEvent: function (oObject, sEventName, sFunctionPath, vData) {
487
- var fnCallback = ObjectPath.get(sFunctionPath);
488
-
489
- if (typeof fnCallback !== "function") {
490
- throw new Error("Can't attach event because the event handler function is not found or not a function.");
491
- }
492
-
493
- oObject.attachEvent(sEventName, vData, fnCallback);
502
+ return new Promise(function (fnResolve, fnReject) {
503
+ var fnCallback = ObjectPath.get(sFunctionPath);
504
+ if (typeof fnCallback !== "function") {
505
+ fnReject(new Error("Can't attach event because the event handler function is not found or not a function."));
506
+ }
507
+ fnResolve(oObject.attachEvent(sEventName, vData, fnCallback));
508
+ });
494
509
  },
495
510
 
496
511
  /**
497
512
  * @inheritDoc
498
513
  */
499
514
  detachEvent: function (oObject, sEventName, sFunctionPath) {
500
- var fnCallback = ObjectPath.get(sFunctionPath);
501
-
502
- if (typeof fnCallback !== "function") {
503
- throw new Error("Can't attach event because the event handler function is not found or not a function.");
504
- }
505
-
506
- // EventProvider.detachEvent doesn't accept vData parameter, therefore it might lead
507
- // to a situation when an incorrect event listener is detached.
508
- oObject.detachEvent(sEventName, fnCallback);
515
+ return new Promise(function (fnResolve, fnReject) {
516
+ var fnCallback = ObjectPath.get(sFunctionPath);
517
+ if (typeof fnCallback !== "function") {
518
+ fnReject(new Error("Can't attach event because the event handler function is not found or not a function."));
519
+ }
520
+ // EventProvider.detachEvent doesn't accept vData parameter, therefore it might lead
521
+ // to a situation when an incorrect event listener is detached.
522
+ fnResolve(oObject.detachEvent(sEventName, fnCallback));
523
+ });
509
524
  },
510
525
 
511
526
  /**
512
527
  * @inheritDoc
513
528
  */
514
529
  bindAggregation: function (oControl, sAggregationName, oBindingInfo) {
515
- oControl.bindAggregation(sAggregationName, oBindingInfo);
530
+ return Promise.resolve(oControl.bindAggregation(sAggregationName, oBindingInfo));
516
531
  },
517
532
 
518
533
  /**
@@ -520,7 +535,7 @@ sap.ui.define([
520
535
  */
521
536
  unbindAggregation: function (oControl, sAggregationName) {
522
537
  // bSuppressReset is not supported
523
- oControl.unbindAggregation(sAggregationName);
538
+ return Promise.resolve(oControl.unbindAggregation(sAggregationName));
524
539
  },
525
540
 
526
541
  /**
@@ -528,21 +543,23 @@ sap.ui.define([
528
543
  */
529
544
  getExtensionPointInfo: function(sExtensionPointName, oView) {
530
545
  var oViewNode = (oView._xContent) ? oView._xContent : oView;
531
- var oExtensionPointInfo = XmlTreeModifier.getExtensionPointInfo(sExtensionPointName, oViewNode);
532
- if (oExtensionPointInfo) {
533
- // decrease the index by 1 to get the index of the extension point itself for js-case
534
- oExtensionPointInfo.index--;
535
- oExtensionPointInfo.parent = oExtensionPointInfo.parent && this._byId(oView.createId(oExtensionPointInfo.parent.getAttribute("id")));
536
- oExtensionPointInfo.defaultContent = oExtensionPointInfo.defaultContent
537
- .map(function (oNode) {
538
- var sId = oView.createId(oNode.getAttribute("id"));
539
- return this._byId(sId);
540
- }.bind(this))
541
- .filter(function (oControl) {
542
- return !!oControl;
543
- });
544
- }
545
- return oExtensionPointInfo;
546
+ return XmlTreeModifier.getExtensionPointInfo(sExtensionPointName, oViewNode)
547
+ .then(function (oExtensionPointInfo) {
548
+ if (oExtensionPointInfo) {
549
+ // decrease the index by 1 to get the index of the extension point itself for js-case
550
+ oExtensionPointInfo.index--;
551
+ oExtensionPointInfo.parent = oExtensionPointInfo.parent && this._byId(oView.createId(oExtensionPointInfo.parent.getAttribute("id")));
552
+ oExtensionPointInfo.defaultContent = oExtensionPointInfo.defaultContent
553
+ .map(function (oNode) {
554
+ var sId = oView.createId(oNode.getAttribute("id"));
555
+ return this._byId(sId);
556
+ }.bind(this))
557
+ .filter(function (oControl) {
558
+ return !!oControl;
559
+ });
560
+ }
561
+ return oExtensionPointInfo;
562
+ }.bind(this));
546
563
  }
547
564
  };
548
565