@openui5/sap.ui.core 1.117.1 → 1.117.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/package.json +1 -1
  2. package/src/jquery.sap.global.js +1 -1
  3. package/src/jquery.sap.properties.js +1 -1
  4. package/src/jquery.sap.resources.js +1 -1
  5. package/src/jquery.sap.script.js +1 -1
  6. package/src/jquery.sap.storage.js +3 -3
  7. package/src/sap/base/Event.js +1 -1
  8. package/src/sap/base/Eventing.js +1 -1
  9. package/src/sap/base/config.js +1 -1
  10. package/src/sap/base/i18n/LanguageTag.js +1 -1
  11. package/src/sap/base/i18n/date/TimezoneUtils.js +1 -1
  12. package/src/sap/base/util/restricted/_CancelablePromise.js +1 -1
  13. package/src/sap/base/util/restricted/_castArray.js +1 -1
  14. package/src/sap/base/util/restricted/_compact.js +1 -1
  15. package/src/sap/base/util/restricted/_curry.js +1 -1
  16. package/src/sap/base/util/restricted/_debounce.js +1 -1
  17. package/src/sap/base/util/restricted/_difference.js +1 -1
  18. package/src/sap/base/util/restricted/_differenceBy.js +1 -1
  19. package/src/sap/base/util/restricted/_differenceWith.js +1 -1
  20. package/src/sap/base/util/restricted/_flatMap.js +1 -1
  21. package/src/sap/base/util/restricted/_flatMapDeep.js +1 -1
  22. package/src/sap/base/util/restricted/_flatMapDepth.js +1 -1
  23. package/src/sap/base/util/restricted/_flatten.js +1 -1
  24. package/src/sap/base/util/restricted/_flattenDeep.js +1 -1
  25. package/src/sap/base/util/restricted/_flattenDepth.js +1 -1
  26. package/src/sap/base/util/restricted/_intersection.js +1 -1
  27. package/src/sap/base/util/restricted/_intersectionBy.js +1 -1
  28. package/src/sap/base/util/restricted/_intersectionWith.js +1 -1
  29. package/src/sap/base/util/restricted/_isEqual.js +1 -1
  30. package/src/sap/base/util/restricted/_isEqualWith.js +1 -1
  31. package/src/sap/base/util/restricted/_isNil.js +1 -1
  32. package/src/sap/base/util/restricted/_max.js +1 -1
  33. package/src/sap/base/util/restricted/_merge.js +1 -1
  34. package/src/sap/base/util/restricted/_mergeWith.js +1 -1
  35. package/src/sap/base/util/restricted/_min.js +1 -1
  36. package/src/sap/base/util/restricted/_omit.js +1 -1
  37. package/src/sap/base/util/restricted/_pick.js +1 -1
  38. package/src/sap/base/util/restricted/_pickBy.js +1 -1
  39. package/src/sap/base/util/restricted/_throttle.js +1 -1
  40. package/src/sap/base/util/restricted/_toArray.js +1 -1
  41. package/src/sap/base/util/restricted/_union.js +1 -1
  42. package/src/sap/base/util/restricted/_unionBy.js +1 -1
  43. package/src/sap/base/util/restricted/_unionWith.js +1 -1
  44. package/src/sap/base/util/restricted/_uniq.js +1 -1
  45. package/src/sap/base/util/restricted/_uniqBy.js +1 -1
  46. package/src/sap/base/util/restricted/_uniqWith.js +1 -1
  47. package/src/sap/base/util/restricted/_without.js +1 -1
  48. package/src/sap/base/util/restricted/_xor.js +1 -1
  49. package/src/sap/base/util/restricted/_xorBy.js +1 -1
  50. package/src/sap/base/util/restricted/_xorWith.js +1 -1
  51. package/src/sap/base/util/restricted/_zipObject.js +1 -1
  52. package/src/sap/base/util/restricted/_zipObjectDeep.js +1 -1
  53. package/src/sap/ui/Device.js +3 -3
  54. package/src/sap/ui/Global.js +4 -4
  55. package/src/sap/ui/base/Event.js +1 -1
  56. package/src/sap/ui/base/EventProvider.js +1 -1
  57. package/src/sap/ui/base/Interface.js +1 -1
  58. package/src/sap/ui/base/ManagedObject.js +1 -1
  59. package/src/sap/ui/base/ManagedObjectMetadata.js +1 -1
  60. package/src/sap/ui/base/Metadata.js +1 -1
  61. package/src/sap/ui/base/Object.js +1 -1
  62. package/src/sap/ui/base/ObjectPool.js +1 -1
  63. package/src/sap/ui/core/.library +1 -1
  64. package/src/sap/ui/core/BusyIndicator.js +1 -1
  65. package/src/sap/ui/core/Component.js +59 -42
  66. package/src/sap/ui/core/ComponentContainer.js +1 -1
  67. package/src/sap/ui/core/ComponentMetadata.js +1 -1
  68. package/src/sap/ui/core/ComponentSupport.js +1 -1
  69. package/src/sap/ui/core/Configuration.js +1 -1
  70. package/src/sap/ui/core/Control.js +1 -1
  71. package/src/sap/ui/core/Core.js +7 -2
  72. package/src/sap/ui/core/CustomData.js +1 -1
  73. package/src/sap/ui/core/DeclarativeSupport.js +1 -1
  74. package/src/sap/ui/core/Element.js +1 -1
  75. package/src/sap/ui/core/ElementMetadata.js +1 -1
  76. package/src/sap/ui/core/EnabledPropagator.js +1 -1
  77. package/src/sap/ui/core/EventBus.js +1 -1
  78. package/src/sap/ui/core/Fragment.js +1 -1
  79. package/src/sap/ui/core/HTML.js +1 -1
  80. package/src/sap/ui/core/History.js +1 -1
  81. package/src/sap/ui/core/Icon.js +1 -1
  82. package/src/sap/ui/core/IndicationColorSupport.js +1 -1
  83. package/src/sap/ui/core/IntervalTrigger.js +1 -1
  84. package/src/sap/ui/core/InvisibleMessage.js +1 -1
  85. package/src/sap/ui/core/InvisibleRenderer.js +1 -1
  86. package/src/sap/ui/core/InvisibleText.js +1 -1
  87. package/src/sap/ui/core/Item.js +1 -1
  88. package/src/sap/ui/core/LabelEnablement.js +1 -1
  89. package/src/sap/ui/core/LayoutData.js +1 -1
  90. package/src/sap/ui/core/ListItem.js +1 -1
  91. package/src/sap/ui/core/LocalBusyIndicator.js +1 -1
  92. package/src/sap/ui/core/Locale.js +1 -1
  93. package/src/sap/ui/core/LocaleData.js +1 -1
  94. package/src/sap/ui/core/Manifest.js +1 -1
  95. package/src/sap/ui/core/Message.js +1 -1
  96. package/src/sap/ui/core/RenderManager.js +1 -1
  97. package/src/sap/ui/core/Renderer.js +1 -1
  98. package/src/sap/ui/core/ResizeHandler.js +15 -20
  99. package/src/sap/ui/core/ScrollBar.js +1 -1
  100. package/src/sap/ui/core/SeparatorItem.js +1 -1
  101. package/src/sap/ui/core/Title.js +1 -1
  102. package/src/sap/ui/core/TooltipBase.js +1 -1
  103. package/src/sap/ui/core/UIArea.js +1 -1
  104. package/src/sap/ui/core/UIComponent.js +1 -1
  105. package/src/sap/ui/core/UIComponentMetadata.js +1 -1
  106. package/src/sap/ui/core/ValueStateSupport.js +1 -1
  107. package/src/sap/ui/core/VariantLayoutData.js +1 -1
  108. package/src/sap/ui/core/XMLComposite.js +1 -1
  109. package/src/sap/ui/core/XMLCompositeMetadata.js +1 -1
  110. package/src/sap/ui/core/date/UI5Date.js +1 -1
  111. package/src/sap/ui/core/delegate/ItemNavigation.js +1 -1
  112. package/src/sap/ui/core/delegate/ScrollEnablement.js +1 -1
  113. package/src/sap/ui/core/dnd/DragDropBase.js +1 -1
  114. package/src/sap/ui/core/dnd/DragDropInfo.js +1 -1
  115. package/src/sap/ui/core/dnd/DragInfo.js +1 -1
  116. package/src/sap/ui/core/dnd/DropInfo.js +1 -1
  117. package/src/sap/ui/core/format/TimezoneUtil.js +1 -1
  118. package/src/sap/ui/core/hyphenation/Hyphenation.js +1 -1
  119. package/src/sap/ui/core/library.js +3 -3
  120. package/src/sap/ui/core/message/ControlMessageProcessor.js +1 -1
  121. package/src/sap/ui/core/message/Message.js +1 -1
  122. package/src/sap/ui/core/message/MessageManager.js +1 -1
  123. package/src/sap/ui/core/message/MessageParser.js +1 -1
  124. package/src/sap/ui/core/message/MessageProcessor.js +1 -1
  125. package/src/sap/ui/core/mvc/HTMLView.js +1 -1
  126. package/src/sap/ui/core/mvc/JSONView.js +1 -1
  127. package/src/sap/ui/core/mvc/JSView.js +1 -1
  128. package/src/sap/ui/core/mvc/TemplateView.js +1 -1
  129. package/src/sap/ui/core/mvc/View.js +1 -1
  130. package/src/sap/ui/core/mvc/XMLView.js +1 -1
  131. package/src/sap/ui/core/plugin/DeclarativeSupport.js +1 -1
  132. package/src/sap/ui/core/plugin/LessSupport.js +1 -1
  133. package/src/sap/ui/core/plugin/TemplatingSupport.js +1 -1
  134. package/src/sap/ui/core/postmessage/Bus.js +1 -1
  135. package/src/sap/ui/core/postmessage/confirmationDialog.js +1 -1
  136. package/src/sap/ui/core/search/OpenSearchProvider.js +1 -1
  137. package/src/sap/ui/core/search/SearchProvider.js +1 -1
  138. package/src/sap/ui/core/service/Service.js +1 -1
  139. package/src/sap/ui/core/service/ServiceFactory.js +1 -1
  140. package/src/sap/ui/core/service/ServiceFactoryRegistry.js +1 -1
  141. package/src/sap/ui/core/support/Plugin.js +1 -1
  142. package/src/sap/ui/core/support/Support.js +1 -1
  143. package/src/sap/ui/core/support/plugins/ControlTree.js +1 -1
  144. package/src/sap/ui/core/support/plugins/Interaction.js +1 -1
  145. package/src/sap/ui/core/support/plugins/LocalStorage.js +1 -1
  146. package/src/sap/ui/core/support/plugins/Performance.js +1 -1
  147. package/src/sap/ui/core/support/plugins/Selector.js +1 -1
  148. package/src/sap/ui/core/support/plugins/TechInfo.js +1 -1
  149. package/src/sap/ui/core/support/plugins/Trace.js +1 -1
  150. package/src/sap/ui/core/support/plugins/ViewInfo.js +1 -1
  151. package/src/sap/ui/core/tmpl/DOMAttribute.js +1 -1
  152. package/src/sap/ui/core/tmpl/DOMElement.js +1 -1
  153. package/src/sap/ui/core/tmpl/HandlebarsTemplate.js +1 -1
  154. package/src/sap/ui/core/tmpl/Template.js +1 -1
  155. package/src/sap/ui/core/tmpl/TemplateControl.js +1 -1
  156. package/src/sap/ui/core/util/AsyncHintsHelper.js +1 -1
  157. package/src/sap/ui/core/util/Export.js +1 -1
  158. package/src/sap/ui/core/util/ExportCell.js +1 -1
  159. package/src/sap/ui/core/util/ExportColumn.js +1 -1
  160. package/src/sap/ui/core/util/ExportRow.js +1 -1
  161. package/src/sap/ui/core/util/ExportType.js +1 -1
  162. package/src/sap/ui/core/util/ExportTypeCSV.js +1 -1
  163. package/src/sap/ui/core/util/File.js +1 -1
  164. package/src/sap/ui/core/util/LibraryInfo.js +1 -1
  165. package/src/sap/ui/core/util/MockServer.js +1 -1
  166. package/src/sap/ui/core/util/PasteHelper.js +1 -1
  167. package/src/sap/ui/core/util/serializer/HTMLViewSerializer.js +1 -1
  168. package/src/sap/ui/core/util/serializer/Serializer.js +1 -1
  169. package/src/sap/ui/core/util/serializer/ViewSerializer.js +1 -1
  170. package/src/sap/ui/core/util/serializer/XMLViewSerializer.js +1 -1
  171. package/src/sap/ui/core/util/serializer/delegate/Delegate.js +1 -1
  172. package/src/sap/ui/core/util/serializer/delegate/HTML.js +1 -1
  173. package/src/sap/ui/core/util/serializer/delegate/XML.js +1 -1
  174. package/src/sap/ui/core/ws/ReadyState.js +1 -1
  175. package/src/sap/ui/core/ws/SapPcpWebSocket.js +1 -1
  176. package/src/sap/ui/core/ws/WebSocket.js +1 -1
  177. package/src/sap/ui/debug/ControlTree.js +1 -1
  178. package/src/sap/ui/debug/DebugEnv.js +15 -6
  179. package/src/sap/ui/debug/PropertyList.js +1 -1
  180. package/src/sap/ui/model/ClientModel.js +1 -1
  181. package/src/sap/ui/model/CompositeDataState.js +1 -1
  182. package/src/sap/ui/model/CompositeType.js +1 -1
  183. package/src/sap/ui/model/DataState.js +1 -1
  184. package/src/sap/ui/model/MetaModel.js +1 -1
  185. package/src/sap/ui/model/Model.js +1 -1
  186. package/src/sap/ui/model/SelectionModel.js +1 -1
  187. package/src/sap/ui/model/SimpleType.js +1 -1
  188. package/src/sap/ui/model/TreeAutoExpandMode.js +1 -1
  189. package/src/sap/ui/model/Type.js +1 -1
  190. package/src/sap/ui/model/json/JSONModel.js +1 -1
  191. package/src/sap/ui/model/message/MessageModel.js +1 -1
  192. package/src/sap/ui/model/odata/ODataAnnotations.js +1 -1
  193. package/src/sap/ui/model/odata/ODataMessageParser.js +1 -1
  194. package/src/sap/ui/model/odata/ODataMetaModel.js +1 -1
  195. package/src/sap/ui/model/odata/ODataMetadata.js +1 -1
  196. package/src/sap/ui/model/odata/ODataModel.js +1 -1
  197. package/src/sap/ui/model/odata/type/Boolean.js +1 -1
  198. package/src/sap/ui/model/odata/type/Byte.js +1 -1
  199. package/src/sap/ui/model/odata/type/Currency.js +1 -1
  200. package/src/sap/ui/model/odata/type/Date.js +1 -1
  201. package/src/sap/ui/model/odata/type/DateTime.js +1 -1
  202. package/src/sap/ui/model/odata/type/DateTimeBase.js +1 -1
  203. package/src/sap/ui/model/odata/type/DateTimeOffset.js +1 -1
  204. package/src/sap/ui/model/odata/type/DateTimeWithTimezone.js +1 -1
  205. package/src/sap/ui/model/odata/type/Decimal.js +1 -1
  206. package/src/sap/ui/model/odata/type/Double.js +1 -1
  207. package/src/sap/ui/model/odata/type/Guid.js +1 -1
  208. package/src/sap/ui/model/odata/type/Int.js +1 -1
  209. package/src/sap/ui/model/odata/type/Int16.js +1 -1
  210. package/src/sap/ui/model/odata/type/Int32.js +1 -1
  211. package/src/sap/ui/model/odata/type/Int64.js +1 -1
  212. package/src/sap/ui/model/odata/type/ODataType.js +1 -1
  213. package/src/sap/ui/model/odata/type/Raw.js +1 -1
  214. package/src/sap/ui/model/odata/type/SByte.js +1 -1
  215. package/src/sap/ui/model/odata/type/Single.js +1 -1
  216. package/src/sap/ui/model/odata/type/Stream.js +1 -1
  217. package/src/sap/ui/model/odata/type/String.js +1 -1
  218. package/src/sap/ui/model/odata/type/Time.js +1 -1
  219. package/src/sap/ui/model/odata/type/TimeOfDay.js +1 -1
  220. package/src/sap/ui/model/odata/type/Unit.js +1 -1
  221. package/src/sap/ui/model/odata/v2/Context.js +1 -1
  222. package/src/sap/ui/model/odata/v2/ODataAnnotations.js +1 -1
  223. package/src/sap/ui/model/odata/v2/ODataListBinding.js +71 -47
  224. package/src/sap/ui/model/odata/v2/ODataModel.js +2 -3
  225. package/src/sap/ui/model/odata/v2/ODataTreeBinding.js +1 -1
  226. package/src/sap/ui/model/odata/v4/Context.js +1 -1
  227. package/src/sap/ui/model/odata/v4/ODataContextBinding.js +1 -1
  228. package/src/sap/ui/model/odata/v4/ODataListBinding.js +1 -1
  229. package/src/sap/ui/model/odata/v4/ODataMetaModel.js +1 -1
  230. package/src/sap/ui/model/odata/v4/ODataModel.js +1 -1
  231. package/src/sap/ui/model/odata/v4/ODataPropertyBinding.js +1 -1
  232. package/src/sap/ui/model/resource/ResourceModel.js +1 -1
  233. package/src/sap/ui/model/type/Boolean.js +1 -1
  234. package/src/sap/ui/model/type/Currency.js +1 -1
  235. package/src/sap/ui/model/type/Date.js +1 -1
  236. package/src/sap/ui/model/type/DateInterval.js +5 -4
  237. package/src/sap/ui/model/type/DateTime.js +1 -1
  238. package/src/sap/ui/model/type/DateTimeInterval.js +1 -1
  239. package/src/sap/ui/model/type/FileSize.js +1 -1
  240. package/src/sap/ui/model/type/Float.js +1 -1
  241. package/src/sap/ui/model/type/Integer.js +1 -1
  242. package/src/sap/ui/model/type/String.js +1 -1
  243. package/src/sap/ui/model/type/Time.js +1 -1
  244. package/src/sap/ui/model/type/TimeInterval.js +1 -1
  245. package/src/sap/ui/model/type/Unit.js +1 -1
  246. package/src/sap/ui/model/xml/XMLModel.js +1 -1
  247. package/src/sap/ui/performance/BeaconRequest.js +8 -10
  248. package/src/sap/ui/qunit/utils/ControlIterator.js +1 -1
  249. package/src/sap/ui/qunit/utils/MemoryLeakCheck.js +1 -1
  250. package/src/sap/ui/test/generic/TestBase.js +1 -1
  251. package/src/sap/ui/util/Storage.js +1 -1
  252. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/MIT.SalesOrders(V2).ODLB.create.html +2 -0
  253. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/SandboxModel.js +3 -0
  254. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/data/ODLB.create/TC3/SalesOrderSet_desc_4-1.json +16 -0
  255. package/test/sap/ui/core/internal/samples/odata/v2/SalesOrders/tests/ODataListBinding.create/TC3_SalesOrders_InlineCreationRow.js +9 -0
  256. package/test/sap/ui/core/qunit/UIArea.qunit.js +25 -1
  257. package/test/sap/ui/core/qunit/bootstrap/BootstrapPreload.qunit.js +1 -1
  258. package/test/sap/ui/core/qunit/component/Component.qunit.js +12 -0
  259. package/test/sap/ui/core/qunit/odata/data/ODataModelFakeService.js +1 -1
  260. package/test/sap/ui/core/qunit/odata/v2/ODataListBindingNoFakeService.qunit.js +390 -16
  261. package/test/sap/ui/core/qunit/odata/v2/ODataModel.integration.qunit.js +143 -1
  262. package/test/sap/ui/core/qunit/odata/v2/ODataModelNoFakeService.qunit.js +2 -2
  263. package/test/sap/ui/core/qunit/performance/BeaconRequest.qunit.js +18 -2
  264. package/test/sap/ui/core/qunit/testsuite.core.framework.qunit.js +0 -6
  265. package/test/sap/ui/core/qunit/types/DateInterval.qunit.js +2 -2
  266. package/test/sap/ui/core/relnotes/changes-1.117.json +87 -0
  267. package/test/sap/ui/core/qunit/CoreLock.qunit.js +0 -61
