Loading src/com/android/settings/SecuritySettings.java +6 −1 Original line number Diff line number Diff line Loading @@ -175,6 +175,12 @@ public class SecuritySettings extends SettingsPreferenceFragment return MetricsEvent.SECURITY; } @Override public void onAttach(Context context) { super.onAttach(context); mLocationcontroller = new LocationPreferenceController(context, getLifecycle()); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -205,7 +211,6 @@ public class SecuritySettings extends SettingsPreferenceFragment mTrustAgentClickIntent = savedInstanceState.getParcelable(TRUST_AGENT_CLICK_INTENT); } mLocationcontroller = new LocationPreferenceController(activity); mManageDeviceAdminPreferenceController = new ManageDeviceAdminPreferenceController(activity); mEnterprisePrivacyPreferenceController Loading src/com/android/settings/location/LocationPreferenceController.java +45 −5 Original line number Diff line number Diff line Loading @@ -15,20 +15,46 @@ */ package com.android.settings.location; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.provider.Settings.Secure; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.PreferenceController; import com.android.settings.core.lifecycle.Lifecycle; import com.android.settings.core.lifecycle.LifecycleObserver; import com.android.settings.core.lifecycle.events.OnPause; import com.android.settings.core.lifecycle.events.OnResume; public class LocationPreferenceController extends PreferenceController { public class LocationPreferenceController extends PreferenceController implements LifecycleObserver, OnResume, OnPause { private static final String KEY_LOCATION = "location"; private Context mContext; private Preference mPreference; public LocationPreferenceController(Context context) { @VisibleForTesting BroadcastReceiver mLocationProvidersChangedReceiver; public LocationPreferenceController(Context context, Lifecycle lifecycle) { super(context); mContext = context; mLocationProvidersChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(LocationManager.PROVIDERS_CHANGED_ACTION)) { updateSummary(); } } }; if (lifecycle != null) { lifecycle.addObserver(this); } } @Override Loading @@ -37,6 +63,21 @@ public class LocationPreferenceController extends PreferenceController { mPreference = screen.findPreference(KEY_LOCATION); } @Override public void onResume() { if (mLocationProvidersChangedReceiver != null) { mContext.registerReceiver(mLocationProvidersChangedReceiver, new IntentFilter( LocationManager.PROVIDERS_CHANGED_ACTION)); } } @Override public void onPause() { if (mLocationProvidersChangedReceiver != null) { mContext.unregisterReceiver(mLocationProvidersChangedReceiver); } } @Override public void updateState(Preference preference) { preference.setSummary(getLocationSummary(mContext)); Loading Loading @@ -79,5 +120,4 @@ public class LocationPreferenceController extends PreferenceController { } return 0; } } tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java +48 −17 Original line number Diff line number Diff line Loading @@ -15,7 +15,11 @@ */ package com.android.settings.location; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.provider.Settings.Secure; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; Loading @@ -24,6 +28,7 @@ import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -31,10 +36,11 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -46,6 +52,7 @@ public class LocationPreferenceControllerTest { @Mock private PreferenceScreen mScreen; private Lifecycle mLifecycle; private LocationPreferenceController mController; @Mock(answer = Answers.RETURNS_DEEP_STUBS) Loading @@ -54,7 +61,8 @@ public class LocationPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); mController = new LocationPreferenceController(mContext); mLifecycle = new Lifecycle(); mController = new LocationPreferenceController(mContext, mLifecycle); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); } Loading Loading @@ -129,4 +137,27 @@ public class LocationPreferenceControllerTest { R.string.location_mode_high_accuracy_title); } @Test public void onResume_shouldRegisterObserver() { mLifecycle.onResume(); verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class)); } @Test public void onPause_shouldUnregisterObserver() { mLifecycle.onPause(); verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); } @Test public void locationProvidersChangedReceiver_updatesPreferenceSummary() { mController.displayPreference(mScreen); mController.onResume(); mController.mLocationProvidersChangedReceiver.onReceive( mContext, new Intent().setAction(LocationManager.PROVIDERS_CHANGED_ACTION)); verify(mPreference).setSummary(any()); } } Loading
src/com/android/settings/SecuritySettings.java +6 −1 Original line number Diff line number Diff line Loading @@ -175,6 +175,12 @@ public class SecuritySettings extends SettingsPreferenceFragment return MetricsEvent.SECURITY; } @Override public void onAttach(Context context) { super.onAttach(context); mLocationcontroller = new LocationPreferenceController(context, getLifecycle()); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -205,7 +211,6 @@ public class SecuritySettings extends SettingsPreferenceFragment mTrustAgentClickIntent = savedInstanceState.getParcelable(TRUST_AGENT_CLICK_INTENT); } mLocationcontroller = new LocationPreferenceController(activity); mManageDeviceAdminPreferenceController = new ManageDeviceAdminPreferenceController(activity); mEnterprisePrivacyPreferenceController Loading
src/com/android/settings/location/LocationPreferenceController.java +45 −5 Original line number Diff line number Diff line Loading @@ -15,20 +15,46 @@ */ package com.android.settings.location; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.provider.Settings.Secure; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.PreferenceController; import com.android.settings.core.lifecycle.Lifecycle; import com.android.settings.core.lifecycle.LifecycleObserver; import com.android.settings.core.lifecycle.events.OnPause; import com.android.settings.core.lifecycle.events.OnResume; public class LocationPreferenceController extends PreferenceController { public class LocationPreferenceController extends PreferenceController implements LifecycleObserver, OnResume, OnPause { private static final String KEY_LOCATION = "location"; private Context mContext; private Preference mPreference; public LocationPreferenceController(Context context) { @VisibleForTesting BroadcastReceiver mLocationProvidersChangedReceiver; public LocationPreferenceController(Context context, Lifecycle lifecycle) { super(context); mContext = context; mLocationProvidersChangedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(LocationManager.PROVIDERS_CHANGED_ACTION)) { updateSummary(); } } }; if (lifecycle != null) { lifecycle.addObserver(this); } } @Override Loading @@ -37,6 +63,21 @@ public class LocationPreferenceController extends PreferenceController { mPreference = screen.findPreference(KEY_LOCATION); } @Override public void onResume() { if (mLocationProvidersChangedReceiver != null) { mContext.registerReceiver(mLocationProvidersChangedReceiver, new IntentFilter( LocationManager.PROVIDERS_CHANGED_ACTION)); } } @Override public void onPause() { if (mLocationProvidersChangedReceiver != null) { mContext.unregisterReceiver(mLocationProvidersChangedReceiver); } } @Override public void updateState(Preference preference) { preference.setSummary(getLocationSummary(mContext)); Loading Loading @@ -79,5 +120,4 @@ public class LocationPreferenceController extends PreferenceController { } return 0; } }
tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java +48 −17 Original line number Diff line number Diff line Loading @@ -15,7 +15,11 @@ */ package com.android.settings.location; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; import android.provider.Settings.Secure; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; Loading @@ -24,6 +28,7 @@ import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -31,10 +36,11 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -46,6 +52,7 @@ public class LocationPreferenceControllerTest { @Mock private PreferenceScreen mScreen; private Lifecycle mLifecycle; private LocationPreferenceController mController; @Mock(answer = Answers.RETURNS_DEEP_STUBS) Loading @@ -54,7 +61,8 @@ public class LocationPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); mController = new LocationPreferenceController(mContext); mLifecycle = new Lifecycle(); mController = new LocationPreferenceController(mContext, mLifecycle); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); } Loading Loading @@ -129,4 +137,27 @@ public class LocationPreferenceControllerTest { R.string.location_mode_high_accuracy_title); } @Test public void onResume_shouldRegisterObserver() { mLifecycle.onResume(); verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class)); } @Test public void onPause_shouldUnregisterObserver() { mLifecycle.onPause(); verify(mContext).unregisterReceiver(any(BroadcastReceiver.class)); } @Test public void locationProvidersChangedReceiver_updatesPreferenceSummary() { mController.displayPreference(mScreen); mController.onResume(); mController.mLocationProvidersChangedReceiver.onReceive( mContext, new Intent().setAction(LocationManager.PROVIDERS_CHANGED_ACTION)); verify(mPreference).setSummary(any()); } }