summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2015-06-05 14:59:24 -0700
committerJorim Jaggi <jjaggi@google.com>2015-06-09 00:02:55 +0000
commit839697006511afa61ecd07747523180b513b9b70 (patch)
tree9293ba654019692abf1fb6e058a38cd5e79a4258 /packages/SystemUI
parent196597b7c09fce62276099292bb0e3d0572fe4a5 (diff)
downloadframeworks_base-839697006511afa61ecd07747523180b513b9b70.zip
frameworks_base-839697006511afa61ecd07747523180b513b9b70.tar.gz
frameworks_base-839697006511afa61ecd07747523180b513b9b70.tar.bz2
Only doze when not occluded
This fixes a bug where an activity could have been started on top of the lockscreen while dozing already. In that case, we would execute a pulse and reveal the fully colored activity that is occluding the Keyguard Bug: 19465785 Change-Id: I9533390e13f11424a20a107005d60050a460e333
Diffstat (limited to 'packages/SystemUI')
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeLog.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/doze/DozeService.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java23
4 files changed, 28 insertions, 17 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index 1f3a830..3f72125 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -82,11 +82,9 @@ public class DozeLog {
sNotificationPulseStats.append();
}
- public static void traceDozing(Context context, boolean dozing) {
- if (!ENABLED) return;
- sPulsing = false;
+ private static void init(Context context) {
synchronized (DozeLog.class) {
- if (dozing && sMessages == null) {
+ if (sMessages == null) {
sTimes = new long[SIZE];
sMessages = new String[SIZE];
sSince = System.currentTimeMillis();
@@ -105,6 +103,12 @@ public class DozeLog {
KeyguardUpdateMonitor.getInstance(context).registerCallback(sKeyguardCallback);
}
}
+ }
+
+ public static void traceDozing(Context context, boolean dozing) {
+ if (!ENABLED) return;
+ sPulsing = false;
+ init(context);
log("dozing " + dozing);
}
@@ -146,10 +150,12 @@ public class DozeLog {
}
}
- public static void traceProximityResult(boolean near, long millis, int pulseReason) {
+ public static void traceProximityResult(Context context, boolean near, long millis,
+ int pulseReason) {
if (!ENABLED) return;
log("proximityResult reason=" + pulseReasonToString(pulseReason) + " near=" + near
+ " millis=" + millis);
+ init(context);
sProxStats[pulseReason][near ? 0 : 1].append();
}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
index 8d27450..5d46712 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
@@ -235,7 +235,7 @@ public class DozeService extends DreamService {
public void onProximityResult(int result) {
final boolean isNear = result == RESULT_NEAR;
final long end = SystemClock.uptimeMillis();
- DozeLog.traceProximityResult(isNear, end - start, reason);
+ DozeLog.traceProximityResult(mContext, isNear, end - start, reason);
if (nonBlocking) {
// we already continued
return;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 39dc480..8c2c543 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -2112,7 +2112,9 @@ public class NotificationPanelView extends PanelView implements
public void setDozing(boolean dozing, boolean animate) {
if (dozing == mDozing) return;
mDozing = dozing;
- updateDozingVisibilities(animate);
+ if (mStatusBarState == StatusBarState.KEYGUARD) {
+ updateDozingVisibilities(animate);
+ }
}
private void updateDozingVisibilities(boolean animate) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index f1e51a5..516174b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -32,7 +32,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.IPackageManager;
-import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.ContentObserver;
@@ -412,6 +411,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
private boolean mWaitingForKeyguardExit;
private boolean mDozing;
+ private boolean mDozingRequested;
private boolean mScrimSrcModeEnabled;
private Interpolator mLinearInterpolator = new LinearInterpolator();
@@ -3478,9 +3478,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
private void updateDozingState() {
- if (mState != StatusBarState.KEYGUARD && !mNotificationPanel.isDozing()) {
- return;
- }
boolean animate = !mDozing && mDozeScrimController.isPulsing();
mNotificationPanel.setDozing(mDozing, animate);
mStackScroller.setDark(mDozing, animate, mScreenOnTouchLocation);
@@ -3597,6 +3594,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mState = state;
mGroupManager.setStatusBarState(state);
mStatusBarWindowManager.setStatusBarState(state);
+ updateDozing();
}
@Override
@@ -3912,6 +3910,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
}
+ private void updateDozing() {
+ mDozing = mDozingRequested && mState == StatusBarState.KEYGUARD;
+ updateDozingState();
+ }
+
private final class ShadeUpdates {
private final ArraySet<String> mVisibleNotifications = new ArraySet<String>();
private final ArraySet<String> mNewVisibleNotifications = new ArraySet<String>();
@@ -4017,10 +4020,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
private void handleStartDozing(@NonNull Runnable ready) {
- if (!mDozing) {
- mDozing = true;
+ if (!mDozingRequested) {
+ mDozingRequested = true;
DozeLog.traceDozing(mContext, mDozing);
- updateDozingState();
+ updateDozing();
}
ready.run();
}
@@ -4030,10 +4033,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
}
private void handleStopDozing() {
- if (mDozing) {
- mDozing = false;
+ if (mDozingRequested) {
+ mDozingRequested = false;
DozeLog.traceDozing(mContext, mDozing);
- updateDozingState();
+ updateDozing();
}
}