@@ -5430,7 +5430,7 @@ usePreliminaryContext : false}}">\
5430
5430
  }).then(function () {
5431
5431
  var oResetPromise;
5432
5432
 
5433
- if (bWithFailedPOST && bPersistTechnicalMessages && !bDeleteCreatedEntities) {
5433
+ if (bWithFailedPOST && bPersistTechnicalMessages) {
5434
5434
  that.expectMessages([{
5435
5435
  code : "UF0",
5436
5436
  fullTarget : "/SalesOrderSet('1')/ToLineItems('~key~')",
@@ -14254,6 +14254,57 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
14254
14254
  });
14255
14255
  });
14256
14256
 
14257
+ //*********************************************************************************************
14258
+ // Scenario: If a list binding contains created entries at the start of the list and the
14259
+ // binding's length is final, ensure that all data is requested if the user scrolls to the end
14260
+ // of the list.
14261
+ // BCP: 002075129400006921272023
14262
+ QUnit.test("Created entries at start: scrolling to the end reads all data", function (assert) {
14263
+ var oTable,
14264
+ oModel = createSalesOrdersModel({defaultCountMode : CountMode.Inline}),
14265
+ sView = '\
14266
+ <Table growing="true" growingThreshold="3" id="table" items="{/SalesOrderSet}">\
14267
+ <Input id="note" value="{Note}"/>\
14268
+ </Table>',
14269
+ that = this;
14270
+
14271
+ this.expectHeadRequest()
14272
+ .expectRequest("SalesOrderSet?$skip=0&$top=3&$inlinecount=allpages", {
14273
+ __count : "5",
14274
+ results : [
14275
+ {__metadata : {uri : "SalesOrderSet('1')"}, Note : "SO1", SalesOrderID : "1"},
14276
+ {__metadata : {uri : "SalesOrderSet('2')"}, Note : "SO2", SalesOrderID : "2"},
14277
+ {__metadata : {uri : "SalesOrderSet('3')"}, Note : "SO3", SalesOrderID : "3"}
14278
+ ]
14279
+ })
14280
+ .expectValue("note", ["SO1", "SO2", "SO3"]);
14281
+
14282
+ return this.createView(assert, sView, oModel).then(function () {
14283
+ oTable = that.oView.byId("table");
14284
+
14285
+ that.expectValue("note", ["SONew", "SO1", "SO2", "SO3"]);
14286
+
14287
+ // code under test - create an item at the start of the list
14288
+ oTable.getBinding("items").create({Note : "SONew"});
14289
+
14290
+ return that.waitForChanges(assert);
14291
+ }).then(function () {
14292
+ that.expectRequest("SalesOrderSet?$skip=3&$top=2", {
14293
+ results : [
14294
+ {__metadata : {uri : "SalesOrderSet('4')"}, Note : "SO4", SalesOrderID : "4"},
14295
+ {__metadata : {uri : "SalesOrderSet('5')"}, Note : "SO5", SalesOrderID : "5"}
14296
+ ]
14297
+ });
14298
+
14299
+ that.expectValue("note", ["SO3", "SO4", "SO5"], 3);
14300
+
14301
+ // code under test - scroll down to get all data from server
14302
+ oTable.requestItems();
14303
+
14304
+ return that.waitForChanges(assert);
14305
+ });
14306
+ });
14307
+
14257
14308
  //*********************************************************************************************
14258
14309
  // Scenario: If the table displays only transient entities (no threshold is set) and a new
14259
14310
  // control filter is set on the table the number of available entities is properly displayed.
@@ -20209,4 +20260,95 @@ ToProduct/ToSupplier/BusinessPartnerID\'}}">\
20209
20260
  return that.waitForChanges(assert);
20210
20261
  });
20211
20262
  });
