mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-03-04 10:38:11 +02:00
Update to CEF 3.3359.1768.g8e7c5d6
This commit is contained in:
parent
1fa94557f3
commit
cf784aba5f
@ -263,6 +263,7 @@ object MiniBrowserFrm: TMiniBrowserFrm
|
||||
OnTitleChange = Chromium1TitleChange
|
||||
OnFullScreenModeChange = Chromium1FullScreenModeChange
|
||||
OnStatusMessage = Chromium1StatusMessage
|
||||
OnLoadingProgressChange = Chromium1LoadingProgressChange
|
||||
OnBeforeDownload = Chromium1BeforeDownload
|
||||
OnDownloadUpdated = Chromium1DownloadUpdated
|
||||
OnAfterCreated = Chromium1AfterCreated
|
||||
|
@ -191,6 +191,8 @@ type
|
||||
procedure Chromium1BeforeClose(Sender: TObject;
|
||||
const browser: ICefBrowser);
|
||||
procedure Chromium1RenderCompMsg(var aMessage : TMessage; var aHandled: Boolean);
|
||||
procedure Chromium1LoadingProgressChange(Sender: TObject;
|
||||
const browser: ICefBrowser; const progress: Double);
|
||||
|
||||
protected
|
||||
FResponse : TStringList;
|
||||
@ -594,6 +596,12 @@ begin
|
||||
if (TempKeyMsg.CharCode = VK_F12) then aHandled := True;
|
||||
end;
|
||||
|
||||
procedure TMiniBrowserFrm.Chromium1LoadingProgressChange(Sender: TObject;
|
||||
const browser: ICefBrowser; const progress: Double);
|
||||
begin
|
||||
StatusBar1.Panels[0].Text := 'Loading... ' + FloatToStrF(progress * 100, ffFixed, 3, 0) + '%';
|
||||
end;
|
||||
|
||||
procedure TMiniBrowserFrm.Chromium1LoadingStateChange(Sender: TObject;
|
||||
const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
|
||||
begin
|
||||
|
@ -45,10 +45,10 @@ uses
|
||||
{$IFDEF DELPHI16_UP}
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
|
||||
System.SyncObjs, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
|
||||
Vcl.ExtCtrls, Vcl.AppEvnts,
|
||||
Vcl.ExtCtrls,
|
||||
{$ELSE}
|
||||
Windows, Messages, SysUtils, Variants, Classes, SyncObjs,
|
||||
Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, AppEvnts,
|
||||
Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
|
||||
{$ENDIF}
|
||||
uCEFChromium, uCEFTypes, uCEFInterfaces, uCEFConstants, uBufferPanel,
|
||||
uCEFWindowParent;
|
||||
|
@ -18,7 +18,8 @@ uses
|
||||
{$ENDIF}
|
||||
|
||||
begin
|
||||
GlobalCEFApp := TCefApplication.Create;
|
||||
GlobalCEFApp := TCefApplication.Create;
|
||||
GlobalCEFApp.MustFreeLibrary := False;
|
||||
|
||||
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.
|
||||
// If you don't set a cache directory the browser will use in-memory cache.
|
||||
@ -41,6 +42,8 @@ begin
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TSimpleFMXBrowserFrm, SimpleFMXBrowserFrm);
|
||||
Application.Run;
|
||||
|
||||
SimpleFMXBrowserFrm.Free;
|
||||
end;
|
||||
|
||||
GlobalCEFApp.Free;
|
||||
|
@ -1,7 +1,7 @@
|
||||
object SimpleFMXBrowserFrm: TSimpleFMXBrowserFrm
|
||||
Left = 0
|
||||
Top = 0
|
||||
Caption = 'Initializing, Please wait...'
|
||||
Caption = 'Initializing browser. Please wait...'
|
||||
ClientHeight = 600
|
||||
ClientWidth = 917
|
||||
Position = ScreenCenter
|
||||
|
@ -298,7 +298,7 @@ end;
|
||||
|
||||
procedure TSimpleFMXBrowserFrm.DoDestroyParent;
|
||||
begin
|
||||
if (FMXWindowParent <> nil) then FMXWindowParent.Free;
|
||||
if (FMXWindowParent <> nil) then FreeAndNil(FMXWindowParent);
|
||||
end;
|
||||
|
||||
procedure TSimpleFMXBrowserFrm.LoadURL;
|
||||
|
@ -162,7 +162,8 @@ contains
|
||||
uCEFServerHandler in '..\source\uCEFServerHandler.pas',
|
||||
uCEFServerEvents in '..\source\uCEFServerEvents.pas',
|
||||
uCEFServerComponent in '..\source\uCEFServerComponent.pas',
|
||||
uCEFStringList in '..\source\uCEFStringList.pas';
|
||||
uCEFStringList in '..\source\uCEFStringList.pas',
|
||||
uCEFv8ArrayBufferReleaseCallback in '..\source\uCEFv8ArrayBufferReleaseCallback.pas';
|
||||
|
||||
end.
|
||||
|
||||
|
@ -253,6 +253,8 @@
|
||||
<DCCReference Include="..\source\uCEFServerHandler.pas"/>
|
||||
<DCCReference Include="..\source\uCEFServerEvents.pas"/>
|
||||
<DCCReference Include="..\source\uCEFServerComponent.pas"/>
|
||||
<DCCReference Include="..\source\uCEFStringList.pas"/>
|
||||
<DCCReference Include="..\source\uCEFv8ArrayBufferReleaseCallback.pas"/>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
|
@ -159,6 +159,7 @@ contains
|
||||
uCEFServerHandler in '..\source\uCEFServerHandler.pas',
|
||||
uCEFServerEvents in '..\source\uCEFServerEvents.pas',
|
||||
uCEFServerComponent in '..\source\uCEFServerComponent.pas',
|
||||
uCEFStringList in '..\source\uCEFStringList.pas';
|
||||
uCEFStringList in '..\source\uCEFStringList.pas',
|
||||
uCEFv8ArrayBufferReleaseCallback in '..\source\uCEFv8ArrayBufferReleaseCallback.pas';
|
||||
|
||||
end.
|
||||
|
@ -166,7 +166,8 @@ contains
|
||||
uFMXChromium in '..\source\uFMXChromium.pas',
|
||||
uFMXWorkScheduler in '..\source\uFMXWorkScheduler.pas',
|
||||
uCEFStringList in '..\source\uCEFStringList.pas',
|
||||
uFMXWindowParent in '..\source\uFMXWindowParent.pas';
|
||||
uFMXWindowParent in '..\source\uFMXWindowParent.pas',
|
||||
uCEFv8ArrayBufferReleaseCallback in '..\source\uCEFv8ArrayBufferReleaseCallback.pas';
|
||||
|
||||
end.
|
||||
|
||||
|
@ -278,6 +278,7 @@
|
||||
<DCCReference Include="..\source\uFMXWorkScheduler.pas"/>
|
||||
<DCCReference Include="..\source\uCEFStringList.pas"/>
|
||||
<DCCReference Include="..\source\uFMXWindowParent.pas"/>
|
||||
<DCCReference Include="..\source\uCEFv8ArrayBufferReleaseCallback.pas"/>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
|
Binary file not shown.
@ -56,14 +56,14 @@ uses
|
||||
|
||||
const
|
||||
CEF_SUPPORTED_VERSION_MAJOR = 3;
|
||||
CEF_SUPPORTED_VERSION_MINOR = 3325;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 1758;
|
||||
CEF_SUPPORTED_VERSION_MINOR = 3359;
|
||||
CEF_SUPPORTED_VERSION_RELEASE = 1768;
|
||||
CEF_SUPPORTED_VERSION_BUILD = 0;
|
||||
|
||||
CEF_CHROMEELF_VERSION_MAJOR = 65;
|
||||
CEF_CHROMEELF_VERSION_MAJOR = 66;
|
||||
CEF_CHROMEELF_VERSION_MINOR = 0;
|
||||
CEF_CHROMEELF_VERSION_RELEASE = 3325;
|
||||
CEF_CHROMEELF_VERSION_BUILD = 181;
|
||||
CEF_CHROMEELF_VERSION_RELEASE = 3359;
|
||||
CEF_CHROMEELF_VERSION_BUILD = 117;
|
||||
|
||||
LIBCEF_DLL = 'libcef.dll';
|
||||
CHROMEELF_DLL = 'chrome_elf.dll';
|
||||
@ -1787,6 +1787,7 @@ begin
|
||||
cef_v8value_create_string := GetProcAddress(FLibHandle, 'cef_v8value_create_string');
|
||||
cef_v8value_create_object := GetProcAddress(FLibHandle, 'cef_v8value_create_object');
|
||||
cef_v8value_create_array := GetProcAddress(FLibHandle, 'cef_v8value_create_array');
|
||||
cef_v8value_create_array_buffer := GetProcAddress(FLibHandle, 'cef_v8value_create_array_buffer');
|
||||
cef_v8value_create_function := GetProcAddress(FLibHandle, 'cef_v8value_create_function');
|
||||
cef_v8stack_trace_get_current := GetProcAddress(FLibHandle, 'cef_v8stack_trace_get_current');
|
||||
cef_register_extension := GetProcAddress(FLibHandle, 'cef_register_extension');
|
||||
@ -1804,6 +1805,7 @@ begin
|
||||
assigned(cef_v8value_create_string) and
|
||||
assigned(cef_v8value_create_object) and
|
||||
assigned(cef_v8value_create_array) and
|
||||
assigned(cef_v8value_create_array_buffer) and
|
||||
assigned(cef_v8value_create_function) and
|
||||
assigned(cef_v8stack_trace_get_current) and
|
||||
assigned(cef_register_extension);
|
||||
|
@ -149,6 +149,7 @@ type
|
||||
FOnStatusMessage : TOnStatusMessage;
|
||||
FOnConsoleMessage : TOnConsoleMessage;
|
||||
FOnAutoResize : TOnAutoResize;
|
||||
FOnLoadingProgressChange : TOnLoadingProgressChange;
|
||||
|
||||
// ICefDownloadHandler
|
||||
FOnBeforeDownload : TOnBeforeDownload;
|
||||
@ -203,6 +204,7 @@ type
|
||||
FOnUpdateDragCursor : TOnUpdateDragCursor;
|
||||
FOnScrollOffsetChanged : TOnScrollOffsetChanged;
|
||||
FOnIMECompositionRangeChanged : TOnIMECompositionRangeChanged;
|
||||
FOnTextSelectionChanged : TOnTextSelectionChanged;
|
||||
|
||||
// ICefDragHandler
|
||||
FOnDragEnter : TOnDragEnter;
|
||||
@ -365,6 +367,7 @@ type
|
||||
procedure doOnStatusMessage(const browser: ICefBrowser; const value: ustring); virtual;
|
||||
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;
|
||||
|
||||
// ICefDownloadHandler
|
||||
procedure doOnBeforeDownload(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback); virtual;
|
||||
@ -419,6 +422,7 @@ type
|
||||
procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual;
|
||||
procedure doOnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); virtual;
|
||||
procedure doOnIMECompositionRangeChanged(const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); virtual;
|
||||
procedure doOnTextSelectionChanged(const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange); virtual;
|
||||
|
||||
// ICefDragHandler
|
||||
function doOnDragEnter(const browser: ICefBrowser; const dragData: ICefDragData; mask: TCefDragOperations): Boolean; virtual;
|
||||
@ -636,6 +640,7 @@ type
|
||||
property OnStatusMessage : TOnStatusMessage read FOnStatusMessage write FOnStatusMessage;
|
||||
property OnConsoleMessage : TOnConsoleMessage read FOnConsoleMessage write FOnConsoleMessage;
|
||||
property OnAutoResize : TOnAutoResize read FOnAutoResize write FOnAutoResize;
|
||||
property OnLoadingProgressChange : TOnLoadingProgressChange read FOnLoadingProgressChange write FOnLoadingProgressChange;
|
||||
|
||||
// ICefDownloadHandler
|
||||
property OnBeforeDownload : TOnBeforeDownload read FOnBeforeDownload write FOnBeforeDownload;
|
||||
@ -690,6 +695,7 @@ type
|
||||
property OnUpdateDragCursor : TOnUpdateDragCursor read FOnUpdateDragCursor write FOnUpdateDragCursor;
|
||||
property OnScrollOffsetChanged : TOnScrollOffsetChanged read FOnScrollOffsetChanged write FOnScrollOffsetChanged;
|
||||
property OnIMECompositionRangeChanged : TOnIMECompositionRangeChanged read FOnIMECompositionRangeChanged write FOnIMECompositionRangeChanged;
|
||||
property OnTextSelectionChanged : TOnTextSelectionChanged read FOnTextSelectionChanged write FOnTextSelectionChanged;
|
||||
|
||||
// ICefDragHandler
|
||||
property OnDragEnter : TOnDragEnter read FOnDragEnter write FOnDragEnter;
|
||||
@ -963,6 +969,7 @@ begin
|
||||
FOnStatusMessage := nil;
|
||||
FOnConsoleMessage := nil;
|
||||
FOnAutoResize := nil;
|
||||
FOnLoadingProgressChange := nil;
|
||||
|
||||
// ICefDownloadHandler
|
||||
FOnBeforeDownload := nil;
|
||||
@ -1017,6 +1024,7 @@ begin
|
||||
FOnUpdateDragCursor := nil;
|
||||
FOnScrollOffsetChanged := nil;
|
||||
FOnIMECompositionRangeChanged := nil;
|
||||
FOnTextSelectionChanged := nil;
|
||||
|
||||
// ICefDragHandler
|
||||
FOnDragEnter := nil;
|
||||
@ -2686,14 +2694,15 @@ end;
|
||||
|
||||
function TChromium.MustCreateDisplayHandler : boolean;
|
||||
begin
|
||||
Result := assigned(FOnAddressChange) or
|
||||
assigned(FOnTitleChange) or
|
||||
assigned(FOnFavIconUrlChange) or
|
||||
assigned(FOnFullScreenModeChange) or
|
||||
assigned(FOnTooltip) or
|
||||
assigned(FOnStatusMessage) or
|
||||
assigned(FOnConsoleMessage) or
|
||||
assigned(FOnAutoResize);
|
||||
Result := assigned(FOnAddressChange) or
|
||||
assigned(FOnTitleChange) or
|
||||
assigned(FOnFavIconUrlChange) or
|
||||
assigned(FOnFullScreenModeChange) or
|
||||
assigned(FOnTooltip) or
|
||||
assigned(FOnStatusMessage) or
|
||||
assigned(FOnConsoleMessage) or
|
||||
assigned(FOnAutoResize) or
|
||||
assigned(FOnLoadingProgressChange);
|
||||
end;
|
||||
|
||||
function TChromium.MustCreateDownloadHandler : boolean;
|
||||
@ -3088,6 +3097,11 @@ begin
|
||||
if Assigned(FOnAutoResize) then FOnAutoResize(Self, browser, new_size, Result);
|
||||
end;
|
||||
|
||||
procedure TChromium.doOnLoadingProgressChange(const browser: ICefBrowser; const progress: double);
|
||||
begin
|
||||
if assigned(FOnLoadingProgressChange) then FOnLoadingProgressChange(self, browser, progress);
|
||||
end;
|
||||
|
||||
function TChromium.doOnContextMenuCommand(const browser : ICefBrowser;
|
||||
const frame : ICefFrame;
|
||||
const params : ICefContextMenuParams;
|
||||
@ -3520,6 +3534,14 @@ begin
|
||||
FOnIMECompositionRangeChanged(self, browser, selected_range, character_boundsCount, character_bounds);
|
||||
end;
|
||||
|
||||
procedure TChromium.doOnTextSelectionChanged(const browser : ICefBrowser;
|
||||
const selected_text : ustring;
|
||||
const selected_range : PCefRange);
|
||||
begin
|
||||
if assigned(FOnTextSelectionChanged) then
|
||||
FOnTextSelectionChanged(self, browser, selected_text, selected_range);
|
||||
end;
|
||||
|
||||
function TChromium.doOnSetFocus(const browser: ICefBrowser; source: TCefFocusSource): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
|
@ -88,6 +88,7 @@ type
|
||||
TOnStatusMessage = procedure(Sender: TObject; const browser: ICefBrowser; const value: ustring) of object;
|
||||
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;
|
||||
|
||||
// ICefDownloadHandler
|
||||
TOnBeforeDownload = procedure(Sender: TObject; const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback) of object;
|
||||
@ -142,6 +143,7 @@ type
|
||||
TOnUpdateDragCursor = procedure(Sender: TObject; const browser: ICefBrowser; operation: TCefDragOperation) of Object;
|
||||
TOnScrollOffsetChanged = procedure(Sender: TObject; const browser: ICefBrowser; x, y: Double) of Object;
|
||||
TOnIMECompositionRangeChanged = procedure(Sender: TObject; const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect) of Object;
|
||||
TOnTextSelectionChanged = procedure(Sender: TObject; const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange) of Object;
|
||||
|
||||
// ICefDragHandler
|
||||
TOnDragEnter = procedure(Sender: TObject; const browser: ICefBrowser; const dragData: ICefDragData; mask: TCefDragOperations; out Result: Boolean) of Object;
|
||||
|
@ -171,6 +171,7 @@ const
|
||||
UR_FLAG_REPORT_UPLOAD_PROGRESS = 1 shl 3;
|
||||
UR_FLAG_NO_DOWNLOAD_DATA = 1 shl 4;
|
||||
UR_FLAG_NO_RETRY_ON_5XX = 1 shl 5;
|
||||
UR_FLAG_STOP_ON_REDIRECT = 1 shl 6;
|
||||
|
||||
// /include/internal/cef_types.h (cef_dom_event_category_t)
|
||||
DOM_EVENT_CATEGORY_UNKNOWN = 0;
|
||||
|
@ -65,6 +65,7 @@ type
|
||||
procedure OnStatusMessage(const browser: ICefBrowser; const value: ustring); virtual;
|
||||
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 RemoveReferences; virtual;
|
||||
|
||||
@ -84,6 +85,7 @@ type
|
||||
procedure OnStatusMessage(const browser: ICefBrowser; const value: ustring); override;
|
||||
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 RemoveReferences; override;
|
||||
|
||||
@ -243,20 +245,34 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure cef_display_handler_on_loading_progress_change(self : PCefDisplayHandler;
|
||||
browser : PCefBrowser;
|
||||
progress : double); stdcall;
|
||||
var
|
||||
TempObject : TObject;
|
||||
begin
|
||||
TempObject := CefGetObject(self);
|
||||
|
||||
if (TempObject <> nil) and (TempObject is TCefDisplayHandlerOwn) then
|
||||
TCefDisplayHandlerOwn(TempObject).OnLoadingProgressChange(TCefBrowserRef.UnWrap(browser),
|
||||
progress);
|
||||
end;
|
||||
|
||||
constructor TCefDisplayHandlerOwn.Create;
|
||||
begin
|
||||
inherited CreateData(SizeOf(TCefDisplayHandler));
|
||||
|
||||
with PCefDisplayHandler(FData)^ do
|
||||
begin
|
||||
on_address_change := cef_display_handler_on_address_change;
|
||||
on_title_change := cef_display_handler_on_title_change;
|
||||
on_favicon_urlchange := cef_display_handler_on_favicon_urlchange;
|
||||
on_fullscreen_mode_change := cef_display_handler_on_fullscreen_mode_change;
|
||||
on_tooltip := cef_display_handler_on_tooltip;
|
||||
on_status_message := cef_display_handler_on_status_message;
|
||||
on_console_message := cef_display_handler_on_console_message;
|
||||
on_auto_resize := cef_display_handler_on_auto_resize;
|
||||
on_address_change := cef_display_handler_on_address_change;
|
||||
on_title_change := cef_display_handler_on_title_change;
|
||||
on_favicon_urlchange := cef_display_handler_on_favicon_urlchange;
|
||||
on_fullscreen_mode_change := cef_display_handler_on_fullscreen_mode_change;
|
||||
on_tooltip := cef_display_handler_on_tooltip;
|
||||
on_status_message := cef_display_handler_on_status_message;
|
||||
on_console_message := cef_display_handler_on_console_message;
|
||||
on_auto_resize := cef_display_handler_on_auto_resize;
|
||||
on_loading_progress_change := cef_display_handler_on_loading_progress_change;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -275,6 +291,11 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TCefDisplayHandlerOwn.OnLoadingProgressChange(const browser: ICefBrowser; const progress: double);
|
||||
begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefDisplayHandlerOwn.OnFaviconUrlChange(const browser: ICefBrowser; const iconUrls: TStrings);
|
||||
begin
|
||||
//
|
||||
@ -353,6 +374,11 @@ begin
|
||||
Result := inherited OnAutoResize(browser, new_size);
|
||||
end;
|
||||
|
||||
procedure TCustomDisplayHandler.OnLoadingProgressChange(const browser: ICefBrowser; const progress: double);
|
||||
begin
|
||||
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnLoadingProgressChange(browser, progress);
|
||||
end;
|
||||
|
||||
procedure TCustomDisplayHandler.OnFaviconUrlChange(const browser: ICefBrowser; const iconUrls: TStrings);
|
||||
begin
|
||||
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnFaviconUrlChange(browser, iconUrls);
|
||||
|
@ -50,11 +50,21 @@ uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
TCefEndTracingCallbackProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const tracingFile: ustring);
|
||||
|
||||
TCefEndTracingCallbackOwn = class(TCefBaseRefCountedOwn, ICefEndTracingCallback)
|
||||
protected
|
||||
procedure OnEndTracingComplete(const tracingFile: ustring); virtual;
|
||||
public
|
||||
constructor Create; virtual;
|
||||
protected
|
||||
procedure OnEndTracingComplete(const tracingFile: ustring); virtual;
|
||||
public
|
||||
constructor Create; virtual;
|
||||
end;
|
||||
|
||||
TCefFastEndTracingCallback = class(TCefEndTracingCallbackOwn)
|
||||
protected
|
||||
FCallback: TCefEndTracingCallbackProc;
|
||||
procedure OnEndTracingComplete(const tracingFile: ustring); override;
|
||||
public
|
||||
constructor Create(const callback: TCefEndTracingCallbackProc); reintroduce;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -62,6 +72,8 @@ implementation
|
||||
uses
|
||||
uCEFMiscFunctions, uCEFLibFunctions;
|
||||
|
||||
// TCefEndTracingCallbackOwn
|
||||
|
||||
procedure cef_end_tracing_callback_on_end_tracing_complete( self : PCefEndTracingCallback;
|
||||
const tracing_file : PCefString); stdcall;
|
||||
var
|
||||
@ -85,4 +97,18 @@ begin
|
||||
//
|
||||
end;
|
||||
|
||||
// TCefFastEndTracingCallback
|
||||
|
||||
constructor TCefFastEndTracingCallback.Create(const callback: TCefEndTracingCallbackProc);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FCallback := callback;
|
||||
end;
|
||||
|
||||
procedure TCefFastEndTracingCallback.OnEndTracingComplete(const tracingFile: ustring);
|
||||
begin
|
||||
FCallback(tracingFile);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -263,6 +263,7 @@ type
|
||||
procedure doOnStatusMessage(const browser: ICefBrowser; const value: ustring);
|
||||
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);
|
||||
|
||||
// ICefDownloadHandler
|
||||
procedure doOnBeforeDownload(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
|
||||
@ -317,6 +318,7 @@ type
|
||||
procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
|
||||
procedure doOnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double);
|
||||
procedure doOnIMECompositionRangeChanged(const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect);
|
||||
procedure doOnTextSelectionChanged(const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange);
|
||||
|
||||
// ICefDragHandler
|
||||
function doOnDragEnter(const browser: ICefBrowser; const dragData: ICefDragData; mask: TCefDragOperations): Boolean;
|
||||
@ -676,11 +678,14 @@ type
|
||||
function GetHeader(const name: ustring): ustring;
|
||||
procedure GetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
procedure SetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
function GetURL: ustring;
|
||||
procedure SetURL(const url: ustring);
|
||||
|
||||
property Status : Integer read GetStatus write SetStatus;
|
||||
property StatusText : ustring read GetStatusText write SetStatusText;
|
||||
property MimeType : ustring read GetMimeType write SetMimeType;
|
||||
property Error : TCefErrorCode read GetError write SetError;
|
||||
property URL : ustring read GetURL write SetURL;
|
||||
end;
|
||||
|
||||
// TCefDownloadItem
|
||||
@ -769,6 +774,13 @@ type
|
||||
property EndColumn : Integer read GetEndColumn;
|
||||
end;
|
||||
|
||||
// TCefv8ArrayBufferReleaseCallback
|
||||
// /include/capi/cef_v8_capi.h (cef_v8array_buffer_release_callback_t)
|
||||
ICefv8ArrayBufferReleaseCallback = interface(ICefBaseRefCounted)
|
||||
['{4EAAB422-D046-43DF-B1F0-5503116A5816}']
|
||||
procedure ReleaseBuffer(buffer : Pointer);
|
||||
end;
|
||||
|
||||
// TCefV8Context
|
||||
// /include/capi/cef_v8_capi.h (cef_v8context_t)
|
||||
ICefv8Context = interface(ICefBaseRefCounted)
|
||||
@ -867,6 +879,7 @@ type
|
||||
function IsString: Boolean;
|
||||
function IsObject: Boolean;
|
||||
function IsArray: Boolean;
|
||||
function IsArrayBuffer: Boolean;
|
||||
function IsFunction: Boolean;
|
||||
function IsSame(const that: ICefv8Value): Boolean;
|
||||
function GetBoolValue: Boolean;
|
||||
@ -896,6 +909,8 @@ type
|
||||
function GetExternallyAllocatedMemory: Integer;
|
||||
function AdjustExternallyAllocatedMemory(changeInBytes: Integer): Integer;
|
||||
function GetArrayLength: Integer;
|
||||
function GetArrayBufferReleaseCallback : ICefv8ArrayBufferReleaseCallback;
|
||||
function NeuterArrayBuffer : boolean;
|
||||
function GetFunctionName: ustring;
|
||||
function GetFunctionHandler: ICefv8Handler;
|
||||
function ExecuteFunction(const obj: ICefv8Value; const arguments: TCefv8ValueArray): ICefv8Value;
|
||||
@ -1587,6 +1602,7 @@ type
|
||||
procedure OnStatusMessage(const browser: ICefBrowser; const value: ustring);
|
||||
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 RemoveReferences; // custom procedure to clear all references
|
||||
end;
|
||||
@ -1678,6 +1694,7 @@ type
|
||||
procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
|
||||
procedure OnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double);
|
||||
procedure OnIMECompositionRangeChanged(const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect);
|
||||
procedure OnTextSelectionChanged(const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange);
|
||||
|
||||
procedure RemoveReferences; // custom procedure to clear all references
|
||||
end;
|
||||
|
@ -198,6 +198,7 @@ var
|
||||
cef_v8value_create_string : function(const value: PCefString): PCefv8Value; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
cef_v8value_create_object : function(accessor: PCefV8Accessor; interceptor: PCefV8Interceptor): PCefv8Value; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
cef_v8value_create_array : function(length: Integer): PCefv8Value; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
cef_v8value_create_array_buffer : function(buffer : Pointer; length: NativeUInt; release_callback : PCefv8ArrayBufferReleaseCallback): PCefv8Value; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
cef_v8value_create_function : function(const name: PCefString; handler: PCefv8Handler): PCefv8Value; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
cef_v8stack_trace_get_current : function(frame_limit: Integer): PCefV8StackTrace; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
cef_register_extension : function(const extension_name, javascript_code: PCefString; handler: PCefv8Handler): Integer; {$IFDEF CPUX64}stdcall{$ELSE}cdecl{$ENDIF};
|
||||
|
@ -65,6 +65,7 @@ type
|
||||
procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual;
|
||||
procedure OnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); virtual;
|
||||
procedure OnIMECompositionRangeChanged(const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); virtual;
|
||||
procedure OnTextSelectionChanged(const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange); virtual;
|
||||
|
||||
procedure RemoveReferences; virtual;
|
||||
|
||||
@ -89,6 +90,7 @@ type
|
||||
procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); override;
|
||||
procedure OnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); override;
|
||||
procedure OnIMECompositionRangeChanged(const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); override;
|
||||
procedure OnTextSelectionChanged(const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange); override;
|
||||
|
||||
procedure RemoveReferences; override;
|
||||
|
||||
@ -315,6 +317,21 @@ begin
|
||||
character_bounds);
|
||||
end;
|
||||
|
||||
procedure cef_render_handler_on_text_selection_changed( self : PCefRenderHandler;
|
||||
browser : PCefBrowser;
|
||||
const selected_text : PCefString;
|
||||
const selected_range : PCefRange); stdcall;
|
||||
var
|
||||
TempObject : TObject;
|
||||
begin
|
||||
TempObject := CefGetObject(self);
|
||||
|
||||
if (TempObject <> nil) and (TempObject is TCefRenderHandlerOwn) then
|
||||
TCefRenderHandlerOwn(TempObject).OnTextSelectionChanged(TCefBrowserRef.UnWrap(browser),
|
||||
CefString(selected_text),
|
||||
selected_range);
|
||||
end;
|
||||
|
||||
constructor TCefRenderHandlerOwn.Create;
|
||||
begin
|
||||
inherited CreateData(SizeOf(TCefRenderHandler));
|
||||
@ -334,6 +351,7 @@ begin
|
||||
update_drag_cursor := cef_render_handler_update_drag_cursor;
|
||||
on_scroll_offset_changed := cef_render_handler_on_scroll_offset_changed;
|
||||
on_ime_composition_range_changed := cef_render_handler_on_ime_composition_range_changed;
|
||||
on_text_selection_changed := cef_render_handler_on_text_selection_changed;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -364,27 +382,27 @@ 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
|
||||
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.OnPopupShow(const browser: ICefBrowser; show: Boolean);
|
||||
begin
|
||||
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.OnPopupSize(const browser: ICefBrowser; const rect: PCefRect);
|
||||
begin
|
||||
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.OnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double);
|
||||
begin
|
||||
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.OnIMECompositionRangeChanged(const browser : ICefBrowser;
|
||||
@ -392,7 +410,14 @@ procedure TCefRenderHandlerOwn.OnIMECompositionRangeChanged(const browser
|
||||
character_boundsCount : NativeUInt;
|
||||
const character_bounds : PCefRect);
|
||||
begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.OnTextSelectionChanged(const browser : ICefBrowser;
|
||||
const selected_text : ustring;
|
||||
const selected_range : PCefRange);
|
||||
begin
|
||||
//
|
||||
end;
|
||||
|
||||
function TCefRenderHandlerOwn.OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean;
|
||||
@ -402,7 +427,7 @@ end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
|
||||
begin
|
||||
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TCefRenderHandlerOwn.RemoveReferences;
|
||||
@ -510,6 +535,13 @@ begin
|
||||
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnIMECompositionRangeChanged(browser, selected_range, character_boundsCount, character_bounds);
|
||||
end;
|
||||
|
||||
procedure TCustomRenderHandler.OnTextSelectionChanged(const browser : ICefBrowser;
|
||||
const selected_text : ustring;
|
||||
const selected_range : PCefRange);
|
||||
begin
|
||||
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnTextSelectionChanged(browser, selected_text, selected_range);
|
||||
end;
|
||||
|
||||
function TCustomRenderHandler.OnStartDragging(const browser : ICefBrowser;
|
||||
const dragData : ICefDragData;
|
||||
allowedOps : TCefDragOperations;
|
||||
|
@ -51,22 +51,25 @@ uses
|
||||
|
||||
type
|
||||
TCefResponseRef = class(TCefBaseRefCountedRef, ICefResponse)
|
||||
protected
|
||||
function IsReadOnly: Boolean;
|
||||
function GetError: TCefErrorCode;
|
||||
procedure SetError(error: TCefErrorCode);
|
||||
function GetStatus: Integer;
|
||||
procedure SetStatus(status: Integer);
|
||||
function GetStatusText: ustring;
|
||||
procedure SetStatusText(const StatusText: ustring);
|
||||
function GetMimeType: ustring;
|
||||
procedure SetMimeType(const mimetype: ustring);
|
||||
function GetHeader(const name: ustring): ustring;
|
||||
procedure GetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
procedure SetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
public
|
||||
class function UnWrap(data: Pointer): ICefResponse;
|
||||
class function New: ICefResponse;
|
||||
protected
|
||||
function IsReadOnly: Boolean;
|
||||
function GetError: TCefErrorCode;
|
||||
procedure SetError(error: TCefErrorCode);
|
||||
function GetStatus: Integer;
|
||||
procedure SetStatus(status: Integer);
|
||||
function GetStatusText: ustring;
|
||||
procedure SetStatusText(const StatusText: ustring);
|
||||
function GetMimeType: ustring;
|
||||
procedure SetMimeType(const mimetype: ustring);
|
||||
function GetHeader(const name: ustring): ustring;
|
||||
procedure GetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
procedure SetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
function GetURL: ustring;
|
||||
procedure SetURL(const url: ustring);
|
||||
|
||||
public
|
||||
class function UnWrap(data: Pointer): ICefResponse;
|
||||
class function New: ICefResponse;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -87,10 +90,10 @@ end;
|
||||
|
||||
function TCefResponseRef.GetHeader(const name: ustring): ustring;
|
||||
var
|
||||
n: TCefString;
|
||||
TempName : TCefString;
|
||||
begin
|
||||
n := CefString(name);
|
||||
Result := CefStringFreeAndGet(PCefResponse(FData)^.get_header(PCefResponse(FData), @n));
|
||||
TempName := CefString(name);
|
||||
Result := CefStringFreeAndGet(PCefResponse(FData)^.get_header(PCefResponse(FData), @TempName));
|
||||
end;
|
||||
|
||||
procedure TCefResponseRef.GetHeaderMap(const headerMap: ICefStringMultimap);
|
||||
@ -130,10 +133,10 @@ end;
|
||||
|
||||
procedure TCefResponseRef.SetMimeType(const mimetype: ustring);
|
||||
var
|
||||
txt: TCefString;
|
||||
TempType : TCefString;
|
||||
begin
|
||||
txt := CefString(mimetype);
|
||||
PCefResponse(FData)^.set_mime_type(PCefResponse(FData), @txt);
|
||||
TempType := CefString(mimetype);
|
||||
PCefResponse(FData)^.set_mime_type(PCefResponse(FData), @TempType);
|
||||
end;
|
||||
|
||||
procedure TCefResponseRef.SetStatus(status: Integer);
|
||||
@ -143,16 +146,30 @@ end;
|
||||
|
||||
procedure TCefResponseRef.SetStatusText(const StatusText: ustring);
|
||||
var
|
||||
txt: TCefString;
|
||||
TempStatus : TCefString;
|
||||
begin
|
||||
txt := CefString(StatusText);
|
||||
PCefResponse(FData)^.set_status_text(PCefResponse(FData), @txt);
|
||||
TempStatus := CefString(StatusText);
|
||||
PCefResponse(FData)^.set_status_text(PCefResponse(FData), @TempStatus);
|
||||
end;
|
||||
|
||||
function TCefResponseRef.GetURL : ustring;
|
||||
begin
|
||||
Result := CefStringFreeAndGet(PCefResponse(FData)^.get_url(PCefResponse(FData)));
|
||||
end;
|
||||
|
||||
procedure TCefResponseRef.SetURL(const url : ustring);
|
||||
var
|
||||
TempURL : TCefString;
|
||||
begin
|
||||
TempURL := CefString(url);
|
||||
PCefResponse(FData)^.set_url(PCefResponse(FData), @TempURL);
|
||||
end;
|
||||
|
||||
class function TCefResponseRef.UnWrap(data: Pointer): ICefResponse;
|
||||
begin
|
||||
if data <> nil then
|
||||
Result := Create(data) as ICefResponse else
|
||||
if (data <> nil) then
|
||||
Result := Create(data) as ICefResponse
|
||||
else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
|
@ -96,6 +96,7 @@ type
|
||||
PCefv8Value = ^TCefv8Value;
|
||||
PCefTime = ^TCefTime;
|
||||
PCefV8Exception = ^TCefV8Exception;
|
||||
PCefv8ArrayBufferReleaseCallback = ^TCefv8ArrayBufferReleaseCallback;
|
||||
PCefv8Handler = ^TCefv8Handler;
|
||||
PPCefV8Value = ^PCefV8ValueArray;
|
||||
PCefDomVisitor = ^TCefDomVisitor;
|
||||
@ -634,11 +635,9 @@ type
|
||||
// /include/internal/cef_types.h (cef_thread_id_t)
|
||||
TCefThreadId = (
|
||||
TID_UI,
|
||||
TID_DB,
|
||||
TID_FILE,
|
||||
TID_FILE_BACKGROUND, // TID_FILE = TID_FILE_BACKGROUND
|
||||
TID_FILE_USER_VISIBLE,
|
||||
TID_FILE_USER_BLOCKING,
|
||||
TID_PROCESS_LAUNCHER,
|
||||
TID_CACHE,
|
||||
TID_IO,
|
||||
TID_RENDERER
|
||||
);
|
||||
@ -1209,15 +1208,16 @@ type
|
||||
|
||||
// /include/capi/cef_display_handler_capi.h (cef_display_handler_t)
|
||||
TCefDisplayHandler = record
|
||||
base : TCefBaseRefCounted;
|
||||
on_address_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; frame: PCefFrame; const url: PCefString); stdcall;
|
||||
on_title_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; const title: PCefString); stdcall;
|
||||
on_favicon_urlchange : procedure(self: PCefDisplayHandler; browser: PCefBrowser; icon_urls: TCefStringList); stdcall;
|
||||
on_fullscreen_mode_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; fullscreen: Integer); stdcall;
|
||||
on_tooltip : function(self: PCefDisplayHandler; browser: PCefBrowser; text: PCefString): Integer; stdcall;
|
||||
on_status_message : procedure(self: PCefDisplayHandler; browser: PCefBrowser; const value: PCefString); stdcall;
|
||||
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;
|
||||
base : TCefBaseRefCounted;
|
||||
on_address_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; frame: PCefFrame; const url: PCefString); stdcall;
|
||||
on_title_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; const title: PCefString); stdcall;
|
||||
on_favicon_urlchange : procedure(self: PCefDisplayHandler; browser: PCefBrowser; icon_urls: TCefStringList); stdcall;
|
||||
on_fullscreen_mode_change : procedure(self: PCefDisplayHandler; browser: PCefBrowser; fullscreen: Integer); stdcall;
|
||||
on_tooltip : function(self: PCefDisplayHandler; browser: PCefBrowser; text: PCefString): Integer; stdcall;
|
||||
on_status_message : procedure(self: PCefDisplayHandler; browser: PCefBrowser; const value: PCefString); stdcall;
|
||||
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;
|
||||
end;
|
||||
|
||||
// /include/capi/cef_download_handler_capi.h (cef_download_handler_t)
|
||||
@ -1338,6 +1338,7 @@ type
|
||||
update_drag_cursor : procedure(self: PCefRenderHandler; browser: PCefBrowser; operation: TCefDragOperation); stdcall;
|
||||
on_scroll_offset_changed : procedure(self: PCefRenderHandler; browser: PCefBrowser; x, y: Double); stdcall;
|
||||
on_ime_composition_range_changed : procedure(self: PCefRenderHandler; browser: PCefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); stdcall;
|
||||
on_text_selection_changed : procedure(self: PCefRenderHandler; browser: PCefBrowser; const selected_text: PCefString; const selected_range: PCefRange); stdcall;
|
||||
end;
|
||||
|
||||
// /include/capi/cef_v8_capi.h (cef_v8stack_trace_t)
|
||||
@ -1619,6 +1620,8 @@ type
|
||||
get_header : function(self: PCefResponse; const name: PCefString): PCefStringUserFree; stdcall;
|
||||
get_header_map : procedure(self: PCefResponse; headerMap: TCefStringMultimap); stdcall;
|
||||
set_header_map : procedure(self: PCefResponse; headerMap: TCefStringMultimap); stdcall;
|
||||
get_url : function(self: PCefResponse): PCefStringUserFree; stdcall;
|
||||
set_url : procedure(self: PCefResponse; const url: PCefString); stdcall;
|
||||
end;
|
||||
|
||||
// /include/capi/cef_response_filter_capi.h (cef_response_filter_t)
|
||||
@ -2275,6 +2278,12 @@ type
|
||||
get_end_column : function(self: PCefV8Exception): Integer; stdcall;
|
||||
end;
|
||||
|
||||
// /include/capi/cef_v8_capi.h (cef_v8array_buffer_release_callback_t)
|
||||
TCefv8ArrayBufferReleaseCallback = record
|
||||
base : TCefBaseRefCounted;
|
||||
release_buffer : procedure(self: PCefv8ArrayBufferReleaseCallback; buffer : Pointer); stdcall;
|
||||
end;
|
||||
|
||||
// /include/capi/cef_v8_capi.h (cef_v8value_t)
|
||||
TCefv8Value = record
|
||||
base : TCefBaseRefCounted;
|
||||
@ -2289,6 +2298,7 @@ type
|
||||
is_string : function(self: PCefv8Value): Integer; stdcall;
|
||||
is_object : function(self: PCefv8Value): Integer; stdcall;
|
||||
is_array : function(self: PCefv8Value): Integer; stdcall;
|
||||
is_array_buffer : function(self: PCefv8Value): Integer; stdcall;
|
||||
is_function : function(self: PCefv8Value): Integer; stdcall;
|
||||
is_same : function(self, that: PCefv8Value): Integer; stdcall;
|
||||
get_bool_value : function(self: PCefv8Value): Integer; stdcall;
|
||||
@ -2318,6 +2328,8 @@ type
|
||||
get_externally_allocated_memory : function(self: PCefv8Value): Integer; stdcall;
|
||||
adjust_externally_allocated_memory : function(self: PCefv8Value; change_in_bytes: Integer): Integer; stdcall;
|
||||
get_array_length : function(self: PCefv8Value): Integer; stdcall;
|
||||
get_array_buffer_release_callback : function(self: PCefv8Value): PCefv8ArrayBufferReleaseCallback; stdcall;
|
||||
neuter_array_buffer : function(self: PCefv8Value): Integer; stdcall;
|
||||
get_function_name : function(self: PCefv8Value): PCefStringUserFree; stdcall;
|
||||
get_function_handler : function(self: PCefv8Value): PCefv8Handler; stdcall;
|
||||
execute_function : function(self: PCefv8Value; obj: PCefv8Value; argumentsCount: NativeUInt; const arguments: PPCefV8Value): PCefv8Value; stdcall;
|
||||
|
@ -105,6 +105,8 @@ end;
|
||||
|
||||
constructor TCefFastWebPluginUnstableCallback.Create(const callback: TCefWebPluginIsUnstableProc);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FCallback := callback;
|
||||
end;
|
||||
|
||||
|
143
source/uCEFv8ArrayBufferReleaseCallback.pas
Normal file
143
source/uCEFv8ArrayBufferReleaseCallback.pas
Normal file
@ -0,0 +1,143 @@
|
||||
// ************************************************************************
|
||||
// ***************************** CEF4Delphi *******************************
|
||||
// ************************************************************************
|
||||
//
|
||||
// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based
|
||||
// browser in Delphi applications.
|
||||
//
|
||||
// The original license of DCEF3 still applies to CEF4Delphi.
|
||||
//
|
||||
// For more information about CEF4Delphi visit :
|
||||
// https://www.briskbard.com/index.php?lang=en&pageid=cef
|
||||
//
|
||||
// Copyright © 2018 Salvador Díaz Fau. All rights reserved.
|
||||
//
|
||||
// ************************************************************************
|
||||
// ************ vvvv Original license and comments below vvvv *************
|
||||
// ************************************************************************
|
||||
(*
|
||||
* Delphi Chromium Embedded 3
|
||||
*
|
||||
* Usage allowed under the restrictions of the Lesser GNU General Public License
|
||||
* or alternatively the restrictions of the Mozilla Public License 1.1
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
||||
* the specific language governing rights and limitations under the License.
|
||||
*
|
||||
* Unit owner : Henri Gourvest <hgourvest@gmail.com>
|
||||
* Web site : http://www.progdigy.com
|
||||
* Repository : http://code.google.com/p/delphichromiumembedded/
|
||||
* Group : http://groups.google.com/group/delphichromiumembedded
|
||||
*
|
||||
* Embarcadero Technologies, Inc is not permitted to use or redistribute
|
||||
* this source code without explicit permission.
|
||||
*
|
||||
*)
|
||||
|
||||
unit uCEFv8ArrayBufferReleaseCallback;
|
||||
|
||||
{$IFNDEF CPUX64}
|
||||
{$ALIGN ON}
|
||||
{$MINENUMSIZE 4}
|
||||
{$ENDIF}
|
||||
|
||||
{$I cef.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||||
|
||||
type
|
||||
TCefv8ArrayBufferReleaseCallbackProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(buffer : Pointer);
|
||||
|
||||
TCefv8ArrayBufferReleaseCallbackOwn = class(TCefBaseRefCountedOwn, ICefv8ArrayBufferReleaseCallback)
|
||||
protected
|
||||
procedure ReleaseBuffer(buffer : Pointer); virtual;
|
||||
|
||||
public
|
||||
constructor Create; virtual;
|
||||
end;
|
||||
|
||||
TCefFastv8ArrayBufferReleaseCallback = class(TCefv8ArrayBufferReleaseCallbackOwn)
|
||||
protected
|
||||
FCallback: TCefv8ArrayBufferReleaseCallbackProc;
|
||||
|
||||
procedure ReleaseBuffer(buffer : Pointer); override;
|
||||
|
||||
public
|
||||
constructor Create(const callback: TCefv8ArrayBufferReleaseCallbackProc); reintroduce;
|
||||
end;
|
||||
|
||||
TCefv8ArrayBufferReleaseCallbackRef = class(TCefBaseRefCountedRef, ICefv8ArrayBufferReleaseCallback)
|
||||
protected
|
||||
procedure ReleaseBuffer(buffer : Pointer); virtual;
|
||||
|
||||
public
|
||||
class function UnWrap(data: Pointer): ICefv8ArrayBufferReleaseCallback;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
uCEFMiscFunctions, uCEFLibFunctions;
|
||||
|
||||
procedure cef_v8array_buffer_release_callback_release_buffer(self : PCefv8ArrayBufferReleaseCallback;
|
||||
buffer : Pointer); stdcall;
|
||||
var
|
||||
TempObject : TObject;
|
||||
begin
|
||||
TempObject := CefGetObject(self);
|
||||
|
||||
if (TempObject <> nil) and (TempObject is TCefv8ArrayBufferReleaseCallbackOwn) then
|
||||
TCefv8ArrayBufferReleaseCallbackOwn(TempObject).ReleaseBuffer(buffer);
|
||||
end;
|
||||
|
||||
|
||||
// TCefv8ArrayBufferReleaseCallbackOwn
|
||||
|
||||
constructor TCefv8ArrayBufferReleaseCallbackOwn.Create;
|
||||
begin
|
||||
inherited CreateData(SizeOf(TCefv8ArrayBufferReleaseCallback));
|
||||
|
||||
PCefv8ArrayBufferReleaseCallback(FData).release_buffer := cef_v8array_buffer_release_callback_release_buffer;
|
||||
end;
|
||||
|
||||
procedure TCefv8ArrayBufferReleaseCallbackOwn.ReleaseBuffer(buffer: Pointer);
|
||||
begin
|
||||
//
|
||||
end;
|
||||
|
||||
|
||||
// TCefFastv8ArrayBufferReleaseCallback
|
||||
|
||||
constructor TCefFastv8ArrayBufferReleaseCallback.Create(const callback: TCefv8ArrayBufferReleaseCallbackProc);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
FCallback := callback;
|
||||
end;
|
||||
|
||||
procedure TCefFastv8ArrayBufferReleaseCallback.ReleaseBuffer(buffer: Pointer);
|
||||
begin
|
||||
FCallback(buffer);
|
||||
end;
|
||||
|
||||
|
||||
// TCefv8ArrayBufferReleaseCallbackRef
|
||||
|
||||
procedure TCefv8ArrayBufferReleaseCallbackRef.ReleaseBuffer(buffer : Pointer);
|
||||
begin
|
||||
PCefv8ArrayBufferReleaseCallback(FData).release_buffer(PCefv8ArrayBufferReleaseCallback(FData), buffer);
|
||||
end;
|
||||
|
||||
class function TCefv8ArrayBufferReleaseCallbackRef.UnWrap(data: Pointer): ICefv8ArrayBufferReleaseCallback;
|
||||
begin
|
||||
if (data <> nil) then
|
||||
Result := Create(data) as ICefv8ArrayBufferReleaseCallback
|
||||
else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
end.
|
@ -68,6 +68,7 @@ type
|
||||
function IsString: Boolean;
|
||||
function IsObject: Boolean;
|
||||
function IsArray: Boolean;
|
||||
function IsArrayBuffer: Boolean;
|
||||
function IsFunction: Boolean;
|
||||
function IsSame(const that: ICefv8Value): Boolean;
|
||||
function GetBoolValue: Boolean;
|
||||
@ -97,6 +98,8 @@ type
|
||||
function GetExternallyAllocatedMemory: Integer;
|
||||
function AdjustExternallyAllocatedMemory(changeInBytes: Integer): Integer;
|
||||
function GetArrayLength: Integer;
|
||||
function GetArrayBufferReleaseCallback : ICefv8ArrayBufferReleaseCallback;
|
||||
function NeuterArrayBuffer : boolean;
|
||||
function GetFunctionName: ustring;
|
||||
function GetFunctionHandler: ICefv8Handler;
|
||||
function ExecuteFunction(const obj: ICefv8Value; const arguments: TCefv8ValueArray): ICefv8Value;
|
||||
@ -120,6 +123,7 @@ type
|
||||
const getterbyindex : TCefV8InterceptorGetterByIndexProc;
|
||||
const setterbyindex : TCefV8InterceptorSetterByIndexProc): ICefv8Value;
|
||||
class function NewArray(len: Integer): ICefv8Value;
|
||||
class function NewArrayBuffer(buffer: Pointer; length: NativeUInt; const callback : ICefv8ArrayBufferReleaseCallback): ICefv8Value;
|
||||
class function NewFunction(const name: ustring; const handler: ICefv8Handler): ICefv8Value;
|
||||
end;
|
||||
|
||||
@ -127,7 +131,7 @@ implementation
|
||||
|
||||
uses
|
||||
uCEFMiscFunctions, uCEFLibFunctions, uCEFv8Accessor, uCEFv8Handler, uCEFv8Exception,
|
||||
uCEFv8Interceptor, uCEFStringList;
|
||||
uCEFv8Interceptor, uCEFStringList, uCefv8ArrayBufferReleaseCallback;
|
||||
|
||||
function TCefv8ValueRef.AdjustExternallyAllocatedMemory(changeInBytes: Integer): Integer;
|
||||
begin
|
||||
@ -139,6 +143,13 @@ begin
|
||||
Result := UnWrap(cef_v8value_create_array(len));
|
||||
end;
|
||||
|
||||
class function TCefv8ValueRef.NewArrayBuffer( buffer : Pointer;
|
||||
length : NativeUInt;
|
||||
const callback : ICefv8ArrayBufferReleaseCallback): ICefv8Value;
|
||||
begin
|
||||
Result := UnWrap(cef_v8value_create_array_buffer(buffer, length, CefGetData(callback)));
|
||||
end;
|
||||
|
||||
class function TCefv8ValueRef.NewBool(value: Boolean): ICefv8Value;
|
||||
begin
|
||||
Result := UnWrap(cef_v8value_create_bool(Ord(value)));
|
||||
@ -309,6 +320,16 @@ begin
|
||||
Result := PCefV8Value(FData)^.get_array_length(PCefV8Value(FData));
|
||||
end;
|
||||
|
||||
function TCefv8ValueRef.GetArrayBufferReleaseCallback : ICefv8ArrayBufferReleaseCallback;
|
||||
begin
|
||||
Result := TCefv8ArrayBufferReleaseCallbackRef.UnWrap(PCefV8Value(FData)^.get_array_buffer_release_callback(PCefV8Value(FData)));
|
||||
end;
|
||||
|
||||
function TCefv8ValueRef.NeuterArrayBuffer : boolean;
|
||||
begin
|
||||
Result := PCefV8Value(FData)^.neuter_array_buffer(PCefV8Value(FData)) <> 0;
|
||||
end;
|
||||
|
||||
function TCefv8ValueRef.GetBoolValue: Boolean;
|
||||
begin
|
||||
Result := PCefV8Value(FData)^.get_bool_value(PCefV8Value(FData)) <> 0;
|
||||
@ -444,6 +465,11 @@ begin
|
||||
Result := PCefV8Value(FData)^.is_array(PCefV8Value(FData)) <> 0;
|
||||
end;
|
||||
|
||||
function TCefv8ValueRef.IsArrayBuffer: Boolean;
|
||||
begin
|
||||
Result := PCefV8Value(FData)^.is_array_buffer(PCefV8Value(FData)) <> 0;
|
||||
end;
|
||||
|
||||
function TCefv8ValueRef.IsBool: Boolean;
|
||||
begin
|
||||
Result := PCefV8Value(FData)^.is_bool(PCefV8Value(FData)) <> 0;
|
||||
|
@ -148,6 +148,7 @@ type
|
||||
FOnStatusMessage : TOnStatusMessage;
|
||||
FOnConsoleMessage : TOnConsoleMessage;
|
||||
FOnAutoResize : TOnAutoResize;
|
||||
FOnLoadingProgressChange : TOnLoadingProgressChange;
|
||||
|
||||
// ICefDownloadHandler
|
||||
FOnBeforeDownload : TOnBeforeDownload;
|
||||
@ -200,6 +201,7 @@ type
|
||||
FOnCursorChange : TOnCursorChange;
|
||||
FOnScrollOffsetChanged : TOnScrollOffsetChanged;
|
||||
FOnIMECompositionRangeChanged : TOnIMECompositionRangeChanged;
|
||||
FOnTextSelectionChanged : TOnTextSelectionChanged;
|
||||
|
||||
// ICefDragHandler
|
||||
FOnDragEnter : TOnDragEnter;
|
||||
@ -355,6 +357,7 @@ type
|
||||
procedure doOnStatusMessage(const browser: ICefBrowser; const value: ustring); virtual;
|
||||
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;
|
||||
|
||||
// ICefDownloadHandler
|
||||
procedure doOnBeforeDownload(const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const callback: ICefBeforeDownloadCallback); virtual;
|
||||
@ -409,6 +412,7 @@ type
|
||||
procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual;
|
||||
procedure doOnScrollOffsetChanged(const browser: ICefBrowser; x, y: Double); virtual;
|
||||
procedure doOnIMECompositionRangeChanged(const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); virtual;
|
||||
procedure doOnTextSelectionChanged(const browser: ICefBrowser; const selected_text: ustring; const selected_range: PCefRange); virtual;
|
||||
|
||||
// ICefDragHandler
|
||||
function doOnDragEnter(const browser: ICefBrowser; const dragData: ICefDragData; mask: TCefDragOperations): Boolean; virtual;
|
||||
@ -622,6 +626,7 @@ type
|
||||
property OnStatusMessage : TOnStatusMessage read FOnStatusMessage write FOnStatusMessage;
|
||||
property OnConsoleMessage : TOnConsoleMessage read FOnConsoleMessage write FOnConsoleMessage;
|
||||
property OnAutoResize : TOnAutoResize read FOnAutoResize write FOnAutoResize;
|
||||
property OnLoadingProgressChange : TOnLoadingProgressChange read FOnLoadingProgressChange write FOnLoadingProgressChange;
|
||||
|
||||
// ICefDownloadHandler
|
||||
property OnBeforeDownload : TOnBeforeDownload read FOnBeforeDownload write FOnBeforeDownload;
|
||||
@ -674,6 +679,7 @@ type
|
||||
property OnCursorChange : TOnCursorChange read FOnCursorChange write FOnCursorChange;
|
||||
property OnScrollOffsetChanged : TOnScrollOffsetChanged read FOnScrollOffsetChanged write FOnScrollOffsetChanged;
|
||||
property OnIMECompositionRangeChanged : TOnIMECompositionRangeChanged read FOnIMECompositionRangeChanged write FOnIMECompositionRangeChanged;
|
||||
property OnTextSelectionChanged : TOnTextSelectionChanged read FOnTextSelectionChanged write FOnTextSelectionChanged;
|
||||
|
||||
// ICefDragHandler
|
||||
property OnDragEnter : TOnDragEnter read FOnDragEnter write FOnDragEnter;
|
||||
@ -922,6 +928,7 @@ begin
|
||||
FOnStatusMessage := nil;
|
||||
FOnConsoleMessage := nil;
|
||||
FOnAutoResize := nil;
|
||||
FOnLoadingProgressChange := nil;
|
||||
|
||||
// ICefDownloadHandler
|
||||
FOnBeforeDownload := nil;
|
||||
@ -974,6 +981,7 @@ begin
|
||||
FOnCursorChange := nil;
|
||||
FOnScrollOffsetChanged := nil;
|
||||
FOnIMECompositionRangeChanged := nil;
|
||||
FOnTextSelectionChanged := nil;
|
||||
|
||||
// ICefDragHandler
|
||||
FOnDragEnter := nil;
|
||||
@ -2514,14 +2522,15 @@ end;
|
||||
|
||||
function TFMXChromium.MustCreateDisplayHandler : boolean;
|
||||
begin
|
||||
Result := assigned(FOnAddressChange) or
|
||||
assigned(FOnTitleChange) or
|
||||
assigned(FOnFavIconUrlChange) or
|
||||
assigned(FOnFullScreenModeChange) or
|
||||
assigned(FOnTooltip) or
|
||||
assigned(FOnStatusMessage) or
|
||||
assigned(FOnConsoleMessage) or
|
||||
assigned(FOnAutoResize);
|
||||
Result := assigned(FOnAddressChange) or
|
||||
assigned(FOnTitleChange) or
|
||||
assigned(FOnFavIconUrlChange) or
|
||||
assigned(FOnFullScreenModeChange) or
|
||||
assigned(FOnTooltip) or
|
||||
assigned(FOnStatusMessage) or
|
||||
assigned(FOnConsoleMessage) or
|
||||
assigned(FOnAutoResize) or
|
||||
assigned(FOnLoadingProgressChange);
|
||||
end;
|
||||
|
||||
function TFMXChromium.MustCreateDownloadHandler : boolean;
|
||||
@ -2781,6 +2790,11 @@ begin
|
||||
if Assigned(FOnAutoResize) then FOnAutoResize(Self, browser, new_size, Result);
|
||||
end;
|
||||
|
||||
procedure TFMXChromium.doOnLoadingProgressChange(const browser: ICefBrowser; const progress: double);
|
||||
begin
|
||||
if assigned(FOnLoadingProgressChange) then FOnLoadingProgressChange(self, browser, progress);
|
||||
end;
|
||||
|
||||
function TFMXChromium.doOnContextMenuCommand(const browser : ICefBrowser;
|
||||
const frame : ICefFrame;
|
||||
const params : ICefContextMenuParams;
|
||||
@ -3215,6 +3229,14 @@ begin
|
||||
FOnIMECompositionRangeChanged(self, browser, selected_range, character_boundsCount, character_bounds);
|
||||
end;
|
||||
|
||||
procedure TFMXChromium.doOnTextSelectionChanged(const browser : ICefBrowser;
|
||||
const selected_text : ustring;
|
||||
const selected_range : PCefRange);
|
||||
begin
|
||||
if assigned(FOnTextSelectionChanged) then
|
||||
FOnTextSelectionChanged(self, browser, selected_text, selected_range);
|
||||
end;
|
||||
|
||||
function TFMXChromium.doOnSetFocus(const browser: ICefBrowser; source: TCefFocusSource): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
|
Loading…
x
Reference in New Issue
Block a user