Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
energye
energy
提交
209e1397
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,发现更多精彩内容 >>
提交
209e1397
编写于
8月 24, 2023
作者:
yanghye
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加 本地和内置方式直接加载资源
上级
bdad0db0
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
345 addition
and
13 deletion
+345
-13
cef/application-run.go
cef/application-run.go
+1
-0
cef/browser-config.go
cef/browser-config.go
+2
-1
cef/browser-main-window.go
cef/browser-main-window.go
+17
-0
cef/browser-window-lcl.go
cef/browser-window-lcl.go
+12
-0
cef/browser-window-views-framework.go
cef/browser-window-views-framework.go
+12
-0
cef/chromium-callback.go
cef/chromium-callback.go
+14
-0
cef/events-def.go
cef/events-def.go
+1
-0
cef/local-load-resource.go
cef/local-load-resource.go
+274
-0
cef/types-resourcerequest-handler.go
cef/types-resourcerequest-handler.go
+12
-12
未找到文件。
cef/application-run.go
浏览文件 @
209e1397
...
...
@@ -29,6 +29,7 @@ var (
BrowserWindow
=
&
browserWindow
{
browserEvent
:
&
BrowserEvent
{},
Config
:
&
browserConfig
{
LocalResource
:
localLoadResource
,
WindowProperty
:
NewWindowProperty
(),
},
windowInfo
:
make
(
map
[
int32
]
IBrowserWindow
),
...
...
cef/browser-config.go
浏览文件 @
209e1397
...
...
@@ -20,7 +20,8 @@ type browserWindowOnEventCallback func(event *BrowserEvent, window IBrowserWindo
// 创建主窗口指定的一些快捷配置属性
type
browserConfig
struct
{
WindowProperty
// 部分参数仅在窗口初始化期间生效
WindowProperty
// 部分参数仅在窗口初始化期间生效
LocalResource
*
LocalLoadResource
config
*
TCefChromiumConfig
// 主窗体浏览器配置
browserWindowOnEventCallback
browserWindowOnEventCallback
// 主窗口初始化回调
}
...
...
cef/browser-main-window.go
浏览文件 @
209e1397
...
...
@@ -50,6 +50,7 @@ type BrowserEvent struct {
onBeforeContextMenu
chromiumEventOnBeforeContextMenuEx
//default can cover
onBeforeResourceLoad
chromiumEventOnBeforeResourceLoad
//default
onRenderCompMsg
chromiumEventOnCompMsg
//default windows
onGetResourceHandler
chromiumEventOnGetResourceHandlerEx
//default
}
// LCLBrowserWindow
...
...
@@ -287,6 +288,22 @@ func (m *BrowserEvent) SetOnRenderCompMsg(event chromiumEventOnCompMsg) {
}
}
// SetOnGetResourceHandler
// 获取资源处理器,通过该函数自己处理资源获取
// 返回 false 并且设置[本地|内置FS]资源加载时开启并继续执行默认实现
func
(
m
*
BrowserEvent
)
SetOnGetResourceHandler
(
event
chromiumEventOnGetResourceHandlerEx
)
{
if
Args
.
IsMain
()
{
if
BrowserWindow
.
Config
.
LocalResource
.
enable
{
m
.
onGetResourceHandler
=
event
}
else
{
m
.
ChromiumEvent
()
.
SetOnGetResourceHandler
(
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
{
resourceHandler
,
_
=
event
(
sender
,
browser
,
frame
,
request
)
return
})
}
}
}
func
(
m
*
BrowserEvent
)
ChromiumEvent
()
IChromiumEvent
{
return
m
.
chromium
}
...
...
cef/browser-window-lcl.go
浏览文件 @
209e1397
...
...
@@ -919,6 +919,18 @@ func (m *LCLBrowserWindow) registerDefaultEvent() {
m
.
setDraggableRegions
()
})
}
if
BrowserWindow
.
Config
.
LocalResource
.
enable
{
m
.
Chromium
()
.
SetOnGetResourceHandler
(
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
{
var
flag
bool
if
bwEvent
.
onGetResourceHandler
!=
nil
{
resourceHandler
,
flag
=
bwEvent
.
onGetResourceHandler
(
sender
,
browser
,
frame
,
request
)
}
if
!
flag
{
resourceHandler
=
getResourceHandler
(
browser
,
frame
,
request
)
}
return
})
}
}
// registerPopupEvent 注册弹出子窗口事件
...
...
cef/browser-window-views-framework.go
浏览文件 @
209e1397
...
...
@@ -346,6 +346,18 @@ func (m *ViewsFrameworkBrowserWindow) registerDefaultEvent() {
m
.
windowComponent
.
SetDraggableRegions
(
regions
.
Regions
())
})
}
if
BrowserWindow
.
Config
.
LocalResource
.
enable
{
m
.
Chromium
()
.
SetOnGetResourceHandler
(
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
{
var
flag
bool
if
bwEvent
.
onGetResourceHandler
!=
nil
{
resourceHandler
,
flag
=
bwEvent
.
onGetResourceHandler
(
sender
,
browser
,
frame
,
request
)
}
if
!
flag
{
resourceHandler
=
getResourceHandler
(
browser
,
frame
,
request
)
}
return
})
}
}
// EnableAllDefaultEvent 启用所有默认事件行为
...
...
cef/chromium-callback.go
浏览文件 @
209e1397
...
...
@@ -328,3 +328,17 @@ func chromiumOnContextMenuCommand(window IBrowserWindow, browser *ICefBrowser, f
func
chromiumOnBeforePopup
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
beforePopupInfo
*
BeforePopupInfo
,
client
*
ICefClient
,
settings
*
TCefBrowserSettings
,
extraInfo
*
ICefDictionaryValue
,
noJavascriptAccess
*
bool
,
result
*
bool
)
{
}
// getResourceHandler
// 资源处理器默认实现,使用本地资源加载时开启
func
getResourceHandler
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
{
if
localLoadResource
.
enable
{
if
source
,
ok
:=
localLoadResource
.
checkRequest
(
request
);
ok
{
resourceHandler
=
ResourceHandlerRef
.
New
(
browser
,
frame
,
string
(
localLoadResource
.
scheme
),
request
)
resourceHandler
.
Open
(
source
.
open
)
resourceHandler
.
GetResponseHeaders
(
source
.
response
)
resourceHandler
.
Read
(
source
.
read
)
}
}
return
}
cef/events-def.go
浏览文件 @
209e1397
...
...
@@ -65,6 +65,7 @@ type chromiumEventOnFileDialog func(sender lcl.IObject, browser *ICefBrowser, mo
type
chromiumEventOnGetAccessibilityHandler
func
(
sender
lcl
.
IObject
,
accessibilityHandler
*
ICefAccessibilityHandler
)
type
chromiumEventOnGetAudioParameters
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
params
*
TCefAudioParameters
)
bool
type
chromiumEventOnGetResourceHandler
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
type
chromiumEventOnGetResourceHandlerEx
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
,
result
bool
)
type
chromiumEventOnGetResourceRequestHandlerReqCtxHdlr
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
isNavigation
,
isDownload
bool
,
requestInitiator
string
)
(
disableDefaultHandling
bool
,
resourceRequestHandler
*
ICefResourceRequestHandler
)
type
chromiumEventOnGetResourceRequestHandlerReqHdlr
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
isNavigation
,
isDownload
bool
,
requestInitiator
string
)
(
disableDefaultHandling
bool
,
resourceRequestHandler
*
ICefResourceRequestHandler
)
type
chromiumEventOnGetResourceResponseFilter
func
(
sender
lcl
.
IObject
,
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
response
*
ICefResponse
)
(
responseFilter
*
ICefResponseFilter
)
...
...
cef/local-load-resource.go
0 → 100644
浏览文件 @
209e1397
//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
//
//----------------------------------------
package
cef
import
(
"embed"
"fmt"
"github.com/energye/energy/v2/consts"
"github.com/energye/energy/v2/logger"
"io/ioutil"
"os"
"path/filepath"
"strings"
"unsafe"
)
const
(
localDomain
=
"energy"
//
sf
=
":"
sff
=
"://"
)
// LocalCustomerScheme 本地资源加载自定义协议
// file, fs
type
LocalCustomerScheme
string
const
(
LocalCSFile
LocalCustomerScheme
=
"file"
// 本地目录 file://energy/index.html
LocalCSFS
LocalCustomerScheme
=
"fs"
// 内置 fs://energy/index.html
)
// 本地加载资源
var
localLoadResource
=
&
LocalLoadResource
{
mimeType
:
make
(
map
[
string
]
string
),
sourceCache
:
make
(
map
[
string
]
*
source
),
domain
:
localDomain
,
scheme
:
LocalCSFS
,
}
// LocalLoadResource 初始化时设置
// 本地或内置加载资源
// domain: 自定义域名称,默认energy, 不能为空
// scheme: 自定义协议,默认fs, 可选[file: 在本地目录加载, fs: 在内置exe加载]
// fileRoot: 资源加载根目录, scheme是file时为本地目录(默认当前程序执行目录), scheme是fs时为资源文件夹名
// fs: 内置加载资源对象, scheme是fs时必须填入
type
LocalLoadResource
struct
{
enable
bool
enableCache
bool
mimeType
map
[
string
]
string
sourceCache
map
[
string
]
*
source
domain
string
scheme
LocalCustomerScheme
fileRoot
string
fs
*
embed
.
FS
}
type
source
struct
{
path
string
// file source path
fileExt
string
// file ext
bytes
[]
byte
// file source byte
err
error
// file source read byte error
readPosition
int
// file source read byte position
status
int32
// response code status
statusText
string
// response status text
mimeType
string
// response source mime type
resourceType
consts
.
TCefResourceType
}
func
init
()
{
if
localLoadResource
.
enable
{
wd
,
_
:=
os
.
Getwd
()
localLoadResource
.
fileRoot
=
wd
}
}
// SetFileRoot
// 设置资源加载根目录
// scheme是file时为本地目录(默认当前程序执行目录)
// scheme是fs时为资源文件夹名
func
(
m
*
LocalLoadResource
)
SetFileRoot
(
v
string
)
{
m
.
fileRoot
=
v
}
// SetFS
// 设置内置加载资源对象, scheme是fs时必须填入
func
(
m
*
LocalLoadResource
)
SetFS
(
v
*
embed
.
FS
)
{
m
.
fs
=
v
}
// SetEnableCache
// 设置是否启用本地资源缓存到内存, 默认false: 未启用
func
(
m
*
LocalLoadResource
)
SetEnableCache
(
v
bool
)
{
m
.
enableCache
=
v
}
// SetEnable
// 设置是否启用本地资源加载, 默认false: 未启用
func
(
m
*
LocalLoadResource
)
SetEnable
(
v
bool
)
{
m
.
enable
=
v
}
// SetDomain
// 设置本地资源加载自定义域
func
(
m
*
LocalLoadResource
)
SetDomain
(
domain
string
)
{
if
domain
==
""
{
m
.
domain
=
localDomain
return
}
m
.
domain
=
domain
}
// SetScheme
// 设置本地资源加载自定义协议
func
(
m
*
LocalLoadResource
)
SetScheme
(
scheme
LocalCustomerScheme
)
{
if
scheme
==
""
{
m
.
scheme
=
LocalCSFS
return
}
m
.
scheme
=
scheme
}
// getMimeType
// 获取资源mime type
func
(
m
*
LocalLoadResource
)
getMimeType
(
extension
string
)
string
{
if
mimeType
,
ok
:=
m
.
mimeType
[
extension
];
ok
{
return
mimeType
}
else
{
mimeType
=
GetMimeType
(
extension
)
m
.
mimeType
[
extension
]
=
mimeType
return
mimeType
}
}
func
(
m
*
LocalLoadResource
)
ext
(
path
string
)
string
{
for
i
:=
len
(
path
)
-
1
;
i
>=
0
&&
!
os
.
IsPathSeparator
(
path
[
i
]);
i
--
{
if
path
[
i
]
==
'.'
{
return
path
[
i
+
1
:
]
}
}
return
""
}
func
(
m
*
LocalLoadResource
)
checkRequest
(
request
*
ICefRequest
)
(
*
source
,
bool
)
{
rt
:=
request
.
ResourceType
()
switch
rt
{
case
consts
.
RT_XHR
:
return
nil
,
false
}
url
:=
request
.
URL
()
logger
.
Debug
(
"URL:"
,
url
)
idx
:=
strings
.
Index
(
url
,
":"
)
if
idx
!=
-
1
{
scheme
:=
url
[
:
idx
]
if
scheme
!=
string
(
m
.
scheme
)
{
logger
.
Error
(
"Local load resource, scheme invalid should:"
,
LocalCSFS
,
"or"
,
LocalCSFile
,
"source url:"
,
url
)
return
nil
,
false
}
idx
=
strings
.
Index
(
url
,
"://"
)
if
idx
==
-
1
{
logger
.
Error
(
"Incorrect protocol domain address should: [fs | file]://energy/index.html"
,
"source url:"
,
url
)
return
nil
,
false
}
domainPath
:=
url
[
idx
+
3
:
]
idx
=
strings
.
Index
(
domainPath
,
"/"
)
if
idx
==
-
1
{
logger
.
Error
(
"Incorrect protocol domain path should: [fs | file]://energy/index.html"
,
"source url:"
,
url
)
return
nil
,
false
}
domain
:=
domainPath
[
:
idx
]
if
domain
!=
m
.
domain
{
logger
.
Error
(
"Incorrect protocol domain should: [fs | file]://energy/index.html"
,
"source url:"
,
url
)
return
nil
,
false
}
idx
=
strings
.
Index
(
domainPath
,
"/"
)
if
idx
==
-
1
{
logger
.
Error
(
"Incorrect protocol path should: [fs | file]://energy/index.html"
,
"source url:"
,
url
)
return
nil
,
false
}
path
:=
domainPath
[
idx
:
]
ext
:=
m
.
ext
(
path
)
if
ext
==
""
{
logger
.
Error
(
"Incorrect resources should: file.[ext](MimeType)"
,
"source url:"
,
url
)
return
nil
,
false
}
if
m
.
enableCache
{
if
s
,
ok
:=
m
.
sourceCache
[
path
];
ok
{
return
s
,
true
}
else
{
s
=
&
source
{
path
:
path
,
fileExt
:
ext
,
mimeType
:
m
.
getMimeType
(
ext
),
resourceType
:
rt
}
m
.
sourceCache
[
path
]
=
s
return
s
,
true
}
}
return
&
source
{
path
:
path
,
fileExt
:
ext
,
mimeType
:
m
.
getMimeType
(
ext
),
resourceType
:
rt
},
true
}
return
nil
,
false
}
func
(
m
*
source
)
readFile
()
bool
{
if
localLoadResource
.
fileRoot
!=
""
{
if
localLoadResource
.
scheme
==
LocalCSFile
{
data
,
err
:=
ioutil
.
ReadFile
(
filepath
.
Join
(
localLoadResource
.
fileRoot
,
m
.
path
))
if
err
==
nil
{
m
.
bytes
=
data
return
true
}
logger
.
Error
(
"ReadFile:"
,
err
.
Error
())
}
else
if
localLoadResource
.
scheme
==
LocalCSFS
{
data
,
err
:=
localLoadResource
.
fs
.
ReadFile
(
localLoadResource
.
fileRoot
+
m
.
path
)
if
err
==
nil
{
m
.
bytes
=
data
return
true
}
logger
.
Error
(
"ReadFile:"
,
err
.
Error
())
}
}
return
false
}
func
(
m
*
source
)
open
(
request
*
ICefRequest
,
callback
*
ICefCallback
)
(
handleRequest
,
result
bool
)
{
m
.
readPosition
=
0
m
.
status
=
404
m
.
statusText
=
"Not Found"
if
localLoadResource
.
enableCache
{
if
m
.
bytes
==
nil
{
if
!
m
.
readFile
()
{
return
true
,
true
}
}
}
else
{
if
!
m
.
readFile
()
{
return
true
,
true
}
}
if
m
.
resourceType
==
consts
.
RT_MEDIA
{
m
.
status
=
206
}
else
{
m
.
status
=
200
m
.
statusText
=
"OK"
}
logger
.
Debug
(
"open success"
,
m
.
path
)
return
true
,
true
}
func
(
m
*
source
)
response
(
response
*
ICefResponse
)
(
responseLength
int64
,
redirectUrl
string
)
{
fmt
.
Println
(
"response"
)
response
.
SetStatus
(
m
.
status
)
response
.
SetStatusText
(
m
.
statusText
)
response
.
SetMimeType
(
m
.
mimeType
)
responseLength
=
int64
(
len
(
m
.
bytes
))
return
}
func
(
m
*
source
)
read
(
dataOut
uintptr
,
bytesToRead
int32
,
callback
*
ICefResourceReadCallback
)
(
bytesRead
int32
,
result
bool
)
{
fmt
.
Println
(
"read"
,
dataOut
,
bytesToRead
)
if
m
.
bytes
!=
nil
&&
len
(
m
.
bytes
)
>
0
{
var
i
int32
=
0
// 默认 0
for
i
<
bytesToRead
&&
m
.
readPosition
<
len
(
m
.
bytes
)
{
*
(
*
byte
)(
unsafe
.
Pointer
(
dataOut
+
uintptr
(
i
)))
=
m
.
bytes
[
m
.
readPosition
]
m
.
readPosition
++
i
++
}
return
i
,
i
>
0
}
return
}
cef/types-resourcerequest-handler.go
浏览文件 @
209e1397
...
...
@@ -76,7 +76,7 @@ func (m *ICefResourceRequestHandler) IsOtherEvent() bool {
return
m
.
ct
==
consts
.
CtOther
}
func
(
m
*
ICefResourceRequestHandler
)
SetGetCookieAccessFilter
(
fn
g
etCookieAccessFilter
)
{
func
(
m
*
ICefResourceRequestHandler
)
SetGetCookieAccessFilter
(
fn
onG
etCookieAccessFilter
)
{
if
!
m
.
IsValid
()
||
m
.
IsOtherEvent
()
{
return
}
...
...
@@ -90,7 +90,7 @@ func (m *ICefResourceRequestHandler) SetOnBeforeResourceLoad(fn onBeforeResource
imports
.
Proc
(
def
.
ResourceRequestHandler_OnBeforeResourceLoad
)
.
Call
(
m
.
Instance
(),
api
.
MakeEventDataPtr
(
fn
))
}
func
(
m
*
ICefResourceRequestHandler
)
SetGetResourceHandler
(
fn
g
etResourceHandler
)
{
func
(
m
*
ICefResourceRequestHandler
)
SetGetResourceHandler
(
fn
onG
etResourceHandler
)
{
if
!
m
.
IsValid
()
||
m
.
IsOtherEvent
()
{
return
}
...
...
@@ -111,7 +111,7 @@ func (m *ICefResourceRequestHandler) SetOnResourceResponse(fn onResourceResponse
imports
.
Proc
(
def
.
ResourceRequestHandler_OnResourceResponse
)
.
Call
(
m
.
Instance
(),
api
.
MakeEventDataPtr
(
fn
))
}
func
(
m
*
ICefResourceRequestHandler
)
SetGetResourceResponseFilter
(
fn
g
etResourceResponseFilter
)
{
func
(
m
*
ICefResourceRequestHandler
)
SetGetResourceResponseFilter
(
fn
onG
etResourceResponseFilter
)
{
if
!
m
.
IsValid
()
||
m
.
IsOtherEvent
()
{
return
}
...
...
@@ -134,12 +134,12 @@ func (m *ICefResourceRequestHandler) SetOnProtocolExecution(fn onProtocolExecuti
// ************************** events ************************** //
type
g
etCookieAccessFilter
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
filter
*
ICefCookieAccessFilter
)
type
onG
etCookieAccessFilter
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
filter
*
ICefCookieAccessFilter
)
type
onBeforeResourceLoad
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
callback
*
ICefCallback
)
consts
.
TCefReturnValue
type
g
etResourceHandler
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
type
onG
etResourceHandler
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
resourceHandler
*
ICefResourceHandler
)
type
onResourceRedirect
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
response
*
ICefResponse
)
(
newUrl
string
)
type
onResourceResponse
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
response
*
ICefResponse
)
bool
type
g
etResourceResponseFilter
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
response
*
ICefResponse
)
(
responseFilter
*
ICefResponseFilter
)
type
onG
etResourceResponseFilter
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
response
*
ICefResponse
)
(
responseFilter
*
ICefResponseFilter
)
type
onResourceLoadComplete
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
,
status
consts
.
TCefUrlRequestStatus
,
receivedContentLength
int64
)
type
onProtocolExecution
func
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
,
request
*
ICefRequest
)
(
allowOsExecution
bool
)
...
...
@@ -149,12 +149,12 @@ func init() {
return
unsafe
.
Pointer
(
getVal
(
i
))
}
switch
fn
.
(
type
)
{
case
g
etCookieAccessFilter
:
case
onG
etCookieAccessFilter
:
browse
:=
&
ICefBrowser
{
instance
:
getPtr
(
0
)}
frame
:=
&
ICefFrame
{
instance
:
getPtr
(
1
)}
request
:=
&
ICefRequest
{
instance
:
getPtr
(
2
)}
filterPtr
:=
(
*
uintptr
)(
getPtr
(
3
))
filter
:=
fn
.
(
g
etCookieAccessFilter
)(
browse
,
frame
,
request
)
filter
:=
fn
.
(
onG
etCookieAccessFilter
)(
browse
,
frame
,
request
)
if
filter
!=
nil
&&
filter
.
IsValid
()
{
*
filterPtr
=
filter
.
Instance
()
}
...
...
@@ -166,12 +166,12 @@ func init() {
returnValuePtr
:=
(
*
consts
.
TCefReturnValue
)(
getPtr
(
4
))
returnValue
:=
fn
.
(
onBeforeResourceLoad
)(
browse
,
frame
,
request
,
callback
)
*
returnValuePtr
=
returnValue
case
g
etResourceHandler
:
case
onG
etResourceHandler
:
browse
:=
&
ICefBrowser
{
instance
:
getPtr
(
0
)}
frame
:=
&
ICefFrame
{
instance
:
getPtr
(
1
)}
request
:=
&
ICefRequest
{
instance
:
getPtr
(
2
)}
resourceHandlerPtr
:=
(
*
uintptr
)(
getPtr
(
3
))
resourceHandler
:=
fn
.
(
g
etResourceHandler
)(
browse
,
frame
,
request
)
resourceHandler
:=
fn
.
(
onG
etResourceHandler
)(
browse
,
frame
,
request
)
if
resourceHandler
!=
nil
&&
resourceHandler
.
IsValid
()
{
*
resourceHandlerPtr
=
resourceHandler
.
Instance
()
}
else
{
...
...
@@ -192,13 +192,13 @@ func init() {
response
:=
&
ICefResponse
{
instance
:
getPtr
(
3
)}
result
:=
(
*
bool
)(
getPtr
(
4
))
*
result
=
fn
.
(
onResourceResponse
)(
browse
,
frame
,
request
,
response
)
case
g
etResourceResponseFilter
:
case
onG
etResourceResponseFilter
:
browse
:=
&
ICefBrowser
{
instance
:
getPtr
(
0
)}
frame
:=
&
ICefFrame
{
instance
:
getPtr
(
1
)}
request
:=
&
ICefRequest
{
instance
:
getPtr
(
2
)}
response
:=
&
ICefResponse
{
instance
:
getPtr
(
3
)}
responseFilterPtr
:=
(
*
uintptr
)(
getPtr
(
4
))
responseFilter
:=
fn
.
(
g
etResourceResponseFilter
)(
browse
,
frame
,
request
,
response
)
responseFilter
:=
fn
.
(
onG
etResourceResponseFilter
)(
browse
,
frame
,
request
,
response
)
if
responseFilter
!=
nil
&&
responseFilter
.
IsValid
()
{
*
responseFilterPtr
=
responseFilter
.
Instance
()
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录