Loading src/com/android/settings/network/TetherPreferenceController.java +22 −0 Original line number Diff line number Diff line Loading @@ -18,7 +18,10 @@ package com.android.settings.network; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Uri; Loading Loading @@ -67,6 +70,7 @@ public class TetherPreferenceController extends PreferenceController private SettingObserver mAirplaneModeObserver; private Preference mPreference; private TetherBroadcastReceiver mTetherReceiver; @VisibleForTesting(otherwise = VisibleForTesting.NONE) TetherPreferenceController() { Loading Loading @@ -131,6 +135,11 @@ public class TetherPreferenceController extends PreferenceController if (mAirplaneModeObserver == null) { mAirplaneModeObserver = new SettingObserver(); } if (mTetherReceiver == null) { mTetherReceiver = new TetherBroadcastReceiver(); } mContext.registerReceiver( mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); mContext.getContentResolver() .registerContentObserver(mAirplaneModeObserver.uri, false, mAirplaneModeObserver); } Loading @@ -140,6 +149,9 @@ public class TetherPreferenceController extends PreferenceController if (mAirplaneModeObserver != null) { mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver); } if (mTetherReceiver != null) { mContext.unregisterReceiver(mTetherReceiver); } } @Override Loading Loading @@ -238,4 +250,14 @@ public class TetherPreferenceController extends PreferenceController } } } @VisibleForTesting class TetherBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { updateSummary(); } } } tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java +36 −0 Original line number Diff line number Diff line Loading @@ -20,7 +20,10 @@ package com.android.settings.network; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.provider.Settings; Loading @@ -41,6 +44,7 @@ import org.robolectric.util.ReflectionHelpers; import java.util.concurrent.atomic.AtomicReference; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading Loading @@ -150,4 +154,36 @@ public class TetherPreferenceControllerTest { verify(mPreference).setSummary(R.string.switch_off_text); } @Test public void onResume_shouldRegisterTetherReceiver() { when(mContext.getContentResolver()).thenReturn(mock(ContentResolver.class)); mController.onResume(); verify(mContext).registerReceiver( any(TetherPreferenceController.TetherBroadcastReceiver.class), any(IntentFilter.class)); } @Test public void onPause_shouldUnregisterTetherReceiver() { when(mContext.getContentResolver()).thenReturn(mock(ContentResolver.class)); mController.onResume(); mController.onPause(); verify(mContext).unregisterReceiver( any(TetherPreferenceController.TetherBroadcastReceiver.class)); } @Test public void tetherStatesChanged_shouldUpdateSummary() { final Context context = RuntimeEnvironment.application; ReflectionHelpers.setField(mController, "mContext", context); mController.onResume(); context.sendBroadcast(new Intent(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); verify(mController).updateSummary(); } } Loading
src/com/android/settings/network/TetherPreferenceController.java +22 −0 Original line number Diff line number Diff line Loading @@ -18,7 +18,10 @@ package com.android.settings.network; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Uri; Loading Loading @@ -67,6 +70,7 @@ public class TetherPreferenceController extends PreferenceController private SettingObserver mAirplaneModeObserver; private Preference mPreference; private TetherBroadcastReceiver mTetherReceiver; @VisibleForTesting(otherwise = VisibleForTesting.NONE) TetherPreferenceController() { Loading Loading @@ -131,6 +135,11 @@ public class TetherPreferenceController extends PreferenceController if (mAirplaneModeObserver == null) { mAirplaneModeObserver = new SettingObserver(); } if (mTetherReceiver == null) { mTetherReceiver = new TetherBroadcastReceiver(); } mContext.registerReceiver( mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); mContext.getContentResolver() .registerContentObserver(mAirplaneModeObserver.uri, false, mAirplaneModeObserver); } Loading @@ -140,6 +149,9 @@ public class TetherPreferenceController extends PreferenceController if (mAirplaneModeObserver != null) { mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver); } if (mTetherReceiver != null) { mContext.unregisterReceiver(mTetherReceiver); } } @Override Loading Loading @@ -238,4 +250,14 @@ public class TetherPreferenceController extends PreferenceController } } } @VisibleForTesting class TetherBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { updateSummary(); } } }
tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java +36 −0 Original line number Diff line number Diff line Loading @@ -20,7 +20,10 @@ package com.android.settings.network; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.provider.Settings; Loading @@ -41,6 +44,7 @@ import org.robolectric.util.ReflectionHelpers; import java.util.concurrent.atomic.AtomicReference; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading Loading @@ -150,4 +154,36 @@ public class TetherPreferenceControllerTest { verify(mPreference).setSummary(R.string.switch_off_text); } @Test public void onResume_shouldRegisterTetherReceiver() { when(mContext.getContentResolver()).thenReturn(mock(ContentResolver.class)); mController.onResume(); verify(mContext).registerReceiver( any(TetherPreferenceController.TetherBroadcastReceiver.class), any(IntentFilter.class)); } @Test public void onPause_shouldUnregisterTetherReceiver() { when(mContext.getContentResolver()).thenReturn(mock(ContentResolver.class)); mController.onResume(); mController.onPause(); verify(mContext).unregisterReceiver( any(TetherPreferenceController.TetherBroadcastReceiver.class)); } @Test public void tetherStatesChanged_shouldUpdateSummary() { final Context context = RuntimeEnvironment.application; ReflectionHelpers.setField(mController, "mContext", context); mController.onResume(); context.sendBroadcast(new Intent(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); verify(mController).updateSummary(); } }