summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
index d9cf3a964f..ba55b44af9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/TopicControl.java
@@ -152,9 +152,19 @@ public class TopicControl {
;
}
+ /** Can this user defer this topic? */
+ public boolean canDefer() {
+ return isOwner() // owner (aka creator) of the change can defer
+ || getRefControl().isOwner() // branch owner can defer
+ || getProjectControl().isOwner() // project owner can defer
+ || getCurrentUser().isAdministrator() // site administers are god
+ ;
+ }
+
/** Can this user restore this topic? */
public boolean canRestore() {
- return canAbandon(); // Anyone who can abandon the change can restore it back
+ // Anyone who can abandon or defer the change can restore it back
+ return canAbandon() || canDefer();
}
/** All value ranges of any allowed label permission. */