diff --git a/README.md b/README.md index 5f9b8ba6..d14e05cf 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,10 @@ CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chro CEF4Delphi is based on DCEF3, made by Henri Gourvest. The original license of DCEF3 still applies to CEF4Delphi. Read the license terms in the first lines of any *.pas file. -CEF4Delphi uses CEF 86.0.24 which includes Chromium 86.0.4240.198. +CEF4Delphi uses CEF 87.1.6 which includes Chromium 87.0.4280.66. The CEF binaries used by CEF4Delphi are available for download at spotify : -* [32 bits](https://cef-builds.spotifycdn.com/cef_binary_86.0.24%2Bg85e79d4%2Bchromium-86.0.4240.198_windows32.tar.bz2) -* [64 bits](https://cef-builds.spotifycdn.com/cef_binary_86.0.24%2Bg85e79d4%2Bchromium-86.0.4240.198_windows64.tar.bz2) +* [32 bits](https://cef-builds.spotifycdn.com/cef_binary_87.1.6%2Bg315d248%2Bchromium-87.0.4280.66_windows32.tar.bz2) +* [64 bits](https://cef-builds.spotifycdn.com/cef_binary_87.1.6%2Bg315d248%2Bchromium-87.0.4280.66_windows64.tar.bz2) CEF4Delphi was developed and tested on Delphi 10.4.1 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3 and Lazarus 2.0.10/FPC 3.2.0. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components. diff --git a/packages/cef4delphi_lazarus.lpk b/packages/cef4delphi_lazarus.lpk index 7783ec23..ff8fda5b 100644 --- a/packages/cef4delphi_lazarus.lpk +++ b/packages/cef4delphi_lazarus.lpk @@ -21,7 +21,7 @@ - + diff --git a/source/uCEFApplicationCore.pas b/source/uCEFApplicationCore.pas index 73945487..d7f8b100 100644 --- a/source/uCEFApplicationCore.pas +++ b/source/uCEFApplicationCore.pas @@ -57,15 +57,15 @@ uses uCEFTypes, uCEFInterfaces, uCEFBaseRefCounted, uCEFSchemeRegistrar; const - CEF_SUPPORTED_VERSION_MAJOR = 86; - CEF_SUPPORTED_VERSION_MINOR = 0; - CEF_SUPPORTED_VERSION_RELEASE = 24; + CEF_SUPPORTED_VERSION_MAJOR = 87; + CEF_SUPPORTED_VERSION_MINOR = 1; + CEF_SUPPORTED_VERSION_RELEASE = 6; CEF_SUPPORTED_VERSION_BUILD = 0; - CEF_CHROMEELF_VERSION_MAJOR = 86; + CEF_CHROMEELF_VERSION_MAJOR = 87; CEF_CHROMEELF_VERSION_MINOR = 0; - CEF_CHROMEELF_VERSION_RELEASE = 4240; - CEF_CHROMEELF_VERSION_BUILD = 198; + CEF_CHROMEELF_VERSION_RELEASE = 4280; + CEF_CHROMEELF_VERSION_BUILD = 66; {$IFDEF MSWINDOWS} LIBCEF_DLL = 'libcef.dll'; @@ -197,9 +197,11 @@ type FMustCreateLoadHandler : boolean; // ICefBrowserProcessHandler + FOnGetCookieableSchemes : TOnGetCookieableSchemesEvent; FOnContextInitialized : TOnContextInitializedEvent; FOnBeforeChildProcessLaunch : TOnBeforeChildProcessLaunchEvent; FOnScheduleMessagePumpWork : TOnScheduleMessagePumpWorkEvent; + FOnGetDefaultClient : TOnGetDefaultClientEvent; // ICefResourceBundleHandler FOnGetLocalizedString : TOnGetLocalizedStringEvent; @@ -362,6 +364,8 @@ type procedure Internal_OnLoadStart(const browser: ICefBrowser; const frame: ICefFrame; transitionType: TCefTransitionType); procedure Internal_OnLoadEnd(const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer); procedure Internal_OnLoadError(const browser: ICefBrowser; const frame: ICefFrame; errorCode: Integer; const errorText, failedUrl: ustring); + procedure Internal_GetCookieableSchemes(var schemes: TStringList; var include_defaults : boolean); + procedure Internal_GetDefaultClient(var aClient : ICefClient); // Properties used to populate TCefSettings (cef_settings_t) property NoSandbox : Boolean read FNoSandbox write FNoSandbox; @@ -493,9 +497,11 @@ type property OnRegCustomSchemes : TOnRegisterCustomSchemesEvent read FOnRegisterCustomSchemes write FOnRegisterCustomSchemes; // ICefBrowserProcessHandler + property OnGetCookieableSchemes : TOnGetCookieableSchemesEvent read FOnGetCookieableSchemes write FOnGetCookieableSchemes; property OnContextInitialized : TOnContextInitializedEvent read FOnContextInitialized write FOnContextInitialized; property OnBeforeChildProcessLaunch : TOnBeforeChildProcessLaunchEvent read FOnBeforeChildProcessLaunch write FOnBeforeChildProcessLaunch; property OnScheduleMessagePumpWork : TOnScheduleMessagePumpWorkEvent read FOnScheduleMessagePumpWork write FOnScheduleMessagePumpWork; + property OnGetDefaultClient : TOnGetDefaultClientEvent read FOnGetDefaultClient write FOnGetDefaultClient; // ICefResourceBundleHandler property OnGetLocalizedString : TOnGetLocalizedStringEvent read FOnGetLocalizedString write FOnGetLocalizedString; @@ -704,9 +710,11 @@ begin FMustCreateLoadHandler := False; // ICefBrowserProcessHandler + FOnGetCookieableSchemes := nil; FOnContextInitialized := nil; FOnBeforeChildProcessLaunch := nil; FOnScheduleMessagePumpWork := nil; + FOnGetDefaultClient := nil; // ICefResourceBundleHandler FOnGetLocalizedString := nil; @@ -1628,6 +1636,18 @@ begin FOnLoadError(browser, frame, errorCode, errorText, failedUrl); end; +procedure TCefApplicationCore.Internal_GetCookieableSchemes(var schemes: TStringList; var include_defaults : boolean); +begin + if assigned(FOnGetCookieableSchemes) then + FOnGetCookieableSchemes(schemes, include_defaults); +end; + +procedure TCefApplicationCore.Internal_GetDefaultClient(var aClient : ICefClient); +begin + if assigned(FOnGetDefaultClient) then + FOnGetDefaultClient(aClient); +end; + procedure TCefApplicationCore.AppendSwitch(var aKeys, aValues : TStringList; const aNewKey, aNewValue : ustring); var TempKey : ustring; @@ -1958,9 +1978,11 @@ function TCefApplicationCore.GetMustCreateBrowserProcessHandler : boolean; begin Result := ((FSingleProcess or (FProcessType = ptBrowser)) and (FMustCreateBrowserProcessHandler or + assigned(FOnGetCookieableSchemes) or assigned(FOnContextInitialized) or assigned(FOnBeforeChildProcessLaunch) or - assigned(FOnScheduleMessagePumpWork))); + assigned(FOnScheduleMessagePumpWork)) or + assigned(FOnGetDefaultClient)); end; function TCefApplicationCore.GetMustCreateRenderProcessHandler : boolean; diff --git a/source/uCEFBrowser.pas b/source/uCEFBrowser.pas index 8f259cf0..34077f07 100644 --- a/source/uCEFBrowser.pas +++ b/source/uCEFBrowser.pas @@ -114,8 +114,6 @@ type function AddDevToolsMessageObserver(const observer: ICefDevToolsMessageObserver): ICefRegistration; procedure GetNavigationEntries(const visitor: ICefNavigationEntryVisitor; currentOnly: Boolean); procedure GetNavigationEntriesProc(const proc: TCefNavigationEntryVisitorProc; currentOnly: Boolean); - procedure SetMouseCursorChangeDisabled(disabled: Boolean); - function IsMouseCursorChangeDisabled: Boolean; procedure ReplaceMisspelling(const word: ustring); procedure AddWordToDictionary(const word: ustring); function IsWindowRenderingDisabled: Boolean; @@ -546,11 +544,6 @@ begin PCefBrowserHost(FData)^.set_focus(PCefBrowserHost(FData), Ord(focus)); end; -procedure TCefBrowserHostRef.SetMouseCursorChangeDisabled(disabled: Boolean); -begin - PCefBrowserHost(FData)^.set_mouse_cursor_change_disabled(PCefBrowserHost(FData), Ord(disabled)); -end; - procedure TCefBrowserHostRef.SetWindowlessFrameRate(frameRate: Integer); begin PCefBrowserHost(FData)^.set_windowless_frame_rate(PCefBrowserHost(FData), frameRate); @@ -706,11 +699,6 @@ begin PCefBrowserHost(FData)^.send_external_begin_frame(PCefBrowserHost(FData)); end; -function TCefBrowserHostRef.IsMouseCursorChangeDisabled: Boolean; -begin - Result := PCefBrowserHost(FData)^.is_mouse_cursor_change_disabled(PCefBrowserHost(FData)) <> 0; -end; - function TCefBrowserHostRef.IsWindowRenderingDisabled: Boolean; begin Result := PCefBrowserHost(FData)^.is_window_rendering_disabled(PCefBrowserHost(FData)) <> 0; diff --git a/source/uCEFBrowserProcessHandler.pas b/source/uCEFBrowserProcessHandler.pas index 83681af3..7051e85d 100644 --- a/source/uCEFBrowserProcessHandler.pas +++ b/source/uCEFBrowserProcessHandler.pas @@ -49,15 +49,22 @@ unit uCEFBrowserProcessHandler; interface uses + {$IFDEF DELPHI16_UP} + System.Classes, + {$ELSE} + Classes, + {$ENDIF} uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFApplicationCore; type TCefBrowserProcessHandlerOwn = class(TCefBaseRefCountedOwn, ICefBrowserProcessHandler) protected + procedure GetCookieableSchemes(var schemes: TStringList; var include_defaults : boolean); virtual; abstract; procedure OnContextInitialized; virtual; abstract; procedure OnBeforeChildProcessLaunch(const commandLine: ICefCommandLine); virtual; abstract; procedure GetPrintHandler(var aHandler : ICefPrintHandler); virtual; procedure OnScheduleMessagePumpWork(const delayMs: Int64); virtual; abstract; + procedure GetDefaultClient(var aClient : ICefClient); virtual; procedure RemoveReferences; virtual; abstract; @@ -69,9 +76,11 @@ type protected FCefApp : TCefApplicationCore; + procedure GetCookieableSchemes(var schemes: TStringList; var include_defaults : boolean); override; procedure OnContextInitialized; override; procedure OnBeforeChildProcessLaunch(const commandLine: ICefCommandLine); override; procedure OnScheduleMessagePumpWork(const delayMs: Int64); override; + procedure GetDefaultClient(var aClient : ICefClient); override; procedure RemoveReferences; override; @@ -88,7 +97,46 @@ uses {$ELSE} SysUtils, {$ENDIF} - uCEFMiscFunctions, uCEFLibFunctions, uCEFCommandLine, uCEFListValue, uCEFConstants; + uCEFMiscFunctions, uCEFLibFunctions, uCEFCommandLine, uCEFListValue, uCEFConstants, uCEFStringList; + +procedure cef_browser_process_handler_get_cookieable_schemes(self : PCefBrowserProcessHandler; + schemes : TCefStringList; + include_defaults : PInteger); stdcall; +var + TempSL : TStringList; + TempCefSL : ICefStringList; + TempObject : TObject; + TempIncDef : boolean; +begin + TempSL := nil; + + try + try + TempObject := CefGetObject(self); + + if (schemes <> nil) and (TempObject <> nil) and (TempObject is TCefBrowserProcessHandlerOwn) then + begin + TempIncDef := (include_defaults^ <> 0); + TempSL := TStringList.Create; + TempCefSL := TCefStringListRef.Create(schemes); + TempCefSL.CopyToStrings(TempSL); + + TCefBrowserProcessHandlerOwn(TempObject).GetCookieableSchemes(TempSL, TempIncDef); + + TempCefSL.Clear; + TempCefSL.AddStrings(TempSL); + + include_defaults^ := ord(TempIncDef); + end; + except + on e : exception do + if CustomExceptionHandler('cef_browser_process_handler_get_cookieable_schemes', e) then raise; + end; + finally + if (TempSL <> nil) then FreeAndNil(TempSL); + TempCefSL := nil; + end; +end; procedure cef_browser_process_handler_on_context_initialized(self: PCefBrowserProcessHandler); stdcall; var @@ -124,6 +172,7 @@ begin if (TempObject <> nil) and (TempObject is TCefBrowserProcessHandlerOwn) then try + TempHandler := nil; TCefBrowserProcessHandlerOwn(TempObject).GetPrintHandler(TempHandler); if (TempHandler <> nil) then Result := TempHandler.Wrap; finally @@ -143,16 +192,37 @@ begin TCefBrowserProcessHandlerOwn(TempObject).OnScheduleMessagePumpWork(delay_ms); end; +function cef_browser_process_handler_get_default_client(self: PCefBrowserProcessHandler): PCefClient; stdcall; +var + TempObject : TObject; + TempClient : ICefClient; +begin + Result := nil; + TempObject := CefGetObject(self); + + if (TempObject <> nil) and + (TempObject is TCefBrowserProcessHandlerOwn) then + try + TempClient := nil; + TCefBrowserProcessHandlerOwn(TempObject).GetDefaultClient(TempClient); + if (TempClient <> nil) then Result := TempClient.Wrap; + finally + TempClient := nil; + end; +end; + constructor TCefBrowserProcessHandlerOwn.Create; begin inherited CreateData(SizeOf(TCefBrowserProcessHandler)); with PCefBrowserProcessHandler(FData)^ do begin + get_cookieable_schemes := {$IFDEF FPC}@{$ENDIF}cef_browser_process_handler_get_cookieable_schemes; on_context_initialized := {$IFDEF FPC}@{$ENDIF}cef_browser_process_handler_on_context_initialized; on_before_child_process_launch := {$IFDEF FPC}@{$ENDIF}cef_browser_process_handler_on_before_child_process_launch; get_print_handler := {$IFDEF FPC}@{$ENDIF}cef_browser_process_handler_get_print_handler; on_schedule_message_pump_work := {$IFDEF FPC}@{$ENDIF}cef_browser_process_handler_on_schedule_message_pump_work; + get_default_client := {$IFDEF FPC}@{$ENDIF}cef_browser_process_handler_get_default_client; end; end; @@ -161,6 +231,10 @@ begin aHandler := nil; // only linux end; +procedure TCefBrowserProcessHandlerOwn.GetDefaultClient(var aClient : ICefClient); +begin + aClient := nil; +end; // TCefCustomBrowserProcessHandler @@ -185,6 +259,17 @@ begin FCefApp := nil; end; +procedure TCefCustomBrowserProcessHandler.GetCookieableSchemes(var schemes : TStringList; + var include_defaults : boolean); +begin + try + if (FCefApp <> nil) then FCefApp.Internal_GetCookieableSchemes(schemes, include_defaults); + except + on e : exception do + if CustomExceptionHandler('TCefCustomBrowserProcessHandler.GetCookieableSchemes', e) then raise; + end; +end; + procedure TCefCustomBrowserProcessHandler.OnContextInitialized; begin try @@ -215,4 +300,14 @@ begin end; end; +procedure TCefCustomBrowserProcessHandler.GetDefaultClient(var aClient : ICefClient); +begin + try + if (FCefApp <> nil) then FCefApp.Internal_GetDefaultClient(aClient); + except + on e : exception do + if CustomExceptionHandler('TCefCustomBrowserProcessHandler.GetDefaultClient', e) then raise; + end; +end; + end. diff --git a/source/uCEFChromiumCore.pas b/source/uCEFChromiumCore.pas index 15123135..a2163457 100644 --- a/source/uCEFChromiumCore.pas +++ b/source/uCEFChromiumCore.pas @@ -190,6 +190,7 @@ type FOnConsoleMessage : TOnConsoleMessage; FOnAutoResize : TOnAutoResize; FOnLoadingProgressChange : TOnLoadingProgressChange; + FOnCursorChange : TOnCursorChange; // ICefDownloadHandler FOnBeforeDownload : TOnBeforeDownload; @@ -246,7 +247,6 @@ type FOnPopupSize : TOnPopupSize; FOnPaint : TOnPaint; FOnAcceleratedPaint : TOnAcceleratedPaint; - FOnCursorChange : TOnCursorChange; FOnStartDragging : TOnStartDragging; FOnUpdateDragCursor : TOnUpdateDragCursor; FOnScrollOffsetChanged : TOnScrollOffsetChanged; @@ -354,7 +354,6 @@ type function GetBrowserById(aID : integer) : ICefBrowser; function GetBrowserCount : integer; function GetBrowserIdByIndex(aIndex : integer) : integer; - function GetMouseCursorChangeDisabled : boolean; procedure SetDoNotTrack(aValue : boolean); procedure SetSendReferrer(aValue : boolean); @@ -397,7 +396,6 @@ type procedure SetQuicAllowed(aValue : boolean); procedure SetJavascriptEnabled(aValue : boolean); procedure SetLoadImagesAutomatically(aValue : boolean); - procedure SetMouseCursorChangeDisabled(aValue : boolean); function CreateBrowserHost(aWindowInfo : PCefWindowInfo; const aURL : ustring; const aSettings : PCefBrowserSettings; const aExtraInfo : ICefDictionaryValue; const aContext : ICefRequestContext): boolean; function CreateBrowserHostSync(aWindowInfo : PCefWindowInfo; const aURL : ustring; const aSettings : PCefBrowserSettings; const aExtraInfo : ICefDictionaryValue; const aContext : ICefRequestContext): Boolean; @@ -507,6 +505,7 @@ type function doOnConsoleMessage(const browser: ICefBrowser; level: TCefLogSeverity; const aMessage, source: ustring; line: Integer): Boolean; virtual; function doOnAutoResize(const browser: ICefBrowser; const new_size: PCefSize): Boolean; virtual; procedure doOnLoadingProgressChange(const browser: ICefBrowser; const progress: double); virtual; + procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); virtual; // ICefDownloadHandler procedure doOnBeforeDownload(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback); virtual; @@ -563,7 +562,6 @@ type procedure doOnPopupSize(const browser: ICefBrowser; const rect: PCefRect); virtual; procedure doOnPaint(const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); virtual; procedure doOnAcceleratedPaint(const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); virtual; - procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); virtual; function doOnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; virtual; procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual; procedure doOnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); virtual; @@ -894,7 +892,6 @@ type property QuicAllowed : boolean read FQuicAllowed write SetQuicAllowed; property JavascriptEnabled : boolean read FJavascriptEnabled write SetJavascriptEnabled; property LoadImagesAutomatically : boolean read FLoadImagesAutomatically write SetLoadImagesAutomatically; - property MouseCursorChangeDisabled : boolean read GetMouseCursorChangeDisabled write SetMouseCursorChangeDisabled; property WebRTCIPHandlingPolicy : TCefWebRTCHandlingPolicy read FWebRTCIPHandlingPolicy write SetWebRTCIPHandlingPolicy; property WebRTCMultipleRoutes : TCefState read FWebRTCMultipleRoutes write SetWebRTCMultipleRoutes; @@ -969,6 +966,7 @@ type property OnConsoleMessage : TOnConsoleMessage read FOnConsoleMessage write FOnConsoleMessage; property OnAutoResize : TOnAutoResize read FOnAutoResize write FOnAutoResize; property OnLoadingProgressChange : TOnLoadingProgressChange read FOnLoadingProgressChange write FOnLoadingProgressChange; + property OnCursorChange : TOnCursorChange read FOnCursorChange write FOnCursorChange; // ICefDownloadHandler property OnBeforeDownload : TOnBeforeDownload read FOnBeforeDownload write FOnBeforeDownload; @@ -1025,7 +1023,6 @@ type property OnPopupSize : TOnPopupSize read FOnPopupSize write FOnPopupSize; property OnPaint : TOnPaint read FOnPaint write FOnPaint; property OnAcceleratedPaint : TOnAcceleratedPaint read FOnAcceleratedPaint write FOnAcceleratedPaint; - property OnCursorChange : TOnCursorChange read FOnCursorChange write FOnCursorChange; property OnStartDragging : TOnStartDragging read FOnStartDragging write FOnStartDragging; property OnUpdateDragCursor : TOnUpdateDragCursor read FOnUpdateDragCursor write FOnUpdateDragCursor; property OnScrollOffsetChanged : TOnScrollOffsetChanged read FOnScrollOffsetChanged write FOnScrollOffsetChanged; @@ -1640,6 +1637,7 @@ begin FOnConsoleMessage := nil; FOnAutoResize := nil; FOnLoadingProgressChange := nil; + FOnCursorChange := nil; // ICefDownloadHandler FOnBeforeDownload := nil; @@ -1696,7 +1694,6 @@ begin FOnPopupSize := nil; FOnPaint := nil; FOnAcceleratedPaint := nil; - FOnCursorChange := nil; FOnStartDragging := nil; FOnUpdateDragCursor := nil; FOnScrollOffsetChanged := nil; @@ -2682,11 +2679,6 @@ begin Result := Initialized and Browser.host.RequestContext.IsGlobal; end; -function TChromiumCore.GetMouseCursorChangeDisabled : boolean; -begin - Result := Initialized and Browser.host.IsMouseCursorChangeDisabled; -end; - function TChromiumCore.GetAudioMuted : boolean; begin Result := Initialized and Browser.host.IsAudioMuted; @@ -2738,12 +2730,6 @@ begin end; end; -procedure TChromiumCore.SetMouseCursorChangeDisabled(aValue : boolean); -begin - if Initialized then - Browser.Host.SetMouseCursorChangeDisabled(aValue); -end; - procedure TChromiumCore.SetAudioMuted(aValue : boolean); begin if Initialized then @@ -4576,7 +4562,8 @@ begin assigned(FOnStatusMessage) or assigned(FOnConsoleMessage) or assigned(FOnAutoResize) or - assigned(FOnLoadingProgressChange); + assigned(FOnLoadingProgressChange) or + assigned(FOnCursorChange); end; function TChromiumCore.MustCreateDownloadHandler : boolean; @@ -5256,10 +5243,13 @@ end; procedure TChromiumCore.doOnCursorChange(const browser : ICefBrowser; cursor : TCefCursorHandle; cursorType : TCefCursorType; - const customCursorInfo : PCefCursorInfo); + const customCursorInfo : PCefCursorInfo; + var aResult : boolean); begin + aResult := False; + if assigned(FOnCursorChange) then - FOnCursorChange(self, browser, cursor, cursorType, customCursorInfo); + FOnCursorChange(self, browser, cursor, cursorType, customCursorInfo, aResult); end; procedure TChromiumCore.doOnDialogClosed(const browser: ICefBrowser); diff --git a/source/uCEFChromiumEvents.pas b/source/uCEFChromiumEvents.pas index d43bfec1..91e5fc07 100644 --- a/source/uCEFChromiumEvents.pas +++ b/source/uCEFChromiumEvents.pas @@ -91,6 +91,7 @@ type TOnConsoleMessage = procedure(Sender: TObject; const browser: ICefBrowser; level: TCefLogSeverity; const message, source: ustring; line: Integer; out Result: Boolean) of object; TOnAutoResize = procedure(Sender: TObject; const browser: ICefBrowser; const new_size: PCefSize; out Result: Boolean) of object; TOnLoadingProgressChange = procedure(Sender: TObject; const browser: ICefBrowser; const progress: double) of object; + TOnCursorChange = procedure(Sender: TObject; const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean) of Object; // ICefDownloadHandler TOnBeforeDownload = procedure(Sender: TObject; const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback) of object; @@ -147,7 +148,6 @@ type TOnPopupSize = procedure(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect) of Object; TOnPaint = procedure(Sender: TObject; const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer) of Object; TOnAcceleratedPaint = procedure(Sender: TObject; const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer) of Object; - TOnCursorChange = procedure(Sender: TObject; const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo) of Object; TOnStartDragging = procedure(Sender: TObject; const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer; out Result: Boolean) of Object; TOnUpdateDragCursor = procedure(Sender: TObject; const browser: ICefBrowser; operation: TCefDragOperation) of Object; TOnScrollOffsetChanged = procedure(Sender: TObject; const browser: ICefBrowser; x, y: Double) of Object; diff --git a/source/uCEFDisplayHandler.pas b/source/uCEFDisplayHandler.pas index dabd822d..5a8aa14f 100644 --- a/source/uCEFDisplayHandler.pas +++ b/source/uCEFDisplayHandler.pas @@ -68,6 +68,7 @@ type function OnConsoleMessage(const browser: ICefBrowser; level: TCefLogSeverity; const message_, source: ustring; line: Integer): Boolean; virtual; function OnAutoResize(const browser: ICefBrowser; const new_size: PCefSize): Boolean; virtual; procedure OnLoadingProgressChange(const browser: ICefBrowser; const progress: double); virtual; + procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); virtual; procedure RemoveReferences; virtual; @@ -88,6 +89,7 @@ type function OnConsoleMessage(const browser: ICefBrowser; level: TCefLogSeverity; const message_, source: ustring; line: Integer): Boolean; override; function OnAutoResize(const browser: ICefBrowser; const new_size: PCefSize): Boolean; override; procedure OnLoadingProgressChange(const browser: ICefBrowser; const progress: double); override; + procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); override; procedure RemoveReferences; override; @@ -260,6 +262,28 @@ begin progress); end; +function cef_display_handler_on_cursor_change( self : PCefDisplayHandler; + browser : PCefBrowser; + cursor : TCefCursorHandle; + type_ : TCefCursorType; + const custom_cursor_info : PCefCursorInfo): Integer; stdcall; +var + TempObject : TObject; + TempResult : boolean; +begin + TempResult := False; + TempObject := CefGetObject(self); + + if (TempObject <> nil) and (TempObject is TCefDisplayHandlerOwn) then + TCefDisplayHandlerOwn(TempObject).OnCursorChange(TCefBrowserRef.UnWrap(browser), + cursor, + type_, + custom_cursor_info, + TempResult); + + Result := Ord(TempResult); +end; + constructor TCefDisplayHandlerOwn.Create; begin inherited CreateData(SizeOf(TCefDisplayHandler)); @@ -275,6 +299,7 @@ begin on_console_message := {$IFDEF FPC}@{$ENDIF}cef_display_handler_on_console_message; on_auto_resize := {$IFDEF FPC}@{$ENDIF}cef_display_handler_on_auto_resize; on_loading_progress_change := {$IFDEF FPC}@{$ENDIF}cef_display_handler_on_loading_progress_change; + on_cursor_change := {$IFDEF FPC}@{$ENDIF}cef_display_handler_on_cursor_change; end; end; @@ -298,6 +323,11 @@ begin // end; +procedure TCefDisplayHandlerOwn.OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); +begin + aResult := False; +end; + procedure TCefDisplayHandlerOwn.OnFaviconUrlChange(const browser: ICefBrowser; const iconUrls: TStrings); begin // @@ -353,7 +383,8 @@ procedure TCustomDisplayHandler.OnAddressChange(const browser : ICefBrowser; const frame : ICefFrame; const url : ustring); begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnAddressChange(browser, frame, url); + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnAddressChange(browser, frame, url); end; function TCustomDisplayHandler.OnConsoleMessage(const browser : ICefBrowser; @@ -378,27 +409,42 @@ end; procedure TCustomDisplayHandler.OnLoadingProgressChange(const browser: ICefBrowser; const progress: double); begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnLoadingProgressChange(browser, progress); + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnLoadingProgressChange(browser, progress); +end; + +procedure TCustomDisplayHandler.OnCursorChange(const browser : ICefBrowser; + cursor : TCefCursorHandle; + cursorType : TCefCursorType; + const customCursorInfo : PCefCursorInfo; + var aResult : boolean); +begin + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnCursorChange(browser, cursor, cursorType, customCursorInfo, aResult); end; procedure TCustomDisplayHandler.OnFaviconUrlChange(const browser: ICefBrowser; const iconUrls: TStrings); begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnFaviconUrlChange(browser, iconUrls); + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnFaviconUrlChange(browser, iconUrls); end; procedure TCustomDisplayHandler.OnFullScreenModeChange(const browser: ICefBrowser; fullscreen: Boolean); begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnFullScreenModeChange(browser, fullscreen); + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnFullScreenModeChange(browser, fullscreen); end; procedure TCustomDisplayHandler.OnStatusMessage(const browser: ICefBrowser; const value: ustring); begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnStatusMessage(browser, value); + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnStatusMessage(browser, value); end; procedure TCustomDisplayHandler.OnTitleChange(const browser: ICefBrowser; const title: ustring); begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnTitleChange(browser, title); + if (FEvents <> nil) then + IChromiumEvents(FEvents).doOnTitleChange(browser, title); end; function TCustomDisplayHandler.OnTooltip(const browser: ICefBrowser; var text: ustring): Boolean; diff --git a/source/uCEFInterfaces.pas b/source/uCEFInterfaces.pas index 88ceaa1d..576a1195 100644 --- a/source/uCEFInterfaces.pas +++ b/source/uCEFInterfaces.pas @@ -205,10 +205,12 @@ type TOnUncaughtExceptionEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context; const exception: ICefV8Exception; const stackTrace: ICefV8StackTrace) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; TOnFocusedNodeChangedEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; const frame: ICefFrame; const node: ICefDomNode) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; TOnProcessMessageReceivedEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; const frame: ICefFrame; sourceProcess: TCefProcessId; const message: ICefProcessMessage; var aHandled : boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF LCL} of object {$ENDIF} {$ENDIF}; + TOnGetCookieableSchemesEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(var schemes: TStringList; var include_defaults : boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF LCL} of object {$ENDIF} {$ENDIF}; TOnContextInitializedEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure() {$IFNDEF DELPHI12_UP}{$IFNDEF FPC} of object{$ENDIF}{$ENDIF}; TOnBeforeChildProcessLaunchEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const commandLine: ICefCommandLine) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; TOnRenderProcessThreadCreatedEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const extraInfo: ICefListValue) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; TOnScheduleMessagePumpWorkEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const delayMs: Int64) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC} of object{$ENDIF}{$ENDIF}; + TOnGetDefaultClientEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(var aClient : ICefClient) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC} of object{$ENDIF}{$ENDIF}; TOnGetDataResourceEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(resourceId: Integer; out data: Pointer; out dataSize: NativeUInt; var aResult : Boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; TOnGetLocalizedStringEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(stringId: Integer; out stringVal: ustring; var aResult : Boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; TOnGetDataResourceForScaleEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(resourceId: Integer; scaleFactor: TCefScaleFactor; out data: Pointer; out dataSize: NativeUInt; var aResult : Boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF}; @@ -343,6 +345,7 @@ type function doOnConsoleMessage(const browser: ICefBrowser; level: TCefLogSeverity; const message, source: ustring; line: Integer): Boolean; function doOnAutoResize(const browser: ICefBrowser; const new_size: PCefSize): Boolean; procedure doOnLoadingProgressChange(const browser: ICefBrowser; const progress: double); + procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); // ICefDownloadHandler procedure doOnBeforeDownload(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback); @@ -399,7 +402,6 @@ type procedure doOnPopupSize(const browser: ICefBrowser; const rect: PCefRect); procedure doOnPaint(const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); procedure doOnAcceleratedPaint(const browser: ICefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); - procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); function doOnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); procedure doOnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); @@ -597,8 +599,6 @@ type function AddDevToolsMessageObserver(const observer: ICefDevToolsMessageObserver): ICefRegistration; procedure GetNavigationEntries(const visitor: ICefNavigationEntryVisitor; currentOnly: Boolean); procedure GetNavigationEntriesProc(const proc: TCefNavigationEntryVisitorProc; currentOnly: Boolean); - procedure SetMouseCursorChangeDisabled(disabled: Boolean); - function IsMouseCursorChangeDisabled: Boolean; procedure ReplaceMisspelling(const word: ustring); procedure AddWordToDictionary(const word: ustring); function IsWindowRenderingDisabled: Boolean; @@ -1430,10 +1430,12 @@ type // /include/capi/cef_browser_process_handler_capi.h (cef_browser_process_handler_t) ICefBrowserProcessHandler = interface(ICefBaseRefCounted) ['{27291B7A-C0AE-4EE0-9115-15C810E22F6C}'] + procedure GetCookieableSchemes(var schemes: TStringList; var include_defaults : boolean); procedure OnContextInitialized; procedure OnBeforeChildProcessLaunch(const commandLine: ICefCommandLine); procedure GetPrintHandler(var aHandler : ICefPrintHandler); procedure OnScheduleMessagePumpWork(const delayMs: Int64); + procedure GetDefaultClient(var aClient : ICefClient); procedure RemoveReferences; // custom procedure to clear all references end; @@ -1954,6 +1956,7 @@ type function OnConsoleMessage(const browser: ICefBrowser; level: TCefLogSeverity; const message_, source: ustring; line: Integer): Boolean; function OnAutoResize(const browser: ICefBrowser; const new_size: PCefSize): Boolean; procedure OnLoadingProgressChange(const browser: ICefBrowser; const progress: double); + procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo; var aResult : boolean); procedure RemoveReferences; // custom procedure to clear all references end; @@ -2054,7 +2057,6 @@ type procedure OnPopupSize(const browser: ICefBrowser; const rect: PCefRect); procedure OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); procedure OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); - procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); function OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); procedure OnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); diff --git a/source/uCEFJson.pas b/source/uCEFJson.pas index 518e0e88..17556b72 100644 --- a/source/uCEFJson.pas +++ b/source/uCEFJson.pas @@ -70,7 +70,7 @@ type class function Parse(const jsonString: ustring; options: TCefJsonParserOptions = JSON_PARSER_RFC): ICefValue; overload; class function Parse(const json: Pointer; json_size: NativeUInt; options: TCefJsonParserOptions = JSON_PARSER_RFC): ICefValue; overload; - class function ParseAndReturnError(const jsonString: ustring; options: TCefJsonParserOptions; out errorCodeOut: TCefJsonParserError; out errorMsgOut: ustring): ICefValue; + class function ParseAndReturnError(const jsonString: ustring; options: TCefJsonParserOptions; out errorMsgOut: ustring): ICefValue; class function Write(const node: ICefValue; options: TCefJsonWriterOptions = JSON_WRITER_DEFAULT): ustring; overload; class function Write(const node: ICefDictionaryValue; options: TCefJsonWriterOptions = JSON_WRITER_DEFAULT): ustring; overload; class function Write(const node: ICefValue; var aRsltStrings: TStringList): boolean; overload; @@ -226,7 +226,6 @@ end; class function TCEFJson.ParseAndReturnError(const jsonString : ustring; options : TCefJsonParserOptions; - out errorCodeOut : TCefJsonParserError; out errorMsgOut : ustring): ICefValue; var TempJSON, TempError : TCefString; @@ -235,12 +234,11 @@ begin begin CefStringInitialize(@TempError); TempJSON := CefString(jsonString); - Result := TCefValueRef.UnWrap(cef_parse_jsonand_return_error(@TempJSON, options, @errorCodeOut, @TempError)); + Result := TCefValueRef.UnWrap(cef_parse_jsonand_return_error(@TempJSON, options, @TempError)); errorMsgOut := CefStringClearAndGet(@TempError); end else begin - errorCodeOut := JSON_NO_ERROR; Result := nil; errorMsgOut := ''; end; diff --git a/source/uCEFLibFunctions.pas b/source/uCEFLibFunctions.pas index a4674157..2623a810 100644 --- a/source/uCEFLibFunctions.pas +++ b/source/uCEFLibFunctions.pas @@ -121,7 +121,7 @@ var cef_uridecode : function(const text: PCefString; convert_to_utf8: Integer; unescape_rule: TCefUriUnescapeRule): PCefStringUserFree; cdecl; cef_parse_json : function(const json_string: PCefString; options: TCefJsonParserOptions): PCefValue; cdecl; cef_parse_json_buffer : function(const json: Pointer; json_size: NativeUInt; options: TCefJsonParserOptions): PCefValue; cdecl; - cef_parse_jsonand_return_error : function(const json_string: PCefString; options: TCefJsonParserOptions; error_code_out: PCefJsonParserError; error_msg_out: PCefString): PCefValue; cdecl; + cef_parse_jsonand_return_error : function(const json_string: PCefString; options: TCefJsonParserOptions; error_msg_out: PCefString): PCefValue; cdecl; cef_write_json : function(node: PCefValue; options: TCefJsonWriterOptions): PCefStringUserFree; cdecl; // /include/capi/cef_path_util_capi.h diff --git a/source/uCEFRenderHandler.pas b/source/uCEFRenderHandler.pas index 3ec04363..5ddfcf88 100644 --- a/source/uCEFRenderHandler.pas +++ b/source/uCEFRenderHandler.pas @@ -63,7 +63,6 @@ type procedure OnPopupSize(const browser: ICefBrowser; const rect: PCefRect); virtual; procedure OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); virtual; procedure OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); virtual; - procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); virtual; function OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; virtual; procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual; procedure OnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); virtual; @@ -89,7 +88,6 @@ type procedure OnPopupSize(const browser: ICefBrowser; const rect: PCefRect); override; procedure OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); override; procedure OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); override; - procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); override; function GetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean; override; function OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; override; procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); override; @@ -264,23 +262,6 @@ begin shared_handle); end; -procedure cef_render_handler_on_cursor_change( self : PCefRenderHandler; - browser : PCefBrowser; - cursor : TCefCursorHandle; - type_ : TCefCursorType; - const custom_cursor_info : PCefCursorInfo); stdcall; -var - TempObject : TObject; -begin - TempObject := CefGetObject(self); - - if (TempObject <> nil) and (TempObject is TCefRenderHandlerOwn) then - TCefRenderHandlerOwn(TempObject).OnCursorChange(TCefBrowserRef.UnWrap(browser), - cursor, - type_, - custom_cursor_info); -end; - function cef_render_handler_start_dragging(self : PCefRenderHandler; browser : PCefBrowser; drag_data : PCefDragData; @@ -388,7 +369,6 @@ begin on_popup_size := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_popup_size; on_paint := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_paint; on_accelerated_paint := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_accelerated_paint; - on_cursor_change := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_cursor_change; start_dragging := {$IFDEF FPC}@{$ENDIF}cef_render_handler_start_dragging; update_drag_cursor := {$IFDEF FPC}@{$ENDIF}cef_render_handler_update_drag_cursor; on_scroll_offset_changed := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_scroll_offset_changed; @@ -423,11 +403,6 @@ begin // end; -procedure TCefRenderHandlerOwn.OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); -begin - // -end; - procedure TCefRenderHandlerOwn.OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); begin // @@ -547,14 +522,6 @@ begin inherited GetViewRect(browser, rect); end; -procedure TCustomRenderHandler.OnCursorChange(const browser : ICefBrowser; - cursor : TCefCursorHandle; - cursorType : TCefCursorType; - const customCursorInfo : PCefCursorInfo); -begin - if (FEvents <> nil) then IChromiumEvents(FEvents).doOnCursorChange(browser, cursor, cursorType, customCursorInfo); -end; - procedure TCustomRenderHandler.OnPaint(const browser : ICefBrowser; kind : TCefPaintElementType; dirtyRectsCount : NativeUInt; diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas index ec6a9b88..656b7582 100644 --- a/source/uCEFTypes.pas +++ b/source/uCEFTypes.pas @@ -192,7 +192,6 @@ type PCefPrintDialogCallback = ^TCefPrintDialogCallback; PCefPrintJobCallback = ^TCefPrintJobCallback; PCefUrlParts = ^TCefUrlParts; - PCefJsonParserError = ^TCefJsonParserError; PCefStreamReader = ^TCefStreamReader; PCefReadHandler = ^TCefReadHandler; PCefWriteHandler = ^TCefWriteHandler; @@ -542,20 +541,6 @@ type right : Integer; end; - // /include/internal/cef_types.h (cef_json_parser_error_t) - TCefJsonParserError = ( - JSON_NO_ERROR = 0, - JSON_INVALID_ESCAPE, - JSON_SYNTAX_ERROR, - JSON_UNEXPECTED_TOKEN, - JSON_TRAILING_COMMA, - JSON_TOO_MUCH_NESTING, - JSON_UNEXPECTED_DATA_AFTER_ROOT, - JSON_UNSUPPORTED_ENCODING, - JSON_UNQUOTED_DICTIONARY_KEY, - JSON_PARSE_ERROR_COUNT - ); - // /include/internal/cef_types.h (cef_state_t) TCefState = ( STATE_DEFAULT = 0, @@ -1550,6 +1535,7 @@ type on_console_message : function(self: PCefDisplayHandler; browser: PCefBrowser; level: TCefLogSeverity; const message_, source: PCefString; line: Integer): Integer; stdcall; on_auto_resize : function(self: PCefDisplayHandler; browser: PCefBrowser; const new_size: PCefSize): Integer; stdcall; on_loading_progress_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; progress: double); stdcall; + on_cursor_change : function(self: PCefDisplayHandler; browser: PCefBrowser; cursor: TCefCursorHandle; type_: TCefCursorType; const custom_cursor_info: PCefCursorInfo): Integer; stdcall; end; // /include/capi/cef_download_handler_capi.h (cef_download_handler_t) @@ -1752,7 +1738,6 @@ type on_popup_size : procedure(self: PCefRenderHandler; browser: PCefBrowser; const rect: PCefRect); stdcall; on_paint : procedure(self: PCefRenderHandler; browser: PCefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); stdcall; on_accelerated_paint : procedure(self: PCefRenderHandler; browser: PCefBrowser; type_: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); stdcall; - on_cursor_change : procedure(self: PCefRenderHandler; browser: PCefBrowser; cursor: TCefCursorHandle; type_: TCefCursorType; const custom_cursor_info: PCefCursorInfo); stdcall; start_dragging : function(self: PCefRenderHandler; browser: PCefBrowser; drag_data: PCefDragData; allowed_ops: TCefDragOperations; x, y: Integer): Integer; stdcall; update_drag_cursor : procedure(self: PCefRenderHandler; browser: PCefBrowser; operation: TCefDragOperation); stdcall; on_scroll_offset_changed : procedure(self: PCefRenderHandler; browser: PCefBrowser; x, y: Double); stdcall; @@ -2907,8 +2892,6 @@ type execute_dev_tools_method : function(self: PCefBrowserHost; message_id: integer; const method: PCefString; params: PCefDictionaryValue): Integer; stdcall; add_dev_tools_message_observer : function(self: PCefBrowserHost; observer: PCefDevToolsMessageObserver): PCefRegistration; stdcall; get_navigation_entries : procedure(self: PCefBrowserHost; visitor: PCefNavigationEntryVisitor; current_only: Integer); stdcall; - set_mouse_cursor_change_disabled : procedure(self: PCefBrowserHost; disabled: Integer); stdcall; - is_mouse_cursor_change_disabled : function(self: PCefBrowserHost): Integer; stdcall; replace_misspelling : procedure(self: PCefBrowserHost; const word: PCefString); stdcall; add_word_to_dictionary : procedure(self: PCefBrowserHost; const word: PCefString); stdcall; is_window_rendering_disabled : function(self: PCefBrowserHost): Integer; stdcall; @@ -2982,10 +2965,12 @@ type // /include/capi/cef_browser_process_handler_capi.h (cef_browser_process_handler_t) TCefBrowserProcessHandler = record base : TCefBaseRefCounted; + get_cookieable_schemes : procedure(self: PCefBrowserProcessHandler; schemes: TCefStringList; include_defaults: PInteger); stdcall; on_context_initialized : procedure(self: PCefBrowserProcessHandler); stdcall; on_before_child_process_launch : procedure(self: PCefBrowserProcessHandler; command_line: PCefCommandLine); stdcall; get_print_handler : function(self: PCefBrowserProcessHandler): PCefPrintHandler; stdcall; on_schedule_message_pump_work : procedure(self: PCefBrowserProcessHandler; delay_ms: Int64); stdcall; + get_default_client : function(self: PCefBrowserProcessHandler): PCefClient; stdcall; end; // /include/capi/cef_app_capi.h (cef_app_t) diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index 5bc357f5..56d8de69 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,9 +2,9 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 201, + "InternalVersion" : 202, "Name" : "cef4delphi_lazarus.lpk", - "Version" : "86.0.24.0" + "Version" : "87.1.6.0" } ], "UpdatePackageData" : {