summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Bookatz <bookatz@google.com> 2023-02-07 04:16:33 +0000
committer Adam Bookatz <bookatz@google.com> 2023-02-07 04:21:55 +0000
commitc80cb2eb9d4831049c3abbb35cfb55752028c589 (patch)
tree0ccea338b061bd18fbdaa023cf7e590c62104f77
parentfd4c8b0282810797b7aa460b7a7dbd199ceeb2c0 (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
-rw-r--r--errorprone/java/com/google/errorprone/bugpatterns/android/ContextUserIdChecker.java2
-rw-r--r--errorprone/tests/java/com/google/errorprone/bugpatterns/android/ContextUserIdCheckerTest.java27
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();
+ }
}