MockBatteryStatsImpl.java revision c20379e6ec8057f8566ba05f74e527e5c081d033
1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.internal.os; 18 19import android.os.Handler; 20import android.os.Looper; 21import android.util.SparseIntArray; 22 23import com.android.internal.location.gnssmetrics.GnssMetrics; 24import java.util.ArrayList; 25import java.util.concurrent.Future; 26 27/** 28 * Mocks a BatteryStatsImpl object. 29 */ 30public class MockBatteryStatsImpl extends BatteryStatsImpl { 31 public BatteryStatsImpl.Clocks clocks; 32 public boolean mForceOnBattery; 33 34 MockBatteryStatsImpl(Clocks clocks) { 35 super(clocks); 36 this.clocks = mClocks; 37 mScreenOnTimer = new BatteryStatsImpl.StopwatchTimer(clocks, null, -1, null, 38 mOnBatteryTimeBase); 39 mScreenDozeTimer = new BatteryStatsImpl.StopwatchTimer(clocks, null, -1, null, 40 mOnBatteryTimeBase); 41 mBluetoothScanTimer = new StopwatchTimer(mClocks, null, -14, null, mOnBatteryTimeBase); 42 setExternalStatsSyncLocked(new DummyExternalStatsSync()); 43 44 for (int i=0; i< GnssMetrics.NUM_GPS_SIGNAL_QUALITY_LEVELS; i++) { 45 mGpsSignalQualityTimer[i] = new StopwatchTimer(clocks, null, -1000-i, null, 46 mOnBatteryTimeBase); 47 } 48 49 // A no-op handler. 50 mHandler = new Handler(Looper.getMainLooper()) {}; 51 } 52 53 MockBatteryStatsImpl() { 54 this(new MockClocks()); 55 } 56 57 public TimeBase getOnBatteryTimeBase() { 58 return mOnBatteryTimeBase; 59 } 60 61 public TimeBase getOnBatteryScreenOffTimeBase() { 62 return mOnBatteryScreenOffTimeBase; 63 } 64 65 public int getScreenState() { 66 return mScreenState; 67 } 68 69 public boolean isOnBattery() { 70 return mForceOnBattery ? true : super.isOnBattery(); 71 } 72 73 public void forceRecordAllHistory() { 74 mHaveBatteryLevel = true; 75 mRecordingHistory = true; 76 mRecordAllHistory = true; 77 } 78 79 public TimeBase getOnBatteryBackgroundTimeBase(int uid) { 80 return getUidStatsLocked(uid).mOnBatteryBackgroundTimeBase; 81 } 82 83 public TimeBase getOnBatteryScreenOffBackgroundTimeBase(int uid) { 84 return getUidStatsLocked(uid).mOnBatteryScreenOffBackgroundTimeBase; 85 } 86 87 public MockBatteryStatsImpl setPowerProfile(PowerProfile powerProfile) { 88 mPowerProfile = powerProfile; 89 return this; 90 } 91 92 public MockBatteryStatsImpl setKernelUidCpuFreqTimeReader(KernelUidCpuFreqTimeReader reader) { 93 mKernelUidCpuFreqTimeReader = reader; 94 return this; 95 } 96 97 public MockBatteryStatsImpl setKernelUidCpuActiveTimeReader(KernelUidCpuActiveTimeReader reader) { 98 mKernelUidCpuActiveTimeReader = reader; 99 return this; 100 } 101 102 public MockBatteryStatsImpl setKernelUidCpuClusterTimeReader(KernelUidCpuClusterTimeReader reader) { 103 mKernelUidCpuClusterTimeReader = reader; 104 return this; 105 } 106 107 public MockBatteryStatsImpl setKernelUidCpuTimeReader(KernelUidCpuTimeReader reader) { 108 mKernelUidCpuTimeReader = reader; 109 return this; 110 } 111 112 public MockBatteryStatsImpl setKernelSingleUidTimeReader(KernelSingleUidTimeReader reader) { 113 mKernelSingleUidTimeReader = reader; 114 return this; 115 } 116 117 public MockBatteryStatsImpl setKernelCpuSpeedReaders(KernelCpuSpeedReader[] readers) { 118 mKernelCpuSpeedReaders = readers; 119 return this; 120 } 121 122 public MockBatteryStatsImpl setUserInfoProvider(UserInfoProvider provider) { 123 mUserInfoProvider = provider; 124 return this; 125 } 126 127 public MockBatteryStatsImpl setPartialTimers(ArrayList<StopwatchTimer> partialTimers) { 128 mPartialTimers = partialTimers; 129 return this; 130 } 131 132 public MockBatteryStatsImpl setLastPartialTimers(ArrayList<StopwatchTimer> lastPartialTimers) { 133 mLastPartialTimers = lastPartialTimers; 134 return this; 135 } 136 137 public MockBatteryStatsImpl setOnBatteryInternal(boolean onBatteryInternal) { 138 mOnBatteryInternal = onBatteryInternal; 139 return this; 140 } 141 142 public SparseIntArray getPendingUids() { 143 return mPendingUids; 144 } 145 146 private class DummyExternalStatsSync implements ExternalStatsSync { 147 @Override 148 public Future<?> scheduleSync(String reason, int flags) { 149 return null; 150 } 151 152 @Override 153 public Future<?> scheduleCpuSyncDueToRemovedUid(int uid) { 154 return null; 155 } 156 157 @Override 158 public Future<?> scheduleCpuSyncDueToSettingChange() { 159 return null; 160 } 161 162 @Override 163 public Future<?> scheduleReadProcStateCpuTimes(boolean onBattery, 164 boolean onBatteryScreenOff, long delayMillis) { 165 return null; 166 } 167 168 @Override 169 public Future<?> scheduleCopyFromAllUidsCpuTimes( 170 boolean onBattery, boolean onBatteryScreenOff) { 171 return null; 172 } 173 174 @Override 175 public Future<?> scheduleCpuSyncDueToScreenStateChange( 176 boolean onBattery, boolean onBatteryScreenOff) { 177 return null; 178 } 179 180 @Override 181 public Future<?> scheduleCpuSyncDueToWakelockChange(long delayMillis) { 182 return null; 183 } 184 185 @Override 186 public void cancelCpuSyncDueToWakelockChange() { 187 } 188 } 189} 190 191