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

Commit 8f34715b authored by Svetoslav's avatar Svetoslav Committed by Android (Google) Code Review
Browse files

Merge "Refactor how the print dialog activity is started." into klp-dev

parents d69417d2 7bfbbcb0
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -165,7 +165,6 @@ LOCAL_SRC_FILES += \
	core/java/android/print/ILayoutResultCallback.aidl \
	core/java/android/print/ILayoutResultCallback.aidl \
	core/java/android/print/IPrinterDiscoveryObserver.aidl \
	core/java/android/print/IPrinterDiscoveryObserver.aidl \
	core/java/android/print/IPrintDocumentAdapter.aidl \
	core/java/android/print/IPrintDocumentAdapter.aidl \
	core/java/android/print/IPrintClient.aidl \
	core/java/android/print/IPrintJobStateChangeListener.aidl \
	core/java/android/print/IPrintJobStateChangeListener.aidl \
	core/java/android/print/IPrintManager.aidl \
	core/java/android/print/IPrintManager.aidl \
	core/java/android/print/IPrintSpooler.aidl \
	core/java/android/print/IPrintSpooler.aidl \
+2 −0
Original line number Original line Diff line number Diff line
@@ -183,6 +183,8 @@ $(call add-clean-step, rm -f $(PRODUCT_OUT)/system/media/video/*)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/effects/)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/media/audio/effects/)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/framework-res_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/framework-res_intermediates)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/print/IPrintClient.*)

# ************************************************
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
# ************************************************
+3 −4
Original line number Original line Diff line number Diff line
@@ -16,9 +16,9 @@


package android.print;
package android.print;


import android.os.Bundle;
import android.print.IPrinterDiscoveryObserver;
import android.print.IPrinterDiscoveryObserver;
import android.print.IPrintDocumentAdapter;
import android.print.IPrintDocumentAdapter;
import android.print.IPrintClient;
import android.print.PrintJobId;
import android.print.PrintJobId;
import android.print.IPrintJobStateChangeListener;
import android.print.IPrintJobStateChangeListener;
import android.print.PrinterId;
import android.print.PrinterId;
@@ -34,9 +34,8 @@ import android.printservice.PrintServiceInfo;
interface IPrintManager {
interface IPrintManager {
    List<PrintJobInfo> getPrintJobInfos(int appId, int userId);
    List<PrintJobInfo> getPrintJobInfos(int appId, int userId);
    PrintJobInfo getPrintJobInfo(in PrintJobId printJobId, int appId, int userId);
    PrintJobInfo getPrintJobInfo(in PrintJobId printJobId, int appId, int userId);
    PrintJobInfo print(String printJobName, in IPrintClient client,
    Bundle print(String printJobName, in IPrintDocumentAdapter printAdapter,
            in IPrintDocumentAdapter printAdapter, in PrintAttributes attributes,
            in PrintAttributes attributes, String packageName, int appId, int userId);
            int appId, int userId);
    void cancelPrintJob(in PrintJobId printJobId, int appId, int userId);
    void cancelPrintJob(in PrintJobId printJobId, int appId, int userId);
    void restartPrintJob(in PrintJobId printJobId, int appId, int userId);
    void restartPrintJob(in PrintJobId printJobId, int appId, int userId);


+1 −4
Original line number Original line Diff line number Diff line
@@ -18,8 +18,6 @@ package android.print;


import android.content.ComponentName;
import android.content.ComponentName;
import android.os.ParcelFileDescriptor;
import android.os.ParcelFileDescriptor;
import android.print.IPrintDocumentAdapter;
import android.print.IPrintClient;
import android.print.IPrintSpoolerClient;
import android.print.IPrintSpoolerClient;
import android.print.IPrintSpoolerCallbacks;
import android.print.IPrintSpoolerCallbacks;
import android.print.PrinterInfo;
import android.print.PrinterInfo;
@@ -40,8 +38,7 @@ oneway interface IPrintSpooler {
            int state, int appId, int sequence);
            int state, int appId, int sequence);
    void getPrintJobInfo(in PrintJobId printJobId, IPrintSpoolerCallbacks callback,
    void getPrintJobInfo(in PrintJobId printJobId, IPrintSpoolerCallbacks callback,
            int appId, int sequence);
            int appId, int sequence);
    void createPrintJob(in PrintJobInfo printJob, in IPrintClient client,
    void createPrintJob(in PrintJobInfo printJob);
            in IPrintDocumentAdapter printAdapter);
    void setPrintJobState(in PrintJobId printJobId, int status, String stateReason,
    void setPrintJobState(in PrintJobId printJobId, int status, String stateReason,
            IPrintSpoolerCallbacks callback, int sequence);
            IPrintSpoolerCallbacks callback, int sequence);
    void setPrintJobTag(in PrintJobId printJobId, String tag, IPrintSpoolerCallbacks callback,
    void setPrintJobTag(in PrintJobId printJobId, String tag, IPrintSpoolerCallbacks callback,
+56 −45
Original line number Original line Diff line number Diff line
@@ -60,8 +60,47 @@ public final class PrintManager {


    private static final boolean DEBUG = false;
    private static final boolean DEBUG = false;


    private static final int MSG_START_PRINT_JOB_CONFIG_ACTIVITY = 1;
    private static final int MSG_NOTIFY_PRINT_JOB_STATE_CHANGED = 1;
    private static final int MSG_NOTIFY_PRINT_JOB_STATE_CHANGED = 2;

    /**
     * The action for launching the print dialog activity.
     *
     * @hide
     */
    public static final String ACTION_PRINT_DIALOG = "android.print.PRINT_DIALOG";

    /**
     * Extra with the intent for starting the print dialog.
     * <p>
     * <strong>Type:</strong> {@link android.content.IntentSender}
     * </p>
     *
     * @hide
     */
    public static final String EXTRA_PRINT_DIALOG_INTENT =
            "android.print.intent.extra.EXTRA_PRINT_DIALOG_INTENT";

    /**
     * Extra with a print job.
     * <p>
     * <strong>Type:</strong> {@link android.print.PrintJobInfo}
     * </p>
     *
     * @hide
     */
    public static final String EXTRA_PRINT_JOB =
            "android.print.intent.extra.EXTRA_PRINT_JOB";

    /**
     * Extra with the print document adapter to be printed.
     * <p>
     * <strong>Type:</strong> {@link android.print.IPrintDocumentAdapter}
     * </p>
     *
     * @hide
     */
    public static final String EXTRA_PRINT_DOCUMENT_ADAPTER =
            "android.print.intent.extra.EXTRA_PRINT_DOCUMENT_ADAPTER";


    /** @hide */
    /** @hide */
    public static final int APP_ID_ANY = -2;
    public static final int APP_ID_ANY = -2;
@@ -74,8 +113,6 @@ public final class PrintManager {


    private final int mAppId;
    private final int mAppId;


    private final PrintClient mPrintClient;

    private final Handler mHandler;
    private final Handler mHandler;


    private Map<PrintJobStateChangeListener, PrintJobStateChangeListenerWrapper> mPrintJobStateChangeListeners;
    private Map<PrintJobStateChangeListener, PrintJobStateChangeListenerWrapper> mPrintJobStateChangeListeners;
@@ -103,24 +140,10 @@ public final class PrintManager {
        mService = service;
        mService = service;
        mUserId = userId;
        mUserId = userId;
        mAppId = appId;
        mAppId = appId;
        mPrintClient = new PrintClient(this);
        mHandler = new Handler(context.getMainLooper(), null, false) {
        mHandler = new Handler(context.getMainLooper(), null, false) {
            @Override
            @Override
            public void handleMessage(Message message) {
            public void handleMessage(Message message) {
                switch (message.what) {
                switch (message.what) {
                    case MSG_START_PRINT_JOB_CONFIG_ACTIVITY: {
                        SomeArgs args = (SomeArgs) message.obj;
                        Context context = (Context) args.arg1;
                        IntentSender intent = (IntentSender) args.arg2;
                        args.recycle();
                        try {
                            context.startIntentSender(intent, null, 0, 0, 0);
                        } catch (SendIntentException sie) {
                            Log.e(LOG_TAG, "Couldn't start print job config activity.", sie);
                        }
                    }
                        break;

                    case MSG_NOTIFY_PRINT_JOB_STATE_CHANGED: {
                    case MSG_NOTIFY_PRINT_JOB_STATE_CHANGED: {
                        SomeArgs args = (SomeArgs) message.obj;
                        SomeArgs args = (SomeArgs) message.obj;
                        PrintJobStateChangeListener listener =
                        PrintJobStateChangeListener listener =
@@ -128,8 +151,7 @@ public final class PrintManager {
                        PrintJobId printJobId = (PrintJobId) args.arg2;
                        PrintJobId printJobId = (PrintJobId) args.arg2;
                        args.recycle();
                        args.recycle();
                        listener.onPrintJobStateChanged(printJobId);
                        listener.onPrintJobStateChanged(printJobId);
                    }
                    } break;
                        break;
                }
                }
            }
            }
        };
        };
@@ -279,10 +301,20 @@ public final class PrintManager {
        PrintDocumentAdapterDelegate delegate = new PrintDocumentAdapterDelegate(documentAdapter,
        PrintDocumentAdapterDelegate delegate = new PrintDocumentAdapterDelegate(documentAdapter,
                mContext.getMainLooper());
                mContext.getMainLooper());
        try {
        try {
            PrintJobInfo printJob = mService.print(printJobName, mPrintClient, delegate,
            Bundle result = mService.print(printJobName, delegate,
                    attributes, mAppId, mUserId);
                    attributes, mContext.getPackageName(), mAppId, mUserId);
            if (printJob != null) {
            if (result != null) {
                PrintJobInfo printJob = result.getParcelable(EXTRA_PRINT_JOB);
                IntentSender intent = result.getParcelable(EXTRA_PRINT_DIALOG_INTENT);
                if (printJob == null || intent == null) {
                    return null;
                }
                try {
                    mContext.startIntentSender(intent, null, 0, 0, 0);
                    return new PrintJob(printJob, this);
                    return new PrintJob(printJob, this);
                } catch (SendIntentException sie) {
                    Log.e(LOG_TAG, "Couldn't start print job config activity.", sie);
                }
            }
            }
        } catch (RemoteException re) {
        } catch (RemoteException re) {
            Log.e(LOG_TAG, "Error creating a print job", re);
            Log.e(LOG_TAG, "Error creating a print job", re);
@@ -333,27 +365,6 @@ public final class PrintManager {
        return new PrinterDiscoverySession(mService, mContext, mUserId);
        return new PrinterDiscoverySession(mService, mContext, mUserId);
    }
    }


    private static final class PrintClient extends IPrintClient.Stub {

        private final WeakReference<PrintManager> mWeakPrintManager;

        public PrintClient(PrintManager manager) {
            mWeakPrintManager = new WeakReference<PrintManager>(manager);
        }

        @Override
        public void startPrintJobConfigActivity(IntentSender intent) {
            PrintManager manager = mWeakPrintManager.get();
            if (manager != null) {
                SomeArgs args = SomeArgs.obtain();
                args.arg1 = manager.mContext;
                args.arg2 = intent;
                manager.mHandler.obtainMessage(MSG_START_PRINT_JOB_CONFIG_ACTIVITY,
                        args).sendToTarget();
            }
        }
    }

    private static final class PrintDocumentAdapterDelegate extends IPrintDocumentAdapter.Stub {
    private static final class PrintDocumentAdapterDelegate extends IPrintDocumentAdapter.Stub {


        private final Object mLock = new Object();
        private final Object mLock = new Object();
Loading