1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-02-02 10:25:26 +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 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 :
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%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)
* [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 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%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 64 bits](https://cef-builds.spotifycdn.com/cef_binary_90.6.3%2Bgc53c523%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)
* [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.4%2Bgf03d75a%2Bchromium-90.0.4430.93_windows64.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.4%2Bgf03d75a%2Bchromium-90.0.4430.93_linux64.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.4%2Bgf03d75a%2Bchromium-90.0.4430.93_linuxarm64.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.

View File

@ -21,7 +21,7 @@
</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."/>
<License Value="MPL 1.1"/>
<Version Major="90" Minor="6" Release="3"/>
<Version Major="90" Minor="6" Release="4"/>
<Files Count="201">
<Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>

View File

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

View File

@ -36,8 +36,8 @@
*)
unit uCEFRequestContextHandler;
{$IFDEF FPC}
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
@ -49,6 +49,11 @@ unit uCEFRequestContextHandler;
interface
uses
{$IFDEF DELPHI16_UP}
System.SysUtils,
{$ELSE}
SysUtils,
{$ENDIF}
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
type
@ -103,10 +108,10 @@ procedure cef_request_context_handler_on_request_context_initialized(self
var
TempObject : TObject;
begin
TempObject := CefGetObject(self);
TempObject := CefGetObject(self);
if (TempObject <> nil) and (TempObject is TCefRequestContextHandlerOwn) then
TCefRequestContextHandlerOwn(TempObject).OnRequestContextInitialized(TCefRequestContextRef.UnWrap(request_context));
TCefRequestContextHandlerOwn(TempObject).OnRequestContextInitialized(TCefRequestContextRef.UnWrap(request_context));
end;
function cef_request_context_handler_on_before_plugin_load( self : PCefRequestContextHandler;
@ -121,9 +126,9 @@ var
TempPolicy : TCefPluginPolicy;
begin
Result := Ord(False);
TempObject := CefGetObject(self);
TempPolicy := plugin_policy^;
TempObject := CefGetObject(self);
TempPolicy := plugin_policy^;
if (TempObject <> nil) and (TempObject is TCefRequestContextHandlerOwn) then
Result := Ord(TCefRequestContextHandlerOwn(TempObject).OnBeforePluginLoad(CefString(mime_type),
CefString(plugin_url),
@ -149,9 +154,9 @@ var
begin
Result := nil;
TempResourceRequestHandler := nil;
TempObject := CefGetObject(self);
TempDisableDefHandling := disable_default_handling^ <> 0;
TempObject := CefGetObject(self);
TempDisableDefHandling := disable_default_handling^ <> 0;
if (TempObject <> nil) and (TempObject is TCefRequestContextHandlerOwn) then
try
TCefRequestContextHandlerOwn(TempObject).GetResourceRequestHandler(TCefBrowserRef.UnWrap(browser),
@ -184,7 +189,7 @@ end;
procedure TCefRequestContextHandlerOwn.OnRequestContextInitialized(const request_context: ICefRequestContext);
begin
//
//
end;
function TCefRequestContextHandlerOwn.OnBeforePluginLoad(const mimeType : ustring;
@ -206,12 +211,12 @@ procedure TCefRequestContextHandlerOwn.GetResourceRequestHandler(const browser
var disable_default_handling : boolean;
var aResourceRequestHandler : ICefResourceRequestHandler);
begin
aResourceRequestHandler := nil;
aResourceRequestHandler := nil;
end;
procedure TCefRequestContextHandlerOwn.RemoveReferences;
begin
//
//
end;
@ -219,7 +224,8 @@ end;
procedure TCefRequestContextHandlerRef.OnRequestContextInitialized(const request_context: ICefRequestContext);
begin
PCefRequestContextHandler(FData)^.on_request_context_initialized(PCefRequestContextHandler(FData), CefGetData(request_context));
PCefRequestContextHandler(FData)^.on_request_context_initialized(PCefRequestContextHandler(FData), CefGetData(request_context));
end;
function TCefRequestContextHandlerRef.OnBeforePluginLoad(const mimeType : ustring;
@ -259,27 +265,28 @@ var
TempResourceRequestHandler : PCefResourceRequestHandler;
begin
TempRequestInitiator := CefString(request_initiator);
TempDisableDefaultHandling := ord(disable_default_handling);
TempResourceRequestHandler := PCefRequestContextHandler(FData)^.get_resource_request_handler(PCefRequestContextHandler(FData),
CefGetData(browser),
CefGetData(frame),
CefGetData(request),
ord(is_navigation),
ord(is_download),
@TempRequestInitiator,
TempDisableDefaultHandling := ord(disable_default_handling);
TempResourceRequestHandler := PCefRequestContextHandler(FData)^.get_resource_request_handler(PCefRequestContextHandler(FData),
CefGetData(browser),
CefGetData(frame),
CefGetData(request),
ord(is_navigation),
ord(is_download),
@TempRequestInitiator,
@TempDisableDefaultHandling);
disable_default_handling := TempDisableDefaultHandling <> 0;
if (TempResourceRequestHandler <> nil) then
aResourceRequestHandler := TCefResourceRequestHandlerRef.UnWrap(TempResourceRequestHandler)
disable_default_handling := TempDisableDefaultHandling <> 0;
if (TempResourceRequestHandler <> nil) then
aResourceRequestHandler := TCefResourceRequestHandlerRef.UnWrap(TempResourceRequestHandler)
else
aResourceRequestHandler := nil;
end;
end;
procedure TCefRequestContextHandlerRef.RemoveReferences;
begin
//
//
end;
class function TCefRequestContextHandlerRef.UnWrap(data: Pointer): ICefRequestContextHandler;
@ -314,10 +321,13 @@ end;
procedure TCustomRequestContextHandler.OnRequestContextInitialized(const request_context: ICefRequestContext);
begin
if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnRequestContextInitialized(request_context)
else
inherited OnRequestContextInitialized(request_context);
try
if (FEvents <> nil) then
IChromiumEvents(FEvents).doOnRequestContextInitialized(request_context);
except
on e : exception do
if CustomExceptionHandler('TCustomRequestContextHandler.OnRequestContextInitialized', e) then raise;
end;
end;
function TCustomRequestContextHandler.OnBeforePluginLoad(const mimeType : ustring;
@ -327,20 +337,20 @@ function TCustomRequestContextHandler.OnBeforePluginLoad(const mimeType : us
const pluginInfo : ICefWebPluginInfo;
var pluginPolicy : TCefPluginPolicy): Boolean;
begin
if (FEvents <> nil) then
Result := IChromiumEvents(FEvents).doOnBeforePluginLoad(mimeType,
pluginUrl,
isMainFrame,
topOriginUrl,
pluginInfo,
pluginPolicy)
else
Result := inherited OnBeforePluginLoad(mimeType,
pluginUrl,
isMainFrame,
topOriginUrl,
pluginInfo,
pluginPolicy);
Result := False;
try
if (FEvents <> nil) then
Result := IChromiumEvents(FEvents).doOnBeforePluginLoad(mimeType,
pluginUrl,
isMainFrame,
topOriginUrl,
pluginInfo,
pluginPolicy);
except
on e : exception do
if CustomExceptionHandler('TCustomRequestContextHandler.OnBeforePluginLoad', e) then raise;
end;
end;
procedure TCustomRequestContextHandler.GetResourceRequestHandler(const browser : ICefBrowser;
@ -352,24 +362,20 @@ procedure TCustomRequestContextHandler.GetResourceRequestHandler(const browser
var disable_default_handling : boolean;
var aResourceRequestHandler : ICefResourceRequestHandler);
begin
if (FEvents <> nil) then
IChromiumEvents(FEvents).doGetResourceRequestHandler_ReqCtxHdlr(browser,
frame,
request,
is_navigation,
is_download,
request_initiator,
disable_default_handling,
aResourceRequestHandler)
else
inherited GetResourceRequestHandler(browser,
frame,
request,
is_navigation,
is_download,
request_initiator,
disable_default_handling,
aResourceRequestHandler);
try
if (FEvents <> nil) then
IChromiumEvents(FEvents).doGetResourceRequestHandler_ReqCtxHdlr(browser,
frame,
request,
is_navigation,
is_download,
request_initiator,
disable_default_handling,
aResourceRequestHandler);
except
on e : exception do
if CustomExceptionHandler('TCustomRequestContextHandler.GetResourceRequestHandler', e) then raise;
end;
end;

View File

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

View File

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