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

Commit 230a7092 authored by Jim Miller's avatar Jim Miller Committed by Android (Google) Code Review
Browse files

Merge "Fix 5863053: Add method to lock screen immediately." into ics-mr1

parents db2e7163 93c518e4
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -229,4 +229,9 @@ interface IWindowManager
     * Device has a software navigation bar (separate from the status bar).
     */
    boolean hasNavigationBar();

    /**
     * Lock the device immediately.
     */
    void lockNow();
}
+5 −0
Original line number Diff line number Diff line
@@ -1027,6 +1027,11 @@ public interface WindowManagerPolicy {
     */
    public boolean hasNavigationBar();

    /**
     * Lock the device now.
     */
    public void lockNow();

    /**
     * Print the WindowManagerPolicy's state into the given stream.
     *
+6 −0
Original line number Diff line number Diff line
@@ -3488,6 +3488,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    };

    public void lockNow() {
        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null);
        mHandler.removeCallbacks(mScreenLockTimeout);
        mHandler.post(mScreenLockTimeout);
    }

    private void updateLockScreenTimeout() {
        synchronized (mScreenLockTimeout) {
            boolean enable = (mAllowLockscreenWhenOn && mScreenOnEarly && mKeyguardMediator.isSecure());
+13 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ import android.util.PrintWriterPrinter;
import android.util.Printer;
import android.util.Slog;
import android.util.Xml;
import android.view.IWindowManager;
import android.view.WindowManagerPolicy;

import java.io.File;
@@ -96,6 +97,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
    final PowerManager.WakeLock mWakeLock;

    IPowerManager mIPowerManager;
    IWindowManager mIWindowManager;

    int mActivePasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
    int mActivePasswordLength = 0;
@@ -506,6 +508,14 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        return mIPowerManager;
    }

    private IWindowManager getWindowManager() {
        if (mIWindowManager == null) {
            IBinder b = ServiceManager.getService(Context.WINDOW_SERVICE);
            mIWindowManager = IWindowManager.Stub.asInterface(b);
        }
        return mIWindowManager;
    }

    ActiveAdmin getActiveAdminUncheckedLocked(ComponentName who) {
        ActiveAdmin admin = mAdminMap.get(who);
        if (admin != null
@@ -1649,8 +1659,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                    DeviceAdminInfo.USES_POLICY_FORCE_LOCK);
            long ident = Binder.clearCallingIdentity();
            try {
                // Power off the display
                mIPowerManager.goToSleepWithReason(SystemClock.uptimeMillis(),
                        WindowManagerPolicy.OFF_BECAUSE_OF_ADMIN);
                // Ensure the device is locked
                getWindowManager().lockNow();
            } catch (RemoteException e) {
            } finally {
                Binder.restoreCallingIdentity(ident);
+4 −0
Original line number Diff line number Diff line
@@ -9415,6 +9415,10 @@ public class WindowManagerService extends IWindowManager.Stub
        return mPolicy.hasNavigationBar();
    }

    public void lockNow() {
        mPolicy.lockNow();
    }

    void dumpInput(FileDescriptor fd, PrintWriter pw, boolean dumpAll) {
        pw.println("WINDOW MANAGER INPUT (dumpsys window input)");
        mInputManager.dump(pw);
Loading