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());