diff options
| author | 2024-04-26 02:52:27 +0000 | |
|---|---|---|
| committer | 2024-05-07 23:38:25 +0000 | |
| commit | 49d3c9e82b0e45efbe03e54b0dba1f195aaef673 (patch) | |
| tree | be093eab96f0d285092a2ddd33bd641bf868c2fa | |
| parent | 574b75e23f5203a61bfcddfc91a8fc1c9aba0a64 (diff) | |
HDMI: Include intents that are implemented in HdmiControlManager
Protect the intents and mock broadcasting them the in the unit tests.
Mocking is necessary since only system apps are allowed to broadcast
protected intents.
Test: atest com.android.server.hdmi
Bug: 336893051
Bug: 337117978
Change-Id: Ie7b06b52825391df18485502fa65549ec7f76787
29 files changed, 169 insertions, 37 deletions
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index bfbfb3aa3d56..896f53ef1669 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -299,6 +299,9 @@ <protected-broadcast android:name="android.hardware.display.action.WIFI_DISPLAY_STATUS_CHANGED" /> + <protected-broadcast android:name="android.hardware.hdmi.action.OSD_MESSAGE" /> + <protected-broadcast android:name="android.hardware.hdmi.action.ON_ACTIVE_SOURCE_RECOVERED_DISMISS_UI" /> + <protected-broadcast android:name="android.hardware.usb.action.USB_STATE" /> <protected-broadcast android:name="android.hardware.usb.action.USB_PORT_CHANGED" /> <protected-broadcast android:name="android.hardware.usb.action.USB_PORT_COMPLIANCE_CHANGED" /> diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java index d21fc85d6448..5db17bb90637 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java @@ -29,7 +29,6 @@ import android.os.Binder; import android.os.Handler; import android.os.PowerManager; import android.os.SystemProperties; -import android.os.UserHandle; import android.sysprop.HdmiProperties; import android.util.Slog; @@ -278,8 +277,7 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource { void dismissUiOnActiveSourceStatusRecovered() { assertRunOnServiceThread(); Intent intent = new Intent(HdmiControlManager.ACTION_ON_ACTIVE_SOURCE_RECOVERED_DISMISS_UI); - mService.getContext().sendBroadcastAsUser(intent, UserHandle.ALL, - HdmiControlService.PERMISSION); + mService.sendBroadcastAsUser(intent); } @Override diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 61514abec102..dac75bea2c6a 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -40,6 +40,7 @@ import static com.android.server.power.ShutdownThread.SHUTDOWN_ACTION_PROPERTY; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresPermission; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; @@ -4388,8 +4389,7 @@ public class HdmiControlService extends SystemService { assertRunOnServiceThread(); Intent intent = new Intent(HdmiControlManager.ACTION_OSD_MESSAGE); intent.putExtra(HdmiControlManager.EXTRA_MESSAGE_ID, messageId); - getContext().sendBroadcastAsUser(intent, UserHandle.ALL, - HdmiControlService.PERMISSION); + sendBroadcastAsUser(intent); } @ServiceThreadOnly @@ -4398,8 +4398,17 @@ public class HdmiControlService extends SystemService { Intent intent = new Intent(HdmiControlManager.ACTION_OSD_MESSAGE); intent.putExtra(HdmiControlManager.EXTRA_MESSAGE_ID, messageId); intent.putExtra(HdmiControlManager.EXTRA_MESSAGE_EXTRA_PARAM1, extra); - getContext().sendBroadcastAsUser(intent, UserHandle.ALL, - HdmiControlService.PERMISSION); + sendBroadcastAsUser(intent); + } + + // This method is used such that we can override it inside unit tests to avoid a + // SecurityException. + @ServiceThreadOnly + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + assertRunOnServiceThread(); + getContext().sendBroadcastAsUser(intent, UserHandle.ALL, HdmiControlService.PERMISSION); } @VisibleForTesting diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java index be5e2623ac20..c1ae85252ffc 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java @@ -24,8 +24,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.os.Looper; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; @@ -72,6 +74,11 @@ public class ActiveSourceActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; Looper looper = mTestLooper.getLooper(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java index 5be3c8e4671c..a5f7bb117e7d 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java @@ -22,8 +22,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Looper; import android.os.test.TestLooper; @@ -84,6 +86,11 @@ public class ArcInitiationActionFromAvrTest { protected Looper getServiceLooper() { return mTestLooper.getLooper(); } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java index 7845c307c15f..857ee1aa176f 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java @@ -22,8 +22,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.IHdmiControlCallback; import android.hardware.tv.cec.V1_0.SendMessageResult; @@ -90,6 +92,11 @@ public class ArcTerminationActionFromAvrTest { protected Looper getServiceLooper() { return mTestLooper.getLooper(); } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; Looper looper = mTestLooper.getLooper(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java b/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java index 98789ac96e98..6ace9f14757c 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/BaseAbsoluteVolumeBehaviorTest.java @@ -33,8 +33,10 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.DeviceFeatures; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; @@ -140,17 +142,8 @@ public abstract class BaseAbsoluteVolumeBehaviorTest { // do nothing } - /** - * Override displayOsd to prevent it from broadcasting an intent, which - * can trigger a SecurityException. - */ @Override - void displayOsd(int messageId) { - // do nothing - } - - @Override - void displayOsd(int messageId, int extra) { + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { // do nothing } }; diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java index 9b65762e48ec..2dd593c8cb29 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java @@ -18,6 +18,8 @@ package com.android.server.hdmi; import static org.junit.Assert.assertEquals; import android.annotation.Nullable; +import android.annotation.RequiresPermission; +import android.content.Intent; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Looper; @@ -103,6 +105,11 @@ public class DetectTvSystemAudioModeSupportActionTest { protected Looper getServiceLooper() { return mTestLooper.getLooper(); } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java index 922706e16a75..e669e7c019d6 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java @@ -25,8 +25,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.IHdmiControlCallback; @@ -90,6 +92,11 @@ public class DevicePowerStatusActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; Looper looper = mTestLooper.getLooper(); 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 68ef80fa62c9..29d20a64e439 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromPlaybackTest.java @@ -30,7 +30,9 @@ import static com.android.server.hdmi.DeviceSelectActionFromPlayback.STATE_WAIT_ import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.IHdmiControlCallback; @@ -123,6 +125,11 @@ public class DeviceSelectActionFromPlaybackTest { boolean isPowerStandby() { return false; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; 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 26b448a491f2..d32b75bc57da 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionFromTvTest.java @@ -29,7 +29,9 @@ import static com.android.server.hdmi.DeviceSelectActionFromTv.STATE_WAIT_FOR_RE import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -132,6 +134,11 @@ public class DeviceSelectActionFromTvTest { boolean isPowerStandby() { return false; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java index a621055a99eb..c7574bdc3f6c 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTest.java @@ -36,6 +36,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -98,6 +99,8 @@ public class HdmiCecAtomLoggingTest { audioFramework.getAudioManager(), audioFramework.getAudioDeviceVolumeManager())); doNothing().when(mHdmiControlServiceSpy) .writeStringSystemProperty(anyString(), anyString()); + doNothing().when(mHdmiControlServiceSpy) + .sendBroadcastAsUser(any(Intent.class)); doReturn(mHdmiCecAtomWriterSpy).when(mHdmiControlServiceSpy).getAtomWriter(); HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); doReturn(hdmiCecConfig).when(mHdmiControlServiceSpy).getHdmiCecConfig(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java index 30ce9616d9b5..e1e101fc1724 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java @@ -19,6 +19,7 @@ import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_EARC_PENDING; import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_UNKNOWN; import static com.android.server.hdmi.HdmiControlService.WAKE_UP_SCREEN_ON; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; @@ -30,6 +31,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -90,6 +92,8 @@ public class HdmiCecAtomLoggingTvTest { audioFramework.getAudioManager(), audioFramework.getAudioDeviceVolumeManager())); doNothing().when(mHdmiControlServiceSpy) .writeStringSystemProperty(anyString(), anyString()); + doNothing().when(mHdmiControlServiceSpy) + .sendBroadcastAsUser(any(Intent.class)); doReturn(mHdmiCecAtomWriterSpy).when(mHdmiControlServiceSpy).getAtomWriter(); HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java index 0870bac6ef38..7ed596ea8bab 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java @@ -48,6 +48,7 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Binder; @@ -110,6 +111,8 @@ public class HdmiCecControllerTest { doAnswer(__ -> mCecVersion).when(mHdmiControlServiceSpy).getCecVersion(); doNothing().when(mHdmiControlServiceSpy) .writeStringSystemProperty(anyString(), anyString()); + doNothing().when(mHdmiControlServiceSpy) + .sendBroadcastAsUser(any(Intent.class)); mHdmiControlServiceSpy.setDeviceConfig(new FakeDeviceConfigWrapper()); mNativeWrapper = new FakeNativeWrapper(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java index 55208972895d..5502de8f46e9 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java @@ -26,7 +26,9 @@ import static com.android.server.hdmi.HdmiControlService.STANDBY_SCREEN_OFF; import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -114,6 +116,11 @@ public class HdmiCecLocalDeviceAudioSystemTest { return defVal; } } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiControlService.getHdmiCecConfig().setIntValue( 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 28da97c58383..8df7d548e21e 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -28,7 +28,9 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -138,6 +140,11 @@ public class HdmiCecLocalDevicePlaybackTest { boolean canGoToStandby() { return true; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); 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 3dd83125619a..192be2a4200b 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java @@ -37,7 +37,9 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiPortInfo; import android.hardware.tv.cec.V1_0.Result; @@ -169,6 +171,11 @@ public class HdmiCecLocalDeviceTest { void wakeUp() { mWakeupMessageReceived = true; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiControlService.setIoLooper(mTestLooper.getLooper()); mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); 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 4faeea50c1e1..b5f0a527de7b 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java @@ -41,7 +41,9 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -184,17 +186,8 @@ public class HdmiCecLocalDeviceTvTest { return mEarcBlocksArc; } - /** - * Override displayOsd to prevent it from broadcasting an intent, which - * can trigger a SecurityException. - */ @Override - void displayOsd(int messageId) { - // do nothing - } - - @Override - void displayOsd(int messageId, int extra) { + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { // do nothing } }; 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 c002067ae9e7..9412ee0d4ac7 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java @@ -21,8 +21,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -88,6 +90,11 @@ public class HdmiCecPowerStatusControllerTest { boolean isPowerStandby() { return false; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiControlService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY); 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 9a92c704c247..213221241ae6 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java @@ -52,6 +52,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -120,6 +121,8 @@ public class HdmiControlServiceTest { audioFramework.getAudioManager(), audioFramework.getAudioDeviceVolumeManager())); doNothing().when(mHdmiControlServiceSpy) .writeStringSystemProperty(anyString(), anyString()); + doNothing().when(mHdmiControlServiceSpy) + .sendBroadcastAsUser(any(Intent.class)); mMyLooper = mTestLooper.getLooper(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java index 46418026e540..298ff460c9eb 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java @@ -26,8 +26,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.IHdmiControlCallback; @@ -104,6 +106,11 @@ public class OneTouchPlayActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; Looper looper = mTestLooper.getLooper(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java index 9f0a44ce008a..1d4a72fc30e2 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java @@ -25,8 +25,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; @@ -78,6 +80,11 @@ public class PowerStatusMonitorActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; Looper looper = mTestLooper.getLooper(); 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 043db1eb298d..cafe1e7dc197 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/RequestSadActionTest.java @@ -21,7 +21,9 @@ import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM; import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.os.Looper; @@ -115,6 +117,11 @@ public class RequestSadActionTest { boolean isPowerStandbyOrTransient() { return false; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiControlService.setIoLooper(mMyLooper); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java index 061e1f90fa58..864a182e8d0d 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionPlaybackTest.java @@ -21,7 +21,9 @@ import static com.android.server.hdmi.ResendCecCommandAction.SEND_COMMAND_RETRY_ import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; @@ -72,6 +74,11 @@ public class ResendCecCommandActionPlaybackTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mIsPowerStandby = false; diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java index b25ea2c5078c..06709cdd6ac4 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ResendCecCommandActionTvTest.java @@ -21,7 +21,9 @@ import static com.android.server.hdmi.ResendCecCommandAction.SEND_COMMAND_RETRY_ import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Looper; @@ -75,6 +77,11 @@ public class ResendCecCommandActionTvTest { boolean verifyPhysicalAddresses(HdmiCecMessage message) { return true; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mMyLooper = mTestLooper.getLooper(); 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 f608c235b0be..5163e29b86f1 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/RoutingControlActionTest.java @@ -29,7 +29,9 @@ import static com.android.server.hdmi.RoutingControlAction.STATE_WAIT_FOR_ROUTIN import static com.google.common.truth.Truth.assertThat; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; import android.hardware.hdmi.IHdmiControlCallback; @@ -177,6 +179,11 @@ public class RoutingControlActionTest { protected HdmiCecConfig getHdmiCecConfig() { return hdmiCecConfig; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; mHdmiControlService.setIoLooper(mMyLooper); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java index a73f4aa35cf9..e4297effed92 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/SetAudioVolumeLevelDiscoveryActionTest.java @@ -24,12 +24,14 @@ import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.DeviceFeatures; import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; @@ -87,6 +89,8 @@ public class SetAudioVolumeLevelDiscoveryActionTest { audioFramework.getAudioManager(), audioFramework.getAudioDeviceVolumeManager())); doNothing().when(mHdmiControlServiceSpy) .writeStringSystemProperty(anyString(), anyString()); + doNothing().when(mHdmiControlServiceSpy) + .sendBroadcastAsUser(any(Intent.class)); mLooper = mTestLooper.getLooper(); mHdmiControlServiceSpy.setIoLooper(mLooper); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java index 02bed229d181..4dcc6a400c1e 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioAutoInitiationActionTest.java @@ -25,8 +25,10 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import android.annotation.RequiresPermission; import android.content.Context; import android.content.ContextWrapper; +import android.content.Intent; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; import android.os.Looper; @@ -82,17 +84,8 @@ public class SystemAudioAutoInitiationActionTest { // do nothing } - /** - * Override displayOsd to prevent it from broadcasting an intent, which - * can trigger a SecurityException. - */ @Override - void displayOsd(int messageId) { - // do nothing - } - - @Override - void displayOsd(int messageId, int extra) { + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { // do nothing } }; diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java index df27e7828385..4aa074b1a52b 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java @@ -23,7 +23,9 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import android.annotation.Nullable; +import android.annotation.RequiresPermission; import android.content.Context; +import android.content.Intent; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Looper; @@ -143,6 +145,11 @@ public class SystemAudioInitiationActionFromAvrTest { protected boolean isStandbyMessageReceived() { return mStandbyMessageReceived; } + + @Override + protected void sendBroadcastAsUser(@RequiresPermission Intent intent) { + // do nothing + } }; Looper looper = mTestLooper.getLooper(); |