summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTa-wei Yen <twyen@google.com>2016-01-08 13:03:41 -0800
committerTa-wei Yen <twyen@google.com>2016-01-08 21:14:11 +0000
commitc82f0a1f9826d0002812748afa4906b8631a7b61 (patch)
tree28d361ae42b3ef76ff54a76adac7ba0762957952
parent211d8616c2efcbb7a252cced6d28b359f9a2f2ff (diff)
DO NOT MERGE Handle child number changes after the call starts.
This CL is in master branch, but not in dialer branch, which causes a merge conflict in master for ag/841237 Reverting ag/841237, cherry-picking this and will reapply ag/841237 later. The child number display functionality assumed that the child number for a call would only bet set at the start of the call. This change removes that assumption and supports changes to the child number at any point during the call by adding a new listener to the InCall Call List. It appears there are some instances in reality where the child number can come in after the start of a call (delayed only slightly, but enough to prevent the number from showing up). Bug: 24585039 (cherry picked from commit 7a2da71d22645d619e04b1704138f183a5e47724) Change-Id: Id019dcb1fcdc7f13d738d9917bc9bbc4fe15dc02
-rw-r--r--InCallUI/src/com/android/incallui/AnswerPresenter.java5
-rw-r--r--InCallUI/src/com/android/incallui/Call.java5
-rw-r--r--InCallUI/src/com/android/incallui/CallCardPresenter.java13
-rw-r--r--InCallUI/src/com/android/incallui/CallList.java20
-rw-r--r--InCallUI/src/com/android/incallui/StatusBarNotifier.java5
5 files changed, 46 insertions, 2 deletions
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index 76ca4a90d..1307a3e54 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -115,6 +115,11 @@ public class AnswerPresenter extends Presenter<AnswerPresenter.AnswerUi>
// no-op
}
+ @Override
+ public void onChildNumberChange() {
+ // no-op
+ }
+
private boolean isVideoUpgradePending(Call call) {
return call.getSessionModificationState()
== Call.SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST;
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index d82346ebb..3ec94f9df 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -554,12 +554,13 @@ public class Call {
Bundle callExtras = mTelecomCall.getDetails().getExtras();
if (callExtras != null) {
- // Child address arrives when the call is first set up, so we do not need to notify the
- // UI of this.
+ // Check for a change in the child address and notify any listeners.
if (callExtras.containsKey(Connection.EXTRA_CHILD_ADDRESS)) {
String childNumber = callExtras.getString(Connection.EXTRA_CHILD_ADDRESS);
+
if (!Objects.equals(childNumber, mChildNumber)) {
mChildNumber = childNumber;
+ CallList.getInstance().onChildNumberChange(this);
}
}
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index a0c1cef86..0b17e1a03 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -378,6 +378,19 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi>
updatePrimaryDisplayInfo();
}
+ /**
+ * Handles a change to the child number by refreshing the primary call info.
+ */
+ @Override
+ public void onChildNumberChange() {
+ Log.v(this, "onChildNumberChange");
+
+ if (mPrimary == null) {
+ return;
+ }
+ updatePrimaryDisplayInfo();
+ }
+
private String getSubscriptionNumber() {
// If it's an emergency call, and they're not populating the callback number,
// then try to fall back to the phone sub info (to hopefully get the SIM's
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index 0f31f72aa..99def3669 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -187,6 +187,21 @@ public class CallList {
}
}
+ /**
+ * Called when the child number changes for a call. The child number can be received after a
+ * call is initially set up, so we need to be able to inform listeners of the change.
+ *
+ * @param call The call.
+ */
+ public void onChildNumberChange(Call call) {
+ final List<CallUpdateListener> listeners = mCallUpdateListenerMap.get(call.getId());
+ if (listeners != null) {
+ for (CallUpdateListener listener : listeners) {
+ listener.onChildNumberChange();
+ }
+ }
+ }
+
public void notifyCallUpdateListeners(Call call) {
final List<CallUpdateListener> listeners = mCallUpdateListenerMap.get(call.getId());
if (listeners != null) {
@@ -650,5 +665,10 @@ public class CallList {
* Notifies of a change to the last forwarded number for a call.
*/
public void onLastForwardedNumberChange();
+
+ /**
+ * Notifies of a change to the child number for a call.
+ */
+ public void onChildNumberChange();
}
}
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 4b57278c4..fde2dc9dc 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -667,4 +667,9 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener,
public void onLastForwardedNumberChange() {
// no-op
}
+
+ @Override
+ public void onChildNumberChange() {
+ // no-op
+ }
}