Merge "Fix empty program list filter handling." into pi-dev

This commit is contained in:
Tomasz Wasilczyk
2018-03-29 20:28:12 +00:00
committed by Android (Google) Code Review
5 changed files with 26 additions and 3 deletions

View File

@@ -260,6 +260,17 @@ public final class ProgramList implements AutoCloseable {
mVendorFilter = null;
}
/**
* @hide for framework use only
*/
public Filter() {
mIdentifierTypes = Collections.emptySet();
mIdentifiers = Collections.emptySet();
mIncludeCategories = false;
mExcludeModifications = false;
mVendorFilter = null;
}
/**
* @hide for framework use only
*/

View File

@@ -60,6 +60,7 @@ class TunerAdapter extends RadioTuner {
mLegacyListProxy.close();
mLegacyListProxy = null;
}
mCallback.close();
}
try {
mTuner.close();
@@ -278,6 +279,7 @@ class TunerAdapter extends RadioTuner {
try {
mTuner.startProgramListUpdates(filter);
} catch (UnsupportedOperationException ex) {
Log.i(TAG, "Program list is not supported with this hardware");
return null;
} catch (RemoteException ex) {
mCallback.setProgramListObserver(null, () -> { });

View File

@@ -53,6 +53,12 @@ class TunerCallbackAdapter extends ITunerCallback.Stub {
}
}
void close() {
synchronized (mLock) {
if (mProgramList != null) mProgramList.close();
}
}
void setProgramListObserver(@Nullable ProgramList programList,
@NonNull ProgramList.OnCloseListener closeListener) {
Objects.requireNonNull(closeListener);

View File

@@ -17,6 +17,7 @@
package com.android.server.broadcastradio.hal1;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.hardware.radio.ITuner;
import android.hardware.radio.ITunerCallback;
import android.hardware.radio.ProgramList;
@@ -87,8 +88,9 @@ class TunerCallback implements ITunerCallback {
mTuner.close();
}
void startProgramListUpdates(@NonNull ProgramList.Filter filter) {
mProgramListFilter.set(Objects.requireNonNull(filter));
void startProgramListUpdates(@Nullable ProgramList.Filter filter) {
if (filter == null) filter = new ProgramList.Filter();
mProgramListFilter.set(filter);
sendProgramListUpdate();
}

View File

@@ -375,7 +375,9 @@ class Convert {
);
}
static @NonNull ProgramFilter programFilterToHal(@NonNull ProgramList.Filter filter) {
static @NonNull ProgramFilter programFilterToHal(@Nullable ProgramList.Filter filter) {
if (filter == null) filter = new ProgramList.Filter();
ProgramFilter hwFilter = new ProgramFilter();
filter.getIdentifierTypes().stream().forEachOrdered(hwFilter.identifierTypes::add);