Merge "Create entitlement object everytime" into udc-dev
diff --git a/src/com/android/phone/slice/SlicePurchaseController.java b/src/com/android/phone/slice/SlicePurchaseController.java
index e36325e..471f80b 100644
--- a/src/com/android/phone/slice/SlicePurchaseController.java
+++ b/src/com/android/phone/slice/SlicePurchaseController.java
@@ -300,8 +300,7 @@
             mSlicePurchaseControllerBroadcastReceivers = new HashMap<>();
     /** The current network slicing configuration. */
     @Nullable private NetworkSlicingConfig mSlicingConfig;
-    /** Premium network entitlement query API. */
-    @NonNull private final PremiumNetworkEntitlementApi mPremiumNetworkEntitlementApi;
+
     /** LocalDate to use when resetting notification counts. {@code null} except when testing. */
     @Nullable private LocalDate mLocalDate;
     /** The number of times the performance boost notification has been shown today. */
@@ -452,8 +451,6 @@
         mPhone = phone;
         // TODO: Create a cached value for slicing config in DataIndication and initialize here
         mPhone.mCi.registerForSlicingConfigChanged(this, EVENT_SLICING_CONFIG_CHANGED, null);
-        mPremiumNetworkEntitlementApi =
-                new PremiumNetworkEntitlementApi(mPhone, getCarrierConfigs());
         mIsSlicingUpsellEnabled = DeviceConfig.getBoolean(
                 DeviceConfig.NAMESPACE_TELEPHONY, KEY_ENABLE_SLICING_UPSELL, false);
         DeviceConfig.addOnPropertiesChangedListener(
@@ -682,10 +679,20 @@
         }
     }
 
+    /*
+      return a new PremiumNetworkEntitlementApi object.
+     */
+    @VisibleForTesting
+    public PremiumNetworkEntitlementApi getPremiumNetworkEntitlementApi() {
+        return new PremiumNetworkEntitlementApi(mPhone, getCarrierConfigs());
+    }
+
     private void onStartSlicePurchaseApplication(
             @TelephonyManager.PremiumCapability int capability) {
+        final PremiumNetworkEntitlementApi premiumNetworkEntitlementApi =
+                getPremiumNetworkEntitlementApi();
         PremiumNetworkEntitlementResponse premiumNetworkEntitlementResponse =
-                mPremiumNetworkEntitlementApi.checkEntitlementStatus(capability);
+                premiumNetworkEntitlementApi.checkEntitlementStatus(capability);
 
         // invalid response for entitlement check
         if (premiumNetworkEntitlementResponse == null) {
diff --git a/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java b/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java
index 544d7ea..94b9c7c 100644
--- a/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java
+++ b/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java
@@ -151,11 +151,11 @@
         doReturn(CARRIER).when(mSlicePurchaseController).getSimOperator();
         replaceInstance(SlicePurchaseController.class, "sInstances", mSlicePurchaseController,
                 Map.of(PHONE_ID, mSlicePurchaseController));
-        replaceInstance(SlicePurchaseController.class, "mPremiumNetworkEntitlementApi",
-                mSlicePurchaseController, mPremiumNetworkEntitlementApi);
         replaceInstance(SlicePurchaseController.class, "mIsSlicingUpsellEnabled",
                 mSlicePurchaseController, true);
         mEntitlementResponse = new PremiumNetworkEntitlementResponse();
+        doReturn(mPremiumNetworkEntitlementApi).when(mSlicePurchaseController)
+                .getPremiumNetworkEntitlementApi();
         doReturn(mEntitlementResponse).when(mPremiumNetworkEntitlementApi)
                 .checkEntitlementStatus(anyInt());
     }