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

Commit a1f9936c authored by Svetoslav's avatar Svetoslav Committed by Android Git Automerger
Browse files

am 5c880d0d: am 6f688e87: am 8f34715b: Merge "Refactor how the print dialog...

am 5c880d0d: am 6f688e87: am 8f34715b: Merge "Refactor how the print dialog activity is started." into klp-dev

* commit '5c880d0d':
  Refactor how the print dialog activity is started.
parents 6c9138f4 5c880d0d
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -169,7 +169,6 @@ LOCAL_SRC_FILES += \
	core/java/android/print/ILayoutResultCallback.aidl \
	core/java/android/print/IPrinterDiscoveryObserver.aidl \
	core/java/android/print/IPrintDocumentAdapter.aidl \
	core/java/android/print/IPrintClient.aidl \
	core/java/android/print/IPrintJobStateChangeListener.aidl \
	core/java/android/print/IPrintManager.aidl \
	core/java/android/print/IPrintSpooler.aidl \
+2 −0
Original line number Diff line number Diff line
@@ -184,6 +184,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/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/JAVA_LIBRARIES/framework-base_intermediates/src/core/java/android/print/IPrintClient.*)

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

package android.print;

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

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

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

    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 = 2;
    private static final int MSG_NOTIFY_PRINT_JOB_STATE_CHANGED = 1;

    /**
     * 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 */
    public static final int APP_ID_ANY = -2;
@@ -74,8 +113,6 @@ public final class PrintManager {

    private final int mAppId;

    private final PrintClient mPrintClient;

    private final Handler mHandler;

    private Map<PrintJobStateChangeListener, PrintJobStateChangeListenerWrapper> mPrintJobStateChangeListeners;
@@ -103,24 +140,10 @@ public final class PrintManager {
        mService = service;
        mUserId = userId;
        mAppId = appId;
        mPrintClient = new PrintClient(this);
        mHandler = new Handler(context.getMainLooper(), null, false) {
            @Override
            public void handleMessage(Message message) {
                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: {
                        SomeArgs args = (SomeArgs) message.obj;
                        PrintJobStateChangeListener listener =
@@ -128,8 +151,7 @@ public final class PrintManager {
                        PrintJobId printJobId = (PrintJobId) args.arg2;
                        args.recycle();
                        listener.onPrintJobStateChanged(printJobId);
                    }
                        break;
                    } break;
                }
            }
        };
@@ -279,10 +301,20 @@ public final class PrintManager {
        PrintDocumentAdapterDelegate delegate = new PrintDocumentAdapterDelegate(documentAdapter,
                mContext.getMainLooper());
        try {
            PrintJobInfo printJob = mService.print(printJobName, mPrintClient, delegate,
                    attributes, mAppId, mUserId);
            if (printJob != null) {
            Bundle result = mService.print(printJobName, delegate,
                    attributes, mContext.getPackageName(), mAppId, mUserId);
            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);
                } catch (SendIntentException sie) {
                    Log.e(LOG_TAG, "Couldn't start print job config activity.", sie);
                }
            }
        } catch (RemoteException 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);
    }

    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 final Object mLock = new Object();
Loading