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

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

Change hasCustomPrintIcon and setStatus as requested by API council.

Bonus: null advanced keys produced a exception deep in the print
       spooler. Hence prevent null keys on the surface from now on.

Bug: 27716355
Change-Id: I3c064956f4e670cd7091437ade06605aa8d797b0
parent 0997bc8a
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -30268,7 +30268,7 @@ package android.print {
    method public android.print.PrinterInfo build();
    method public android.print.PrinterInfo build();
    method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
    method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
    method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
    method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
    method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon();
    method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
    method public android.print.PrinterInfo.Builder setIconResourceId(int);
    method public android.print.PrinterInfo.Builder setIconResourceId(int);
    method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
    method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
    method public android.print.PrinterInfo.Builder setName(java.lang.String);
    method public android.print.PrinterInfo.Builder setName(java.lang.String);
@@ -30320,6 +30320,7 @@ package android.printservice {
    method public boolean isStarted();
    method public boolean isStarted();
    method public void setProgress(float);
    method public void setProgress(float);
    method public void setStatus(java.lang.CharSequence);
    method public void setStatus(java.lang.CharSequence);
    method public void setStatus(int);
    method public boolean setTag(java.lang.String);
    method public boolean setTag(java.lang.String);
    method public boolean start();
    method public boolean start();
  }
  }
+2 −1
Original line number Original line Diff line number Diff line
@@ -32583,7 +32583,7 @@ package android.print {
    method public android.print.PrinterInfo build();
    method public android.print.PrinterInfo build();
    method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
    method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
    method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
    method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
    method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon();
    method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
    method public android.print.PrinterInfo.Builder setIconResourceId(int);
    method public android.print.PrinterInfo.Builder setIconResourceId(int);
    method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
    method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
    method public android.print.PrinterInfo.Builder setName(java.lang.String);
    method public android.print.PrinterInfo.Builder setName(java.lang.String);
@@ -32635,6 +32635,7 @@ package android.printservice {
    method public boolean isStarted();
    method public boolean isStarted();
    method public void setProgress(float);
    method public void setProgress(float);
    method public void setStatus(java.lang.CharSequence);
    method public void setStatus(java.lang.CharSequence);
    method public void setStatus(int);
    method public boolean setTag(java.lang.String);
    method public boolean setTag(java.lang.String);
    method public boolean start();
    method public boolean start();
  }
  }
