[automerger] Enforce policy for camera gesture in keyguard am: 65f02e8ba7 am: 6acee639af am: 569af6584a am: 30d3df57dc am: 79ada733cc am: 2eb85eca12
Change-Id: I3d7846f3b82dd429c69cff700e3d2794039b73db
This commit is contained in:
@@ -2663,4 +2663,23 @@ public abstract class BaseStatusBar extends SystemUI implements
|
|||||||
mAssistManager.startAssist(args);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -305,7 +305,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ResolveInfo resolved = resolveCameraIntent();
|
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)
|
&& getResources().getBoolean(R.bool.config_keyguardShowCameraAffordance)
|
||||||
&& mUserSetupComplete;
|
&& mUserSetupComplete;
|
||||||
mCameraImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
|
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;
|
&& 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() {
|
private void watchForCameraPolicyChanges() {
|
||||||
final IntentFilter filter = new IntentFilter();
|
final IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
|
filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import android.graphics.Paint;
|
|||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.MathUtils;
|
import android.util.MathUtils;
|
||||||
|
import android.util.EventLog;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
import android.view.VelocityTracker;
|
import android.view.VelocityTracker;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -2329,6 +2330,10 @@ public class NotificationPanelView extends PanelView implements
|
|||||||
* @param keyguardIsShowing whether keyguard is being shown
|
* @param keyguardIsShowing whether keyguard is being shown
|
||||||
*/
|
*/
|
||||||
public boolean canCameraGestureBeLaunched(boolean keyguardIsShowing) {
|
public boolean canCameraGestureBeLaunched(boolean keyguardIsShowing) {
|
||||||
|
if (!mStatusBar.isCameraAllowedByAdmin()) {
|
||||||
|
EventLog.writeEvent(0x534e4554, "63787722", -1, "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
ResolveInfo resolveInfo = mKeyguardBottomArea.resolveCameraIntent();
|
ResolveInfo resolveInfo = mKeyguardBottomArea.resolveCameraIntent();
|
||||||
String packageToLaunch = (resolveInfo == null || resolveInfo.activityInfo == null)
|
String packageToLaunch = (resolveInfo == null || resolveInfo.activityInfo == null)
|
||||||
? null : resolveInfo.activityInfo.packageName;
|
? null : resolveInfo.activityInfo.packageName;
|
||||||
|
|||||||
Reference in New Issue
Block a user