blob: e9515fa7fd9d3d6f2e94b13e52927aac6b47b30e [file] [log] [blame]
Julia Reynoldsb5e44b72016-08-16 15:00:25 -04001/*
2 * Copyright (C) 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.server.notification;
17
Brett Chabot84151d92019-02-27 15:37:59 -080018import static org.junit.Assert.assertEquals;
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040019import static org.mockito.Matchers.anyInt;
20import static org.mockito.Matchers.anyString;
21import static org.mockito.Mockito.when;
22
Brett Chabot84151d92019-02-27 15:37:59 -080023import android.app.ActivityManager;
24import android.app.Notification;
25import android.app.Notification.Builder;
26import android.app.NotificationChannel;
27import android.app.NotificationManager;
28import android.os.UserHandle;
29import android.service.notification.StatusBarNotification;
30import android.test.suitebuilder.annotation.SmallTest;
31
32import androidx.test.runner.AndroidJUnit4;
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040033
Jason Monk74f5e362017-12-06 08:56:33 -050034import com.android.server.UiServiceTestCase;
35
Brett Chabot84151d92019-02-27 15:37:59 -080036import org.junit.Before;
37import org.junit.Test;
38import org.junit.runner.RunWith;
39import org.mockito.Mock;
40import org.mockito.MockitoAnnotations;
41
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040042@SmallTest
43@RunWith(AndroidJUnit4.class)
Jason Monk74f5e362017-12-06 08:56:33 -050044public class ImportanceExtractorTest extends UiServiceTestCase {
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040045
46 @Mock RankingConfig mConfig;
47
48 private String mPkg = "com.android.server.notification";
49 private int mId = 1001;
50 private int mOtherId = 1002;
51 private String mTag = null;
52 private int mUid = 1000;
53 private int mPid = 2000;
54 private int mScore = 10;
55 private android.os.UserHandle mUser = UserHandle.of(ActivityManager.getCurrentUser());
56
57 @Before
58 public void setUp() {
59 MockitoAnnotations.initMocks(this);
60 }
61
62 private NotificationRecord getNotificationRecord(NotificationChannel channel) {
63 final Builder builder = new Builder(getContext())
64 .setContentTitle("foo")
65 .setSmallIcon(android.R.drawable.sym_def_app_icon)
66 .setPriority(Notification.PRIORITY_HIGH)
67 .setDefaults(Notification.DEFAULT_SOUND);
68
69 Notification n = builder.build();
Julia Reynolds924eed12017-01-19 09:52:07 -050070 StatusBarNotification sbn = new StatusBarNotification(mPkg, mPkg, mId, mTag, mUid,
Julia Reynolds423b9fc2016-11-09 09:51:08 -050071 mPid, n, mUser, null, System.currentTimeMillis());
Geoffrey Pitscha22f6442017-05-05 16:47:38 +000072 NotificationRecord r = new NotificationRecord(getContext(), sbn, channel);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040073 return r;
74 }
75
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040076 //
77 // Tests
78 //
79
80 @Test
Julia Reynoldsefcdff42018-08-09 09:42:56 -040081 public void testAppPreferenceChannelNone() {
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040082 ImportanceExtractor extractor = new ImportanceExtractor();
83 extractor.setConfig(mConfig);
84
85 when(mConfig.getImportance(anyString(), anyInt())).thenReturn(
86 NotificationManager.IMPORTANCE_MIN);
Julia Reynolds85769912016-10-25 09:08:57 -040087 NotificationChannel channel =
88 new NotificationChannel("a", "a", NotificationManager.IMPORTANCE_UNSPECIFIED);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040089
90 NotificationRecord r = getNotificationRecord(channel);
Julia Reynoldsa917a112017-03-21 11:09:14 -040091 int notificationImportance = r.getImportance();
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040092
93 extractor.process(r);
94
Julia Reynoldsefcdff42018-08-09 09:42:56 -040095 assertEquals(NotificationManager.IMPORTANCE_UNSPECIFIED, r.getImportance());
Julia Reynoldsa917a112017-03-21 11:09:14 -040096 assertEquals(notificationImportance, r.getImportance());
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040097 }
98
99 @Test
Julia Reynoldsefcdff42018-08-09 09:42:56 -0400100 public void testAppPreferenceChannelPreference() {
Julia Reynoldsb5e44b72016-08-16 15:00:25 -0400101 ImportanceExtractor extractor = new ImportanceExtractor();
102 extractor.setConfig(mConfig);
103
104 when(mConfig.getImportance(anyString(), anyInt())).thenReturn(
105 NotificationManager.IMPORTANCE_MIN);
Julia Reynolds85769912016-10-25 09:08:57 -0400106 NotificationChannel channel =
107 new NotificationChannel("a", "a", NotificationManager.IMPORTANCE_HIGH);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -0400108
109 NotificationRecord r = getNotificationRecord(channel);
110
111 extractor.process(r);
112
Julia Reynoldsefcdff42018-08-09 09:42:56 -0400113 assertEquals(r.getImportance(), NotificationManager.IMPORTANCE_HIGH);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -0400114 }
115}