1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-04-17 06:57:13 +02:00

Update to CEF 90.6.4

Added try..except blocks to TCustomRequestContextHandler and TCustomResourceRequestHandler events.
This commit is contained in:
Salvador Díaz Fau 2021-05-05 14:41:13 +02:00
parent d24eec2794
commit ff05abbe1b
6 changed files with 139 additions and 103 deletions

View File

@ -3,15 +3,15 @@ CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chro
CEF4Delphi is based on DCEF3 and fpCEF3. The original license of those projects still applies to CEF4Delphi. Read the license terms in the first lines of any *.pas file. CEF4Delphi is based on DCEF3 and fpCEF3. The original license of those projects still applies to CEF4Delphi. Read the license terms in the first lines of any *.pas file.
CEF4Delphi uses CEF 90.6.3 which includes Chromium 90.0.4430.93. CEF4Delphi uses CEF 90.6.4 which includes Chromium 90.0.4430.93.
The CEF binaries used by CEF4Delphi are available for download at spotify : The CEF binaries used by CEF4Delphi are available for download at spotify :
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_windows32.tar.bz2) * [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_windows64.tar.bz2) * [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_linux32.tar.bz2) * [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_linux64.tar.bz2) * [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_linuxarm.tar.bz2) * [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_linuxarm64.tar.bz2) * [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%2Bchromium-90.0.4430.93_macosx64.tar.bz2) * [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.4%2Bgf03d75a%2Bchromium-90.0.4430.93_macosx64.tar.bz2)
CEF4Delphi was developed and tested on Delphi 10.4.2 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3 and Lazarus 2.0.12/FPC 3.2.0. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components. CEF4Delphi was developed and tested on Delphi 10.4.2 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3 and Lazarus 2.0.12/FPC 3.2.0. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.

View File

@ -21,7 +21,7 @@
</CompilerOptions> </CompilerOptions>
<Description Value="CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC."/> <Description Value="CEF4Delphi is an open source project created by Salvador Díaz Fau to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC."/>
<License Value="MPL 1.1"/> <License Value="MPL 1.1"/>
<Version Major="90" Minor="6" Release="3"/> <Version Major="90" Minor="6" Release="4"/>
<Files Count="201"> <Files Count="201">
<Item1> <Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/> <Filename Value="..\source\uCEFAccessibilityHandler.pas"/>

View File

@ -66,7 +66,7 @@ uses
const const
CEF_SUPPORTED_VERSION_MAJOR = 90; CEF_SUPPORTED_VERSION_MAJOR = 90;
CEF_SUPPORTED_VERSION_MINOR = 6; CEF_SUPPORTED_VERSION_MINOR = 6;
CEF_SUPPORTED_VERSION_RELEASE = 3; CEF_SUPPORTED_VERSION_RELEASE = 4;
CEF_SUPPORTED_VERSION_BUILD = 0; CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 90; CEF_CHROMEELF_VERSION_MAJOR = 90;

View File

