diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java index c1a2048fb59dd..abef78e999b57 100644 --- a/errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java +++ b/errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java @@ -68,6 +68,8 @@ public final class ContextUserIdChecker extends BugChecker implements MethodInvo .named("myUserId"), instanceMethod().onExactClass("android.content.pm.ShortcutManager") .named("injectMyUserId"), + instanceMethod().onExactClass("android.os.UserManager") + .named("getContextUserIfAppropriate"), instanceMethod().onDescendantOf("android.content.Context") .named("getUserId"))); diff --git a/errorprone/tests/java/com/google/errorprone/bugpatterns/android/ContextUserIdCheckerTest.java b/errorprone/tests/java/com/google/errorprone/bugpatterns/android/ContextUserIdCheckerTest.java index 1679bb6abf9b1..854016f4729a2 100644 --- a/errorprone/tests/java/com/google/errorprone/bugpatterns/android/ContextUserIdCheckerTest.java +++ b/errorprone/tests/java/com/google/errorprone/bugpatterns/android/ContextUserIdCheckerTest.java @@ -148,4 +148,31 @@ public class ContextUserIdCheckerTest { "}") .doTest(); } + + @Test + public void testUserManager() { + compilationHelper + .addSourceFile("/android/annotation/SystemService.java") + .addSourceFile("/android/content/Context.java") + .addSourceFile("/android/content/Intent.java") + .addSourceFile("/android/foo/IFooService.java") + .addSourceFile("/android/os/IInterface.java") + .addSourceFile("/android/os/UserHandle.java") + .addSourceFile("/android/os/RemoteException.java") + .addSourceLines("UserManager.java", + "package android.os;", + "import android.annotation.SystemService;", + "import android.content.Context;", + "import android.foo.IFooService;", + "import android.os.UserHandle;", + "import android.os.RemoteException;", + "@SystemService(\"user\") public class UserManager {", + " IFooService mService;", + " int getContextUserIfAppropriate() { return 0; }", + " void bar() throws RemoteException {", + " mService.baz(null, getContextUserIfAppropriate());", + " }", + "}") + .doTest(); + } }