Fix bubble not showing on device restart.
Test: ReturnToCallControllerTest
PiperOrigin-RevId: 189225436
Change-Id: I845855d0b66941e311f3db239d10249015473c65
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index 959f13f..2b147e7 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -111,10 +111,8 @@
InCallPresenter.getInstance().onServiceBind();
InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
TelecomAdapter.getInstance().setInCallService(this);
- if (ReturnToCallController.isEnabled(this)) {
- returnToCallController =
- new ReturnToCallController(this, ContactInfoCache.getInstance(context));
- }
+ returnToCallController =
+ new ReturnToCallController(this, ContactInfoCache.getInstance(context));
feedbackListener = FeedbackComponent.get(context).getCallFeedbackListener();
CallList.getInstance().addListener(feedbackListener);
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index 6227c77..9dfb73b 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -108,6 +108,11 @@
@Override
public void onUiShowing(boolean showing) {
+ if (!isEnabled(context)) {
+ hide();
+ return;
+ }
+
LogUtil.i("ReturnToCallController.onUiShowing", "showing: " + showing);
if (showing) {
LogUtil.i("ReturnToCallController.onUiShowing", "going to hide");
@@ -155,8 +160,7 @@
canShowBubblesForTesting = canShowBubbles;
}
- @VisibleForTesting
- public Bubble startBubble() {
+ private Bubble startBubble() {
if (!canShowBubbles(context)) {
LogUtil.i("ReturnToCallController.startBubble", "can't show bubble, no permission");
return null;
@@ -178,6 +182,11 @@
@Override
public void onCallListChange(CallList callList) {
+ if (!isEnabled(context)) {
+ hide();
+ return;
+ }
+
if ((bubble == null || !bubble.isVisible())
&& getCall() != null
&& !InCallPresenter.getInstance().isShowingInCallUi()) {
@@ -188,6 +197,11 @@
@Override
public void onDisconnect(DialerCall call) {
+ if (!isEnabled(context)) {
+ hide();
+ return;
+ }
+
LogUtil.enterBlock("ReturnToCallController.onDisconnect");
if (bubble != null && bubble.isVisible() && (getCall() == null)) {
// Show "Call ended" and hide bubble when there is no outgoing, active or background call
@@ -214,6 +228,11 @@
@Override
public void onAudioStateChanged(CallAudioState audioState) {
+ if (!isEnabled(context)) {
+ hide();
+ return;
+ }
+
this.audioState = audioState;
if (bubble != null) {
bubble.updateActions(generateActions());