blob: 50e5e7bd2312dbb5b379907cc9c658e968844715 [file] [log] [blame]
Jorim Jaggib10e33f2015-02-04 21:57:40 +01001package com.android.server.policy.keyguard;
Jim Miller5ecd8112013-01-09 18:50:26 -08002
Sudheer Shankadc589ac2016-11-10 15:30:17 -08003import android.app.ActivityManager;
Jim Miller5ecd8112013-01-09 18:50:26 -08004import android.content.ComponentName;
5import android.content.Context;
6import android.content.Intent;
7import android.content.ServiceConnection;
Bryce Lee2a18cbc2015-03-09 15:49:23 +00008import android.content.res.Resources;
Jim Miller5ecd8112013-01-09 18:50:26 -08009import android.os.Bundle;
Jorim Jaggi4a0e7912015-07-29 15:46:29 -070010import android.os.Handler;
Jim Miller5ecd8112013-01-09 18:50:26 -080011import android.os.IBinder;
12import android.os.RemoteException;
13import android.os.UserHandle;
14import android.util.Log;
15import android.util.Slog;
16import android.view.WindowManagerPolicy.OnKeyguardExitResult;
17
Jorim Jaggi241ae102016-11-02 21:57:33 -070018import com.android.internal.policy.IKeyguardDismissCallback;
Jorim Jaggi740452e2015-07-09 12:13:59 -070019import com.android.internal.policy.IKeyguardDrawnCallback;
Jim Miller25190572013-02-28 17:36:24 -080020import com.android.internal.policy.IKeyguardExitCallback;
Jim Miller5ecd8112013-01-09 18:50:26 -080021import com.android.internal.policy.IKeyguardService;
Adrian Roos691546e2016-02-09 10:13:41 -080022import com.android.server.UiThread;
Jim Miller5ecd8112013-01-09 18:50:26 -080023
Jorim Jaggi84dc08a2015-09-11 17:45:22 -070024import java.io.PrintWriter;
25
Jim Miller5ecd8112013-01-09 18:50:26 -080026/**
27 * A local class that keeps a cache of keyguard state that can be restored in the event
28 * keyguard crashes. It currently also allows runtime-selectable
29 * local or remote instances of keyguard.
30 */
31public class KeyguardServiceDelegate {
Jim Miller5ecd8112013-01-09 18:50:26 -080032 private static final String TAG = "KeyguardServiceDelegate";
Joe Onorato82ba91d2017-04-27 16:18:05 -070033 private static final boolean DEBUG = false;
Jim Millerab954542014-10-10 18:21:49 -070034
Jorim Jaggic0496072015-08-19 15:14:52 -070035 private static final int SCREEN_STATE_OFF = 0;
36 private static final int SCREEN_STATE_TURNING_ON = 1;
37 private static final int SCREEN_STATE_ON = 2;
Adrian Roos369907f2017-07-14 14:53:39 +020038 private static final int SCREEN_STATE_TURNING_OFF = 3;
Jorim Jaggic0496072015-08-19 15:14:52 -070039
40 private static final int INTERACTIVE_STATE_SLEEP = 0;
Adrian Roos369907f2017-07-14 14:53:39 +020041 private static final int INTERACTIVE_STATE_WAKING = 1;
42 private static final int INTERACTIVE_STATE_AWAKE = 2;
43 private static final int INTERACTIVE_STATE_GOING_TO_SLEEP = 3;
Jorim Jaggic0496072015-08-19 15:14:52 -070044
Jim Miller5ecd8112013-01-09 18:50:26 -080045 protected KeyguardServiceWrapper mKeyguardService;
Jim Millerab954542014-10-10 18:21:49 -070046 private final Context mContext;
Jorim Jaggi73294b62016-10-26 18:02:36 -070047 private final Handler mHandler;
Jim Millerab954542014-10-10 18:21:49 -070048 private final KeyguardState mKeyguardState = new KeyguardState();
Jorim Jaggie69c9312016-10-31 18:24:38 -070049 private final KeyguardStateMonitor.StateCallback mCallback;
50
Jorim Jaggi740452e2015-07-09 12:13:59 -070051 private DrawnListener mDrawnListenerWhenConnect;
Jim Miller5ecd8112013-01-09 18:50:26 -080052
Adrian Roos3542f7d2015-07-13 15:57:53 -070053 private static final class KeyguardState {
Jim Millere5f17ab2013-11-13 15:40:48 -080054 KeyguardState() {
Jorim Jaggi73294b62016-10-26 18:02:36 -070055 reset();
Jim Millere5f17ab2013-11-13 15:40:48 -080056 }
Jim Miller5ecd8112013-01-09 18:50:26 -080057 boolean showing;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010058 boolean showingAndNotOccluded;
Jim Miller5ecd8112013-01-09 18:50:26 -080059 boolean inputRestricted;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010060 boolean occluded;
Jim Miller5ecd8112013-01-09 18:50:26 -080061 boolean secure;
62 boolean dreaming;
63 boolean systemIsReady;
Jim Millera8800f72014-12-12 13:34:43 -080064 boolean deviceHasKeyguard;
Jim Miller5ecd8112013-01-09 18:50:26 -080065 public boolean enabled;
Jim Miller5ecd8112013-01-09 18:50:26 -080066 public int offReason;
67 public int currentUser;
Jim Millere5f910a2013-10-16 18:15:46 -070068 public boolean bootCompleted;
Jorim Jaggic0496072015-08-19 15:14:52 -070069 public int screenState;
70 public int interactiveState;
Jorim Jaggi73294b62016-10-26 18:02:36 -070071
72 private void reset() {
73 // Assume keyguard is showing and secure until we know for sure. This is here in
74 // the event something checks before the service is actually started.
75 // KeyguardService itself should default to this state until the real state is known.
76 showing = true;
77 showingAndNotOccluded = true;
78 secure = true;
79 deviceHasKeyguard = true;
80 enabled = true;
81 currentUser = UserHandle.USER_NULL;
82 }
Jim Miller5ecd8112013-01-09 18:50:26 -080083 };
84
Jorim Jaggi740452e2015-07-09 12:13:59 -070085 public interface DrawnListener {
86 void onDrawn();
Jim Miller5ecd8112013-01-09 18:50:26 -080087 }
88
Jim Miller25190572013-02-28 17:36:24 -080089 // A delegate class to map a particular invocation with a ShowListener object.
Jorim Jaggi740452e2015-07-09 12:13:59 -070090 private final class KeyguardShowDelegate extends IKeyguardDrawnCallback.Stub {
91 private DrawnListener mDrawnListener;
Jim Miller5ecd8112013-01-09 18:50:26 -080092
Jorim Jaggi740452e2015-07-09 12:13:59 -070093 KeyguardShowDelegate(DrawnListener drawnListener) {
94 mDrawnListener = drawnListener;
Jim Miller5ecd8112013-01-09 18:50:26 -080095 }
96
97 @Override
Jorim Jaggi740452e2015-07-09 12:13:59 -070098 public void onDrawn() throws RemoteException {
Jim Miller5ecd8112013-01-09 18:50:26 -080099 if (DEBUG) Log.v(TAG, "**** SHOWN CALLED ****");
Jorim Jaggi740452e2015-07-09 12:13:59 -0700100 if (mDrawnListener != null) {
101 mDrawnListener.onDrawn();
Jim Miller5ecd8112013-01-09 18:50:26 -0800102 }
103 }
Jim Miller25190572013-02-28 17:36:24 -0800104 };
105
106 // A delegate class to map a particular invocation with an OnKeyguardExitResult object.
107 private final class KeyguardExitDelegate extends IKeyguardExitCallback.Stub {
108 private OnKeyguardExitResult mOnKeyguardExitResult;
109
110 KeyguardExitDelegate(OnKeyguardExitResult onKeyguardExitResult) {
111 mOnKeyguardExitResult = onKeyguardExitResult;
112 }
Jim Miller5ecd8112013-01-09 18:50:26 -0800113
114 @Override
115 public void onKeyguardExitResult(boolean success) throws RemoteException {
116 if (DEBUG) Log.v(TAG, "**** onKeyguardExitResult(" + success +") CALLED ****");
117 if (mOnKeyguardExitResult != null) {
118 mOnKeyguardExitResult.onKeyguardExitResult(success);
119 }
120 }
121 };
122
Jorim Jaggie69c9312016-10-31 18:24:38 -0700123 public KeyguardServiceDelegate(Context context, KeyguardStateMonitor.StateCallback callback) {
Jim Millerab954542014-10-10 18:21:49 -0700124 mContext = context;
Jorim Jaggi73294b62016-10-26 18:02:36 -0700125 mHandler = UiThread.getHandler();
Jorim Jaggie69c9312016-10-31 18:24:38 -0700126 mCallback = callback;
Jason Monk5eeebf52014-09-26 12:36:51 -0400127 }
128
129 public void bindService(Context context) {
Jim Miller5ecd8112013-01-09 18:50:26 -0800130 Intent intent = new Intent();
Bryce Lee2a18cbc2015-03-09 15:49:23 +0000131 final Resources resources = context.getApplicationContext().getResources();
132
133 final ComponentName keyguardComponent = ComponentName.unflattenFromString(
134 resources.getString(com.android.internal.R.string.config_keyguardComponent));
Jeff Sharkey2f3e3532015-12-21 14:16:43 -0700135 intent.addFlags(Intent.FLAG_DEBUG_TRIAGED_MISSING);
Bryce Lee2a18cbc2015-03-09 15:49:23 +0000136 intent.setComponent(keyguardComponent);
137
Jim Miller5ecd8112013-01-09 18:50:26 -0800138 if (!context.bindServiceAsUser(intent, mKeyguardConnection,
Jorim Jaggi73294b62016-10-26 18:02:36 -0700139 Context.BIND_AUTO_CREATE, mHandler, UserHandle.SYSTEM)) {
Bryce Lee2a18cbc2015-03-09 15:49:23 +0000140 Log.v(TAG, "*** Keyguard: can't bind to " + keyguardComponent);
Jim Millerfb5fcea2014-01-08 14:57:54 -0800141 mKeyguardState.showing = false;
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100142 mKeyguardState.showingAndNotOccluded = false;
Jim Millerfb5fcea2014-01-08 14:57:54 -0800143 mKeyguardState.secure = false;
Adrian Roos3542f7d2015-07-13 15:57:53 -0700144 synchronized (mKeyguardState) {
145 // TODO: Fix synchronisation model in this class. The other state in this class
146 // is at least self-healing but a race condition here can lead to the scrim being
147 // stuck on keyguard-less devices.
148 mKeyguardState.deviceHasKeyguard = false;
Adrian Roos3542f7d2015-07-13 15:57:53 -0700149 }
Jim Miller5ecd8112013-01-09 18:50:26 -0800150 } else {
151 if (DEBUG) Log.v(TAG, "*** Keyguard started");
152 }
153 }
154
Jim Miller25190572013-02-28 17:36:24 -0800155 private final ServiceConnection mKeyguardConnection = new ServiceConnection() {
156 @Override
157 public void onServiceConnected(ComponentName name, IBinder service) {
158 if (DEBUG) Log.v(TAG, "*** Keyguard connected (yay!)");
Jim Millerab954542014-10-10 18:21:49 -0700159 mKeyguardService = new KeyguardServiceWrapper(mContext,
Jorim Jaggie69c9312016-10-31 18:24:38 -0700160 IKeyguardService.Stub.asInterface(service), mCallback);
Jim Miller25190572013-02-28 17:36:24 -0800161 if (mKeyguardState.systemIsReady) {
Jim Millerc0b676d2013-03-22 16:11:08 -0700162 // If the system is ready, it means keyguard crashed and restarted.
Jim Miller25190572013-02-28 17:36:24 -0800163 mKeyguardService.onSystemReady();
Suprabh Shukla323d2bb2016-07-27 17:00:12 -0700164 if (mKeyguardState.currentUser != UserHandle.USER_NULL) {
165 // There has been a user switch earlier
166 mKeyguardService.setCurrentUser(mKeyguardState.currentUser);
167 }
Jim Millerc0b676d2013-03-22 16:11:08 -0700168 // This is used to hide the scrim once keyguard displays.
Adrian Roos369907f2017-07-14 14:53:39 +0200169 if (mKeyguardState.interactiveState == INTERACTIVE_STATE_AWAKE
170 || mKeyguardState.interactiveState == INTERACTIVE_STATE_WAKING) {
Jorim Jaggic0496072015-08-19 15:14:52 -0700171 mKeyguardService.onStartedWakingUp();
172 }
Adrian Roos369907f2017-07-14 14:53:39 +0200173 if (mKeyguardState.interactiveState == INTERACTIVE_STATE_AWAKE) {
174 mKeyguardService.onFinishedWakingUp();
175 }
Jorim Jaggic0496072015-08-19 15:14:52 -0700176 if (mKeyguardState.screenState == SCREEN_STATE_ON
177 || mKeyguardState.screenState == SCREEN_STATE_TURNING_ON) {
178 mKeyguardService.onScreenTurningOn(
179 new KeyguardShowDelegate(mDrawnListenerWhenConnect));
180 }
181 if (mKeyguardState.screenState == SCREEN_STATE_ON) {
182 mKeyguardService.onScreenTurnedOn();
183 }
Jorim Jaggi740452e2015-07-09 12:13:59 -0700184 mDrawnListenerWhenConnect = null;
Jim Miller5ecd8112013-01-09 18:50:26 -0800185 }
Jim Millere5f910a2013-10-16 18:15:46 -0700186 if (mKeyguardState.bootCompleted) {
187 mKeyguardService.onBootCompleted();
188 }
Adrian Roosf253eeb2015-04-15 18:03:08 -0700189 if (mKeyguardState.occluded) {
Jorim Jaggi6626f542016-08-22 13:08:44 -0700190 mKeyguardService.setOccluded(mKeyguardState.occluded, false /* animate */);
Adrian Roosf253eeb2015-04-15 18:03:08 -0700191 }
Tony Mak2c0d6dc2016-04-29 16:16:54 +0100192 if (!mKeyguardState.enabled) {
193 mKeyguardService.setKeyguardEnabled(mKeyguardState.enabled);
194 }
Jim Miller25190572013-02-28 17:36:24 -0800195 }
Jim Miller5ecd8112013-01-09 18:50:26 -0800196
Jim Miller25190572013-02-28 17:36:24 -0800197 @Override
198 public void onServiceDisconnected(ComponentName name) {
199 if (DEBUG) Log.v(TAG, "*** Keyguard disconnected (boo!)");
200 mKeyguardService = null;
Jorim Jaggi73294b62016-10-26 18:02:36 -0700201 mKeyguardState.reset();
202 mHandler.post(() -> {
203 try {
Sudheer Shankadc589ac2016-11-10 15:30:17 -0800204 ActivityManager.getService().setLockScreenShown(true);
Jorim Jaggi73294b62016-10-26 18:02:36 -0700205 } catch (RemoteException e) {
206 // Local call.
207 }
208 });
Jim Miller25190572013-02-28 17:36:24 -0800209 }
Jim Miller25190572013-02-28 17:36:24 -0800210 };
Jim Miller5ecd8112013-01-09 18:50:26 -0800211
212 public boolean isShowing() {
213 if (mKeyguardService != null) {
214 mKeyguardState.showing = mKeyguardService.isShowing();
215 }
216 return mKeyguardState.showing;
217 }
218
Adrian Roosd88eb262016-08-04 14:50:48 -0700219 public boolean isTrusted() {
220 if (mKeyguardService != null) {
221 return mKeyguardService.isTrusted();
222 }
223 return false;
224 }
225
Jorim Jaggid11d1a92016-08-16 16:02:32 -0700226 public boolean hasLockscreenWallpaper() {
227 if (mKeyguardService != null) {
228 return mKeyguardService.hasLockscreenWallpaper();
229 }
230 return false;
231 }
232
Jim Miller5ecd8112013-01-09 18:50:26 -0800233 public boolean isInputRestricted() {
234 if (mKeyguardService != null) {
235 mKeyguardState.inputRestricted = mKeyguardService.isInputRestricted();
236 }
237 return mKeyguardState.inputRestricted;
238 }
239
240 public void verifyUnlock(final OnKeyguardExitResult onKeyguardExitResult) {
241 if (mKeyguardService != null) {
Jim Miller25190572013-02-28 17:36:24 -0800242 mKeyguardService.verifyUnlock(new KeyguardExitDelegate(onKeyguardExitResult));
Jim Miller5ecd8112013-01-09 18:50:26 -0800243 }
244 }
245
Jorim Jaggi6626f542016-08-22 13:08:44 -0700246 public void setOccluded(boolean isOccluded, boolean animate) {
Jim Miller5ecd8112013-01-09 18:50:26 -0800247 if (mKeyguardService != null) {
Jorim Jaggi6626f542016-08-22 13:08:44 -0700248 if (DEBUG) Log.v(TAG, "setOccluded(" + isOccluded + ") animate=" + animate);
249 mKeyguardService.setOccluded(isOccluded, animate);
Jim Miller5ecd8112013-01-09 18:50:26 -0800250 }
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100251 mKeyguardState.occluded = isOccluded;
Jim Miller5ecd8112013-01-09 18:50:26 -0800252 }
253
Jorim Jaggi241ae102016-11-02 21:57:33 -0700254 public void dismiss(IKeyguardDismissCallback callback) {
Jim Miller5ecd8112013-01-09 18:50:26 -0800255 if (mKeyguardService != null) {
Jorim Jaggi241ae102016-11-02 21:57:33 -0700256 mKeyguardService.dismiss(callback);
Jim Miller5ecd8112013-01-09 18:50:26 -0800257 }
258 }
259
Jim Millere4044bb2016-05-10 18:38:25 -0700260 public boolean isSecure(int userId) {
Jim Miller5ecd8112013-01-09 18:50:26 -0800261 if (mKeyguardService != null) {
Jim Millere4044bb2016-05-10 18:38:25 -0700262 mKeyguardState.secure = mKeyguardService.isSecure(userId);
Jim Miller5ecd8112013-01-09 18:50:26 -0800263 }
264 return mKeyguardState.secure;
265 }
266
Jim Miller5ecd8112013-01-09 18:50:26 -0800267 public void onDreamingStarted() {
268 if (mKeyguardService != null) {
269 mKeyguardService.onDreamingStarted();
270 }
271 mKeyguardState.dreaming = true;
272 }
273
274 public void onDreamingStopped() {
275 if (mKeyguardService != null) {
276 mKeyguardService.onDreamingStopped();
277 }
278 mKeyguardState.dreaming = false;
279 }
280
Jorim Jaggi740452e2015-07-09 12:13:59 -0700281 public void onStartedWakingUp() {
Jim Miller5ecd8112013-01-09 18:50:26 -0800282 if (mKeyguardService != null) {
Jorim Jaggi740452e2015-07-09 12:13:59 -0700283 if (DEBUG) Log.v(TAG, "onStartedWakingUp()");
284 mKeyguardService.onStartedWakingUp();
285 }
Adrian Roos369907f2017-07-14 14:53:39 +0200286 mKeyguardState.interactiveState = INTERACTIVE_STATE_WAKING;
287 }
288
289 public void onFinishedWakingUp() {
290 if (mKeyguardService != null) {
291 if (DEBUG) Log.v(TAG, "onFinishedWakingUp()");
292 mKeyguardService.onFinishedWakingUp();
293 }
Jorim Jaggic0496072015-08-19 15:14:52 -0700294 mKeyguardState.interactiveState = INTERACTIVE_STATE_AWAKE;
Jorim Jaggi740452e2015-07-09 12:13:59 -0700295 }
296
Adrian Roos369907f2017-07-14 14:53:39 +0200297 public void onScreenTurningOff() {
298 if (mKeyguardService != null) {
299 if (DEBUG) Log.v(TAG, "onScreenTurningOff()");
300 mKeyguardService.onScreenTurningOff();
301 }
302 mKeyguardState.screenState = SCREEN_STATE_TURNING_OFF;
303 }
304
Jorim Jaggi0d210f62015-07-10 14:24:44 -0700305 public void onScreenTurnedOff() {
306 if (mKeyguardService != null) {
307 if (DEBUG) Log.v(TAG, "onScreenTurnedOff()");
308 mKeyguardService.onScreenTurnedOff();
309 }
Jorim Jaggic0496072015-08-19 15:14:52 -0700310 mKeyguardState.screenState = SCREEN_STATE_OFF;
Jorim Jaggi0d210f62015-07-10 14:24:44 -0700311 }
312
Jorim Jaggi740452e2015-07-09 12:13:59 -0700313 public void onScreenTurningOn(final DrawnListener drawnListener) {
314 if (mKeyguardService != null) {
315 if (DEBUG) Log.v(TAG, "onScreenTurnedOn(showListener = " + drawnListener + ")");
316 mKeyguardService.onScreenTurningOn(new KeyguardShowDelegate(drawnListener));
Jim Miller5ecd8112013-01-09 18:50:26 -0800317 } else {
318 // try again when we establish a connection
Jorim Jaggi740452e2015-07-09 12:13:59 -0700319 Slog.w(TAG, "onScreenTurningOn(): no keyguard service!");
Jim Millera8800f72014-12-12 13:34:43 -0800320 // This shouldn't happen, but if it does, show the scrim immediately and
321 // invoke the listener's callback after the service actually connects.
Jorim Jaggi740452e2015-07-09 12:13:59 -0700322 mDrawnListenerWhenConnect = drawnListener;
Jim Miller5ecd8112013-01-09 18:50:26 -0800323 }
Jorim Jaggic0496072015-08-19 15:14:52 -0700324 mKeyguardState.screenState = SCREEN_STATE_TURNING_ON;
Jim Miller5ecd8112013-01-09 18:50:26 -0800325 }
326
Jorim Jaggi0d210f62015-07-10 14:24:44 -0700327 public void onScreenTurnedOn() {
328 if (mKeyguardService != null) {
329 if (DEBUG) Log.v(TAG, "onScreenTurnedOn()");
330 mKeyguardService.onScreenTurnedOn();
331 }
Jorim Jaggic0496072015-08-19 15:14:52 -0700332 mKeyguardState.screenState = SCREEN_STATE_ON;
Jorim Jaggi0d210f62015-07-10 14:24:44 -0700333 }
334
Jorim Jaggid175b6c2015-05-27 15:39:09 -0700335 public void onStartedGoingToSleep(int why) {
Jim Miller5ecd8112013-01-09 18:50:26 -0800336 if (mKeyguardService != null) {
Jorim Jaggid175b6c2015-05-27 15:39:09 -0700337 mKeyguardService.onStartedGoingToSleep(why);
Jim Miller5ecd8112013-01-09 18:50:26 -0800338 }
339 mKeyguardState.offReason = why;
Jorim Jaggic0496072015-08-19 15:14:52 -0700340 mKeyguardState.interactiveState = INTERACTIVE_STATE_GOING_TO_SLEEP;
Jorim Jaggid175b6c2015-05-27 15:39:09 -0700341 }
342
Jorim Jaggif1cdf952016-04-05 21:41:06 -0700343 public void onFinishedGoingToSleep(int why, boolean cameraGestureTriggered) {
Jorim Jaggid175b6c2015-05-27 15:39:09 -0700344 if (mKeyguardService != null) {
Jorim Jaggif1cdf952016-04-05 21:41:06 -0700345 mKeyguardService.onFinishedGoingToSleep(why, cameraGestureTriggered);
Jorim Jaggid175b6c2015-05-27 15:39:09 -0700346 }
Jorim Jaggic0496072015-08-19 15:14:52 -0700347 mKeyguardState.interactiveState = INTERACTIVE_STATE_SLEEP;
Jim Miller5ecd8112013-01-09 18:50:26 -0800348 }
349
350 public void setKeyguardEnabled(boolean enabled) {
351 if (mKeyguardService != null) {
352 mKeyguardService.setKeyguardEnabled(enabled);
353 }
354 mKeyguardState.enabled = enabled;
355 }
356
Jim Miller5ecd8112013-01-09 18:50:26 -0800357 public void onSystemReady() {
358 if (mKeyguardService != null) {
359 mKeyguardService.onSystemReady();
360 } else {
Jim Miller5ecd8112013-01-09 18:50:26 -0800361 mKeyguardState.systemIsReady = true;
362 }
363 }
364
365 public void doKeyguardTimeout(Bundle options) {
366 if (mKeyguardService != null) {
367 mKeyguardService.doKeyguardTimeout(options);
368 }
369 }
370
Jim Miller5ecd8112013-01-09 18:50:26 -0800371 public void setCurrentUser(int newUserId) {
372 if (mKeyguardService != null) {
373 mKeyguardService.setCurrentUser(newUserId);
374 }
375 mKeyguardState.currentUser = newUserId;
376 }
377
Evan Rosky18396452016-07-27 15:19:37 -0700378 public void setSwitchingUser(boolean switching) {
379 if (mKeyguardService != null) {
380 mKeyguardService.setSwitchingUser(switching);
381 }
382 }
383
Jorim Jaggie29b2db2014-05-30 23:17:03 +0200384 public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
Jorim Jaggi0d674622014-05-21 01:34:15 +0200385 if (mKeyguardService != null) {
Jorim Jaggie29b2db2014-05-30 23:17:03 +0200386 mKeyguardService.startKeyguardExitAnimation(startTime, fadeoutDuration);
Jorim Jaggi0d674622014-05-21 01:34:15 +0200387 }
388 }
389
Jim Millere5f910a2013-10-16 18:15:46 -0700390 public void onBootCompleted() {
391 if (mKeyguardService != null) {
392 mKeyguardService.onBootCompleted();
393 }
394 mKeyguardState.bootCompleted = true;
395 }
396
Andrew Zengb4045d32017-03-16 17:25:07 -0700397 public void onShortPowerPressedGoHome() {
398 if (mKeyguardService != null) {
399 mKeyguardService.onShortPowerPressedGoHome();
400 }
401 }
402
Jorim Jaggi84dc08a2015-09-11 17:45:22 -0700403 public void dump(String prefix, PrintWriter pw) {
404 pw.println(prefix + TAG);
405 prefix += " ";
406 pw.println(prefix + "showing=" + mKeyguardState.showing);
407 pw.println(prefix + "showingAndNotOccluded=" + mKeyguardState.showingAndNotOccluded);
408 pw.println(prefix + "inputRestricted=" + mKeyguardState.inputRestricted);
409 pw.println(prefix + "occluded=" + mKeyguardState.occluded);
410 pw.println(prefix + "secure=" + mKeyguardState.secure);
411 pw.println(prefix + "dreaming=" + mKeyguardState.dreaming);
412 pw.println(prefix + "systemIsReady=" + mKeyguardState.systemIsReady);
413 pw.println(prefix + "deviceHasKeyguard=" + mKeyguardState.deviceHasKeyguard);
414 pw.println(prefix + "enabled=" + mKeyguardState.enabled);
415 pw.println(prefix + "offReason=" + mKeyguardState.offReason);
416 pw.println(prefix + "currentUser=" + mKeyguardState.currentUser);
417 pw.println(prefix + "bootCompleted=" + mKeyguardState.bootCompleted);
418 pw.println(prefix + "screenState=" + mKeyguardState.screenState);
419 pw.println(prefix + "interactiveState=" + mKeyguardState.interactiveState);
420 if (mKeyguardService != null) {
421 mKeyguardService.dump(prefix, pw);
422 }
423 }
Jim Miller5ecd8112013-01-09 18:50:26 -0800424}