diff options
author | Paladox none <thomasmulhall410@yahoo.com> | 2024-04-22 12:52:57 +0000 |
---|---|---|
committer | Paladox none <thomasmulhall410@yahoo.com> | 2024-04-23 11:27:10 +0000 |
commit | 7a1eeeb15fc7f81ab156637aa221a9588d5ba7ec (patch) | |
tree | 2f7e9341de07cb8d95efa9d17bc82697e17bf8c0 | |
parent | b1c11af64a57601426c09bcace181ed838388eed (diff) |
Add baseUrl to INITIAL_DATA in IndexHtmlUtil
Release-Notes: Add baseUrl to INITIAL_DATA in IndexHtmlUtil
Change-Id: I6a74f06eb1bb04365784722704043cac1b79541d
(cherry picked from commit b2b9d67de54218a3a45ea8bef3a12b95c602ed77)
3 files changed, 35 insertions, 14 deletions
diff --git a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java b/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java index fb28d30061..3edf5f2afb 100644 --- a/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java +++ b/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java @@ -50,6 +50,7 @@ public class IndexHtmlUtil { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); private static final Gson GSON = OutputFormat.JSON_COMPACT.newGson(); + /** * Returns both static and dynamic parameters of {@code index.html}. The result is to be used when * rendering the soy template. @@ -68,7 +69,7 @@ public class IndexHtmlUtil { data.putAll( staticTemplateData( canonicalURL, cdnPath, faviconPath, urlParameterMap, urlInScriptTagOrdainer)) - .putAll(dynamicTemplateData(gerritApi, requestedURL)); + .putAll(dynamicTemplateData(gerritApi, requestedURL, canonicalURL)); Set<String> enabledExperiments = new HashSet<>(); enabledExperiments.addAll(experimentFeatures.getEnabledExperimentFeatures()); // Add all experiments enabled through url @@ -81,13 +82,20 @@ public class IndexHtmlUtil { /** Returns dynamic parameters of {@code index.html}. */ public static ImmutableMap<String, Object> dynamicTemplateData( - GerritApi gerritApi, String requestedURL) throws RestApiException, URISyntaxException { + GerritApi gerritApi, String requestedURL, String canonicalURL) + throws RestApiException, URISyntaxException { ImmutableMap.Builder<String, Object> data = ImmutableMap.builder(); Map<String, SanitizedContent> initialData = new HashMap<>(); Server serverApi = gerritApi.config().server(); - initialData.put("\"/config/server/info\"", serializeObject(GSON, serverApi.getInfo())); - initialData.put("\"/config/server/version\"", serializeObject(GSON, serverApi.getVersion())); - initialData.put("\"/config/server/top-menus\"", serializeObject(GSON, serverApi.topMenus())); + initialData.put( + addCanonicalUrl("/config/server/info", canonicalURL), + serializeObject(GSON, serverApi.getInfo())); + initialData.put( + addCanonicalUrl("/config/server/version", canonicalURL), + serializeObject(GSON, serverApi.getVersion())); + initialData.put( + addCanonicalUrl("/config/server/top-menus", canonicalURL), + serializeObject(GSON, serverApi.topMenus())); String requestedPath = IndexPreloadingUtil.getPath(requestedURL); IndexPreloadingUtil.RequestedPage page = IndexPreloadingUtil.parseRequestedPage(requestedPath); @@ -110,14 +118,17 @@ public class IndexHtmlUtil { try { AccountApi accountApi = gerritApi.accounts().self(); - initialData.put("\"/accounts/self/detail\"", serializeObject(GSON, accountApi.get())); initialData.put( - "\"/accounts/self/preferences\"", serializeObject(GSON, accountApi.getPreferences())); + addCanonicalUrl("/accounts/self/detail", canonicalURL), + serializeObject(GSON, accountApi.get())); + initialData.put( + addCanonicalUrl("/accounts/self/preferences", canonicalURL), + serializeObject(GSON, accountApi.getPreferences())); initialData.put( - "\"/accounts/self/preferences.diff\"", + addCanonicalUrl("/accounts/self/preferences.diff", canonicalURL), serializeObject(GSON, accountApi.getDiffPreferences())); initialData.put( - "\"/accounts/self/preferences.edit\"", + addCanonicalUrl("/accounts/self/preferences.edit", canonicalURL), serializeObject(GSON, accountApi.getEditPreferences())); data.put("userIsAuthenticated", true); if (page == RequestedPage.DASHBOARD) { @@ -133,6 +144,16 @@ public class IndexHtmlUtil { return data.build(); } + private static String addCanonicalUrl(String key, String canonicalURL) throws URISyntaxException { + String canonicalPath = computeCanonicalPath(canonicalURL); + + if (canonicalPath != null) { + return String.format("\"%s\"", canonicalPath + key); + } + + return String.format("\"%s\"", key); + } + /** Returns experimentData to be used in {@code index.html}. */ public static Set<String> experimentData(Map<String, String[]> urlParameterMap) { // Allow enable experiments with url diff --git a/javatests/com/google/gerrit/httpd/raw/IndexHtmlUtilTest.java b/javatests/com/google/gerrit/httpd/raw/IndexHtmlUtilTest.java index c06d231804..03b14e6767 100644 --- a/javatests/com/google/gerrit/httpd/raw/IndexHtmlUtilTest.java +++ b/javatests/com/google/gerrit/httpd/raw/IndexHtmlUtilTest.java @@ -114,7 +114,7 @@ public class IndexHtmlUtilTest { when(gerritApi.accounts()).thenReturn(accountsApi); when(gerritApi.config()).thenReturn(configApi); - assertThat(dynamicTemplateData(gerritApi, "/c/project/+/123")) + assertThat(dynamicTemplateData(gerritApi, "/c/project/+/123", "")) .containsAtLeast( "defaultChangeDetailHex", "9916394", "changeRequestsPath", "changes/project~123"); diff --git a/javatests/com/google/gerrit/httpd/raw/IndexServletTest.java b/javatests/com/google/gerrit/httpd/raw/IndexServletTest.java index 06ea8b6169..d582b4b379 100644 --- a/javatests/com/google/gerrit/httpd/raw/IndexServletTest.java +++ b/javatests/com/google/gerrit/httpd/raw/IndexServletTest.java @@ -89,10 +89,10 @@ public class IndexServletTest { assertThat(output) .contains( "window.INITIAL_DATA = JSON.parse(" - + "'\\x7b\\x22\\/config\\/server\\/version\\x22: \\x22123\\x22, " - + "\\x22\\/config\\/server\\/info\\x22: \\x7b\\x22default_theme\\x22:" - + "\\x22my-default-theme\\x22\\x7d, \\x22\\/config\\/server\\/top-menus\\x22: " - + "\\x5b\\x5d\\x7d');"); + + "'\\x7b\\x22foo-url\\/config\\/server\\/top-menus\\x22: \\x5b\\x5d, " + + "\\x22foo-url\\/config\\/server\\/info\\x22: \\x7b\\x22default_theme\\x22:" + + "\\x22my-default-theme\\x22\\x7d, \\x22foo-url\\/config\\/server\\/version\\x22: " + + "\\x22123\\x22\\x7d');"); ImmutableSet<String> enabledDefaults = ExperimentFeaturesConstants.DEFAULT_ENABLED_FEATURES.stream() .collect(ImmutableSet.toImmutableSet()); |