From 91c3b647c7618cb2291ac995318c275cf9e57e60 Mon Sep 17 00:00:00 2001 From: Sven Selberg Date: Wed, 8 Apr 2020 14:59:17 +0200 Subject: [PATCH 1/3] Don't inject CurrentUser to ChangeIsVisibleToPredicate CurrentUser is not set to IdentifiedUser in ReceiveCommits when using HTTP. This causes ISE when pushing to refs/for/target%submit over HTTP when Anonymous Users cannot read target. Tests: * Run submit on push tests in both SSH and HTTP. * Block READ for Anonymous Users in submit on push tests. Bug: Issue 12561 Change-Id: I1c79f18a65ad9816a182dc00e403dc93c3e748b6 --- .../gerrit/acceptance/AbstractDaemonTest.java | 12 ++++++++ .../server/config/GerritGlobalModule.java | 2 ++ .../change/ChangeIsVisibleToPredicate.java | 9 ++++-- .../query/change/ChangeQueryBuilder.java | 4 +-- .../query/change/ChangeQueryProcessor.java | 4 +-- .../submit/LocalMergeSuperSetComputation.java | 17 +++++++---- ...nPushIT.java => AbstractSubmitOnPush.java} | 10 +++++-- .../acceptance/git/HttpSubmitOnPushIT.java | 30 +++++++++++++++++++ .../acceptance/git/SshSubmitOnPushIT.java | 27 +++++++++++++++++ 9 files changed, 101 insertions(+), 14 deletions(-) rename javatests/com/google/gerrit/acceptance/git/{SubmitOnPushIT.java => AbstractSubmitOnPush.java} (98%) create mode 100644 javatests/com/google/gerrit/acceptance/git/HttpSubmitOnPushIT.java create mode 100644 javatests/com/google/gerrit/acceptance/git/SshSubmitOnPushIT.java diff --git a/java/com/google/gerrit/acceptance/AbstractDaemonTest.java b/java/com/google/gerrit/acceptance/AbstractDaemonTest.java index bb6a4b46eb..6bacc1abbe 100644 --- a/java/com/google/gerrit/acceptance/AbstractDaemonTest.java +++ b/java/com/google/gerrit/acceptance/AbstractDaemonTest.java @@ -22,6 +22,7 @@ import static com.google.common.truth.TruthJUnit.assume; import static com.google.gerrit.extensions.api.changes.SubmittedTogetherOption.NON_VISIBLE_CHANGES; import static com.google.gerrit.reviewdb.client.Patch.COMMIT_MSG; import static com.google.gerrit.reviewdb.client.Patch.MERGE_LIST; +import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS; import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS; import static com.google.gerrit.server.project.testing.Util.category; import static com.google.gerrit.server.project.testing.Util.value; @@ -1059,6 +1060,17 @@ public abstract class AbstractDaemonTest { block(ref, Permission.READ, REGISTERED_USERS); } + protected void blockAnonymousRead() throws Exception { + AccountGroup.UUID anonymous = systemGroupBackend.getGroup(ANONYMOUS_USERS).getUUID(); + AccountGroup.UUID registered = systemGroupBackend.getGroup(REGISTERED_USERS).getUUID(); + String allRefs = RefNames.REFS + "*"; + try (ProjectConfigUpdate u = updateProject(project)) { + Util.block(u.getConfig(), Permission.READ, anonymous, allRefs); + Util.allow(u.getConfig(), Permission.READ, registered, allRefs); + u.save(); + } + } + protected PushOneCommit.Result pushTo(String ref) throws Exception { PushOneCommit push = pushFactory.create(admin.newIdent(), testRepo); return push.to(ref); diff --git a/java/com/google/gerrit/server/config/GerritGlobalModule.java b/java/com/google/gerrit/server/config/GerritGlobalModule.java index a5f25f99d3..5dad6a80f8 100644 --- a/java/com/google/gerrit/server/config/GerritGlobalModule.java +++ b/java/com/google/gerrit/server/config/GerritGlobalModule.java @@ -160,6 +160,7 @@ import com.google.gerrit.server.project.ProjectNameLockManager; import com.google.gerrit.server.project.ProjectState; import com.google.gerrit.server.project.SubmitRuleEvaluator; import com.google.gerrit.server.query.change.ChangeData; +import com.google.gerrit.server.query.change.ChangeIsVisibleToPredicate; import com.google.gerrit.server.query.change.ChangeQueryBuilder; import com.google.gerrit.server.query.change.ConflictsCacheImpl; import com.google.gerrit.server.quota.QuotaEnforcer; @@ -249,6 +250,7 @@ public class GerritGlobalModule extends FactoryModule { factory(CapabilityCollection.Factory.class); factory(ChangeData.AssistedFactory.class); factory(ChangeJson.AssistedFactory.class); + factory(ChangeIsVisibleToPredicate.Factory.class); factory(LabelsJson.Factory.class); factory(MergeUtil.Factory.class); factory(PatchScriptFactory.Factory.class); diff --git a/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java b/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java index 60b4d38e5d..3336fe4cfc 100644 --- a/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java +++ b/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java @@ -30,12 +30,17 @@ import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.ProjectState; import com.google.inject.Inject; import com.google.inject.Provider; +import com.google.inject.assistedinject.Assisted; import java.io.IOException; import org.eclipse.jgit.errors.RepositoryNotFoundException; public class ChangeIsVisibleToPredicate extends IsVisibleToPredicate { private static final FluentLogger logger = FluentLogger.forEnclosingClass(); + public interface Factory { + ChangeIsVisibleToPredicate forUser(CurrentUser user); + } + protected final ChangeNotes.Factory notesFactory; protected final CurrentUser user; protected final PermissionBackend permissionBackend; @@ -45,10 +50,10 @@ public class ChangeIsVisibleToPredicate extends IsVisibleToPredicate @Inject public ChangeIsVisibleToPredicate( ChangeNotes.Factory notesFactory, - CurrentUser user, PermissionBackend permissionBackend, ProjectCache projectCache, - Provider anonymousUserProvider) { + Provider anonymousUserProvider, + @Assisted CurrentUser user) { super(ChangeQueryBuilder.FIELD_VISIBLETO, IndexUtils.describe(user)); this.notesFactory = notesFactory; this.user = user; diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 129dcaca0e..2a0699ff7b 100644 --- a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java @@ -989,10 +989,10 @@ public class ChangeQueryBuilder extends QueryBuilder visibleto(CurrentUser user) { return new ChangeIsVisibleToPredicate( args.notesFactory, - user, args.permissionBackend, args.projectCache, - args.anonymousUserProvider); + args.anonymousUserProvider, + user); } public Predicate isVisible() throws QueryParseException { diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java b/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java index f9263a9922..6cbab2e500 100644 --- a/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java +++ b/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java @@ -147,10 +147,10 @@ public class ChangeQueryProcessor extends QueryProcessor pred, new ChangeIsVisibleToPredicate( notesFactory, - userProvider.get(), permissionBackend, projectCache, - anonymousUserProvider), + anonymousUserProvider, + userProvider.get()), start); } diff --git a/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java b/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java index 831a8b854e..1219124fb3 100644 --- a/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java +++ b/java/com/google/gerrit/server/submit/LocalMergeSuperSetComputation.java @@ -90,20 +90,20 @@ public class LocalMergeSuperSetComputation implements MergeSuperSetComputation { private final Map> queryCache; private final Map> heads; private final ProjectCache projectCache; - private final ChangeIsVisibleToPredicate changeIsVisibleToPredicate; + private final ChangeIsVisibleToPredicate.Factory changeIsVisibleToPredicateFactory; @Inject LocalMergeSuperSetComputation( PermissionBackend permissionBackend, Provider queryProvider, ProjectCache projectCache, - ChangeIsVisibleToPredicate changeIsVisibleToPredicate) { + ChangeIsVisibleToPredicate.Factory changeIsVisibleToPredicateFactory) { this.projectCache = projectCache; this.permissionBackend = permissionBackend; this.queryProvider = queryProvider; this.queryCache = new HashMap<>(); this.heads = new HashMap<>(); - this.changeIsVisibleToPredicate = changeIsVisibleToPredicate; + this.changeIsVisibleToPredicateFactory = changeIsVisibleToPredicateFactory; } @Override @@ -152,7 +152,8 @@ public class LocalMergeSuperSetComputation implements MergeSuperSetComputation { walkChangesByHashes(visibleCommits, Collections.emptySet(), or, b); Set nonVisibleHashes = walkChangesByHashes(nonVisibleCommits, visibleHashes, or, b); - ChangeSet partialSet = byCommitsOnBranchNotMerged(or, b, visibleHashes, nonVisibleHashes); + ChangeSet partialSet = + byCommitsOnBranchNotMerged(or, b, visibleHashes, nonVisibleHashes, user); Iterables.addAll(visibleChanges, partialSet.changes()); Iterables.addAll(nonVisibleChanges, partialSet.nonVisibleChanges()); } @@ -211,13 +212,19 @@ public class LocalMergeSuperSetComputation implements MergeSuperSetComputation { } private ChangeSet byCommitsOnBranchNotMerged( - OpenRepo or, Branch.NameKey branch, Set visibleHashes, Set nonVisibleHashes) + OpenRepo or, + Branch.NameKey branch, + Set visibleHashes, + Set nonVisibleHashes, + CurrentUser user) throws IOException { List potentiallyVisibleChanges = byCommitsOnBranchNotMerged(or, branch, visibleHashes); List invisibleChanges = new ArrayList<>(byCommitsOnBranchNotMerged(or, branch, nonVisibleHashes)); List visibleChanges = new ArrayList<>(potentiallyVisibleChanges.size()); + ChangeIsVisibleToPredicate changeIsVisibleToPredicate = + changeIsVisibleToPredicateFactory.forUser(user); for (ChangeData cd : potentiallyVisibleChanges) { if (changeIsVisibleToPredicate.match(cd)) { visibleChanges.add(cd); diff --git a/javatests/com/google/gerrit/acceptance/git/SubmitOnPushIT.java b/javatests/com/google/gerrit/acceptance/git/AbstractSubmitOnPush.java similarity index 98% rename from javatests/com/google/gerrit/acceptance/git/SubmitOnPushIT.java rename to javatests/com/google/gerrit/acceptance/git/AbstractSubmitOnPush.java index 2b10b17296..c02a5edc87 100644 --- a/javatests/com/google/gerrit/acceptance/git/SubmitOnPushIT.java +++ b/javatests/com/google/gerrit/acceptance/git/AbstractSubmitOnPush.java @@ -21,7 +21,6 @@ import static java.util.stream.Collectors.toList; import com.google.common.collect.Iterables; import com.google.gerrit.acceptance.AbstractDaemonTest; -import com.google.gerrit.acceptance.NoHttpd; import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.common.data.Permission; import com.google.gerrit.reviewdb.client.Change; @@ -44,12 +43,17 @@ import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.transport.RefSpec; import org.eclipse.jgit.transport.RemoteRefUpdate; +import org.junit.Before; import org.junit.Test; -@NoHttpd -public class SubmitOnPushIT extends AbstractDaemonTest { +public abstract class AbstractSubmitOnPush extends AbstractDaemonTest { @Inject private ApprovalsUtil approvalsUtil; + @Before + public void blockAnonymous() throws Exception { + blockAnonymousRead(); + } + @Test public void submitOnPush() throws Exception { grant(project, "refs/for/refs/heads/master", Permission.SUBMIT); diff --git a/javatests/com/google/gerrit/acceptance/git/HttpSubmitOnPushIT.java b/javatests/com/google/gerrit/acceptance/git/HttpSubmitOnPushIT.java new file mode 100644 index 0000000000..373341536f --- /dev/null +++ b/javatests/com/google/gerrit/acceptance/git/HttpSubmitOnPushIT.java @@ -0,0 +1,30 @@ +// Copyright (C) 2020 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.acceptance.git; + +import com.google.gerrit.acceptance.GitUtil; +import org.eclipse.jgit.transport.CredentialsProvider; +import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; +import org.junit.Before; + +public class HttpSubmitOnPushIT extends AbstractSubmitOnPush { + + @Before + public void cloneProjectOverHttp() throws Exception { + CredentialsProvider.setDefault( + new UsernamePasswordCredentialsProvider(admin.username(), admin.httpPassword())); + testRepo = GitUtil.cloneProject(project, admin.getHttpUrl(server) + "/a/" + project.get()); + } +} diff --git a/javatests/com/google/gerrit/acceptance/git/SshSubmitOnPushIT.java b/javatests/com/google/gerrit/acceptance/git/SshSubmitOnPushIT.java new file mode 100644 index 0000000000..3a18257f15 --- /dev/null +++ b/javatests/com/google/gerrit/acceptance/git/SshSubmitOnPushIT.java @@ -0,0 +1,27 @@ +// Copyright (C) 2020 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.acceptance.git; + +import com.google.gerrit.acceptance.NoHttpd; +import org.junit.Before; + +@NoHttpd +public class SshSubmitOnPushIT extends AbstractSubmitOnPush { + + @Before + public void cloneProjectOverSsh() throws Exception { + testRepo = cloneProject(project, admin); + } +} From d7e39650dd25d80bc95a73864d010abf06aa78ba Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 9 Apr 2020 09:37:33 +0900 Subject: [PATCH 2/3] ChangeQueryProcessor: Use ChangeIsVisibleToPredicate.Factory Change-Id: I5bcca0d9b6fddcb710c2467bc857931e3a5cb69e --- .../gerrit/pgm/util/BatchProgramModule.java | 2 ++ .../query/change/ChangeQueryProcessor.java | 28 +++---------------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/java/com/google/gerrit/pgm/util/BatchProgramModule.java b/java/com/google/gerrit/pgm/util/BatchProgramModule.java index 956ec759ba..8e2a24410a 100644 --- a/java/com/google/gerrit/pgm/util/BatchProgramModule.java +++ b/java/com/google/gerrit/pgm/util/BatchProgramModule.java @@ -74,6 +74,7 @@ import com.google.gerrit.server.project.ProjectCacheImpl; import com.google.gerrit.server.project.ProjectState; import com.google.gerrit.server.project.SubmitRuleEvaluator; import com.google.gerrit.server.query.change.ChangeData; +import com.google.gerrit.server.query.change.ChangeIsVisibleToPredicate; import com.google.gerrit.server.restapi.group.GroupModule; import com.google.gerrit.server.rules.DefaultSubmitRule; import com.google.gerrit.server.rules.IgnoreSelfApprovalRule; @@ -164,6 +165,7 @@ public class BatchProgramModule extends FactoryModule { install(PureRevertCache.module()); factory(CapabilityCollection.Factory.class); factory(ChangeData.AssistedFactory.class); + factory(ChangeIsVisibleToPredicate.Factory.class); factory(ProjectState.Factory.class); // Submit rules diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java b/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java index 6cbab2e500..40c04773ed 100644 --- a/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java +++ b/java/com/google/gerrit/server/query/change/ChangeQueryProcessor.java @@ -28,7 +28,6 @@ import com.google.gerrit.index.query.IndexPredicate; import com.google.gerrit.index.query.Predicate; import com.google.gerrit.index.query.QueryProcessor; import com.google.gerrit.metrics.MetricMaker; -import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.DynamicOptions; import com.google.gerrit.server.DynamicOptions.DynamicBean; @@ -40,9 +39,6 @@ import com.google.gerrit.server.index.change.ChangeIndexCollection; import com.google.gerrit.server.index.change.ChangeIndexRewriter; import com.google.gerrit.server.index.change.ChangeSchemaDefinitions; import com.google.gerrit.server.index.change.IndexedChangeQuery; -import com.google.gerrit.server.notedb.ChangeNotes; -import com.google.gerrit.server.permissions.PermissionBackend; -import com.google.gerrit.server.project.ProjectCache; import com.google.inject.Inject; import com.google.inject.Provider; import java.util.HashMap; @@ -58,11 +54,8 @@ import java.util.Set; public class ChangeQueryProcessor extends QueryProcessor implements DynamicOptions.BeanReceiver, DynamicOptions.BeanProvider { private final Provider userProvider; - private final ChangeNotes.Factory notesFactory; private final ImmutableListMultimap attributeFactoriesByPlugin; - private final PermissionBackend permissionBackend; - private final ProjectCache projectCache; - private final Provider anonymousUserProvider; + private final ChangeIsVisibleToPredicate.Factory changeIsVisibleToPredicateFactory; private final Map dynamicBeans = new HashMap<>(); static { @@ -80,11 +73,8 @@ public class ChangeQueryProcessor extends QueryProcessor IndexConfig indexConfig, ChangeIndexCollection indexes, ChangeIndexRewriter rewriter, - ChangeNotes.Factory notesFactory, DynamicSet attributeFactories, - PermissionBackend permissionBackend, - ProjectCache projectCache, - Provider anonymousUserProvider) { + ChangeIsVisibleToPredicate.Factory changeIsVisibleToPredicateFactory) { super( metricMaker, ChangeSchemaDefinitions.INSTANCE, @@ -94,10 +84,7 @@ public class ChangeQueryProcessor extends QueryProcessor FIELD_LIMIT, () -> limitsFactory.create(userProvider.get()).getQueryLimit()); this.userProvider = userProvider; - this.notesFactory = notesFactory; - this.permissionBackend = permissionBackend; - this.projectCache = projectCache; - this.anonymousUserProvider = anonymousUserProvider; + this.changeIsVisibleToPredicateFactory = changeIsVisibleToPredicateFactory; ImmutableListMultimap.Builder factoriesBuilder = ImmutableListMultimap.builder(); @@ -144,14 +131,7 @@ public class ChangeQueryProcessor extends QueryProcessor @Override protected Predicate enforceVisibility(Predicate pred) { return new AndChangeSource( - pred, - new ChangeIsVisibleToPredicate( - notesFactory, - permissionBackend, - projectCache, - anonymousUserProvider, - userProvider.get()), - start); + pred, changeIsVisibleToPredicateFactory.forUser(userProvider.get()), start); } @Override From 6018f1db7b8929b1a63e66a96fc8d612c7f9979d Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Thu, 9 Apr 2020 09:46:16 +0900 Subject: [PATCH 3/3] ChangeQueryBuilder: Use ChangeIsVisibleToPredicate.Factory Change-Id: I01ca822197076e491bdffc78ef53b46aea8665b3 --- .../query/change/ChangeQueryBuilder.java | 27 +++++-------------- .../server/index/change/FakeQueryBuilder.java | 2 +- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java index 2a0699ff7b..f998ad3fc6 100644 --- a/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java +++ b/java/com/google/gerrit/server/query/change/ChangeQueryBuilder.java @@ -46,7 +46,6 @@ import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.RefNames; -import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.CommentsUtil; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.IdentifiedUser; @@ -71,7 +70,6 @@ import com.google.gerrit.server.index.change.ChangeField; import com.google.gerrit.server.index.change.ChangeIndex; import com.google.gerrit.server.index.change.ChangeIndexCollection; import com.google.gerrit.server.index.change.ChangeIndexRewriter; -import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.notedb.ReviewerStateInternal; import com.google.gerrit.server.patch.PatchListCache; import com.google.gerrit.server.permissions.PermissionBackend; @@ -206,7 +204,6 @@ public class ChangeQueryBuilder extends QueryBuilder hasOperands; @@ -222,7 +219,7 @@ public class ChangeQueryBuilder extends QueryBuilder anonymousUserProvider; + final ChangeIsVisibleToPredicate.Factory changeIsVisbleToPredicateFactory; private final Provider self; @@ -236,7 +233,6 @@ public class ChangeQueryBuilder extends QueryBuilder self, PermissionBackend permissionBackend, - ChangeNotes.Factory notesFactory, ChangeData.Factory changeDataFactory, CommentsUtil commentsUtil, AccountResolver accountResolver, @@ -254,7 +250,7 @@ public class ChangeQueryBuilder extends QueryBuilder anonymousUserProvider) { + ChangeIsVisibleToPredicate.Factory changeIsVisbleToPredicateFactory) { this( queryProvider, rewriter, @@ -263,7 +259,6 @@ public class ChangeQueryBuilder extends QueryBuilder self, PermissionBackend permissionBackend, - ChangeNotes.Factory notesFactory, ChangeData.Factory changeDataFactory, CommentsUtil commentsUtil, AccountResolver accountResolver, @@ -310,14 +304,13 @@ public class ChangeQueryBuilder extends QueryBuilder anonymousUserProvider) { + ChangeIsVisibleToPredicate.Factory changeIsVisbleToPredicateFactory) { this.queryProvider = queryProvider; this.rewriter = rewriter; this.opFactories = opFactories; this.userFactory = userFactory; this.self = self; this.permissionBackend = permissionBackend; - this.notesFactory = notesFactory; this.changeDataFactory = changeDataFactory; this.commentsUtil = commentsUtil; this.accountResolver = accountResolver; @@ -336,7 +329,7 @@ public class ChangeQueryBuilder extends QueryBuilder visibleto(CurrentUser user) { - return new ChangeIsVisibleToPredicate( - args.notesFactory, - args.permissionBackend, - args.projectCache, - args.anonymousUserProvider, - user); + return args.changeIsVisbleToPredicateFactory.forUser(user); } public Predicate isVisible() throws QueryParseException { diff --git a/javatests/com/google/gerrit/server/index/change/FakeQueryBuilder.java b/javatests/com/google/gerrit/server/index/change/FakeQueryBuilder.java index 0753127b52..a713221a45 100644 --- a/javatests/com/google/gerrit/server/index/change/FakeQueryBuilder.java +++ b/javatests/com/google/gerrit/server/index/change/FakeQueryBuilder.java @@ -27,7 +27,7 @@ public class FakeQueryBuilder extends ChangeQueryBuilder { new ChangeQueryBuilder.Definition<>(FakeQueryBuilder.class), new ChangeQueryBuilder.Arguments( null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, indexes, null, null, null, null, null, null, null)); + null, null, null, indexes, null, null, null, null, null, null, null)); } @Operator