@sapui5/sap.ushell_abap 1.148.0 → 1.149.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell_abap/.library +2 -1
  3. package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
  4. package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +3 -3
  5. package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
  6. package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
  7. package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +4 -2
  8. package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +1 -1
  9. package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
  10. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
  11. package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
  12. package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +4 -2
  13. package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +4 -2
  14. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
  15. package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
  16. package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
  17. package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
  18. package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
  19. package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +3 -1
  20. package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
  21. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/MarkPerformance.js +25 -0
  22. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/PrepareDirectAppStart.js +18 -0
  23. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestGroups.js +36 -2
  24. package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestTargetMappings.js +11 -0
  25. package/src/main/js/sap/ushell_abap/bootstrap/BootTask.js +32 -14
  26. package/src/main/js/sap/ushell_abap/bootstrap/DirectAppStart.js +71 -10
  27. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer.js +21 -2
  28. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon.js +59 -19
  29. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages.js +56 -5
  30. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad.js +32 -11
  31. package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpadModule.js +4 -1
  32. package/src/main/js/sap/ushell_abap/bootstrap/PageSetsRequestHandler.js +54 -42
  33. package/src/main/js/sap/ushell_abap/bootstrap/PlatformConfig.js +7 -9
  34. package/src/main/js/sap/ushell_abap/bootstrap/SAPCompanionConditionSetter.js +33 -28
  35. package/src/main/js/sap/ushell_abap/bootstrap/StartupRequestHandler.js +34 -23
  36. package/src/main/js/sap/ushell_abap/bootstrap/ThemeHandler.js +90 -2
  37. package/src/main/js/sap/ushell_abap/bootstrap/XhrFactory.js +23 -13
  38. package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonEventHandler.js +33 -10
  39. package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonLibLoader.js +49 -1
  40. package/src/main/js/sap/ushell_abap/bootstrap/abap-def-dev.js +1 -0
  41. package/src/main/js/sap/ushell_abap/bootstrap/abap-def-loader.js +4 -0
  42. package/src/main/js/sap/ushell_abap/bootstrap/abap-def.js +1 -0
  43. package/src/main/js/sap/ushell_abap/bootstrap/abapConstants.js +3 -0
  44. package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.js +2 -0
  45. package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +1 -1
  46. package/src/main/js/sap/ushell_abap/integration/WebSsoBridge.js +57 -0
  47. package/src/main/js/sap/ushell_abap/library.js +2 -9
  48. package/src/main/js/sap/ushell_abap/pbServices/ui2/Contracts.js +3 -3
  49. package/src/main/js/sap/ushell_abap/pbServices/ui2/PageBuildingService.js +4 -16
  50. package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +3 -2
  51. package/ui5.yaml +18 -13
@@ -1,39 +1,63 @@
1
1
  // Copyright (c) 2009-2026 SAP SE, All Rights Reserved
