aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornchalko <nchalko@google.com>2019-01-08 15:11:56 -0800
committerNick Chalko <nchalko@google.com>2019-02-12 22:10:25 -0800
commit8d29ba6d5e9df1238f2bee30f7e8afa8b7fa9c85 (patch)
tree3e2df6ead0cbc5971c5b9c8efcf3f78a860217c3
parent62efccd567f95e29a835f172b57b8461c83695af (diff)
downloadTV-8d29ba6d5e9df1238f2bee30f7e8afa8b7fa9c85.tar.gz
Inject TunerTsStreamManager
PiperOrigin-RevId: 228408250 Change-Id: Ie5f41a1f95353238bc4e3c898b600f844db68e21
-rw-r--r--tests/common/src/com/android/tv/testing/TestSingletonApp.java5
-rw-r--r--tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java16
-rw-r--r--tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTunerComponent.java2
-rw-r--r--tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java16
-rw-r--r--tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTunerComponent.java2
-rw-r--r--tuner/src/com/android/tv/tuner/modules/TunerModule.java3
-rw-r--r--tuner/src/com/android/tv/tuner/source/TsDataSourceManager.java8
-rw-r--r--tuner/src/com/android/tv/tuner/source/TunerSourceModule.java30
-rw-r--r--tuner/src/com/android/tv/tuner/source/TunerTsStreamerManager.java24
-rw-r--r--tuner/src/com/android/tv/tuner/tvinput/BaseTunerTvInputService.java3
10 files changed, 78 insertions, 31 deletions
diff --git a/tests/common/src/com/android/tv/testing/TestSingletonApp.java b/tests/common/src/com/android/tv/testing/TestSingletonApp.java
index 29068b14..00f64ce5 100644
--- a/tests/common/src/com/android/tv/testing/TestSingletonApp.java
+++ b/tests/common/src/com/android/tv/testing/TestSingletonApp.java
@@ -50,6 +50,7 @@ import com.android.tv.testing.dvr.DvrDataManagerInMemoryImpl;
import com.android.tv.testing.testdata.TestData;
import com.android.tv.tuner.singletons.TunerSingletons;
import com.android.tv.tuner.source.TsDataSourceManagerFactory;
+import com.android.tv.tuner.source.TunerTsStreamerManager;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactory;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactory.HasTunerSessionFactory;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl;
@@ -83,11 +84,13 @@ public class TestSingletonApp extends Application
private final DefaultUiFlags mUiFlags = new DefaultUiFlags();
private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags =
new DefaultConcurrentDvrPlaybackFlags();
+ private final TsDataSourceManagerFactory mTsDataSourceManagerFactory =
+ new TsDataSourceManagerFactory(() -> new TunerTsStreamerManager());
private final TunerSessionFactoryImpl mTunerSessionFactory =
new TunerSessionFactoryImpl(
new DefaultExoplayer2Flags(),
mConcurrentDvrPlaybackFlags,
- new TsDataSourceManagerFactory());
+ mTsDataSourceManagerFactory);
private PerformanceMonitor mPerformanceMonitor;
private ChannelDataManager mChannelDataManager;
diff --git a/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java b/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java
index ef0c5a26..ceb8a977 100644
--- a/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java
+++ b/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java
@@ -30,6 +30,7 @@ import com.android.tv.tuner.source.TsDataSourceManagerFactory;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactory;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl;
import dagger.android.AndroidInjector;
+import javax.inject.Inject;
/** The top level application for Sample DVB Tuner. */
public class SampleDvbTuner extends BaseApplication
@@ -40,11 +41,16 @@ public class SampleDvbTuner extends BaseApplication
private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags =
new DefaultConcurrentDvrPlaybackFlags();
private final DefaultExoplayer2Flags mExoplayer2Flags = new DefaultExoplayer2Flags();
- private final TunerSessionFactoryImpl mTunerSessionFactory =
- new TunerSessionFactoryImpl(
- mExoplayer2Flags,
- mConcurrentDvrPlaybackFlags,
- new TsDataSourceManagerFactory());
+ @Inject TsDataSourceManagerFactory mTsDataSourceManagerFactory;
+ private TunerSessionFactoryImpl mTunerSessionFactory;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mTunerSessionFactory =
+ new TunerSessionFactoryImpl(
+ mExoplayer2Flags, mConcurrentDvrPlaybackFlags, mTsDataSourceManagerFactory);
+ }
@Override
protected AndroidInjector<SampleDvbTuner> applicationInjector() {
diff --git a/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTunerComponent.java b/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTunerComponent.java
index cb529cef..e6c80ea9 100644
--- a/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTunerComponent.java
+++ b/tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTunerComponent.java
@@ -18,7 +18,9 @@ package com.android.tv.tuner.sample.dvb.app;
import dagger.Component;
import dagger.android.AndroidInjectionModule;
import dagger.android.AndroidInjector;
+import javax.inject.Singleton;
/** Dagger component for {@link SampleDvbTuner}. */
+@Singleton
@Component(modules = {AndroidInjectionModule.class, SampleDvbTunerModule.class})
public interface SampleDvbTunerComponent extends AndroidInjector<SampleDvbTuner> {}
diff --git a/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java b/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java
index 99634f9e..e1101039 100644
--- a/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java
+++ b/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java
@@ -30,6 +30,7 @@ import com.android.tv.tuner.source.TsDataSourceManagerFactory;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactory;
import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl;
import dagger.android.AndroidInjector;
+import javax.inject.Inject;
/** The top level application for Sample DVB Tuner. */
public class SampleNetworkTuner extends BaseApplication
@@ -40,11 +41,16 @@ public class SampleNetworkTuner extends BaseApplication
private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags =
new DefaultConcurrentDvrPlaybackFlags();
private final DefaultExoplayer2Flags mExoplayer2Flags = new DefaultExoplayer2Flags();
- private final TunerSessionFactoryImpl mTunerSessionFactory =
- new TunerSessionFactoryImpl(
- mExoplayer2Flags,
- mConcurrentDvrPlaybackFlags,
- new TsDataSourceManagerFactory());
+ @Inject TsDataSourceManagerFactory mTsDataSourceManagerFactory;
+ private TunerSessionFactoryImpl mTunerSessionFactory;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ mTunerSessionFactory =
+ new TunerSessionFactoryImpl(
+ mExoplayer2Flags, mConcurrentDvrPlaybackFlags, mTsDataSourceManagerFactory);
+ }
@Override
protected AndroidInjector<SampleNetworkTuner> applicationInjector() {
diff --git a/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTunerComponent.java b/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTunerComponent.java
index 71a20be5..b10105b3 100644
--- a/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTunerComponent.java
+++ b/tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTunerComponent.java
@@ -18,7 +18,9 @@ package com.android.tv.tuner.sample.network.app;
import dagger.Component;
import dagger.android.AndroidInjectionModule;
import dagger.android.AndroidInjector;
+import javax.inject.Singleton;
/** Dagger component for {@link SampleNetworkTuner}. */
+@Singleton
@Component(modules = {AndroidInjectionModule.class, SampleNetworkTunerModule.class})
public interface SampleNetworkTunerComponent extends AndroidInjector<SampleNetworkTuner> {}
diff --git a/tuner/src/com/android/tv/tuner/modules/TunerModule.java b/tuner/src/com/android/tv/tuner/modules/TunerModule.java
index b0b58e86..4843f383 100644
--- a/tuner/src/com/android/tv/tuner/modules/TunerModule.java
+++ b/tuner/src/com/android/tv/tuner/modules/TunerModule.java
@@ -15,8 +15,9 @@
*/
package com.android.tv.tuner.modules;
+import com.android.tv.tuner.source.TunerSourceModule;
import dagger.Module;
/** Dagger module for TV Tuners. */
-@Module(includes = {TunerSingletonsModule.class})
+@Module(includes = {TunerSingletonsModule.class, TunerSourceModule.class})
public class TunerModule {}
diff --git a/tuner/src/com/android/tv/tuner/source/TsDataSourceManager.java b/tuner/src/com/android/tv/tuner/source/TsDataSourceManager.java
index a53f7869..21679307 100644
--- a/tuner/src/com/android/tv/tuner/source/TsDataSourceManager.java
+++ b/tuner/src/com/android/tv/tuner/source/TsDataSourceManager.java
@@ -23,6 +23,7 @@ import com.android.tv.tuner.data.TunerChannel;
import com.android.tv.tuner.data.nano.Channel;
import com.android.tv.tuner.ts.EventDetector.EventListener;
import com.google.auto.factory.AutoFactory;
+import com.google.auto.factory.Provided;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
@@ -40,13 +41,14 @@ public class TsDataSourceManager {
private final int mId = sSequenceId.incrementAndGet();
private final boolean mIsRecording;
- private final TunerTsStreamerManager mTunerStreamerManager =
- TunerTsStreamerManager.getInstance();
+ private final TunerTsStreamerManager mTunerStreamerManager;
private boolean mKeepTuneStatus;
- TsDataSourceManager(boolean isRecording) {
+ TsDataSourceManager(
+ boolean isRecording, @Provided TunerTsStreamerManager tunerStreamerManager) {
mIsRecording = isRecording;
+ this.mTunerStreamerManager = tunerStreamerManager;
mKeepTuneStatus = true;
}
diff --git a/tuner/src/com/android/tv/tuner/source/TunerSourceModule.java b/tuner/src/com/android/tv/tuner/source/TunerSourceModule.java
new file mode 100644
index 00000000..656f4a04
--- /dev/null
+++ b/tuner/src/com/android/tv/tuner/source/TunerSourceModule.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2019 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.tuner.source;
+
+import dagger.Module;
+import dagger.Provides;
+import javax.inject.Singleton;
+
+/** Dagger module for TV Tuners Sources. */
+@Module()
+public class TunerSourceModule {
+ @Provides
+ @Singleton
+ TunerTsStreamerManager providesTunerTsStreamerManager() {
+ return new TunerTsStreamerManager();
+ }
+}
diff --git a/tuner/src/com/android/tv/tuner/source/TunerTsStreamerManager.java b/tuner/src/com/android/tv/tuner/source/TunerTsStreamerManager.java
index 9c9e3ee1..35eeb9aa 100644
--- a/tuner/src/com/android/tv/tuner/source/TunerTsStreamerManager.java
+++ b/tuner/src/com/android/tv/tuner/source/TunerTsStreamerManager.java
@@ -17,6 +17,7 @@
package com.android.tv.tuner.source;
import android.content.Context;
+import android.support.annotation.VisibleForTesting;
import com.android.tv.common.SoftPreconditions;
import com.android.tv.common.util.AutoCloseableUtils;
import com.android.tv.tuner.BuiltInTunerHalFactory;
@@ -29,13 +30,17 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import javax.inject.Inject;
+import javax.inject.Singleton;
/**
* Manages {@link TunerTsStreamer} for playback and recording. The class hides handling of {@link
* Tuner} from other classes. This class is used by {@link TsDataSourceManager}. Don't use this
* class directly.
*/
-class TunerTsStreamerManager {
+@Singleton
+@VisibleForTesting
+public class TunerTsStreamerManager {
// The lock will protect mStreamerFinder, mSourceToStreamerMap and some part of TsStreamCreator
// to support timely {@link TunerTsStreamer} cancellation due to a new tune request from
// the same session.
@@ -46,21 +51,10 @@ class TunerTsStreamerManager {
private final Map<TsDataSource, TunerTsStreamer> mSourceToStreamerMap = new HashMap<>();
private final TunerFactory mTunerFactory = BuiltInTunerHalFactory.INSTANCE;
private final TunerHalManager mTunerHalManager = new TunerHalManager(mTunerFactory);
- private static TunerTsStreamerManager sInstance;
- /**
- * Returns the singleton instance for the class
- *
- * @return TunerTsStreamerManager
- */
- static synchronized TunerTsStreamerManager getInstance() {
- if (sInstance == null) {
- sInstance = new TunerTsStreamerManager();
- }
- return sInstance;
- }
-
- private TunerTsStreamerManager() {}
+ @Inject
+ @VisibleForTesting
+ public TunerTsStreamerManager() {}
synchronized TsDataSource createDataSource(
Context context,
diff --git a/tuner/src/com/android/tv/tuner/tvinput/BaseTunerTvInputService.java b/tuner/src/com/android/tv/tuner/tvinput/BaseTunerTvInputService.java
index 93e19374..fb8eeb77 100644
--- a/tuner/src/com/android/tv/tuner/tvinput/BaseTunerTvInputService.java
+++ b/tuner/src/com/android/tv/tuner/tvinput/BaseTunerTvInputService.java
@@ -45,6 +45,7 @@ public class BaseTunerTvInputService extends TvInputService {
private final Set<Session> mTunerSessions = Collections.newSetFromMap(new WeakHashMap<>());
private ChannelDataManager mChannelDataManager;
private ConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags;
+ @Inject TsDataSourceManagerFactory mTsDataSourceManagerFactory;
@Inject TunerSessionFactory mTunerSessionFactory;
@Override
@@ -93,7 +94,7 @@ public class BaseTunerTvInputService extends TvInputService {
inputId,
mChannelDataManager,
mConcurrentDvrPlaybackFlags,
- new TsDataSourceManagerFactory());
+ mTsDataSourceManagerFactory);
}
@Override