aboutsummaryrefslogtreecommitdiff
path: root/tests/common/src/com/android/tv/testing/TestSingletonApp.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common/src/com/android/tv/testing/TestSingletonApp.java')
-rw-r--r--tests/common/src/com/android/tv/testing/TestSingletonApp.java247
1 files changed, 247 insertions, 0 deletions
diff --git a/tests/common/src/com/android/tv/testing/TestSingletonApp.java b/tests/common/src/com/android/tv/testing/TestSingletonApp.java
new file mode 100644
index 00000000..f55ed8d4
--- /dev/null
+++ b/tests/common/src/com/android/tv/testing/TestSingletonApp.java
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.tv.testing;
+
+import android.app.Application;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.media.tv.TvInputManager;
+import android.os.AsyncTask;
+import com.android.tv.InputSessionManager;
+import com.android.tv.MainActivityWrapper;
+import com.android.tv.TvSingletons;
+import com.android.tv.analytics.Analytics;
+import com.android.tv.analytics.Tracker;
+import com.android.tv.common.BaseApplication;
+import com.android.tv.common.config.api.RemoteConfig;
+import com.android.tv.common.experiments.ExperimentLoader;
+import com.android.tv.common.recording.RecordingStorageStatusManager;
+import com.android.tv.common.util.Clock;
+import com.android.tv.data.ChannelDataManager;
+import com.android.tv.data.PreviewDataManager;
+import com.android.tv.data.ProgramDataManager;
+import com.android.tv.data.epg.EpgFetcher;
+import com.android.tv.data.epg.EpgReader;
+import com.android.tv.dvr.DvrDataManager;
+import com.android.tv.dvr.DvrManager;
+import com.android.tv.dvr.DvrScheduleManager;
+import com.android.tv.dvr.DvrWatchedPositionManager;
+import com.android.tv.dvr.recorder.RecordingScheduler;
+import com.android.tv.perf.PerformanceMonitor;
+import com.android.tv.perf.StubPerformanceMonitor;
+import com.android.tv.testing.dvr.DvrDataManagerInMemoryImpl;
+import com.android.tv.testing.testdata.TestData;
+import com.android.tv.tuner.TunerInputController;
+import com.android.tv.util.SetupUtils;
+import com.android.tv.util.TvInputManagerHelper;
+import com.android.tv.util.account.AccountHelper;
+import java.util.concurrent.Executor;
+import javax.inject.Provider;
+
+/** Test application for Live TV. */
+public class TestSingletonApp extends Application implements TvSingletons {
+ public final FakeClock fakeClock = FakeClock.createWithCurrentTime();
+ public final FakeEpgReader epgReader = new FakeEpgReader(fakeClock);
+ public final FakeRemoteConfig remoteConfig = new FakeRemoteConfig();
+ public final FakeEpgFetcher epgFetcher = new FakeEpgFetcher();
+
+ public FakeTvInputManagerHelper tvInputManagerHelper;
+ public SetupUtils setupUtils;
+ public DvrManager dvrManager;
+ public DvrDataManager mDvrDataManager;
+
+ private final Provider<EpgReader> mEpgReaderProvider = SingletonProvider.create(epgReader);
+ private TunerInputController mTunerInputController;
+ private PerformanceMonitor mPerformanceMonitor;
+ private ChannelDataManager mChannelDataManager;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mTunerInputController =
+ new TunerInputController(
+ ComponentName.unflattenFromString(getEmbeddedTunerInputId()));
+
+ tvInputManagerHelper = new FakeTvInputManagerHelper(this);
+ setupUtils = SetupUtils.createForTvSingletons(this);
+ tvInputManagerHelper.start();
+ mChannelDataManager = new ChannelDataManager(this, tvInputManagerHelper);
+ mChannelDataManager.start();
+ mDvrDataManager = new DvrDataManagerInMemoryImpl(this, fakeClock);
+ // HACK reset the singleton for tests
+ BaseApplication.sSingletons = this;
+ }
+
+ public void loadTestData(TestData testData, long durationMs) {
+ tvInputManagerHelper
+ .getFakeTvInputManager()
+ .add(testData.getTvInputInfo(), TvInputManager.INPUT_STATE_CONNECTED);
+ testData.init(this, fakeClock, durationMs);
+ }
+
+ @Override
+ public Analytics getAnalytics() {
+ return null;
+ }
+
+ @Override
+ public void handleInputCountChanged() {}
+
+ @Override
+ public ChannelDataManager getChannelDataManager() {
+ return mChannelDataManager;
+ }
+
+ @Override
+ public boolean isChannelDataManagerLoadFinished() {
+ return false;
+ }
+
+ @Override
+ public ProgramDataManager getProgramDataManager() {
+ return null;
+ }
+
+ @Override
+ public boolean isProgramDataManagerCurrentProgramsLoadFinished() {
+ return false;
+ }
+
+ @Override
+ public PreviewDataManager getPreviewDataManager() {
+ return null;
+ }
+
+ @Override
+ public DvrDataManager getDvrDataManager() {
+ return mDvrDataManager;
+ }
+
+ @Override
+ public DvrScheduleManager getDvrScheduleManager() {
+ return null;
+ }
+
+ @Override
+ public DvrManager getDvrManager() {
+ return dvrManager;
+ }
+
+ @Override
+ public RecordingScheduler getRecordingScheduler() {
+ return null;
+ }
+
+ @Override
+ public DvrWatchedPositionManager getDvrWatchedPositionManager() {
+ return null;
+ }
+
+ @Override
+ public InputSessionManager getInputSessionManager() {
+ return null;
+ }
+
+ @Override
+ public Tracker getTracker() {
+ return null;
+ }
+
+ @Override
+ public TvInputManagerHelper getTvInputManagerHelper() {
+ return tvInputManagerHelper;
+ }
+
+ @Override
+ public Provider<EpgReader> providesEpgReader() {
+ return mEpgReaderProvider;
+ }
+
+ @Override
+ public EpgFetcher getEpgFetcher() {
+ return epgFetcher;
+ }
+
+ @Override
+ public SetupUtils getSetupUtils() {
+ return setupUtils;
+ }
+
+ @Override
+ public TunerInputController getTunerInputController() {
+ return mTunerInputController;
+ }
+
+ @Override
+ public ExperimentLoader getExperimentLoader() {
+ return new ExperimentLoader();
+ }
+
+ @Override
+ public MainActivityWrapper getMainActivityWrapper() {
+ return null;
+ }
+
+ @Override
+ public AccountHelper getAccountHelper() {
+ return null;
+ }
+
+ @Override
+ public Clock getClock() {
+ return fakeClock;
+ }
+
+ @Override
+ public RecordingStorageStatusManager getRecordingStorageStatusManager() {
+ return null;
+ }
+
+ @Override
+ public RemoteConfig getRemoteConfig() {
+ return remoteConfig;
+ }
+
+ @Override
+ public Intent getTunerSetupIntent(Context context) {
+ return null;
+ }
+
+ @Override
+ public boolean isRunningInMainProcess() {
+ return false;
+ }
+
+ @Override
+ public PerformanceMonitor getPerformanceMonitor() {
+ if (mPerformanceMonitor == null) {
+ mPerformanceMonitor = new StubPerformanceMonitor();
+ }
+ return mPerformanceMonitor;
+ }
+
+ @Override
+ public String getEmbeddedTunerInputId() {
+ return "com.android.tv/.tuner.tvinput.TunerTvInputService";
+ }
+
+ @Override
+ public Executor getDbExecutor() {
+ return AsyncTask.SERIAL_EXECUTOR;
+ }
+}