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

Commit 0c6757d8 authored by Ronish Kalia's avatar Ronish Kalia Committed by Android (Google) Code Review
Browse files

Merge "Add support for only enabling QR scanner in QS tile"

parents d73fb507 26e93a13
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -366,6 +366,7 @@ package android {
  }
  public static final class R.bool {
    field public static final int config_enableQrCodeScannerOnLockScreen;
    field public static final int config_sendPackageName = 17891328; // 0x1110000
    field public static final int config_showDefaultAssistant = 17891329; // 0x1110001
    field public static final int config_showDefaultEmergency = 17891330; // 0x1110002
+3 −0
Original line number Diff line number Diff line
@@ -5612,4 +5612,7 @@

    <!-- Flag indicating if help links for Settings app should be enabled. -->
    <bool name="config_settingsHelpLinksEnabled">false</bool>

    <!-- Whether or not to enable the lock screen entry point for the QR code scanner. -->
    <bool name="config_enableQrCodeScannerOnLockScreen">false</bool>
</resources>
+2 −0
Original line number Diff line number Diff line
@@ -3324,6 +3324,8 @@
  <staging-public-group type="bool" first-id="0x01cf0000">
    <!-- @hide @TestApi -->
    <public name="config_preventImeStartupUnlessTextEditor" />
    <!-- @hide @SystemApi -->
    <public name="config_enableQrCodeScannerOnLockScreen" />
  </staging-public-group>

  <staging-public-group type="fraction" first-id="0x01ce0000">
+29 −3
Original line number Diff line number Diff line
@@ -93,6 +93,7 @@ public class QRCodeScannerController implements
    private final DeviceConfigProxy mDeviceConfigProxy;
    private final ArrayList<Callback> mCallbacks = new ArrayList<>();
    private final UserTracker mUserTracker;
    private final boolean mConfigEnableLockScreenButton;

    private HashMap<Integer, ContentObserver> mQRCodeScannerPreferenceObserver = new HashMap<>();
    private DeviceConfig.OnPropertiesChangedListener mOnDefaultQRCodeScannerChangedListener = null;
@@ -118,6 +119,9 @@ public class QRCodeScannerController implements
        mSecureSettings = secureSettings;
        mDeviceConfigProxy = proxy;
        mUserTracker = userTracker;

        mConfigEnableLockScreenButton = mContext.getResources().getBoolean(
            android.R.bool.config_enableQrCodeScannerOnLockScreen);
    }

    /**
@@ -156,7 +160,7 @@ public class QRCodeScannerController implements
     * Returns true if lock screen entry point for QR Code Scanner is to be enabled.
     */
    public boolean isEnabledForLockScreenButton() {
        return mQRCodeScannerEnabled && mIntent != null;
        return mQRCodeScannerEnabled && mIntent != null && mConfigEnableLockScreenButton;
    }

    /**
@@ -235,6 +239,11 @@ public class QRCodeScannerController implements
    }

    private void updateQRCodeScannerPreferenceDetails(boolean updateSettings) {
        if (!mConfigEnableLockScreenButton) {
            // Settings only apply to lock screen entry point.
            return;
        }

        boolean prevQRCodeScannerEnabled = mQRCodeScannerEnabled;
        mQRCodeScannerEnabled = mSecureSettings.getIntForUser(LOCK_SCREEN_SHOW_QR_CODE_SCANNER, 0,
                mUserTracker.getUserId()) != 0;
@@ -251,8 +260,15 @@ public class QRCodeScannerController implements
    private void updateQRCodeScannerActivityDetails() {
        String qrCodeScannerActivity = mDeviceConfigProxy.getString(
                DeviceConfig.NAMESPACE_SYSTEMUI,
                SystemUiDeviceConfigFlags.DEFAULT_QR_CODE_SCANNER,
                mContext.getResources().getString(R.string.def_qr_code_component));
                SystemUiDeviceConfigFlags.DEFAULT_QR_CODE_SCANNER, "");

        // "" means either the flags is not available or is set to "", and in both the cases we
        // want to use R.string.def_qr_code_component
        if (Objects.equals(qrCodeScannerActivity, "")) {
            qrCodeScannerActivity =
                    mContext.getResources().getString(R.string.def_qr_code_component);
        }

        String prevQrCodeScannerActivity = mQRCodeScannerActivity;
        ComponentName componentName = null;
        Intent intent = new Intent();
@@ -296,6 +312,11 @@ public class QRCodeScannerController implements
    }

    private void unregisterQRCodePreferenceObserver() {
        if (!mConfigEnableLockScreenButton) {
            // Settings only apply to lock screen entry point.
            return;
        }

        mQRCodeScannerPreferenceObserver.forEach((key, value) -> {
            mSecureSettings.unregisterContentObserver(value);
        });
@@ -357,6 +378,11 @@ public class QRCodeScannerController implements
    }

    private void registerQRCodePreferenceObserver() {
        if (!mConfigEnableLockScreenButton) {
            // Settings only apply to lock screen entry point.
            return;
        }

        int userId = mUserTracker.getUserId();
        if (mQRCodeScannerPreferenceObserver.getOrDefault(userId, null) != null) return;