mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2024-11-15 15:55:56 +01:00
ca8bc9dff4
Added the PDS file to extract the HTML Help files using PasDoc Added more XML documentation Fixed some XML errors. Removed the license copy from the pas units. Updated the LICENSE.md file
776 lines
15 KiB
ObjectPascal
776 lines
15 KiB
ObjectPascal
unit uCEFTask;
|
|
|
|
{$IFDEF FPC}
|
|
{$MODE OBJFPC}{$H+}
|
|
{$ENDIF}
|
|
|
|
{$I cef.inc}
|
|
|
|
{$IFNDEF TARGET_64BITS}{$ALIGN ON}{$ENDIF}
|
|
{$MINENUMSIZE 4}
|
|
|
|
interface
|
|
|
|
uses
|
|
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
|
|
|
type
|
|
TCefTaskOwn = class(TCefBaseRefCountedOwn, ICefTask)
|
|
protected
|
|
procedure Execute; virtual;
|
|
|
|
public
|
|
constructor Create; virtual;
|
|
end;
|
|
|
|
TCefTaskRef = class(TCefBaseRefCountedRef, ICefTask)
|
|
protected
|
|
procedure Execute; virtual;
|
|
|
|
public
|
|
class function UnWrap(data: Pointer): ICefTask;
|
|
end;
|
|
|
|
TCefFastTask = class(TCefTaskOwn)
|
|
protected
|
|
FMethod: TCefFastTaskProc;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
class procedure New(threadId: TCefThreadId; const method: TCefFastTaskProc);
|
|
class procedure NewDelayed(threadId: TCefThreadId; Delay: Int64; const method: TCefFastTaskProc);
|
|
constructor Create(const method: TCefFastTaskProc); reintroduce;
|
|
end;
|
|
|
|
TCefUpdatePrefsTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefSavePrefsTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefURLRequestTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : ICEFUrlRequestClientEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefGenericTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FTaskID : cardinal;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; aTaskID : cardinal); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefUpdateZoomStepTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FInc : boolean;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; aInc : boolean); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefUpdateZoomPctTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FInc : boolean;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; aInc : boolean); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefReadZoomTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefSetZoomLevelTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FValue : double;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; const aValue : double); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefSetZoomPctTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FValue : double;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; const aValue : double); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefSetZoomStepTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FValue : byte;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; aValue : byte); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefCreateCustomViewTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : ICefViewDelegateEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefBrowserNavigationTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FTask : TCefBrowserNavigation;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; aTask : TCefBrowserNavigation); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefSetAudioMutedTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
FValue : boolean;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents; aValue : boolean); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefToggleAudioMutedTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TCefEnableFocusTask = class(TCefTaskOwn)
|
|
protected
|
|
FEvents : Pointer;
|
|
|
|
procedure Execute; override;
|
|
|
|
public
|
|
constructor Create(const aEvents : IChromiumEvents); reintroduce;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
{$IFDEF DELPHI16_UP}
|
|
System.SysUtils,
|
|
{$ELSE}
|
|
SysUtils,
|
|
{$ENDIF}
|
|
uCEFMiscFunctions, uCEFLibFunctions, uCEFCookieManager, uCEFUrlRequest;
|
|
|
|
procedure cef_task_execute(self: PCefTask); stdcall;
|
|
var
|
|
TempObject : TObject;
|
|
begin
|
|
TempObject := CefGetObject(self);
|
|
|
|
if (TempObject <> nil) and (TempObject is TCefTaskOwn) then
|
|
TCefTaskOwn(TempObject).Execute;
|
|
end;
|
|
|
|
constructor TCefTaskOwn.Create;
|
|
begin
|
|
inherited CreateData(SizeOf(TCefTask));
|
|
|
|
PCefTask(FData)^.execute := {$IFDEF FPC}@{$ENDIF}cef_task_execute;
|
|
end;
|
|
|
|
procedure TCefTaskOwn.Execute;
|
|
begin
|
|
//
|
|
end;
|
|
|
|
|
|
// TCefTaskRef
|
|
|
|
|
|
procedure TCefTaskRef.Execute;
|
|
begin
|
|
PCefTask(FData)^.execute(PCefTask(FData));
|
|
end;
|
|
|
|
class function TCefTaskRef.UnWrap(data: Pointer): ICefTask;
|
|
begin
|
|
if (data <> nil) then
|
|
Result := Create(data) as ICefTask
|
|
else
|
|
Result := nil;
|
|
end;
|
|
|
|
|
|
// TCefFastTask
|
|
|
|
|
|
constructor TCefFastTask.Create(const method: TCefFastTaskProc);
|
|
begin
|
|
inherited Create;
|
|
|
|
FMethod := method;
|
|
end;
|
|
|
|
procedure TCefFastTask.Execute;
|
|
begin
|
|
FMethod();
|
|
end;
|
|
|
|
class procedure TCefFastTask.New(threadId: TCefThreadId; const method: TCefFastTaskProc);
|
|
begin
|
|
CefPostTask(threadId, Create(method));
|
|
end;
|
|
|
|
class procedure TCefFastTask.NewDelayed(threadId: TCefThreadId; Delay: Int64; const method: TCefFastTaskProc);
|
|
begin
|
|
CefPostDelayedTask(threadId, Create(method), Delay);
|
|
end;
|
|
|
|
|
|
// TCefUpdatePrefsTask
|
|
|
|
|
|
constructor TCefUpdatePrefsTask.Create(const aEvents : IChromiumEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefUpdatePrefsTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TCefUpdatePrefsTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doUpdateOwnPreferences;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefUpdatePrefsTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
// TCefSavePrefsTask
|
|
|
|
|
|
constructor TCefSavePrefsTask.Create(const aEvents : IChromiumEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefSavePrefsTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TCefSavePrefsTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doSavePreferences;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefSavePrefsTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
// TCefURLRequestTask
|
|
|
|
procedure TCefURLRequestTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then ICEFUrlRequestClientEvents(FEvents).doOnCreateURLRequest;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefURLRequestTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefURLRequestTask.Create(const aEvents : ICEFUrlRequestClientEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefURLRequestTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
// TCefGenericTask
|
|
|
|
procedure TCefGenericTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnExecuteTaskOnCefThread(FTaskID);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefGenericTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefGenericTask.Create(const aEvents : IChromiumEvents; aTaskID : cardinal);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FTaskID := aTaskID;
|
|
end;
|
|
|
|
destructor TCefGenericTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
// TCefUpdateZoomStepTask
|
|
|
|
procedure TCefUpdateZoomStepTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doUpdateZoomStep(FInc);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefUpdateZoomStepTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefUpdateZoomStepTask.Create(const aEvents : IChromiumEvents; aInc : boolean);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FInc := aInc;
|
|
end;
|
|
|
|
destructor TCefUpdateZoomStepTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
// TCefUpdateZoomPctTask
|
|
|
|
procedure TCefUpdateZoomPctTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doUpdateZoomPct(FInc);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefUpdateZoomPctTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefUpdateZoomPctTask.Create(const aEvents : IChromiumEvents; aInc : boolean);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FInc := aInc;
|
|
end;
|
|
|
|
destructor TCefUpdateZoomPctTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
// TCefReadZoomTask
|
|
|
|
procedure TCefReadZoomTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doReadZoom;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefReadZoomTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefReadZoomTask.Create(const aEvents : IChromiumEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefReadZoomTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
// TCefSetZoomLevelTask
|
|
|
|
procedure TCefSetZoomLevelTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doSetZoomLevel(FValue);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefSetZoomLevelTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefSetZoomLevelTask.Create(const aEvents : IChromiumEvents; const aValue : double);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FValue := aValue;
|
|
end;
|
|
|
|
destructor TCefSetZoomLevelTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
// TCefSetZoomPctTask
|
|
|
|
procedure TCefSetZoomPctTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doSetZoomPct(FValue);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefSetZoomPctTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefSetZoomPctTask.Create(const aEvents : IChromiumEvents; const aValue : double);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FValue := aValue;
|
|
end;
|
|
|
|
destructor TCefSetZoomPctTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
// TCefSetZoomStepTask
|
|
|
|
procedure TCefSetZoomStepTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doSetZoomStep(FValue);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefSetZoomStepTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefSetZoomStepTask.Create(const aEvents : IChromiumEvents; aValue : byte);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FValue := aValue;
|
|
end;
|
|
|
|
destructor TCefSetZoomStepTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
// TCefCreateCustomViewTask
|
|
|
|
procedure TCefCreateCustomViewTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then ICefViewDelegateEvents(FEvents).doCreateCustomView;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('ICefViewDelegateEvents.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefCreateCustomViewTask.Create(const aEvents : ICefViewDelegateEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefCreateCustomViewTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
// TCefBrowserNavigationTask
|
|
|
|
procedure TCefBrowserNavigationTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doBrowserNavigation(FTask);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefBrowserNavigationTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefBrowserNavigationTask.Create(const aEvents : IChromiumEvents; aTask : TCefBrowserNavigation);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FTask := aTask;
|
|
end;
|
|
|
|
destructor TCefBrowserNavigationTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
// TCefSetAudioMutedTask
|
|
|
|
procedure TCefSetAudioMutedTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doSetAudioMuted(FValue);
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefSetAudioMutedTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefSetAudioMutedTask.Create(const aEvents : IChromiumEvents; aValue : boolean);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
FValue := aValue;
|
|
end;
|
|
|
|
destructor TCefSetAudioMutedTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
// TCefToggleAudioMutedTask
|
|
|
|
procedure TCefToggleAudioMutedTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doToggleAudioMuted;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefToggleAudioMutedTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefToggleAudioMutedTask.Create(const aEvents : IChromiumEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefToggleAudioMutedTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
// TCefEnableFocusTask
|
|
|
|
procedure TCefEnableFocusTask.Execute;
|
|
begin
|
|
try
|
|
try
|
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doEnableFocus;
|
|
except
|
|
on e : exception do
|
|
if CustomExceptionHandler('TCefEnableFocusTask.Execute', e) then raise;
|
|
end;
|
|
finally
|
|
FEvents := nil;
|
|
end;
|
|
end;
|
|
|
|
constructor TCefEnableFocusTask.Create(const aEvents : IChromiumEvents);
|
|
begin
|
|
inherited Create;
|
|
|
|
FEvents := Pointer(aEvents);
|
|
end;
|
|
|
|
destructor TCefEnableFocusTask.Destroy;
|
|
begin
|
|
FEvents := nil;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
end.
|