summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2014-12-15 22:41:50 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-15 22:41:50 +0000
commit4800de0f7ce810f57db4259a6f6a7d02484800ea (patch)
tree74f660f9b68151ad3e2afc66fb7fde6cfd29f60d /policy
parent3e8484c3f7f615c4b3f1cb925c4164d513cc0e97 (diff)
parent93c736b3daa9b715814dd20892c1f41b5348f575 (diff)
downloadframeworks_base-4800de0f7ce810f57db4259a6f6a7d02484800ea.zip
frameworks_base-4800de0f7ce810f57db4259a6f6a7d02484800ea.tar.gz
frameworks_base-4800de0f7ce810f57db4259a6f6a7d02484800ea.tar.bz2
am 93c736b3: am 613fffcd: Merge "Revert "Revert "Attempt to fix keyguard missing bug""" into lmp-mr1-dev
* commit '93c736b3daa9b715814dd20892c1f41b5348f575': Revert "Revert "Attempt to fix keyguard missing bug""
Diffstat (limited to 'policy')
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindowManager.java1
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java20
2 files changed, 14 insertions, 7 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index f70c7a8..85c80ee 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -2165,7 +2165,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
mStatusBar = win;
mStatusBarController.setWindow(win);
- mKeyguardDelegate.hideScrim();
break;
case TYPE_NAVIGATION_BAR:
mContext.enforceCallingOrSelfPermission(
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java
index 618ba1e..6e8f550 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardServiceDelegate.java
@@ -37,6 +37,7 @@ public class KeyguardServiceDelegate {
private final Context mContext;
private final View mScrim; // shown if keyguard crashes
private final KeyguardState mKeyguardState = new KeyguardState();
+ private ShowListener mShowListenerWhenConnect;
/* package */ static final class KeyguardState {
KeyguardState() {
@@ -46,6 +47,7 @@ public class KeyguardServiceDelegate {
showing = true;
showingAndNotOccluded = true;
secure = true;
+ deviceHasKeyguard = true;
}
boolean showing;
boolean showingAndNotOccluded;
@@ -54,6 +56,7 @@ public class KeyguardServiceDelegate {
boolean secure;
boolean dreaming;
boolean systemIsReady;
+ boolean deviceHasKeyguard;
public boolean enabled;
public boolean dismissable;
public int offReason;
@@ -111,10 +114,12 @@ public class KeyguardServiceDelegate {
intent.setClassName(KEYGUARD_PACKAGE, KEYGUARD_CLASS);
if (!context.bindServiceAsUser(intent, mKeyguardConnection,
Context.BIND_AUTO_CREATE, UserHandle.OWNER)) {
- if (DEBUG) Log.v(TAG, "*** Keyguard: can't bind to " + KEYGUARD_CLASS);
+ Log.v(TAG, "*** Keyguard: can't bind to " + KEYGUARD_CLASS);
mKeyguardState.showing = false;
mKeyguardState.showingAndNotOccluded = false;
mKeyguardState.secure = false;
+ mKeyguardState.deviceHasKeyguard = false;
+ hideScrim();
} else {
if (DEBUG) Log.v(TAG, "*** Keyguard started");
}
@@ -130,7 +135,9 @@ public class KeyguardServiceDelegate {
// If the system is ready, it means keyguard crashed and restarted.
mKeyguardService.onSystemReady();
// This is used to hide the scrim once keyguard displays.
- mKeyguardService.onScreenTurnedOn(new KeyguardShowDelegate(null));
+ mKeyguardService.onScreenTurnedOn(new KeyguardShowDelegate(
+ mShowListenerWhenConnect));
+ mShowListenerWhenConnect = null;
}
if (mKeyguardState.bootCompleted) {
mKeyguardService.onBootCompleted();
@@ -212,9 +219,10 @@ public class KeyguardServiceDelegate {
} else {
// try again when we establish a connection
Slog.w(TAG, "onScreenTurnedOn(): no keyguard service!");
- // This shouldn't happen, but if it does, invoke the listener immediately
- // to avoid a dark screen...
- showListener.onShown(null);
+ // This shouldn't happen, but if it does, show the scrim immediately and
+ // invoke the listener's callback after the service actually connects.
+ mShowListenerWhenConnect = showListener;
+ showScrim();
}
mKeyguardState.screenIsOn = true;
}
@@ -280,7 +288,6 @@ public class KeyguardServiceDelegate {
lp.setTitle("KeyguardScrim");
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
wm.addView(view, lp);
- view.setVisibility(View.GONE);
// Disable pretty much everything in statusbar until keyguard comes back and we know
// the state of the world.
view.setSystemUiVisibility(View.STATUS_BAR_DISABLE_HOME
@@ -292,6 +299,7 @@ public class KeyguardServiceDelegate {
}
public void showScrim() {
+ if (!mKeyguardState.deviceHasKeyguard) return;
mScrim.post(new Runnable() {
@Override
public void run() {