CEF4Delphi/source/uCEFTask.pas
salvadordf ca8bc9dff4 Added cef4delphi.chm help file
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
2023-08-09 19:38:57 +02:00

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.