1
- import { sendMessage } from '@/utils/message' ;
2
1
import handleFormElement from '@/utils/handleFormElement' ;
2
+ import { sendMessage } from '@/utils/message' ;
3
3
import handleSelector , { markElement } from '../handleSelector' ;
4
+ import synchronizedLock from '../synchronizedLock' ;
4
5
5
6
async function forms ( block ) {
6
7
const { data } = block ;
@@ -24,38 +25,43 @@ async function forms(block) {
24
25
25
26
async function typeText ( element ) {
26
27
if ( block . debugMode && data . type === 'text-field' ) {
28
+ // get lock
29
+ await synchronizedLock . getLock ( ) ;
27
30
element . focus ?. ( ) ;
28
31
29
- if ( data . clearValue ) {
30
- const backspaceCommands = new Array ( element . value ?. length ?? 0 ) . fill ( {
31
- type : 'rawKeyDown' ,
32
- unmodifiedText : 'Delete' ,
33
- text : 'Delete' ,
34
- windowsVirtualKeyCode : 46 ,
35
- } ) ;
32
+ try {
33
+ if ( data . clearValue ) {
34
+ const backspaceCommands = new Array ( element . value ?. length ?? 0 ) . fill ( {
35
+ type : 'rawKeyDown' ,
36
+ unmodifiedText : 'Delete' ,
37
+ text : 'Delete' ,
38
+ windowsVirtualKeyCode : 46 ,
39
+ } ) ;
40
+
41
+ await sendMessage (
42
+ 'debugger:type' ,
43
+ { commands : backspaceCommands , tabId : block . activeTabId , delay : 0 } ,
44
+ 'background'
45
+ ) ;
46
+ }
36
47
48
+ const commands = data . value . split ( '' ) . map ( ( char ) => ( {
49
+ type : 'keyDown' ,
50
+ text : char === '\n' ? '\r' : char ,
51
+ } ) ) ;
52
+ const typeDelay = + block . data . delay ;
37
53
await sendMessage (
38
54
'debugger:type' ,
39
- { commands : backspaceCommands , tabId : block . activeTabId , delay : 0 } ,
55
+ {
56
+ commands,
57
+ tabId : block . activeTabId ,
58
+ delay : Number . isNaN ( typeDelay ) ? 0 : typeDelay ,
59
+ } ,
40
60
'background'
41
61
) ;
62
+ } finally {
63
+ synchronizedLock . releaseLock ( ) ;
42
64
}
43
-
44
- const commands = data . value . split ( '' ) . map ( ( char ) => ( {
45
- type : 'keyDown' ,
46
- text : char === '\n' ? '\r' : char ,
47
- } ) ) ;
48
- const typeDelay = + block . data . delay ;
49
- await sendMessage (
50
- 'debugger:type' ,
51
- {
52
- commands,
53
- tabId : block . activeTabId ,
54
- delay : Number . isNaN ( typeDelay ) ? 0 : typeDelay ,
55
- } ,
56
- 'background'
57
- ) ;
58
-
59
65
return ;
60
66
}
61
67
0 commit comments