20263
+
20264
+ //*********************************************************************************************
20265
+ // Scenario: If the server uses server side paging and the OData model uses "Client" mode all
20266
+ // data is requested up to the model size limit.
20267
+ // BCP: 2380127053
20268
+ [false, true].forEach(function (bShortRead) {
20269
+ QUnit.test("OperationMode.Client: with server side paging, short read:" + bShortRead, function (assert) {
20270
+ var oTable,
20271
+ iDataReceived = 0,
20272
+ iDataRequested = 0,
20273
+ iExpectedSize = bShortRead ? 15 : 30,
20274
+ oModel = createSalesOrdersModel({defaultOperationMode: "Client"}),
20275
+ sView = '\
20276
+ <t:Table id="table">\
20277
+ <Text id="note" text="{Note}"/>\
20278
+ </t:Table>',
20279
+ that = this;
20280
+
20281
+ function dataRequested() {
20282
+ iDataRequested += 1;
20283
+ }
20284
+ function dataReceived(oEvent) {
20285
+ var oEventData = oEvent.getParameter("data");
20286
+
20287
+ iDataReceived += 1;
20288
+ // responses are merged
20289
+ assert.strictEqual(oEventData.results.length, iExpectedSize);
20290
+ oEventData.results.forEach((oData, i) => {
20291
+ assert.strictEqual(oData.Note, "SO" + (i + 1));
20292
+ });
20293
+ assert.strictEqual(oEventData.__count, "" + iExpectedSize);
20294
+ }
20295
+
20296
+ oModel.setSizeLimit(30);
20297
+
20298
+ return this.createView(assert, sView, oModel).then(function () {
20299
+ function createItems(iFrom, iLength) {
20300
+ var i,
20301
+ aItems = [];
20302
+
20303
+ for (i = 0; i < iLength; i += 1) {
20304
+ aItems.push({
20305
+ __metadata: {uri : "SalesOrderSet('" + iFrom + "')"},
20306
+ Note: "SO" + iFrom,
20307
+ SalesOrderID: "" + iFrom
20308
+ });
20309
+ iFrom += 1;
20310
+ }
20311
+
20312
+ return aItems;
20313
+ }
20314
+
20315
+ that.expectHeadRequest()
20316
+ .expectRequest("SalesOrderSet", {
20317
+ __next: "/sap/opu/odata/sap/ZUI5_GWSAMPLE_BASIC/SalesOrderSet?$skiptoken=3",
20318
+ results: createItems(1, 3) // whitout $top server returns 3; in real maybe 100
20319
+ })
20320
+ .expectRequest("SalesOrderSet?$skip=3&$top=27", {
20321
+ // if $top is given server limit is used; here 10, in real maybe 5000
20322
+ __next: "/sap/opu/odata/sap/ZUI5_GWSAMPLE_BASIC/SalesOrderSet?$top=24$skiptoken=13",
20323
+ results: createItems(4, 10)
20324
+ })
20325
+ .expectRequest("SalesOrderSet?$skip=13&$top=17", {
20326
+ // no _next link, that means server returned all requestd entries; there may be
20327
+ // more on the server but the amount of data exceeds the model size limit
20328
+ results: createItems(14, bShortRead ? 2 : 17)
20329
+ });
20330
+
20331
+ oTable = that.oView.byId("table");
20332
+ // code under test - client mode reads all data
20333
+ oTable.bindRows({
20334
+ events: {
20335
+ dataRequested: dataRequested,
20336
+ dataReceived: dataReceived
20337
+ },
20338
+ filter: [new Filter("GrossAmount", FilterOperator.GT, 500)],
20339
+ path: "/SalesOrderSet",
20340
+ sorter: [new Sorter("CompanyCode", true)]
20341
+ });
20342
+
20343
+ return that.waitForChanges(assert);
20344
+ }).then(function () {
20345
+ var oBinding = oTable.getBinding("rows");
20346
+
20347
+ assert.strictEqual(oBinding.getLength(), iExpectedSize);
20348
+ assert.strictEqual(oBinding.getCount(), iExpectedSize);
20349
+ assert.strictEqual(iDataRequested, 1);
20350
+ assert.strictEqual(iDataReceived, 1);
20351
+ });
20352
+ });
20353
+ });
20212
20354
  });
