Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
energye
energy
提交
8f083af0
energy
项目概览
energye
/
energy
通知
13
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
energy
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8f083af0
编写于
3月 14, 2023
作者:
yanghye
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
upgrade-dev v2.3.3
上级
bb6e6a05
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
49 addition
and
17 deletion
+49
-17
cef/cef-application-callback.go
cef/cef-application-callback.go
+3
-3
cef/cef-chromium-proc.go
cef/cef-chromium-proc.go
+4
-4
cef/cef-ipc-browser.go
cef/cef-ipc-browser.go
+3
-2
cef/cef-ipc-render.go
cef/cef-ipc-render.go
+38
-7
example/dev-test/ipc-event/resources/ipc-event.html
example/dev-test/ipc-event/resources/ipc-event.html
+1
-1
未找到文件。
cef/cef-application-callback.go
浏览文件 @
8f083af0
...
...
@@ -30,9 +30,9 @@ func appMainRunCallback() {
// renderProcessMessageReceived 渲染进程消息 - 默认实现
func
renderProcessMessageReceived
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
sourceProcess
consts
.
CefProcessId
,
message
*
ICefProcessMessage
)
(
result
bool
)
{
if
message
.
Name
()
==
internalProcessMessageIPCEmitReply
{
//接收回复消息
if
message
.
Name
()
==
internalProcessMessageIPCEmitReply
{
result
=
ipcRender
.
ipcJSExecuteGoEventMessageReply
(
browser
,
frame
,
sourceProcess
,
message
)
}
else
if
message
.
Name
()
==
internalProcessMessageIPCOn
{
// Go触发JS监听事件
}
else
if
message
.
Name
()
==
internalProcessMessageIPCOn
{
result
=
ipcRender
.
ipcGoExecuteJSEvent
(
browser
,
frame
,
sourceProcess
,
message
)
}
return
...
...
@@ -41,7 +41,7 @@ func renderProcessMessageReceived(browser *ICefBrowser, frame *ICefFrame, source
// browserProcessMessageReceived 主进程消息 - 默认实现
func
browserProcessMessageReceived
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
sourceProcess
consts
.
CefProcessId
,
message
*
ICefProcessMessage
)
(
result
bool
)
{
if
message
.
Name
()
==
internalProcessMessageIPCEmit
{
result
=
ipcBrowser
.
ipc
Emit
Message
(
browser
,
frame
,
sourceProcess
,
message
)
result
=
ipcBrowser
.
ipc
GoExecuteMethod
Message
(
browser
,
frame
,
sourceProcess
,
message
)
}
else
if
message
.
Name
()
==
internalProcessMessageIPCOn
{
result
=
ipcBrowser
.
ipcOnMessage
(
browser
,
frame
,
sourceProcess
,
message
)
}
...
...
cef/cef-chromium-proc.go
浏览文件 @
8f083af0
...
...
@@ -727,6 +727,9 @@ func (m *TCEFChromium) SendProcessMessage(targetProcess CefProcessId, message *I
func
(
m
*
TCEFChromium
)
SendProcessMessageForIPC
(
messageId
int32
,
name
string
,
targetProcess
CefProcessId
,
target
ipc
.
ITarget
,
data
...
any
)
{
if
target
==
nil
||
(
target
.
GetBrowserId
()
<=
0
&&
target
.
GetFrameId
()
<=
0
)
{
message
:=
ProcessMessageRef
.
new
(
internalProcessMessageIPCOn
)
argument
:=
message
.
ArgumentList
()
argument
.
SetInt
(
0
,
messageId
)
argument
.
SetString
(
1
,
name
)
if
data
!=
nil
&&
len
(
data
)
>
0
{
argumentJSONArray
:=
json
.
NewJSONArray
(
nil
)
for
_
,
result
:=
range
data
{
...
...
@@ -737,9 +740,6 @@ func (m *TCEFChromium) SendProcessMessageForIPC(messageId int32, name string, ta
argumentJSONArray
.
Add
(
result
)
}
}
argument
:=
message
.
ArgumentList
()
argument
.
SetInt
(
0
,
messageId
)
argument
.
SetString
(
1
,
name
)
binaryValue
:=
BinaryValueRef
.
New
(
argumentJSONArray
.
Bytes
())
argument
.
SetBinary
(
2
,
binaryValue
)
}
...
...
@@ -749,7 +749,7 @@ func (m *TCEFChromium) SendProcessMessageForIPC(messageId int32, name string, ta
if
browse
.
IsValid
()
{
frame
:=
browse
.
GetFrameById
(
target
.
GetFrameId
())
if
frame
.
IsValid
()
{
frame
.
SendProcessMessageForIPC
(
messageId
,
name
,
targetProcess
,
target
,
data
...
)
frame
.
SendProcessMessageForIPC
(
messageId
,
name
,
targetProcess
,
target
,
data
)
}
}
}
...
...
cef/cef-ipc-browser.go
浏览文件 @
8f083af0
...
...
@@ -24,8 +24,8 @@ type ipcBrowserProcess struct {
onHandler
*
ipcOnHandler
// ipc.on handler
}
// ipc
EmitMessage emit message
func
(
m
*
ipcBrowserProcess
)
ipc
Emit
Message
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
sourceProcess
consts
.
CefProcessId
,
message
*
ICefProcessMessage
)
(
result
bool
)
{
// ipc
GoExecuteMethodMessage 执行 Go 监听函数
func
(
m
*
ipcBrowserProcess
)
ipc
GoExecuteMethod
Message
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
sourceProcess
consts
.
CefProcessId
,
message
*
ICefProcessMessage
)
(
result
bool
)
{
result
=
true
argument
:=
message
.
ArgumentList
()
messageId
:=
argument
.
GetInt
(
0
)
...
...
@@ -45,6 +45,7 @@ func (m *ipcBrowserProcess) ipcEmitMessage(browser *ICefBrowser, frame *ICefFram
}
ipcContext
:=
ipc
.
NewContext
(
browser
.
Identifier
(),
frame
.
Identifier
(),
argsBytes
)
argsBytes
=
nil
//调用监听函数
if
ctxCallback
:=
eventCallback
.
ContextCallback
();
ctxCallback
!=
nil
{
ctxCallback
.
Invoke
(
ipcContext
)
}
else
if
argsCallback
:=
eventCallback
.
ArgumentCallback
();
argsCallback
!=
nil
{
...
...
cef/cef-ipc-render.go
浏览文件 @
8f083af0
...
...
@@ -98,10 +98,38 @@ func (m *ipcRenderProcess) ipcJSOnEvent(name string, object *ICefV8Value, argume
return
}
// ipcGoExecuteJSEvent Go ipc.emit JS事件
// ipcGoExecuteJSEvent Go ipc.emit
执行
JS事件
func
(
m
*
ipcRenderProcess
)
ipcGoExecuteJSEvent
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
sourceProcess
consts
.
CefProcessId
,
message
*
ICefProcessMessage
)
(
result
bool
)
{
argument
:=
message
.
ArgumentList
()
name
:=
argument
.
GetString
(
1
)
if
callback
:=
ipcRender
.
onHandler
.
getCallback
(
name
);
callback
!=
nil
{
messageId
:=
argument
.
GetInt
(
0
)
args
:=
argument
.
GetBinary
(
2
)
var
argsBytes
[]
byte
var
count
uint32
var
argsV8ValueArray
*
TCefV8ValueArray
if
args
.
IsValid
()
{
size
:=
args
.
GetSize
()
argsBytes
=
make
([]
byte
,
size
)
count
=
args
.
GetData
(
argsBytes
,
0
)
args
.
Free
()
}
if
count
>
0
{
argsV8ValueArray
,
_
=
ipcValueConvert
.
BytesToV8ArrayValue
(
argsBytes
)
}
if
callback
.
context
.
Enter
()
{
callback
.
function
.
ExecuteFunctionWithContext
(
callback
.
context
,
nil
,
argsV8ValueArray
)
callback
.
context
.
Exit
()
}
if
argsV8ValueArray
!=
nil
{
argsV8ValueArray
.
Free
()
}
if
messageId
!=
0
{
// callback
return
true
}
result
=
true
}
return
}
// ipcJSExecuteGoEvent JS ipc.emit 执行Go事件
...
...
@@ -216,11 +244,14 @@ func (m *ipcRenderProcess) ipcJSExecuteGoEventMessageReply(browser *ICefBrowser,
if
isReturn
:=
message
.
ArgumentList
()
.
GetBool
(
1
);
isReturn
{
//[]byte
binaryValue
:=
message
.
ArgumentList
()
.
GetBinary
(
2
)
size
:=
binaryValue
.
GetSize
()
resultArgsBytes
:=
make
([]
byte
,
size
)
count
:=
binaryValue
.
GetData
(
resultArgsBytes
,
0
)
binaryValue
.
Free
()
var
count
uint32
var
resultArgsBytes
[]
byte
if
binaryValue
.
IsValid
()
{
size
:=
binaryValue
.
GetSize
()
resultArgsBytes
=
make
([]
byte
,
size
)
count
=
binaryValue
.
GetData
(
resultArgsBytes
,
0
)
binaryValue
.
Free
()
}
if
count
>
0
{
//解析 '[]byte' 参数
if
callback
.
context
.
Enter
()
{
...
...
example/dev-test/ipc-event/resources/ipc-event.html
浏览文件 @
8f083af0
...
...
@@ -121,7 +121,7 @@
}
ipc
.
on
(
'
onTestName1
'
,
function
(
param1
,
param2
,
param3
)
{
msg
(
"
onTestName1
"
,
param1
,
param2
,
param3
);
});
ipc
.
on
(
'
onTestName2
'
,
function
(
param1
,
param2
,
param3
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录