1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.systemui.statusbar;
16 
17 import android.content.pm.UserInfo;
18 import android.util.SparseArray;
19 
20 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
21 
22 public interface NotificationLockscreenUserManager {
23     String PERMISSION_SELF = "com.android.systemui.permission.SELF";
24     String NOTIFICATION_UNLOCKED_BY_WORK_CHALLENGE_ACTION
25             = "com.android.systemui.statusbar.work_challenge_unlocked_notification_action";
26 
shouldAllowLockscreenRemoteInput()27     boolean shouldAllowLockscreenRemoteInput();
28 
29     /**
30      * @param userId user Id
31      * @return true if we re on a secure lock screen
32      */
isLockscreenPublicMode(int userId)33     boolean isLockscreenPublicMode(int userId);
34 
35     /**
36      * Does a user require a separate work challenge? If so, the unlock mechanism is decoupled from
37      * the current user and has to be solved separately.
38      */
needsSeparateWorkChallenge(int userId)39     default boolean needsSeparateWorkChallenge(int userId) {
40         return false;
41     }
42 
setUpWithPresenter(NotificationPresenter presenter)43     void setUpWithPresenter(NotificationPresenter presenter);
44 
getCurrentUserId()45     int getCurrentUserId();
46 
isCurrentProfile(int userId)47     boolean isCurrentProfile(int userId);
48 
49     /** Adds a listener to be notified when the current user changes. */
addUserChangedListener(UserChangedListener listener)50     void addUserChangedListener(UserChangedListener listener);
51 
52     /**
53      * Removes a listener previously registered with
54      * {@link #addUserChangedListener(UserChangedListener)}
55      */
removeUserChangedListener(UserChangedListener listener)56     void removeUserChangedListener(UserChangedListener listener);
57 
getCurrentProfiles()58     SparseArray<UserInfo> getCurrentProfiles();
59 
setLockscreenPublicMode(boolean isProfilePublic, int userId)60     void setLockscreenPublicMode(boolean isProfilePublic, int userId);
61 
shouldShowLockscreenNotifications()62     boolean shouldShowLockscreenNotifications();
63 
shouldHideNotifications(int userId)64     boolean shouldHideNotifications(int userId);
shouldHideNotifications(String key)65     boolean shouldHideNotifications(String key);
shouldShowOnKeyguard(NotificationEntry entry)66     boolean shouldShowOnKeyguard(NotificationEntry entry);
67 
isAnyProfilePublicMode()68     boolean isAnyProfilePublicMode();
69 
updatePublicMode()70     void updatePublicMode();
71 
needsRedaction(NotificationEntry entry)72     boolean needsRedaction(NotificationEntry entry);
73 
74     /**
75      * Has the given user chosen to allow their private (full) notifications to be shown even
76      * when the lockscreen is in "public" (secure & locked) mode?
77      */
userAllowsPrivateNotificationsInPublic(int currentUserId)78     boolean userAllowsPrivateNotificationsInPublic(int currentUserId);
79 
80     /**
81      * Has the given user chosen to allow notifications to be shown even when the lockscreen is in
82      * "public" (secure & locked) mode?
83      */
userAllowsNotificationsInPublic(int userId)84     boolean userAllowsNotificationsInPublic(int userId);
85 
86     /** Notified when the current user changes. */
87     interface UserChangedListener {
onUserChanged(int userId)88         default void onUserChanged(int userId) {}
onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles)89         default void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) {}
90     }
91 }
92