Merge "Add dagger to the rest of the make files"
diff --git a/src/com/android/tv/app/LiveTvApplication.java b/src/com/android/tv/app/LiveTvApplication.java
index 7ccbebd..450b9a5 100644
--- a/src/com/android/tv/app/LiveTvApplication.java
+++ b/src/com/android/tv/app/LiveTvApplication.java
@@ -16,6 +16,7 @@
 
 package com.android.tv.app;
 
+import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import com.android.tv.TvActivity;
@@ -41,15 +42,22 @@
 import com.android.tv.util.account.AccountHelper;
 import com.android.tv.util.account.AccountHelperImpl;
 import com.google.common.base.Optional;
+import dagger.android.AndroidInjector;
+import dagger.android.DispatchingAndroidInjector;
+import dagger.android.HasActivityInjector;
+import javax.inject.Inject;
 import javax.inject.Provider;
 
 /** The top level application for Live TV. */
-public class LiveTvApplication extends TvApplication implements HasSingletons<TvSingletons> {
+public class LiveTvApplication extends TvApplication
+    implements HasSingletons<TvSingletons>, HasActivityInjector {
 
     static {
         PERFORMANCE_MONITOR_MANAGER.getStartupMeasure().onAppClassLoaded();
     }
 
+  @Inject DispatchingAndroidInjector<Activity> mDispatchingActivityInjector;
+
     private final Provider<EpgReader> mEpgReaderProvider =
             new Provider<EpgReader>() {
 
@@ -168,4 +176,9 @@
     public TvSingletons singletons() {
         return this;
     }
+
+  @Override
+  public AndroidInjector<Activity> activityInjector() {
+    return mDispatchingActivityInjector;
+  }
 }
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 aa2a48e..4f2f665 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
@@ -24,11 +24,14 @@
 import com.android.tv.common.actions.InputSetupActionUtils;
 import com.android.tv.common.flags.impl.DefaultCloudEpgFlags;
 import com.android.tv.common.flags.impl.DefaultConcurrentDvrPlaybackFlags;
+import com.android.tv.common.flags.impl.DefaultExoplayer2Flags;
 import com.android.tv.common.singletons.HasSingletons;
 import com.android.tv.common.util.CommonUtils;
 import com.android.tv.tuner.sample.dvb.singletons.SampleDvbSingletons;
 import com.android.tv.tuner.sample.dvb.tvinput.SampleDvbTunerTvInputService;
 import com.android.tv.tuner.setup.LiveTvTunerSetupActivity;
+import com.android.tv.tuner.tvinput.factory.TunerSessionFactory;
+import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl;
 
 /** The top level application for Sample DVB Tuner. */
 public class SampleDvbTuner extends BaseApplication
@@ -37,6 +40,9 @@
     private final DefaultCloudEpgFlags mCloudEpgFlags = new DefaultCloudEpgFlags();
     private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags =
             new DefaultConcurrentDvrPlaybackFlags();
+    private final DefaultExoplayer2Flags mExoplayer2Flags = new DefaultExoplayer2Flags();
+    private final TunerSessionFactoryImpl mTunerSessionFactory =
+            new TunerSessionFactoryImpl(mExoplayer2Flags, mConcurrentDvrPlaybackFlags);
 
     @Override
     public Intent getTunerSetupIntent(Context context) {
@@ -77,4 +83,9 @@
     public SampleDvbSingletons singletons() {
         return this;
     }
+
+    @Override
+    public TunerSessionFactory getTunerSessionFactory() {
+        return mTunerSessionFactory;
+    }
 }
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 1bcb255..82b40ff 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
@@ -24,11 +24,14 @@
 import com.android.tv.common.actions.InputSetupActionUtils;
 import com.android.tv.common.flags.impl.DefaultCloudEpgFlags;
 import com.android.tv.common.flags.impl.DefaultConcurrentDvrPlaybackFlags;
+import com.android.tv.common.flags.impl.DefaultExoplayer2Flags;
 import com.android.tv.common.singletons.HasSingletons;
 import com.android.tv.common.util.CommonUtils;
 import com.android.tv.tuner.sample.network.singletons.SampleNetworkSingletons;
 import com.android.tv.tuner.sample.network.tvinput.SampleNetworkTunerTvInputService;
 import com.android.tv.tuner.setup.LiveTvTunerSetupActivity;
+import com.android.tv.tuner.tvinput.factory.TunerSessionFactory;
+import com.android.tv.tuner.tvinput.factory.TunerSessionFactoryImpl;
 
 /** The top level application for Sample DVB Tuner. */
 public class SampleNetworkTuner extends BaseApplication
@@ -37,6 +40,9 @@
     private final DefaultCloudEpgFlags mCloudEpgFlags = new DefaultCloudEpgFlags();
     private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags =
             new DefaultConcurrentDvrPlaybackFlags();
+    private final DefaultExoplayer2Flags mExoplayer2Flags = new DefaultExoplayer2Flags();
+    private final TunerSessionFactoryImpl mTunerSessionFactory =
+            new TunerSessionFactoryImpl(mExoplayer2Flags, mConcurrentDvrPlaybackFlags);
 
     @Override
     public Intent getTunerSetupIntent(Context context) {
@@ -77,4 +83,9 @@
     public SampleNetworkSingletons singletons() {
         return this;
     }
+
+    @Override
+    public TunerSessionFactory getTunerSessionFactory() {
+        return mTunerSessionFactory;
+    }
 }
diff --git a/tuner/src/com/android/tv/tuner/singletons/TunerSingletons.java b/tuner/src/com/android/tv/tuner/singletons/TunerSingletons.java
index 48b17dc..abaebf3 100644
--- a/tuner/src/com/android/tv/tuner/singletons/TunerSingletons.java
+++ b/tuner/src/com/android/tv/tuner/singletons/TunerSingletons.java
@@ -16,6 +16,7 @@
 package com.android.tv.tuner.singletons;
 
 import com.android.tv.common.singletons.HasTvInputId;
+import com.android.tv.tuner.tvinput.factory.TunerSessionFactory;
 
 /** Singletons used in tuner applications */
-public interface TunerSingletons extends HasTvInputId {}
+public interface TunerSingletons extends HasTvInputId, TunerSessionFactory.HasTunerSessionFactory {}