@openui5/sap.ui.core 1.139.0 → 1.141.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/THIRDPARTY.txt +2 -2
- package/package.json +1 -1
- package/src/jquery.sap.global.js +1 -1
- package/src/jquery.sap.mobile.js +0 -8
- package/src/jquery.sap.properties.js +1 -1
- package/src/jquery.sap.resources.js +1 -1
- package/src/jquery.sap.script.js +1 -1
- package/src/jquery.sap.storage.js +3 -3
- package/src/sap/base/Event.js +1 -1
- package/src/sap/base/Eventing.js +1 -1
- package/src/sap/base/config.js +1 -1
- package/src/sap/base/i18n/Formatting.js +1 -1
- package/src/sap/base/i18n/LanguageTag.js +9 -9
- package/src/sap/base/i18n/Localization.js +2 -2
- package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
- package/src/sap/base/security/URLListValidator.js +7 -3
- package/src/sap/base/security/encodeURL.js +1 -1
- package/src/sap/base/util/resolveReference.js +3 -1
- 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/ui/Device.js +3 -3
- package/src/sap/ui/Global.js +3 -3
- package/src/sap/ui/base/BindingParser.js +22 -5
- package/src/sap/ui/base/DataType.js +1 -1
- package/src/sap/ui/base/Event.js +1 -1
- package/src/sap/ui/base/EventProvider.js +1 -1
- package/src/sap/ui/base/ExpressionParser.js +5 -1
- package/src/sap/ui/base/Interface.js +1 -1
- package/src/sap/ui/base/ManagedObject.js +1 -1
- package/src/sap/ui/base/ManagedObjectMetadata.js +3 -3
- 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/base/SyncPromise.js +3 -2
- package/src/sap/ui/core/.library +3 -3
- package/src/sap/ui/core/BusyIndicator.js +1 -1
- package/src/sap/ui/core/Component.js +1 -1
- package/src/sap/ui/core/ComponentContainer.js +2 -2
- package/src/sap/ui/core/ComponentMetadata.js +1 -1
- package/src/sap/ui/core/ComponentSupport.js +3 -3
- package/src/sap/ui/core/Configuration.js +4 -4
- package/src/sap/ui/core/Control.js +1 -1
- package/src/sap/ui/core/Core.js +2 -11
- 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 +3 -3
- package/src/sap/ui/core/ElementMetadata.js +1 -1
- package/src/sap/ui/core/EnabledPropagator.js +1 -1
- package/src/sap/ui/core/EventBus.js +1 -1
- 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/IndicationColorSupport.js +1 -1
- 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 +1 -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/Lib.js +50 -140
- 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 +7 -7
- package/src/sap/ui/core/LocaleData.js +7 -4
- package/src/sap/ui/core/Manifest.js +1 -1
- package/src/sap/ui/core/Message.js +1 -1
- package/src/sap/ui/core/RenderManager.js +1 -1
- package/src/sap/ui/core/Renderer.js +1 -1
- package/src/sap/ui/core/ResizeHandler.js +1 -1
- package/src/sap/ui/core/ScrollBar.js +1 -1
- package/src/sap/ui/core/SeparatorItem.js +1 -1
- package/src/sap/ui/core/Theming.js +145 -76
- package/src/sap/ui/core/Title.js +1 -1
- package/src/sap/ui/core/TooltipBase.js +1 -1
- package/src/sap/ui/core/UIArea.js +1 -1
- package/src/sap/ui/core/UIComponent.js +16 -7
- package/src/sap/ui/core/UIComponentMetadata.js +1 -1
- package/src/sap/ui/core/ValueStateSupport.js +1 -1
- package/src/sap/ui/core/VariantLayoutData.js +1 -1
- package/src/sap/ui/core/XMLComposite.js +1 -1
- package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
- package/src/sap/ui/core/XMLTemplateProcessor.js +1 -1
- package/src/sap/ui/core/_IconRegistry.js +19 -39
- package/src/sap/ui/core/date/UI5Date.js +1 -1
- package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
- package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
- package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
- package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
- 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/FormatUtils.js +1 -1
- package/src/sap/ui/core/format/NumberFormat.js +2 -2
- package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
- package/src/sap/ui/core/getCompatibilityVersion.js +1 -1
- package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
- package/src/sap/ui/core/library.js +3 -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_ar.properties +26 -11
- package/src/sap/ui/core/messagebundle_bg.properties +21 -6
- package/src/sap/ui/core/messagebundle_ca.properties +24 -9
- package/src/sap/ui/core/messagebundle_cnr.properties +23 -8
- package/src/sap/ui/core/messagebundle_cs.properties +24 -9
- package/src/sap/ui/core/messagebundle_cy.properties +24 -9
- package/src/sap/ui/core/messagebundle_da.properties +21 -6
- package/src/sap/ui/core/messagebundle_de.properties +16 -1
- package/src/sap/ui/core/messagebundle_el.properties +26 -11
- package/src/sap/ui/core/messagebundle_en.properties +24 -9
- package/src/sap/ui/core/messagebundle_en_GB.properties +24 -9
- package/src/sap/ui/core/messagebundle_en_US_saprigi.properties +24 -9
- package/src/sap/ui/core/messagebundle_es.properties +21 -6
- package/src/sap/ui/core/messagebundle_es_MX.properties +24 -9
- package/src/sap/ui/core/messagebundle_et.properties +31 -16
- package/src/sap/ui/core/messagebundle_fi.properties +20 -5
- package/src/sap/ui/core/messagebundle_fr.properties +22 -7
- package/src/sap/ui/core/messagebundle_fr_CA.properties +20 -5
- package/src/sap/ui/core/messagebundle_hi.properties +24 -9
- package/src/sap/ui/core/messagebundle_hr.properties +20 -5
- package/src/sap/ui/core/messagebundle_hu.properties +23 -8
- package/src/sap/ui/core/messagebundle_id.properties +20 -5
- package/src/sap/ui/core/messagebundle_it.properties +23 -8
- package/src/sap/ui/core/messagebundle_iw.properties +21 -6
- package/src/sap/ui/core/messagebundle_ja.properties +19 -4
- package/src/sap/ui/core/messagebundle_kk.properties +22 -7
- package/src/sap/ui/core/messagebundle_ko.properties +20 -5
- package/src/sap/ui/core/messagebundle_lt.properties +20 -5
- package/src/sap/ui/core/messagebundle_lv.properties +20 -5
- package/src/sap/ui/core/messagebundle_mk.properties +25 -10
- package/src/sap/ui/core/messagebundle_ms.properties +24 -9
- package/src/sap/ui/core/messagebundle_nl.properties +22 -7
- package/src/sap/ui/core/messagebundle_no.properties +22 -7
- package/src/sap/ui/core/messagebundle_pl.properties +19 -4
- package/src/sap/ui/core/messagebundle_pt.properties +20 -5
- package/src/sap/ui/core/messagebundle_pt_PT.properties +18 -3
- package/src/sap/ui/core/messagebundle_ro.properties +22 -7
- package/src/sap/ui/core/messagebundle_ru.properties +19 -4
- package/src/sap/ui/core/messagebundle_sh.properties +23 -8
- package/src/sap/ui/core/messagebundle_sk.properties +23 -8
- package/src/sap/ui/core/messagebundle_sl.properties +20 -5
- package/src/sap/ui/core/messagebundle_sr.properties +23 -8
- package/src/sap/ui/core/messagebundle_sv.properties +23 -8
- package/src/sap/ui/core/messagebundle_th.properties +20 -5
- package/src/sap/ui/core/messagebundle_tr.properties +20 -5
- package/src/sap/ui/core/messagebundle_uk.properties +22 -7
- package/src/sap/ui/core/messagebundle_vi.properties +18 -3
- package/src/sap/ui/core/messagebundle_zh_CN.properties +24 -9
- package/src/sap/ui/core/messagebundle_zh_TW.properties +20 -5
- 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 +1 -1
- package/src/sap/ui/core/mvc/TemplateView.js +1 -1
- package/src/sap/ui/core/mvc/View.js +2 -2
- package/src/sap/ui/core/mvc/XMLView.js +1 -1
- package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
- package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -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/History.js +14 -5
- package/src/sap/ui/core/routing/Route.js +1 -1
- package/src/sap/ui/core/routing/Router.js +19 -1
- package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
- package/src/sap/ui/core/search/SearchProvider.js +1 -1
- 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/Plugin.js +1 -1
- package/src/sap/ui/core/support/Support.js +1 -1
- package/src/sap/ui/core/support/ViewInfo.css +12 -12
- package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
- 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 +1 -1
- package/src/sap/ui/core/support/plugins/Trace.js +1 -1
- package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
- package/src/sap/ui/core/support/techinfo/TechnicalInfo.js +1 -3
- package/src/sap/ui/core/support/trace/E2eTraceLib.js +13 -7
- package/src/sap/ui/core/themes/base/BrowserScrollbar.less +0 -28
- package/src/sap/ui/core/themes/base/ScrollBar.less +4 -0
- package/src/sap/ui/core/themes/base/base.less +80 -31
- package/src/sap/ui/core/themes/base/global.less +5 -0
- package/src/sap/ui/core/themes/base/shared.less +4 -1
- package/src/sap/ui/core/themes/base/skeleton.less +7 -3
- package/src/sap/ui/core/themes/sap_hcb/LocalBusyIndicator.less +4 -0
- package/src/sap/ui/core/themes/sap_hcb/base_LocalBusyIndicator.less +4 -0
- package/src/sap/ui/core/themes/sap_hcb/base_ScrollBar.less +4 -0
- package/src/sap/ui/core/theming/Parameters.js +729 -754
- package/src/sap/ui/core/theming/ThemeHelper.js +0 -77
- package/src/sap/ui/core/theming/ThemeManager.js +536 -526
- 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 +1 -1
- 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/DraftEnabledMockServer.js +47 -43
- 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 +1 -1
- package/src/sap/ui/core/util/MockServer.js +1 -1
- package/src/sap/ui/core/util/PasteHelper.js +1 -1
- 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/webc/WebComponent.js +93 -45
- package/src/sap/ui/core/webc/WebComponentMetadata.js +40 -6
- 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.js +1 -1
- package/src/sap/ui/dom/includeStylesheet.js +4 -1
- package/src/sap/ui/events/F6Navigation.js +11 -3
- 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/DataState.js +1 -1
- package/src/sap/ui/model/MetaModel.js +1 -1
- package/src/sap/ui/model/Model.js +7 -7
- package/src/sap/ui/model/SelectionModel.js +1 -1
- package/src/sap/ui/model/SimpleType.js +1 -1
- package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
- package/src/sap/ui/model/Type.js +1 -1
- package/src/sap/ui/model/json/JSONModel.js +1 -1
- package/src/sap/ui/model/json/TypedJSONContext.js +16 -0
- package/src/sap/ui/model/json/TypedJSONModel.js +16 -0
- package/src/sap/ui/model/message/MessageModel.js +1 -1
- package/src/sap/ui/model/odata/AnnotationHelper.js +1 -1
- package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
- package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
- package/src/sap/ui/model/odata/ODataMetadata.js +4 -4
- package/src/sap/ui/model/odata/ODataModel.js +1 -1
- package/src/sap/ui/model/odata/ODataTreeBindingFlat.js +33 -80
- package/src/sap/ui/model/odata/_AnnotationHelperExpression.js +2 -2
- 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 +1 -1
- package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
- package/src/sap/ui/model/odata/v2/ODataContextBinding.js +2 -2
- package/src/sap/ui/model/odata/v2/ODataListBinding.js +2 -2
- package/src/sap/ui/model/odata/v2/ODataModel.js +63 -67
- package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +84 -70
- package/src/sap/ui/model/odata/v4/AnnotationHelper.js +11 -7
- package/src/sap/ui/model/odata/v4/Context.js +27 -27
- package/src/sap/ui/model/odata/v4/ODataBinding.js +44 -28
- package/src/sap/ui/model/odata/v4/ODataContextBinding.js +16 -15
- package/src/sap/ui/model/odata/v4/ODataListBinding.js +35 -23
- package/src/sap/ui/model/odata/v4/ODataMetaModel.js +81 -53
- package/src/sap/ui/model/odata/v4/ODataModel.js +40 -24
- package/src/sap/ui/model/odata/v4/ODataParentBinding.js +50 -19
- package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +3 -3
- package/src/sap/ui/model/odata/v4/_AnnotationHelperExpression.js +14 -14
- package/src/sap/ui/model/odata/v4/lib/_AggregationCache.js +68 -18
- package/src/sap/ui/model/odata/v4/lib/_Batch.js +10 -7
- package/src/sap/ui/model/odata/v4/lib/_Cache.js +64 -74
- package/src/sap/ui/model/odata/v4/lib/_GroupLock.js +1 -1
- package/src/sap/ui/model/odata/v4/lib/_Helper.js +15 -15
- package/src/sap/ui/model/odata/v4/lib/_MetadataConverter.js +35 -4
- package/src/sap/ui/model/odata/v4/lib/_Requestor.js +29 -16
- package/src/sap/ui/model/odata/v4/lib/_V2Requestor.js +2 -2
- package/src/sap/ui/model/resource/ResourceModel.js +1 -1
- package/src/sap/ui/model/type/Boolean.js +1 -1
- package/src/sap/ui/model/type/Currency.js +1 -1
- 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 +1 -1
- 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 +19 -5
- package/src/sap/ui/model/xml/XMLModel.js +1 -1
- package/src/sap/ui/performance/XHRInterceptor.js +14 -9
- package/src/sap/ui/performance/trace/FESR.js +4 -11
- package/src/sap/ui/performance/trace/Passport.js +3 -10
- package/src/sap/ui/performance/trace/_InteractionImpl.js +4 -10
- package/src/sap/ui/qunit/utils/ControlIterator.js +1 -2
- package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
- package/src/sap/ui/test/TestUtils.js +27 -15
- package/src/sap/ui/test/generic/TestBase.js +1 -1
- package/src/sap/ui/test/generic/Utils.js +6 -6
- package/src/sap/ui/test/gherkin/dataTableUtils.js +2 -2
- package/src/sap/ui/test/opaQunit.js +3 -0
- package/src/sap/ui/thirdparty/caja-html-sanitizer.js +8 -2
- package/src/sap/ui/thirdparty/qunit-2.js +4 -1
- package/src/sap/ui/util/Mobile.js +0 -9
- package/src/sap/ui/util/Storage.js +1 -1
- package/src/sap/ui/util/isCrossOriginURL.js +1 -1
- package/src/ui5loader.js +1 -1
- package/ui5.yaml +0 -1
- package/src/sap/ui/core/plugin/LessSupport.js +0 -542
|
@@ -192,11 +192,14 @@ sap.ui.define([
|
|
|
192
192
|
* @param {string} sResourcePath The resource path with possible query options and placeholders
|
|
193
193
|
* @param {string} sMetaPath The absolute meta path matching the resource path
|
|
194
194
|
* @param {object} mQueryOptions Query options to add to the resource path
|
|
195
|
+
* @param {boolean} [bSortSystemQueryOptions]
|
|
196
|
+
* Whether system query options are sorted alphabetically and moved to the query string's end
|
|
195
197
|
* @returns {string} The resource path with the query options
|
|
196
198
|
*
|
|
197
199
|
* @private
|
|
198
200
|
*/
|
|
199
|
-
_Requestor.prototype.addQueryString = function (sResourcePath, sMetaPath, mQueryOptions
|
|
201
|
+
_Requestor.prototype.addQueryString = function (sResourcePath, sMetaPath, mQueryOptions,
|
|
202
|
+
bSortSystemQueryOptions) {
|
|
200
203
|
var sQueryString;
|
|
201
204
|
|
|
202
205
|
mQueryOptions = this.convertQueryOptions(sMetaPath, mQueryOptions, false, true);
|
|
@@ -209,7 +212,7 @@ sap.ui.define([
|
|
|
209
212
|
return _Helper.encodePair(sOption, sValue);
|
|
210
213
|
});
|
|
211
214
|
|
|
212
|
-
sQueryString = _Helper.buildQuery(mQueryOptions);
|
|
215
|
+
sQueryString = _Helper.buildQuery(mQueryOptions, bSortSystemQueryOptions);
|
|
213
216
|
if (!sQueryString) {
|
|
214
217
|
return sResourcePath;
|
|
215
218
|
}
|
|
@@ -916,7 +919,7 @@ sap.ui.define([
|
|
|
916
919
|
*
|
|
917
920
|
* @param {string} sMetaPath
|
|
918
921
|
* The meta path, e.g. "/SalesOrderList/SO_2_BP"
|
|
919
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
922
|
+
* @returns {sap.ui.base.SyncPromise<object>}
|
|
920
923
|
* A promise that is resolved with the type at the given path.
|
|
921
924
|
*
|
|
922
925
|
* @private
|
|
@@ -1285,6 +1288,9 @@ sap.ui.define([
|
|
|
1285
1288
|
if (oCandidate.$mergeRequests && oRequest.$mergeRequests) {
|
|
1286
1289
|
oCandidate.$mergeRequests(oRequest.$mergeRequests());
|
|
1287
1290
|
}
|
|
1291
|
+
oCandidate.$sortSystemQueryOptions
|
|
1292
|
+
||= oCandidate.$queryOptions.$$sortIfMerged
|
|
1293
|
+
|| oRequest.$queryOptions.$$sortIfMerged;
|
|
1288
1294
|
|
|
1289
1295
|
return true;
|
|
1290
1296
|
}
|
|
@@ -1302,10 +1308,12 @@ sap.ui.define([
|
|
|
1302
1308
|
var mQueryOptions = oRequest.$queryOptions;
|
|
1303
1309
|
|
|
1304
1310
|
if (mQueryOptions) {
|
|
1305
|
-
if
|
|
1311
|
+
// if there was no $select, don't introduce one
|
|
1312
|
+
if (mQueryOptions.$expand && mQueryOptions.$select?.length === 0) {
|
|
1306
1313
|
mQueryOptions.$select = Object.keys(mQueryOptions.$expand).sort().slice(0, 1);
|
|
1307
1314
|
}
|
|
1308
|
-
oRequest.url = that.addQueryString(oRequest.url, oRequest.$metaPath, mQueryOptions
|
|
1315
|
+
oRequest.url = that.addQueryString(oRequest.url, oRequest.$metaPath, mQueryOptions,
|
|
1316
|
+
oRequest.$sortSystemQueryOptions);
|
|
1309
1317
|
}
|
|
1310
1318
|
});
|
|
1311
1319
|
aResultingRequests.iChangeSet = aRequests.iChangeSet;
|
|
@@ -1582,7 +1590,8 @@ sap.ui.define([
|
|
|
1582
1590
|
* Returns a sync promise that is resolved when the requestor is ready to be used. The V4
|
|
1583
1591
|
* requestor is ready immediately. Subclasses may behave differently.
|
|
1584
1592
|
*
|
|
1585
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
1593
|
+
* @returns {sap.ui.base.SyncPromise<void>}
|
|
1594
|
+
* A sync promise that is resolved immediately with no result
|
|
1586
1595
|
*
|
|
1587
1596
|
* @public
|
|
1588
1597
|
*/
|
|
@@ -1592,10 +1601,11 @@ sap.ui.define([
|
|
|
1592
1601
|
|
|
1593
1602
|
/**
|
|
1594
1603
|
* Returns a promise that will be resolved once the CSRF token has been refreshed, or rejected
|
|
1595
|
-
*
|
|
1596
|
-
*
|
|
1597
|
-
*
|
|
1598
|
-
* {@link #sendRequest}) will also
|
|
1604
|
+
* (unless for an initial call without <code>sOldSecurityToken</code>) if that fails. Makes sure
|
|
1605
|
+
* that only one HEAD request is underway at any given time and shares the promise accordingly.
|
|
1606
|
+
* If the HEAD request fails with a 503 HTTP status code and a "Retry-After" response header,
|
|
1607
|
+
* the promise is also resolved because the next request (in {@link #sendRequest}) will also
|
|
1608
|
+
* fail with 503 and is handled there.
|
|
1599
1609
|
*
|
|
1600
1610
|
* @param {string} [sOldSecurityToken]
|
|
1601
1611
|
* Security token that caused a 403. A new token is only fetched if the old one is still
|
|
@@ -1638,7 +1648,8 @@ sap.ui.define([
|
|
|
1638
1648
|
fnResolve();
|
|
1639
1649
|
}, function (jqXHR) {
|
|
1640
1650
|
that.oSecurityTokenPromise = null;
|
|
1641
|
-
if (
|
|
1651
|
+
if (!sOldSecurityToken
|
|
1652
|
+
|| jqXHR.status === 503 && jqXHR.getResponseHeader("Retry-After")) {
|
|
1642
1653
|
fnResolve();
|
|
1643
1654
|
} else {
|
|
1644
1655
|
fnReject(
|
|
@@ -1853,10 +1864,12 @@ sap.ui.define([
|
|
|
1853
1864
|
* contain $expand
|
|
1854
1865
|
* @param {any} [vOwner]
|
|
1855
1866
|
* An additional precondition for the merging of GET requests: the owner must be identical.
|
|
1867
|
+
* This is probably relevant when using parameter <code>fnMergeRequests</code> to ensure both
|
|
1868
|
+
* functions work well together.
|
|
1856
1869
|
* @param {function(string[]):string[]} [fnMergeRequests]
|
|
1857
1870
|
* Function which is called during merging of GET or PATCH requests. If a merged request has a
|
|
1858
|
-
* function given, this function will be called and its return value is
|
|
1859
|
-
*
|
|
1871
|
+
* function given, this function will be called and its return value is given to the one
|
|
1872
|
+
* remaining request's function as a parameter. See also <code>vOwner</code>.
|
|
1860
1873
|
* @returns {Promise}
|
|
1861
1874
|
* A promise on the outcome of the HTTP request; it will be rejected with an error having the
|
|
1862
1875
|
* property <code>canceled = true</code> instead of sending a request if
|
|
@@ -2248,7 +2261,7 @@ sap.ui.define([
|
|
|
2248
2261
|
*
|
|
2249
2262
|
* @param {string} sGroupId
|
|
2250
2263
|
* The group ID
|
|
2251
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
2264
|
+
* @returns {sap.ui.base.SyncPromise<void>}
|
|
2252
2265
|
* A promise on the outcome of the HTTP request resolving with <code>undefined</code>; it is
|
|
2253
2266
|
* rejected with an error if the batch request itself fails.
|
|
2254
2267
|
*
|
|
@@ -2296,7 +2309,7 @@ sap.ui.define([
|
|
|
2296
2309
|
*
|
|
2297
2310
|
* @param {string} sGroupId
|
|
2298
2311
|
* The group ID
|
|
2299
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
2312
|
+
* @returns {sap.ui.base.SyncPromise<void>}
|
|
2300
2313
|
* A promise that resolves without a defined result when a batch response has been received
|
|
2301
2314
|
* for the given group ID, no matter if the batch succeeded or failed
|
|
2302
2315
|
*
|
|
@@ -2313,7 +2326,7 @@ sap.ui.define([
|
|
|
2313
2326
|
*
|
|
2314
2327
|
* @param {string} sGroupId
|
|
2315
2328
|
* The group ID
|
|
2316
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
2329
|
+
* @returns {sap.ui.base.SyncPromise<void>}
|
|
2317
2330
|
* A promise that resolves without a defined result when all currently running change requests
|
|
2318
2331
|
* for the given group ID have been processed completely, no matter if they succeed or fail
|
|
2319
2332
|
*
|
|
@@ -944,8 +944,8 @@ sap.ui.define([
|
|
|
944
944
|
* Returns a sync promise that is resolved when the requestor is ready to be used. Waits for the
|
|
945
945
|
* metadata to be available.
|
|
946
946
|
*
|
|
947
|
-
* @returns {sap.ui.base.SyncPromise}
|
|
948
|
-
* metadata is available
|
|
947
|
+
* @returns {sap.ui.base.SyncPromise<void>}
|
|
948
|
+
* A sync promise that is resolved with no result when the metadata is available
|
|
949
949
|
*
|
|
950
950
|
* @public
|
|
951
951
|
*/
|
|
@@ -227,7 +227,7 @@ sap.ui.define([
|
|
|
227
227
|
*
|
|
228
228
|
* @extends sap.ui.model.Model
|
|
229
229
|
* @public
|
|
230
|
-
* @version 1.
|
|
230
|
+
* @version 1.141.0
|
|
231
231
|
*/
|
|
232
232
|
var ResourceModel = Model.extend("sap.ui.model.resource.ResourceModel", /** @lends sap.ui.model.resource.ResourceModel.prototype */ {
|
|
233
233
|
|
|
@@ -27,7 +27,7 @@ sap.ui.define([
|
|
|
27
27
|
* @extends sap.ui.model.SimpleType
|
|
28
28
|
*
|
|
29
29
|
* @author SAP SE
|
|
30
|
-
* @version 1.
|
|
30
|
+
* @version 1.141.0
|
|
31
31
|
*
|
|
32
32
|
* @public
|
|
33
33
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.Date
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.141.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.DateInterval
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.141.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getDateTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./Date', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.Date
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.141.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
|
|
@@ -19,7 +19,7 @@ sap.ui.define(['./DateInterval', 'sap/ui/core/format/DateFormat'],
|
|
|
19
19
|
* @extends sap.ui.model.type.DateInterval
|
|
20
20
|
*
|
|
21
21
|
* @author SAP SE
|
|
22
|
-
* @version 1.
|
|
22
|
+
* @version 1.141.0
|
|
23
23
|
*
|
|
24
24
|
* @public
|
|
25
25
|
* @param {object} [oFormatOptions] Formatting options. For a list of all available options, see {@link sap.ui.core.format.DateFormat.getTimeInstance DateFormat}.
|
|
@@ -49,7 +49,7 @@ sap.ui.define([
|
|
|
49
49
|
*
|
|
50
50
|
*
|
|
51
51
|
* @author SAP SE
|
|
52
|
-
* @version 1.
|
|
52
|
+
* @version 1.141.0
|
|
53
53
|
*
|
|
54
54
|
* @public
|
|
55
55
|
* @param {object} [oFormatOptions]
|
|
@@ -61,9 +61,16 @@ sap.ui.define([
|
|
|
61
61
|
* {@link sap.ui.model.Binding#supportsIgnoreMessages}, and the corresponding binding
|
|
62
62
|
* parameter is not set manually.
|
|
63
63
|
* @param {object} [oFormatOptions.decimals]
|
|
64
|
-
* The number of decimals to be used for formatting the
|
|
65
|
-
*
|
|
66
|
-
*
|
|
64
|
+
* The number of decimals to be used for formatting the numerical value of the unit composite type; if none of the
|
|
65
|
+
* format options <code>maxFractionDigits</code>, <code>minFractionDigits</code> or <code>decimals</code> are
|
|
66
|
+
* given, the following defaults apply:
|
|
67
|
+
* <ul>
|
|
68
|
+
* <li> <b>0</b> if the numerical value is of an OData integer type, i.e. {@link sap.ui.model.odata.type.Int}
|
|
69
|
+
* or {@link sap.ui.model.odata.type.Int64} </li>
|
|
70
|
+
* <li> the <b>scale constraint of the numerical value's type</b> if this type is
|
|
71
|
+
* {@link sap.ui.model.odata.type.Decimal} and the scale is not "variable" </li>
|
|
72
|
+
* <li> <b>3</b> otherwise </li>
|
|
73
|
+
* </ul>
|
|
67
74
|
* @param {boolean} [oFormatOptions.preserveDecimals=true]
|
|
68
75
|
* By default decimals are preserved, unless <code>oFormatOptions.style</code> is given as
|
|
69
76
|
* "short" or "long"; since 1.89.0
|
|
@@ -324,9 +331,16 @@ sap.ui.define([
|
|
|
324
331
|
* @since 1.120.0
|
|
325
332
|
*/
|
|
326
333
|
Unit.prototype.processPartTypes = function (aPartTypes) {
|
|
334
|
+
this.iScale = undefined; // type of quantity binding part may be changed => reset scale
|
|
327
335
|
const oQuantityType = aPartTypes[0];
|
|
336
|
+
if (oQuantityType?.isA(["sap.ui.model.odata.type.Int", "sap.ui.model.odata.type.Int64"])) {
|
|
337
|
+
this.iScale = 0;
|
|
338
|
+
}
|
|
328
339
|
if (oQuantityType?.isA("sap.ui.model.odata.type.Decimal")) {
|
|
329
|
-
|
|
340
|
+
const iScale = oQuantityType.oConstraints?.scale;
|
|
341
|
+
if (iScale !== Infinity) { // like in Decimal type, do not propagate scale "variable" to formatter
|
|
342
|
+
this.iScale = iScale || 0;
|
|
343
|
+
}
|
|
330
344
|
}
|
|
331
345
|
};
|
|
332
346
|
|
|
@@ -71,7 +71,7 @@ sap.ui.define([
|
|
|
71
71
|
* @since 1.58
|
|
72
72
|
* @alias module:sap/ui/performance/XHRInterceptor
|
|
73
73
|
* @private
|
|
74
|
-
* @ui5-restricted sap.ui.
|
|
74
|
+
* @ui5-restricted sap.ui.performance.trace
|
|
75
75
|
*/
|
|
76
76
|
var oXHRInterceptor = {
|
|
77
77
|
/**
|
|
@@ -80,7 +80,8 @@ sap.ui.define([
|
|
|
80
80
|
* @param {string} sName Name under which the function is registered
|
|
81
81
|
* @param {string} sXHRMethod Name of the actual XHR method
|
|
82
82
|
* @param {function} fnCallback The registered callback function
|
|
83
|
-
* @
|
|
83
|
+
* @private
|
|
84
|
+
* @ui5-restricted sap.ui.performance.trace
|
|
84
85
|
*/
|
|
85
86
|
register: function(sName, sXHRMethod, fnCallback) {
|
|
86
87
|
Log.debug("Register '" + sName + "' for XHR function '" + sXHRMethod + "'", XHRINTERCEPTOR);
|
|
@@ -95,10 +96,11 @@ sap.ui.define([
|
|
|
95
96
|
/**
|
|
96
97
|
* Unregister a registered function.
|
|
97
98
|
*
|
|
98
|
-
|
|
99
|
+
* @param {string} sName Name under which the function is registered
|
|
99
100
|
* @param {string} sXHRMethod Name of the actual XHR method
|
|
100
101
|
* @return {boolean} True if unregister was successful
|
|
101
|
-
* @
|
|
102
|
+
* @private
|
|
103
|
+
* @ui5-restricted sap.ui.performance.trace.FESR
|
|
102
104
|
*/
|
|
103
105
|
unregister: function(sName, sXHRMethod) {
|
|
104
106
|
var bRemove = delete mRegistry[sXHRMethod][sName];
|
|
@@ -106,11 +108,14 @@ sap.ui.define([
|
|
|
106
108
|
return bRemove;
|
|
107
109
|
},
|
|
108
110
|
|
|
109
|
-
|
|
110
|
-
*
|
|
111
|
-
|
|
112
|
-
* @param {string}
|
|
113
|
-
* @
|
|
111
|
+
/**
|
|
112
|
+
* Checks if a function is registered for a specific XHR method.
|
|
113
|
+
*
|
|
114
|
+
* @param {string} sName Name under which the function is registered
|
|
115
|
+
* @param {string} sXHRMethod Name of the actual XHR method (e.g., "open", "send", "setRequestHeader")
|
|
116
|
+
* @returns {boolean} True if a function is registered under the given name for the XHR method, false otherwise
|
|
117
|
+
* @private
|
|
118
|
+
* @ui5-restricted sap.ui.performance.trace.FESR
|
|
114
119
|
*/
|
|
115
120
|
isRegistered: function(sName, sXHRMethod) {
|
|
116
121
|
return mRegistry[sXHRMethod] && mRegistry[sXHRMethod][sName];
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
sap.ui.define([
|
|
10
10
|
"sap/base/config",
|
|
11
|
-
'sap/ui/thirdparty/URI',
|
|
12
11
|
'sap/ui/Device',
|
|
13
12
|
'sap/ui/performance/trace/Passport',
|
|
14
13
|
'sap/ui/performance/trace/Interaction',
|
|
15
14
|
'sap/ui/performance/XHRInterceptor',
|
|
16
15
|
'sap/ui/performance/BeaconRequest',
|
|
16
|
+
'sap/ui/util/isCrossOriginURL',
|
|
17
17
|
'sap/base/util/Version'
|
|
18
|
-
], function (BaseConfig,
|
|
18
|
+
], function (BaseConfig, Device, Passport, Interaction, XHRInterceptor, BeaconRequest, isCrossOriginURL, Version) {
|
|
19
19
|
"use strict";
|
|
20
20
|
|
|
21
21
|
const sIntegrationEnvironment = BaseConfig.get({
|
|
@@ -30,7 +30,6 @@ sap.ui.define([
|
|
|
30
30
|
oBeaconRequest,
|
|
31
31
|
iBeaconTimeoutID,
|
|
32
32
|
ROOT_ID = Passport.getRootId(), // static per session
|
|
33
|
-
HOST = window.location.host, // static per session
|
|
34
33
|
CLIENT_OS = Device.os.name + "_" + Device.os.version,
|
|
35
34
|
CLIENT_MODEL = `${Device.browser.reportingName}_${Device.browser.version}${sIntegrationEnvironment ? ":" + sIntegrationEnvironment : ""}`,
|
|
36
35
|
CLIENT_DEVICE = setClientDevice(),
|
|
@@ -63,16 +62,10 @@ sap.ui.define([
|
|
|
63
62
|
return oDate.toISOString().replace(/[^\d]/g, '');
|
|
64
63
|
}
|
|
65
64
|
|
|
66
|
-
function isCORSRequest(sUrl) {
|
|
67
|
-
var sHost = new URI(sUrl.toString()).host();
|
|
68
|
-
// url is relative or with same host
|
|
69
|
-
return sHost && sHost !== HOST;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
65
|
function passportHeaderOverride() {
|
|
73
66
|
|
|
74
67
|
// only use Passport for non CORS requests
|
|
75
|
-
if (!
|
|
68
|
+
if (!isCrossOriginURL(arguments[1])) {
|
|
76
69
|
|
|
77
70
|
// use the first request of an interaction as FESR TransactionID
|
|
78
71
|
if (!sFESRTransactionId) {
|
|
@@ -100,7 +93,7 @@ sap.ui.define([
|
|
|
100
93
|
function fesrHeaderOverride() {
|
|
101
94
|
|
|
102
95
|
// only use FESR for non CORS requests
|
|
103
|
-
if (!
|
|
96
|
+
if (!isCrossOriginURL(arguments[1])) {
|
|
104
97
|
|
|
105
98
|
if (sFESR && sFESRopt) {
|
|
106
99
|
this.setRequestHeader("SAP-Perf-FESRec", sFESR);
|
|
@@ -7,13 +7,12 @@
|
|
|
7
7
|
* IMPORTANT: This is a private module, its API must not be used and is subject to change.
|
|
8
8
|
* Code other than the OpenUI5 libraries must not introduce dependencies to this module.
|
|
9
9
|
*/
|
|
10
|
-
sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/
|
|
10
|
+
sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/util/isCrossOriginURL"], function(XHRInterceptor, isCrossOriginURL) {
|
|
11
11
|
"use strict";
|
|
12
12
|
|
|
13
13
|
var iE2eTraceLevel;
|
|
14
14
|
var sTransactionId;
|
|
15
15
|
var ROOT_ID;
|
|
16
|
-
var HOST = window.location.host;
|
|
17
16
|
|
|
18
17
|
// old methods taken over from E2eTraceLib
|
|
19
18
|
function getBytesFromString(s) {
|
|
@@ -187,12 +186,6 @@ sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/thirdparty/URI"], fu
|
|
|
187
186
|
return sTransactionId;
|
|
188
187
|
};
|
|
189
188
|
|
|
190
|
-
function isCORSRequest(sUrl) {
|
|
191
|
-
var sHost = new URI(sUrl.toString()).host();
|
|
192
|
-
// url is relative or with same host
|
|
193
|
-
return sHost && sHost !== HOST;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
189
|
/**
|
|
197
190
|
* @param {boolean} bActive State of the Passport header creation
|
|
198
191
|
* @private
|
|
@@ -200,12 +193,12 @@ sap.ui.define(["sap/ui/performance/XHRInterceptor", "sap/ui/thirdparty/URI"], fu
|
|
|
200
193
|
Passport.setActive = function(bActive) {
|
|
201
194
|
if (bActive) {
|
|
202
195
|
XHRInterceptor.register("PASSPORT_ID", "open", function() {
|
|
203
|
-
if (!
|
|
196
|
+
if (!isCrossOriginURL(arguments[1])) {
|
|
204
197
|
sTransactionId = Passport.createGUID();
|
|
205
198
|
}
|
|
206
199
|
});
|
|
207
200
|
XHRInterceptor.register("PASSPORT_HEADER", "open", function() {
|
|
208
|
-
if (!
|
|
201
|
+
if (!isCrossOriginURL(arguments[1])) {
|
|
209
202
|
// set passport with Root Context ID, Transaction ID for Trace
|
|
210
203
|
this.setRequestHeader("SAP-PASSPORT", Passport.header(iE2eTraceLevel, ROOT_ID, sTransactionId));
|
|
211
204
|
}
|
|
@@ -9,12 +9,12 @@ sap.ui.define([
|
|
|
9
9
|
"sap/ui/performance/Measurement",
|
|
10
10
|
"sap/ui/performance/XHRInterceptor",
|
|
11
11
|
"sap/ui/performance/trace/FESRHelper",
|
|
12
|
+
"sap/ui/util/isCrossOriginURL",
|
|
12
13
|
"sap/base/util/LoaderExtensions",
|
|
13
14
|
"sap/base/util/now",
|
|
14
15
|
"sap/base/util/uid",
|
|
15
|
-
"sap/base/Log"
|
|
16
|
-
|
|
17
|
-
], function(Measurement, XHRInterceptor, FESRHelper, LoaderExtensions, now, uid, Log, URI) {
|
|
16
|
+
"sap/base/Log"
|
|
17
|
+
], function(Measurement, XHRInterceptor, FESRHelper, isCrossOriginURL, LoaderExtensions, now, uid, Log) {
|
|
18
18
|
|
|
19
19
|
"use strict";
|
|
20
20
|
|
|
@@ -43,12 +43,6 @@ sap.ui.define([
|
|
|
43
43
|
},
|
|
44
44
|
sCompressedExtensions = "zip,rar,arj,z,gz,tar,lzh,cab,hqx,ace,jar,ear,war,jpg,jpeg,pdf,gzip";
|
|
45
45
|
|
|
46
|
-
function isCORSRequest(sUrl) {
|
|
47
|
-
var sHost = new URI(sUrl.toString()).host();
|
|
48
|
-
// url is relative or with same host
|
|
49
|
-
return sHost && sHost !== window.location.host;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
46
|
function hexToAscii(sValue) {
|
|
53
47
|
var hex = sValue.toString();
|
|
54
48
|
var str = '';
|
|
@@ -293,7 +287,7 @@ sap.ui.define([
|
|
|
293
287
|
}
|
|
294
288
|
// we only need to take care of requests when we have a running interaction
|
|
295
289
|
if (oPendingInteraction) {
|
|
296
|
-
var bIsNoCorsRequest = !
|
|
290
|
+
var bIsNoCorsRequest = !isCrossOriginURL(sUrl);
|
|
297
291
|
// only use Interaction for non CORS requests
|
|
298
292
|
if (bIsNoCorsRequest) {
|
|
299
293
|
//only track if FESR.clientID == EPP.Action && FESR.rootContextID == EPP.rootContextID
|
|
@@ -53,7 +53,7 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo", "sap/ui/core/Lib"],
|
|
|
53
53
|
* @namespace
|
|
54
54
|
*
|
|
55
55
|
* @author SAP SE
|
|
56
|
-
* @version 1.
|
|
56
|
+
* @version 1.141.0
|
|
57
57
|
*
|
|
58
58
|
* @public
|
|
59
59
|
* @since 1.48.0
|
|
@@ -63,7 +63,6 @@ sap.ui.define(['sap/ui/core/Core', "sap/ui/VersionInfo", "sap/ui/core/Lib"],
|
|
|
63
63
|
|
|
64
64
|
var aControlsThatCannotBeRenderedGenerically = [
|
|
65
65
|
"sap.chart.Chart",
|
|
66
|
-
"sap.m.ColumnHeaderPopover",
|
|
67
66
|
"sap.m.FacetFilterItem",
|
|
68
67
|
"sap.m.internal.NumericInput",
|
|
69
68
|
"sap.m.IconTabBarSelectList",
|
|
@@ -19,6 +19,7 @@ sap.ui.define([
|
|
|
19
19
|
|
|
20
20
|
var rBatch = /\/\$batch($|\?)/,
|
|
21
21
|
rContentId = /(?:^|\r\n)Content-Id\s*:\s*(\S+)/i,
|
|
22
|
+
rContentIdReference = / \$([^ ?\/]+)/,
|
|
22
23
|
rEndsWithJSON = /\.json$/i,
|
|
23
24
|
rEndsWithXML = /\.xml$/i,
|
|
24
25
|
rHeaderLine = /^(.*)?:\s*(.*)$/,
|
|
@@ -445,13 +446,14 @@ sap.ui.define([
|
|
|
445
446
|
* extension unless specified. This has precedence over <code>message</code>.
|
|
446
447
|
* </ul>
|
|
447
448
|
* @param {object[]} [aRegExps]
|
|
448
|
-
*
|
|
449
|
-
*
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
454
|
-
*
|
|
449
|
+
* An array containing regular expressions in the regExp property and the corresponding
|
|
450
|
+
* response(s) objects in the response property. If no match for a request was found in
|
|
451
|
+
* the normal fixture, the regular expressions are checked. The response object looks
|
|
452
|
+
* exactly the same as in the fixture and may additionally contain a method
|
|
453
|
+
* <code>buildResponse(aMatch, oResponse, oRequest, sReferencedMessage)</code> which gets
|
|
454
|
+
* passed the match object, the response, the request, and optionally the referenced
|
|
455
|
+
* response message in case of Content-ID referencing in order to allow modification of
|
|
456
|
+
* the response before sending.
|
|
455
457
|
* @param {string} [sServiceUrl]
|
|
456
458
|
* The service URL which determines a prefix for all requests the fake server responds to;
|
|
457
459
|
* it responds with an error for requests not given in the fixture, except DELETE, MERGE,
|
|
@@ -689,9 +691,11 @@ sap.ui.define([
|
|
|
689
691
|
* @param {boolean} [bTry]
|
|
690
692
|
* Whether to do nothing and return <code>undefined</code> if no fixture matches; also
|
|
691
693
|
* prevents defaulting for non-GET requests
|
|
694
|
+
* @param {object} [mContentId2Response]
|
|
695
|
+
* A map which refers a content ID to a response message while processing a batch
|
|
692
696
|
* @returns {object|undefined} The response object or <code>undefined</code>
|
|
693
697
|
*/
|
|
694
|
-
function getResponseFromFixture(oRequest, sContentId, bTry) {
|
|
698
|
+
function getResponseFromFixture(oRequest, sContentId, bTry, mContentId2Response) {
|
|
695
699
|
var iAlternative,
|
|
696
700
|
oMatch = getMatchingResponse(oRequest.method, oRequest.url),
|
|
697
701
|
oResponse,
|
|
@@ -708,7 +712,13 @@ sap.ui.define([
|
|
|
708
712
|
if (typeof oResponse.buildResponse === "function") {
|
|
709
713
|
oResponse = merge({}, oResponse);
|
|
710
714
|
try {
|
|
711
|
-
|
|
715
|
+
const aMatches = rContentIdReference.exec(oRequest.requestLine);
|
|
716
|
+
let sReferencedMessage;
|
|
717
|
+
if (aMatches) {
|
|
718
|
+
sReferencedMessage = mContentId2Response[aMatches[1]];
|
|
719
|
+
}
|
|
720
|
+
oResponse.buildResponse(oMatch.match, oResponse, oRequest,
|
|
721
|
+
sReferencedMessage);
|
|
712
722
|
} catch (oError) {
|
|
713
723
|
oResponse = error(500, oRequest, oError);
|
|
714
724
|
}
|
|
@@ -758,6 +768,9 @@ sap.ui.define([
|
|
|
758
768
|
oResponse.headers = jQuery.extend({}, getODataHeaders(oRequest), oResponse.headers);
|
|
759
769
|
if (sContentId && oResponse.code < 300) {
|
|
760
770
|
oResponse.contentId = sContentId;
|
|
771
|
+
if (mContentId2Response) {
|
|
772
|
+
mContentId2Response[sContentId] = oResponse.message;
|
|
773
|
+
}
|
|
761
774
|
}
|
|
762
775
|
return oResponse;
|
|
763
776
|
}
|
|
@@ -767,14 +780,13 @@ sap.ui.define([
|
|
|
767
780
|
*
|
|
768
781
|
* @param {string} sServiceBase The service base URL
|
|
769
782
|
* @param {string} sBody The body
|
|
783
|
+
* @param {object} [oBatch] allows to keep state while processing a batch
|
|
770
784
|
* @returns {object} An object with the properties boundary and parts
|
|
771
785
|
*/
|
|
772
|
-
function multipart(sServiceBase, sBody) {
|
|
773
|
-
var sBoundary;
|
|
774
|
-
|
|
786
|
+
function multipart(sServiceBase, sBody, oBatch = {}) {
|
|
775
787
|
// skip preamble consisting of whitespace (as sent by datajs)
|
|
776
788
|
sBody = sBody.replace(/^\s+/, "");
|
|
777
|
-
sBoundary = firstLine(sBody);
|
|
789
|
+
const sBoundary = firstLine(sBody);
|
|
778
790
|
return {
|
|
779
791
|
boundary : firstLine(sBody).slice(2),
|
|
780
792
|
parts : sBody.split(sBoundary).slice(1, -1).map(function (sRequestPart) {
|
|
@@ -784,7 +796,7 @@ sap.ui.define([
|
|
|
784
796
|
sFirstLine = firstLine(sRequestPart);
|
|
785
797
|
if (rMultipartHeader.test(sFirstLine)) {
|
|
786
798
|
oMultipart = multipart(sServiceBase,
|
|
787
|
-
sRequestPart.slice(sFirstLine.length + 4));
|
|
799
|
+
sRequestPart.slice(sFirstLine.length + 4), oBatch);
|
|
788
800
|
aFailures = oMultipart.parts.filter(function (oPart) {
|
|
789
801
|
return oPart.code >= 300;
|
|
790
802
|
});
|
|
@@ -793,7 +805,7 @@ sap.ui.define([
|
|
|
793
805
|
iRequestStart = sRequestPart.indexOf("\r\n\r\n") + 4;
|
|
794
806
|
oRequest = parseRequest(sServiceBase, sRequestPart.slice(iRequestStart));
|
|
795
807
|
aMatch = rContentId.exec(sRequestPart.slice(0, iRequestStart));
|
|
796
|
-
return getResponseFromFixture(oRequest, aMatch && aMatch[1]);
|
|
808
|
+
return getResponseFromFixture(oRequest, aMatch && aMatch[1], false, oBatch);
|
|
797
809
|
})
|
|
798
810
|
};
|
|
799
811
|
}
|