Merge "Add semantics for RestrictedSwitchPreference"
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index e1146b9..b32b3b6 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -2958,6 +2958,7 @@
method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void close();
method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.companion.virtual.audio.VirtualAudioDevice createVirtualAudioDevice(@NonNull android.hardware.display.VirtualDisplay, @Nullable java.util.concurrent.Executor, @Nullable android.companion.virtual.audio.VirtualAudioDevice.AudioConfigurationChangeCallback);
method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int, @Nullable android.view.Surface, int, @Nullable java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback);
+ method @Nullable public android.hardware.display.VirtualDisplay createVirtualDisplay(@IntRange(from=1) int, @IntRange(from=1) int, @IntRange(from=1) int, @NonNull java.util.List<java.lang.String>, @Nullable android.view.Surface, int, @Nullable java.util.concurrent.Executor, @Nullable android.hardware.display.VirtualDisplay.Callback);
method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualDpad createVirtualDpad(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int);
method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualKeyboard createVirtualKeyboard(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int);
method @NonNull @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public android.hardware.input.VirtualMouse createVirtualMouse(@NonNull android.hardware.display.VirtualDisplay, @NonNull String, int, int);
diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java
index c14bb1b..9154701 100644
--- a/core/java/android/companion/virtual/VirtualDeviceManager.java
+++ b/core/java/android/companion/virtual/VirtualDeviceManager.java
@@ -350,14 +350,72 @@
@VirtualDisplayFlag int flags,
@Nullable @CallbackExecutor Executor executor,
@Nullable VirtualDisplay.Callback callback) {
- // TODO(b/205343547): Handle display groups properly instead of creating a new display
- // group for every new virtual display created using this API.
- // belongs to the same display group.
VirtualDisplayConfig config = new VirtualDisplayConfig.Builder(
getVirtualDisplayName(), width, height, densityDpi)
.setSurface(surface)
.setFlags(getVirtualDisplayFlags(flags))
.build();
+ return createVirtualDisplayInternal(config, executor, callback);
+ }
+
+ /**
+ * Creates a virtual display for this virtual device. All displays created on the same
+ * device belongs to the same display group.
+ *
+ * @param width The width of the virtual display in pixels, must be greater than 0.
+ * @param height The height of the virtual display in pixels, must be greater than 0.
+ * @param densityDpi The density of the virtual display in dpi, must be greater than 0.
+ * @param displayCategories The categories of the virtual display, indicating the type of
+ * activities allowed to run on the display. Activities can declare their type using
+ * {@link android.content.pm.ActivityInfo#targetDisplayCategory}.
+ * @param surface The surface to which the content of the virtual display should
+ * be rendered, or null if there is none initially. The surface can also be set later using
+ * {@link VirtualDisplay#setSurface(Surface)}.
+ * @param flags A combination of virtual display flags accepted by
+ * {@link DisplayManager#createVirtualDisplay}. In addition, the following flags are
+ * automatically set for all virtual devices:
+ * {@link DisplayManager#VIRTUAL_DISPLAY_FLAG_PUBLIC VIRTUAL_DISPLAY_FLAG_PUBLIC} and
+ * {@link DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY
+ * VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY}.
+ * @param executor The executor on which {@code callback} will be invoked. This is ignored
+ * if {@code callback} is {@code null}. If {@code callback} is specified, this executor must
+ * not be null.
+ * @param callback Callback to call when the state of the {@link VirtualDisplay} changes
+ * @return The newly created virtual display, or {@code null} if the application could
+ * not create the virtual display.
+ *
+ * @see DisplayManager#createVirtualDisplay
+ */
+ @Nullable
+ public VirtualDisplay createVirtualDisplay(
+ @IntRange(from = 1) int width,
+ @IntRange(from = 1) int height,
+ @IntRange(from = 1) int densityDpi,
+ @NonNull List<String> displayCategories,
+ @Nullable Surface surface,
+ @VirtualDisplayFlag int flags,
+ @Nullable @CallbackExecutor Executor executor,
+ @Nullable VirtualDisplay.Callback callback) {
+ VirtualDisplayConfig config = new VirtualDisplayConfig.Builder(
+ getVirtualDisplayName(), width, height, densityDpi)
+ .setDisplayCategories(displayCategories)
+ .setSurface(surface)
+ .setFlags(getVirtualDisplayFlags(flags))
+ .build();
+ return createVirtualDisplayInternal(config, executor, callback);
+ }
+
+ /**
+ * @hide
+ */
+ @Nullable
+ private VirtualDisplay createVirtualDisplayInternal(
+ @NonNull VirtualDisplayConfig config,
+ @Nullable @CallbackExecutor Executor executor,
+ @Nullable VirtualDisplay.Callback callback) {
+ // TODO(b/205343547): Handle display groups properly instead of creating a new display
+ // group for every new virtual display created using this API.
+ // belongs to the same display group.
IVirtualDisplayCallback callbackWrapper =
new DisplayManagerGlobal.VirtualDisplayCallback(callback, executor);
final int displayId;
diff --git a/core/java/android/hardware/display/VirtualDisplayConfig.java b/core/java/android/hardware/display/VirtualDisplayConfig.java
index b76b98d..891ba36 100644
--- a/core/java/android/hardware/display/VirtualDisplayConfig.java
+++ b/core/java/android/hardware/display/VirtualDisplayConfig.java
@@ -30,6 +30,9 @@
import com.android.internal.util.DataClass;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Holds configuration used to create {@link VirtualDisplay} instances. See
* {@link MediaProjection#createVirtualDisplay(VirtualDisplayConfig, VirtualDisplay.Callback, Handler)}.
@@ -99,6 +102,13 @@
*/
private boolean mWindowManagerMirroring = false;
+ /**
+ * The display categories. If set, only corresponding activities from the same category can be
+ * shown on the display.
+ */
+ @DataClass.PluralOf("displayCategory")
+ @NonNull private List<String> mDisplayCategories = new ArrayList<>();
+
// Code below generated by codegen v1.0.23.
@@ -124,7 +134,8 @@
@Nullable Surface surface,
@Nullable String uniqueId,
int displayIdToMirror,
- boolean windowManagerMirroring) {
+ boolean windowManagerMirroring,
+ @NonNull List<String> displayCategories) {
this.mName = name;
com.android.internal.util.AnnotationValidations.validate(
NonNull.class, null, mName);
@@ -147,6 +158,9 @@
this.mUniqueId = uniqueId;
this.mDisplayIdToMirror = displayIdToMirror;
this.mWindowManagerMirroring = windowManagerMirroring;
+ this.mDisplayCategories = displayCategories;
+ com.android.internal.util.AnnotationValidations.validate(
+ NonNull.class, null, mDisplayCategories);
// onConstructed(); // You can define this method to get a callback
}
@@ -233,6 +247,15 @@
return mWindowManagerMirroring;
}
+ /**
+ * The display categories. If set, only corresponding activities from the same category can be
+ * shown on the display.
+ */
+ @DataClass.Generated.Member
+ public @NonNull List<String> getDisplayCategories() {
+ return mDisplayCategories;
+ }
+
@Override
@DataClass.Generated.Member
public void writeToParcel(@NonNull Parcel dest, int flags) {
@@ -252,6 +275,7 @@
if (mSurface != null) dest.writeTypedObject(mSurface, flags);
if (mUniqueId != null) dest.writeString(mUniqueId);
dest.writeInt(mDisplayIdToMirror);
+ dest.writeStringList(mDisplayCategories);
}
@Override
@@ -275,6 +299,8 @@
Surface surface = (flg & 0x20) == 0 ? null : (Surface) in.readTypedObject(Surface.CREATOR);
String uniqueId = (flg & 0x40) == 0 ? null : in.readString();
int displayIdToMirror = in.readInt();
+ List<String> displayCategories = new ArrayList<>();
+ in.readStringList(displayCategories);
this.mName = name;
com.android.internal.util.AnnotationValidations.validate(
@@ -298,6 +324,9 @@
this.mUniqueId = uniqueId;
this.mDisplayIdToMirror = displayIdToMirror;
this.mWindowManagerMirroring = windowManagerMirroring;
+ this.mDisplayCategories = displayCategories;
+ com.android.internal.util.AnnotationValidations.validate(
+ NonNull.class, null, mDisplayCategories);
// onConstructed(); // You can define this method to get a callback
}
@@ -332,6 +361,7 @@
private @Nullable String mUniqueId;
private int mDisplayIdToMirror;
private boolean mWindowManagerMirroring;
+ private @NonNull List<String> mDisplayCategories;
private long mBuilderFieldsSet = 0L;
@@ -478,10 +508,30 @@
return this;
}
+ /**
+ * The display categories. If set, only corresponding activities from the same category can be
+ * shown on the display.
+ */
+ @DataClass.Generated.Member
+ public @NonNull Builder setDisplayCategories(@NonNull List<String> value) {
+ checkNotUsed();
+ mBuilderFieldsSet |= 0x200;
+ mDisplayCategories = value;
+ return this;
+ }
+
+ /** @see #setDisplayCategories */
+ @DataClass.Generated.Member
+ public @NonNull Builder addDisplayCategory(@NonNull String value) {
+ if (mDisplayCategories == null) setDisplayCategories(new ArrayList<>());
+ mDisplayCategories.add(value);
+ return this;
+ }
+
/** Builds the instance. This builder should not be touched after calling this! */
public @NonNull VirtualDisplayConfig build() {
checkNotUsed();
- mBuilderFieldsSet |= 0x200; // Mark builder used
+ mBuilderFieldsSet |= 0x400; // Mark builder used
if ((mBuilderFieldsSet & 0x10) == 0) {
mFlags = 0;
@@ -498,6 +548,9 @@
if ((mBuilderFieldsSet & 0x100) == 0) {
mWindowManagerMirroring = false;
}
+ if ((mBuilderFieldsSet & 0x200) == 0) {
+ mDisplayCategories = new ArrayList<>();
+ }
VirtualDisplayConfig o = new VirtualDisplayConfig(
mName,
mWidth,
@@ -507,12 +560,13 @@
mSurface,
mUniqueId,
mDisplayIdToMirror,
- mWindowManagerMirroring);
+ mWindowManagerMirroring,
+ mDisplayCategories);
return o;
}
private void checkNotUsed() {
- if ((mBuilderFieldsSet & 0x200) != 0) {
+ if ((mBuilderFieldsSet & 0x400) != 0) {
throw new IllegalStateException(
"This Builder should not be reused. Use a new Builder instance instead");
}
@@ -520,10 +574,10 @@
}
@DataClass.Generated(
- time = 1646227247934L,
+ time = 1668534501320L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/hardware/display/VirtualDisplayConfig.java",
- inputSignatures = "private @android.annotation.NonNull java.lang.String mName\nprivate @android.annotation.IntRange int mWidth\nprivate @android.annotation.IntRange int mHeight\nprivate @android.annotation.IntRange int mDensityDpi\nprivate @android.hardware.display.DisplayManager.VirtualDisplayFlag int mFlags\nprivate @android.annotation.Nullable android.view.Surface mSurface\nprivate @android.annotation.Nullable java.lang.String mUniqueId\nprivate int mDisplayIdToMirror\nprivate boolean mWindowManagerMirroring\nclass VirtualDisplayConfig extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genAidl=true, genBuilder=true)")
+ inputSignatures = "private @android.annotation.NonNull java.lang.String mName\nprivate @android.annotation.IntRange int mWidth\nprivate @android.annotation.IntRange int mHeight\nprivate @android.annotation.IntRange int mDensityDpi\nprivate @android.hardware.display.DisplayManager.VirtualDisplayFlag int mFlags\nprivate @android.annotation.Nullable android.view.Surface mSurface\nprivate @android.annotation.Nullable java.lang.String mUniqueId\nprivate int mDisplayIdToMirror\nprivate boolean mWindowManagerMirroring\nprivate @com.android.internal.util.DataClass.PluralOf(\"displayCategory\") @android.annotation.NonNull java.util.List<java.lang.String> mDisplayCategories\nclass VirtualDisplayConfig extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genAidl=true, genBuilder=true)")
@Deprecated
private void __metadata() {}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
index e338221..6af81f1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/TransitionAnimationHelper.java
@@ -322,6 +322,7 @@
.setPixelFormat(PixelFormat.RGBA_8888)
.setChildrenOnly(true)
.setAllowProtected(true)
+ .setCaptureSecureLayers(true)
.build();
final ScreenCapture.ScreenshotHardwareBuffer edgeBuffer =
ScreenCapture.captureLayers(captureArgs);
diff --git a/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java b/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java
index ce7854d..2814196 100644
--- a/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java
+++ b/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java
@@ -130,6 +130,7 @@
@Nullable
private final @AssociationRequest.DeviceProfile String mDeviceProfile;
@Nullable private final SecureWindowCallback mSecureWindowCallback;
+ @Nullable private final List<String> mDisplayCategories;
/**
* Creates a window policy controller that is generic to the different use cases of virtual
@@ -168,7 +169,8 @@
@NonNull PipBlockedCallback pipBlockedCallback,
@NonNull ActivityBlockedCallback activityBlockedCallback,
@NonNull SecureWindowCallback secureWindowCallback,
- @AssociationRequest.DeviceProfile String deviceProfile) {
+ @AssociationRequest.DeviceProfile String deviceProfile,
+ @NonNull List<String> displayCategories) {
super();
mAllowedUsers = allowedUsers;
mAllowedCrossTaskNavigations = new ArraySet<>(allowedCrossTaskNavigations);
@@ -182,6 +184,7 @@
mDeviceProfile = deviceProfile;
mPipBlockedCallback = pipBlockedCallback;
mSecureWindowCallback = secureWindowCallback;
+ mDisplayCategories = displayCategories;
}
/**
@@ -319,7 +322,7 @@
if (mDeviceProfile == null) {
return true;
}
- // TODO(b/234075973) : Remove this once proper API is ready.
+ // TODO(b/234075973) : Remove this once proper API is ready.
switch (mDeviceProfile) {
case DEVICE_PROFILE_AUTOMOTIVE_PROJECTION:
return false;
@@ -350,6 +353,15 @@
}
}
+ private boolean activityMatchesDisplayCategory(ActivityInfo activityInfo) {
+ if (mDisplayCategories.isEmpty()) {
+ return activityInfo.targetDisplayCategory == null;
+ }
+ return activityInfo.targetDisplayCategory != null
+ && mDisplayCategories.contains(activityInfo.targetDisplayCategory);
+
+ }
+
private boolean canContainActivity(ActivityInfo activityInfo, int windowFlags,
int systemWindowFlags) {
if ((activityInfo.flags & FLAG_CAN_DISPLAY_ON_REMOTE_DEVICES) == 0) {
@@ -357,9 +369,17 @@
}
ComponentName activityComponent = activityInfo.getComponentName();
if (BLOCKED_APP_STREAMING_COMPONENT.equals(activityComponent)) {
- // The error dialog alerting users that streaming is blocked is always allowed.
+ // The error dialog alerting users that streaming is blocked is always allowed. Need to
+ // run before the clauses below to ensure error dialog always shows up.
return true;
}
+ if (!activityMatchesDisplayCategory(activityInfo)) {
+ Slog.d(TAG, String.format(
+ "The activity's target display category: %s is not found on virtual display"
+ + " with the following allowed display categories: %s",
+ activityInfo.targetDisplayCategory, mDisplayCategories.toString()));
+ return false;
+ }
final UserHandle activityUser =
UserHandle.getUserHandleForUid(activityInfo.applicationInfo.uid);
if (!mAllowedUsers.contains(activityUser)) {
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 0def25d..7e82918 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -74,6 +74,7 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
@@ -628,7 +629,8 @@
mInputController.dump(fout);
}
- GenericWindowPolicyController createWindowPolicyController() {
+ GenericWindowPolicyController createWindowPolicyController(
+ @NonNull List<String> displayCategories) {
synchronized (mVirtualDeviceLock) {
final GenericWindowPolicyController gwpc =
new GenericWindowPolicyController(FLAG_SECURE,
@@ -643,7 +645,8 @@
this::onEnteringPipBlocked,
this::onActivityBlocked,
this::onSecureWindowShown,
- mAssociationInfo.getDeviceProfile());
+ mAssociationInfo.getDeviceProfile(),
+ displayCategories);
gwpc.registerRunningAppsChangedListener(/* listener= */ this);
return gwpc;
}
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 a8797a0..fe26700 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -332,7 +332,8 @@
GenericWindowPolicyController gwpc;
final long token = Binder.clearCallingIdentity();
try {
- gwpc = virtualDeviceImpl.createWindowPolicyController();
+ gwpc = virtualDeviceImpl.createWindowPolicyController(
+ virtualDisplayConfig.getDisplayCategories());
} finally {
Binder.restoreCallingIdentity(token);
}
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecController.java b/services/core/java/com/android/server/hdmi/HdmiCecController.java
index 5c1b33c..50edd0e 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecController.java
@@ -636,7 +636,7 @@
void onReceiveCommand(HdmiCecMessage message) {
assertRunOnServiceThread();
if (((ACTION_ON_RECEIVE_MSG & CEC_DISABLED_IGNORE) == 0)
- && !mService.isControlEnabled()
+ && !mService.isCecControlEnabled()
&& !HdmiCecMessage.isCecTransportMessage(message.getOpcode())) {
if ((ACTION_ON_RECEIVE_MSG & CEC_DISABLED_LOG_WARNING) != 0) {
HdmiLogger.warning("Message " + message + " received when cec disabled");
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
index 2622cef..4542c39 100755
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
@@ -698,7 +698,7 @@
protected void reportFeatures() {
List<Integer> localDeviceTypes = new ArrayList<>();
- for (HdmiCecLocalDevice localDevice : mService.getAllLocalDevices()) {
+ for (HdmiCecLocalDevice localDevice : mService.getAllCecLocalDevices()) {
localDeviceTypes.add(localDevice.mDeviceType);
}
@@ -728,7 +728,7 @@
protected int handleStandby(HdmiCecMessage message) {
assertRunOnServiceThread();
// Seq #12
- if (mService.isControlEnabled()
+ if (mService.isCecControlEnabled()
&& !mService.isProhibitMode()
&& mService.isPowerOnOrTransient()) {
mService.standby();
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 32ff5e22..728ed44 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -1042,7 +1042,7 @@
invokeCallback(callback, HdmiControlManager.RESULT_SUCCESS);
return;
}
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
setRoutingPort(portId);
setLocalActivePort(portId);
invokeCallback(callback, HdmiControlManager.RESULT_INCORRECT_MODE);
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
index e6c2e7c..3ec3f94 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java
@@ -137,7 +137,7 @@
// Since we removed all devices when it starts and device discovery action
// does not poll local devices, we should put device info of local device
// manually here.
- for (HdmiCecLocalDevice device : mService.getAllLocalDevices()) {
+ for (HdmiCecLocalDevice device : mService.getAllCecLocalDevices()) {
mService.getHdmiCecNetwork().addCecDevice(device.getDeviceInfo());
}
@@ -190,7 +190,7 @@
if (isAlreadyActiveSource(targetDevice, targetAddress, callback)) {
return;
}
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
setActiveSource(targetDevice, "HdmiCecLocalDevicePlayback#deviceSelect()");
invokeCallback(callback, HdmiControlManager.RESULT_INCORRECT_MODE);
return;
@@ -239,7 +239,7 @@
@ServiceThreadOnly
protected void onStandby(boolean initiatedByCec, int standbyAction) {
assertRunOnServiceThread();
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
return;
}
boolean wasActiveSource = isActiveSource();
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 8a22ab9..96e7b03 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -259,7 +259,7 @@
invokeCallback(callback, HdmiControlManager.RESULT_SUCCESS);
return;
}
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
setActiveSource(targetDevice, "HdmiCecLocalDeviceTv#deviceSelect()");
invokeCallback(callback, HdmiControlManager.RESULT_INCORRECT_MODE);
return;
@@ -272,7 +272,7 @@
private void handleSelectInternalSource() {
assertRunOnServiceThread();
// Seq #18
- if (mService.isControlEnabled()
+ if (mService.isCecControlEnabled()
&& getActiveSource().logicalAddress != getDeviceInfo().getLogicalAddress()) {
updateActiveSource(
getDeviceInfo().getLogicalAddress(),
@@ -371,7 +371,7 @@
return;
}
getActiveSource().invalidate();
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
setActivePortId(portId);
invokeCallback(callback, HdmiControlManager.RESULT_INCORRECT_MODE);
return;
@@ -694,7 +694,7 @@
// Since we removed all devices when it starts and
// device discovery action does not poll local devices,
// we should put device info of local device manually here
- for (HdmiCecLocalDevice device : mService.getAllLocalDevices()) {
+ for (HdmiCecLocalDevice device : mService.getAllCecLocalDevices()) {
mService.getHdmiCecNetwork().addCecDevice(device.getDeviceInfo());
}
@@ -742,7 +742,7 @@
// Seq #32
void changeSystemAudioMode(boolean enabled, IHdmiControlCallback callback) {
assertRunOnServiceThread();
- if (!mService.isControlEnabled() || hasAction(DeviceDiscoveryAction.class)) {
+ if (!mService.isCecControlEnabled() || hasAction(DeviceDiscoveryAction.class)) {
setSystemAudioMode(false);
invokeCallback(callback, HdmiControlManager.RESULT_INCORRECT_MODE);
return;
@@ -1181,7 +1181,7 @@
}
private boolean isMessageForSystemAudio(HdmiCecMessage message) {
- return mService.isControlEnabled()
+ return mService.isCecControlEnabled()
&& message.getSource() == Constants.ADDR_AUDIO_SYSTEM
&& (message.getDestination() == Constants.ADDR_TV
|| message.getDestination() == Constants.ADDR_BROADCAST)
@@ -1330,7 +1330,7 @@
removeAction(SystemAudioAutoInitiationAction.class);
removeAction(VolumeControlAction.class);
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
setSystemAudioMode(false);
}
}
@@ -1376,7 +1376,7 @@
protected void onStandby(boolean initiatedByCec, int standbyAction) {
assertRunOnServiceThread();
// Seq #11
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
return;
}
boolean sendStandbyOnSleep =
@@ -1415,7 +1415,7 @@
@Constants.HandleMessageResult
int startOneTouchRecord(int recorderAddress, byte[] recordSource) {
assertRunOnServiceThread();
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED);
return Constants.ABORT_NOT_IN_CORRECT_MODE;
@@ -1444,7 +1444,7 @@
@ServiceThreadOnly
void stopOneTouchRecord(int recorderAddress) {
assertRunOnServiceThread();
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
Slog.w(TAG, "Can not stop one touch record. CEC control is disabled.");
announceOneTouchRecordResult(recorderAddress, ONE_TOUCH_RECORD_CEC_DISABLED);
return;
@@ -1478,7 +1478,7 @@
@ServiceThreadOnly
void startTimerRecording(int recorderAddress, int sourceType, byte[] recordSource) {
assertRunOnServiceThread();
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
announceTimerRecordingResult(recorderAddress,
TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED);
@@ -1514,7 +1514,7 @@
@ServiceThreadOnly
void clearTimerRecording(int recorderAddress, int sourceType, byte[] recordSource) {
assertRunOnServiceThread();
- if (!mService.isControlEnabled()) {
+ if (!mService.isCecControlEnabled()) {
Slog.w(TAG, "Can not start one touch record. CEC control is disabled.");
announceClearTimerRecordingResult(recorderAddress, CLEAR_TIMER_STATUS_CEC_DISABLE);
return;
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecPowerStatusController.java b/services/core/java/com/android/server/hdmi/HdmiCecPowerStatusController.java
index 552ff37..f819f00 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecPowerStatusController.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecPowerStatusController.java
@@ -75,7 +75,7 @@
}
private void sendReportPowerStatus(int powerStatus) {
- for (HdmiCecLocalDevice localDevice : mHdmiControlService.getAllLocalDevices()) {
+ for (HdmiCecLocalDevice localDevice : mHdmiControlService.getAllCecLocalDevices()) {
mHdmiControlService.sendCecCommand(
HdmiCecMessageBuilder.buildReportPowerStatus(
localDevice.getDeviceInfo().getLogicalAddress(),
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index 1ae1b5b..3b06786 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -336,8 +336,8 @@
// Used to synchronize the access to the service.
private final Object mLock = new Object();
- // Type of logical devices hosted in the system. Stored in the unmodifiable list.
- private final List<Integer> mLocalDevices;
+ // Type of CEC logical devices hosted in the system. Stored in the unmodifiable list.
+ private final List<Integer> mCecLocalDevices;
// List of records for HDMI control status change listener for death monitoring.
@GuardedBy("mLock")
@@ -496,7 +496,7 @@
@VisibleForTesting HdmiControlService(Context context, List<Integer> deviceTypes,
AudioDeviceVolumeManagerWrapperInterface audioDeviceVolumeManager) {
super(context);
- mLocalDevices = deviceTypes;
+ mCecLocalDevices = deviceTypes;
mSettingsObserver = new SettingsObserver(mHandler);
mHdmiCecConfig = new HdmiCecConfig(context);
mAudioDeviceVolumeManager = audioDeviceVolumeManager;
@@ -504,7 +504,7 @@
public HdmiControlService(Context context) {
super(context);
- mLocalDevices = readDeviceTypes();
+ mCecLocalDevices = readDeviceTypes();
mSettingsObserver = new SettingsObserver(mHandler);
mHdmiCecConfig = new HdmiCecConfig(context);
}
@@ -666,7 +666,7 @@
public void onChange(String setting) {
@HdmiControlManager.HdmiCecControl int enabled = mHdmiCecConfig.getIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED);
- setControlEnabled(enabled);
+ setCecEnabled(enabled);
}
}, mServiceThreadExecutor);
mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
@@ -747,7 +747,7 @@
mPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON);
// Start all actions that were queued because the device was in standby
if (mAddressAllocated) {
- for (HdmiCecLocalDevice localDevice : getAllLocalDevices()) {
+ for (HdmiCecLocalDevice localDevice : getAllCecLocalDevices()) {
localDevice.startQueuedActions();
}
}
@@ -866,7 +866,7 @@
break;
case INITIATED_BY_SCREEN_ON:
reason = HdmiControlManager.CONTROL_STATE_CHANGED_REASON_WAKEUP;
- final List<HdmiCecLocalDevice> devices = getAllLocalDevices();
+ final List<HdmiCecLocalDevice> devices = getAllCecLocalDevices();
for (HdmiCecLocalDevice device : devices) {
device.onInitializeCecComplete(initiatedBy);
}
@@ -990,15 +990,15 @@
mCecController.enableSystemCecControl(true);
mCecController.setLanguage(mMenuLanguage);
- initializeLocalDevices(initiatedBy);
+ initializeCecLocalDevices(initiatedBy);
}
@ServiceThreadOnly
- private void initializeLocalDevices(final int initiatedBy) {
+ private void initializeCecLocalDevices(final int initiatedBy) {
assertRunOnServiceThread();
// A container for [Device type, Local device info].
ArrayList<HdmiCecLocalDevice> localDevices = new ArrayList<>();
- for (int type : mLocalDevices) {
+ for (int type : mCecLocalDevices) {
HdmiCecLocalDevice localDevice = mHdmiCecNetwork.getLocalDevice(type);
if (localDevice == null) {
localDevice = HdmiCecLocalDevice.create(this, type);
@@ -1008,7 +1008,7 @@
}
// It's now safe to flush existing local devices from mCecController since they were
// already moved to 'localDevices'.
- clearLocalDevices();
+ clearCecLocalDevices();
allocateLogicalAddress(localDevices, initiatedBy);
}
@@ -1331,7 +1331,7 @@
* Returns whether the source address of a message is a local logical address.
*/
private boolean sourceAddressIsLocal(HdmiCecMessage message) {
- for (HdmiCecLocalDevice device : getAllLocalDevices()) {
+ for (HdmiCecLocalDevice device : getAllCecLocalDevices()) {
if (message.getSource() == device.getDeviceInfo().getLogicalAddress()
&& message.getSource() != Constants.ADDR_UNREGISTERED) {
HdmiLogger.warning(
@@ -1413,7 +1413,7 @@
if (connected && !isTvDevice()
&& getPortInfo(portId).getType() == HdmiPortInfo.PORT_OUTPUT) {
ArrayList<HdmiCecLocalDevice> localDevices = new ArrayList<>();
- for (int type : mLocalDevices) {
+ for (int type : mCecLocalDevices) {
HdmiCecLocalDevice localDevice = mHdmiCecNetwork.getLocalDevice(type);
if (localDevice == null) {
localDevice = HdmiCecLocalDevice.create(this, type);
@@ -1461,7 +1461,7 @@
return strategy | iterationStrategy;
}
- List<HdmiCecLocalDevice> getAllLocalDevices() {
+ List<HdmiCecLocalDevice> getAllCecLocalDevices() {
assertRunOnServiceThread();
return mHdmiCecNetwork.getLocalDeviceList();
}
@@ -1484,7 +1484,7 @@
if (physicalAddress == getPhysicalAddress()) {
return;
}
- for (HdmiCecLocalDevice device : getAllLocalDevices()) {
+ for (HdmiCecLocalDevice device : getAllCecLocalDevices()) {
if (device.getDeviceInfo().getLogicalAddress() == logicalAddress) {
HdmiLogger.debug("allocate logical address for " + device.getDeviceInfo());
ArrayList<HdmiCecLocalDevice> localDevices = new ArrayList<>();
@@ -1555,7 +1555,7 @@
// Set the display name in HdmiDeviceInfo of the current devices to content provided by
// Global.DEVICE_NAME. Only set and broadcast if the new name is different.
private void setDisplayName(String newDisplayName) {
- for (HdmiCecLocalDevice device : getAllLocalDevices()) {
+ for (HdmiCecLocalDevice device : getAllCecLocalDevices()) {
HdmiDeviceInfo deviceInfo = device.getDeviceInfo();
if (deviceInfo.getDisplayName().equals(newDisplayName)) {
continue;
@@ -1816,10 +1816,10 @@
@Override
public int[] getSupportedTypes() {
initBinderCall();
- // mLocalDevices is an unmodifiable list - no lock necesary.
- int[] localDevices = new int[mLocalDevices.size()];
+ // mCecLocalDevices is an unmodifiable list - no lock necessary.
+ int[] localDevices = new int[mCecLocalDevices.size()];
for (int i = 0; i < localDevices.length; ++i) {
- localDevices[i] = mLocalDevices.get(i);
+ localDevices[i] = mCecLocalDevices.get(i);
}
return localDevices;
}
@@ -2379,7 +2379,7 @@
runOnServiceThread(new Runnable() {
@Override
public void run() {
- if (!isControlEnabled()) {
+ if (!isCecControlEnabled()) {
Slog.w(TAG, "Hdmi control is disabled.");
return ;
}
@@ -3172,15 +3172,15 @@
}
boolean isTvDevice() {
- return mLocalDevices.contains(HdmiDeviceInfo.DEVICE_TV);
+ return mCecLocalDevices.contains(HdmiDeviceInfo.DEVICE_TV);
}
boolean isAudioSystemDevice() {
- return mLocalDevices.contains(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
+ return mCecLocalDevices.contains(HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM);
}
boolean isPlaybackDevice() {
- return mLocalDevices.contains(HdmiDeviceInfo.DEVICE_PLAYBACK);
+ return mCecLocalDevices.contains(HdmiDeviceInfo.DEVICE_PLAYBACK);
}
boolean isSwitchDevice() {
@@ -3217,7 +3217,7 @@
return mAudioDeviceVolumeManager;
}
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
synchronized (mLock) {
return mHdmiControlEnabled == HdmiControlManager.HDMI_CEC_CONTROL_ENABLED;
}
@@ -3329,7 +3329,7 @@
invokeVendorCommandListenersOnControlStateChanged(false,
HdmiControlManager.CONTROL_STATE_CHANGED_REASON_STANDBY);
- final List<HdmiCecLocalDevice> devices = getAllLocalDevices();
+ final List<HdmiCecLocalDevice> devices = getAllCecLocalDevices();
if (!isStandbyMessageReceived() && !canGoToStandby()) {
mPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_STANDBY);
@@ -3339,7 +3339,7 @@
return;
}
- disableDevices(new PendingActionClearedCallback() {
+ disableCecLocalDevices(new PendingActionClearedCallback() {
@Override
public void onCleared(HdmiCecLocalDevice device) {
Slog.v(TAG, "On standby-action cleared:" + device.mDeviceType);
@@ -3387,7 +3387,7 @@
return mMenuLanguage;
}
- private void disableDevices(PendingActionClearedCallback callback) {
+ private void disableCecLocalDevices(PendingActionClearedCallback callback) {
if (mCecController != null) {
for (HdmiCecLocalDevice device : mHdmiCecNetwork.getLocalDeviceList()) {
device.disableDevice(mStandbyMessageReceived, callback);
@@ -3397,7 +3397,7 @@
}
@ServiceThreadOnly
- private void clearLocalDevices() {
+ private void clearCecLocalDevices() {
assertRunOnServiceThread();
if (mCecController == null) {
return;
@@ -3573,7 +3573,7 @@
}
@ServiceThreadOnly
- void setControlEnabled(@HdmiControlManager.HdmiCecControl int enabled) {
+ void setCecEnabled(@HdmiControlManager.HdmiCecControl int enabled) {
assertRunOnServiceThread();
synchronized (mLock) {
@@ -3581,7 +3581,7 @@
}
if (enabled == HDMI_CEC_CONTROL_ENABLED) {
- enableHdmiControlService();
+ onEnableCec();
setHdmiCecVolumeControlEnabledInternal(getHdmiCecConfig().getIntValue(
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE));
return;
@@ -3596,7 +3596,7 @@
runOnServiceThread(new Runnable() {
@Override
public void run() {
- disableHdmiControlService();
+ onDisableCec();
}
});
announceHdmiControlStatusChange(enabled);
@@ -3605,7 +3605,7 @@
}
@ServiceThreadOnly
- private void enableHdmiControlService() {
+ private void onEnableCec() {
mCecController.enableCec(true);
mCecController.enableSystemCecControl(true);
mMhlController.setOption(OPTION_MHL_ENABLE, ENABLED);
@@ -3614,8 +3614,8 @@
}
@ServiceThreadOnly
- private void disableHdmiControlService() {
- disableDevices(
+ private void onDisableCec() {
+ disableCecLocalDevices(
new PendingActionClearedCallback() {
@Override
public void onCleared(HdmiCecLocalDevice device) {
@@ -3627,7 +3627,7 @@
mCecController.enableCec(false);
mCecController.enableSystemCecControl(false);
mMhlController.setOption(OPTION_MHL_ENABLE, DISABLED);
- clearLocalDevices();
+ clearCecLocalDevices();
}
});
}
@@ -3671,7 +3671,7 @@
// If the current device is a source device, check if the current Active Source matches
// the local device info.
- for (HdmiCecLocalDevice device : getAllLocalDevices()) {
+ for (HdmiCecLocalDevice device : getAllCecLocalDevices()) {
boolean deviceIsActiveSource =
logicalAddress == device.getDeviceInfo().getLogicalAddress()
&& physicalAddress == getPhysicalAddress();
diff --git a/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java b/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java
index 94d4dde..2e5ab1a 100644
--- a/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java
+++ b/services/core/java/com/android/server/wm/SurfaceAnimationRunner.java
@@ -441,6 +441,7 @@
.setPixelFormat(PixelFormat.RGBA_8888)
.setChildrenOnly(true)
.setAllowProtected(true)
+ .setCaptureSecureLayers(true)
.build();
final ScreenCapture.ScreenshotHardwareBuffer edgeBuffer =
ScreenCapture.captureLayers(captureArgs);
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
index 09dc367..0bd6f2c 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
@@ -99,6 +99,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.function.Consumer;
@Presubmit
@@ -181,14 +182,36 @@
return blockedActivities;
}
+ private Intent createRestrictedActivityBlockedIntent(List displayCategories,
+ String targetDisplayCategory) {
+ mDeviceImpl.onVirtualDisplayCreatedLocked(
+ mDeviceImpl.createWindowPolicyController(displayCategories), DISPLAY_ID);
+ GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
+ DISPLAY_ID);
+ doNothing().when(mContext).startActivityAsUser(any(), any(), any());
+
+ ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
+ NONBLOCKED_APP_PACKAGE_NAME,
+ NONBLOCKED_APP_PACKAGE_NAME,
+ /* displayOnRemoveDevices= */ true,
+ targetDisplayCategory);
+ Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
+ activityInfos.get(0), mAssociationInfo.getDisplayName());
+ gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
+ return blockedAppIntent;
+ }
+
+
private ArrayList<ActivityInfo> getActivityInfoList(
- String packageName, String name, boolean displayOnRemoveDevices) {
+ String packageName, String name, boolean displayOnRemoveDevices,
+ String targetDisplayCategory) {
ActivityInfo activityInfo = new ActivityInfo();
activityInfo.packageName = packageName;
activityInfo.name = name;
activityInfo.flags = displayOnRemoveDevices
? FLAG_CAN_DISPLAY_ON_REMOTE_DEVICES : FLAG_CANNOT_DISPLAY_ON_REMOTE_DEVICES;
activityInfo.applicationInfo = mApplicationInfoMock;
+ activityInfo.targetDisplayCategory = targetDisplayCategory;
return new ArrayList<>(Arrays.asList(activityInfo));
}
@@ -298,7 +321,7 @@
@Test
public void onVirtualDisplayRemovedLocked_doesNotThrowException() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
// This call should not throw any exceptions.
mDeviceImpl.onVirtualDisplayRemovedLocked(DISPLAY_ID);
}
@@ -317,7 +340,7 @@
public void onVirtualDisplayRemovedLocked_listenersNotified() {
mLocalService.registerVirtualDisplayListener(mDisplayListener);
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
mLocalService.onVirtualDisplayRemoved(mDeviceImpl, DISPLAY_ID);
TestableLooper.get(this).processAllMessages();
@@ -379,7 +402,7 @@
nullable(String.class), nullable(String.class), nullable(WorkSource.class),
nullable(String.class), anyInt(), eq(null));
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
verify(mIPowerManagerMock).acquireWakeLock(any(Binder.class), anyInt(),
nullable(String.class), nullable(String.class), nullable(WorkSource.class),
nullable(String.class), eq(DISPLAY_ID), eq(null));
@@ -388,9 +411,10 @@
@Test
public void onVirtualDisplayCreatedLocked_duplicateCalls_onlyOneWakeLockIsAcquired()
throws RemoteException {
- GenericWindowPolicyController gwpc = mDeviceImpl.createWindowPolicyController();
+ GenericWindowPolicyController gwpc = mDeviceImpl.createWindowPolicyController(
+ new ArrayList<>());
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
assertThrows(IllegalStateException.class,
() -> mDeviceImpl.onVirtualDisplayCreatedLocked(gwpc, DISPLAY_ID));
TestableLooper.get(this).processAllMessages();
@@ -409,7 +433,7 @@
@Test
public void onVirtualDisplayRemovedLocked_wakeLockIsReleased() throws RemoteException {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
ArgumentCaptor<IBinder> wakeLockCaptor = ArgumentCaptor.forClass(IBinder.class);
TestableLooper.get(this).processAllMessages();
verify(mIPowerManagerMock).acquireWakeLock(wakeLockCaptor.capture(),
@@ -425,7 +449,7 @@
@Test
public void addVirtualDisplay_displayNotReleased_wakeLockIsReleased() throws RemoteException {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
ArgumentCaptor<IBinder> wakeLockCaptor = ArgumentCaptor.forClass(IBinder.class);
TestableLooper.get(this).processAllMessages();
verify(mIPowerManagerMock).acquireWakeLock(wakeLockCaptor.capture(),
@@ -625,7 +649,7 @@
@Test
public void onAudioSessionStarting_hasVirtualAudioController() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
mDeviceImpl.onAudioSessionStarting(DISPLAY_ID, mRoutingCallback, mConfigChangedCallback);
@@ -635,7 +659,7 @@
@Test
public void onAudioSessionEnded_noVirtualAudioController() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
mDeviceImpl.onAudioSessionStarting(DISPLAY_ID, mRoutingCallback, mConfigChangedCallback);
mDeviceImpl.onAudioSessionEnded();
@@ -646,7 +670,7 @@
@Test
public void close_cleanVirtualAudioController() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
mDeviceImpl.onAudioSessionStarting(DISPLAY_ID, mRoutingCallback, mConfigChangedCallback);
mDeviceImpl.close();
@@ -863,14 +887,16 @@
@Test
public void openNonBlockedAppOnVirtualDisplay_doesNotStartBlockedAlertActivity() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
NONBLOCKED_APP_PACKAGE_NAME,
- NONBLOCKED_APP_PACKAGE_NAME, /* displayOnRemoveDevices */ true);
+ NONBLOCKED_APP_PACKAGE_NAME,
+ /* displayOnRemoveDevices */ true,
+ /* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfos.get(0), mAssociationInfo.getDisplayName());
gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
@@ -882,14 +908,16 @@
@Test
public void openPermissionControllerOnVirtualDisplay_startBlockedAlertActivity() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
PERMISSION_CONTROLLER_PACKAGE_NAME,
- PERMISSION_CONTROLLER_PACKAGE_NAME, /* displayOnRemoveDevices */ false);
+ PERMISSION_CONTROLLER_PACKAGE_NAME,
+ /* displayOnRemoveDevices */ false,
+ /* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfos.get(0), mAssociationInfo.getDisplayName());
gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
@@ -901,14 +929,16 @@
@Test
public void openSettingsOnVirtualDisplay_startBlockedAlertActivity() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
SETTINGS_PACKAGE_NAME,
- SETTINGS_PACKAGE_NAME, /* displayOnRemoveDevices */ true);
+ SETTINGS_PACKAGE_NAME,
+ /* displayOnRemoveDevices */ true,
+ /* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfos.get(0), mAssociationInfo.getDisplayName());
gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
@@ -920,14 +950,16 @@
@Test
public void openVendingOnVirtualDisplay_startBlockedAlertActivity() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
VENDING_PACKAGE_NAME,
- VENDING_PACKAGE_NAME, /* displayOnRemoveDevices */ true);
+ VENDING_PACKAGE_NAME,
+ /* displayOnRemoveDevices */ true,
+ /* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfos.get(0), mAssociationInfo.getDisplayName());
gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
@@ -939,14 +971,16 @@
@Test
public void openGoogleDialerOnVirtualDisplay_startBlockedAlertActivity() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
GOOGLE_DIALER_PACKAGE_NAME,
- GOOGLE_DIALER_PACKAGE_NAME, /* displayOnRemoveDevices */ true);
+ GOOGLE_DIALER_PACKAGE_NAME,
+ /* displayOnRemoveDevices */ true,
+ /* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfos.get(0), mAssociationInfo.getDisplayName());
gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
@@ -958,14 +992,16 @@
@Test
public void openGoogleMapsOnVirtualDisplay_startBlockedAlertActivity() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
doNothing().when(mContext).startActivityAsUser(any(), any(), any());
ArrayList<ActivityInfo> activityInfos = getActivityInfoList(
GOOGLE_MAPS_PACKAGE_NAME,
- GOOGLE_MAPS_PACKAGE_NAME, /* displayOnRemoveDevices */ true);
+ GOOGLE_MAPS_PACKAGE_NAME,
+ /* displayOnRemoveDevices */ true,
+ /* targetDisplayCategory */ null);
Intent blockedAppIntent = BlockedAppStreamingActivity.createIntent(
activityInfos.get(0), mAssociationInfo.getDisplayName());
gwpc.canContainActivities(activityInfos, WindowConfiguration.WINDOWING_MODE_FULLSCREEN);
@@ -978,7 +1014,7 @@
public void registerRunningAppsChangedListener_onRunningAppsChanged_listenersNotified() {
ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(UID_1, UID_2));
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
@@ -993,7 +1029,7 @@
public void noRunningAppsChangedListener_onRunningAppsChanged_doesNotThrowException() {
ArraySet<Integer> uids = new ArraySet<>(Arrays.asList(UID_1, UID_2));
mDeviceImpl.onVirtualDisplayCreatedLocked(
- mDeviceImpl.createWindowPolicyController(), DISPLAY_ID);
+ mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID);
GenericWindowPolicyController gwpc = mDeviceImpl.getWindowPolicyControllersForTesting().get(
DISPLAY_ID);
mDeviceImpl.onVirtualDisplayRemovedLocked(DISPLAY_ID);
@@ -1003,4 +1039,37 @@
assertThat(gwpc.getRunningAppsChangedListenersSizeForTesting()).isEqualTo(0);
}
+
+ @Test
+ public void nonRestrictedActivityOnRestrictedVirtualDisplay_startBlockedAlertActivity() {
+ Intent blockedAppIntent = createRestrictedActivityBlockedIntent(List.of("abc"),
+ /* targetDisplayCategory= */ null);
+ verify(mContext).startActivityAsUser(argThat(intent ->
+ intent.filterEquals(blockedAppIntent)), any(), any());
+
+ }
+
+ @Test
+ public void restrictedActivityOnRestrictedVirtualDisplay_doesNotStartBlockedAlertActivity() {
+ Intent blockedAppIntent = createRestrictedActivityBlockedIntent(List.of("abc"), "abc");
+ verify(mContext, never()).startActivityAsUser(argThat(intent ->
+ intent.filterEquals(blockedAppIntent)), any(), any());
+ }
+
+ @Test
+ public void restrictedActivityOnNonRestrictedVirtualDisplay_startBlockedAlertActivity() {
+ Intent blockedAppIntent = createRestrictedActivityBlockedIntent(
+ /* displayCategories= */ List.of(), "abc");
+ verify(mContext).startActivityAsUser(argThat(intent ->
+ intent.filterEquals(blockedAppIntent)), any(), any());
+ }
+
+ @Test
+ public void
+ restrictedActivityOnNonMatchingRestrictedVirtualDisplay_startBlockedAlertActivity() {
+ Intent blockedAppIntent = createRestrictedActivityBlockedIntent(List.of("abc"), "def");
+ verify(mContext).startActivityAsUser(argThat(intent ->
+ intent.filterEquals(blockedAppIntent)), any(), any());
+ }
+
}
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/audio/VirtualAudioControllerTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/audio/VirtualAudioControllerTest.java
index 0262f56..3ca648c 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/audio/VirtualAudioControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/audio/VirtualAudioControllerTest.java
@@ -72,22 +72,25 @@
MockitoAnnotations.initMocks(this);
mContext = Mockito.spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
mVirtualAudioController = new VirtualAudioController(mContext);
- mGenericWindowPolicyController = new GenericWindowPolicyController(
- FLAG_SECURE,
- SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS,
- /* allowedUsers= */ new ArraySet<>(),
- /* allowedCrossTaskNavigations= */ new ArraySet<>(),
- /* blockedCrossTaskNavigations= */ new ArraySet<>(),
- /* allowedActivities= */ new ArraySet<>(),
- /* blockedActivities= */ new ArraySet<>(),
- VirtualDeviceParams.ACTIVITY_POLICY_DEFAULT_ALLOWED,
- /* activityListener= */ null,
- /* pipBlockedCallback= */ null,
- /* activityBlockedCallback= */ null,
- /* secureWindowCallback= */ null,
- /* deviceProfile= */ DEVICE_PROFILE_APP_STREAMING);
+ mGenericWindowPolicyController =
+ new GenericWindowPolicyController(
+ FLAG_SECURE,
+ SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS,
+ /* allowedUsers= */ new ArraySet<>(),
+ /* allowedCrossTaskNavigations= */ new ArraySet<>(),
+ /* blockedCrossTaskNavigations= */ new ArraySet<>(),
+ /* allowedActivities= */ new ArraySet<>(),
+ /* blockedActivities= */ new ArraySet<>(),
+ VirtualDeviceParams.ACTIVITY_POLICY_DEFAULT_ALLOWED,
+ /* activityListener= */ null,
+ /* pipBlockedCallback= */ null,
+ /* activityBlockedCallback= */ null,
+ /* secureWindowCallback= */ null,
+ /* deviceProfile= */ DEVICE_PROFILE_APP_STREAMING,
+ /* displayCategories= */ new ArrayList<>());
}
+
@Test
public void startListening_receivesCallback() throws RemoteException {
ArraySet<Integer> runningUids = new ArraySet<>();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
index 7df0078..6a899e8 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java
@@ -102,7 +102,7 @@
Collections.singletonList(HdmiDeviceInfo.DEVICE_PLAYBACK),
new FakeAudioDeviceVolumeManagerWrapper()) {
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
index ac57834..0419768 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java
@@ -111,7 +111,7 @@
Collections.singletonList(HdmiDeviceInfo.DEVICE_TV),
new FakeAudioDeviceVolumeManagerWrapper()) {
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index 75c4d92..cb2d255 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -108,7 +108,7 @@
}
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
index 48e70fe..b30118c 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
@@ -141,7 +141,7 @@
new HdmiControlService(context, Collections.emptyList(),
new FakeAudioDeviceVolumeManagerWrapper()) {
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return isControlEnabled;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
index 82c3401..5246107 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java
@@ -136,7 +136,7 @@
super.wakeUp();
}
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
index a08e398..4e5336e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java
@@ -68,7 +68,7 @@
Collections.singletonList(HdmiDeviceInfo.DEVICE_PLAYBACK),
new FakeAudioDeviceVolumeManagerWrapper()) {
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index 8f6bee1..81d569b 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -195,7 +195,7 @@
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mNativeWrapper.clearResultMessages();
assertThat(mHdmiControlServiceSpy.getInitialPowerStatus()).isEqualTo(
@@ -228,7 +228,7 @@
HdmiControlManager.HDMI_CEC_VERSION_2_0);
mTestLooper.dispatchAll();
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mNativeWrapper.clearResultMessages();
mTestLooper.dispatchAll();
@@ -285,11 +285,11 @@
int volumeControlEnabled = HdmiControlManager.VOLUME_CONTROL_ENABLED;
mHdmiControlServiceSpy.setHdmiCecVolumeControlEnabledInternal(volumeControlEnabled);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
assertThat(mHdmiControlServiceSpy.getHdmiCecVolumeControl()).isEqualTo(
HdmiControlManager.VOLUME_CONTROL_DISABLED);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(mHdmiControlServiceSpy.getHdmiCecVolumeControl())
.isEqualTo(volumeControlEnabled);
}
@@ -300,12 +300,12 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE, volumeControlEnabled);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
assertThat(mHdmiControlServiceSpy.getHdmiCecConfig().getIntValue(
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE)).isEqualTo(
volumeControlEnabled);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(mHdmiControlServiceSpy.getHdmiCecConfig().getIntValue(
HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE)).isEqualTo(
volumeControlEnabled);
@@ -320,13 +320,13 @@
VolumeControlFeatureCallback callback = new VolumeControlFeatureCallback();
mHdmiControlServiceSpy.addHdmiCecVolumeControlFeatureListener(callback);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
assertThat(callback.mCallbackReceived).isTrue();
assertThat(callback.mVolumeControlEnabled).isEqualTo(
HdmiControlManager.VOLUME_CONTROL_DISABLED);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(callback.mVolumeControlEnabled).isEqualTo(
HdmiControlManager.VOLUME_CONTROL_ENABLED);
}
@@ -423,7 +423,7 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(mHdmiControlServiceSpy.getCecVersion()).isEqualTo(
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
}
@@ -433,7 +433,7 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_2_0);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(mHdmiControlServiceSpy.getCecVersion()).isEqualTo(
HdmiControlManager.HDMI_CEC_VERSION_2_0);
}
@@ -443,14 +443,14 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(mHdmiControlServiceSpy.getCecVersion()).isEqualTo(
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_2_0);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
assertThat(mHdmiControlServiceSpy.getCecVersion()).isEqualTo(
HdmiControlManager.HDMI_CEC_VERSION_2_0);
}
@@ -460,7 +460,7 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mTestLooper.dispatchAll();
mNativeWrapper.onCecMessage(HdmiCecMessageBuilder.buildGiveFeatures(Constants.ADDR_TV,
@@ -478,7 +478,7 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_2_0);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
@@ -500,7 +500,7 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
@@ -517,7 +517,7 @@
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(
HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
HdmiControlManager.HDMI_CEC_VERSION_2_0);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
@@ -624,11 +624,11 @@
@Test
public void initCec_statusListener_CecEnabled_CecAvailable_TvOn() {
HdmiControlStatusCallback hdmiControlStatusCallback = new HdmiControlStatusCallback();
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
mTestLooper.dispatchAll();
mHdmiControlServiceSpy.addHdmiControlStatusChangeListener(hdmiControlStatusCallback);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
@@ -647,11 +647,11 @@
@Test
public void initCec_statusListener_CecEnabled_CecAvailable_TvStandby() {
HdmiControlStatusCallback hdmiControlStatusCallback = new HdmiControlStatusCallback();
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
mTestLooper.dispatchAll();
mHdmiControlServiceSpy.addHdmiControlStatusChangeListener(hdmiControlStatusCallback);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
@@ -670,11 +670,11 @@
@Test
public void initCec_statusListener_CecEnabled_CecAvailable_TvTransientToOn() {
HdmiControlStatusCallback hdmiControlStatusCallback = new HdmiControlStatusCallback();
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
mTestLooper.dispatchAll();
mHdmiControlServiceSpy.addHdmiControlStatusChangeListener(hdmiControlStatusCallback);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
@@ -693,11 +693,11 @@
@Test
public void initCec_statusListener_CecEnabled_CecAvailable_TvTransientToStandby() {
HdmiControlStatusCallback hdmiControlStatusCallback = new HdmiControlStatusCallback();
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_DISABLED);
mTestLooper.dispatchAll();
mHdmiControlServiceSpy.addHdmiControlStatusChangeListener(hdmiControlStatusCallback);
- mHdmiControlServiceSpy.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
+ mHdmiControlServiceSpy.setCecEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED);
mHdmiControlServiceSpy.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mTestLooper.dispatchAll();
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
index c07d4be..f719ca1 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java
@@ -99,7 +99,7 @@
new HdmiControlService(context, Collections.singletonList(HdmiDeviceInfo.DEVICE_TV),
new FakeAudioDeviceVolumeManagerWrapper()) {
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
index f5bf30b..be62df8 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java
@@ -151,7 +151,7 @@
Collections.singletonList(HdmiDeviceInfo.DEVICE_TV),
new FakeAudioDeviceVolumeManagerWrapper()) {
@Override
- boolean isControlEnabled() {
+ boolean isCecControlEnabled() {
return true;
}