From dddeb5f25ec9380e59e21f07cd2c39180b0c145e Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Wed, 30 Jan 2019 16:39:29 -0800 Subject: [PATCH] Use correct default subscription id to get default network template. - when launching the app info page and no network template is defined in the launch arguments, use the correct default data subscription id to check whether mobile network template should be used or not. Change-Id: If9341abf3416c775a2b7407c1d6d0b33f4aad67f Fixes: 120098637 Test: make RunSettingsRoboTests --- .../settings/datausage/AppDataUsage.java | 6 ++-- .../settings/datausage/AppDataUsageTest.java | 29 ++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-) 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); + } }