summaryrefslogtreecommitdiffstats
path: root/java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java')
-rw-r--r--java/com/google/gerrit/httpd/raw/IndexHtmlUtil.java39
1 files changed, 30 insertions, 9 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