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

Commit 6870033d authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

Enforce permission for print system APIs

The permission is preinstalled as we want to leave the PrintSpooler
unpriviledged.

Test: Checked that Settings, PrintSpooler and BuiltInPrintService still
      behave as expected.
Fixes: 62350107
Change-Id: Id33896f2899533f2d05cafa926df29cf1c6bfa77
parent b8e4695f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -190,6 +190,8 @@ package android {
    field public static final java.lang.String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE";
    field public static final java.lang.String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS";
    field public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";
    field public static final java.lang.String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES";
    field public static final java.lang.String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS";
    field public static final java.lang.String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE";
    field public static final java.lang.String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES";
    field public static final java.lang.String READ_SMS = "android.permission.READ_SMS";
+0 −9
Original line number Diff line number Diff line
@@ -32732,9 +32732,7 @@ package android.print {
  public final class PrintManager {
    method public java.util.List<android.print.PrintJob> getPrintJobs();
    method public java.util.List<android.printservice.PrintServiceInfo> getPrintServices(int);
    method public android.print.PrintJob print(java.lang.String, android.print.PrintDocumentAdapter, android.print.PrintAttributes);
    field public static final int ALL_SERVICES = 3; // 0x3
  }
  public final class PrinterCapabilitiesInfo implements android.os.Parcelable {
@@ -32864,13 +32862,6 @@ package android.printservice {
    field public static final java.lang.String SERVICE_META_DATA = "android.printservice";
  }
  public final class PrintServiceInfo implements android.os.Parcelable {
    method public int describeContents();
    method public android.content.ComponentName getComponentName();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.printservice.PrintServiceInfo> CREATOR;
  }
  public abstract class PrinterDiscoverySession {
    ctor public PrinterDiscoverySession();
    method public final void addPrinters(java.util.List<android.print.PrinterInfo>);
+7 −3
Original line number Diff line number Diff line
@@ -18,9 +18,9 @@ package android.print;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.app.Activity;
import android.app.Application.ActivityLifecycleCallbacks;
import android.content.ComponentName;
@@ -142,7 +142,6 @@ public final class PrintManager {
     * @see #getPrintServices
     * @hide
     */
    @TestApi
    public static final int ALL_SERVICES = ENABLED_SERVICES | DISABLED_SERVICES;

    /**
@@ -554,6 +553,7 @@ public final class PrintManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES)
    public void addPrintServicesChangeListener(@NonNull PrintServicesChangeListener listener,
            @Nullable Handler handler) {
        Preconditions.checkNotNull(listener);
@@ -589,6 +589,7 @@ public final class PrintManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES)
    public void removePrintServicesChangeListener(@NonNull PrintServicesChangeListener listener) {
        Preconditions.checkNotNull(listener);

@@ -629,8 +630,8 @@ public final class PrintManager {
     *
     * @hide
     */
    @TestApi
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES)
    public @NonNull List<PrintServiceInfo> getPrintServices(int selectionFlags) {
        Preconditions.checkFlagsArgument(selectionFlags, ALL_SERVICES);

@@ -656,6 +657,7 @@ public final class PrintManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS)
    public void addPrintServiceRecommendationsChangeListener(
            @NonNull PrintServiceRecommendationsChangeListener listener,
            @Nullable Handler handler) {
@@ -692,6 +694,7 @@ public final class PrintManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS)
    public void removePrintServiceRecommendationsChangeListener(
            @NonNull PrintServiceRecommendationsChangeListener listener) {
        Preconditions.checkNotNull(listener);
@@ -731,6 +734,7 @@ public final class PrintManager {
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS)
    public @NonNull List<RecommendationInfo> getPrintServiceRecommendations() {
        try {
            List<RecommendationInfo> recommendations =
+0 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package android.printservice;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -49,7 +48,6 @@ import java.io.IOException;
 *
 * @hide
 */
@TestApi
@SystemApi
public final class PrintServiceInfo implements Parcelable {

+17 −0
Original line number Diff line number Diff line
@@ -2534,6 +2534,23 @@
    <permission android:name="android.permission.BIND_PRINT_RECOMMENDATION_SERVICE"
            android:protectionLevel="signature" />

    <!-- Allows applications to get the installed and enabled print services.
         @hide
         @SystemApi
         @TestApi
         <p>Protection level: signature|preinstalled
    -->
    <permission android:name="android.permission.READ_PRINT_SERVICES"
        android:protectionLevel="signature|preinstalled" />

    <!-- Allows applications to get the currently recommended print services for printers.
         @hide
         @SystemApi
         <p>Protection level: signature|preinstalled
    -->
    <permission android:name="android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS"
        android:protectionLevel="signature|preinstalled" />

    <!-- Must be required by a {@link android.nfc.cardemulation.HostApduService}
         or {@link android.nfc.cardemulation.OffHostApduService} to ensure that only
         the system can bind to it.
Loading