ronnie
2022-10-14 1504bb53e29d3d46222c0b3ea994fc494b48e153
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.keyguard;
 
import android.content.res.ColorStateList;
import android.view.MotionEvent;
 
import com.android.internal.widget.LockPatternUtils;
 
public interface KeyguardSecurityView {
    static public final int SCREEN_ON = 1;
    static public final int VIEW_REVEALED = 2;
 
    int PROMPT_REASON_NONE = 0;
 
    /**
     * Strong auth is required because the device has just booted.
     */
    int PROMPT_REASON_RESTART = 1;
 
    /**
     * Strong auth is required because the user hasn't used strong auth since a while.
     */
    int PROMPT_REASON_TIMEOUT = 2;
 
    /**
     * Strong auth is required because a device admin requested it.
     */
    int PROMPT_REASON_DEVICE_ADMIN = 3;
 
    /**
     * Some auth is required because the user force locked.
     */
    int PROMPT_REASON_USER_REQUEST = 4;
 
    /**
     * Some auth is required because too many wrong credentials led to a lockout.
     */
    int PROMPT_REASON_AFTER_LOCKOUT = 5;
 
    /**
     * Interface back to keyguard to tell it when security
     * @param callback
     */
    void setKeyguardCallback(KeyguardSecurityCallback callback);
 
    /**
     * Set {@link LockPatternUtils} object. Useful for providing a mock interface.
     * @param utils
     */
    void setLockPatternUtils(LockPatternUtils utils);
 
    /**
     * Reset the view and prepare to take input. This should do things like clearing the
     * password or pattern and clear error messages.
     */
    void reset();
 
    /**
     * Emulate activity life cycle within the view. When called, the view should clean up
     * and prepare to be removed.
     */
    void onPause();
 
    /**
     * Emulate activity life cycle within this view.  When called, the view should prepare itself
     * to be shown.
     * @param reason the root cause of the event.
     */
    void onResume(int reason);
 
    /**
     * Inquire whether this view requires IME (keyboard) interaction.
     *
     * @return true if IME interaction is required.
     */
    boolean needsInput();
 
    /**
     * Get {@link KeyguardSecurityCallback} for the given object
     * @return KeyguardSecurityCallback
     */
    KeyguardSecurityCallback getCallback();
 
    /**
     * Show a string explaining why the security view needs to be solved.
     *
     * @param reason a flag indicating which string should be shown, see {@link #PROMPT_REASON_NONE}
     *               and {@link #PROMPT_REASON_RESTART}
     */
    void showPromptReason(int reason);
 
    /**
     * Show a message on the security view with a specified color
     *
     * @param message the message to show
     * @param colorState the color to use
     */
    void showMessage(CharSequence message, ColorStateList colorState);
 
    /**
     * Instruct the view to show usability hints, if any.
     *
     */
    void showUsabilityHint();
 
    /**
     * Starts the animation which should run when the security view appears.
     */
    void startAppearAnimation();
 
    /**
     * Starts the animation which should run when the security view disappears.
     *
     * @param finishRunnable the runnable to be run when the animation ended
     * @return true if an animation started and {@code finishRunnable} will be run, false if no
     *         animation started and {@code finishRunnable} will not be run
     */
    boolean startDisappearAnimation(Runnable finishRunnable);
 
    /**
     * The localized name of the security view, provided to accessibility. This may be the content
     * description, but content descriptions have other implications, so the title is kept separate.
     *
     * @return The View's title.
     */
    CharSequence getTitle();
 
    /**
     * If the parent should not be allowed to intercept touch events.
     * @param event A touch event.
     * @return {@code true} if touch should be passed forward.
     * @see android.view.ViewGroup#requestDisallowInterceptTouchEvent(boolean)
     */
    default boolean disallowInterceptTouch(MotionEvent event) {
        return false;
    }
}