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

Commit 53fcacdc 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 am: 47ec3e73 am: 3435c94a

Change-Id: I12745ba141e320447ff60bd43f3e8a1af2f91654
parents 6c977a4d 3435c94a
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) {