diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java index 4f388436474..998234bcb5f 100644 --- a/src/com/android/settings/datausage/AppDataUsage.java +++ b/src/com/android/settings/datausage/AppDataUsage.java @@ -26,6 +26,7 @@ import android.graphics.drawable.Drawable; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.UserHandle; +import android.telephony.SubscriptionManager; import android.util.ArraySet; import android.util.IconDrawableFactory; import android.util.Log; @@ -88,7 +89,8 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC private CycleAdapter mCycleAdapter; private List mUsageData; - private NetworkTemplate mTemplate; + @VisibleForTesting + NetworkTemplate mTemplate; private AppItem mAppItem; private Intent mAppSettingsIntent; private SpinnerPreference mCycle; @@ -108,7 +110,7 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC : null; if (mTemplate == null) { mTemplate = DataUsageUtils.getDefaultTemplate(mContext, - DataUsageUtils.getDefaultSubscriptionId(mContext)); + SubscriptionManager.getDefaultDataSubscriptionId()); } if (mAppItem == null) { int uid = (args != null) ? args.getInt(AppInfoBase.ARG_PACKAGE_UID, -1) diff --git a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java index 12559f4c637..28555546d87 100644 --- a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java +++ b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java @@ -35,15 +35,19 @@ import android.content.pm.PackageManager; import android.net.NetworkPolicyManager; import android.net.NetworkTemplate; import android.os.Bundle; +import android.telephony.SubscriptionManager; import android.text.format.DateUtils; import android.util.ArraySet; import android.view.View; +import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; +import com.android.settings.applications.AppInfoBase; import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settings.testutils.shadow.ShadowDataUsageUtils; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal; import com.android.settings.widget.EntityHeaderController; @@ -60,9 +64,11 @@ import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.Robolectric; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowSubscriptionManager; import org.robolectric.util.ReflectionHelpers; import java.util.ArrayList; @@ -82,7 +88,6 @@ public class AppDataUsageTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - FakeFeatureFactory.setupForTest(); } @After @@ -277,4 +282,26 @@ public class AppDataUsageTest { assertThat(uids.get(1)).isEqualTo(456); assertThat(uids.get(2)).isEqualTo(789); } + + @Config(shadows = {ShadowDataUsageUtils.class, ShadowSubscriptionManager.class}) + public void onCreate_noNetworkTemplateAndInvalidDataSubscription_shouldUseWifiTemplate() { + ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true; + ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true; + ShadowDataUsageUtils.HAS_SIM = false; + ShadowSubscriptionManager.setDefaultDataSubscriptionId( + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + mFragment = spy(new AppDataUsage()); + doReturn(Robolectric.setupActivity(FragmentActivity.class)).when(mFragment).getActivity(); + doReturn(RuntimeEnvironment.application).when(mFragment).getContext(); + ReflectionHelpers.setField(mFragment, "mDashboardFeatureProvider", + FakeFeatureFactory.setupForTest().dashboardFeatureProvider); + final Bundle args = new Bundle(); + args.putInt(AppInfoBase.ARG_PACKAGE_UID, 123123); + mFragment.setArguments(args); + + mFragment.onCreate(Bundle.EMPTY); + + assertThat(mFragment.mTemplate.getMatchRule()) + .isEqualTo(NetworkTemplate.MATCH_WIFI_WILDCARD); + } }