@ -49,6 +49,11 @@ unit uCEFRequestContextHandler;
interface interface
uses uses
{$IFDEF DELPHI16_UP}
System.SysUtils,
{$ELSE}
SysUtils,
{$ENDIF}
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes; uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
type type
@ -219,6 +224,7 @@ end;
procedure TCefRequestContextHandlerRef.OnRequestContextInitialized(const request_context: ICefRequestContext); procedure TCefRequestContextHandlerRef.OnRequestContextInitialized(const request_context: ICefRequestContext);
begin begin
PCefRequestContextHandler(FData)^.on_request_context_initialized(PCefRequestContextHandler(FData), CefGetData(request_context)); PCefRequestContextHandler(FData)^.on_request_context_initialized(PCefRequestContextHandler(FData), CefGetData(request_context));
end; end;
@ -261,6 +267,7 @@ begin
TempRequestInitiator := CefString(request_initiator); TempRequestInitiator := CefString(request_initiator);
TempDisableDefaultHandling := ord(disable_default_handling); TempDisableDefaultHandling := ord(disable_default_handling);
TempResourceRequestHandler := PCefRequestContextHandler(FData)^.get_resource_request_handler(PCefRequestContextHandler(FData), TempResourceRequestHandler := PCefRequestContextHandler(FData)^.get_resource_request_handler(PCefRequestContextHandler(FData),
CefGetData(browser), CefGetData(browser),
CefGetData(frame), CefGetData(frame),
CefGetData(request), CefGetData(request),
@ -314,10 +321,13 @@ end;
procedure TCustomRequestContextHandler.OnRequestContextInitialized(const request_context: ICefRequestContext); procedure TCustomRequestContextHandler.OnRequestContextInitialized(const request_context: ICefRequestContext);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnRequestContextInitialized(request_context) IChromiumEvents(FEvents).doOnRequestContextInitialized(request_context);
else except
inherited OnRequestContextInitialized(request_context); on e : exception do
if CustomExceptionHandler('TCustomRequestContextHandler.OnRequestContextInitialized', e) then raise;
end;
end; end;
function TCustomRequestContextHandler.OnBeforePluginLoad(const mimeType : ustring; function TCustomRequestContextHandler.OnBeforePluginLoad(const mimeType : ustring;
@ -327,20 +337,20 @@ function TCustomRequestContextHandler.OnBeforePluginLoad(const mimeType : us
const pluginInfo : ICefWebPluginInfo; const pluginInfo : ICefWebPluginInfo;
var pluginPolicy : TCefPluginPolicy): Boolean; var pluginPolicy : TCefPluginPolicy): Boolean;
begin begin
Result := False;
try
if (FEvents <> nil) then if (FEvents <> nil) then
Result := IChromiumEvents(FEvents).doOnBeforePluginLoad(mimeType, Result := IChromiumEvents(FEvents).doOnBeforePluginLoad(mimeType,
pluginUrl,
isMainFrame,
topOriginUrl,
pluginInfo,
pluginPolicy)
else
Result := inherited OnBeforePluginLoad(mimeType,
pluginUrl, pluginUrl,
isMainFrame, isMainFrame,
topOriginUrl, topOriginUrl,
pluginInfo, pluginInfo,
pluginPolicy); pluginPolicy);
except
on e : exception do
if CustomExceptionHandler('TCustomRequestContextHandler.OnBeforePluginLoad', e) then raise;
end;
end; end;
procedure TCustomRequestContextHandler.GetResourceRequestHandler(const browser : ICefBrowser; procedure TCustomRequestContextHandler.GetResourceRequestHandler(const browser : ICefBrowser;
@ -352,17 +362,9 @@ procedure TCustomRequestContextHandler.GetResourceRequestHandler(const browser
var disable_default_handling : boolean; var disable_default_handling : boolean;
var aResourceRequestHandler : ICefResourceRequestHandler); var aResourceRequestHandler : ICefResourceRequestHandler);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doGetResourceRequestHandler_ReqCtxHdlr(browser, IChromiumEvents(FEvents).doGetResourceRequestHandler_ReqCtxHdlr(browser,
frame,
request,
is_navigation,
is_download,
request_initiator,
disable_default_handling,
aResourceRequestHandler)
else
inherited GetResourceRequestHandler(browser,
frame, frame,
request, request,
is_navigation, is_navigation,
@ -370,6 +372,10 @@ begin
request_initiator, request_initiator,
disable_default_handling, disable_default_handling,
aResourceRequestHandler); aResourceRequestHandler);
except
on e : exception do
if CustomExceptionHandler('TCustomRequestContextHandler.GetResourceRequestHandler', e) then raise;
end;
end; end;

View File

@ -558,7 +558,8 @@ procedure TCustomResourceRequestHandler.RemoveReferences;
begin begin
FEvents := nil; FEvents := nil;
if (FCookieAccessFilter <> nil) then FCookieAccessFilter.RemoveReferences; if (FCookieAccessFilter <> nil) then
FCookieAccessFilter.RemoveReferences;
end; end;
procedure TCustomResourceRequestHandler.InitializeVars; procedure TCustomResourceRequestHandler.InitializeVars;
@ -583,10 +584,15 @@ function TCustomResourceRequestHandler.OnBeforeResourceLoad(const browser : ICe
const request : ICefRequest; const request : ICefRequest;
const callback : ICefRequestCallback): TCefReturnValue; const callback : ICefRequestCallback): TCefReturnValue;
begin begin
Result := RV_CONTINUE;
try
if (FEvents <> nil) then if (FEvents <> nil) then
Result := IChromiumEvents(FEvents).doOnBeforeResourceLoad(browser, frame, request, callback) Result := IChromiumEvents(FEvents).doOnBeforeResourceLoad(browser, frame, request, callback);
else except
Result := inherited OnBeforeResourceLoad(browser, frame, request, callback); on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.OnBeforeResourceLoad', e) then raise;
end;
end; end;
procedure TCustomResourceRequestHandler.GetResourceHandler(const browser : ICefBrowser; procedure TCustomResourceRequestHandler.GetResourceHandler(const browser : ICefBrowser;
@ -594,10 +600,13 @@ procedure TCustomResourceRequestHandler.GetResourceHandler(const browser
const request : ICefRequest; const request : ICefRequest;
var aResourceHandler : ICefResourceHandler); var aResourceHandler : ICefResourceHandler);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnGetResourceHandler(browser, frame, request, aResourceHandler) IChromiumEvents(FEvents).doOnGetResourceHandler(browser, frame, request, aResourceHandler);
else except
inherited GetResourceHandler(browser, frame, request, aResourceHandler); on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.GetResourceHandler', e) then raise;
end;
end; end;
procedure TCustomResourceRequestHandler.OnResourceRedirect(const browser : ICefBrowser; procedure TCustomResourceRequestHandler.OnResourceRedirect(const browser : ICefBrowser;
@ -606,8 +615,13 @@ procedure TCustomResourceRequestHandler.OnResourceRedirect(const browser : ICef
const response : ICefResponse; const response : ICefResponse;
var newUrl : ustring); var newUrl : ustring);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnResourceRedirect(browser, frame, request, response, newUrl); IChromiumEvents(FEvents).doOnResourceRedirect(browser, frame, request, response, newUrl);
except
on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.OnResourceRedirect', e) then raise;
end;
end; end;
function TCustomResourceRequestHandler.OnResourceResponse(const browser : ICefBrowser; function TCustomResourceRequestHandler.OnResourceResponse(const browser : ICefBrowser;
@ -615,10 +629,15 @@ function TCustomResourceRequestHandler.OnResourceResponse(const browser : ICefB
const request : ICefRequest; const request : ICefRequest;
const response : ICefResponse): Boolean; const response : ICefResponse): Boolean;
begin begin
Result := False;
try
if (FEvents <> nil) then if (FEvents <> nil) then
Result := IChromiumEvents(FEvents).doOnResourceResponse(browser, frame, request, response) Result := IChromiumEvents(FEvents).doOnResourceResponse(browser, frame, request, response);
else except
Result := inherited OnResourceResponse(browser, frame, request, response); on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.OnResourceResponse', e) then raise;
end;
end; end;
procedure TCustomResourceRequestHandler.GetResourceResponseFilter(const browser : ICefBrowser; procedure TCustomResourceRequestHandler.GetResourceResponseFilter(const browser : ICefBrowser;
@ -627,10 +646,13 @@ procedure TCustomResourceRequestHandler.GetResourceResponseFilter(const browser
const response : ICefResponse; const response : ICefResponse;
var aResponseFilter : ICefResponseFilter); var aResponseFilter : ICefResponseFilter);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnGetResourceResponseFilter(browser, frame, request, response, aResponseFilter) IChromiumEvents(FEvents).doOnGetResourceResponseFilter(browser, frame, request, response, aResponseFilter);
else except
inherited GetResourceResponseFilter(browser, frame, request, response, aResponseFilter); on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.GetResourceResponseFilter', e) then raise;
end;
end; end;
procedure TCustomResourceRequestHandler.OnResourceLoadComplete(const browser : ICefBrowser; procedure TCustomResourceRequestHandler.OnResourceLoadComplete(const browser : ICefBrowser;
@ -640,8 +662,13 @@ procedure TCustomResourceRequestHandler.OnResourceLoadComplete(const browser
status : TCefUrlRequestStatus; status : TCefUrlRequestStatus;
receivedContentLength : Int64); receivedContentLength : Int64);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnResourceLoadComplete(browser, frame, request, response, status, receivedContentLength); IChromiumEvents(FEvents).doOnResourceLoadComplete(browser, frame, request, response, status, receivedContentLength);
except
on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.OnResourceLoadComplete', e) then raise;
end;
end; end;
procedure TCustomResourceRequestHandler.OnProtocolExecution(const browser : ICefBrowser; procedure TCustomResourceRequestHandler.OnProtocolExecution(const browser : ICefBrowser;
@ -649,10 +676,13 @@ procedure TCustomResourceRequestHandler.OnProtocolExecution(const browser
const request : ICefRequest; const request : ICefRequest;
var allowOsExecution : Boolean); var allowOsExecution : Boolean);
begin begin
try
if (FEvents <> nil) then if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnProtocolExecution(browser, frame, request, allowOsExecution); IChromiumEvents(FEvents).doOnProtocolExecution(browser, frame, request, allowOsExecution);
except
on e : exception do
if CustomExceptionHandler('TCustomResourceRequestHandler.OnProtocolExecution', e) then raise;
end;
end; end;
end. end.

View File

@ -2,9 +2,9 @@
"UpdateLazPackages" : [ "UpdateLazPackages" : [
{ {
"ForceNotify" : true, "ForceNotify" : true,
"InternalVersion" : 286, "InternalVersion" : 287,
"Name" : "cef4delphi_lazarus.lpk", "Name" : "cef4delphi_lazarus.lpk",
"Version" : "90.6.3.0" "Version" : "90.6.4.0"
} }
], ],
"UpdatePackageData" : { "UpdatePackageData" : {