blob: 6369d5e57f67506311c26fa53ae7e1916c89500f [file] [log] [blame]
Jorim Jaggi5cf17872014-03-26 18:31:48 +01001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
15 */
16
17package com.android.systemui.statusbar.phone;
18
Jorim Jaggi786afcb2014-09-25 02:41:29 +020019import android.content.ComponentCallbacks2;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010020import android.content.Context;
21import android.os.Bundle;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010022import android.os.RemoteException;
Jorim Jaggie29b2db2014-05-30 23:17:03 +020023import android.os.SystemClock;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010024import android.util.Slog;
Jorim Jaggidf993512014-05-13 23:06:35 +020025import android.view.KeyEvent;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010026import android.view.View;
27import android.view.ViewGroup;
Jorim Jaggi786afcb2014-09-25 02:41:29 +020028import android.view.WindowManagerGlobal;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010029
30import com.android.internal.policy.IKeyguardShowCallback;
31import com.android.internal.widget.LockPatternUtils;
Adrian Roosb6011622014-05-14 15:52:53 +020032import com.android.keyguard.KeyguardUpdateMonitor;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010033import com.android.keyguard.ViewMediatorCallback;
Jim Miller25d7e512015-03-03 17:12:09 -080034import com.android.systemui.statusbar.CommandQueue;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010035
Jorim Jaggi6b88cdf2014-12-22 20:56:50 +010036import static com.android.keyguard.KeyguardHostView.OnDismissAction;
Adrian Roos7d7090d2014-05-21 13:10:23 +020037
Jorim Jaggi5cf17872014-03-26 18:31:48 +010038/**
39 * Manages creating, showing, hiding and resetting the keyguard within the status bar. Calls back
40 * via {@link ViewMediatorCallback} to poke the wake lock and report that the keyguard is done,
41 * which is in turn, reported to this class by the current
42 * {@link com.android.keyguard.KeyguardViewBase}.
43 */
44public class StatusBarKeyguardViewManager {
Jorim Jaggi76a16232014-08-08 17:00:47 +020045
46 // When hiding the Keyguard with timing supplied from WindowManager, better be early than late.
47 private static final long HIDE_TIMING_CORRECTION_MS = -3 * 16;
48
Jorim Jaggi416493b2014-09-13 03:57:32 +020049 // Delay for showing the navigation bar when the bouncer appears. This should be kept in sync
50 // with the appear animations of the PIN/pattern/password views.
51 private static final long NAV_BAR_SHOW_DELAY_BOUNCER = 320;
52
Jorim Jaggi5cf17872014-03-26 18:31:48 +010053 private static String TAG = "StatusBarKeyguardViewManager";
54
55 private final Context mContext;
56
57 private LockPatternUtils mLockPatternUtils;
58 private ViewMediatorCallback mViewMediatorCallback;
59 private PhoneStatusBar mPhoneStatusBar;
Jorim Jaggiecc798e2014-05-26 18:14:37 +020060 private ScrimController mScrimController;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010061
Jorim Jaggi5cf17872014-03-26 18:31:48 +010062 private ViewGroup mContainer;
63 private StatusBarWindowManager mStatusBarWindowManager;
64
65 private boolean mScreenOn = false;
Jorim Jaggi03c701e2014-04-02 12:39:51 +020066 private KeyguardBouncer mBouncer;
67 private boolean mShowing;
Jorim Jaggia6310292014-04-16 14:11:52 +020068 private boolean mOccluded;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010069
Adrian Roosb6011622014-05-14 15:52:53 +020070 private boolean mFirstUpdate = true;
71 private boolean mLastShowing;
72 private boolean mLastOccluded;
73 private boolean mLastBouncerShowing;
74 private boolean mLastBouncerDismissible;
Jorim Jaggi746f7fa2014-08-27 17:52:46 +020075 private OnDismissAction mAfterKeyguardGoneAction;
Adrian Roosb6011622014-05-14 15:52:53 +020076
Jorim Jaggi5cf17872014-03-26 18:31:48 +010077 public StatusBarKeyguardViewManager(Context context, ViewMediatorCallback callback,
78 LockPatternUtils lockPatternUtils) {
79 mContext = context;
80 mViewMediatorCallback = callback;
81 mLockPatternUtils = lockPatternUtils;
Jorim Jaggi5cf17872014-03-26 18:31:48 +010082 }
83
84 public void registerStatusBar(PhoneStatusBar phoneStatusBar,
Jorim Jaggiecc798e2014-05-26 18:14:37 +020085 ViewGroup container, StatusBarWindowManager statusBarWindowManager,
86 ScrimController scrimController) {
Jorim Jaggi5cf17872014-03-26 18:31:48 +010087 mPhoneStatusBar = phoneStatusBar;
88 mContainer = container;
89 mStatusBarWindowManager = statusBarWindowManager;
Jorim Jaggiecc798e2014-05-26 18:14:37 +020090 mScrimController = scrimController;
Jorim Jaggi03c701e2014-04-02 12:39:51 +020091 mBouncer = new KeyguardBouncer(mContext, mViewMediatorCallback, mLockPatternUtils,
92 mStatusBarWindowManager, container);
Jorim Jaggi5cf17872014-03-26 18:31:48 +010093 }
94
95 /**
96 * Show the keyguard. Will handle creating and attaching to the view manager
97 * lazily.
98 */
99 public void show(Bundle options) {
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200100 mShowing = true;
Jorim Jaggicff0acb2014-03-31 16:35:15 +0200101 mStatusBarWindowManager.setKeyguardShowing(true);
Jorim Jaggi43bdbbd2014-05-09 16:05:53 +0200102 reset();
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100103 }
104
Jorim Jaggia005f1b2014-04-16 19:06:10 +0200105 /**
106 * Shows the notification keyguard or the bouncer depending on
107 * {@link KeyguardBouncer#needsFullscreenBouncer()}.
108 */
109 private void showBouncerOrKeyguard() {
110 if (mBouncer.needsFullscreenBouncer()) {
111
112 // The keyguard might be showing (already). So we need to hide it.
113 mPhoneStatusBar.hideKeyguard();
Jorim Jaggi95e89ca2014-11-24 20:12:50 +0100114 mBouncer.show(true /* resetSecuritySelection */);
Jorim Jaggia005f1b2014-04-16 19:06:10 +0200115 } else {
116 mPhoneStatusBar.showKeyguard();
Jorim Jaggia0be6d52014-05-26 03:01:13 +0200117 mBouncer.hide(false /* destroyView */);
Jorim Jaggi2fbad7b2014-05-26 22:38:00 +0200118 mBouncer.prepare();
Jorim Jaggia005f1b2014-04-16 19:06:10 +0200119 }
120 }
121
Jorim Jaggi4222d9a2014-04-23 16:13:15 +0200122 private void showBouncer() {
Adrian Roos0002a452014-07-03 13:46:07 +0200123 if (mShowing) {
Jorim Jaggi95e89ca2014-11-24 20:12:50 +0100124 mBouncer.show(false /* resetSecuritySelection */);
Dan Sandler3806c772014-05-08 14:52:10 -0400125 }
Jorim Jaggi4222d9a2014-04-23 16:13:15 +0200126 updateStates();
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100127 }
128
Jorim Jaggi746f7fa2014-08-27 17:52:46 +0200129 public void dismissWithAction(OnDismissAction r, boolean afterKeyguardGone) {
Adrian Roos0002a452014-07-03 13:46:07 +0200130 if (mShowing) {
Jorim Jaggi746f7fa2014-08-27 17:52:46 +0200131 if (!afterKeyguardGone) {
132 mBouncer.showWithDismissAction(r);
133 } else {
Jorim Jaggi95e89ca2014-11-24 20:12:50 +0100134 mBouncer.show(false /* resetSecuritySelection */);
Jorim Jaggi746f7fa2014-08-27 17:52:46 +0200135 mAfterKeyguardGoneAction = r;
136 }
Adrian Roos7d7090d2014-05-21 13:10:23 +0200137 }
138 updateStates();
139 }
140
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100141 /**
142 * Reset the state of the view.
143 */
144 public void reset() {
Jorim Jaggi43bdbbd2014-05-09 16:05:53 +0200145 if (mShowing) {
146 if (mOccluded) {
147 mPhoneStatusBar.hideKeyguard();
Jorim Jaggia0be6d52014-05-26 03:01:13 +0200148 mBouncer.hide(false /* destroyView */);
Jorim Jaggi43bdbbd2014-05-09 16:05:53 +0200149 } else {
150 showBouncerOrKeyguard();
151 }
152 updateStates();
Dan Sandler3806c772014-05-08 14:52:10 -0400153 }
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100154 }
155
156 public void onScreenTurnedOff() {
157 mScreenOn = false;
Jorim Jaggi75c95042014-05-16 19:09:59 +0200158 mPhoneStatusBar.onScreenTurnedOff();
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200159 mBouncer.onScreenTurnedOff();
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100160 }
161
162 public void onScreenTurnedOn(final IKeyguardShowCallback callback) {
163 mScreenOn = true;
Jorim Jaggi75c95042014-05-16 19:09:59 +0200164 mPhoneStatusBar.onScreenTurnedOn();
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200165 if (callback != null) {
166 callbackAfterDraw(callback);
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100167 }
168 }
169
170 private void callbackAfterDraw(final IKeyguardShowCallback callback) {
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200171 mContainer.post(new Runnable() {
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100172 @Override
173 public void run() {
174 try {
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200175 callback.onShown(mContainer.getWindowToken());
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100176 } catch (RemoteException e) {
177 Slog.w(TAG, "Exception calling onShown():", e);
178 }
179 }
180 });
181 }
182
183 public void verifyUnlock() {
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200184 dismiss();
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100185 }
186
187 public void setNeedsInput(boolean needsInput) {
Jorim Jaggicff0acb2014-03-31 16:35:15 +0200188 mStatusBarWindowManager.setKeyguardNeedsInput(needsInput);
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100189 }
190
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100191 public void setOccluded(boolean occluded) {
Selim Cinekbaa23272014-07-08 18:01:07 +0200192 if (occluded && !mOccluded && mShowing) {
193 if (mPhoneStatusBar.isInLaunchTransition()) {
194 mOccluded = true;
195 mPhoneStatusBar.fadeKeyguardAfterLaunchTransition(null /* beforeFading */,
196 new Runnable() {
197 @Override
198 public void run() {
Jorim Jaggi826730a2014-12-08 21:05:13 +0100199 mStatusBarWindowManager.setKeyguardOccluded(mOccluded);
Jorim Jaggifbc88e12014-08-14 23:38:15 +0200200 reset();
Selim Cinekbaa23272014-07-08 18:01:07 +0200201 }
202 });
203 return;
204 }
205 }
Jorim Jaggia6310292014-04-16 14:11:52 +0200206 mOccluded = occluded;
Jorim Jaggicff0acb2014-03-31 16:35:15 +0200207 mStatusBarWindowManager.setKeyguardOccluded(occluded);
Dan Sandler3806c772014-05-08 14:52:10 -0400208 reset();
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100209 }
210
Dan Sandler4b22bdf2014-06-05 00:58:02 -0400211 public boolean isOccluded() {
212 return mOccluded;
213 }
214
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100215 /**
Jorim Jaggi76a16232014-08-08 17:00:47 +0200216 * Starts the animation before we dismiss Keyguard, i.e. an disappearing animation on the
217 * security view of the bouncer.
218 *
Jorim Jaggi8de4311c2014-08-11 22:36:20 +0200219 * @param finishRunnable the runnable to be run after the animation finished, or {@code null} if
220 * no action should be run
Jorim Jaggi76a16232014-08-08 17:00:47 +0200221 */
222 public void startPreHideAnimation(Runnable finishRunnable) {
223 if (mBouncer.isShowing()) {
224 mBouncer.startPreHideAnimation(finishRunnable);
Jorim Jaggi8de4311c2014-08-11 22:36:20 +0200225 } else if (finishRunnable != null) {
Jorim Jaggi76a16232014-08-08 17:00:47 +0200226 finishRunnable.run();
227 }
228 }
229
230 /**
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100231 * Hides the keyguard view
232 */
Selim Cinekbaa23272014-07-08 18:01:07 +0200233 public void hide(long startTime, final long fadeoutDuration) {
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200234 mShowing = false;
Jorim Jaggi44cf9192014-06-17 19:16:00 -0700235
Jorim Jaggie29b2db2014-05-30 23:17:03 +0200236 long uptimeMillis = SystemClock.uptimeMillis();
Jorim Jaggi76a16232014-08-08 17:00:47 +0200237 long delay = Math.max(0, startTime + HIDE_TIMING_CORRECTION_MS - uptimeMillis);
Selim Cinekbaa23272014-07-08 18:01:07 +0200238
239 if (mPhoneStatusBar.isInLaunchTransition() ) {
240 mPhoneStatusBar.fadeKeyguardAfterLaunchTransition(new Runnable() {
241 @Override
242 public void run() {
243 mStatusBarWindowManager.setKeyguardShowing(false);
244 mStatusBarWindowManager.setKeyguardFadingAway(true);
Jorim Jaggi76a16232014-08-08 17:00:47 +0200245 mBouncer.hide(true /* destroyView */);
Selim Cinekbaa23272014-07-08 18:01:07 +0200246 updateStates();
247 mScrimController.animateKeyguardFadingOut(
248 PhoneStatusBar.FADE_KEYGUARD_START_DELAY,
249 PhoneStatusBar.FADE_KEYGUARD_DURATION, null);
250 }
251 }, new Runnable() {
252 @Override
253 public void run() {
254 mPhoneStatusBar.hideKeyguard();
255 mStatusBarWindowManager.setKeyguardFadingAway(false);
256 mViewMediatorCallback.keyguardGone();
Jorim Jaggi746f7fa2014-08-27 17:52:46 +0200257 executeAfterKeyguardGoneAction();
Selim Cinekbaa23272014-07-08 18:01:07 +0200258 }
259 });
260 } else {
Jorim Jaggi33ae80e2015-02-04 16:37:11 +0100261 mPhoneStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
Jorim Jaggidbc3dce2014-08-01 01:16:36 +0200262 boolean staying = mPhoneStatusBar.hideKeyguard();
263 if (!staying) {
264 mStatusBarWindowManager.setKeyguardFadingAway(true);
265 mScrimController.animateKeyguardFadingOut(delay, fadeoutDuration, new Runnable() {
266 @Override
267 public void run() {
268 mStatusBarWindowManager.setKeyguardFadingAway(false);
269 mPhoneStatusBar.finishKeyguardFadingAway();
Jorim Jaggi786afcb2014-09-25 02:41:29 +0200270 WindowManagerGlobal.getInstance().trimMemory(
271 ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN);
Jorim Jaggidbc3dce2014-08-01 01:16:36 +0200272 }
273 });
274 } else {
275 mScrimController.animateGoingToFullShade(delay, fadeoutDuration);
276 mPhoneStatusBar.finishKeyguardFadingAway();
277 }
Selim Cinekbaa23272014-07-08 18:01:07 +0200278 mStatusBarWindowManager.setKeyguardShowing(false);
Jorim Jaggi76a16232014-08-08 17:00:47 +0200279 mBouncer.hide(true /* destroyView */);
Selim Cinekbaa23272014-07-08 18:01:07 +0200280 mViewMediatorCallback.keyguardGone();
Jorim Jaggi746f7fa2014-08-27 17:52:46 +0200281 executeAfterKeyguardGoneAction();
Selim Cinekbaa23272014-07-08 18:01:07 +0200282 updateStates();
Jorim Jaggie29b2db2014-05-30 23:17:03 +0200283 }
Jorim Jaggi44cf9192014-06-17 19:16:00 -0700284
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100285 }
286
Jorim Jaggi746f7fa2014-08-27 17:52:46 +0200287 private void executeAfterKeyguardGoneAction() {
288 if (mAfterKeyguardGoneAction != null) {
289 mAfterKeyguardGoneAction.onDismiss();
290 mAfterKeyguardGoneAction = null;
291 }
292 }
293
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100294 /**
295 * Dismisses the keyguard by going to the next screen or making it gone.
296 */
297 public void dismiss() {
298 if (mScreenOn) {
Jorim Jaggi0bed7f22014-04-03 16:12:54 +0200299 showBouncer();
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100300 }
301 }
302
Christoph Studer2231c6e2014-12-19 12:40:13 +0100303 /**
304 * WARNING: This method might cause Binder calls.
305 */
Jorim Jaggi15682502014-04-23 12:01:36 +0200306 public boolean isSecure() {
307 return mBouncer.isSecure();
308 }
309
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100310 /**
311 * @return Whether the keyguard is showing
312 */
313 public boolean isShowing() {
Jorim Jaggi03c701e2014-04-02 12:39:51 +0200314 return mShowing;
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100315 }
Jorim Jaggie5c7a892014-04-10 20:37:32 +0200316
317 /**
318 * Notifies this manager that the back button has been pressed.
319 *
320 * @return whether the back press has been handled
321 */
322 public boolean onBackPressed() {
323 if (mBouncer.isShowing()) {
Jorim Jaggi6bad2442014-08-26 15:16:57 +0200324 reset();
Jorim Jaggie5c7a892014-04-10 20:37:32 +0200325 return true;
326 }
327 return false;
328 }
329
Jim Millerf41fc962014-06-18 16:33:51 -0700330 public boolean isBouncerShowing() {
331 return mBouncer.isShowing();
332 }
333
Jorim Jaggi416493b2014-09-13 03:57:32 +0200334 private long getNavBarShowDelay() {
335 if (mPhoneStatusBar.isKeyguardFadingAway()) {
336 return mPhoneStatusBar.getKeyguardFadingAwayDelay();
337 } else {
338
339 // Keyguard is not going away, thus we are showing the navigation bar because the
340 // bouncer is appearing.
341 return NAV_BAR_SHOW_DELAY_BOUNCER;
342 }
343 }
344
345 private Runnable mMakeNavigationBarVisibleRunnable = new Runnable() {
346 @Override
347 public void run() {
348 mPhoneStatusBar.getNavigationBarView().setVisibility(View.VISIBLE);
349 }
350 };
351
Jorim Jaggi4222d9a2014-04-23 16:13:15 +0200352 private void updateStates() {
Jorim Jaggie5c7a892014-04-10 20:37:32 +0200353 int vis = mContainer.getSystemUiVisibility();
Adrian Roosb6011622014-05-14 15:52:53 +0200354 boolean showing = mShowing;
355 boolean occluded = mOccluded;
356 boolean bouncerShowing = mBouncer.isShowing();
Jorim Jaggi95e89ca2014-11-24 20:12:50 +0100357 boolean bouncerDismissible = !mBouncer.isFullscreenBouncer();
Adrian Roosb6011622014-05-14 15:52:53 +0200358
359 if ((bouncerDismissible || !showing) != (mLastBouncerDismissible || !mLastShowing)
360 || mFirstUpdate) {
361 if (bouncerDismissible || !showing) {
362 mContainer.setSystemUiVisibility(vis & ~View.STATUS_BAR_DISABLE_BACK);
Jason Monk1e68fb32014-05-02 16:06:20 -0400363 } else {
Adrian Roosb6011622014-05-14 15:52:53 +0200364 mContainer.setSystemUiVisibility(vis | View.STATUS_BAR_DISABLE_BACK);
Jason Monk1e68fb32014-05-02 16:06:20 -0400365 }
Jorim Jaggia6310292014-04-16 14:11:52 +0200366 }
Adrian Roosb6011622014-05-14 15:52:53 +0200367 if ((!(showing && !occluded) || bouncerShowing)
368 != (!(mLastShowing && !mLastOccluded) || mLastBouncerShowing) || mFirstUpdate) {
369 if (mPhoneStatusBar.getNavigationBarView() != null) {
370 if (!(showing && !occluded) || bouncerShowing) {
Jorim Jaggi416493b2014-09-13 03:57:32 +0200371 mContainer.postOnAnimationDelayed(mMakeNavigationBarVisibleRunnable,
372 getNavBarShowDelay());
Adrian Roosb6011622014-05-14 15:52:53 +0200373 } else {
Jorim Jaggi416493b2014-09-13 03:57:32 +0200374 mContainer.removeCallbacks(mMakeNavigationBarVisibleRunnable);
Adrian Roosb6011622014-05-14 15:52:53 +0200375 mPhoneStatusBar.getNavigationBarView().setVisibility(View.GONE);
376 }
377 }
378 }
379
380 if (bouncerShowing != mLastBouncerShowing || mFirstUpdate) {
381 mStatusBarWindowManager.setBouncerShowing(bouncerShowing);
382 mPhoneStatusBar.setBouncerShowing(bouncerShowing);
Jorim Jaggiecc798e2014-05-26 18:14:37 +0200383 mScrimController.setBouncerShowing(bouncerShowing);
Adrian Roosb6011622014-05-14 15:52:53 +0200384 }
385
386 KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
387 if ((showing && !occluded) != (mLastShowing && !mLastOccluded) || mFirstUpdate) {
388 updateMonitor.sendKeyguardVisibilityChanged(showing && !occluded);
389 }
390 if (bouncerShowing != mLastBouncerShowing || mFirstUpdate) {
391 updateMonitor.sendKeyguardBouncerChanged(bouncerShowing);
392 }
393
394 mFirstUpdate = false;
395 mLastShowing = showing;
396 mLastOccluded = occluded;
397 mLastBouncerShowing = bouncerShowing;
398 mLastBouncerDismissible = bouncerDismissible;
Christoph Studer2231c6e2014-12-19 12:40:13 +0100399
400 mPhoneStatusBar.onKeyguardViewManagerStatesUpdated();
Jorim Jaggie5c7a892014-04-10 20:37:32 +0200401 }
Jorim Jaggi8c8bcc12014-04-16 21:36:51 +0200402
403 public boolean onMenuPressed() {
404 return mBouncer.onMenuPressed();
405 }
Jorim Jaggidf993512014-05-13 23:06:35 +0200406
407 public boolean interceptMediaKey(KeyEvent event) {
408 return mBouncer.interceptMediaKey(event);
409 }
Jorim Jaggi8de4311c2014-08-11 22:36:20 +0200410
411 public void onActivityDrawn() {
412 if (mPhoneStatusBar.isCollapsing()) {
413 mPhoneStatusBar.addPostCollapseAction(new Runnable() {
414 @Override
415 public void run() {
416 mViewMediatorCallback.readyForKeyguardDone();
417 }
418 });
419 } else {
420 mViewMediatorCallback.readyForKeyguardDone();
421 }
422 }
Jorim Jaggi84a3e7a2014-08-13 17:58:58 +0200423
424 public boolean shouldDisableWindowAnimationsForUnlock() {
425 return mPhoneStatusBar.isInLaunchTransition();
426 }
427
428 public boolean isGoingToNotificationShade() {
429 return mPhoneStatusBar.isGoingToNotificationShade();
430 }
Adrian Roos31b844b2014-11-21 13:55:09 +0100431
432 public boolean isSecure(int userId) {
433 return mBouncer.isSecure() || mLockPatternUtils.isSecure(userId);
434 }
Jim Millerab954542014-10-10 18:21:49 -0700435
436 public boolean isInputRestricted() {
437 return mViewMediatorCallback.isInputRestricted();
438 }
Jorim Jaggi33ae80e2015-02-04 16:37:11 +0100439
440 public void keyguardGoingAway() {
441 mPhoneStatusBar.keyguardGoingAway();
442 }
Jim Miller25d7e512015-03-03 17:12:09 -0800443
444 public void animateCollapsePanels() {
445 mPhoneStatusBar.animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, true /* force */);
446 }
Jorim Jaggi5cf17872014-03-26 18:31:48 +0100447}