Loading src/com/android/settings/core/BasePreferenceController.java +0 −2 Original line number Diff line number Diff line Loading @@ -72,8 +72,6 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl protected final String mPreferenceKey; protected Lifecycle mLifecycle; /** * Instantiate a controller as specified controller type and user-defined key. * <p/> Loading src/com/android/settings/datausage/DataUsageSummary.java +1 −1 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements Indexable final Activity activity = getActivity(); final ArrayList<AbstractPreferenceController> controllers = new ArrayList<>(); mSummaryController = new DataUsageSummaryPreferenceController(context, this, activity); new DataUsageSummaryPreferenceController(activity, getLifecycle(), this); controllers.add(mSummaryController); getLifecycle().addObserver(mSummaryController); return controllers; Loading src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +31 −18 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.util.Log; import android.util.RecurrenceRule; import com.android.internal.util.CollectionUtils; import android.support.v7.widget.RecyclerView; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; Loading @@ -63,8 +64,10 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll private static final float RELATIVE_SIZE_LARGE = 1.25f * 1.25f; // (1/0.8)^2 private static final float RELATIVE_SIZE_SMALL = 1.0f / RELATIVE_SIZE_LARGE; // 0.8^2 private final Fragment mFragment; private final Activity mActivity; private final EntityHeaderController mEntityHeaderController; private final Lifecycle mLifecycle; private final DataUsageSummary mDataUsageSummary; private final DataUsageController mDataUsageController; private final DataUsageInfoController mDataInfoController; private final NetworkTemplate mDefaultTemplate; Loading Loading @@ -96,27 +99,30 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll private Intent mManageSubscriptionIntent; public DataUsageSummaryPreferenceController(Context context, Fragment fragment, Activity activity) { super(context, KEY); public DataUsageSummaryPreferenceController(Activity activity, Lifecycle lifecycle, DataUsageSummary dataUsageSummary) { super(activity, KEY); mFragment = fragment; mActivity = activity; final int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context); mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId); NetworkPolicyManager policyManager = NetworkPolicyManager.from(context); mEntityHeaderController = EntityHeaderController.newInstance(activity, dataUsageSummary, null); mLifecycle = lifecycle; mDataUsageSummary = dataUsageSummary; final int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(activity); mDefaultTemplate = DataUsageUtils.getDefaultTemplate(activity, defaultSubId); NetworkPolicyManager policyManager = NetworkPolicyManager.from(activity); mPolicyEditor = new NetworkPolicyEditor(policyManager); mHasMobileData = DataUsageUtils.hasMobileData(context) mHasMobileData = DataUsageUtils.hasMobileData(activity) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; mDataUsageController = new DataUsageController(context); mDataUsageController = new DataUsageController(activity); mDataInfoController = new DataUsageInfoController(); if (mHasMobileData) { mDataUsageTemplate = R.string.cell_data_template; } else if (DataUsageUtils.hasWifiRadio(context)) { } else if (DataUsageUtils.hasWifiRadio(activity)) { mDataUsageTemplate = R.string.wifi_data_template; } else { mDataUsageTemplate = R.string.ethernet_data_template; Loading @@ -128,15 +134,18 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll @VisibleForTesting DataUsageSummaryPreferenceController( Context context, DataUsageController dataUsageController, DataUsageInfoController dataInfoController, NetworkTemplate defaultTemplate, NetworkPolicyEditor policyEditor, int dataUsageTemplate, boolean hasMobileData, SubscriptionManager subscriptionManager) { super(context, KEY); SubscriptionManager subscriptionManager, Activity activity, Lifecycle lifecycle, EntityHeaderController entityHeaderController, DataUsageSummary dataUsageSummary) { super(activity, KEY); mDataUsageController = dataUsageController; mDataInfoController = dataInfoController; mDefaultTemplate = defaultTemplate; Loading @@ -144,13 +153,17 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll mDataUsageTemplate = dataUsageTemplate; mHasMobileData = hasMobileData; mSubscriptionManager = subscriptionManager; mFragment = null; mActivity = null; mActivity = activity; mLifecycle = lifecycle; mEntityHeaderController = entityHeaderController; mDataUsageSummary = dataUsageSummary; } @Override public void onStart() { EntityHeaderController.newInstance(mActivity, mFragment, null).styleActionBar(mActivity); RecyclerView view = mDataUsageSummary.getListView(); mEntityHeaderController.setRecyclerView(view, mLifecycle); mEntityHeaderController.styleActionBar(mActivity); } @VisibleForTesting Loading tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +63 −6 Original line number Diff line number Diff line Loading @@ -25,27 +25,41 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.NetworkTemplate; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.applications.AppInfoWithHeaderTest; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.net.DataUsageController; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.concurrent.TimeUnit; import android.support.v7.widget.RecyclerView; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = ShadowEntityHeaderController.class) public class DataUsageSummaryPreferenceControllerTest { private static final long UPDATE_BACKOFF_MS = TimeUnit.MINUTES.toMillis(13); Loading @@ -68,7 +82,15 @@ public class DataUsageSummaryPreferenceControllerTest { private NetworkTemplate mNetworkTemplate; @Mock private SubscriptionManager mSubscriptionManager; @Mock private Lifecycle mLifecycle; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private EntityHeaderController mHeaderController; @Mock private DataUsageSummary mDataUsageSummary; private FakeFeatureFactory mFactory; private Activity mActivity; private Context mContext; private DataUsageSummaryPreferenceController mController; Loading @@ -79,15 +101,27 @@ public class DataUsageSummaryPreferenceControllerTest { doReturn("%1$s %2%s").when(mContext) .getString(com.android.internal.R.string.fileSizeSuffix); mActivity = Robolectric.setupActivity(Activity.class); mFactory = FakeFeatureFactory.setupForTest(); when(mFactory.metricsFeatureProvider.getMetricsCategory(any(Object.class))) .thenReturn(MetricsProto.MetricsEvent.SETTINGS_APP_NOTIF_CATEGORY); ShadowEntityHeaderController.setUseMock(mHeaderController); mController = new DataUsageSummaryPreferenceController( mContext, mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, null); null, mActivity, null, null, null); } @After public void tearDown() { ShadowEntityHeaderController.reset(); } @Test Loading Loading @@ -240,14 +274,14 @@ public class DataUsageSummaryPreferenceControllerTest { @Test public void testMobileData_preferenceAvailable() { mController = new DataUsageSummaryPreferenceController( mContext, mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, mSubscriptionManager); mSubscriptionManager, mActivity, null, null, null); final SubscriptionInfo subInfo = new SubscriptionInfo(0, "123456", 0, "name", "carrier", 0, 0, "number", 0, null, 123, 456, "ZX"); Loading @@ -258,19 +292,42 @@ public class DataUsageSummaryPreferenceControllerTest { @Test public void testMobileData_preferenceDisabled() { mController = new DataUsageSummaryPreferenceController( mContext, mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, mSubscriptionManager); mSubscriptionManager, mActivity, null, null, null); when(mSubscriptionManager.getDefaultDataSubscriptionInfo()).thenReturn(null); assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_UNSUPPORTED); } @Test public void testMobileData_entityHeaderSet() { final RecyclerView recyclerView = new RecyclerView(mActivity); mController = new DataUsageSummaryPreferenceController( mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, mSubscriptionManager, mActivity, mLifecycle, mHeaderController, mDataUsageSummary); when(mDataUsageSummary.getListView()).thenReturn(recyclerView); mController.onStart(); verify(mHeaderController) .setRecyclerView(any(RecyclerView.class), any(Lifecycle.class)); verify(mHeaderController).styleActionBar(any(Activity.class)); } private DataUsageController.DataUsageInfo createTestDataUsageInfo(long now) { DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo(); info.carrier = CARRIER_NAME; Loading Loading
src/com/android/settings/core/BasePreferenceController.java +0 −2 Original line number Diff line number Diff line Loading @@ -72,8 +72,6 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl protected final String mPreferenceKey; protected Lifecycle mLifecycle; /** * Instantiate a controller as specified controller type and user-defined key. * <p/> Loading
src/com/android/settings/datausage/DataUsageSummary.java +1 −1 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ public class DataUsageSummary extends DataUsageBaseFragment implements Indexable final Activity activity = getActivity(); final ArrayList<AbstractPreferenceController> controllers = new ArrayList<>(); mSummaryController = new DataUsageSummaryPreferenceController(context, this, activity); new DataUsageSummaryPreferenceController(activity, getLifecycle(), this); controllers.add(mSummaryController); getLifecycle().addObserver(mSummaryController); return controllers; Loading
src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +31 −18 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.util.Log; import android.util.RecurrenceRule; import com.android.internal.util.CollectionUtils; import android.support.v7.widget.RecyclerView; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; Loading @@ -63,8 +64,10 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll private static final float RELATIVE_SIZE_LARGE = 1.25f * 1.25f; // (1/0.8)^2 private static final float RELATIVE_SIZE_SMALL = 1.0f / RELATIVE_SIZE_LARGE; // 0.8^2 private final Fragment mFragment; private final Activity mActivity; private final EntityHeaderController mEntityHeaderController; private final Lifecycle mLifecycle; private final DataUsageSummary mDataUsageSummary; private final DataUsageController mDataUsageController; private final DataUsageInfoController mDataInfoController; private final NetworkTemplate mDefaultTemplate; Loading Loading @@ -96,27 +99,30 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll private Intent mManageSubscriptionIntent; public DataUsageSummaryPreferenceController(Context context, Fragment fragment, Activity activity) { super(context, KEY); public DataUsageSummaryPreferenceController(Activity activity, Lifecycle lifecycle, DataUsageSummary dataUsageSummary) { super(activity, KEY); mFragment = fragment; mActivity = activity; final int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context); mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId); NetworkPolicyManager policyManager = NetworkPolicyManager.from(context); mEntityHeaderController = EntityHeaderController.newInstance(activity, dataUsageSummary, null); mLifecycle = lifecycle; mDataUsageSummary = dataUsageSummary; final int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(activity); mDefaultTemplate = DataUsageUtils.getDefaultTemplate(activity, defaultSubId); NetworkPolicyManager policyManager = NetworkPolicyManager.from(activity); mPolicyEditor = new NetworkPolicyEditor(policyManager); mHasMobileData = DataUsageUtils.hasMobileData(context) mHasMobileData = DataUsageUtils.hasMobileData(activity) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; mDataUsageController = new DataUsageController(context); mDataUsageController = new DataUsageController(activity); mDataInfoController = new DataUsageInfoController(); if (mHasMobileData) { mDataUsageTemplate = R.string.cell_data_template; } else if (DataUsageUtils.hasWifiRadio(context)) { } else if (DataUsageUtils.hasWifiRadio(activity)) { mDataUsageTemplate = R.string.wifi_data_template; } else { mDataUsageTemplate = R.string.ethernet_data_template; Loading @@ -128,15 +134,18 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll @VisibleForTesting DataUsageSummaryPreferenceController( Context context, DataUsageController dataUsageController, DataUsageInfoController dataInfoController, NetworkTemplate defaultTemplate, NetworkPolicyEditor policyEditor, int dataUsageTemplate, boolean hasMobileData, SubscriptionManager subscriptionManager) { super(context, KEY); SubscriptionManager subscriptionManager, Activity activity, Lifecycle lifecycle, EntityHeaderController entityHeaderController, DataUsageSummary dataUsageSummary) { super(activity, KEY); mDataUsageController = dataUsageController; mDataInfoController = dataInfoController; mDefaultTemplate = defaultTemplate; Loading @@ -144,13 +153,17 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll mDataUsageTemplate = dataUsageTemplate; mHasMobileData = hasMobileData; mSubscriptionManager = subscriptionManager; mFragment = null; mActivity = null; mActivity = activity; mLifecycle = lifecycle; mEntityHeaderController = entityHeaderController; mDataUsageSummary = dataUsageSummary; } @Override public void onStart() { EntityHeaderController.newInstance(mActivity, mFragment, null).styleActionBar(mActivity); RecyclerView view = mDataUsageSummary.getListView(); mEntityHeaderController.setRecyclerView(view, mLifecycle); mEntityHeaderController.styleActionBar(mActivity); } @VisibleForTesting Loading
tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +63 −6 Original line number Diff line number Diff line Loading @@ -25,27 +25,41 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.NetworkTemplate; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.applications.AppInfoWithHeaderTest; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowEntityHeaderController; import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.net.DataUsageController; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import java.util.concurrent.TimeUnit; import android.support.v7.widget.RecyclerView; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = ShadowEntityHeaderController.class) public class DataUsageSummaryPreferenceControllerTest { private static final long UPDATE_BACKOFF_MS = TimeUnit.MINUTES.toMillis(13); Loading @@ -68,7 +82,15 @@ public class DataUsageSummaryPreferenceControllerTest { private NetworkTemplate mNetworkTemplate; @Mock private SubscriptionManager mSubscriptionManager; @Mock private Lifecycle mLifecycle; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private EntityHeaderController mHeaderController; @Mock private DataUsageSummary mDataUsageSummary; private FakeFeatureFactory mFactory; private Activity mActivity; private Context mContext; private DataUsageSummaryPreferenceController mController; Loading @@ -79,15 +101,27 @@ public class DataUsageSummaryPreferenceControllerTest { doReturn("%1$s %2%s").when(mContext) .getString(com.android.internal.R.string.fileSizeSuffix); mActivity = Robolectric.setupActivity(Activity.class); mFactory = FakeFeatureFactory.setupForTest(); when(mFactory.metricsFeatureProvider.getMetricsCategory(any(Object.class))) .thenReturn(MetricsProto.MetricsEvent.SETTINGS_APP_NOTIF_CATEGORY); ShadowEntityHeaderController.setUseMock(mHeaderController); mController = new DataUsageSummaryPreferenceController( mContext, mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, null); null, mActivity, null, null, null); } @After public void tearDown() { ShadowEntityHeaderController.reset(); } @Test Loading Loading @@ -240,14 +274,14 @@ public class DataUsageSummaryPreferenceControllerTest { @Test public void testMobileData_preferenceAvailable() { mController = new DataUsageSummaryPreferenceController( mContext, mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, mSubscriptionManager); mSubscriptionManager, mActivity, null, null, null); final SubscriptionInfo subInfo = new SubscriptionInfo(0, "123456", 0, "name", "carrier", 0, 0, "number", 0, null, 123, 456, "ZX"); Loading @@ -258,19 +292,42 @@ public class DataUsageSummaryPreferenceControllerTest { @Test public void testMobileData_preferenceDisabled() { mController = new DataUsageSummaryPreferenceController( mContext, mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, mSubscriptionManager); mSubscriptionManager, mActivity, null, null, null); when(mSubscriptionManager.getDefaultDataSubscriptionInfo()).thenReturn(null); assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_UNSUPPORTED); } @Test public void testMobileData_entityHeaderSet() { final RecyclerView recyclerView = new RecyclerView(mActivity); mController = new DataUsageSummaryPreferenceController( mDataUsageController, mDataInfoController, mNetworkTemplate, mPolicyEditor, R.string.cell_data_template, true, mSubscriptionManager, mActivity, mLifecycle, mHeaderController, mDataUsageSummary); when(mDataUsageSummary.getListView()).thenReturn(recyclerView); mController.onStart(); verify(mHeaderController) .setRecyclerView(any(RecyclerView.class), any(Lifecycle.class)); verify(mHeaderController).styleActionBar(any(Activity.class)); } private DataUsageController.DataUsageInfo createTestDataUsageInfo(long now) { DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo(); info.carrier = CARRIER_NAME; Loading