Merge "Listener to tether state change on Network & internet page." into oc-dev am: 1dead24890

am: be520a5f34

Change-Id: I31036a30605036e957b421727833b3a9830e4584
This commit is contained in:
Doris Ling
2017-05-25 02:37:59 +00:00
committed by android-build-merger
2 changed files with 58 additions and 0 deletions

View File

@@ -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();
}
}
} }

View File

@@ -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();
}
} }