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

Commit 75ad3049 authored by Paul Chang's avatar Paul Chang Committed by Automerger Merge Worker
Browse files

Merge "Send intent to let calling app show UI safely without interfering the...

Merge "Send intent to let calling app show UI safely without interfering the bugreport/screenshot generation." into rvc-dev am: b43fb9b8 am: 447d74e3

Change-Id: I3cdc47da9436cfcfe942c2cf07f0cfccb49fabaa
parents e7cf08b4 447d74e3
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.annotation.SystemService;
import android.annotation.TestApi;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;
@@ -52,6 +53,8 @@ import java.util.concurrent.Executor;
public final class BugreportManager {

    private static final String TAG = "BugreportManager";
    private static final String INTENT_UI_INTENSIVE_BUGREPORT_DUMPS_FINISHED =
            "com.android.internal.intent.action.UI_INTENSIVE_BUGREPORT_DUMPS_FINISHED";

    private final Context mContext;
    private final IDumpstate mBinder;
@@ -284,5 +287,27 @@ public final class BugreportManager {
                        Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
                    });
        }

        @Override
        public void onUiIntensiveBugreportDumpsFinished(String callingPackage)
                throws RemoteException {
            final long identity = Binder.clearCallingIdentity();
            try {
                mExecutor.execute(() -> {
                    // Send intent to let calling app to show UI safely without interfering with
                    // the bugreport/screenshot generation.
                    // TODO(b/154298410): When S is ready for API change, add a method in
                    // BugreportCallback so we can just call the callback instead of using
                    // broadcast.
                    Intent intent = new Intent(INTENT_UI_INTENSIVE_BUGREPORT_DUMPS_FINISHED);
                    intent.setPackage(callingPackage);
                    intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
                    intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
                    mContext.sendBroadcast(intent, android.Manifest.permission.DUMP);
                });
            } finally {
                Binder.restoreCallingIdentity(identity);
            }
        }
    }
}
+0 −9
Original line number Diff line number Diff line
@@ -50,9 +50,6 @@ import java.util.List;
 */
public class IncidentCompanionService extends SystemService {
    static final String TAG = "IncidentCompanionService";
    // TODO(b/152289743): Expose below intent.
    private static final String INTENT_CHECK_USER_CONSENT =
            "com.android.internal.intent.action.CHECK_USER_CONSENT";

    /**
     * Dump argument for proxying restricted image dumps to the services
@@ -92,12 +89,6 @@ public class IncidentCompanionService extends SystemService {

            final long ident = Binder.clearCallingIdentity();
            try {
                Intent intent = new Intent(INTENT_CHECK_USER_CONSENT);
                intent.setPackage(callingPackage);
                intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
                intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
                getContext().sendBroadcast(intent, android.Manifest.permission.DUMP);

                mPendingReports.authorizeReport(callingUid, callingPackage,
                        receiverClass, reportId, flags, listener);
            } finally {
+6 −0
Original line number Diff line number Diff line
@@ -296,6 +296,12 @@ class BugreportManagerServiceImpl extends IDumpstate.Stub {
            mListener.onScreenshotTaken(success);
        }

        @Override
        public void onUiIntensiveBugreportDumpsFinished(String callingPackage)
                throws RemoteException {
            mListener.onUiIntensiveBugreportDumpsFinished(callingPackage);
        }

        @Override
        public void binderDied() {
            synchronized (mLock) {