From 335beda572a603f6fda4a30394a01d2e3f9c3d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BA=A2=E5=B2=A9?= Date: Mon, 3 Jul 2023 17:23:26 +0800 Subject: [PATCH] A: ICefViewDelegate Event Proc U: New CreateType --- cef/browser-view-component.go | 2 +- cef/internal/def/proc-def-index.go | 13 ++ cef/internal/def/proc-def.go | 13 ++ ...gate.go => types-browser-view-delegate.go} | 8 - ...component.go => types-button-component.go} | 0 cef/types-client.go | 48 ++-- cef/types-cookie-access-filter.go | 14 +- cef/types-cookie-callbacks.go | 28 +-- cef/types-extension-handler.go | 11 +- cef/types-request-context-handler.go | 16 +- cef/types-resourcerequest-handler.go | 28 +-- ...ewcomponent.go => types-view-component.go} | 65 ------ cef/types-view-delegate.go | 208 ++++++++++++++++++ cef/types.go | 19 +- consts/consts.go | 12 +- 15 files changed, 331 insertions(+), 154 deletions(-) rename cef/{browser-view-delegate.go => types-browser-view-delegate.go} (80%) rename cef/{types-buttoncomponent.go => types-button-component.go} (100%) rename cef/{types-viewcomponent.go => types-view-component.go} (82%) create mode 100644 cef/types-view-delegate.go diff --git a/cef/browser-view-component.go b/cef/browser-view-component.go index 7b1cdce..30375b9 100644 --- a/cef/browser-view-component.go +++ b/cef/browser-view-component.go @@ -119,7 +119,7 @@ func init() { browserSettingsPtr := (*tCefBrowserSettingsPtr)(getPtr(2)) browserSettings := browserSettingsPtr.Convert() client := &ICefClient{instance: getPtr(3)} - result := &ICefBrowserViewDelegate{instance: getPtr(5)} + result := &ICefBrowserViewDelegate{&ICefViewDelegate{instance: getPtr(5)}} fn.(BrowserViewComponentOnGetDelegateForPopupBrowserView)(lcl.AsObject(getPtr(0)), browserView, browserSettings, client, api.GoBool(getVal(4)), result) case BrowserViewComponentOnPopupBrowserViewCreated: browserView := &ICefBrowserView{&ICefView{instance: getPtr(1)}} diff --git a/cef/internal/def/proc-def-index.go b/cef/internal/def/proc-def-index.go index da7629e..33ee891 100644 --- a/cef/internal/def/proc-def-index.go +++ b/cef/internal/def/proc-def-index.go @@ -2394,4 +2394,17 @@ const ( ButtonComponent_SetState ButtonComponent_SetOnButtonPressed ButtonComponent_SetOnButtonStateChanged + // ICefViewDelegate + ViewDelegateRef_Create + ViewDelegateRef_CreateForCustom + ViewDelegate_SetOnGetPreferredSize + ViewDelegate_SetOnGetMinimumSize + ViewDelegate_SetOnGetMaximumSize + ViewDelegate_SetOnGetHeightForWidth + ViewDelegate_SetOnParentViewChanged + ViewDelegate_SetOnChildViewChanged + ViewDelegate_SetOnWindowChanged + ViewDelegate_SetOnLayoutChanged + ViewDelegate_SetOnFocus + ViewDelegate_SetOnBlur ) //end diff --git a/cef/internal/def/proc-def.go b/cef/internal/def/proc-def.go index cb5140c..d034107 100644 --- a/cef/internal/def/proc-def.go +++ b/cef/internal/def/proc-def.go @@ -2394,6 +2394,19 @@ func init() { dllimports.NewEnergyImport("ButtonComponent_SetState", 0), dllimports.NewEnergyImport("ButtonComponent_SetOnButtonPressed", 0), dllimports.NewEnergyImport("ButtonComponent_SetOnButtonStateChanged", 0), + // ICefViewDelegate + dllimports.NewEnergyImport("ViewDelegateRef_Create", 0), + dllimports.NewEnergyImport("ViewDelegateRef_CreateForCustom", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnGetPreferredSize", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnGetMinimumSize", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnGetMaximumSize", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnGetHeightForWidth", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnParentViewChanged", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnChildViewChanged", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnWindowChanged", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnLayoutChanged", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnFocus", 0), + dllimports.NewEnergyImport("ViewDelegate_SetOnBlur", 0), } //end imports.SetEnergyImportDefs(energyImportDefs) } diff --git a/cef/browser-view-delegate.go b/cef/types-browser-view-delegate.go similarity index 80% rename from cef/browser-view-delegate.go rename to cef/types-browser-view-delegate.go index 45d9b8f..d6fe5c0 100644 --- a/cef/browser-view-delegate.go +++ b/cef/types-browser-view-delegate.go @@ -10,14 +10,6 @@ package cef -import "unsafe" - -// ICefBrowserViewDelegate TODO 未实现 -type ICefBrowserViewDelegate struct { - base TCefBaseRefCounted - instance unsafe.Pointer -} - // Instance 实例 func (m *ICefBrowserViewDelegate) Instance() uintptr { if m == nil { diff --git a/cef/types-buttoncomponent.go b/cef/types-button-component.go similarity index 100% rename from cef/types-buttoncomponent.go rename to cef/types-button-component.go diff --git a/cef/types-client.go b/cef/types-client.go index 5f87878..d0f2b4c 100644 --- a/cef/types-client.go +++ b/cef/types-client.go @@ -30,7 +30,7 @@ func (*cefClient) New() *ICefClient { var result uintptr imports.Proc(def.CefClientRef_Create).Call(uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefClient{instance: unsafe.Pointer(result), ct: consts.CtTClient} + return &ICefClient{instance: unsafe.Pointer(result)} } return nil } @@ -45,7 +45,7 @@ func (*cefClient) NewForChromium(chromium IChromium, aDevToolsClient bool) *ICef var result uintptr imports.Proc(def.CefClientRef_CreateForChromium).Call(chromium.Instance(), api.PascalBool(aDevToolsClient), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefClient{instance: unsafe.Pointer(result), ct: consts.CtChromium} + return &ICefClient{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -65,12 +65,12 @@ func (m *ICefClient) Free() { } } -func (m *ICefClient) IsTClientEvent() bool { - return m.ct == consts.CtTClient +func (m *ICefClient) IsSelfEvent() bool { + return m.ct == consts.CtSelfOwn } -func (m *ICefClient) IsChromiumEvent() bool { - return m.ct == consts.CtChromium +func (m *ICefClient) IsOtherEvent() bool { + return m.ct == consts.CtOther } func (m *ICefClient) IsValid() bool { @@ -85,7 +85,7 @@ func (m *ICefClient) SetClient(newClient *ICefClient) { } func (m *ICefClient) GetAudioHandler() *ICefAudioHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -97,7 +97,7 @@ func (m *ICefClient) GetAudioHandler() *ICefAudioHandler { } func (m *ICefClient) GetCommandHandler() *ICefCommandHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -109,7 +109,7 @@ func (m *ICefClient) GetCommandHandler() *ICefCommandHandler { } func (m *ICefClient) GetContextMenuHandler() *ICefContextMenuHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -121,7 +121,7 @@ func (m *ICefClient) GetContextMenuHandler() *ICefContextMenuHandler { } func (m *ICefClient) GetDialogHandler() *ICefDialogHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -133,7 +133,7 @@ func (m *ICefClient) GetDialogHandler() *ICefDialogHandler { } func (m *ICefClient) GetDisplayHandler() *ICefDisplayHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -145,7 +145,7 @@ func (m *ICefClient) GetDisplayHandler() *ICefDisplayHandler { } func (m *ICefClient) GetDownloadHandler() *ICefDownloadHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -157,7 +157,7 @@ func (m *ICefClient) GetDownloadHandler() *ICefDownloadHandler { } func (m *ICefClient) GetDragHandler() *ICefDragHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -169,7 +169,7 @@ func (m *ICefClient) GetDragHandler() *ICefDragHandler { } func (m *ICefClient) GetFindHandler() *ICefFindHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -181,7 +181,7 @@ func (m *ICefClient) GetFindHandler() *ICefFindHandler { } func (m *ICefClient) GetFocusHandler() *ICefFocusHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -193,7 +193,7 @@ func (m *ICefClient) GetFocusHandler() *ICefFocusHandler { } func (m *ICefClient) GetFrameHandler() *ICefFrameHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -205,7 +205,7 @@ func (m *ICefClient) GetFrameHandler() *ICefFrameHandler { } func (m *ICefClient) GetPermissionHandler() *ICefPermissionHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -217,7 +217,7 @@ func (m *ICefClient) GetPermissionHandler() *ICefPermissionHandler { } func (m *ICefClient) GetJsdialogHandler() *ICefJsDialogHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -229,7 +229,7 @@ func (m *ICefClient) GetJsdialogHandler() *ICefJsDialogHandler { } func (m *ICefClient) GetKeyboardHandler() *ICefKeyboardHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -241,7 +241,7 @@ func (m *ICefClient) GetKeyboardHandler() *ICefKeyboardHandler { } func (m *ICefClient) GetLifeSpanHandler() *ICefLifeSpanHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -253,7 +253,7 @@ func (m *ICefClient) GetLifeSpanHandler() *ICefLifeSpanHandler { } func (m *ICefClient) GetLoadHandler() *ICefLoadHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -265,7 +265,7 @@ func (m *ICefClient) GetLoadHandler() *ICefLoadHandler { } func (m *ICefClient) GetPrintHandler() *ICefPrintHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -277,7 +277,7 @@ func (m *ICefClient) GetPrintHandler() *ICefPrintHandler { } func (m *ICefClient) GetRenderHandler() *ICefRenderHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr @@ -289,7 +289,7 @@ func (m *ICefClient) GetRenderHandler() *ICefRenderHandler { } func (m *ICefClient) GetRequestHandler() *ICefRequestHandler { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return nil } var result uintptr diff --git a/cef/types-cookie-access-filter.go b/cef/types-cookie-access-filter.go index 431d893..cefd7e2 100644 --- a/cef/types-cookie-access-filter.go +++ b/cef/types-cookie-access-filter.go @@ -40,7 +40,7 @@ func (*cookieAccessFilter) NewForChromium(chromium IChromium) *ICefCookieAccessF var result uintptr imports.Proc(def.CookieAccessFilterRef_CreateForChromium).Call(chromium.Instance(), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefCookieAccessFilter{instance: unsafe.Pointer(result)} + return &ICefCookieAccessFilter{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -69,23 +69,23 @@ func (m *ICefCookieAccessFilter) IsValid() bool { return m.instance != nil } -func (m *ICefCookieAccessFilter) IsTClientEvent() bool { - return m.ct == consts.CtTClient +func (m *ICefCookieAccessFilter) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn } -func (m *ICefCookieAccessFilter) IsChromiumEvent() bool { - return m.ct == consts.CtChromium +func (m *ICefCookieAccessFilter) IsOtherEvent() bool { + return m.ct == consts.CtOther } func (m *ICefCookieAccessFilter) SetCanSendCookie(fn canSendCookie) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.CookieAccessFilter_CanSendCookie).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefCookieAccessFilter) SetCanSaveCookie(fn canSaveCookie) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.CookieAccessFilter_CanSaveCookie).Call(m.Instance(), api.MakeEventDataPtr(fn)) diff --git a/cef/types-cookie-callbacks.go b/cef/types-cookie-callbacks.go index 48dbba6..2e07c0f 100644 --- a/cef/types-cookie-callbacks.go +++ b/cef/types-cookie-callbacks.go @@ -33,7 +33,7 @@ func (*deleteCookiesHandler) NewForChromium(chromium IChromium) *ICefDeleteCooki var result uintptr imports.Proc(def.CefDeleteCookiesCallbackRef_CreateForChromium).Call(chromium.Instance(), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefDeleteCookiesCallback{instance: unsafe.Pointer(result), ct: consts.CtChromium} + return &ICefDeleteCookiesCallback{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -42,7 +42,7 @@ func (*deleteCookiesHandler) New() *ICefDeleteCookiesCallback { var result uintptr imports.Proc(def.CefDeleteCookiesCallbackRef_Create).Call(uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefDeleteCookiesCallback{instance: unsafe.Pointer(result), ct: consts.CtTClient} + return &ICefDeleteCookiesCallback{instance: unsafe.Pointer(result)} } return nil } @@ -68,16 +68,16 @@ func (m *ICefDeleteCookiesCallback) IsValid() bool { return m.instance != nil } -func (m *ICefDeleteCookiesCallback) IsTClientEvent() bool { - return m.ct == consts.CtTClient +func (m *ICefDeleteCookiesCallback) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn } -func (m *ICefDeleteCookiesCallback) IsChromiumEvent() bool { - return m.ct == consts.CtChromium +func (m *ICefDeleteCookiesCallback) IsOtherEvent() bool { + return m.ct == consts.CtOther } func (m *ICefDeleteCookiesCallback) SetOnComplete(fn deleteCookiesOnComplete) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.CefDeleteCookiesCallback_OnComplete).Call(m.Instance(), api.MakeEventDataPtr(fn)) @@ -97,7 +97,7 @@ func (*setCookieHandler) NewForChromium(chromium IChromium, id int32) *ICefSetCo var result uintptr imports.Proc(def.CefSetCookieCallbackRef_CreateForChromium).Call(chromium.Instance(), uintptr(id), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefSetCookieCallback{instance: unsafe.Pointer(result), ct: consts.CtChromium} + return &ICefSetCookieCallback{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -106,17 +106,17 @@ func (*setCookieHandler) New() *ICefSetCookieCallback { var result uintptr imports.Proc(def.CefSetCookieCallbackRef_Create).Call(uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefSetCookieCallback{instance: unsafe.Pointer(result), ct: consts.CtTClient} + return &ICefSetCookieCallback{instance: unsafe.Pointer(result)} } return nil } -func (m *ICefSetCookieCallback) IsTClientEvent() bool { - return m.ct == consts.CtTClient +func (m *ICefSetCookieCallback) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn } -func (m *ICefSetCookieCallback) IsChromiumEvent() bool { - return m.ct == consts.CtChromium +func (m *ICefSetCookieCallback) IsOtherEvent() bool { + return m.ct == consts.CtOther } // Instance 实例 @@ -142,7 +142,7 @@ func (m *ICefSetCookieCallback) IsValid() bool { } func (m *ICefSetCookieCallback) SetOnComplete(fn setCookieOnComplete) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.CefSetCookieCallback_OnComplete).Call(m.Instance(), api.MakeEventDataPtr(fn)) diff --git a/cef/types-extension-handler.go b/cef/types-extension-handler.go index 6424b85..b8e45a4 100644 --- a/cef/types-extension-handler.go +++ b/cef/types-extension-handler.go @@ -31,7 +31,7 @@ func (*extensionHandler) NewForChromium(chromium IChromium) *TCustomExtensionHan var result uintptr imports.Proc(def.CefExtensionHandlerRef_CreateForChromium).Call(chromium.Instance(), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &TCustomExtensionHandler{instance: unsafe.Pointer(result)} + return &TCustomExtensionHandler{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -66,6 +66,14 @@ func (m *TCustomExtensionHandler) IsValid() bool { return m.instance != nil } +func (m *TCustomExtensionHandler) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn +} + +func (m *TCustomExtensionHandler) IsOtherEvent() bool { + return m.ct == consts.CtOther +} + // Instance 实例 func (m *ICefExtensionHandler) Instance() uintptr { if m == nil { @@ -80,6 +88,7 @@ func (m *ICefExtensionHandler) Free() { m.instance = nil } } + func (m *ICefExtensionHandler) IsValid() bool { if m == nil || m.instance == nil { return false diff --git a/cef/types-request-context-handler.go b/cef/types-request-context-handler.go index 0c82a2b..ffbf6df 100644 --- a/cef/types-request-context-handler.go +++ b/cef/types-request-context-handler.go @@ -30,7 +30,7 @@ func (*requestContextHandler) New() *ICefRequestContextHandler { var result uintptr imports.Proc(def.RequestContextHandlerRef_Create).Call(uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefRequestContextHandler{instance: unsafe.Pointer(result), ct: consts.CtTClient} + return &ICefRequestContextHandler{instance: unsafe.Pointer(result)} } return nil } @@ -42,7 +42,7 @@ func (*requestContextHandler) NewForChromium(chromium IChromium) *ICefRequestCon var result uintptr imports.Proc(def.RequestContextHandlerRef_CreateForChromium).Call(chromium.Instance(), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefRequestContextHandler{instance: unsafe.Pointer(result), ct: consts.CtChromium} + return &ICefRequestContextHandler{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -71,23 +71,23 @@ func (m *ICefRequestContextHandler) IsValid() bool { return m.instance != nil } -func (m *ICefRequestContextHandler) IsTClientEvent() bool { - return m.ct == consts.CtTClient +func (m *ICefRequestContextHandler) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn } -func (m *ICefRequestContextHandler) IsChromiumEvent() bool { - return m.ct == consts.CtChromium +func (m *ICefRequestContextHandler) IsOtherEvent() bool { + return m.ct == consts.CtOther } func (m *ICefRequestContextHandler) SetOnRequestContextInitialized(fn onRequestContextInitialized) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.RequestContextHandler_OnRequestContextInitialized).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefRequestContextHandler) SetGetResourceRequestHandler(fn getResourceRequestHandler) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.RequestContextHandler_GetResourceRequestHandler).Call(m.Instance(), api.MakeEventDataPtr(fn)) diff --git a/cef/types-resourcerequest-handler.go b/cef/types-resourcerequest-handler.go index 5d85bbd..517bbde 100644 --- a/cef/types-resourcerequest-handler.go +++ b/cef/types-resourcerequest-handler.go @@ -30,7 +30,7 @@ func (*resourceRequestHandler) New() *ICefResourceRequestHandler { var result uintptr imports.Proc(def.ResourceRequestHandlerRef_Create).Call(uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefResourceRequestHandler{instance: unsafe.Pointer(result), ct: consts.CtTClient} + return &ICefResourceRequestHandler{instance: unsafe.Pointer(result)} } return nil } @@ -39,7 +39,7 @@ func (*resourceRequestHandler) NewForChromium(chromium IChromium) *ICefResourceR var result uintptr imports.Proc(def.ResourceRequestHandlerRef_CreateForChromium).Call(chromium.Instance(), uintptr(unsafe.Pointer(&result))) if result != 0 { - return &ICefResourceRequestHandler{instance: unsafe.Pointer(result), ct: consts.CtChromium} + return &ICefResourceRequestHandler{instance: unsafe.Pointer(result), ct: consts.CtOther} } return nil } @@ -68,65 +68,65 @@ func (m *ICefResourceRequestHandler) IsValid() bool { return m.instance != nil } -func (m *ICefResourceRequestHandler) IsTClientEvent() bool { - return m.ct == consts.CtTClient +func (m *ICefResourceRequestHandler) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn } -func (m *ICefResourceRequestHandler) IsChromiumEvent() bool { - return m.ct == consts.CtChromium +func (m *ICefResourceRequestHandler) IsOtherEvent() bool { + return m.ct == consts.CtOther } func (m *ICefResourceRequestHandler) SetGetCookieAccessFilter(fn getCookieAccessFilter) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_GetCookieAccessFilter).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetOnBeforeResourceLoad(fn onBeforeResourceLoad) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_OnBeforeResourceLoad).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetGetResourceHandler(fn getResourceHandler) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_GetResourceHandler).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetOnResourceRedirect(fn onResourceRedirect) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_OnResourceRedirect).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetOnResourceResponse(fn onResourceResponse) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_OnResourceResponse).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetGetResourceResponseFilter(fn getResourceResponseFilter) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_GetResourceResponseFilter).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetOnResourceLoadComplete(fn onResourceLoadComplete) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_OnResourceLoadComplete).Call(m.Instance(), api.MakeEventDataPtr(fn)) } func (m *ICefResourceRequestHandler) SetOnProtocolExecution(fn onProtocolExecution) { - if !m.IsValid() || m.IsChromiumEvent() { + if !m.IsValid() || m.IsOtherEvent() { return } imports.Proc(def.ResourceRequestHandler_OnProtocolExecution).Call(m.Instance(), api.MakeEventDataPtr(fn)) diff --git a/cef/types-viewcomponent.go b/cef/types-view-component.go similarity index 82% rename from cef/types-viewcomponent.go rename to cef/types-view-component.go index e9232be..c46f0c0 100644 --- a/cef/types-viewcomponent.go +++ b/cef/types-view-component.go @@ -505,68 +505,3 @@ func (m *TCEFViewComponent) SetOnBlur(fn onBlur) { } imports.Proc(def.ViewComponent_SetOnBlur).Call(m.Instance(), api.MakeEventDataPtr(fn)) } - -type onGetPreferredSize func(sender lcl.IObject, view *ICefView, result *TCefSize) -type onGetMinimumSize func(sender lcl.IObject, view *ICefView, result *TCefSize) -type onGetMaximumSize func(sender lcl.IObject, view *ICefView, result *TCefSize) -type onGetHeightForWidth func(sender lcl.IObject, view *ICefView, width int32) int32 -type onParentViewChanged func(sender lcl.IObject, view *ICefView, added bool, parent *ICefView) -type onChildViewChanged func(sender lcl.IObject, view *ICefView, added bool, child *ICefView) -type onWindowChanged func(sender lcl.IObject, view *ICefView, added bool) -type onLayoutChanged func(sender lcl.IObject, view *ICefView, newBounds *TCefRect) -type onFocus func(sender lcl.IObject, view *ICefView) -type onBlur func(sender lcl.IObject, view *ICefView) - -func init() { - lcl.RegisterExtEventCallback(func(fn interface{}, getVal func(idx int) uintptr) bool { - getPtr := func(i int) unsafe.Pointer { - return unsafe.Pointer(getVal(i)) - } - switch fn.(type) { - case onGetPreferredSize: - view := &ICefView{instance: getPtr(1)} - resultSize := (*TCefSize)(getPtr(2)) - fn.(onGetPreferredSize)(lcl.AsObject(getPtr(0)), view, resultSize) - case onGetMinimumSize: - view := &ICefView{instance: getPtr(1)} - resultSize := (*TCefSize)(getPtr(2)) - fn.(onGetMinimumSize)(lcl.AsObject(getPtr(0)), view, resultSize) - case onGetMaximumSize: - view := &ICefView{instance: getPtr(1)} - resultSize := (*TCefSize)(getPtr(2)) - fn.(onGetMaximumSize)(lcl.AsObject(getPtr(0)), view, resultSize) - case onGetHeightForWidth: - view := &ICefView{instance: getPtr(1)} - width := int32(getVal(2)) - resultPtr := (*int32)(getPtr(3)) - *resultPtr = fn.(onGetHeightForWidth)(lcl.AsObject(getPtr(0)), view, width) - case onParentViewChanged: - view := &ICefView{instance: getPtr(1)} - added := api.GoBool(getVal(2)) - parent := &ICefView{instance: getPtr(3)} - fn.(onParentViewChanged)(lcl.AsObject(getPtr(0)), view, added, parent) - case onChildViewChanged: - view := &ICefView{instance: getPtr(1)} - added := api.GoBool(getVal(2)) - child := &ICefView{instance: getPtr(3)} - fn.(onChildViewChanged)(lcl.AsObject(getPtr(0)), view, added, child) - case onWindowChanged: - view := &ICefView{instance: getPtr(1)} - added := api.GoBool(getVal(2)) - fn.(onWindowChanged)(lcl.AsObject(getPtr(0)), view, added) - case onLayoutChanged: - view := &ICefView{instance: getPtr(1)} - newBounds := (*TCefRect)(getPtr(2)) - fn.(onLayoutChanged)(lcl.AsObject(getPtr(0)), view, newBounds) - case onFocus: - view := &ICefView{instance: getPtr(1)} - fn.(onFocus)(lcl.AsObject(getPtr(0)), view) - case onBlur: - view := &ICefView{instance: getPtr(1)} - fn.(onBlur)(lcl.AsObject(getPtr(0)), view) - default: - return false - } - return true - }) -} diff --git a/cef/types-view-delegate.go b/cef/types-view-delegate.go new file mode 100644 index 0000000..7333fab --- /dev/null +++ b/cef/types-view-delegate.go @@ -0,0 +1,208 @@ +//---------------------------------------- +// +// 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 ( + "github.com/energye/energy/v2/cef/internal/def" + "github.com/energye/energy/v2/common/imports" + "github.com/energye/energy/v2/consts" + "github.com/energye/golcl/lcl" + "github.com/energye/golcl/lcl/api" + "unsafe" +) + +// ViewDelegateRef -> ICefViewDelegate +var ViewDelegateRef viewDelegate + +type viewDelegate uintptr + +func (*viewDelegate) New() *ICefViewDelegate { + var result uintptr + imports.Proc(def.ViewDelegateRef_Create).Call(uintptr(unsafe.Pointer(&result))) + if result != 0 { + return &ICefViewDelegate{instance: getInstance(result)} + } + return nil +} + +func (*viewDelegate) NewForCustom() *ICefViewDelegate { + var result uintptr + imports.Proc(def.ViewDelegateRef_CreateForCustom).Call(uintptr(unsafe.Pointer(&result))) + if result != 0 { + return &ICefViewDelegate{instance: getInstance(result), ct: consts.CtOther} + } + return nil +} + +func (m *ICefViewDelegate) IsSelfOwnEvent() bool { + return m.ct == consts.CtSelfOwn +} + +func (m *ICefViewDelegate) IsOtherEvent() bool { + return m.ct == consts.CtOther +} + +// Instance 实例 +func (m *ICefViewDelegate) Instance() uintptr { + if m == nil { + return 0 + } + return uintptr(m.instance) +} + +func (m *ICefViewDelegate) IsValid() bool { + if m == nil || m.instance == nil { + return false + } + return m.instance != nil +} + +func (m *ICefViewDelegate) Free() { + if m.instance != nil { + m.base.Free(m.Instance()) + m.instance = nil + } +} + +func (m *ICefViewDelegate) SetOnGetPreferredSize(fn onGetPreferredSize) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnGetPreferredSize).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnGetMinimumSize(fn onGetMinimumSize) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnGetMinimumSize).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnGetMaximumSize(fn onGetMaximumSize) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnGetMaximumSize).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnGetHeightForWidth(fn onGetHeightForWidth) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnGetHeightForWidth).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnParentViewChanged(fn onParentViewChanged) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnParentViewChanged).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnChildViewChanged(fn onChildViewChanged) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnChildViewChanged).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnWindowChanged(fn onWindowChanged) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnWindowChanged).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnLayoutChanged(fn onLayoutChanged) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnLayoutChanged).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnFocus(fn onFocus) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnFocus).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +func (m *ICefViewDelegate) SetOnBlur(fn onBlur) { + if !m.IsValid() || m.IsOtherEvent() { + return + } + imports.Proc(def.ViewDelegate_SetOnBlur).Call(m.Instance(), api.MakeEventDataPtr(fn)) +} + +type onGetPreferredSize func(view *ICefView, result *TCefSize) +type onGetMinimumSize func(view *ICefView, result *TCefSize) +type onGetMaximumSize func(view *ICefView, result *TCefSize) +type onGetHeightForWidth func(view *ICefView, width int32) int32 +type onParentViewChanged func(view *ICefView, added bool, parent *ICefView) +type onChildViewChanged func(view *ICefView, added bool, child *ICefView) +type onWindowChanged func(view *ICefView, added bool) +type onLayoutChanged func(view *ICefView, newBounds *TCefRect) +type onFocus func(view *ICefView) +type onBlur func(view *ICefView) + +func init() { + lcl.RegisterExtEventCallback(func(fn interface{}, getVal func(idx int) uintptr) bool { + getPtr := func(i int) unsafe.Pointer { + return unsafe.Pointer(getVal(i)) + } + switch fn.(type) { + case onGetPreferredSize: + view := &ICefView{instance: getPtr(1)} + resultSize := (*TCefSize)(getPtr(2)) + fn.(onGetPreferredSize)(view, resultSize) + case onGetMinimumSize: + view := &ICefView{instance: getPtr(1)} + resultSize := (*TCefSize)(getPtr(2)) + fn.(onGetMinimumSize)(view, resultSize) + case onGetMaximumSize: + view := &ICefView{instance: getPtr(1)} + resultSize := (*TCefSize)(getPtr(2)) + fn.(onGetMaximumSize)(view, resultSize) + case onGetHeightForWidth: + view := &ICefView{instance: getPtr(1)} + width := int32(getVal(2)) + resultPtr := (*int32)(getPtr(3)) + *resultPtr = fn.(onGetHeightForWidth)(view, width) + case onParentViewChanged: + view := &ICefView{instance: getPtr(1)} + added := api.GoBool(getVal(2)) + parent := &ICefView{instance: getPtr(3)} + fn.(onParentViewChanged)(view, added, parent) + case onChildViewChanged: + view := &ICefView{instance: getPtr(1)} + added := api.GoBool(getVal(2)) + child := &ICefView{instance: getPtr(3)} + fn.(onChildViewChanged)(view, added, child) + case onWindowChanged: + view := &ICefView{instance: getPtr(1)} + added := api.GoBool(getVal(2)) + fn.(onWindowChanged)(view, added) + case onLayoutChanged: + view := &ICefView{instance: getPtr(1)} + newBounds := (*TCefRect)(getPtr(2)) + fn.(onLayoutChanged)(view, newBounds) + case onFocus: + view := &ICefView{instance: getPtr(1)} + fn.(onFocus)(view) + case onBlur: + view := &ICefView{instance: getPtr(1)} + fn.(onBlur)(view) + default: + return false + } + return true + }) +} diff --git a/cef/types.go b/cef/types.go index f1146a9..4a8bcdd 100644 --- a/cef/types.go +++ b/cef/types.go @@ -365,6 +365,7 @@ type ICefExtensionHandler struct { type TCustomExtensionHandler struct { base TCefBaseRefCounted instance unsafe.Pointer + ct CefCreateType } // ICefExtension @@ -435,7 +436,7 @@ type TCefTouchHandleState struct { type ICefRequestContextHandler struct { base TCefBaseRefCounted instance unsafe.Pointer - ct CefClientType // 0: TClientRef 1: IChromium + ct CefCreateType } // ICefMenuModel 菜单 @@ -522,6 +523,12 @@ type ICefView struct { type ICefViewDelegate struct { base TCefBaseRefCounted instance unsafe.Pointer + ct CefCreateType +} + +// ICefBrowserViewDelegate +type ICefBrowserViewDelegate struct { + *ICefViewDelegate } // TCEFViewComponent @@ -567,7 +574,7 @@ type ICefSslInfo struct { type ICefClient struct { base TCefBaseRefCounted instance unsafe.Pointer - ct CefClientType // 0: TClientRef 1: IChromium + ct CefCreateType } // ICefAudioHandler @@ -696,7 +703,7 @@ type ICefAccessibilityHandler struct { type ICefResourceRequestHandler struct { base TCefBaseRefCounted instance unsafe.Pointer - ct CefClientType // 0: TClientRef 1: IChromium + ct CefCreateType } // ICefCookieAccessFilter @@ -704,7 +711,7 @@ type ICefResourceRequestHandler struct { type ICefCookieAccessFilter struct { base TCefBaseRefCounted instance unsafe.Pointer - ct CefClientType // 0: TClientRef 1: IChromium + ct CefCreateType } // ICefResourceHandler @@ -830,14 +837,14 @@ type ICefResourceSkipCallback struct { type ICefDeleteCookiesCallback struct { base TCefBaseRefCounted instance unsafe.Pointer - ct CefClientType // 0: TClientRef 1: IChromium + ct CefCreateType } // ICefSetCookieCallback type ICefSetCookieCallback struct { base TCefBaseRefCounted instance unsafe.Pointer - ct CefClientType // 0: TClientRef 1: IChromium + ct CefCreateType } // ICefPrintDialogCallback diff --git a/consts/consts.go b/consts/consts.go index 723c929..a2c2433 100644 --- a/consts/consts.go +++ b/consts/consts.go @@ -1130,14 +1130,14 @@ const ( CEF_CHANNEL_LAYOUT_5_1_4_DOWNMIX // CEF_CHANNEL_LAYOUT_MAX = CEF_CHANNEL_LAYOUT_5_1_4_DOWNMIX ) -// CefClientType -// CtTClient 自定义客户端处理器事件 -// CtChromium 使用 IChromium 定义事件, 不允许获取处理器事件 -type CefClientType = types.Int8 +// CefCreateType +// CtSelfOwn 自己处理事件 +// CtOther 使用其他处理事件 +type CefCreateType = types.Int8 const ( - CtTClient CefClientType = iota - CtChromium + CtSelfOwn CefCreateType = iota // CtSelfOwn 自己处理事件 + CtOther // CtOther 使用其他处理事件 ) // /include/internal/cef_types.h (cef_quick_menu_edit_state_flags_t) -- GitLab