MockBatteryStatsImpl.java revision b2f83c16d6669456b237970327ebb9c92a4789f0
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.util.SparseIntArray;
20
21import java.util.ArrayList;
22import java.util.concurrent.Future;
23
24/**
25 * Mocks a BatteryStatsImpl object.
26 */
27public class MockBatteryStatsImpl extends BatteryStatsImpl {
28    public BatteryStatsImpl.Clocks clocks;
29    public boolean mForceOnBattery;
30
31    MockBatteryStatsImpl(Clocks clocks) {
32        super(clocks);
33        this.clocks = mClocks;
34        mScreenOnTimer = new BatteryStatsImpl.StopwatchTimer(clocks, null, -1, null,
35                mOnBatteryTimeBase);
36        mScreenDozeTimer = new BatteryStatsImpl.StopwatchTimer(clocks, null, -1, null,
37                mOnBatteryTimeBase);
38        mBluetoothScanTimer = new StopwatchTimer(mClocks, null, -14, null, mOnBatteryTimeBase);
39        setExternalStatsSyncLocked(new DummyExternalStatsSync());
40    }
41
42    MockBatteryStatsImpl() {
43        this(new MockClocks());
44    }
45
46    public TimeBase getOnBatteryTimeBase() {
47        return mOnBatteryTimeBase;
48    }
49
50    public TimeBase getOnBatteryScreenOffTimeBase() {
51        return mOnBatteryScreenOffTimeBase;
52    }
53
54    public int getScreenState() {
55        return mScreenState;
56    }
57
58    public boolean isOnBattery() {
59        return mForceOnBattery ? true : super.isOnBattery();
60    }
61
62    public TimeBase getOnBatteryBackgroundTimeBase(int uid) {
63        return getUidStatsLocked(uid).mOnBatteryBackgroundTimeBase;
64    }
65
66    public TimeBase getOnBatteryScreenOffBackgroundTimeBase(int uid) {
67        return getUidStatsLocked(uid).mOnBatteryScreenOffBackgroundTimeBase;
68    }
69
70    public MockBatteryStatsImpl setPowerProfile(PowerProfile powerProfile) {
71        mPowerProfile = powerProfile;
72        return this;
73    }
74
75    public MockBatteryStatsImpl setKernelUidCpuFreqTimeReader(KernelUidCpuFreqTimeReader reader) {
76        mKernelUidCpuFreqTimeReader = reader;
77        return this;
78    }
79
80    public MockBatteryStatsImpl setKernelUidCpuTimeReader(KernelUidCpuTimeReader reader) {
81        mKernelUidCpuTimeReader = reader;
82        return this;
83    }
84
85    public MockBatteryStatsImpl setKernelSingleUidTimeReader(KernelSingleUidTimeReader reader) {
86        mKernelSingleUidTimeReader = reader;
87        return this;
88    }
89
90    public MockBatteryStatsImpl setKernelCpuSpeedReaders(KernelCpuSpeedReader[] readers) {
91        mKernelCpuSpeedReaders = readers;
92        return this;
93    }
94
95    public MockBatteryStatsImpl setUserInfoProvider(UserInfoProvider provider) {
96        mUserInfoProvider = provider;
97        return this;
98    }
99
100    public MockBatteryStatsImpl setPartialTimers(ArrayList<StopwatchTimer> partialTimers) {
101        mPartialTimers = partialTimers;
102        return this;
103    }
104
105    public MockBatteryStatsImpl setLastPartialTimers(ArrayList<StopwatchTimer> lastPartialTimers) {
106        mLastPartialTimers = lastPartialTimers;
107        return this;
108    }
109
110    public MockBatteryStatsImpl setOnBatteryInternal(boolean onBatteryInternal) {
111        mOnBatteryInternal = onBatteryInternal;
112        return this;
113    }
114
115    public SparseIntArray getPendingUids() {
116        return mPendingUids;
117    }
118
119    private class DummyExternalStatsSync implements ExternalStatsSync {
120        @Override
121        public Future<?> scheduleSync(String reason, int flags) {
122            return null;
123        }
124
125        @Override
126        public Future<?> scheduleCpuSyncDueToRemovedUid(int uid) {
127            return null;
128        }
129
130        @Override
131        public Future<?> scheduleReadProcStateCpuTimes() {
132            return null;
133        }
134
135        @Override
136        public Future<?> scheduleCopyFromAllUidsCpuTimes() {
137            return null;
138        }
139
140    }
141}
142
143