Avoid double quiet mode requests
Currently when "Work apps" the toggle is tapped in Settings it leads to UM.requestQuietMode() being called twice via different routes. Bug: 284915370 Test: atest WorkModePreferenceControllerTest Change-Id: I5eeb7ecdb10245a32d947ae2430a865bd7a5a60a
This commit is contained in:
@@ -16,31 +16,42 @@
|
||||
package com.android.settings.accounts;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.Switch;
|
||||
|
||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.slices.SliceData;
|
||||
import com.android.settings.widget.SettingsMainSwitchPreferenceController;
|
||||
import com.android.settingslib.widget.MainSwitchPreference;
|
||||
import com.android.settingslib.widget.OnMainSwitchChangeListener;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
public class WorkModePreferenceController extends SettingsMainSwitchPreferenceController
|
||||
implements Preference.OnPreferenceChangeListener, DefaultLifecycleObserver,
|
||||
/** Controller for "Work apps" toggle that allows the user to enable/disable quiet mode. */
|
||||
public class WorkModePreferenceController extends BasePreferenceController
|
||||
implements OnMainSwitchChangeListener, DefaultLifecycleObserver,
|
||||
ManagedProfileQuietModeEnabler.QuietModeChangeListener {
|
||||
|
||||
private final ManagedProfileQuietModeEnabler mQuietModeEnabler;
|
||||
private MainSwitchPreference mPreference;
|
||||
|
||||
public WorkModePreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
mQuietModeEnabler = new ManagedProfileQuietModeEnabler(context, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
mPreference = screen.findPreference(getPreferenceKey());
|
||||
mPreference.addOnSwitchChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return (mQuietModeEnabler.isAvailable()) ? AVAILABLE : DISABLED_FOR_USER;
|
||||
@@ -57,19 +68,18 @@ public class WorkModePreferenceController extends SettingsMainSwitchPreferenceCo
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChecked() {
|
||||
return !mQuietModeEnabler.isQuietModeEnabled();
|
||||
public void onSwitchChanged(Switch switchView, boolean isChecked) {
|
||||
mQuietModeEnabler.setQuietModeEnabled(!isChecked);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
mQuietModeEnabler.setQuietModeEnabled(!isChecked);
|
||||
return true;
|
||||
public final void updateState(Preference preference) {
|
||||
mPreference.updateStatus(!mQuietModeEnabler.isQuietModeEnabled());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQuietModeChanged() {
|
||||
updateState(mSwitchPreference);
|
||||
updateState(mPreference);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -82,9 +92,4 @@ public class WorkModePreferenceController extends SettingsMainSwitchPreferenceCo
|
||||
public int getSliceHighlightMenuRes() {
|
||||
return R.string.menu_key_accounts;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setPreference(MainSwitchPreference preference) {
|
||||
mSwitchPreference = preference;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user