1 /* 2 * Copyright (C) 2025 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 */ 16 17 package com.android.systemui.keyguard.data.repository 18 19 import android.os.IRemoteCallback 20 import com.android.systemui.dagger.SysUISingleton 21 import javax.inject.Inject 22 23 /** 24 * Holds an IRemoteCallback along with the current user ID at the time the callback was provided. 25 */ 26 data class ShowLockscreenCallback(val userId: Int, val remoteCallback: IRemoteCallback) 27 28 /** Maintains state related to KeyguardService requests to show the lockscreen. */ 29 @SysUISingleton 30 class KeyguardServiceShowLockscreenRepository @Inject constructor() { 31 val showLockscreenCallbacks = ArrayList<ShowLockscreenCallback>() 32 33 /** 34 * Adds a callback that we'll notify when we show the lockscreen (or affirmatively decide not to 35 * show it). 36 */ addShowLockscreenCallbacknull37 fun addShowLockscreenCallback(forUser: Int, callback: IRemoteCallback) { 38 synchronized(showLockscreenCallbacks) { 39 showLockscreenCallbacks.add(ShowLockscreenCallback(forUser, callback)) 40 } 41 } 42 43 companion object { 44 private const val TAG = "ShowLockscreenRepository" 45 } 46 } 47