From 0ae96d07d5d0471866bfcd2726fab21066f0c3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salvador=20D=C3=ADaz=20Fau?= Date: Thu, 28 Mar 2019 10:40:36 +0100 Subject: [PATCH] TChromium.OnClose parameter changed - Fixed initialization issue in FMXExternalPumpBrowser --- demos/ConsoleBrowser/uWebBrowser.dfm | 1 - demos/ConsoleBrowser/uWebBrowser.pas | 8 ----- demos/CookieVisitor/uCookieVisitor.pas | 6 ++-- demos/DOMVisitor/uDOMVisitor.pas | 6 ++-- .../uExternalPumpBrowser.pas | 9 ++--- .../uFMXApplicationService.pas | 6 ++++ .../uFMXExternalPumpBrowser.fmx | 2 +- .../uFMXExternalPumpBrowser.pas | 31 ++++++++---------- .../FMXToolBoxBrowser/FMXToolBoxBrowser.dproj | 2 +- demos/FMXToolBoxBrowser/uChildForm.pas | 6 ++-- demos/FullScreenBrowser/uMainForm.pas | 8 ++--- demos/JavaScript/JSEval/uJSEval.pas | 6 ++-- .../uJSExecutingFunctions.pas | 8 ++--- demos/JavaScript/JSExtension/uJSExtension.pas | 9 ++--- .../uJSExtensionWithFunction.pas | 9 ++--- .../uJSExtensionWithObjectParameter.pas | 9 ++--- .../JSSimpleExtension/uJSSimpleExtension.pas | 9 ++--- .../uJSSimpleWindowBinding.pas | 8 ++--- .../uJSSimpleWindowBinding.pas | 6 ++-- .../uJSWindowBindingWithFunction.pas | 9 ++--- .../uJSWindowBindingWithObject.pas | 9 ++--- demos/KioskOSRBrowser/uKioskOSRBrowser.dfm | 1 - demos/KioskOSRBrowser/uKioskOSRBrowser.pas | 6 ---- demos/MDIBrowser/uChildForm.pas | 6 ++-- demos/MDIExternalPumpBrowser/uChildForm.pas | 9 ++--- demos/MiniBrowser/MiniBrowser.dpr | 3 -- demos/MiniBrowser/uMiniBrowser.dfm | 3 ++ demos/MiniBrowser/uMiniBrowser.pas | 10 +++--- .../uOSRExternalPumpBrowser.dfm | 1 - .../uOSRExternalPumpBrowser.pas | 6 ---- demos/PopupBrowser/uChildForm.dfm | 1 - demos/PopupBrowser/uChildForm.pas | 6 ---- demos/PopupBrowser2/uChildForm.pas | 8 ++--- .../uPostInspectorBrowser.dfm | 1 - .../uPostInspectorBrowser.pas | 6 ++-- .../uResponseFilterBrowser.dfm | 1 - .../uResponseFilterBrowser.pas | 6 ++-- .../uSchemeRegistrationBrowser.pas | 6 ++-- demos/SimpleBrowser2/uSimpleBrowser2.pas | 6 ++-- demos/SimpleFMXBrowser/SimpleFMXBrowser.dproj | 2 +- demos/SimpleFMXBrowser/uSimpleFMXBrowser.pas | 6 ++-- .../SimpleLazOSRBrowser.lps | 16 ++++++--- .../usimplelazosrbrowser.lfm | 3 +- .../usimplelazosrbrowser.pas | 6 ---- .../SimpleLazarusBrowser.lps | 21 +++++++----- .../usimplelazarusbrowser.pas | 8 ++--- demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm | 3 -- demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas | 6 ---- demos/TabbedBrowser/uMainForm.pas | 6 ++-- demos/ToolBoxBrowser/uChildForm.pas | 9 ++--- demos/ToolBoxLazBrowser/ToolBoxLazBrowser.lps | 10 ++++-- demos/ToolBoxLazBrowser/uchildform.pas | 6 ++-- packages/CEF4Delphi.dproj | 12 +++++-- packages/CEF4Delphi.res | Bin 708 -> 708 bytes packages/CEF4Delphi_FMX.dproj | 2 +- packages/CEF4Delphi_FMX.res | Bin 676 -> 724 bytes source/uCEFChromium.pas | 28 ++++++++++++++-- source/uCEFChromiumEvents.pas | 2 +- source/uCEFChromiumWindow.pas | 8 ++--- source/uCEFTypes.pas | 10 ++++++ source/uFMXChromium.pas | 28 ++++++++++++++-- source/uFMXWorkScheduler.pas | 4 --- update_CEF4Delphi.json | 4 +-- 63 files changed, 242 insertions(+), 211 deletions(-) diff --git a/demos/ConsoleBrowser/uWebBrowser.dfm b/demos/ConsoleBrowser/uWebBrowser.dfm index 63617d6d..70ccaf38 100644 --- a/demos/ConsoleBrowser/uWebBrowser.dfm +++ b/demos/ConsoleBrowser/uWebBrowser.dfm @@ -45,7 +45,6 @@ object WebBrowserFrm: TWebBrowserFrm OnBeforePopup = chrmosrBeforePopup OnAfterCreated = chrmosrAfterCreated OnBeforeClose = chrmosrBeforeClose - OnClose = chrmosrClose OnGetViewRect = chrmosrGetViewRect OnGetScreenPoint = chrmosrGetScreenPoint OnGetScreenInfo = chrmosrGetScreenInfo diff --git a/demos/ConsoleBrowser/uWebBrowser.pas b/demos/ConsoleBrowser/uWebBrowser.pas index 1c07e41a..fab8c763 100644 --- a/demos/ConsoleBrowser/uWebBrowser.pas +++ b/demos/ConsoleBrowser/uWebBrowser.pas @@ -89,7 +89,6 @@ type procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser); procedure chrmosrTooltip(Sender: TObject; const browser: ICefBrowser; var text: ustring; out Result: Boolean); procedure chrmosrBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure SnapshotBtnClick(Sender: TObject); @@ -301,13 +300,6 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TWebBrowserFrm.chrmosrClose( Sender : TObject; - const browser : ICefBrowser; - out Result : Boolean); -begin - Result := False; -end; - procedure TWebBrowserFrm.chrmosrCursorChange( Sender : TObject; const browser : ICefBrowser; cursor : HICON; diff --git a/demos/CookieVisitor/uCookieVisitor.pas b/demos/CookieVisitor/uCookieVisitor.pas index fd1ac072..d47644cb 100644 --- a/demos/CookieVisitor/uCookieVisitor.pas +++ b/demos/CookieVisitor/uCookieVisitor.pas @@ -92,7 +92,7 @@ type var noJavascriptAccess: Boolean; var Result: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); @@ -254,10 +254,10 @@ begin end; procedure TCookieVisitorFrm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TCookieVisitorFrm.Chromium1ContextMenuCommand(Sender: TObject; diff --git a/demos/DOMVisitor/uDOMVisitor.pas b/demos/DOMVisitor/uDOMVisitor.pas index ba1e991e..70a5f304 100644 --- a/demos/DOMVisitor/uDOMVisitor.pas +++ b/demos/DOMVisitor/uDOMVisitor.pas @@ -102,7 +102,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); private @@ -342,10 +342,10 @@ begin end; procedure TDOMVisitorFrm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TDOMVisitorFrm.Chromium1ContextMenuCommand(Sender: TObject; diff --git a/demos/ExternalPumpBrowser/uExternalPumpBrowser.pas b/demos/ExternalPumpBrowser/uExternalPumpBrowser.pas index a6edc429..c1b97c25 100644 --- a/demos/ExternalPumpBrowser/uExternalPumpBrowser.pas +++ b/demos/ExternalPumpBrowser/uExternalPumpBrowser.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFTypes, uCEFConstants, uCEFInterfaces, uCEFWorkScheduler; + uCEFChromium, uCEFWindowParent, uCEFTypes, uCEFConstants, uCEFInterfaces, uCEFWorkScheduler, + uCEFWinControl; type TExternalPumpBrowserFrm = class(TForm) @@ -68,7 +69,7 @@ type procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser); - procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, @@ -177,10 +178,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TExternalPumpBrowserFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TExternalPumpBrowserFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TExternalPumpBrowserFrm.BrowserCreatedMsg(var aMessage : TMessage); diff --git a/demos/FMXExternalPumpBrowser/uFMXApplicationService.pas b/demos/FMXExternalPumpBrowser/uFMXApplicationService.pas index 2c8ffb02..8d256553 100644 --- a/demos/FMXExternalPumpBrowser/uFMXApplicationService.pas +++ b/demos/FMXExternalPumpBrowser/uFMXApplicationService.pas @@ -198,6 +198,12 @@ begin if not(Application.Terminated) and (GlobalFMXWorkScheduler <> nil) then GlobalFMXWorkScheduler.ScheduleWork(TempMsg.lParam); + + CEF_AFTERCREATED : + if not(Application.Terminated) and + (Application.MainForm <> nil) and + (Application.MainForm is TFMXExternalPumpBrowserFrm) then + TFMXExternalPumpBrowserFrm(Application.MainForm).DoBrowserCreated; end; {$ENDIF} diff --git a/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.fmx b/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.fmx index 0a2b14bd..cfd56534 100644 --- a/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.fmx +++ b/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.fmx @@ -107,8 +107,8 @@ object FMXExternalPumpBrowserFrm: TFMXExternalPumpBrowserFrm object chrmosr: TFMXChromium OnTooltip = chrmosrTooltip OnBeforePopup = chrmosrBeforePopup + OnAfterCreated = chrmosrAfterCreated OnBeforeClose = chrmosrBeforeClose - OnClose = chrmosrClose OnGetViewRect = chrmosrGetViewRect OnGetScreenPoint = chrmosrGetScreenPoint OnGetScreenInfo = chrmosrGetScreenInfo diff --git a/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas b/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas index 258bb54e..8262784c 100644 --- a/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas +++ b/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas @@ -94,10 +94,10 @@ type procedure chrmosrGetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean); procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean); procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect); - procedure chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure chrmosrTooltip(Sender: TObject; const browser: ICefBrowser; var text: ustring; out Result: Boolean); procedure chrmosrBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); + procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser); procedure Timer1Timer(Sender: TObject); procedure AddressEdtEnter(Sender: TObject); @@ -237,7 +237,7 @@ end; procedure TFMXExternalPumpBrowserFrm.FormDestroy(Sender: TObject); begin - fResizeCS.Free; + FResizeCS.Free; if (FPopUpBitmap <> nil) then FreeAndNil(FPopUpBitmap); end; @@ -258,12 +258,8 @@ begin begin // opaque white background color chrmosr.Options.BackgroundColor := CefColorSetARGB($FF, $FF, $FF, $FF); - chrmosr.DefaultUrl := AddressEdt.Text; - if chrmosr.CreateBrowser then - DoBrowserCreated - else - Timer1.Enabled := True; + if not(chrmosr.CreateBrowser) then Timer1.Enabled := True; end; end; @@ -484,11 +480,8 @@ procedure TFMXExternalPumpBrowserFrm.Timer1Timer(Sender: TObject); begin Timer1.Enabled := False; - if chrmosr.CreateBrowser then - DoBrowserCreated - else - if not(chrmosr.Initialized) then - Timer1.Enabled := True; + if not(chrmosr.CreateBrowser) and not(chrmosr.Initialized) then + Timer1.Enabled := True; end; procedure TFMXExternalPumpBrowserFrm.AddressEdtEnter(Sender: TObject); @@ -496,6 +489,14 @@ begin chrmosr.SendFocusEvent(False); end; +procedure TFMXExternalPumpBrowserFrm.chrmosrAfterCreated(Sender: TObject; + const browser: ICefBrowser); +begin + // Now the browser is fully initialized we can send a message to the + // main form to load the initial web page. + SendCompMessage(CEF_AFTERCREATED); +end; + procedure TFMXExternalPumpBrowserFrm.chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); begin FCanClose := True; @@ -520,11 +521,6 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TFMXExternalPumpBrowserFrm.chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); -begin - Result := False; -end; - procedure TFMXExternalPumpBrowserFrm.chrmosrCursorChange(Sender : TObject; const browser : ICefBrowser; cursor : HICON; @@ -864,6 +860,7 @@ begin Caption := 'FMX External Pump Browser'; AddressPnl.Enabled := True; Panel1.SetFocus; + LoadURL; end; function TFMXExternalPumpBrowserFrm.getModifiers(Shift: TShiftState): TCefEventFlags; diff --git a/demos/FMXToolBoxBrowser/FMXToolBoxBrowser.dproj b/demos/FMXToolBoxBrowser/FMXToolBoxBrowser.dproj index 9856baa7..317ec09f 100644 --- a/demos/FMXToolBoxBrowser/FMXToolBoxBrowser.dproj +++ b/demos/FMXToolBoxBrowser/FMXToolBoxBrowser.dproj @@ -5,7 +5,7 @@ FMX FMXToolBoxBrowser.dpr True - Debug + Release Win32 3 Application diff --git a/demos/FMXToolBoxBrowser/uChildForm.pas b/demos/FMXToolBoxBrowser/uChildForm.pas index 87c00812..f01b71a9 100644 --- a/demos/FMXToolBoxBrowser/uChildForm.pas +++ b/demos/FMXToolBoxBrowser/uChildForm.pas @@ -60,7 +60,7 @@ type procedure FMXChromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess, Result: Boolean); procedure FMXChromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); - procedure FMXChromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure FMXChromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); protected // Variables to control when can we destroy the form safely @@ -157,10 +157,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TChildForm.FMXChromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TChildForm.FMXChromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostCustomMessage(CEF_DESTROY, 0, BrowserID); - Result := True; + aAction := cbaDelay; end; procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction); diff --git a/demos/FullScreenBrowser/uMainForm.pas b/demos/FullScreenBrowser/uMainForm.pas index 8e973c80..b15cc1e5 100644 --- a/demos/FullScreenBrowser/uMainForm.pas +++ b/demos/FullScreenBrowser/uMainForm.pas @@ -49,7 +49,7 @@ uses Controls, Forms, Dialogs, {$ENDIF} uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFTypes, uCEFConstants, - Vcl.ExtCtrls; + Vcl.ExtCtrls, uCEFWinControl; type TMainForm = class(TForm) @@ -78,7 +78,7 @@ type procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); private { Private declarations } protected @@ -170,10 +170,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TMainForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TMainForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TMainForm.BrowserCreatedMsg(var aMessage : TMessage); diff --git a/demos/JavaScript/JSEval/uJSEval.pas b/demos/JavaScript/JSEval/uJSEval.pas index 4dbede06..3ccfaa6c 100644 --- a/demos/JavaScript/JSEval/uJSEval.pas +++ b/demos/JavaScript/JSEval/uJSEval.pas @@ -98,7 +98,7 @@ type var noJavascriptAccess: Boolean; var Result: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); @@ -216,10 +216,10 @@ begin end; procedure TJSEvalFrm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSEvalFrm.Chromium1ContextMenuCommand(Sender : TObject; diff --git a/demos/JavaScript/JSExecutingFunctions/uJSExecutingFunctions.pas b/demos/JavaScript/JSExecutingFunctions/uJSExecutingFunctions.pas index 5347243b..30e7ae13 100644 --- a/demos/JavaScript/JSExecutingFunctions/uJSExecutingFunctions.pas +++ b/demos/JavaScript/JSExecutingFunctions/uJSExecutingFunctions.pas @@ -50,7 +50,7 @@ uses Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, - uCEFConstants, uCEFv8Value; + uCEFConstants, uCEFv8Value, uCEFWinControl; const JSDEMO_CONTEXTMENU_EXECFUNCTION = MENU_ID_USER_FIRST + 1; @@ -87,7 +87,7 @@ type procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -211,10 +211,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TJSExecutingFunctionsFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TJSExecutingFunctionsFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSExecutingFunctionsFrm.Chromium1ContextMenuCommand( diff --git a/demos/JavaScript/JSExtension/uJSExtension.pas b/demos/JavaScript/JSExtension/uJSExtension.pas index c054385e..5b4c3d63 100644 --- a/demos/JavaScript/JSExtension/uJSExtension.pas +++ b/demos/JavaScript/JSExtension/uJSExtension.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + uCEFWinControl; const MINIBROWSER_SHOWTEXTVIEWER = WM_APP + $100; @@ -93,7 +94,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -261,10 +262,10 @@ begin end; procedure TJSExtensionFrm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSExtensionFrm.Chromium1ContextMenuCommand(Sender: TObject; diff --git a/demos/JavaScript/JSExtensionWithFunction/uJSExtensionWithFunction.pas b/demos/JavaScript/JSExtensionWithFunction/uJSExtensionWithFunction.pas index 9a1fef18..421ae890 100644 --- a/demos/JavaScript/JSExtensionWithFunction/uJSExtensionWithFunction.pas +++ b/demos/JavaScript/JSExtensionWithFunction/uJSExtensionWithFunction.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + uCEFWinControl; type TJSExtensionWithFunctionFrm = class(TForm) @@ -77,7 +78,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -178,10 +179,10 @@ begin end; procedure TJSExtensionWithFunctionFrm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSExtensionWithFunctionFrm.Chromium1ProcessMessageReceived( diff --git a/demos/JavaScript/JSExtensionWithObjectParameter/uJSExtensionWithObjectParameter.pas b/demos/JavaScript/JSExtensionWithObjectParameter/uJSExtensionWithObjectParameter.pas index c82f8d8c..3e3065f9 100644 --- a/demos/JavaScript/JSExtensionWithObjectParameter/uJSExtensionWithObjectParameter.pas +++ b/demos/JavaScript/JSExtensionWithObjectParameter/uJSExtensionWithObjectParameter.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + uCEFWinControl; type TJSExtensionWithObjectParameterFrm = class(TForm) @@ -73,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -181,10 +182,10 @@ begin end; procedure TJSExtensionWithObjectParameterFrm.Chromium1Close( - Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSExtensionWithObjectParameterFrm.FormCloseQuery( diff --git a/demos/JavaScript/JSSimpleExtension/uJSSimpleExtension.pas b/demos/JavaScript/JSSimpleExtension/uJSSimpleExtension.pas index 26f9a2de..99d06829 100644 --- a/demos/JavaScript/JSSimpleExtension/uJSSimpleExtension.pas +++ b/demos/JavaScript/JSSimpleExtension/uJSSimpleExtension.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + uCEFWinControl; type TJSSimpleExtensionFrm = class(TForm) @@ -73,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -218,10 +219,10 @@ begin end; procedure TJSSimpleExtensionFrm.Chromium1Close( - Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSSimpleExtensionFrm.FormCloseQuery( diff --git a/demos/JavaScript/JSSimpleWindowBinding/uJSSimpleWindowBinding.pas b/demos/JavaScript/JSSimpleWindowBinding/uJSSimpleWindowBinding.pas index 31165b1a..c722c4d5 100644 --- a/demos/JavaScript/JSSimpleWindowBinding/uJSSimpleWindowBinding.pas +++ b/demos/JavaScript/JSSimpleWindowBinding/uJSSimpleWindowBinding.pas @@ -50,7 +50,7 @@ uses Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, - uCEFConstants, uCEFv8Value; + uCEFConstants, uCEFv8Value, uCEFWinControl; type TJSSimpleWindowBindingFrm = class(TForm) @@ -74,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -211,10 +211,10 @@ begin end; procedure TJSSimpleWindowBindingFrm.Chromium1Close( - Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSSimpleWindowBindingFrm.FormCloseQuery( diff --git a/demos/JavaScript/JSWindowBindingSubProcess/uJSSimpleWindowBinding.pas b/demos/JavaScript/JSWindowBindingSubProcess/uJSSimpleWindowBinding.pas index 870355dd..2275e625 100644 --- a/demos/JavaScript/JSWindowBindingSubProcess/uJSSimpleWindowBinding.pas +++ b/demos/JavaScript/JSWindowBindingSubProcess/uJSSimpleWindowBinding.pas @@ -74,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -192,10 +192,10 @@ begin end; procedure TJSSimpleWindowBindingFrm.Chromium1Close( - Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSSimpleWindowBindingFrm.FormCloseQuery( diff --git a/demos/JavaScript/JSWindowBindingWithFunction/uJSWindowBindingWithFunction.pas b/demos/JavaScript/JSWindowBindingWithFunction/uJSWindowBindingWithFunction.pas index e3044e55..27b9423e 100644 --- a/demos/JavaScript/JSWindowBindingWithFunction/uJSWindowBindingWithFunction.pas +++ b/demos/JavaScript/JSWindowBindingWithFunction/uJSWindowBindingWithFunction.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + uCEFWinControl; type TJSWindowBindingWithFunctionFrm = class(TForm) @@ -73,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -215,10 +216,10 @@ begin end; procedure TJSWindowBindingWithFunctionFrm.Chromium1Close( - Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSWindowBindingWithFunctionFrm.FormCloseQuery( diff --git a/demos/JavaScript/JSWindowBindingWithObject/uJSWindowBindingWithObject.pas b/demos/JavaScript/JSWindowBindingWithObject/uJSWindowBindingWithObject.pas index 4a492a90..b70c5b9c 100644 --- a/demos/JavaScript/JSWindowBindingWithObject/uJSWindowBindingWithObject.pas +++ b/demos/JavaScript/JSWindowBindingWithObject/uJSWindowBindingWithObject.pas @@ -49,7 +49,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + uCEFWinControl; type TJSWindowBindingWithObjectFrm = class(TForm) @@ -73,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -216,10 +217,10 @@ begin end; procedure TJSWindowBindingWithObjectFrm.Chromium1Close( - Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TJSWindowBindingWithObjectFrm.FormCloseQuery( diff --git a/demos/KioskOSRBrowser/uKioskOSRBrowser.dfm b/demos/KioskOSRBrowser/uKioskOSRBrowser.dfm index c0de7cba..cbbf729e 100644 --- a/demos/KioskOSRBrowser/uKioskOSRBrowser.dfm +++ b/demos/KioskOSRBrowser/uKioskOSRBrowser.dfm @@ -57,7 +57,6 @@ object Form1: TForm1 OnTooltip = chrmosrTooltip OnBeforePopup = chrmosrBeforePopup OnBeforeClose = chrmosrBeforeClose - OnClose = chrmosrClose OnGetViewRect = chrmosrGetViewRect OnGetScreenPoint = chrmosrGetScreenPoint OnGetScreenInfo = chrmosrGetScreenInfo diff --git a/demos/KioskOSRBrowser/uKioskOSRBrowser.pas b/demos/KioskOSRBrowser/uKioskOSRBrowser.pas index dbb01a98..eb57c797 100644 --- a/demos/KioskOSRBrowser/uKioskOSRBrowser.pas +++ b/demos/KioskOSRBrowser/uKioskOSRBrowser.pas @@ -101,7 +101,6 @@ type procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect); procedure chrmosrTooltip(Sender: TObject; const browser: ICefBrowser; var text: ustring; out Result: Boolean); procedure chrmosrBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure chrmosrBeforeContextMenu(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel); procedure chrmosrContextMenuCommand(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; commandId: Integer; eventFlags: Cardinal; out Result: Boolean); @@ -356,11 +355,6 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TForm1.chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); -begin - Result := False; -end; - procedure TForm1.chrmosrCursorChange( Sender : TObject; const browser : ICefBrowser; cursor : HICON; diff --git a/demos/MDIBrowser/uChildForm.pas b/demos/MDIBrowser/uChildForm.pas index 8d3e95b1..34298be7 100644 --- a/demos/MDIBrowser/uChildForm.pas +++ b/demos/MDIBrowser/uChildForm.pas @@ -68,7 +68,7 @@ type procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure FormDestroy(Sender: TObject); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); @@ -143,10 +143,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEFBROWSER_DESTROY, 0, 0); - Result := False; + aAction := cbaDelay; end; procedure TChildForm.Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean); diff --git a/demos/MDIExternalPumpBrowser/uChildForm.pas b/demos/MDIExternalPumpBrowser/uChildForm.pas index 7dca489b..5decdcdf 100644 --- a/demos/MDIExternalPumpBrowser/uChildForm.pas +++ b/demos/MDIExternalPumpBrowser/uChildForm.pas @@ -50,7 +50,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Menus, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Types, ComCtrls, ClipBrd, {$ENDIF} - uMainForm, uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFConstants, uCEFTypes; + uMainForm, uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFConstants, uCEFTypes, + uCEFWinControl; type TChildForm = class(TForm) @@ -67,7 +68,7 @@ type procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure FormDestroy(Sender: TObject); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); @@ -142,10 +143,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEFBROWSER_DESTROY, 0, 0); - Result := False; + aAction := cbaDelay; end; procedure TChildForm.Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean); diff --git a/demos/MiniBrowser/MiniBrowser.dpr b/demos/MiniBrowser/MiniBrowser.dpr index 30fd1a76..17067cc6 100644 --- a/demos/MiniBrowser/MiniBrowser.dpr +++ b/demos/MiniBrowser/MiniBrowser.dpr @@ -65,9 +65,6 @@ begin GlobalCEFApp.LogFile := 'debug.log'; GlobalCEFApp.LogSeverity := LOGSEVERITY_INFO; - GlobalCEFApp.EnableMediaStream := False; - GlobalCEFApp.EnableSpeechInput := False; - if GlobalCEFApp.StartMainProcess then begin Application.Initialize; diff --git a/demos/MiniBrowser/uMiniBrowser.dfm b/demos/MiniBrowser/uMiniBrowser.dfm index 87edca8b..78a64280 100644 --- a/demos/MiniBrowser/uMiniBrowser.dfm +++ b/demos/MiniBrowser/uMiniBrowser.dfm @@ -141,6 +141,9 @@ object MiniBrowserFrm: TMiniBrowserFrm 'http://www.adobe.com/software/flash/about/' 'http://isflashinstalled.com/' 'http://html5test.com/' + + 'https://webrtc.github.io/samples/src/content/devices/input-outpu' + + 't/' 'https://test.webrtc.org/' 'https://www.w3schools.com/' 'http://webglsamples.org/' diff --git a/demos/MiniBrowser/uMiniBrowser.pas b/demos/MiniBrowser/uMiniBrowser.pas index 4acd28a2..0390a2f4 100644 --- a/demos/MiniBrowser/uMiniBrowser.pas +++ b/demos/MiniBrowser/uMiniBrowser.pas @@ -195,7 +195,7 @@ type out Result: TCefReturnValue); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure Chromium1RenderCompMsg(var aMessage : TMessage; var aHandled: Boolean); @@ -437,15 +437,13 @@ begin Result := False; end; -procedure TMiniBrowserFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TMiniBrowserFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin if (browser <> nil) and (Chromium1.BrowserId = browser.Identifier) then begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; - end - else - Result := False; + aAction := cbaDelay; + end; end; procedure TMiniBrowserFrm.Chromium1ContextMenuCommand(Sender: TObject; diff --git a/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.dfm b/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.dfm index 5530a957..999dbed0 100644 --- a/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.dfm +++ b/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.dfm @@ -129,7 +129,6 @@ object OSRExternalPumpBrowserFrm: TOSRExternalPumpBrowserFrm OnBeforePopup = chrmosrBeforePopup OnAfterCreated = chrmosrAfterCreated OnBeforeClose = chrmosrBeforeClose - OnClose = chrmosrClose OnGetViewRect = chrmosrGetViewRect OnGetScreenPoint = chrmosrGetScreenPoint OnGetScreenInfo = chrmosrGetScreenInfo diff --git a/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas b/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas index 1d7a8ae5..e0388157 100644 --- a/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas +++ b/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas @@ -97,7 +97,6 @@ type procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean); procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect); procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser); - procedure chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure chrmosrTooltip(Sender: TObject; const browser: ICefBrowser; var text: ustring; out Result: Boolean); procedure chrmosrBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); @@ -343,11 +342,6 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TOSRExternalPumpBrowserFrm.chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); -begin - Result := False; -end; - procedure TOSRExternalPumpBrowserFrm.chrmosrCursorChange(Sender : TObject; const browser : ICefBrowser; cursor : HICON; diff --git a/demos/PopupBrowser/uChildForm.dfm b/demos/PopupBrowser/uChildForm.dfm index 2ba0610c..4632be05 100644 --- a/demos/PopupBrowser/uChildForm.dfm +++ b/demos/PopupBrowser/uChildForm.dfm @@ -45,7 +45,6 @@ object ChildForm: TChildForm OnTitleChange = Chromium1TitleChange OnTooltip = Chromium1Tooltip OnBeforeClose = Chromium1BeforeClose - OnClose = Chromium1Close OnGetViewRect = Chromium1GetViewRect OnGetScreenPoint = Chromium1GetScreenPoint OnGetScreenInfo = Chromium1GetScreenInfo diff --git a/demos/PopupBrowser/uChildForm.pas b/demos/PopupBrowser/uChildForm.pas index d6414527..d854edc1 100644 --- a/demos/PopupBrowser/uChildForm.pas +++ b/demos/PopupBrowser/uChildForm.pas @@ -87,7 +87,6 @@ type procedure Chromium1Tooltip(Sender: TObject; const browser: ICefBrowser; var text: ustring; out Result: Boolean); procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; var popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; out Result: Boolean); procedure Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); - procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -355,11 +354,6 @@ begin end; end; -procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); -begin - Result := False; -end; - procedure TChildForm.Chromium1CursorChange(Sender : TObject; const browser : ICefBrowser; cursor : HICON; diff --git a/demos/PopupBrowser2/uChildForm.pas b/demos/PopupBrowser2/uChildForm.pas index c18408b2..13aa19ff 100644 --- a/demos/PopupBrowser2/uChildForm.pas +++ b/demos/PopupBrowser2/uChildForm.pas @@ -51,7 +51,7 @@ uses Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, {$ENDIF} uCEFChromium, uCEFTypes, uCEFInterfaces, uCEFConstants, uBufferPanel, - uCEFWindowParent; + uCEFWindowParent, uCEFWinControl; type TChildForm = class(TForm) @@ -65,7 +65,7 @@ type procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); procedure Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); - procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -179,10 +179,10 @@ begin end; end; -procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TChildForm.Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); diff --git a/demos/PostInspectorBrowser/uPostInspectorBrowser.dfm b/demos/PostInspectorBrowser/uPostInspectorBrowser.dfm index e7f26652..230727d3 100644 --- a/demos/PostInspectorBrowser/uPostInspectorBrowser.dfm +++ b/demos/PostInspectorBrowser/uPostInspectorBrowser.dfm @@ -78,7 +78,6 @@ object Form1: TForm1 Height = 439 Align = alClient TabOrder = 1 - ExplicitHeight = 395 end object Memo1: TMemo Left = 0 diff --git a/demos/PostInspectorBrowser/uPostInspectorBrowser.pas b/demos/PostInspectorBrowser/uPostInspectorBrowser.pas index 511199e8..d952e4f2 100644 --- a/demos/PostInspectorBrowser/uPostInspectorBrowser.pas +++ b/demos/PostInspectorBrowser/uPostInspectorBrowser.pas @@ -79,7 +79,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure FormDestroy(Sender: TObject); @@ -371,10 +371,10 @@ begin end; procedure TForm1.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TForm1.BrowserCreatedMsg(var aMessage : TMessage); diff --git a/demos/ResponseFilterBrowser/uResponseFilterBrowser.dfm b/demos/ResponseFilterBrowser/uResponseFilterBrowser.dfm index cb1cc380..d3286c8c 100644 --- a/demos/ResponseFilterBrowser/uResponseFilterBrowser.dfm +++ b/demos/ResponseFilterBrowser/uResponseFilterBrowser.dfm @@ -74,7 +74,6 @@ object ResponseFilterBrowserFrm: TResponseFilterBrowserFrm Caption = 'Go' TabOrder = 0 OnClick = GoBtnClick - ExplicitTop = -1 end object RscNameEdt: TEdit Left = 176 diff --git a/demos/ResponseFilterBrowser/uResponseFilterBrowser.pas b/demos/ResponseFilterBrowser/uResponseFilterBrowser.pas index 7b316301..9267bdee 100644 --- a/demos/ResponseFilterBrowser/uResponseFilterBrowser.pas +++ b/demos/ResponseFilterBrowser/uResponseFilterBrowser.pas @@ -77,7 +77,7 @@ type procedure Chromium1GetResourceResponseFilter(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; const response: ICefResponse; out Result: ICefResponseFilter); procedure Chromium1ResourceLoadComplete(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; const response: ICefResponse; status: TCefUrlRequestStatus; receivedContentLength: Int64); procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure Chromium1LoadStart(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; transitionType: Cardinal); procedure Chromium1BeforeResourceLoad(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; const callback: ICefRequestCallback; out Result: TCefReturnValue); @@ -462,10 +462,10 @@ begin end; end; -procedure TResponseFilterBrowserFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TResponseFilterBrowserFrm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TResponseFilterBrowserFrm.Chromium1GetResourceResponseFilter( Sender : TObject; diff --git a/demos/SchemeRegistrationBrowser/uSchemeRegistrationBrowser.pas b/demos/SchemeRegistrationBrowser/uSchemeRegistrationBrowser.pas index ce67cd2a..a249413e 100644 --- a/demos/SchemeRegistrationBrowser/uSchemeRegistrationBrowser.pas +++ b/demos/SchemeRegistrationBrowser/uSchemeRegistrationBrowser.pas @@ -87,7 +87,7 @@ type var noJavascriptAccess: Boolean; var Result: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); private @@ -169,10 +169,10 @@ begin end; procedure TSchemeRegistrationBrowserFrm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TSchemeRegistrationBrowserFrm.Chromium1ContextMenuCommand( diff --git a/demos/SimpleBrowser2/uSimpleBrowser2.pas b/demos/SimpleBrowser2/uSimpleBrowser2.pas index 2e459cd9..253eb18e 100644 --- a/demos/SimpleBrowser2/uSimpleBrowser2.pas +++ b/demos/SimpleBrowser2/uSimpleBrowser2.pas @@ -74,7 +74,7 @@ type procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); protected @@ -181,10 +181,10 @@ begin end; procedure TForm1.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TForm1.BrowserCreatedMsg(var aMessage : TMessage); diff --git a/demos/SimpleFMXBrowser/SimpleFMXBrowser.dproj b/demos/SimpleFMXBrowser/SimpleFMXBrowser.dproj index b1b574b2..aba3e6b2 100644 --- a/demos/SimpleFMXBrowser/SimpleFMXBrowser.dproj +++ b/demos/SimpleFMXBrowser/SimpleFMXBrowser.dproj @@ -5,7 +5,7 @@ FMX SimpleFMXBrowser.dpr True - Debug + Release Win32 3 Application diff --git a/demos/SimpleFMXBrowser/uSimpleFMXBrowser.pas b/demos/SimpleFMXBrowser/uSimpleFMXBrowser.pas index 3514f576..3d0487c8 100644 --- a/demos/SimpleFMXBrowser/uSimpleFMXBrowser.pas +++ b/demos/SimpleFMXBrowser/uSimpleFMXBrowser.pas @@ -63,7 +63,7 @@ type procedure Timer1Timer(Sender: TObject); procedure FormShow(Sender: TObject); procedure FMXChromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure FMXChromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure FMXChromium1BeforePopup(Sender: TObject; @@ -164,10 +164,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TSimpleFMXBrowserFrm.FMXChromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TSimpleFMXBrowserFrm.FMXChromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostCustomMessage(CEF_DESTROY); - Result := True; + aAction := cbaDelay; end; function TSimpleFMXBrowserFrm.PostCustomMessage(aMessage, wParam : cardinal; lParam : integer) : boolean; diff --git a/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps b/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps index 531a6939..6a538875 100644 --- a/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps +++ b/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps @@ -22,11 +22,11 @@ - - + + - + @@ -206,11 +206,19 @@ - + + + + + + + + + diff --git a/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.lfm b/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.lfm index 46517d42..9b49f41c 100644 --- a/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.lfm +++ b/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.lfm @@ -16,7 +16,7 @@ object Form1: TForm1 OnHide = FormHide OnShow = FormShow Position = poScreenCenter - LCLVersion = '2.0.0.3' + LCLVersion = '2.0.0.4' object NavControlPnl: TPanel Left = 0 Height = 21 @@ -114,7 +114,6 @@ object Form1: TForm1 OnBeforePopup = chrmosrBeforePopup OnAfterCreated = chrmosrAfterCreated OnBeforeClose = chrmosrBeforeClose - OnClose = chrmosrClose OnGetViewRect = chrmosrGetViewRect OnGetScreenPoint = chrmosrGetScreenPoint OnGetScreenInfo = chrmosrGetScreenInfo diff --git a/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas b/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas index 2b88f824..41c89100 100644 --- a/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas +++ b/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas @@ -97,7 +97,6 @@ type procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser); procedure chrmosrTooltip(Sender: TObject; const browser: ICefBrowser; var aText: ustring; out Result: Boolean); procedure chrmosrBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure chrmosrIMECompositionRangeChanged(Sender: TObject; const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); @@ -279,11 +278,6 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TForm1.chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); -begin - Result := False; -end; - procedure TForm1.chrmosrCursorChange(Sender : TObject; const browser : ICefBrowser; aCursor : HICON; diff --git a/demos/SimpleLazarusBrowser/SimpleLazarusBrowser.lps b/demos/SimpleLazarusBrowser/SimpleLazarusBrowser.lps index 7e9cf979..81de5605 100644 --- a/demos/SimpleLazarusBrowser/SimpleLazarusBrowser.lps +++ b/demos/SimpleLazarusBrowser/SimpleLazarusBrowser.lps @@ -8,10 +8,10 @@ - - + + @@ -21,10 +21,11 @@ - - - + + + + @@ -402,10 +403,12 @@ - - - - + + + + + + diff --git a/demos/SimpleLazarusBrowser/usimplelazarusbrowser.pas b/demos/SimpleLazarusBrowser/usimplelazarusbrowser.pas index 560c9f8b..fb713ded 100644 --- a/demos/SimpleLazarusBrowser/usimplelazarusbrowser.pas +++ b/demos/SimpleLazarusBrowser/usimplelazarusbrowser.pas @@ -64,8 +64,8 @@ type const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; out - Result: Boolean); + procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; + var aAction : TCefCloseBrowserAction); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); @@ -157,10 +157,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TForm1.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TForm1.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEF_DESTROY, 0, 0); - Result := True; + aAction := cbaDelay; end; procedure TForm1.FormShow(Sender: TObject); diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm index 89b568a1..009ed875 100644 --- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm +++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm @@ -53,7 +53,6 @@ object Form1: TForm1 'https://www.briskbard.com' 'https://frames-per-second.appspot.com/' 'file:///transparency.html') - ExplicitWidth = 909 end object Panel2: TPanel Left = 912 @@ -101,7 +100,6 @@ object Form1: TForm1 TabOrder = 1 OnClick = SnapshotBtnClick OnEnter = SnapshotBtnEnter - ExplicitLeft = 38 end end end @@ -135,7 +133,6 @@ object Form1: TForm1 OnBeforePopup = chrmosrBeforePopup OnAfterCreated = chrmosrAfterCreated OnBeforeClose = chrmosrBeforeClose - OnClose = chrmosrClose OnGetViewRect = chrmosrGetViewRect OnGetScreenPoint = chrmosrGetScreenPoint OnGetScreenInfo = chrmosrGetScreenInfo diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas index 80ae51a9..acfd235b 100644 --- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas +++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas @@ -104,7 +104,6 @@ type procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser); procedure chrmosrTooltip(Sender: TObject; const browser: ICefBrowser; var text: ustring; out Result: Boolean); procedure chrmosrBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure chrmosrBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure chrmosrIMECompositionRangeChanged(Sender: TObject; const browser: ICefBrowser; const selected_range: PCefRange; character_boundsCount: NativeUInt; const character_bounds: PCefRect); @@ -348,11 +347,6 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TForm1.chrmosrClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); -begin - Result := False; -end; - procedure TForm1.chrmosrCursorChange(Sender : TObject; const browser : ICefBrowser; cursor : HICON; diff --git a/demos/TabbedBrowser/uMainForm.pas b/demos/TabbedBrowser/uMainForm.pas index 683917fe..feae817d 100644 --- a/demos/TabbedBrowser/uMainForm.pas +++ b/demos/TabbedBrowser/uMainForm.pas @@ -92,7 +92,7 @@ type procedure Chromium_OnAfterCreated(Sender: TObject; const browser: ICefBrowser); procedure Chromium_OnAddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring); procedure Chromium_OnTitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); - procedure Chromium_OnClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure Chromium_OnClose(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); @@ -413,14 +413,12 @@ begin PageControl1.Pages[TempPageIndex].Caption := title; end; -procedure TMainForm.Chromium_OnClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TMainForm.Chromium_OnClose(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); var TempPageIndex : integer; begin if GetPageIndex(Sender, TempPageIndex) then PostMessage(Handle, CEFBROWSER_DESTROYWNDPARENT, 0, TempPageIndex); - - Result := False; end; procedure TMainForm.Chromium_OnBeforeClose(Sender: TObject; const browser: ICefBrowser); diff --git a/demos/ToolBoxBrowser/uChildForm.pas b/demos/ToolBoxBrowser/uChildForm.pas index 3cfd16bb..3d28766e 100644 --- a/demos/ToolBoxBrowser/uChildForm.pas +++ b/demos/ToolBoxBrowser/uChildForm.pas @@ -50,7 +50,8 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFConstants, uCEFTypes, uMainForm; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFConstants, uCEFTypes, uMainForm, + uCEFWinControl; type TChildForm = class(TForm) @@ -64,7 +65,7 @@ type procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser); procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; - out Result: Boolean); + var aAction : TCefCloseBrowserAction); procedure Chromium1PreKeyEvent(Sender: TObject; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; out isKeyboardShortcut, Result: Boolean); @@ -139,10 +140,10 @@ begin Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]); end; -procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEFBROWSER_DESTROY, 0, 0); - Result := False; + aAction := cbaDelay; end; procedure TChildForm.Chromium1KeyEvent(Sender: TObject; diff --git a/demos/ToolBoxLazBrowser/ToolBoxLazBrowser.lps b/demos/ToolBoxLazBrowser/ToolBoxLazBrowser.lps index 8191ba0c..288ff002 100644 --- a/demos/ToolBoxLazBrowser/ToolBoxLazBrowser.lps +++ b/demos/ToolBoxLazBrowser/ToolBoxLazBrowser.lps @@ -34,8 +34,8 @@ - - + + @@ -62,7 +62,7 @@ - + @@ -175,6 +175,10 @@ + + + + diff --git a/demos/ToolBoxLazBrowser/uchildform.pas b/demos/ToolBoxLazBrowser/uchildform.pas index 5637e16b..816671c4 100644 --- a/demos/ToolBoxLazBrowser/uchildform.pas +++ b/demos/ToolBoxLazBrowser/uchildform.pas @@ -64,7 +64,7 @@ type procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser); procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser); procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean); - procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure Chromium1KeyEvent(Sender: TObject; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: TCefEventHandle; out Result: Boolean); procedure Chromium1PreKeyEvent(Sender: TObject; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: TCefEventHandle; out isKeyboardShortcut: Boolean; out Result: Boolean); @@ -151,10 +151,10 @@ begin end; procedure TChildForm.Chromium1Close(Sender: TObject; - const browser: ICefBrowser; out Result: Boolean); + const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin PostMessage(Handle, CEFBROWSER_DESTROY, 0, 0); - Result := False; + aAction := cbaDelay; end; procedure TChildForm.Chromium1KeyEvent(Sender: TObject; diff --git a/packages/CEF4Delphi.dproj b/packages/CEF4Delphi.dproj index 21df2cbe..6cfa4ddc 100644 --- a/packages/CEF4Delphi.dproj +++ b/packages/CEF4Delphi.dproj @@ -70,6 +70,9 @@ false false false + ..\source;$(DCC_UnitSearchPath) + 3082 + CompanyName=;FileVersion=1.0.0.0;InternalName=CEF4Delphi;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=CEF4Delphi;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName) rtl;vcl;fmx;$(DCC_UsePackage) @@ -258,6 +261,8 @@ + + Base @@ -283,9 +288,10 @@ CEF4Delphi.dpk - IP Abstraction Indy Implementation Design Time - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components + IP Abstraction Indy Implementation Design Time + DBExpress Enterprise Data Explorer Integration + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components diff --git a/packages/CEF4Delphi.res b/packages/CEF4Delphi.res index 985ad241082301fe8838561e1717b2ff8e363a4e..b9b013c2123fcf20e24680fc5ad3191fc452d216 100644 GIT binary patch delta 12 TcmX@YdW3bu0VWn^1_lNI95e$A delta 12 TcmX@YdW3bu0VWnk1_lNI94rG0 diff --git a/packages/CEF4Delphi_FMX.dproj b/packages/CEF4Delphi_FMX.dproj index db17ac50..7822778b 100644 --- a/packages/CEF4Delphi_FMX.dproj +++ b/packages/CEF4Delphi_FMX.dproj @@ -5,7 +5,7 @@ 18.5 VCL True - Release + Debug Win32 3 Package diff --git a/packages/CEF4Delphi_FMX.res b/packages/CEF4Delphi_FMX.res index 934cad8709e937bbd616193ea1577b71e39c0962..391381f9dc4de3bb832da06585491df01ab8693f 100644 GIT binary patch delta 82 zcmZ3&dWCg@0%OQTMR_3M7|pn8;#_6MzKI9jWz87485kKn8S)rP7*ZLEfOH~54uc<% g%w nil) and (FBrowserId = browser.Identifier) then FClosing := True; + // TempAction values + // ----------------- + // cbaCancel : stop closing the browser + // cbaClose : continue closing the browser + // cbaDelay : stop closing the browser momentarily. Used when the application + // needs to execute some custom processes before closing the + // browser. This is usually needed to destroy a TCEFWindowParent + // in the main thread before closing the browser. + if Assigned(FOnClose) then FOnClose(Self, browser, TempAction); - if Assigned(FOnClose) then FOnClose(Self, browser, Result); + case TempAction of + cbaCancel : Result := True; + + cbaDelay : + begin + Result := True; + if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; + end; + + else + if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; + end; end; procedure TChromium.doOnBeforeClose(const browser: ICefBrowser); diff --git a/source/uCEFChromiumEvents.pas b/source/uCEFChromiumEvents.pas index 6a05816f..886f746d 100644 --- a/source/uCEFChromiumEvents.pas +++ b/source/uCEFChromiumEvents.pas @@ -106,7 +106,7 @@ type TOnBeforePopup = procedure(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var noJavascriptAccess: Boolean; var Result: Boolean) of object; TOnAfterCreated = procedure(Sender: TObject; const browser: ICefBrowser) of object; TOnBeforeClose = procedure(Sender: TObject; const browser: ICefBrowser) of object; - TOnClose = procedure(Sender: TObject; const browser: ICefBrowser; out Result: Boolean) of object; + TOnClose = procedure(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction) of object; // ICefRequestHandler TOnBeforeBrowse = procedure(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; user_gesture, isRedirect: Boolean; out Result: Boolean) of object; diff --git a/source/uCEFChromiumWindow.pas b/source/uCEFChromiumWindow.pas index 667f32ea..f6c0102c 100644 --- a/source/uCEFChromiumWindow.pas +++ b/source/uCEFChromiumWindow.pas @@ -81,7 +81,7 @@ type procedure OnBeforeCloseMsg(var aMessage : TMessage); message CEF_DOONBEFORECLOSE; procedure OnAfterCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED; {$ENDIF} - procedure WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); + procedure WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); procedure WebBrowser_OnBeforeClose(Sender: TObject; const browser: ICefBrowser); procedure WebBrowser_OnAfterCreated(Sender: TObject; const browser: ICefBrowser); @@ -189,14 +189,14 @@ begin Result := (FChromium <> nil) and FChromium.Initialized; end; -procedure TChromiumWindow.WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); +procedure TChromiumWindow.WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction); begin - Result := False; + aAction := cbaClose; {$IFDEF MSWINDOWS} if assigned(FOnClose) then begin PostMessage(Handle, CEF_DOONCLOSE, 0, 0); - Result := True; + aAction := cbaDelay; end; {$ENDIF} end; diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas index 01c61678..3a805d6d 100644 --- a/source/uCEFTypes.pas +++ b/source/uCEFTypes.pas @@ -350,6 +350,16 @@ type Build : uint16; end; + // Used in TChromium.Onclose + // ------------------------- + // cbaCancel : stop closing the browser + // cbaClose : continue closing the browser + // cbaDelay : stop closing the browser momentarily. Used when the application + // needs to execute some custom processes before closing the + // browser. This is usually needed to destroy a TCEFWindowParent + // in the main thread before closing the browser. + TCefCloseBrowserAction = (cbaClose, cbaDelay, cbaCancel); + TCefProcessType = (ptBrowser, ptRenderer, ptZygote, ptGPU, ptOther); TCefAplicationStatus = (asLoading, diff --git a/source/uFMXChromium.pas b/source/uFMXChromium.pas index 858af219..2a9b2109 100644 --- a/source/uFMXChromium.pas +++ b/source/uFMXChromium.pas @@ -2829,12 +2829,34 @@ begin end; function TFMXChromium.doOnClose(const browser: ICefBrowser): Boolean; +var + TempAction : TCefCloseBrowserAction; begin - Result := False; + Result := False; + TempAction := cbaClose; - if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; + // TempAction values + // ----------------- + // cbaCancel : stop closing the browser + // cbaClose : continue closing the browser + // cbaDelay : stop closing the browser momentarily. Used when the application + // needs to execute some custom processes before closing the + // browser. This is usually needed to destroy a TCEFWindowParent + // in the main thread before closing the browser. + if Assigned(FOnClose) then FOnClose(Self, browser, TempAction); - if Assigned(FOnClose) then FOnClose(Self, browser, Result); + case TempAction of + cbaCancel : Result := True; + + cbaDelay : + begin + Result := True; + if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; + end; + + else + if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; + end; end; procedure TFMXChromium.doOnBeforeClose(const browser: ICefBrowser); diff --git a/source/uFMXWorkScheduler.pas b/source/uFMXWorkScheduler.pas index c414a77a..f82acb51 100644 --- a/source/uFMXWorkScheduler.pas +++ b/source/uFMXWorkScheduler.pas @@ -218,14 +218,10 @@ begin if not(FStopped) then begin {$IFDEF MSWINDOWS} - {$IFDEF DELPHI17_UP} - TempHandle := ApplicationHWND; - {$ELSE} if (Application <> nil) and (Application.MainForm <> nil) then TempHandle := FmxHandleToHWND(Application.MainForm.Handle) else TempHandle := 0; - {$ENDIF} if (TempHandle <> 0) then WinApi.Windows.PostMessage(TempHandle, CEF_PUMPHAVEWORK, 0, LPARAM(delay_ms)); diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index 9e0ba54f..a514d661 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -1,8 +1,8 @@ { "UpdateLazPackages" : [ { - "ForceNotify" : false, - "InternalVersion" : 1, + "ForceNotify" : true, + "InternalVersion" : 2, "Name" : "cef4delphi_lazarus.lpk", "Version" : "73.1.12.0" }