Merge branch 'stable-3.6'
* stable-3.6:
gr-access-section: Fix exception when unknown name is set
gr-change-actions-js-api: Remove outdated TODOs
Set version to 3.6.0-SNAPSHOT
Set version to 3.6.0-rc5
InMemoryModule: Add support for index lib module
Expose proto package in plugin API
Remove reload message from dark theme toggle
Prevent 2 same requests for editing commit message
Load change notes eagerly to omit unparsable changes from results
Fix file-list is not reloaded when clicking on change number
Fix focus to commit message
Fix issue with closing comment
Fix loading of soy template resource upon cache refresh
Fix anchor links in gr-settings-view
Fix link color in formatted text
Finish rendering a message before scrolling
Render pre-formatted text as both <pre> and <code>
Do not linkify text inside of code-blocks.
Migrate gr-message to Lit
Update lit to 2.2.3
Release-Notes: skip
Change-Id: I38c1e29687aa0c5d5aeefffa38f4c63487ebb6cc
diff --git a/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java b/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java
index ad1703d..8ee8fc2 100644
--- a/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java
+++ b/java/com/google/gerrit/server/mail/send/MailSoySauceLoader.java
@@ -14,8 +14,9 @@
package com.google.gerrit.server.mail.send;
+import static com.google.common.base.Preconditions.checkArgument;
+
import com.google.common.io.CharStreams;
-import com.google.common.io.Resources;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.plugincontext.PluginSetContext;
import com.google.inject.Inject;
@@ -26,6 +27,7 @@
import com.google.template.soy.shared.SoyAstCache;
import java.io.IOException;
import java.io.Reader;
+import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -137,6 +139,8 @@
}
// Otherwise load the template as a resource.
- builder.add(Resources.getResource(logicalPath), logicalPath);
+ URL resource = this.getClass().getClassLoader().getResource(logicalPath);
+ checkArgument(resource != null, "resource %s not found.", logicalPath);
+ builder.add(resource, logicalPath);
}
}
diff --git a/java/com/google/gerrit/testing/InMemoryModule.java b/java/com/google/gerrit/testing/InMemoryModule.java
index b9daa13..86ceb60 100644
--- a/java/com/google/gerrit/testing/InMemoryModule.java
+++ b/java/com/google/gerrit/testing/InMemoryModule.java
@@ -37,6 +37,7 @@
import com.google.gerrit.server.FanOutExecutor;
import com.google.gerrit.server.GerritPersonIdent;
import com.google.gerrit.server.GerritPersonIdentProvider;
+import com.google.gerrit.server.LibModuleType;
import com.google.gerrit.server.PluginUser;
import com.google.gerrit.server.api.GerritApiModule;
import com.google.gerrit.server.api.PluginApiModule;
@@ -243,13 +244,19 @@
bind(AllChangesIndexer.class).toProvider(Providers.of(null));
bind(AllGroupsIndexer.class).toProvider(Providers.of(null));
- String indexTypeCfg = cfg.getString("index", null, "type");
- IndexType indexType = new IndexType(indexTypeCfg != null ? indexTypeCfg : "fake");
- // For custom index types, callers must provide their own module.
- if (indexType.isLucene()) {
- install(luceneIndexModule());
- } else if (indexType.isFake()) {
- install(fakeIndexModule());
+ // Index lib module has a higher priority than index type configuration.
+ String indexModule =
+ cfg.getString("index", null, "install" + LibModuleType.INDEX_MODULE_TYPE.getConfigKey());
+ if (indexModule != null) {
+ install(indexModule(indexModule));
+ } else {
+ String indexTypeCfg = cfg.getString("index", null, "type");
+ IndexType indexType = new IndexType(indexTypeCfg != null ? indexTypeCfg : "fake");
+ if (indexType.isLucene()) {
+ install(luceneIndexModule());
+ } else if (indexType.isFake()) {
+ install(fakeIndexModule());
+ }
}
bind(ServerInformationImpl.class);
bind(ServerInformation.class).to(ServerInformationImpl.class);
diff --git a/plugins/BUILD b/plugins/BUILD
index 7862b1c..32efa3e 100644
--- a/plugins/BUILD
+++ b/plugins/BUILD
@@ -64,6 +64,7 @@
"//java/com/google/gerrit/server/logging",
"//java/com/google/gerrit/server/schema",
"//java/com/google/gerrit/server/util/time",
+ "//java/com/google/gerrit/proto",
"//java/com/google/gerrit/util/cli",
"//java/com/google/gerrit/util/http",
"//java/com/google/gerrit/util/logging",
diff --git a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.ts b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.ts
index 8fa2e90..2c83ed3 100644
--- a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.ts
+++ b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.ts
@@ -403,9 +403,9 @@
permission: PermissionArrayItem<EditablePermissionInfo>
): string | undefined {
if (this.section?.id === GLOBAL_NAME) {
- return this.capabilities?.[permission.id].name;
+ return this.capabilities?.[permission.id]?.name;
} else if (AccessPermissions[permission.id]) {
- return AccessPermissions[permission.id].name;
+ return AccessPermissions[permission.id]?.name;
} else if (permission.value.label) {
let behalfOf = '';
if (permission.id.startsWith('labelAs-')) {
diff --git a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section_test.ts b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section_test.ts
index f4d81c4..1c4c437 100644
--- a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section_test.ts
+++ b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section_test.ts
@@ -224,6 +224,12 @@
element.capabilities![permission.id].name
);
+ permission = {
+ id: 'non-existent' as GitRef,
+ value: {rules: {}},
+ };
+ assert.isUndefined(element.computePermissionName(permission));
+
element.section.id = 'refs/for/*' as GitRef;
permission = {
id: 'abandon' as GitRef,
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.ts b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.ts
index 76259b9..c4bafac 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.ts
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view.ts
@@ -449,8 +449,8 @@
>Save changes</gr-button
>
</fieldset>
- <gr-edit-preferences id="editPrefs"></gr-edit-preferences>
- <gr-menu-editor></gr-menu-editor>
+ <gr-edit-preferences id="EditPreferences"></gr-edit-preferences>
+ <gr-menu-editor id="Menu"></gr-menu-editor>
<h2
id="ChangeTableColumns"
class=${this.computeHeaderClass(this.changeTableChanged)}
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
index ae42619..6a8f575 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
@@ -369,8 +369,8 @@
Save changes
</gr-button>
</fieldset>
- <gr-edit-preferences id="editPrefs"> </gr-edit-preferences>
- <gr-menu-editor> </gr-menu-editor>
+ <gr-edit-preferences id="EditPreferences"> </gr-edit-preferences>
+ <gr-menu-editor id="Menu"> </gr-menu-editor>
<h2 id="ChangeTableColumns">Change Table Columns</h2>
<fieldset id="changeTableColumns">
<gr-change-table-editor> </gr-change-table-editor>
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts
index 79c73f1..82528cd 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts
@@ -133,19 +133,16 @@
setActionOverflow(type: ActionType, key: string, overflow: boolean) {
this.reporting.trackApi(this.plugin, 'actions', 'setActionOverflow');
- // TODO(TS): remove return, unclear why it was written
this.ensureEl().setActionOverflow(type, key, overflow);
}
setActionPriority(type: ActionType, key: string, priority: ActionPriority) {
this.reporting.trackApi(this.plugin, 'actions', 'setActionPriority');
- // TODO(TS): remove return, unclear why it was written
this.ensureEl().setActionPriority(type, key, priority);
}
setActionHidden(type: ActionType, key: string, hidden: boolean) {
this.reporting.trackApi(this.plugin, 'actions', 'setActionHidden');
- // TODO(TS): remove return, unclear why it was written
this.ensureEl().setActionHidden(type, key, hidden);
}
@@ -156,7 +153,6 @@
remove(key: string) {
this.reporting.trackApi(this.plugin, 'actions', 'remove');
- // TODO(TS): remove return, unclear why it was written
this.ensureEl().removeActionButton(key);
}