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

Commit 447d74e3 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

Change-Id: I3b80e053aa1e2cc18df9648a5c6c4b08da03a389
parents 6e7b141e b43fb9b8
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) {