aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2016-03-28 17:13:06 -0700
committerPhilip P. Moltmann <moltmann@google.com>2016-03-28 17:13:06 -0700
commitf369a120cc6037a0765bb7b4922fbce1c86f1ee2 (patch)
treedbcbd239e063e97991667f3d51669c700fb1957f
parentd01dcca2d759fb4044cbb72206b1caae722d8c89 (diff)
downloadexperimental-f369a120cc6037a0765bb7b4922fbce1c86f1ee2.tar.gz
Support cancelation of OnRequestCustomPrinterIcon
Change-Id: I7d07e64edf92fa460a9df83c4c34d4f9cc8b0832
-rw-r--r--PrintService/src/foo/bar/printservice/MyPrintService.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/PrintService/src/foo/bar/printservice/MyPrintService.java b/PrintService/src/foo/bar/printservice/MyPrintService.java
index ffcaa1d..725830e 100644
--- a/PrintService/src/foo/bar/printservice/MyPrintService.java
+++ b/PrintService/src/foo/bar/printservice/MyPrintService.java
@@ -24,6 +24,7 @@ import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
+import android.os.CancellationSignal;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -42,6 +43,7 @@ import android.printservice.PrintService;
import android.printservice.PrinterDiscoverySession;
import android.util.ArrayMap;
import android.util.Log;
+import com.android.internal.os.SomeArgs;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -488,20 +490,19 @@ public class MyPrintService extends PrintService {
@Override
public void onRequestCustomPrinterIcon(final PrinterId printerId,
+ final CancellationSignal cancellationSignal,
final CustomPrinterIconCallback callbacks) {
Log.i(LOG_TAG, "FakePrinterDiscoverySession#onRequestCustomPrinterIcon() " + printerId);
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = cancellationSignal;
+ args.arg2 = callbacks;
+
+ Message msg = mSesionHandler.obtainMessage(
+ SessionHandler.MSG_SUPPLY_CUSTOM_PRINTER_ICON, args);
+
// Pretend the bitmap icon takes 5 seconds to load
- mSesionHandler.postDelayed(new Runnable() {
- @Override
- public void run() {
- final int printerCount = mFakePrinters.size();
- for (int i = printerCount - 1; i >= 0; i--) {
- callbacks.onCustomPrinterIconLoaded(Icon.createWithBitmap(
- BitmapFactory.decodeResource(getResources(), R.raw.red_printer)));
- }
- }
- }, 5000);
+ mSesionHandler.sendMessageDelayed(msg, 5000);
}
@Override
@@ -525,6 +526,7 @@ public class MyPrintService extends PrintService {
final class SessionHandler extends Handler {
public static final int MSG_ADD_FIRST_BATCH_FAKE_PRINTERS = 1;
+ public static final int MSG_SUPPLY_CUSTOM_PRINTER_ICON = 2;
public SessionHandler(Looper looper) {
super(looper);
@@ -536,6 +538,18 @@ public class MyPrintService extends PrintService {
case MSG_ADD_FIRST_BATCH_FAKE_PRINTERS: {
addFirstBatchFakePrinters();
} break;
+ case MSG_SUPPLY_CUSTOM_PRINTER_ICON: {
+ SomeArgs args = (SomeArgs) message.obj;
+ CancellationSignal cancellationSignal = (CancellationSignal) args.arg1;
+ CustomPrinterIconCallback callbacks = (CustomPrinterIconCallback) args.arg2;
+ args.recycle();
+
+ if (!cancellationSignal.isCanceled()) {
+ callbacks.onCustomPrinterIconLoaded(Icon.createWithBitmap(
+ BitmapFactory.decodeResource(getResources(),
+ R.raw.red_printer)));
+ }
+ } break;
}
}
}