aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornchalko <nchalko@google.com>2019-01-04 11:17:12 -0800
committerNick Chalko <nchalko@google.com>2019-02-12 22:07:08 -0800
commitffe86338164df563234b2308f9bce1f0a30794f9 (patch)
treecbd4c2124879187c915b6976729ab85e236a57cd
parent2edaccd4827bb8eed4b3e52b44ae63c221cdf93e (diff)
downloadTV-ffe86338164df563234b2308f9bce1f0a30794f9.tar.gz
Move creating a tuner setup intent to the TunerInputController
PiperOrigin-RevId: 227884397 Change-Id: I9a437ce6438b45fdabc034aabc0e05c4aae55e85
-rw-r--r--common/src/com/android/tv/common/BaseApplication.java4
-rw-r--r--common/src/com/android/tv/common/BaseSingletons.java4
-rw-r--r--src/com/android/tv/MainActivity.java10
-rw-r--r--src/com/android/tv/app/LiveTvApplication.java20
-rw-r--r--src/com/android/tv/tunerinputcontroller/TunerInputController.java3
-rw-r--r--tests/common/src/com/android/tv/testing/TestSingletonApp.java7
-rw-r--r--tests/unit/src/com/android/tv/util/MockTvSingletons.java6
-rw-r--r--tuner/SampleDvbTuner/src/com/android/tv/tuner/sample/dvb/app/SampleDvbTuner.java15
-rw-r--r--tuner/SampleNetworkTuner/src/com/android/tv/tuner/sample/network/app/SampleNetworkTuner.java15
-rw-r--r--tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java39
10 files changed, 33 insertions, 90 deletions
diff --git a/common/src/com/android/tv/common/BaseApplication.java b/common/src/com/android/tv/common/BaseApplication.java
index 871e4613..45c32567 100644
--- a/common/src/com/android/tv/common/BaseApplication.java
+++ b/common/src/com/android/tv/common/BaseApplication.java
@@ -18,7 +18,6 @@ package com.android.tv.common;
import android.annotation.TargetApi;
import android.content.Context;
-import android.content.Intent;
import android.os.Build;
import android.os.StrictMode;
import android.support.annotation.VisibleForTesting;
@@ -105,7 +104,4 @@ public abstract class BaseApplication extends DaggerApplication implements BaseS
}
return mRecordingStorageStatusManager;
}
-
- @Override
- public abstract Intent getTunerSetupIntent(Context context);
}
diff --git a/common/src/com/android/tv/common/BaseSingletons.java b/common/src/com/android/tv/common/BaseSingletons.java
index f5ab636c..10530617 100644
--- a/common/src/com/android/tv/common/BaseSingletons.java
+++ b/common/src/com/android/tv/common/BaseSingletons.java
@@ -16,8 +16,6 @@
package com.android.tv.common;
-import android.content.Context;
-import android.content.Intent;
import com.android.tv.common.buildtype.HasBuildType;
import com.android.tv.common.flags.has.HasCloudEpgFlags;
import com.android.tv.common.flags.has.HasConcurrentDvrPlaybackFlags;
@@ -31,6 +29,4 @@ public interface BaseSingletons
Clock getClock();
RecordingStorageStatusManager getRecordingStorageStatusManager();
-
- Intent getTunerSetupIntent(Context context);
}
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java
index 12b16340..72487f41 100644
--- a/src/com/android/tv/MainActivity.java
+++ b/src/com/android/tv/MainActivity.java
@@ -438,12 +438,14 @@ public class MainActivity extends Activity
public void onInputAdded(String inputId) {
if (mOptionalBuiltInTunerManager.isPresent()
&& CommonPreferences.shouldShowSetupActivity(MainActivity.this)) {
- String tunerInputId =
- mOptionalBuiltInTunerManager.get().getEmbeddedTunerInputId();
+ BuiltInTunerManager builtInTunerManager =
+ mOptionalBuiltInTunerManager.get();
+ String tunerInputId = builtInTunerManager.getEmbeddedTunerInputId();
if (tunerInputId.equals(inputId)) {
Intent intent =
- TvSingletons.getSingletons(MainActivity.this)
- .getTunerSetupIntent(MainActivity.this);
+ builtInTunerManager
+ .getTunerInputController()
+ .createSetupIntent(MainActivity.this);
startActivity(intent);
CommonPreferences.setShouldShowSetupActivity(MainActivity.this, false);
mSetupUtils.markAsKnownInput(tunerInputId);
diff --git a/src/com/android/tv/app/LiveTvApplication.java b/src/com/android/tv/app/LiveTvApplication.java
index c65d45eb..3717db98 100644
--- a/src/com/android/tv/app/LiveTvApplication.java
+++ b/src/com/android/tv/app/LiveTvApplication.java
@@ -16,15 +16,11 @@
package com.android.tv.app;
-import android.content.Context;
-import android.content.Intent;
-import com.android.tv.TvActivity;
import com.android.tv.TvApplication;
import com.android.tv.TvSingletons;
import com.android.tv.analytics.Analytics;
import com.android.tv.analytics.StubAnalytics;
import com.android.tv.analytics.Tracker;
-import com.android.tv.common.actions.InputSetupActionUtils;
import com.android.tv.common.dagger.ApplicationModule;
import com.android.tv.common.experiments.ExperimentLoader;
import com.android.tv.common.flags.impl.DefaultBackendKnobsFlags;
@@ -32,13 +28,11 @@ import com.android.tv.common.flags.impl.DefaultCloudEpgFlags;
import com.android.tv.common.flags.impl.DefaultConcurrentDvrPlaybackFlags;
import com.android.tv.common.flags.impl.DefaultUiFlags;
import com.android.tv.common.singletons.HasSingletons;
-import com.android.tv.common.util.CommonUtils;
import com.android.tv.data.epg.EpgReader;
import com.android.tv.data.epg.StubEpgReader;
import com.android.tv.modules.TvSingletonsModule;
import com.android.tv.perf.PerformanceMonitor;
import com.android.tv.perf.PerformanceMonitorManagerFactory;
-import com.android.tv.tuner.setup.LiveTvTunerSetupActivity;
import com.android.tv.tunerinputcontroller.BuiltInTunerManager;
import com.android.tv.util.account.AccountHelper;
import com.android.tv.util.account.AccountHelperImpl;
@@ -70,7 +64,6 @@ public class LiveTvApplication extends TvApplication implements HasSingletons<Tv
private AccountHelper mAccountHelper;
private Analytics mAnalytics;
private Tracker mTracker;
- private String mEmbeddedInputId;
private ExperimentLoader mExperimentLoader;
private PerformanceMonitor mPerformanceMonitor;
@@ -140,19 +133,6 @@ public class LiveTvApplication extends TvApplication implements HasSingletons<Tv
}
@Override
- public Intent getTunerSetupIntent(Context context) {
- // Make an intent to launch the setup activity of TV tuner input.
- Intent intent =
- CommonUtils.createSetupIntent(
- new Intent(context, LiveTvTunerSetupActivity.class), mEmbeddedInputId);
- intent.putExtra(InputSetupActionUtils.EXTRA_INPUT_ID, mEmbeddedInputId);
- Intent tvActivityIntent = new Intent(context, TvActivity.class);
-
- intent.putExtra(InputSetupActionUtils.EXTRA_ACTIVITY_AFTER_COMPLETION, tvActivityIntent);
- return intent;
- }
-
- @Override
public DefaultCloudEpgFlags getCloudEpgFlags() {
return mCloudEpgFlags;
}
diff --git a/src/com/android/tv/tunerinputcontroller/TunerInputController.java b/src/com/android/tv/tunerinputcontroller/TunerInputController.java
index 6c3df1c3..f822dbe0 100644
--- a/src/com/android/tv/tunerinputcontroller/TunerInputController.java
+++ b/src/com/android/tv/tunerinputcontroller/TunerInputController.java
@@ -17,10 +17,13 @@
package com.android.tv.tunerinputcontroller;
import android.content.Context;
+import android.content.Intent;
/** Controls the package visibility of built in tuner services. */
public interface TunerInputController {
+ Intent createSetupIntent(Context context);
+
void onCheckingUsbTunerStatus(Context context, String action);
void executeNetworkTunerDiscoveryAsyncTask(Context context);
diff --git a/tests/common/src/com/android/tv/testing/TestSingletonApp.java b/tests/common/src/com/android/tv/testing/TestSingletonApp.java
index c918ba84..f1d139e2 100644
--- a/tests/common/src/com/android/tv/testing/TestSingletonApp.java
+++ b/tests/common/src/com/android/tv/testing/TestSingletonApp.java
@@ -17,8 +17,6 @@
package com.android.tv.testing;
import android.app.Application;
-import android.content.Context;
-import android.content.Intent;
import android.media.tv.TvInputManager;
import android.os.AsyncTask;
import com.android.tv.InputSessionManager;
@@ -228,11 +226,6 @@ public class TestSingletonApp extends Application
}
@Override
- public Intent getTunerSetupIntent(Context context) {
- return null;
- }
-
- @Override
public boolean isRunningInMainProcess() {
return false;
}
diff --git a/tests/unit/src/com/android/tv/util/MockTvSingletons.java b/tests/unit/src/com/android/tv/util/MockTvSingletons.java
index 534be837..fd4b43cf 100644
--- a/tests/unit/src/com/android/tv/util/MockTvSingletons.java
+++ b/tests/unit/src/com/android/tv/util/MockTvSingletons.java
@@ -17,7 +17,6 @@
package com.android.tv.util;
import android.content.Context;
-import android.content.Intent;
import com.android.tv.InputSessionManager;
import com.android.tv.MainActivityWrapper;
import com.android.tv.TvApplication;
@@ -184,11 +183,6 @@ public class MockTvSingletons implements TvSingletons, HasSingletons<TvSingleton
}
@Override
- public Intent getTunerSetupIntent(Context context) {
- return mApp.getTunerSetupIntent(context);
- }
-
- @Override
public boolean isRunningInMainProcess() {
return mApp.isRunningInMainProcess();
}
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 bbb67791..1463dd45 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
@@ -17,20 +17,15 @@
package com.android.tv.tuner.sample.dvb.app;
import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
import android.media.tv.TvContract;
import com.android.tv.common.BaseApplication;
-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.modules.TunerSingletonsModule;
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;
import dagger.android.AndroidInjector;
@@ -55,16 +50,6 @@ public class SampleDvbTuner extends BaseApplication
}
@Override
- public Intent getTunerSetupIntent(Context context) {
- // Make an intent to launch the setup activity of TV tuner input.
- Intent intent =
- CommonUtils.createSetupIntent(
- new Intent(context, LiveTvTunerSetupActivity.class), mEmbeddedInputId);
- intent.putExtra(InputSetupActionUtils.EXTRA_INPUT_ID, mEmbeddedInputId);
- return intent;
- }
-
- @Override
public synchronized String getEmbeddedTunerInputId() {
if (mEmbeddedInputId == null) {
mEmbeddedInputId =
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 5eb44e98..45015298 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
@@ -17,20 +17,15 @@
package com.android.tv.tuner.sample.network.app;
import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
import android.media.tv.TvContract;
import com.android.tv.common.BaseApplication;
-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.modules.TunerSingletonsModule;
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;
import dagger.android.AndroidInjector;
@@ -55,16 +50,6 @@ public class SampleNetworkTuner extends BaseApplication
}
@Override
- public Intent getTunerSetupIntent(Context context) {
- // Make an intent to launch the setup activity of TV tuner input.
- Intent intent =
- CommonUtils.createSetupIntent(
- new Intent(context, LiveTvTunerSetupActivity.class), mEmbeddedInputId);
- intent.putExtra(InputSetupActionUtils.EXTRA_INPUT_ID, mEmbeddedInputId);
- return intent;
- }
-
- @Override
public synchronized String getEmbeddedTunerInputId() {
if (mEmbeddedInputId == null) {
mEmbeddedInputId =
diff --git a/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java b/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java
index 2b269740..f76e5736 100644
--- a/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java
+++ b/tuner/src/com/android/tv/tuner/setup/BaseTunerSetupActivity.java
@@ -22,6 +22,7 @@ import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
@@ -36,7 +37,6 @@ import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
-import com.android.tv.common.BaseApplication;
import com.android.tv.common.SoftPreconditions;
import com.android.tv.common.feature.CommonFeatures;
import com.android.tv.common.ui.setup.SetupActivity;
@@ -333,25 +333,28 @@ public abstract class BaseTunerSetupActivity extends SetupActivity {
/**
* A callback to be invoked when the TvInputService is enabled or disabled.
*
+ * @param tunerSetupIntent
* @param context a {@link Context} instance
* @param enabled {@code true} for the {@link TunerTvInputService} to be enabled; otherwise
* {@code false}
*/
- public static void onTvInputEnabled(Context context, boolean enabled, Integer tunerType) {
+ public static void onTvInputEnabled(
+ Context context, boolean enabled, Integer tunerType, Intent tunerSetupIntent) {
// Send a notification for tuner setup if there's no channels and the tuner TV input
// setup has been not done.
boolean channelScanDoneOnPreference = TunerPreferences.isScanDone(context);
int channelCountOnPreference = TunerPreferences.getScannedChannelCount(context);
if (enabled && !channelScanDoneOnPreference && channelCountOnPreference == 0) {
TunerPreferences.setShouldShowSetupActivity(context, true);
- sendNotification(context, tunerType);
+ sendNotification(context, tunerType, tunerSetupIntent);
} else {
TunerPreferences.setShouldShowSetupActivity(context, false);
cancelNotification(context);
}
}
- private static void sendNotification(Context context, Integer tunerType) {
+ private static void sendNotification(
+ Context context, Integer tunerType, Intent tunerSetupIntent) {
SoftPreconditions.checkState(
tunerType != null, TAG, "tunerType is null when send notification");
if (tunerType == null) {
@@ -374,16 +377,16 @@ public abstract class BaseTunerSetupActivity extends SetupActivity {
}
String contentText = resources.getString(contentTextId);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- sendNotificationInternal(context, contentTitle, contentText);
+ sendNotificationInternal(context, contentTitle, contentText, tunerSetupIntent);
} else {
Bitmap largeIcon =
BitmapFactory.decodeResource(resources, R.drawable.recommendation_antenna);
- sendRecommendationCard(context, contentTitle, contentText, largeIcon);
+ sendRecommendationCard(context, contentTitle, contentText, largeIcon, tunerSetupIntent);
}
}
private static void sendNotificationInternal(
- Context context, String contentTitle, String contentText) {
+ Context context, String contentTitle, String contentText, Intent tunerSetupIntent) {
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(
@@ -400,7 +403,8 @@ public abstract class BaseTunerSetupActivity extends SetupActivity {
context.getResources()
.getIdentifier(
TAG_ICON, TAG_DRAWABLE, context.getPackageName()))
- .setContentIntent(createPendingIntentForSetupActivity(context))
+ .setContentIntent(
+ createPendingIntentForSetupActivity(context, tunerSetupIntent))
.setVisibility(Notification.VISIBILITY_PUBLIC)
.extend(new Notification.TvExtender())
.build();
@@ -410,10 +414,15 @@ public abstract class BaseTunerSetupActivity extends SetupActivity {
/**
* Sends the recommendation card to start the tuner TV input setup activity.
*
+ * @param tunerSetupIntent
* @param context a {@link Context} instance
*/
private static void sendRecommendationCard(
- Context context, String contentTitle, String contentText, Bitmap largeIcon) {
+ Context context,
+ String contentTitle,
+ String contentText,
+ Bitmap largeIcon,
+ Intent tunerSetupIntent) {
// Build and send the notification.
Notification notification =
new NotificationCompat.BigPictureStyle(
@@ -431,7 +440,8 @@ public abstract class BaseTunerSetupActivity extends SetupActivity {
TAG_DRAWABLE,
context.getPackageName()))
.setContentIntent(
- createPendingIntentForSetupActivity(context)))
+ createPendingIntentForSetupActivity(
+ context, tunerSetupIntent)))
.build();
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -442,13 +452,12 @@ public abstract class BaseTunerSetupActivity extends SetupActivity {
* Returns a {@link PendingIntent} to launch the tuner TV input service.
*
* @param context a {@link Context} instance
+ * @param tunerSetupIntent
*/
- private static PendingIntent createPendingIntentForSetupActivity(Context context) {
+ private static PendingIntent createPendingIntentForSetupActivity(
+ Context context, Intent tunerSetupIntent) {
return PendingIntent.getActivity(
- context,
- 0,
- BaseApplication.getSingletons(context).getTunerSetupIntent(context),
- PendingIntent.FLAG_UPDATE_CURRENT);
+ context, 0, tunerSetupIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
/** Creates {@link Tuner} instances in a worker thread * */