summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author krhardeep <krhardeep@google.com> 2024-10-14 13:59:03 +0000
committer Hardeep Kaur <krhardeep@google.com> 2024-10-17 03:46:36 +0000
commite6cd19d9df5261d71687890e0857aeafea51f205 (patch)
tree5b790a755c713ce2590a379f96f83ddb8fc02157
parent882509d8e5bf4db0c4b6078e075ad66129c0fcd6 (diff)
Handle malformed PDFs gracefully in PrintSpooler
The PrintSpooler now handles malformed PDFs by marking the print job as failed and calling finish(), preventing RuntimeException Bug: 367448551 Flag: EXEMPT bug fix Test: atest IPrintManagerParametersTest, tested in test app on a physical device Change-Id: I54d14b270741172eff7e4147ad59b2e0d39ab188
-rw-r--r--core/java/android/print/IPrintDocumentAdapter.aidl1
-rw-r--r--core/java/android/print/PrintManager.java20
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java12
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java8
4 files changed, 6 insertions, 35 deletions
diff --git a/core/java/android/print/IPrintDocumentAdapter.aidl b/core/java/android/print/IPrintDocumentAdapter.aidl
index 8f33e0b2c003..9d384fba874d 100644
--- a/core/java/android/print/IPrintDocumentAdapter.aidl
+++ b/core/java/android/print/IPrintDocumentAdapter.aidl
@@ -37,5 +37,4 @@ oneway interface IPrintDocumentAdapter {
void write(in PageRange[] pages, in ParcelFileDescriptor fd,
IWriteResultCallback callback, int sequence);
void finish();
- void kill(String reason);
}
diff --git a/core/java/android/print/PrintManager.java b/core/java/android/print/PrintManager.java
index ef274a56e1d3..1b1554f8192d 100644
--- a/core/java/android/print/PrintManager.java
+++ b/core/java/android/print/PrintManager.java
@@ -946,17 +946,6 @@ public final class PrintManager {
}
@Override
- public void kill(String reason) {
- synchronized (mLock) {
- // If destroyed the handler is null.
- if (!isDestroyedLocked()) {
- mHandler.obtainMessage(MyHandler.MSG_ON_KILL,
- reason).sendToTarget();
- }
- }
- }
-
- @Override
public void onActivityPaused(Activity activity) {
/* do nothing */
}
@@ -1118,15 +1107,6 @@ public final class PrintManager {
}
} break;
- case MSG_ON_KILL: {
- if (DEBUG) {
- Log.i(LOG_TAG, "onKill()");
- }
-
- String reason = (String) message.obj;
- throw new RuntimeException(reason);
- }
-
default: {
throw new IllegalArgumentException("Unknown message: "
+ message.what);
diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java b/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java
index bfc00bb8b94d..b48c55ddfef0 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java
@@ -329,18 +329,6 @@ public final class RemotePrintDocument {
disconnectFromRemoteDocument();
}
- public void kill(String reason) {
- if (DEBUG) {
- Log.i(LOG_TAG, "[CALLED] kill()");
- }
-
- try {
- mPrintDocumentAdapter.kill(reason);
- } catch (RemoteException re) {
- Log.e(LOG_TAG, "Error calling kill()", re);
- }
- }
-
public boolean isUpdating() {
return mState == STATE_UPDATING || mState == STATE_CANCELING;
}
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index c4173ed999f3..bd2b5ec8436e 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -514,8 +514,12 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
ensureErrorUiShown(null, PrintErrorFragment.ACTION_RETRY);
setState(STATE_UPDATE_FAILED);
-
- mPrintedDocument.kill(message);
+ if (DEBUG) {
+ Log.i(LOG_TAG, "PrintJob state[" + PrintJobInfo.STATE_FAILED + "] reason: " + message);
+ }
+ PrintSpoolerService spooler = mSpoolerProvider.getSpooler();
+ spooler.setPrintJobState(mPrintJob.getId(), PrintJobInfo.STATE_FAILED, message);
+ mPrintedDocument.finish();
}
@Override