Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08caaff2 authored by Nathalie Le Clair's avatar Nathalie Le Clair Committed by Android (Google) Code Review
Browse files

Merge "Introduce PowerManager mock"

parents ed16c205 00eec90e
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -405,7 +405,7 @@ public class HdmiControlService extends SystemService {
    private TvInputManager mTvInputManager;

    @Nullable
    private PowerManager mPowerManager;
    private PowerManagerWrapper mPowerManager;

    @Nullable
    private Looper mIoLooper;
@@ -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);
        }
@@ -755,7 +755,11 @@ public class HdmiControlService extends SystemService {
    }

    @VisibleForTesting
    protected PowerManager getPowerManager() {
    void setPowerManager(PowerManagerWrapper powerManager) {
        mPowerManager = powerManager;
    }

    PowerManagerWrapper getPowerManager() {
        return mPowerManager;
    }

@@ -3148,7 +3152,7 @@ public class HdmiControlService extends SystemService {
        });
    }

    private boolean canGoToStandby() {
    boolean canGoToStandby() {
        for (HdmiCecLocalDevice device : mHdmiCecNetwork.getLocalDeviceList()) {
            if (!device.canGoToStandby()) return false;
        }
+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);
    }
}
+3 −30
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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() {
@@ -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
@@ -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();
+5 −26
Original line number Diff line number Diff line
@@ -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;

@@ -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 {
@@ -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
@@ -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;
@@ -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);
+5 −28
Original line number Diff line number Diff line
@@ -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;

@@ -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 {
@@ -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;
@@ -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