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 
getCurrentProfiles()52     SparseArray<UserInfo> getCurrentProfiles();
53 
setLockscreenPublicMode(boolean isProfilePublic, int userId)54     void setLockscreenPublicMode(boolean isProfilePublic, int userId);
55 
shouldShowLockscreenNotifications()56     boolean shouldShowLockscreenNotifications();
57 
shouldHideNotifications(int userId)58     boolean shouldHideNotifications(int userId);
shouldHideNotifications(String key)59     boolean shouldHideNotifications(String key);
shouldShowOnKeyguard(NotificationEntry entry)60     boolean shouldShowOnKeyguard(NotificationEntry entry);
61 
isAnyProfilePublicMode()62     boolean isAnyProfilePublicMode();
63 
updatePublicMode()64     void updatePublicMode();
65 
needsRedaction(NotificationEntry entry)66     boolean needsRedaction(NotificationEntry entry);
67 
userAllowsPrivateNotificationsInPublic(int currentUserId)68     boolean userAllowsPrivateNotificationsInPublic(int currentUserId);
69 
70     /** Notified when the current user changes. */
71     interface UserChangedListener {
onUserChanged(int userId)72         void onUserChanged(int userId);
73     }
74 }
75