Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +8 −4 Original line number Diff line number Diff line Loading @@ -405,7 +405,7 @@ public class HdmiControlService extends SystemService { private TvInputManager mTvInputManager; @Nullable private PowerManager mPowerManager; private PowerManagerWrapper mPowerManager; @Nullable private Looper mIoLooper; Loading Loading @@ -734,7 +734,7 @@ public class HdmiControlService extends SystemService { if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) { mTvInputManager = (TvInputManager) getContext().getSystemService( Context.TV_INPUT_SERVICE); mPowerManager = getContext().getSystemService(PowerManager.class); mPowerManager = new PowerManagerWrapper(getContext()); } else if (phase == SystemService.PHASE_BOOT_COMPLETED) { runOnServiceThread(this::bootCompleted); } Loading @@ -755,7 +755,11 @@ public class HdmiControlService extends SystemService { } @VisibleForTesting protected PowerManager getPowerManager() { void setPowerManager(PowerManagerWrapper powerManager) { mPowerManager = powerManager; } PowerManagerWrapper getPowerManager() { return mPowerManager; } Loading Loading @@ -3148,7 +3152,7 @@ public class HdmiControlService extends SystemService { }); } private boolean canGoToStandby() { boolean canGoToStandby() { for (HdmiCecLocalDevice device : mHdmiCecNetwork.getLocalDeviceList()) { if (!device.canGoToStandby()) return false; } Loading services/core/java/com/android/server/hdmi/PowerManagerWrapper.java 0 → 100644 +50 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.hdmi; import android.content.Context; import android.os.PowerManager; import android.os.PowerManager.WakeLock; /** * Abstraction around {@link PowerManager} to allow faking PowerManager in tests. */ public class PowerManagerWrapper { private static final String TAG = "PowerManagerWrapper"; private final PowerManager mPowerManager; public PowerManagerWrapper(Context context) { mPowerManager = context.getSystemService(PowerManager.class); } boolean isInteractive() { return mPowerManager.isInteractive(); } void wakeUp(long time, int reason, String details) { mPowerManager.wakeUp(time, reason, details); } void goToSleep(long time, int reason, int flags) { mPowerManager.goToSleep(time, reason, flags); } WakeLock newWakeLock(int levelAndFlags, String tag) { return mPowerManager.newWakeLock(levelAndFlags, tag); } } services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +3 −30 Original line number Diff line number Diff line Loading @@ -22,16 +22,11 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.ContextWrapper; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import androidx.test.InstrumentationRegistry; Loading @@ -41,8 +36,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Collections; Loading @@ -55,28 +48,16 @@ public class ActiveSourceActionTest { private Context mContextSpy; private HdmiControlService mHdmiControlService; private FakeNativeWrapper mNativeWrapper; private FakePowerManagerWrapper mPowerManager; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); private int mPhysicalAddress; @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mContextSpy.getSystemService(PowerManager.class)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mIPowerManagerMock.isInteractive()).thenReturn(true); mHdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList()) { @Override AudioManager getAudioManager() { Loading @@ -89,21 +70,11 @@ public class ActiveSourceActionTest { }; } @Override void wakeUp() { } @Override boolean isPowerStandby() { return false; } @Override protected PowerManager getPowerManager() { return new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper())); } @Override protected void writeStringSystemProperty(String key, String value) { // do nothing Loading @@ -120,6 +91,8 @@ public class ActiveSourceActionTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mHdmiControlService.initService(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); mHdmiControlService.setPowerManager(mPowerManager); mPhysicalAddress = 0x2000; mNativeWrapper.setPhysicalAddress(mPhysicalAddress); mTestLooper.dispatchAll(); Loading services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java +5 −26 Original line number Diff line number Diff line Loading @@ -20,17 +20,12 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.ContextWrapper; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; Loading @@ -56,14 +51,14 @@ public class ArcInitiationActionFromAvrTest { private Context mContextSpy; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private FakeNativeWrapper mNativeWrapper; private FakePowerManagerWrapper mPowerManager; private ArcInitiationActionFromAvr mAction; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Mock private AudioManager mAudioManager; @Mock private AudioManager mAudioManager; @Before public void setUp() throws Exception { Loading @@ -71,14 +66,6 @@ public class ArcInitiationActionFromAvrTest { mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mContextSpy.getSystemService(PowerManager.class)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mIPowerManagerMock.isInteractive()).thenReturn(true); HdmiControlService hdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList()) { @Override Loading @@ -86,16 +73,6 @@ public class ArcInitiationActionFromAvrTest { return false; } @Override void wakeUp() { } @Override protected PowerManager getPowerManager() { return new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper())); } @Override AudioManager getAudioManager() { return mAudioManager; Loading Loading @@ -133,6 +110,8 @@ public class ArcInitiationActionFromAvrTest { hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.setMessageValidator(new HdmiCecMessageValidator(hdmiControlService)); hdmiControlService.initService(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mAction = new ArcInitiationActionFromAvr(mHdmiCecLocalDeviceAudioSystem); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); Loading services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +5 −28 Original line number Diff line number Diff line Loading @@ -20,17 +20,12 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.ContextWrapper; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; Loading @@ -55,16 +50,15 @@ public class ArcTerminationActionFromAvrTest { private Context mContextSpy; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private FakePowerManagerWrapper mPowerManager; private ArcTerminationActionFromAvr mAction; private FakeNativeWrapper mNativeWrapper; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Mock private AudioManager mAudioManager; @Mock private AudioManager mAudioManager; @Before public void setUp() throws Exception { Loading @@ -72,26 +66,8 @@ public class ArcTerminationActionFromAvrTest { mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mContextSpy.getSystemService(PowerManager.class)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mIPowerManagerMock.isInteractive()).thenReturn(true); HdmiControlService hdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList()) { @Override void wakeUp() { } @Override protected PowerManager getPowerManager() { return new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper())); } @Override AudioManager getAudioManager() { return mAudioManager; Loading Loading @@ -127,7 +103,8 @@ public class ArcTerminationActionFromAvrTest { hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.setMessageValidator(new HdmiCecMessageValidator(hdmiControlService)); hdmiControlService.initService(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { @Override protected void setPreferredAddress(int addr) { Loading Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +8 −4 Original line number Diff line number Diff line Loading @@ -405,7 +405,7 @@ public class HdmiControlService extends SystemService { private TvInputManager mTvInputManager; @Nullable private PowerManager mPowerManager; private PowerManagerWrapper mPowerManager; @Nullable private Looper mIoLooper; Loading Loading @@ -734,7 +734,7 @@ public class HdmiControlService extends SystemService { if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) { mTvInputManager = (TvInputManager) getContext().getSystemService( Context.TV_INPUT_SERVICE); mPowerManager = getContext().getSystemService(PowerManager.class); mPowerManager = new PowerManagerWrapper(getContext()); } else if (phase == SystemService.PHASE_BOOT_COMPLETED) { runOnServiceThread(this::bootCompleted); } Loading @@ -755,7 +755,11 @@ public class HdmiControlService extends SystemService { } @VisibleForTesting protected PowerManager getPowerManager() { void setPowerManager(PowerManagerWrapper powerManager) { mPowerManager = powerManager; } PowerManagerWrapper getPowerManager() { return mPowerManager; } Loading Loading @@ -3148,7 +3152,7 @@ public class HdmiControlService extends SystemService { }); } private boolean canGoToStandby() { boolean canGoToStandby() { for (HdmiCecLocalDevice device : mHdmiCecNetwork.getLocalDeviceList()) { if (!device.canGoToStandby()) return false; } Loading
services/core/java/com/android/server/hdmi/PowerManagerWrapper.java 0 → 100644 +50 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.hdmi; import android.content.Context; import android.os.PowerManager; import android.os.PowerManager.WakeLock; /** * Abstraction around {@link PowerManager} to allow faking PowerManager in tests. */ public class PowerManagerWrapper { private static final String TAG = "PowerManagerWrapper"; private final PowerManager mPowerManager; public PowerManagerWrapper(Context context) { mPowerManager = context.getSystemService(PowerManager.class); } boolean isInteractive() { return mPowerManager.isInteractive(); } void wakeUp(long time, int reason, String details) { mPowerManager.wakeUp(time, reason, details); } void goToSleep(long time, int reason, int flags) { mPowerManager.goToSleep(time, reason, flags); } WakeLock newWakeLock(int levelAndFlags, String tag) { return mPowerManager.newWakeLock(levelAndFlags, tag); } }
services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +3 −30 Original line number Diff line number Diff line Loading @@ -22,16 +22,11 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.ContextWrapper; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import androidx.test.InstrumentationRegistry; Loading @@ -41,8 +36,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Collections; Loading @@ -55,28 +48,16 @@ public class ActiveSourceActionTest { private Context mContextSpy; private HdmiControlService mHdmiControlService; private FakeNativeWrapper mNativeWrapper; private FakePowerManagerWrapper mPowerManager; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); private int mPhysicalAddress; @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mContextSpy.getSystemService(PowerManager.class)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mIPowerManagerMock.isInteractive()).thenReturn(true); mHdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList()) { @Override AudioManager getAudioManager() { Loading @@ -89,21 +70,11 @@ public class ActiveSourceActionTest { }; } @Override void wakeUp() { } @Override boolean isPowerStandby() { return false; } @Override protected PowerManager getPowerManager() { return new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper())); } @Override protected void writeStringSystemProperty(String key, String value) { // do nothing Loading @@ -120,6 +91,8 @@ public class ActiveSourceActionTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mHdmiControlService.initService(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); mHdmiControlService.setPowerManager(mPowerManager); mPhysicalAddress = 0x2000; mNativeWrapper.setPhysicalAddress(mPhysicalAddress); mTestLooper.dispatchAll(); Loading
services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java +5 −26 Original line number Diff line number Diff line Loading @@ -20,17 +20,12 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.ContextWrapper; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; Loading @@ -56,14 +51,14 @@ public class ArcInitiationActionFromAvrTest { private Context mContextSpy; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private FakeNativeWrapper mNativeWrapper; private FakePowerManagerWrapper mPowerManager; private ArcInitiationActionFromAvr mAction; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Mock private AudioManager mAudioManager; @Mock private AudioManager mAudioManager; @Before public void setUp() throws Exception { Loading @@ -71,14 +66,6 @@ public class ArcInitiationActionFromAvrTest { mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mContextSpy.getSystemService(PowerManager.class)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mIPowerManagerMock.isInteractive()).thenReturn(true); HdmiControlService hdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList()) { @Override Loading @@ -86,16 +73,6 @@ public class ArcInitiationActionFromAvrTest { return false; } @Override void wakeUp() { } @Override protected PowerManager getPowerManager() { return new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper())); } @Override AudioManager getAudioManager() { return mAudioManager; Loading Loading @@ -133,6 +110,8 @@ public class ArcInitiationActionFromAvrTest { hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.setMessageValidator(new HdmiCecMessageValidator(hdmiControlService)); hdmiControlService.initService(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mAction = new ArcInitiationActionFromAvr(mHdmiCecLocalDeviceAudioSystem); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); Loading
services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +5 −28 Original line number Diff line number Diff line Loading @@ -20,17 +20,12 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; import android.content.ContextWrapper; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; Loading @@ -55,16 +50,15 @@ public class ArcTerminationActionFromAvrTest { private Context mContextSpy; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private FakePowerManagerWrapper mPowerManager; private ArcTerminationActionFromAvr mAction; private FakeNativeWrapper mNativeWrapper; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Mock private AudioManager mAudioManager; @Mock private AudioManager mAudioManager; @Before public void setUp() throws Exception { Loading @@ -72,26 +66,8 @@ public class ArcTerminationActionFromAvrTest { mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext())); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mContextSpy.getSystemService(PowerManager.class)).thenAnswer(i -> new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper()))); when(mIPowerManagerMock.isInteractive()).thenReturn(true); HdmiControlService hdmiControlService = new HdmiControlService(mContextSpy, Collections.emptyList()) { @Override void wakeUp() { } @Override protected PowerManager getPowerManager() { return new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, new Handler(mTestLooper.getLooper())); } @Override AudioManager getAudioManager() { return mAudioManager; Loading Loading @@ -127,7 +103,8 @@ public class ArcTerminationActionFromAvrTest { hdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(hdmiControlService)); hdmiControlService.setMessageValidator(new HdmiCecMessageValidator(hdmiControlService)); hdmiControlService.initService(); mPowerManager = new FakePowerManagerWrapper(mContextSpy); hdmiControlService.setPowerManager(mPowerManager); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { @Override protected void setPreferredAddress(int addr) { Loading