diff --git a/res/raw/udfps_left_edge_hint_lottie.json b/res/raw/udfps_left_edge_hint_lottie.json
index e69de29bb2d..9e26dfeeb6e 100644
--- a/res/raw/udfps_left_edge_hint_lottie.json
+++ b/res/raw/udfps_left_edge_hint_lottie.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/res/raw/udfps_right_edge_hint_lottie.json b/res/raw/udfps_right_edge_hint_lottie.json
index e69de29bb2d..9e26dfeeb6e 100644
--- a/res/raw/udfps_right_edge_hint_lottie.json
+++ b/res/raw/udfps_right_edge_hint_lottie.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/res/raw/udfps_tip_hint_lottie.json b/res/raw/udfps_tip_hint_lottie.json
index e69de29bb2d..9e26dfeeb6e 100644
--- a/res/raw/udfps_tip_hint_lottie.json
+++ b/res/raw/udfps_tip_hint_lottie.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4b163a0418c..05e94db8e63 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -11762,12 +11762,6 @@
Temporarily turned on due to Battery Saver
-
- Supported apps will also switch to dark theme
-
-
- Got it
-
Try Dark theme
diff --git a/src/com/android/settings/accessibility/TextReadingPreviewController.java b/src/com/android/settings/accessibility/TextReadingPreviewController.java
index 1be8c70f4f6..98767d9d0ca 100644
--- a/src/com/android/settings/accessibility/TextReadingPreviewController.java
+++ b/src/com/android/settings/accessibility/TextReadingPreviewController.java
@@ -108,6 +108,7 @@ class TextReadingPreviewController extends BasePreferenceController implements
final PreviewPagerAdapter pagerAdapter = new PreviewPagerAdapter(mContext, isLayoutRtl,
PREVIEW_SAMPLE_RES_IDS, createConfig(origConfig));
mPreviewPreference.setPreviewAdapter(pagerAdapter);
+ mPreviewPreference.setCurrentItem(isLayoutRtl ? PREVIEW_SAMPLE_RES_IDS.length - 1 : 0);
pagerAdapter.setPreviewLayer(/* newLayerIndex= */ 0,
/* currentLayerIndex= */ 0,
/* currentFrameIndex= */ 0, /* animate= */ false);
diff --git a/src/com/android/settings/applications/AppStateAlarmsAndRemindersBridge.java b/src/com/android/settings/applications/AppStateAlarmsAndRemindersBridge.java
index cf938a5e3d4..ffe87678016 100644
--- a/src/com/android/settings/applications/AppStateAlarmsAndRemindersBridge.java
+++ b/src/com/android/settings/applications/AppStateAlarmsAndRemindersBridge.java
@@ -57,7 +57,7 @@ public class AppStateAlarmsAndRemindersBridge extends AppStateBaseBridge {
mAlarmManager = context.getSystemService(AlarmManager.class);
final IPackageManager iPm = AppGlobals.getPackageManager();
try {
- mRequesterPackages = iPm.getAppOpPermissionPackages(PERMISSION);
+ mRequesterPackages = iPm.getAppOpPermissionPackages(PERMISSION, context.getUserId());
} catch (RemoteException re) {
Log.e(TAG, "Cannot reach package manager", re);
mRequesterPackages = EmptyArray.STRING;
diff --git a/src/com/android/settings/applications/AppStateAppOpsBridge.java b/src/com/android/settings/applications/AppStateAppOpsBridge.java
index 80d62b2eac8..2a1f321a92c 100755
--- a/src/com/android/settings/applications/AppStateAppOpsBridge.java
+++ b/src/com/android/settings/applications/AppStateAppOpsBridge.java
@@ -172,25 +172,25 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
*/
private SparseArray> getEntries() {
try {
- Set packagesSet = new HashSet<>();
- for (String permission : mPermissions) {
- String[] pkgs = mIPackageManager.getAppOpPermissionPackages(permission);
- if (pkgs != null) {
- packagesSet.addAll(Arrays.asList(pkgs));
- }
- }
-
- if (packagesSet.isEmpty()) {
- // No packages are requesting permission as specified by mPermissions.
- return null;
- }
-
// Create a sparse array that maps profileIds to an ArrayMap that maps package names to
// an associated PermissionState object
SparseArray> entries = new SparseArray<>();
for (final UserHandle profile : mProfiles) {
- final ArrayMap entriesForProfile = new ArrayMap<>();
final int profileId = profile.getIdentifier();
+ final Set packagesSet = new HashSet<>();
+ for (String permission : mPermissions) {
+ final String[] pkgs = mIPackageManager.getAppOpPermissionPackages(
+ permission, profileId);
+ if (pkgs != null) {
+ packagesSet.addAll(Arrays.asList(pkgs));
+ }
+ }
+ if (packagesSet.isEmpty()) {
+ // No packages are requesting permission as specified by mPermissions.
+ continue;
+ }
+
+ final ArrayMap entriesForProfile = new ArrayMap<>();
entries.put(profileId, entriesForProfile);
for (final String packageName : packagesSet) {
final boolean isAvailable = mIPackageManager.isPackageAvailable(packageName,
@@ -201,6 +201,9 @@ public abstract class AppStateAppOpsBridge extends AppStateBaseBridge {
}
}
}
+ if (entries.size() == 0) {
+ return null;
+ }
return entries;
} catch (RemoteException e) {
diff --git a/src/com/android/settings/applications/AppStateInstallAppsBridge.java b/src/com/android/settings/applications/AppStateInstallAppsBridge.java
index 8a3e5a220d5..b3dee89fe79 100644
--- a/src/com/android/settings/applications/AppStateInstallAppsBridge.java
+++ b/src/com/android/settings/applications/AppStateInstallAppsBridge.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.os.RemoteException;
+import android.os.UserHandle;
import android.util.Log;
import com.android.internal.util.ArrayUtils;
@@ -65,9 +66,9 @@ public class AppStateInstallAppsBridge extends AppStateBaseBridge {
}
}
- private boolean hasRequestedAppOpPermission(String permission, String packageName) {
+ private boolean hasRequestedAppOpPermission(String permission, String packageName, int userId) {
try {
- String[] packages = mIpm.getAppOpPermissionPackages(permission);
+ String[] packages = mIpm.getAppOpPermissionPackages(permission, userId);
return ArrayUtils.contains(packages, packageName);
} catch (RemoteException exc) {
Log.e(TAG, "PackageManager dead. Cannot get permission info");
@@ -91,8 +92,9 @@ public class AppStateInstallAppsBridge extends AppStateBaseBridge {
public InstallAppsState createInstallAppsStateFor(String packageName, int uid) {
final InstallAppsState appState = new InstallAppsState();
+ final int userId = UserHandle.getUserId(uid);
appState.permissionRequested = hasRequestedAppOpPermission(
- Manifest.permission.REQUEST_INSTALL_PACKAGES, packageName);
+ Manifest.permission.REQUEST_INSTALL_PACKAGES, packageName, userId);
appState.appOpMode = getAppOpMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES, uid,
packageName);
return appState;
diff --git a/src/com/android/settings/display/DarkUIInfoDialogFragment.java b/src/com/android/settings/display/DarkUIInfoDialogFragment.java
deleted file mode 100644
index ce517e8db23..00000000000
--- a/src/com/android/settings/display/DarkUIInfoDialogFragment.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.settings.display;
-
-import android.app.Dialog;
-import android.app.UiModeManager;
-import android.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.provider.Settings;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-
-public class DarkUIInfoDialogFragment extends InstrumentedDialogFragment
- implements DialogInterface.OnClickListener{
-
- @Override
- public int getMetricsCategory() {
- return SettingsEnums.DIALOG_DARK_UI_INFO;
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- Context context = getContext();
- AlertDialog.Builder dialog = new AlertDialog.Builder(context);
- LayoutInflater inflater = LayoutInflater.from(dialog.getContext());
- View titleView = inflater.inflate(R.layout.settings_dialog_title, null);
- ((ImageView) titleView.findViewById(R.id.settings_icon))
- .setImageDrawable(context.getDrawable(R.drawable.dark_theme));
- ((TextView) titleView.findViewById(R.id.settings_title)).setText(R.string.dark_ui_mode);
-
- dialog.setCustomTitle(titleView)
- .setMessage(R.string.dark_ui_settings_dark_summary)
- .setPositiveButton(
- R.string.dark_ui_settings_dialog_acknowledge,
- this);
- return dialog.create();
- }
-
- @Override
- public void onDismiss(@NonNull DialogInterface dialog) {
- enableDarkTheme();
- super.onDismiss(dialog);
- }
-
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- // We have to manually dismiss the dialog because changing night mode causes it to
- // recreate itself.
- dialogInterface.dismiss();
- enableDarkTheme();
- }
-
- private void enableDarkTheme() {
- final Context context = getContext();
- if (context != null) {
- Settings.Secure.putInt(context.getContentResolver(),
- Settings.Secure.DARK_MODE_DIALOG_SEEN,
- DarkUIPreferenceController.DIALOG_SEEN);
- context.getSystemService(UiModeManager.class)
- .setNightMode(UiModeManager.MODE_NIGHT_YES);
- }
- }
-}
diff --git a/src/com/android/settings/display/DarkUIPreferenceController.java b/src/com/android/settings/display/DarkUIPreferenceController.java
index d07410ee271..f1bbfcd47b7 100644
--- a/src/com/android/settings/display/DarkUIPreferenceController.java
+++ b/src/com/android/settings/display/DarkUIPreferenceController.java
@@ -23,10 +23,8 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.os.PowerManager;
-import android.provider.Settings;
import androidx.annotation.VisibleForTesting;
-import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -39,7 +37,6 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
public class DarkUIPreferenceController extends TogglePreferenceController implements
LifecycleObserver, OnStart, OnStop {
- public static final String DARK_MODE_PREFS = "dark_mode_prefs";
public static final String PREF_DARK_MODE_DIALOG_SEEN = "dark_mode_dialog_seen";
public static final int DIALOG_SEEN = 1;
@@ -48,9 +45,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
private UiModeManager mUiModeManager;
private PowerManager mPowerManager;
- private Context mContext;
-
- private Fragment mFragment;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
@@ -61,7 +55,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
public DarkUIPreferenceController(Context context, String key) {
super(context, key);
- mContext = context;
mUiModeManager = context.getSystemService(UiModeManager.class);
mPowerManager = context.getSystemService(PowerManager.class);
}
@@ -86,12 +79,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
@Override
public boolean setChecked(boolean isChecked) {
- final boolean dialogSeen =
- Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Secure.DARK_MODE_DIALOG_SEEN, 0) == DIALOG_SEEN;
- if (!dialogSeen && isChecked) {
- showDarkModeDialog();
- }
return mUiModeManager.setNightModeActivated(isChecked);
}
@@ -100,13 +87,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
return R.string.menu_key_display;
}
- private void showDarkModeDialog() {
- final DarkUIInfoDialogFragment frag = new DarkUIInfoDialogFragment();
- if (mFragment != null && mFragment.getFragmentManager() != null) {
- frag.show(mFragment.getFragmentManager(), getClass().getName());
- }
- }
-
@VisibleForTesting
void updateEnabledStateIfNeeded() {
if (mPreference == null) {
@@ -133,11 +113,6 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
new IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED));
}
- // used by AccessibilitySettings
- public void setParentFragment(Fragment fragment) {
- mFragment = fragment;
- }
-
@Override
public void onStop() {
mContext.unregisterReceiver(mReceiver);
diff --git a/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceController.java b/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceController.java
index 10cda5334c5..c45bb3d2b34 100644
--- a/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceController.java
+++ b/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceController.java
@@ -27,7 +27,6 @@ import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
/**
* Controller for custom mode night mode time settings
@@ -35,7 +34,6 @@ import java.time.format.DateTimeFormatter;
public class DarkModeCustomPreferenceController extends BasePreferenceController {
private static final String START_TIME_KEY = "dark_theme_start_time";
private static final String END_TIME_KEY = "dark_theme_end_time";
- public static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
private final UiModeManager mUiModeManager;
private TimeFormatter mFormat;
private DarkModeSettingsFragment mFragmet;
@@ -63,7 +61,10 @@ public class DarkModeCustomPreferenceController extends BasePreferenceController
@Override
public int getAvailabilityStatus() {
- return AVAILABLE;
+ return mUiModeManager.getNightMode() == MODE_NIGHT_CUSTOM
+ && mUiModeManager.getNightModeCustomType()
+ == UiModeManager.MODE_NIGHT_CUSTOM_TYPE_SCHEDULE
+ ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
public TimePickerDialog getDialog() {
@@ -88,13 +89,6 @@ public class DarkModeCustomPreferenceController extends BasePreferenceController
@Override
protected void refreshSummary(Preference preference) {
- if (mUiModeManager.getNightMode() != MODE_NIGHT_CUSTOM
- || mUiModeManager.getNightModeCustomType()
- != UiModeManager.MODE_NIGHT_CUSTOM_TYPE_SCHEDULE) {
- preference.setVisible(false);
- return;
- }
- preference.setVisible(true);
final LocalTime time;
if (TextUtils.equals(getPreferenceKey(), START_TIME_KEY)) {
time = mUiModeManager.getCustomNightModeStart();
diff --git a/src/com/android/settings/display/darkmode/DarkModeSettingsFragment.java b/src/com/android/settings/display/darkmode/DarkModeSettingsFragment.java
index a5103b0aef9..17d32a536f6 100644
--- a/src/com/android/settings/display/darkmode/DarkModeSettingsFragment.java
+++ b/src/com/android/settings/display/darkmode/DarkModeSettingsFragment.java
@@ -21,6 +21,7 @@ import android.os.Bundle;
import android.os.PowerManager;
import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
@@ -43,9 +44,6 @@ public class DarkModeSettingsFragment extends DashboardFragment {
private DarkModeObserver mContentObserver;
private DarkModeCustomPreferenceController mCustomStartController;
private DarkModeCustomPreferenceController mCustomEndController;
- private Runnable mCallback = () -> {
- updatePreferenceStates();
- };
private static final int DIALOG_START_TIME = 0;
private static final int DIALOG_END_TIME = 1;
@@ -60,7 +58,12 @@ public class DarkModeSettingsFragment extends DashboardFragment {
public void onStart() {
super.onStart();
// Listen for changes only while visible.
- mContentObserver.subscribe(mCallback);
+ mContentObserver.subscribe(() -> {
+ PreferenceScreen preferenceScreen = getPreferenceScreen();
+ mCustomStartController.displayPreference(preferenceScreen);
+ mCustomEndController.displayPreference(preferenceScreen);
+ updatePreferenceStates();
+ });
}
@Override
diff --git a/tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java b/tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java
deleted file mode 100644
index f90c5901a2e..00000000000
--- a/tests/robotests/src/com/android/settings/display/DarkUIInfoDialogFragmentTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.settings.display;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.SharedPreferences;
-import android.provider.Settings;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class DarkUIInfoDialogFragmentTest {
- private DarkUIInfoDialogFragment mFragment;
- @Mock
- private DialogInterface dialog;
-
-
- @Before
- public void setup() {
- MockitoAnnotations.initMocks(this);
- mFragment = spy(new DarkUIInfoDialogFragment());
- }
-
- @Test
- public void dialogDismissedOnConfirmation() {
- doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
- SharedPreferences prefs = RuntimeEnvironment.application.getSharedPreferences(
- DarkUIPreferenceController.DARK_MODE_PREFS,
- Context.MODE_PRIVATE);
- assertThat(prefs.getBoolean(DarkUIPreferenceController.PREF_DARK_MODE_DIALOG_SEEN, false))
- .isFalse();
- mFragment.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
- verify(dialog, times(1)).dismiss();
- assertThat(Settings.Secure.getInt(RuntimeEnvironment.application.getContentResolver(),
- Settings.Secure.DARK_MODE_DIALOG_SEEN, -1)).isEqualTo(1);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java
index 9924cb4b628..9a24d32a739 100644
--- a/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/DarkUIPreferenceControllerTest.java
@@ -16,35 +16,33 @@
package com.android.settings.display;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
import android.content.Context;
-import androidx.fragment.app.Fragment;
+
import com.android.settings.display.darkmode.DarkModePreference;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
-
@RunWith(RobolectricTestRunner.class)
public class DarkUIPreferenceControllerTest {
private DarkUIPreferenceController mController;
private Context mContext;
- @Mock
- private Fragment mFragment;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mController = spy(new DarkUIPreferenceController(mContext, "dark_ui_mode"));
- mController.setParentFragment(mFragment);
mController.mPreference = new DarkModePreference(mContext, null /* AttributeSet attrs */);
mController.onStart();
}
diff --git a/tests/robotests/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceControllerTest.java
index 4a26205bb58..8ac6257491b 100644
--- a/tests/robotests/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/darkmode/DarkModeCustomPreferenceControllerTest.java
@@ -15,6 +15,11 @@
package com.android.settings.display.darkmode;
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
@@ -71,68 +76,55 @@ public class DarkModeCustomPreferenceControllerTest {
}
@Test
- public void nightMode_manualOn_hidePreference() {
+ public void getAvailabilityStatus_nightModeManualOn_unavailable() {
when(mService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_YES);
mConfig.uiMode = Configuration.UI_MODE_NIGHT_YES;
- mController.refreshSummary(mPreference);
-
- verify(mPreference).setVisible(eq(false));
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
- public void nightMode_manualOff_hidePreference() {
+ public void getAvailabilityStatus_nightModeManualOff_unavailable() {
when(mService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_NO);
mConfig.uiMode = Configuration.UI_MODE_NIGHT_NO;
- mController.refreshSummary(mPreference);
-
- verify(mPreference).setVisible(eq(false));
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
-
@Test
- public void nightMode_customOn_showPreference() {
+ public void getAvailabilityStatus_nightModeCustomOn_available() {
when(mService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_CUSTOM);
mConfig.uiMode = Configuration.UI_MODE_NIGHT_YES;
- mController.refreshSummary(mPreference);
-
- verify(mPreference).setVisible(eq(true));
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
- public void nightMode_customOff_showPreference() {
+ public void getAvailabilityStatus_nightModeCustomOff_available() {
when(mService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_CUSTOM);
mConfig.uiMode = Configuration.UI_MODE_NIGHT_NO;
- mController.refreshSummary(mPreference);
-
- verify(mPreference).setVisible(eq(true));
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
}
@Test
- public void nightMode_customBedtimeOn_hidePreference() {
+ public void getAvailabilityStatus_nightModeCustomBedtimeOn_unavailable() {
when(mService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_CUSTOM);
when(mService.getNightModeCustomType())
.thenReturn(UiModeManager.MODE_NIGHT_CUSTOM_TYPE_BEDTIME);
mConfig.uiMode = Configuration.UI_MODE_NIGHT_YES;
- mController.refreshSummary(mPreference);
-
- verify(mPreference).setVisible(eq(false));
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
- public void nightMode_customBedtimeOff_hidePreference() {
+ public void getAvailabilityStatus_nightModeCustomBedtimeOff_unavailable() {
when(mService.getNightMode()).thenReturn(UiModeManager.MODE_NIGHT_CUSTOM);
when(mService.getNightModeCustomType())
.thenReturn(UiModeManager.MODE_NIGHT_CUSTOM_TYPE_BEDTIME);
mConfig.uiMode = Configuration.UI_MODE_NIGHT_NO;
- mController.refreshSummary(mPreference);
-
- verify(mPreference).setVisible(eq(false));
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test