Include Context in ImsServiceProxy Compat Layer

Context was not being set correctly in
ImsServiceProxyCompat, causing a phone process
crash.

Bug: 72124004
Test: Boot, make sure phone process doesn't crash
Change-Id: Ib8fe268c8b5d6d05fe62bf4c87c574e5c6e55bd8
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 8f2e763..6482ba4 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -42,6 +42,7 @@
 import com.android.ims.internal.IImsConfig;
 import com.android.ims.internal.IImsEcbm;
 import com.android.ims.internal.IImsMultiEndpoint;
+import com.android.ims.internal.IImsRegistration;
 import com.android.ims.internal.IImsRegistrationCallback;
 import com.android.ims.internal.IImsRegistrationListener;
 import com.android.ims.internal.IImsUt;
@@ -1520,8 +1521,10 @@
                     checkAndThrowExceptionIfServiceUnavailable();
                     // TODO: Remove once new MmTelFeature is merged in
                     mImsServiceProxy.addRegistrationListener(mImsRegistrationListenerProxy);
-                    mImsServiceProxy.getRegistration().addRegistrationCallback(
-                            mRegistrationCallback);
+                    IImsRegistration regBinder = mImsServiceProxy.getRegistration();
+                    if (regBinder != null) {
+                        regBinder.addRegistrationCallback(mRegistrationCallback);
+                    }
                     log("Registration Callback/Listener registered.");
                     // Only record if there isn't a RemoteException.
                     mHasRegisteredForProxy = true;
@@ -1964,7 +1967,7 @@
         if (!mConfigDynamicBind) {
             // Deprecated method of binding
             Rlog.i(TAG, "Creating ImsService using ServiceManager");
-            mImsServiceProxy = ImsServiceProxyCompat.create(mPhoneId, mDeathRecipient);
+            mImsServiceProxy = ImsServiceProxyCompat.create(mContext, mPhoneId, mDeathRecipient);
         } else {
             Rlog.i(TAG, "Creating ImsService using ImsResolver");
             mImsServiceProxy = ImsServiceProxy.create(mContext, mPhoneId);
diff --git a/src/java/com/android/ims/ImsServiceProxy.java b/src/java/com/android/ims/ImsServiceProxy.java
index 543e31e..a2df36b 100644
--- a/src/java/com/android/ims/ImsServiceProxy.java
+++ b/src/java/com/android/ims/ImsServiceProxy.java
@@ -144,15 +144,15 @@
         }
     };
 
-    public ImsServiceProxy(int slotId, IBinder binder, int featureType) {
+    public ImsServiceProxy(Context context, int slotId, IBinder binder, int featureType) {
         mSlotId = slotId;
         mBinder = binder;
         mSupportedFeature = featureType;
+        mContext = context;
     }
 
     public ImsServiceProxy(Context context, int slotId, int featureType) {
-        this(slotId, null, featureType);
-        mContext = context;
+        this(context, slotId, null, featureType);
     }
 
     public @Nullable IImsRegistration getRegistration() {
diff --git a/src/java/com/android/ims/ImsServiceProxyCompat.java b/src/java/com/android/ims/ImsServiceProxyCompat.java
index 44f72e6..a6d1865 100644
--- a/src/java/com/android/ims/ImsServiceProxyCompat.java
+++ b/src/java/com/android/ims/ImsServiceProxyCompat.java
@@ -54,7 +54,8 @@
      */
     private static final String IMS_SERVICE = "ims";
 
-    public static ImsServiceProxyCompat create(int slotId, IBinder.DeathRecipient recipient) {
+    public static ImsServiceProxyCompat create(Context context, int slotId,
+            IBinder.DeathRecipient recipient) {
         IBinder binder = ServiceManager.checkService(IMS_SERVICE);
 
         if (binder != null) {
@@ -66,11 +67,11 @@
 
         // If the proxy is created with a null binder, subsequent calls that depend on a live
         // binder will fail, causing this structure to be torn down and created again.
-        return new ImsServiceProxyCompat(slotId, binder);
+        return new ImsServiceProxyCompat(context, slotId, binder);
     }
 
-    public ImsServiceProxyCompat(int slotId, IBinder binder) {
-        super(slotId, binder, SERVICE_ID);
+    public ImsServiceProxyCompat(Context context, int slotId, IBinder binder) {
+        super(context, slotId, binder, SERVICE_ID);
     }
 
     @Override