diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/TetherSettings.java | 97 |
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; |