1
0
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:
Salvador Díaz Fau 2018-04-20 12:45:06 +02:00
parent 1fa94557f3
commit cf784aba5f
27 changed files with 457 additions and 88 deletions

View File

@ -263,6 +263,7 @@ object MiniBrowserFrm: TMiniBrowserFrm
OnTitleChange = Chromium1TitleChange
OnFullScreenModeChange = Chromium1FullScreenModeChange
OnStatusMessage = Chromium1StatusMessage
OnLoadingProgressChange = Chromium1LoadingProgressChange
OnBeforeDownload = Chromium1BeforeDownload
OnDownloadUpdated = Chromium1DownloadUpdated
OnAfterCreated = Chromium1AfterCreated

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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>

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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.

View File

@ -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;

View File

@ -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};

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -105,6 +105,8 @@ end;
constructor TCefFastWebPluginUnstableCallback.Create(const callback: TCefWebPluginIsUnstableProc);
begin
inherited Create;
FCallback := callback;
end;

View 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.

View File

@ -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;

View File

@ -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;