1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2024-11-24 08:02:15 +02:00

Update to CEF 98.1.19

This commit is contained in:
salvadordf 2022-02-14 21:57:27 +01:00
parent ef8d9e02c1
commit 6176fd8585
9 changed files with 218 additions and 23 deletions

View File

@ -3,16 +3,18 @@ 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 98.1.16 which includes Chromium 98.0.4758.55.
CEF4Delphi uses CEF 98.1.19 which includes Chromium 98.0.4758.80.
The CEF binaries used by CEF4Delphi are available for download at Spotify :
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.16%2Bg358ca26%2Bchromium-98.0.4758.55_macosx64.tar.bz2)
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_98.1.19%2Bg57be9e2%2Bchromium-98.0.4758.80_macosx64.tar.bz2)
Alternative download for the Windows 32 bits CEF binaries [click here](https://www.briskbard.com/cef/cef_binary_98.1.19+g57be9e2+chromium-98.0.4758.80_windows32.tar.bz2)
CEF4Delphi was developed and tested on Delphi 11.0 and it has been tested in Delphi 7, Delphi XE, Delphi 10, Delphi 10.2, Delphi 10.3, Delphi 10.4 and Lazarus 2.2.0/FPC 3.2.2. CEF4Delphi includes VCL, FireMonkey (FMX) and Lazarus components.

View File

@ -225,7 +225,8 @@ contains
uCEFTimerWorkScheduler in '..\source\uCEFTimerWorkScheduler.pas',
uCEFFrameHandler in '..\source\uCEFFrameHandler.pas',
uCEFOverlayController in '..\source\uCEFOverlayController.pas',
uCEFFileDialogInfo in '..\source\uCEFFileDialogInfo.pas';
uCEFFileDialogInfo in '..\source\uCEFFileDialogInfo.pas',
uCEFArgCopy in '..\source\uCEFArgCopy.pas';
end.

View File

@ -222,6 +222,7 @@ contains
uCEFTimerWorkScheduler in '..\source\uCEFTimerWorkScheduler.pas',
uCEFFrameHandler in '..\source\uCEFFrameHandler.pas',
uCEFOverlayController in '..\source\uCEFOverlayController.pas',
uCEFFileDialogInfo in '..\source\uCEFFileDialogInfo.pas';
uCEFFileDialogInfo in '..\source\uCEFFileDialogInfo.pas',
uCEFArgCopy in '..\source\uCEFArgCopy.pas';
end.

View File

@ -237,7 +237,8 @@ contains
uCEFMacOSInterfaces in '..\source\uCEFMacOSInterfaces.pas',
uCEFFrameHandler in '..\source\uCEFFrameHandler.pas',
uCEFOverlayController in '..\source\uCEFOverlayController.pas',
uCEFFileDialogInfo in '..\source\uCEFFileDialogInfo.pas';
uCEFFileDialogInfo in '..\source\uCEFFileDialogInfo.pas',
uCEFArgCopy in '..\source\uCEFArgCopy.pas';
end.

View File

@ -21,8 +21,8 @@
</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="98" Minor="1" Release="16"/>
<Files Count="203">
<Version Major="98" Minor="1" Release="19"/>
<Files Count="204">
<Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
<UnitName Value="uCEFAccessibilityHandler"/>
@ -853,6 +853,10 @@
<Filename Value="..\source\uCEFFileDialogInfo.pas"/>
<UnitName Value="uCEFFileDialogInfo"/>
</Item203>
<Item204>
<Filename Value="..\source\uCEFArgCopy.pas"/>
<UnitName Value="uCEFArgCopy"/>
</Item204>
</Files>
<CompatibilityMode Value="True"/>
<RequiredPkgs Count="5">

View File

@ -66,7 +66,7 @@ uses
uCEFLinuxFunctions, uCEFLinuxTypes, uCEFLinuxConstants,
uCEFWorkSchedulerQueueThread, uCEFLinkedWinControlBase, uCEFLazarusCocoa,
uCEFBrowserWindow, uCEFOsrBrowserWindow, uCEFTimerWorkScheduler,
uCEFFrameHandler, uCEFOverlayController, uCEFFileDialogInfo,
uCEFFrameHandler, uCEFOverlayController, uCEFFileDialogInfo, uCEFArgCopy,
LazarusPackageIntf;
implementation

View File

@ -60,19 +60,21 @@ uses
{$ELSE}
{$IFDEF MSWINDOWS}Windows,{$ENDIF} Classes, {$IFDEF FPC}dynlibs,{$ENDIF}
{$ENDIF}
{$IFDEF LINUX}{$IFDEF FPC}xlib,{$ENDIF}{$ENDIF}
{$IFDEF LINUX}
{$IFDEF FPC}xlib,{$ENDIF} uCEFArgCopy,
{$ENDIF}
uCEFTypes, uCEFInterfaces, uCEFBaseRefCounted, uCEFSchemeRegistrar;
const
CEF_SUPPORTED_VERSION_MAJOR = 98;
CEF_SUPPORTED_VERSION_MINOR = 1;
CEF_SUPPORTED_VERSION_RELEASE = 16;
CEF_SUPPORTED_VERSION_RELEASE = 19;
CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 98;
CEF_CHROMEELF_VERSION_MINOR = 0;
CEF_CHROMEELF_VERSION_RELEASE = 4758;
CEF_CHROMEELF_VERSION_BUILD = 55;
CEF_CHROMEELF_VERSION_BUILD = 80;
{$IFDEF MSWINDOWS}
LIBCEF_DLL = 'libcef.dll';
@ -194,6 +196,9 @@ type
// Fields used during the CEF initialization
FWindowsSandboxInfo : pointer;
FEnableHighDPISupport : boolean;
{$IFDEF LINUX}
FArgCopy : TCEFArgCopy;
{$ENDIF}
// Fields used by custom properties
FDeleteCache : boolean;
@ -287,6 +292,8 @@ type
function GetApiHashCommit : ustring;
{$IFDEF LINUX}
function GetXDisplay : PXDisplay;
function GetArgc : longint;
function GetArgv : PPChar;
{$ENDIF}
function LoadCEFlibrary : boolean; virtual;
@ -506,6 +513,10 @@ type
// Properties used during the CEF initialization
property WindowsSandboxInfo : Pointer read FWindowsSandboxInfo write FWindowsSandboxInfo;
property EnableHighDPISupport : boolean read FEnableHighDPISupport write FEnableHighDPISupport;
{$IFDEF LINUX}
property argc : longint read GetArgc;
property argv : PPChar read GetArgv;
{$ENDIF}
// Custom properties
property DeleteCache : boolean read FDeleteCache write FDeleteCache;
@ -752,6 +763,9 @@ begin
// Fields used during the CEF initialization
FWindowsSandboxInfo := nil;
FEnableHighDPISupport := False;
{$IFDEF LINUX}
FArgCopy := TCEFArgCopy.Create;
{$ENDIF}
// Fields used by custom properties
FDeleteCache := False;
@ -850,6 +864,9 @@ begin
FreeLibcefLibrary;
{$IFDEF LINUX}
if (FArgCopy <> nil) then FreeAndNil(FArgCopy);
{$ENDIF}
if (FCustomCommandLines <> nil) then FreeAndNil(FCustomCommandLines);
if (FCustomCommandLineValues <> nil) then FreeAndNil(FCustomCommandLineValues);
finally
@ -1341,8 +1358,11 @@ begin
TempArgs.instance := HINSTANCE{$IFDEF FPC}(){$ENDIF};
{$ELSE}
{$IFDEF FPC}
TempArgs.argc := argc;
TempArgs.argv := argv;
{$IFDEF LINUX}
FArgCopy.CopyFromArgs(argc, argv);
{$ENDIF}
TempArgs.argc := argc;
TempArgs.argv := argv;
{$ELSE}
TempArgs.argc := ArgCount;
TempArgs.argv := PPWideChar(ArgValues);
@ -2081,12 +2101,14 @@ begin
// The list of features you can enable is here :
// https://chromium.googlesource.com/chromium/src/+/master/chrome/common/chrome_features.cc
// https://source.chromium.org/chromium/chromium/src/+/main:content/public/common/content_features.cc
// https://source.chromium.org/search?q=base::Feature
if (length(FEnableFeatures) > 0) then
AppendSwitch(aKeys, aValues, '--enable-features', FEnableFeatures);
// The list of features you can disable is here :
// https://chromium.googlesource.com/chromium/src/+/master/chrome/common/chrome_features.cc
// https://source.chromium.org/chromium/chromium/src/+/main:content/public/common/content_features.cc
// https://source.chromium.org/search?q=base::Feature
if (length(FDisableFeatures) > 0) then
AppendSwitch(aKeys, aValues, '--disable-features', FDisableFeatures);
@ -2307,13 +2329,13 @@ begin
TempProcHWND := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, TempProcess.th32ProcessID);
if (TempProcHWND <> 0) then
begin
try
ZeroMemory(@TempMemCtrs, SizeOf(TProcessMemoryCounters));
TempMemCtrs.cb := SizeOf(TProcessMemoryCounters);
if GetProcessMemoryInfo(TempProcHWND, {$IFNDEF FPC}@{$ENDIF}TempMemCtrs, TempMemCtrs.cb) then
inc(Result, TempMemCtrs.WorkingSetSize);
finally
CloseHandle(TempProcHWND);
end;
end;
@ -2418,6 +2440,22 @@ begin
else
Result := nil;
end;
function TCefApplicationCore.GetArgc : longint;
begin
if (FArgCopy <> nil) then
Result := FArgCopy.argc
else
Result := 0;
end;
function TCefApplicationCore.GetArgv : PPChar;
begin
if (FArgCopy <> nil) then
Result := FArgCopy.argv
else
Result := nil;
end;
{$ENDIF}
function TCefApplicationCore.LoadCEFlibrary : boolean;

