~aleteoryx/muditaos

ref: 2cd0e4721405c0bf263f311f27d38aadae6ac89f muditaos/module-apps/application-desktop/doc/appdesktop_pinflow_simrace.pu -rw-r--r-- 3.8 KiB
2cd0e472 — Lefucjusz [BH-000] Update Harmony 2.10.0 changelog 2 months ago
                                                                                
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
152
153
154
@startuml
skinparam BackgroundColor F0F0F0

participant "Service Cellular" as srvclr
participant "Application Manager" as appmgr
participant "ApplicaionDesktop" as appdsktp
participant "PinLockWindow" as pinwin
actor User

    == PIN required - potential race case ==

note left of srvclr
    Cellular side data:
    State: PIN required
    SIM: SIM1
    phone: +48500500500
    attempts: 4
end note
/ note left of appdsktp
    Desktop side state:
    Screen Locked
end note
/ note left of pinwin
    Desktop side data:
    None
end note

[o->srvclr : need PIN1
    activate srvclr
srvclr -> appmgr : ActionMessage{RequestPin1, {SIM1, attempts}} via sys::bus message
    deactivate srvclr
    activate appmgr
    appmgr -> appmgr : translate request to action
    appmgr -> appdsktp : forward action
        activate appdsktp
    deactivate appmgr
        appdsktp -> appdsktp : handle(RequestPinAction) -> queued
        deactivate appdsktp

        ... ...
        appdsktp <- User : Unlock screen
        activate appdsktp

note left of pinwin
    Desktop side data:
    State: PIN required
    SIM: SIM1
    attempts: 4
end note
/ note left of appdsktp
    Desktop side state:
    Screen Unlocked
end note

        appdsktp -> pinwin ** : switchWindow(SIM1, requiredPIN, attempts)
        deactivate appdsktp
            activate pinwin
            pinwin -> pinwin : setVisiblePinRequired
            pinwin <- User : Enters PIN
            pinwin <- User : Confirm
        appdsktp <- pinwin : handlePasscode(pinValue)
        activate appdsktp
            deactivate pinwin
note over srvclr, appdsktp #FFAAAA
    can such situation happen?
end note

[o->srvclr : need PIN2
activate srvclr

note left of srvclr
    Cellular side data:
    State: PIN required
    SIM: SIM2
    phone: +48600600600
    attempts: 4
end note
/ note left of pinwin
    Desktop side data:
    State: PIN required
    SIM: SIM1
    attempts: 4
end note

srvclr -> appmgr : ActionMessage{RequestPin1, {SIM2, attempts}} via sys::bus message
    activate appmgr
deactivate srvclr

srvclr <- appdsktp : PinData(pinValue) via sys::bus message
activate srvclr
        deactivate appdsktp
note left of srvclr #FFAAAA
    how to distinguish message
    old SIM and new SIM
    SIM1/SIM2 might be not enough
    is it possible to SIM1 - SIM1 race?
end note
srvclr -> srvclr : ?ignore?

    appmgr -> appmgr : translate request to action
deactivate srvclr
    appmgr -> appdsktp : forward action
        activate appdsktp
    deactivate appmgr
        appdsktp -> appdsktp : handle(RequestPinAction)

note left of pinwin
    Desktop side data:
    State: PIN required
    SIM: SIM2
    attempts: 4
end note

        appdsktp -> pinwin : switchWindow(SIM2, requiredPIN, attempts)
            activate pinwin
        deactivate appdsktp
            pinwin -> pinwin : rebuild
            pinwin -> pinwin : setVisiblePinRequired
            pinwin <- User : Enters PIN
            pinwin <- User : Confirm
        appdsktp <- pinwin : handlePasscode(pinValue)
        activate appdsktp
            deactivate pinwin
srvclr <- appdsktp : PinData(pinValue) via sys::bus message
activate srvclr
        deactivate appdsktp
srvclr -> srvclr : verification passed
deactivate srvclr
note left of srvclr
    Cellular side data:
    State: PIN unlocked
    SIM: SIM2
    phone: +48600600600
    attempts: 4
end note

[o->srvclr : SIM unlocked
activate srvclr
srvclr -> appmgr : ActionMessage{SimUnlocked, {SIM1}} via sys::bus message
    activate appmgr
deactivate srvclr
    appmgr -> appmgr : translate request to action
    appmgr -> appdsktp : forward action
        activate appdsktp
    deactivate appmgr
        appdsktp -> appdsktp : handle(SimUnlockedAction)
        appdsktp -> pinwin !! : delete
        deactivate appdsktp
note left of pinwin
    Desktop side data:
    None
end note

@enduml