Merge "Fix errorprone suggestions" into main
diff --git a/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java b/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java
index 6675568..ce4067c 100644
--- a/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java
+++ b/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java
@@ -19,6 +19,7 @@
import static android.hardware.camera2.CameraInjectionSession.InjectionStatusCallback.ERROR_INJECTION_UNSUPPORTED;
import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
import android.annotation.UserIdInt;
import android.content.Context;
import android.content.pm.ApplicationInfo;
@@ -146,6 +147,7 @@
*
* @param runningUids uids of the application running on the virtual display
*/
+ @RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
public void blockCameraAccessIfNeeded(Set<Integer> runningUids) {
synchronized (mLock) {
for (int i = 0; i < mAppsToBlockOnVirtualDevice.size(); i++) {
@@ -181,6 +183,7 @@
}
@Override
+ @RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
public void onCameraOpened(@NonNull String cameraId, @NonNull String packageName) {
synchronized (mLock) {
InjectionSessionData data = mPackageToSessionData.get(packageName);
@@ -243,6 +246,7 @@
/**
* Turns on blocking for a particular camera and package.
*/
+ @RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
private void startBlocking(String packageName, String cameraId) {
try {
Slog.d(
diff --git a/services/companion/java/com/android/server/companion/virtual/InputController.java b/services/companion/java/com/android/server/companion/virtual/InputController.java
index 307f7bf..eeaa423 100644
--- a/services/companion/java/com/android/server/companion/virtual/InputController.java
+++ b/services/companion/java/com/android/server/companion/virtual/InputController.java
@@ -16,6 +16,8 @@
package com.android.server.companion.virtual;
+import static android.text.TextUtils.formatSimple;
+
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.StringDef;
@@ -350,7 +352,7 @@
}
private static String createPhys(@PhysType String type) {
- return String.format("virtual%s:%d", type, sNextPhysId.getAndIncrement());
+ return formatSimple("virtual%s:%d", type, sNextPhysId.getAndIncrement());
}
private void setUniqueIdAssociation(int displayId, String phys) {
diff --git a/services/companion/java/com/android/server/companion/virtual/SensorController.java b/services/companion/java/com/android/server/companion/virtual/SensorController.java
index a831401..e9241dd 100644
--- a/services/companion/java/com/android/server/companion/virtual/SensorController.java
+++ b/services/companion/java/com/android/server/companion/virtual/SensorController.java
@@ -323,8 +323,5 @@
SensorCreationException(String message) {
super(message);
}
- SensorCreationException(String message, Exception cause) {
- super(message, cause);
- }
}
}
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
index f23fe2a..b8b42fba 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -25,6 +25,7 @@
import android.annotation.EnforcePermission;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.annotation.StringRes;
import android.annotation.UserIdInt;
import android.app.Activity;
@@ -78,12 +79,14 @@
import android.os.UserManager;
import android.util.ArrayMap;
import android.util.ArraySet;
+import android.util.IntArray;
import android.util.Slog;
import android.util.SparseArray;
import android.view.Display;
import android.view.WindowManager;
import android.widget.Toast;
+
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.BlockedAppStreamingActivity;
@@ -93,7 +96,6 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -460,6 +462,7 @@
}
@Override
+ @RequiresPermission(android.Manifest.permission.CAMERA_INJECT_EXTERNAL_CAMERA)
public void onRunningAppsChanged(ArraySet<Integer> runningUids) {
mCameraAccessController.blockCameraAccessIfNeeded(runningUids);
mRunningAppsChangedCallback.accept(runningUids);
@@ -718,11 +721,9 @@
try {
synchronized (mVirtualDeviceLock) {
mDefaultShowPointerIcon = showPointerIcon;
- for (int i = 0; i < mVirtualDisplays.size(); i++) {
- final int displayId = mVirtualDisplays.keyAt(i);
- mInputController.setShowPointerIcon(mDefaultShowPointerIcon, displayId);
- }
}
+ getDisplayIds().forEach(
+ displayId -> mInputController.setShowPointerIcon(showPointerIcon, displayId));
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -830,6 +831,7 @@
this, gwpc, packageName);
gwpc.setDisplayId(displayId);
+ boolean showPointer;
synchronized (mVirtualDeviceLock) {
if (mVirtualDisplays.contains(displayId)) {
gwpc.unregisterRunningAppsChangedListener(this);
@@ -839,11 +841,12 @@
PowerManager.WakeLock wakeLock = createAndAcquireWakeLockForDisplay(displayId);
mVirtualDisplays.put(displayId, new VirtualDisplayWrapper(callback, gwpc, wakeLock));
+ showPointer = mDefaultShowPointerIcon;
}
final long token = Binder.clearCallingIdentity();
try {
- mInputController.setShowPointerIcon(mDefaultShowPointerIcon, displayId);
+ mInputController.setShowPointerIcon(showPointer, displayId);
mInputController.setPointerAcceleration(1f, displayId);
mInputController.setDisplayEligibilityForPointerCapture(/* isEligible= */ false,
displayId);
@@ -869,6 +872,7 @@
}
}
+ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS)
private void onActivityBlocked(int displayId, ActivityInfo activityInfo) {
Intent intent = BlockedAppStreamingActivity.createIntent(
activityInfo, mAssociationInfo.getDisplayName());
@@ -950,6 +954,7 @@
}
}
+ @SuppressWarnings("AndroidFrameworkRequiresPermission")
private void checkVirtualInputDeviceDisplayIdAssociation(int displayId) {
if (mContext.checkCallingPermission(android.Manifest.permission.INJECT_EVENTS)
== PackageManager.PERMISSION_GRANTED) {
@@ -1031,8 +1036,8 @@
*/
void showToastWhereUidIsRunning(int uid, String text, @Toast.Duration int duration,
Looper looper) {
- ArrayList<Integer> displayIdsForUid = getDisplayIdsWhereUidIsRunning(uid);
- if (displayIdsForUid.isEmpty()) {
+ IntArray displayIdsForUid = getDisplayIdsWhereUidIsRunning(uid);
+ if (displayIdsForUid.size() == 0) {
return;
}
DisplayManager displayManager = mContext.getSystemService(DisplayManager.class);
@@ -1045,8 +1050,8 @@
}
}
- private ArrayList<Integer> getDisplayIdsWhereUidIsRunning(int uid) {
- ArrayList<Integer> displayIdsForUid = new ArrayList<>();
+ private IntArray getDisplayIdsWhereUidIsRunning(int uid) {
+ IntArray displayIdsForUid = new IntArray();
synchronized (mVirtualDeviceLock) {
for (int i = 0; i < mVirtualDisplays.size(); i++) {
if (mVirtualDisplays.valueAt(i).getWindowPolicyController().containsUid(uid)) {
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
index a135878..4da9298 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -23,6 +23,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.app.ActivityOptions;
import android.companion.AssociationInfo;
@@ -96,6 +97,7 @@
private final CompanionDeviceManager.OnAssociationsChangedListener mCdmAssociationListener =
new CompanionDeviceManager.OnAssociationsChangedListener() {
@Override
+ @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
public void onAssociationsChanged(@NonNull List<AssociationInfo> associations) {
syncVirtualDevicesToCdmAssociations(associations);
}
@@ -241,6 +243,7 @@
return true;
}
+ @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE)
private void syncVirtualDevicesToCdmAssociations(List<AssociationInfo> associations) {
Set<VirtualDeviceImpl> virtualDevicesToRemove = new HashSet<>();
synchronized (mVirtualDeviceManagerLock) {
@@ -266,6 +269,7 @@
}
}
+ @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES)
private void registerCdmAssociationListener() {
final CompanionDeviceManager cdm = getContext().getSystemService(
CompanionDeviceManager.class);
@@ -273,6 +277,7 @@
mCdmAssociationListener);
}
+ @RequiresPermission(android.Manifest.permission.MANAGE_COMPANION_DEVICES)
private void unregisterCdmAssociationListener() {
final CompanionDeviceManager cdm = getContext().getSystemService(
CompanionDeviceManager.class);