Update to CEF 93.1.11

Fixed issue #378  in the VCL demos
This commit is contained in:
Salvador Díaz Fau 2021-09-05 10:49:20 +02:00
parent b3f388709a
commit 83a75c985a
26 changed files with 396 additions and 624 deletions

View File

@ -3,16 +3,16 @@ 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 92.0.27 which includes Chromium 92.0.4515.159.
CEF4Delphi uses CEF 93.1.11 which includes Chromium 93.0.4577.63.
The CEF binaries used by CEF4Delphi are available for download at Spotify :
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_92.0.27%2Bg274abcf%2Bchromium-92.0.4515.159_macosx64.tar.bz2)
* [Windows 32 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_windows32.tar.bz2)
* [Windows 64 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_windows64.tar.bz2)
* [Linux x86 32 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linux32.tar.bz2)
* [Linux x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linux64.tar.bz2)
* [Linux ARM 32 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linuxarm.tar.bz2)
* [Linux ARM 64 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linuxarm64.tar.bz2)
* [MacOS x86 64 bits](https://cef-builds.spotifycdn.com/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_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

@ -173,7 +173,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYDOWN :
@ -189,7 +188,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYUP :
@ -205,7 +203,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_KEYDOWN :
@ -237,7 +234,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_CHAR :
@ -254,7 +250,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_MOUSEWHEEL :

View File

@ -34,9 +34,13 @@
* this source code without explicit permission.
*
*)
unit uCookieVisitor;
{$I cef.inc}
interface
uses
{$IFDEF DELPHI16_UP}
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
@ -48,6 +52,7 @@ uses
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants,
uCEFCookieManager, uCEFCookieVisitor, uCEFWinControl, uCEFSentinel,
uCEFChromiumCore;
const
MINIBROWSER_SHOWCOOKIES = WM_APP + $101;
MINIBROWSER_COOKIESDELETED = WM_APP + $102;
@ -57,6 +62,7 @@ const
MINIBROWSER_CONTEXTMENU_SETCOOKIE = MENU_ID_USER_FIRST + 3;
MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES = MENU_ID_USER_FIRST + 4;
MINIBROWSER_CONTEXTMENU_DELETECACHE = MENU_ID_USER_FIRST + 5;
type
TCookieVisitorFrm = class(TForm)
AddressBarPnl: TPanel;
@ -65,6 +71,7 @@ type
CEFWindowParent1: TCEFWindowParent;
Chromium1: TChromium;
Timer1: TTimer;
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
procedure Chromium1BeforeContextMenu(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel);
procedure Chromium1ContextMenuCommand(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; commandId: Integer; eventFlags: Cardinal; out Result: Boolean);
@ -80,6 +87,7 @@ type
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
@ -90,21 +98,29 @@ type
procedure ShowCookiesMsg(var aMessage : TMessage); message MINIBROWSER_SHOWCOOKIES;
procedure CookiesDeletedMsg(var aMessage : TMessage); message MINIBROWSER_COOKIESDELETED;
procedure CookieSetMsg(var aMessage : TMessage); message MINIBROWSER_COOKIESET;
protected
FText : string;
// Variables to control when can we destroy the form safely
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
FClosing : boolean; // Set to True in the CloseQuery event.
public
procedure AddCookieInfo(const aCookie : TCookie);
end;
var
CookieVisitorFrm: TCookieVisitorFrm;
procedure CreateGlobalCEFApp;
implementation
{$R *.dfm}
uses
uSimpleTextViewer, uCEFTask, uCEFMiscFunctions, uCEFDictionaryValue;
// This demo has a context menu to test several TChromium functions related to cookies like TChromium.VisitAllCookies,
// TChromium.SetCookie, TChromium.DeleteCookies, etc.
// TChromium.VisitAllCookies and TChromium.VisitURLCookies trigger the TChromium.OnCookiesVisited event for each
@ -117,6 +133,7 @@ uses
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which triggers the TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1 in the main thread, which triggers the TChromium.OnBeforeClose event.
// 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
procedure CreateGlobalCEFApp;
begin
GlobalCEFApp := TCefApplication.Create;
@ -124,56 +141,69 @@ begin
//GlobalCEFApp.LogFile := 'cef.log';
//GlobalCEFApp.LogSeverity := LOGSEVERITY_VERBOSE;
end;
procedure TCookieVisitorFrm.AddCookieInfo(const aCookie : TCookie);
begin
// This should be protected by a mutex.
FText := FText + aCookie.name + ' : ' + aCookie.value + ' (' + aCookie.domain + ')' + #13 + #10;
end;
procedure TCookieVisitorFrm.BrowserCreatedMsg(var aMessage : TMessage);
begin
CEFWindowParent1.UpdateSize;
AddressBarPnl.Enabled := True;
end;
procedure TCookieVisitorFrm.BrowserDestroyMsg(var aMessage : TMessage);
begin
CEFWindowParent1.Free;
end;
procedure TCookieVisitorFrm.ShowCookiesMsg(var aMessage : TMessage);
begin
SimpleTextViewerFrm.Memo1.Lines.Text := FText; // This should be protected by a mutex.
SimpleTextViewerFrm.ShowModal;
end;
procedure TCookieVisitorFrm.CookiesDeletedMsg(var aMessage : TMessage);
begin
showmessage('Deleted cookies : ' + inttostr(aMessage.lParam));
end;
procedure TCookieVisitorFrm.CookieSetMsg(var aMessage : TMessage);
begin
Chromium1.FlushCookieStore;
if (aMessage.wParam <> 0) then
showmessage('Cookie set successfully !')
else
showmessage('There was a problem setting the cookie');
end;
procedure TCookieVisitorFrm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
if not(Chromium1.CreateBrowser(CEFWindowParent1, '')) and not(Chromium1.Initialized) then
Timer1.Enabled := True;
end;
procedure TCookieVisitorFrm.GoBtnClick(Sender: TObject);
begin
Chromium1.LoadURL(Edit1.Text);
end;
procedure TCookieVisitorFrm.Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
begin
PostMessage(Handle, CEF_AFTERCREATED, 0, 0);
end;
procedure TCookieVisitorFrm.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
begin
FCanClose := True;
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
procedure TCookieVisitorFrm.Chromium1BeforeContextMenu(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel);
@ -186,6 +216,7 @@ begin
model.AddItem(MINIBROWSER_CONTEXTMENU_SETCOOKIE, 'Set cookie');
model.AddItem(MINIBROWSER_CONTEXTMENU_DELETECACHE, 'Delete cache');
end;
procedure TCookieVisitorFrm.Chromium1BeforePopup(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame; const targetUrl,
targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition;
@ -199,12 +230,14 @@ begin
// For simplicity, this demo blocks all popup windows and new tabs
Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]);
end;
procedure TCookieVisitorFrm.Chromium1Close(Sender: TObject;
const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
begin
PostMessage(Handle, CEF_DESTROY, 0, 0);
aAction := cbaDelay;
end;
procedure TCookieVisitorFrm.Chromium1ContextMenuCommand(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; commandId: Integer;
@ -213,18 +246,21 @@ begin
Result := False;
case commandId of
MINIBROWSER_CONTEXTMENU_DELETECOOKIES : Chromium1.DeleteCookies;
MINIBROWSER_CONTEXTMENU_GETCOOKIES :
begin
// This should be protected by a mutex
FText := '';
Chromium1.VisitAllCookies;
end;
MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES :
begin
// This should be protected by a mutex
FText := '';
Chromium1.VisitURLCookies('https://www.google.com');
end;
MINIBROWSER_CONTEXTMENU_SETCOOKIE :
Chromium1.SetCookie('https://www.example.com',
'example_cookie_name',
@ -240,19 +276,23 @@ begin
CEF_COOKIE_SAME_SITE_UNSPECIFIED,
CEF_COOKIE_PRIORITY_MEDIUM,
False);
MINIBROWSER_CONTEXTMENU_DELETECACHE :
Chromium1.ExecuteDevToolsMethod(0, 'Network.clearBrowserCache', nil);
end;
end;
procedure TCookieVisitorFrm.Chromium1CookiesDeleted(Sender: TObject; numDeleted: Integer);
begin
PostMessage(Handle, MINIBROWSER_COOKIESDELETED, 0, numDeleted);
end;
procedure TCookieVisitorFrm.Chromium1CookieSet(Sender: TObject;
aSuccess: Boolean; aID: Integer);
begin
PostMessage(Handle, MINIBROWSER_COOKIESET, WPARAM(aSuccess), aID);
end;
procedure TCookieVisitorFrm.Chromium1CookiesVisited(Sender: TObject;
const name_, value, domain, path: ustring; secure, httponly,
hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count,
@ -262,6 +302,7 @@ var
TempCookie : TCookie;
begin
aDeleteCookie := False;
TempCookie.name := name_;
TempCookie.value := value;
TempCookie.domain := domain;
@ -274,53 +315,71 @@ begin
TempCookie.expires := expires;
TempCookie.same_site := same_site;
TempCookie.priority := priority;
AddCookieInfo(TempCookie);
aResult := (count <> pred(total));
end;
procedure TCookieVisitorFrm.Chromium1CookieVisitorDestroyed(Sender: TObject; aID: Integer);
begin
PostMessage(Handle, MINIBROWSER_SHOWCOOKIES, 0, 0);
end;
procedure TCookieVisitorFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := FCanClose;
if not(FClosing) then
begin
FClosing := True;
Visible := False;
Chromium1.CloseBrowser(True);
end;
end;
procedure TCookieVisitorFrm.FormCreate(Sender: TObject);
begin
FCanClose := False;
FClosing := False;
Chromium1.DefaultURL := Edit1.Text;
end;
procedure TCookieVisitorFrm.FormShow(Sender: TObject);
begin
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
// If it's not initialized yet, we use a simple timer to create the browser later.
if not(Chromium1.CreateBrowser(CEFWindowParent1, '')) then Timer1.Enabled := True;
end;
procedure TCookieVisitorFrm.WMMove(var aMessage : TWMMove);
begin
inherited;
if (Chromium1 <> nil) then Chromium1.NotifyMoveOrResizeStarted;
end;
procedure TCookieVisitorFrm.WMMoving(var aMessage : TMessage);
begin
inherited;
if (Chromium1 <> nil) then Chromium1.NotifyMoveOrResizeStarted;
end;
procedure TCookieVisitorFrm.WMEnterMenuLoop(var aMessage: TMessage);
begin
inherited;
if (aMessage.wParam = 0) and (GlobalCEFApp <> nil) then GlobalCEFApp.OsmodalLoop := True;
end;
procedure TCookieVisitorFrm.WMExitMenuLoop(var aMessage: TMessage);
begin
inherited;
if (aMessage.wParam = 0) and (GlobalCEFApp <> nil) then GlobalCEFApp.OsmodalLoop := False;
end;
end.

View File

@ -209,7 +209,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYDOWN :
@ -225,7 +224,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYUP :
@ -241,7 +239,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_KEYDOWN :
@ -280,7 +277,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_CHAR :
@ -297,7 +293,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_MOUSEWHEEL :

View File

@ -7,7 +7,7 @@
<ProjectVersion>19.2</ProjectVersion>
<FrameworkType>VCL</FrameworkType>
<Base>True</Base>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Application</AppType>
</PropertyGroup>

View File

@ -289,6 +289,7 @@ begin
GlobalCEFApp.LogSeverity := LOGSEVERITY_INFO;
GlobalCEFApp.cache := 'cache';
GlobalCEFApp.EnablePrintPreview := True;
GlobalCEFApp.EnableGPU := True;
// This is a workaround for the CEF4Delphi issue #324 :
// https://github.com/salvadordf/CEF4Delphi/issues/324

View File

@ -213,7 +213,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYDOWN :
@ -229,7 +228,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYUP :
@ -245,7 +243,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_KEYDOWN :
@ -277,7 +274,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_CHAR :
@ -294,7 +290,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_MOUSEWHEEL :

View File

@ -125,13 +125,13 @@ type
public
function CreateClientHandler(var windowInfo : TCefWindowInfo; var client : ICefClient; const targetFrameName : string; const popupFeatures : TCefPopupFeatures) : boolean;
procedure ApplyPopupFeatures;
procedure HandleSysCharMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleSysKeyDownMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleSysKeyUpMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleSysCharMsg(var Msg: tagMSG);
procedure HandleSysKeyDownMsg(var Msg: tagMSG);
procedure HandleSysKeyUpMsg(var Msg: tagMSG);
procedure HandleKeyDownMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleKeyUpMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleCharMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleMouseWheelMsg(var Msg: tagMSG; var Handled: Boolean);
procedure HandleKeyUpMsg(var Msg: tagMSG);
procedure HandleCharMsg(var Msg: tagMSG);
procedure HandleMouseWheelMsg(var Msg: tagMSG);
property ClientInitialized : boolean read FClientInitialized;
property Closing : boolean read FClosing;
@ -156,7 +156,7 @@ uses
// 3- chrmosr.OnBeforeClose is triggered because the internal browser was destroyed.
// Now we set FCanClose to True and send WM_CLOSE to the form.
procedure TChildForm.HandleSysCharMsg(var Msg: tagMSG; var Handled: Boolean);
procedure TChildForm.HandleSysCharMsg(var Msg: tagMSG);
var
TempKeyEvent : TCefKeyEvent;
begin
@ -173,13 +173,10 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
Chromium1.SendKeyEvent(@TempKeyEvent);
Handled := True;
end
else
Handled := False;
end;
end;
procedure TChildForm.HandleSysKeyDownMsg(var Msg: tagMSG; var Handled: Boolean);
procedure TChildForm.HandleSysKeyDownMsg(var Msg: tagMSG);
var
TempKeyEvent : TCefKeyEvent;
begin
@ -195,13 +192,10 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
Chromium1.SendKeyEvent(@TempKeyEvent);
Handled := True;
end
else
Handled := False;
end;
end;
procedure TChildForm.HandleSysKeyUpMsg(var Msg: tagMSG; var Handled: Boolean);
procedure TChildForm.HandleSysKeyUpMsg(var Msg: tagMSG);
var
TempKeyEvent : TCefKeyEvent;
begin
@ -217,10 +211,7 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
Chromium1.SendKeyEvent(@TempKeyEvent);
Handled := True;
end
else
Handled := False;
end;
end;
procedure TChildForm.HandleKeyDownMsg(var Msg: tagMSG; var Handled: Boolean);
@ -245,7 +236,7 @@ begin
Handled := False;
end;
procedure TChildForm.HandleKeyUpMsg(var Msg: tagMSG; var Handled: Boolean);
procedure TChildForm.HandleKeyUpMsg(var Msg: tagMSG);
var
TempKeyEvent : TCefKeyEvent;
begin
@ -261,13 +252,10 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
Chromium1.SendKeyEvent(@TempKeyEvent);
Handled := True;
end
else
Handled := False;
end;
end;
procedure TChildForm.HandleCharMsg(var Msg: tagMSG; var Handled: Boolean);
procedure TChildForm.HandleCharMsg(var Msg: tagMSG);
var
TempKeyEvent : TCefKeyEvent;
begin
@ -284,13 +272,10 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
Chromium1.SendKeyEvent(@TempKeyEvent);
Handled := True;
end
else
Handled := False;
end;
end;
procedure TChildForm.HandleMouseWheelMsg(var Msg: tagMSG; var Handled: Boolean);
procedure TChildForm.HandleMouseWheelMsg(var Msg: tagMSG);
var
TempMouseEvent : TCefMouseEvent;
TempPoint : TPoint;
@ -309,8 +294,6 @@ begin
Chromium1.SendMouseWheelEvent(@TempMouseEvent, smallint(Msg.wParam shr 16), 0)
else
Chromium1.SendMouseWheelEvent(@TempMouseEvent, 0, smallint(Msg.wParam shr 16));
Handled := False;
end;
end;

View File

@ -317,15 +317,13 @@ end;
procedure TMainForm.AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
begin
case Msg.message of
WM_SYSCHAR : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleSysCharMsg(Msg, Handled);
WM_SYSKEYDOWN : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleSysKeyDownMsg(Msg, Handled);
WM_SYSKEYUP : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleSysKeyUpMsg(Msg, Handled);
WM_SYSCHAR : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleSysCharMsg(Msg);
WM_SYSKEYDOWN : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleSysKeyDownMsg(Msg);
WM_SYSKEYUP : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleSysKeyUpMsg(Msg);
WM_KEYDOWN : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleKeyDownMsg(Msg, Handled);
WM_KEYUP : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleKeyUpMsg(Msg, Handled);
WM_CHAR : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleCharMsg(Msg, Handled);
WM_MOUSEWHEEL : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleMouseWheelMsg(Msg, Handled);
else Handled := False;
WM_KEYUP : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleKeyUpMsg(Msg);
WM_CHAR : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleCharMsg(Msg);
WM_MOUSEWHEEL : if (screen.FocusedForm is TChildForm) then TChildForm(screen.FocusedForm).HandleMouseWheelMsg(Msg);
end;
end;

View File

@ -280,7 +280,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYDOWN :
@ -296,7 +295,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_SYSKEYUP :
@ -312,7 +310,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_KEYDOWN :
@ -344,7 +341,6 @@ begin
TempKeyEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_CHAR :
@ -361,7 +357,6 @@ begin
CefCheckAltGrPressed(Msg.wParam, TempKeyEvent);
chrmosr.SendKeyEvent(@TempKeyEvent);
Handled := True;
end;
WM_MOUSEWHEEL :

View File

@ -6,7 +6,7 @@
<MainSource>TabbedBrowser2.dpr</MainSource>
<Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config>
<Platform Condition="'$(Platform)'==''">Win64</Platform>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Application</AppType>
</PropertyGroup>

View File

@ -137,7 +137,6 @@ contains
uCEFChromiumOptions in '..\source\uCEFChromiumOptions.pas',
uCEFChromiumFontOptions in '..\source\uCEFChromiumFontOptions.pas',
uCEFPDFPrintOptions in '..\source\uCEFPDFPrintOptions.pas',
uCEFRegisterCDMCallback in '..\source\uCEFRegisterCDMCallback.pas',
uCEFThread in '..\source\uCEFThread.pas',
uCEFv8Interceptor in '..\source\uCEFv8Interceptor.pas',
uCEFWaitableEvent in '..\source\uCEFWaitableEvent.pas',

View File

@ -231,7 +231,6 @@
<DCCReference Include="..\source\uCEFChromiumOptions.pas"/>
<DCCReference Include="..\source\uCEFChromiumFontOptions.pas"/>
<DCCReference Include="..\source\uCEFPDFPrintOptions.pas"/>
<DCCReference Include="..\source\uCEFRegisterCDMCallback.pas"/>
<DCCReference Include="..\source\uCEFThread.pas"/>
<DCCReference Include="..\source\uCEFv8Interceptor.pas"/>
<DCCReference Include="..\source\uCEFWaitableEvent.pas"/>
@ -319,6 +318,7 @@
<DCCReference Include="..\source\uCEFWorkSchedulerQueueThread.pas"/>
<DCCReference Include="..\source\uCEFLinkedWinControlBase.pas"/>
<DCCReference Include="..\source\uCEFTimerWorkScheduler.pas"/>
<DCCReference Include="..\source\uCEFFrameHandler.pas"/>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>

View File

@ -135,7 +135,6 @@ contains
uCEFChromiumOptions in '..\source\uCEFChromiumOptions.pas',
uCEFChromiumFontOptions in '..\source\uCEFChromiumFontOptions.pas',
uCEFPDFPrintOptions in '..\source\uCEFPDFPrintOptions.pas',
uCEFRegisterCDMCallback in '..\source\uCEFRegisterCDMCallback.pas',
uCEFThread in '..\source\uCEFThread.pas',
uCEFv8Interceptor in '..\source\uCEFv8Interceptor.pas',
uCEFWaitableEvent in '..\source\uCEFWaitableEvent.pas',

View File

@ -138,7 +138,6 @@ contains
uCEFChromiumOptions in '..\source\uCEFChromiumOptions.pas',
uCEFChromiumFontOptions in '..\source\uCEFChromiumFontOptions.pas',
uCEFPDFPrintOptions in '..\source\uCEFPDFPrintOptions.pas',
uCEFRegisterCDMCallback in '..\source\uCEFRegisterCDMCallback.pas',
uCEFThread in '..\source\uCEFThread.pas',
uCEFv8Interceptor in '..\source\uCEFv8Interceptor.pas',
uCEFWaitableEvent in '..\source\uCEFWaitableEvent.pas',

View File

@ -253,7 +253,6 @@
<DCCReference Include="..\source\uCEFChromiumOptions.pas"/>
<DCCReference Include="..\source\uCEFChromiumFontOptions.pas"/>
<DCCReference Include="..\source\uCEFPDFPrintOptions.pas"/>
<DCCReference Include="..\source\uCEFRegisterCDMCallback.pas"/>
<DCCReference Include="..\source\uCEFThread.pas"/>
<DCCReference Include="..\source\uCEFv8Interceptor.pas"/>
<DCCReference Include="..\source\uCEFWaitableEvent.pas"/>
@ -390,14 +389,14 @@
</Delphi.Personality>
<Deployment Version="3">
<DeployFile LocalName="$(BDS)\Redist\iossimulator\libcgunwind.1.0.dylib" Class="DependencyModule"/>
<DeployFile LocalName="..\..\..\..\..\..\..\Public\Documents\Embarcadero\Studio\20.0\Bpl\CEF4Delphi_FMX.bpl" Configuration="Debug" Class="ProjectOutput">
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule"/>
<DeployFile LocalName="..\..\..\..\..\..\..\Public\Documents\Embarcadero\Studio\19.0\Bpl\CEF4Delphi_FMX.bpl" Configuration="Release" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>CEF4Delphi_FMX.bpl</RemoteName>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="$(BDS)\Redist\osx32\libcgunwind.1.0.dylib" Class="DependencyModule"/>
<DeployFile LocalName="..\..\..\..\..\..\..\Public\Documents\Embarcadero\Studio\19.0\Bpl\CEF4Delphi_FMX.bpl" Configuration="Release" Class="ProjectOutput">
<DeployFile LocalName="..\..\..\..\..\..\..\Public\Documents\Embarcadero\Studio\21.0\Bpl\CEF4Delphi_FMX.bpl" Configuration="Debug" Class="ProjectOutput">
<Platform Name="Win32">
<RemoteName>CEF4Delphi_FMX.bpl</RemoteName>
<Overwrite>true</Overwrite>

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="92" Release="27"/>
<Files Count="203">
<Version Major="93" Minor="1" Release="11"/>
<Files Count="202">
<Item1>
<Filename Value="..\source\uCEFAccessibilityHandler.pas"/>
<UnitName Value="uCEFAccessibilityHandler"/>
@ -285,574 +285,570 @@
<UnitName Value="uCEFProcessMessage"/>
</Item65>
<Item66>
<Filename Value="..\source\uCEFRegisterCDMCallback.pas"/>
<UnitName Value="uCEFRegisterCDMCallback"/>
</Item66>
<Item67>
<Filename Value="..\source\uCEFRenderHandler.pas"/>
<UnitName Value="uCEFRenderHandler"/>
</Item67>
<Item68>
</Item66>
<Item67>
<Filename Value="..\source\uCEFRenderProcessHandler.pas"/>
<UnitName Value="uCEFRenderProcessHandler"/>
</Item68>
<Item69>
</Item67>
<Item68>
<Filename Value="..\source\uCEFRequest.pas"/>
<UnitName Value="uCEFRequest"/>
</Item69>
<Item70>
</Item68>
<Item69>
<Filename Value="..\source\uCEFRequestCallback.pas"/>
<UnitName Value="uCEFRequestCallback"/>
</Item70>
<Item71>
</Item69>
<Item70>
<Filename Value="..\source\uCEFRequestContext.pas"/>
<UnitName Value="uCEFRequestContext"/>
</Item71>
<Item72>
</Item70>
<Item71>
<Filename Value="..\source\uCEFRequestContextHandler.pas"/>
<UnitName Value="uCEFRequestContextHandler"/>
</Item72>
<Item73>
</Item71>
<Item72>
<Filename Value="..\source\uCEFRequestHandler.pas"/>
<UnitName Value="uCEFRequestHandler"/>
</Item73>
<Item74>
</Item72>
<Item73>
<Filename Value="..\source\uCEFResolveCallback.pas"/>
<UnitName Value="uCEFResolveCallback"/>
</Item74>
<Item75>
</Item73>
<Item74>
<Filename Value="..\source\uCEFResourceBundle.pas"/>
<UnitName Value="uCEFResourceBundle"/>
</Item75>
<Item76>
</Item74>
<Item75>
<Filename Value="..\source\uCEFResourceBundleHandler.pas"/>
<UnitName Value="uCEFResourceBundleHandler"/>
</Item76>
<Item77>
</Item75>
<Item76>
<Filename Value="..\source\uCEFResourceHandler.pas"/>
<UnitName Value="uCEFResourceHandler"/>
</Item77>
<Item78>
</Item76>
<Item77>
<Filename Value="..\source\uCEFResponse.pas"/>
<UnitName Value="uCEFResponse"/>
</Item78>
<Item79>
</Item77>
<Item78>
<Filename Value="..\source\uCEFResponseFilter.pas"/>
<UnitName Value="uCEFResponseFilter"/>
</Item79>
<Item80>
</Item78>
<Item79>
<Filename Value="..\source\uCEFRunContextMenuCallback.pas"/>
<UnitName Value="uCEFRunContextMenuCallback"/>
</Item80>
<Item81>
</Item79>
<Item80>
<Filename Value="..\source\uCEFRunFileDialogCallback.pas"/>
<UnitName Value="uCEFRunFileDialogCallback"/>
</Item81>
<Item82>
</Item80>
<Item81>
<Filename Value="..\source\uCEFSchemeHandlerFactory.pas"/>
<UnitName Value="uCEFSchemeHandlerFactory"/>
</Item82>
<Item83>
</Item81>
<Item82>
<Filename Value="..\source\uCEFSchemeRegistrar.pas"/>
<UnitName Value="uCEFSchemeRegistrar"/>
</Item83>
<Item84>
</Item82>
<Item83>
<Filename Value="..\source\uCEFSelectClientCertificateCallback.pas"/>
<UnitName Value="uCEFSelectClientCertificateCallback"/>
</Item84>
<Item85>
</Item83>
<Item84>
<Filename Value="..\source\uCEFSetCookieCallback.pas"/>
<UnitName Value="uCEFSetCookieCallback"/>
</Item85>
<Item86>
</Item84>
<Item85>
<Filename Value="..\source\uCEFSslInfo.pas"/>
<UnitName Value="uCEFSslInfo"/>
</Item86>
<Item87>
</Item85>
<Item86>
<Filename Value="..\source\uCEFSSLStatus.pas"/>
<UnitName Value="uCEFSSLStatus"/>
</Item87>
<Item88>
</Item86>
<Item87>
<Filename Value="..\source\uCEFStreamReader.pas"/>
<UnitName Value="uCEFStreamReader"/>
</Item88>
<Item89>
</Item87>
<Item88>
<Filename Value="..\source\uCEFStreamWriter.pas"/>
<UnitName Value="uCEFStreamWriter"/>
</Item89>
<Item90>
</Item88>
<Item89>
<Filename Value="..\source\uCEFStringList.pas"/>
<UnitName Value="uCEFStringList"/>
</Item90>
<Item91>
</Item89>
<Item90>
<Filename Value="..\source\uCEFStringMap.pas"/>
<UnitName Value="uCEFStringMap"/>
</Item91>
<Item92>
</Item90>
<Item91>
<Filename Value="..\source\uCEFStringMultimap.pas"/>
<UnitName Value="uCEFStringMultimap"/>
</Item92>
<Item93>
</Item91>
<Item92>
<Filename Value="..\source\uCEFStringVisitor.pas"/>
<UnitName Value="uCEFStringVisitor"/>
</Item93>
<Item94>
</Item92>
<Item93>
<Filename Value="..\source\uCEFTask.pas"/>
<UnitName Value="uCEFTask"/>
</Item94>
<Item95>
</Item93>
<Item94>
<Filename Value="..\source\uCEFTaskRunner.pas"/>
<UnitName Value="uCEFTaskRunner"/>
</Item95>
<Item96>
</Item94>
<Item95>
<Filename Value="..\source\uCEFThread.pas"/>
<UnitName Value="uCEFThread"/>
</Item96>
<Item97>
</Item95>
<Item96>
<Filename Value="..\source\uCEFTypes.pas"/>
<UnitName Value="uCEFTypes"/>
</Item97>
<Item98>
</Item96>
<Item97>
<Filename Value="..\source\uCEFUrlRequest.pas"/>
<UnitName Value="uCEFUrlRequest"/>
</Item98>
<Item99>
</Item97>
<Item98>
<Filename Value="..\source\uCEFUrlrequestClient.pas"/>
<UnitName Value="uCEFUrlrequestClient"/>
</Item99>
<Item100>
</Item98>
<Item99>
<Filename Value="..\source\uCEFv8Accessor.pas"/>
<UnitName Value="uCEFv8Accessor"/>
</Item100>
<Item101>
</Item99>
<Item100>
<Filename Value="..\source\uCEFv8ArrayBufferReleaseCallback.pas"/>
<UnitName Value="uCEFv8ArrayBufferReleaseCallback"/>
</Item101>
<Item102>
</Item100>
<Item101>
<Filename Value="..\source\uCEFv8Context.pas"/>
<UnitName Value="uCEFv8Context"/>
</Item102>
<Item103>
</Item101>
<Item102>
<Filename Value="..\source\uCEFv8Exception.pas"/>
<UnitName Value="uCEFv8Exception"/>
</Item103>
<Item104>
</Item102>
<Item103>
<Filename Value="..\source\uCEFv8Handler.pas"/>
<UnitName Value="uCEFv8Handler"/>
</Item104>
<Item105>
</Item103>
<Item104>
<Filename Value="..\source\uCEFv8Interceptor.pas"/>
<UnitName Value="uCEFv8Interceptor"/>
</Item105>
<Item106>
</Item104>
<Item105>
<Filename Value="..\source\uCEFv8StackFrame.pas"/>
<UnitName Value="uCEFv8StackFrame"/>
</Item106>
<Item107>
</Item105>
<Item106>
<Filename Value="..\source\uCEFv8StackTrace.pas"/>
<UnitName Value="uCEFv8StackTrace"/>
</Item107>
<Item108>
</Item106>
<Item107>
<Filename Value="..\source\uCEFv8Value.pas"/>
<UnitName Value="uCEFv8Value"/>
</Item108>
<Item109>
</Item107>
<Item108>
<Filename Value="..\source\uCEFValue.pas"/>
<UnitName Value="uCEFValue"/>
</Item109>
<Item110>
</Item108>
<Item109>
<Filename Value="..\source\uCEFWaitableEvent.pas"/>
<UnitName Value="uCEFWaitableEvent"/>
</Item110>
<Item111>
</Item109>
<Item110>
<Filename Value="..\source\uCEFWebPluginInfo.pas"/>
<UnitName Value="uCEFWebPluginInfo"/>
</Item111>
<Item112>
</Item110>
<Item111>
<Filename Value="..\source\uCEFWebPluginInfoVisitor.pas"/>
<UnitName Value="uCEFWebPluginInfoVisitor"/>
</Item112>
<Item113>
</Item111>
<Item112>
<Filename Value="..\source\uCEFWebPluginUnstableCallback.pas"/>
<UnitName Value="uCEFWebPluginUnstableCallback"/>
</Item113>
<Item114>
</Item112>
<Item113>
<Filename Value="..\source\uCEFWindowParent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFWindowParent"/>
</Item114>
<Item115>
</Item113>
<Item114>
<Filename Value="..\source\uCEFWorkScheduler.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFWorkScheduler"/>
</Item115>
<Item116>
</Item114>
<Item115>
<Filename Value="..\source\uCEFWorkSchedulerThread.pas"/>
<UnitName Value="uCEFWorkSchedulerThread"/>
</Item116>
<Item117>
</Item115>
<Item116>
<Filename Value="..\source\uCEFWriteHandler.pas"/>
<UnitName Value="uCEFWriteHandler"/>
</Item117>
<Item118>
</Item116>
<Item117>
<Filename Value="..\source\uCEFX509Certificate.pas"/>
<UnitName Value="uCEFX509Certificate"/>
</Item118>
<Item119>
</Item117>
<Item118>
<Filename Value="..\source\uCEFX509CertPrincipal.pas"/>
<UnitName Value="uCEFX509CertPrincipal"/>
</Item119>
<Item120>
</Item118>
<Item119>
<Filename Value="..\source\uCEFXmlReader.pas"/>
<UnitName Value="uCEFXmlReader"/>
</Item120>
<Item121>
</Item119>
<Item120>
<Filename Value="..\source\uCEFZipReader.pas"/>
<UnitName Value="uCEFZipReader"/>
</Item121>
<Item122>
</Item120>
<Item121>
<Filename Value="..\source\uCEFChromiumCore.pas"/>
<UnitName Value="uCEFChromiumCore"/>
</Item122>
<Item123>
</Item121>
<Item122>
<Filename Value="..\source\uCEFChromium.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFChromium"/>
</Item123>
<Item124>
</Item122>
<Item123>
<Filename Value="..\source\uCEFBufferPanel.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFBufferPanel"/>
</Item124>
<Item125>
</Item123>
<Item124>
<Filename Value="..\source\uCEFServer.pas"/>
<UnitName Value="uCEFServer"/>
</Item125>
<Item126>
</Item124>
<Item125>
<Filename Value="..\source\uCEFServerComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFServerComponent"/>
</Item126>
<Item127>
</Item125>
<Item126>
<Filename Value="..\source\uCEFServerEvents.pas"/>
<UnitName Value="uCEFServerEvents"/>
</Item127>
<Item128>
</Item126>
<Item127>
<Filename Value="..\source\uCEFServerHandler.pas"/>
<UnitName Value="uCEFServerHandler"/>
</Item127>
<Item128>
<Filename Value="..\source\res\tbufferpanel.lrs"/>
<Type Value="LRS"/>
</Item128>
<Item129>
<Filename Value="..\source\res\tbufferpanel.lrs"/>
<Filename Value="..\source\res\tcefservercomponent.lrs"/>
<Type Value="LRS"/>
</Item129>
<Item130>
<Filename Value="..\source\res\tcefservercomponent.lrs"/>
<Filename Value="..\source\res\tcefwindowparent.lrs"/>
<Type Value="LRS"/>
</Item130>
<Item131>
<Filename Value="..\source\res\tcefwindowparent.lrs"/>
<Filename Value="..\source\res\tcefworkscheduler.lrs"/>
<Type Value="LRS"/>
</Item131>
<Item132>
<Filename Value="..\source\res\tcefworkscheduler.lrs"/>
<Filename Value="..\source\res\tchromium.lrs"/>
<Type Value="LRS"/>
</Item132>
<Item133>
<Filename Value="..\source\res\tchromium.lrs"/>
<Filename Value="..\source\res\tchromiumwindow.lrs"/>
<Type Value="LRS"/>
</Item133>
<Item134>
<Filename Value="..\source\res\tchromiumwindow.lrs"/>
<Type Value="LRS"/>
</Item134>
<Item135>
<Filename Value="..\source\uCEFWinControl.pas"/>
<UnitName Value="uCEFWinControl"/>
</Item135>
<Item136>
</Item134>
<Item135>
<Filename Value="..\source\uCEFLinkedWindowParent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFLinkedWindowParent"/>
</Item136>
<Item137>
</Item135>
<Item136>
<Filename Value="..\source\uCEFUrlRequestClientEvents.pas"/>
<UnitName Value="uCEFUrlRequestClientEvents"/>
</Item137>
<Item138>
</Item136>
<Item137>
<Filename Value="..\source\uCEFUrlRequestClientComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFUrlRequestClientComponent"/>
</Item138>
<Item139>
</Item137>
<Item138>
<Filename Value="..\source\uCEFOSRIMEHandler.pas"/>
<UnitName Value="uCEFOSRIMEHandler"/>
</Item139>
<Item140>
</Item138>
<Item139>
<Filename Value="..\source\uCEFCookieAccessFilter.pas"/>
<UnitName Value="uCEFCookieAccessFilter"/>
</Item140>
<Item141>
</Item139>
<Item140>
<Filename Value="..\source\uCEFResourceReadCallback.pas"/>
<UnitName Value="uCEFResourceReadCallback"/>
</Item141>
<Item142>
</Item140>
<Item141>
<Filename Value="..\source\uCEFResourceRequestHandler.pas"/>
<UnitName Value="uCEFResourceRequestHandler"/>
</Item142>
<Item143>
</Item141>
<Item142>
<Filename Value="..\source\uCEFResourceSkipCallback.pas"/>
<UnitName Value="uCEFResourceSkipCallback"/>
</Item143>
<Item144>
</Item142>
<Item143>
<Filename Value="..\source\res\tcefsentinel.lrs"/>
<Type Value="LRS"/>
</Item144>
<Item145>
</Item143>
<Item144>
<Filename Value="..\source\uCEFSentinel.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFSentinel"/>
</Item145>
<Item146>
</Item144>
<Item145>
<Filename Value="..\source\uCEFApplicationCore.pas"/>
<UnitName Value="uCEFApplicationCore"/>
</Item146>
<Item147>
</Item145>
<Item146>
<Filename Value="..\source\uCEFOAuth2Helper.pas"/>
<UnitName Value="uCEFOAuth2Helper"/>
</Item147>
<Item148>
</Item146>
<Item147>
<Filename Value="..\source\uCEFMediaObserver.pas"/>
<UnitName Value="uCEFMediaObserver"/>
</Item148>
<Item149>
</Item147>
<Item148>
<Filename Value="..\source\uCEFMediaRoute.pas"/>
<UnitName Value="uCEFMediaRoute"/>
</Item149>
<Item150>
</Item148>
<Item149>
<Filename Value="..\source\uCEFMediaRouteCreateCallback.pas"/>
<UnitName Value="uCEFMediaRouteCreateCallback"/>
</Item150>
<Item151>
</Item149>
<Item150>
<Filename Value="..\source\uCEFMediaRouter.pas"/>
<UnitName Value="uCEFMediaRouter"/>
</Item151>
<Item152>
</Item150>
<Item151>
<Filename Value="..\source\uCEFMediaSink.pas"/>
<UnitName Value="uCEFMediaSink"/>
</Item152>
<Item153>
</Item151>
<Item152>
<Filename Value="..\source\uCEFMediaSource.pas"/>
<UnitName Value="uCEFMediaSource"/>
</Item153>
<Item154>
</Item152>
<Item153>
<Filename Value="..\source\uCEFRegistration.pas"/>
<UnitName Value="uCEFRegistration"/>
</Item154>
<Item155>
</Item153>
<Item154>
<Filename Value="..\source\uCEFWindowDelegate.pas"/>
<UnitName Value="uCEFWindowDelegate"/>
</Item155>
<Item156>
</Item154>
<Item155>
<Filename Value="..\source\uCEFWindow.pas"/>
<UnitName Value="uCEFWindow"/>
</Item156>
<Item157>
</Item155>
<Item156>
<Filename Value="..\source\uCEFMenuButtonDelegate.pas"/>
<UnitName Value="uCEFMenuButtonDelegate"/>
</Item157>
<Item158>
</Item156>
<Item157>
<Filename Value="..\source\uCEFMenuButtonPressedLock.pas"/>
<UnitName Value="uCEFMenuButtonPressedLock"/>
</Item158>
<Item159>
</Item157>
<Item158>
<Filename Value="..\source\uCEFMenuButton.pas"/>
<UnitName Value="uCEFMenuButton"/>
</Item159>
<Item160>
</Item158>
<Item159>
<Filename Value="..\source\uCEFLabelButton.pas"/>
<UnitName Value="uCEFLabelButton"/>
</Item160>
<Item161>
</Item159>
<Item160>
<Filename Value="..\source\uCEFButtonDelegate.pas"/>
<UnitName Value="uCEFButtonDelegate"/>
</Item161>
<Item162>
</Item160>
<Item161>
<Filename Value="..\source\uCEFButton.pas"/>
<UnitName Value="uCEFButton"/>
</Item162>
<Item163>
</Item161>
<Item162>
<Filename Value="..\source\uCEFBrowserViewDelegate.pas"/>
<UnitName Value="uCEFBrowserViewDelegate"/>
</Item163>
<Item164>
</Item162>
<Item163>
<Filename Value="..\source\uCEFBrowserView.pas"/>
<UnitName Value="uCEFBrowserView"/>
</Item164>
<Item165>
</Item163>
<Item164>
<Filename Value="..\source\uCEFPanelDelegate.pas"/>
<UnitName Value="uCEFPanelDelegate"/>
</Item165>
<Item166>
</Item164>
<Item165>
<Filename Value="..\source\uCEFPanel.pas"/>
<UnitName Value="uCEFPanel"/>
</Item166>
<Item167>
</Item165>
<Item166>
<Filename Value="..\source\uCEFScrollView.pas"/>
<UnitName Value="uCEFScrollView"/>
</Item167>
<Item168>
</Item166>
<Item167>
<Filename Value="..\source\uCEFTextfieldDelegate.pas"/>
<UnitName Value="uCEFTextfieldDelegate"/>
</Item168>
<Item169>
</Item167>
<Item168>
<Filename Value="..\source\uCEFTextfield.pas"/>
<UnitName Value="uCEFTextfield"/>
</Item169>
<Item170>
</Item168>
<Item169>
<Filename Value="..\source\uCEFViewDelegate.pas"/>
<UnitName Value="uCEFViewDelegate"/>
</Item170>
<Item171>
</Item169>
<Item170>
<Filename Value="..\source\uCEFView.pas"/>
<UnitName Value="uCEFView"/>
</Item171>
<Item172>
</Item170>
<Item171>
<Filename Value="..\source\uCEFFillLayout.pas"/>
<UnitName Value="uCEFFillLayout"/>
</Item172>
<Item173>
</Item171>
<Item172>
<Filename Value="..\source\uCEFBoxLayout.pas"/>
<UnitName Value="uCEFBoxLayout"/>
</Item173>
<Item174>
</Item172>
<Item173>
<Filename Value="..\source\uCEFLayout.pas"/>
<UnitName Value="uCEFLayout"/>
</Item174>
<Item175>
</Item173>
<Item174>
<Filename Value="..\source\uCEFDisplay.pas"/>
<UnitName Value="uCEFDisplay"/>
</Item175>
<Item176>
</Item174>
<Item175>
<Filename Value="..\source\uCEFMenuButtonComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFMenuButtonComponent"/>
</Item176>
<Item177>
</Item175>
<Item176>
<Filename Value="..\source\uCEFLabelButtonComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFLabelButtonComponent"/>
</Item177>
<Item178>
</Item176>
<Item177>
<Filename Value="..\source\uCEFButtonComponent.pas"/>
<UnitName Value="uCEFButtonComponent"/>
</Item178>
<Item179>
</Item177>
<Item178>
<Filename Value="..\source\uCEFBrowserViewComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFBrowserViewComponent"/>
</Item179>
<Item180>
</Item178>
<Item179>
<Filename Value="..\source\uCEFWindowComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFWindowComponent"/>
</Item180>
<Item181>
</Item179>
<Item180>
<Filename Value="..\source\uCEFPanelComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFPanelComponent"/>
</Item181>
<Item182>
</Item180>
<Item181>
<Filename Value="..\source\uCEFScrollViewComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFScrollViewComponent"/>
</Item182>
<Item183>
</Item181>
<Item182>
<Filename Value="..\source\uCEFTextfieldComponent.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFTextfieldComponent"/>
</Item183>
<Item184>
</Item182>
<Item183>
<Filename Value="..\source\uCEFViewComponent.pas"/>
<UnitName Value="uCEFViewComponent"/>
</Item184>
<Item185>
</Item183>
<Item184>
<Filename Value="..\source\uCEFViewsFrameworkEvents.pas"/>
<UnitName Value="uCEFViewsFrameworkEvents"/>
</Item185>
<Item186>
</Item184>
<Item185>
<Filename Value="..\source\uCEFAudioHandler.pas"/>
<UnitName Value="uCEFAudioHandler"/>
</Item186>
<Item187>
</Item185>
<Item186>
<Filename Value="..\source\uCEFDevToolsMessageObserver.pas"/>
<UnitName Value="uCEFDevToolsMessageObserver"/>
</Item187>
<Item188>
</Item186>
<Item187>
<Filename Value="..\source\uCEFMediaSinkDeviceInfoCallback.pas"/>
<UnitName Value="uCEFMediaSinkDeviceInfoCallback"/>
</Item188>
<Item189>
</Item187>
<Item188>
<Filename Value="..\source\uCEFJson.pas"/>
<UnitName Value="uCEFJson"/>
</Item189>
<Item190>
</Item188>
<Item189>
<Filename Value="..\source\uCEFBitmapBitBuffer.pas"/>
<UnitName Value="uCEFBitmapBitBuffer"/>
</Item190>
<Item191>
</Item189>
<Item190>
<Filename Value="..\source\uCEFPrintDialogCallback.pas"/>
<UnitName Value="uCEFPrintDialogCallback"/>
</Item191>
<Item192>
</Item190>
<Item191>
<Filename Value="..\source\uCEFPrintHandler.pas"/>
<UnitName Value="uCEFPrintHandler"/>
</Item192>
<Item193>
</Item191>
<Item192>
<Filename Value="..\source\uCEFPrintJobCallback.pas"/>
<UnitName Value="uCEFPrintJobCallback"/>
</Item193>
<Item194>
</Item192>
<Item193>
<Filename Value="..\source\uCEFLinuxFunctions.pas"/>
<UnitName Value="uCEFLinuxFunctions"/>
</Item194>
<Item195>
</Item193>
<Item194>
<Filename Value="..\source\uCEFLinuxTypes.pas"/>
<UnitName Value="uCEFLinuxTypes"/>
</Item195>
<Item196>
</Item194>
<Item195>
<Filename Value="..\source\uCEFLinuxConstants.pas"/>
<UnitName Value="uCEFLinuxConstants"/>
</Item196>
<Item197>
</Item195>
<Item196>
<Filename Value="..\source\uCEFWorkSchedulerQueueThread.pas"/>
<UnitName Value="uCEFWorkSchedulerQueueThread"/>
</Item197>
<Item198>
</Item196>
<Item197>
<Filename Value="..\source\uCEFLinkedWinControlBase.pas"/>
<UnitName Value="uCEFLinkedWinControlBase"/>
</Item198>
<Item199>
</Item197>
<Item198>
<Filename Value="..\source\uceflazaruscocoa.pas"/>
<UnitName Value="uCEFLazarusCocoa"/>
</Item199>
<Item200>
</Item198>
<Item199>
<Filename Value="..\source\uCEFBrowserWindow.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFBrowserWindow"/>
</Item200>
<Item201>
</Item199>
<Item200>
<Filename Value="..\source\uCEFOsrBrowserWindow.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="uCEFOsrBrowserWindow"/>
</Item201>
<Item202>
</Item200>
<Item201>
<Filename Value="..\source\uCEFTimerWorkScheduler.pas"/>
<UnitName Value="uCEFTimerWorkScheduler"/>
</Item202>
<Item203>
</Item201>
<Item202>
<Filename Value="..\source\uCEFFrameHandler.pas"/>
<UnitName Value="uCEFFrameHandler"/>
</Item203>
</Item202>
</Files>
<RequiredPkgs Count="5">
<Item1>

View File

@ -27,13 +27,12 @@ uses
uCEFMenuModel, uCEFMenuModelDelegate, uCEFMiscFunctions,
uCEFNavigationEntry, uCEFNavigationEntryVisitor, uCEFPDFPrintCallback,
uCEFPDFPrintOptions, uCEFPostData, uCEFPostDataElement, uCEFPrintSettings,
uCEFProcessMessage, uCEFRegisterCDMCallback, uCEFRenderHandler,
uCEFRenderProcessHandler, uCEFRequest, uCEFRequestCallback,
uCEFRequestContext, uCEFRequestContextHandler, uCEFRequestHandler,
uCEFResolveCallback, uCEFResourceBundle, uCEFResourceBundleHandler,
uCEFResourceHandler, uCEFResponse, uCEFResponseFilter,
uCEFRunContextMenuCallback, uCEFRunFileDialogCallback,
uCEFSchemeHandlerFactory, uCEFSchemeRegistrar,
uCEFProcessMessage, uCEFRenderHandler, uCEFRenderProcessHandler,
uCEFRequest, uCEFRequestCallback, uCEFRequestContext,
uCEFRequestContextHandler, uCEFRequestHandler, uCEFResolveCallback,
uCEFResourceBundle, uCEFResourceBundleHandler, uCEFResourceHandler,
uCEFResponse, uCEFResponseFilter, uCEFRunContextMenuCallback,
uCEFRunFileDialogCallback, uCEFSchemeHandlerFactory, uCEFSchemeRegistrar,
uCEFSelectClientCertificateCallback, uCEFSetCookieCallback, uCEFSslInfo,
uCEFSSLStatus, uCEFStreamReader, uCEFStreamWriter, uCEFStringList,
uCEFStringMap, uCEFStringMultimap, uCEFStringVisitor, uCEFTask,

View File

@ -64,15 +64,15 @@ uses
uCEFTypes, uCEFInterfaces, uCEFBaseRefCounted, uCEFSchemeRegistrar;
const
CEF_SUPPORTED_VERSION_MAJOR = 92;
CEF_SUPPORTED_VERSION_MINOR = 0;
CEF_SUPPORTED_VERSION_RELEASE = 27;
CEF_SUPPORTED_VERSION_MAJOR = 93;
CEF_SUPPORTED_VERSION_MINOR = 1;
CEF_SUPPORTED_VERSION_RELEASE = 11;
CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 92;
CEF_CHROMEELF_VERSION_MAJOR = 93;
CEF_CHROMEELF_VERSION_MINOR = 0;
CEF_CHROMEELF_VERSION_RELEASE = 4515;
CEF_CHROMEELF_VERSION_BUILD = 159;
CEF_CHROMEELF_VERSION_RELEASE = 4577;
CEF_CHROMEELF_VERSION_BUILD = 63;
{$IFDEF MSWINDOWS}
LIBCEF_DLL = 'libcef.dll';
@ -187,6 +187,7 @@ type
FDisableRequestHandlingForTesting : boolean;
FDisablePopupBlocking : boolean;
FDisableBackForwardCache : boolean;
FDisableComponentUpdate : boolean;
// Fields used during the CEF initialization
FWindowsSandboxInfo : pointer;
@ -213,7 +214,6 @@ type
FMustCreateLoadHandler : boolean;
FStatus : TCefAplicationStatus;
FMissingLibFiles : string;
FWidevinePath : ustring;
FMustFreeLibrary : boolean;
FLastErrorMessage : ustring;
@ -248,9 +248,6 @@ type
FOnFocusedNodeChanged : TOnFocusedNodeChangedEvent;
FOnProcessMessageReceived : TOnProcessMessageReceivedEvent;
// ICefRegisterCDMCallback
FOnCDMRegistrationComplete : TOnCDMRegistrationCompleteEvent;
// ICefLoadHandler
FOnLoadingStateChange : TOnRenderLoadingStateChange;
FOnLoadStart : TOnRenderLoadStart;
@ -359,7 +356,6 @@ type
function CheckCEFDLL : boolean;
{$ENDIF}
function CheckCEFLibrary : boolean;
procedure RegisterWidevineCDM;
procedure ShowErrorMessageDlg(const aError : string); virtual;
function ParseProcessType : TCefProcessType;
procedure AddCustomCommandLineSwitches(var aKeys, aValues : TStringList); virtual;
@ -403,7 +399,6 @@ type
procedure Internal_OnUncaughtException(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context; const exception: ICefV8Exception; const stackTrace: ICefV8StackTrace);
procedure Internal_OnFocusedNodeChanged(const browser: ICefBrowser; const frame: ICefFrame; const node: ICefDomNode);
procedure Internal_OnProcessMessageReceived(const browser: ICefBrowser; const frame: ICefFrame; sourceProcess: TCefProcessId; const aMessage: ICefProcessMessage; var aHandled : boolean);
procedure Internal_OnCDMRegistrationComplete(result : TCefCDMRegistrationError; const error_message : ustring);
procedure Internal_OnLoadingStateChange(const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
procedure Internal_OnLoadStart(const browser: ICefBrowser; const frame: ICefFrame; transitionType: TCefTransitionType);
procedure Internal_OnLoadEnd(const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer);
@ -499,6 +494,7 @@ type
property DisableRequestHandlingForTesting : boolean read FDisableRequestHandlingForTesting write FDisableRequestHandlingForTesting; // --disable-request-handling-for-testing
property DisablePopupBlocking : boolean read FDisablePopupBlocking write FDisablePopupBlocking; // --disable-popup-blocking
property DisableBackForwardCache : boolean read FDisableBackForwardCache write FDisableBackForwardCache; // --disable-back-forward-cache
property DisableComponentUpdate : boolean read FDisableComponentUpdate write FDisableComponentUpdate; // --disable-component-update
// Properties used during the CEF initialization
property WindowsSandboxInfo : Pointer read FWindowsSandboxInfo write FWindowsSandboxInfo;
@ -533,7 +529,6 @@ type
property OsmodalLoop : boolean write SetOsmodalLoop;
property Status : TCefAplicationStatus read FStatus;
property MissingLibFiles : string read FMissingLibFiles;
property WidevinePath : ustring read FWidevinePath write FWidevinePath;
property MustFreeLibrary : boolean read FMustFreeLibrary write FMustFreeLibrary;
property ChildProcessesCount : integer read GetChildProcessesCount;
property UsedMemory : uint64 read GetUsedMemory;
@ -572,9 +567,6 @@ type
property OnFocusedNodeChanged : TOnFocusedNodeChangedEvent read FOnFocusedNodeChanged write FOnFocusedNodeChanged;
property OnProcessMessageReceived : TOnProcessMessageReceivedEvent read FOnProcessMessageReceived write FOnProcessMessageReceived;
// ICefRegisterCDMCallback
property OnCDMRegistrationComplete : TOnCDMRegistrationCompleteEvent read FOnCDMRegistrationComplete write FOnCDMRegistrationComplete;
// ICefLoadHandler
property OnLoadingStateChange : TOnRenderLoadingStateChange read FOnLoadingStateChange write FOnLoadingStateChange;
property OnLoadStart : TOnRenderLoadStart read FOnLoadStart write FOnLoadStart;
@ -642,8 +634,8 @@ uses
{$ENDIF}
{$ENDIF}
uCEFLibFunctions, uCEFMiscFunctions, uCEFCommandLine, uCEFConstants,
uCEFSchemeHandlerFactory, uCEFCookieManager, uCEFApp, uCEFRegisterCDMCallback,
uCEFCompletionCallback, uCEFWaitableEvent;
uCEFSchemeHandlerFactory, uCEFCookieManager, uCEFApp, uCEFCompletionCallback,
uCEFWaitableEvent;
procedure DestroyGlobalCEFApp;
begin
@ -746,6 +738,7 @@ begin
FDisableRequestHandlingForTesting := False;
FDisablePopupBlocking := False;
FDisableBackForwardCache := False;
FDisableComponentUpdate := False;
// Fields used during the CEF initialization
FWindowsSandboxInfo := nil;
@ -775,7 +768,6 @@ begin
FMustCreateLoadHandler := False;
FStatus := asLoading;
FMissingLibFiles := '';
FWidevinePath := '';
FMustFreeLibrary := False;
FLastErrorMessage := '';
{$IFDEF MSWINDOWS}
@ -815,9 +807,6 @@ begin
FOnFocusedNodeChanged := nil;
FOnProcessMessageReceived := nil;
// ICefRegisterCDMCallback
FOnCDMRegistrationComplete := nil;
// ICefLoadHandler
FOnLoadingStateChange := nil;
FOnLoadStart := nil;
@ -1382,8 +1371,6 @@ begin
if FDeleteCache then
RenameAndDeleteDir(FCache, True);
RegisterWidevineCDM;
InitializeSettings(FAppSettings);
{$IFDEF MSWINDOWS}
@ -1517,29 +1504,6 @@ begin
end;
end;
procedure TCefApplicationCore.RegisterWidevineCDM;
var
TempPath : TCefString;
TempCallback : ICefRegisterCDMCallback;
begin
try
try
if FLibLoaded and (length(FWidevinePath) > 0) and DirectoryExists(FWidevinePath) then
begin
TempPath := CefString(FWidevinePath);
TempCallback := TCefCustomRegisterCDMCallback.Create(self);
cef_register_widevine_cdm(@TempPath, TempCallback.Wrap);
end;
except
on e : exception do
if CustomExceptionHandler('TCefApplicationCore.RegisterWidevineCDM', e) then raise;
end;
finally
TempCallback := nil;
end;
end;
procedure TCefApplicationCore.ShowErrorMessageDlg(const aError : string);
begin
OutputDebugMessage(aError);
@ -1704,12 +1668,6 @@ begin
aHandled := False;
end;
procedure TCefApplicationCore.Internal_OnCDMRegistrationComplete(result : TCefCDMRegistrationError; const error_message : ustring);
begin
if assigned(FOnCDMRegistrationComplete) then
FOnCDMRegistrationComplete(result, error_message);
end;
procedure TCefApplicationCore.Internal_OnLoadingStateChange(const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
begin
if assigned(FOnLoadingStateChange) then
@ -2067,6 +2025,9 @@ begin
if FDisableBackForwardCache then
ReplaceSwitch(aKeys, aValues, '--disable-back-forward-cache');
if FDisableComponentUpdate then
ReplaceSwitch(aKeys, aValues, '--disable-component-update');
// The list of features you can enable is here :
// https://chromium.googlesource.com/chromium/src/+/master/chrome/common/chrome_features.cc
if (length(FEnableFeatures) > 0) then
@ -2892,14 +2853,12 @@ begin
{$IFDEF FPC}Pointer({$ENDIF}cef_unregister_internal_web_plugin{$IFDEF FPC}){$ENDIF} := GetProcAddress(FLibHandle, 'cef_unregister_internal_web_plugin');
{$IFDEF FPC}Pointer({$ENDIF}cef_register_web_plugin_crash{$IFDEF FPC}){$ENDIF} := GetProcAddress(FLibHandle, 'cef_register_web_plugin_crash');
{$IFDEF FPC}Pointer({$ENDIF}cef_is_web_plugin_unstable{$IFDEF FPC}){$ENDIF} := GetProcAddress(FLibHandle, 'cef_is_web_plugin_unstable');
{$IFDEF FPC}Pointer({$ENDIF}cef_register_widevine_cdm{$IFDEF FPC}){$ENDIF} := GetProcAddress(FLibHandle, 'cef_register_widevine_cdm');
Result := assigned(cef_visit_web_plugin_info) and
assigned(cef_refresh_web_plugins) and
assigned(cef_unregister_internal_web_plugin) and
assigned(cef_register_web_plugin_crash) and
assigned(cef_is_web_plugin_unstable) and
assigned(cef_register_widevine_cdm);
assigned(cef_is_web_plugin_unstable);
end;
function TCefApplicationCore.Load_cef_xml_reader_capi_h : boolean;

View File

@ -399,6 +399,7 @@ const
EVENTFLAG_IS_LEFT = 1 shl 10;
EVENTFLAG_IS_RIGHT = 1 shl 11;
EVENTFLAG_ALTGR_DOWN = 1 shl 12;
EVENTFLAG_IS_REPEAT = 1 shl 13;
// /include/internal/cef_types.h (cef_drag_operations_mask_t)
DRAG_OPERATION_NONE = 0;

View File

@ -215,7 +215,6 @@ type
TOnGetDataResourceEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(resourceId: Integer; out data: Pointer; out dataSize: NativeUInt; var aResult : Boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
TOnGetLocalizedStringEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(stringId: Integer; out stringVal: ustring; var aResult : Boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
TOnGetDataResourceForScaleEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(resourceId: Integer; scaleFactor: TCefScaleFactor; out data: Pointer; out dataSize: NativeUInt; var aResult : Boolean) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
TOnCDMRegistrationCompleteEvent = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(result : TCefCDMRegistrationError; const error_message : ustring) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
TOnRenderLoadStart = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; const frame: ICefFrame; transitionType: TCefTransitionType) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
TOnRenderLoadEnd = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
TOnRenderLoadError = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; const frame: ICefFrame; errorCode: TCefErrorCode; const errorText, failedUrl: ustring) {$IFNDEF DELPHI12_UP}{$IFNDEF FPC}of object{$ENDIF}{$ENDIF};
@ -229,7 +228,6 @@ type
TCefEndTracingCallbackProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const tracingFile: ustring);
TCefRegisterCDMProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(result: TCefCDMRegistrationError; const error_message: ustring);
TCefFastTaskProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure();
TCefv8ArrayBufferReleaseCallbackProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(buffer : Pointer);
TCefWebPluginInfoVisitorProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} function(const info: ICefWebPluginInfo; count, total: Integer): Boolean;
@ -2164,13 +2162,6 @@ type
procedure IsUnstable(const path: ustring; unstable: Boolean);
end;
// TCefRegisterCDMCallback
// /include/capi/cef_web_plugin_capi.h (cef_register_cdm_callback_t)
ICefRegisterCDMCallback = interface(ICefBaseRefCounted)
['{6C39AB3B-F724-483F-ABA0-37F6E0AECF35}']
procedure OnCDMRegistrationComplete(result: TCefCDMRegistrationError; const error_message: ustring);
end;
// TCefEndTracingCallback
// /include/capi/cef_trace_capi.h (cef_end_tracing_callback_t)
ICefEndTracingCallback = interface(ICefBaseRefCounted)

View File

@ -237,7 +237,6 @@ var
cef_unregister_internal_web_plugin : procedure(const path: PCefString); cdecl;
cef_register_web_plugin_crash : procedure(const path: PCefString); cdecl;
cef_is_web_plugin_unstable : procedure(const path: PCefString; callback: PCefWebPluginUnstableCallback); cdecl;
cef_register_widevine_cdm : procedure(const path: PCefString; callback: PCefRegisterCDMCallback); cdecl;
// /include/capi/cef_xml_reader_capi.h
cef_xml_reader_create : function(stream: PCefStreamReader; encodingType: TCefXmlEncodingType; const URI: PCefString): PCefXmlReader; cdecl;

View File

@ -74,8 +74,7 @@ uses
{$IFDEF LCLGTK2}gtk2, glib2, gdk2, gtk2proc, gtk2int, Gtk2Def, gdk2x, Gtk2Extra,{$ENDIF}
{$ENDIF}{$ENDIF}
{$ENDIF}
uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFResourceHandler,
uCEFRegisterCDMCallback, uCEFConstants;
uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFResourceHandler, uCEFConstants;
const
Kernel32DLL = 'kernel32.dll';
@ -1921,7 +1920,8 @@ begin
case aWparam of
VK_RETURN:
if (((aLparam shr 16) and KF_EXTENDED) <> 0) then Result := Result or EVENTFLAG_IS_KEY_PAD;
if (((aLparam shr 16) and KF_EXTENDED) <> 0) then
Result := Result or EVENTFLAG_IS_KEY_PAD;
VK_INSERT,
VK_DELETE,
@ -1933,7 +1933,8 @@ begin
VK_DOWN,
VK_LEFT,
VK_RIGHT :
if (((aLparam shr 16) and KF_EXTENDED) = 0) then Result := Result or EVENTFLAG_IS_KEY_PAD;
if (((aLparam shr 16) and KF_EXTENDED) = 0) then
Result := Result or EVENTFLAG_IS_KEY_PAD;
VK_NUMLOCK,
VK_NUMPAD0,

View File

@ -1,176 +0,0 @@
// ************************************************************************
// ***************************** 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 © 2021 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 uCEFRegisterCDMCallback;
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
{$IFNDEF CPUX64}{$ALIGN ON}{$ENDIF}
{$MINENUMSIZE 4}
{$I cef.inc}
interface
uses
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFApplicationCore;
type
TCefRegisterCDMCallbackOwn = class(TCefBaseRefCountedOwn, ICefRegisterCDMCallback)
protected
procedure OnCDMRegistrationComplete(result: TCefCDMRegistrationError; const error_message: ustring); virtual;
public
constructor Create; virtual;
end;
TCefFastRegisterCDMCallback = class(TCefRegisterCDMCallbackOwn)
protected
FCallback: TCefRegisterCDMProc;
procedure OnCDMRegistrationComplete(result: TCefCDMRegistrationError; const error_message: ustring); override;
public
constructor Create(const callback: TCefRegisterCDMProc); reintroduce;
end;
TCefCustomRegisterCDMCallback = class(TCefRegisterCDMCallbackOwn)
protected
FCefApp : TCefApplicationCore;
procedure OnCDMRegistrationComplete(result: TCefCDMRegistrationError; const error_message: ustring); override;
public
constructor Create(const aCefApp : TCefApplicationCore); reintroduce;
destructor Destroy; override;
end;
implementation
uses
{$IFDEF DELPHI16_UP}
System.SysUtils,
{$ELSE}
SysUtils,
{$ENDIF}
uCEFMiscFunctions, uCEFLibFunctions;
// ************************************************
// ********** TCefRegisterCDMCallbackOwn **********
// ************************************************
procedure cef_register_cdm_callback_on_cdm_registration_complete( self : PCefRegisterCDMCallback;
result : TCefCDMRegistrationError;
const error_message : PCefString); stdcall;
var
TempObject : TObject;
begin
TempObject := CefGetObject(self);
if (TempObject <> nil) and (TempObject is TCefRegisterCDMCallbackOwn) then
TCefRegisterCDMCallbackOwn(TempObject).OnCDMRegistrationComplete(result,
CefString(error_message));
end;
constructor TCefRegisterCDMCallbackOwn.Create;
begin
inherited CreateData(SizeOf(TCefRegisterCDMCallback));
with PCefRegisterCDMCallback(FData)^ do
on_cdm_registration_complete := {$IFDEF FPC}@{$ENDIF}cef_register_cdm_callback_on_cdm_registration_complete;
end;
procedure TCefRegisterCDMCallbackOwn.OnCDMRegistrationComplete(result: TCefCDMRegistrationError;
const error_message: ustring);
begin
//
end;
// ************************************************
// ********** TCefFastRegisterCDMCallback *********
// ************************************************
constructor TCefFastRegisterCDMCallback.Create(const callback: TCefRegisterCDMProc);
begin
FCallback := callback;
end;
procedure TCefFastRegisterCDMCallback.OnCDMRegistrationComplete(result: TCefCDMRegistrationError;
const error_message: ustring);
begin
FCallback(result, error_message);
end;
// ************************************************
// ******** TCefCustomRegisterCDMCallback *********
// ************************************************
constructor TCefCustomRegisterCDMCallback.Create(const aCefApp : TCefApplicationCore);
begin
inherited Create;
FCefApp := aCefApp;
end;
destructor TCefCustomRegisterCDMCallback.Destroy;
begin
FCefApp := nil;
inherited Destroy;
end;
procedure TCefCustomRegisterCDMCallback.OnCDMRegistrationComplete( result : TCefCDMRegistrationError;
const error_message : ustring);
begin
try
if (FCefApp <> nil) then FCefApp.Internal_OnCDMRegistrationComplete(result, error_message);
except
on e : exception do
if CustomExceptionHandler('TCefCustomRegisterCDMCallback.OnCDMRegistrationComplete', e) then raise;
end;
end;
end.

View File

@ -203,7 +203,6 @@ type
PCefUrlRequest = ^TCefUrlRequest;
PCefWebPluginInfoVisitor = ^TCefWebPluginInfoVisitor;
PCefWebPluginUnstableCallback = ^TCefWebPluginUnstableCallback;
PCefRegisterCDMCallback = ^TCefRegisterCDMCallback;
PCefTaskRunner = ^TCefTaskRunner;
PCefEndTracingCallback = ^TCefEndTracingCallback;
PCefRequestContextSettings = ^TCefRequestContextSettings;
@ -1146,14 +1145,6 @@ type
CEF_MENU_COLOR_COUNT
);
// /include/internal/cef_types.h (cef_cdm_registration_error_t)
TCefCDMRegistrationError = (
CEF_CDM_REGISTRATION_ERROR_NONE,
CEF_CDM_REGISTRATION_ERROR_INCORRECT_CONTENTS,
CEF_CDM_REGISTRATION_ERROR_INCOMPATIBLE,
CEF_CDM_REGISTRATION_ERROR_NOT_SUPPORTED
);
// Values for browser preference "net.network_prediction_options"
// https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/net/prediction_options.h
TCefNetworkPredictionOptions = (
@ -1920,12 +1911,6 @@ type
is_unstable : procedure(self: PCefWebPluginUnstableCallback; const path: PCefString; unstable: Integer); stdcall;
end;
// /include/capi/cef_web_plugin_capi.h (cef_register_cdm_callback_t)
TCefRegisterCDMCallback = record
base : TCefBaseRefCounted;
on_cdm_registration_complete : procedure(self:PCefRegisterCDMCallback; result: TCefCDMRegistrationError; const error_message: PCefString); stdcall;
end;
// /include/capi/cef_thread_capi.h (cef_thread_t)
TCefThread = record
base : TCefBaseRefCounted;

View File

@ -2,9 +2,9 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
"InternalVersion" : 315,
"InternalVersion" : 316,
"Name" : "cef4delphi_lazarus.lpk",
"Version" : "92.0.27.0"
"Version" : "93.1.11.0"
}
],
"UpdatePackageData" : {