148
source/uCEFArgCopy.pas Normal file
View File

@ -0,0 +1,148 @@
// ************************************************************************
// ***************************** CEF4Delphi *******************************
// ************************************************************************
//
// CEF4Delphi is based on DCEF3 which uses CEF to embed a chromium-based
// browser in Delphi applications.
//
// The original license of DCEF3 still applies to CEF4Delphi.
//
// For more information about CEF4Delphi visit :
// https://www.briskbard.com/index.php?lang=en&pageid=cef
//
// Copyright © 2022 Salvador Diaz Fau. All rights reserved.
//
// ************************************************************************
// ************ vvvv Original license and comments below vvvv *************
// ************************************************************************
(*
* Delphi Chromium Embedded 3
*
* Usage allowed under the restrictions of the Lesser GNU General Public License
* or alternatively the restrictions of the Mozilla Public License 1.1
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* Unit owner : Henri Gourvest <hgourvest@gmail.com>
* Web site : http://www.progdigy.com
* Repository : http://code.google.com/p/delphichromiumembedded/
* Group : http://groups.google.com/group/delphichromiumembedded
*
* Embarcadero Technologies, Inc is not permitted to use or redistribute
* this source code without explicit permission.
*
*)
unit uCEFArgCopy;
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
{$IFNDEF CPUX64}{$ALIGN ON}{$ENDIF}
{$MINENUMSIZE 4}
{$I cef.inc}
interface
uses
{$IFDEF DELPHI16_UP}
System.Classes, System.SysUtils;
{$ELSE}
Classes, SysUtils;
{$ENDIF}
type
TCEFArgCopy = class
protected
FArgCCopy : longint;
FArgVCopy : PPChar;
procedure InitializeFields;
procedure DestroyFields;
public
constructor Create;
destructor Destroy; override;
procedure CopyFromArgs(aArgc : longint; aArgv : PPChar);
property argc : longint read FArgCCopy;
property argv : PPChar read FArgVCopy;
end;
implementation
{$POINTERMATH ON}
constructor TCEFArgCopy.Create;
begin
inherited Create;
InitializeFields;
end;
destructor TCEFArgCopy.Destroy;
begin
DestroyFields;
inherited Destroy;
end;
procedure TCEFArgCopy.InitializeFields;
begin
FArgCCopy := 0;
FArgVCopy := nil;
end;
procedure TCEFArgCopy.DestroyFields;
var
i : integer;
begin
if (FArgVCopy <> nil) then
begin
i := pred(FArgCCopy);
while (i >= 0) do
begin
if (FArgVCopy[i] <> nil) then
StrDispose(FArgVCopy[i]);
dec(i);
end;
FreeMem(FArgVCopy);
end;
InitializeFields;
end;
procedure TCEFArgCopy.CopyFromArgs(aArgc : longint; aArgv : PPChar);
var
i : integer;
begin
DestroyFields;
if (aArgc > 0) and (aArgv <> nil) then
begin
i := 0;
FArgCCopy := aArgc;
GetMem(FArgVCopy, (FArgCCopy + 1) * SizeOf(Pointer));
while (i < aArgc) do
begin
FArgVCopy[i] := StrAlloc(length(aArgv[i]) + 1);
StrCopy(FArgVCopy[i], aArgv[i]);
inc(i);
end;
FArgVCopy[i] := nil;
end;
end;
end.

View File

@ -2,9 +2,9 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
"InternalVersion" : 354,
"InternalVersion" : 355,
"Name" : "cef4delphi_lazarus.lpk",
"Version" : "98.1.16.0"
"Version" : "98.1.19.0"
}
],
"UpdatePackageData" : {