Loading src/com/android/settings/datausage/CellDataPreference.java +35 −4 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.provider.Settings.Global; import android.support.annotation.VisibleForTesting; import android.support.v4.content.res.TypedArrayUtils; import android.support.v7.preference.PreferenceViewHolder; import android.telephony.SubscriptionInfo; Loading @@ -51,7 +52,8 @@ public class CellDataPreference extends CustomDialogPreference implements Templa public boolean mChecked; public boolean mMultiSimDialog; private TelephonyManager mTelephonyManager; private SubscriptionManager mSubscriptionManager; @VisibleForTesting SubscriptionManager mSubscriptionManager; public CellDataPreference(Context context, AttributeSet attrs) { super(context, attrs, TypedArrayUtils.getAttr(context, Loading Loading @@ -85,12 +87,19 @@ public class CellDataPreference extends CustomDialogPreference implements Templa @Override public void onAttached() { super.onAttached(); mListener.setListener(true, mSubId, getContext()); mDataStateListener.setListener(true, mSubId, getContext()); if (mSubscriptionManager!= null) { mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener); } } @Override public void onDetached() { mListener.setListener(false, mSubId, getContext()); mDataStateListener.setListener(false, mSubId, getContext()); if (mSubscriptionManager!= null) { mSubscriptionManager.removeOnSubscriptionsChangedListener( mOnSubscriptionsChangeListener); } super.onDetached(); } Loading @@ -101,10 +110,14 @@ public class CellDataPreference extends CustomDialogPreference implements Templa } mSubscriptionManager = SubscriptionManager.from(getContext()); mTelephonyManager = TelephonyManager.from(getContext()); mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener); if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { mSubId = subId; setKey(getKey() + subId); } updateEnabled(); updateChecked(); } Loading @@ -112,6 +125,12 @@ public class CellDataPreference extends CustomDialogPreference implements Templa setChecked(mTelephonyManager.getDataEnabled(mSubId)); } private void updateEnabled() { // If this subscription is not active, for example, SIM card is taken out, we disable // the button. setEnabled(mSubscriptionManager.getActiveSubscriptionInfo(mSubId) != null); } @Override protected void performClick(View view) { final Context context = getContext(); Loading Loading @@ -237,7 +256,19 @@ public class CellDataPreference extends CustomDialogPreference implements Templa } } private final DataStateListener mListener = new DataStateListener() { @VisibleForTesting final SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangeListener = new SubscriptionManager.OnSubscriptionsChangedListener() { @Override public void onSubscriptionsChanged() { if (DataUsageSummary.LOGD) { Log.d(TAG, "onSubscriptionsChanged"); } updateEnabled(); } }; private final DataStateListener mDataStateListener = new DataStateListener() { @Override public void onChange(boolean selfChange) { updateChecked(); Loading tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java 0 → 100644 +83 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.settings.datausage; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.PreferenceViewHolder; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class CellDataPreferenceTest { @Mock private SubscriptionManager mSubscriptionManager; @Mock private SubscriptionInfo mSubInfo; private Context mContext; private PreferenceViewHolder mHolder; private CellDataPreference mPreference; private SubscriptionManager.OnSubscriptionsChangedListener mListener; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mPreference = new CellDataPreference(mContext, null); mListener = mPreference.mOnSubscriptionsChangeListener; LayoutInflater inflater = LayoutInflater.from(mContext); final View view = inflater.inflate(mPreference.getLayoutResource(), new LinearLayout(mContext), false); mHolder = PreferenceViewHolder.createInstanceForTests(view); } @Test public void noActiveSub_shouldDisable() { mPreference.mSubscriptionManager = mSubscriptionManager; mListener.onSubscriptionsChanged(); assertThat(mPreference.isEnabled()).isFalse(); when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())) .thenReturn(mSubInfo); mListener.onSubscriptionsChanged(); assertThat(mPreference.isEnabled()).isTrue(); } } Loading
src/com/android/settings/datausage/CellDataPreference.java +35 −4 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.provider.Settings.Global; import android.support.annotation.VisibleForTesting; import android.support.v4.content.res.TypedArrayUtils; import android.support.v7.preference.PreferenceViewHolder; import android.telephony.SubscriptionInfo; Loading @@ -51,7 +52,8 @@ public class CellDataPreference extends CustomDialogPreference implements Templa public boolean mChecked; public boolean mMultiSimDialog; private TelephonyManager mTelephonyManager; private SubscriptionManager mSubscriptionManager; @VisibleForTesting SubscriptionManager mSubscriptionManager; public CellDataPreference(Context context, AttributeSet attrs) { super(context, attrs, TypedArrayUtils.getAttr(context, Loading Loading @@ -85,12 +87,19 @@ public class CellDataPreference extends CustomDialogPreference implements Templa @Override public void onAttached() { super.onAttached(); mListener.setListener(true, mSubId, getContext()); mDataStateListener.setListener(true, mSubId, getContext()); if (mSubscriptionManager!= null) { mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener); } } @Override public void onDetached() { mListener.setListener(false, mSubId, getContext()); mDataStateListener.setListener(false, mSubId, getContext()); if (mSubscriptionManager!= null) { mSubscriptionManager.removeOnSubscriptionsChangedListener( mOnSubscriptionsChangeListener); } super.onDetached(); } Loading @@ -101,10 +110,14 @@ public class CellDataPreference extends CustomDialogPreference implements Templa } mSubscriptionManager = SubscriptionManager.from(getContext()); mTelephonyManager = TelephonyManager.from(getContext()); mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener); if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { mSubId = subId; setKey(getKey() + subId); } updateEnabled(); updateChecked(); } Loading @@ -112,6 +125,12 @@ public class CellDataPreference extends CustomDialogPreference implements Templa setChecked(mTelephonyManager.getDataEnabled(mSubId)); } private void updateEnabled() { // If this subscription is not active, for example, SIM card is taken out, we disable // the button. setEnabled(mSubscriptionManager.getActiveSubscriptionInfo(mSubId) != null); } @Override protected void performClick(View view) { final Context context = getContext(); Loading Loading @@ -237,7 +256,19 @@ public class CellDataPreference extends CustomDialogPreference implements Templa } } private final DataStateListener mListener = new DataStateListener() { @VisibleForTesting final SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangeListener = new SubscriptionManager.OnSubscriptionsChangedListener() { @Override public void onSubscriptionsChanged() { if (DataUsageSummary.LOGD) { Log.d(TAG, "onSubscriptionsChanged"); } updateEnabled(); } }; private final DataStateListener mDataStateListener = new DataStateListener() { @Override public void onChange(boolean selfChange) { updateChecked(); Loading
tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java 0 → 100644 +83 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.android.settings.datausage; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.PreferenceViewHolder; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class CellDataPreferenceTest { @Mock private SubscriptionManager mSubscriptionManager; @Mock private SubscriptionInfo mSubInfo; private Context mContext; private PreferenceViewHolder mHolder; private CellDataPreference mPreference; private SubscriptionManager.OnSubscriptionsChangedListener mListener; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mPreference = new CellDataPreference(mContext, null); mListener = mPreference.mOnSubscriptionsChangeListener; LayoutInflater inflater = LayoutInflater.from(mContext); final View view = inflater.inflate(mPreference.getLayoutResource(), new LinearLayout(mContext), false); mHolder = PreferenceViewHolder.createInstanceForTests(view); } @Test public void noActiveSub_shouldDisable() { mPreference.mSubscriptionManager = mSubscriptionManager; mListener.onSubscriptionsChanged(); assertThat(mPreference.isEnabled()).isFalse(); when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())) .thenReturn(mSubInfo); mListener.onSubscriptionsChanged(); assertThat(mPreference.isEnabled()).isTrue(); } }