aboutsummaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
authornchalko <nchalko@google.com>2019-05-30 15:17:27 -0700
committerNick Chalko <nchalko@google.com>2019-05-30 22:15:43 -0700
commit599c4d9f6937480fdb4091306bebeb6861180a18 (patch)
tree879fd2e52b65431984c89415f5314efa6f955de1 /src/com/android
parentc8d23359e3a41679f8fb8fc6a628eea22d74ab07 (diff)
downloadTV-599c4d9f6937480fdb4091306bebeb6861180a18.tar.gz
Inject EpgFetcher
PiperOrigin-RevId: 250773299 Change-Id: I355d9ffef2b0b2bb494683c53396b9f847c1d633
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/tv/MainActivity.java10
-rw-r--r--src/com/android/tv/SetupPassthroughActivity.java25
-rw-r--r--src/com/android/tv/TvApplication.java15
-rw-r--r--src/com/android/tv/TvSingletons.java7
-rw-r--r--src/com/android/tv/data/epg/EpgFetchService.java5
-rw-r--r--src/com/android/tv/data/epg/EpgFetcherImpl.java37
-rw-r--r--src/com/android/tv/modules/TvApplicationModule.java7
7 files changed, 53 insertions, 53 deletions
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java
index a018c930..c2257096 100644
--- a/src/com/android/tv/MainActivity.java
+++ b/src/com/android/tv/MainActivity.java
@@ -66,6 +66,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import android.widget.Toast;
+
import com.android.tv.MainActivity.MySingletons;
import com.android.tv.analytics.SendChannelStatusRunnable;
import com.android.tv.analytics.SendConfigInfoRunnable;
@@ -97,6 +98,7 @@ import com.android.tv.data.ProgramDataManager;
import com.android.tv.data.StreamInfo;
import com.android.tv.data.WatchedHistoryManager;
import com.android.tv.data.api.Channel;
+import com.android.tv.data.epg.EpgFetcher;
import com.android.tv.dialog.HalfSizedDialogFragment;
import com.android.tv.dialog.PinDialogFragment;
import com.android.tv.dialog.PinDialogFragment.OnPinCheckedListener;
@@ -150,12 +152,16 @@ import com.android.tv.util.Utils;
import com.android.tv.util.ViewCache;
import com.android.tv.util.account.AccountHelper;
import com.android.tv.util.images.ImageCache;
+
import com.google.common.base.Optional;
+
import dagger.android.AndroidInjection;
import dagger.android.ContributesAndroidInjector;
+
import com.android.tv.common.flags.BackendKnobsFlags;
import com.android.tv.common.flags.LegacyFlags;
import com.android.tv.common.flags.StartupFlags;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayDeque;
@@ -166,6 +172,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
+
import javax.inject.Inject;
import javax.inject.Provider;
@@ -286,6 +293,7 @@ public class MainActivity extends Activity
@Inject SetupUtils mSetupUtils;
@Inject Optional<BuiltInTunerManager> mOptionalBuiltInTunerManager;
@Inject AccountHelper mAccountHelper;
+ @Inject EpgFetcher mEpgFetcher;
@VisibleForTesting protected TunableTvView mTvView;
private View mContentView;
@@ -833,7 +841,7 @@ public class MainActivity extends Activity
.getTunerInputController()
.executeNetworkTunerDiscoveryAsyncTask(this);
}
- TvSingletons.getSingletons(this).getEpgFetcher().fetchImmediatelyIfNeeded();
+ mEpgFetcher.fetchImmediatelyIfNeeded();
}
@Override
diff --git a/src/com/android/tv/SetupPassthroughActivity.java b/src/com/android/tv/SetupPassthroughActivity.java
index 806bb142..25049f1d 100644
--- a/src/com/android/tv/SetupPassthroughActivity.java
+++ b/src/com/android/tv/SetupPassthroughActivity.java
@@ -19,7 +19,6 @@ package com.android.tv;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
import android.media.tv.TvInputInfo;
import android.os.Bundle;
@@ -27,6 +26,7 @@ import android.os.Handler;
import android.os.Looper;
import android.support.annotation.MainThread;
import android.util.Log;
+
import com.android.tv.common.CommonConstants;
import com.android.tv.common.SoftPreconditions;
import com.android.tv.common.actions.InputSetupActionUtils;
@@ -38,10 +38,14 @@ import com.android.tv.features.TvFeatures;
import com.android.tv.util.SetupUtils;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
+
import com.google.android.tv.partner.support.EpgContract;
+
import dagger.android.AndroidInjection;
import dagger.android.ContributesAndroidInjector;
+
import java.util.concurrent.TimeUnit;
+
import javax.inject.Inject;
/**
@@ -64,6 +68,7 @@ public class SetupPassthroughActivity extends Activity {
@Inject TvInputManagerHelper mInputManager;
@Inject SetupUtils mSetupUtils;
@Inject ChannelDataManager mChannelDataManager;
+ @Inject EpgFetcher mEpgFetcher;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -131,10 +136,10 @@ public class SetupPassthroughActivity extends Activity {
}
if (needToFetchEpg) {
if (sScanTimeoutMonitor == null) {
- sScanTimeoutMonitor = new ScanTimeoutMonitor(this, mChannelDataManager);
+ sScanTimeoutMonitor = new ScanTimeoutMonitor(mEpgFetcher, mChannelDataManager);
}
sScanTimeoutMonitor.startMonitoring();
- TvSingletons.getSingletons(this).getEpgFetcher().onChannelScanStarted();
+ mEpgFetcher.onChannelScanStarted();
}
}
}
@@ -150,9 +155,9 @@ public class SetupPassthroughActivity extends Activity {
boolean setupComplete =
requestCode == REQUEST_START_SETUP_ACTIVITY && resultCode == Activity.RESULT_OK;
// Tells EpgFetcher that channel source setup is finished.
- EpgFetcher epgFetcher = TvSingletons.getSingletons(this).getEpgFetcher();
+
if (mEpgFetcherDuringScan) {
- epgFetcher.onChannelScanFinished();
+ mEpgFetcher.onChannelScanFinished();
}
if (!setupComplete) {
setResult(resultCode, data);
@@ -165,7 +170,7 @@ public class SetupPassthroughActivity extends Activity {
if (DEBUG) Log.d(TAG, "extra " + data.getExtras());
String inputId = data.getStringExtra(TvInputInfo.EXTRA_INPUT_ID);
if (mEpgInputWhiteList.isInputWhiteListed(inputId)) {
- epgFetcher.fetchImmediately();
+ mEpgFetcher.fetchImmediately();
}
}
@@ -204,7 +209,7 @@ public class SetupPassthroughActivity extends Activity {
// Set timeout long enough. The message in Sony TV says the scanning takes about 30 minutes.
private static final long SCAN_TIMEOUT_MS = TimeUnit.MINUTES.toMillis(30);
- private final Context mContext;
+ private final EpgFetcher mEpgFetcher;
private final ChannelDataManager mChannelDataManager;
private final Handler mHandler = new Handler(Looper.getMainLooper());
private final Runnable mScanTimeoutRunnable =
@@ -232,8 +237,8 @@ public class SetupPassthroughActivity extends Activity {
};
private boolean mStarted;
- private ScanTimeoutMonitor(Context context, ChannelDataManager mChannelDataManager) {
- mContext = context.getApplicationContext();
+ private ScanTimeoutMonitor(EpgFetcher epgFetcher, ChannelDataManager mChannelDataManager) {
+ mEpgFetcher = epgFetcher;
this.mChannelDataManager = mChannelDataManager;
}
@@ -262,7 +267,7 @@ public class SetupPassthroughActivity extends Activity {
private void onScanTimedOut() {
stopMonitoring();
- TvSingletons.getSingletons(mContext).getEpgFetcher().onChannelScanFinished();
+ mEpgFetcher.onChannelScanFinished();
}
}
diff --git a/src/com/android/tv/TvApplication.java b/src/com/android/tv/TvApplication.java
index 65a3d928..f4fdd5b8 100644
--- a/src/com/android/tv/TvApplication.java
+++ b/src/com/android/tv/TvApplication.java
@@ -35,6 +35,7 @@ import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
+
import com.android.tv.common.BaseApplication;
import com.android.tv.common.feature.CommonFeatures;
import com.android.tv.common.recording.RecordingStorageStatusManager;
@@ -46,7 +47,6 @@ 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.EpgFetcherImpl;
import com.android.tv.data.epg.EpgReader;
import com.android.tv.dvr.DvrDataManager;
import com.android.tv.dvr.DvrDataManagerImpl;
@@ -68,12 +68,17 @@ import com.android.tv.util.AsyncDbTask.DbExecutor;
import com.android.tv.util.SetupUtils;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
+
import com.google.common.base.Optional;
+
import dagger.Lazy;
+
import com.android.tv.common.flags.CloudEpgFlags;
import com.android.tv.common.flags.LegacyFlags;
+
import java.util.List;
import java.util.concurrent.Executor;
+
import javax.inject.Inject;
/**
@@ -117,7 +122,7 @@ public abstract class TvApplication extends BaseApplication implements TvSinglet
private Boolean mRunningInMainProcess;
@Inject Lazy<TvInputManagerHelper> mLazyTvInputManagerHelper;
private boolean mStarted;
- private EpgFetcher mEpgFetcher;
+ @Inject EpgFetcher mEpgFetcher;
@Inject Optional<BuiltInTunerManager> mOptionalBuiltInTunerManager;
@Inject SetupUtils mSetupUtils;
@@ -158,7 +163,6 @@ public abstract class TvApplication extends BaseApplication implements TvSinglet
// In SetupFragment, transitions are set in the constructor. Because the fragment can be
// created in Activity.onCreate() by the framework, SetupAnimationHelper should be
// initialized here before Activity.onCreate() is called.
- mEpgFetcher = EpgFetcherImpl.create(this, mCloudEpgFlags, mLegacyFlags);
SetupAnimationHelper.initialize(this);
getTvInputManagerHelper();
@@ -246,11 +250,6 @@ public abstract class TvApplication extends BaseApplication implements TvSinglet
}
@Override
- public EpgFetcher getEpgFetcher() {
- return mEpgFetcher;
- }
-
- @Override
public synchronized SetupUtils getSetupUtils() {
return mSetupUtils;
}
diff --git a/src/com/android/tv/TvSingletons.java b/src/com/android/tv/TvSingletons.java
index 8f9fd25e..af488cc8 100644
--- a/src/com/android/tv/TvSingletons.java
+++ b/src/com/android/tv/TvSingletons.java
@@ -17,6 +17,7 @@
package com.android.tv;
import android.content.Context;
+
import com.android.tv.analytics.Analytics;
import com.android.tv.analytics.Tracker;
import com.android.tv.common.BaseApplication;
@@ -25,7 +26,6 @@ import com.android.tv.common.flags.has.HasUiFlags;
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;
@@ -37,8 +37,11 @@ import com.android.tv.tunerinputcontroller.HasBuiltInTunerManager;
import com.android.tv.util.SetupUtils;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.account.AccountHelper;
+
import dagger.Lazy;
+
import com.android.tv.common.flags.BackendKnobsFlags;
+
import java.util.concurrent.Executor;
/** Interface with getters for application scoped singletons. */
@@ -115,8 +118,6 @@ public interface TvSingletons extends BaseSingletons, HasBuiltInTunerManager, Ha
Lazy<EpgReader> providesEpgReader();
- EpgFetcher getEpgFetcher();
-
/** @deprecated use injection instead. */
@Deprecated
SetupUtils getSetupUtils();
diff --git a/src/com/android/tv/data/epg/EpgFetchService.java b/src/com/android/tv/data/epg/EpgFetchService.java
index 3418d522..cfa79cb0 100644
--- a/src/com/android/tv/data/epg/EpgFetchService.java
+++ b/src/com/android/tv/data/epg/EpgFetchService.java
@@ -20,7 +20,6 @@ import android.app.job.JobParameters;
import android.app.job.JobService;
import com.android.tv.Starter;
-import com.android.tv.TvSingletons;
import com.android.tv.data.ChannelDataManager;
import dagger.android.AndroidInjection;
@@ -29,7 +28,7 @@ import javax.inject.Inject;
/** JobService to Fetch EPG data. */
public class EpgFetchService extends JobService {
- private EpgFetcher mEpgFetcher;
+ @Inject EpgFetcher mEpgFetcher;
@Inject ChannelDataManager mChannelDataManager;
@Override
@@ -37,8 +36,6 @@ public class EpgFetchService extends JobService {
AndroidInjection.inject(this);
super.onCreate();
Starter.start(this);
- TvSingletons tvSingletons = TvSingletons.getSingletons(getApplicationContext());
- mEpgFetcher = tvSingletons.getEpgFetcher();
}
@Override
diff --git a/src/com/android/tv/data/epg/EpgFetcherImpl.java b/src/com/android/tv/data/epg/EpgFetcherImpl.java
index b40ce0d2..d860f9c2 100644
--- a/src/com/android/tv/data/epg/EpgFetcherImpl.java
+++ b/src/com/android/tv/data/epg/EpgFetcherImpl.java
@@ -38,10 +38,12 @@ import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.Log;
+
import com.android.tv.TvSingletons;
import com.android.tv.common.BuildConfig;
import com.android.tv.common.SoftPreconditions;
import com.android.tv.common.buildtype.HasBuildType;
+import com.android.tv.common.dagger.annotations.ApplicationContext;
import com.android.tv.common.util.Clock;
import com.android.tv.common.util.CommonUtils;
import com.android.tv.common.util.LocationUtils;
@@ -59,12 +61,13 @@ import com.android.tv.perf.EventNames;
import com.android.tv.perf.PerformanceMonitor;
import com.android.tv.perf.TimerEvent;
import com.android.tv.util.Utils;
+
import com.google.android.tv.partner.support.EpgInput;
import com.google.android.tv.partner.support.EpgInputs;
import com.google.common.collect.ImmutableSet;
+
import com.android.tv.common.flags.BackendKnobsFlags;
-import com.android.tv.common.flags.CloudEpgFlags;
-import com.android.tv.common.flags.LegacyFlags;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -75,6 +78,8 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+import javax.inject.Inject;
+
/**
* The service class to fetch EPG routinely or on-demand during channel scanning
*
@@ -132,31 +137,9 @@ public class EpgFetcherImpl implements EpgFetcher {
private Clock mClock;
- public static EpgFetcher create(
- Context context, CloudEpgFlags cloudEpgFlags, LegacyFlags legacyFlags) {
- context = context.getApplicationContext();
- TvSingletons tvSingletons = TvSingletons.getSingletons(context);
- ChannelDataManager channelDataManager = tvSingletons.getChannelDataManager();
- PerformanceMonitor performanceMonitor = tvSingletons.getPerformanceMonitor();
- EpgReader epgReader = tvSingletons.providesEpgReader().get();
- Clock clock = tvSingletons.getClock();
- EpgInputWhiteList epgInputWhiteList = new EpgInputWhiteList(cloudEpgFlags, legacyFlags);
- BackendKnobsFlags backendKnobsFlags = tvSingletons.getBackendKnobs();
- HasBuildType.BuildType buildType = tvSingletons.getBuildType();
- return new EpgFetcherImpl(
- context,
- epgInputWhiteList,
- channelDataManager,
- epgReader,
- performanceMonitor,
- clock,
- backendKnobsFlags,
- buildType);
- }
-
- @VisibleForTesting
- EpgFetcherImpl(
- Context context,
+ @Inject
+ public EpgFetcherImpl(
+ @ApplicationContext Context context,
EpgInputWhiteList epgInputWhiteList,
ChannelDataManager channelDataManager,
EpgReader epgReader,
diff --git a/src/com/android/tv/modules/TvApplicationModule.java b/src/com/android/tv/modules/TvApplicationModule.java
index eb20182c..10f1030f 100644
--- a/src/com/android/tv/modules/TvApplicationModule.java
+++ b/src/com/android/tv/modules/TvApplicationModule.java
@@ -27,6 +27,8 @@ import com.android.tv.common.dagger.annotations.ApplicationContext;
import com.android.tv.data.ChannelDataManager;
import com.android.tv.data.ChannelDataManagerFactory;
import com.android.tv.data.epg.EpgFetchService;
+import com.android.tv.data.epg.EpgFetcher;
+import com.android.tv.data.epg.EpgFetcherImpl;
import com.android.tv.dialog.PinDialogFragment;
import com.android.tv.dvr.ui.playback.DvrPlaybackActivity;
import com.android.tv.onboarding.OnboardingActivity;
@@ -34,6 +36,7 @@ import com.android.tv.ui.DetailsActivity;
import com.android.tv.util.AsyncDbTask;
import com.android.tv.util.TvInputManagerHelper;
+import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import dagger.android.ContributesAndroidInjector;
@@ -86,6 +89,10 @@ public abstract class TvApplicationModule {
return channelDataManager;
}
+ @Binds
+ @Singleton
+ abstract EpgFetcher epgFetcher(EpgFetcherImpl impl);
+
@ContributesAndroidInjector
abstract PinDialogFragment contributesPinDialogFragment();