Loading src/com/android/settings/accounts/WorkModePreferenceController.java +20 −15 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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; } } tests/robotests/src/com/android/settings/accounts/WorkModePreferenceControllerTest.java +11 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -27,7 +28,9 @@ import android.content.Context; import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserManager; import android.widget.Switch; import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import com.android.settingslib.widget.MainSwitchPreference; Loading Loading @@ -57,6 +60,10 @@ public class WorkModePreferenceControllerTest { private UserHandle mManagedUser; @Mock private UserInfo mUserInfo; @Mock private PreferenceScreen mScreen; @Mock Switch mSwitch; @Before public void setUp() { Loading @@ -69,7 +76,9 @@ public class WorkModePreferenceControllerTest { when(mUserManager.getProcessUserId()).thenReturn(0); when(mUserManager.getUserProfiles()).thenReturn(Collections.singletonList(mManagedUser)); when(mManagedUser.getIdentifier()).thenReturn(MANAGED_USER_ID); when(mScreen.findPreference(anyString())).thenReturn(mPreference); mController = new WorkModePreferenceController(mContext, PREF_KEY); mController.displayPreference(mScreen); } @Test Loading Loading @@ -106,13 +115,11 @@ public class WorkModePreferenceControllerTest { @Test public void onPreferenceChange_shouldRequestQuietModeEnabled() { mController.setPreference(mPreference); mController.onPreferenceChange(mPreference, true); mController.onSwitchChanged(mSwitch, true); verify(mUserManager).requestQuietModeEnabled(false, mManagedUser); mController.onPreferenceChange(mPreference, false); mController.onSwitchChanged(mSwitch, false); verify(mUserManager).requestQuietModeEnabled(true, mManagedUser); } Loading Loading
src/com/android/settings/accounts/WorkModePreferenceController.java +20 −15 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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; } }
tests/robotests/src/com/android/settings/accounts/WorkModePreferenceControllerTest.java +11 −4 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -27,7 +28,9 @@ import android.content.Context; import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserManager; import android.widget.Switch; import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import com.android.settingslib.widget.MainSwitchPreference; Loading Loading @@ -57,6 +60,10 @@ public class WorkModePreferenceControllerTest { private UserHandle mManagedUser; @Mock private UserInfo mUserInfo; @Mock private PreferenceScreen mScreen; @Mock Switch mSwitch; @Before public void setUp() { Loading @@ -69,7 +76,9 @@ public class WorkModePreferenceControllerTest { when(mUserManager.getProcessUserId()).thenReturn(0); when(mUserManager.getUserProfiles()).thenReturn(Collections.singletonList(mManagedUser)); when(mManagedUser.getIdentifier()).thenReturn(MANAGED_USER_ID); when(mScreen.findPreference(anyString())).thenReturn(mPreference); mController = new WorkModePreferenceController(mContext, PREF_KEY); mController.displayPreference(mScreen); } @Test Loading Loading @@ -106,13 +115,11 @@ public class WorkModePreferenceControllerTest { @Test public void onPreferenceChange_shouldRequestQuietModeEnabled() { mController.setPreference(mPreference); mController.onPreferenceChange(mPreference, true); mController.onSwitchChanged(mSwitch, true); verify(mUserManager).requestQuietModeEnabled(false, mManagedUser); mController.onPreferenceChange(mPreference, false); mController.onSwitchChanged(mSwitch, false); verify(mUserManager).requestQuietModeEnabled(true, mManagedUser); } Loading