Loading core/proto/android/companion/telecom.proto +2 −0 Original line number Original line Diff line number Diff line Loading @@ -88,6 +88,8 @@ message Telecom { string name = 1; string name = 1; // Unique identifier for this facilitator, such as a package name. // Unique identifier for this facilitator, such as a package name. string identifier = 2; string identifier = 2; // Extended identifier for this facilitator. string extended_identifier = 3; } } enum Control { enum Control { Loading services/companion/java/com/android/server/companion/datatransfer/contextsync/CallMetadataSyncConnectionService.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -175,7 +175,8 @@ public class CallMetadataSyncConnectionService extends ConnectionService { : handle.getComponentName().getShortClassName(), : handle.getComponentName().getShortClassName(), phoneAccount != null ? phoneAccount.getExtras().getString( phoneAccount != null ? phoneAccount.getExtras().getString( CrossDeviceSyncController.EXTRA_CALL_FACILITATOR_ID) CrossDeviceSyncController.EXTRA_CALL_FACILITATOR_ID) : handle.getComponentName().getPackageName()); : handle.getComponentName().getPackageName(), handle.getComponentName().flattenToString()); call.setFacilitator(callFacilitator); call.setFacilitator(callFacilitator); call.setDirection(android.companion.Telecom.Call.OUTGOING); call.setDirection(android.companion.Telecom.Call.OUTGOING); call.setCallerId(connectionRequest.getAddress().getSchemeSpecificPart()); call.setCallerId(connectionRequest.getAddress().getSchemeSpecificPart()); Loading services/companion/java/com/android/server/companion/datatransfer/contextsync/CallMetadataSyncData.java +18 −2 Original line number Original line Diff line number Diff line Loading @@ -75,13 +75,15 @@ class CallMetadataSyncData { public static class CallFacilitator { public static class CallFacilitator { private String mName; private String mName; private String mIdentifier; private String mIdentifier; private String mExtendedIdentifier; private boolean mIsTel; private boolean mIsTel; CallFacilitator() {} CallFacilitator() {} CallFacilitator(String name, String identifier) { CallFacilitator(String name, String identifier, String extendedIdentifier) { mName = name; mName = name; mIdentifier = identifier; mIdentifier = identifier; mExtendedIdentifier = extendedIdentifier; } } public String getName() { public String getName() { Loading @@ -92,6 +94,10 @@ class CallMetadataSyncData { return mIdentifier; return mIdentifier; } } public String getExtendedIdentifier() { return mExtendedIdentifier; } public boolean isTel() { public boolean isTel() { return mIsTel; return mIsTel; } } Loading @@ -104,6 +110,10 @@ class CallMetadataSyncData { mIdentifier = identifier; mIdentifier = identifier; } } public void setExtendedIdentifier(String extendedIdentifier) { mExtendedIdentifier = extendedIdentifier; } public void setIsTel(boolean isTel) { public void setIsTel(boolean isTel) { mIsTel = isTel; mIsTel = isTel; } } Loading Loading @@ -170,6 +180,8 @@ class CallMetadataSyncData { "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_NAME"; "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_NAME"; private static final String EXTRA_FACILITATOR_ID = private static final String EXTRA_FACILITATOR_ID = "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_ID"; "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_ID"; private static final String EXTRA_FACILITATOR_EXT_ID = "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_EXT_ID"; private static final String EXTRA_STATUS = private static final String EXTRA_STATUS = "com.android.server.companion.datatransfer.contextsync.extra.STATUS"; "com.android.server.companion.datatransfer.contextsync.extra.STATUS"; private static final String EXTRA_DIRECTION = private static final String EXTRA_DIRECTION = Loading @@ -192,7 +204,10 @@ class CallMetadataSyncData { call.setAppIcon(bundle.getByteArray(EXTRA_APP_ICON)); call.setAppIcon(bundle.getByteArray(EXTRA_APP_ICON)); final String facilitatorName = bundle.getString(EXTRA_FACILITATOR_NAME); final String facilitatorName = bundle.getString(EXTRA_FACILITATOR_NAME); final String facilitatorIdentifier = bundle.getString(EXTRA_FACILITATOR_ID); final String facilitatorIdentifier = bundle.getString(EXTRA_FACILITATOR_ID); call.setFacilitator(new CallFacilitator(facilitatorName, facilitatorIdentifier)); final String facilitatorExtendedIdentifier = bundle.getString(EXTRA_FACILITATOR_EXT_ID); call.setFacilitator(new CallFacilitator(facilitatorName, facilitatorIdentifier, facilitatorExtendedIdentifier)); call.setStatus(bundle.getInt(EXTRA_STATUS)); call.setStatus(bundle.getInt(EXTRA_STATUS)); call.setDirection(bundle.getInt(EXTRA_DIRECTION)); call.setDirection(bundle.getInt(EXTRA_DIRECTION)); call.setControls(new HashSet<>(bundle.getIntegerArrayList(EXTRA_CONTROLS))); call.setControls(new HashSet<>(bundle.getIntegerArrayList(EXTRA_CONTROLS))); Loading @@ -207,6 +222,7 @@ class CallMetadataSyncData { bundle.putByteArray(EXTRA_APP_ICON, mAppIcon); bundle.putByteArray(EXTRA_APP_ICON, mAppIcon); bundle.putString(EXTRA_FACILITATOR_NAME, mFacilitator.getName()); bundle.putString(EXTRA_FACILITATOR_NAME, mFacilitator.getName()); bundle.putString(EXTRA_FACILITATOR_ID, mFacilitator.getIdentifier()); bundle.putString(EXTRA_FACILITATOR_ID, mFacilitator.getIdentifier()); bundle.putString(EXTRA_FACILITATOR_EXT_ID, mFacilitator.getExtendedIdentifier()); bundle.putInt(EXTRA_STATUS, mStatus); bundle.putInt(EXTRA_STATUS, mStatus); bundle.putInt(EXTRA_DIRECTION, mDirection); bundle.putInt(EXTRA_DIRECTION, mDirection); bundle.putIntegerArrayList(EXTRA_CONTROLS, new ArrayList<>(mControls)); bundle.putIntegerArrayList(EXTRA_CONTROLS, new ArrayList<>(mControls)); Loading services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceCall.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ public class CrossDeviceCall { private final int mUserId; private final int mUserId; @VisibleForTesting boolean mIsEnterprise; @VisibleForTesting boolean mIsEnterprise; private final String mCallingAppPackageName; private final String mCallingAppPackageName; private final String mSerializedPhoneAccountHandle; private String mCallingAppName; private String mCallingAppName; private byte[] mCallingAppIcon; private byte[] mCallingAppIcon; private String mCallerDisplayName; private String mCallerDisplayName; Loading Loading @@ -89,6 +90,8 @@ public class CrossDeviceCall { .equals(handle.getComponentName()); .equals(handle.getComponentName()); mCallingAppPackageName = handle != null mCallingAppPackageName = handle != null ? callDetails.getAccountHandle().getComponentName().getPackageName() : ""; ? callDetails.getAccountHandle().getComponentName().getPackageName() : ""; mSerializedPhoneAccountHandle = handle != null ? handle.getId() + SEPARATOR + handle.getComponentName().flattenToString() : ""; mIsEnterprise = (callDetails.getCallProperties() & Call.Details.PROPERTY_ENTERPRISE_CALL) mIsEnterprise = (callDetails.getCallProperties() & Call.Details.PROPERTY_ENTERPRISE_CALL) == Call.Details.PROPERTY_ENTERPRISE_CALL; == Call.Details.PROPERTY_ENTERPRISE_CALL; final PackageManager packageManager = context.getPackageManager(); final PackageManager packageManager = context.getPackageManager(); Loading Loading @@ -247,6 +250,10 @@ public class CrossDeviceCall { return mCallingAppPackageName; return mCallingAppPackageName; } } public String getSerializedPhoneAccountHandle() { return mSerializedPhoneAccountHandle; } /** /** * Get a human-readable "caller id" to display as the origin of the call. * Get a human-readable "caller id" to display as the origin of the call. * * Loading services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -280,7 +280,7 @@ public class CrossDeviceSyncController { mCallFacilitators.add( mCallFacilitators.add( new CallMetadataSyncData.CallFacilitator( new CallMetadataSyncData.CallFacilitator( defaultOutgoingTelAccount.getLabel().toString(), defaultOutgoingTelAccount.getLabel().toString(), FACILITATOR_ID_SYSTEM)); FACILITATOR_ID_SYSTEM, FACILITATOR_ID_SYSTEM)); } } } } } } Loading Loading @@ -574,6 +574,10 @@ public class CrossDeviceSyncController { case (int) Telecom.CallFacilitator.IDENTIFIER: case (int) Telecom.CallFacilitator.IDENTIFIER: facilitator.setIdentifier(pis.readString(Telecom.CallFacilitator.IDENTIFIER)); facilitator.setIdentifier(pis.readString(Telecom.CallFacilitator.IDENTIFIER)); break; break; case (int) Telecom.CallFacilitator.EXTENDED_IDENTIFIER: facilitator.setExtendedIdentifier( pis.readString(Telecom.CallFacilitator.EXTENDED_IDENTIFIER)); break; default: default: Slog.e(TAG, "Unhandled field in Facilitator:" Slog.e(TAG, "Unhandled field in Facilitator:" + ProtoUtils.currentFieldToString(pis)); + ProtoUtils.currentFieldToString(pis)); Loading Loading @@ -649,6 +653,8 @@ public class CrossDeviceSyncController { final long facilitatorToken = pos.start(Telecom.Call.Origin.FACILITATOR); final long facilitatorToken = pos.start(Telecom.Call.Origin.FACILITATOR); pos.write(Telecom.CallFacilitator.NAME, call.getCallingAppName()); pos.write(Telecom.CallFacilitator.NAME, call.getCallingAppName()); pos.write(Telecom.CallFacilitator.IDENTIFIER, call.getCallingAppPackageName()); pos.write(Telecom.CallFacilitator.IDENTIFIER, call.getCallingAppPackageName()); pos.write(Telecom.CallFacilitator.EXTENDED_IDENTIFIER, call.getSerializedPhoneAccountHandle()); pos.end(facilitatorToken); pos.end(facilitatorToken); pos.end(originToken); pos.end(originToken); pos.write(Telecom.Call.STATUS, call.getStatus()); pos.write(Telecom.Call.STATUS, call.getStatus()); Loading @@ -662,6 +668,8 @@ public class CrossDeviceSyncController { final long facilitatorsToken = pos.start(Telecom.FACILITATORS); final long facilitatorsToken = pos.start(Telecom.FACILITATORS); pos.write(Telecom.CallFacilitator.NAME, facilitator.getName()); pos.write(Telecom.CallFacilitator.NAME, facilitator.getName()); pos.write(Telecom.CallFacilitator.IDENTIFIER, facilitator.getIdentifier()); pos.write(Telecom.CallFacilitator.IDENTIFIER, facilitator.getIdentifier()); pos.write(Telecom.CallFacilitator.EXTENDED_IDENTIFIER, facilitator.getExtendedIdentifier()); pos.end(facilitatorsToken); pos.end(facilitatorsToken); } } pos.end(telecomToken); pos.end(telecomToken); Loading Loading
core/proto/android/companion/telecom.proto +2 −0 Original line number Original line Diff line number Diff line Loading @@ -88,6 +88,8 @@ message Telecom { string name = 1; string name = 1; // Unique identifier for this facilitator, such as a package name. // Unique identifier for this facilitator, such as a package name. string identifier = 2; string identifier = 2; // Extended identifier for this facilitator. string extended_identifier = 3; } } enum Control { enum Control { Loading
services/companion/java/com/android/server/companion/datatransfer/contextsync/CallMetadataSyncConnectionService.java +2 −1 Original line number Original line Diff line number Diff line Loading @@ -175,7 +175,8 @@ public class CallMetadataSyncConnectionService extends ConnectionService { : handle.getComponentName().getShortClassName(), : handle.getComponentName().getShortClassName(), phoneAccount != null ? phoneAccount.getExtras().getString( phoneAccount != null ? phoneAccount.getExtras().getString( CrossDeviceSyncController.EXTRA_CALL_FACILITATOR_ID) CrossDeviceSyncController.EXTRA_CALL_FACILITATOR_ID) : handle.getComponentName().getPackageName()); : handle.getComponentName().getPackageName(), handle.getComponentName().flattenToString()); call.setFacilitator(callFacilitator); call.setFacilitator(callFacilitator); call.setDirection(android.companion.Telecom.Call.OUTGOING); call.setDirection(android.companion.Telecom.Call.OUTGOING); call.setCallerId(connectionRequest.getAddress().getSchemeSpecificPart()); call.setCallerId(connectionRequest.getAddress().getSchemeSpecificPart()); Loading
services/companion/java/com/android/server/companion/datatransfer/contextsync/CallMetadataSyncData.java +18 −2 Original line number Original line Diff line number Diff line Loading @@ -75,13 +75,15 @@ class CallMetadataSyncData { public static class CallFacilitator { public static class CallFacilitator { private String mName; private String mName; private String mIdentifier; private String mIdentifier; private String mExtendedIdentifier; private boolean mIsTel; private boolean mIsTel; CallFacilitator() {} CallFacilitator() {} CallFacilitator(String name, String identifier) { CallFacilitator(String name, String identifier, String extendedIdentifier) { mName = name; mName = name; mIdentifier = identifier; mIdentifier = identifier; mExtendedIdentifier = extendedIdentifier; } } public String getName() { public String getName() { Loading @@ -92,6 +94,10 @@ class CallMetadataSyncData { return mIdentifier; return mIdentifier; } } public String getExtendedIdentifier() { return mExtendedIdentifier; } public boolean isTel() { public boolean isTel() { return mIsTel; return mIsTel; } } Loading @@ -104,6 +110,10 @@ class CallMetadataSyncData { mIdentifier = identifier; mIdentifier = identifier; } } public void setExtendedIdentifier(String extendedIdentifier) { mExtendedIdentifier = extendedIdentifier; } public void setIsTel(boolean isTel) { public void setIsTel(boolean isTel) { mIsTel = isTel; mIsTel = isTel; } } Loading Loading @@ -170,6 +180,8 @@ class CallMetadataSyncData { "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_NAME"; "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_NAME"; private static final String EXTRA_FACILITATOR_ID = private static final String EXTRA_FACILITATOR_ID = "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_ID"; "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_ID"; private static final String EXTRA_FACILITATOR_EXT_ID = "com.android.server.companion.datatransfer.contextsync.extra.FACILITATOR_EXT_ID"; private static final String EXTRA_STATUS = private static final String EXTRA_STATUS = "com.android.server.companion.datatransfer.contextsync.extra.STATUS"; "com.android.server.companion.datatransfer.contextsync.extra.STATUS"; private static final String EXTRA_DIRECTION = private static final String EXTRA_DIRECTION = Loading @@ -192,7 +204,10 @@ class CallMetadataSyncData { call.setAppIcon(bundle.getByteArray(EXTRA_APP_ICON)); call.setAppIcon(bundle.getByteArray(EXTRA_APP_ICON)); final String facilitatorName = bundle.getString(EXTRA_FACILITATOR_NAME); final String facilitatorName = bundle.getString(EXTRA_FACILITATOR_NAME); final String facilitatorIdentifier = bundle.getString(EXTRA_FACILITATOR_ID); final String facilitatorIdentifier = bundle.getString(EXTRA_FACILITATOR_ID); call.setFacilitator(new CallFacilitator(facilitatorName, facilitatorIdentifier)); final String facilitatorExtendedIdentifier = bundle.getString(EXTRA_FACILITATOR_EXT_ID); call.setFacilitator(new CallFacilitator(facilitatorName, facilitatorIdentifier, facilitatorExtendedIdentifier)); call.setStatus(bundle.getInt(EXTRA_STATUS)); call.setStatus(bundle.getInt(EXTRA_STATUS)); call.setDirection(bundle.getInt(EXTRA_DIRECTION)); call.setDirection(bundle.getInt(EXTRA_DIRECTION)); call.setControls(new HashSet<>(bundle.getIntegerArrayList(EXTRA_CONTROLS))); call.setControls(new HashSet<>(bundle.getIntegerArrayList(EXTRA_CONTROLS))); Loading @@ -207,6 +222,7 @@ class CallMetadataSyncData { bundle.putByteArray(EXTRA_APP_ICON, mAppIcon); bundle.putByteArray(EXTRA_APP_ICON, mAppIcon); bundle.putString(EXTRA_FACILITATOR_NAME, mFacilitator.getName()); bundle.putString(EXTRA_FACILITATOR_NAME, mFacilitator.getName()); bundle.putString(EXTRA_FACILITATOR_ID, mFacilitator.getIdentifier()); bundle.putString(EXTRA_FACILITATOR_ID, mFacilitator.getIdentifier()); bundle.putString(EXTRA_FACILITATOR_EXT_ID, mFacilitator.getExtendedIdentifier()); bundle.putInt(EXTRA_STATUS, mStatus); bundle.putInt(EXTRA_STATUS, mStatus); bundle.putInt(EXTRA_DIRECTION, mDirection); bundle.putInt(EXTRA_DIRECTION, mDirection); bundle.putIntegerArrayList(EXTRA_CONTROLS, new ArrayList<>(mControls)); bundle.putIntegerArrayList(EXTRA_CONTROLS, new ArrayList<>(mControls)); Loading
services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceCall.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ public class CrossDeviceCall { private final int mUserId; private final int mUserId; @VisibleForTesting boolean mIsEnterprise; @VisibleForTesting boolean mIsEnterprise; private final String mCallingAppPackageName; private final String mCallingAppPackageName; private final String mSerializedPhoneAccountHandle; private String mCallingAppName; private String mCallingAppName; private byte[] mCallingAppIcon; private byte[] mCallingAppIcon; private String mCallerDisplayName; private String mCallerDisplayName; Loading Loading @@ -89,6 +90,8 @@ public class CrossDeviceCall { .equals(handle.getComponentName()); .equals(handle.getComponentName()); mCallingAppPackageName = handle != null mCallingAppPackageName = handle != null ? callDetails.getAccountHandle().getComponentName().getPackageName() : ""; ? callDetails.getAccountHandle().getComponentName().getPackageName() : ""; mSerializedPhoneAccountHandle = handle != null ? handle.getId() + SEPARATOR + handle.getComponentName().flattenToString() : ""; mIsEnterprise = (callDetails.getCallProperties() & Call.Details.PROPERTY_ENTERPRISE_CALL) mIsEnterprise = (callDetails.getCallProperties() & Call.Details.PROPERTY_ENTERPRISE_CALL) == Call.Details.PROPERTY_ENTERPRISE_CALL; == Call.Details.PROPERTY_ENTERPRISE_CALL; final PackageManager packageManager = context.getPackageManager(); final PackageManager packageManager = context.getPackageManager(); Loading Loading @@ -247,6 +250,10 @@ public class CrossDeviceCall { return mCallingAppPackageName; return mCallingAppPackageName; } } public String getSerializedPhoneAccountHandle() { return mSerializedPhoneAccountHandle; } /** /** * Get a human-readable "caller id" to display as the origin of the call. * Get a human-readable "caller id" to display as the origin of the call. * * Loading
services/companion/java/com/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -280,7 +280,7 @@ public class CrossDeviceSyncController { mCallFacilitators.add( mCallFacilitators.add( new CallMetadataSyncData.CallFacilitator( new CallMetadataSyncData.CallFacilitator( defaultOutgoingTelAccount.getLabel().toString(), defaultOutgoingTelAccount.getLabel().toString(), FACILITATOR_ID_SYSTEM)); FACILITATOR_ID_SYSTEM, FACILITATOR_ID_SYSTEM)); } } } } } } Loading Loading @@ -574,6 +574,10 @@ public class CrossDeviceSyncController { case (int) Telecom.CallFacilitator.IDENTIFIER: case (int) Telecom.CallFacilitator.IDENTIFIER: facilitator.setIdentifier(pis.readString(Telecom.CallFacilitator.IDENTIFIER)); facilitator.setIdentifier(pis.readString(Telecom.CallFacilitator.IDENTIFIER)); break; break; case (int) Telecom.CallFacilitator.EXTENDED_IDENTIFIER: facilitator.setExtendedIdentifier( pis.readString(Telecom.CallFacilitator.EXTENDED_IDENTIFIER)); break; default: default: Slog.e(TAG, "Unhandled field in Facilitator:" Slog.e(TAG, "Unhandled field in Facilitator:" + ProtoUtils.currentFieldToString(pis)); + ProtoUtils.currentFieldToString(pis)); Loading Loading @@ -649,6 +653,8 @@ public class CrossDeviceSyncController { final long facilitatorToken = pos.start(Telecom.Call.Origin.FACILITATOR); final long facilitatorToken = pos.start(Telecom.Call.Origin.FACILITATOR); pos.write(Telecom.CallFacilitator.NAME, call.getCallingAppName()); pos.write(Telecom.CallFacilitator.NAME, call.getCallingAppName()); pos.write(Telecom.CallFacilitator.IDENTIFIER, call.getCallingAppPackageName()); pos.write(Telecom.CallFacilitator.IDENTIFIER, call.getCallingAppPackageName()); pos.write(Telecom.CallFacilitator.EXTENDED_IDENTIFIER, call.getSerializedPhoneAccountHandle()); pos.end(facilitatorToken); pos.end(facilitatorToken); pos.end(originToken); pos.end(originToken); pos.write(Telecom.Call.STATUS, call.getStatus()); pos.write(Telecom.Call.STATUS, call.getStatus()); Loading @@ -662,6 +668,8 @@ public class CrossDeviceSyncController { final long facilitatorsToken = pos.start(Telecom.FACILITATORS); final long facilitatorsToken = pos.start(Telecom.FACILITATORS); pos.write(Telecom.CallFacilitator.NAME, facilitator.getName()); pos.write(Telecom.CallFacilitator.NAME, facilitator.getName()); pos.write(Telecom.CallFacilitator.IDENTIFIER, facilitator.getIdentifier()); pos.write(Telecom.CallFacilitator.IDENTIFIER, facilitator.getIdentifier()); pos.write(Telecom.CallFacilitator.EXTENDED_IDENTIFIER, facilitator.getExtendedIdentifier()); pos.end(facilitatorsToken); pos.end(facilitatorsToken); } } pos.end(telecomToken); pos.end(telecomToken); Loading