1 /*
2  * Copyright (C) 2024 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.bouncer.shared.flag
18 
19 import com.android.systemui.Flags
20 import com.android.systemui.dagger.SysUISingleton
21 import com.android.systemui.scene.shared.flag.SceneContainerFlag
22 import dagger.Module
23 import dagger.Provides
24 
25 interface ComposeBouncerFlags {
26 
27     /**
28      * Returns `true` if the Compose bouncer is enabled or if the scene container framework is
29      * enabled; `false` otherwise.
30      */
isComposeBouncerOrSceneContainerEnablednull31     fun isComposeBouncerOrSceneContainerEnabled(): Boolean
32 
33     /**
34      * Returns `true` if only compose bouncer is enabled and scene container framework is not
35      * enabled.
36      */
37     @Deprecated(
38         "Avoid using this, this is meant to be used only by the glue code " +
39             "that includes compose bouncer in legacy keyguard.",
40         replaceWith = ReplaceWith("isComposeBouncerOrSceneContainerEnabled()")
41     )
42     fun isOnlyComposeBouncerEnabled(): Boolean
43 }
44 
45 class ComposeBouncerFlagsImpl() : ComposeBouncerFlags {
46 
47     override fun isComposeBouncerOrSceneContainerEnabled(): Boolean {
48         return SceneContainerFlag.isEnabled || Flags.composeBouncer()
49     }
50 
51     @Deprecated(
52         "Avoid using this, this is meant to be used only by the glue code " +
53             "that includes compose bouncer in legacy keyguard.",
54         replaceWith = ReplaceWith("isComposeBouncerOrSceneContainerEnabled()")
55     )
56     override fun isOnlyComposeBouncerEnabled(): Boolean {
57         return !SceneContainerFlag.isEnabled && Flags.composeBouncer()
58     }
59 }
60 
61 @Module
62 object ComposeBouncerFlagsModule {
63     @Provides
64     @SysUISingleton
implnull65     fun impl(): ComposeBouncerFlags {
66         return ComposeBouncerFlagsImpl()
67     }
68 }
69