Don't show warning dialog on opening ASM settings.

On older devices, the activation warning dialog would show upon the
switchbar changing to On. This was occurring when the page opens
because the status was changing onResume. By shuffling the switchbar
changes into the ASMSwitchBarController, we can register our listener
after the initialization of the switch bar's first status.

Change-Id: I3610d07345684d1e66444981a8059d1c2965e955
Fixes: 37472724
Test: Settings robotests
This commit is contained in:
Daniel Nishi
2017-04-18 14:12:54 -07:00
parent d4ce883c64
commit fa3766a220
3 changed files with 51 additions and 3 deletions

View File

@@ -123,9 +123,6 @@ public class AutomaticStorageManagerSettings extends SettingsPreferenceFragment
boolean isStorageManagerChecked =
Settings.Secure.getInt(getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED, 0) != 0;
// Using the setCheckedInternal means the checked status won't propagate through the
// listeners -- this will prevent us from accidentally causing a metrics event on resume.
mSwitchBar.setCheckedInternal(isStorageManagerChecked);
mDaysToRetain.setEnabled(isStorageManagerChecked);
}

View File

@@ -52,6 +52,17 @@ public class AutomaticStorageManagerSwitchBarController
mDaysToRetainPreference = Preconditions.checkNotNull(daysToRetainPreference);
mFragmentManager = Preconditions.checkNotNull(fragmentManager);
initializeCheckedStatus();
}
private void initializeCheckedStatus() {
boolean isStorageManagerChecked =
Settings.Secure.getInt(
mContext.getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED,
0)
!= 0;
mSwitchBar.setChecked(isStorageManagerChecked);
mSwitchBar.addOnSwitchChangeListener(this);
}

View File

@@ -16,6 +16,8 @@
package com.android.settings.deletionhelper;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
@@ -27,6 +29,7 @@ import static org.mockito.Mockito.verify;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import com.android.internal.logging.nano.MetricsProto;
@@ -121,4 +124,41 @@ public class AutomaticStorageManagerSwitchBarControllerTest {
verify(mFragmentManager.beginTransaction(), never())
.add(any(Fragment.class), eq(ActivationWarningFragment.TAG));
}
@Test
public void initializeSwitchOnConstruction() {
Settings.Secure.putInt(
mContext.getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED,
1);
mController =
new AutomaticStorageManagerSwitchBarController(
mContext,
mSwitchBar,
mMetricsFeatureProvider,
mPreference,
mFragmentManager);
assertThat(mSwitchBar.isChecked()).isTrue();
}
@Test
public void initializingSwitchDoesNotTriggerView() {
Settings.Secure.putInt(
mContext.getContentResolver(),
Settings.Secure.AUTOMATIC_STORAGE_MANAGER_ENABLED,
1);
mController =
new AutomaticStorageManagerSwitchBarController(
mContext,
mSwitchBar,
mMetricsFeatureProvider,
mPreference,
mFragmentManager);
verify(mFragmentManager.beginTransaction(), never())
.add(any(Fragment.class), eq(ActivationWarningFragment.TAG));
}
}