Merge "Listener to tether state change on Network & internet page." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1dead24890
@@ -18,7 +18,10 @@ package com.android.settings.network;
|
|||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothPan;
|
import android.bluetooth.BluetoothPan;
|
||||||
import android.bluetooth.BluetoothProfile;
|
import android.bluetooth.BluetoothProfile;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@@ -67,6 +70,7 @@ public class TetherPreferenceController extends PreferenceController
|
|||||||
|
|
||||||
private SettingObserver mAirplaneModeObserver;
|
private SettingObserver mAirplaneModeObserver;
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
|
private TetherBroadcastReceiver mTetherReceiver;
|
||||||
|
|
||||||
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
|
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
|
||||||
TetherPreferenceController() {
|
TetherPreferenceController() {
|
||||||
@@ -131,6 +135,11 @@ public class TetherPreferenceController extends PreferenceController
|
|||||||
if (mAirplaneModeObserver == null) {
|
if (mAirplaneModeObserver == null) {
|
||||||
mAirplaneModeObserver = new SettingObserver();
|
mAirplaneModeObserver = new SettingObserver();
|
||||||
}
|
}
|
||||||
|
if (mTetherReceiver == null) {
|
||||||
|
mTetherReceiver = new TetherBroadcastReceiver();
|
||||||
|
}
|
||||||
|
mContext.registerReceiver(
|
||||||
|
mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED));
|
||||||
mContext.getContentResolver()
|
mContext.getContentResolver()
|
||||||
.registerContentObserver(mAirplaneModeObserver.uri, false, mAirplaneModeObserver);
|
.registerContentObserver(mAirplaneModeObserver.uri, false, mAirplaneModeObserver);
|
||||||
}
|
}
|
||||||
@@ -140,6 +149,9 @@ public class TetherPreferenceController extends PreferenceController
|
|||||||
if (mAirplaneModeObserver != null) {
|
if (mAirplaneModeObserver != null) {
|
||||||
mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver);
|
mContext.getContentResolver().unregisterContentObserver(mAirplaneModeObserver);
|
||||||
}
|
}
|
||||||
|
if (mTetherReceiver != null) {
|
||||||
|
mContext.unregisterReceiver(mTetherReceiver);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -238,4 +250,14 @@ public class TetherPreferenceController extends PreferenceController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
class TetherBroadcastReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
updateSummary();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,10 @@ package com.android.settings.network;
|
|||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.bluetooth.BluetoothPan;
|
import android.bluetooth.BluetoothPan;
|
||||||
import android.bluetooth.BluetoothProfile;
|
import android.bluetooth.BluetoothProfile;
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -41,6 +44,7 @@ import org.robolectric.util.ReflectionHelpers;
|
|||||||
|
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
@@ -150,4 +154,36 @@ public class TetherPreferenceControllerTest {
|
|||||||
verify(mPreference).setSummary(R.string.switch_off_text);
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user