From 9cae606cdaff225fe25a6c93b61645f13f80eaf4 Mon Sep 17 00:00:00 2001
From: Edwin Kempin <ekempin@google.com>
Date: Tue, 27 Mar 2018 15:20:58 +0200
Subject: [PATCH] Enable UI action to toggle WIP flag for admins

Change I4878f066b6 allowed administrators to toggle the WIP flag on any
change but the UI action was still disabled for admins.

Change-Id: I55dd6400dc07d57fe2aaaf3528ff429d5baf48ed
Signed-off-by: Edwin Kempin <ekempin@google.com>
---
 .../server/restapi/change/SetReadyForReview.java    | 13 ++++++++++---
 .../server/restapi/change/SetWorkInProgress.java    | 13 ++++++++++---
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/java/com/google/gerrit/server/restapi/change/SetReadyForReview.java b/java/com/google/gerrit/server/restapi/change/SetReadyForReview.java
index f487c28602..73b56b1be4 100644
--- a/java/com/google/gerrit/server/restapi/change/SetReadyForReview.java
+++ b/java/com/google/gerrit/server/restapi/change/SetReadyForReview.java
@@ -14,6 +14,9 @@
 
 package com.google.gerrit.server.restapi.change;
 
+import static com.google.gerrit.extensions.conditions.BooleanCondition.and;
+import static com.google.gerrit.extensions.conditions.BooleanCondition.or;
+
 import com.google.gerrit.common.TimeUtil;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -93,8 +96,12 @@ public class SetReadyForReview extends RetryingRestModifyView<ChangeResource, In
         .setLabel("Start Review")
         .setTitle("Set Ready For Review")
         .setVisible(
-            rsrc.isUserOwner()
-                && rsrc.getChange().getStatus() == Status.NEW
-                && rsrc.getChange().isWorkInProgress());
+            and(
+                rsrc.getChange().getStatus() == Status.NEW && rsrc.getChange().isWorkInProgress(),
+                or(
+                    rsrc.isUserOwner(),
+                    permissionBackend
+                        .currentUser()
+                        .testCond(GlobalPermission.ADMINISTRATE_SERVER))));
   }
 }
diff --git a/java/com/google/gerrit/server/restapi/change/SetWorkInProgress.java b/java/com/google/gerrit/server/restapi/change/SetWorkInProgress.java
index 7fcf6a0348..a78cbaec12 100644
--- a/java/com/google/gerrit/server/restapi/change/SetWorkInProgress.java
+++ b/java/com/google/gerrit/server/restapi/change/SetWorkInProgress.java
@@ -14,6 +14,9 @@
 
 package com.google.gerrit.server.restapi.change;
 
+import static com.google.gerrit.extensions.conditions.BooleanCondition.and;
+import static com.google.gerrit.extensions.conditions.BooleanCondition.or;
+
 import com.google.gerrit.common.TimeUtil;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -94,8 +97,12 @@ public class SetWorkInProgress extends RetryingRestModifyView<ChangeResource, In
         .setLabel("WIP")
         .setTitle("Set Work In Progress")
         .setVisible(
-            rsrc.isUserOwner()
-                && rsrc.getChange().getStatus() == Status.NEW
-                && !rsrc.getChange().isWorkInProgress());
+            and(
+                rsrc.getChange().getStatus() == Status.NEW && !rsrc.getChange().isWorkInProgress(),
+                or(
+                    rsrc.isUserOwner(),
+                    permissionBackend
+                        .currentUser()
+                        .testCond(GlobalPermission.ADMINISTRATE_SERVER))));
   }
 }