aboutsummaryrefslogtreecommitdiff
path: root/common/src/com/android/tv
diff options
context:
space:
mode:
Diffstat (limited to 'common/src/com/android/tv')
-rw-r--r--common/src/com/android/tv/common/SharedPreferencesUtils.java1
-rw-r--r--common/src/com/android/tv/common/TvCommonUtils.java17
-rw-r--r--common/src/com/android/tv/common/TvContentRatingCache.java5
-rw-r--r--common/src/com/android/tv/common/feature/SharedPreferencesFeature.java1
-rw-r--r--common/src/com/android/tv/common/feature/TestableFeature.java15
-rw-r--r--common/src/com/android/tv/common/ui/setup/SetupMultiPaneFragment.java14
6 files changed, 42 insertions, 11 deletions
diff --git a/common/src/com/android/tv/common/SharedPreferencesUtils.java b/common/src/com/android/tv/common/SharedPreferencesUtils.java
index fb3d9b56..1b929d3b 100644
--- a/common/src/com/android/tv/common/SharedPreferencesUtils.java
+++ b/common/src/com/android/tv/common/SharedPreferencesUtils.java
@@ -35,6 +35,7 @@ public final class SharedPreferencesUtils {
public static final String SHARED_PREF_RECURRING_RUNNER = "sharedPreferencesRecurringRunner";
public static final String SHARED_PREF_EPG = "epg_preferences";
public static final String SHARED_PREF_SERIES_RECORDINGS = "seriesRecordings";
+ public static final String SHARED_PREF_CHANNEL_LOGO_URIS = "channelLogoUris";
private static boolean sInitializeCalled;
diff --git a/common/src/com/android/tv/common/TvCommonUtils.java b/common/src/com/android/tv/common/TvCommonUtils.java
index a88dd3a8..c391ad24 100644
--- a/common/src/com/android/tv/common/TvCommonUtils.java
+++ b/common/src/com/android/tv/common/TvCommonUtils.java
@@ -23,6 +23,8 @@ import android.media.tv.TvInputInfo;
* Util class for common use in TV app and inputs.
*/
public final class TvCommonUtils {
+ private static Boolean sRunningInTest;
+
private TvCommonUtils() { }
/**
@@ -58,12 +60,15 @@ public final class TvCommonUtils {
* the usual devices even the application is running in tests. We need to figure it out by
* checking whether the class in tv-tests-common module can be loaded or not.
*/
- public static boolean isRunningInTest() {
- try {
- Class.forName("com.android.tv.testing.Utils");
- return true;
- } catch (ClassNotFoundException e) {
- return false;
+ public static synchronized boolean isRunningInTest() {
+ if (sRunningInTest == null) {
+ try {
+ Class.forName("com.android.tv.testing.Utils");
+ sRunningInTest = true;
+ } catch (ClassNotFoundException e) {
+ sRunningInTest = false;
+ }
}
+ return sRunningInTest;
}
}
diff --git a/common/src/com/android/tv/common/TvContentRatingCache.java b/common/src/com/android/tv/common/TvContentRatingCache.java
index 5694cda7..8b3c06f1 100644
--- a/common/src/com/android/tv/common/TvContentRatingCache.java
+++ b/common/src/com/android/tv/common/TvContentRatingCache.java
@@ -43,6 +43,7 @@ public final class TvContentRatingCache implements MemoryManageable {
return INSTANCE;
}
+ // @GuardedBy("TvContentRatingCache.this")
private final Map<String, TvContentRating[]> mRatingsMultiMap = new ArrayMap<>();
/**
@@ -51,7 +52,7 @@ public final class TvContentRatingCache implements MemoryManageable {
* Returns {@code null} if the string is empty or contains no valid ratings.
*/
@Nullable
- public TvContentRating[] getRatings(String commaSeparatedRatings) {
+ public synchronized TvContentRating[] getRatings(String commaSeparatedRatings) {
if (TextUtils.isEmpty(commaSeparatedRatings)) {
return null;
}
@@ -136,7 +137,7 @@ public final class TvContentRatingCache implements MemoryManageable {
}
@Override
- public void performTrimMemory(int level) {
+ public synchronized void performTrimMemory(int level) {
mRatingsMultiMap.clear();
}
diff --git a/common/src/com/android/tv/common/feature/SharedPreferencesFeature.java b/common/src/com/android/tv/common/feature/SharedPreferencesFeature.java
index a4a79b38..881f53d6 100644
--- a/common/src/com/android/tv/common/feature/SharedPreferencesFeature.java
+++ b/common/src/com/android/tv/common/feature/SharedPreferencesFeature.java
@@ -19,7 +19,6 @@ package com.android.tv.common.feature;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
-
import com.android.tv.common.SharedPreferencesUtils;
/**
diff --git a/common/src/com/android/tv/common/feature/TestableFeature.java b/common/src/com/android/tv/common/feature/TestableFeature.java
index a02877ec..d7e707a1 100644
--- a/common/src/com/android/tv/common/feature/TestableFeature.java
+++ b/common/src/com/android/tv/common/feature/TestableFeature.java
@@ -36,14 +36,29 @@ public class TestableFeature implements Feature {
private final Feature mDelegate;
private Boolean mTestValue = null;
+ /**
+ * Creates testable feature.
+ */
public static TestableFeature createTestableFeature(Feature delegate) {
return new TestableFeature(delegate);
}
+ /**
+ * Creates testable feature with initial value.
+ */
+ public static TestableFeature createTestableFeature(Feature delegate, Boolean initialValue) {
+ return new TestableFeature(delegate, initialValue);
+ }
+
private TestableFeature(Feature delegate) {
mDelegate = delegate;
}
+ private TestableFeature(Feature delegate, Boolean initialValue) {
+ mDelegate = delegate;
+ mTestValue = initialValue;
+ }
+
@VisibleForTesting
public void enableForTest() {
if (!TvCommonUtils.isRunningInTest()) {
diff --git a/common/src/com/android/tv/common/ui/setup/SetupMultiPaneFragment.java b/common/src/com/android/tv/common/ui/setup/SetupMultiPaneFragment.java
index 63247481..b9ad4657 100644
--- a/common/src/com/android/tv/common/ui/setup/SetupMultiPaneFragment.java
+++ b/common/src/com/android/tv/common/ui/setup/SetupMultiPaneFragment.java
@@ -34,6 +34,7 @@ public abstract class SetupMultiPaneFragment extends SetupFragment {
private static final boolean DEBUG = false;
public static final int ACTION_DONE = Integer.MAX_VALUE;
+ public static final int ACTION_SKIP = ACTION_DONE - 1;
private static final String CONTENT_FRAGMENT_TAG = "content_fragment";
@@ -53,7 +54,12 @@ public abstract class SetupMultiPaneFragment extends SetupFragment {
}
if (needsDoneButton()) {
setOnClickAction(view.findViewById(R.id.button_done), getActionCategory(), ACTION_DONE);
- } else {
+ }
+ if (needsSkipButton()) {
+ view.findViewById(R.id.button_skip).setVisibility(View.VISIBLE);
+ setOnClickAction(view.findViewById(R.id.button_skip), getActionCategory(), ACTION_SKIP);
+ }
+ if (!needsDoneButton() && !needsSkipButton()) {
View doneButtonContainer = view.findViewById(R.id.done_button_container);
// Use content view to check layout direction while view is being created.
if (getResources().getConfiguration().getLayoutDirection()
@@ -90,6 +96,10 @@ public abstract class SetupMultiPaneFragment extends SetupFragment {
return true;
}
+ protected boolean needsSkipButton() {
+ return false;
+ }
+
@Override
protected int[] getParentIdsForDelay() {
return new int[] {R.id.content_fragment, R.id.guidedactions_list};
@@ -99,4 +109,4 @@ public abstract class SetupMultiPaneFragment extends SetupFragment {
public int[] getSharedElementIds() {
return new int[] {R.id.action_fragment_background, R.id.done_button_container};
}
-}
+} \ No newline at end of file