• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.testing;
18 
19 import android.app.Application;
20 import android.content.ComponentName;
21 import android.content.Context;
22 import android.content.Intent;
23 import android.media.tv.TvInputManager;
24 import android.os.AsyncTask;
25 import com.android.tv.InputSessionManager;
26 import com.android.tv.MainActivityWrapper;
27 import com.android.tv.TvSingletons;
28 import com.android.tv.analytics.Analytics;
29 import com.android.tv.analytics.Tracker;
30 import com.android.tv.common.BaseApplication;
31 import com.android.tv.common.config.api.RemoteConfig;
32 import com.android.tv.common.experiments.ExperimentLoader;
33 import com.android.tv.common.recording.RecordingStorageStatusManager;
34 import com.android.tv.common.util.Clock;
35 import com.android.tv.data.ChannelDataManager;
36 import com.android.tv.data.PreviewDataManager;
37 import com.android.tv.data.ProgramDataManager;
38 import com.android.tv.data.epg.EpgFetcher;
39 import com.android.tv.data.epg.EpgReader;
40 import com.android.tv.dvr.DvrDataManager;
41 import com.android.tv.dvr.DvrManager;
42 import com.android.tv.dvr.DvrScheduleManager;
43 import com.android.tv.dvr.DvrWatchedPositionManager;
44 import com.android.tv.dvr.recorder.RecordingScheduler;
45 import com.android.tv.perf.PerformanceMonitor;
46 import com.android.tv.perf.StubPerformanceMonitor;
47 import com.android.tv.testing.dvr.DvrDataManagerInMemoryImpl;
48 import com.android.tv.testing.testdata.TestData;
49 import com.android.tv.tuner.TunerInputController;
50 import com.android.tv.util.SetupUtils;
51 import com.android.tv.util.TvInputManagerHelper;
52 import com.android.tv.util.account.AccountHelper;
53 import java.util.concurrent.Executor;
54 import javax.inject.Provider;
55 
56 /** Test application for Live TV. */
57 public class TestSingletonApp extends Application implements TvSingletons {
58     public final FakeClock fakeClock = FakeClock.createWithCurrentTime();
59     public final FakeEpgReader epgReader = new FakeEpgReader(fakeClock);
60     public final FakeRemoteConfig remoteConfig = new FakeRemoteConfig();
61     public final FakeEpgFetcher epgFetcher = new FakeEpgFetcher();
62 
63     public FakeTvInputManagerHelper tvInputManagerHelper;
64     public SetupUtils setupUtils;
65     public DvrManager dvrManager;
66     public DvrDataManager mDvrDataManager;
67 
68     private final Provider<EpgReader> mEpgReaderProvider = SingletonProvider.create(epgReader);
69     private TunerInputController mTunerInputController;
70     private PerformanceMonitor mPerformanceMonitor;
71     private ChannelDataManager mChannelDataManager;
72 
73     @Override
onCreate()74     public void onCreate() {
75         super.onCreate();
76         mTunerInputController =
77                 new TunerInputController(
78                         ComponentName.unflattenFromString(getEmbeddedTunerInputId()));
79 
80         tvInputManagerHelper = new FakeTvInputManagerHelper(this);
81         setupUtils = SetupUtils.createForTvSingletons(this);
82         tvInputManagerHelper.start();
83         mChannelDataManager = new ChannelDataManager(this, tvInputManagerHelper);
84         mChannelDataManager.start();
85         mDvrDataManager = new DvrDataManagerInMemoryImpl(this, fakeClock);
86         // HACK reset the singleton for tests
87         BaseApplication.sSingletons = this;
88     }
89 
loadTestData(TestData testData, long durationMs)90     public void loadTestData(TestData testData, long durationMs) {
91         tvInputManagerHelper
92                 .getFakeTvInputManager()
93                 .add(testData.getTvInputInfo(), TvInputManager.INPUT_STATE_CONNECTED);
94         testData.init(this, fakeClock, durationMs);
95     }
96 
97     @Override
getAnalytics()98     public Analytics getAnalytics() {
99         return null;
100     }
101 
102     @Override
handleInputCountChanged()103     public void handleInputCountChanged() {}
104 
105     @Override
getChannelDataManager()106     public ChannelDataManager getChannelDataManager() {
107         return mChannelDataManager;
108     }
109 
110     @Override
isChannelDataManagerLoadFinished()111     public boolean isChannelDataManagerLoadFinished() {
112         return false;
113     }
114 
115     @Override
getProgramDataManager()116     public ProgramDataManager getProgramDataManager() {
117         return null;
118     }
119 
120     @Override
isProgramDataManagerCurrentProgramsLoadFinished()121     public boolean isProgramDataManagerCurrentProgramsLoadFinished() {
122         return false;
123     }
124 
125     @Override
getPreviewDataManager()126     public PreviewDataManager getPreviewDataManager() {
127         return null;
128     }
129 
130     @Override
getDvrDataManager()131     public DvrDataManager getDvrDataManager() {
132         return mDvrDataManager;
133     }
134 
135     @Override
getDvrScheduleManager()136     public DvrScheduleManager getDvrScheduleManager() {
137         return null;
138     }
139 
140     @Override
getDvrManager()141     public DvrManager getDvrManager() {
142         return dvrManager;
143     }
144 
145     @Override
getRecordingScheduler()146     public RecordingScheduler getRecordingScheduler() {
147         return null;
148     }
149 
150     @Override
getDvrWatchedPositionManager()151     public DvrWatchedPositionManager getDvrWatchedPositionManager() {
152         return null;
153     }
154 
155     @Override
getInputSessionManager()156     public InputSessionManager getInputSessionManager() {
157         return null;
158     }
159 
160     @Override
getTracker()161     public Tracker getTracker() {
162         return null;
163     }
164 
165     @Override
getTvInputManagerHelper()166     public TvInputManagerHelper getTvInputManagerHelper() {
167         return tvInputManagerHelper;
168     }
169 
170     @Override
providesEpgReader()171     public Provider<EpgReader> providesEpgReader() {
172         return mEpgReaderProvider;
173     }
174 
175     @Override
getEpgFetcher()176     public EpgFetcher getEpgFetcher() {
177         return epgFetcher;
178     }
179 
180     @Override
getSetupUtils()181     public SetupUtils getSetupUtils() {
182         return setupUtils;
183     }
184 
185     @Override
getTunerInputController()186     public TunerInputController getTunerInputController() {
187         return mTunerInputController;
188     }
189 
190     @Override
getExperimentLoader()191     public ExperimentLoader getExperimentLoader() {
192         return new ExperimentLoader();
193     }
194 
195     @Override
getMainActivityWrapper()196     public MainActivityWrapper getMainActivityWrapper() {
197         return null;
198     }
199 
200     @Override
getAccountHelper()201     public AccountHelper getAccountHelper() {
202         return null;
203     }
204 
205     @Override
getClock()206     public Clock getClock() {
207         return fakeClock;
208     }
209 
210     @Override
getRecordingStorageStatusManager()211     public RecordingStorageStatusManager getRecordingStorageStatusManager() {
212         return null;
213     }
214 
215     @Override
getRemoteConfig()216     public RemoteConfig getRemoteConfig() {
217         return remoteConfig;
218     }
219 
220     @Override
getTunerSetupIntent(Context context)221     public Intent getTunerSetupIntent(Context context) {
222         return null;
223     }
224 
225     @Override
isRunningInMainProcess()226     public boolean isRunningInMainProcess() {
227         return false;
228     }
229 
230     @Override
getPerformanceMonitor()231     public PerformanceMonitor getPerformanceMonitor() {
232         if (mPerformanceMonitor == null) {
233             mPerformanceMonitor = new StubPerformanceMonitor();
234         }
235         return mPerformanceMonitor;
236     }
237 
238     @Override
getEmbeddedTunerInputId()239     public String getEmbeddedTunerInputId() {
240         return "com.android.tv/.tuner.tvinput.TunerTvInputService";
241     }
242 
243     @Override
getDbExecutor()244     public Executor getDbExecutor() {
245         return AsyncTask.SERIAL_EXECUTOR;
246     }
247 }
248