Restore KeyguardBottomAreaView state
KeyguardBottomAreaView will be re-inflated when the theme changes,
it's necessary to also restore some of its internal state, otherwise
we'll have NPEs.
Test: manual
Test: atest KeyguardBottomAreaTest
Fixes: 117121386
Change-Id: Idac8192877b65f8ad00cd60a2bb0c1ce75476cf1
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index ae1353d..9b32a75 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -63,6 +63,7 @@
import android.widget.FrameLayout;
import android.widget.TextView;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -228,6 +229,11 @@
}
};
+ public void initFrom(KeyguardBottomAreaView oldBottomArea) {
+ setKeyguardIndicationController(oldBottomArea.mIndicationController);
+ setStatusBar(oldBottomArea.mStatusBar);
+ }
+
@Override
protected void onFinishInflate() {
super.onFinishInflate();
@@ -578,7 +584,8 @@
}
}
- private void launchVoiceAssist() {
+ @VisibleForTesting
+ void launchVoiceAssist() {
Runnable runnable = new Runnable() {
@Override
public void run() {