Merge "Show account emails in fast gr-tooltips rather than slow native tooltips"
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/BaseInit.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/BaseInit.java
index 49fd1f9..f750fdb 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/BaseInit.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/BaseInit.java
@@ -73,6 +73,7 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -387,14 +388,25 @@
schemaUpdater.update(
new UpdateUI() {
@Override
- public void message(String msg) {
- System.err.println(msg);
+ public void message(String message) {
+ System.err.println(message);
System.err.flush();
}
@Override
- public boolean yesno(boolean def, String msg) {
- return ui.yesno(def, msg);
+ public boolean yesno(boolean defaultValue, String message) {
+ return ui.yesno(defaultValue, message);
+ }
+
+ @Override
+ public void waitForUser() {
+ ui.waitForUser();
+ }
+
+ @Override
+ public String readString(
+ String defaultValue, Set<String> allowedValues, String message) {
+ return ui.readString(defaultValue, allowedValues, message);
}
@Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/IncludingGroupMembership.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/IncludingGroupMembership.java
index 70801c3..165cbb6 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/account/IncludingGroupMembership.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/IncludingGroupMembership.java
@@ -40,13 +40,16 @@
IncludingGroupMembership create(IdentifiedUser user);
}
+ private final GroupCache groupCache;
private final GroupIncludeCache includeCache;
private final IdentifiedUser user;
private final Map<AccountGroup.UUID, Boolean> memberOf;
private Set<AccountGroup.UUID> knownGroups;
@Inject
- IncludingGroupMembership(GroupIncludeCache includeCache, @Assisted IdentifiedUser user) {
+ IncludingGroupMembership(
+ GroupCache groupCache, GroupIncludeCache includeCache, @Assisted IdentifiedUser user) {
+ this.groupCache = groupCache;
this.includeCache = includeCache;
this.user = user;
@@ -88,6 +91,10 @@
}
memberOf.put(id, false);
+ AccountGroup group = groupCache.get(id);
+ if (group == null) {
+ continue;
+ }
if (search(includeCache.subgroupsOf(id))) {
memberOf.put(id, true);
return true;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java
index 15fd190..e262881 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeIsVisibleToPredicate.java
@@ -30,7 +30,7 @@
public class ChangeIsVisibleToPredicate extends IsVisibleToPredicate<ChangeData> {
protected final Provider<ReviewDb> db;
protected final ChangeNotes.Factory notesFactory;
- protected final ChangeControl.GenericFactory changeControl;
+ protected final ChangeControl.GenericFactory changeControlFactory;
protected final CurrentUser user;
protected final PermissionBackend permissionBackend;
@@ -43,7 +43,7 @@
super(ChangeQueryBuilder.FIELD_VISIBLETO, describe(user));
this.db = db;
this.notesFactory = notesFactory;
- this.changeControl = changeControlFactory;
+ this.changeControlFactory = changeControlFactory;
this.user = user;
this.permissionBackend = permissionBackend;
}
@@ -53,19 +53,20 @@
if (cd.fastIsVisibleTo(user)) {
return true;
}
- Change change;
+ Change change = cd.change();
+ if (change == null) {
+ return false;
+ }
+
+ ChangeControl changeControl;
+ ChangeNotes notes = notesFactory.createFromIndexedChange(change);
try {
- change = cd.change();
- if (change == null) {
- return false;
- }
+ changeControl = changeControlFactory.controlFor(notes, user);
} catch (NoSuchChangeException e) {
// Ignored
return false;
}
- ChangeNotes notes = notesFactory.createFromIndexedChange(change);
- ChangeControl cc = changeControl.controlFor(notes, user);
boolean visible;
try {
visible =
@@ -78,10 +79,9 @@
throw new OrmException("unable to check permissions", e);
}
if (visible) {
- cd.cacheVisibleTo(cc);
+ cd.cacheVisibleTo(changeControl);
return true;
}
-
return false;
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/schema/UpdateUI.java b/gerrit-server/src/main/java/com/google/gerrit/server/schema/UpdateUI.java
index b43aaa6..0c02607 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/schema/UpdateUI.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/schema/UpdateUI.java
@@ -17,11 +17,24 @@
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.StatementExecutor;
import java.util.List;
+import java.util.Set;
public interface UpdateUI {
- void message(String msg);
- boolean yesno(boolean def, String msg);
+ void message(String message);
+
+ /** Requests the user to answer a yes/no question. */
+ boolean yesno(boolean defaultValue, String message);
+
+ /** Prints a message asking the user to let us know when it's safe to continue. */
+ void waitForUser();
+
+ /**
+ * Prompts the user for a string, suggesting a default.
+ *
+ * @return the chosen string from the list of allowed values.
+ */
+ String readString(String defaultValue, Set<String> allowedValues, String message);
boolean isBatch();
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/schema/SchemaUpdaterTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/schema/SchemaUpdaterTest.java
index d9fc7e5..5b86f46 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/schema/SchemaUpdaterTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/schema/SchemaUpdaterTest.java
@@ -34,9 +34,9 @@
import com.google.gerrit.testutil.InMemoryDatabase;
import com.google.gerrit.testutil.InMemoryH2Type;
import com.google.gerrit.testutil.InMemoryRepositoryManager;
+import com.google.gerrit.testutil.TestUpdateUI;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
-import com.google.gwtorm.server.StatementExecutor;
import com.google.inject.Guice;
import com.google.inject.Key;
import com.google.inject.ProvisionException;
@@ -45,7 +45,6 @@
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.List;
import java.util.UUID;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.PersonIdent;
@@ -133,28 +132,7 @@
}
}
- u.update(
- new UpdateUI() {
- @Override
- public void message(String msg) {}
-
- @Override
- public boolean yesno(boolean def, String msg) {
- return def;
- }
-
- @Override
- public boolean isBatch() {
- return true;
- }
-
- @Override
- public void pruneSchema(StatementExecutor e, List<String> pruneList) throws OrmException {
- for (String sql : pruneList) {
- e.execute(sql);
- }
- }
- });
+ u.update(new TestUpdateUI());
db.assertSchemaVersion();
final SystemConfig sc = db.getSystemConfig();
diff --git a/gerrit-server/src/test/java/com/google/gerrit/testutil/TestUpdateUI.java b/gerrit-server/src/test/java/com/google/gerrit/testutil/TestUpdateUI.java
index 644f8e2..d4acbcb 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/testutil/TestUpdateUI.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/testutil/TestUpdateUI.java
@@ -18,21 +18,34 @@
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.StatementExecutor;
import java.util.List;
+import java.util.Set;
public class TestUpdateUI implements UpdateUI {
@Override
- public void message(String msg) {}
+ public void message(String message) {}
@Override
- public boolean yesno(boolean def, String msg) {
- return false;
+ public boolean yesno(boolean defaultValue, String message) {
+ return defaultValue;
+ }
+
+ @Override
+ public void waitForUser() {}
+
+ @Override
+ public String readString(String defaultValue, Set<String> allowedValues, String message) {
+ return defaultValue;
}
@Override
public boolean isBatch() {
- return false;
+ return true;
}
@Override
- public void pruneSchema(StatementExecutor e, List<String> pruneList) throws OrmException {}
+ public void pruneSchema(StatementExecutor e, List<String> pruneList) throws OrmException {
+ for (String sql : pruneList) {
+ e.execute(sql);
+ }
+ }
}
diff --git a/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js b/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
index e983d1d..5d590c0 100644
--- a/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
+++ b/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
@@ -713,10 +713,10 @@
*/
getChangeDetail(changeNum, opt_errFn, opt_cancelCondition) {
const options = this.listChangesOptionsToHex(
+ this.ListChangesOption.ALL_COMMITS,
this.ListChangesOption.ALL_REVISIONS,
this.ListChangesOption.CHANGE_ACTIONS,
this.ListChangesOption.CURRENT_ACTIONS,
- this.ListChangesOption.CURRENT_COMMIT,
this.ListChangesOption.DOWNLOAD_COMMANDS,
this.ListChangesOption.SUBMITTABLE,
this.ListChangesOption.WEB_LINKS