aboutsummaryrefslogtreecommitdiff
path: root/common/src
diff options
context:
space:
mode:
Diffstat (limited to 'common/src')
-rw-r--r--common/src/com/android/tv/common/SharedPreferencesUtils.java6
-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/CommonFeatures.java3
-rw-r--r--common/src/com/android/tv/common/feature/Sdk.java44
-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/SetupGuidedStepFragment.java5
-rw-r--r--common/src/com/android/tv/common/ui/setup/SetupMultiPaneFragment.java14
9 files changed, 54 insertions, 56 deletions
diff --git a/common/src/com/android/tv/common/SharedPreferencesUtils.java b/common/src/com/android/tv/common/SharedPreferencesUtils.java
index fb3d9b56..140c4e6f 100644
--- a/common/src/com/android/tv/common/SharedPreferencesUtils.java
+++ b/common/src/com/android/tv/common/SharedPreferencesUtils.java
@@ -35,6 +35,11 @@ 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";
+ /** No need to pre-initialize. It's used only on the worker thread. */
+ public static final String SHARED_PREF_CHANNEL_LOGO_URIS = "channelLogoUris";
+ /** Stores the UI related settings */
+ public static final String SHARED_PREF_UI_SETTINGS = "ui_settings";
+ public static final String SHARED_PREF_PREVIEW_PROGRAMS = "previewPrograms";
private static boolean sInitializeCalled;
@@ -63,6 +68,7 @@ public final class SharedPreferencesUtils {
context.getSharedPreferences(SHARED_PREF_EPG, Context.MODE_PRIVATE);
context.getSharedPreferences(SHARED_PREF_SERIES_RECORDINGS,
Context.MODE_PRIVATE);
+ context.getSharedPreferences(SHARED_PREF_UI_SETTINGS, Context.MODE_PRIVATE);
return null;
}
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/CommonFeatures.java b/common/src/com/android/tv/common/feature/CommonFeatures.java
index d47aa603..62c88ead 100644
--- a/common/src/com/android/tv/common/feature/CommonFeatures.java
+++ b/common/src/com/android/tv/common/feature/CommonFeatures.java
@@ -17,7 +17,6 @@
package com.android.tv.common.feature;
import static com.android.tv.common.feature.FeatureUtils.AND;
-import static com.android.tv.common.feature.FeatureUtils.OR;
import static com.android.tv.common.feature.TestableFeature.createTestableFeature;
/**
@@ -34,7 +33,7 @@ public class CommonFeatures {
* DVR API is introduced in N, it only works when app runs as a system app.
*/
public static final TestableFeature DVR = createTestableFeature(
- AND(OR(Sdk.N_PRE_2_OR_HIGHER, Sdk.AT_LEAST_N), SystemAppFeature.SYSTEM_APP_FEATURE));
+ AND(Sdk.AT_LEAST_N, SystemAppFeature.SYSTEM_APP_FEATURE));
/**
* ENABLE_RECORDING_REGARDLESS_OF_STORAGE_STATUS
diff --git a/common/src/com/android/tv/common/feature/Sdk.java b/common/src/com/android/tv/common/feature/Sdk.java
index 46a681f8..9f99a64f 100644
--- a/common/src/com/android/tv/common/feature/Sdk.java
+++ b/common/src/com/android/tv/common/feature/Sdk.java
@@ -18,50 +18,18 @@ package com.android.tv.common.feature;
import android.content.Context;
import android.os.Build;
-import android.support.v4.os.BuildCompat;
/**
* Holder for SDK version features
*/
public class Sdk {
-
- public static final Feature N_PRE_2_OR_HIGHER =
- new SdkPreviewVersionFeature(Build.VERSION_CODES.M, 2, true);
-
- private static class SdkPreviewVersionFeature implements Feature {
- private final int mVersionCode;
- private final int mPreviewCode;
- private final boolean mAllowHigherPreview;
-
- private SdkPreviewVersionFeature(int versionCode, int previewCode,
- boolean allowHigerPreview) {
- mVersionCode = versionCode;
- mPreviewCode = previewCode;
- mAllowHigherPreview = allowHigerPreview;
- }
-
- @Override
- public boolean isEnabled(Context context) {
- try {
- if (mAllowHigherPreview) {
- return Build.VERSION.SDK_INT == mVersionCode
- && Build.VERSION.PREVIEW_SDK_INT >= mPreviewCode;
- } else {
- return Build.VERSION.SDK_INT == mVersionCode
- && Build.VERSION.PREVIEW_SDK_INT == mPreviewCode;
+ public static final Feature AT_LEAST_N =
+ new Feature() {
+ @Override
+ public boolean isEnabled(Context context) {
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N;
}
- } catch (NoSuchFieldError e) {
- return false;
- }
- }
- }
-
- public static final Feature AT_LEAST_N = new Feature() {
- @Override
- public boolean isEnabled(Context context) {
- return BuildCompat.isAtLeastN();
- }
- };
+ };
private Sdk() {}
}
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/SetupGuidedStepFragment.java b/common/src/com/android/tv/common/ui/setup/SetupGuidedStepFragment.java
index bcaefec9..88159da9 100644
--- a/common/src/com/android/tv/common/ui/setup/SetupGuidedStepFragment.java
+++ b/common/src/com/android/tv/common/ui/setup/SetupGuidedStepFragment.java
@@ -72,9 +72,6 @@ public abstract class SetupGuidedStepFragment extends GuidedStepFragment {
}
// gridView Alignment
VerticalGridView gridView = getGuidedActionsStylist().getActionsGridView();
- // Workaround of b/28274171
- // TODO: Remove the following line once b/28274171 is resolved.
- gridView.setFocusable(true);
int offset = getResources().getDimensionPixelOffset(
R.dimen.setup_guidedactions_selector_margin_top);
gridView.setWindowAlignmentOffset(offset);
@@ -86,8 +83,6 @@ public abstract class SetupGuidedStepFragment extends GuidedStepFragment {
ViewGroup group = (ViewGroup) view.findViewById(R.id.content_frame);
group.setClipChildren(false);
group.setClipToPadding(false);
- // Workaround b/26205201
- view.findViewById(R.id.guidedactions_list2).setFocusable(false);
return view;
}
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