summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaladox none <thomasmulhall410@yahoo.com>2024-04-22 12:52:57 +0000
committerPaladox none <thomasmulhall410@yahoo.com>2024-04-23 11:27:10 +0000
commit7a1eeeb15fc7f81ab156637aa221a9588d5ba7ec (patch)
tree2f7e9341de07cb8d95efa9d17bc82697e17bf8c0
parentb1c11af64a57601426c09bcace181ed838388eed (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)
-rw-r--r--java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java39
-rw-r--r--javatests/com/google/gerrit/httpd/raw/IndexHtmlUtilTest.java2
-rw-r--r--javatests/com/google/gerrit/httpd/raw/IndexServletTest.java8
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());