diff options
author | nchalko <nchalko@google.com> | 2018-12-18 12:26:40 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-12-18 13:05:16 -0800 |
commit | 5bd4840e4ef9474dd1e0c90efc996d2b00cf0037 (patch) | |
tree | 3020f2743ae30fef74951a9297fd698a345b98f9 | |
parent | 13f1bdce2947cefc4c0a9ad2e24dbee06e7d558d (diff) | |
download | TV-5bd4840e4ef9474dd1e0c90efc996d2b00cf0037.tar.gz |
Create a Optional BuiltInTunerManager
This manager is absent if the tuner is not enabled.
PiperOrigin-RevId: 226039646
Change-Id: Ib71a3a9abd361794048ea8917300a9f2187ea3d2
11 files changed, 91 insertions, 50 deletions
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java index 682fc2a7..fae27723 100644 --- a/src/com/android/tv/MainActivity.java +++ b/src/com/android/tv/MainActivity.java @@ -115,7 +115,7 @@ import com.android.tv.receiver.AudioCapabilitiesReceiver; import com.android.tv.recommendation.ChannelPreviewUpdater; import com.android.tv.recommendation.NotificationService; import com.android.tv.search.ProgramGuideSearchFragment; -import com.android.tv.tunerinputcontroller.TunerInputController; +import com.android.tv.tunerinputcontroller.BuiltInTunerManager; import com.android.tv.ui.ChannelBannerView; import com.android.tv.ui.DetailsActivity; import com.android.tv.ui.InputBannerView; @@ -272,6 +272,7 @@ public class MainActivity extends Activity private DvrManager mDvrManager; private ConflictChecker mDvrConflictChecker; private SetupUtils mSetupUtils; + private Optional<BuiltInTunerManager> mOptionalBuiltInTunerManager; @VisibleForTesting protected TunableTvView mTvView; private View mContentView; @@ -433,7 +434,7 @@ public class MainActivity extends Activity new TvInputCallback() { @Override public void onInputAdded(String inputId) { - if (TvFeatures.TUNER.isEnabled(MainActivity.this) + if (mOptionalBuiltInTunerManager.isPresent() && mTunerInputId.equals(inputId) && CommonPreferences.shouldShowSetupActivity(MainActivity.this)) { Intent intent = @@ -483,6 +484,7 @@ public class MainActivity extends Activity finishAndRemoveTask(); return; } + mOptionalBuiltInTunerManager = tvSingletons.getBuiltInTunerManager(); mSetupUtils = tvSingletons.getSetupUtils(); TvSingletons tvApplication = (TvSingletons) getApplication(); @@ -545,7 +547,7 @@ public class MainActivity extends Activity Toast.makeText(this, "Using Strict Mode for eng builds", Toast.LENGTH_SHORT).show(); } mTracker = tvApplication.getTracker(); - if (TvFeatures.TUNER.isEnabled(this)) { + if (mOptionalBuiltInTunerManager.isPresent()) { mTvInputManagerHelper.addCallback(mTvInputCallback); } mTunerInputId = tvSingletons.getEmbeddedTunerInputId(); @@ -816,12 +818,13 @@ public class MainActivity extends Activity notificationIntent.setAction(NotificationService.ACTION_SHOW_RECOMMENDATION); startService(notificationIntent); } - TvSingletons singletons = TvSingletons.getSingletons(this); - Optional<TunerInputController> tunerInputController = singletons.getTunerInputController(); - if (tunerInputController.isPresent()) { - tunerInputController.get().executeNetworkTunerDiscoveryAsyncTask(this); + if (mOptionalBuiltInTunerManager.isPresent()) { + mOptionalBuiltInTunerManager + .get() + .getTunerInputController() + .executeNetworkTunerDiscoveryAsyncTask(this); } - singletons.getEpgFetcher().fetchImmediatelyIfNeeded(); + TvSingletons.getSingletons(this).getEpgFetcher().fetchImmediatelyIfNeeded(); } @Override @@ -2059,7 +2062,7 @@ public class MainActivity extends Activity } if (mTvInputManagerHelper != null) { mTvInputManagerHelper.clearTvInputLabels(); - if (TvFeatures.TUNER.isEnabled(this)) { + if (mOptionalBuiltInTunerManager.isPresent()) { mTvInputManagerHelper.removeCallback(mTvInputCallback); } } diff --git a/src/com/android/tv/TvApplication.java b/src/com/android/tv/TvApplication.java index 4954c98a..630ba376 100644 --- a/src/com/android/tv/TvApplication.java +++ b/src/com/android/tv/TvApplication.java @@ -172,12 +172,12 @@ public abstract class TvApplication extends BaseApplication implements TvSinglet new TvInputCallback() { @Override public void onInputAdded(String inputId) { - if (getTunerInputController().isPresent() - && TvFeatures.TUNER.isEnabled(TvApplication.this) + if (getBuiltInTunerManager().isPresent() && TextUtils.equals( inputId, getEmbeddedTunerInputId())) { - getTunerInputController() + getBuiltInTunerManager() .get() + .getTunerInputController() .updateTunerInputInfo(TvApplication.this); } handleInputCountChanged(); @@ -188,10 +188,13 @@ public abstract class TvApplication extends BaseApplication implements TvSinglet handleInputCountChanged(); } }); - if (getTunerInputController().isPresent() && TvFeatures.TUNER.isEnabled(this)) { + if (getBuiltInTunerManager().isPresent()) { // If the tuner input service is added before the app is started, we need to // handle it here. - getTunerInputController().get().updateTunerInputInfo(TvApplication.this); + getBuiltInTunerManager() + .get() + .getTunerInputController() + .updateTunerInputInfo(TvApplication.this); } if (CommonFeatures.DVR.isEnabled(this)) { mDvrScheduleManager = new DvrScheduleManager(this); @@ -215,9 +218,10 @@ public abstract class TvApplication extends BaseApplication implements TvSinglet boolean isFirstLaunch = sharedPreferences.getBoolean(PREFERENCE_IS_FIRST_LAUNCH, true); if (isFirstLaunch) { if (DEBUG) Log.d(TAG, "Congratulations, it's the first launch!"); - if (getTunerInputController().isPresent()) { - getTunerInputController() + if (getBuiltInTunerManager().isPresent()) { + getBuiltInTunerManager() .get() + .getTunerInputController() .onCheckingUsbTunerStatus(this, ACTION_APPLICATION_FIRST_LAUNCHED); } SharedPreferences.Editor editor = sharedPreferences.edit(); diff --git a/src/com/android/tv/TvSingletons.java b/src/com/android/tv/TvSingletons.java index f7a1273d..f582b236 100644 --- a/src/com/android/tv/TvSingletons.java +++ b/src/com/android/tv/TvSingletons.java @@ -33,17 +33,16 @@ 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.tunerinputcontroller.TunerInputController; +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 com.google.common.base.Optional; import com.android.tv.common.flags.BackendKnobsFlags; import java.util.concurrent.Executor; import javax.inject.Provider; /** Interface with getters for application scoped singletons. */ -public interface TvSingletons extends BaseSingletons { +public interface TvSingletons extends BaseSingletons, HasBuiltInTunerManager { /** Returns the @{@link TvSingletons} using the application context. */ static TvSingletons getSingletons(Context context) { @@ -102,8 +101,6 @@ public interface TvSingletons extends BaseSingletons { SetupUtils getSetupUtils(); - Optional<TunerInputController> getTunerInputController(); - ExperimentLoader getExperimentLoader(); Executor getDbExecutor(); diff --git a/src/com/android/tv/app/LiveTvApplication.java b/src/com/android/tv/app/LiveTvApplication.java index 903b5def..db20846c 100644 --- a/src/com/android/tv/app/LiveTvApplication.java +++ b/src/com/android/tv/app/LiveTvApplication.java @@ -37,7 +37,7 @@ import com.android.tv.perf.PerformanceMonitor; import com.android.tv.perf.PerformanceMonitorManagerFactory; import com.android.tv.tuner.livetuner.LiveTvTunerTvInputService; import com.android.tv.tuner.setup.LiveTvTunerSetupActivity; -import com.android.tv.tunerinputcontroller.TunerInputController; +import com.android.tv.tunerinputcontroller.BuiltInTunerManager; import com.android.tv.util.account.AccountHelper; import com.android.tv.util.account.AccountHelperImpl; import com.google.common.base.Optional; @@ -59,7 +59,6 @@ public class LiveTvApplication extends TvApplication { } }; - private final Optional<TunerInputController> mOptionalTunerInputController = Optional.absent(); private final DefaultBackendKnobsFlags mBackendKnobsFlags = new DefaultBackendKnobsFlags(); private final DefaultCloudEpgFlags mCloudEpgFlags = new DefaultCloudEpgFlags(); private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags = @@ -157,8 +156,8 @@ public class LiveTvApplication extends TvApplication { } @Override - public Optional<TunerInputController> getTunerInputController() { - return mOptionalTunerInputController; + public Optional<BuiltInTunerManager> getBuiltInTunerManager() { + return Optional.absent(); } @Override diff --git a/src/com/android/tv/features/TvFeatures.java b/src/com/android/tv/features/TvFeatures.java index a176e4cc..b42c2f2c 100644 --- a/src/com/android/tv/features/TvFeatures.java +++ b/src/com/android/tv/features/TvFeatures.java @@ -20,8 +20,6 @@ import static com.android.tv.common.feature.EngOnlyFeature.ENG_ONLY_FEATURE; import static com.android.tv.common.feature.FeatureUtils.OFF; import static com.android.tv.common.feature.FeatureUtils.ON; import static com.android.tv.common.feature.FeatureUtils.and; -import static com.android.tv.common.feature.FeatureUtils.aospFeature; -import static com.android.tv.common.feature.FeatureUtils.not; import static com.android.tv.common.feature.FeatureUtils.or; import android.content.Context; @@ -34,7 +32,6 @@ import com.android.tv.common.feature.ExperimentFeature; import com.android.tv.common.feature.Feature; import com.android.tv.common.feature.FeatureUtils; import com.android.tv.common.feature.GServiceFeature; - import com.android.tv.common.feature.PropertyFeature; import com.android.tv.common.feature.Sdk; import com.android.tv.common.feature.TestableFeature; @@ -61,11 +58,6 @@ public final class TvFeatures extends CommonFeatures { */ public static final Feature ANALYTICS_V2 = and(ON, ANALYTICS_OPT_IN); - /** Enables Embedded tuner */ - public static final Feature TUNER = - aospFeature( - OFF); - // TODO(b/76149661): Fix EPG search or remove it public static final Feature EPG_SEARCH = OFF; diff --git a/src/com/android/tv/onboarding/SetupSourcesFragment.java b/src/com/android/tv/onboarding/SetupSourcesFragment.java index a53c4934..3566c9c3 100644 --- a/src/com/android/tv/onboarding/SetupSourcesFragment.java +++ b/src/com/android/tv/onboarding/SetupSourcesFragment.java @@ -197,10 +197,11 @@ public class SetupSourcesFragment extends SetupMultiPaneFragment { mChannelDataManager.addListener(mChannelDataManagerListener); super.onCreate(savedInstanceState); mParentFragment = (SetupSourcesFragment) getParentFragment(); - if (singletons.getTunerInputController().isPresent()) { + if (singletons.getBuiltInTunerManager().isPresent()) { singletons - .getTunerInputController() + .getBuiltInTunerManager() .get() + .getTunerInputController() .executeNetworkTunerDiscoveryAsyncTask(getContext()); } } diff --git a/src/com/android/tv/tunerinputcontroller/BuiltInTunerManager.java b/src/com/android/tv/tunerinputcontroller/BuiltInTunerManager.java new file mode 100644 index 00000000..e19974c0 --- /dev/null +++ b/src/com/android/tv/tunerinputcontroller/BuiltInTunerManager.java @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2018 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.tunerinputcontroller; + +/** Controllers and parameters needed to access a built in tuner. */ +public interface BuiltInTunerManager { + TunerInputController getTunerInputController(); +} diff --git a/src/com/android/tv/tunerinputcontroller/HasBuiltInTunerManager.java b/src/com/android/tv/tunerinputcontroller/HasBuiltInTunerManager.java new file mode 100644 index 00000000..67d647d2 --- /dev/null +++ b/src/com/android/tv/tunerinputcontroller/HasBuiltInTunerManager.java @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2018 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.tunerinputcontroller; + +import com.google.common.base.Optional; + +/** + * Has optional {@link BuiltInTunerManager}. + * + * <p>If the {@code BuiltInTunerManager} is absent the built tuner is not enabled. + */ +public interface HasBuiltInTunerManager { + + Optional<BuiltInTunerManager> getBuiltInTunerManager(); +} diff --git a/src/com/android/tv/ui/sidepanel/SettingsFragment.java b/src/com/android/tv/ui/sidepanel/SettingsFragment.java index 6a181156..aa71fb75 100644 --- a/src/com/android/tv/ui/sidepanel/SettingsFragment.java +++ b/src/com/android/tv/ui/sidepanel/SettingsFragment.java @@ -29,7 +29,6 @@ import com.android.tv.common.CommonPreferences; import com.android.tv.common.customization.CustomizationManager; import com.android.tv.common.util.PermissionUtils; import com.android.tv.dialog.PinDialogFragment; -import com.android.tv.features.TvFeatures; import com.android.tv.license.LicenseSideFragment; import com.android.tv.license.Licenses; import com.android.tv.util.Utils; @@ -80,10 +79,9 @@ public class SettingsFragment extends SideFragment { customizeChannelListItem.setEnabled(false); items.add(customizeChannelListItem); final MainActivity activity = getMainActivity(); + TvSingletons singletons = TvSingletons.getSingletons(getContext()); boolean hasNewInput = - TvSingletons.getSingletons(getContext()) - .getSetupUtils() - .hasNewInput(activity.getTvInputManagerHelper()); + singletons.getSetupUtils().hasNewInput(activity.getTvInputManagerHelper()); items.add( new ActionItem( getString(R.string.settings_channel_source_item_setup), @@ -126,11 +124,9 @@ public class SettingsFragment extends SideFragment { // It's TBD. } boolean showTrickplaySetting = false; - if (TvFeatures.TUNER.isEnabled(getContext())) { + if (singletons.getBuiltInTunerManager().isPresent()) { for (TvInputInfo inputInfo : - TvSingletons.getSingletons(getContext()) - .getTvInputManagerHelper() - .getTvInputInfos(true, true)) { + singletons.getTvInputManagerHelper().getTvInputInfos(true, true)) { if (Utils.isInternalTvInput(getContext(), inputInfo.getId())) { showTrickplaySetting = true; break; diff --git a/tests/common/src/com/android/tv/testing/TestSingletonApp.java b/tests/common/src/com/android/tv/testing/TestSingletonApp.java index fb6b2756..de0db8ce 100644 --- a/tests/common/src/com/android/tv/testing/TestSingletonApp.java +++ b/tests/common/src/com/android/tv/testing/TestSingletonApp.java @@ -51,7 +51,7 @@ import com.android.tv.testing.testdata.TestData; 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; -import com.android.tv.tunerinputcontroller.TunerInputController; +import com.android.tv.tunerinputcontroller.BuiltInTunerManager; import com.android.tv.util.SetupUtils; import com.android.tv.util.TvInputManagerHelper; import com.android.tv.util.account.AccountHelper; @@ -71,7 +71,7 @@ public class TestSingletonApp extends Application implements TvSingletons, HasTu public DvrDataManager mDvrDataManager; private final Provider<EpgReader> mEpgReaderProvider = SingletonProvider.create(epgReader); - private final Optional<TunerInputController> mOptionalTunerInputController = Optional.absent(); + private final Optional<BuiltInTunerManager> mBuiltInTunerManagerOptional = Optional.absent(); private final DefaultBackendKnobsFlags mBackendKnobs = new DefaultBackendKnobsFlags(); private final DefaultCloudEpgFlags mCloudEpgFlags = new DefaultCloudEpgFlags(); private final DefaultConcurrentDvrPlaybackFlags mConcurrentDvrPlaybackFlags = @@ -190,8 +190,8 @@ public class TestSingletonApp extends Application implements TvSingletons, HasTu } @Override - public Optional<TunerInputController> getTunerInputController() { - return mOptionalTunerInputController; + public Optional<BuiltInTunerManager> getBuiltInTunerManager() { + return mBuiltInTunerManagerOptional; } @Override diff --git a/tests/unit/src/com/android/tv/util/MockTvSingletons.java b/tests/unit/src/com/android/tv/util/MockTvSingletons.java index 68dcfde1..d59ef2d4 100644 --- a/tests/unit/src/com/android/tv/util/MockTvSingletons.java +++ b/tests/unit/src/com/android/tv/util/MockTvSingletons.java @@ -42,7 +42,7 @@ import com.android.tv.dvr.DvrWatchedPositionManager; import com.android.tv.dvr.recorder.RecordingScheduler; import com.android.tv.perf.PerformanceMonitor; import com.android.tv.testing.FakeClock; -import com.android.tv.tunerinputcontroller.TunerInputController; +import com.android.tv.tunerinputcontroller.BuiltInTunerManager; import com.google.common.base.Optional; import java.util.concurrent.Executor; import javax.inject.Provider; @@ -161,8 +161,8 @@ public class MockTvSingletons implements TvSingletons { } @Override - public Optional<TunerInputController> getTunerInputController() { - return mApp.getTunerInputController(); + public Optional<BuiltInTunerManager> getBuiltInTunerManager() { + return mApp.getBuiltInTunerManager(); } @Override |