Add a permission for Descrambler
Most of the broadcast features don't require descrambler. Use another permission to minimized the access and protect scrambled contents. Bug: 139308734 Test: make; Change-Id: I3cfcf22ee6b0c9218d3db966b3f441d491d8dd03
This commit is contained in:
@@ -17,6 +17,7 @@ package android {
|
||||
field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
|
||||
field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
|
||||
field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
|
||||
field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER";
|
||||
field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
|
||||
field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
|
||||
field public static final String ADJUST_RUNTIME_PERMISSIONS_POLICY = "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY";
|
||||
@@ -4862,7 +4863,7 @@ package android.media.tv.tuner {
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public static android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities(@NonNull android.content.Context);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.Descrambler openDescrambler();
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.dvr.DvrPlayback openDvrPlayback(long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.dvr.DvrRecorder openDvrRecorder(long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.dvr.OnRecordStatusChangedListener);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.filter.Filter openFilter(int, int, long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.filter.FilterCallback);
|
||||
|
||||
@@ -4917,7 +4917,13 @@
|
||||
<p>Not for use by third-party applications.
|
||||
@hide -->
|
||||
<permission android:name="android.permission.ACCESS_TV_TUNER"
|
||||
android:protectionLevel="signature|privileged" />
|
||||
android:protectionLevel="signature|privileged|vendorPrivileged" />
|
||||
|
||||
<!-- @SystemApi Allows an application to access descrambler of TV tuner HAL
|
||||
<p>Not for use by third-party applications.
|
||||
@hide -->
|
||||
<permission android:name="android.permission.ACCESS_TV_DESCRAMBLER"
|
||||
android:protectionLevel="signature|privileged|vendorPrivileged" />
|
||||
|
||||
<application android:process="system"
|
||||
android:persistent="true"
|
||||
|
||||
@@ -610,10 +610,10 @@ public class Tuner implements AutoCloseable {
|
||||
*
|
||||
* @return a {@link Descrambler} object.
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
|
||||
@RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER)
|
||||
@Nullable
|
||||
public Descrambler openDescrambler() {
|
||||
TunerUtils.checkTunerPermission(mContext);
|
||||
TunerUtils.checkDescramblerPermission(mContext);
|
||||
return nativeOpenDescrambler();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,9 @@ import android.media.tv.tuner.filter.Filter;
|
||||
* @hide
|
||||
*/
|
||||
public final class TunerUtils {
|
||||
private static final String PERMISSION = android.Manifest.permission.ACCESS_TV_TUNER;
|
||||
private static final String TUNER_PERMISSION = android.Manifest.permission.ACCESS_TV_TUNER;
|
||||
private static final String DESCRAMBLER_PERMISSION =
|
||||
android.Manifest.permission.ACCESS_TV_DESCRAMBLER;
|
||||
|
||||
/**
|
||||
* Checks whether the caller has permission to access tuner.
|
||||
@@ -36,9 +38,30 @@ public final class TunerUtils {
|
||||
* @throws SecurityException if the caller doesn't have the permission.
|
||||
*/
|
||||
public static void checkTunerPermission(Context context) {
|
||||
if (context.checkCallingOrSelfPermission(PERMISSION)
|
||||
checkPermission(context, TUNER_PERMISSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the caller has permission to access the descrambler.
|
||||
*
|
||||
* @param context context of the caller.
|
||||
* @throws SecurityException if the caller doesn't have the permission.
|
||||
*/
|
||||
public static void checkDescramblerPermission(Context context) {
|
||||
checkPermission(context, DESCRAMBLER_PERMISSION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the caller has the given permission.
|
||||
*
|
||||
* @param context context of the caller.
|
||||
* @param permission the given permission.
|
||||
* @throws SecurityException if the caller doesn't have the permission.
|
||||
*/
|
||||
public static void checkPermission(Context context, String permission) {
|
||||
if (context.checkCallingOrSelfPermission(permission)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
throw new SecurityException("Caller must have " + PERMISSION + " permission.");
|
||||
throw new SecurityException("Caller must have " + permission + " permission.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user