summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/TetherSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/TetherSettings.java')
-rw-r--r--src/com/android/settings/TetherSettings.java97
1 files changed, 64 insertions, 33 deletions
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 812ab41bf2..74a0897fc7 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -154,9 +154,7 @@ public class TetherSettings extends RestrictedSettingsFragment
BluetoothProfile.PAN);
}
- mUsbTether = (SwitchPreference) findPreference(KEY_USB_TETHER_SETTINGS);
- mBluetoothTether = (SwitchPreference) findPreference(KEY_ENABLE_BLUETOOTH_TETHERING);
- mEthernetTether = (SwitchPreference) findPreference(KEY_ENABLE_ETHERNET_TETHERING);
+ setupTetherPreference();
setFooterPreferenceTitle();
mDataSaverBackend.addListener(this);
@@ -208,6 +206,13 @@ public class TetherSettings extends RestrictedSettingsFragment
super.onDestroy();
}
+ @VisibleForTesting
+ void setupTetherPreference() {
+ mUsbTether = (SwitchPreference) findPreference(KEY_USB_TETHER_SETTINGS);
+ mBluetoothTether = (SwitchPreference) findPreference(KEY_ENABLE_BLUETOOTH_TETHERING);
+ mEthernetTether = (SwitchPreference) findPreference(KEY_ENABLE_ETHERNET_TETHERING);
+ }
+
@Override
public void onDataSaverChanged(boolean isDataSaving) {
mDataSaverEnabled = isDataSaving;
@@ -281,6 +286,8 @@ public class TetherSettings extends RestrictedSettingsFragment
}
}
updateState();
+ } else if (action.equals(BluetoothPan.ACTION_TETHERING_STATE_CHANGED)) {
+ updateState();
}
}
}
@@ -297,32 +304,13 @@ public class TetherSettings extends RestrictedSettingsFragment
return;
}
- final Activity activity = getActivity();
mStartTetheringCallback = new OnStartTetheringCallback(this);
mTetheringEventCallback = new TetheringEventCallback();
mTm.registerTetheringEventCallback(new HandlerExecutor(mHandler), mTetheringEventCallback);
mMassStorageActive = Environment.MEDIA_SHARED.equals(Environment.getExternalStorageState());
- mTetherChangeReceiver = new TetherChangeReceiver();
- IntentFilter filter = new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED);
- Intent intent = activity.registerReceiver(mTetherChangeReceiver, filter);
-
- filter = new IntentFilter();
- filter.addAction(UsbManager.ACTION_USB_STATE);
- activity.registerReceiver(mTetherChangeReceiver, filter);
-
- filter = new IntentFilter();
- filter.addAction(Intent.ACTION_MEDIA_SHARED);
- filter.addAction(Intent.ACTION_MEDIA_UNSHARED);
- filter.addDataScheme("file");
- activity.registerReceiver(mTetherChangeReceiver, filter);
-
- filter = new IntentFilter();
- filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
- activity.registerReceiver(mTetherChangeReceiver, filter);
-
- if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
+ registerReceiver();
mEthernetListener = new EthernetListener();
if (mEm != null)
@@ -348,10 +336,38 @@ public class TetherSettings extends RestrictedSettingsFragment
mEthernetListener = null;
}
+ @VisibleForTesting
+ void registerReceiver() {
+ final Activity activity = getActivity();
+
+ mTetherChangeReceiver = new TetherChangeReceiver();
+ IntentFilter filter = new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED);
+ final Intent intent = activity.registerReceiver(mTetherChangeReceiver, filter);
+
+ filter = new IntentFilter();
+ filter.addAction(UsbManager.ACTION_USB_STATE);
+ activity.registerReceiver(mTetherChangeReceiver, filter);
+
+ filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_MEDIA_SHARED);
+ filter.addAction(Intent.ACTION_MEDIA_UNSHARED);
+ filter.addDataScheme("file");
+ activity.registerReceiver(mTetherChangeReceiver, filter);
+
+ filter = new IntentFilter();
+ filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ filter.addAction(BluetoothPan.ACTION_TETHERING_STATE_CHANGED);
+ activity.registerReceiver(mTetherChangeReceiver, filter);
+
+ if (intent != null) mTetherChangeReceiver.onReceive(activity, intent);
+ }
+
private void updateState() {
- String[] available = mCm.getTetherableIfaces();
- String[] tethered = mCm.getTetheredIfaces();
- String[] errored = mCm.getTetheringErroredIfaces();
+ final ConnectivityManager cm =
+ (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ final String[] available = cm.getTetherableIfaces();
+ final String[] tethered = cm.getTetheredIfaces();
+ final String[] errored = cm.getTetheringErroredIfaces();
updateState(available, tethered, errored);
}
@@ -362,7 +378,8 @@ public class TetherSettings extends RestrictedSettingsFragment
updateEthernetState(available, tethered);
}
- private void updateUsbState(String[] available, String[] tethered,
+ @VisibleForTesting
+ void updateUsbState(String[] available, String[] tethered,
String[] errored) {
boolean usbAvailable = mUsbConnected && !mMassStorageActive;
int usbError = ConnectivityManager.TETHER_ERROR_NO_ERROR;
@@ -400,20 +417,33 @@ public class TetherSettings extends RestrictedSettingsFragment
}
}
- private void updateBluetoothState() {
+ @VisibleForTesting
+ int getBluetoothState() {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null) {
+ return BluetoothAdapter.ERROR;
+ }
+ return adapter.getState();
+ }
+
+ @VisibleForTesting
+ boolean isBluetoothTetheringOn() {
+ final BluetoothPan bluetoothPan = mBluetoothPan.get();
+ return bluetoothPan != null && bluetoothPan.isTetheringOn();
+ }
+
+ private void updateBluetoothState() {
+ final int btState = getBluetoothState();
+ if (btState == BluetoothAdapter.ERROR) {
return;
}
- int btState = adapter.getState();
+
if (btState == BluetoothAdapter.STATE_TURNING_OFF) {
mBluetoothTether.setEnabled(false);
} else if (btState == BluetoothAdapter.STATE_TURNING_ON) {
mBluetoothTether.setEnabled(false);
} else {
- BluetoothPan bluetoothPan = mBluetoothPan.get();
- if (btState == BluetoothAdapter.STATE_ON && bluetoothPan != null
- && bluetoothPan.isTetheringOn()) {
+ if (btState == BluetoothAdapter.STATE_ON && isBluetoothTetheringOn()) {
mBluetoothTether.setChecked(true);
mBluetoothTether.setEnabled(!mDataSaverEnabled);
} else {
@@ -423,7 +453,8 @@ public class TetherSettings extends RestrictedSettingsFragment
}
}
- private void updateEthernetState(String[] available, String[] tethered) {
+ @VisibleForTesting
+ void updateEthernetState(String[] available, String[] tethered) {
boolean isAvailable = false;
boolean isTethered = false;