energy/cef/application-callback.go
2023-06-02 14:49:23 +08:00

57 lines
2.2 KiB
Go

//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
//
//----------------------------------------
// application event 默认事件实现
package cef
import (
"github.com/energye/energy/v2/cef/internal/ipc"
"github.com/energye/energy/v2/cef/internal/process"
"github.com/energye/energy/v2/consts"
)
// appOnContextCreated 创建应用上下文 - 默认实现
func appOnContextCreated(browser *ICefBrowser, frame *ICefFrame, context *ICefV8Context) {
process.Current.SetBrowserId(browser.Identifier()) // 当前进程 browserID
process.Current.SetFrameId(frame.Identifier()) // 当前进程 frameId
ipc.RenderChan().SetRealityChannel(browser.Identifier(), frame.Identifier()) // 设置并更新真实的通道ID
ipcRender.registerGoSyncReplayEvent() // render ipc
ipcRender.makeIPC(context) // render ipc make
makeProcess(browser, frame, context) // process make
}
// appMainRunCallback 应用运行 - 默认实现
func appMainRunCallback() {
ipcBrowser.registerEvent() // browser ipc
}
// appWebKitInitialized - webkit - 默认实现
func appWebKitInitialized() {
}
// renderProcessMessageReceived 渲染进程消息 - 默认实现
func renderProcessMessageReceived(browser *ICefBrowser, frame *ICefFrame, sourceProcess consts.CefProcessId, message *ICefProcessMessage) (result bool) {
if message.Name() == internalIPCJSExecuteGoEventReplay {
result = ipcRender.ipcJSExecuteGoEventMessageReply(browser, frame, sourceProcess, message)
} else if message.Name() == internalIPCGoExecuteJSEvent {
result = ipcRender.ipcGoExecuteJSEvent(browser, frame, sourceProcess, message)
}
return
}
// browserProcessMessageReceived 主进程消息 - 默认实现
func browserProcessMessageReceived(browser *ICefBrowser, frame *ICefFrame, message *ICefProcessMessage) (result bool) {
if message.Name() == internalIPCJSExecuteGoEvent {
result = ipcBrowser.jsExecuteGoMethodMessage(browser, frame, message)
}
return
}