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

Commit f98c7399 authored by Vladimir Komsiyski's avatar Vladimir Komsiyski Committed by Android (Google) Code Review
Browse files

Merge "Rename OP_AGENT_CONTROL with OP_COMPUTER_CONTROL" into main

parents 196b1102 9fea2ad1
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1738,7 +1738,7 @@ public class AppOpsManager {
     *
     * @hide
     */
    public static final int OP_AGENT_CONTROL = AppOpEnums.APP_OP_AGENT_CONTROL;
    public static final int OP_COMPUTER_CONTROL = AppOpEnums.APP_OP_COMPUTER_CONTROL;

    /** @hide */
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
@@ -1913,7 +1913,7 @@ public class AppOpsManager {
            OPSTR_SYSTEM_APPLICATION_OVERLAY,
            OPSTR_READ_CELL_IDENTITY,
            OPSTR_READ_CELL_INFO,
            OPSTR_AGENT_CONTROL,
            OPSTR_COMPUTER_CONTROL,
    })
    public @interface AppOpString {}

@@ -2724,7 +2724,7 @@ public class AppOpsManager {
    public static final String OPSTR_READ_CELL_INFO = "android:read_cell_info";

    /** @hide Control other applications. */
    public static final String OPSTR_AGENT_CONTROL = "android:agent_control";
    public static final String OPSTR_COMPUTER_CONTROL = "android:computer_control";

    /** {@link #sAppOpsToNote} not initialized yet for this op */
    private static final byte SHOULD_COLLECT_NOTE_OP_NOT_INITIALIZED = 0;
@@ -3399,7 +3399,11 @@ public class AppOpsManager {
                "READ_CELL_INFO")
                .setDefaultMode(AppOpsManager.MODE_ALLOWED)
                .build(),
        new AppOpInfo.Builder(OP_AGENT_CONTROL, OPSTR_AGENT_CONTROL, "AGENT_CONTROL")
        // OP_COMPUTER_CONTROL is related to the ACCESS_COMPUTER_CONTROL permission but with
        // slightly different semantics - the permission must be held in order to request a
        // computer control session at all, while the op mode determines whether explicit user
        // consent is required when requesting a computer control session.
        new AppOpInfo.Builder(OP_COMPUTER_CONTROL, OPSTR_COMPUTER_CONTROL, "COMPUTER_CONTROL")
                .setDefaultMode(AppOpsManager.MODE_IGNORED)
                .build(),
    };
+1 −1
Original line number Diff line number Diff line
@@ -125,7 +125,7 @@ public class RequestComputerControlAccessFragment extends DialogFragment {

    private void onAlwaysAllow(View view) {
        AppOpsManager appOpsManager = requireActivity().getSystemService(AppOpsManager.class);
        appOpsManager.setMode(AppOpsManager.OP_AGENT_CONTROL, mAgentUid, mAgentPackageName,
        appOpsManager.setMode(AppOpsManager.OP_COMPUTER_CONTROL, mAgentUid, mAgentPackageName,
                AppOpsManager.MODE_ALLOWED);
        finish(Activity.RESULT_OK);
    }
+1 −1
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ public class ComputerControlSessionProcessor {
        final boolean canCreateWithoutConsent;
        if (Flags.computerControlConsent()) {
            final int isOpAllowed = mAppOpsManager.noteOpNoThrow(
                    AppOpsManager.OP_AGENT_CONTROL, attributionSource, "create session");
                    AppOpsManager.OP_COMPUTER_CONTROL, attributionSource, "create session");
            canCreateWithoutConsent = isOpAllowed == AppOpsManager.MODE_ALLOWED;
        } else {
            canCreateWithoutConsent = true;
+3 −3
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public class ComputerControlSessionProcessorTest {
        when(mContext.getSystemService(Context.KEYGUARD_SERVICE)).thenReturn(mKeyguardManager);
        when(mContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mAppOpsManager);

        when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OP_AGENT_CONTROL), any(), any()))
        when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OP_COMPUTER_CONTROL), any(), any()))
                .thenReturn(AppOpsManager.MODE_ALLOWED);

        when(mVirtualDeviceFactory.createVirtualDevice(any(), any(), any(), any()))
@@ -180,7 +180,7 @@ public class ComputerControlSessionProcessorTest {
    @EnableFlags(Flags.FLAG_COMPUTER_CONTROL_CONSENT)
    @Test
    public void onSessionPending_consentGranted_sessionCreated() throws Exception {
        when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OP_AGENT_CONTROL), any(), any()))
        when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OP_COMPUTER_CONTROL), any(), any()))
                .thenReturn(AppOpsManager.MODE_IGNORED);

        mProcessor.processNewSessionRequest(AttributionSource.myAttributionSource(),
@@ -198,7 +198,7 @@ public class ComputerControlSessionProcessorTest {
    @EnableFlags(Flags.FLAG_COMPUTER_CONTROL_CONSENT)
    @Test
    public void onSessionPending_consentDenied_sessionCreationFailed() throws Exception {
        when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OP_AGENT_CONTROL), any(), any()))
        when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OP_COMPUTER_CONTROL), any(), any()))
                .thenReturn(AppOpsManager.MODE_IGNORED);

        mProcessor.processNewSessionRequest(AttributionSource.myAttributionSource(),