@@ -6709,7 +6709,7 @@ sap.ui.define([
6709
6709
  .withExactArgs("~oAbortedError");
6710
6710
  }
6711
6711
  oModelMock.expects("getMessagesByEntity")
6712
- .withExactArgs("~sKey", !bDeleteEntity)
6712
+ .withExactArgs("~sKey", true)
6713
6713
  .returns("~aMessages");
6714
6714
  oMessageManagerMock.expects("removeMessages").withExactArgs("~aMessages");
6715
6715
 
@@ -6766,7 +6766,7 @@ sap.ui.define([
6766
6766
  .withExactArgs(sinon.match.same(oContext));
6767
6767
  this.mock(oModel).expects("_removeEntity").withExactArgs("~sKey");
6768
6768
  this.mock(oModel).expects("getMessagesByEntity")
6769
- .withExactArgs("~sKey", false)
6769
+ .withExactArgs("~sKey", true)
6770
6770
  .returns("~aMessages");
6771
6771
  this.mock(sap.ui.getCore().getMessageManager()).expects("removeMessages")
6772
6772
  .withExactArgs("~aMessages");
@@ -80,6 +80,14 @@ sap.ui.define(["sap/ui/performance/BeaconRequest"], function (BeaconRequest) {
80
80
  QUnit.test("Send beacon on window close", function(assert) {
81
81
  var done = assert.async();
82
82
  assert.expect(2);
83
+ let resLoad, resArranged;
84
+ const pLoaded = Promise.all([
85
+ new Promise((res) => {
86
+ resLoad = res;
87
+ }), new Promise((res) => {
88
+ resArranged = res;
89
+ })
90
+ ]);
83
91
 
84
92
  // setup iframe which will apply a stub on BeaconRequest#send to check
85
93
  // if it is called on the iframe's window unload event - defined in
@@ -92,18 +100,26 @@ sap.ui.define(["sap/ui/performance/BeaconRequest"], function (BeaconRequest) {
92
100
  function arranged(msg) {
93
101
  assert.equal(msg.data.token, "arranged", "BeaconRequest#send has been replaced");
94
102
  window.removeEventListener("message", arranged);
95
- window.addEventListener("message", assertions);
96
- oIframe.contentWindow.location.reload();
103
+ resArranged();
97
104
  }
98
105
 
99
106
  // checks the if the stub has been called
100
107
  function assertions(msg) {
108
+ if (msg.data.token !== "called") {
109
+ return;
110
+ }
101
111
  assert.equal(msg.data.token, "called", "BeaconRequest#send has been called");
102
112
  window.removeEventListener("message", assertions);
103
113
  done();
104
114
  }
105
115
 
116
+ oIframe.onload = resLoad;
106
117
  window.addEventListener("message", arranged);
118
+
119
+ pLoaded.then(() => {
120
+ window.addEventListener("message", assertions);
121
+ document.getElementById('qunit-fixture').removeChild(oIframe);
122
+ });
107
123
  });
108
124
 
109
125
  QUnit.test("Do not send beacon if the buffer is empty", function(assert) {
@@ -59,12 +59,6 @@ sap.ui.define(function() {
59
59
  */
60
60
  page: "test-resources/sap/ui/core/qunit/Core_unavoidablyUsingEval.qunit.html"
61
61
  },
62
- CoreLock: {
63
- title: "sap.ui.core.Core: Core unlocks unconditionally itself upon load/init",
64
- ui5: {
65
- libs: "sap.m"
66
- }
67
- },
68
62
  /**
69
63
  * The tests for the preload files all share the same test configuration.
70
64
  * There is only one HTML test page, which is opened with different URL parameters.
@@ -130,7 +130,7 @@ sap.ui.define([
130
130
  //*********************************************************************************************
131
131
  QUnit.test("parseValue", function (assert) {
132
132
  var oDate1 = UI5Date.getInstance(2003, 10, 6),
133
- oDate2 = UI5Date.getInstance(2003, 11, 6, 23, 59, 59, 999),
133
+ oDate2 = UI5Date.getInstance(2003, 11, 6, 23, 59, 59, 0),
134
134
  oDateInterval = new DateInterval({format: "yMMMd"});
135
135
 
136
136
  assert.deepEqual(oDateInterval.parseValue("", "string"), [null, null],
@@ -158,7 +158,7 @@ sap.ui.define([
158
158
  QUnit.test("parseValue: UTC", function (assert) {
159
159
  var oDateInterval = new DateInterval({UTC: true}),
160
160
  oUTCDate1 = UI5Date.getInstance(Date.UTC(2003, 10, 6, 0, 0, 0, 0)),
161
- oUTCDate2 = UI5Date.getInstance(Date.UTC(2003, 11, 6, 23, 59, 59, 999));
161
+ oUTCDate2 = UI5Date.getInstance(Date.UTC(2003, 11, 6, 23, 59, 59, 0));
162
162
 
163
163
  // code under test
164
164
  assert.deepEqual(oDateInterval.parseValue("Nov 6, 2003 - Dec 6, 2003", "string"), [oUTCDate1, oUTCDate2]);
@@ -123,5 +123,92 @@
123
123
  ]
124
124
  }
125
125
  ]
126
+ },
127
+ "1.117.2": {
128
+ "date": "October 2023",
129
+ "notes": [
130
+ {
131
+ "id": "35f5ee9865ab77db23321440812472799586f9dd",
132
+ "type": "FIX",
133
+ "text": " sap.ui.model.odata.v2.ODataListBinding#loadData: read all data (up to model size limit) in \"Client\" mode",
134
+ "references": [
135
+ {
136
+ "type": "BCP",
137
+ "reference": "2380127053"
138
+ }
139
+ ]
140
+ },
141
+ {
142
+ "id": "61138d76952718c7461d311c8d6879f0b337dedb",
143
+ "type": "FIX",
144
+ "text": " sap.ui.model.type.DateInterval#parseValue: no milliseconds at interval end",
145
+ "references": [
146
+ {
147
+ "type": "BCP",
148
+ "reference": "002075129400006908592023"
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "id": "e548182650511d0232c32dac93c312d5b78bb7b4",
154
+ "type": "FIX",
155
+ "text": " sap.ui.model.odata.v2.ODataListBinding#_getSkipAndTop: fix calculation of \"iLimit\"",
156
+ "references": [
157
+ {
158
+ "type": "BCP",
159
+ "reference": "002075129400006921272023"
160
+ }
161
+ ]
162
+ },
163
+ {
164
+ "id": "17c4c620e67233d18911e2369c9d29547d7e4a93",
165
+ "type": "FIX",
166
+ "text": " Fix Core Qunit tests",
167
+ "references": [
168
+ {
169
+ "type": "BCP",
170
+ "reference": ""
171
+ }
172
+ ]
173
+ }
174
+ ]
175
+ },
176
+ "1.117.3": {
177
+ "date": "November 2023",
178
+ "notes": [
179
+ {
180
+ "id": "80b8a198488fa04923bbfe835ff31fe159b4d7e2",
181
+ "type": "FIX",
182
+ "text": " Stabilize QUnit test for BeaconRequest",
183
+ "references": [
184
+ {
185
+ "type": "BCP",
186
+ "reference": "2370118287"
187
+ }
188
+ ]
189
+ },
190
+ {
191
+ "id": "b7e444c6657e8768be7af233651cdb73e3dc03b2",
192
+ "type": "FIX",
193
+ "text": " sap.ui.model.odata.v2.ODataModel#resetChanges: do not remove persistent messages",
194
+ "references": [
195
+ {
196
+ "type": "BCP",
197
+ "reference": "2370086388"
198
+ }
199
+ ]
200
+ },
201
+ {
202
+ "id": "ef142c77cae7d1c6cdc76853b925dafa6ed8c315",
203
+ "type": "FEATURE",
204
+ "text": " Prepare for upcoming 'unload' event deprecation and deprecate APIs 'onWindowBeforeUnload', 'onWindowUnload' and 'onWindowError' in 'sap/ui/core/Component'",
205
+ "references": [
206
+ {
207
+ "type": "BCP",
208
+ "reference": ""
209
+ }
210
+ ]
211
+ }
212
+ ]
126
213
  }
127
214
  }
@@ -1,61 +0,0 @@
1
- /*global QUnit */
2
- sap.ui.define([
3
- "sap/m/Button",
4
- "sap/ui/thirdparty/jquery"
5
- ], function(Button, jQuery) {
6
- "use strict";
7
-
8
- // Lock the Core.
9
- // This can be done anywhen after the Core has been loaded and executed, potentially
10
- // before it has been initialized
11
- sap.ui.getCore().lock();
12
-
13
- // create some UI that shows whether lock/unlock works or not
14
- var oButton = new Button({
15
- id : "button",
16
- text : "Click",
17
- tooltip : "This SAPUI5 Button should be 'locked' until the Core is explicitly unlocked"
18
- });
19
-
20
- /*
21
- * the following is a workaround that applications can implement
22
-
23
- sap.ui.getCore().attachInit(function() {
24
- // we have to use setTimeout as the unanted unlock happens just after init events have been processed
25
- setTimeout(function() {
26
- sap.ui.getCore().lock();
27
- }, 10);
28
- } );
29
-
30
- /* */
31
-
32
- QUnit.module("Check for Unlocked Core");
33
-
34
- QUnit.test("Control Events should be blocked depending on Core lock", function(assert) {
35
- var pressed = false;
36
- oButton.attachPress(function() {
37
- pressed = true;
38
- });
39
-
40
- assert.ok(!pressed, "Button must not have fired 'press' yet");
41
- jQuery("#button").trigger("focus").trigger("click");
42
- assert.ok(!pressed, "Button still must not have fired 'press'");
43
-
44
- sap.ui.getCore().unlock();
45
-
46
- assert.ok(!pressed, "Button still must not have fired 'press'");
47
- jQuery("#button").trigger("focus").trigger("tap");
48
- assert.ok(pressed, "Button should have fired 'press'");
49
- });
50
-
51
- sap.ui.getCore().attachInit(function() {
52
- // create content div
53
- var oDIV = document.createElement("div");
54
- oDIV.id = "content";
55
- document.body.appendChild(oDIV);
56
-
57
- oButton.placeAt("content");
58
- sap.ui.getCore().applyChanges();
59
- });
60
-
61
- });