Move telecom permission to the public API

Make REGISTER_PROVIDER_OR_SUBSCRIPTION and REGISTER_CONNECTION_MANAGER
part of the public API so that they can be used by third-party apps.

Bug: 18114695
Change-Id: I1b8578cbc82e95ea78b4a2166f4a23650a0c375f
diff --git a/api/current.txt b/api/current.txt
index bfe8d7a..5df0a0e 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -113,6 +113,8 @@
     field public static final java.lang.String RECEIVE_SMS = "android.permission.RECEIVE_SMS";
     field public static final java.lang.String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";
     field public static final java.lang.String RECORD_AUDIO = "android.permission.RECORD_AUDIO";
+    field public static final java.lang.String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
+    field public static final java.lang.String REGISTER_PROVIDER_OR_SUBSCRIPTION = "android.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION";
     field public static final java.lang.String REORDER_TASKS = "android.permission.REORDER_TASKS";
     field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";
     field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";
@@ -4403,9 +4405,9 @@
     method public android.content.Intent createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence);
     method public deprecated void exitKeyguardSecurely(android.app.KeyguardManager.OnKeyguardExitResult);
     method public boolean inKeyguardRestrictedInputMode();
+    method public boolean isKeyguardInTrustedState();
     method public boolean isKeyguardLocked();
     method public boolean isKeyguardSecure();
-    method public boolean isKeyguardInTrustedState();
     method public deprecated android.app.KeyguardManager.KeyguardLock newKeyguardLock(java.lang.String);
   }
 
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 15b56c3..8e0cd52 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1269,6 +1269,18 @@
         android:description="@string/permdesc_use_sip"
         android:label="@string/permlab_use_sip" />
 
+    <!-- Protects the ability to register any PhoneAccount with a capability flags of either
+         PhoneAccount#CAPABILITY_CALL_PROVIDER or PhoneAccount#CAPABILITY_SIM_SUBSCRIPTION. -->
+    <permission android:name="android.permission.REGISTER_PROVIDER_OR_SUBSCRIPTION"
+        android:permissionGroup="android.permission-group.PHONE_CALLS"
+        android:description="@string/permdesc_register_provider"
+        android:label="@string/permlab_register_provider" />
+
+    <permission android:name="android.permission.REGISTER_CONNECTION_MANAGER"
+        android:permissionGroup="android.permission-group.PHONE_CALLS"
+        android:description="@string/permdesc_connection_manager"
+        android:label="@string/permlab_connection_manager" />
+
     <!-- @SystemApi Allows an application to bind to InCallService implementations.
          @hide -->
     <permission android:name="android.permission.BIND_INCALL_SERVICE"
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 56cf56d..c6437f3 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -2115,6 +2115,16 @@
     <string name="permdesc_use_sip">Allows the app to make and receive SIP calls.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permlab_register_provider">register new telecom connection</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permdesc_register_provider">Allows the app to register new telecom connections.</string>
+
+    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permlab_connection_manager">manage telecom connections</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permdesc_connection_manager">Allows the app to manage telecom connections.</string>
+
+    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_bind_incall_service">interact with in-call screen</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permdesc_bind_incall_service">Allows the app to control when and how the user sees the in-call screen.</string>