You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-22 22:17:48 +02:00
Update to CEF 134.3.1
This commit is contained in:
@ -30,7 +30,8 @@ uses
|
||||
{$IFDEF MSWINDOWS}uCEFDragAndDropMgr,{$ENDIF}
|
||||
{$IFDEF LINUX}uCEFLinuxTypes, uCEFLinuxFunctions,{$ENDIF}
|
||||
uCEFChromiumOptions, uCEFChromiumFontOptions, uCEFPDFPrintOptions,
|
||||
uCEFBrowserViewComponent, uCEFWindowInfoWrapper;
|
||||
uCEFBrowserViewComponent, uCEFWindowInfoWrapper, uCEFPreferenceObserver,
|
||||
uCEFSettingObserver;
|
||||
|
||||
type
|
||||
TBrowserInfoList = class;
|
||||
@ -55,6 +56,10 @@ type
|
||||
FMediaObserverReg : ICefRegistration;
|
||||
FDevToolsMsgObserver : ICefDevToolsMessageObserver;
|
||||
FDevToolsMsgObserverReg : ICefRegistration;
|
||||
FSettingObserver : ICefSettingObserver;
|
||||
FSettingObserverReg : ICefRegistration;
|
||||
FPreferenceInfoList : TPreferenceInfoList;
|
||||
FPreferenceInfoCS : TCriticalSection;
|
||||
FDefaultUrl : ustring;
|
||||
FOptions : TChromiumOptions;
|
||||
FFontOptions : TChromiumFontOptions;
|
||||
@ -302,6 +307,12 @@ type
|
||||
FOnShowPermissionPrompt : TOnShowPermissionPromptEvent;
|
||||
FOnDismissPermissionPrompt : TOnDismissPermissionPromptEvent;
|
||||
|
||||
// ICefPreferenceObserver
|
||||
FOnPreferenceChanged : TOnPreferenceChangedEvent;
|
||||
|
||||
// ICefSettingObserver
|
||||
FOnSettingChanged : TOnSettingChangedEvent;
|
||||
|
||||
// Custom
|
||||
FOnTextResultAvailable : TOnTextResultAvailableEvent;
|
||||
FOnPdfPrintFinished : TOnPdfPrintFinishedEvent;
|
||||
@ -436,11 +447,15 @@ type
|
||||
procedure DestroyResourceRequestHandler;
|
||||
procedure DestroyMediaObserver;
|
||||
procedure DestroyDevToolsMsgObserver;
|
||||
procedure DestroySettingObserver;
|
||||
procedure DestroyPreferenceObserver;
|
||||
procedure DestroyAllHandlersAndObservers;
|
||||
|
||||
procedure CreateResourceRequestHandler; virtual;
|
||||
procedure CreateMediaObserver; virtual;
|
||||
procedure CreateDevToolsMsgObserver; virtual;
|
||||
procedure CreateSettingObserver; virtual;
|
||||
procedure CreatePreferenceObserver; virtual;
|
||||
procedure CreateRequestContextHandler; virtual;
|
||||
procedure CreateOptionsClasses; virtual;
|
||||
procedure CreateSyncObjects; virtual;
|
||||
@ -665,6 +680,12 @@ type
|
||||
function doOnShowPermissionPrompt(const browser: ICefBrowser; prompt_id: uint64; const requesting_origin: ustring; requested_permissions: cardinal; const callback: ICefPermissionPromptCallback): boolean;
|
||||
procedure doOnDismissPermissionPrompt(const browser: ICefBrowser; prompt_id: uint64; result: TCefPermissionRequestResult);
|
||||
|
||||
// ICefPreferenceObserver
|
||||
procedure doOnPreferenceChanged(const name_: ustring);
|
||||
|
||||
// ICefSettingObserver
|
||||
procedure doOnSettingChanged(const requesting_url, top_level_url : ustring; content_type: TCefContentSettingTypes);
|
||||
|
||||
// Custom
|
||||
procedure GetSettings(var aSettings : TCefBrowserSettings);
|
||||
procedure doCookiesDeleted(numDeleted : integer); virtual;
|
||||
@ -697,10 +718,12 @@ type
|
||||
procedure doToggleAudioMuted; virtual;
|
||||
procedure doEnableFocus; virtual;
|
||||
function doTryCloseBrowser : boolean; virtual;
|
||||
procedure doAddPreferenceObserver(const name_ : ustring); virtual;
|
||||
|
||||
function MustCreateAudioHandler : boolean; virtual;
|
||||
function MustCreateCommandHandler : boolean; virtual;
|
||||
function MustCreateDevToolsMessageObserver : boolean; virtual;
|
||||
function MustCreateSettingObserver : boolean; virtual;
|
||||
function MustCreateLoadHandler : boolean; virtual;
|
||||
function MustCreateFocusHandler : boolean; virtual;
|
||||
function MustCreateContextMenuHandler : boolean; virtual;
|
||||
@ -1116,6 +1139,25 @@ type
|
||||
/// </summary>
|
||||
procedure ToggleAudioMuted;
|
||||
/// <summary>
|
||||
/// Add an observer for preference changes. |name| is the name of the
|
||||
/// preference to observe. If |name| is NULL then all preferences will be
|
||||
/// observed. Observing all preferences has performance consequences and is
|
||||
/// not recommended outside of testing scenarios. The observer will remain
|
||||
/// registered until the returned Registration object is destroyed. This
|
||||
/// function must be called on the browser process UI thread.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_preference_capi.h">CEF source file: /include/capi/cef_preference_capi.h (cef_preference_manager_t)</see></para>
|
||||
/// </remarks>
|
||||
procedure AddPreferenceObserver(const name_: ustring);
|
||||
/// <summary>
|
||||
/// Remove an observer for preference changes.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_preference_capi.h">CEF source file: /include/capi/cef_preference_capi.h (cef_preference_manager_t)</see></para>
|
||||
/// </remarks>
|
||||
procedure RemovePreferenceObserver(const name_ : ustring);
|
||||
/// <summary>
|
||||
/// Used to delete cookies immediately or asynchronously. If aDeleteImmediately is false TChromiumCore.DeleteCookies triggers
|
||||
/// the TChromiumCore.OnCookiesDeleted event when the cookies are deleted.
|
||||
/// </summary>
|
||||
@ -1217,6 +1259,15 @@ type
|
||||
/// </summary>
|
||||
function AddDevToolsMessageObserver(const observer: ICefDevToolsMessageObserver): ICefRegistration;
|
||||
/// <summary>
|
||||
/// Add an observer for content and website setting changes. The observer will
|
||||
/// remain registered until the returned Registration object is destroyed.
|
||||
/// This function must be called on the browser process UI thread.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_request_context_capi.h">CEF source file: /include/capi/cef_request_context_capi.h (cef_request_context_t)</see></para>
|
||||
/// </remarks>
|
||||
function AddSettingObserver(const observer: ICefSettingObserver): ICefRegistration;
|
||||
/// <summary>
|
||||
/// <para>Search for |searchText|. |forward| indicates whether to search forward or
|
||||
/// backward within the page. |matchCase| indicates whether the search should
|
||||
/// be case-sensitive. |findNext| indicates whether this is the first request
|
||||
@ -3960,6 +4011,25 @@ type
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_permission_handler_capi.h">CEF source file: /include/capi/cef_permission_handler_capi.h (cef_permission_handler_t)</see></para>
|
||||
/// </remarks>
|
||||
property OnDismissPermissionPrompt : TOnDismissPermissionPromptEvent read FOnDismissPermissionPrompt write FOnDismissPermissionPrompt;
|
||||
/// <summary>
|
||||
/// Called when a preference has changed. The new value can be retrieved using
|
||||
/// ICefRequestContext.GetPreference.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>This event will be called on the browser process CEF UI thread.</para>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_preference_capi.h">CEF source file: /include/capi/cef_preference_capi.h (cef_preference_observer_t)</see></para>
|
||||
/// </remarks>
|
||||
property OnPreferenceChanged : TOnPreferenceChangedEvent read FOnPreferenceChanged write FOnPreferenceChanged;
|
||||
/// <summary>
|
||||
/// Called when a content or website setting has changed. The new value can be
|
||||
/// retrieved using ICefRequestContext.GetContentSetting or
|
||||
/// ICefRequestContext.GetWebsiteSetting.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>This event will be called on the browser process CEF UI thread.</para>
|
||||
/// <para><see href="https://bitbucket.org/chromiumembedded/cef/src/master/include/capi/cef_preference_capi.h">CEF source file: /include/capi/cef_preference_capi.h (cef_setting_observer_t)</see></para>
|
||||
/// </remarks>
|
||||
property OnSettingChanged : TOnSettingChangedEvent read FOnSettingChanged write FOnSettingChanged;
|
||||
end;
|
||||
|
||||
TBrowserInfo = class
|
||||
@ -4074,6 +4144,10 @@ begin
|
||||
FMediaObserverReg := nil;
|
||||
FDevToolsMsgObserver := nil;
|
||||
FDevToolsMsgObserverReg := nil;
|
||||
FSettingObserver := nil;
|
||||
FSettingObserverReg := nil;
|
||||
FPreferenceInfoList := nil;
|
||||
FPreferenceInfoCS := nil;
|
||||
FOptions := nil;
|
||||
FFontOptions := nil;
|
||||
FDefaultEncoding := '';
|
||||
@ -4187,13 +4261,14 @@ begin
|
||||
|
||||
DestroyAllBrowsers;
|
||||
|
||||
if (FWindowInfo <> nil) then FreeAndNil(FWindowInfo);
|
||||
if (FDevWindowInfo <> nil) then FreeAndNil(FDevWindowInfo);
|
||||
if (FFontOptions <> nil) then FreeAndNil(FFontOptions);
|
||||
if (FOptions <> nil) then FreeAndNil(FOptions);
|
||||
if (FPDFPrintOptions <> nil) then FreeAndNil(FPDFPrintOptions);
|
||||
if (FZoomStepCS <> nil) then FreeAndNil(FZoomStepCS);
|
||||
if (FBrowsersCS <> nil) then FreeAndNil(FBrowsersCS);
|
||||
if (FWindowInfo <> nil) then FreeAndNil(FWindowInfo);
|
||||
if (FDevWindowInfo <> nil) then FreeAndNil(FDevWindowInfo);
|
||||
if (FFontOptions <> nil) then FreeAndNil(FFontOptions);
|
||||
if (FOptions <> nil) then FreeAndNil(FOptions);
|
||||
if (FPDFPrintOptions <> nil) then FreeAndNil(FPDFPrintOptions);
|
||||
if (FZoomStepCS <> nil) then FreeAndNil(FZoomStepCS);
|
||||
if (FBrowsersCS <> nil) then FreeAndNil(FBrowsersCS);
|
||||
if (FPreferenceInfoCS <> nil) then FreeAndNil(FPreferenceInfoCS);
|
||||
except
|
||||
on e : exception do
|
||||
if CustomExceptionHandler('TChromiumCore.Destroy', e) then raise;
|
||||
@ -4390,8 +4465,22 @@ begin
|
||||
FDevToolsMsgObserver := nil;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.DestroySettingObserver;
|
||||
begin
|
||||
FSettingObserverReg := nil;
|
||||
FSettingObserver := nil;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.DestroyPreferenceObserver;
|
||||
begin
|
||||
if (FPreferenceInfoList <> nil) then
|
||||
FreeAndNil(FPreferenceInfoList);
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.DestroyAllHandlersAndObservers;
|
||||
begin
|
||||
DestroySettingObserver;
|
||||
DestroyPreferenceObserver;
|
||||
DestroyDevToolsMsgObserver;
|
||||
DestroyMediaObserver;
|
||||
DestroyResourceRequestHandler;
|
||||
@ -4413,6 +4502,19 @@ begin
|
||||
FDevToolsMsgObserver := TCustomDevToolsMessageObserver.Create(self);
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.CreateSettingObserver;
|
||||
begin
|
||||
if MustCreateSettingObserver and
|
||||
(FSettingObserver = nil) then
|
||||
FSettingObserver := TCustomSettingObserver.Create(self);
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.CreatePreferenceObserver;
|
||||
begin
|
||||
if (FPreferenceInfoList = nil) then
|
||||
FPreferenceInfoList := TPreferenceInfoList.Create;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.CreateResourceRequestHandler;
|
||||
begin
|
||||
if MustCreateResourceRequestHandler and
|
||||
@ -4434,8 +4536,9 @@ procedure TChromiumCore.CreateSyncObjects;
|
||||
begin
|
||||
if (Owner = nil) or not(csDesigning in ComponentState) then
|
||||
begin
|
||||
FZoomStepCS := TCriticalSection.Create;
|
||||
FBrowsersCS := TCriticalSection.Create;
|
||||
FZoomStepCS := TCriticalSection.Create;
|
||||
FBrowsersCS := TCriticalSection.Create;
|
||||
FPreferenceInfoCS := TCriticalSection.Create;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -4510,6 +4613,8 @@ begin
|
||||
CreateResourceRequestHandler;
|
||||
CreateMediaObserver;
|
||||
CreateDevToolsMsgObserver;
|
||||
CreatePreferenceObserver;
|
||||
CreateSettingObserver;
|
||||
|
||||
aClient := FHandler;
|
||||
Result := True;
|
||||
@ -4688,6 +4793,12 @@ begin
|
||||
FOnShowPermissionPrompt := nil;
|
||||
FOnDismissPermissionPrompt := nil;
|
||||
|
||||
// ICefPreferenceObserver
|
||||
FOnPreferenceChanged := nil;
|
||||
|
||||
// ICefSettingObserver
|
||||
FOnSettingChanged := nil;
|
||||
|
||||
// Custom
|
||||
FOnTextResultAvailable := nil;
|
||||
FOnPdfPrintFinished := nil;
|
||||
@ -4758,6 +4869,8 @@ begin
|
||||
CreateResourceRequestHandler;
|
||||
CreateMediaObserver;
|
||||
CreateDevToolsMsgObserver;
|
||||
CreatePreferenceObserver;
|
||||
CreateSettingObserver;
|
||||
|
||||
if (aContext = nil) then
|
||||
TempOldContext := TCefRequestContextRef.Global()
|
||||
@ -4811,6 +4924,8 @@ begin
|
||||
CreateResourceRequestHandler;
|
||||
CreateMediaObserver;
|
||||
CreateDevToolsMsgObserver;
|
||||
CreatePreferenceObserver;
|
||||
CreateSettingObserver;
|
||||
|
||||
if (aContext = nil) then
|
||||
TempOldContext := TCefRequestContextRef.Global()
|
||||
@ -6926,6 +7041,33 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.AddPreferenceObserver(const name_: ustring);
|
||||
var
|
||||
TempTask : ICefTask;
|
||||
begin
|
||||
if CefCurrentlyOn(TID_UI) then
|
||||
doAddPreferenceObserver(name_)
|
||||
else
|
||||
if Initialized then
|
||||
try
|
||||
TempTask := TCefAddPreferenceObserverTask.Create(self, name_);
|
||||
CefPostTask(TID_UI, TempTask);
|
||||
finally
|
||||
TempTask := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.RemovePreferenceObserver(const name_ : ustring);
|
||||
begin
|
||||
if assigned(FPreferenceInfoCS) then
|
||||
try
|
||||
FPreferenceInfoCS.Acquire;
|
||||
FPreferenceInfoList.RemovePreference(name_);
|
||||
finally
|
||||
FPreferenceInfoCS.Release;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TChromiumCore.GetRequestContext : ICefRequestContext;
|
||||
begin
|
||||
if Initialized then
|
||||
@ -7898,6 +8040,26 @@ begin
|
||||
FTryingToCloseBrowser := False;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.doAddPreferenceObserver(const name_ : ustring);
|
||||
var
|
||||
TempContext : ICefRequestContext;
|
||||
i : integer;
|
||||
begin
|
||||
if assigned(FPreferenceInfoCS) and Initialized then
|
||||
try
|
||||
FPreferenceInfoCS.Acquire;
|
||||
TempContext := Browser.Host.RequestContext;
|
||||
|
||||
if (TempContext <> nil) and not(FPreferenceInfoList.HasPreference(name_)) then
|
||||
begin
|
||||
i := FPreferenceInfoList.AddPreference(name_, self);
|
||||
TempContext.AddPreferenceObserver(name, TPreferenceInfo(FPreferenceInfoList[i]).Observer);
|
||||
end;
|
||||
finally
|
||||
FPreferenceInfoCS.Release;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.doEnableFocus;
|
||||
begin
|
||||
FCanFocus := True;
|
||||
@ -8108,6 +8270,11 @@ begin
|
||||
assigned(FOnDevToolsAgentDetached);
|
||||
end;
|
||||
|
||||
function TChromiumCore.MustCreateSettingObserver : boolean;
|
||||
begin
|
||||
Result := assigned(FOnSettingChanged);
|
||||
end;
|
||||
|
||||
function TChromiumCore.MustCreatePrintHandler : boolean;
|
||||
begin
|
||||
Result := assigned(FOnPrintStart) or
|
||||
@ -8295,6 +8462,21 @@ begin
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
function TChromiumCore.AddSettingObserver(const observer: ICefSettingObserver): ICefRegistration;
|
||||
var
|
||||
TempContext : ICefRequestContext;
|
||||
begin
|
||||
Result := nil;
|
||||
|
||||
if Initialized then
|
||||
begin
|
||||
TempContext := Browser.Host.RequestContext;
|
||||
|
||||
if (TempContext <> nil) then
|
||||
Result := TempContext.AddSettingObserver(observer);
|
||||
end;
|
||||
end;
|
||||
|
||||
{$IFDEF MSWINDOWS}
|
||||
procedure TChromiumCore.WndProc(var aMessage: TMessage);
|
||||
begin
|
||||
@ -8508,6 +8690,9 @@ begin
|
||||
if (FDevToolsMsgObserver <> nil) and (FDevToolsMsgObserverReg = nil) then
|
||||
FDevToolsMsgObserverReg := AddDevToolsMessageObserver(FDevToolsMsgObserver);
|
||||
|
||||
if (FSettingObserver <> nil) and (FSettingObserverReg = nil) then
|
||||
FSettingObserverReg := AddSettingObserver(FSettingObserver);
|
||||
|
||||
if assigned(FOnAfterCreated) then
|
||||
FOnAfterCreated(Self, browser);
|
||||
|
||||
@ -9142,6 +9327,18 @@ begin
|
||||
FOnDismissPermissionPrompt(self, browser, prompt_id, result);
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.doOnPreferenceChanged(const name_: ustring);
|
||||
begin
|
||||
if assigned(FOnPreferenceChanged) then
|
||||
FOnPreferenceChanged(self, name_);
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.doOnSettingChanged(const requesting_url, top_level_url : ustring; content_type: TCefContentSettingTypes);
|
||||
begin
|
||||
if assigned(FOnSettingChanged) then
|
||||
FOnSettingChanged(self, requesting_url, top_level_url, content_type);
|
||||
end;
|
||||
|
||||
procedure TChromiumCore.doOnFullScreenModeChange(const browser : ICefBrowser;
|
||||
fullscreen : Boolean);
|
||||
begin
|
||||
|
Reference in New Issue
Block a user