Merge "Move ScopedUidChange to test_utils.h"
diff --git a/tests/binder_test.cpp b/tests/binder_test.cpp
index ba05813..2ca21ff 100644
--- a/tests/binder_test.cpp
+++ b/tests/binder_test.cpp
@@ -3516,23 +3516,6 @@
 
 namespace {
 
-class ScopedUidChange {
-  public:
-    explicit ScopedUidChange(uid_t uid) : mInputUid(uid) {
-        mStoredUid = geteuid();
-        if (mInputUid == mStoredUid) return;
-        EXPECT_TRUE(seteuid(uid) == 0);
-    }
-    ~ScopedUidChange() {
-        if (mInputUid == mStoredUid) return;
-        EXPECT_TRUE(seteuid(mStoredUid) == 0);
-    }
-
-  private:
-    uid_t mInputUid;
-    uid_t mStoredUid;
-};
-
 void clearQueue(int tunFd) {
     char buf[4096];
     int ret;
diff --git a/tests/test_utils.h b/tests/test_utils.h
index de6c221..2564255 100644
--- a/tests/test_utils.h
+++ b/tests/test_utils.h
@@ -21,6 +21,9 @@
 #include <string>
 #include <vector>
 
+#include <gtest/gtest.h>
+#include <unistd.h>
+
 int randomUid();
 
 std::vector<std::string> runCommand(const std::string& command);
@@ -37,3 +40,21 @@
 
 bool ipRouteExists(const char* ipVersion, const char* table,
                    const std::vector<std::string>& ipRouteSubstrings);
+
+// Require root (for seteuid).
+class ScopedUidChange {
+  public:
+    explicit ScopedUidChange(uid_t uid) : mInputUid(uid) {
+        mStoredUid = geteuid();
+        if (mInputUid == mStoredUid) return;
+        EXPECT_TRUE(seteuid(uid) == 0);
+    }
+    ~ScopedUidChange() {
+        if (mInputUid == mStoredUid) return;
+        EXPECT_TRUE(seteuid(mStoredUid) == 0);
+    }
+
+  private:
+    uid_t mInputUid;
+    uid_t mStoredUid;
+};