Merge "Rename params variable to optionsHex"
diff --git a/java/com/google/gerrit/extensions/api/access/CoreOrPluginProjectPermission.java b/java/com/google/gerrit/extensions/api/access/CoreOrPluginProjectPermission.java
new file mode 100644
index 0000000..de68987
--- /dev/null
+++ b/java/com/google/gerrit/extensions/api/access/CoreOrPluginProjectPermission.java
@@ -0,0 +1,18 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.extensions.api.access;
+
+/** A repository permission either defined in Gerrit core or a plugin. */
+public interface CoreOrPluginProjectPermission extends GerritPermission {}
diff --git a/java/com/google/gerrit/extensions/api/access/PluginProjectPermission.java b/java/com/google/gerrit/extensions/api/access/PluginProjectPermission.java
new file mode 100644
index 0000000..a62fc63
--- /dev/null
+++ b/java/com/google/gerrit/extensions/api/access/PluginProjectPermission.java
@@ -0,0 +1,87 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.extensions.api.access;
+
+import static com.google.common.base.Preconditions.checkArgument;
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.base.MoreObjects;
+import java.util.Objects;
+import java.util.regex.Pattern;
+
+/** Repository permissions defined by plugins. */
+public final class PluginProjectPermission implements CoreOrPluginProjectPermission {
+ public static final String PLUGIN_PERMISSION_NAME_PATTERN_STRING = "[a-zA-Z]+";
+ private static final Pattern PLUGIN_PERMISSION_PATTERN =
+ Pattern.compile("^" + PLUGIN_PERMISSION_NAME_PATTERN_STRING + "$");
+
+ private final String pluginName;
+ private final String permission;
+
+ public PluginProjectPermission(String pluginName, String permission) {
+ requireNonNull(pluginName, "pluginName");
+ requireNonNull(permission, "permission");
+ checkArgument(
+ isValidPluginPermissionName(permission), "invalid plugin permission name: ", permission);
+
+ this.pluginName = pluginName;
+ this.permission = permission;
+ }
+
+ public String pluginName() {
+ return pluginName;
+ }
+
+ public String permission() {
+ return permission;
+ }
+
+ @Override
+ public String describeForException() {
+ return permission + " for plugin " + pluginName;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(pluginName, permission);
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof PluginProjectPermission) {
+ PluginProjectPermission b = (PluginProjectPermission) other;
+ return pluginName.equals(b.pluginName) && permission.equals(b.permission);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("pluginName", pluginName)
+ .add("permission", permission)
+ .toString();
+ }
+
+ /**
+ * Checks if a given name is valid to be used for plugin permissions.
+ *
+ * @param name a name string.
+ * @return whether the name is valid as a plugin permission.
+ */
+ private static boolean isValidPluginPermissionName(String name) {
+ return PLUGIN_PERMISSION_PATTERN.matcher(name).matches();
+ }
+}
diff --git a/java/com/google/gerrit/server/permissions/DefaultPermissionBackend.java b/java/com/google/gerrit/server/permissions/DefaultPermissionBackend.java
index b3b45d9..fa634ca 100644
--- a/java/com/google/gerrit/server/permissions/DefaultPermissionBackend.java
+++ b/java/com/google/gerrit/server/permissions/DefaultPermissionBackend.java
@@ -40,7 +40,6 @@
import com.google.inject.Provider;
import com.google.inject.Singleton;
import java.util.Collection;
-import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
@@ -128,7 +127,7 @@
@Override
public <T extends GlobalOrPluginPermission> Set<T> test(Collection<T> permSet)
throws PermissionBackendException {
- Set<T> ok = newSet(permSet);
+ Set<T> ok = Sets.newHashSetWithExpectedSize(permSet.size());
for (T perm : permSet) {
if (can(perm)) {
ok.add(perm);
@@ -147,7 +146,7 @@
return can((GlobalPermission) perm);
} else if (perm instanceof PluginPermission) {
PluginPermission pluginPermission = (PluginPermission) perm;
- return has(DefaultPermissionMappings.pluginPermissionName(pluginPermission))
+ return has(DefaultPermissionMappings.pluginCapabilityName(pluginPermission))
|| (pluginPermission.fallBackToAdmin() && isAdmin());
}
throw new PermissionBackendException(perm + " unsupported");
@@ -269,14 +268,4 @@
return denied.isEmpty() || !user.getEffectiveGroups().containsAnyOf(denied);
}
}
-
- private static <T extends GlobalOrPluginPermission> Set<T> newSet(Collection<T> permSet) {
- if (permSet instanceof EnumSet) {
- @SuppressWarnings({"unchecked", "rawtypes"})
- Set<T> s = ((EnumSet) permSet).clone();
- s.clear();
- return s;
- }
- return Sets.newHashSetWithExpectedSize(permSet.size());
- }
}
diff --git a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java
index d56bc78..8215083 100644
--- a/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java
+++ b/java/com/google/gerrit/server/permissions/DefaultPermissionMappings.java
@@ -23,6 +23,7 @@
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.api.access.PluginPermission;
+import com.google.gerrit.extensions.api.access.PluginProjectPermission;
import com.google.gerrit.server.permissions.LabelPermission.ForUser;
import java.util.EnumSet;
import java.util.Optional;
@@ -120,14 +121,18 @@
return Optional.ofNullable(CAPABILITIES.inverse().get(capabilityName));
}
- public static String pluginPermissionName(PluginPermission pluginPermission) {
+ public static String pluginCapabilityName(PluginPermission pluginPermission) {
return pluginPermission.pluginName() + '-' + pluginPermission.capability();
}
+ public static String pluginProjectPermissionName(PluginProjectPermission pluginPermission) {
+ return "plugin-" + pluginPermission.pluginName() + '-' + pluginPermission.permission();
+ }
+
public static String globalOrPluginPermissionName(GlobalOrPluginPermission permission) {
return permission instanceof GlobalPermission
? globalPermissionName((GlobalPermission) permission)
- : pluginPermissionName((PluginPermission) permission);
+ : pluginCapabilityName((PluginPermission) permission);
}
public static Optional<String> projectPermissionName(ProjectPermission projectPermission) {
diff --git a/java/com/google/gerrit/server/permissions/FailedPermissionBackend.java b/java/com/google/gerrit/server/permissions/FailedPermissionBackend.java
index 4affc0b..5c7ee0d 100644
--- a/java/com/google/gerrit/server/permissions/FailedPermissionBackend.java
+++ b/java/com/google/gerrit/server/permissions/FailedPermissionBackend.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.permissions;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.reviewdb.client.Project;
@@ -124,18 +125,18 @@
}
@Override
- public void check(ProjectPermission perm) throws PermissionBackendException {
+ public void check(CoreOrPluginProjectPermission perm) throws PermissionBackendException {
throw new PermissionBackendException(message, cause);
}
@Override
- public Set<ProjectPermission> test(Collection<ProjectPermission> permSet)
+ public <T extends CoreOrPluginProjectPermission> Set<T> test(Collection<T> permSet)
throws PermissionBackendException {
throw new PermissionBackendException(message, cause);
}
@Override
- public BooleanCondition testCond(ProjectPermission perm) {
+ public BooleanCondition testCond(CoreOrPluginProjectPermission perm) {
throw new UnsupportedOperationException(
"FailedPermissionBackend does not support conditions");
}
diff --git a/java/com/google/gerrit/server/permissions/PermissionBackend.java b/java/com/google/gerrit/server/permissions/PermissionBackend.java
index 80fb35b..22fde79 100644
--- a/java/com/google/gerrit/server/permissions/PermissionBackend.java
+++ b/java/com/google/gerrit/server/permissions/PermissionBackend.java
@@ -23,6 +23,7 @@
import com.google.common.collect.Sets;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.common.data.LabelType;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.extensions.restapi.AuthException;
@@ -300,18 +301,23 @@
}
/** Verify scoped user can {@code perm}, throwing if denied. */
- public abstract void check(ProjectPermission perm)
+ public abstract void check(CoreOrPluginProjectPermission perm)
throws AuthException, PermissionBackendException;
/** Filter {@code permSet} to permissions scoped user might be able to perform. */
- public abstract Set<ProjectPermission> test(Collection<ProjectPermission> permSet)
+ public abstract <T extends CoreOrPluginProjectPermission> Set<T> test(Collection<T> permSet)
throws PermissionBackendException;
- public boolean test(ProjectPermission perm) throws PermissionBackendException {
- return test(EnumSet.of(perm)).contains(perm);
+ public boolean test(CoreOrPluginProjectPermission perm) throws PermissionBackendException {
+ if (perm instanceof ProjectPermission) {
+ return test(EnumSet.of((ProjectPermission) perm)).contains(perm);
+ }
+
+ // TODO(xchangcheng): implement for plugin defined project permissions.
+ return false;
}
- public boolean testOrFalse(ProjectPermission perm) {
+ public boolean testOrFalse(CoreOrPluginProjectPermission perm) {
try {
return test(perm);
} catch (PermissionBackendException e) {
@@ -320,7 +326,7 @@
}
}
- public abstract BooleanCondition testCond(ProjectPermission perm);
+ public abstract BooleanCondition testCond(CoreOrPluginProjectPermission perm);
/**
* Filter a map of references by visibility.
diff --git a/java/com/google/gerrit/server/permissions/PermissionBackendCondition.java b/java/com/google/gerrit/server/permissions/PermissionBackendCondition.java
index 1b6b087..a92e504 100644
--- a/java/com/google/gerrit/server/permissions/PermissionBackendCondition.java
+++ b/java/com/google/gerrit/server/permissions/PermissionBackendCondition.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.permissions;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
import com.google.gerrit.extensions.api.access.GlobalOrPluginPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.extensions.conditions.PrivateInternals_BooleanCondition;
@@ -100,10 +101,11 @@
public static class ForProject extends PermissionBackendCondition {
private final PermissionBackend.ForProject impl;
- private final ProjectPermission perm;
+ private final CoreOrPluginProjectPermission perm;
private final CurrentUser user;
- public ForProject(PermissionBackend.ForProject impl, ProjectPermission perm, CurrentUser user) {
+ public ForProject(
+ PermissionBackend.ForProject impl, CoreOrPluginProjectPermission perm, CurrentUser user) {
this.impl = impl;
this.perm = perm;
this.user = user;
@@ -113,7 +115,7 @@
return impl;
}
- public ProjectPermission permission() {
+ public CoreOrPluginProjectPermission permission() {
return perm;
}
diff --git a/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java b/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java
index a837ed7..b147926 100644
--- a/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java
+++ b/java/com/google/gerrit/server/permissions/PluginPermissionsUtil.java
@@ -14,6 +14,8 @@
package com.google.gerrit.server.permissions;
+import static com.google.gerrit.extensions.api.access.PluginProjectPermission.PLUGIN_PERMISSION_NAME_PATTERN_STRING;
+
import com.google.common.collect.ImmutableMap;
import com.google.common.flogger.FluentLogger;
import com.google.gerrit.extensions.config.CapabilityDefinition;
@@ -41,7 +43,12 @@
* enough for this purpose since some core permissions, e.g. "label-", also contain "-".
*/
private static final Pattern PLUGIN_PERMISSION_NAME_IN_CONFIG_PATTERN =
- Pattern.compile("^plugin-" + PLUGIN_NAME_PATTERN_STRING + "-[a-zA-Z]+$");
+ Pattern.compile(
+ "^plugin-"
+ + PLUGIN_NAME_PATTERN_STRING
+ + "-"
+ + PLUGIN_PERMISSION_NAME_PATTERN_STRING
+ + "$");
/** Name pattern for a Gerrit plugin. */
private static final Pattern PLUGIN_NAME_PATTERN =
@@ -104,7 +111,7 @@
* @param name a config name which may stand for a plugin permission.
* @return whether the name matches the plugin permission name pattern for configs.
*/
- public static boolean isPluginPermission(String name) {
+ public static boolean isValidPluginPermission(String name) {
return PLUGIN_PERMISSION_NAME_IN_CONFIG_PATTERN.matcher(name).matches();
}
}
diff --git a/java/com/google/gerrit/server/permissions/ProjectControl.java b/java/com/google/gerrit/server/permissions/ProjectControl.java
index e1e7047..144519a 100644
--- a/java/com/google/gerrit/server/permissions/ProjectControl.java
+++ b/java/com/google/gerrit/server/permissions/ProjectControl.java
@@ -17,9 +17,12 @@
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.gerrit.reviewdb.client.RefNames.REFS_TAGS;
+import com.google.common.collect.Sets;
import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
+import com.google.gerrit.extensions.api.access.PluginProjectPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.AccountGroup;
@@ -45,7 +48,6 @@
import com.google.inject.assistedinject.Assisted;
import java.util.Collection;
import java.util.Collections;
-import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -372,17 +374,18 @@
}
@Override
- public void check(ProjectPermission perm) throws AuthException, PermissionBackendException {
+ public void check(CoreOrPluginProjectPermission perm)
+ throws AuthException, PermissionBackendException {
if (!can(perm)) {
throw new AuthException(perm.describeForException() + " not permitted");
}
}
@Override
- public Set<ProjectPermission> test(Collection<ProjectPermission> permSet)
+ public <T extends CoreOrPluginProjectPermission> Set<T> test(Collection<T> permSet)
throws PermissionBackendException {
- EnumSet<ProjectPermission> ok = EnumSet.noneOf(ProjectPermission.class);
- for (ProjectPermission perm : permSet) {
+ Set<T> ok = Sets.newHashSetWithExpectedSize(permSet.size());
+ for (T perm : permSet) {
if (can(perm)) {
ok.add(perm);
}
@@ -391,7 +394,7 @@
}
@Override
- public BooleanCondition testCond(ProjectPermission perm) {
+ public BooleanCondition testCond(CoreOrPluginProjectPermission perm) {
return new PermissionBackendCondition.ForProject(this, perm, getUser());
}
@@ -404,6 +407,17 @@
return refFilter.filter(refs, repo, opts);
}
+ private boolean can(CoreOrPluginProjectPermission perm) throws PermissionBackendException {
+ if (perm instanceof ProjectPermission) {
+ return can((ProjectPermission) perm);
+ } else if (perm instanceof PluginProjectPermission) {
+ // TODO(xchangcheng): implement for plugin defined project permissions.
+ return false;
+ }
+
+ throw new PermissionBackendException(perm.describeForException() + " unsupported");
+ }
+
private boolean can(ProjectPermission perm) throws PermissionBackendException {
switch (perm) {
case ACCESS:
diff --git a/java/com/google/gerrit/server/permissions/ProjectPermission.java b/java/com/google/gerrit/server/permissions/ProjectPermission.java
index ca04f3b..653303a 100644
--- a/java/com/google/gerrit/server/permissions/ProjectPermission.java
+++ b/java/com/google/gerrit/server/permissions/ProjectPermission.java
@@ -16,10 +16,11 @@
import static java.util.Objects.requireNonNull;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
import com.google.gerrit.extensions.api.access.GerritPermission;
import com.google.gerrit.reviewdb.client.RefNames;
-public enum ProjectPermission implements GerritPermission {
+public enum ProjectPermission implements CoreOrPluginProjectPermission {
/**
* Can access at least one reference or change within the repository.
*
diff --git a/java/com/google/gerrit/server/project/ProjectConfig.java b/java/com/google/gerrit/server/project/ProjectConfig.java
index 439e7c0..4e939ff 100644
--- a/java/com/google/gerrit/server/project/ProjectConfig.java
+++ b/java/com/google/gerrit/server/project/ProjectConfig.java
@@ -18,7 +18,7 @@
import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.gerrit.common.data.Permission.isPermission;
import static com.google.gerrit.reviewdb.client.Project.DEFAULT_SUBMIT_TYPE;
-import static com.google.gerrit.server.permissions.PluginPermissionsUtil.isPluginPermission;
+import static com.google.gerrit.server.permissions.PluginPermissionsUtil.isValidPluginPermission;
import static java.util.stream.Collectors.toList;
import com.google.common.base.CharMatcher;
@@ -788,7 +788,7 @@
private boolean isCoreOrPluginPermission(String permission) {
// Since plugins are loaded dynamically, here we can't load all plugin permissions and verify
// their existence.
- return isPermission(permission) || isPluginPermission(permission);
+ return isPermission(permission) || isValidPluginPermission(permission);
}
private boolean isValidRegex(String refPattern) {
diff --git a/java/com/google/gerrit/server/restapi/account/GetCapabilities.java b/java/com/google/gerrit/server/restapi/account/GetCapabilities.java
index 9de4a00..77f1668 100644
--- a/java/com/google/gerrit/server/restapi/account/GetCapabilities.java
+++ b/java/com/google/gerrit/server/restapi/account/GetCapabilities.java
@@ -17,7 +17,7 @@
import static com.google.gerrit.common.data.GlobalCapability.PRIORITY;
import static com.google.gerrit.server.permissions.DefaultPermissionMappings.globalOrPluginPermissionName;
import static com.google.gerrit.server.permissions.DefaultPermissionMappings.globalPermissionName;
-import static com.google.gerrit.server.permissions.DefaultPermissionMappings.pluginPermissionName;
+import static com.google.gerrit.server.permissions.DefaultPermissionMappings.pluginCapabilityName;
import com.google.common.collect.Iterables;
import com.google.gerrit.common.data.GlobalCapability;
@@ -113,7 +113,7 @@
for (String pluginName : pluginCapabilities.plugins()) {
for (String capability : pluginCapabilities.byPlugin(pluginName).keySet()) {
PluginPermission p = new PluginPermission(pluginName, capability);
- if (want(pluginPermissionName(p))) {
+ if (want(pluginCapabilityName(p))) {
toTest.add(p);
}
}
diff --git a/javatests/com/google/gerrit/acceptance/pgm/BUILD b/javatests/com/google/gerrit/acceptance/pgm/BUILD
index e8cf516..e0ed78a 100644
--- a/javatests/com/google/gerrit/acceptance/pgm/BUILD
+++ b/javatests/com/google/gerrit/acceptance/pgm/BUILD
@@ -26,7 +26,6 @@
"docker",
"elastic",
"exclusive",
- "flaky",
"pgm",
"no_windows",
],
diff --git a/javatests/com/google/gerrit/elasticsearch/BUILD b/javatests/com/google/gerrit/elasticsearch/BUILD
index 62c3fe1..a2bd092 100644
--- a/javatests/com/google/gerrit/elasticsearch/BUILD
+++ b/javatests/com/google/gerrit/elasticsearch/BUILD
@@ -65,7 +65,7 @@
name = "elasticsearch_query_%ss_test_V6" % name,
size = "large",
srcs = [src],
- tags = ELASTICSEARCH_TAGS + ["flaky"],
+ tags = ELASTICSEARCH_TAGS,
deps = ELASTICSEARCH_DEPS + [QUERY_TESTS_DEP % name],
) for name, src in ELASTICSEARCH_TESTS_V6.items()]
@@ -73,7 +73,7 @@
name = "elasticsearch_query_%ss_test_V7" % name,
size = "large",
srcs = [src],
- tags = ELASTICSEARCH_TAGS + ["flaky"],
+ tags = ELASTICSEARCH_TAGS,
deps = ELASTICSEARCH_DEPS + [QUERY_TESTS_DEP % name] + [
"//lib/httpcomponents:httpasyncclient",
"//lib/httpcomponents:httpclient",
diff --git a/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java b/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java
index 6c5c5b0..4a1f47c 100644
--- a/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java
+++ b/javatests/com/google/gerrit/server/extensions/webui/UiActionsTest.java
@@ -18,6 +18,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+import com.google.gerrit.extensions.api.access.CoreOrPluginProjectPermission;
import com.google.gerrit.extensions.conditions.BooleanCondition;
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.reviewdb.client.Account;
@@ -55,19 +57,29 @@
}
@Override
- public void check(ProjectPermission perm) throws AuthException, PermissionBackendException {
+ public void check(CoreOrPluginProjectPermission perm)
+ throws AuthException, PermissionBackendException {
throw new UnsupportedOperationException("not implemented");
}
@Override
- public Set<ProjectPermission> test(Collection<ProjectPermission> permSet)
+ public <T extends CoreOrPluginProjectPermission> Set<T> test(Collection<T> permSet)
throws PermissionBackendException {
assertThat(allowValueQueries).isTrue();
- return ImmutableSet.of(ProjectPermission.READ);
+ Set<T> ok = Sets.newHashSetWithExpectedSize(permSet.size());
+ for (T perm : permSet) {
+ // Allow ProjectPermission.READ, if it was requested in the input permSet. This implies
+ // that permSet has type Collection<ProjectPermission>, otherwise no permission would
+ // compare equal to READ.
+ if (perm.equals(ProjectPermission.READ)) {
+ ok.add(perm);
+ }
+ }
+ return ok;
}
@Override
- public BooleanCondition testCond(ProjectPermission perm) {
+ public BooleanCondition testCond(CoreOrPluginProjectPermission perm) {
return new PermissionBackendCondition.ForProject(this, perm, fakeUser());
}
diff --git a/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java b/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java
index 85d85fb..f40c3bc 100644
--- a/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java
+++ b/javatests/com/google/gerrit/server/permissions/PluginPermissionsUtilTest.java
@@ -15,7 +15,7 @@
package com.google.gerrit.server.permissions;
import static com.google.common.truth.Truth.assertThat;
-import static com.google.gerrit.server.permissions.PluginPermissionsUtil.isPluginPermission;
+import static com.google.gerrit.server.permissions.PluginPermissionsUtil.isValidPluginPermission;
import com.google.common.collect.ImmutableList;
import org.junit.Test;
@@ -30,7 +30,7 @@
ImmutableList.of("plugin-foo-a", "plugin-foo-a-b");
for (String permission : validPluginPermissions) {
- assertThat(isPluginPermission(permission))
+ assertThat(isValidPluginPermission(permission))
.named("valid plugin permission: %s", permission)
.isTrue();
}
@@ -38,7 +38,7 @@
@Test
public void isPluginPermissionReturnsFalseForInvalidName() {
- ImmutableList<String> inValidPluginPermissions =
+ ImmutableList<String> invalidPluginPermissions =
ImmutableList.of(
"create",
"label-Code-Review",
@@ -47,8 +47,8 @@
"plugin-foo-a-",
"plugin-foo-a1");
- for (String permission : inValidPluginPermissions) {
- assertThat(isPluginPermission(permission))
+ for (String permission : invalidPluginPermissions) {
+ assertThat(isValidPluginPermission(permission))
.named("invalid plugin permission: %s", permission)
.isFalse();
}
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
index 32b1152..472a187 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.html
@@ -356,6 +356,9 @@
min-width: initial;
width: 100vw;
}
+ #replyOverlay {
+ z-index: var(--reply-overlay-z-index);
+ }
}
</style>
<div class="container loading" hidden$="[[!_loading]]">Loading...</div>
diff --git a/polygerrit-ui/app/styles/themes/app-theme.html b/polygerrit-ui/app/styles/themes/app-theme.html
index ec445ae..e326e97 100644
--- a/polygerrit-ui/app/styles/themes/app-theme.html
+++ b/polygerrit-ui/app/styles/themes/app-theme.html
@@ -133,6 +133,8 @@
--syntax-selector-attr-color: #FA8602;
--syntax-template-tag-color: #FA8602;
--syntax-param-color: var(--primary-text-color);
+
+ --reply-overlay-z-index: 1000;
}
@media screen and (max-width: 50em) {
:root {
diff --git a/polygerrit-ui/app/styles/themes/dark-theme.html b/polygerrit-ui/app/styles/themes/dark-theme.html
index 6037a88..f22ec5d 100644
--- a/polygerrit-ui/app/styles/themes/dark-theme.html
+++ b/polygerrit-ui/app/styles/themes/dark-theme.html
@@ -80,6 +80,8 @@
--syntax-selector-attr-color: #80CBBF;
--syntax-template-tag-color: #C792EA;
+ --reply-overlay-z-index: 1000;
+
background-color: var(--view-background-color);
}
</style>