energy/cef/events.go
2023-06-20 19:22:29 +08:00

957 lines
45 KiB
Go

//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
//
//----------------------------------------
// CEF 事件回调
package cef
import (
"github.com/energye/energy/v2/common"
"github.com/energye/energy/v2/consts"
"github.com/energye/golcl/lcl"
"github.com/energye/golcl/lcl/api"
"github.com/energye/golcl/lcl/types"
"unsafe"
)
func init() {
var resourceEventGet = func(fn interface{}, getVal func(idx int) uintptr, resp bool) (sender lcl.IObject, browser *ICefBrowser, frame *ICefFrame, request *ICefRequest, response *ICefResponse) {
// 指针
getPtr := func(i int) unsafe.Pointer {
return unsafe.Pointer(getVal(i))
}
senderPtr := getPtr(0)
browser = &ICefBrowser{instance: getPtr(1)}
frame = &ICefFrame{instance: getPtr(2)}
request = &ICefRequest{instance: getPtr(3)}
if resp {
response = &ICefResponse{instance: getPtr(4)}
}
return lcl.AsObject(senderPtr), browser, frame, request, response
}
lcl.RegisterExtEventCallback(func(fn interface{}, getVal func(idx int) uintptr) bool {
var (
instance unsafe.Pointer
)
getPtr := func(i int) unsafe.Pointer {
return unsafe.Pointer(getVal(i))
}
switch fn.(type) {
case chromiumEventOnAcceleratedPaint:
browser := &ICefBrowser{instance: getPtr(1)}
kind := consts.TCefPaintElementType(getVal(2))
dirtyRectsCount := uint32(getVal(3))
dirtyRectsPtr := getVal(4)
sharedHandle := getVal(5)
fn.(chromiumEventOnAcceleratedPaint)(lcl.AsObject(getPtr(0)), browser, kind, NewTCefRectArray(dirtyRectsPtr, dirtyRectsCount), sharedHandle)
case chromiumEventOnAllConnectionsClosed:
fn.(chromiumEventOnAllConnectionsClosed)(lcl.AsObject(getPtr(0)))
case chromiumEventOnAudioStreamError:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnAudioStreamError)(lcl.AsObject(getPtr(0)), browse, api.GoStr(getVal(2)))
case chromiumEventOnAudioStreamPacket:
browse := &ICefBrowser{instance: getPtr(1)}
data := (*uintptr)(getPtr(2))
frames := int32(getVal(3))
pts := *(*int64)(getPtr(4))
fn.(chromiumEventOnAudioStreamPacket)(lcl.AsObject(getPtr(0)), browse, data, frames, pts)
case chromiumEventOnAudioStreamStarted:
browse := &ICefBrowser{instance: getPtr(1)}
params := (*TCefAudioParameters)(getPtr(2))
fn.(chromiumEventOnAudioStreamStarted)(lcl.AsObject(getPtr(0)), browse, params, int32(getVal(2)))
case chromiumEventOnAudioStreamStopped:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnAudioStreamStopped)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnAutoResize:
browse := &ICefBrowser{instance: getPtr(1)}
newSize := (*TCefSize)(getPtr(2))
result := (*bool)(getPtr(3))
*result = fn.(chromiumEventOnAutoResize)(lcl.AsObject(getPtr(0)), browse, newSize)
case chromiumEventOnBeforeUnloadDialog:
browse := &ICefBrowser{instance: getPtr(1)}
messageText := api.GoStr(getVal(2))
isReload := api.GoBool(getVal(3))
callback := &ICefJsDialogCallback{instance: getPtr(4)}
result := (*bool)(getPtr(5))
*result = fn.(chromiumEventOnBeforeUnloadDialog)(lcl.AsObject(getPtr(0)), browse, messageText, isReload, callback)
case chromiumEventOnCanDownload:
browse := &ICefBrowser{instance: getPtr(1)}
url, requestMethod := api.GoStr(getVal(2)), api.GoStr(getVal(3))
result := (*bool)(getPtr(4))
*result = fn.(chromiumEventOnCanDownload)(lcl.AsObject(getPtr(0)), browse, url, requestMethod)
case chromiumEventOnCanSaveCookie:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
response := &ICefResponse{instance: getPtr(4)}
cookie := *(*iCefCookiePtr)(getInstance(getVal(5)))
creation := *(*float64)(common.GetParamPtr(cookie.creation, 0))
lastAccess := *(*float64)(common.GetParamPtr(cookie.lastAccess, 0))
expires := *(*float64)(common.GetParamPtr(cookie.expires, 0))
iCookie := &ICefCookie{
Url: api.GoStr(cookie.url),
Name: api.GoStr(cookie.name),
Value: api.GoStr(cookie.value),
Domain: api.GoStr(cookie.domain),
Path: api.GoStr(cookie.path),
Secure: *(*bool)(common.GetParamPtr(cookie.secure, 0)),
Httponly: *(*bool)(common.GetParamPtr(cookie.httponly, 0)),
HasExpires: *(*bool)(common.GetParamPtr(cookie.hasExpires, 0)),
Creation: common.DDateTimeToGoDateTime(creation),
LastAccess: common.DDateTimeToGoDateTime(lastAccess),
Expires: common.DDateTimeToGoDateTime(expires),
Count: int32(cookie.count),
Total: int32(cookie.total),
SameSite: consts.TCefCookieSameSite(cookie.sameSite),
Priority: consts.TCefCookiePriority(cookie.priority),
DeleteCookie: *(*bool)(common.GetParamPtr(cookie.aDeleteCookie, 0)),
}
result := (*bool)(getInstance(getVal(6)))
*result = fn.(chromiumEventOnCanSaveCookie)(lcl.AsObject(getPtr(0)), browse, frame, request, response, iCookie)
case chromiumEventOnCanSendCookie:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
cookie := *(*iCefCookiePtr)(getInstance(getVal(4)))
creation := *(*float64)(common.GetParamPtr(cookie.creation, 0))
lastAccess := *(*float64)(common.GetParamPtr(cookie.lastAccess, 0))
expires := *(*float64)(common.GetParamPtr(cookie.expires, 0))
iCookie := &ICefCookie{
Url: api.GoStr(cookie.url),
Name: api.GoStr(cookie.name),
Value: api.GoStr(cookie.value),
Domain: api.GoStr(cookie.domain),
Path: api.GoStr(cookie.path),
Secure: *(*bool)(common.GetParamPtr(cookie.secure, 0)),
Httponly: *(*bool)(common.GetParamPtr(cookie.httponly, 0)),
HasExpires: *(*bool)(common.GetParamPtr(cookie.hasExpires, 0)),
Creation: common.DDateTimeToGoDateTime(creation),
LastAccess: common.DDateTimeToGoDateTime(lastAccess),
Expires: common.DDateTimeToGoDateTime(expires),
Count: int32(cookie.count),
Total: int32(cookie.total),
SameSite: consts.TCefCookieSameSite(cookie.sameSite),
Priority: consts.TCefCookiePriority(cookie.priority),
DeleteCookie: *(*bool)(common.GetParamPtr(cookie.aDeleteCookie, 0)),
}
result := (*bool)(getInstance(getVal(5)))
*result = fn.(chromiumEventOnCanSendCookie)(lcl.AsObject(getPtr(0)), browse, frame, request, iCookie)
case chromiumEventOnCertificateError:
browser := &ICefBrowser{instance: getPtr(1)}
certError := consts.TCefErrorCode(getVal(2))
requestUrl := api.GoStr(getVal(3))
sslInfo := &ICefSslInfo{instance: getPtr(4)}
callback := &ICefCallback{instance: getPtr(5)}
resultPtr := (*bool)(getPtr(6))
*resultPtr = fn.(chromiumEventOnCertificateError)(lcl.AsObject(getPtr(0)), browser, certError, requestUrl, sslInfo, callback)
case chromiumEventOnCertificateExceptionsCleared:
fn.(chromiumEventOnCertificateExceptionsCleared)(lcl.AsObject(getPtr(0)))
case chromiumEventOnChromeCommand:
browse := &ICefBrowser{instance: getPtr(1)}
params := (int32)(getVal(2))
disposition := consts.TCefWindowOpenDisposition(getVal(3))
result := (*bool)(getPtr(4))
*result = fn.(chromiumEventOnChromeCommand)(lcl.AsObject(getPtr(0)), browse, params, disposition)
case chromiumEventOnConsoleMessage:
browse := &ICefBrowser{instance: getPtr(1)}
level := consts.TCefLogSeverity(getVal(2))
message, source := api.GoStr(3), api.GoStr(4)
line := int32(getVal(5))
result := (*bool)(getPtr(6))
*result = fn.(chromiumEventOnConsoleMessage)(lcl.AsObject(getPtr(0)), browse, level, message, source, line)
case chromiumEventOnCursorChange:
browse := &ICefBrowser{instance: getPtr(1)}
cursor := consts.TCefCursorHandle(getVal(2))
cursorType := consts.TCefCursorType(getVal(3))
customCursorInfo := (*TCefCursorInfo)(getPtr(4))
fn.(chromiumEventOnCursorChange)(lcl.AsObject(getPtr(0)), browse, cursor, cursorType, customCursorInfo)
case chromiumEventOnDevToolsAgentAttached:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnDevToolsAgentAttached)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnDevToolsAgentDetached:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnDevToolsAgentDetached)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnDevToolsEvent:
browse := &ICefBrowser{instance: getPtr(1)}
method := api.GoStr(2)
params := &ICefValue{instance: getPtr(3)}
fn.(chromiumEventOnDevToolsEvent)(lcl.AsObject(getPtr(0)), browse, method, params)
case chromiumEventOnDevToolsMessage:
browse := &ICefBrowser{instance: getPtr(1)}
message := &ICefValue{instance: getPtr(2)}
fn.(chromiumEventOnDevToolsMessage)(lcl.AsObject(getPtr(0)), browse, message)
case chromiumEventOnDevToolsMethodRawResult:
browse := &ICefBrowser{instance: getPtr(1)}
messageId := int32(getVal(2))
success := api.GoBool(getVal(3))
result := getVal(4)
resultSize := uint32(getVal(5))
fn.(chromiumEventOnDevToolsMethodRawResult)(lcl.AsObject(getPtr(0)), browse, messageId, success, result, resultSize)
case chromiumEventOnDevToolsMethodResult:
browse := &ICefBrowser{instance: getPtr(1)}
messageId := int32(getVal(2))
success := api.GoBool(getVal(3))
result := &ICefValue{instance: getPtr(1)}
fn.(chromiumEventOnDevToolsMethodResult)(lcl.AsObject(getPtr(0)), browse, messageId, success, result)
case chromiumEventOnDevToolsRawEvent:
browse := &ICefBrowser{instance: getPtr(1)}
method := api.GoStr(2)
params := getVal(3)
paramsSize := uint32(getVal(4))
fn.(chromiumEventOnDevToolsRawEvent)(lcl.AsObject(getPtr(0)), browse, method, params, paramsSize)
case chromiumEventOnDevToolsRawMessage:
browse := &ICefBrowser{instance: getPtr(1)}
message := getVal(2)
messageSize := uint32(getVal(3))
handledPtr := (*bool)(getPtr(4))
*handledPtr = fn.(chromiumEventOnDevToolsRawMessage)(lcl.AsObject(getPtr(0)), browse, message, messageSize)
case chromiumEventOnDialogClosed:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnDialogClosed)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnDismissPermissionPrompt:
browse := &ICefBrowser{instance: getPtr(1)}
promptId := *(*uint64)(getPtr(2))
result := consts.TCefPermissionRequestResult(getVal(3))
fn.(chromiumEventOnDismissPermissionPrompt)(lcl.AsObject(getPtr(0)), browse, promptId, result)
case chromiumEventOnDocumentAvailableInMainFrame:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnDocumentAvailableInMainFrame)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnDownloadImageFinished:
imageUrl := api.GoStr(getVal(1))
httpStatusCode := int32(getVal(2))
image := &ICefImage{instance: getPtr(3)}
fn.(chromiumEventOnDownloadImageFinished)(lcl.AsObject(getPtr(0)), imageUrl, httpStatusCode, image)
case chromiumEventOnExecuteTaskOnCefThread:
taskID := uint32(getVal(1))
fn.(chromiumEventOnExecuteTaskOnCefThread)(lcl.AsObject(getPtr(0)), taskID)
case chromiumEventOnExtensionBeforeBackgroundBrowser:
extension := &ICefExtension{instance: getPtr(1)}
url := api.GoStr(getVal(2))
clientPtr := (*uintptr)(unsafe.Pointer(getVal(3)))
// TODO TCefBrowserSettings
//resultSettingsPtr := (*uintptr)(unsafe.Pointer(getVal(4)))
resultPtr := (*bool)(unsafe.Pointer(getVal(5)))
client, resultSettings, result := fn.(chromiumEventOnExtensionBeforeBackgroundBrowser)(lcl.AsObject(getPtr(0)), extension, url)
if client.instance != nil && client.IsValid() {
*clientPtr = client.Instance()
}
if resultSettings != nil {
//*resultSettingsPtr = resultSettings
}
*resultPtr = result
//*resultSettingsPtr = resultSettings.ToPtr()
case chromiumEventOnExtensionBeforeBrowser:
extension := &ICefExtension{instance: getPtr(1)}
browse, activeBrowser := &ICefBrowser{instance: getPtr(2)}, &ICefBrowser{instance: getPtr(3)}
index := int32(getVal(4))
url := api.GoStr(getVal(5))
active := api.GoBool(getVal(6))
//windowInfoPtr:=(*uintptr)(unsafe.Pointer(getVal(7)))
resultClientPtr := (*uintptr)(unsafe.Pointer(getVal(8)))
resultClient := &ICefClient{}
// TODO TCefBrowserSettings
//resultSettingsPtr := (*uintptr)(unsafe.Pointer(getVal(9)))
resultSettings := &TCefBrowserSettings{}
result := (*bool)(unsafe.Pointer(getVal(10)))
*result = fn.(chromiumEventOnExtensionBeforeBrowser)(lcl.AsObject(getPtr(0)), extension, browse, activeBrowser, index, url, active, resultClient, resultSettings)
if resultClient.instance != nil {
*resultClientPtr = resultClient.Instance()
}
//*resultSettingsPtr = resultSettings.ToPtr()
case chromiumEventOnExtensionCanAccessBrowser:
extension := &ICefExtension{instance: getPtr(1)}
browse := &ICefBrowser{instance: getPtr(2)}
includeIncognito := api.GoBool(getVal(3))
targetBrowser := &ICefBrowser{instance: getPtr(4)}
result := (*bool)(unsafe.Pointer(getVal(5)))
*result = fn.(chromiumEventOnExtensionCanAccessBrowser)(lcl.AsObject(getPtr(0)), extension, browse, includeIncognito, targetBrowser)
case chromiumEventOnExtensionGetActiveBrowser:
extension := &ICefExtension{instance: getPtr(1)}
browse := &ICefBrowser{instance: getPtr(2)}
includeIncognito := api.GoBool(getVal(3))
resultBrowserPtr := (*uintptr)(unsafe.Pointer(getVal(4)))
resultBrowser := &ICefBrowser{}
fn.(chromiumEventOnExtensionGetActiveBrowser)(lcl.AsObject(getPtr(0)), extension, browse, includeIncognito, resultBrowser)
if resultBrowser.instance != nil {
*resultBrowserPtr = resultBrowser.Instance()
}
case chromiumEventOnExtensionGetExtensionResource:
extension := &ICefExtension{instance: getPtr(1)}
browse := &ICefBrowser{instance: getPtr(2)}
file := api.GoStr(getVal(3))
callback := &ICefGetExtensionResourceCallback{instance: getPtr(4)}
result := (*bool)(unsafe.Pointer(getVal(5)))
*result = fn.(chromiumEventOnExtensionGetExtensionResource)(lcl.AsObject(getPtr(0)), extension, browse, file, callback)
case chromiumEventOnExtensionLoaded:
fn.(chromiumEventOnExtensionLoaded)(lcl.AsObject(getPtr(0)), &ICefExtension{instance: getPtr(1)})
case chromiumEventOnExtensionLoadFailed:
fn.(chromiumEventOnExtensionLoadFailed)(lcl.AsObject(getPtr(0)), consts.TCefErrorCode(getVal(1)))
case chromiumEventOnExtensionUnloaded:
fn.(chromiumEventOnExtensionUnloaded)(lcl.AsObject(getPtr(0)), &ICefExtension{instance: getPtr(1)})
case chromiumEventOnFavIconUrlChange:
browse := &ICefBrowser{instance: getPtr(1)}
iconUrlsList := lcl.AsStrings(getVal(2))
var iconUrls []string
if iconUrlsList.IsValid() {
count := int(iconUrlsList.Count())
iconUrls = make([]string, count, count)
for i := 0; i < count; i++ {
iconUrls[i] = iconUrlsList.Strings(int32(i))
}
iconUrlsList.Free()
}
fn.(chromiumEventOnFavIconUrlChange)(lcl.AsObject(getPtr(0)), browse, iconUrls)
case chromiumEventOnFileDialog:
browse := &ICefBrowser{instance: getPtr(1)}
mode := consts.TCefFileDialogMode(getVal(2))
title := api.GoStr(getVal(3))
defaultFilePath := api.GoStr(getVal(4))
acceptFiltersList := lcl.AsStrings(getVal(5))
callback := &ICefFileDialogCallback{instance: getPtr(6)}
result := (*bool)(getPtr(7))
var acceptFilters []string
if acceptFiltersList.IsValid() {
count := int(acceptFiltersList.Count())
acceptFilters = make([]string, count, count)
for i := 0; i < count; i++ {
acceptFilters[i] = acceptFiltersList.Strings(int32(i))
}
acceptFiltersList.Free()
}
*result = fn.(chromiumEventOnFileDialog)(lcl.AsObject(getPtr(0)), browse, mode, title, defaultFilePath, acceptFilters, callback)
case chromiumEventOnGetAccessibilityHandler:
accessibilityHandler := &ICefAccessibilityHandler{instance: getPtr(1)}
fn.(chromiumEventOnGetAccessibilityHandler)(lcl.AsObject(getPtr(0)), accessibilityHandler)
case chromiumEventOnGetAudioParameters:
browse := &ICefBrowser{instance: getPtr(1)}
params := (*TCefAudioParameters)(getPtr(2))
result := (*bool)(getPtr(3))
*result = fn.(chromiumEventOnGetAudioParameters)(lcl.AsObject(getPtr(0)), browse, params)
case chromiumEventOnGetResourceHandler:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
resourceHandlerPtr := (*uintptr)(getPtr(4))
resourceHandler := fn.(chromiumEventOnGetResourceHandler)(lcl.AsObject(getPtr(0)), browse, frame, request)
if resourceHandler != nil && resourceHandler.IsValid() {
*resourceHandlerPtr = resourceHandler.Instance()
} else {
*resourceHandlerPtr = 0
}
case chromiumEventOnGetResourceRequestHandlerReqCtxHdlr:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
isNavigation, isDownload := api.GoBool(4), api.GoBool(5)
requestInitiator := api.GoStr(getVal(6))
disableDefaultHandlingPtr := (*bool)(getPtr(7))
resourceRequestHandlerPtr := (*uintptr)(getPtr(8))
disableDefaultHandling, resourceRequestHandler := fn.(chromiumEventOnGetResourceRequestHandlerReqCtxHdlr)(lcl.AsObject(getPtr(0)), browse, frame, request, isNavigation, isDownload, requestInitiator)
*disableDefaultHandlingPtr = disableDefaultHandling
if resourceRequestHandler != nil && resourceRequestHandler.IsValid() {
*resourceRequestHandlerPtr = resourceRequestHandler.Instance()
}
case chromiumEventOnGetResourceRequestHandlerReqHdlr:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
isNavigation, isDownload := api.GoBool(4), api.GoBool(5)
requestInitiator := api.GoStr(getVal(6))
disableDefaultHandlingPtr := (*bool)(getPtr(7))
resourceRequestHandlerPtr := (*uintptr)(getPtr(8))
disableDefaultHandling, resourceRequestHandler := fn.(chromiumEventOnGetResourceRequestHandlerReqHdlr)(lcl.AsObject(getPtr(0)), browse, frame, request, isNavigation, isDownload, requestInitiator)
*disableDefaultHandlingPtr = disableDefaultHandling
if resourceRequestHandler != nil && resourceRequestHandler.IsValid() {
*resourceRequestHandlerPtr = resourceRequestHandler.Instance()
}
case chromiumEventOnGetResourceResponseFilter:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
response := &ICefResponse{instance: getPtr(4)}
responseFilterPtr := (*uintptr)(getPtr(5))
responseFilter := fn.(chromiumEventOnGetResourceResponseFilter)(lcl.AsObject(getPtr(0)), browse, frame, request, response)
if responseFilter != nil && responseFilter.IsValid() {
*responseFilterPtr = responseFilter.Instance()
} else {
*responseFilterPtr = 0
}
case chromiumEventOnGetRootScreenRect:
browser := &ICefBrowser{instance: getPtr(1)}
rectPtr := (*TCefRect)(getPtr(2))
resultPtr := (*bool)(getPtr(3))
rect, result := fn.(chromiumEventOnGetRootScreenRect)(lcl.AsObject(getPtr(0)), browser)
if rect != nil {
*rectPtr = *rect
}
*resultPtr = result
case chromiumEventOnGetScreenInfo:
browser := &ICefBrowser{instance: getPtr(1)}
screenInfoPtr := (*TCefScreenInfo)(getPtr(2))
resultPtr := (*bool)(getPtr(3))
screenInfo, result := fn.(chromiumEventOnGetScreenInfo)(lcl.AsObject(getPtr(0)), browser)
if screenInfo != nil {
*screenInfoPtr = *screenInfo
}
*resultPtr = result
case chromiumEventOnGetScreenPoint:
browser := &ICefBrowser{instance: getPtr(1)}
viewX, viewY := int32(getVal(2)), int32(getVal(3))
screenXPtr, screenYPtr, resultPtr := (*int32)(getPtr(4)), (*int32)(getPtr(5)), (*bool)(getPtr(6))
screenX, screenY, result := fn.(chromiumEventOnGetScreenPoint)(lcl.AsObject(getPtr(0)), browser, viewX, viewY)
*screenXPtr, *screenYPtr, *resultPtr = screenX, screenY, result
case chromiumEventOnGetTouchHandleSize:
browser := &ICefBrowser{instance: getPtr(1)}
orientation := consts.TCefHorizontalAlignment(getVal(2))
sizePtr := (*TCefSize)(getPtr(3))
size := fn.(chromiumEventOnGetTouchHandleSize)(lcl.AsObject(getPtr(0)), browser, orientation)
if size != nil {
*sizePtr = *size
}
case chromiumEventOnGetViewRect:
browser := &ICefBrowser{instance: getPtr(1)}
rectPtr := (*TCefRect)(getPtr(2))
rect := fn.(chromiumEventOnGetViewRect)(lcl.AsObject(getPtr(0)), browser)
if rect != nil {
*rectPtr = *rect
}
case chromiumEventOnGotFocus:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnGotFocus)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnHttpAuthCredentialsCleared:
fn.(chromiumEventOnHttpAuthCredentialsCleared)(lcl.AsObject(getPtr(0)))
case chromiumEventOnIMECompositionRangeChanged:
browser := &ICefBrowser{instance: getPtr(1)}
rng := (*TCefRange)(getPtr(2))
characterBoundsCount := uint32(getVal(3))
characterBounds := (*TCefRect)(getPtr(4))
fn.(chromiumEventOnIMECompositionRangeChanged)(lcl.AsObject(getPtr(0)), browser, rng, characterBoundsCount, characterBounds)
case chromiumEventOnJsDialog:
browse := &ICefBrowser{instance: getPtr(1)}
originUrl := api.GoStr(getVal(2))
dialogType := consts.TCefJsDialogType(getVal(3))
messageText, defaultPromptText := api.GoStr(getVal(4)), api.GoStr(getVal(5))
callback := &ICefJsDialogCallback{instance: getPtr(6)}
suppressMessage := (*bool)(getPtr(7))
result := (*bool)(getPtr(8))
*suppressMessage, *result = fn.(chromiumEventOnJsDialog)(lcl.AsObject(getPtr(0)), browse, originUrl, dialogType, messageText, defaultPromptText, callback)
case chromiumEventOnMediaAccessChange:
browse := &ICefBrowser{instance: getPtr(1)}
hasVideoAccess, hasAudioAccess := api.GoBool(getVal(2)), api.GoBool(getVal(3))
fn.(chromiumEventOnMediaAccessChange)(lcl.AsObject(getPtr(0)), browse, hasVideoAccess, hasAudioAccess)
case chromiumEventOnMediaRouteCreateFinished:
result := consts.TCefMediaRouterCreateResult(getVal(1))
error := api.GoStr(getVal(2))
route := &ICefMediaRoute{instance: getPtr(3)}
fn.(chromiumEventOnMediaRouteCreateFinished)(lcl.AsObject(getPtr(0)), result, error, route)
case chromiumEventOnMediaSinkDeviceInfo:
ipAddress := api.GoStr(getVal(1))
port := int32(getVal(2))
modelName := api.GoStr(getVal(3))
fn.(chromiumEventOnMediaSinkDeviceInfo)(lcl.AsObject(getPtr(0)), ipAddress, port, modelName)
case chromiumEventOnNavigationVisitorResultAvailable:
entry := &ICefNavigationEntry{instance: getPtr(1)}
current := api.GoBool(getVal(2))
index, total := int32(getVal(3)), int32(getVal(4))
fn.(chromiumEventOnNavigationVisitorResultAvailable)(lcl.AsObject(getPtr(0)), entry, current, index, total)
case chromiumEventOnPaint:
browser := &ICefBrowser{instance: getPtr(1)}
kind := consts.TCefPaintElementType(getVal(2))
dirtyRectsCount := uint32(getVal(3))
dirtyRectsPtr := getVal(4)
buffer := getVal(5)
width, height := int32(getVal(6)), int32(getVal(7))
fn.(chromiumEventOnPaint)(lcl.AsObject(getPtr(0)), browser, kind, NewTCefRectArray(dirtyRectsPtr, dirtyRectsCount), buffer, width, height)
case chromiumEventOnPdfPrintFinished:
fn.(chromiumEventOnPdfPrintFinished)(lcl.AsObject(getPtr(0)), api.GoBool(getVal(1)))
case chromiumEventOnPopupShow:
browser := &ICefBrowser{instance: getPtr(1)}
show := api.GoBool(getVal(2))
fn.(chromiumEventOnPopupShow)(lcl.AsObject(getPtr(0)), browser, show)
case chromiumEventOnPopupSize:
browser := &ICefBrowser{instance: getPtr(1)}
rect := (*TCefRect)(getPtr(2))
fn.(chromiumEventOnPopupSize)(lcl.AsObject(getPtr(0)), browser, rect)
case chromiumEventOnPrefsAvailable:
fn.(chromiumEventOnPrefsAvailable)(lcl.AsObject(getPtr(0)), api.GoBool(getVal(1)))
case chromiumEventOnPrefsUpdated:
fn.(chromiumEventOnPrefsUpdated)(lcl.AsObject(getPtr(0)))
case chromiumEventOnPreKeyEvent:
browse := &ICefBrowser{instance: getPtr(1)}
event := (*TCefKeyEvent)(getPtr(2))
osEvent := (*consts.TCefEventHandle)(getPtr(3))
isKeyboardShortcut := (*bool)(getPtr(4))
result := (*bool)(getPtr(5))
*isKeyboardShortcut, *result = fn.(chromiumEventOnPreKeyEvent)(lcl.AsObject(getPtr(0)), browse, event, osEvent)
case chromiumEventOnProtocolExecution:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
allowOsExecution := (*bool)(getPtr(4))
*allowOsExecution = fn.(chromiumEventOnProtocolExecution)(lcl.AsObject(getPtr(0)), browse, frame, request)
case chromiumEventOnQuickMenuCommand:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
commandId := int32(getVal(3))
eventFlags := consts.TCefEventFlags(getVal(4))
result := (*bool)(getPtr(5))
*result = fn.(chromiumEventOnQuickMenuCommand)(lcl.AsObject(getPtr(0)), browse, frame, commandId, eventFlags)
case chromiumEventOnQuickMenuDismissed:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnQuickMenuDismissed)(lcl.AsObject(getPtr(0)), browse, frame)
case chromiumEventOnRenderViewReady:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnRenderViewReady)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnRequestContextInitialized:
requestContext := &ICefRequestContext{instance: getPtr(1)}
fn.(chromiumEventOnRequestContextInitialized)(lcl.AsObject(getPtr(0)), requestContext)
case chromiumEventOnRequestMediaAccessPermission:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
requestingOrigin := api.GoStr(getVal(3))
requestedPermissions := uint32(getVal(4))
callback := &ICefMediaAccessCallback{instance: getPtr(5)}
result := (*bool)(getPtr(6))
*result = fn.(chromiumEventOnRequestMediaAccessPermission)(lcl.AsObject(getPtr(0)), browse, frame, requestingOrigin, requestedPermissions, callback)
case chromiumEventOnResetDialogState:
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnResetDialogState)(lcl.AsObject(getPtr(0)), browse)
case chromiumEventOnResolvedHostAvailable:
result := consts.TCefErrorCode(getVal(1))
resolvedIpsList := lcl.AsStrings(getVal(2))
var resolvedIps []string
if resolvedIpsList.Count() > 0 {
resolvedIps = make([]string, resolvedIpsList.Count(), resolvedIpsList.Count())
for i := 0; i < int(resolvedIpsList.Count()); i++ {
resolvedIps[i] = resolvedIpsList.Strings(int32(i))
}
resolvedIpsList.Free()
}
fn.(chromiumEventOnResolvedHostAvailable)(lcl.AsObject(getPtr(0)), result, resolvedIps)
case chromiumEventOnRouteMessageReceived:
route := &ICefMediaRoute{instance: getPtr(1)}
message := api.GoStr(getVal(2))
fn.(chromiumEventOnRouteMessageReceived)(lcl.AsObject(getPtr(0)), route, message)
case chromiumEventOnRoutes:
routes := &TCefMediaRouteArray{instance: getPtr(1), count: uint32(int32(getVal(2)))}
fn.(chromiumEventOnRoutes)(lcl.AsObject(getPtr(0)), routes)
case chromiumEventOnRouteStateChanged:
route := &ICefMediaRoute{instance: getPtr(1)}
state := consts.TCefMediaRouteConnectionState(getVal(2))
fn.(chromiumEventOnRouteStateChanged)(lcl.AsObject(getPtr(0)), route, state)
case chromiumEventOnRunContextMenu:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
params := &ICefContextMenuParams{instance: getPtr(3)}
model := &ICefMenuModel{instance: getPtr(4)}
callback := &ICefRunContextMenuCallback{instance: getPtr(5)}
result := (*bool)(getPtr(6))
*result = fn.(chromiumEventOnRunContextMenu)(lcl.AsObject(getPtr(0)), browse, frame, params, model, callback)
params.Free()
case chromiumEventOnRunQuickMenu:
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
location := (*TCefPoint)(getPtr(3))
size := (*TCefSize)(getPtr(4))
editStateFlags := consts.TCefQuickMenuEditStateFlags(getVal(5))
callback := &ICefRunQuickMenuCallback{instance: getPtr(6)}
result := (*bool)(getPtr(7))
*result = fn.(chromiumEventOnRunQuickMenu)(lcl.AsObject(getPtr(0)), browse, frame, location, size, editStateFlags, callback)
case chromiumEventOnSelectClientCertificate:
browser := &ICefBrowser{instance: getPtr(0)}
isProxy := api.GoBool(getVal(1))
host := api.GoStr(getVal(2))
port := int32(getVal(3))
certificates := &TCefX509CertificateArray{count: uint32(getVal(4)), instance: getPtr(5)}
callback := &ICefSelectClientCertificateCallback{instance: getPtr(6)}
resultPtr := (*bool)(getPtr(7))
*resultPtr = fn.(chromiumEventOnSelectClientCertificate)(lcl.AsObject(getPtr(0)), browser, isProxy, host, port, certificates, callback)
case chromiumEventOnSetFocus:
browse := &ICefBrowser{instance: getPtr(1)}
source := consts.TCefFocusSource(getVal(2))
result := (*bool)(getPtr(3))
*result = fn.(chromiumEventOnSetFocus)(lcl.AsObject(getPtr(0)), browse, source)
case chromiumEventOnShowPermissionPrompt:
browse := &ICefBrowser{instance: getPtr(1)}
promptId := *(*uint64)(getPtr(2))
requestingOrigin := api.GoStr(getVal(3))
requestedPermissions := uint32(getVal(4))
callback := &ICefPermissionPromptCallback{instance: getPtr(5)}
result := (*bool)(getPtr(6))
*result = fn.(chromiumEventOnShowPermissionPrompt)(lcl.AsObject(getPtr(0)), browse, promptId, requestingOrigin, requestedPermissions, callback)
case chromiumEventOnSinks:
sinks := &TCefMediaSinkArray{instance: getPtr(1), count: uint32(int32(getVal(2)))}
fn.(chromiumEventOnSinks)(lcl.AsObject(getPtr(0)), sinks)
case chromiumEventOnStartDragging:
browser := &ICefBrowser{instance: getPtr(1)}
dragData := &ICefDragData{instance: getPtr(2)}
allowedOps := consts.TCefDragOperations(getVal(3))
x, y := int32(getVal(4)), int32(getVal(5))
resultPtr := (*bool)(getPtr(6))
*resultPtr = fn.(chromiumEventOnStartDragging)(lcl.AsObject(getPtr(0)), browser, dragData, allowedOps, x, y)
case chromiumEventOnStatusMessage:
browse := &ICefBrowser{instance: getPtr(1)}
value := api.GoStr(getVal(2))
fn.(chromiumEventOnStatusMessage)(lcl.AsObject(getPtr(0)), browse, value)
case chromiumEventOnTakeFocus:
browse := &ICefBrowser{instance: getPtr(1)}
next := api.GoBool(getVal(2))
fn.(chromiumEventOnTakeFocus)(lcl.AsObject(getPtr(0)), browse, next)
case chromiumEventOnTextResultAvailable:
text := api.GoStr(getVal(1))
fn.(chromiumEventOnTextResultAvailable)(lcl.AsObject(getPtr(0)), text)
case chromiumEventOnTextSelectionChanged:
browser := &ICefBrowser{instance: getPtr(1)}
selectedText := api.GoStr(getVal(2))
selectedRange := (*TCefRange)(getPtr(3))
fn.(chromiumEventOnTextSelectionChanged)(lcl.AsObject(getPtr(0)), browser, selectedText, selectedRange)
case chromiumEventOnTooltip:
browse := &ICefBrowser{instance: getPtr(1)}
textPtr := (*uintptr)(getPtr(2))
var text = new(string)
*text = api.GoStr(*textPtr)
result := (*bool)(getPtr(3))
ok := fn.(chromiumEventOnTooltip)(lcl.AsObject(getPtr(0)), browse, text)
*textPtr = api.PascalStr(*text)
*result = ok
case chromiumEventOnTouchHandleStateChanged:
browser := &ICefBrowser{instance: getPtr(1)}
state := (*TCefTouchHandleState)(getPtr(2))
fn.(chromiumEventOnTouchHandleStateChanged)(lcl.AsObject(getPtr(0)), browser, state)
case chromiumEventOnUpdateDragCursor:
browser := &ICefBrowser{instance: getPtr(1)}
operation := consts.TCefDragOperation(getVal(2))
fn.(chromiumEventOnUpdateDragCursor)(lcl.AsObject(getPtr(0)), browser, operation)
case chromiumEventOnVirtualKeyboardRequested:
browser := &ICefBrowser{instance: getPtr(1)}
inputMode := consts.TCefTextInputMode(getVal(2))
fn.(chromiumEventOnVirtualKeyboardRequested)(lcl.AsObject(getPtr(0)), browser, inputMode)
case chromiumEventOnFindResult:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnFindResult)(lcl.AsObject(sender), browse, int32(getVal(2)), int32(getVal(3)), (*TCefRect)(getPtr(4)), int32(getVal(5)), api.GoBool(getVal(6)))
case BrowseProcessMessageReceived:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
processId := consts.CefProcessId(getVal(3))
message := &ICefProcessMessage{instance: getPtr(4)}
var result = (*bool)(getPtr(5))
*result = browserProcessMessageReceived(browse, frame, message)
if !*result {
*result = fn.(BrowseProcessMessageReceived)(lcl.AsObject(sender), browse, frame, processId, message)
}
message.Free()
case chromiumEventOnResourceLoadComplete:
sender, browse, frame, request, response := resourceEventGet(fn, getVal, true)
fn.(chromiumEventOnResourceLoadComplete)(sender, browse, frame, request, response, *(*consts.TCefUrlRequestStatus)(getPtr(5)), *(*int64)(getPtr(6)))
case chromiumEventOnResourceRedirect:
sender, browse, frame, request, response := resourceEventGet(fn, getVal, true)
var newStr = new(string)
var newStrPtr = (*uintptr)(getPtr(5))
fn.(chromiumEventOnResourceRedirect)(sender, browse, frame, request, response, newStr)
*newStrPtr = api.PascalStr(*newStr)
case chromiumEventOnResourceResponse:
sender, browse, frame, request, response := resourceEventGet(fn, getVal, true)
fn.(chromiumEventOnResourceResponse)(sender, browse, frame, request, response, (*bool)(getPtr(5)))
case chromiumEventOnBeforeResourceLoad:
sender, browse, frame, req, _ := resourceEventGet(fn, getVal, false)
instance = getInstance(getVal(4))
callback := &ICefCallback{instance: instance}
fn.(chromiumEventOnBeforeResourceLoad)(sender, browse, frame, req, callback, (*consts.TCefReturnValue)(getPtr(5)))
case chromiumEventOnBeforeContextMenu:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
params := &ICefContextMenuParams{instance: getPtr(3)}
KeyAccelerator.clear()
model := &ICefMenuModel{instance: getPtr(4), CefMis: KeyAccelerator}
fn.(chromiumEventOnBeforeContextMenu)(lcl.AsObject(sender), browse, frame, params, model)
params.Free()
case chromiumEventOnContextMenuCommand:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
params := &ICefContextMenuParams{instance: getPtr(3)}
commandId := consts.MenuId(getVal(4))
eventFlags := uint32(getVal(5))
result := (*bool)(getPtr(6))
if !KeyAccelerator.commandIdEventCallback(browse, commandId, params, eventFlags, result) {
fn.(chromiumEventOnContextMenuCommand)(lcl.AsObject(sender), browse, frame, params, commandId, eventFlags, result)
}
params.Free()
case chromiumEventOnContextMenuDismissed:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnContextMenuDismissed)(lcl.AsObject(sender), browse, frame)
case chromiumEventOnCookieSet:
success := api.GoBool(getVal(1))
ID := int32(getVal(2))
fn.(chromiumEventOnCookieSet)(lcl.AsObject(getVal(0)), success, ID)
case chromiumEventOnCookiesDeleted:
numDeleted := int32(getVal(1))
fn.(chromiumEventOnCookiesDeleted)(lcl.AsObject(getVal(0)), numDeleted)
case chromiumEventOnCookiesFlushed:
fn.(chromiumEventOnCookiesFlushed)(lcl.AsObject(getVal(0)))
case chromiumEventOnCookiesVisited:
cookie := *(*iCefCookiePtr)(getPtr(1))
creation := *(*float64)(common.GetParamPtr(cookie.creation, 0))
lastAccess := *(*float64)(common.GetParamPtr(cookie.lastAccess, 0))
expires := *(*float64)(common.GetParamPtr(cookie.expires, 0))
iCookie := &ICefCookie{
Url: api.GoStr(cookie.url),
Name: api.GoStr(cookie.name),
Value: api.GoStr(cookie.value),
Domain: api.GoStr(cookie.domain),
Path: api.GoStr(cookie.path),
Secure: *(*bool)(common.GetParamPtr(cookie.secure, 0)),
Httponly: *(*bool)(common.GetParamPtr(cookie.httponly, 0)),
HasExpires: *(*bool)(common.GetParamPtr(cookie.hasExpires, 0)),
Creation: common.DDateTimeToGoDateTime(creation),
LastAccess: common.DDateTimeToGoDateTime(lastAccess),
Expires: common.DDateTimeToGoDateTime(expires),
Count: int32(cookie.count),
Total: int32(cookie.total),
ID: int32(cookie.aID),
SameSite: consts.TCefCookieSameSite(cookie.sameSite),
Priority: consts.TCefCookiePriority(cookie.priority),
SetImmediately: *(*bool)(common.GetParamPtr(cookie.aSetImmediately, 0)),
DeleteCookie: *(*bool)(common.GetParamPtr(cookie.aDeleteCookie, 0)),
Result: *(*bool)(common.GetParamPtr(cookie.aResult, 0)),
}
fn.(chromiumEventOnCookiesVisited)(lcl.AsObject(getVal(0)), iCookie)
case chromiumEventOnCookieVisitorDestroyed:
id := int32(getVal(1))
fn.(chromiumEventOnCookieVisitorDestroyed)(lcl.AsObject(getVal(0)), id)
case chromiumEventOnScrollOffsetChanged:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnScrollOffsetChanged)(lcl.AsObject(sender), browse, float64(getVal(2)), float64(getVal(3)))
case chromiumEventOnRenderProcessTerminated:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnRenderProcessTerminated)(lcl.AsObject(sender), browse, consts.TCefTerminationStatus(getVal(2)))
case chromiumEventOnCompMsg:
message := (*types.TMessage)(getPtr(1))
lResultPtr := (*types.LRESULT)(getPtr(2))
fn.(chromiumEventOnCompMsg)(lcl.AsObject(getVal(0)), message, lResultPtr, (*bool)(getPtr(3)))
case chromiumEventOnTitleChange:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnTitleChange)(lcl.AsObject(sender), browse, api.GoStr(getVal(2)))
case chromiumEventOnKeyEvent:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
keyEvent := (*TCefKeyEvent)(getPtr(2))
osEvent := (*consts.TCefEventHandle)(getPtr(3))
fn.(chromiumEventOnKeyEvent)(lcl.AsObject(sender), browse, keyEvent, osEvent, (*bool)(getPtr(4)))
case chromiumEventOnFullScreenModeChange:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnFullScreenModeChange)(lcl.AsObject(sender), browse, api.GoBool(getVal(2)))
case chromiumEventOnBeforeBrowser:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
request := &ICefRequest{instance: getPtr(3)}
var result = (*bool)(getPtr(6))
chromiumOnBeforeBrowser(browse, frame) // default impl
*result = fn.(chromiumEventOnBeforeBrowser)(lcl.AsObject(sender), browse, frame, request, api.GoBool(getVal(4)), api.GoBool(getVal(5)))
case chromiumEventOnAddressChange:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnAddressChange)(lcl.AsObject(sender), browse, frame, api.GoStr(getVal(3)))
case chromiumEventOnAfterCreated:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnAfterCreated)(lcl.AsObject(sender), browse)
case chromiumEventOnBeforeClose:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnBeforeClose)(lcl.AsObject(sender), browse)
case chromiumEventOnClose:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnClose)(lcl.AsObject(sender), browse, (*consts.TCefCloseBrowserAction)(getPtr(2)))
case chromiumEventOnResult:
fn.(chromiumEventOnResult)(lcl.AsObject(getVal(0)), api.GoBool(getVal(1)))
case chromiumEventOnResultFloat:
fn.(chromiumEventOnResultFloat)(lcl.AsObject(getVal(0)), *(*float64)(getPtr(1)))
case chromiumEventOnLoadStart:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
transitionType := consts.TCefTransitionType(getVal(3))
fn.(chromiumEventOnLoadStart)(lcl.AsObject(sender), browse, frame, transitionType)
case chromiumEventOnLoadingStateChange:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnLoadingStateChange)(lcl.AsObject(sender), browse, api.GoBool(getVal(2)), api.GoBool(getVal(3)), api.GoBool(getVal(4)))
case chromiumEventOnLoadingProgressChange:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
fn.(chromiumEventOnLoadingProgressChange)(lcl.AsObject(sender), browse, *(*float64)(getPtr(2)))
case chromiumEventOnLoadError:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnLoadError)(lcl.AsObject(sender), browse, frame, consts.CEF_NET_ERROR(getVal(3)), api.GoStr(getVal(4)), api.GoStr(getVal(5)))
case chromiumEventOnLoadEnd:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnLoadEnd)(lcl.AsObject(sender), browse, frame, int32(getVal(3)))
case chromiumEventOnBeforeDownload:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
downItem := &ICefDownloadItem{instance: getPtr(2)}
suggestedName := api.GoStr(getVal(3))
callback := &ICefBeforeDownloadCallback{instance: getPtr(4)}
fn.(chromiumEventOnBeforeDownload)(lcl.AsObject(sender), browse, downItem, suggestedName, callback)
case chromiumEventOnDownloadUpdated:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
downItem := &ICefDownloadItem{instance: getPtr(2)}
callback := &ICefDownloadItemCallback{instance: getPtr(3)}
fn.(chromiumEventOnDownloadUpdated)(lcl.AsObject(sender), browse, downItem, callback)
case chromiumEventOnFrameAttached:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnFrameAttached)(lcl.AsObject(sender), browse, frame, api.GoBool(getVal(3)))
case chromiumEventOnFrameCreated:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnFrameCreated)(lcl.AsObject(sender), browse, frame)
case chromiumEventOnFrameDetached:
sender := getVal(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
fn.(chromiumEventOnFrameDetached)(lcl.AsObject(sender), browse, frame)
case chromiumEventOnMainFrameChanged:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
oldFrame := &ICefFrame{instance: getPtr(2)}
newFrame := &ICefFrame{instance: getPtr(3)}
fn.(chromiumEventOnMainFrameChanged)(lcl.AsObject(sender), browse, oldFrame, newFrame)
case chromiumEventOnBeforePopup:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
beforePInfoPtr := (*beforePopupInfoPtr)(getPtr(3))
beforePopupInfo := &BeforePopupInfo{
TargetUrl: api.GoStr(beforePInfoPtr.TargetUrl),
TargetFrameName: api.GoStr(beforePInfoPtr.TargetFrameName),
TargetDisposition: consts.TCefWindowOpenDisposition(beforePInfoPtr.TargetDisposition),
UserGesture: api.GoBool(beforePInfoPtr.UserGesture),
}
var (
//windowInfo = getPtr(4) // not use
resultClientPtr = (*uintptr)(getPtr(5))
client = &ICefClient{}
//setting = getPtr(6)
//extra_info = getPtr(7)
noJavascriptAccess = (*bool)(getPtr(8))
result = (*bool)(getPtr(9))
)
//callback
*result = fn.(chromiumEventOnBeforePopup)(lcl.AsObject(sender), browse, frame, beforePopupInfo, client, noJavascriptAccess)
if client.Instance() != 0 {
*resultClientPtr = client.Instance()
}
case chromiumEventOnOpenUrlFromTab:
//no impl
result := (*bool)(getPtr(6))
*result = true
case chromiumEventOnDragEnter:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
dragData := &ICefDragData{instance: getPtr(2)}
mask := consts.TCefDragOperations(getVal(3))
result := (*bool)(getPtr(4))
fn.(chromiumEventOnDragEnter)(lcl.AsObject(sender), browse, dragData, mask, result)
case chromiumEventOnDraggableRegionsChanged:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
frame := &ICefFrame{instance: getPtr(2)}
regionsCount := int32(getVal(3))
regions := NewCefDraggableRegions()
var region TCefDraggableRegion
var regionSize = unsafe.Sizeof(region)
for i := 0; i < int(regionsCount); i++ {
region = *(*TCefDraggableRegion)(common.GetParamPtr(getVal(4), i*int(regionSize)))
regions.Append(region)
}
fn.(chromiumEventOnDraggableRegionsChanged)(lcl.AsObject(sender), browse, frame, regions)
case chromiumEventOnGetAuthCredentials:
sender := getPtr(0)
browse := &ICefBrowser{instance: getPtr(1)}
originUrl := api.GoStr(getVal(2))
isProxy := api.GoBool(getVal(3))
host := api.GoStr(getVal(4))
port := int32(getVal(5))
realm := api.GoStr(getVal(6))
scheme := api.GoStr(getVal(7))
callback := &ICefAuthCallback{instance: getPtr(8)}
result := (*bool)(getPtr(9))
*result = fn.(chromiumEventOnGetAuthCredentials)(lcl.AsObject(sender), browse, originUrl, isProxy, host, port, realm, scheme, callback)
callback.Free()
default:
return false
}
return true
})
}
func getInstance(value interface{}) unsafe.Pointer {
var ptr uintptr
switch value.(type) {
case uintptr:
ptr = value.(uintptr)
case unsafe.Pointer:
ptr = uintptr(value.(unsafe.Pointer))
case lcl.IObject:
ptr = lcl.CheckPtr(value)
default:
ptr = getUIntPtr(value)
}
return unsafe.Pointer(ptr)
}
func getUIntPtr(v interface{}) uintptr {
switch v.(type) {
case int:
return uintptr(v.(int))
case uint:
return uintptr(v.(uint))
case int8:
return uintptr(v.(int8))
case uint8:
return uintptr(v.(uint8))
case int16:
return uintptr(v.(int16))
case uint16:
return uintptr(v.(uint16))
case int32:
return uintptr(v.(int32))
case uint32:
return uintptr(v.(uint32))
case int64:
return uintptr(v.(int64))
case uint64:
return uintptr(v.(uint64))
}
return 0
}