summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/config.xml3
-rw-r--r--src/com/android/server/telecom/DefaultDialerCache.java2
-rw-r--r--src/com/android/server/telecom/InCallController.java2
-rw-r--r--src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java2
-rw-r--r--src/com/android/server/telecom/RoleManagerAdapter.java9
-rw-r--r--src/com/android/server/telecom/TelecomServiceImpl.java19
-rw-r--r--src/com/android/server/telecom/TelecomSystem.java2
-rw-r--r--tests/src/com/android/server/telecom/tests/ComponentContextFixture.java4
-rw-r--r--tests/src/com/android/server/telecom/tests/InCallControllerTests.java39
-rw-r--r--tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java40
-rw-r--r--tests/src/com/android/server/telecom/tests/TelecomSystemTest.java7
11 files changed, 76 insertions, 53 deletions
diff --git a/res/values/config.xml b/res/values/config.xml
index c0e96690a..540bece13 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -27,9 +27,6 @@
handle playing of the tones. -->
<bool name="allow_local_dtmf_tones">true</bool>
- <!-- Package name for the default in-call UI and dialer [DO NOT TRANSLATE] -->
- <string name="ui_default_package" translatable="false">com.android.dialer</string>
-
<!-- Class name for the default in-call UI Service [DO NOT TRANSLATE] -->
<string name="incall_default_class" translatable="false">com.android.incallui.InCallServiceImpl</string>
diff --git a/src/com/android/server/telecom/DefaultDialerCache.java b/src/com/android/server/telecom/DefaultDialerCache.java
index 3b36119fb..749cb401a 100644
--- a/src/com/android/server/telecom/DefaultDialerCache.java
+++ b/src/com/android/server/telecom/DefaultDialerCache.java
@@ -141,7 +141,7 @@ public class DefaultDialerCache {
mContext = context;
mDefaultDialerManagerAdapter = defaultDialerManagerAdapter;
mLock = lock;
- mSystemDialerName = mContext.getResources().getString(R.string.ui_default_package);
+ mSystemDialerName = TelecomServiceImpl.getSystemDialerPackage(mContext);
IntentFilter packageIntentFilter = new IntentFilter();
packageIntentFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index f221f91f1..ac894e9f6 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -750,7 +750,7 @@ public class InCallController extends CallsManagerListenerBase {
Resources resources = mContext.getResources();
mSystemInCallComponentName = new ComponentName(
- resources.getString(R.string.ui_default_package),
+ TelecomServiceImpl.getSystemDialerPackage(mContext),
resources.getString(R.string.incall_default_class));
mSystemStateHelper.addListener(mSystemStateListener);
diff --git a/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java b/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java
index 440bb1037..0cfdc4c3c 100644
--- a/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java
+++ b/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java
@@ -464,7 +464,7 @@ public class NewOutgoingCallIntentBroadcaster {
Intent systemDialerIntent = new Intent();
final Resources resources = mContext.getResources();
systemDialerIntent.setClassName(
- resources.getString(R.string.ui_default_package),
+ TelecomServiceImpl.getSystemDialerPackage(mContext),
resources.getString(R.string.dialer_default_class));
systemDialerIntent.setAction(Intent.ACTION_DIAL);
systemDialerIntent.setData(handle);
diff --git a/src/com/android/server/telecom/RoleManagerAdapter.java b/src/com/android/server/telecom/RoleManagerAdapter.java
index b7e347eb4..647d7bf20 100644
--- a/src/com/android/server/telecom/RoleManagerAdapter.java
+++ b/src/com/android/server/telecom/RoleManagerAdapter.java
@@ -16,6 +16,7 @@
package com.android.server.telecom;
+import android.content.Intent;
import android.os.UserHandle;
import java.util.List;
@@ -25,6 +26,14 @@ import java.util.List;
* and remove direct dependencies.
*/
public interface RoleManagerAdapter {
+
+ /**
+ * The name of the dialer role.
+ *
+ * @see Intent#ACTION_DIAL
+ */
+ String ROLE_DIALER = "android.app.role.DIALER";
+
/**
* Returns the package name of the app which fills the {@link android.app.role.RoleManager} call
* redirection role.
diff --git a/src/com/android/server/telecom/TelecomServiceImpl.java b/src/com/android/server/telecom/TelecomServiceImpl.java
index f70261259..189ce2977 100644
--- a/src/com/android/server/telecom/TelecomServiceImpl.java
+++ b/src/com/android/server/telecom/TelecomServiceImpl.java
@@ -28,14 +28,13 @@ import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
import android.Manifest;
import android.app.ActivityManager;
import android.app.AppOpsManager;
+import android.app.role.RoleManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Binder;
@@ -44,7 +43,6 @@ import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.provider.Settings;
-import android.telecom.CallScreeningService;
import android.telecom.Log;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
@@ -57,7 +55,9 @@ import android.text.TextUtils;
import android.util.EventLog;
import com.android.internal.telecom.ITelecomService;
+import com.android.internal.util.ArrayUtils;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
import com.android.server.telecom.components.UserCallIntentProcessorFactory;
import com.android.server.telecom.settings.BlockedNumbersActivity;
@@ -676,7 +676,7 @@ public class TelecomServiceImpl {
// No need to synchronize
Resources resources = mContext.getResources();
return new ComponentName(
- resources.getString(R.string.ui_default_package),
+ TelecomServiceImpl.getSystemDialerPackage(mContext),
resources.getString(R.string.dialer_default_class));
} finally {
Log.endSession();
@@ -712,7 +712,7 @@ public class TelecomServiceImpl {
public String getSystemDialerPackage() {
try {
Log.startSession("TSI.gSDP");
- return mContext.getResources().getString(R.string.ui_default_package);
+ return TelecomServiceImpl.getSystemDialerPackage(mContext);
} finally {
Log.endSession();
}
@@ -1747,6 +1747,15 @@ public class TelecomServiceImpl {
mNuisanceCallReporter = nuisanceCallReporter;
}
+ public static String getSystemDialerPackage(Context context) {
+ String[] holders = context.getResources().getStringArray(
+ com.android.internal.R.array.config_defaultRoleHolders);
+ return TextUtils.withoutPrefix(RoleManagerAdapter.ROLE_DIALER + ": ",
+ Preconditions.checkNotNull(
+ ArrayUtils.find(holders, s -> s.startsWith(RoleManagerAdapter.ROLE_DIALER)),
+ "No system dialer configured"));
+ }
+
public ITelecomService.Stub getBinder() {
return mBinderImpl;
}
diff --git a/src/com/android/server/telecom/TelecomSystem.java b/src/com/android/server/telecom/TelecomSystem.java
index 0e3234e2b..371427992 100644
--- a/src/com/android/server/telecom/TelecomSystem.java
+++ b/src/com/android/server/telecom/TelecomSystem.java
@@ -256,7 +256,7 @@ public class TelecomSystem {
mContactsAsyncHelper, mLock);
EmergencyCallHelper emergencyCallHelper = new EmergencyCallHelper(mContext,
- mContext.getResources().getString(R.string.ui_default_package), timeoutsAdapter);
+ TelecomServiceImpl.getSystemDialerPackage(mContext), timeoutsAdapter);
InCallControllerFactory inCallControllerFactory = new InCallControllerFactory() {
@Override
diff --git a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
index 553c2637a..964436f05 100644
--- a/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ComponentContextFixture.java
@@ -546,6 +546,10 @@ public class ComponentContextFixture implements TestFixture<Context> {
when(mResources.getBoolean(eq(id))).thenReturn(value);
}
+ public void putStringArrayResource(int id, String[] value) {
+ when(mResources.getStringArray(eq(id))).thenReturn(value);
+ }
+
public void setTelecomManager(TelecomManager telecomManager) {
mTelecomManager = telecomManager;
}
diff --git a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
index 04b7d96d3..79f4fc4b5 100644
--- a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
+++ b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
@@ -16,6 +16,22 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.matches;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.Manifest;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -27,8 +43,8 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.os.Bundle;
-import android.os.IBinder;
import android.os.Handler;
+import android.os.IBinder;
import android.os.Looper;
import android.os.UserHandle;
import android.telecom.InCallService;
@@ -71,23 +87,6 @@ import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.matches;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.verify;
-
@RunWith(JUnit4.class)
public class InCallControllerTests extends TelecomTestCase {
@Mock CallsManager mMockCallsManager;
@@ -126,7 +125,9 @@ public class InCallControllerTests extends TelecomTestCase {
MockitoAnnotations.initMocks(this);
when(mMockCall.getAnalytics()).thenReturn(new Analytics.CallInfo());
doReturn(mMockResources).when(mMockContext).getResources();
- doReturn(SYS_PKG).when(mMockResources).getString(R.string.ui_default_package);
+ doReturn(new String[] { RoleManagerAdapter.ROLE_DIALER + ": " + SYS_PKG })
+ .when(mMockResources)
+ .getString(com.android.internal.R.array.config_defaultRoleHolders);
doReturn(SYS_CLASS).when(mMockResources).getString(R.string.incall_default_class);
doReturn(true).when(mMockResources).getBoolean(R.bool.grant_location_permission_enabled);
mEmergencyCallHelper = new EmergencyCallHelper(mMockContext, SYS_PKG,
diff --git a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
index 9d363e925..760e4dbbd 100644
--- a/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
+++ b/tests/src/com/android/server/telecom/tests/NewOutgoingCallIntentBroadcasterTest.java
@@ -16,6 +16,23 @@
package com.android.server.telecom.tests;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Matchers.isNotNull;
+import static org.mockito.Matchers.isNull;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.Manifest;
import android.app.Activity;
import android.app.AppOpsManager;
@@ -37,10 +54,10 @@ import android.test.suitebuilder.annotation.SmallTest;
import com.android.server.telecom.Call;
import com.android.server.telecom.CallsManager;
import com.android.server.telecom.NewOutgoingCallIntentBroadcaster;
-import com.android.server.telecom.RoleManagerAdapter;
import com.android.server.telecom.PhoneAccountRegistrar;
import com.android.server.telecom.PhoneNumberUtilsAdapter;
import com.android.server.telecom.PhoneNumberUtilsAdapterImpl;
+import com.android.server.telecom.RoleManagerAdapter;
import com.android.server.telecom.SystemStateHelper;
import com.android.server.telecom.TelecomSystem;
@@ -51,23 +68,6 @@ import org.junit.runners.JUnit4;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.nullable;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isNotNull;
-import static org.mockito.Matchers.isNull;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(JUnit4.class)
public class NewOutgoingCallIntentBroadcasterTest extends TelecomTestCase {
private static class ReceiverIntentPair {
@@ -196,7 +196,9 @@ public class NewOutgoingCallIntentBroadcasterTest extends TelecomTestCase {
String ui_package_string = "sample_string_1";
String dialer_default_class_string = "sample_string_2";
- mComponentContextFixture.putResource(R.string.ui_default_package, ui_package_string);
+ mComponentContextFixture.putStringArrayResource(
+ com.android.internal.R.array.config_defaultRoleHolders,
+ new String[] {RoleManagerAdapter.ROLE_DIALER + ": " + ui_package_string});
mComponentContextFixture.putResource(R.string.dialer_default_class,
dialer_default_class_string);
diff --git a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
index 119739621..1da2e49ad 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
@@ -516,9 +516,10 @@ public class TelecomSystemTest extends TelecomTestCase {
}
private void setupInCallServices() throws Exception {
- mComponentContextFixture.putResource(
- com.android.server.telecom.R.string.ui_default_package,
- mInCallServiceComponentNameX.getPackageName());
+ mComponentContextFixture.putStringArrayResource(
+ com.android.internal.R.array.config_defaultRoleHolders,
+ new String[] { RoleManagerAdapter.ROLE_DIALER + ": "
+ + mInCallServiceComponentNameX.getPackageName() });
mComponentContextFixture.putResource(
com.android.server.telecom.R.string.incall_default_class,
mInCallServiceComponentNameX.getClassName());