Telecom: Reset the duration after the CDMA call is accepted
am: 79fe82a8d3
Change-Id: I3caf9f8511cf6f293e18d8017f1c9f28ef2892e1
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index 62a43fc..3ad186c 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -1407,6 +1407,10 @@
return mConnectTimeMillis;
}
+ public void setConnectTimeMillis(long connectTimeMillis) {
+ mConnectTimeMillis = connectTimeMillis;
+ }
+
int getConnectionCapabilities() {
return mConnectionCapabilities;
}
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 0f7eeaf..9ada0c6 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -130,6 +130,7 @@
void onHoldToneRequested(Call call);
void onExternalCallChanged(Call call, boolean isExternalCall);
void onDisconnectedTonePlaying(boolean isTonePlaying);
+ void onConnectionTimeChanged(Call call);
}
/** Interface used to define the action which is executed delay under some condition. */
@@ -3942,4 +3943,13 @@
}
}
}
+
+ public void resetConnectionTime(Call call) {
+ call.setConnectTimeMillis(System.currentTimeMillis());
+ if (mCalls.contains(call)) {
+ for (CallsManagerListener listener : mListeners) {
+ listener.onConnectionTimeChanged(call);
+ }
+ }
+ }
}
diff --git a/src/com/android/server/telecom/CallsManagerListenerBase.java b/src/com/android/server/telecom/CallsManagerListenerBase.java
index c0a71eb..cdc0209 100644
--- a/src/com/android/server/telecom/CallsManagerListenerBase.java
+++ b/src/com/android/server/telecom/CallsManagerListenerBase.java
@@ -92,4 +92,8 @@
@Override
public void onDisconnectedTonePlaying(boolean isTonePlaying) {
}
+
+ @Override
+ public void onConnectionTimeChanged(Call call) {
+ }
}
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 6dd9a3a..6c63ecb 100644
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -145,6 +145,26 @@
}
@Override
+ public void resetConnectionTime(String callId, Session.Info sessionInfo) {
+ Log.startSession(sessionInfo, "CSW.rCCT");
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ logIncoming("resetConnectionTime %s", callId);
+ Call call = mCallIdMapper.getCall(callId);
+ if (call != null) {
+ mCallsManager.resetConnectionTime(call);
+ } else {
+ // Log.w(this, "resetConnectionTime, unknown call id: %s", msg.obj);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ Log.endSession();
+ }
+ }
+
+ @Override
public void setVideoProvider(String callId, IVideoProvider videoProvider,
Session.Info sessionInfo) {
Log.startSession(sessionInfo, "CSW.sVP");
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index 9d20d4a..6f3c4d5 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -960,6 +960,12 @@
updateCall(call);
}
+ @Override
+ public void onConnectionTimeChanged(Call call) {
+ Log.d(this, "onConnectionTimeChanged %s", call);
+ updateCall(call);
+ }
+
void bringToForeground(boolean showDialpad) {
if (!mInCallServices.isEmpty()) {
for (IInCallService inCallService : mInCallServices.values()) {