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