Merge changes from topic "jr-update" into rvc-dev am: 4bbe564aea
Change-Id: If57ab8c7d45fbd771b5be23aa5812cdb9e0b35e5
This commit is contained in:
@@ -8409,6 +8409,15 @@
|
|||||||
<!-- [CHAR LIMIT=100] link to page listing all conversations -->
|
<!-- [CHAR LIMIT=100] link to page listing all conversations -->
|
||||||
<string name="manage_conversations">Manage conversations</string>
|
<string name="manage_conversations">Manage conversations</string>
|
||||||
|
|
||||||
|
<!-- [CHAR LIMIT=100] summary text on link to 'all conversations' page, no conversations are priority -->
|
||||||
|
<string name="priority_conversation_count_zero">No priority conversations</string>
|
||||||
|
|
||||||
|
<!-- [CHAR LIMIT=100] summary text on link to 'all conversations' page, some conversations are priority -->
|
||||||
|
<plurals name="priority_conversation_count">
|
||||||
|
<item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> priority conversation</item>
|
||||||
|
<item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> priority conversations</item>
|
||||||
|
</plurals>
|
||||||
|
|
||||||
<!-- [CHAR LIMIT=100] preference category title -->
|
<!-- [CHAR LIMIT=100] preference category title -->
|
||||||
<string name="important_conversations">Priority conversations</string>
|
<string name="important_conversations">Priority conversations</string>
|
||||||
|
|
||||||
|
@@ -46,6 +46,14 @@
|
|||||||
android:layout="@layout/preference_category_no_label"
|
android:layout="@layout/preference_category_no_label"
|
||||||
android:order="-997"/>
|
android:order="-997"/>
|
||||||
|
|
||||||
|
<Preference
|
||||||
|
android:key="conversations"
|
||||||
|
android:title="@string/conversations_category_title"
|
||||||
|
android:order="-550"
|
||||||
|
settings:controller="com.android.settings.notification.ConversationListSummaryPreferenceController"
|
||||||
|
android:fragment="com.android.settings.notification.app.ConversationListSettings"
|
||||||
|
/>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="configure_notification_settings"
|
android:key="configure_notification_settings"
|
||||||
android:title="@string/configure_notification_settings"
|
android:title="@string/configure_notification_settings"
|
||||||
|
@@ -38,14 +38,6 @@
|
|||||||
android:targetClass="com.android.settings.notification.history.NotificationHistoryActivity" />
|
android:targetClass="com.android.settings.notification.history.NotificationHistoryActivity" />
|
||||||
</Preference>
|
</Preference>
|
||||||
|
|
||||||
<Preference
|
|
||||||
android:key="conversations"
|
|
||||||
android:title="@string/conversations_category_title"
|
|
||||||
android:summary="@string/manage_conversations"
|
|
||||||
android:order="3"
|
|
||||||
android:fragment="com.android.settings.notification.app.ConversationListSettings"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="notification_bubbles"
|
android:key="notification_bubbles"
|
||||||
android:title="@string/notification_bubbles_title"
|
android:title="@string/notification_bubbles_title"
|
||||||
|
@@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.notification;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
|
public class ConversationListSummaryPreferenceController extends BasePreferenceController {
|
||||||
|
|
||||||
|
private NotificationBackend mBackend;
|
||||||
|
|
||||||
|
public ConversationListSummaryPreferenceController(Context context, String key) {
|
||||||
|
super(context, key);
|
||||||
|
mBackend = new NotificationBackend();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAvailabilityStatus() {
|
||||||
|
return AVAILABLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getSummary() {
|
||||||
|
final int count = mBackend.getConversations(true).getList().size();
|
||||||
|
if (count == 0) {
|
||||||
|
return mContext.getText(R.string.priority_conversation_count_zero);
|
||||||
|
}
|
||||||
|
return mContext.getResources().getQuantityString(
|
||||||
|
R.plurals.priority_conversation_count,
|
||||||
|
count, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
void setBackend(NotificationBackend backend) {
|
||||||
|
mBackend = backend;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2020 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.notification;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.pm.ParceledListSlice;
|
||||||
|
import android.service.notification.ConversationChannelWrapper;
|
||||||
|
|
||||||
|
import com.android.settings.testutils.shadow.ShadowNotificationBackend;
|
||||||
|
|
||||||
|
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 org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner.class)
|
||||||
|
@Config(shadows = ShadowNotificationBackend.class)
|
||||||
|
public class ConversationListSummaryPreferenceControllerTest {
|
||||||
|
|
||||||
|
private ConversationListSummaryPreferenceController mController;
|
||||||
|
private Context mContext;
|
||||||
|
@Mock
|
||||||
|
NotificationBackend mBackend;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mContext = RuntimeEnvironment.application;
|
||||||
|
mController = new ConversationListSummaryPreferenceController(mContext, "key");
|
||||||
|
mController.setBackend(mBackend);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSummary_noPriorityConversations() {
|
||||||
|
List<ConversationChannelWrapper> convos = new ArrayList<>();
|
||||||
|
when(mBackend.getConversations(true)).thenReturn(
|
||||||
|
new ParceledListSlice<>(convos));
|
||||||
|
|
||||||
|
assertThat(mController.getSummary().toString()).contains("No");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getSummary_somePriorityConversations() {
|
||||||
|
List<ConversationChannelWrapper> convos = new ArrayList<>();
|
||||||
|
convos.add(mock(ConversationChannelWrapper.class));
|
||||||
|
convos.add(mock(ConversationChannelWrapper.class));
|
||||||
|
when(mBackend.getConversations(true)).thenReturn(
|
||||||
|
new ParceledListSlice<>(convos));
|
||||||
|
|
||||||
|
assertThat(mController.getSummary().toString()).contains("2");
|
||||||
|
assertThat(mController.getSummary().toString()).contains("conversations");
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user