diff options
author | Svetoslav <svetoslavganov@google.com> | 2013-08-14 17:31:04 -0700 |
---|---|---|
committer | Svetoslav Ganov <svetoslavganov@google.com> | 2013-08-19 13:24:11 -0700 |
commit | 269403b032f965ff3847eb982c2f697229dc5a92 (patch) | |
tree | 96ef6d8d99f7cbd56d78c63bf5e4da78a42831c1 /core/java/android/print | |
parent | b93489270d41bbaf513f0018164ab8b6d6ca9519 (diff) | |
download | frameworks_base-269403b032f965ff3847eb982c2f697229dc5a92.zip frameworks_base-269403b032f965ff3847eb982c2f697229dc5a92.tar.gz frameworks_base-269403b032f965ff3847eb982c2f697229dc5a92.tar.bz2 |
Implemented advanced printer selection and API refactoring.
1. Added past printer history tracking and merging favorite printers
with discovered printers.
2. Added save as PDF support.
3. Added all printers activity with search capability and optional
add printers chooser (if any print service provides add printers
activity)
4. Refactored the printer discovery session APIs. Now one session
can have multiple window discovery windows and the session stores
the printers found during past discovery periods.
5. Merged the print spooler and the print spooler service - much
simpler and easier to maintain.
Change-Id: I4830b0eb6367e1c748b768a5ea9ea11baf36cfad
Diffstat (limited to 'core/java/android/print')
-rw-r--r-- | core/java/android/print/IPrintSpooler.aidl | 8 | ||||
-rw-r--r-- | core/java/android/print/IPrintSpoolerClient.aidl | 9 | ||||
-rw-r--r-- | core/java/android/print/IPrinterDiscoverySessionController.aidl | 30 | ||||
-rw-r--r-- | core/java/android/print/IPrinterDiscoverySessionObserver.aidl | 33 | ||||
-rw-r--r-- | core/java/android/print/PrintJobInfo.java | 27 | ||||
-rw-r--r-- | core/java/android/print/PrintManager.java | 6 | ||||
-rw-r--r-- | core/java/android/print/PrinterInfo.java | 7 | ||||
-rw-r--r-- | core/java/android/print/pdf/PdfDocument.java | 2 |
8 files changed, 32 insertions, 90 deletions
diff --git a/core/java/android/print/IPrintSpooler.aidl b/core/java/android/print/IPrintSpooler.aidl index 8178180..5c8a22a 100644 --- a/core/java/android/print/IPrintSpooler.aidl +++ b/core/java/android/print/IPrintSpooler.aidl @@ -18,6 +18,7 @@ package android.print; import android.content.ComponentName; import android.os.ParcelFileDescriptor; +import android.print.PrinterId; import android.print.IPrintDocumentAdapter; import android.print.IPrintClient; import android.print.IPrintSpoolerClient; @@ -40,10 +41,15 @@ oneway interface IPrintSpooler { void createPrintJob(String printJobName, in IPrintClient client, in IPrintDocumentAdapter printAdapter, in PrintAttributes attributes, IPrintSpoolerCallbacks callback, int appId, int sequence); - void setPrintJobState(int printJobId, int status, CharSequence error, + void setPrintJobState(int printJobId, int status, String error, IPrintSpoolerCallbacks callback, int sequence); void setPrintJobTag(int printJobId, String tag, IPrintSpoolerCallbacks callback, int sequence); void writePrintJobData(in ParcelFileDescriptor fd, int printJobId); void setClient(IPrintSpoolerClient client); + + // Printer discovery APIs + void onPrintersAdded(in List<PrinterInfo> printers); + void onPrintersRemoved(in List<PrinterId> printerIds); + void onPrintersUpdated(in List<PrinterInfo> printerIds); } diff --git a/core/java/android/print/IPrintSpoolerClient.aidl b/core/java/android/print/IPrintSpoolerClient.aidl index 8db2169..da60120 100644 --- a/core/java/android/print/IPrintSpoolerClient.aidl +++ b/core/java/android/print/IPrintSpoolerClient.aidl @@ -17,7 +17,6 @@ package android.print; import android.content.ComponentName; -import android.print.IPrinterDiscoverySessionObserver; import android.print.PrinterId; import android.print.PrintJobInfo; @@ -28,8 +27,14 @@ import android.print.PrintJobInfo; * @hide */ oneway interface IPrintSpoolerClient { - void createPrinterDiscoverySession(IPrinterDiscoverySessionObserver observer); void onPrintJobQueued(in PrintJobInfo printJob); void onAllPrintJobsForServiceHandled(in ComponentName printService); void onAllPrintJobsHandled(); + + // Printer discovery APIs + void createPrinterDiscoverySession(); + void startPrinterDiscovery(in List<PrinterId> priorityList); + void stopPrinterDiscovery(); + void requestPrinterUpdate(in PrinterId printerId); + void destroyPrinterDiscoverySession(); } diff --git a/core/java/android/print/IPrinterDiscoverySessionController.aidl b/core/java/android/print/IPrinterDiscoverySessionController.aidl deleted file mode 100644 index 13116ef..0000000 --- a/core/java/android/print/IPrinterDiscoverySessionController.aidl +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.print; - -import android.print.PrinterId; - -/** -* Interface for the controlling part of a printer discovery session. - * - * @hide - */ -oneway interface IPrinterDiscoverySessionController { - void open(in List<PrinterId> priorityList); - void requestPrinterUpdate(in PrinterId printerId); - void close(); -} diff --git a/core/java/android/print/IPrinterDiscoverySessionObserver.aidl b/core/java/android/print/IPrinterDiscoverySessionObserver.aidl deleted file mode 100644 index a78924c..0000000 --- a/core/java/android/print/IPrinterDiscoverySessionObserver.aidl +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.print; - -import android.print.IPrinterDiscoverySessionController; -import android.print.PrinterId; -import android.print.PrinterInfo; - -/** - * Interface for the observing part of a printer discovery session. - * - * @hide - */ -oneway interface IPrinterDiscoverySessionObserver { - void setController(IPrinterDiscoverySessionController controller); - void onPrintersAdded(in List<PrinterInfo> printers); - void onPrintersRemoved(in List<PrinterId> printerIds); - void onPrintersUpdated(in List<PrinterInfo> printerIds); -} diff --git a/core/java/android/print/PrintJobInfo.java b/core/java/android/print/PrintJobInfo.java index 2fb4751..602f3c1 100644 --- a/core/java/android/print/PrintJobInfo.java +++ b/core/java/android/print/PrintJobInfo.java @@ -104,7 +104,7 @@ public final class PrintJobInfo implements Parcelable { private int mId; /** The human readable print job label. */ - private CharSequence mLabel; + private String mLabel; /** The unique id of the printer. */ private PrinterId mPrinterId; @@ -128,7 +128,7 @@ public final class PrintJobInfo implements Parcelable { private int mCopies; /** Failure reason if this job failed. */ - private CharSequence mFailureReason; + private String mFailureReason; /** The pages to print */ private PageRange[] mPageRanges; @@ -163,7 +163,7 @@ public final class PrintJobInfo implements Parcelable { private PrintJobInfo(Parcel parcel) { mId = parcel.readInt(); - mLabel = parcel.readCharSequence(); + mLabel = parcel.readString(); mPrinterId = parcel.readParcelable(null); mPrinterName = parcel.readString(); mState = parcel.readInt(); @@ -171,9 +171,7 @@ public final class PrintJobInfo implements Parcelable { mUserId = parcel.readInt(); mTag = parcel.readString(); mCopies = parcel.readInt(); - if (parcel.readInt() == 1) { - mFailureReason = parcel.readCharSequence(); - } + mFailureReason = parcel.readString(); if (parcel.readInt() == 1) { Parcelable[] parcelables = parcel.readParcelableArray(null); mPageRanges = new PageRange[parcelables.length]; @@ -214,7 +212,7 @@ public final class PrintJobInfo implements Parcelable { * * @return The label. */ - public CharSequence getLabel() { + public String getLabel() { return mLabel; } @@ -225,7 +223,7 @@ public final class PrintJobInfo implements Parcelable { * * @hide */ - public void setLabel(CharSequence label) { + public void setLabel(String label) { mLabel = label; } @@ -385,7 +383,7 @@ public final class PrintJobInfo implements Parcelable { * * @hide */ - public CharSequence getFailureReason() { + public String getFailureReason() { return mFailureReason; } @@ -396,7 +394,7 @@ public final class PrintJobInfo implements Parcelable { * * @hide */ - public void setFailureReason(CharSequence failureReason) { + public void setFailureReason(String failureReason) { mFailureReason = failureReason; } @@ -470,7 +468,7 @@ public final class PrintJobInfo implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { parcel.writeInt(mId); - parcel.writeCharSequence(mLabel); + parcel.writeString(mLabel); parcel.writeParcelable(mPrinterId, flags); parcel.writeString(mPrinterName); parcel.writeInt(mState); @@ -478,12 +476,7 @@ public final class PrintJobInfo implements Parcelable { parcel.writeInt(mUserId); parcel.writeString(mTag); parcel.writeInt(mCopies); - if (mFailureReason != null) { - parcel.writeInt(1); - parcel.writeCharSequence(mFailureReason); - } else { - parcel.writeInt(0); - } + parcel.writeString(mFailureReason); if (mPageRanges != null) { parcel.writeInt(1); parcel.writeParcelableArray(mPageRanges, flags); diff --git a/core/java/android/print/PrintManager.java b/core/java/android/print/PrintManager.java index 636b9d4..531dcb2 100644 --- a/core/java/android/print/PrintManager.java +++ b/core/java/android/print/PrintManager.java @@ -374,14 +374,14 @@ public final class PrintManager { @Override public void onLayoutFinished(PrintDocumentInfo info, boolean changed) { + if (info == null) { + throw new NullPointerException("document info cannot be null"); + } final ILayoutResultCallback callback; synchronized (mLock) { callback = mCallback; clearLocked(); } - if (info == null) { - throw new IllegalArgumentException("info cannot be null"); - } if (callback != null) { try { callback.onLayoutFinished(info, changed, mSequence); diff --git a/core/java/android/print/PrinterInfo.java b/core/java/android/print/PrinterInfo.java index ac782a8..6f567a6 100644 --- a/core/java/android/print/PrinterInfo.java +++ b/core/java/android/print/PrinterInfo.java @@ -229,10 +229,11 @@ public final class PrinterInfo implements Parcelable { /** * Constructor. * - * @param prototype Prototype from which to start building. + * @param other Other info from which to start building. */ - public Builder(PrinterInfo prototype) { - mPrototype = prototype; + public Builder(PrinterInfo other) { + mPrototype = new PrinterInfo(); + mPrototype.copyFrom(other); } /** diff --git a/core/java/android/print/pdf/PdfDocument.java b/core/java/android/print/pdf/PdfDocument.java index cfeb975..dbd7dd1 100644 --- a/core/java/android/print/pdf/PdfDocument.java +++ b/core/java/android/print/pdf/PdfDocument.java @@ -324,7 +324,7 @@ public final class PdfDocument { /** * Creates a new builder with the mandatory page info attributes. * - * @param pageSize The page size in pixels. + * @param pageSize The page size in points, <strong>not</strong> dips. * @param pageNumber The page number. * @param density The page density in DPI. */ |