aboutsummaryrefslogtreecommitdiff
path: root/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/tv/MainActivity.java6
-rw-r--r--src/com/android/tv/data/ProgramDataManager.java112
-rw-r--r--src/com/android/tv/guide/ProgramGuide.java10
-rw-r--r--src/com/android/tv/guide/ProgramManager.java27
4 files changed, 23 insertions, 132 deletions
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java
index e39b5f9c..e550700f 100644
--- a/src/com/android/tv/MainActivity.java
+++ b/src/com/android/tv/MainActivity.java
@@ -2839,10 +2839,8 @@ public class MainActivity extends Activity
Debug.getTimer(Debug.TAG_START_UP_TIMER).log("MainActivity.MyOnTuneListener.onTune");
mChannel = channel;
mWasUnderShrunkenTvView = wasUnderShrunkenTvView;
- if (mBackendKnobs.fetchProgramsAsNeeded()) {
- // Fetch complete projection of tuned channel.
- mProgramDataManager.onChannelTuned(channel.getId());
- }
+ // Fetch complete projection of tuned channel.
+ mProgramDataManager.onChannelTuned(channel.getId());
}
@Override
diff --git a/src/com/android/tv/data/ProgramDataManager.java b/src/com/android/tv/data/ProgramDataManager.java
index f329d6c2..2cf5da45 100644
--- a/src/com/android/tv/data/ProgramDataManager.java
+++ b/src/com/android/tv/data/ProgramDataManager.java
@@ -80,11 +80,6 @@ public class ProgramDataManager implements MemoryManageable {
private static final long CURRENT_PROGRAM_UPDATE_WAIT_MS = TimeUnit.SECONDS.toMillis(5);
@VisibleForTesting static final long PROGRAM_GUIDE_SNAP_TIME_MS = TimeUnit.MINUTES.toMillis(30);
- // Default fetch hours
- private static final long FETCH_HOURS_MS = TimeUnit.HOURS.toMillis(24);
- // Load data earlier for smooth scrolling.
- private static final long BUFFER_HOURS_MS = TimeUnit.HOURS.toMillis(6);
-
// TODO: Use TvContract constants, once they become public.
private static final String PARAM_START_TIME = "start_time";
private static final String PARAM_END_TIME = "end_time";
@@ -148,9 +143,6 @@ public class ProgramDataManager implements MemoryManageable {
private final LruCache<Long, Program> mZeroLengthProgramCache = new LruCache<>(10);
// Current tuned channel.
private long mTunedChannelId;
- // Hours of data to be fetched, it is updated during horizontal scroll.
- // Note that it should never exceed programGuideMaxHours.
- private long mMaxFetchHoursMs = FETCH_HOURS_MS;
@MainThread
public ProgramDataManager(Context context) {
@@ -293,73 +285,23 @@ public class ProgramDataManager implements MemoryManageable {
* Prefetch program data if needed.
*
* @param channelId ID of the channel to prefetch
- * @param selectedProgramIndex index of selected program.
*/
- public void prefetchChannel(long channelId, int selectedProgramIndex) {
+ public void prefetchChannel(long channelId) {
long startTimeMs =
Utils.floorTime(
mClock.currentTimeMillis() - PROGRAM_GUIDE_SNAP_TIME_MS,
PROGRAM_GUIDE_SNAP_TIME_MS);
- if (!mBackendKnobsFlags.fetchProgramsAsNeeded()) {
- if (mCompleteInfoChannelIds.add(channelId)) {
- long endTimeMs = startTimeMs + TimeUnit.HOURS.toMillis(getFetchDuration());
- mCompleteInfoChannelIds.clear();
- new SingleChannelPrefetchTask(channelId, startTimeMs, endTimeMs)
- .executeOnDbThread();
- }
- } else {
- long programGuideMaxHoursMs =
- TimeUnit.HOURS.toMillis(mBackendKnobsFlags.programGuideMaxHours());
- long endTimeMs = 0;
- if (mMaxFetchHoursMs < programGuideMaxHoursMs
- && isHorizontalLoadNeeded(startTimeMs, channelId, selectedProgramIndex)) {
- // Horizontal scrolling needs to load data of further days.
- mMaxFetchHoursMs =
- Math.min(programGuideMaxHoursMs, mMaxFetchHoursMs + FETCH_HOURS_MS);
- mCompleteInfoChannelIds.clear();
- }
- // Load max hours complete data for first channel.
- if (mCompleteInfoChannelIds.isEmpty()) {
- endTimeMs = startTimeMs + programGuideMaxHoursMs;
- } else if (!mCompleteInfoChannelIds.contains(channelId)) {
- endTimeMs = startTimeMs + mMaxFetchHoursMs;
- }
-
- if (endTimeMs > 0) {
- mCompleteInfoChannelIds.add(channelId);
- new SingleChannelPrefetchTask(channelId, startTimeMs, endTimeMs)
- .executeOnDbThread();
- }
+ if (mCompleteInfoChannelIds.add(channelId)) {
+ long endTimeMs = startTimeMs + TimeUnit.HOURS.toMillis(getFetchDuration());
+ mCompleteInfoChannelIds.clear();
+ new SingleChannelPrefetchTask(channelId, startTimeMs, endTimeMs).executeOnDbThread();
}
}
- /**
- * Check if enough data is present for horizontal scroll, otherwise prefetch programs.
- *
- * <p>If end time of current program is past {@code BUFFER_HOURS_MS} less than the fetched time
- * we need to prefetch proceeding programs.
- *
- * @param startTimeMs Fetch start time, it is used to get fetch end time.
- * @param channelId
- * @param selectedProgramIndex
- * @return {@code true} If data load is needed, else {@code false}.
- */
- private boolean isHorizontalLoadNeeded(
- long startTimeMs, long channelId, int selectedProgramIndex) {
- long marginEndTime = startTimeMs + mMaxFetchHoursMs - BUFFER_HOURS_MS;
- return (mChannelIdProgramCache.containsKey(channelId)
- && mChannelIdProgramCache.get(channelId).size() > selectedProgramIndex
- && mChannelIdProgramCache
- .get(channelId)
- .get(selectedProgramIndex)
- .getEndTimeUtcMillis()
- > marginEndTime);
- }
-
public void onChannelTuned(long channelId) {
mTunedChannelId = channelId;
- prefetchChannel(channelId, 0);
+ prefetchChannel(channelId);
}
/** A Callback interface to receive notification on program data retrieval from DB. */
@@ -372,14 +314,6 @@ public class ProgramDataManager implements MemoryManageable {
void onProgramUpdated();
/**
- * Called when we update complete program data of specific channel during scrolling. Data is
- * loaded from DB on request basis.
- *
- * @param channelId
- */
- void onSingleChannelUpdated(long channelId);
-
- /**
* Called when we update program data during scrolling. Data is loaded from DB on request
* basis. It loads data based on horizontal scrolling as well.
*/
@@ -637,10 +571,7 @@ public class ProgramDataManager implements MemoryManageable {
}
programMap.clear();
- String[] projection =
- mBackendKnobsFlags.fetchProgramsAsNeeded()
- ? ProgramImpl.PARTIAL_PROJECTION
- : ProgramImpl.PROJECTION;
+ String[] projection = ProgramImpl.PARTIAL_PROJECTION;
if (TvProviderUtils.checkSeriesIdColumn(mContext, Programs.CONTENT_URI)) {
if (Utils.isProgramsUri(uri)) {
projection =
@@ -723,19 +654,15 @@ public class ProgramDataManager implements MemoryManageable {
PROGRAM_GUIDE_SNAP_TIME_MS)
- currentTime;
// Issue second pre-fetch immediately after the first partial update
- if (!mBackendKnobsFlags.fetchProgramsAsNeeded()
- && mChannelIdProgramCache.isEmpty()) {
+ if (mChannelIdProgramCache.isEmpty()) {
nextMessageDelayedTime = 0;
}
mChannelIdProgramCache = programs;
- if (mBackendKnobsFlags.fetchProgramsAsNeeded()) {
- // Since cache has partial data we need to reset the map of complete data.
- clearChannelInfoMap();
- // Get complete projection of tuned channel.
- if (mBackendKnobsFlags.fetchProgramsAsNeeded()) {
- prefetchChannel(mTunedChannelId, 0);
- }
- }
+ // Since cache has partial data we need to reset the map of complete data.
+ clearChannelInfoMap();
+ // Get complete projection of tuned channel.
+ prefetchChannel(mTunedChannelId);
+
notifyProgramUpdated();
if (mFromEmptyCacheTimeEvent != null) {
mPerformanceMonitor.stopTimer(
@@ -755,7 +682,6 @@ public class ProgramDataManager implements MemoryManageable {
private void clearChannelInfoMap() {
mCompleteInfoChannelIds.clear();
- mMaxFetchHoursMs = FETCH_HOURS_MS;
}
private long getFetchDuration() {
@@ -809,11 +735,7 @@ public class ProgramDataManager implements MemoryManageable {
@Override
protected void onPostExecute(ArrayList<Program> programs) {
mChannelIdProgramCache.put(mChannelId, programs);
- if (mBackendKnobsFlags.fetchProgramsAsNeeded()) {
- notifyChannelUpdated();
- } else {
- notifySingleChannelUpdated(mChannelId);
- }
+ notifyChannelUpdated();
}
}
@@ -823,12 +745,6 @@ public class ProgramDataManager implements MemoryManageable {
}
}
- private void notifySingleChannelUpdated(long channelId) {
- for (Callback callback : mCallbacks) {
- callback.onSingleChannelUpdated(channelId);
- }
- }
-
private void notifyChannelUpdated() {
for (Callback callback : mCallbacks) {
callback.onChannelUpdated();
diff --git a/src/com/android/tv/guide/ProgramGuide.java b/src/com/android/tv/guide/ProgramGuide.java
index bddcc8bb..8ae61e8a 100644
--- a/src/com/android/tv/guide/ProgramGuide.java
+++ b/src/com/android/tv/guide/ProgramGuide.java
@@ -41,9 +41,11 @@ import android.view.ViewGroup.LayoutParams;
import android.view.ViewTreeObserver;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
+
import androidx.leanback.widget.OnChildSelectedListener;
import androidx.leanback.widget.SearchOrbView;
import androidx.leanback.widget.VerticalGridView;
+
import com.android.tv.ChannelTuner;
import com.android.tv.MainActivity;
import com.android.tv.R;
@@ -65,8 +67,9 @@ import com.android.tv.ui.ViewUtils;
import com.android.tv.ui.hideable.AutoHideScheduler;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
-import com.android.tv.common.flags.BackendKnobsFlags;
+
import com.android.tv.common.flags.UiFlags;
+
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -187,7 +190,6 @@ public class ProgramGuide
mActivity = activity;
TvSingletons singletons = TvSingletons.getSingletons(mActivity);
mPerformanceMonitor = singletons.getPerformanceMonitor();
- BackendKnobsFlags backendKnobsFlags = singletons.getBackendKnobs();
mUiFlags = singletons.getUiFlags();
mProgramManager =
new ProgramManager(
@@ -195,9 +197,7 @@ public class ProgramGuide
channelDataManager,
programDataManager,
dvrDataManager,
- dvrScheduleManager,
- backendKnobsFlags,
- mUiFlags);
+ dvrScheduleManager);
mChannelTuner = channelTuner;
mTracker = tracker;
mPreShowRunnable = preShowRunnable;
diff --git a/src/com/android/tv/guide/ProgramManager.java b/src/com/android/tv/guide/ProgramManager.java
index 76b00365..0fa20df4 100644
--- a/src/com/android/tv/guide/ProgramManager.java
+++ b/src/com/android/tv/guide/ProgramManager.java
@@ -35,9 +35,6 @@ import com.android.tv.dvr.data.ScheduledRecording;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
-import com.android.tv.common.flags.BackendKnobsFlags;
-import com.android.tv.common.flags.UiFlags;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -65,7 +62,6 @@ public class ProgramManager {
private final ProgramDataManager mProgramDataManager;
private final DvrDataManager mDvrDataManager; // Only set if DVR is enabled
private final DvrScheduleManager mDvrScheduleManager;
- private final BackendKnobsFlags mBackendKnobsFlags;
private long mStartUtcMillis;
private long mEndUtcMillis;
@@ -133,20 +129,6 @@ public class ProgramManager {
updateTableEntriesWithoutNotification(false);
notifyTableEntriesUpdated();
}
-
- @Override
- public void onSingleChannelUpdated(long channelId) {
- boolean parentalControlsEnabled =
- mTvInputManagerHelper
- .getParentalControlSettings()
- .isParentalControlsEnabled();
- // Inline the updating of the mChannelIdEntriesMap here so we can only call
- // getParentalControlSettings once.
- List<TableEntry> entries =
- createProgramEntries(channelId, parentalControlsEnabled);
- mChannelIdEntriesMap.put(channelId, entries);
- notifyTableEntriesUpdated();
- }
};
private final DvrDataManager.ScheduledRecordingListener mScheduledRecordingListener =
@@ -226,15 +208,12 @@ public class ProgramManager {
ChannelDataManager channelDataManager,
ProgramDataManager programDataManager,
@Nullable DvrDataManager dvrDataManager,
- @Nullable DvrScheduleManager dvrScheduleManager,
- BackendKnobsFlags backendKnobsFlags,
- UiFlags uiFlags) {
+ @Nullable DvrScheduleManager dvrScheduleManager) {
mTvInputManagerHelper = tvInputManagerHelper;
mChannelDataManager = channelDataManager;
mProgramDataManager = programDataManager;
mDvrDataManager = dvrDataManager;
mDvrScheduleManager = dvrScheduleManager;
- mBackendKnobsFlags = backendKnobsFlags;
}
void programGuideVisibilityChanged(boolean visible) {
@@ -444,9 +423,7 @@ public class ProgramManager {
* one (e.g., whose channelId is INVALID_ID), when it corresponds to a gap between programs.
*/
TableEntry getTableEntry(long channelId, int index) {
- if (mBackendKnobsFlags.fetchProgramsAsNeeded()) {
- mProgramDataManager.prefetchChannel(channelId, index);
- }
+ mProgramDataManager.prefetchChannel(channelId);
return mChannelIdEntriesMap.get(channelId).get(index);
}