Merge "Don't show suggestion slice if 'Screen attention' is already on" into qt-qpr1-dev

This commit is contained in:
Yi Jiang
2019-08-13 01:28:31 +00:00
committed by Android (Google) Code Review
2 changed files with 31 additions and 3 deletions

View File

@@ -26,6 +26,7 @@ import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.provider.Settings;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice; import androidx.slice.Slice;
@@ -72,11 +73,12 @@ public class ContextualAdaptiveSleepSlice implements CustomSliceable {
return null; return null;
} }
// Display the contextual card only if all the following 3 conditions hold: // Display the contextual card only if all the following 4 conditions hold:
// 1. The Screen Attention is enabled in Settings. // 1. The Screen Attention is available in Settings.
// 2. The device is not recently set up. // 2. The device is not recently set up.
// 3. Current user hasn't opened Screen Attention's settings page before. // 3. Current user hasn't opened Screen Attention's settings page before.
if (isSettingsAvailable() && !isUserInteracted() && !isRecentlySetup()) { // 4. Screen Attention is off.
if (isSettingsAvailable() && !isUserInteracted() && !isRecentlySetup() && !isTurnedOn()) {
final IconCompat icon = IconCompat.createWithResource(mContext, final IconCompat icon = IconCompat.createWithResource(mContext,
R.drawable.ic_settings_adaptive_sleep); R.drawable.ic_settings_adaptive_sleep);
final CharSequence title = mContext.getText(R.string.adaptive_sleep_title); final CharSequence title = mContext.getText(R.string.adaptive_sleep_title);
@@ -122,6 +124,14 @@ public class ContextualAdaptiveSleepSlice implements CustomSliceable {
return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */); return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
} }
/**
* @return {@code true} if the feature is turned on for the device, otherwise {@code false}
*/
private boolean isTurnedOn() {
return Settings.System.getInt(
mContext.getContentResolver(), Settings.System.ADAPTIVE_SLEEP, 0) != 0;
}
/** /**
* @return {@code true} if the current user has opened the Screen Attention settings page * @return {@code true} if the current user has opened the Screen Attention settings page
* before, otherwise {@code false}. * before, otherwise {@code false}.

View File

@@ -32,6 +32,7 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.net.Uri; import android.net.Uri;
import android.provider.Settings;
import androidx.slice.Slice; import androidx.slice.Slice;
import androidx.slice.SliceProvider; import androidx.slice.SliceProvider;
@@ -65,6 +66,7 @@ public class ContextualAdaptiveSleepSliceTest {
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
mContextualAdaptiveSleepSlice = spy(new ContextualAdaptiveSleepSlice(mContext)); mContextualAdaptiveSleepSlice = spy(new ContextualAdaptiveSleepSlice(mContext));
Settings.System.putInt(mContext.getContentResolver(), Settings.System.ADAPTIVE_SLEEP, 0);
doReturn(mPackageManager).when(mContext).getPackageManager(); doReturn(mPackageManager).when(mContext).getPackageManager();
doReturn(mSharedPreferences).when(mContext).getSharedPreferences(eq(PREF), anyInt()); doReturn(mSharedPreferences).when(mContext).getSharedPreferences(eq(PREF), anyInt());
doReturn(true).when(mContextualAdaptiveSleepSlice).isSettingsAvailable(); doReturn(true).when(mContextualAdaptiveSleepSlice).isSettingsAvailable();
@@ -112,4 +114,20 @@ public class ContextualAdaptiveSleepSliceTest {
assertThat(slice).isNull(); assertThat(slice).isNull();
} }
@Test
public void getSlice_ShowIfNotTurnedOn() {
final Slice slice = mContextualAdaptiveSleepSlice.getSlice();
assertThat(slice).isNotNull();
}
@Test
public void getSlice_DoNotShowIfTurnedOn() {
Settings.System.putInt(mContext.getContentResolver(), Settings.System.ADAPTIVE_SLEEP, 1);
final Slice slice = mContextualAdaptiveSleepSlice.getSlice();
assertThat(slice).isNull();
}
} }