1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.systemui.utils.leaks;
16 
17 import android.os.Bundle;
18 import android.testing.LeakCheck;
19 
20 import com.android.systemui.animation.Expandable;
21 import com.android.systemui.statusbar.policy.BatteryController;
22 import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
23 
24 import java.io.PrintWriter;
25 import java.util.ArrayList;
26 import java.util.List;
27 
28 public class FakeBatteryController extends BaseLeakChecker<BatteryStateChangeCallback>
29         implements BatteryController {
30     private boolean mIsAodPowerSave = false;
31     private boolean mWirelessCharging;
32     private boolean mPowerSaveMode = false;
33     private boolean mIsPluggedIn = false;
34     private boolean mIsExtremePowerSave = false;
35 
36     private final List<BatteryStateChangeCallback> mCallbacks = new ArrayList<>();
37 
FakeBatteryController(LeakCheck test)38     public FakeBatteryController(LeakCheck test) {
39         super(test, "battery");
40     }
41 
42     @Override
dispatchDemoCommand(String command, Bundle args)43     public void dispatchDemoCommand(String command, Bundle args) {
44 
45     }
46 
47     @Override
dump(PrintWriter pw, String[] args)48     public void dump(PrintWriter pw, String[] args) {
49 
50     }
51 
52     @Override
setPowerSaveMode(boolean powerSave)53     public void setPowerSaveMode(boolean powerSave) {
54         mPowerSaveMode = powerSave;
55         for (BatteryStateChangeCallback callback: mCallbacks) {
56             callback.onPowerSaveChanged(powerSave);
57         }
58     }
59 
60     /**
61      * Note: this method ignores the View argument
62      */
63     @Override
setPowerSaveMode(boolean powerSave, Expandable expandable)64     public void setPowerSaveMode(boolean powerSave, Expandable expandable) {
65         setPowerSaveMode(powerSave);
66     }
67 
68     @Override
isExtremeSaverOn()69     public boolean isExtremeSaverOn() {
70         return mIsExtremePowerSave;
71     }
72 
73     /**
74      * Note: this does not affect the regular power saver. Triggers all callbacks, only on change.
75      */
setExtremeSaverOn(Boolean extremePowerSave)76     public void setExtremeSaverOn(Boolean extremePowerSave) {
77         if (extremePowerSave == mIsExtremePowerSave) return;
78 
79         mIsExtremePowerSave = extremePowerSave;
80         for (BatteryStateChangeCallback callback: mCallbacks) {
81             callback.onExtremeBatterySaverChanged(extremePowerSave);
82         }
83     }
84 
85     @Override
isPluggedIn()86     public boolean isPluggedIn() {
87         return mIsPluggedIn;
88     }
89 
90     /**
91      * Notifies all registered callbacks
92      */
setPluggedIn(boolean pluggedIn)93     public void setPluggedIn(boolean pluggedIn) {
94         mIsPluggedIn = pluggedIn;
95         for (BatteryStateChangeCallback cb : mCallbacks) {
96             cb.onBatteryLevelChanged(0, pluggedIn, false);
97         }
98     }
99 
100     @Override
isPowerSave()101     public boolean isPowerSave() {
102         return mPowerSaveMode;
103     }
104 
105     @Override
isAodPowerSave()106     public boolean isAodPowerSave() {
107         return mIsAodPowerSave;
108     }
109 
110     @Override
isWirelessCharging()111     public boolean isWirelessCharging() {
112         return mWirelessCharging;
113     }
114 
setIsAodPowerSave(boolean isAodPowerSave)115     public void setIsAodPowerSave(boolean isAodPowerSave) {
116         mIsAodPowerSave = isAodPowerSave;
117     }
118 
setWirelessCharging(boolean wirelessCharging)119     public void setWirelessCharging(boolean wirelessCharging) {
120         mWirelessCharging = wirelessCharging;
121     }
122 
123     @Override
addCallback(BatteryStateChangeCallback listener)124     public void addCallback(BatteryStateChangeCallback listener) {
125         mCallbacks.add(listener);
126     }
127 
128     @Override
removeCallback(BatteryStateChangeCallback listener)129     public void removeCallback(BatteryStateChangeCallback listener) {
130         mCallbacks.remove(listener);
131     }
132 }
133