Skip to content

Commit e8bacfe

Browse files
authored
Update NetWebView2Lib.au3 - prevent recursion in EVENTS handling
1 parent 8522db4 commit e8bacfe

1 file changed

Lines changed: 32 additions & 7 deletions

File tree

NetWebView2Lib.au3

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ Global Enum _ ; $NETWEBVIEW2_MESSAGE__* are set by __NetWebView2_WebViewEvents__
6161
$NETWEBVIEW2_MESSAGE__COOKIES_ERROR, _
6262
$NETWEBVIEW2_MESSAGE__COOKIE_ADD_ERROR, _
6363
$NETWEBVIEW2_MESSAGE__BLOCKED_AD, _
64+
$NETWEBVIEW2_MESSAGE__DOWNLOAD_STARTING, _
6465
$NETWEBVIEW2_MESSAGE___FAKE_COUNTER
6566

6667
#Region ; NetWebView2Lib UDF - _NetWebView2_* core functions
@@ -142,7 +143,14 @@ Func _NetWebView2_CreateManager($sUserAgent = '', $s_fnEventPrefix = "", $s_AddB
142143
If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " Manager Creation ERROR", 1)
143144
If $sUserAgent Then $oWebV2M.SetUserAgent($sUserAgent)
144145
If $s_AddBrowserArgs Then $oWebV2M.AdditionalBrowserArguments = $s_AddBrowserArgs
145-
If $s_fnEventPrefix Then $_g_sNetWebView2_User_WebViewEvents = $s_fnEventPrefix
146+
If $s_fnEventPrefix Then
147+
If $_g_sNetWebView2_User_WebViewEvents = '__NetWebView2_WebViewEvents__' Then ; prevent Recursion
148+
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' : Please do not use UDF defined prefix: "__NetWebView2_WebViewEvents__"', 1)
149+
$_g_sNetWebView2_User_WebViewEvents = ''
150+
Else
151+
$_g_sNetWebView2_User_WebViewEvents = $s_fnEventPrefix
152+
EndIf
153+
EndIf
146154
ObjEvent($oWebV2M, "__NetWebView2_WebViewEvents__", "IWebViewEvents")
147155
Return SetError(@error, @extended, $oWebV2M)
148156
EndFunc ;==>_NetWebView2_CreateManager
@@ -169,7 +177,14 @@ Func _NetWebView2_GetBridge(ByRef $oWebV2M, $s_fnEventPrefix = "")
169177
Local $oWebJS = $oWebV2M.GetBridge()
170178
If @error Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & " : Manager.GetBridge() ERROR", 1)
171179

172-
If $s_fnEventPrefix Then $_g_sNetWebView2_User_JSEvents = $s_fnEventPrefix
180+
If $s_fnEventPrefix Then
181+
If $_g_sNetWebView2_User_JSEvents = '__NetWebView2_JSEvents__' Then ; prevent Recursion
182+
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' : Please do not use UDF defined prefix: "__NetWebView2_JSEvents__"', 1)
183+
$_g_sNetWebView2_User_JSEvents = ''
184+
Else
185+
$_g_sNetWebView2_User_JSEvents = $s_fnEventPrefix
186+
EndIf
187+
EndIf
173188
ObjEvent($oWebJS, "__NetWebView2_JSEvents__", "IBridgeEvents")
174189

175190
Return SetError(@error, @extended, $oWebJS)
@@ -762,12 +777,18 @@ Func __NetWebView2_WebViewEvents__OnMessageReceived($sMsg)
762777

763778
Switch $sCommand
764779
Case "WINDOW_RESIZED"
765-
$aParts = StringSplit($sData, "|")
766-
If $aParts[0] >= 2 Then
767-
Local $iW = Int($aParts[1]), $iH = Int($aParts[2])
768-
; Filter minor resize glitches
769-
If $iW > 50 And $iH > 50 Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & $iW & "x" & $iH, 1)
780+
Local Static $sData_static = Null
781+
If $sData_static <> $sData Then
782+
$sData_static = $sData
783+
$aParts = StringSplit($sData, "|")
784+
785+
If $aParts[0] >= 2 Then
786+
Local $iW = Int($aParts[1]), $iH = Int($aParts[2])
787+
; Filter minor resize glitches
788+
If $iW > 50 And $iH > 50 Then __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' WINDOW_RESIZED:' & $iW & "x" & $iH, 1)
789+
EndIf
770790
EndIf
791+
771792
Case "NAV_STARTING"
772793
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' COMMAND:' & $sCommand, 1)
773794
__NetWebView2_LastMessageReceived($NETWEBVIEW2_MESSAGE__NAV_STARTING)
@@ -889,6 +910,10 @@ Func __NetWebView2_WebViewEvents__OnMessageReceived($sMsg)
889910
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' COMMAND:' & $sCommand, 1)
890911
__NetWebView2_LastMessageReceived($NETWEBVIEW2_MESSAGE__BLOCKED_AD)
891912

913+
Case "DOWNLOAD_STARTING"
914+
__NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' COMMAND:' & $sCommand, 1)
915+
__NetWebView2_LastMessageReceived($NETWEBVIEW2_MESSAGE__DOWNLOAD_STARTING)
916+
892917
;~ Case "*"
893918
;~ __NetWebView2_Log(@ScriptLineNumber, $s_Prefix & ' COMMAND:' & $sCommand, 1)
894919
;~ __NetWebView2_LastMessageReceived($NETWEBVIEW2_MESSAGE__*)

0 commit comments

Comments
 (0)