diff --git a/src/com/android/settings/network/TetherPreferenceController.java b/src/com/android/settings/network/TetherPreferenceController.java index 31a8526fb8e..b865ea5b268 100644 --- a/src/com/android/settings/network/TetherPreferenceController.java +++ b/src/com/android/settings/network/TetherPreferenceController.java @@ -25,6 +25,7 @@ import android.content.IntentFilter; import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Uri; +import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; @@ -37,6 +38,7 @@ import com.android.settings.TetherSettings; import com.android.settings.core.PreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; +import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; @@ -44,11 +46,12 @@ import com.android.settingslib.core.lifecycle.events.OnResume; import java.util.concurrent.atomic.AtomicReference; import static android.os.UserManager.DISALLOW_CONFIG_TETHERING; + import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; public class TetherPreferenceController extends PreferenceController - implements LifecycleObserver, OnResume, OnPause, OnDestroy { + implements LifecycleObserver, OnCreate, OnResume, OnPause, OnDestroy { private static final String KEY_TETHER_SETTINGS = "tether_settings"; @@ -56,7 +59,8 @@ public class TetherPreferenceController extends PreferenceController private final AtomicReference mBluetoothPan; private final ConnectivityManager mConnectivityManager; private final BluetoothAdapter mBluetoothAdapter; - private final BluetoothProfile.ServiceListener mBtProfileServiceListener = + @VisibleForTesting + final BluetoothProfile.ServiceListener mBtProfileServiceListener = new android.bluetooth.BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { mBluetoothPan.set((BluetoothPan) proxy); @@ -92,10 +96,6 @@ public class TetherPreferenceController extends PreferenceController if (lifecycle != null) { lifecycle.addObserver(this); } - if (mBluetoothAdapter != null) { - mBluetoothAdapter.getProfileProxy(context, mBtProfileServiceListener, - BluetoothProfile.PAN); - } } @Override @@ -130,6 +130,14 @@ public class TetherPreferenceController extends PreferenceController return KEY_TETHER_SETTINGS; } + @Override + public void onCreate(Bundle savedInstanceState) { + if (mBluetoothAdapter != null) { + mBluetoothAdapter.getProfileProxy(mContext, mBtProfileServiceListener, + BluetoothProfile.PAN); + } + } + @Override public void onResume() { if (mAirplaneModeObserver == null) { @@ -139,7 +147,7 @@ public class TetherPreferenceController extends PreferenceController mTetherReceiver = new TetherBroadcastReceiver(); } mContext.registerReceiver( - mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); + mTetherReceiver, new IntentFilter(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); mContext.getContentResolver() .registerContentObserver(mAirplaneModeObserver.uri, false, mAirplaneModeObserver); } diff --git a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java index 4ae8c2c703f..b8a6d28a253 100644 --- a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java @@ -16,7 +16,6 @@ package com.android.settings.network; - import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; import android.bluetooth.BluetoothProfile; @@ -77,6 +76,14 @@ public class TetherPreferenceControllerTest { ReflectionHelpers.setField(mController, "mPreference", mPreference); } + @Test + public void lifeCycle_onCreate_shouldInitBluetoothPan() { + mController.onCreate(null); + + verify(mBluetoothAdapter).getProfileProxy(mContext, mController.mBtProfileServiceListener, + BluetoothProfile.PAN); + } + @Test public void goThroughLifecycle_shouldDestoryBluetoothProfile() { final BluetoothPan pan = mock(BluetoothPan.class); @@ -161,7 +168,8 @@ public class TetherPreferenceControllerTest { mController.onResume(); verify(mContext).registerReceiver( - any(TetherPreferenceController.TetherBroadcastReceiver.class), any(IntentFilter.class)); + any(TetherPreferenceController.TetherBroadcastReceiver.class), + any(IntentFilter.class)); } @Test @@ -172,7 +180,7 @@ public class TetherPreferenceControllerTest { mController.onPause(); verify(mContext).unregisterReceiver( - any(TetherPreferenceController.TetherBroadcastReceiver.class)); + any(TetherPreferenceController.TetherBroadcastReceiver.class)); } @Test