1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-11-23 21:34:53 +02:00

Update to CEF 89.0.15

Added TCefApplicationCore.LastErrorMessage property as requested in #356
This commit is contained in:
Salvador Díaz Fau
2021-03-25 13:00:37 +01:00
parent 9d61871ea1
commit 19831611d4
5 changed files with 92 additions and 86 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 89.0.12 which includes Chromium 89.0.4389.90. CEF4Delphi uses CEF 89.0.15 which includes Chromium 89.0.4389.90.
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_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_windows32.tar.bz2) * [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_windows64.tar.bz2) * [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_linux32.tar.bz2) * [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_linux64.tar.bz2) * [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_linuxarm.tar.bz2) * [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_linuxarm64.tar.bz2) * [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.12%2Bg2b76680%2Bchromium-89.0.4389.90_macosx64.tar.bz2) * [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.15%2Bgdef70e4%2Bchromium-89.0.4389.90_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

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<CONFIG> <CONFIG>
<Package Version="5"> <Package Version="4">
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Name Value="CEF4Delphi_Lazarus"/> <Name Value="CEF4Delphi_Lazarus"/>
<Type Value="RunAndDesignTime"/> <Type Value="RunAndDesignTime"/>
@@ -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="89" Release="7"/> <Version Major="89" Release="15"/>
<Files Count="201"> <Files Count="201">
<Item1> <Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/> <Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
@@ -846,7 +846,6 @@
<UnitName Value="uCEFOsrBrowserWindow"/> <UnitName Value="uCEFOsrBrowserWindow"/>
</Item201> </Item201>
</Files> </Files>
<CompatibilityMode Value="True"/>
<RequiredPkgs Count="5"> <RequiredPkgs Count="5">
<Item1> <Item1>
<PackageName Value="IDEIntf"/> <PackageName Value="IDEIntf"/>

View File

@@ -66,7 +66,7 @@ uses
const const
CEF_SUPPORTED_VERSION_MAJOR = 89; CEF_SUPPORTED_VERSION_MAJOR = 89;
CEF_SUPPORTED_VERSION_MINOR = 0; CEF_SUPPORTED_VERSION_MINOR = 0;
CEF_SUPPORTED_VERSION_RELEASE = 12; CEF_SUPPORTED_VERSION_RELEASE = 15;
CEF_SUPPORTED_VERSION_BUILD = 0; CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 89; CEF_CHROMEELF_VERSION_MAJOR = 89;
@@ -192,6 +192,7 @@ type
FForcedDeviceScaleFactor : single; FForcedDeviceScaleFactor : single;
FDisableZygote : boolean; FDisableZygote : boolean;
FUseMockKeyChain : boolean; FUseMockKeyChain : boolean;
FLastErrorMessage : ustring;
FPluginPolicy : TCefPluginPolicySwitch; FPluginPolicy : TCefPluginPolicySwitch;
FDefaultEncoding : ustring; FDefaultEncoding : ustring;
@@ -550,6 +551,7 @@ type
property ApiHashPlatform : ustring read GetApiHashPlatform; property ApiHashPlatform : ustring read GetApiHashPlatform;
property ApiHashCommit : ustring read GetApiHashCommit; property ApiHashCommit : ustring read GetApiHashCommit;
property SupportedSchemes : TStringList read FSupportedSchemes; property SupportedSchemes : TStringList read FSupportedSchemes;
property LastErrorMessage : ustring read FLastErrorMessage;
{$IFDEF LINUX} {$IFDEF LINUX}
property XDisplay : PXDisplay read GetXDisplay; property XDisplay : PXDisplay read GetXDisplay;
{$ENDIF} {$ENDIF}
@@ -770,6 +772,8 @@ begin
FDevToolsProtocolLogFile := ''; FDevToolsProtocolLogFile := '';
FForcedDeviceScaleFactor := 0; FForcedDeviceScaleFactor := 0;
FDisableZygote := False; FDisableZygote := False;
FUseMockKeyChain := False;
FLastErrorMessage := '';
FDisableJavascriptCloseWindows := False; FDisableJavascriptCloseWindows := False;
FDisableJavascriptAccessClipboard := False; FDisableJavascriptAccessClipboard := False;
@@ -1125,7 +1129,6 @@ end;
function TCefApplicationCore.CheckCEFResources : boolean; function TCefApplicationCore.CheckCEFResources : boolean;
var var
TempString : string;
TempMissingFrm, TempMissingRsc, TempMissingLoc, TempMissingSubProc : boolean; TempMissingFrm, TempMissingRsc, TempMissingLoc, TempMissingSubProc : boolean;
begin begin
Result := False; Result := False;
@@ -1137,15 +1140,15 @@ begin
if TempMissingFrm or TempMissingRsc or TempMissingLoc or TempMissingSubProc then if TempMissingFrm or TempMissingRsc or TempMissingLoc or TempMissingSubProc then
begin begin
FStatus := asErrorMissingFiles; FStatus := asErrorMissingFiles;
TempString := 'CEF binaries missing !'; FLastErrorMessage := 'CEF binaries missing !';
if (length(FMissingLibFiles) > 0) then if (length(FMissingLibFiles) > 0) then
TempString := TempString + CRLF + CRLF + FLastErrorMessage := FLastErrorMessage + CRLF + CRLF +
'The missing files are :' + CRLF + 'The missing files are :' + CRLF +
trim(FMissingLibFiles); trim(FMissingLibFiles);
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
end end
else else
Result := True; Result := True;
@@ -1154,7 +1157,6 @@ end;
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
function TCefApplicationCore.CheckCEFDLL : boolean; function TCefApplicationCore.CheckCEFDLL : boolean;
var var
TempString : string;
TempMachine : integer; TempMachine : integer;
TempVersionInfo : TFileVersionInfo; TempVersionInfo : TFileVersionInfo;
begin begin
@@ -1173,12 +1175,12 @@ begin
Result := True Result := True
else else
begin begin
FStatus := asErrorDLLVersion; FStatus := asErrorDLLVersion;
TempString := 'Wrong CEF binaries !' + FLastErrorMessage := 'Wrong CEF binaries !' +
CRLF + CRLF + CRLF + CRLF +
'Use the 32 bit CEF binaries with 32 bits applications only.'; 'Use the 32 bit CEF binaries with 32 bits applications only.';
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
end; end;
CEF_IMAGE_FILE_MACHINE_AMD64 : CEF_IMAGE_FILE_MACHINE_AMD64 :
@@ -1187,23 +1189,23 @@ begin
else else
begin begin
FStatus := asErrorDLLVersion; FStatus := asErrorDLLVersion;
TempString := 'Wrong CEF binaries !' + FLastErrorMessage := 'Wrong CEF binaries !' +
CRLF + CRLF + CRLF + CRLF +
'Use the 64 bit CEF binaries with 64 bits applications only.'; 'Use the 64 bit CEF binaries with 64 bits applications only.';
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
end; end;
else else
begin begin
FStatus := asErrorDLLVersion; FStatus := asErrorDLLVersion;
TempString := 'Unknown CEF binaries !' + FLastErrorMessage := 'Unknown CEF binaries !' +
CRLF + CRLF + CRLF + CRLF +
'Use only the CEF binaries specified in the CEF4Delphi Readme.md file at ' + 'Use only the CEF binaries specified in the CEF4Delphi Readme.md file at ' +
CEF4DELPHI_URL; CEF4DELPHI_URL;
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
end; end;
end end
else else
@@ -1212,17 +1214,17 @@ begin
else else
begin begin
FStatus := asErrorDLLVersion; FStatus := asErrorDLLVersion;
TempString := 'Unsupported CEF version !' + FLastErrorMessage := 'Unsupported CEF version !' +
CRLF + CRLF + CRLF + CRLF +
'Use only the CEF binaries specified in the CEF4Delphi Readme.md file at ' + 'Use only the CEF binaries specified in the CEF4Delphi Readme.md file at ' +
CEF4DELPHI_URL; CEF4DELPHI_URL;
if GetDLLVersion(LibCefPath, TempVersionInfo) then if GetDLLVersion(LibCefPath, TempVersionInfo) then
TempString := TempString + CRLF + CRLF + FLastErrorMessage := FLastErrorMessage + CRLF + CRLF +
'Expected ' + LIBCEF_DLL + ' version : ' + LibCefVersion + CRLF + 'Expected ' + LIBCEF_DLL + ' version : ' + LibCefVersion + CRLF +
'Found ' + LIBCEF_DLL + ' version : ' + FileVersionInfoToString(TempVersionInfo); 'Found ' + LIBCEF_DLL + ' version : ' + FileVersionInfoToString(TempVersionInfo);
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
end; end;
end; end;
{$ENDIF} {$ENDIF}
@@ -2548,7 +2550,7 @@ end;
function TCefApplicationCore.LoadCEFlibrary : boolean; function TCefApplicationCore.LoadCEFlibrary : boolean;
var var
TempOldDir, TempString : string; TempOldDir : string;
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
TempError : DWORD; TempError : DWORD;
{$ENDIF} {$ENDIF}
@@ -2557,10 +2559,10 @@ begin
if (FStatus <> asLoading) or FLibLoaded or (FLibHandle <> 0) then if (FStatus <> asLoading) or FLibLoaded or (FLibHandle <> 0) then
begin begin
FStatus := asErrorLoadingLibrary; FStatus := asErrorLoadingLibrary;
TempString := 'GlobalCEFApp can only be initialized once per process.'; FLastErrorMessage := 'GlobalCEFApp can only be initialized once per process.';
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
exit; exit;
end; end;
@@ -2585,15 +2587,15 @@ begin
FStatus := asErrorLoadingLibrary; FStatus := asErrorLoadingLibrary;
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
TempError := GetLastError; TempError := GetLastError;
TempString := 'Error loading ' + LIBCEF_DLL + CRLF + CRLF + FLastErrorMessage := 'Error loading ' + LIBCEF_DLL + CRLF + CRLF +
'Error code : 0x' + inttohex(TempError, 8) + CRLF + 'Error code : 0x' + inttohex(TempError, 8) + CRLF +
SysErrorMessage(TempError); SysErrorMessage(TempError);
{$ELSE} {$ELSE}
TempString := 'Error loading ' + LIBCEF_DLL; FLastErrorMessage := 'Error loading ' + LIBCEF_DLL;
{$ENDIF} {$ENDIF}
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
exit; exit;
end; end;
@@ -2659,13 +2661,13 @@ begin
end end
else else
begin begin
FStatus := asErrorDLLVersion; FStatus := asErrorDLLVersion;
TempString := 'Unsupported CEF version !' + FLastErrorMessage := 'Unsupported CEF version !' +
CRLF + CRLF + CRLF + CRLF +
'Use only the CEF binaries specified in the CEF4Delphi Readme.md file at ' + 'Use only the CEF binaries specified in the CEF4Delphi Readme.md file at ' +
CRLF + CEF4DELPHI_URL; CRLF + CEF4DELPHI_URL;
ShowErrorMessageDlg(TempString); ShowErrorMessageDlg(FLastErrorMessage);
end; end;
if FSetCurrentDir then chdir(TempOldDir); if FSetCurrentDir then chdir(TempOldDir);

View File

@@ -5102,12 +5102,10 @@ begin
try try
FBrowsersCS.Acquire; FBrowsersCS.Acquire;
if (aBrowser <> nil) and (FBrowsers <> nil) then if (FBrowsers <> nil) and
begin FBrowsers.RemoveBrowser(aBrowser) and
if FBrowsers.RemoveBrowser(aBrowser) and (FBrowserId = aBrowser.Identifier) then
(FBrowserId = aBrowser.Identifier) then FBrowserId := FBrowsers.FirstID;
FBrowserId := FBrowsers.FirstID;
end;
finally finally
FBrowsersCS.Release; FBrowsersCS.Release;
end; end;
@@ -5121,8 +5119,7 @@ begin
try try
FBrowsersCS.Acquire; FBrowsersCS.Acquire;
if (aBrowser <> nil) and if (FBrowsers <> nil) and
(FBrowsers <> nil) and
(FMultiBrowserMode or (FBrowsers.Count = 0)) and (FMultiBrowserMode or (FBrowsers.Count = 0)) and
FBrowsers.AddBrowser(aBrowser) then FBrowsers.AddBrowser(aBrowser) then
begin begin
@@ -5184,11 +5181,11 @@ end;
function TChromiumCore.doOnClose(const browser: ICefBrowser): Boolean; function TChromiumCore.doOnClose(const browser: ICefBrowser): Boolean;
var var
TempAction : TCefCloseBrowserAction; TempAction : TCefCloseBrowserAction;
id: Integer; TempID : Integer;
begin begin
Result := False; Result := False;
TempAction := cbaClose; TempAction := cbaClose;
id := browser.Identifier; TempID := browser.Identifier;
// TempAction values // TempAction values
// ----------------- // -----------------
@@ -5207,11 +5204,11 @@ begin
cbaDelay : cbaDelay :
begin begin
Result := True; Result := True;
SetBrowserIsClosing(id); SetBrowserIsClosing(TempID);
end; end;
else else
SetBrowserIsClosing(id); SetBrowserIsClosing(TempID);
end; end;
end; end;
@@ -6868,16 +6865,20 @@ var
TempInfo : TBrowserInfo; TempInfo : TBrowserInfo;
begin begin
Result := False; Result := False;
i := SearchBrowser(aBrowser.Identifier);
if (i < 0) then if (aBrowser <> nil) then
begin begin
TempInfo := TBrowserInfo.Create(aBrowser); i := SearchBrowser(aBrowser.Identifier);
if (Add(TempInfo) >= 0) then if (i < 0) then
Result := True begin
else TempInfo := TBrowserInfo.Create(aBrowser);
TempInfo.Free;
if (Add(TempInfo) >= 0) then
Result := True
else
TempInfo.Free;
end;
end; end;
end; end;
@@ -6886,13 +6887,17 @@ var
i : integer; i : integer;
begin begin
Result := False; Result := False;
i := SearchBrowser(aBrowser.Identifier);
if (i >= 0) then if (aBrowser <> nil) then
begin begin
TBrowserInfo(Items[i]).Free; i := SearchBrowser(aBrowser.Identifier);
Delete(i);
Result := True; if (i >= 0) then
begin
TBrowserInfo(Items[i]).Free;
Delete(i);
Result := True;
end;
end; end;
end; end;

View File

@@ -2,9 +2,9 @@
"UpdateLazPackages" : [ "UpdateLazPackages" : [
{ {
"ForceNotify" : true, "ForceNotify" : true,
"InternalVersion" : 271, "InternalVersion" : 272,
"Name" : "cef4delphi_lazarus.lpk", "Name" : "cef4delphi_lazarus.lpk",
"Version" : "89.0.12.0" "Version" : "89.0.15.0"
} }
], ],
"UpdatePackageData" : { "UpdatePackageData" : {