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

Commit 7c4b55cc authored by Kate Montgomery's avatar Kate Montgomery Committed by Android (Google) Code Review
Browse files

Merge "Revert "Update show system experiment behavior."" into tm-dev

parents 47aa2ca8 ec2e1fae
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -7232,13 +7232,6 @@ public final class Settings {
         */
        public static final String LOCATION_SHOW_SYSTEM_OPS = "locationShowSystemOps";
        /**
         * Whether or not an indicator experiment has started.
         * @hide
         */
        public static final String LOCATION_INDICATOR_EXPERIMENT_STARTED =
                "locationIndicatorExperimentStarted";
        /**
         * A flag containing settings used for biometric weak
         * @hide
+3 −40
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
    private boolean mShouldDisplayAllAccesses;
    private boolean mShowSystemAccessesFlag;
    private boolean mShowSystemAccessesSetting;
    private boolean mExperimentStarted;

    @Inject
    public LocationControllerImpl(Context context, AppOpsController appOpsController,
@@ -108,9 +107,6 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
        mShouldDisplayAllAccesses = getAllAccessesSetting();
        mShowSystemAccessesFlag = getShowSystemFlag();
        mShowSystemAccessesSetting = getShowSystemSetting();
        mExperimentStarted = getExperimentStarted();
        toggleSystemSettingIfExperimentJustStarted();

        mContentObserver = new ContentObserver(mBackgroundHandler) {
            @Override
            public void onChange(boolean selfChange) {
@@ -127,15 +123,8 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
                DeviceConfig.NAMESPACE_PRIVACY,
                backgroundHandler::post,
                properties -> {
                    // Update the Device Config flag which controls the experiment to display
                    // location accesses.
                    mShouldDisplayAllAccesses = getAllAccessesSetting();
                    // Update the Device Config flag which controls the experiment to display
                    // system location accesses.
                    mShowSystemAccessesFlag = getShowSystemFlag();
                    // Update the local flag for the system accesses experiment and potentially
                    // update the behavior based on the flag value.
                    toggleSystemSettingIfExperimentJustStarted();
                    mShowSystemAccessesFlag = getShowSystemSetting();
                    updateActiveLocationRequests();
                });

@@ -234,33 +223,6 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
                UserHandle.USER_CURRENT) == 1;
    }

    private boolean getExperimentStarted() {
        return mSecureSettings
                .getInt(Settings.Secure.LOCATION_INDICATOR_EXPERIMENT_STARTED, 0) == 1;
    }

    private void toggleSystemSettingIfExperimentJustStarted() {
        // mShowSystemAccessesFlag indicates whether the Device Config flag is flipped
        // by an experiment. mExperimentStarted is the local device value which indicates the last
        // value the device has seen for the Device Config flag.
        // The local device value is needed to determine that the Device Config flag was just
        // flipped, as the experiment behavior should only happen once after the experiment is
        // enabled.
        if (mShowSystemAccessesFlag && !mExperimentStarted) {
            // If the Device Config flag is enabled, but the local device setting is not then the
            // experiment just started. Update the local flag to match and enable the experiment
            // behavior by flipping the show system setting value.
            mSecureSettings.putInt(Settings.Secure.LOCATION_INDICATOR_EXPERIMENT_STARTED, 1);
            mSecureSettings.putInt(Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, 1);
            mExperimentStarted = true;
        } else if (!mShowSystemAccessesFlag && mExperimentStarted) {
            // If the Device Config flag is disabled, but the local device flag is enabled then
            // update the local device flag to match.
            mSecureSettings.putInt(Settings.Secure.LOCATION_INDICATOR_EXPERIMENT_STARTED, 0);
            mExperimentStarted = false;
        }
    }

    /**
     * Returns true if there currently exist active high power location requests.
     */
@@ -288,6 +250,7 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
        }
        boolean hadActiveLocationRequests = mAreActiveLocationRequests;
        boolean shouldDisplay = false;
        boolean showSystem = mShowSystemAccessesFlag || mShowSystemAccessesSetting;
        boolean systemAppOp = false;
        boolean nonSystemAppOp = false;
        boolean isSystemApp;
@@ -305,7 +268,7 @@ public class LocationControllerImpl extends BroadcastReceiver implements Locatio
                    nonSystemAppOp = true;
                }

                shouldDisplay = mShowSystemAccessesSetting || shouldDisplay || !isSystemApp;
                shouldDisplay = showSystem || shouldDisplay || !isSystemApp;
            }
        }

+0 −42
Original line number Diff line number Diff line
@@ -365,46 +365,4 @@ public class LocationControllerImplTest extends SysuiTestCase {
        // No new callbacks
        verify(callback).onLocationSettingsChanged(anyBoolean());
    }

    @Test
    public void testExperimentFlipsSystemFlag() throws Exception {
        mSecureSettings.putInt(Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, 0);
        mDeviceConfigProxy.setProperty(
                DeviceConfig.NAMESPACE_PRIVACY,
                SystemUiDeviceConfigFlags.PROPERTY_LOCATION_INDICATORS_SMALL_ENABLED,
                "true",
                true);
        // Show system experiment not running
        mDeviceConfigProxy.setProperty(
                DeviceConfig.NAMESPACE_PRIVACY,
                SystemUiDeviceConfigFlags.PROPERTY_LOCATION_INDICATORS_SHOW_SYSTEM,
                "false",
                false);
        mTestableLooper.processAllMessages();

        // Flip experiment on
        mDeviceConfigProxy.setProperty(
                DeviceConfig.NAMESPACE_PRIVACY,
                SystemUiDeviceConfigFlags.PROPERTY_LOCATION_INDICATORS_SHOW_SYSTEM,
                "true",
                true);
        mTestableLooper.processAllMessages();

        // Verify settings were flipped
        assertThat(mSecureSettings.getInt(Settings.Secure.LOCATION_SHOW_SYSTEM_OPS))
                .isEqualTo(1);
        assertThat(mSecureSettings.getInt(Settings.Secure.LOCATION_INDICATOR_EXPERIMENT_STARTED))
                .isEqualTo(1);

        // Flip experiment off
        mDeviceConfigProxy.setProperty(
                DeviceConfig.NAMESPACE_PRIVACY,
                SystemUiDeviceConfigFlags.PROPERTY_LOCATION_INDICATORS_SHOW_SYSTEM,
                "false",
                false);
        mTestableLooper.processAllMessages();

        assertThat(mSecureSettings.getInt(Settings.Secure.LOCATION_INDICATOR_EXPERIMENT_STARTED))
                .isEqualTo(0);
    }
}
 No newline at end of file