Add flag to allow NAS to peform ranking
This will be used by implementations of NotificationAssistantService to rerank notifications within the same importance bucket. Bug: 146443378 Test: atest Change-Id: I95e45081ae90f1e60de86b1b850ad18f33eb803b
This commit is contained in:
@@ -7891,6 +7891,12 @@
|
|||||||
<!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
|
<!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
|
||||||
<string name="asst_capability_prioritizer_summary">Automatically set lower priority notifications to Gentle</string>
|
<string name="asst_capability_prioritizer_summary">Automatically set lower priority notifications to Gentle</string>
|
||||||
|
|
||||||
|
<!-- Configure Notifications: setting title [CHAR LIMIT=80 BACKUP_MESSAGE_ID=6691908606916292167] -->
|
||||||
|
<string name="asst_capability_ranking_title">Adaptive notification ranking</string>
|
||||||
|
|
||||||
|
<!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
|
||||||
|
<string name="asst_capability_ranking_summary">Automatically rank notifications by relevance</string>
|
||||||
|
|
||||||
<!-- Configure Notifications: setting title [CHAR LIMIT=80] -->
|
<!-- Configure Notifications: setting title [CHAR LIMIT=80] -->
|
||||||
<string name="asst_capabilities_actions_replies_title">Suggested actions and replies</string>
|
<string name="asst_capabilities_actions_replies_title">Suggested actions and replies</string>
|
||||||
|
|
||||||
|
@@ -536,6 +536,11 @@
|
|||||||
android:title="@string/asst_capability_prioritizer_title"
|
android:title="@string/asst_capability_prioritizer_title"
|
||||||
settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
|
settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
android:key="asst_capability_ranking"
|
||||||
|
android:title="@string/asst_capability_ranking_title"
|
||||||
|
settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="inactive_apps"
|
android:key="inactive_apps"
|
||||||
android:title="@string/inactive_apps_title"
|
android:title="@string/inactive_apps_title"
|
||||||
|
@@ -28,6 +28,7 @@ import java.util.List;
|
|||||||
public class AssistantCapabilityPreferenceController extends TogglePreferenceController {
|
public class AssistantCapabilityPreferenceController extends TogglePreferenceController {
|
||||||
|
|
||||||
static final String PRIORITIZER_KEY = "asst_capability_prioritizer";
|
static final String PRIORITIZER_KEY = "asst_capability_prioritizer";
|
||||||
|
static final String RANKING_KEY = "asst_capability_ranking";
|
||||||
static final String SMART_KEY = "asst_capabilities_actions_replies";
|
static final String SMART_KEY = "asst_capabilities_actions_replies";
|
||||||
private NotificationBackend mBackend;
|
private NotificationBackend mBackend;
|
||||||
|
|
||||||
@@ -45,7 +46,9 @@ public class AssistantCapabilityPreferenceController extends TogglePreferenceCon
|
|||||||
public boolean isChecked() {
|
public boolean isChecked() {
|
||||||
List<String> capabilities = mBackend.getAssistantAdjustments(mContext.getPackageName());
|
List<String> capabilities = mBackend.getAssistantAdjustments(mContext.getPackageName());
|
||||||
if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
|
if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
|
||||||
return capabilities.contains(Adjustment.KEY_IMPORTANCE);
|
return capabilities.contains(Adjustment.KEY_IMPORTANCE);
|
||||||
|
} else if (RANKING_KEY.equals(getPreferenceKey())) {
|
||||||
|
return capabilities.contains(Adjustment.KEY_RANKING_SCORE);
|
||||||
} else if (SMART_KEY.equals(getPreferenceKey())) {
|
} else if (SMART_KEY.equals(getPreferenceKey())) {
|
||||||
return capabilities.contains(Adjustment.KEY_CONTEXTUAL_ACTIONS)
|
return capabilities.contains(Adjustment.KEY_CONTEXTUAL_ACTIONS)
|
||||||
&& capabilities.contains(Adjustment.KEY_TEXT_REPLIES);
|
&& capabilities.contains(Adjustment.KEY_TEXT_REPLIES);
|
||||||
@@ -57,6 +60,8 @@ public class AssistantCapabilityPreferenceController extends TogglePreferenceCon
|
|||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
|
if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
|
||||||
mBackend.allowAssistantAdjustment(Adjustment.KEY_IMPORTANCE, isChecked);
|
mBackend.allowAssistantAdjustment(Adjustment.KEY_IMPORTANCE, isChecked);
|
||||||
|
} else if (RANKING_KEY.equals(getPreferenceKey())) {
|
||||||
|
mBackend.allowAssistantAdjustment(Adjustment.KEY_RANKING_SCORE, isChecked);
|
||||||
} else if (SMART_KEY.equals(getPreferenceKey())) {
|
} else if (SMART_KEY.equals(getPreferenceKey())) {
|
||||||
mBackend.allowAssistantAdjustment(Adjustment.KEY_CONTEXTUAL_ACTIONS, isChecked);
|
mBackend.allowAssistantAdjustment(Adjustment.KEY_CONTEXTUAL_ACTIONS, isChecked);
|
||||||
mBackend.allowAssistantAdjustment(Adjustment.KEY_TEXT_REPLIES, isChecked);
|
mBackend.allowAssistantAdjustment(Adjustment.KEY_TEXT_REPLIES, isChecked);
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.notification;
|
|||||||
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
||||||
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
|
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
|
||||||
import static com.android.settings.notification.AssistantCapabilityPreferenceController.PRIORITIZER_KEY;
|
import static com.android.settings.notification.AssistantCapabilityPreferenceController.PRIORITIZER_KEY;
|
||||||
|
import static com.android.settings.notification.AssistantCapabilityPreferenceController.RANKING_KEY;
|
||||||
import static com.android.settings.notification.AssistantCapabilityPreferenceController.SMART_KEY;
|
import static com.android.settings.notification.AssistantCapabilityPreferenceController.SMART_KEY;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
@@ -56,8 +57,10 @@ public class AssistantCapabilityPreferenceControllerTest {
|
|||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private AssistantCapabilityPreferenceController mPrioritizerController;
|
private AssistantCapabilityPreferenceController mPrioritizerController;
|
||||||
|
private AssistantCapabilityPreferenceController mRankingController;
|
||||||
private AssistantCapabilityPreferenceController mChipController;
|
private AssistantCapabilityPreferenceController mChipController;
|
||||||
private Preference mPrioritizerPreference;
|
private Preference mPrioritizerPreference;
|
||||||
|
private Preference mRankingPreference;
|
||||||
private Preference mChipPreference;
|
private Preference mChipPreference;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -71,6 +74,13 @@ public class AssistantCapabilityPreferenceControllerTest {
|
|||||||
mPrioritizerPreference.setKey(mPrioritizerController.getPreferenceKey());
|
mPrioritizerPreference.setKey(mPrioritizerController.getPreferenceKey());
|
||||||
when(mScreen.findPreference(
|
when(mScreen.findPreference(
|
||||||
mPrioritizerController.getPreferenceKey())).thenReturn(mPrioritizerPreference);
|
mPrioritizerController.getPreferenceKey())).thenReturn(mPrioritizerPreference);
|
||||||
|
mRankingController = new AssistantCapabilityPreferenceController(
|
||||||
|
mContext, RANKING_KEY);
|
||||||
|
mRankingController.setBackend(mBackend);
|
||||||
|
mRankingPreference = new Preference(mContext);
|
||||||
|
mRankingPreference.setKey(mRankingController.getPreferenceKey());
|
||||||
|
when(mScreen.findPreference(
|
||||||
|
mRankingController.getPreferenceKey())).thenReturn(mRankingPreference);
|
||||||
mChipController = new AssistantCapabilityPreferenceController(mContext, SMART_KEY);
|
mChipController = new AssistantCapabilityPreferenceController(mContext, SMART_KEY);
|
||||||
mChipController.setBackend(mBackend);
|
mChipController.setBackend(mBackend);
|
||||||
mChipPreference = new Preference(mContext);
|
mChipPreference = new Preference(mContext);
|
||||||
@@ -111,6 +121,27 @@ public class AssistantCapabilityPreferenceControllerTest {
|
|||||||
capabilities.add(Adjustment.KEY_IMPORTANCE);
|
capabilities.add(Adjustment.KEY_IMPORTANCE);
|
||||||
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
assertThat(mPrioritizerController.isChecked()).isTrue();
|
assertThat(mPrioritizerController.isChecked()).isTrue();
|
||||||
|
|
||||||
|
capabilities = new ArrayList<>();
|
||||||
|
capabilities.add(Adjustment.KEY_RANKING_SCORE);
|
||||||
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
|
assertThat(mPrioritizerController.isChecked()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_rankingSettingIsOff_false() {
|
||||||
|
List<String> capabilities = new ArrayList<>();
|
||||||
|
capabilities.add(Adjustment.KEY_IMPORTANCE);
|
||||||
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
|
assertThat(mRankingController.isChecked()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_rankingSettingIsOn_true() {
|
||||||
|
List<String> capabilities = new ArrayList<>();
|
||||||
|
capabilities.add(Adjustment.KEY_RANKING_SCORE);
|
||||||
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
|
assertThat(mRankingController.isChecked()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -120,6 +151,11 @@ public class AssistantCapabilityPreferenceControllerTest {
|
|||||||
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
assertThat(mChipController.isChecked()).isFalse();
|
assertThat(mChipController.isChecked()).isFalse();
|
||||||
|
|
||||||
|
capabilities = new ArrayList<>();
|
||||||
|
capabilities.add(Adjustment.KEY_RANKING_SCORE);
|
||||||
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
|
assertThat(mChipController.isChecked()).isFalse();
|
||||||
|
|
||||||
capabilities = new ArrayList<>();
|
capabilities = new ArrayList<>();
|
||||||
capabilities.add(Adjustment.KEY_CONTEXTUAL_ACTIONS);
|
capabilities.add(Adjustment.KEY_CONTEXTUAL_ACTIONS);
|
||||||
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
when(mBackend.getAssistantAdjustments(anyString())).thenReturn(capabilities);
|
||||||
@@ -152,6 +188,18 @@ public class AssistantCapabilityPreferenceControllerTest {
|
|||||||
verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_IMPORTANCE, false);
|
verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_IMPORTANCE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPreferenceChange_rankingOn() {
|
||||||
|
mRankingController.onPreferenceChange(mRankingPreference, true);
|
||||||
|
verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_RANKING_SCORE, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onPreferenceChange_rankingOff() {
|
||||||
|
mRankingController.onPreferenceChange(mRankingPreference, false);
|
||||||
|
verify(mBackend).allowAssistantAdjustment(Adjustment.KEY_RANKING_SCORE, false);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onPreferenceChange_chipsOn() {
|
public void onPreferenceChange_chipsOn() {
|
||||||
mChipController.onPreferenceChange(mChipPreference, true);
|
mChipController.onPreferenceChange(mChipPreference, true);
|
||||||
|
Reference in New Issue
Block a user