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

Commit 6f4aab2c authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Offer to wait until broadcasts have drained." into oc-dev

parents 748405a0 fd658131
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1441,10 +1441,10 @@ public final class Pm {
            System.err.println("Error: no size specified");
            return showUsage();
        }
        int len = size.length();
        long multiplier = 1;
        if (len > 1) {
        int len = size.length();
        char c = size.charAt(len - 1);
        if (c < '0' || c > '9') {
            if (c == 'K' || c == 'k') {
                multiplier = 1024L;
            } else if (c == 'M' || c == 'm') {
+25 −6
Original line number Diff line number Diff line
@@ -37,30 +37,46 @@ public final class ExternalStorageStats implements Parcelable {
    /**
     * Return the total bytes used by all files in the shared/external storage
     * hosted on this volume.
     * <p>
     * This value only includes data which is isolated for each user on a
     * multiuser device. Any OBB data shared between users is not accounted in
     * this value.
     */
    public @BytesLong long getTotalBytes() {
        return totalBytes;
    }

    /**
     * Return the total bytes used by audio files in the shared/external storage
     * hosted on this volume.
     * Return the total bytes used by all audio files in the shared/external
     * storage hosted on this volume.
     * <p>
     * This value only includes data which is isolated for each user on a
     * multiuser device. This value does not include any app files which are all
     * accounted under {@link #getAppBytes()}.
     */
    public @BytesLong long getAudioBytes() {
        return audioBytes;
    }

    /**
     * Return the total bytes used by video files in the shared/external storage
     * hosted on this volume.
     * Return the total bytes used by all video files in the shared/external
     * storage hosted on this volume.
     * <p>
     * This value only includes data which is isolated for each user on a
     * multiuser device. This value does not include any app files which are all
     * accounted under {@link #getAppBytes()}.
     */
    public @BytesLong long getVideoBytes() {
        return videoBytes;
    }

    /**
     * Return the total bytes used by image files in the shared/external storage
     * hosted on this volume.
     * Return the total bytes used by all image files in the shared/external
     * storage hosted on this volume.
     * <p>
     * This value only includes data which is isolated for each user on a
     * multiuser device. This value does not include any app files which are all
     * accounted under {@link #getAppBytes()}.
     */
    public @BytesLong long getImageBytes() {
        return imageBytes;
@@ -72,6 +88,9 @@ public final class ExternalStorageStats implements Parcelable {
     * <p>
     * This data is already accounted against individual apps as returned
     * through {@link StorageStats}.
     * <p>
     * This value only includes data which is isolated for each user on a
     * multiuser device.
     */
    public @BytesLong long getAppBytes() {
        return appBytes;
+28 −0
Original line number Diff line number Diff line
@@ -23875,6 +23875,34 @@ public class ActivityManagerService extends IActivityManager.Stub
        }
    }
    public void waitForBroadcastIdle(PrintWriter pw) {
        enforceCallingPermission(permission.DUMP, "waitForBroadcastIdle()");
        while (true) {
            boolean idle = true;
            synchronized (this) {
                for (BroadcastQueue queue : mBroadcastQueues) {
                    if (!queue.isIdle()) {
                        final String msg = "Waiting for queue " + queue + " to become idle...";
                        pw.println(msg);
                        pw.flush();
                        Slog.v(TAG, msg);
                        idle = false;
                    }
                }
            }
            if (idle) {
                final String msg = "All broadcast queues are idle!";
                pw.println(msg);
                pw.flush();
                Slog.v(TAG, msg);
                return;
            } else {
                SystemClock.sleep(1000);
            }
        }
    }
    /**
     * Return the user id of the last resumed activity.
     */
+7 −0
Original line number Diff line number Diff line
@@ -251,6 +251,8 @@ final class ActivityManagerShellCommand extends ShellCommand {
                    return runUpdateApplicationInfo(pw);
                case "no-home-screen":
                    return runNoHomeScreen(pw);
                case "wait-for-broadcast-idle":
                    return runWaitForBroadcastIdle(pw);
                default:
                    return handleDefaultCommands(cmd);
            }
@@ -2419,6 +2421,11 @@ final class ActivityManagerShellCommand extends ShellCommand {
        return 0;
    }

    int runWaitForBroadcastIdle(PrintWriter pw) throws RemoteException {
        mInternal.waitForBroadcastIdle(pw);
        return 0;
    }

    private Resources getResources(PrintWriter pw) throws RemoteException {
        // system resources does not contain all the device configuration, construct it manually.
        Configuration config = mInterface.getConfiguration();
+10 −0
Original line number Diff line number Diff line
@@ -203,6 +203,11 @@ public final class BroadcastQueue {
        mDelayBehindServices = allowDelayBehindServices;
    }

    @Override
    public String toString() {
        return mQueueName;
    }

    public boolean isPendingBroadcastProcessLocked(int pid) {
        return mPendingBroadcast != null && mPendingBroadcast.curApp.pid == pid;
    }
@@ -1578,6 +1583,11 @@ public final class BroadcastQueue {
                record.intent == null ? "" : record.intent.getAction());
    }

    final boolean isIdle() {
        return mParallelBroadcasts.isEmpty() && mOrderedBroadcasts.isEmpty()
                && (mPendingBroadcast == null);
    }

    final boolean dumpLocked(FileDescriptor fd, PrintWriter pw, String[] args,
            int opti, boolean dumpAll, String dumpPackage, boolean needSep) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Loading