internal static void create(IntPtr gcHandlePtr, out IntPtr __retval, IntPtr browser, out int browser_release, IntPtr frame, out int frame_release, IntPtr scheme_name_str, int scheme_name_length, IntPtr request, out int request_release) { var self = (CfxSchemeHandlerFactory)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target; if (browser == IntPtr.Zero) { //TODO:还是没搞懂,显示DevTools时,为啥会为空 __retval = default(IntPtr); browser_release = 0; frame_release = 0; request_release = 0; return; } if (self == null || self.CallbacksDisabled) { __retval = default(IntPtr); browser_release = 1; frame_release = 1; request_release = 1; return; } var e = new CfxSchemeHandlerFactoryCreateEventArgs(browser, frame, scheme_name_str, scheme_name_length, request); self.m_Create?.Invoke(self, e); e.m_isInvalid = true; browser_release = e.m_browser_wrapped == null? 1 : 0; frame_release = e.m_frame_wrapped == null? 1 : 0; request_release = e.m_request_wrapped == null? 1 : 0; __retval = CfxResourceHandler.Unwrap(e.m_returnValue); }
internal static void create(IntPtr gcHandlePtr, out IntPtr __retval, IntPtr browser, IntPtr frame, IntPtr scheme_name_str, int scheme_name_length, IntPtr request) { var self = (CfxSchemeHandlerFactory)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target; if (self == null || browser == IntPtr.Zero) { //TOD:这里为什么会为空? __retval = default(IntPtr); return; } var e = new CfxSchemeHandlerFactoryCreateEventArgs(browser, frame, scheme_name_str, scheme_name_length, request); var eventHandler = self.m_Create; if (eventHandler != null) { eventHandler(self, e); } e.m_isInvalid = true; if (e.m_browser_wrapped == null) { CfxApi.cfx_release(e.m_browser); } if (e.m_frame_wrapped == null) { CfxApi.cfx_release(e.m_frame); } if (e.m_request_wrapped == null) { CfxApi.cfx_release(e.m_request); } __retval = CfxResourceHandler.Unwrap(e.m_returnValue); }