Merge "AOD: When prox covered disable touch during pulse instead of aborting" into oc-dr1-dev

This commit is contained in:
Adrian Roos
2017-07-31 12:29:44 +00:00
committed by Android (Google) Code Review
7 changed files with 42 additions and 6 deletions

View File

@@ -44,6 +44,8 @@ public interface DozeHost {
void setDozeScreenBrightness(int value); void setDozeScreenBrightness(int value);
void onIgnoreTouchWhilePulsing(boolean ignore);
interface Callback { interface Callback {
default void onNotificationHeadsUp() {} default void onNotificationHeadsUp() {}
default void onPowerSaveChanged(boolean active) {} default void onPowerSaveChanged(boolean active) {}

View File

@@ -164,6 +164,11 @@ public class DozeLog {
} }
} }
public static void traceState(DozeMachine.State state) {
if (!ENABLED) return;
log("state " + state);
}
public static void traceProximityResult(Context context, boolean near, long millis, public static void traceProximityResult(Context context, boolean near, long millis,
int pulseReason) { int pulseReason) {
if (!ENABLED) return; if (!ENABLED) return;
@@ -233,10 +238,10 @@ public class DozeLog {
+ state + " blocked=" + blocked); + state + " blocked=" + blocked);
} }
public static void tracePulseCanceledByProx(Context context) { public static void tracePulseTouchDisabledByProx(Context context, boolean disabled) {
if (!ENABLED) return; if (!ENABLED) return;
init(context); init(context);
log("pulseCanceledByProx"); log("pulseTouchDisabledByProx " + disabled);
} }
public static void setRegisterKeyguardCallback(boolean registerKeyguardCallback) { public static void setRegisterKeyguardCallback(boolean registerKeyguardCallback) {

View File

@@ -17,6 +17,7 @@
package com.android.systemui.doze; package com.android.systemui.doze;
import android.annotation.MainThread; import android.annotation.MainThread;
import android.os.Trace;
import android.os.UserHandle; import android.os.UserHandle;
import android.util.Log; import android.util.Log;
import android.view.Display; import android.view.Display;
@@ -225,6 +226,9 @@ public class DozeMachine {
State oldState = mState; State oldState = mState;
mState = newState; mState = newState;
DozeLog.traceState(newState);
Trace.traceCounter(Trace.TRACE_TAG_APP, "doze_machine_state", newState.ordinal());
updatePulseReason(newState, oldState, pulseReason); updatePulseReason(newState, oldState, pulseReason);
performTransitionOnComponents(oldState, newState); performTransitionOnComponents(oldState, newState);
updateWakeLockState(newState); updateWakeLockState(newState);

View File

@@ -162,10 +162,10 @@ public class DozeTriggers implements DozeMachine.Part {
final boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING); final boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
final boolean aod = (state == DozeMachine.State.DOZE_AOD); final boolean aod = (state == DozeMachine.State.DOZE_AOD);
if (near && state == DozeMachine.State.DOZE_PULSING) { if (state == DozeMachine.State.DOZE_PULSING) {
if (DEBUG) Log.i(TAG, "Prox NEAR, ending pulse"); boolean ignoreTouch = near;
DozeLog.tracePulseCanceledByProx(mContext); if (DEBUG) Log.i(TAG, "Prox changed, ignore touch = " + ignoreTouch);
mMachine.requestState(DozeMachine.State.DOZE_PULSE_DONE); mDozeHost.onIgnoreTouchWhilePulsing(ignoreTouch);
} }
if (far && (paused || pausing)) { if (far && (paused || pausing)) {
if (DEBUG) Log.i(TAG, "Prox FAR, unpausing AOD"); if (DEBUG) Log.i(TAG, "Prox FAR, unpausing AOD");

View File

@@ -5384,6 +5384,7 @@ public class StatusBar extends SystemUI implements DemoMode,
private final class DozeServiceHost implements DozeHost { private final class DozeServiceHost implements DozeHost {
private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>(); private final ArrayList<Callback> mCallbacks = new ArrayList<Callback>();
private boolean mAnimateWakeup; private boolean mAnimateWakeup;
private boolean mIgnoreTouchWhilePulsing;
@Override @Override
public String toString() { public String toString() {
@@ -5454,6 +5455,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mStackScroller.setPulsing(pulsing); mStackScroller.setPulsing(pulsing);
mNotificationPanel.setPulsing(pulsing != null); mNotificationPanel.setPulsing(pulsing != null);
mVisualStabilityManager.setPulsing(pulsing != null); mVisualStabilityManager.setPulsing(pulsing != null);
mIgnoreTouchWhilePulsing = false;
} }
}, reason); }, reason);
} }
@@ -5467,6 +5469,17 @@ public class StatusBar extends SystemUI implements DemoMode,
} }
} }
@Override
public void onIgnoreTouchWhilePulsing(boolean ignore) {
if (ignore != mIgnoreTouchWhilePulsing) {
DozeLog.tracePulseTouchDisabledByProx(mContext, ignore);
}
mIgnoreTouchWhilePulsing = ignore;
if (isDozing() && ignore) {
mStatusBarWindow.cancelCurrentTouch();
}
}
@Override @Override
public void dozeTimeTick() { public void dozeTimeTick() {
mNotificationPanel.refreshTime(); mNotificationPanel.refreshTime();
@@ -5564,6 +5577,10 @@ public class StatusBar extends SystemUI implements DemoMode,
} }
} }
public boolean shouldIgnoreTouch() {
return isDozing() && mDozeServiceHost.mIgnoreTouchWhilePulsing;
}
// Begin Extra BaseStatusBar methods. // Begin Extra BaseStatusBar methods.
protected CommandQueue mCommandQueue; protected CommandQueue mCommandQueue;

View File

@@ -249,6 +249,10 @@ public class StatusBarWindowView extends FrameLayout {
@Override @Override
public boolean dispatchTouchEvent(MotionEvent ev) { public boolean dispatchTouchEvent(MotionEvent ev) {
boolean isDown = ev.getActionMasked() == MotionEvent.ACTION_DOWN; boolean isDown = ev.getActionMasked() == MotionEvent.ACTION_DOWN;
boolean isCancel = ev.getActionMasked() == MotionEvent.ACTION_CANCEL;
if (!isCancel && mService.shouldIgnoreTouch()) {
return false;
}
if (isDown && mNotificationPanel.isFullyCollapsed()) { if (isDown && mNotificationPanel.isFullyCollapsed()) {
mNotificationPanel.startExpandLatencyTracking(); mNotificationPanel.startExpandLatencyTracking();
} }

View File

@@ -86,6 +86,10 @@ class DozeHostFake implements DozeHost {
throw new RuntimeException("not implemented"); throw new RuntimeException("not implemented");
} }
@Override
public void onIgnoreTouchWhilePulsing(boolean ignore) {
}
@Override @Override
public void abortPulsing() { public void abortPulsing() {
pulseAborted = true; pulseAborted = true;