Update to CEF 89.0.6

Added GlobalCEFApp.ApiHashUniversal
Added GlobalCEFApp.ApiHashPlatform
Added GlobalCEFApp.ApiHashCommit
Added a menu option to the MiniBrowser demo to show the CEF version info and API hashes.
This commit is contained in:
Salvador Díaz Fau 2021-03-06 12:24:28 +01:00
parent e9bf19225a
commit 1515e2bf99
14 changed files with 167 additions and 25 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 88.2.9 which includes Chromium 88.0.4324.182.
CEF4Delphi uses CEF 89.0.6 which includes Chromium 89.0.4389.72.
The CEF binaries used by CEF4Delphi are available for download at spotify :
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_88.2.9%2Bg5c8711a%2Bchromium-88.0.4324.182_macosx64.tar.bz2)
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_89.0.6%2Bg6f30454%2Bchromium-89.0.4389.72_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

@ -1,7 +1,7 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{7AA2E07C-ACFB-4174-A9F1-083E9BB483BC}</ProjectGuid>
<ProjectVersion>19.1</ProjectVersion>
<ProjectVersion>19.2</ProjectVersion>
<FrameworkType>FMX</FrameworkType>
<MainSource>FMXTabbedOSRBrowser.dpr</MainSource>
<Base>True</Base>
@ -330,6 +330,16 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon192">
<Platform Name="Android">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\drawable-xxxhdpi</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_LauncherIcon36">
<Platform Name="Android">
<RemoteDir>res\drawable-ldpi</RemoteDir>

View File

@ -50,7 +50,7 @@ uses
Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
{$ENDIF}
uCEFChromium, uCEFWindowParent, uCEFChromiumWindow, uCEFInterfaces, uCustomResourceHandler,
uCEFConstants, uCEFTypes, uCEFWinControl, uCEFSentinel;
uCEFConstants, uCEFTypes, uCEFWinControl, uCEFLinkedWinControlBase;
type
TMainForm = class(TForm)

View File

@ -387,6 +387,10 @@ object MiniBrowserFrm: TMiniBrowserFrm
Caption = 'Memory info...'
OnClick = Memoryinfo1Click
end
object CEFinfo1: TMenuItem
Caption = 'CEF info...'
OnClick = CEFinfo1Click
end
end
object SaveDialog1: TSaveDialog
Left = 32

View File

