@openui5/sap.ui.core 1.103.1 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.reuse/dep5 +35 -15
- package/LICENSES/LicenseRef-tzdata-PublicDomain.txt +5 -0
- package/THIRDPARTY.txt +64 -21
- package/package.json +1 -1
- package/src/jquery.sap.dom.js +10 -10
- package/src/jquery.sap.global.js +24 -216
- package/src/jquery.sap.history.js +1 -1
- package/src/jquery.sap.properties.js +2 -2
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +4 -4
- package/src/sap/base/i18n/ResourceBundle.js +7 -11
- package/src/sap/base/util/LoaderExtensions.js +69 -61
- package/src/sap/base/util/ObjectPath.js +1 -1
- package/src/sap/base/util/Properties.js +1 -1
- package/src/sap/base/util/fetch.js +228 -0
- package/src/sap/base/util/mixedFetch.js +69 -0
- package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
- package/src/sap/base/util/restricted/_castArray.js +1 -1
- package/src/sap/base/util/restricted/_compact.js +1 -1
- package/src/sap/base/util/restricted/_curry.js +1 -1
- package/src/sap/base/util/restricted/_debounce.js +1 -1
- package/src/sap/base/util/restricted/_difference.js +1 -1
- package/src/sap/base/util/restricted/_differenceBy.js +1 -1
- package/src/sap/base/util/restricted/_differenceWith.js +1 -1
- package/src/sap/base/util/restricted/_flatMap.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
- package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
- package/src/sap/base/util/restricted/_flatten.js +1 -1
- package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
- package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
- package/src/sap/base/util/restricted/_intersection.js +1 -1
- package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
- package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
- package/src/sap/base/util/restricted/_isEqual.js +1 -1
- package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
- package/src/sap/base/util/restricted/_isNil.js +1 -1
- package/src/sap/base/util/restricted/_max.js +1 -1
- package/src/sap/base/util/restricted/_merge.js +1 -1
- package/src/sap/base/util/restricted/_mergeWith.js +1 -1
- package/src/sap/base/util/restricted/_min.js +1 -1
- package/src/sap/base/util/restricted/_omit.js +1 -1
- package/src/sap/base/util/restricted/_pick.js +1 -1
- package/src/sap/base/util/restricted/_pickBy.js +1 -1
- package/src/sap/base/util/restricted/_throttle.js +1 -1
- package/src/sap/base/util/restricted/_toArray.js +1 -1
- package/src/sap/base/util/restricted/_union.js +1 -1
- package/src/sap/base/util/restricted/_unionBy.js +1 -1
- package/src/sap/base/util/restricted/_unionWith.js +1 -1
- package/src/sap/base/util/restricted/_uniq.js +1 -1
- package/src/sap/base/util/restricted/_uniqBy.js +1 -1
- package/src/sap/base/util/restricted/_uniqWith.js +1 -1
- package/src/sap/base/util/restricted/_without.js +1 -1
- package/src/sap/base/util/restricted/_xor.js +1 -1
- package/src/sap/base/util/restricted/_xorBy.js +1 -1
- package/src/sap/base/util/restricted/_xorWith.js +1 -1
- package/src/sap/base/util/restricted/_zipObject.js +1 -1
- package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
- package/src/sap/base/util/syncFetch.js +66 -0
- package/src/sap/ui/Device.js +5 -5
- package/src/sap/ui/Global.js +7 -14
- package/src/sap/ui/VersionInfo.js +57 -54
- package/src/sap/ui/base/BindingInfo.js +198 -0
- package/src/sap/ui/base/DataType.js +1 -1
- package/src/sap/ui/base/Event.js +2 -2
- package/src/sap/ui/base/EventProvider.js +2 -2
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +209 -979
- package/src/sap/ui/base/ManagedObjectMetadata.js +6 -6
- package/src/sap/ui/base/ManagedObjectObserver.js +2 -2
- package/src/sap/ui/base/Metadata.js +1 -1
- package/src/sap/ui/base/Object.js +1 -1
- package/src/sap/ui/base/ObjectPool.js +1 -1
- package/src/sap/ui/core/.library +72 -50
- package/src/sap/ui/core/AccessKeysEnablement.js +173 -0
- package/src/sap/ui/core/AppCacheBuster.js +65 -51
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +52 -25
- package/src/sap/ui/core/ComponentContainer.js +1 -1
- package/src/sap/ui/core/ComponentMetadata.js +16 -23
- package/src/sap/ui/core/ComponentSupport.js +1 -1
- package/src/sap/ui/core/Configuration.js +598 -358
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +126 -185
- package/src/sap/ui/core/CustomData.js +1 -1
- package/src/sap/ui/core/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/Element.js +68 -4
- package/src/sap/ui/core/ElementMetadata.js +6 -4
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- package/src/sap/ui/core/ExtensionPoint.js +2 -2
- package/src/sap/ui/core/FocusHandler.js +84 -39
- package/src/sap/ui/core/Fragment.js +1 -1
- package/src/sap/ui/core/HTML.js +1 -1
- package/src/sap/ui/core/History.js +1 -1
- package/src/sap/ui/core/Icon.js +1 -1
- package/src/sap/ui/core/IconPool.js +8 -8
- package/src/sap/ui/core/IndicationColorSupport.js +2 -2
- package/src/sap/ui/core/IntervalTrigger.js +1 -1
- package/src/sap/ui/core/InvisibleMessage.js +1 -1
- package/src/sap/ui/core/InvisibleRenderer.js +1 -1
- package/src/sap/ui/core/InvisibleText.js +4 -1
- package/src/sap/ui/core/Item.js +1 -1
- package/src/sap/ui/core/LabelEnablement.js +1 -1
- package/src/sap/ui/core/LayoutData.js +1 -1
- package/src/sap/ui/core/ListItem.js +1 -1
- package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
- package/src/sap/ui/core/Locale.js +1 -1
- package/src/sap/ui/core/LocaleData.js +8 -51
- package/src/sap/ui/core/Manifest.js +3 -5
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/Popup.js +13 -8
- package/src/sap/ui/core/RenderManager.js +17 -21
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +28 -49
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +12 -13
- package/src/sap/ui/core/UIArea.js +13 -12
- package/src/sap/ui/core/UIComponent.js +3 -3
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +2 -2
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +5 -2
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +7 -7
- package/src/sap/ui/core/_ConfigurationProvider.js +187 -0
- package/src/sap/ui/core/_IconRegistry.js +66 -55
- package/src/sap/ui/core/cache/CacheManager.js +20 -16
- package/src/sap/ui/core/cache/CacheManagerNOP.js +5 -2
- package/src/sap/ui/core/cache/LRUPersistentCache.js +15 -8
- package/src/sap/ui/core/cldr/en.json +0 -1
- package/src/sap/ui/core/cldr/es_BO.json +3 -3
- package/src/sap/ui/core/cldr/es_CL.json +3 -3
- package/src/sap/ui/core/cldr/es_MX.json +3 -3
- package/src/sap/ui/core/cldr/es_PE.json +3 -3
- package/src/sap/ui/core/cldr/es_UY.json +3 -3
- package/src/sap/ui/core/cldr/es_VE.json +2 -2
- package/src/sap/ui/core/date/Buddhist.js +15 -13
- package/src/sap/ui/core/date/Japanese.js +0 -6
- package/src/sap/ui/core/date/UniversalDate.js +144 -34
- package/src/sap/ui/core/delegate/ItemNavigation.js +2 -2
- package/src/sap/ui/core/delegate/ScrollEnablement.js +7 -6
- package/src/sap/ui/core/dnd/DragAndDrop.js +13 -9
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +3 -3
- package/src/sap/ui/core/dnd/DragInfo.js +1 -1
- package/src/sap/ui/core/dnd/DropInfo.js +1 -1
- package/src/sap/ui/core/format/DateFormat.js +36 -9
- package/src/sap/ui/core/format/NumberFormat.js +92 -26
- package/src/sap/ui/core/format/TimezoneUtil.js +2 -2
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +44 -3
- package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
- package/src/sap/ui/core/message/Message.js +1 -1
- package/src/sap/ui/core/message/MessageManager.js +1 -1
- package/src/sap/ui/core/message/MessageParser.js +1 -1
- package/src/sap/ui/core/message/MessageProcessor.js +1 -1
- package/src/sap/ui/core/messagebundle.properties +2 -0
- package/src/sap/ui/core/messagebundle_ar.properties +54 -53
- package/src/sap/ui/core/messagebundle_bg.properties +54 -53
- package/src/sap/ui/core/messagebundle_ca.properties +28 -27
- package/src/sap/ui/core/messagebundle_cs.properties +37 -36
- package/src/sap/ui/core/messagebundle_cy.properties +57 -56
- package/src/sap/ui/core/messagebundle_da.properties +53 -52
- package/src/sap/ui/core/messagebundle_de.properties +54 -53
- package/src/sap/ui/core/messagebundle_el.properties +46 -45
- package/src/sap/ui/core/messagebundle_en.properties +57 -56
- package/src/sap/ui/core/messagebundle_en_GB.properties +57 -56
- package/src/sap/ui/core/messagebundle_en_US_sappsd.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +1 -0
- package/src/sap/ui/core/messagebundle_en_US_saptrc.properties +1 -0
- package/src/sap/ui/core/messagebundle_es.properties +42 -41
- package/src/sap/ui/core/messagebundle_es_MX.properties +54 -53
- package/src/sap/ui/core/messagebundle_et.properties +51 -50
- package/src/sap/ui/core/messagebundle_fi.properties +48 -47
- package/src/sap/ui/core/messagebundle_fr.properties +37 -36
- package/src/sap/ui/core/messagebundle_fr_CA.properties +22 -21
- package/src/sap/ui/core/messagebundle_hi.properties +42 -41
- package/src/sap/ui/core/messagebundle_hr.properties +55 -54
- package/src/sap/ui/core/messagebundle_hu.properties +56 -55
- package/src/sap/ui/core/messagebundle_id.properties +55 -54
- package/src/sap/ui/core/messagebundle_it.properties +55 -54
- package/src/sap/ui/core/messagebundle_iw.properties +55 -54
- package/src/sap/ui/core/messagebundle_ja.properties +48 -47
- package/src/sap/ui/core/messagebundle_kk.properties +41 -40
- package/src/sap/ui/core/messagebundle_ko.properties +21 -20
- package/src/sap/ui/core/messagebundle_lt.properties +55 -54
- package/src/sap/ui/core/messagebundle_lv.properties +55 -54
- package/src/sap/ui/core/messagebundle_ms.properties +52 -51
- package/src/sap/ui/core/messagebundle_nl.properties +53 -52
- package/src/sap/ui/core/messagebundle_no.properties +53 -52
- package/src/sap/ui/core/messagebundle_pl.properties +52 -51
- package/src/sap/ui/core/messagebundle_pt.properties +54 -53
- package/src/sap/ui/core/messagebundle_pt_PT.properties +55 -54
- package/src/sap/ui/core/messagebundle_ro.properties +56 -55
- package/src/sap/ui/core/messagebundle_ru.properties +52 -51
- package/src/sap/ui/core/messagebundle_sh.properties +57 -56
- package/src/sap/ui/core/messagebundle_sk.properties +54 -53
- package/src/sap/ui/core/messagebundle_sl.properties +56 -55
- package/src/sap/ui/core/messagebundle_sv.properties +52 -51
- package/src/sap/ui/core/messagebundle_th.properties +25 -24
- package/src/sap/ui/core/messagebundle_tr.properties +56 -55
- package/src/sap/ui/core/messagebundle_uk.properties +55 -54
- package/src/sap/ui/core/messagebundle_vi.properties +56 -55
- package/src/sap/ui/core/messagebundle_zh_CN.properties +55 -54
- package/src/sap/ui/core/messagebundle_zh_TW.properties +55 -54
- package/src/sap/ui/core/mvc/Controller.js +17 -12
- package/src/sap/ui/core/mvc/HTMLView.js +1 -1
- package/src/sap/ui/core/mvc/JSONView.js +1 -1
- package/src/sap/ui/core/mvc/JSView.js +2 -2
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +7 -7
- package/src/sap/ui/core/mvc/XMLView.js +1 -2
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/LessSupport.js +16 -14
- package/src/sap/ui/core/plugin/TemplatingSupport.js +2 -1
- package/src/sap/ui/core/postmessage/Bus.js +1 -1
- package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
- package/src/sap/ui/core/routing/Router.js +4 -4
- package/src/sap/ui/core/routing/async/TargetCache.js +4 -0
- package/src/sap/ui/core/rules/App.support.js +11 -13
- package/src/sap/ui/core/rules/Config.support.js +14 -14
- package/src/sap/ui/core/rules/CoreHelper.support.js +3 -3
- package/src/sap/ui/core/rules/Model.support.js +8 -8
- package/src/sap/ui/core/rules/Rendering.support.js +1 -1
- package/src/sap/ui/core/rules/Theming.support.js +8 -8
- package/src/sap/ui/core/rules/View.support.js +20 -13
- package/src/sap/ui/core/search/OpenSearchProvider.js +25 -12
- package/src/sap/ui/core/search/SearchProvider.js +2 -2
- package/src/sap/ui/core/service/Service.js +1 -1
- package/src/sap/ui/core/service/ServiceFactory.js +1 -1
- package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
- package/src/sap/ui/core/support/Hotkeys.js +2 -3
- package/src/sap/ui/core/support/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +3 -4
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- package/src/sap/ui/core/support/plugins/Debugging.js +4 -4
- package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
- package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
- package/src/sap/ui/core/support/plugins/Performance.js +1 -1
- package/src/sap/ui/core/support/plugins/Selector.js +1 -1
- package/src/sap/ui/core/support/plugins/TechInfo.js +46 -33
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +3 -4
- package/src/sap/ui/core/support/support.html +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +3 -3
- package/src/sap/ui/core/themes/base/Icon.less +4 -0
- package/src/sap/ui/core/themes/base/LocalBusyIndicator.less +1 -1
- package/src/sap/ui/core/themes/base/base.less +26 -26
- package/src/sap/ui/core/themes/base/fonts/SAP-icons.woff2 +0 -0
- package/src/sap/ui/core/themes/base/global.less +5 -1
- package/src/sap/ui/core/themes/base/shared.less +6 -0
- package/src/sap/ui/core/theming/Parameters.js +52 -53
- package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
- package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
- package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
- package/src/sap/ui/core/tmpl/Template.js +7 -5
- package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
- package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
- package/src/sap/ui/core/util/Export.js +1 -1
- package/src/sap/ui/core/util/ExportCell.js +1 -1
- package/src/sap/ui/core/util/ExportColumn.js +1 -1
- package/src/sap/ui/core/util/ExportRow.js +1 -1
- package/src/sap/ui/core/util/ExportType.js +1 -1
- package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
- package/src/sap/ui/core/util/File.js +1 -1
- package/src/sap/ui/core/util/LibraryInfo.js +61 -42
- package/src/sap/ui/core/util/MockServer.js +45 -71
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- package/src/sap/ui/core/util/ResponsivePaddingsEnablement.js +4 -3
- package/src/sap/ui/core/util/XMLPreprocessor.js +3 -3
- package/src/sap/ui/core/util/reflection/BaseTreeModifier.js +1 -4
- package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
- package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
- package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
- package/src/sap/ui/core/ws/ReadyState.js +1 -1
- package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
- package/src/sap/ui/core/ws/WebSocket.js +1 -1
- package/src/sap/ui/debug/ControlTree.js +1 -1
- package/src/sap/ui/debug/DebugEnv.js +1 -1
- package/src/sap/ui/debug/PropertyList.css +1 -31
- package/src/sap/ui/debug/PropertyList.js +6 -240
- package/src/sap/ui/dom/getScrollbarSize.js +1 -1
- package/src/sap/ui/dom/jquery/control.js +1 -0
- package/src/sap/ui/events/jquery/EventSimulation.js +4 -4
- package/src/sap/ui/model/ClientModel.js +1 -1
- package/src/sap/ui/model/CompositeDataState.js +1 -1
- package/src/sap/ui/model/CompositeType.js +1 -1
- package/src/sap/ui/model/Context.js +3 -0
- package/src/sap/ui/model/ContextBinding.js +1 -1
- package/src/sap/ui/model/DataState.js +3 -3
- package/src/sap/ui/model/ListBinding.js +2 -2
- package/src/sap/ui/model/ManagedObjectBindingSupport.js +871 -0
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +16 -5
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +2 -2
- package/src/sap/ui/model/Sorter.js +2 -2
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/_Helper.js +3 -1
- package/src/sap/ui/model/analytics/odata4analytics.js +2 -2
- package/src/sap/ui/model/base/ManagedObjectModel.js +2 -2
- package/src/sap/ui/model/json/JSONModel.js +2 -2
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/AnnotationHelper.js +4 -4
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +4 -4
- package/src/sap/ui/model/odata/ODataMetaModel.js +10 -10
- package/src/sap/ui/model/odata/ODataMetadata.js +6 -3
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +459 -268
- package/src/sap/ui/model/odata/type/Boolean.js +1 -1
- package/src/sap/ui/model/odata/type/Byte.js +1 -1
- package/src/sap/ui/model/odata/type/Currency.js +1 -1
- package/src/sap/ui/model/odata/type/Date.js +1 -1
- package/src/sap/ui/model/odata/type/DateTime.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
- package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
- package/src/sap/ui/model/odata/type/Decimal.js +1 -1
- package/src/sap/ui/model/odata/type/Double.js +1 -1
- package/src/sap/ui/model/odata/type/Guid.js +1 -1
- package/src/sap/ui/model/odata/type/Int.js +1 -1
- package/src/sap/ui/model/odata/type/Int16.js +1 -1
- package/src/sap/ui/model/odata/type/Int32.js +1 -1
- package/src/sap/ui/model/odata/type/Int64.js +1 -1
- package/src/sap/ui/model/odata/type/ODataType.js +1 -1
- package/src/sap/ui/model/odata/type/Raw.js +1 -1
- package/src/sap/ui/model/odata/type/SByte.js +1 -1
- package/src/sap/ui/model/odata/type/Single.js +1 -1
- package/src/sap/ui/model/odata/type/Stream.js +1 -1
- package/src/sap/ui/model/odata/type/String.js +1 -1
- package/src/sap/ui/model/odata/type/Time.js +1 -1
- package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
- package/src/sap/ui/model/odata/type/Unit.js +1 -1
- package/src/sap/ui/model/odata/v2/Context.js +5 -5
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +5 -2
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +26 -1
- package/src/sap/ui/model/odata/v2/ODataModel.js +164 -125
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +18 -2
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +3 -3
- package/src/sap/ui/model/odata/v4/Context.js +169 -79
- package/src/sap/ui/model/odata/v4/ODataBinding.js +51 -12
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +111 -92
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +206 -150
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +13 -10
- package/src/sap/ui/model/odata/v4/ODataModel.js +249 -28
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +33 -18
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +17 -11
- package/src/sap/ui/model/odata/v4/ODataUtils.js +7 -4
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +142 -35
- package/src/sap/ui/model/odata/v4/lib/_AggregationHelper.js +167 -16
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +388 -188
- package/src/sap/ui/model/odata/v4/lib/_ConcatHelper.js +2 -3
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +119 -43
- package/src/sap/ui/model/odata/v4/lib/_MinMaxHelper.js +2 -3
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +13 -6
- package/src/sap/ui/model/resource/ResourceModel.js +2 -2
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +2 -2
- package/src/sap/ui/model/type/Date.js +1 -1
- package/src/sap/ui/model/type/DateInterval.js +1 -1
- package/src/sap/ui/model/type/DateTime.js +1 -1
- package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
- package/src/sap/ui/model/type/FileSize.js +1 -1
- package/src/sap/ui/model/type/Float.js +1 -1
- package/src/sap/ui/model/type/Integer.js +1 -1
- package/src/sap/ui/model/type/String.js +2 -2
- package/src/sap/ui/model/type/Time.js +1 -1
- package/src/sap/ui/model/type/TimeInterval.js +1 -1
- package/src/sap/ui/model/type/Unit.js +1 -1
- package/src/sap/ui/model/xml/XMLModel.js +4 -2
- package/src/sap/ui/performance/trace/FESR.js +27 -24
- package/src/sap/ui/performance/trace/Interaction.js +66 -16
- package/src/sap/ui/qunit/QUnitUtils.js +1 -2
- package/src/sap/ui/qunit/sinon-qunit-bridge.js +1 -1
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/Opa5.js +1 -1
- package/src/sap/ui/test/OpaBuilder.js +1 -1
- package/src/sap/ui/test/TestUtils.js +35 -2
- package/src/sap/ui/test/actions/Press.js +7 -0
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/matchers/AggregationContainsPropertyEqual.js +2 -3
- package/src/sap/ui/test/matchers/AggregationFilled.js +2 -3
- package/src/sap/ui/test/matchers/AggregationLengthEquals.js +2 -3
- package/src/sap/ui/test/matchers/Matcher.js +9 -11
- package/src/sap/ui/test/opaQunit.js +15 -9
- package/src/sap/ui/test/pipelines/ActionPipeline.js +2 -3
- package/src/sap/ui/test/pipelines/MatcherPipeline.js +2 -3
- package/src/sap/ui/test/pipelines/PipelineFactory.js +2 -3
- package/src/sap/ui/thirdparty/IPv6.js +1 -1
- package/src/sap/ui/thirdparty/SecondLevelDomains.js +1 -1
- package/src/sap/ui/thirdparty/URI.js +8 -2
- package/src/sap/ui/thirdparty/URITemplate.js +1 -1
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/XMLHelper.js +1 -1
|
@@ -83,18 +83,22 @@ sap.ui.define([
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
|
-
* Check if request is initiated by XHR
|
|
86
|
+
* Check if request is initiated by XHR, comleted and timeframe of request is within timeframe of current interaction
|
|
87
87
|
*
|
|
88
|
-
* @param {object} oRequestTiming
|
|
88
|
+
* @param {object} oRequestTiming PerformanceResourceTiming as retrieved by window.performance.getEntryByType("resource")
|
|
89
|
+
* @return {boolean} true if the request is a completed XHR with started and ended within the current interaction
|
|
89
90
|
* @private
|
|
90
91
|
*/
|
|
91
|
-
function
|
|
92
|
+
function isValidInteractionXHR(oRequestTiming) {
|
|
92
93
|
// if the request has been completed it has complete timing figures)
|
|
93
94
|
var bComplete = oRequestTiming.startTime > 0 &&
|
|
94
95
|
oRequestTiming.startTime <= oRequestTiming.requestStart &&
|
|
95
96
|
oRequestTiming.requestStart <= oRequestTiming.responseEnd;
|
|
96
97
|
|
|
97
|
-
|
|
98
|
+
var bPartOfInteraction = oPendingInteraction.start <= (performance.timing.navigationStart + oRequestTiming.requestStart) &&
|
|
99
|
+
oPendingInteraction.end >= (performance.timing.navigationStart + oRequestTiming.responseEnd);
|
|
100
|
+
|
|
101
|
+
return bPartOfInteraction && bComplete && oRequestTiming.initiatorType === "xmlhttprequest";
|
|
98
102
|
}
|
|
99
103
|
|
|
100
104
|
function aggregateRequestTiming(oRequest) {
|
|
@@ -155,9 +159,11 @@ sap.ui.define([
|
|
|
155
159
|
function finalizeInteraction(iTime) {
|
|
156
160
|
if (oPendingInteraction) {
|
|
157
161
|
var aAllRequestTimings = window.performance.getEntriesByType("resource");
|
|
162
|
+
var oFinshedInteraction;
|
|
158
163
|
oPendingInteraction.end = iTime;
|
|
164
|
+
oPendingInteraction.processing = iTime - oPendingInteraction.start;
|
|
159
165
|
oPendingInteraction.duration = oPendingInteraction.processing;
|
|
160
|
-
oPendingInteraction.requests = aAllRequestTimings.filter(
|
|
166
|
+
oPendingInteraction.requests = aAllRequestTimings.filter(isValidInteractionXHR);
|
|
161
167
|
oPendingInteraction.completeRoundtrips = 0;
|
|
162
168
|
oPendingInteraction.measurements = Measurement.filterMeasurements(isCompleteMeasurement, true);
|
|
163
169
|
if (oPendingInteraction.requests.length > 0) {
|
|
@@ -173,16 +179,18 @@ sap.ui.define([
|
|
|
173
179
|
oPendingInteraction.completed = true;
|
|
174
180
|
Object.freeze(oPendingInteraction);
|
|
175
181
|
|
|
176
|
-
|
|
182
|
+
// Duration threshold 2 in order to filter not performance relevant interactions such as liveChange
|
|
183
|
+
if (oPendingInteraction.semanticStepName || oPendingInteraction.duration >= 2 || oPendingInteraction.requests.length > 0 || isNavigation) {
|
|
177
184
|
aInteractions.push(oPendingInteraction);
|
|
178
|
-
|
|
179
|
-
if (Interaction.onInteractionFinished && oFinshedInteraction) {
|
|
180
|
-
Interaction.onInteractionFinished(oFinshedInteraction);
|
|
181
|
-
}
|
|
185
|
+
oFinshedInteraction = aInteractions[aInteractions.length - 1];
|
|
182
186
|
if (Log.isLoggable()) {
|
|
183
187
|
Log.debug("Interaction step finished: trigger: " + oPendingInteraction.trigger + "; duration: " + oPendingInteraction.duration + "; requests: " + oPendingInteraction.requests.length, "Interaction.js");
|
|
184
188
|
}
|
|
185
189
|
}
|
|
190
|
+
// Execute onInteractionFinished always in case function exist to enable cleanup in FESR independent of filtering
|
|
191
|
+
if (Interaction.onInteractionFinished) {
|
|
192
|
+
Interaction.onInteractionFinished(oFinshedInteraction);
|
|
193
|
+
}
|
|
186
194
|
oPendingInteraction = null;
|
|
187
195
|
oCurrentBrowserEvent = null;
|
|
188
196
|
isNavigation = false;
|
|
@@ -512,7 +520,6 @@ sap.ui.define([
|
|
|
512
520
|
} else {
|
|
513
521
|
// set provisionary processing time from start to end and calculate later
|
|
514
522
|
oPendingInteraction.preliminaryEnd = now();
|
|
515
|
-
oPendingInteraction.processing = oPendingInteraction.preliminaryEnd - oPendingInteraction.start;
|
|
516
523
|
}
|
|
517
524
|
}
|
|
518
525
|
},
|
|
@@ -607,12 +614,33 @@ sap.ui.define([
|
|
|
607
614
|
if (oPendingInteraction && !oPendingInteraction.completed && Interaction.onInteractionStarted) {
|
|
608
615
|
oPendingInteraction.passportAction = Interaction.onInteractionStarted(oPendingInteraction, bForce);
|
|
609
616
|
}
|
|
617
|
+
// Interaction.start will delete oCurrentBrowserEvent in case there is an oPendingInteraction
|
|
618
|
+
// (notifyStepStart is called with parameter bForce)
|
|
619
|
+
// Conscious decision to not move the coding because this shouldn't be a productive scenario
|
|
610
620
|
if (oCurrentBrowserEvent) {
|
|
611
621
|
oBrowserElement = oCurrentBrowserEvent.srcControl;
|
|
612
622
|
}
|
|
613
623
|
// if browser event matches the first control event we take it for trigger/event determination (step name)
|
|
614
624
|
if (oElement && oElement.getId && oBrowserElement && oElement.getId() === oBrowserElement.getId()) {
|
|
615
625
|
bMatched = true;
|
|
626
|
+
} else {
|
|
627
|
+
var elem = oBrowserElement;
|
|
628
|
+
while (elem && elem.getParent()) {
|
|
629
|
+
elem = elem.getParent();
|
|
630
|
+
if (oElement.getId() === elem.getId()) {
|
|
631
|
+
// Stop looking for better fitting control in case the current browser event source control
|
|
632
|
+
// is already child of the control event which triggers the interaction because all other
|
|
633
|
+
// control events most likely does not suit better.
|
|
634
|
+
// Example: Click on image of an button will not pass the previous if
|
|
635
|
+
// (oElement.getId() !== oBrowserElement.getId() ==> btn !== btn-img).
|
|
636
|
+
// In case the button is part of an popover and the click on the button closes the popover,
|
|
637
|
+
// the coding below overwrites the button control id with the popover control id in case we
|
|
638
|
+
// don't stop here.
|
|
639
|
+
// Only look for better fitting control in case browser and control event does not fit at all
|
|
640
|
+
bMatched = true;
|
|
641
|
+
break;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
616
644
|
}
|
|
617
645
|
oCurrentBrowserEvent = null;
|
|
618
646
|
//only handle the first browser event within a call stack. Ignore virtual/harmonization events.
|
|
@@ -623,6 +651,8 @@ sap.ui.define([
|
|
|
623
651
|
oCurrentBrowserEvent = null;
|
|
624
652
|
bInteractionProcessed = false;
|
|
625
653
|
}, 0);
|
|
654
|
+
bIdle = false;
|
|
655
|
+
Interaction.notifyStepEnd(true); // Start timer to end Interaction in case there is no timing relevant action e.g. rendering, request
|
|
626
656
|
} else if (oPendingInteraction && oBrowserElement && !bMatched) {
|
|
627
657
|
// if browser event matches one of the next control events we take it for trigger/event determination (step name)
|
|
628
658
|
var elem = oBrowserElement;
|
|
@@ -630,13 +660,13 @@ sap.ui.define([
|
|
|
630
660
|
oPendingInteraction.trigger = oElement.getId();
|
|
631
661
|
oPendingInteraction.semanticStepName = FESRHelper.getSemanticStepname(oElement, sEventId);
|
|
632
662
|
oPendingInteraction.event = sEventId;
|
|
633
|
-
|
|
663
|
+
bMatched = true;
|
|
634
664
|
} else {
|
|
635
665
|
while (elem && elem.getParent()) {
|
|
636
666
|
elem = elem.getParent();
|
|
637
667
|
if (oElement.getId() === elem.getId()) {
|
|
638
|
-
|
|
639
|
-
|
|
668
|
+
oPendingInteraction.trigger = oElement.getId();
|
|
669
|
+
oPendingInteraction.semanticStepName = FESRHelper.getSemanticStepname(oElement, sEventId);
|
|
640
670
|
oPendingInteraction.event = sEventId;
|
|
641
671
|
//if we find no direct match we consider the last control event for the trigger/event (step name)
|
|
642
672
|
break;
|
|
@@ -652,7 +682,7 @@ sap.ui.define([
|
|
|
652
682
|
* Register async operation, that is relevant for a running interaction.
|
|
653
683
|
* Invoking the returned handle stops the async operation.
|
|
654
684
|
*
|
|
655
|
-
* @
|
|
685
|
+
* @param {string} sStepName a step name
|
|
656
686
|
* @returns {function} The async handle
|
|
657
687
|
* @private
|
|
658
688
|
*/
|
|
@@ -664,6 +694,7 @@ sap.ui.define([
|
|
|
664
694
|
}
|
|
665
695
|
/*eslint-enable no-console */
|
|
666
696
|
var sInteractionId = oPendingInteraction.id;
|
|
697
|
+
delete oPendingInteraction.preliminaryEnd; // Delete prelimanry end to force current timestamp of finalization
|
|
667
698
|
Interaction.notifyAsyncStepStart();
|
|
668
699
|
return function() {
|
|
669
700
|
Interaction.notifyAsyncStepEnd(sInteractionId);
|
|
@@ -730,7 +761,10 @@ sap.ui.define([
|
|
|
730
761
|
if (iInteractionStepTimer) {
|
|
731
762
|
clearTimeout(iInteractionStepTimer);
|
|
732
763
|
}
|
|
733
|
-
|
|
764
|
+
// There are control events using a debouncing mechanism for e.g. suggest event (see sap.m.Input)
|
|
765
|
+
// A common debounce treshhold (also used by sap.m.Input) is 300ms therefore we use setTimeout
|
|
766
|
+
// with 301ms to end the Interaction after execution of the debounced event
|
|
767
|
+
iInteractionStepTimer = setTimeout(Interaction.notifyStepEnd, 301);
|
|
734
768
|
if (Log.isLoggable()) {
|
|
735
769
|
Log.debug("Interaction check for idle time - Number of pending steps: " + iInteractionCounter);
|
|
736
770
|
}
|
|
@@ -774,6 +808,22 @@ sap.ui.define([
|
|
|
774
808
|
if (oCurrentBrowserEvent.type.match(/^(mousedown|touchstart|keydown)$/)) {
|
|
775
809
|
Interaction.end(/*bForce*/true);
|
|
776
810
|
}
|
|
811
|
+
// Clean up oCurrentBrowserEvent at the end to prevent dangling events
|
|
812
|
+
// Since oCurrentBrowser event is prerequisite to start an event we need to
|
|
813
|
+
// clean dangling browser events to avoid creating interactions based on these events
|
|
814
|
+
// e.g. The user clicks first somewhere on the UI on a control without press handler.
|
|
815
|
+
// After that the user scrolls in a table and triggers implicit requests via paging.
|
|
816
|
+
// This combination will create an interaction based on the first browser event,
|
|
817
|
+
// created and not cleaned up by the first click within the UI
|
|
818
|
+
if (this.eventEndTimer) {
|
|
819
|
+
clearTimeout(this.eventEndTimer);
|
|
820
|
+
}
|
|
821
|
+
this.eventEndTimer = setTimeout(function() {
|
|
822
|
+
oCurrentBrowserEvent = null;
|
|
823
|
+
delete this.eventEndTimer;
|
|
824
|
+
// There are events fired within a timeout with delay. Cleanup after 10ms
|
|
825
|
+
// to hopefully prevent cleaning up to early (before control event was fired)
|
|
826
|
+
}.bind(this), 10);
|
|
777
827
|
}
|
|
778
828
|
},
|
|
779
829
|
|
|
@@ -23,8 +23,7 @@ sap.ui.define('sap/ui/qunit/QUnitUtils', [
|
|
|
23
23
|
"sap/base/strings/camelize",
|
|
24
24
|
"sap/base/strings/capitalize",
|
|
25
25
|
"sap/base/util/UriParameters",
|
|
26
|
-
"sap/base/Log"
|
|
27
|
-
"sap/ui/dom/jquery/control" // jQuery Plugin "control"
|
|
26
|
+
"sap/base/Log"
|
|
28
27
|
],
|
|
29
28
|
function(
|
|
30
29
|
jQuery,
|
package/src/sap/ui/test/Opa5.js
CHANGED
|
@@ -860,7 +860,7 @@ sap.ui.define([
|
|
|
860
860
|
/**
|
|
861
861
|
* Returns the QUnit utils object in the current context. If an iframe is launched, it will return the iframe's QUnit utils.
|
|
862
862
|
* @public
|
|
863
|
-
* @returns {
|
|
863
|
+
* @returns {object} The QUnit utils
|
|
864
864
|
*/
|
|
865
865
|
Opa5.getUtils = function () {
|
|
866
866
|
return iFrameLauncher.getUtils() || QUnitUtils;
|
|
@@ -1123,7 +1123,7 @@ sap.ui.define(
|
|
|
1123
1123
|
* Creates a matcher function that returns an aggregation element of a control at a given index.
|
|
1124
1124
|
* @param {string} sAggregationName the name of the aggregation that is used for matching
|
|
1125
1125
|
* @param {int} iIndex the index within the aggregation
|
|
1126
|
-
* @returns {function} the matcher function returns the item at a certain index in the aggregation or <code>undefined</code> if index not in range
|
|
1126
|
+
* @returns {function(sap.ui.core.Control): sap.ui.base.ManagedObject} the matcher function returns the item at a certain index in the aggregation or <code>undefined</code> if index not in range
|
|
1127
1127
|
* @public
|
|
1128
1128
|
* @static
|
|
1129
1129
|
*/
|
|
@@ -681,7 +681,11 @@ sap.ui.define([
|
|
|
681
681
|
|
|
682
682
|
// set up the fake server
|
|
683
683
|
oServer = sinon.fakeServer.create();
|
|
684
|
-
oSandbox.
|
|
684
|
+
if (oSandbox.getFakes) { // Sinon.JS version >= 5
|
|
685
|
+
oSandbox.getFakes().push(oServer); // not a public API of Sinon.JS
|
|
686
|
+
} else {
|
|
687
|
+
oSandbox.add(oServer); // not a public API of Sinon.JS
|
|
688
|
+
}
|
|
685
689
|
oServer.autoRespond = true;
|
|
686
690
|
if (sAutoRespondAfter) {
|
|
687
691
|
oServer.autoRespondAfter = parseInt(sAutoRespondAfter);
|
|
@@ -774,7 +778,13 @@ sap.ui.define([
|
|
|
774
778
|
* @since 1.27.1
|
|
775
779
|
*/
|
|
776
780
|
withNormalizedMessages : function (fnCodeUnderTest) {
|
|
777
|
-
var oSandbox
|
|
781
|
+
var oSandbox;
|
|
782
|
+
|
|
783
|
+
if (sinon.createSandbox) {
|
|
784
|
+
oSandbox = sinon.createSandbox();
|
|
785
|
+
} else {
|
|
786
|
+
oSandbox = sinon.sandbox.create();
|
|
787
|
+
}
|
|
778
788
|
|
|
779
789
|
try {
|
|
780
790
|
var oCore = sap.ui.getCore(),
|
|
@@ -953,6 +963,29 @@ sap.ui.define([
|
|
|
953
963
|
});
|
|
954
964
|
TestUtils.useFakeServer(oSandbox, sSourceBase || "sap/ui/core/qunit/odata/v4/data",
|
|
955
965
|
mResultingFixture, aRegExps, sFilterBase !== "/" ? sFilterBase : undefined);
|
|
966
|
+
},
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Creates and returns a spy for <code>XMLHttpRequest.prototype.open</code> which is
|
|
970
|
+
* used in {@link sap.base.util.fetch}.
|
|
971
|
+
*
|
|
972
|
+
* @param {object} oSandbox
|
|
973
|
+
* a Sinon sandbox as created using <code>sinon.sandbox.create()</code>
|
|
974
|
+
* @return {object} Returns the spy
|
|
975
|
+
*/
|
|
976
|
+
spyFetch : function(oSandbox) {
|
|
977
|
+
var spy = oSandbox.spy(XMLHttpRequest.prototype, "open");
|
|
978
|
+
|
|
979
|
+
/**
|
|
980
|
+
* Returns the request URL
|
|
981
|
+
* @param {number} iCall The 'nth' call
|
|
982
|
+
* @return {string} Returns the request URL
|
|
983
|
+
*/
|
|
984
|
+
spy.calledWithUrl = function(iCall) {
|
|
985
|
+
return spy.getCall(iCall).args[1];
|
|
986
|
+
};
|
|
987
|
+
|
|
988
|
+
return spy;
|
|
956
989
|
}
|
|
957
990
|
};
|
|
958
991
|
|
|
@@ -231,6 +231,13 @@ sap.ui.define([
|
|
|
231
231
|
Press.controlAdapters["sap.ui.comp.smartfilterbar.SmartFilterBar"] = "btnGo"; // always available?
|
|
232
232
|
|
|
233
233
|
Press.controlAdapters["sap.m.ObjectAttribute"] = "text"; // suffix is the same in active state. focusDomRef: <div> -- root
|
|
234
|
+
Press.controlAdapters["sap.m.ObjectStatus"] = function (oControl) {
|
|
235
|
+
if (oControl.getActive()) {
|
|
236
|
+
return "link";
|
|
237
|
+
} else {
|
|
238
|
+
return null; // focusDomRef: <div> -- root
|
|
239
|
+
}
|
|
240
|
+
};
|
|
234
241
|
|
|
235
242
|
Press.controlAdapters["sap.m.ObjectIdentifier"] = function (oControl) {
|
|
236
243
|
if (oControl.getTitleActive()) {
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/base/ManagedObject",
|
|
9
9
|
"sap/ui/test/matchers/Matcher",
|
|
10
|
-
"sap/base/strings/capitalize"
|
|
11
|
-
|
|
12
|
-
], function (ManagedObject, Matcher, capitalize, jQueryDOM) {
|
|
10
|
+
"sap/base/strings/capitalize"
|
|
11
|
+
], function (ManagedObject, Matcher, capitalize) {
|
|
13
12
|
"use strict";
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/test/matchers/Matcher",
|
|
9
|
-
"sap/base/strings/capitalize"
|
|
10
|
-
|
|
11
|
-
], function (Matcher, capitalize, jQueryDOM) {
|
|
9
|
+
"sap/base/strings/capitalize"
|
|
10
|
+
], function (Matcher, capitalize) {
|
|
12
11
|
"use strict";
|
|
13
12
|
|
|
14
13
|
/**
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/test/matchers/Matcher",
|
|
9
|
-
"sap/base/strings/capitalize"
|
|
10
|
-
|
|
11
|
-
], function (Matcher, capitalize, jQueryDOM) {
|
|
9
|
+
"sap/base/strings/capitalize"
|
|
10
|
+
], function (Matcher, capitalize) {
|
|
12
11
|
"use strict";
|
|
13
12
|
|
|
14
13
|
/**
|
|
@@ -15,11 +15,11 @@ sap.ui.define([
|
|
|
15
15
|
* @abstract
|
|
16
16
|
* @extends sap.ui.base.ManagedObject
|
|
17
17
|
* @public
|
|
18
|
-
* @
|
|
18
|
+
* @alias sap.ui.test.matchers.Matcher
|
|
19
19
|
* @author SAP SE
|
|
20
20
|
* @since 1.23
|
|
21
21
|
*/
|
|
22
|
-
var Matcher = ManagedObject.extend("sap.ui.test.matchers.Matcher", {
|
|
22
|
+
var Matcher = ManagedObject.extend("sap.ui.test.matchers.Matcher", /** @lends sap.ui.test.matchers.Matcher.prototype */ {
|
|
23
23
|
|
|
24
24
|
metadata : {
|
|
25
25
|
publicMethods : [ "isMatching" ]
|
|
@@ -38,24 +38,22 @@ sap.ui.define([
|
|
|
38
38
|
* @param {sap.ui.core.Control} oControl the control that is checked by the matcher
|
|
39
39
|
* @return {boolean} true if the Control is matching the condition of the matcher
|
|
40
40
|
* @protected
|
|
41
|
-
* @name sap.ui.test.matchers.Matcher#isMatching
|
|
42
|
-
* @function
|
|
43
41
|
*/
|
|
44
42
|
isMatching : function (oControl) {
|
|
45
43
|
return true;
|
|
46
44
|
},
|
|
47
45
|
|
|
48
46
|
/**
|
|
49
|
-
* @
|
|
50
|
-
* Note: declared matchers are
|
|
51
|
-
* while users
|
|
47
|
+
* @returns {Window} window of the application under test, or the current window if Opa5 is not loaded
|
|
48
|
+
* Note: declared matchers are instantiated in the app context (by MatcherFactory)
|
|
49
|
+
* while users instantiate matchers in the test context (in a waitFor)
|
|
52
50
|
* @private
|
|
53
|
-
* @function
|
|
54
51
|
*/
|
|
55
52
|
_getApplicationWindow: function () {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
var Opa5 = sap.ui.require("sap/ui/test/Opa5");
|
|
54
|
+
if (Opa5) {
|
|
55
|
+
// matcher context === test context, because Opa5 is loaded
|
|
56
|
+
return Opa5.getWindow();
|
|
59
57
|
} else {
|
|
60
58
|
// matcher context === app context
|
|
61
59
|
return window;
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
/*global QUnit */
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
'sap/base/util/each',
|
|
9
|
+
'sap/ui/Global',
|
|
9
10
|
'sap/ui/test/Opa',
|
|
10
11
|
'sap/ui/test/Opa5',
|
|
11
12
|
'sap/ui/test/qunitPause',
|
|
12
13
|
'sap/ui/thirdparty/jquery'
|
|
13
|
-
], function(each, Opa, Opa5, QUnitPause, jQuery) {
|
|
14
|
+
], function(each, Global, Opa, Opa5, QUnitPause, jQuery) {
|
|
14
15
|
"use strict";
|
|
15
16
|
|
|
16
17
|
QUnitPause.setupAfterQUnit();
|
|
@@ -18,8 +19,8 @@ sap.ui.define([
|
|
|
18
19
|
QUnit.begin(function (oDetails) {
|
|
19
20
|
// add ui5 version in the user agent string bar
|
|
20
21
|
var oQUnitUserAgent = document.getElementById("#qunit-userAgent");
|
|
21
|
-
if (
|
|
22
|
-
oQUnitUserAgent.innerText += "; UI5: " +
|
|
22
|
+
if (oQUnitUserAgent) {
|
|
23
|
+
oQUnitUserAgent.innerText += "; UI5: " + Global.version;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
Opa._usageReport.begin({uri: window.location.href, totalTests: oDetails.totalTests});
|
|
@@ -292,12 +293,17 @@ sap.ui.define([
|
|
|
292
293
|
// assertion is async, push results when ready
|
|
293
294
|
var oAssertionPromise = fnAssertion.apply(oParams.appWindow, arguments)
|
|
294
295
|
.always(function (oResult) {
|
|
295
|
-
qunitThis.
|
|
296
|
-
oResult
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
296
|
+
if ( typeof qunitThis.pushResult === "function" ) {
|
|
297
|
+
qunitThis.pushResult(oResult);
|
|
298
|
+
} else {
|
|
299
|
+
// fallback for QUnit < 1.22.0
|
|
300
|
+
qunitThis.push(
|
|
301
|
+
oResult.result,
|
|
302
|
+
oResult.actual,
|
|
303
|
+
oResult.expected,
|
|
304
|
+
oResult.message
|
|
305
|
+
);
|
|
306
|
+
}
|
|
301
307
|
});
|
|
302
308
|
|
|
303
309
|
// schedule async assertion promise on waitFor flow so test waits till assertion is ready
|
|
@@ -6,9 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
'sap/ui/base/Object',
|
|
9
|
-
'sap/ui/test/pipelines/PipelineFactory'
|
|
10
|
-
|
|
11
|
-
], function(UI5Object, PipelineFactory, jQueryDOM) {
|
|
9
|
+
'sap/ui/test/pipelines/PipelineFactory'
|
|
10
|
+
], function(UI5Object, PipelineFactory) {
|
|
12
11
|
"use strict";
|
|
13
12
|
var oPipelineFactory = new PipelineFactory({
|
|
14
13
|
name: "Action",
|
|
@@ -7,9 +7,8 @@
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/test/_OpaLogger",
|
|
9
9
|
"sap/ui/base/Object",
|
|
10
|
-
"sap/ui/test/pipelines/PipelineFactory"
|
|
11
|
-
|
|
12
|
-
], function(_OpaLogger, UI5Object, PipelineFactory, jQueryDOM) {
|
|
10
|
+
"sap/ui/test/pipelines/PipelineFactory"
|
|
11
|
+
], function(_OpaLogger, UI5Object, PipelineFactory) {
|
|
13
12
|
"use strict";
|
|
14
13
|
var oPipelineFactory = new PipelineFactory({
|
|
15
14
|
name: "Matcher",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* URI.js - Mutating URLs
|
|
3
3
|
*
|
|
4
|
-
* Version: 1.19.
|
|
4
|
+
* Version: 1.19.11
|
|
5
5
|
*
|
|
6
6
|
* Author: Rodney Rehm
|
|
7
7
|
* Web: http://medialize.github.io/URI.js/
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
return /^[0-9]+$/.test(value);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
URI.version = '1.19.
|
|
93
|
+
URI.version = '1.19.11';
|
|
94
94
|
|
|
95
95
|
var p = URI.prototype;
|
|
96
96
|
var hasOwn = Object.prototype.hasOwnProperty;
|
|
@@ -249,6 +249,8 @@
|
|
|
249
249
|
parens: /(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g,
|
|
250
250
|
};
|
|
251
251
|
URI.leading_whitespace_expression = /^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/
|
|
252
|
+
// https://infra.spec.whatwg.org/#ascii-tab-or-newline
|
|
253
|
+
URI.ascii_tab_whitespace = /[\u0009\u000A\u000D]+/g
|
|
252
254
|
// http://www.iana.org/assignments/uri-schemes.html
|
|
253
255
|
// http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports
|
|
254
256
|
URI.defaultPorts = {
|
|
@@ -506,6 +508,8 @@
|
|
|
506
508
|
}
|
|
507
509
|
|
|
508
510
|
string = string.replace(URI.leading_whitespace_expression, '')
|
|
511
|
+
// https://infra.spec.whatwg.org/#ascii-tab-or-newline
|
|
512
|
+
string = string.replace(URI.ascii_tab_whitespace, '')
|
|
509
513
|
|
|
510
514
|
// [protocol"://"[username[":"password]"@"]hostname[":"port]"/"?][path]["?"querystring]["#"fragment]
|
|
511
515
|
|
|
@@ -527,6 +531,8 @@
|
|
|
527
531
|
|
|
528
532
|
// slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)
|
|
529
533
|
string = string.replace(/^(https?|ftp|wss?)?:+[/\\]*/i, '$1://');
|
|
534
|
+
// slashes and backslashes have lost all meaning for scheme relative URLs
|
|
535
|
+
string = string.replace(/^[/\\]{2,}/i, '//');
|
|
530
536
|
|
|
531
537
|
// extract protocol
|
|
532
538
|
if (string.substring(0, 2) === '//') {
|
|
@@ -33,7 +33,7 @@ sap.ui.define(['sap/ui/Device'], function(Device) {
|
|
|
33
33
|
var oParseError;
|
|
34
34
|
var DomHelper = new DOMParser();
|
|
35
35
|
|
|
36
|
-
oXMLDocument = DomHelper.parseFromString(sXMLText, "
|
|
36
|
+
oXMLDocument = DomHelper.parseFromString(sXMLText, "application/xml");
|
|
37
37
|
|
|
38
38
|
oParseError = Helper.getParseError(oXMLDocument);
|
|
39
39
|
if (oParseError) {
|