Merge "Update the summary for DND conditional"
This commit is contained in:
committed by
Android (Google) Code Review
commit
9232a4a147
@@ -9169,8 +9169,11 @@
|
|||||||
<!-- Title of condition that do not disturb is on [CHAR LIMIT=36] -->
|
<!-- Title of condition that do not disturb is on [CHAR LIMIT=36] -->
|
||||||
<string name="condition_zen_title">Do Not Disturb is on</string>
|
<string name="condition_zen_title">Do Not Disturb is on</string>
|
||||||
|
|
||||||
<!-- Summary of condition that do not disturb is on [CHAR LIMIT=36] -->
|
<!-- Summary of condition that do not disturb is on and all exceptions set to off [CHAR LIMIT=36] -->
|
||||||
<string name="condition_zen_summary">Impacts what you hear and see</string>
|
<string name="condition_zen_summary_phone_muted">Phone muted</string>
|
||||||
|
|
||||||
|
<!-- Summary of condition that do not disturb is on and some exceptions are allowed [CHAR LIMIT=36] -->
|
||||||
|
<string name="condition_zen_summary_with_exceptions">With exceptions</string>
|
||||||
|
|
||||||
<!-- Title of condition that battery saver is on [CHAR LIMIT=30] -->
|
<!-- Title of condition that battery saver is on [CHAR LIMIT=30] -->
|
||||||
<string name="condition_battery_title">Battery Saver is on</string>
|
<string name="condition_battery_title">Battery Saver is on</string>
|
||||||
@@ -9200,25 +9203,16 @@
|
|||||||
<string name="condition_device_muted_action_turn_on_sound">Turn on sound</string>
|
<string name="condition_device_muted_action_turn_on_sound">Turn on sound</string>
|
||||||
|
|
||||||
<!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
|
<!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
|
||||||
<string name="condition_device_muted_title" product="tablet">Device is muted</string>
|
<string name="condition_device_muted_title">Ringer muted</string>
|
||||||
|
|
||||||
<!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
|
|
||||||
<string name="condition_device_muted_title" product="default">Phone muted</string>
|
|
||||||
|
|
||||||
<!-- Summary of condition that indicates device is muted -->
|
<!-- Summary of condition that indicates device is muted -->
|
||||||
<string name="condition_device_muted_summary">For calls & notifications</string>
|
<string name="condition_device_muted_summary">For calls & notifications</string>
|
||||||
|
|
||||||
<!-- Title of condition that indicates device is set to vibrate [CHAR LIMIT=50] -->
|
<!-- Title of condition that indicates device is set to vibrate [CHAR LIMIT=50] -->
|
||||||
<string name="condition_device_vibrate_title" product="tablet">Device is set to vibrate</string>
|
<string name="condition_device_vibrate_title">Vibration only</string>
|
||||||
|
|
||||||
<!-- Title of condition that indicates device is muted [CHAR LIMIT=50] -->
|
|
||||||
<string name="condition_device_vibrate_title" product="default">Vibration only</string>
|
|
||||||
|
|
||||||
<!-- Summary of condition that indicates device is set to vibrate -->
|
<!-- Summary of condition that indicates device is set to vibrate -->
|
||||||
<string name="condition_device_vibrate_summary" product="tablet">Calls and notifications will vibrate device</string>
|
<string name="condition_device_vibrate_summary">For calls & notifications</string>
|
||||||
|
|
||||||
<!-- Summary of condition that indicates device is set to vibrate -->
|
|
||||||
<string name="condition_device_vibrate_summary" product="default">For calls & notifications</string>
|
|
||||||
|
|
||||||
<!-- Night display: Title for the night display option Suggestion (renamed "Night Light" with title caps). [CHAR LIMIT=46] -->
|
<!-- Night display: Title for the night display option Suggestion (renamed "Night Light" with title caps). [CHAR LIMIT=46] -->
|
||||||
<string name="night_display_suggestion_title">Set Night Light schedule</string>
|
<string name="night_display_suggestion_title">Set Night Light schedule</string>
|
||||||
|
@@ -23,6 +23,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
import android.service.notification.ZenModeConfig;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
@@ -97,7 +98,7 @@ public class DndConditionCardController implements ConditionalCardController {
|
|||||||
.setName(mAppContext.getPackageName() + "/"
|
.setName(mAppContext.getPackageName() + "/"
|
||||||
+ mAppContext.getText(R.string.condition_zen_title))
|
+ mAppContext.getText(R.string.condition_zen_title))
|
||||||
.setTitleText(mAppContext.getText(R.string.condition_zen_title).toString())
|
.setTitleText(mAppContext.getText(R.string.condition_zen_title).toString())
|
||||||
.setSummaryText(mAppContext.getText(R.string.condition_zen_summary).toString())
|
.setSummaryText(getSummary())
|
||||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
|
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
|
||||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||||
.build();
|
.build();
|
||||||
@@ -112,4 +113,11 @@ public class DndConditionCardController implements ConditionalCardController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getSummary() {
|
||||||
|
if (ZenModeConfig.areAllZenBehaviorSoundsMuted(mNotificationManager.getZenModeConfig())) {
|
||||||
|
return mAppContext.getText(R.string.condition_zen_summary_phone_muted).toString();
|
||||||
|
}
|
||||||
|
return mAppContext.getText(R.string.condition_zen_summary_with_exceptions).toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,13 +16,22 @@
|
|||||||
|
|
||||||
package com.android.settings.homepage.contextualcards.conditional;
|
package com.android.settings.homepage.contextualcards.conditional;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.app.NotificationManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.service.notification.ZenModeConfig;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.homepage.contextualcards.ContextualCard;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowNotificationManager;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -30,7 +39,10 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.shadow.api.Shadow;
|
||||||
|
|
||||||
|
@Config(shadows = ShadowNotificationManager.class)
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class DndConditionalCardControllerTest {
|
public class DndConditionalCardControllerTest {
|
||||||
|
|
||||||
@@ -38,12 +50,14 @@ public class DndConditionalCardControllerTest {
|
|||||||
private ConditionManager mConditionManager;
|
private ConditionManager mConditionManager;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private DndConditionCardController mController;
|
private DndConditionCardController mController;
|
||||||
|
private ShadowNotificationManager mNotificationManager;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
mController = new DndConditionCardController(mContext, mConditionManager);
|
mController = new DndConditionCardController(mContext, mConditionManager);
|
||||||
|
mNotificationManager = Shadow.extract(mContext.getSystemService(NotificationManager.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -55,4 +69,58 @@ public class DndConditionalCardControllerTest {
|
|||||||
eq(DndConditionCardController.DND_FILTER));
|
eq(DndConditionCardController.DND_FILTER));
|
||||||
verify(mContext).unregisterReceiver(any(DndConditionCardController.Receiver.class));
|
verify(mContext).unregisterReceiver(any(DndConditionCardController.Receiver.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildContextualCard_allSoundsMuted_shouldHavePhoneMutedSummary() {
|
||||||
|
mNotificationManager.setZenModeConfig(getMutedAllConfig());
|
||||||
|
|
||||||
|
final ContextualCard card = mController.buildContextualCard();
|
||||||
|
|
||||||
|
assertThat(card.getSummaryText()).isEqualTo(
|
||||||
|
mContext.getString(R.string.condition_zen_summary_phone_muted));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildContextualCard_allowSomeSounds_shouldHaveWittExceptionsSummary() {
|
||||||
|
mNotificationManager.setZenModeConfig(getCustomConfig());
|
||||||
|
|
||||||
|
final ContextualCard card = mController.buildContextualCard();
|
||||||
|
|
||||||
|
assertThat(card.getSummaryText()).isEqualTo(
|
||||||
|
mContext.getString(R.string.condition_zen_summary_with_exceptions));
|
||||||
|
}
|
||||||
|
|
||||||
|
private ZenModeConfig getCustomConfig() {
|
||||||
|
final ZenModeConfig config = new ZenModeConfig();
|
||||||
|
// Some sounds allowed
|
||||||
|
config.allowAlarms = true;
|
||||||
|
config.allowMedia = false;
|
||||||
|
config.allowSystem = false;
|
||||||
|
config.allowCalls = true;
|
||||||
|
config.allowRepeatCallers = true;
|
||||||
|
config.allowMessages = false;
|
||||||
|
config.allowReminders = false;
|
||||||
|
config.allowEvents = false;
|
||||||
|
config.areChannelsBypassingDnd = false;
|
||||||
|
config.allowCallsFrom = ZenModeConfig.SOURCE_ANYONE;
|
||||||
|
config.allowMessagesFrom = ZenModeConfig.SOURCE_ANYONE;
|
||||||
|
config.suppressedVisualEffects = 0;
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ZenModeConfig getMutedAllConfig() {
|
||||||
|
final ZenModeConfig config = new ZenModeConfig();
|
||||||
|
// No sounds allowed
|
||||||
|
config.allowAlarms = false;
|
||||||
|
config.allowMedia = false;
|
||||||
|
config.allowSystem = false;
|
||||||
|
config.allowCalls = false;
|
||||||
|
config.allowRepeatCallers = false;
|
||||||
|
config.allowMessages = false;
|
||||||
|
config.allowReminders = false;
|
||||||
|
config.allowEvents = false;
|
||||||
|
config.areChannelsBypassingDnd = false;
|
||||||
|
config.suppressedVisualEffects = 0;
|
||||||
|
return config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.testutils.shadow;
|
|||||||
|
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.service.notification.ZenModeConfig;
|
||||||
|
|
||||||
import org.robolectric.annotation.Implementation;
|
import org.robolectric.annotation.Implementation;
|
||||||
import org.robolectric.annotation.Implements;
|
import org.robolectric.annotation.Implements;
|
||||||
@@ -26,6 +27,7 @@ import org.robolectric.annotation.Implements;
|
|||||||
public class ShadowNotificationManager {
|
public class ShadowNotificationManager {
|
||||||
|
|
||||||
private int mZenMode;
|
private int mZenMode;
|
||||||
|
private ZenModeConfig mZenModeConfig;
|
||||||
|
|
||||||
@Implementation
|
@Implementation
|
||||||
protected void setZenMode(int mode, Uri conditionId, String reason) {
|
protected void setZenMode(int mode, Uri conditionId, String reason) {
|
||||||
@@ -36,4 +38,13 @@ public class ShadowNotificationManager {
|
|||||||
protected int getZenMode() {
|
protected int getZenMode() {
|
||||||
return mZenMode;
|
return mZenMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Implementation
|
||||||
|
public ZenModeConfig getZenModeConfig() {
|
||||||
|
return mZenModeConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZenModeConfig(ZenModeConfig config) {
|
||||||
|
mZenModeConfig = config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user