+3 −2
Original line number Original line Diff line number Diff line
@@ -30260,7 +30260,7 @@ package android.print {
    method public android.print.PrinterId getPrinterId();
    method public android.print.PrinterId getPrinterId();
    method public float getProgress();
    method public float getProgress();
    method public int getState();
    method public int getState();
    method public java.lang.CharSequence getStatus();
    method public java.lang.CharSequence getStatus(android.content.pm.PackageManager);
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.print.PrintJobInfo> CREATOR;
    field public static final android.os.Parcelable.Creator<android.print.PrintJobInfo> CREATOR;
    field public static final int STATE_BLOCKED = 4; // 0x4
    field public static final int STATE_BLOCKED = 4; // 0x4
@@ -30337,7 +30337,7 @@ package android.print {
    method public android.print.PrinterInfo build();
    method public android.print.PrinterInfo build();
    method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
    method public android.print.PrinterInfo.Builder setCapabilities(android.print.PrinterCapabilitiesInfo);
    method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
    method public android.print.PrinterInfo.Builder setDescription(java.lang.String);
    method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon();
    method public android.print.PrinterInfo.Builder setHasCustomPrinterIcon(boolean);
    method public android.print.PrinterInfo.Builder setIconResourceId(int);
    method public android.print.PrinterInfo.Builder setIconResourceId(int);
    method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
    method public android.print.PrinterInfo.Builder setInfoIntent(android.app.PendingIntent);
    method public android.print.PrinterInfo.Builder setName(java.lang.String);
    method public android.print.PrinterInfo.Builder setName(java.lang.String);
@@ -30389,6 +30389,7 @@ package android.printservice {
    method public boolean isStarted();
    method public boolean isStarted();
    method public void setProgress(float);
    method public void setProgress(float);
    method public void setStatus(java.lang.CharSequence);
    method public void setStatus(java.lang.CharSequence);
    method public void setStatus(int);
    method public boolean setTag(java.lang.String);
    method public boolean setTag(java.lang.String);
    method public boolean start();
    method public boolean start();
  }
  }
+9 −0
Original line number Original line Diff line number Diff line
@@ -60,6 +60,15 @@ oneway interface IPrintSpooler {
     */
     */
    void setStatus(in PrintJobId printJobId, in CharSequence status);
    void setStatus(in PrintJobId printJobId, in CharSequence status);


    /**
     * Set the status of this print job
     *
     * @param printJobId The print job to update
     * @param status The new status as a string resource
     * @param appPackageName App package name the resource belongs to
     */
    void setStatusRes(in PrintJobId printJobId, int status, in CharSequence appPackageName);

    /**
    /**
     * Handle that a custom icon for a printer was loaded.
     * Handle that a custom icon for a printer was loaded.
     *
     *
+54 −3
Original line number Original line Diff line number Diff line
@@ -21,7 +21,10 @@ import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.StringRes;
import android.annotation.TestApi;
import android.annotation.TestApi;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable;
@@ -181,7 +184,11 @@ public final class PrintJobInfo implements Parcelable {
    private float mProgress;
    private float mProgress;


    /** A short string describing the status of this job. */
    /** A short string describing the status of this job. */
    private CharSequence mStatus;
    private @Nullable CharSequence mStatus;

    /** A string resource describing the status of this job. */
    private @StringRes int mStatusRes;
    private @Nullable CharSequence mStatusResAppPackageName;


    /** Advanced printer specific options. */
    /** Advanced printer specific options. */
    private Bundle mAdvancedOptions;
    private Bundle mAdvancedOptions;
@@ -210,6 +217,8 @@ public final class PrintJobInfo implements Parcelable {
        mDocumentInfo = other.mDocumentInfo;
        mDocumentInfo = other.mDocumentInfo;
        mProgress = other.mProgress;
        mProgress = other.mProgress;
        mStatus = other.mStatus;
        mStatus = other.mStatus;
        mStatusRes = other.mStatusRes;
        mStatusResAppPackageName = other.mStatusResAppPackageName;
        mCanceling = other.mCanceling;
        mCanceling = other.mCanceling;
        mAdvancedOptions = other.mAdvancedOptions;
        mAdvancedOptions = other.mAdvancedOptions;
    }
    }
@@ -235,8 +244,14 @@ public final class PrintJobInfo implements Parcelable {
        mDocumentInfo = (PrintDocumentInfo) parcel.readParcelable(null);
        mDocumentInfo = (PrintDocumentInfo) parcel.readParcelable(null);
        mProgress = parcel.readFloat();
        mProgress = parcel.readFloat();
        mStatus = parcel.readCharSequence();
        mStatus = parcel.readCharSequence();
        mStatusRes = parcel.readInt();
        mStatusResAppPackageName = parcel.readCharSequence();
        mCanceling = (parcel.readInt() == 1);
        mCanceling = (parcel.readInt() == 1);
        mAdvancedOptions = parcel.readBundle();
        mAdvancedOptions = parcel.readBundle();

        if (mAdvancedOptions != null) {
            Preconditions.checkArgument(!mAdvancedOptions.containsKey(null));
        }
    }
    }


    /**
    /**
@@ -370,9 +385,27 @@ public final class PrintJobInfo implements Parcelable {
     * @hide
     * @hide
     */
     */
    public void setStatus(@Nullable CharSequence status) {
    public void setStatus(@Nullable CharSequence status) {
        mStatusRes = 0;
        mStatusResAppPackageName = null;

        mStatus = status;
        mStatus = status;
    }
    }


    /**
     * Sets the status of the print job.
     *
     * @param status The new status as a string resource
     * @param appPackageName App package name the resource belongs to
     *
     * @hide
     */
    public void setStatus(@StringRes int status, @NonNull CharSequence appPackageName) {
        mStatus = null;

        mStatusRes = status;
        mStatusResAppPackageName = appPackageName;
    }

    /**
    /**
     * Sets the owning application id.
     * Sets the owning application id.
     *
     *
@@ -633,6 +666,8 @@ public final class PrintJobInfo implements Parcelable {
        parcel.writeParcelable(mDocumentInfo, 0);
        parcel.writeParcelable(mDocumentInfo, 0);
        parcel.writeFloat(mProgress);
        parcel.writeFloat(mProgress);
        parcel.writeCharSequence(mStatus);
        parcel.writeCharSequence(mStatus);
        parcel.writeInt(mStatusRes);
        parcel.writeCharSequence(mStatusResAppPackageName);
        parcel.writeInt(mCanceling ? 1 : 0);
        parcel.writeInt(mCanceling ? 1 : 0);
        parcel.writeBundle(mAdvancedOptions);
        parcel.writeBundle(mAdvancedOptions);
    }
    }
@@ -659,6 +694,9 @@ public final class PrintJobInfo implements Parcelable {
        builder.append(", progress: " + mProgress);
        builder.append(", progress: " + mProgress);
        builder.append(", status: " + (mStatus != null
        builder.append(", status: " + (mStatus != null
                ? mStatus.toString() : null));
                ? mStatus.toString() : null));
        builder.append(", statusRes: " + mStatusRes);
        builder.append(", statusResAppPackageName: " + (mStatusResAppPackageName != null
                ? mStatusResAppPackageName.toString() : null));
        builder.append("}");
        builder.append("}");
        return builder.toString();
        return builder.toString();
    }
    }
@@ -707,12 +745,23 @@ public final class PrintJobInfo implements Parcelable {
    /**
    /**
     * Get the status of this job.
     * Get the status of this job.
     *
     *
     * @param pm Package manager used to resolve the string
     *
     * @return the status of this job or null if not set
     * @return the status of this job or null if not set
     * @hide
     * @hide
     */
     */
    @TestApi
    @TestApi
    public @Nullable CharSequence getStatus() {
    public @Nullable CharSequence getStatus(@NonNull PackageManager pm) {
        if (mStatusRes == 0) {
            return mStatus;
            return mStatus;
        } else {
            try {
                return pm.getResourcesForApplication(mStatusResAppPackageName.toString())
                        .getString(mStatusRes);
            } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) {
                return null;
            }
        }
    }
    }


    /**
    /**
@@ -789,6 +838,8 @@ public final class PrintJobInfo implements Parcelable {
         * @param value The option value.
         * @param value The option value.
         */
         */
        public void putAdvancedOption(@NonNull String key, @Nullable String value) {
        public void putAdvancedOption(@NonNull String key, @Nullable String value) {
            Preconditions.checkNotNull(key, "key cannot be null");

            if (mPrototype.mAdvancedOptions == null) {
            if (mPrototype.mAdvancedOptions == null) {
                mPrototype.mAdvancedOptions = new Bundle();
                mPrototype.mAdvancedOptions = new Bundle();
            }
            }
Loading