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

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

Merge "Add dumping the state of the print sub-system." into klp-dev

parents 80213add b6699178
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
@@ -155,6 +156,8 @@ public abstract class PrintService extends Service {

    private static final String LOG_TAG = "PrintService";

    private static final boolean DEBUG = false;

    /**
     * The {@link Intent} action that must be declared as handled by a service
     * in its manifest for the system to recognize it as a print service.
@@ -433,6 +436,9 @@ public abstract class PrintService extends Service {

                case MSG_ON_PRINTJOB_QUEUED: {
                    PrintJobInfo printJobInfo = (PrintJobInfo) message.obj;
                    if (DEBUG) {
                        Log.i(LOG_TAG, "Queued: " + printJobInfo);
                    }
                    onPrintJobQueued(new PrintJob(printJobInfo, mClient));
                } break;

+4 −4
Original line number Diff line number Diff line
@@ -239,10 +239,10 @@ public final class PrintServiceInfo implements Parcelable {
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("PrintServiceInfo{");
        builder.append("id:").append(mId).append(", ");
        builder.append("resolveInfo:").append(mResolveInfo).append(", ");
        builder.append("settingsActivityName:").append(mSettingsActivityName);
        builder.append("addPrintersActivityName:").append(mAddPrintersActivityName);
        builder.append("id=").append(mId);
        builder.append(", resolveInfo=").append(mResolveInfo);
        builder.append(", settingsActivityName=").append(mSettingsActivityName);
        builder.append(", addPrintersActivityName=").append(mAddPrintersActivityName);
        builder.append("}");
        return builder.toString();
    }
+23 −0
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ import android.util.SparseArray;
import com.android.internal.content.PackageMonitor;
import com.android.internal.os.BackgroundThread;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -298,6 +300,27 @@ public final class PrintManagerService extends IPrintManager.Stub {
        }
    }

    @Override
    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        if (mContext.checkCallingOrSelfPermission(Manifest.permission.DUMP)
                != PackageManager.PERMISSION_GRANTED) {
            pw.println("Permission Denial: can't dump PrintManager from from pid="
                    + Binder.getCallingPid()
                    + ", uid=" + Binder.getCallingUid());
            return;
        }

        synchronized (mLock) {
            pw.println("PRINT MANAGER STATE (dumpsys print)");
            final int userStateCount = mUserStates.size();
            for (int i = 0; i < userStateCount; i++) {
                UserState userState = mUserStates.get(i);
                userState.dump(fd, pw, "");
                pw.println();
            }
        }
    }

    private void registerContentObservers() {
        final Uri enabledPrintServicesUri = Settings.Secure.getUriFor(
                Settings.Secure.ENABLED_PRINT_SERVICES);
+14 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.util.Slog;

import com.android.internal.R;

import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
@@ -137,6 +138,19 @@ final class RemotePrintService implements DeathRecipient {
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null);
    }

    public void dump(PrintWriter pw, String prefix) {
        String tab = "  ";
        pw.append(prefix).append("service:").println();
        pw.append(prefix).append(tab).append("componentName=")
                .append(mComponentName.flattenToString()).println();
        pw.append(prefix).append(tab).append("destroyed=")
                .append(String.valueOf(mDestroyed)).println();
        pw.append(prefix).append(tab).append("bound=")
                .append(String.valueOf(isBound())).println();
        pw.append(prefix).append(tab).append("hasDicoverySession=")
                .append(String.valueOf(mHasPrinterDiscoverySession));
    }

    private void failAllActivePrintJobs() {
        List<PrintJobInfo> printJobs = mSpooler.getPrintJobInfos(mComponentName,
                PrintJobInfo.STATE_ANY_ACTIVE, PrintManager.APP_ID_ANY);
+25 −0
Original line number Diff line number Diff line
@@ -34,11 +34,14 @@ import android.print.IPrintSpoolerCallbacks;
import android.print.IPrintSpoolerClient;
import android.print.PrintAttributes;
import android.print.PrintJobInfo;
import android.print.PrintManager;
import android.util.Slog;
import android.util.TimedRemoteCaller;

import libcore.io.IoUtils;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.List;
import java.util.concurrent.TimeoutException;
@@ -291,6 +294,28 @@ final class RemotePrintSpooler {
        }
    }

    public void dump(FileDescriptor fd, PrintWriter pw, String prefix) {
        synchronized (mLock) {
            pw.append(prefix).append("destroyed=")
                    .append(String.valueOf(mDestroyed)).println();
            pw.append(prefix).append("bound=")
                    .append((mRemoteInstance != null) ? "true" : "false").println();
            pw.append(prefix).append("print jobs:").println();
            if (mRemoteInstance != null) {
                List<PrintJobInfo> printJobs = getPrintJobInfos(null,
                        PrintJobInfo.STATE_ANY, PrintManager.APP_ID_ANY);
                if (printJobs != null) {
                    final int printJobCount = printJobs.size();
                    for (int i = 0; i < printJobCount; i++) {
                        PrintJobInfo printJob = printJobs.get(i);
                        pw.append(prefix).append(prefix).append(printJob.toString());
                        pw.println();
                    }
                }
            }
        }
    }

    private void onAllPrintJobsHandled() {
        synchronized (mLock) {
            throwIfDestroyedLocked();
Loading