Read from correct extras when logging call composer
Read from a call's intent extras instead since that's where the
attachments will be indicated.
Bug: 180448171
Test: manual, atest CallLogManagerTest
Change-Id: If97f48a425457fecc6b50c5e893cc4cad5f78854
diff --git a/src/com/android/server/telecom/CallLogManager.java b/src/com/android/server/telecom/CallLogManager.java
index e848dd4..0ec2362 100755
--- a/src/com/android/server/telecom/CallLogManager.java
+++ b/src/com/android/server/telecom/CallLogManager.java
@@ -342,20 +342,29 @@
paramBuilder.setAddForAllUsers(accountHandle.getUserHandle() == null);
}
}
- if (call.getExtras() != null) {
- if (call.getExtras().containsKey(TelecomManager.EXTRA_PRIORITY)) {
- paramBuilder.setPriority(call.getExtras().getInt(TelecomManager.EXTRA_PRIORITY));
+ if (call.getIntentExtras() != null) {
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_PRIORITY)) {
+ paramBuilder.setPriority(call.getIntentExtras()
+ .getInt(TelecomManager.EXTRA_PRIORITY));
}
- if (call.getExtras().containsKey(TelecomManager.EXTRA_CALL_SUBJECT)) {
- paramBuilder.setSubject(call.getExtras()
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_CALL_SUBJECT)) {
+ paramBuilder.setSubject(call.getIntentExtras()
.getString(TelecomManager.EXTRA_CALL_SUBJECT));
}
- if (call.getExtras().containsKey(TelecomManager.EXTRA_PICTURE_URI)) {
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_PICTURE_URI)) {
+ paramBuilder.setPictureUri(call.getIntentExtras()
+ .getParcelable(TelecomManager.EXTRA_PICTURE_URI));
+ }
+ // The picture uri can end up either in extras or in intent extras due to how these
+ // two bundles are set. For incoming calls they're in extras, but for outgoing calls
+ // they're in intentExtras.
+ if (call.getExtras() != null
+ && call.getExtras().containsKey(TelecomManager.EXTRA_PICTURE_URI)) {
paramBuilder.setPictureUri(call.getExtras()
.getParcelable(TelecomManager.EXTRA_PICTURE_URI));
}
- if (call.getExtras().containsKey(TelecomManager.EXTRA_LOCATION)) {
- Location l = call.getExtras().getParcelable(TelecomManager.EXTRA_LOCATION);
+ if (call.getIntentExtras().containsKey(TelecomManager.EXTRA_LOCATION)) {
+ Location l = call.getIntentExtras().getParcelable(TelecomManager.EXTRA_LOCATION);
if (l != null) {
paramBuilder.setLatitude(l.getLatitude());
paramBuilder.setLongitude(l.getLongitude());
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index 53e6084..ff68e7a 100755
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -775,17 +775,17 @@
int attachmentMask = result.mCallScreeningResponse.getCallComposerAttachmentsToShow();
if ((attachmentMask
& CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_LOCATION) == 0) {
- incomingCall.getExtras().remove(TelecomManager.EXTRA_LOCATION);
+ incomingCall.getIntentExtras().remove(TelecomManager.EXTRA_LOCATION);
}
if ((attachmentMask
& CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_SUBJECT) == 0) {
- incomingCall.getExtras().remove(TelecomManager.EXTRA_CALL_SUBJECT);
+ incomingCall.getIntentExtras().remove(TelecomManager.EXTRA_CALL_SUBJECT);
}
if ((attachmentMask
& CallScreeningService.CallResponse.CALL_COMPOSER_ATTACHMENT_PRIORITY) == 0) {
- incomingCall.getExtras().remove(TelecomManager.EXTRA_PRIORITY);
+ incomingCall.getIntentExtras().remove(TelecomManager.EXTRA_PRIORITY);
}
}
diff --git a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
index 62ff257..b9f5667 100644
--- a/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
+++ b/tests/src/com/android/server/telecom/tests/CallLogManagerTest.java
@@ -852,7 +852,7 @@
extras.putString(TelecomManager.EXTRA_CALL_SUBJECT, subject);
extras.putParcelable(TelecomManager.EXTRA_LOCATION, location);
extras.putParcelable(TelecomManager.EXTRA_PICTURE_URI, fakeProviderUri);
- when(fakeCall.getExtras()).thenReturn(extras);
+ when(fakeCall.getIntentExtras()).thenReturn(extras);
mCallLogManager.onCallStateChanged(fakeCall, CallState.ACTIVE,
CallState.DISCONNECTED);