diff options
author | 2023-02-07 04:16:33 +0000 | |
---|---|---|
committer | 2023-02-07 04:21:55 +0000 | |
commit | c80cb2eb9d4831049c3abbb35cfb55752028c589 (patch) | |
tree | 0ccea338b061bd18fbdaa023cf7e590c62104f77 | |
parent | fd4c8b0282810797b7aa460b7a7dbd199ceeb2c0 (diff) |
Stop AndroidFrameworkContextUserId on UserManager
For older APIs, UserManager uses the method getContextUserIfAppropriate() to get the context user (if a newer API level) or the calling user (if an older API level). We had to gate on API level so that we could convert old API usage to the new context-user-based style.
In this cl, we recognize this method as a legit context-user-style method, so that we can stop getting AndroidFrameworkContextUserId lint warnings on UserManager.
Change-Id: I95ee95645314ab9105a48a800de06d9b8c7ecb85
Fixes: 268129776
Test: atest error_prone_android_framework_test
2 files changed, 29 insertions, 0 deletions
diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java index c1a2048fb59d..abef78e999b5 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 1679bb6abf9b..854016f4729a 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(); + } } |