mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-05-13 21:46:53 +02:00
107 lines
2.6 KiB
ObjectPascal
107 lines
2.6 KiB
ObjectPascal
|
unit uCEFSettingObserver;
|
||
|
|
||
|
{$IFDEF FPC}
|
||
|
{$MODE OBJFPC}{$H+}
|
||
|
{$ENDIF}
|
||
|
|
||
|
{$I cef.inc}
|
||
|
|
||
|
{$IFNDEF TARGET_64BITS}{$ALIGN ON}{$ENDIF}
|
||
|
{$MINENUMSIZE 4}
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
|
||
|
|
||
|
type
|
||
|
TCefSettingObserverOwn = class(TCefBaseRefCountedOwn, ICefSettingObserver)
|
||
|
protected
|
||
|
procedure OnSettingChanged(const requesting_url, top_level_url : ustring; content_type: TCefContentSettingTypes); virtual;
|
||
|
|
||
|
procedure RemoveReferences; virtual;
|
||
|
|
||
|
public
|
||
|
constructor Create; virtual;
|
||
|
end;
|
||
|
|
||
|
TCustomSettingObserver = class(TCefSettingObserverOwn)
|
||
|
protected
|
||
|
FEvents : Pointer;
|
||
|
|
||
|
procedure OnSettingChanged(const requesting_url, top_level_url : ustring; content_type: TCefContentSettingTypes); override;
|
||
|
|
||
|
procedure RemoveReferences; override;
|
||
|
|
||
|
public
|
||
|
constructor Create(const events : IChromiumEvents); reintroduce; virtual;
|
||
|
destructor Destroy; override;
|
||
|
end;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
uCEFMiscFunctions, uCEFLibFunctions, uCEFBrowser;
|
||
|
|
||
|
|
||
|
// TCefSettingObserverOwn
|
||
|
|
||
|
procedure cef_setting_observer_on_setting_changed(self: PCefSettingObserver; const requesting_url, top_level_url: PCefString; content_type: TCefContentSettingTypes); stdcall;
|
||
|
var
|
||
|
TempObject : TObject;
|
||
|
begin
|
||
|
TempObject := CefGetObject(self);
|
||
|
|
||
|
if (TempObject <> nil) and (TempObject is TCefSettingObserverOwn) then
|
||
|
TCefSettingObserverOwn(TempObject).OnSettingChanged(CefString(requesting_url),
|
||
|
CefString(top_level_url),
|
||
|
content_type);
|
||
|
end;
|
||
|
|
||
|
constructor TCefSettingObserverOwn.Create;
|
||
|
begin
|
||
|
inherited CreateData(SizeOf(TCefSettingObserver));
|
||
|
|
||
|
PCefSettingObserver(FData)^.on_setting_changed := {$IFDEF FPC}@{$ENDIF}cef_setting_observer_on_setting_changed;
|
||
|
end;
|
||
|
|
||
|
procedure TCefSettingObserverOwn.OnSettingChanged(const requesting_url, top_level_url : ustring; content_type: TCefContentSettingTypes);
|
||
|
begin
|
||
|
//
|
||
|
end;
|
||
|
|
||
|
procedure TCefSettingObserverOwn.RemoveReferences;
|
||
|
begin
|
||
|
//
|
||
|
end;
|
||
|
|
||
|
|
||
|
// TCustomSettingObserver
|
||
|
|
||
|
constructor TCustomSettingObserver.Create(const events : IChromiumEvents);
|
||
|
begin
|
||
|
inherited Create;
|
||
|
|
||
|
FEvents := Pointer(events);
|
||
|
end;
|
||
|
|
||
|
destructor TCustomSettingObserver.Destroy;
|
||
|
begin
|
||
|
RemoveReferences;
|
||
|
|
||
|
inherited Destroy;
|
||
|
end;
|
||
|
|
||
|
procedure TCustomSettingObserver.RemoveReferences;
|
||
|
begin
|
||
|
FEvents := nil;
|
||
|
end;
|
||
|
|
||
|
procedure TCustomSettingObserver.OnSettingChanged(const requesting_url, top_level_url : ustring; content_type: TCefContentSettingTypes);
|
||
|
begin
|
||
|
if (FEvents <> nil) then
|
||
|
IChromiumEvents(FEvents).doOnSettingChanged(requesting_url, top_level_url, content_type);
|
||
|
end;
|
||
|
|
||
|
end.
|