@ -138,6 +138,7 @@ type
akescreenshot1: TMenuItem;
Useragent1: TMenuItem;
ClearallstorageforcurrentURL1: TMenuItem;
CEFinfo1: TMenuItem;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
@ -206,6 +207,7 @@ type
procedure akescreenshot1Click(Sender: TObject);
procedure Useragent1Click(Sender: TObject);
procedure ClearallstorageforcurrentURL1Click(Sender: TObject);
procedure CEFinfo1Click(Sender: TObject);
protected
FDevToolsMsgID : integer;
@ -322,6 +324,19 @@ begin
if (length(TempURL) > 0) then Chromium1.ResolveHost(TempURL);
end;
procedure TMiniBrowserFrm.CEFinfo1Click(Sender: TObject);
var
TempInfo : string;
begin
TempInfo := 'libcef.dll : ' + CRLF + GlobalCEFApp.LibCefVersion + CRLF + CRLF +
'chrome_elf.dll : ' + CRLF + GlobalCEFApp.ChromeVersion + CRLF + CRLF +
'Universal API hash : ' + CRLF + GlobalCEFApp.ApiHashUniversal + CRLF + CRLF +
'Platform API hash : ' + CRLF + GlobalCEFApp.ApiHashPlatform + CRLF + CRLF +
'Commit API hash : ' + CRLF + GlobalCEFApp.ApiHashCommit;
showmessage(TempInfo);
end;
procedure TMiniBrowserFrm.Chromium1AddressChange(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
begin

View File

@ -15,7 +15,7 @@ object MiniBrowserFrm: TMiniBrowserFrm
OnCreate = FormCreate
OnDestroy = FormDestroy
Position = poScreenCenter
LCLVersion = '2.0.10.0'
LCLVersion = '2.0.12.0'
object NavControlPnl: TPanel
Left = 0
Height = 25
@ -295,6 +295,13 @@ object MiniBrowserFrm: TMiniBrowserFrm
OnClick = Resetzoom1Click
end
end
object MenuItem1: TMenuItem
Caption = '-'
end
object MenuItem2: TMenuItem
Caption = 'CEF info...'
OnClick = MenuItem2Click
end
end
object SaveDialog1: TSaveDialog
Left = 32

View File

@ -62,6 +62,8 @@ type
TMiniBrowserFrm = class(TForm)
CEFLinkedWindowParent1: TCEFLinkedWindowParent;
HideDevTools1: TMenuItem;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
NavControlPnl: TPanel;
NavButtonPnl: TPanel;
PrintDialog1: TPrintDialog;
@ -118,6 +120,7 @@ type
procedure CEFLinkedWindowParent1Enter(Sender: TObject);
procedure CEFLinkedWindowParent1Exit(Sender: TObject);
procedure HideDevTools1Click(Sender: TObject);
procedure MenuItem2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
@ -509,6 +512,20 @@ procedure TMiniBrowserFrm.HideDevTools1Click(Sender: TObject);
begin
HideDevTools;
end;
procedure TMiniBrowserFrm.MenuItem2Click(Sender: TObject);
var
TempInfo : string;
begin
TempInfo := 'CEF : ' + CRLF + GlobalCEFApp.LibCefVersion + CRLF + CRLF +
'Chromium : ' + CRLF + GlobalCEFApp.ChromeVersion + CRLF + CRLF +
'Universal API hash : ' + CRLF + GlobalCEFApp.ApiHashUniversal + CRLF + CRLF +
'Platform API hash : ' + CRLF + GlobalCEFApp.ApiHashPlatform + CRLF + CRLF +
'Commit API hash : ' + CRLF + GlobalCEFApp.ApiHashCommit;
showmessage(TempInfo);
end;
{%Endregion}
{Form events}

View File

@ -15,7 +15,7 @@ object MiniBrowserFrm: TMiniBrowserFrm
OnDestroy = FormDestroy
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '2.0.10.0'
LCLVersion = '2.0.12.0'
object Splitter1: TSplitter
Left = 1179
Height = 663
@ -349,6 +349,10 @@ object MiniBrowserFrm: TMiniBrowserFrm
Caption = 'Memory info...'
OnClick = Memoryinfo1Click
end
object MenuItem5: TMenuItem
Caption = 'CEF info...'
OnClick = MenuItem5Click
end
end
object SaveDialog1: TSaveDialog
Left = 32

View File

@ -88,6 +88,7 @@ type
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
NavControlPnl: TPanel;
NavButtonPnl: TPanel;
StatusPnl: TPanel;
@ -142,6 +143,7 @@ type
procedure MenuItem2Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure MenuItem4Click(Sender: TObject);
procedure MenuItem5Click(Sender: TObject);
procedure ReloadBtnClick(Sender: TObject);
procedure Chromium1AfterCreated(Sender: TObject;
const browser: ICefBrowser);
@ -377,6 +379,19 @@ begin
Chromium1.AcceptLanguageList := InputBox('Language', 'Accept language list', TempLanguageList);
end;
procedure TMiniBrowserFrm.MenuItem5Click(Sender: TObject);
var
TempInfo : string;
begin
TempInfo := 'libcef.dll : ' + CRLF + GlobalCEFApp.LibCefVersion + CRLF + CRLF +
'chrome_elf.dll : ' + CRLF + GlobalCEFApp.ChromeVersion + CRLF + CRLF +
'Universal API hash : ' + CRLF + GlobalCEFApp.ApiHashUniversal + CRLF + CRLF +
'Platform API hash : ' + CRLF + GlobalCEFApp.ApiHashPlatform + CRLF + CRLF +
'Commit API hash : ' + CRLF + GlobalCEFApp.ApiHashCommit;
showmessage(TempInfo);
end;
procedure TMiniBrowserFrm.GoBtnClick(Sender: TObject);
begin
Chromium1.LoadURL(URLCbx.Text);

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="5">
<Package Version="4">
<PathDelim Value="\"/>
<Name Value="CEF4Delphi_Lazarus"/>
<Type Value="RunAndDesignTime"/>
@ -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="88" Minor="2" Release="9"/>
<Version Major="89" Release="6"/>
<Files Count="200">
<Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
@ -841,7 +841,6 @@
<UnitName Value="uceflazarusbrowserwindow"/>
</Item200>
</Files>
<CompatibilityMode Value="True"/>
<RequiredPkgs Count="4">
<Item1>
<PackageName Value="dcpcrypt"/>

View File

@ -64,15 +64,15 @@ uses
uCEFTypes, uCEFInterfaces, uCEFBaseRefCounted, uCEFSchemeRegistrar;
const
CEF_SUPPORTED_VERSION_MAJOR = 88;
CEF_SUPPORTED_VERSION_MINOR = 2;
CEF_SUPPORTED_VERSION_RELEASE = 9;
CEF_SUPPORTED_VERSION_MAJOR = 89;
CEF_SUPPORTED_VERSION_MINOR = 0;
CEF_SUPPORTED_VERSION_RELEASE = 6;
CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 88;
CEF_CHROMEELF_VERSION_MAJOR = 89;
CEF_CHROMEELF_VERSION_MINOR = 0;
CEF_CHROMEELF_VERSION_RELEASE = 4324;
CEF_CHROMEELF_VERSION_BUILD = 182;
CEF_CHROMEELF_VERSION_RELEASE = 4389;
CEF_CHROMEELF_VERSION_BUILD = 72;
{$IFDEF MSWINDOWS}
LIBCEF_DLL = 'libcef.dll';
@ -284,11 +284,15 @@ type
function GetTotalSystemMemory : uint64;
function GetAvailableSystemMemory : uint64;
function GetSystemMemoryLoad : cardinal;
function GetApiHashUniversal : ustring;
function GetApiHashPlatform : ustring;
function GetApiHashCommit : ustring;
{$IFDEF LINUX}
function GetXDisplay : PXDisplay;
{$ENDIF}
function LoadCEFlibrary : boolean; virtual;
function Load_cef_api_hash_h : boolean;
function Load_cef_app_capi_h : boolean;
function Load_cef_browser_capi_h : boolean;
function Load_cef_command_line_capi_h : boolean;
@ -542,6 +546,9 @@ type
property TotalSystemMemory : uint64 read GetTotalSystemMemory;
property AvailableSystemMemory : uint64 read GetAvailableSystemMemory;
property SystemMemoryLoad : cardinal read GetSystemMemoryLoad;
property ApiHashUniversal : ustring read GetApiHashUniversal;
property ApiHashPlatform : ustring read GetApiHashPlatform;
property ApiHashCommit : ustring read GetApiHashCommit;
property SupportedSchemes : TStringList read FSupportedSchemes;
{$IFDEF LINUX}
property XDisplay : PXDisplay read GetXDisplay;
@ -2489,6 +2496,45 @@ begin
{$ENDIF}
end;
function TCefApplicationCore.GetApiHashUniversal : ustring;
var
TempHash : PAnsiChar;
begin
Result := '';
if not(FLibLoaded) then exit;
TempHash := cef_api_hash(CEF_API_HASH_UNIVERSAL);
if (TempHash <> nil) then
Result := ustring(AnsiString(TempHash));
end;
function TCefApplicationCore.GetApiHashPlatform : ustring;
var
TempHash : PAnsiChar;
begin
Result := '';
if not(FLibLoaded) then exit;
TempHash := cef_api_hash(CEF_API_HASH_PLATFORM);
if (TempHash <> nil) then
Result := ustring(AnsiString(TempHash));
end;
function TCefApplicationCore.GetApiHashCommit : ustring;
var
TempHash : PAnsiChar;
begin
Result := '';
if not(FLibLoaded) then exit;
TempHash := cef_api_hash(CEF_COMMIT_HASH);
if (TempHash <> nil) then
Result := ustring(AnsiString(TempHash));
end;
{$IFDEF LINUX}
function TCefApplicationCore.GetXDisplay : PXDisplay;
begin
@ -2552,7 +2598,8 @@ begin
end;
if Load_cef_app_capi_h and
if Load_cef_api_hash_h and
Load_cef_app_capi_h and
Load_cef_browser_capi_h and
Load_cef_command_line_capi_h and
Load_cef_cookie_capi_h and
@ -2624,6 +2671,13 @@ begin
if FSetCurrentDir then chdir(TempOldDir);
end;
function TCefApplicationCore.Load_cef_api_hash_h : boolean;
begin
{$IFDEF FPC}Pointer({$ENDIF}cef_api_hash{$IFDEF FPC}){$ENDIF} := GetProcAddress(FLibHandle, 'cef_api_hash');
Result := assigned(cef_api_hash);
end;
function TCefApplicationCore.Load_cef_app_capi_h : boolean;
begin
{$IFDEF FPC}Pointer({$ENDIF}cef_initialize{$IFDEF FPC}){$ENDIF} := GetProcAddress(FLibHandle, 'cef_initialize');

View File

@ -552,6 +552,11 @@ const
CEF_TFC_DELETE = 5;
CEF_TFC_SELECT_ALL = 6;
// /include/cef_api_hash.h (used as "cef_api_hash" parameters)
CEF_API_HASH_PLATFORM = 0;
CEF_API_HASH_UNIVERSAL = 1;
CEF_COMMIT_HASH = 2;
//******************************************************
//****************** OTHER CONSTANTS *******************

View File

@ -61,6 +61,18 @@ uses
uCEFTypes;
var
// *********************************
// *********** API HASH ************
// *********************************
// /include/cef_api_hash.h
cef_api_hash : function(entry: integer): PAnsiChar; cdecl;
// *********************************
// ************* CAPI **************
// *********************************
// /include/capi/cef_app_capi.h
cef_initialize : function(const args: PCefMainArgs; const settings: PCefSettings; application: PCefApp; windows_sandbox_info: Pointer): Integer; cdecl;
cef_shutdown : procedure; cdecl;
@ -236,7 +248,7 @@ var
// *********************************
// ************* VIEWS *************
// ********** CAPI VIEWS ***********
// *********************************
// /include/capi/views/cef_browser_view_capi.h

View File

@ -2,9 +2,9 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
"InternalVersion" : 266,
"InternalVersion" : 267,
"Name" : "cef4delphi_lazarus.lpk",
"Version" : "88.2.9.0"
"Version" : "89.0.6.0"
}
],
"UpdatePackageData" : {