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

Commit 0c2b2d1f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Enforce policy for camera gesture in keyguard" into nyc-mr2-dev

parents 1ca8da19 5b064e03
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -2679,4 +2679,23 @@ public abstract class BaseStatusBar extends SystemUI implements
            mAssistManager.startAssist(args);
        }
    }

    public boolean isCameraAllowedByAdmin() {
       if (mDevicePolicyManager.getCameraDisabled(null, mCurrentUserId)) {
           return false;
       } else if (isKeyguardShowing() && isKeyguardSecure()) {
           // Check if the admin has disabled the camera specifically for the keyguard
           return (mDevicePolicyManager.getKeyguardDisabledFeatures(null, mCurrentUserId)
                   & DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA) == 0;
       }
       return true;
    }

    public boolean isKeyguardShowing() {
        if (mStatusBarKeyguardViewManager == null) {
            Slog.i(TAG, "isKeyguardShowing() called before startKeyguard(), returning true");
            return true;
        }
        return mStatusBarKeyguardViewManager.isShowing();
    }
}
+4 −19
Original line number Diff line number Diff line
@@ -305,7 +305,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
            return;
        }
        ResolveInfo resolved = resolveCameraIntent();
        boolean visible = !isCameraDisabledByDpm() && resolved != null
        boolean isCameraDisabled =
                (mPhoneStatusBar != null) && !mPhoneStatusBar.isCameraAllowedByAdmin();
        boolean visible = !isCameraDisabled
                && resolved != null
                && getResources().getBoolean(R.bool.config_keyguardShowCameraAffordance)
                && mUserSetupComplete;
        mCameraImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
@@ -339,24 +342,6 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
                && pm.resolveActivity(PHONE_INTENT, 0) != null;
    }

    private boolean isCameraDisabledByDpm() {
        final DevicePolicyManager dpm =
                (DevicePolicyManager) getContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
        if (dpm != null && mPhoneStatusBar != null) {
            try {
                final int userId = ActivityManagerNative.getDefault().getCurrentUser().id;
                final int disabledFlags = dpm.getKeyguardDisabledFeatures(null, userId);
                final  boolean disabledBecauseKeyguardSecure =
                        (disabledFlags & DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA) != 0
                                && mPhoneStatusBar.isKeyguardSecure();
                return dpm.getCameraDisabled(null) || disabledBecauseKeyguardSecure;
            } catch (RemoteException e) {
                Log.e(TAG, "Can't get userId", e);
            }
        }
        return false;
    }

    private void watchForCameraPolicyChanges() {
        final IntentFilter filter = new IntentFilter();
        filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
+5 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.MathUtils;
import android.util.EventLog;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
@@ -2330,6 +2331,10 @@ public class NotificationPanelView extends PanelView implements
     * @param keyguardIsShowing whether keyguard is being shown
     */
    public boolean canCameraGestureBeLaunched(boolean keyguardIsShowing) {
        if (!mStatusBar.isCameraAllowedByAdmin()) {
            EventLog.writeEvent(0x534e4554, "63787722", -1, "");
            return false;
        }
        ResolveInfo resolveInfo = mKeyguardBottomArea.resolveCameraIntent();
        String packageToLaunch = (resolveInfo == null || resolveInfo.activityInfo == null)
                ? null : resolveInfo.activityInfo.packageName;