summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-04-23 22:09:49 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-04-23 22:09:49 +0000
commit9ab09bae85bab696c1c4f3bde07888ba32e9571c (patch)
tree6f2cb7e5c5f6e7f8afdb4d0902a65691514affd2
parent47e0bcb85c1b1ba9dcb58904299f341f5c4ce07a (diff)
parent4613e8f41f7106bc22e0d976cab45baecdbe354a (diff)
Merge "Check call configuration for every call instead of every InCallService bound."
-rw-r--r--java/com/android/incallui/InCallPresenter.java42
-rw-r--r--java/com/android/incallui/InCallServiceImpl.java3
-rw-r--r--java/com/android/incallui/ReturnToCallController.java3
3 files changed, 32 insertions, 16 deletions
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 1dc150d56..5e08c6969 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -268,7 +268,6 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
private SpeakEasyCallManager speakEasyCallManager;
- private boolean shouldStartInBubbleMode;
private boolean audioRouteSetForBubbleMode;
/** Inaccessible constructor. Must use getRunningInstance() to get this singleton. */
@@ -336,8 +335,7 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
ContactInfoCache contactInfoCache,
ProximitySensor proximitySensor,
FilteredNumberAsyncQueryHandler filteredNumberQueryHandler,
- @NonNull SpeakEasyCallManager speakEasyCallManager,
- Intent intent) {
+ @NonNull SpeakEasyCallManager speakEasyCallManager) {
Trace.beginSection("InCallPresenter.setUp");
if (serviceConnected) {
LogUtil.i("InCallPresenter.setUp", "New service connection replacing existing one.");
@@ -403,8 +401,6 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
addInCallUiListener(motorolaInCallUiNotifier);
addListener(motorolaInCallUiNotifier);
- this.shouldStartInBubbleMode = shouldStartInBubbleMode(intent);
-
LogUtil.d("InCallPresenter.setUp", "Finished InCallPresenter.setUp");
Trace.endSection();
}
@@ -413,15 +409,33 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
* Return whether we should start call in bubble mode and not show InCallActivity. The call mode
* should be set in CallConfiguration in EXTRA_OUTGOING_CALL_EXTRAS when starting a call intent.
*/
- private boolean shouldStartInBubbleMode(Intent intent) {
+ private boolean shouldStartInBubbleMode() {
+ if (!ReturnToCallController.isEnabled(context)) {
+ return false;
+ }
+
+ // We only start in Bubble mode for outgoing call
+ DialerCall dialerCall = callList.getPendingOutgoingCall();
+ if (dialerCall == null) {
+ dialerCall = callList.getOutgoingCall();
+ }
+ if (dialerCall == null) {
+ return false;
+ }
+
+ Bundle extras = dialerCall.getIntentExtras();
+ return shouldStartInBubbleModeWithExtras(extras);
+ }
+
+ private boolean shouldStartInBubbleModeWithExtras(Bundle outgoingExtras) {
if (!ReturnToCallController.isEnabled(context)) {
return false;
}
- if (!intent.hasExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS)) {
+
+ if (outgoingExtras == null) {
return false;
}
- Bundle extras = intent.getParcelableExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS);
- byte[] callConfigurationByteArray = extras.getByteArray(CALL_CONFIGURATION_EXTRA);
+ byte[] callConfigurationByteArray = outgoingExtras.getByteArray(CALL_CONFIGURATION_EXTRA);
if (callConfigurationByteArray == null) {
return false;
}
@@ -1493,7 +1507,7 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
inCallActivity.dismissPendingDialogs();
}
- if ((showCallUi || showAccountPicker) && !shouldStartInBubbleMode) {
+ if ((showCallUi || showAccountPicker) && !shouldStartInBubbleMode()) {
LogUtil.i("InCallPresenter.startOrFinishUi", "Start in call UI");
showInCall(false /* showDialpad */, !showAccountPicker /* newOutgoingCall */);
} else if (newState == InCallState.NO_CALLS) {
@@ -1554,7 +1568,6 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
isChangingConfigurations = false;
- shouldStartInBubbleMode = false;
audioRouteSetForBubbleMode = false;
// blow away stale contact info so that we get fresh data on
@@ -1647,7 +1660,7 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
setBoundAndWaitingForOutgoingCall(true, accountHandle);
- if (shouldStartInBubbleMode) {
+ if (shouldStartInBubbleModeWithExtras(extras)) {
LogUtil.i("InCallPresenter.maybeStartRevealAnimation", "shouldStartInBubbleMode");
// Show bubble instead of in call UI
return;
@@ -1838,8 +1851,9 @@ public class InCallPresenter implements CallList.Listener, AudioModeProvider.Aud
public void onAudioStateChanged(CallAudioState audioState) {
// Set sensible audio route for bubble mode when we get real audio state for the first time
// During the first time this function is called, supportedRouteMask is set to
- // SUPPORTED_AUDIO_ROUTE_ALL, but it's OK since shouldStartInBubbleMode is not set at that time.
- if (!audioRouteSetForBubbleMode && shouldStartInBubbleMode) {
+ // SUPPORTED_AUDIO_ROUTE_ALL, but it's OK since shouldStartInBubbleMode() is false at that time
+ // (callList not updated yet).
+ if (!audioRouteSetForBubbleMode && shouldStartInBubbleMode()) {
setAudioRouteForBubbleMode(audioState);
audioRouteSetForBubbleMode = true;
}
diff --git a/java/com/android/incallui/InCallServiceImpl.java b/java/com/android/incallui/InCallServiceImpl.java
index 29a65b925..d803956e6 100644
--- a/java/com/android/incallui/InCallServiceImpl.java
+++ b/java/com/android/incallui/InCallServiceImpl.java
@@ -110,8 +110,7 @@ public class InCallServiceImpl extends InCallService {
new ProximitySensor(
context, AudioModeProvider.getInstance(), new AccelerometerListener(context)),
new FilteredNumberAsyncQueryHandler(context),
- speakEasyCallManager,
- intent);
+ speakEasyCallManager);
InCallPresenter.getInstance().onServiceBind();
InCallPresenter.getInstance().maybeStartRevealAnimation(intent);
TelecomAdapter.getInstance().setInCallService(this);
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index fcb6fe090..4a7b3fbce 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -191,6 +191,9 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
&& !InCallPresenter.getInstance().isShowingInCallUi()) {
LogUtil.i("ReturnToCallController.onCallListChange", "going to show bubble");
show();
+ } else {
+ // The call to display might be different for the existing bubble
+ startContactInfoSearch();
}
}