Add Call Redirection app into RoleManagerAdapter in Telecom
Test: Treehugger
Bug: 64959558
Change-Id: I3c7e8b0828567d0fd10ee79e49bfeeddbc447d5b
diff --git a/src/com/android/server/telecom/RoleManagerAdapter.java b/src/com/android/server/telecom/RoleManagerAdapter.java
index 9a0545e..f6cdc6c 100644
--- a/src/com/android/server/telecom/RoleManagerAdapter.java
+++ b/src/com/android/server/telecom/RoleManagerAdapter.java
@@ -27,6 +27,21 @@
public interface RoleManagerAdapter {
/**
* Returns the package name of the app which fills the {@link android.app.role.RoleManager} call
+ * redirection role.
+ * @return the package name of the app filling the role, {@code null} otherwise}.
+ */
+ String getDefaultCallRedirectionApp();
+
+ /**
+ * Override the {@link android.app.role.RoleManager} call redirection app with another value.
+ * Used for testing purposes only.
+ * @param packageName Package name of the app to fill the call redirection role. Where
+ * {@code null}, the override is removed.
+ */
+ void setTestDefaultCallRedirectionApp(String packageName);
+
+ /**
+ * Returns the package name of the app which fills the {@link android.app.role.RoleManager} call
* screening role.
* @return the package name of the app filling the role, {@code null} otherwise}.
*/
diff --git a/src/com/android/server/telecom/RoleManagerAdapterImpl.java b/src/com/android/server/telecom/RoleManagerAdapterImpl.java
index c6142f9..c912cc8 100644
--- a/src/com/android/server/telecom/RoleManagerAdapterImpl.java
+++ b/src/com/android/server/telecom/RoleManagerAdapterImpl.java
@@ -27,6 +27,8 @@
public class RoleManagerAdapterImpl implements RoleManagerAdapter {
// TODO: replace with actual role manager const.
+ private static final String ROLE_CALL_REDIRECTION = "android.app.role.PROXY_CALLING_APP";
+ // TODO: replace with actual role manager const.
private static final String ROLE_CAR_MODE_DIALER = "android.app.role.ROLE_CAR_MODE_DIALER";
// TODO: replace with actual role manager const.
private static final String ROLE_CALL_SCREENING = "android.app.role.CALL_SCREENING";
@@ -34,6 +36,7 @@
private static final String ROLE_CALL_COMPANION_APP =
"android.app.role.ROLE_CALL_COMPANION_APP";
+ private String mOverrideDefaultCallRedirectionApp = null;
private String mOverrideDefaultCallScreeningApp = null;
private String mOverrideDefaultCarModeApp = null;
private List<String> mOverrideCallCompanionApps = new ArrayList<>();
@@ -43,6 +46,19 @@
}
@Override
+ public String getDefaultCallRedirectionApp() {
+ if (mOverrideDefaultCallRedirectionApp != null) {
+ return mOverrideDefaultCallRedirectionApp;
+ }
+ return getRoleManagerCallRedirectionApp();
+ }
+
+ @Override
+ public void setTestDefaultCallRedirectionApp(String packageName) {
+ mOverrideDefaultCallRedirectionApp = packageName;
+ }
+
+ @Override
public String getDefaultCallScreeningApp() {
if (mOverrideDefaultCallScreeningApp != null) {
return mOverrideDefaultCallScreeningApp;
@@ -89,6 +105,11 @@
mCurrentUserHandle = currentUserHandle;
}
+ private String getRoleManagerCallRedirectionApp() {
+ // TODO: Link in RoleManager
+ return null;
+ }
+
private String getRoleManagerCallScreeningApp() {
// TODO: Link in RoleManager
return null;
@@ -110,6 +131,15 @@
* @param pw The {@code IndentingPrintWriter} to write the state to.
*/
public void dump(IndentingPrintWriter pw) {
+ pw.print("DefaultCallRedirectionApp: ");
+ if (mOverrideDefaultCallRedirectionApp != null) {
+ pw.print("(override ");
+ pw.print(mOverrideDefaultCallRedirectionApp);
+ pw.print(") ");
+ pw.print(getRoleManagerCallRedirectionApp());
+ }
+ pw.println();
+
pw.print("DefaultCallScreeningApp: ");
if (mOverrideDefaultCallScreeningApp != null) {
pw.print("(override ");
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index dc66440..14d54b0 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -1669,6 +1669,28 @@
}
@Override
+ public void setTestDefaultCallRedirectionApp(String packageName) {
+ try {
+ Log.startSession("TSI.sTDCRA");
+ enforceModifyPermission();
+ if (!Build.IS_USERDEBUG) {
+ throw new SecurityException("Test-only API.");
+ }
+ synchronized (mLock) {
+ long token = Binder.clearCallingIdentity();
+ try {
+ mCallsManager.getRoleManagerAdapter().setTestDefaultCallRedirectionApp(
+ packageName);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+ @Override
public void setTestDefaultCallScreeningApp(String packageName) {
try {
Log.startSession("TSI.sTDCSA");