Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b059c41 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add a permission for Descrambler"

parents 12a75f32 333a5134
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -18,6 +18,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 ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
@@ -4877,7 +4878,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);
+7 −1
Original line number Diff line number Diff line
@@ -4941,7 +4941,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" />

    <!-- @hide @SystemApi Allows an application to access locusId events in the usage stats. -->
    <permission android:name="android.permission.ACCESS_LOCUS_ID_USAGE_STATS"
+2 −2
Original line number Diff line number Diff line
@@ -612,10 +612,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();
    }

+26 −3
Original line number Diff line number Diff line
@@ -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.");
        }
    }