Merge "Correct the check for capability"
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 831b537..de41309 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -247,6 +247,12 @@
                 }
 
                 case EVENT_DO_FETCH_DEFAULT: {
+                    // Clear in-memory cache for carrier app config, so when carrier app gets
+                    // uninstalled, no stale config is left.
+                    if (mConfigFromCarrierApp[phoneId] != null
+                            && getCarrierPackageForPhoneId(phoneId) == null) {
+                        mConfigFromCarrierApp[phoneId] = null;
+                    }
                     // Restore persistent override values.
                     PersistableBundle config = restoreConfigFromXml(
                             mPlatformCarrierConfigPackage, OVERRIDE_PACKAGE_ADDITION, phoneId);
@@ -1142,12 +1148,6 @@
      * have a saved config file to use instead.
      */
     private void updateConfigForPhoneId(int phoneId) {
-        // Clear in-memory cache for carrier app config, so when carrier app gets uninstalled, no
-        // stale config is left.
-        if (mConfigFromCarrierApp[phoneId] != null &&
-                getCarrierPackageForPhoneId(phoneId) == null) {
-            mConfigFromCarrierApp[phoneId] = null;
-        }
         mHandler.sendMessage(mHandler.obtainMessage(EVENT_DO_FETCH_DEFAULT, phoneId, -1));
     }
 
diff --git a/testapps/TestRcsApp/TestApp/AndroidManifest.xml b/testapps/TestRcsApp/TestApp/AndroidManifest.xml
index 05745c8..f439883 100644
--- a/testapps/TestRcsApp/TestApp/AndroidManifest.xml
+++ b/testapps/TestRcsApp/TestApp/AndroidManifest.xml
@@ -19,8 +19,8 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.google.android.sample.rcsclient"
-    android:versionCode="7"
-    android:versionName="1.0.6">
+    android:versionCode="8"
+    android:versionName="1.0.7">
 
     <uses-sdk
         android:minSdkVersion="30"
diff --git a/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpManager.java b/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpManager.java
index 81abe89..58a6eef 100644
--- a/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpManager.java
+++ b/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpManager.java
@@ -31,17 +31,19 @@
 /** Provides creating and managing {@link MsrpSession} */
 public class MsrpManager {
     private final ImsPdnNetworkFetcher imsPdnNetworkFetcher;
+    private Context context;
 
     public MsrpManager(Context context) {
+        this.context = context;
         imsPdnNetworkFetcher = new ImsPdnNetworkFetcher(context);
     }
 
-    private static MsrpSession createMsrpSession(ConnectivityManager manager,
+    private MsrpSession createMsrpSession(ConnectivityManager manager,
             Network network, String host, int port, String localIp, int localPort,
             MsrpSessionListener listener) throws IOException {
         Socket socket = network.getSocketFactory().createSocket(host, port,
                 InetAddress.getByName(localIp), localPort);
-        MsrpSession msrpSession = new MsrpSession(manager,
+        MsrpSession msrpSession = new MsrpSession(manager, context,
                 network, socket, listener);
         Thread thread = new Thread(msrpSession::run);
         thread.start();
diff --git a/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java b/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java
index 3f8b986..3a95a0a 100644
--- a/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java
+++ b/testapps/TestRcsApp/aosp_test_rcsclient/src/com/android/libraries/rcs/simpleclient/protocol/msrp/MsrpSession.java
@@ -19,6 +19,7 @@
 import static com.android.libraries.rcs.simpleclient.protocol.msrp.MsrpChunk.Method.SEND;
 import static com.android.libraries.rcs.simpleclient.protocol.msrp.MsrpChunk.Method.UNKNOWN;
 
+import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.Network;
 import android.net.QosCallback;
@@ -27,6 +28,7 @@
 import android.net.QosSessionAttributes;
 import android.net.QosSocketInfo;
 import android.util.Log;
+import android.widget.Toast;
 
 import androidx.annotation.NonNull;
 import androidx.concurrent.futures.CallbackToFutureAdapter;
@@ -49,6 +51,8 @@
  * Provides MSRP sending and receiving messages ability.
  */
 public class MsrpSession {
+    private static final String DEDICATED_BEARER_SUCCESS = "Dedicated bearer succeeded";
+    private static final String DEDICATED_BEARER_ERROR = "Dedicated bearer error";
     private final Network network;
     private final Socket socket;
     private final InputStream input;
@@ -59,11 +63,13 @@
     private final MsrpSessionListener listener;
     private final ConnectivityManager connectivityManager;
     private final String LOG_TAG = MsrpSession.class.getSimpleName();
+    private final Context context;
 
     /** Creates a new MSRP session on the given listener and the provided streams. */
-    MsrpSession(ConnectivityManager connectivityManager, Network network, Socket socket,
-            MsrpSessionListener listener) throws IOException {
+    MsrpSession(ConnectivityManager connectivityManager, Context context, Network network,
+            Socket socket, MsrpSessionListener listener) throws IOException {
         this.connectivityManager = connectivityManager;
+        this.context = context;
         this.network = network;
         this.socket = socket;
         this.input = socket.getInputStream();
@@ -76,6 +82,7 @@
     private final QosCallback qosCallback = new QosCallback() {
         @Override
         public void onError(@NonNull QosCallbackException exception) {
+            Toast.makeText(context, DEDICATED_BEARER_ERROR, Toast.LENGTH_SHORT).show();
             Log.e(LOG_TAG, "onError: " + exception.toString());
             super.onError(exception);
         }
@@ -83,6 +90,7 @@
         @Override
         public void onQosSessionAvailable(@NonNull QosSession session,
                 @NonNull QosSessionAttributes sessionAttributes) {
+            Toast.makeText(context, DEDICATED_BEARER_SUCCESS, Toast.LENGTH_SHORT).show();
             Log.d(LOG_TAG, "onQosSessionAvailable: " + session.toString() + ", "
                     + sessionAttributes.toString());
             super.onQosSessionAvailable(session, sessionAttributes);
@@ -90,6 +98,7 @@
 
         @Override
         public void onQosSessionLost(@NonNull QosSession session) {
+            Toast.makeText(context, DEDICATED_BEARER_ERROR, Toast.LENGTH_SHORT).show();
             Log.e(LOG_TAG, "onQosSessionLost: " + session.toString());
             super.onQosSessionLost(session);
         }