summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-07-24 02:22:41 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-07-24 02:22:41 +0000
commit05c1c7a8186e763efcd680be2c681b45783b305b (patch)
tree88e3a34de104269308c4493fa589f1d42835365c
parenta6ef24edd1b45a222a35377b6e4886dce900f859 (diff)
parent1834518223093424445c67be8b96bc75259be49c (diff)
downloadbase-05c1c7a8186e763efcd680be2c681b45783b305b.tar.gz
Merge cherrypicks of [8738218, 8738219, 8738140, 8736270, 8736271, 8736272, 8732114, 8738495, 8738319, 8736743, 8738320, 8738496] into qt-release
Change-Id: I479905f5a00d08a1db761bbf2c45c729ff241363
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java6
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java66
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java9
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java18
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java3
-rw-r--r--services/core/java/com/android/server/wm/ScreenRotationAnimation.java1
9 files changed, 93 insertions, 28 deletions
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
index 28d5402bf707..52ec1f0bb330 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
@@ -30,7 +30,7 @@ import java.io.PrintWriter;
*/
@ProvidesInterface(version = FalsingManager.VERSION)
public interface FalsingManager {
- int VERSION = 1;
+ int VERSION = 2;
void onSucccessfulUnlock();
@@ -103,4 +103,6 @@ public interface FalsingManager {
void onTouchEvent(MotionEvent ev, int width, int height);
void dump(PrintWriter pw);
+
+ void cleanup();
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
index b1cba53c4bca..fee2c9b2505a 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
@@ -540,6 +540,9 @@ public class KeyguardClockSwitch extends RelativeLayout {
@Override
public Animator onAppear(ViewGroup sceneRoot, View view, TransitionValues startValues,
TransitionValues endValues) {
+ if (!sceneRoot.isShown()) {
+ return null;
+ }
final float cutoff = mCutoff;
final int startVisibility = View.INVISIBLE;
final int endVisibility = (int) endValues.values.get(PROPNAME_VISIBILITY);
@@ -552,6 +555,9 @@ public class KeyguardClockSwitch extends RelativeLayout {
@Override
public Animator onDisappear(ViewGroup sceneRoot, View view, TransitionValues startValues,
TransitionValues endValues) {
+ if (!sceneRoot.isShown()) {
+ return null;
+ }
final float cutoff = 1f - mCutoff;
final int startVisibility = View.VISIBLE;
final int endVisibility = (int) endValues.values.get(PROPNAME_VISIBILITY);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index e219e24a8944..af4e61b3f6bc 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -89,6 +89,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
private final HashMap<View, PendingIntent> mClickActions;
private final ActivityStarter mActivityStarter;
private final ConfigurationController mConfigurationController;
+ private final LayoutTransition mLayoutTransition;
private Uri mKeyguardSliceUri;
@VisibleForTesting
TextView mTitle;
@@ -126,16 +127,16 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
mActivityStarter = activityStarter;
mConfigurationController = configurationController;
- LayoutTransition transition = new LayoutTransition();
- transition.setStagger(LayoutTransition.CHANGE_APPEARING, DEFAULT_ANIM_DURATION / 2);
- transition.setDuration(LayoutTransition.APPEARING, DEFAULT_ANIM_DURATION);
- transition.setDuration(LayoutTransition.DISAPPEARING, DEFAULT_ANIM_DURATION / 2);
- transition.disableTransitionType(LayoutTransition.CHANGE_APPEARING);
- transition.disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING);
- transition.setInterpolator(LayoutTransition.APPEARING, Interpolators.FAST_OUT_SLOW_IN);
- transition.setInterpolator(LayoutTransition.DISAPPEARING, Interpolators.ALPHA_OUT);
- transition.setAnimateParentHierarchy(false);
- setLayoutTransition(transition);
+ mLayoutTransition = new LayoutTransition();
+ mLayoutTransition.setStagger(LayoutTransition.CHANGE_APPEARING, DEFAULT_ANIM_DURATION / 2);
+ mLayoutTransition.setDuration(LayoutTransition.APPEARING, DEFAULT_ANIM_DURATION);
+ mLayoutTransition.setDuration(LayoutTransition.DISAPPEARING, DEFAULT_ANIM_DURATION / 2);
+ mLayoutTransition.disableTransitionType(LayoutTransition.CHANGE_APPEARING);
+ mLayoutTransition.disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING);
+ mLayoutTransition.setInterpolator(LayoutTransition.APPEARING,
+ Interpolators.FAST_OUT_SLOW_IN);
+ mLayoutTransition.setInterpolator(LayoutTransition.DISAPPEARING, Interpolators.ALPHA_OUT);
+ mLayoutTransition.setAnimateParentHierarchy(false);
}
@Override
@@ -174,6 +175,12 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
mConfigurationController.removeCallback(this);
}
+ @Override
+ public void onVisibilityAggregated(boolean isVisible) {
+ super.onVisibilityAggregated(isVisible);
+ setLayoutTransition(isVisible ? mLayoutTransition : null);
+ }
+
/**
* Returns whether the current visible slice has a title/header.
*/
@@ -419,6 +426,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
* their desired positions.
*/
private final Animation.AnimationListener mKeepAwakeListener;
+ private LayoutTransition mLayoutTransition;
private float mDarkAmount;
public Row(Context context) {
@@ -440,33 +448,41 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe
@Override
protected void onFinishInflate() {
- LayoutTransition transition = new LayoutTransition();
- transition.setDuration(DEFAULT_ANIM_DURATION);
+ mLayoutTransition = new LayoutTransition();
+ mLayoutTransition.setDuration(DEFAULT_ANIM_DURATION);
PropertyValuesHolder left = PropertyValuesHolder.ofInt("left", 0, 1);
PropertyValuesHolder right = PropertyValuesHolder.ofInt("right", 0, 1);
ObjectAnimator changeAnimator = ObjectAnimator.ofPropertyValuesHolder((Object) null,
left, right);
- transition.setAnimator(LayoutTransition.CHANGE_APPEARING, changeAnimator);
- transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING, changeAnimator);
- transition.setInterpolator(LayoutTransition.CHANGE_APPEARING,
+ mLayoutTransition.setAnimator(LayoutTransition.CHANGE_APPEARING, changeAnimator);
+ mLayoutTransition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING, changeAnimator);
+ mLayoutTransition.setInterpolator(LayoutTransition.CHANGE_APPEARING,
Interpolators.ACCELERATE_DECELERATE);
- transition.setInterpolator(LayoutTransition.CHANGE_DISAPPEARING,
+ mLayoutTransition.setInterpolator(LayoutTransition.CHANGE_DISAPPEARING,
Interpolators.ACCELERATE_DECELERATE);
- transition.setStartDelay(LayoutTransition.CHANGE_APPEARING, DEFAULT_ANIM_DURATION);
- transition.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, DEFAULT_ANIM_DURATION);
+ mLayoutTransition.setStartDelay(LayoutTransition.CHANGE_APPEARING,
+ DEFAULT_ANIM_DURATION);
+ mLayoutTransition.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING,
+ DEFAULT_ANIM_DURATION);
ObjectAnimator appearAnimator = ObjectAnimator.ofFloat(null, "alpha", 0f, 1f);
- transition.setAnimator(LayoutTransition.APPEARING, appearAnimator);
- transition.setInterpolator(LayoutTransition.APPEARING, Interpolators.ALPHA_IN);
+ mLayoutTransition.setAnimator(LayoutTransition.APPEARING, appearAnimator);
+ mLayoutTransition.setInterpolator(LayoutTransition.APPEARING, Interpolators.ALPHA_IN);
ObjectAnimator disappearAnimator = ObjectAnimator.ofFloat(null, "alpha", 1f, 0f);
- transition.setInterpolator(LayoutTransition.DISAPPEARING, Interpolators.ALPHA_OUT);
- transition.setDuration(LayoutTransition.DISAPPEARING, DEFAULT_ANIM_DURATION / 4);
- transition.setAnimator(LayoutTransition.DISAPPEARING, disappearAnimator);
+ mLayoutTransition.setInterpolator(LayoutTransition.DISAPPEARING,
+ Interpolators.ALPHA_OUT);
+ mLayoutTransition.setDuration(LayoutTransition.DISAPPEARING, DEFAULT_ANIM_DURATION / 4);
+ mLayoutTransition.setAnimator(LayoutTransition.DISAPPEARING, disappearAnimator);
- transition.setAnimateParentHierarchy(false);
- setLayoutTransition(transition);
+ mLayoutTransition.setAnimateParentHierarchy(false);
+ }
+
+ @Override
+ public void onVisibilityAggregated(boolean isVisible) {
+ super.onVisibilityAggregated(isVisible);
+ setLayoutTransition(isVisible ? mLayoutTransition : null);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java
index 6fb6467d07b2..382c5d5c5954 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java
@@ -168,6 +168,7 @@ public class FalsingManagerImpl implements FalsingManager {
.append("enabled=").append(isEnabled() ? 1 : 0)
.append(" mScreenOn=").append(mScreenOn ? 1 : 0)
.append(" mState=").append(StatusBarState.toShortString(mState))
+ .append(" mShowingAod=").append(mShowingAod ? 1 : 0)
.toString()
);
}
@@ -550,6 +551,14 @@ public class FalsingManagerImpl implements FalsingManager {
pw.println();
}
+ @Override
+ public void cleanup() {
+ mSensorManager.unregisterListener(mSensorEventListener);
+ mContext.getContentResolver().unregisterContentObserver(mSettingsObserver);
+ Dependency.get(StatusBarStateController.class).removeCallback(mStatusBarStateListener);
+ KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mKeyguardUpdateCallback);
+ }
+
public Uri reportRejectedTouch() {
if (mDataCollector.isEnabled()) {
return mDataCollector.reportRejectedTouch();
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
index 69f243c8ed70..eb4edcc45c80 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
@@ -65,6 +65,7 @@ public class FalsingManagerProxy implements FalsingManager {
public void onPluginConnected(FalsingPlugin plugin, Context context) {
FalsingManager pluginFalsingManager = plugin.getFalsingManager(context);
if (pluginFalsingManager != null) {
+ mInternalFalsingManager.cleanup();
mInternalFalsingManager = pluginFalsingManager;
}
}
@@ -92,6 +93,9 @@ public class FalsingManagerProxy implements FalsingManager {
public void setupFalsingManager(Context context) {
boolean brightlineEnabled = DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_SYSTEMUI, BRIGHTLINE_FALSING_MANAGER_ENABLED, true);
+ if (mInternalFalsingManager != null) {
+ mInternalFalsingManager.cleanup();
+ }
if (!brightlineEnabled) {
mInternalFalsingManager = new FalsingManagerImpl(context);
} else {
@@ -290,4 +294,9 @@ public class FalsingManagerProxy implements FalsingManager {
public void dump(PrintWriter pw) {
mInternalFalsingManager.dump(pw);
}
+
+ @Override
+ public void cleanup() {
+ mInternalFalsingManager.cleanup();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
index 19c46e40f604..3d869bcc2e4b 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
@@ -309,6 +309,11 @@ public class BrightLineFalsingManager implements FalsingManager {
public void dump(PrintWriter printWriter) {
}
+ @Override
+ public void cleanup() {
+ unregisterSensors();
+ }
+
static void logDebug(String msg) {
logDebug(msg, null);
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
index 20477975a6dd..0687b7d8efce 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
@@ -52,6 +52,7 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.R;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationMediaManager;
+import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.NextAlarmController;
import com.android.systemui.statusbar.policy.NextAlarmControllerImpl;
import com.android.systemui.statusbar.policy.ZenModeController;
@@ -125,6 +126,7 @@ public class KeyguardSliceProvider extends SliceProvider implements
private CharSequence mMediaTitle;
private CharSequence mMediaArtist;
protected boolean mDozing;
+ private int mStatusBarState;
private boolean mMediaIsVisible;
/**
@@ -227,7 +229,10 @@ public class KeyguardSliceProvider extends SliceProvider implements
}
protected boolean needsMediaLocked() {
- return !TextUtils.isEmpty(mMediaTitle) && mMediaIsVisible && mDozing;
+ // Show header if music is playing and the status bar is in the shade state. This way, an
+ // animation isn't necessary when pressing power and transitioning to AOD.
+ boolean keepWhenShade = mStatusBarState == StatusBarState.SHADE && mMediaIsVisible;
+ return !TextUtils.isEmpty(mMediaTitle) && mMediaIsVisible && (mDozing || keepWhenShade);
}
protected void addMediaLocked(ListBuilder listBuilder) {
@@ -454,7 +459,7 @@ public class KeyguardSliceProvider extends SliceProvider implements
synchronized (this) {
boolean nextVisible = !mMediaInvisibleStates.contains(state);
mHandler.removeCallbacksAndMessages(mMediaToken);
- if (mMediaIsVisible && !nextVisible) {
+ if (mMediaIsVisible && !nextVisible && mStatusBarState != StatusBarState.SHADE) {
// We need to delay this event for a few millis when stopping to avoid jank in the
// animation. The media app might not send its update when buffering, and the slice
// would end up without a header for 0.5 second.
@@ -511,5 +516,14 @@ public class KeyguardSliceProvider extends SliceProvider implements
@Override
public void onStateChanged(int newState) {
+ final boolean notify;
+ synchronized (this) {
+ boolean needsMedia = needsMediaLocked();
+ mStatusBarState = newState;
+ notify = needsMedia != needsMediaLocked();
+ }
+ if (notify) {
+ notifyChange();
+ }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
index 44191147f914..a83c4b653ce7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
@@ -48,6 +48,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationMediaManager;
+import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.util.wakelock.SettableWakeLock;
@@ -177,6 +178,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
@Test
public void onMetadataChanged_updatesSlice() {
+ mProvider.onStateChanged(StatusBarState.KEYGUARD);
mProvider.onDozingChanged(true);
reset(mContentResolver);
mProvider.onMetadataOrStateChanged(mock(MediaMetadata.class), PlaybackState.STATE_PLAYING);
@@ -190,6 +192,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
@Test
public void onDozingChanged_updatesSliceIfMedia() {
+ mProvider.onStateChanged(StatusBarState.KEYGUARD);
mProvider.onMetadataOrStateChanged(mock(MediaMetadata.class), PlaybackState.STATE_PLAYING);
reset(mContentResolver);
// Show media when dozing
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index b90d60227be4..c0942c908f3b 100644
--- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -936,6 +936,7 @@ class ScreenRotationAnimation {
}
}
+ t.setEarlyWakeup();
setSnapshotTransform(t, mSnapshotFinalMatrix, mExitTransformation.getAlpha());
}