1 /* 2 * Copyright (C) 2017 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 17 package com.android.tv.util; 18 19 import android.content.Context; 20 21 import com.android.tv.InputSessionManager; 22 import com.android.tv.MainActivityWrapper; 23 import com.android.tv.TvApplication; 24 import com.android.tv.TvSingletons; 25 import com.android.tv.analytics.Analytics; 26 import com.android.tv.analytics.Tracker; 27 import com.android.tv.common.flags.impl.DefaultBackendKnobsFlags; 28 import com.android.tv.common.flags.impl.DefaultCloudEpgFlags; 29 import com.android.tv.common.flags.impl.DefaultUiFlags; 30 import com.android.tv.common.recording.RecordingStorageStatusManager; 31 import com.android.tv.common.singletons.HasSingletons; 32 import com.android.tv.common.util.Clock; 33 import com.android.tv.data.ChannelDataManager; 34 import com.android.tv.data.PreviewDataManager; 35 import com.android.tv.data.ProgramDataManager; 36 import com.android.tv.data.epg.EpgReader; 37 import com.android.tv.dvr.DvrDataManager; 38 import com.android.tv.dvr.DvrManager; 39 import com.android.tv.dvr.DvrScheduleManager; 40 import com.android.tv.dvr.DvrWatchedPositionManager; 41 import com.android.tv.dvr.recorder.RecordingScheduler; 42 import com.android.tv.perf.PerformanceMonitor; 43 import com.android.tv.testing.fakes.FakeClock; 44 import com.android.tv.tunerinputcontroller.BuiltInTunerManager; 45 46 import com.google.common.base.Optional; 47 48 import dagger.Lazy; 49 50 import java.util.concurrent.Executor; 51 52 /** Mock {@link TvSingletons} class. */ 53 public class MockTvSingletons implements TvSingletons, HasSingletons<TvSingletons> { 54 public final FakeClock fakeClock = FakeClock.createWithCurrentTime(); 55 56 private final TvApplication mApp; 57 private final DefaultBackendKnobsFlags mBackendFlags = new DefaultBackendKnobsFlags(); 58 private final DefaultCloudEpgFlags mCloudEpgFlags = new DefaultCloudEpgFlags(); 59 private final DefaultUiFlags mUiFlags = new DefaultUiFlags(); 60 private PerformanceMonitor mPerformanceMonitor; 61 MockTvSingletons(Context context)62 public MockTvSingletons(Context context) { 63 mApp = (TvApplication) context.getApplicationContext(); 64 } 65 66 @Override getAnalytics()67 public Analytics getAnalytics() { 68 return mApp.getAnalytics(); 69 } 70 71 @Override handleInputCountChanged()72 public void handleInputCountChanged() {} 73 74 @Override getChannelDataManager()75 public ChannelDataManager getChannelDataManager() { 76 return mApp.getChannelDataManager(); 77 } 78 79 @Override getProgramDataManager()80 public ProgramDataManager getProgramDataManager() { 81 return mApp.getProgramDataManager(); 82 } 83 84 @Override getPreviewDataManager()85 public PreviewDataManager getPreviewDataManager() { 86 return mApp.getPreviewDataManager(); 87 } 88 89 @Override getDvrDataManager()90 public DvrDataManager getDvrDataManager() { 91 return mApp.getDvrDataManager(); 92 } 93 94 @Override getClock()95 public Clock getClock() { 96 return fakeClock; 97 } 98 99 @Override getRecordingStorageStatusManager()100 public RecordingStorageStatusManager getRecordingStorageStatusManager() { 101 return mApp.getRecordingStorageStatusManager(); 102 } 103 104 @Override getDvrScheduleManager()105 public DvrScheduleManager getDvrScheduleManager() { 106 return mApp.getDvrScheduleManager(); 107 } 108 109 @Override getDvrManager()110 public DvrManager getDvrManager() { 111 return mApp.getDvrManager(); 112 } 113 114 @Override getRecordingScheduler()115 public RecordingScheduler getRecordingScheduler() { 116 return mApp.getRecordingScheduler(); 117 } 118 119 @Override getDvrWatchedPositionManager()120 public DvrWatchedPositionManager getDvrWatchedPositionManager() { 121 return mApp.getDvrWatchedPositionManager(); 122 } 123 124 @Override getInputSessionManager()125 public InputSessionManager getInputSessionManager() { 126 return mApp.getInputSessionManager(); 127 } 128 129 @Override getTracker()130 public Tracker getTracker() { 131 return mApp.getTracker(); 132 } 133 134 @Override getTvInputManagerHelper()135 public TvInputManagerHelper getTvInputManagerHelper() { 136 return mApp.getTvInputManagerHelper(); 137 } 138 139 @Override providesEpgReader()140 public Lazy<EpgReader> providesEpgReader() { 141 return mApp.providesEpgReader(); 142 } 143 144 @Override getSetupUtils()145 public SetupUtils getSetupUtils() { 146 return mApp.getSetupUtils(); 147 } 148 149 @Override getBuiltInTunerManager()150 public Optional<BuiltInTunerManager> getBuiltInTunerManager() { 151 return mApp.getBuiltInTunerManager(); 152 } 153 154 @Override getMainActivityWrapper()155 public MainActivityWrapper getMainActivityWrapper() { 156 return mApp.getMainActivityWrapper(); 157 } 158 159 @Override isRunningInMainProcess()160 public boolean isRunningInMainProcess() { 161 return mApp.isRunningInMainProcess(); 162 } 163 164 @Override getPerformanceMonitor()165 public PerformanceMonitor getPerformanceMonitor() { 166 return mPerformanceMonitor != null ? mPerformanceMonitor : mApp.getPerformanceMonitor(); 167 } 168 setPerformanceMonitor(PerformanceMonitor performanceMonitor)169 public void setPerformanceMonitor(PerformanceMonitor performanceMonitor) { 170 mPerformanceMonitor = performanceMonitor; 171 } 172 173 @Override getCloudEpgFlags()174 public DefaultCloudEpgFlags getCloudEpgFlags() { 175 return mCloudEpgFlags; 176 } 177 178 @Override getUiFlags()179 public DefaultUiFlags getUiFlags() { 180 return mUiFlags; 181 } 182 183 @Override getDbExecutor()184 public Executor getDbExecutor() { 185 return mApp.getDbExecutor(); 186 } 187 188 @Override getBackendKnobs()189 public DefaultBackendKnobsFlags getBackendKnobs() { 190 return mBackendFlags; 191 } 192 193 @Override getBuildType()194 public BuildType getBuildType() { 195 return BuildType.ENG; 196 } 197 198 @Override singletons()199 public TvSingletons singletons() { 200 return this; 201 } 202 } 203