Disable development settings when the switch bar turns off.

Change-Id: Icc9953c95ed4d131231bb6ba95d60b43092a3833
Fix: 29274149
Test: make RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-03-20 14:56:09 -07:00
parent 9812557561
commit 748649b006
4 changed files with 190 additions and 32 deletions

View File

@@ -23,7 +23,6 @@ import android.app.AlertDialog;
import android.app.AppOpsManager;
import android.app.AppOpsManager.PackageOps;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.app.backup.IBackupManager;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothAdapter;
@@ -246,17 +245,15 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
private IWindowManager mWindowManager;
private IBackupManager mBackupManager;
private IWebViewUpdateService mWebViewUpdateService;
private DevicePolicyManager mDpm;
private UserManager mUm;
private WifiManager mWifiManager;
private PersistentDataBlockManager mOemUnlockManager;
private TelephonyManager mTelephonyManager;
private SwitchBar mSwitchBar;
private boolean mLastEnabledState;
private boolean mHaveDebugSettings;
private boolean mDontPokeProperties;
private SwitchPreference mEnableAdb;
private Preference mClearAdbKeys;
private SwitchPreference mEnableTerminal;
@@ -350,6 +347,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
private boolean mLogpersistCleared;
private Dialog mLogpersistClearDialog;
private DashboardFeatureProvider mDashboardFeatureProvider;
private DevelopmentSettingsEnabler mSettingsEnabler;
private BugReportPreferenceController mBugReportController;
private BugReportInPowerPreferenceController mBugReportInPowerController;
private TelephonyMonitorPreferenceController mTelephonyMonitorController;
@@ -366,6 +364,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
@Override
public void onAttach(Context context) {
super.onAttach(context);
mSettingsEnabler = new DevelopmentSettingsEnabler(context, getLifecycle());
mDashboardFeatureProvider = FeatureFactory.getFactory(context)
.getDashboardFeatureProvider(context);
}
@@ -382,7 +381,6 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mDpm = (DevicePolicyManager) getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
mUm = (UserManager) getSystemService(Context.USER_SERVICE);
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
@@ -671,22 +669,18 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
mDisabledPrefs.add(mKeepScreenOn);
}
final ContentResolver cr = getActivity().getContentResolver();
mLastEnabledState = Settings.Global.getInt(cr,
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
mSwitchBar.setChecked(mLastEnabledState);
setPrefsEnabledState(mLastEnabledState);
final boolean lastEnabledState = mSettingsEnabler.getLastEnabledState();
mSwitchBar.setChecked(lastEnabledState);
setPrefsEnabledState(lastEnabledState);
if (mHaveDebugSettings && !mLastEnabledState) {
if (mHaveDebugSettings && !lastEnabledState) {
// Overall debugging is disabled, but there are some debug
// settings that are enabled. This is an invalid state. Switch
// to debug settings being enabled, so the user knows there is
// stuff enabled and can turn it all off if they want.
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
mLastEnabledState = true;
mSwitchBar.setChecked(mLastEnabledState);
setPrefsEnabledState(mLastEnabledState);
mSettingsEnabler.enableDevelopmentSettings();
mSwitchBar.setChecked(lastEnabledState);
setPrefsEnabledState(lastEnabledState);
}
mSwitchBar.show();
@@ -1560,7 +1554,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
|| currentValue.equals(SELECT_LOGD_OFF_SIZE_MARKER_VALUE)) {
writeLogpersistOption(null, true);
mLogpersist.setEnabled(false);
} else if (mLastEnabledState) {
} else if (mSettingsEnabler.getLastEnabledState()) {
mLogpersist.setEnabled(true);
}
}
@@ -1848,8 +1842,9 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
}
}
}
if (codecConfig == null)
if (codecConfig == null) {
return;
}
try {
resources = getResources();
@@ -2329,7 +2324,8 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
if (switchView != mSwitchBar.getSwitch()) {
return;
}
if (isChecked != mLastEnabledState) {
final boolean lastEnabledState = mSettingsEnabler.getLastEnabledState();
if (isChecked != lastEnabledState) {
if (isChecked) {
mDialogClicked = false;
if (mEnableDialog != null) dismissDialogs();
@@ -2343,10 +2339,8 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
mEnableDialog.setOnDismissListener(this);
} else {
resetDangerousOptions();
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
mLastEnabledState = isChecked;
setPrefsEnabledState(mLastEnabledState);
mSettingsEnabler.disableDevelopmentSettings();
setPrefsEnabledState(false);
}
}
}
@@ -2629,10 +2623,8 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
} else if (dialog == mEnableDialog) {
if (which == DialogInterface.BUTTON_POSITIVE) {
mDialogClicked = true;
Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
mLastEnabledState = true;
setPrefsEnabledState(mLastEnabledState);
mSettingsEnabler.enableDevelopmentSettings();
setPrefsEnabledState(true);
} else {
// Reset the toggle
mSwitchBar.setChecked(false);