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

Commit 432f8c7b authored by Nandana Dutt's avatar Nandana Dutt
Browse files

Add the new dumpstate listener methods to implementations

Add dummy implementations for status, error and finished callbacks.
Next step: wire these up end-to-end; change Shell's listener to be
BugreportManager.BugreportListener, and make it communicate with the
native service explicitly through the new system api.

BUG: 111441001
Test: Verified progress in interactive bugreport still works
Change-Id: Iad0bb7b23b04f6bc7e3b31e5071df42409c78684
parent c2b8bc0a
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -114,7 +114,6 @@ public class BugreportManager {
        }
    }


    // TODO(b/111441001) Connect up with BugreportListener methods.
    private final class DumpstateListener extends IDumpstateListener.Stub
            implements DeathRecipient {
@@ -129,6 +128,23 @@ public class BugreportManager {
            // TODO(b/111441001): implement
        }

        @Override
        public void onProgress(int progress) throws RemoteException {
            // TODO(b/111441001): implement
        }

        @Override
        public void onError(int errorCode) throws RemoteException {
            // TODO(b/111441001): implement
        }

        @Override
        public void onFinished(long durationMs, String title, String description)
                throws RemoteException {
            // TODO(b/111441001): implement
        }

        // Old methods; should go away
        @Override
        public void onProgressUpdated(int progress) throws RemoteException {
            // TODO(b/111441001): implement
+52 −23
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.google.android.collect.Lists;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.annotation.MainThread;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Notification;
@@ -799,6 +800,18 @@ public class BugreportProgressService extends Service {
            Log.wtf(TAG, "Missing " + EXTRA_BUGREPORT + " on intent " + intent);
            return;
        }
        final int max = intent.getIntExtra(EXTRA_MAX, -1);
        final File screenshotFile = getFileExtra(intent, EXTRA_SCREENSHOT);
        final String shareTitle = intent.getStringExtra(EXTRA_TITLE);
        final String shareDescription = intent.getStringExtra(EXTRA_DESCRIPTION);
        onBugreportFinished(id, bugreportFile, screenshotFile, shareTitle, shareDescription, max);
    }

    /**
     * Wraps up bugreport generation and triggers a notification to share the bugreport.
     */
    private void onBugreportFinished(int id, File bugreportFile, @Nullable File screenshotFile,
        String shareTitle, String shareDescription, int max) {
        mInfoDialog.onBugreportFinished();
        BugreportInfo info = getInfo(id);
        if (info == null) {
@@ -809,22 +822,17 @@ public class BugreportProgressService extends Service {
        }
        info.renameScreenshots(mScreenshotsDir);
        info.bugreportFile = bugreportFile;
        if (screenshotFile != null) {
            info.addScreenshot(screenshotFile);
        }

        final int max = intent.getIntExtra(EXTRA_MAX, -1);
        if (max != -1) {
            MetricsLogger.histogram(this, "dumpstate_duration", max);
            info.max = max;
        }

        final File screenshot = getFileExtra(intent, EXTRA_SCREENSHOT);
        if (screenshot != null) {
            info.addScreenshot(screenshot);
        }

        final String shareTitle = intent.getStringExtra(EXTRA_TITLE);
        if (!TextUtils.isEmpty(shareTitle)) {
            info.title = shareTitle;
            final String shareDescription = intent.getStringExtra(EXTRA_DESCRIPTION);
            if (!TextUtils.isEmpty(shareDescription)) {
                info.shareDescription= shareDescription;
            }
@@ -1943,6 +1951,23 @@ public class BugreportProgressService extends Service {
            token.asBinder().unlinkToDeath(this, 0);
        }

        @Override
        public void onProgress(int progress) throws RemoteException {
            // TODO(b/111441001): change max argument?
            updateProgressInfo(progress, CAPPED_MAX);
        }

        @Override
        public void onError(int errorCode) throws RemoteException {
            // TODO(b/111441001): implement
        }

        @Override
        public void onFinished(long durationMs, String title, String description)
                throws RemoteException {
            // TODO(b/111441001): implement
        }

        @Override
        public void onProgressUpdated(int progress) throws RemoteException {
            /*
@@ -1964,21 +1989,7 @@ public class BugreportProgressService extends Service {
            }

            if (newPercentage > oldPercentage) {
                if (DEBUG) {
                    if (progress != info.progress) {
                        Log.v(TAG, "Updating progress for PID " + info.pid + "(id: " + info.id
                                + ") from " + info.progress + " to " + progress);
                    }
                    if (max != info.max) {
                        Log.v(TAG, "Updating max progress for PID " + info.pid + "(id: " + info.id
                                + ") from " + info.max + " to " + max);
                    }
                }
                info.progress = progress;
                info.max = max;
                info.lastUpdate = System.currentTimeMillis();

                updateProgress(info);
                updateProgressInfo(progress, max);
            }
        }

@@ -2000,5 +2011,23 @@ public class BugreportProgressService extends Service {
        public void dump(String prefix, PrintWriter pw) {
            pw.print(prefix); pw.print("token: "); pw.println(token);
        }

        private void updateProgressInfo(int progress, int max) {
            if (DEBUG) {
                if (progress != info.progress) {
                    Log.v(TAG, "Updating progress for PID " + info.pid + "(id: " + info.id
                            + ") from " + info.progress + " to " + progress);
                }
                if (max != info.max) {
                    Log.v(TAG, "Updating max progress for PID " + info.pid + "(id: " + info.id
                            + ") from " + info.max + " to " + max);
                }
            }
            info.progress = progress;
            info.max = max;
            info.lastUpdate = System.currentTimeMillis();

            updateProgress(info);
        }
    }
}