2
+ /**
3
+ * @fileoverview This module handles the direct start of an application.
4
+ */
2
5
  sap.ui.define([
3
6
  "sap/base/Log",
4
7
  "sap/base/util/ObjectPath",
5
8
  "sap/ushell_abap/bootstrap/StartupRequestHandler",
6
- "sap/ushell/bootstrap/Config",
7
9
  "sap/ushell/base/promisify",
8
10
  "sap/ushell/base/requireAsync",
9
- "sap/ushell/base/UrlParsing"
11
+ "sap/ushell/base/UrlParsing",
12
+ "sap/ushell/bootstrap/Config"
10
13
  ], (
11
14
  Log,
12
15
  ObjectPath,
13
16
  StartupRequestHandler,
14
- BootstrapConfig,
15
17
  promisify,
16
18
  requireAsync,
17
- UrlParsing
19
+ UrlParsing,
20
+ BootstrapConfig
18
21
  ) => {
19
22
  "use strict";
20
23
 
24
+ /**
25
+ * @alias sap.ushell_abap.bootstrap.DirectAppStart
26
+ * @namespace
27
+ * @description This module handles the direct start of an application by preloading necessary resources and starting the app.
28
+ *
29
+ * @since 1.147.0
30
+ * @private
31
+ */
21
32
  class DirectAppStart {
22
33
  #aInternTargets = [
23
34
  "#Shell-home",
24
35
  "#Launchpad-openFLPPage",
25
36
  "#Shell-appfinder",
26
- "#Shell-catalog",
27
- "#shell-catalog",
28
37
  "#Action-search"
29
38
  ];
30
39
 
40
+ /**
41
+ * Checks whether conditions apply for this module.
42
+ * @returns {boolean} True if this module is relevant and should be executed, false otherwise.
43
+ *
44
+ * @since 1.147.0
45
+ * @private
46
+ */
31
47
  #isRelevant () {
32
48
  const sHash = this.#getFullHash();
33
49
 
34
50
  return sHash !== "#" && !this.#aInternTargets.some((sTarget) => sHash.startsWith(sTarget));
35
51
  }
36
52
 
53
+ /**
54
+ * Prepares the direct app start by preloading target mappings and app states for the application to be started directly.
55
+ * This is safe to be called during the boot process.
56
+ * @returns {Promise<undefined>} A promise that resolves when the preparation is complete.
57
+ *
58
+ * @since 1.147.0
59
+ * @private
60
+ */
37
61
  async prepare () {
38
62
  const oUshellConfig = BootstrapConfig.get();
39
63
 
@@ -113,6 +137,14 @@ sap.ui.define([
113
137
  ]);
114
138
  }
115
139
 
140
+ /**
141
+ * Starts the application directly based on the current hash.
142
+ * This is NOT safe to be called during the boot process.
143
+ * @returns {Promise<undefined>} A promise that resolves when the start is complete.
144
+ *
145
+ * @since 1.147.0
146
+ * @private
147
+ */
116
148
  async startApp () {
117
149
  if (!this.#isRelevant()) {
118
150
  return;
@@ -123,6 +155,17 @@ sap.ui.define([
123
155
  await window["sap-ushell-async-libs-promise-directstart"];
124
156
  }
125
157
 
158
+ /**
159
+ * Starts the application directly based on the current hash.
160
+ * This is NOT safe to be called during the boot process.
161
+ *
162
+ * Handles the dynamic resolution of the ssb evaluation id.
163
+ * It triggers the start of the application as early as possible which should allow for early dependency loading by UI5.
164
+ * @returns {Promise<{resolvedHashFragment: object}>} An object containing the resolved hash fragment for the direct start.
165
+ *
166
+ * @since 1.147.0
167
+ * @private
168
+ */
126
169
  async #startApp () {
127
170
  let sHash = this.#getFullHash();
128
171
  if (sHash.includes("sap-ssb-eval-id")) {
@@ -150,15 +193,13 @@ sap.ui.define([
150
193
  );
151
194
 
152
195
  return {
153
- resolvedHashFragment: oResolvedHashFragmentWithComponentHandle,
154
- dependenciesLoaded: true
196
+ resolvedHashFragment: oResolvedHashFragmentWithComponentHandle
155
197
  };
156
198
  }
157
199
 
158
200
  // non-ui5 app
159
201
  return {
160
- resolvedHashFragment: oResolvedHashFragment,
161
- dependenciesLoaded: false
202
+ resolvedHashFragment: oResolvedHashFragment
162
203
  };
163
204
  }
164
205
 
@@ -167,6 +208,9 @@ sap.ui.define([
167
208
  * resolved by Smart Business early so that the resolved parameters are already
168
209
  * passed to the app component during the early component creation.
169
210
  * @param {string} sHash the current hash
211
+ *
212
+ * @since 1.147.0
213
+ * @private
170
214
  */
171
215
  async #resolveEvalId (sHash) {
172
216
  const [SmartBusiness] = await requireAsync(["sap/ushell/utils/SmartBusiness"]);
@@ -190,6 +234,8 @@ sap.ui.define([
190
234
  * This method must only be called after the shell bootstrap!
191
235
  * @param {sap.ushell.Container} Container The shell container instance
192
236
  * @returns {Promise} A promise to chain following steps.
237
+ *
238
+ * @since 1.147.0
193
239
  * @private
194
240
  */
195
241
  async #createWaitForRendererCreatedPromise (Container) {
@@ -215,6 +261,13 @@ sap.ui.define([
215
261
  return oDeferred.promise;
216
262
  }
217
263
 
264
+ /**
265
+ * Prepares the hash to be used for the UrlParsing utilities.
266
+ * @returns {string} The full hash including the "#" prefix.
267
+ *
268
+ * @since 1.147.0
269
+ * @private
270
+ */
218
271
  #getFullHash () {
219
272
  const sHash = this.getLocationHash();
220
273
  const sSanitizedHash = sHash.startsWith("#") ? sHash : `#${sHash}`;
@@ -222,6 +275,14 @@ sap.ui.define([
222
275
  return decodeURI(sSanitizedHash);
223
276
  }
224
277
 
278
+ /**
279
+ * Returns the window.location.hash string.
280
+ * Extracted as a method to allow stubbing in tests.
281
+ * @returns {string} The hash portion of the URL
282
+ *
283
+ * @since 1.147.0
284
+ * @private
285
+ */
225
286
  getLocationHash () {
226
287
  return window.location.hash;
227
288
  }
@@ -1,13 +1,16 @@
1
1
  // Copyright (c) 2009-2026 SAP SE, All Rights Reserved
2
+ /**
3
+ * @fileoverview This module provides a function for creating and placing the renderer.
4
+ */
2
5
  sap.ui.define([
3
6
  "sap/ushell/Container",
4
- "sap/ushell/state/StateManager",
5
7
  "sap/ushell/renderer/ShellLayout",
8
+ "sap/ushell/state/StateManager",
6
9
  "sap/ushell/ui/shell/SysInfoBar"
7
10
  ], (
8
11
  Container,
9
- StateManager,
10
12
  ShellLayout,
13
+ StateManager,
11
14
  SysInfoBar
12
15
  ) => {
13
16
  "use strict";
@@ -15,7 +18,23 @@ sap.ui.define([
15
18
  // shortcut for sap.ushell.state.StateManager.ShellMode
16
19
  const ShellMode = StateManager.ShellMode;
17
20
 
21
+ /**
22
+ * @alias sap.ushell_abap.bootstrap.LoadLaunchpad.CreateRenderer
23
+ * @namespace
24
+ * @description This module is responsible for creating and placing the renderer.
25
+ * It shall only be called AFTER the the bootstrap is done and the core is ready.
26
+ *
27
+ * @since 1.147.0
28
+ * @private
29
+ */
18
30
  class CreateRenderer {
31
+ /**
32
+ * Creates the renderer and places it into the DOM.
33
+ * @returns {Promise<undefined>} Resolves when the renderer is created and placed
34
+ *
35
+ * @since 1.147.0
36
+ * @private
37
+ */
19
38
  async run () {
20
39
  const oRenderer = await Container.createRendererInternal("fiori2");
21
40
  oRenderer.placeAt("canvas", "only");
@@ -1,20 +1,38 @@
1
1
  // Copyright (c) 2009-2026 SAP SE, All Rights Reserved
2
+ /**
3
+ * @fileoverview This module initializes the XHR logon for the ABAP launchpad.
4
+ */
2
5
  sap.ui.define([
3
- "sap/ushell_abap/bootstrap/XhrLogonLibLoader", // triggers loading of the XHR logon lib, once required
4
- "sap/ushell_abap/bootstrap/XhrLogonEventHandler",
5
- "sap/ushell/bootstrap/Config",
6
6
  "sap/base/Log",
7
- "sap/ushell/Container"
7
+ "sap/ushell_abap/bootstrap/XhrLogonEventHandler",
8
+ "sap/ushell_abap/bootstrap/XhrLogonLibLoader",
9
+ "sap/ushell/Container",
10
+ "sap/ushell/Config"
8
11
  ], (
9
- XhrLogonLibLoader,
10
- XhrLogonEventHandler,
11
- BootstrapConfig,
12
12
  Log,
13
- Container
13
+ XhrLogonEventHandler,
14
+ XhrLogonLibLoader,
15
+ Container,
16
+ Config
14
17
  ) => {
15
18
  "use strict";
16
19
 
20
+ /**
21
+ * @alias sap.ushell_abap.bootstrap.LoadLaunchpad.InitXhrLogon
22
+ * @namespace
23
+ * @description This module initializes the XHR logon for the ABAP launchpad.
24
+ * It is called during the oninit phase as it is not critical for the startup of the FLP.
25
+ *
26
+ * @since 1.147.0
27
+ * @private
28
+ */
17
29
  class InitXhrLogon {
30
+ /**
31
+ * Initializes the XHR logon
32
+ *
33
+ * @since 1.147.0
34
+ * @private
35
+ */
18
36
  async run () {
19
37
  await Promise.all([
20
38
  this.#initXhrLogon(),
@@ -26,9 +44,12 @@ sap.ui.define([
26
44
  * Determines the XHR logon mode based on the bootstrap configuration
27
45
  * and the URL parameters sap-ushell-xhrLogon-mode and saml2.
28
46
  * @returns {string} the logon mode
47
+ *
48
+ * @since 1.147.0
49
+ * @private
29
50
  */
30
51
  #getLogonMode () {
31
- const oUshellConfig = BootstrapConfig.get();
52
+ const oUshellConfig = Config.getRawBootstrapConfig();
32
53
  const sSearch = this.getWindowLocationSearch();
33
54
  const oUrlParameters = new URLSearchParams(sSearch);
34
55
 
@@ -40,8 +61,8 @@ sap.ui.define([
40
61
 
41
62
  /**
42
63
  * Initializes and starts XHR logon lib based on a given configuration.
43
- * <p>
44
64
  *
65
+ * @since 1.147.0
45
66
  * @private
46
67
  */
47
68
  async #initXhrLogon () {
@@ -70,6 +91,13 @@ sap.ui.define([
70
91
  this.#initXhrLogonIgnoreList(oXHRLogonManager);
71
92
  }
72
93
 
94
+ /**
95
+ * Initializes the XHR logon lib by storing the instance of the logon manager in the Container.
96
+ * This is later used to have indirect access to the logon manager.
97
+ *
98
+ * @since 1.147.0
99
+ * @private
100
+ */
73
101
  async #initFrameLogonManager () {
74
102
  const oXhrLogonLib = await XhrLogonLibLoader.getLib();
75
103
  const oFrameLogonManager = oXhrLogonLib.FrameLogonManager.getInstance();
@@ -77,12 +105,10 @@ sap.ui.define([
77
105
  }
78
106
 
79
107
  /**
80
- * Creates a logger for XMLHttpRequest(s) that logs errors, warnings, info
81
- * and debug messages via Log.
82
- *
83
- * @returns {object}
84
- * A logger that can be assigned to XMLHttpRequest.
108
+ * Creates a logger for XMLHttpRequest(s) that logs errors, warnings, info and debug messages via Log.
109
+ * @returns {object} A logger that can be assigned to XMLHttpRequest.
85
110
  *
111
+ * @since 1.147.0
86
112
  * @private
87
113
  */
88
114
  #createUi5ConnectedXhrLogger () {
@@ -96,15 +122,13 @@ sap.ui.define([
96
122
 
97
123
  /**
98
124
  * Initializes the ignore list of the XHR logon manager.
99
- * <p>
100
125
  * If the UI5 resources (including the own bootstrap script) are loaded from an absolute URL
101
126
  * (in case CDN is activated),
102
127
  * this URL is added to the ignore list to prevent CORS preflight requests due to the X headers.
103
128
  * We expect that all resources can be loaded without authentication in this case.
129
+ * @param {object} oXHRLogonManager the logon frame manager instance to use
104
130
  *
105
- * @param {object} oXHRLogonManager
106
- * the logon frame manager instance to use
107
- *
131
+ * @since 1.147.0
108
132
  * @private
109
133
  */
110
134
  #initXhrLogonIgnoreList (oXHRLogonManager) {
@@ -135,10 +159,26 @@ sap.ui.define([
135
159
  return new XhrLogonEventHandler(oWindow, sXhrLogonMode);
136
160
  }
137
161
 
162
+ /**
163
+ * Returns the window.location.search string.
164
+ * Extracted as a method to allow stubbing in tests.
165
+ * @returns {string} The query string portion of the URL
166
+ *
167
+ * @since 1.147.0
168
+ * @private
169
+ */
138
170
  getWindowLocationSearch () {
139
171
  return window.location.search;
140
172
  }
141
173
 
174
+ /**
175
+ * Returns the window.location.origin string.
176
+ * Extracted as a method to allow stubbing in tests.
177
+ * @returns {string} The origin portion of the URL
178
+ *
179
+ * @since 1.147.0
180
+ * @private
181
+ */
142
182
  getLocationOrigin () {
143
183
  return window.location.origin;
144
184
  }
@@ -1,27 +1,48 @@
1
1
  // Copyright (c) 2009-2026 SAP SE, All Rights Reserved
2
+ /**
3
+ * @fileoverview This module is responsible for requesting the launchpad page content.
4
+ */
2
5
  sap.ui.define([
3
6
  "sap/base/util/ObjectPath",
4
- "sap/ushell/bootstrap/Config",
5
- "sap/ushell/Container",
6
7
  "sap/ushell/components/pages/controller/PagesAndSpaceId",
8
+ "sap/ushell/Config",
9
+ "sap/ushell/Container",
7
10
  "sap/ushell/resources"
8
11
  ], (
9
12
  ObjectPath,
10
- BootstrapConfig,
11
- Container,
12
13
  PagesAndSpaceId,
14
+ Config,
15
+ Container,
13
16
  ushellResources
14
17
  ) => {
15
18
  "use strict";
16
19
 
20
+ /**
21
+ * @alias sap.ushell_abap.bootstrap.LoadLaunchpad.RequestPages
22
+ * @namespace
23
+ * @description This module is responsible for requesting the launchpad page content.
24
+ * It fetches the page data of the current page and the personalization.
25
+ *
26
+ * Shall NOT be called before the bootstrap is done and the core is ready, as it relies on the ushell services.
27
+ *
28
+ * @since 1.147.0
29
+ * @private
30
+ */
17
31
  class RequestPages {
18
32
  #aInternTargets = [
19
33
  "Shell-home",
20
34
  "Launchpad-openFLPPage"
21
35
  ];
22
36
 
37
+ /**
38
+ * Checks whether conditions apply for this module.
39
+ * @returns {boolean} True if this module is relevant and should be executed, false otherwise.
40
+ *
41
+ * @since 1.147.0
42
+ * @private
43
+ */
23
44
  #isRelevant () {
24
- const oUshellConfig = BootstrapConfig.get();
45
+ const oUshellConfig = Config.getRawBootstrapConfig();
25
46
  if (!ObjectPath.get("ushell.spaces.enabled", oUshellConfig)) {
26
47
  return false;
27
48
  }
@@ -32,6 +53,14 @@ sap.ui.define([
32
53
  return !sHash || this.#aInternTargets.some((sTarget) => sHash.startsWith(sTarget));
33
54
  }
34
55
 
56
+ /**
57
+ * Executes the module.
58
+ * It fetches the page data of the current page and the personalization.
59
+ * @returns {Promise<undefined>} A promise that resolves when the requests are done
60
+ *
61
+ * @since 1.147.0
62
+ * @private
63
+ */
35
64
  async run () {
36
65
  if (!this.#isRelevant()) {
37
66
  return;
@@ -43,6 +72,13 @@ sap.ui.define([
43
72
  ]);
44
73
  }
45
74
 
75
+ /**
76
+ * Requests the personalization data for the pages.
77
+ * @returns {Promise<undefined>} A promise that resolves when the personalization data is fetched
78
+ *
79
+ * @since 1.147.0
80
+ * @private
81
+ */
46
82
  async #requestPagesPersonalization () {
47
83
  const PersonalizationV2 = await Container.getServiceAsync("PersonalizationV2");
48
84
  const oPersId = {
@@ -60,6 +96,13 @@ sap.ui.define([
60
96
  return oPersonalizer.getPersData();
61
97
  }
62
98
 
99
+ /**
100
+ * Requests the page content for the current page.
101
+ * @returns {Promise<undefined>} A promise that resolves when the page content is fetched
102
+ *
103
+ * @since 1.147.0
104
+ * @private
105
+ */
63
106
  async #requestPagesContent () {
64
107
  await ushellResources.awaitResourceBundle();
65
108
 
@@ -77,6 +120,14 @@ sap.ui.define([
77
120
  await PagePersistence.getPage(oIds.pageId);
78
121
  }
79
122
 
123
+ /**
124
+ * Returns the window.location.hash string.
125
+ * Extracted as a method to allow stubbing in tests.
126
+ * @returns {string} The hash portion of the URL
127
+ *
128
+ * @since 1.147.0
129
+ * @private
130
+ */
80
131
  getLocationHash () {
81
132
  return window.location.hash;
82
133
  }
@@ -1,33 +1,52 @@
1
1
  // Copyright (c) 2009-2026 SAP SE, All Rights Reserved
2
-
2
+ /**
3
+ * @fileoverview This modules is run during the oninit phase of the bootstrap.
4
+ */
3
5
  sap.ui.define([
4
6
  "sap/base/Log",
5
- "sap/ushell_abap/bootstrap/PlatformConfig",
6
- "sap/ushell_abap/bootstrap/ThemeHandler",
7
- "sap/ushell_abap/bootstrap/SAPCompanionConditionSetter",
7
+ "sap/ushell_abap/bootstrap/DirectAppStart",
8
8
  "sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer",
9
9
  "sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon",
10
10
  "sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages",
11
- "sap/ushell_abap/bootstrap/DirectAppStart",
11
+ "sap/ushell_abap/bootstrap/PlatformConfig",
12
+ "sap/ushell_abap/bootstrap/SAPCompanionConditionSetter",
13
+ "sap/ushell_abap/bootstrap/ThemeHandler",
14
+ "sap/ushell_abap/pbServices/ui2/Contracts",
12
15
  "sap/ushell/Container",
13
16
  "sap/ushell/iconfonts",
14
- "sap/ushell_abap/pbServices/ui2/Contracts"
17
+ "sap/ushell_abap/integration/WebSsoBridge"
15
18
  ], (
16
19
  Log,
17
- PlatformConfig,
18
- ThemeHandler,
19
- SAPCompanionConditionSetter,
20
+ DirectAppStart,
20
21
  CreateRenderer,
21
22
  InitXhrLogon,
22
23
  RequestPages,
23
- DirectAppStart,
24
+ PlatformConfig,
25
+ SAPCompanionConditionSetter,
26
+ ThemeHandler,
27
+ Contracts,
24
28
  Container,
25
29
  IconFonts,
26
- Contracts
30
+ WebSsoBridge
27
31
  ) => {
28
32
  "use strict";
29
33
 
34
+ /**
35
+ * @alias sap.ushell_abap.bootstrap.LoadLaunchpad
36
+ * @namespace
37
+ * @description This module loads the necessary parts of the launchpad after the bootstrap is done.
38
+ *
39
+ * @since 1.147.0
40
+ * @private
41
+ */
30
42
  class LoadLaunchpad {
43
+ /**
44
+ * Loads the necessary parts of the launchpad after the bootstrap is done.
45
+ * @returns {Promise<undefined>} Resolves when the launchpad is loaded
46
+ *
47
+ * @since 1.147.0
48
+ * @private
49
+ */
31
50
  async run () {
32
51
  const aParallelPromises = [];
33
52
 
@@ -55,6 +74,8 @@ sap.ui.define([
55
74
 
56
75
  aParallelPromises.push(InitXhrLogon.run());
57
76
 
77
+ aParallelPromises.push(WebSsoBridge.init());
78
+
58
79
  await Promise.all(aParallelPromises);
59
80
  }
60
81
  }
@@ -1,5 +1,8 @@
1
1
  // Copyright (c) 2009-2026 SAP SE, All Rights Reserved
2
-
2
+ /**
3
+ * @fileoverview This modules is used as reference for the sap-ui-oninit callback in the bootstrap.
4
+ * It ensures testability of the actual LoadLaunchpad module.
5
+ */
3
6
  sap.ui.define([
4
7
  "sap/ushell_abap/bootstrap/LoadLaunchpad"
5
8
  ], (