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

Faster browser destruction

Faster browser destruction. All timers have been removed from the demos.
Removed unnecessary client handler class in TChromium. Now there's only
an interface.
Fixed an old memory leak in popup windows.
This commit is contained in:
Salvador Diaz Fau
2017-06-11 17:48:20 +02:00
parent d0c7e0926e
commit 830117e0ca
47 changed files with 1118 additions and 864 deletions

View File

@@ -56,7 +56,7 @@ uses
begin begin
GlobalCEFApp := TCefApplication.Create; GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.FlashEnabled := False; // Some websites with heavy Flash usage will need a longer Timer.Interval if you set this to True GlobalCEFApp.FlashEnabled := False;
GlobalCEFApp.FastUnload := True; // Enable the fast unload controller, which speeds up tab/window close by running a tab's onunload js handler independently of the GUI GlobalCEFApp.FastUnload := True; // Enable the fast unload controller, which speeds up tab/window close by running a tab's onunload js handler independently of the GUI
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data. // In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.

View File

@@ -2,10 +2,10 @@
<BorlandProject> <BorlandProject>
<Transactions> <Transactions>
<Transaction>2017/05/01 10:03:03.000.353,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\about.pas=</Transaction> <Transaction>2017/05/01 10:03:03.000.353,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\about.pas=</Transaction>
<Transaction>2017/05/01 11:22:18.000.397,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIAPP.dproj</Transaction> <Transaction>2017/05/01 11:22:18.000.397,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIAPP.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dproj</Transaction>
<Transaction>2017/05/01 12:25:35.000.397,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\Main.pas</Transaction> <Transaction>2017/05/01 12:25:35.000.397,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\Main.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.pas</Transaction>
<Transaction>2017/05/01 12:25:35.000.397,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\Main.dfm</Transaction> <Transaction>2017/05/01 12:25:35.000.397,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\Main.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.dfm</Transaction>
<Transaction>2017/05/01 12:26:13.000.106,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\ChildWin.dfm</Transaction> <Transaction>2017/05/01 12:26:13.000.106,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\ChildWin.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.pas</Transaction>
<Transaction>2017/05/01 12:26:13.000.106,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\ChildWin.pas</Transaction> <Transaction>2017/05/01 12:26:13.000.106,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\ChildWin.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.dfm</Transaction>
</Transactions> </Transactions>
</BorlandProject> </BorlandProject>

View File

@@ -1,7 +1,7 @@
[Closed Files] [Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.pas',0,1,153,51,189,0,0,,{1 File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.pas',0,1,118,68,76,0,0,,{1,118,49}{2,176,1}
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.pas',0,1,63,1,106,0,0,, File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.pas',0,1,69,66,118,0,0,,
File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Forms.pas',0,1,6288,54,6316,0,0,{{1729,4} File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Forms.pas',0,1,6306,1,6308,0,0,{{1729,4},{1745,15},{'TScrollWindow'}}{{1832,4},{1932,15},{'TMainMenuBarStyleHook'}},
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,53,20,81,0,0,, File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,53,20,81,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,1,22,38,0,0,, File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,1,22,38,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,1091,3,1120,0,0,, File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,1091,3,1120,0,0,,
@@ -11,22 +11,17 @@ File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFClient.pas',0,1,24,90,42,0,0,,{1 File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFClient.pas',0,1,24,90,42,0,0,,{1
[Modules] [Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dproj Module0=default.htm
Module1=default.htm Count=1
Count=2
EditWindowCount=1 EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dproj]
ModuleType=TBaseProject
[default.htm] [default.htm]
ModuleType=TURLModule ModuleType=TURLModule
[EditWindow0] [EditWindow0]
ViewCount=2 ViewCount=1
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dpr CurrentView=0
View0=0 View0=0
View1=1
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=1 Visible=1
@@ -49,7 +44,7 @@ RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0 BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B36000000000000022B05000000000000FFFFFFFF BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002C305000000000000FFFFFFFF
BottomMiddlePanelSize=0 BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@@ -60,17 +55,6 @@ TabDockRightClients=DockSite4=0
CustomEditViewType=TWelcomePageView CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dpr
CursorX=1
CursorY=64
TopLine=22
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\MDIBrowser.dpr
[Watches] [Watches]
Count=0 Count=0
@@ -85,11 +69,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=213 TBDockHeight=213
LRDockWidth=13602 LRDockWidth=13602
Dockable=1 Dockable=1
@@ -152,12 +136,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=2773 Width=2773
Height=1110 Height=1267
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2773 ClientWidth=2773
ClientHeight=1110 ClientHeight=1267
TBDockHeight=1110 TBDockHeight=1267
LRDockWidth=2773 LRDockWidth=2773
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -171,11 +155,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1875 Width=1875
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7152 TBDockHeight=7152
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -285,16 +269,16 @@ State=0
Left=78 Left=78
Top=386 Top=386
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1898 ClientWidth=1773
ClientHeight=7164 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
SplitPos=111 SplitPos=119
[frmDesignPreview] [frmDesignPreview]
PercentageSizes=1 PercentageSizes=1
@@ -365,11 +349,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=415 TBDockHeight=415
LRDockWidth=4953 LRDockWidth=4953
Dockable=1 Dockable=1
@@ -384,11 +368,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=213 TBDockHeight=213
LRDockWidth=7406 LRDockWidth=7406
Dockable=1 Dockable=1
@@ -397,6 +381,7 @@ Column0Width=145
Column1Width=100 Column1Width=100
Column2Width=115 Column2Width=115
Column3Width=250 Column3Width=250
Column4Width=250
[LocalVarsWindow] [LocalVarsWindow]
PercentageSizes=1 PercentageSizes=1
@@ -407,11 +392,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=1536 TBDockHeight=1536
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -426,11 +411,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=2063 TBDockHeight=2063
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -548,11 +533,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=1547 TBDockHeight=1547
LRDockWidth=8742 LRDockWidth=8742
Dockable=1 Dockable=1
@@ -574,11 +559,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1773 Width=1773
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=3677 TBDockHeight=3677
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -660,12 +645,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=3820 Width=3820
Height=1110 Height=1267
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=1110 ClientHeight=1267
TBDockHeight=1110 TBDockHeight=1267
LRDockWidth=3820 LRDockWidth=3820
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -689,7 +674,7 @@ MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=9170 ClientHeight=9170
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -708,12 +693,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -732,12 +717,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0

View File

@@ -1,10 +1,10 @@
[Stats] [Stats]
EditorSecs=3817 EditorSecs=5400
DesignerSecs=8 DesignerSecs=21
InspectorSecs=1 InspectorSecs=4
CompileSecs=95678 CompileSecs=130944
OtherSecs=249 OtherSecs=306
StartTime=01/05/2017 12:55:55 StartTime=01/05/2017 12:55:55
RealKeys=0 RealKeys=0
EffectiveKeys=0 EffectiveKeys=0
DebugSecs=398 DebugSecs=491

View File

@@ -63,17 +63,10 @@ object ChildForm: TChildForm
TabOrder = 1 TabOrder = 1
end end
object Chromium1: TChromium object Chromium1: TChromium
OnLoadEnd = Chromium1LoadEnd
OnAfterCreated = Chromium1AfterCreated OnAfterCreated = Chromium1AfterCreated
OnBeforeClose = Chromium1BeforeClose
OnClose = Chromium1Close OnClose = Chromium1Close
Left = 592 Left = 592
Top = 288 Top = 288
end end
object Timer1: TTimer
Enabled = False
Interval = 2000
OnTimer = Timer1Timer
Left = 608
Top = 344
end
end end

View File

@@ -59,27 +59,26 @@ type
Button1: TButton; Button1: TButton;
Chromium1: TChromium; Chromium1: TChromium;
CEFWindowParent1: TCEFWindowParent; CEFWindowParent1: TCEFWindowParent;
Timer1: TTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser); procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
procedure Button1Click(Sender: TObject); procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser;
out Result: Boolean); out Result: Boolean);
procedure Timer1Timer(Sender: TObject);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure Chromium1BeforeClose(Sender: TObject;
const browser: ICefBrowser);
private private
// Variables to control when can we destroy the form safely // Variables to control when can we destroy the form safely
FCanClose : boolean; // Set to True when the final timer is triggered FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
FClosing : boolean; // Set to True in the CloseQuery event. FClosing : boolean; // Set to True in the CloseQuery event.
protected protected
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEFBROWSER_CREATED; procedure BrowserCreatedMsg(var aMessage : TMessage); message CEFBROWSER_CREATED;
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEFBROWSER_DESTROY;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE; procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING; procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
@@ -93,16 +92,10 @@ implementation
// Destruction steps // Destruction steps
// ================= // =================
// 1. Load about:blank and wait till it's fully loaded // 1. FormCloseQuery calls TChromium.CloseBrowser
// 2. Call TChromium.CloseBrowser // 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1 and Chromium1 in the main thread.
// 3. Wait for the TChromium.Close // 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
// 4. Enable a Timer and wait for 2 seconds
// 5. Close and destroy the form
//
// Note
// ====
// If you load simple web pages and you want to speed up the destruction,
// try skipping step 1 and reducing the timer's interval.
procedure TChildForm.Button1Click(Sender: TObject); procedure TChildForm.Button1Click(Sender: TObject);
begin begin
@@ -114,17 +107,15 @@ begin
PostMessage(Handle, CEFBROWSER_CREATED, 0, 0); PostMessage(Handle, CEFBROWSER_CREATED, 0, 0);
end; end;
procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); procedure TChildForm.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
begin begin
Timer1.Enabled := True; FCanClose := True;
PostMessage(Handle, WM_CLOSE, 0, 0);
end; end;
procedure TChildForm.Chromium1LoadEnd(Sender: TObject; procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean);
const browser: ICefBrowser; const frame: ICefFrame;
httpStatusCode: Integer);
begin begin
if FClosing and (Chromium1.DocumentURL = 'about:blank') then PostMessage(Handle, CEFBROWSER_DESTROY, 0, 0);
Chromium1.CloseBrowser(True);
end; end;
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction); procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
@@ -138,8 +129,9 @@ begin
if not(FClosing) and Panel1.Enabled then if not(FClosing) and Panel1.Enabled then
begin begin
FClosing := True; FClosing := True;
Chromium1.LoadURL('about:blank'); Panel1.Enabled := False;
Chromium1.CloseBrowser(True);
end; end;
end; end;
@@ -161,17 +153,6 @@ begin
Chromium1.CreateBrowser(CEFWindowParent1, ''); Chromium1.CreateBrowser(CEFWindowParent1, '');
end; end;
procedure TChildForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
if not(FCanClose) then
begin
FCanClose := True;
PostMessage(self.Handle, WM_CLOSE, 0, 0);
end;
end;
procedure TChildForm.WMMove(var aMessage : TWMMove); procedure TChildForm.WMMove(var aMessage : TWMMove);
begin begin
inherited; inherited;
@@ -192,4 +173,10 @@ begin
Button1.Click; Button1.Click;
end; end;
procedure TChildForm.BrowserDestroyMsg(var aMessage : TMessage);
begin
CEFWindowParent1.Free;
Chromium1.Free;
end;
end. end.

View File

@@ -70,10 +70,4 @@ object MainForm: TMainForm
OnClick = ExitBtnClick OnClick = ExitBtnClick
end end
end end
object Timer1: TTimer
Enabled = False
OnTimer = Timer1Timer
Left = 608
Top = 344
end
end end

View File

@@ -55,20 +55,19 @@ uses
const const
CEFBROWSER_CREATED = WM_APP + $100; CEFBROWSER_CREATED = WM_APP + $100;
CEFBROWSER_CHILDDESTROYED = WM_APP + $101; CEFBROWSER_CHILDDESTROYED = WM_APP + $101;
CEFBROWSER_DESTROY = WM_APP + $102;
type type
TMainForm = class(TForm) TMainForm = class(TForm)
Timer1: TTimer;
ButtonPnl: TPanel; ButtonPnl: TPanel;
NewBtn: TSpeedButton; NewBtn: TSpeedButton;
ExitBtn: TSpeedButton; ExitBtn: TSpeedButton;
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure NewBtnClick(Sender: TObject); procedure NewBtnClick(Sender: TObject);
procedure ExitBtnClick(Sender: TObject); procedure ExitBtnClick(Sender: TObject);
private private
// Variables to control when can we destroy the form safely // Variables to control when can we destroy the form safely
FCanClose : boolean; // Set to True when the final timer is triggered FCanClose : boolean; // Set to True when all the child forms are closed
FClosing : boolean; // Set to True in the CloseQuery event. FClosing : boolean; // Set to True in the CloseQuery event.
procedure CreateMDIChild(const Name: string); procedure CreateMDIChild(const Name: string);
@@ -97,8 +96,7 @@ uses
// Destruction steps // Destruction steps
// ================= // =================
// 1. Destroy all child forms // 1. Destroy all child forms
// 2. Enable a Timer and wait for 1 second // 2. Wait until all the child forms are closed before closing the main form and terminating the application.
// 3. Close and destroy the main form
procedure TMainForm.CreateMDIChild(const Name: string); procedure TMainForm.CreateMDIChild(const Name: string);
var var
@@ -161,24 +159,14 @@ begin
CloseAllChildForms; CloseAllChildForms;
end; end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
if not(FCanClose) then
begin
FCanClose := True;
PostMessage(self.Handle, WM_CLOSE, 0, 0);
end;
end;
procedure TMainForm.ChildDestroyedMsg(var aMessage : TMessage); procedure TMainForm.ChildDestroyedMsg(var aMessage : TMessage);
begin begin
// If there are no more child forms we can destroy the main form // If there are no more child forms we can destroy the main form
if (MDIChildCount = 0) then if (MDIChildCount = 0) then
begin begin
ButtonPnl.Enabled := False; ButtonPnl.Enabled := False;
Timer1.Enabled := True; FCanClose := True;
PostMessage(Handle, WM_CLOSE, 0, 0);
end; end;
end; end;

View File

@@ -1,5 +1,5 @@
[Closed Files] [Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,28,92,53,0,0,,{1,361,40}{2,212,1}{3,185,76} File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\FastMM4\FastMM4.pas',0,1,9585,1,9607,0,0,,
File_1=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.Windows.pas',0,1,22517,1,22546,0,0,, File_1=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.Windows.pas',0,1,22517,1,22546,0,0,,
File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Forms.pas',0,1,4931,72,4962,0,0,{{1729,4} File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Forms.pas',0,1,4931,72,4962,0,0,{{1729,4}
File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,9646,1,9668,0,0,, File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,9646,1,9668,0,0,,
@@ -11,17 +11,29 @@ File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF
File_9=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\RTL\SYS\System.pas',0,1,29880,1,29902,0,0,, File_9=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\RTL\SYS\System.pas',0,1,29880,1,29902,0,0,,
[Modules] [Modules]
Module0=default.htm Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj
Count=1 Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
Module2=default.htm
Count=3
EditWindowCount=1 EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj]
ModuleType=TBaseProject
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas]
ModuleType=TSourceModule
FormState=1
FormOnTop=0
[default.htm] [default.htm]
ModuleType=TURLModule ModuleType=TURLModule
[EditWindow0] [EditWindow0]
ViewCount=1 ViewCount=3
CurrentView=0 CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
View0=0 View0=0
View1=1
View2=2
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=1 Visible=1
@@ -41,10 +53,10 @@ TopPanelSize=0
LeftPanelSize=0 LeftPanelSize=0
RightPanelSize=2000 RightPanelSize=2000
RightPanelClients=DockSite2 RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF RightPanelData=000008000101000000008C1500000000000001D0070000000000000100000000E91D000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0 BottomPanelSize=1399
BottomPanelClients=DockSite1,MessageView BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B36000000000000022B05000000000000FFFFFFFF BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002770500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomMiddlePanelSize=0 BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@@ -55,6 +67,28 @@ TabDockRightClients=DockSite4=0
CustomEditViewType=TWelcomePageView CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
CursorX=2
CursorY=132
TopLine=97
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
[View2]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
CursorX=84
CursorY=395
TopLine=388
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
[Watches] [Watches]
Count=0 Count=0
@@ -69,11 +103,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=213 TBDockHeight=213
LRDockWidth=13602 LRDockWidth=13602
Dockable=1 Dockable=1
@@ -117,11 +151,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=8868 Height=7354
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=8868 ClientHeight=7354
TBDockHeight=5897 TBDockHeight=5897
LRDockWidth=2352 LRDockWidth=2352
Dockable=1 Dockable=1
@@ -130,18 +164,18 @@ StayOnTop=0
[MessageView] [MessageView]
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=0 Visible=1
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=23 Top=23
Width=2773 Width=10000
Height=1110 Height=1188
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2773 ClientWidth=10000
ClientHeight=1110 ClientHeight=1188
TBDockHeight=1110 TBDockHeight=1188
LRDockWidth=2773 LRDockWidth=2773
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -155,11 +189,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1875 Width=1875
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7152 TBDockHeight=7152
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -269,16 +303,16 @@ State=0
Left=78 Left=78
Top=386 Top=386
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1898 ClientWidth=1773
ClientHeight=7164 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
SplitPos=111 SplitPos=127
[frmDesignPreview] [frmDesignPreview]
PercentageSizes=1 PercentageSizes=1
@@ -349,11 +383,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=415 TBDockHeight=415
LRDockWidth=4953 LRDockWidth=4953
Dockable=1 Dockable=1
@@ -368,11 +402,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=213 TBDockHeight=213
LRDockWidth=7406 LRDockWidth=7406
Dockable=1 Dockable=1
@@ -381,6 +415,7 @@ Column0Width=145
Column1Width=100 Column1Width=100
Column2Width=115 Column2Width=115
Column3Width=250 Column3Width=250
Column4Width=250
[LocalVarsWindow] [LocalVarsWindow]
PercentageSizes=1 PercentageSizes=1
@@ -391,11 +426,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=1536 TBDockHeight=1536
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -410,11 +445,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=2063 TBDockHeight=2063
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -532,11 +567,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=1547 TBDockHeight=1547
LRDockWidth=8742 LRDockWidth=8742
Dockable=1 Dockable=1
@@ -558,11 +593,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1773 Width=1773
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=3677 TBDockHeight=3677
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -644,12 +679,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=3820 Width=3820
Height=1110 Height=1188
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=1110 ClientHeight=1188
TBDockHeight=1110 TBDockHeight=1188
LRDockWidth=3820 LRDockWidth=3820
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -668,12 +703,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=2000 Width=2000
Height=9170 Height=7657
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=9170 ClientHeight=7657
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -692,12 +727,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -716,12 +751,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0

View File

@@ -1,10 +1,10 @@
[Stats] [Stats]
EditorSecs=33989 EditorSecs=34252
DesignerSecs=2113 DesignerSecs=2118
InspectorSecs=1461 InspectorSecs=1461
CompileSecs=1754135 CompileSecs=1792955
OtherSecs=5520 OtherSecs=5624
StartTime=11/02/2017 10:51:15 StartTime=11/02/2017 10:51:15
RealKeys=0 RealKeys=0
EffectiveKeys=0 EffectiveKeys=0
DebugSecs=25135 DebugSecs=26138

View File

@@ -11,17 +11,22 @@ File_8=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Fo
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLifeSpanHandler.pas',0,1,99,1,121,0,0,, File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLifeSpanHandler.pas',0,1,99,1,121,0,0,,
[Modules] [Modules]
Module0=default.htm Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dproj
Count=1 Module1=default.htm
Count=2
EditWindowCount=1 EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dproj]
ModuleType=TBaseProject
[default.htm] [default.htm]
ModuleType=TURLModule ModuleType=TURLModule
[EditWindow0] [EditWindow0]
ViewCount=1 ViewCount=2
CurrentView=0 CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dpr
View0=0 View0=0
View1=1
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=1 Visible=1
@@ -40,21 +45,31 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0 TopPanelSize=0
LeftPanelSize=0 LeftPanelSize=0
RightPanelSize=2000 RightPanelSize=2000
RightPanelClients=DockSite2 RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=0 BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B36000000000000022B05000000000000FFFFFFFF BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF
BottomMiddlePanelSize=0 BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1 TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockRightClients=DockSite4=0
[View0] [View0]
CustomEditViewType=TWelcomePageView CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dpr
CursorX=2
CursorY=60
TopLine=22
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dpr
[Watches] [Watches]
Count=0 Count=0
@@ -69,11 +84,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=1121
TBDockHeight=213 TBDockHeight=213
LRDockWidth=13602 LRDockWidth=13602
Dockable=1 Dockable=1
@@ -117,11 +132,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=8868 Height=4226
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=8868 ClientHeight=4226
TBDockHeight=5897 TBDockHeight=5897
LRDockWidth=2352 LRDockWidth=2352
Dockable=1 Dockable=1
@@ -134,14 +149,14 @@ Visible=0
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=23 Top=0
Width=2773 Width=2773
Height=1110 Height=1424
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2773 ClientWidth=2773
ClientHeight=1110 ClientHeight=1424
TBDockHeight=1110 TBDockHeight=1424
LRDockWidth=2773 LRDockWidth=2773
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -154,12 +169,12 @@ Docked=1
State=0 State=0
Left=0 Left=0
Top=0 Top=0
Width=1875 Width=2000
Height=6738 Height=4339
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=2000
ClientHeight=6738 ClientHeight=4339
TBDockHeight=7152 TBDockHeight=7152
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -269,12 +284,12 @@ State=0
Left=78 Left=78
Top=386 Top=386
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1898 ClientWidth=1898
ClientHeight=7164 ClientHeight=7119
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -324,8 +339,8 @@ Create=1
Visible=0 Visible=0
Docked=1 Docked=1
State=0 State=0
Left=-8 Left=-1152
Top=287 Top=243
Width=273 Width=273
Height=359 Height=359
MaxLeft=-1 MaxLeft=-1
@@ -349,11 +364,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=1121
TBDockHeight=415 TBDockHeight=415
LRDockWidth=4953 LRDockWidth=4953
Dockable=1 Dockable=1
@@ -368,11 +383,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=1121
TBDockHeight=213 TBDockHeight=213
LRDockWidth=7406 LRDockWidth=7406
Dockable=1 Dockable=1
@@ -381,6 +396,7 @@ Column0Width=145
Column1Width=100 Column1Width=100
Column2Width=115 Column2Width=115
Column3Width=250 Column3Width=250
Column4Width=250
[LocalVarsWindow] [LocalVarsWindow]
PercentageSizes=1 PercentageSizes=1
@@ -391,11 +407,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=1121
TBDockHeight=1536 TBDockHeight=1536
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -410,11 +426,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=1121
TBDockHeight=2063 TBDockHeight=2063
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -532,11 +548,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=1121
TBDockHeight=1547 TBDockHeight=1547
LRDockWidth=8742 LRDockWidth=8742
Dockable=1 Dockable=1
@@ -558,11 +574,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1773 Width=1773
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=3677 TBDockHeight=3677
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -644,12 +660,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=3820 Width=3820
Height=1110 Height=1424
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=1110 ClientHeight=1424
TBDockHeight=1110 TBDockHeight=1424
LRDockWidth=3820 LRDockWidth=3820
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -668,12 +684,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=2000 Width=2000
Height=9170 Height=4529
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=9170 ClientHeight=4529
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -692,12 +708,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -706,22 +722,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool TabDockClients=StructureView,ClassBrowserTool
[DockSite4] [DockSite4]
HostDockSite=RightTabDock HostDockSite=DockRightPanel
DockSiteType=1 DockSiteType=1
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=0 Visible=1
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=0 Top=454
Width=2000 Width=2000
Height=7164 Height=4339
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=2000
ClientHeight=6738 ClientHeight=4339
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0

View File

@@ -1,10 +1,10 @@
[Stats] [Stats]
EditorSecs=4394 EditorSecs=4525
DesignerSecs=301 DesignerSecs=301
InspectorSecs=137 InspectorSecs=137
CompileSecs=250114 CompileSecs=287743
OtherSecs=829 OtherSecs=932
StartTime=22/01/2017 14:51:01 StartTime=22/01/2017 14:51:01
RealKeys=0 RealKeys=0
EffectiveKeys=0 EffectiveKeys=0
DebugSecs=1926 DebugSecs=2069

View File

@@ -133,27 +133,12 @@
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
</Platform> </Platform>
</DeployFile> </DeployFile>
<DeployClass Name="DependencyModule"> <DeployClass Name="ProjectiOSDeviceResourceRules">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
<Platform Name="iOSDevice32"> <Platform Name="iOSDevice32">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="ProjectOSXResource"> <DeployClass Name="ProjectOSXResource">
@@ -507,12 +492,27 @@
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules"> <DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
<Platform Name="iOSDevice32"> <Platform Name="iOSDevice32">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
</DeployClass> </DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>

View File

@@ -2,8 +2,8 @@
<BorlandProject> <BorlandProject>
<Transactions> <Transactions>
<Transaction>2017/01/22 17:26:58.000.836,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction> <Transaction>2017/01/22 17:26:58.000.836,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction> <Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas</Transaction>
<Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction> <Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.dfm</Transaction>
<Transaction>2017/01/22 17:28:25.000.780,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction> <Transaction>2017/01/22 17:28:25.000.780,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj</Transaction>
</Transactions> </Transactions>
</BorlandProject> </BorlandProject>

View File

@@ -1,5 +1,5 @@
[Closed Files] [Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,270,58,305,0,0,,{1 File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,102,58,305,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,10,21,38,0,0,, File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,10,21,38,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,34,23,38,0,0,, File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,34,23,38,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,35,24,60,0,0,, File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,35,24,60,0,0,,
@@ -11,17 +11,22 @@ File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\BriskBard\uBriskBardMainForm.pas',0,1,50,11,57,0,0,, File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\BriskBard\uBriskBardMainForm.pas',0,1,50,11,57,0,0,,
[Modules] [Modules]
Module0=default.htm Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj
Count=1 Module1=default.htm
Count=2
EditWindowCount=1 EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj]
ModuleType=TBaseProject
[default.htm] [default.htm]
ModuleType=TURLModule ModuleType=TURLModule
[EditWindow0] [EditWindow0]
ViewCount=1 ViewCount=2
CurrentView=0 CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr
View0=0 View0=0
View1=1
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=1 Visible=1
@@ -41,10 +46,10 @@ TopPanelSize=0
LeftPanelSize=0 LeftPanelSize=0
RightPanelSize=2000 RightPanelSize=2000
RightPanelClients=DockSite2 RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF RightPanelData=000008000101000000008C1500000000000001D0070000000000000100000000E91D000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0 BottomPanelSize=1399
BottomPanelClients=DockSite1,MessageView BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B36000000000000022B05000000000000FFFFFFFF BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002770500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomMiddlePanelSize=0 BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@@ -55,6 +60,17 @@ TabDockRightClients=DockSite4=0
CustomEditViewType=TWelcomePageView CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr
CursorX=2
CursorY=61
TopLine=28
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr
[Watches] [Watches]
Count=0 Count=0
@@ -69,11 +85,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=213 TBDockHeight=213
LRDockWidth=13602 LRDockWidth=13602
Dockable=1 Dockable=1
@@ -117,11 +133,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=8868 Height=7354
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=8868 ClientHeight=7354
TBDockHeight=5897 TBDockHeight=5897
LRDockWidth=2352 LRDockWidth=2352
Dockable=1 Dockable=1
@@ -130,18 +146,18 @@ StayOnTop=0
[MessageView] [MessageView]
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=0 Visible=1
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=23 Top=23
Width=2773 Width=10000
Height=1110 Height=1188
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2773 ClientWidth=10000
ClientHeight=1110 ClientHeight=1188
TBDockHeight=1110 TBDockHeight=1188
LRDockWidth=2773 LRDockWidth=2773
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -155,11 +171,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1875 Width=1875
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7152 TBDockHeight=7152
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -269,16 +285,16 @@ State=0
Left=78 Left=78
Top=386 Top=386
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1898 ClientWidth=1773
ClientHeight=7164 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
SplitPos=111 SplitPos=127
[frmDesignPreview] [frmDesignPreview]
PercentageSizes=1 PercentageSizes=1
@@ -349,11 +365,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=415 TBDockHeight=415
LRDockWidth=4953 LRDockWidth=4953
Dockable=1 Dockable=1
@@ -368,11 +384,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=213 TBDockHeight=213
LRDockWidth=7406 LRDockWidth=7406
Dockable=1 Dockable=1
@@ -381,6 +397,7 @@ Column0Width=145
Column1Width=100 Column1Width=100
Column2Width=115 Column2Width=115
Column3Width=250 Column3Width=250
Column4Width=250
[LocalVarsWindow] [LocalVarsWindow]
PercentageSizes=1 PercentageSizes=1
@@ -391,11 +408,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=1536 TBDockHeight=1536
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -410,11 +427,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=2063 TBDockHeight=2063
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -532,11 +549,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=886
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=886
TBDockHeight=1547 TBDockHeight=1547
LRDockWidth=8742 LRDockWidth=8742
Dockable=1 Dockable=1
@@ -558,11 +575,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1773 Width=1773
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=3677 TBDockHeight=3677
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -644,12 +661,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=3820 Width=3820
Height=1110 Height=1188
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=1110 ClientHeight=1188
TBDockHeight=1110 TBDockHeight=1188
LRDockWidth=3820 LRDockWidth=3820
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -668,12 +685,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=2000 Width=2000
Height=9170 Height=7657
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=9170 ClientHeight=7657
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -692,12 +709,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -716,12 +733,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0

View File

@@ -1,10 +1,10 @@
[Stats] [Stats]
EditorSecs=3724 EditorSecs=3779
DesignerSecs=236 DesignerSecs=238
InspectorSecs=62 InspectorSecs=62
CompileSecs=248230 CompileSecs=258272
OtherSecs=589 OtherSecs=604
StartTime=22/01/2017 17:35:20 StartTime=22/01/2017 17:35:20
RealKeys=0 RealKeys=0
EffectiveKeys=0 EffectiveKeys=0
DebugSecs=993 DebugSecs=1014

View File

@@ -56,18 +56,18 @@ uses
begin begin
GlobalCEFApp := TCefApplication.Create; GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.FlashEnabled := False; // Some websites with heavy Flash usage will need a longer Timer.Interval if you set this to True GlobalCEFApp.FlashEnabled := False;
GlobalCEFApp.FastUnload := True; // Enable the fast unload controller, which speeds up tab/window close by running a tab's onunload js handler independently of the GUI GlobalCEFApp.FastUnload := True; // Enable the fast unload controller, which speeds up tab/window close by running a tab's onunload js handler independently of the GUI
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data. // In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.
{ {
GlobalCEFApp.FrameworkDirPath := 'cef'; GlobalCEFApp.FrameworkDirPath := 'cef';
GlobalCEFApp.ResourcesDirPath := 'cef'; GlobalCEFApp.ResourcesDirPath := 'cef';
GlobalCEFApp.LocalesDirPath := 'cef\locales'; GlobalCEFApp.LocalesDirPath := 'cef\locales';
GlobalCEFApp.cache := 'cef\cache'; GlobalCEFApp.cache := 'cef\cache';
GlobalCEFApp.cookies := 'cef\cookies'; GlobalCEFApp.cookies := 'cef\cookies';
GlobalCEFApp.UserDataPath := 'cef\User Data'; GlobalCEFApp.UserDataPath := 'cef\User Data';
} }
if GlobalCEFApp.StartMainProcess then if GlobalCEFApp.StartMainProcess then
begin begin

View File

@@ -139,12 +139,27 @@
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
</Platform> </Platform>
</DeployFile> </DeployFile>
<DeployClass Name="ProjectiOSDeviceResourceRules"> <DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
<Platform Name="iOSDevice32"> <Platform Name="iOSDevice32">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="ProjectOSXResource"> <DeployClass Name="ProjectOSXResource">
@@ -498,27 +513,12 @@
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="DependencyModule"> <DeployClass Name="ProjectiOSDeviceResourceRules">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64"> <Platform Name="iOSDevice64">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
<Platform Name="iOSDevice32"> <Platform Name="iOSDevice32">
<Operation>1</Operation> <Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform> </Platform>
</DeployClass> </DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>

View File

@@ -2,11 +2,11 @@
<BorlandProject> <BorlandProject>
<Transactions> <Transactions>
<Transaction>2017/05/21 15:39:53.000.029,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction> <Transaction>2017/05/21 15:39:53.000.029,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas</Transaction> <Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.dfm</Transaction> <Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/05/21 15:40:43.000.627,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj</Transaction> <Transaction>2017/05/21 15:40:43.000.627,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/05/21 15:44:20.000.154,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas</Transaction> <Transaction>2017/05/21 15:44:20.000.154,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas</Transaction>
<Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.dfm</Transaction> <Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas</Transaction>
<Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas</Transaction> <Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.dfm</Transaction>
</Transactions> </Transactions>
</BorlandProject> </BorlandProject>

View File

@@ -1,46 +1,27 @@
[Closed Files] [Closed Files]
File_0=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\misc\uConnectFrm.pas',0,1,1,31,16,0,0,, File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas',0,1,152,56,203,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.pas',0,1,154,43,192,0,0,, File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uMainForm.pas',0,1,127,19,169,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.pas',0,1,28,14,53,0,0,, File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas',0,1,83,1,142,0,0,,
File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,1970,1,1999,0,0,, File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MDIBrowser\uChildForm.pas',0,1,103,1,112,0,0,,
File_4=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Forms.pas',0,1,1448,3,1381,0,0,{{1729,4} File_4=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\misc\uConnectFrm.pas',0,1,1,31,16,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,22,69,65,0,0,, File_5=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,1970,1,1999,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas',0,1,1,1,1,0,0,, File_6=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Forms.pas',0,1,1448,3,1381,0,0,{{1729,4}
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDisplayHandler.pas',0,1,85,35,133,0,0,, File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,22,69,65,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBrowser.pas',0,1,1,1,1,0,0,, File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas',0,1,1,1,1,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,860,1,1,0,0,, File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDisplayHandler.pas',0,1,85,35,133,0,0,,
[Modules] [Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj Module0=default.htm
Module1=default.htm Count=1
Module2=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas
Module3=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas
Count=4
EditWindowCount=1 EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj]
ModuleType=TBaseProject
[default.htm] [default.htm]
ModuleType=TURLModule ModuleType=TURLModule
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas]
ModuleType=TSourceModule
FormState=1
FormOnTop=0
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas]
ModuleType=TSourceModule
FormState=1
FormOnTop=0
[EditWindow0] [EditWindow0]
ViewCount=4 ViewCount=1
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dpr CurrentView=0
View0=0 View0=0
View1=1
View2=2
View3=3
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=1 Visible=1
@@ -63,7 +44,7 @@ RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0 BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B36000000000000022B05000000000000FFFFFFFF BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002C305000000000000FFFFFFFF
BottomMiddlePanelSize=0 BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@@ -74,39 +55,6 @@ TabDockRightClients=DockSite4=0
CustomEditViewType=TWelcomePageView CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas
CursorX=79
CursorY=145
TopLine=104
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas
[View2]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas
CursorX=78
CursorY=53
TopLine=22
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas
[View3]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dpr
CursorX=84
CursorY=39
TopLine=19
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dpr
[Watches] [Watches]
Count=0 Count=0
@@ -121,11 +69,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=213 TBDockHeight=213
LRDockWidth=13602 LRDockWidth=13602
Dockable=1 Dockable=1
@@ -188,12 +136,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=2773 Width=2773
Height=1110 Height=1267
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2773 ClientWidth=2773
ClientHeight=1110 ClientHeight=1267
TBDockHeight=1110 TBDockHeight=1267
LRDockWidth=2773 LRDockWidth=2773
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -207,11 +155,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1875 Width=1875
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7152 TBDockHeight=7152
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -321,16 +269,16 @@ State=0
Left=78 Left=78
Top=386 Top=386
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1898 ClientWidth=1773
ClientHeight=7164 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
SplitPos=111 SplitPos=127
[frmDesignPreview] [frmDesignPreview]
PercentageSizes=1 PercentageSizes=1
@@ -401,11 +349,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=415 TBDockHeight=415
LRDockWidth=4953 LRDockWidth=4953
Dockable=1 Dockable=1
@@ -420,11 +368,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=213 TBDockHeight=213
LRDockWidth=7406 LRDockWidth=7406
Dockable=1 Dockable=1
@@ -433,6 +381,7 @@ Column0Width=145
Column1Width=100 Column1Width=100
Column2Width=115 Column2Width=115
Column3Width=250 Column3Width=250
Column4Width=250
[LocalVarsWindow] [LocalVarsWindow]
PercentageSizes=1 PercentageSizes=1
@@ -443,11 +392,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=1536 TBDockHeight=1536
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -462,11 +411,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=2063 TBDockHeight=2063
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -584,11 +533,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=807 Height=964
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=807 ClientHeight=964
TBDockHeight=1547 TBDockHeight=1547
LRDockWidth=8742 LRDockWidth=8742
Dockable=1 Dockable=1
@@ -610,11 +559,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1773 Width=1773
Height=6738 Height=6693
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=3677 TBDockHeight=3677
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -696,12 +645,12 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=3820 Width=3820
Height=1110 Height=1267
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=1110 ClientHeight=1267
TBDockHeight=1110 TBDockHeight=1267
LRDockWidth=3820 LRDockWidth=3820
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -725,7 +674,7 @@ MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=9170 ClientHeight=9170
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -744,12 +693,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=1898 Width=1898
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1773
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -768,12 +717,12 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=7164 Height=7119
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=1875
ClientHeight=6738 ClientHeight=6693
TBDockHeight=7164 TBDockHeight=7119
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0

View File

@@ -1,10 +1,10 @@
[Stats] [Stats]
EditorSecs=35 EditorSecs=603
DesignerSecs=1 DesignerSecs=16
InspectorSecs=1 InspectorSecs=1
CompileSecs=1 CompileSecs=8248
OtherSecs=10 OtherSecs=42
StartTime=21/05/2017 17:35:40 StartTime=21/05/2017 17:35:40
RealKeys=0 RealKeys=0
EffectiveKeys=0 EffectiveKeys=0
DebugSecs=1 DebugSecs=30

View File

@@ -27,25 +27,14 @@ object ChildForm: TChildForm
Height = 300 Height = 300
Align = alClient Align = alClient
TabOrder = 0 TabOrder = 0
ExplicitLeft = 160
ExplicitTop = 88
ExplicitWidth = 100
ExplicitHeight = 41
end end
object Chromium1: TChromium object Chromium1: TChromium
OnLoadEnd = Chromium1LoadEnd
OnPreKeyEvent = Chromium1PreKeyEvent OnPreKeyEvent = Chromium1PreKeyEvent
OnKeyEvent = Chromium1KeyEvent OnKeyEvent = Chromium1KeyEvent
OnAfterCreated = Chromium1AfterCreated OnAfterCreated = Chromium1AfterCreated
OnBeforeClose = Chromium1BeforeClose
OnClose = Chromium1Close OnClose = Chromium1Close
Left = 184 Left = 184
Top = 128 Top = 128
end end
object Timer1: TTimer
Enabled = False
Interval = 2000
OnTimer = Timer1Timer
Left = 244
Top = 128
end
end end

View File

@@ -56,15 +56,11 @@ type
TChildForm = class(TForm) TChildForm = class(TForm)
CEFWindowParent1: TCEFWindowParent; CEFWindowParent1: TCEFWindowParent;
Chromium1: TChromium; Chromium1: TChromium;
Timer1: TTimer;
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormDestroy(Sender: TObject); procedure FormDestroy(Sender: TObject);
procedure Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
procedure Chromium1AfterCreated(Sender: TObject; procedure Chromium1AfterCreated(Sender: TObject;
const browser: ICefBrowser); const browser: ICefBrowser);
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser;
@@ -75,15 +71,18 @@ type
procedure Chromium1KeyEvent(Sender: TObject; procedure Chromium1KeyEvent(Sender: TObject;
const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
out Result: Boolean); out Result: Boolean);
procedure Chromium1BeforeClose(Sender: TObject;
const browser: ICefBrowser);
private private
// Variables to control when can we destroy the form safely // Variables to control when can we destroy the form safely
FCanClose : boolean; // Set to True when the final timer is triggered FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
FClosing : boolean; // Set to True in the CloseQuery event. FClosing : boolean; // Set to True in the CloseQuery event.
FHomepage : string; FHomepage : string;
protected protected
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEFBROWSER_CREATED; procedure BrowserCreatedMsg(var aMessage : TMessage); message CEFBROWSER_CREATED;
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEFBROWSER_DESTROY;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE; procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING; procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
@@ -101,27 +100,24 @@ implementation
// Destruction steps // Destruction steps
// ================= // =================
// 1. Load about:blank and wait till it's fully loaded // 1. FormCloseQuery calls TChromium.CloseBrowser
// 2. Call TChromium.CloseBrowser // 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1 and Chromium1 in the main thread.
// 3. Wait for the TChromium.Close // 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
// 4. Enable a Timer and wait for 2 seconds
// 5. Close and destroy the form
//
// Note
// ====
// If you load simple web pages and you want to speed up the destruction,
// try skipping step 1 and reducing the timer's interval.
procedure TChildForm.Chromium1AfterCreated(Sender: TObject; procedure TChildForm.Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
const browser: ICefBrowser);
begin begin
PostMessage(Handle, CEFBROWSER_CREATED, 0, 0); PostMessage(Handle, CEFBROWSER_CREATED, 0, 0);
end; end;
procedure TChildForm.Chromium1Close(Sender: TObject; procedure TChildForm.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
const browser: ICefBrowser; out Result: Boolean);
begin begin
Timer1.Enabled := True; FCanClose := True;
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; out Result: Boolean);
begin
PostMessage(Handle, CEFBROWSER_DESTROY, 0, 0);
end; end;
procedure TChildForm.Chromium1KeyEvent(Sender: TObject; procedure TChildForm.Chromium1KeyEvent(Sender: TObject;
@@ -137,14 +133,12 @@ begin
WM_KEYUP : WM_KEYUP :
begin begin
TempMsg := osEvent^; TempMsg := osEvent^;
HandleKeyUp(TempMsg, Result); HandleKeyUp(TempMsg, Result);
end; end;
WM_KEYDOWN : WM_KEYDOWN :
begin begin
TempMsg := osEvent^; TempMsg := osEvent^;
HandleKeyDown(TempMsg, Result); HandleKeyDown(TempMsg, Result);
end; end;
end; end;
@@ -163,7 +157,6 @@ begin
if (TempKeyMsg.CharCode = VK_ESCAPE) then if (TempKeyMsg.CharCode = VK_ESCAPE) then
begin begin
aHandled := True; aHandled := True;
PostMessage(Handle, WM_CLOSE, 0, 0); PostMessage(Handle, WM_CLOSE, 0, 0);
end; end;
end; end;
@@ -181,14 +174,6 @@ begin
if (TempKeyMsg.CharCode = VK_ESCAPE) then aHandled := True; if (TempKeyMsg.CharCode = VK_ESCAPE) then aHandled := True;
end; end;
procedure TChildForm.Chromium1LoadEnd(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
httpStatusCode: Integer);
begin
if FClosing and (Chromium1.DocumentURL = 'about:blank') then
Chromium1.CloseBrowser(True);
end;
procedure TChildForm.Chromium1PreKeyEvent(Sender: TObject; procedure TChildForm.Chromium1PreKeyEvent(Sender: TObject;
const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
out isKeyboardShortcut, Result: Boolean); out isKeyboardShortcut, Result: Boolean);
@@ -214,8 +199,7 @@ begin
if not(FClosing) then if not(FClosing) then
begin begin
FClosing := True; FClosing := True;
Chromium1.LoadURL('about:blank'); Chromium1.CloseBrowser(True);
ShowWindow(Handle, SW_HIDE);
end; end;
end; end;
@@ -237,17 +221,6 @@ begin
Chromium1.CreateBrowser(CEFWindowParent1, ''); Chromium1.CreateBrowser(CEFWindowParent1, '');
end; end;
procedure TChildForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
if not(FCanClose) then
begin
FCanClose := True;
PostMessage(self.Handle, WM_CLOSE, 0, 0);
end;
end;
procedure TChildForm.WMMove(var aMessage : TWMMove); procedure TChildForm.WMMove(var aMessage : TWMMove);
begin begin
inherited; inherited;
@@ -267,4 +240,10 @@ begin
Chromium1.LoadURL(FHomepage); Chromium1.LoadURL(FHomepage);
end; end;
procedure TChildForm.BrowserDestroyMsg(var aMessage : TMessage);
begin
CEFWindowParent1.Free;
Chromium1.Free;
end;
end. end.

View File

@@ -34,11 +34,4 @@ object MainForm: TMainForm
TabOrder = 1 TabOrder = 1
Text = 'https://www.google.com' Text = 'https://www.google.com'
end end
object Timer1: TTimer
Enabled = False
Interval = 2000
OnTimer = Timer1Timer
Left = 225
Top = 1
end
end end

View File

@@ -53,18 +53,17 @@ uses
const const
CEFBROWSER_CREATED = WM_APP + $100; CEFBROWSER_CREATED = WM_APP + $100;
CEFBROWSER_CHILDDESTROYED = WM_APP + $101; CEFBROWSER_CHILDDESTROYED = WM_APP + $101;
CEFBROWSER_DESTROY = WM_APP + $102;
type type
TMainForm = class(TForm) TMainForm = class(TForm)
Button1: TButton; Button1: TButton;
Edit1: TEdit; Edit1: TEdit;
Timer1: TTimer;
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject); procedure Button1Click(Sender: TObject);
private private
// Variables to control when can we destroy the form safely // Variables to control when can we destroy the form safely
FCanClose : boolean; // Set to True when the final timer is triggered FCanClose : boolean; // Set to True when all the child forms are closed
FClosing : boolean; // Set to True in the CloseQuery event. FClosing : boolean; // Set to True in the CloseQuery event.
procedure CreateToolboxChild(const ChildCaption, URL: string); procedure CreateToolboxChild(const ChildCaption, URL: string);
@@ -95,8 +94,7 @@ uses
// Destruction steps // Destruction steps
// ================= // =================
// 1. Destroy all child forms // 1. Destroy all child forms
// 2. Enable a Timer and wait for 1 second // 2. Wait until all the child forms are closed before closing the main form and terminating the application.
// 3. Close and destroy the main form
procedure TMainForm.CreateToolboxChild(const ChildCaption, URL: string); procedure TMainForm.CreateToolboxChild(const ChildCaption, URL: string);
var var
@@ -182,17 +180,6 @@ begin
end; end;
end; end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
if not(FCanClose) then
begin
FCanClose := True;
PostMessage(self.Handle, WM_CLOSE, 0, 0);
end;
end;
procedure TMainForm.Button1Click(Sender: TObject); procedure TMainForm.Button1Click(Sender: TObject);
begin begin
CreateToolboxChild('Browser', Edit1.Text); CreateToolboxChild('Browser', Edit1.Text);
@@ -203,8 +190,8 @@ begin
// If there are no more child forms we can destroy the main form // If there are no more child forms we can destroy the main form
if FClosing and (ChildFormCount = 0) then if FClosing and (ChildFormCount = 0) then
begin begin
ShowWindow(Handle, SW_HIDE); FCanClose := True;
Timer1.Enabled := True; PostMessage(Handle, WM_CLOSE, 0, 0);
end; end;
end; end;

View File

@@ -257,16 +257,7 @@
<Overwrite>true</Overwrite> <Overwrite>true</Overwrite>
</Platform> </Platform>
</DeployFile> </DeployFile>
<DeployClass Name="DependencyModule"> <DeployClass Name="ProjectiOSDeviceResourceRules"/>
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource"> <DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32"> <Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir> <RemoteDir>Contents\Resources</RemoteDir>
@@ -580,7 +571,16 @@
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="ProjectiOSDeviceResourceRules"/> <DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="OSX32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/> <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/> <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>

View File

@@ -1,14 +1,14 @@
[Closed Files] [Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,2152,106,2175,0,0,, File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLifeSpanHandler.pas',0,1,44,70,150,0,0,,{1,123,1}
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFRenderHandler.pas',0,1,90,95,113,0,0,, File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFClient.pas',0,1,38,91,64,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLibFunctions.pas',0,1,232,1,1,0,0,, File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFRequestContextHandler.pas',0,1,85,13,112,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBrowser.pas',0,1,300,78,327,0,0,, File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,50,13,78,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,150,58,178,0,0,, File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFContextMenuHandler.pas',0,1,22,1,38,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,1254,3,1283,0,0,, File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseRefCounted.pas',0,1,128,82,164,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFAccessibilityHandler.pas',0,1,70,47,85,0,0,, File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,222,20,252,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,1,82,3,111,0,0,, File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,89,14,118,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFValue.pas',0,1,179,3,208,0,0,, File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,2081,64,2116,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragData.pas',0,1,42,79,118,0,0,, File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBrowser.pas',0,1,1,3,280,0,0,,
[Modules] [Modules]
Module0=default.htm Module0=default.htm
@@ -40,16 +40,15 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0 TopPanelSize=0
LeftPanelSize=0 LeftPanelSize=0
RightPanelSize=2000 RightPanelSize=2000
RightPanelClients=DockSite2 RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=0 BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002770500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF
BottomMiddlePanelSize=0 BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1 TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockRightClients=DockSite4=0
[View0] [View0]
CustomEditViewType=TWelcomePageView CustomEditViewType=TWelcomePageView
@@ -69,11 +68,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=964 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=964 ClientHeight=1121
TBDockHeight=213 TBDockHeight=213
LRDockWidth=13602 LRDockWidth=13602
Dockable=1 Dockable=1
@@ -117,11 +116,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=8868 Height=4226
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=8868 ClientHeight=4226
TBDockHeight=5897 TBDockHeight=5897
LRDockWidth=2352 LRDockWidth=2352
Dockable=1 Dockable=1
@@ -134,14 +133,14 @@ Visible=0
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=23 Top=0
Width=10000 Width=2773
Height=1188 Height=1424
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=10000 ClientWidth=2773
ClientHeight=1188 ClientHeight=1424
TBDockHeight=1188 TBDockHeight=1424
LRDockWidth=2773 LRDockWidth=2773
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -154,12 +153,12 @@ Docked=1
State=0 State=0
Left=0 Left=0
Top=0 Top=0
Width=1875 Width=2000
Height=6738 Height=4339
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=2000
ClientHeight=6738 ClientHeight=4339
TBDockHeight=7152 TBDockHeight=7152
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -209,8 +208,8 @@ Create=1
Visible=0 Visible=0
Docked=1 Docked=1
State=0 State=0
Left=-8 Left=-148
Top=-30 Top=-137
Width=1844 Width=1844
Height=3139 Height=3139
MaxLeft=-1 MaxLeft=-1
@@ -266,14 +265,14 @@ Create=1
Visible=0 Visible=0
Docked=1 Docked=1
State=0 State=0
Left=78 Left=0
Top=386 Top=362
Width=1898 Width=1898
Height=7164 Height=5370
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1898 ClientWidth=1898
ClientHeight=7164 ClientHeight=5370
TBDockHeight=7164 TBDockHeight=7164
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -289,11 +288,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=6816 Height=6861
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=6816 ClientHeight=6861
TBDockHeight=5964 TBDockHeight=5964
LRDockWidth=2508 LRDockWidth=2508
Dockable=1 Dockable=1
@@ -305,8 +304,8 @@ Create=1
Visible=0 Visible=0
Docked=1 Docked=1
State=0 State=0
Left=-946 Left=-898
Top=1 Top=-137
Width=2844 Width=2844
Height=6200 Height=6200
MaxLeft=-1 MaxLeft=-1
@@ -324,8 +323,8 @@ Create=1
Visible=0 Visible=0
Docked=1 Docked=1
State=0 State=0
Left=-8 Left=-1026
Top=287 Top=-137
Width=273 Width=273
Height=359 Height=359
MaxLeft=-1 MaxLeft=-1
@@ -349,11 +348,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=964 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=964 ClientHeight=1121
TBDockHeight=415 TBDockHeight=415
LRDockWidth=4953 LRDockWidth=4953
Dockable=1 Dockable=1
@@ -368,11 +367,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=964 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=964 ClientHeight=1121
TBDockHeight=213 TBDockHeight=213
LRDockWidth=7406 LRDockWidth=7406
Dockable=1 Dockable=1
@@ -391,11 +390,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=964 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=964 ClientHeight=1121
TBDockHeight=1536 TBDockHeight=1536
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -410,11 +409,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=964 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=964 ClientHeight=1121
TBDockHeight=2063 TBDockHeight=2063
LRDockWidth=3484 LRDockWidth=3484
Dockable=1 Dockable=1
@@ -429,11 +428,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2336 Width=2336
Height=942 Height=1177
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2336 ClientWidth=2336
ClientHeight=942 ClientHeight=1177
TBDockHeight=2321 TBDockHeight=2321
LRDockWidth=2820 LRDockWidth=2820
Dockable=1 Dockable=1
@@ -494,11 +493,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=6816 Height=6861
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=6816 ClientHeight=6861
TBDockHeight=4888 TBDockHeight=4888
LRDockWidth=7148 LRDockWidth=7148
Dockable=1 Dockable=1
@@ -510,8 +509,8 @@ Create=1
Visible=0 Visible=0
Docked=1 Docked=1
State=0 State=0
Left=249 Left=0
Top=709 Top=0
Width=2859 Width=2859
Height=3206 Height=3206
MaxLeft=-1 MaxLeft=-1
@@ -532,11 +531,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=3820 Width=3820
Height=964 Height=1121
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=964 ClientHeight=1121
TBDockHeight=1547 TBDockHeight=1547
LRDockWidth=8742 LRDockWidth=8742
Dockable=1 Dockable=1
@@ -557,12 +556,12 @@ Docked=1
State=0 State=0
Left=0 Left=0
Top=0 Top=0
Width=1773 Width=1898
Height=6738 Height=9170
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1898
ClientHeight=6738 ClientHeight=9170
TBDockHeight=3677 TBDockHeight=3677
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -577,11 +576,11 @@ State=0
Left=0 Left=0
Top=0 Top=0
Width=2000 Width=2000
Height=6816 Height=6861
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=6816 ClientHeight=6861
TBDockHeight=4888 TBDockHeight=4888
LRDockWidth=5305 LRDockWidth=5305
Dockable=1 Dockable=1
@@ -642,14 +641,14 @@ Visible=0
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=23 Top=0
Width=3820 Width=3820
Height=1267 Height=1424
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=3820 ClientWidth=3820
ClientHeight=1267 ClientHeight=1424
TBDockHeight=1267 TBDockHeight=1424
LRDockWidth=3820 LRDockWidth=3820
Dockable=1 Dockable=1
StayOnTop=0 StayOnTop=0
@@ -668,11 +667,11 @@ State=0
Left=0 Left=0
Top=23 Top=23
Width=2000 Width=2000
Height=9170 Height=4529
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=2000 ClientWidth=2000
ClientHeight=9170 ClientHeight=4529
TBDockHeight=7164 TBDockHeight=7164
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1
@@ -690,13 +689,13 @@ Visible=0
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=0 Top=23
Width=1898 Width=1898
Height=7164 Height=9170
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1773 ClientWidth=1898
ClientHeight=6738 ClientHeight=9170
TBDockHeight=7164 TBDockHeight=7164
LRDockWidth=1898 LRDockWidth=1898
Dockable=1 Dockable=1
@@ -706,21 +705,21 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool TabDockClients=StructureView,ClassBrowserTool
[DockSite4] [DockSite4]
HostDockSite=RightTabDock HostDockSite=DockRightPanel
DockSiteType=1 DockSiteType=1
PercentageSizes=1 PercentageSizes=1
Create=1 Create=1
Visible=0 Visible=1
Docked=1 Docked=1
State=0 State=0
Left=0 Left=0
Top=0 Top=454
Width=2000 Width=2000
Height=7164 Height=4339
MaxLeft=-1 MaxLeft=-1
MaxTop=-1 MaxTop=-1
ClientWidth=1875 ClientWidth=2000
ClientHeight=6738 ClientHeight=4339
TBDockHeight=7164 TBDockHeight=7164
LRDockWidth=2000 LRDockWidth=2000
Dockable=1 Dockable=1

Binary file not shown.

View File

@@ -1,9 +1,9 @@
[Stats] [Stats]
EditorSecs=89623 EditorSecs=106281
DesignerSecs=97 DesignerSecs=97
InspectorSecs=323 InspectorSecs=323
CompileSecs=2335332 CompileSecs=2797099
OtherSecs=9189 OtherSecs=10855
StartTime=22/01/2017 10:49:52 StartTime=22/01/2017 10:49:52
RealKeys=0 RealKeys=0
EffectiveKeys=0 EffectiveKeys=0

View File

@@ -64,7 +64,6 @@ type
FVisitor : ICefStringVisitor; FVisitor : ICefStringVisitor;
FPDFPrintcb : ICefPdfPrintCallback; FPDFPrintcb : ICefPdfPrintCallback;
FCookiDeletercb : ICefDeleteCookiesCallback; FCookiDeletercb : ICefDeleteCookiesCallback;
FClientHandler : TVCLClientHandler;
FHandler : ICefClient; FHandler : ICefClient;
FBrowser : ICefBrowser; FBrowser : ICefBrowser;
FBrowserId : Integer; FBrowserId : Integer;
@@ -207,6 +206,8 @@ type
function GetHasDocument : boolean; function GetHasDocument : boolean;
function GetHasView : boolean; function GetHasView : boolean;
function GetHasDevTools : boolean; function GetHasDevTools : boolean;
function GetHasClientHandler : boolean;
function GetHasBrowser : boolean;
function GetCanGoBack : boolean; function GetCanGoBack : boolean;
function GetCanGoForward : boolean; function GetCanGoForward : boolean;
function GetDocumentURL : string; function GetDocumentURL : string;
@@ -372,7 +373,8 @@ type
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure AfterConstruction; override; procedure AfterConstruction; override;
function CreateClientHandler(aIsOSR : boolean) : boolean; function CreateClientHandler(aIsOSR : boolean) : boolean; overload;
function CreateClientHandler(var aClient : ICefClient) : boolean; overload;
procedure CloseBrowser(aForceClose : boolean); procedure CloseBrowser(aForceClose : boolean);
function CreateBrowser(const aBrowserParent : TWinControl = nil; const aWindowName : string = '') : boolean; overload; function CreateBrowser(const aBrowserParent : TWinControl = nil; const aWindowName : string = '') : boolean; overload;
function CreateBrowser(aParentHandle : HWND; aParentRect : TRect; const aWindowName : string = '') : boolean; overload; function CreateBrowser(aParentHandle : HWND; aParentRect : TRect; const aWindowName : string = '') : boolean; overload;
@@ -403,6 +405,7 @@ type
procedure ExecuteJavaScript(const aCode, aScriptURL : ustring; aStartLine : integer = 0); procedure ExecuteJavaScript(const aCode, aScriptURL : ustring; aStartLine : integer = 0);
procedure UpdatePreferences; procedure UpdatePreferences;
procedure SavePreferences(const aFileName : string); procedure SavePreferences(const aFileName : string);
function SetNewBrowserParent(aNewParentHwnd : HWND) : boolean;
procedure ShowDevTools(inspectElementAt: TPoint; const aDevTools : TWinControl); procedure ShowDevTools(inspectElementAt: TPoint; const aDevTools : TWinControl);
procedure CloseDevTools(const aDevTools : TWinControl = nil); procedure CloseDevTools(const aDevTools : TWinControl = nil);
@@ -462,6 +465,8 @@ type
property HasDocument : boolean read GetHasDocument; property HasDocument : boolean read GetHasDocument;
property HasView : boolean read GetHasView; property HasView : boolean read GetHasView;
property HasDevTools : boolean read GetHasDevTools; property HasDevTools : boolean read GetHasDevTools;
property HasClientHandler : boolean read GetHasClientHandler;
property HasBrowser : boolean read GetHasBrowser;
property CanGoBack : boolean read GetCanGoBack; property CanGoBack : boolean read GetCanGoBack;
property CanGoForward : boolean read GetCanGoForward; property CanGoForward : boolean read GetCanGoForward;
property IsPopUp : boolean read GetIsPopUp; property IsPopUp : boolean read GetIsPopUp;
@@ -615,7 +620,6 @@ begin
FInitialized := False; FInitialized := False;
FIsOSR := False; FIsOSR := False;
FDefaultUrl := 'about:blank'; FDefaultUrl := 'about:blank';
FClientHandler := nil;
FHandler := nil; FHandler := nil;
FOptions := nil; FOptions := nil;
FFontOptions := nil; FFontOptions := nil;
@@ -660,28 +664,15 @@ destructor TChromium.Destroy;
begin begin
try try
try try
FBrowser := nil;
FBrowserId := 0;
if (FCompHandle <> 0) then if (FCompHandle <> 0) then
begin begin
DeallocateHWnd(FCompHandle); DeallocateHWnd(FCompHandle);
FCompHandle := 0; FCompHandle := 0;
end; end;
if (FHandler <> nil) then FBrowser := nil;
begin FBrowserId := 0;
(FHandler as ICefClientHandler).Disconnect; FHandler := nil;
FHandler := nil;
end;
if (FClientHandler <> nil) then
begin
FClientHandler.Disconnect;
FClientHandler.ReleaseOtherInstances;
FClientHandler := nil;
end;
FVisitor := nil; FVisitor := nil;
FPDFPrintcb := nil; FPDFPrintcb := nil;
FCookiDeletercb := nil; FCookiDeletercb := nil;
@@ -721,12 +712,11 @@ begin
Result := False; Result := False;
try try
if (FClientHandler = nil) then if (FHandler = nil) then
begin begin
FIsOSR := aIsOsr; FIsOSR := aIsOsr;
FClientHandler := TVCLClientHandler.Create(Self, FIsOSR); FHandler := TVCLClientHandler.Create(Self, FIsOSR);
FHandler := FClientHandler as ICefClient; Result := True;
Result := (FHandler <> nil);
end; end;
except except
on e : exception do on e : exception do
@@ -734,6 +724,17 @@ begin
end; end;
end; end;
function TChromium.CreateClientHandler(var aClient : ICefClient) : boolean;
begin
if CreateClientHandler(True) then
begin
aClient := FHandler;
Result := True;
end
else
Result := False;
end;
procedure TChromium.InitializeEvents; procedure TChromium.InitializeEvents;
begin begin
// ICefClient // ICefClient
@@ -863,6 +864,7 @@ begin
try try
if not(csDesigning in ComponentState) and if not(csDesigning in ComponentState) and
not(FClosing) and
(FBrowser = nil) and (FBrowser = nil) and
(FBrowserId = 0) and (FBrowserId = 0) and
(GlobalCEFApp <> nil) and (GlobalCEFApp <> nil) and
@@ -909,7 +911,7 @@ var
TempURL : TCefString; TempURL : TCefString;
begin begin
TempURL := CefString(aURL); TempURL := CefString(aURL);
Result := cef_browser_host_create_browser(aWindowInfo, FClientHandler.Wrap, @TempURL, aSettings, CefGetData(aContext)) <> 0; Result := cef_browser_host_create_browser(aWindowInfo, FHandler.Wrap, @TempURL, aSettings, CefGetData(aContext)) <> 0;
end; end;
function TChromium.CreateBrowserHostSync(aWindowInfo : PCefWindowInfo; function TChromium.CreateBrowserHostSync(aWindowInfo : PCefWindowInfo;
@@ -921,7 +923,7 @@ var
TempBrowser : PCefBrowser; TempBrowser : PCefBrowser;
begin begin
TempURL := CefString(aURL); TempURL := CefString(aURL);
TempBrowser := cef_browser_host_create_browser_sync(aWindowInfo, FClientHandler.Wrap, @TempURL, aSettings, CefGetData(aContext)); TempBrowser := cef_browser_host_create_browser_sync(aWindowInfo, FHandler.Wrap, @TempURL, aSettings, CefGetData(aContext));
Result := TCefBrowserRef.UnWrap(TempBrowser); Result := TCefBrowserRef.UnWrap(TempBrowser);
end; end;
@@ -1236,6 +1238,16 @@ begin
Result := Initialized and FBrowser.Host.HasDevTools; Result := Initialized and FBrowser.Host.HasDevTools;
end; end;
function TChromium.GetHasClientHandler : boolean;
begin
Result := (FHandler <> nil);
end;
function TChromium.GetHasBrowser : boolean;
begin
Result := (FBrowser <> nil);
end;
function TChromium.GetWindowHandle : THandle; function TChromium.GetWindowHandle : THandle;
begin begin
if Initialized then if Initialized then
@@ -1582,6 +1594,19 @@ begin
end; end;
end; end;
function TChromium.SetNewBrowserParent(aNewParentHwnd : HWND) : boolean;
var
TempHandle : HWND;
begin
Result := False;
if Initialized then
begin
TempHandle := FBrowser.Host.WindowHandle;
Result := (TempHandle <> 0) and (SetParent(TempHandle, aNewParentHwnd) <> 0);
end;
end;
procedure TChromium.SimulateMouseWheel(aDeltaX, aDeltaY : integer); procedure TChromium.SimulateMouseWheel(aDeltaX, aDeltaY : integer);
var var
TempEvent : TCefMouseEvent; TempEvent : TCefMouseEvent;
@@ -1642,7 +1667,6 @@ begin
if (length(FProxyByPassList) > 0) then TempDict.SetString('bypass_list', FProxyByPassList); if (length(FProxyByPassList) > 0) then TempDict.SetString('bypass_list', FProxyByPassList);
end; end;
CEF_PROXYTYPE_PAC_SCRIPT : CEF_PROXYTYPE_PAC_SCRIPT :
begin begin
TempValue.SetString('pac_script'); TempValue.SetString('pac_script');
@@ -2118,9 +2142,22 @@ function TChromium.doOnClose(const browser: ICefBrowser): Boolean;
begin begin
Result := False; Result := False;
if Assigned(FOnClose) then FOnClose(Self, browser, Result);
if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True;
if Assigned(FOnClose) then FOnClose(Self, browser, Result);
end;
procedure TChromium.doOnBeforeClose(const browser: ICefBrowser);
begin
if (browser <> nil) and (FBrowserId = browser.Identifier) then
begin
FInitialized := False;
FBrowser := nil;
FBrowserId := 0;
FHandler := nil;
end;
if Assigned(FOnBeforeClose) then FOnBeforeClose(Self, browser);
end; end;
procedure TChromium.doOnAddressChange(const browser: ICefBrowser; const frame: ICefFrame; const url: ustring); procedure TChromium.doOnAddressChange(const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
@@ -2155,18 +2192,6 @@ begin
if Assigned(FOnBeforeBrowse) then FOnBeforeBrowse(Self, browser, frame, request, isRedirect, Result); if Assigned(FOnBeforeBrowse) then FOnBeforeBrowse(Self, browser, frame, request, isRedirect, Result);
end; end;
procedure TChromium.doOnBeforeClose(const browser: ICefBrowser);
begin
if (browser <> nil) and (FBrowserId = browser.Identifier) then
begin
FInitialized := False;
FBrowser := nil;
FBrowserId := 0;
end;
if Assigned(FOnBeforeClose) then FOnBeforeClose(Self, browser);
end;
procedure TChromium.doOnBeforeContextMenu(const browser : ICefBrowser; procedure TChromium.doOnBeforeContextMenu(const browser : ICefBrowser;
const frame : ICefFrame; const frame : ICefFrame;
const params : ICefContextMenuParams; const params : ICefContextMenuParams;

View File

@@ -55,6 +55,28 @@ uses
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes; uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
type type
TCefClientRef = class(TCefBaseRefCountedRef, ICefClient)
protected
function GetContextMenuHandler: ICefContextMenuHandler; virtual;
function GetDialogHandler: ICefDialogHandler; virtual;
function GetDisplayHandler: ICefDisplayHandler; virtual;
function GetDownloadHandler: ICefDownloadHandler; virtual;
function GetDragHandler: ICefDragHandler; virtual;
function GetFindHandler: ICefFindHandler; virtual;
function GetFocusHandler: ICefFocusHandler; virtual;
function GetGeolocationHandler: ICefGeolocationHandler; virtual;
function GetJsdialogHandler: ICefJsdialogHandler; virtual;
function GetKeyboardHandler: ICefKeyboardHandler; virtual;
function GetLifeSpanHandler: ICefLifeSpanHandler; virtual;
function GetRenderHandler: ICefRenderHandler; virtual;
function GetLoadHandler: ICefLoadHandler; virtual;
function GetRequestHandler: ICefRequestHandler; virtual;
function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; virtual;
public
class function UnWrap(data: Pointer): ICefClient;
end;
TCefClientOwn = class(TCefBaseRefCountedOwn, ICefClient) TCefClientOwn = class(TCefBaseRefCountedOwn, ICefClient)
protected protected
function GetContextMenuHandler: ICefContextMenuHandler; virtual; function GetContextMenuHandler: ICefContextMenuHandler; virtual;
@@ -77,7 +99,7 @@ type
constructor Create; virtual; constructor Create; virtual;
end; end;
TCustomClientHandler = class(TCefClientOwn, ICefClientHandler) TCustomClientHandler = class(TCefClientOwn)
protected protected
FEvents : IChromiumEvents; FEvents : IChromiumEvents;
FLoadHandler : ICefLoadHandler; FLoadHandler : ICefLoadHandler;
@@ -112,7 +134,7 @@ type
function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; override; function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; override;
public public
constructor Create(const events: IChromiumEvents; renderer: Boolean); reintroduce; virtual; constructor Create(const events: IChromiumEvents; renderer: Boolean); reintroduce; virtual;
procedure Disconnect; destructor Destroy; override;
end; end;
TVCLClientHandler = class(TCustomClientHandler) TVCLClientHandler = class(TCustomClientHandler)
@@ -123,7 +145,6 @@ type
public public
constructor Create(const crm: IChromiumEvents; renderer: Boolean); reintroduce; constructor Create(const crm: IChromiumEvents; renderer: Boolean); reintroduce;
destructor Destroy; override; destructor Destroy; override;
procedure ReleaseOtherInstances;
property MultithreadApp : boolean read GetMultithreadApp; property MultithreadApp : boolean read GetMultithreadApp;
property ExternalMessagePump : boolean read GetExternalMessagePump; property ExternalMessagePump : boolean read GetExternalMessagePump;
@@ -152,91 +173,204 @@ var
looping : Boolean = False; looping : Boolean = False;
CefTimer : UINT = 0; CefTimer : UINT = 0;
function cef_client_get_context_menu_handler(self: PCefClient): PCefContextMenuHandler; stdcall; // ******************************************************
// ****************** TCefClientRef *********************
// ******************************************************
class function TCefClientRef.UnWrap(data: Pointer): ICefClient;
begin
if (data <> nil) then
Result := Create(data) as ICefClient
else
Result := nil;
end;
function TCefClientRef.GetContextMenuHandler: ICefContextMenuHandler;
begin
Result := nil;
end;
function TCefClientRef.GetDialogHandler: ICefDialogHandler;
begin
Result := nil;
end;
function TCefClientRef.GetDisplayHandler: ICefDisplayHandler;
begin
Result := nil;
end;
function TCefClientRef.GetDownloadHandler: ICefDownloadHandler;
begin
Result := nil;
end;
function TCefClientRef.GetDragHandler: ICefDragHandler;
begin
Result := nil;
end;
function TCefClientRef.GetFindHandler: ICefFindHandler;
begin
Result := nil;
end;
function TCefClientRef.GetFocusHandler: ICefFocusHandler;
begin
Result := nil;
end;
function TCefClientRef.GetGeolocationHandler: ICefGeolocationHandler;
begin
Result := nil;
end;
function TCefClientRef.GetJsdialogHandler: ICefJsDialogHandler;
begin
Result := nil;
end;
function TCefClientRef.GetKeyboardHandler: ICefKeyboardHandler;
begin
Result := nil;
end;
function TCefClientRef.GetLifeSpanHandler: ICefLifeSpanHandler;
begin
Result := nil;
end;
function TCefClientRef.GetLoadHandler: ICefLoadHandler;
begin
Result := nil;
end;
function TCefClientRef.GetRenderHandler: ICefRenderHandler;
begin
Result := nil;
end;
function TCefClientRef.GetRequestHandler: ICefRequestHandler;
begin
Result := nil;
end;
function TCefClientRef.OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean;
begin
Result := False;
end;
// ******************************************************
// ****************** TCefClientOwn *********************
// ******************************************************
procedure CefDoMessageLoopWork;
begin
if looping then Exit;
if (CefInstances > 0) then
begin
looping := True;
try
cef_do_message_loop_work;
finally
looping := False;
end;
end;
end;
procedure TimerProc(hwnd: HWND; uMsg: UINT; idEvent: Pointer; dwTime: DWORD); stdcall;
begin
CefDoMessageLoopWork;
end;
function cef_client_own_get_context_menu_handler(self: PCefClient): PCefContextMenuHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetContextMenuHandler); Result := CefGetData(GetContextMenuHandler);
end; end;
function cef_client_get_dialog_handler(self: PCefClient): PCefDialogHandler; stdcall; function cef_client_own_get_dialog_handler(self: PCefClient): PCefDialogHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetDialogHandler); Result := CefGetData(GetDialogHandler);
end; end;
function cef_client_get_display_handler(self: PCefClient): PCefDisplayHandler; stdcall; function cef_client_own_get_display_handler(self: PCefClient): PCefDisplayHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetDisplayHandler); Result := CefGetData(GetDisplayHandler);
end; end;
function cef_client_get_download_handler(self: PCefClient): PCefDownloadHandler; stdcall; function cef_client_own_get_download_handler(self: PCefClient): PCefDownloadHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetDownloadHandler); Result := CefGetData(GetDownloadHandler);
end; end;
function cef_client_get_drag_handler(self: PCefClient): PCefDragHandler; stdcall; function cef_client_own_get_drag_handler(self: PCefClient): PCefDragHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetDragHandler); Result := CefGetData(GetDragHandler);
end; end;
function cef_client_get_find_handler(self: PCefClient): PCefFindHandler; stdcall; function cef_client_own_get_find_handler(self: PCefClient): PCefFindHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetFindHandler); Result := CefGetData(GetFindHandler);
end; end;
function cef_client_get_focus_handler(self: PCefClient): PCefFocusHandler; stdcall; function cef_client_own_get_focus_handler(self: PCefClient): PCefFocusHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetFocusHandler); Result := CefGetData(GetFocusHandler);
end; end;
function cef_client_get_geolocation_handler(self: PCefClient): PCefGeolocationHandler; stdcall; function cef_client_own_get_geolocation_handler(self: PCefClient): PCefGeolocationHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetGeolocationHandler); Result := CefGetData(GetGeolocationHandler);
end; end;
function cef_client_get_jsdialog_handler(self: PCefClient): PCefJsDialogHandler; stdcall; function cef_client_own_get_jsdialog_handler(self: PCefClient): PCefJsDialogHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetJsdialogHandler); Result := CefGetData(GetJsdialogHandler);
end; end;
function cef_client_get_keyboard_handler(self: PCefClient): PCefKeyboardHandler; stdcall; function cef_client_own_get_keyboard_handler(self: PCefClient): PCefKeyboardHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetKeyboardHandler); Result := CefGetData(GetKeyboardHandler);
end; end;
function cef_client_get_life_span_handler(self: PCefClient): PCefLifeSpanHandler; stdcall; function cef_client_own_get_life_span_handler(self: PCefClient): PCefLifeSpanHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetLifeSpanHandler); Result := CefGetData(GetLifeSpanHandler);
end; end;
function cef_client_get_load_handler(self: PCefClient): PCefLoadHandler; stdcall; function cef_client_own_get_load_handler(self: PCefClient): PCefLoadHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetLoadHandler); Result := CefGetData(GetLoadHandler);
end; end;
function cef_client_get_get_render_handler(self: PCefClient): PCefRenderHandler; stdcall; function cef_client_own_get_get_render_handler(self: PCefClient): PCefRenderHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetRenderHandler); Result := CefGetData(GetRenderHandler);
end; end;
function cef_client_get_request_handler(self: PCefClient): PCefRequestHandler; stdcall; function cef_client_own_get_request_handler(self: PCefClient): PCefRequestHandler; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
Result := CefGetData(GetRequestHandler); Result := CefGetData(GetRequestHandler);
end; end;
function cef_client_on_process_message_received(self: PCefClient; browser: PCefBrowser; function cef_client_own_on_process_message_received(self: PCefClient; browser: PCefBrowser;
source_process: TCefProcessId; message: PCefProcessMessage): Integer; stdcall; source_process: TCefProcessId; message: PCefProcessMessage): Integer; stdcall;
begin begin
with TCefClientOwn(CefGetObject(self)) do with TCefClientOwn(CefGetObject(self)) do
@@ -249,21 +383,21 @@ begin
with PCefClient(FData)^ do with PCefClient(FData)^ do
begin begin
get_context_menu_handler := cef_client_get_context_menu_handler; get_context_menu_handler := cef_client_own_get_context_menu_handler;
get_dialog_handler := cef_client_get_dialog_handler; get_dialog_handler := cef_client_own_get_dialog_handler;
get_display_handler := cef_client_get_display_handler; get_display_handler := cef_client_own_get_display_handler;
get_download_handler := cef_client_get_download_handler; get_download_handler := cef_client_own_get_download_handler;
get_drag_handler := cef_client_get_drag_handler; get_drag_handler := cef_client_own_get_drag_handler;
get_find_handler := cef_client_get_find_handler; get_find_handler := cef_client_own_get_find_handler;
get_focus_handler := cef_client_get_focus_handler; get_focus_handler := cef_client_own_get_focus_handler;
get_geolocation_handler := cef_client_get_geolocation_handler; get_geolocation_handler := cef_client_own_get_geolocation_handler;
get_jsdialog_handler := cef_client_get_jsdialog_handler; get_jsdialog_handler := cef_client_own_get_jsdialog_handler;
get_keyboard_handler := cef_client_get_keyboard_handler; get_keyboard_handler := cef_client_own_get_keyboard_handler;
get_life_span_handler := cef_client_get_life_span_handler; get_life_span_handler := cef_client_own_get_life_span_handler;
get_load_handler := cef_client_get_load_handler; get_load_handler := cef_client_own_get_load_handler;
get_render_handler := cef_client_get_get_render_handler; get_render_handler := cef_client_own_get_get_render_handler;
get_request_handler := cef_client_get_request_handler; get_request_handler := cef_client_own_get_request_handler;
on_process_message_received := cef_client_on_process_message_received; on_process_message_received := cef_client_own_on_process_message_received;
end; end;
end; end;
@@ -342,7 +476,11 @@ begin
Result := False; Result := False;
end; end;
// TCustomClientHandler
// ******************************************************
// *************** TCustomClientHandler *****************
// ******************************************************
constructor TCustomClientHandler.Create(const events: IChromiumEvents; renderer: Boolean); constructor TCustomClientHandler.Create(const events: IChromiumEvents; renderer: Boolean);
begin begin
@@ -361,17 +499,16 @@ begin
FJsDialogHandler := TCustomJsDialogHandler.Create(events); FJsDialogHandler := TCustomJsDialogHandler.Create(events);
FLifeSpanHandler := TCustomLifeSpanHandler.Create(events); FLifeSpanHandler := TCustomLifeSpanHandler.Create(events);
FRequestHandler := TCustomRequestHandler.Create(events); FRequestHandler := TCustomRequestHandler.Create(events);
FDragHandler := TCustomDragHandler.Create(events);
FFindHandler := TCustomFindHandler.Create(events);
if renderer then if renderer then
FRenderHandler := TCustomRenderHandler.Create(events) FRenderHandler := TCustomRenderHandler.Create(events)
else else
FRenderHandler := nil; FRenderHandler := nil;
FDragHandler := TCustomDragHandler.Create(events);
FFindHandler := TCustomFindHandler.Create(events);
end; end;
procedure TCustomClientHandler.Disconnect; destructor TCustomClientHandler.Destroy;
begin begin
FEvents := nil; FEvents := nil;
FLoadHandler := nil; FLoadHandler := nil;
@@ -388,6 +525,8 @@ begin
FRenderHandler := nil; FRenderHandler := nil;
FDragHandler := nil; FDragHandler := nil;
FFindHandler := nil; FFindHandler := nil;
inherited Destroy;
end; end;
function TCustomClientHandler.GetContextMenuHandler: ICefContextMenuHandler; function TCustomClientHandler.GetContextMenuHandler: ICefContextMenuHandler;
@@ -468,28 +607,11 @@ begin
Result := False; Result := False;
end; end;
// TVCLClientHandler
procedure CefDoMessageLoopWork; // ******************************************************
begin // **************** TVCLClientHandler *******************
if looping then Exit; // ******************************************************
if (CefInstances > 0) then
begin
looping := True;
try
cef_do_message_loop_work;
finally
looping := False;
end;
end;
end;
procedure TimerProc(hwnd: HWND; uMsg: UINT; idEvent: Pointer; dwTime: DWORD); stdcall;
begin
CefDoMessageLoopWork;
end;
constructor TVCLClientHandler.Create(const crm: IChromiumEvents; renderer : Boolean); constructor TVCLClientHandler.Create(const crm: IChromiumEvents; renderer : Boolean);
begin begin
@@ -525,19 +647,6 @@ begin
end; end;
end; end;
procedure TVCLClientHandler.ReleaseOtherInstances;
var
i : integer;
begin
i := pred(self.FRefCount);
while (i >= 1) do
begin
self._Release;
dec(i);
end;
end;
function TVCLClientHandler.GetMultithreadApp : boolean; function TVCLClientHandler.GetMultithreadApp : boolean;
begin begin
Result := True; Result := True;

View File

@@ -71,6 +71,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -160,14 +161,22 @@ end;
constructor TCustomContextMenuHandler.Create(const events: IChromiumEvents); constructor TCustomContextMenuHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomContextMenuHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomContextMenuHandler.OnBeforeContextMenu( procedure TCustomContextMenuHandler.OnBeforeContextMenu(
const browser: ICefBrowser; const frame: ICefFrame; const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel); const params: ICefContextMenuParams; const model: ICefMenuModel);
begin begin
FEvent.doOnBeforeContextMenu(browser, frame, params, model); if (FEvent <> nil) then FEvent.doOnBeforeContextMenu(browser, frame, params, model);
end; end;
function TCustomContextMenuHandler.OnContextMenuCommand( function TCustomContextMenuHandler.OnContextMenuCommand(
@@ -175,14 +184,15 @@ function TCustomContextMenuHandler.OnContextMenuCommand(
const params: ICefContextMenuParams; commandId: Integer; const params: ICefContextMenuParams; commandId: Integer;
eventFlags: TCefEventFlags): Boolean; eventFlags: TCefEventFlags): Boolean;
begin begin
Result := FEvent.doOnContextMenuCommand(browser, frame, params, commandId, if (FEvent <> nil) then
eventFlags); Result := FEvent.doOnContextMenuCommand(browser, frame, params, commandId, eventFlags)
else
Result := inherited;
end; end;
procedure TCustomContextMenuHandler.OnContextMenuDismissed( procedure TCustomContextMenuHandler.OnContextMenuDismissed(const browser: ICefBrowser; const frame: ICefFrame);
const browser: ICefBrowser; const frame: ICefFrame);
begin begin
FEvent.doOnContextMenuDismissed(browser, frame); if (FEvent <> nil) then FEvent.doOnContextMenuDismissed(browser, frame);
end; end;
end. end.

View File

@@ -71,6 +71,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -127,9 +128,19 @@ begin
FEvent := events; FEvent := events;
end; end;
destructor TCustomDialogHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
function TCustomDialogHandler.OnFileDialog(const browser: ICefBrowser; mode: TCefFileDialogMode; const title, defaultFilePath: ustring; acceptFilters: TStrings; selectedAcceptFilter: Integer; const callback: ICefFileDialogCallback): Boolean; function TCustomDialogHandler.OnFileDialog(const browser: ICefBrowser; mode: TCefFileDialogMode; const title, defaultFilePath: ustring; acceptFilters: TStrings; selectedAcceptFilter: Integer; const callback: ICefFileDialogCallback): Boolean;
begin begin
Result := FEvent.doOnFileDialog(browser, mode, title, defaultFilePath, acceptFilters, selectedAcceptFilter, callback); if (FEvent <> nil) then
Result := FEvent.doOnFileDialog(browser, mode, title, defaultFilePath, acceptFilters, selectedAcceptFilter, callback)
else
Result := inherited;
end; end;
end. end.

View File

@@ -82,6 +82,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -227,49 +228,58 @@ end;
constructor TCustomDisplayHandler.Create(const events: IChromiumEvents); constructor TCustomDisplayHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomDisplayHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomDisplayHandler.OnAddressChange(const browser: ICefBrowser; procedure TCustomDisplayHandler.OnAddressChange(const browser: ICefBrowser;
const frame: ICefFrame; const url: ustring); const frame: ICefFrame; const url: ustring);
begin begin
FEvent.doOnAddressChange(browser, frame, url); if (FEvent <> nil) then FEvent.doOnAddressChange(browser, frame, url);
end; end;
function TCustomDisplayHandler.OnConsoleMessage(const browser: ICefBrowser; function TCustomDisplayHandler.OnConsoleMessage(const browser: ICefBrowser;
const message, source: ustring; line: Integer): Boolean; const message, source: ustring; line: Integer): Boolean;
begin begin
Result := FEvent.doOnConsoleMessage(browser, message, source, line); if (FEvent <> nil) then
Result := FEvent.doOnConsoleMessage(browser, message, source, line)
else
Result := inherited;
end; end;
procedure TCustomDisplayHandler.OnFaviconUrlChange(const browser: ICefBrowser; procedure TCustomDisplayHandler.OnFaviconUrlChange(const browser: ICefBrowser; iconUrls: TStrings);
iconUrls: TStrings);
begin begin
FEvent.doOnFaviconUrlChange(browser, iconUrls); if (FEvent <> nil) then FEvent.doOnFaviconUrlChange(browser, iconUrls);
end; end;
procedure TCustomDisplayHandler.OnFullScreenModeChange( procedure TCustomDisplayHandler.OnFullScreenModeChange(const browser: ICefBrowser; fullscreen: Boolean);
const browser: ICefBrowser; fullscreen: Boolean);
begin begin
FEvent.doOnFullScreenModeChange(browser, fullscreen); if (FEvent <> nil) then FEvent.doOnFullScreenModeChange(browser, fullscreen);
end; end;
procedure TCustomDisplayHandler.OnStatusMessage(const browser: ICefBrowser; procedure TCustomDisplayHandler.OnStatusMessage(const browser: ICefBrowser; const value: ustring);
const value: ustring);
begin begin
FEvent.doOnStatusMessage(browser, value); if (FEvent <> nil) then FEvent.doOnStatusMessage(browser, value);
end; end;
procedure TCustomDisplayHandler.OnTitleChange(const browser: ICefBrowser; procedure TCustomDisplayHandler.OnTitleChange(const browser: ICefBrowser; const title: ustring);
const title: ustring);
begin begin
FEvent.doOnTitleChange(browser, title); if (FEvent <> nil) then FEvent.doOnTitleChange(browser, title);
end; end;
function TCustomDisplayHandler.OnTooltip(const browser: ICefBrowser; function TCustomDisplayHandler.OnTooltip(const browser: ICefBrowser; var text: ustring): Boolean;
var text: ustring): Boolean;
begin begin
Result := FEvent.doOnTooltip(browser, text); if (FEvent <> nil) then
Result := FEvent.doOnTooltip(browser, text)
else
Result := inherited;
end; end;
end. end.

View File

@@ -68,6 +68,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -124,21 +125,31 @@ end;
constructor TCustomDownloadHandler.Create(const events: IChromiumEvents); constructor TCustomDownloadHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomDownloadHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomDownloadHandler.OnBeforeDownload(const browser: ICefBrowser; procedure TCustomDownloadHandler.OnBeforeDownload(const browser: ICefBrowser;
const downloadItem: ICefDownloadItem; const suggestedName: ustring; const downloadItem: ICefDownloadItem; const suggestedName: ustring;
const callback: ICefBeforeDownloadCallback); const callback: ICefBeforeDownloadCallback);
begin begin
FEvent.doOnBeforeDownload(browser, downloadItem, suggestedName, callback); if (FEvent <> nil) then
FEvent.doOnBeforeDownload(browser, downloadItem, suggestedName, callback);
end; end;
procedure TCustomDownloadHandler.OnDownloadUpdated(const browser: ICefBrowser; procedure TCustomDownloadHandler.OnDownloadUpdated(const browser: ICefBrowser;
const downloadItem: ICefDownloadItem; const downloadItem: ICefDownloadItem;
const callback: ICefDownloadItemCallback); const callback: ICefDownloadItemCallback);
begin begin
FEvent.doOnDownloadUpdated(browser, downloadItem, callback); if (FEvent <> nil) then
FEvent.doOnDownloadUpdated(browser, downloadItem, callback);
end; end;
end. end.

View File

@@ -68,6 +68,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -121,14 +122,25 @@ begin
FEvent := events; FEvent := events;
end; end;
destructor TCustomDragHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
function TCustomDragHandler.OnDragEnter(const browser: ICefBrowser; const dragData: ICefDragData; mask: TCefDragOperations): Boolean; function TCustomDragHandler.OnDragEnter(const browser: ICefBrowser; const dragData: ICefDragData; mask: TCefDragOperations): Boolean;
begin begin
Result := FEvent.doOnDragEnter(browser, dragData, mask); if (FEvent <> nil) then
Result := FEvent.doOnDragEnter(browser, dragData, mask)
else
Result := inherited;
end; end;
procedure TCustomDragHandler.OnDraggableRegionsChanged(const browser: ICefBrowser; regionsCount: NativeUInt; regions: PCefDraggableRegionArray); procedure TCustomDragHandler.OnDraggableRegionsChanged(const browser: ICefBrowser; regionsCount: NativeUInt; regions: PCefDraggableRegionArray);
begin begin
FEvent.doOnDraggableRegionsChanged(browser, regionsCount, regions); if (FEvent <> nil) then
FEvent.doOnDraggableRegionsChanged(browser, regionsCount, regions);
end; end;
end. end.

View File

@@ -66,6 +66,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -95,9 +96,17 @@ begin
FEvent := events; FEvent := events;
end; end;
destructor TCustomFindHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomFindHandler.OnFindResult(const browser: ICefBrowser; identifier, count: Integer; const selectionRect: PCefRect; activeMatchOrdinal: Integer; finalUpdate: Boolean); procedure TCustomFindHandler.OnFindResult(const browser: ICefBrowser; identifier, count: Integer; const selectionRect: PCefRect; activeMatchOrdinal: Integer; finalUpdate: Boolean);
begin begin
FEvent.doOnFindResult(browser, identifier, count, selectionRect, activeMatchOrdinal, finalUpdate); if (FEvent <> nil) then
FEvent.doOnFindResult(browser, identifier, count, selectionRect, activeMatchOrdinal, finalUpdate);
end; end;
end. end.

View File

@@ -70,6 +70,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -126,22 +127,33 @@ end;
constructor TCustomFocusHandler.Create(const events: IChromiumEvents); constructor TCustomFocusHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomFocusHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomFocusHandler.OnGotFocus(const browser: ICefBrowser); procedure TCustomFocusHandler.OnGotFocus(const browser: ICefBrowser);
begin begin
FEvent.doOnGotFocus(browser); if (FEvent <> nil) then FEvent.doOnGotFocus(browser);
end; end;
function TCustomFocusHandler.OnSetFocus(const browser: ICefBrowser; source: TCefFocusSource): Boolean; function TCustomFocusHandler.OnSetFocus(const browser: ICefBrowser; source: TCefFocusSource): Boolean;
begin begin
Result := FEvent.doOnSetFocus(browser, source); if (FEvent <> nil) then
Result := FEvent.doOnSetFocus(browser, source)
else
Result := inherited;
end; end;
procedure TCustomFocusHandler.OnTakeFocus(const browser: ICefBrowser; next: Boolean); procedure TCustomFocusHandler.OnTakeFocus(const browser: ICefBrowser; next: Boolean);
begin begin
FEvent.doOnTakeFocus(browser, next); if (FEvent <> nil) then FEvent.doOnTakeFocus(browser, next);
end; end;

View File

@@ -68,6 +68,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -122,19 +123,31 @@ end;
constructor TCustomGeolocationHandler.Create(const events: IChromiumEvents); constructor TCustomGeolocationHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomGeolocationHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomGeolocationHandler.OnCancelGeolocationPermission(const browser: ICefBrowser; requestId: Integer); procedure TCustomGeolocationHandler.OnCancelGeolocationPermission(const browser: ICefBrowser; requestId: Integer);
begin begin
FEvent.doOnCancelGeolocationPermission(browser, requestId); if (FEvent <> nil) then
FEvent.doOnCancelGeolocationPermission(browser, requestId);
end; end;
function TCustomGeolocationHandler.OnRequestGeolocationPermission( function TCustomGeolocationHandler.OnRequestGeolocationPermission(
const browser: ICefBrowser; const requestingUrl: ustring; requestId: Integer; const browser: ICefBrowser; const requestingUrl: ustring; requestId: Integer;
const callback: ICefGeolocationCallback): Boolean; const callback: ICefGeolocationCallback): Boolean;
begin begin
Result := FEvent.doOnRequestGeolocationPermission(browser, requestingUrl, requestId, callback); if (FEvent <> nil) then
Result := FEvent.doOnRequestGeolocationPermission(browser, requestingUrl, requestId, callback)
else
Result := inherited;
end; end;
end. end.

View File

@@ -79,7 +79,6 @@ type
ICefSslInfo = interface; ICefSslInfo = interface;
ICefSSLStatus = interface; ICefSSLStatus = interface;
ICefImage = interface; ICefImage = interface;
ICefClientHandler = interface;
IChromiumEvents = interface; IChromiumEvents = interface;
ICefThread = interface; ICefThread = interface;
ICefWaitableEvent = interface; ICefWaitableEvent = interface;
@@ -1753,11 +1752,6 @@ type
const selectionRect: PCefRect; activeMatchOrdinal: Integer; finalUpdate: Boolean); const selectionRect: PCefRect; activeMatchOrdinal: Integer; finalUpdate: Boolean);
end; end;
ICefClientHandler = interface
['{E76F6888-D9C3-4FCE-9C23-E89659820A36}']
procedure Disconnect;
end;
implementation implementation
end. end.

View File

@@ -72,6 +72,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -161,19 +162,30 @@ end;
constructor TCustomJsDialogHandler.Create(const events: IChromiumEvents); constructor TCustomJsDialogHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomJsDialogHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
function TCustomJsDialogHandler.OnBeforeUnloadDialog(const browser: ICefBrowser; function TCustomJsDialogHandler.OnBeforeUnloadDialog(const browser: ICefBrowser;
const messageText: ustring; isReload: Boolean; const messageText: ustring; isReload: Boolean;
const callback: ICefJsDialogCallback): Boolean; const callback: ICefJsDialogCallback): Boolean;
begin begin
Result := FEvent.doOnBeforeUnloadDialog(browser, messageText, isReload, callback); if (FEvent <> nil) then
Result := FEvent.doOnBeforeUnloadDialog(browser, messageText, isReload, callback)
else
Result := inherited;
end; end;
procedure TCustomJsDialogHandler.OnDialogClosed(const browser: ICefBrowser); procedure TCustomJsDialogHandler.OnDialogClosed(const browser: ICefBrowser);
begin begin
FEvent.doOnDialogClosed(browser); if (FEvent <> nil) then FEvent.doOnDialogClosed(browser);
end; end;
function TCustomJsDialogHandler.OnJsdialog(const browser: ICefBrowser; function TCustomJsDialogHandler.OnJsdialog(const browser: ICefBrowser;
@@ -182,13 +194,15 @@ function TCustomJsDialogHandler.OnJsdialog(const browser: ICefBrowser;
const callback: ICefJsDialogCallback; const callback: ICefJsDialogCallback;
out suppressMessage: Boolean): Boolean; out suppressMessage: Boolean): Boolean;
begin begin
Result := FEvent.doOnJsdialog(browser, originUrl, dialogType, if (FEvent <> nil) then
messageText, defaultPromptText, callback, suppressMessage); Result := FEvent.doOnJsdialog(browser, originUrl, dialogType, messageText, defaultPromptText, callback, suppressMessage)
else
Result := inherited;
end; end;
procedure TCustomJsDialogHandler.OnResetDialogState(const browser: ICefBrowser); procedure TCustomJsDialogHandler.OnResetDialogState(const browser: ICefBrowser);
begin begin
FEvent.doOnResetDialogState(browser); if (FEvent <> nil) then FEvent.doOnResetDialogState(browser);
end; end;
end. end.

View File

@@ -68,6 +68,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -120,20 +121,34 @@ end;
constructor TCustomKeyboardHandler.Create(const events: IChromiumEvents); constructor TCustomKeyboardHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomKeyboardHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
function TCustomKeyboardHandler.OnKeyEvent(const browser: ICefBrowser; function TCustomKeyboardHandler.OnKeyEvent(const browser: ICefBrowser;
const event: PCefKeyEvent; osEvent: TCefEventHandle): Boolean; const event: PCefKeyEvent; osEvent: TCefEventHandle): Boolean;
begin begin
Result := FEvent.doOnKeyEvent(browser, event, osEvent); if (FEvent <> nil) then
Result := FEvent.doOnKeyEvent(browser, event, osEvent)
else
Result := inherited;
end; end;
function TCustomKeyboardHandler.OnPreKeyEvent(const browser: ICefBrowser; function TCustomKeyboardHandler.OnPreKeyEvent(const browser: ICefBrowser;
const event: PCefKeyEvent; osEvent: TCefEventHandle; const event: PCefKeyEvent; osEvent: TCefEventHandle;
out isKeyboardShortcut: Boolean): Boolean; out isKeyboardShortcut: Boolean): Boolean;
begin begin
Result := FEvent.doOnPreKeyEvent(browser, event, osEvent, isKeyboardShortcut); if (FEvent <> nil) then
Result := FEvent.doOnPreKeyEvent(browser, event, osEvent, isKeyboardShortcut)
else
Result := inherited;
end; end;
end. end.

View File

@@ -72,6 +72,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -79,39 +80,54 @@ implementation
uses uses
uCEFMiscFunctions, uCEFLibFunctions, uCEFClient, uCEFBrowser, uCEFFrame; uCEFMiscFunctions, uCEFLibFunctions, uCEFClient, uCEFBrowser, uCEFFrame;
function cef_life_span_handler_on_before_popup(self: PCefLifeSpanHandler; function cef_life_span_handler_on_before_popup( self : PCefLifeSpanHandler;
browser: PCefBrowser; frame: PCefFrame; const target_url, target_frame_name: PCefString; browser : PCefBrowser;
target_disposition: TCefWindowOpenDisposition; user_gesture: Integer; frame : PCefFrame;
const popupFeatures: PCefPopupFeatures; windowInfo: PCefWindowInfo; var client: PCefClient; const target_url : PCefString;
settings: PCefBrowserSettings; no_javascript_access: PInteger): Integer; stdcall; const target_frame_name : PCefString;
target_disposition : TCefWindowOpenDisposition;
user_gesture : Integer;
const popupFeatures : PCefPopupFeatures;
windowInfo : PCefWindowInfo;
var client : PCefClient;
settings : PCefBrowserSettings;
no_javascript_access : PInteger): Integer; stdcall;
var var
_url, _frame: ustring; TempURL : ustring;
_client: ICefClient; TempFrame : ustring;
_nojs: Boolean; TempClient : ICefClient;
TempOldCli : pointer;
TempNoJS : Boolean;
begin begin
_url := CefString(target_url); TempURL := CefString(target_url);
_frame := CefString(target_frame_name); TempFrame := CefString(target_frame_name);
_client := TCefClientOwn(CefGetObject(client)) as ICefClient; TempNoJS := (no_javascript_access^ <> 0);
_nojs := no_javascript_access^ <> 0; TempClient := TCefClientRef.UnWrap(client);
TempOldCli := pointer(TempClient);
with TCefLifeSpanHandlerOwn(CefGetObject(self)) do with TCefLifeSpanHandlerOwn(CefGetObject(self)) do
Result := Ord(OnBeforePopup( Result := Ord(OnBeforePopup(TCefBrowserRef.UnWrap(browser),
TCefBrowserRef.UnWrap(browser), TCefFrameRef.UnWrap(frame),
TCefFrameRef.UnWrap(frame), TempURL,
_url, TempFrame,
_frame, target_disposition,
target_disposition, user_gesture <> 0,
user_gesture <> 0, popupFeatures^,
popupFeatures^, windowInfo^,
windowInfo^, TempClient,
_client, settings^,
settings^, TempNoJS));
_nojs
)); CefStringSet(target_url, TempURL);
CefStringSet(target_url, _url); CefStringSet(target_frame_name, TempFrame);
CefStringSet(target_frame_name, _frame);
client := CefGetData(_client); no_javascript_access^ := Ord(TempNoJS);
no_javascript_access^ := Ord(_nojs);
_client := nil; if (TempClient = nil) then
client := nil
else
if (TempOldCli <> pointer(TempClient)) then
client := CefGetData(TempClient);
end; end;
procedure cef_life_span_handler_on_after_created(self: PCefLifeSpanHandler; browser: PCefBrowser); stdcall; procedure cef_life_span_handler_on_after_created(self: PCefLifeSpanHandler; browser: PCefBrowser); stdcall;
@@ -135,13 +151,14 @@ end;
constructor TCefLifeSpanHandlerOwn.Create; constructor TCefLifeSpanHandlerOwn.Create;
begin begin
inherited CreateData(SizeOf(TCefLifeSpanHandler)); inherited CreateData(SizeOf(TCefLifeSpanHandler));
with PCefLifeSpanHandler(FData)^ do with PCefLifeSpanHandler(FData)^ do
begin begin
on_before_popup := cef_life_span_handler_on_before_popup; on_before_popup := cef_life_span_handler_on_before_popup;
on_after_created := cef_life_span_handler_on_after_created; on_after_created := cef_life_span_handler_on_after_created;
on_before_close := cef_life_span_handler_on_before_close; on_before_close := cef_life_span_handler_on_before_close;
do_close := cef_life_span_handler_do_close; do_close := cef_life_span_handler_do_close;
end; end;
end; end;
procedure TCefLifeSpanHandlerOwn.OnAfterCreated(const browser: ICefBrowser); procedure TCefLifeSpanHandlerOwn.OnAfterCreated(const browser: ICefBrowser);
@@ -174,25 +191,35 @@ end;
constructor TCustomLifeSpanHandler.Create(const events: IChromiumEvents); constructor TCustomLifeSpanHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomLifeSpanHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
function TCustomLifeSpanHandler.DoClose(const browser: ICefBrowser): Boolean; function TCustomLifeSpanHandler.DoClose(const browser: ICefBrowser): Boolean;
begin begin
Result := FEvent.doOnClose(browser); if (FEvent <> nil) then
Result := FEvent.doOnClose(browser)
else
Result := inherited;
end; end;
procedure TCustomLifeSpanHandler.OnAfterCreated(const browser: ICefBrowser); procedure TCustomLifeSpanHandler.OnAfterCreated(const browser: ICefBrowser);
begin begin
FEvent.doOnAfterCreated(browser); if (FEvent <> nil) then FEvent.doOnAfterCreated(browser);
end; end;
procedure TCustomLifeSpanHandler.OnBeforeClose(const browser: ICefBrowser); procedure TCustomLifeSpanHandler.OnBeforeClose(const browser: ICefBrowser);
begin begin
FEvent.doOnBeforeClose(browser); if (FEvent <> nil) then FEvent.doOnBeforeClose(browser);
end; end;
function TCustomLifeSpanHandler.OnBeforePopup(const browser: ICefBrowser; function TCustomLifeSpanHandler.OnBeforePopup(const browser: ICefBrowser;
const frame: ICefFrame; const targetUrl, targetFrameName: ustring; const frame: ICefFrame; const targetUrl, targetFrameName: ustring;
targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean;
@@ -200,9 +227,12 @@ function TCustomLifeSpanHandler.OnBeforePopup(const browser: ICefBrowser;
var client: ICefClient; var settings: TCefBrowserSettings; var client: ICefClient; var settings: TCefBrowserSettings;
var noJavascriptAccess: Boolean): Boolean; var noJavascriptAccess: Boolean): Boolean;
begin begin
Result := FEvent.doOnBeforePopup(browser, frame, targetUrl, targetFrameName, if (FEvent <> nil) then
targetDisposition, userGesture, popupFeatures, windowInfo, client, settings, Result := FEvent.doOnBeforePopup(browser, frame, targetUrl, targetFrameName,
noJavascriptAccess); targetDisposition, userGesture, popupFeatures, windowInfo, client, settings,
noJavascriptAccess)
else
Result := inherited;
end; end;
end. end.

View File

@@ -72,6 +72,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -145,24 +146,31 @@ begin
FEvent := events; FEvent := events;
end; end;
destructor TCustomLoadHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomLoadHandler.OnLoadEnd(const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer); procedure TCustomLoadHandler.OnLoadEnd(const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer);
begin begin
FEvent.doOnLoadEnd(browser, frame, httpStatusCode); if (FEvent <> nil) then FEvent.doOnLoadEnd(browser, frame, httpStatusCode);
end; end;
procedure TCustomLoadHandler.OnLoadError(const browser: ICefBrowser; const frame: ICefFrame; errorCode: Integer; const errorText, failedUrl: ustring); procedure TCustomLoadHandler.OnLoadError(const browser: ICefBrowser; const frame: ICefFrame; errorCode: Integer; const errorText, failedUrl: ustring);
begin begin
FEvent.doOnLoadError(browser, frame, errorCode, errorText, failedUrl); if (FEvent <> nil) then FEvent.doOnLoadError(browser, frame, errorCode, errorText, failedUrl);
end; end;
procedure TCustomLoadHandler.OnLoadingStateChange(const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean); procedure TCustomLoadHandler.OnLoadingStateChange(const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
begin begin
FEvent.doOnLoadingStateChange(browser, isLoading, canGoBack, canGoForward); if (FEvent <> nil) then FEvent.doOnLoadingStateChange(browser, isLoading, canGoBack, canGoForward);
end; end;
procedure TCustomLoadHandler.OnLoadStart(const browser: ICefBrowser; const frame: ICefFrame; transitionType: TCefTransitionType); procedure TCustomLoadHandler.OnLoadStart(const browser: ICefBrowser; const frame: ICefFrame; transitionType: TCefTransitionType);
begin begin
FEvent.doOnLoadStart(browser, frame, transitionType); if (FEvent <> nil) then FEvent.doOnLoadStart(browser, frame, transitionType);
end; end;
end. end.

View File

@@ -90,6 +90,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -318,65 +319,86 @@ begin
FEvent := events; FEvent := events;
end; end;
destructor TCustomRenderHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
procedure TCustomRenderHandler.GetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler); procedure TCustomRenderHandler.GetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler);
begin begin
FEvent.doOnGetAccessibilityHandler(aAccessibilityHandler); if (FEvent <> nil) then FEvent.doOnGetAccessibilityHandler(aAccessibilityHandler);
end; end;
function TCustomRenderHandler.GetRootScreenRect(const browser: ICefBrowser; function TCustomRenderHandler.GetRootScreenRect(const browser: ICefBrowser;
rect: PCefRect): Boolean; rect: PCefRect): Boolean;
begin begin
Result := FEvent.doOnGetRootScreenRect(browser, rect); if (FEvent <> nil) then
Result := FEvent.doOnGetRootScreenRect(browser, rect)
else
Result := inherited;
end; end;
function TCustomRenderHandler.GetScreenInfo(const browser: ICefBrowser; function TCustomRenderHandler.GetScreenInfo(const browser: ICefBrowser;
screenInfo: PCefScreenInfo): Boolean; screenInfo: PCefScreenInfo): Boolean;
begin begin
Result := FEvent.doOnGetScreenInfo(browser, screenInfo); if (FEvent <> nil) then
Result := FEvent.doOnGetScreenInfo(browser, screenInfo)
else
Result := inherited;
end; end;
function TCustomRenderHandler.GetScreenPoint(const browser: ICefBrowser; viewX, function TCustomRenderHandler.GetScreenPoint(const browser: ICefBrowser; viewX,
viewY: Integer; screenX, screenY: PInteger): Boolean; viewY: Integer; screenX, screenY: PInteger): Boolean;
begin begin
Result := FEvent.doOnGetScreenPoint(browser, viewX, viewY, screenX, screenY); if (FEvent <> nil) then
Result := FEvent.doOnGetScreenPoint(browser, viewX, viewY, screenX, screenY)
else
Result := inherited;
end; end;
function TCustomRenderHandler.GetViewRect(const browser: ICefBrowser; function TCustomRenderHandler.GetViewRect(const browser: ICefBrowser;
rect: PCefRect): Boolean; rect: PCefRect): Boolean;
begin begin
Result := FEvent.doOnGetViewRect(browser, rect); if (FEvent <> nil) then
Result := FEvent.doOnGetViewRect(browser, rect)
else
Result := inherited;
end; end;
procedure TCustomRenderHandler.OnCursorChange(const browser: ICefBrowser; procedure TCustomRenderHandler.OnCursorChange(const browser: ICefBrowser;
cursor: TCefCursorHandle; cursorType: TCefCursorType; cursor: TCefCursorHandle; cursorType: TCefCursorType;
const customCursorInfo: PCefCursorInfo); const customCursorInfo: PCefCursorInfo);
begin begin
FEvent.doOnCursorChange(browser, cursor, cursorType, customCursorInfo); if (FEvent <> nil) then
FEvent.doOnCursorChange(browser, cursor, cursorType, customCursorInfo);
end; end;
procedure TCustomRenderHandler.OnPaint(const browser: ICefBrowser; procedure TCustomRenderHandler.OnPaint(const browser: ICefBrowser;
kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt;
const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
begin begin
FEvent.doOnPaint(browser, kind, dirtyRectsCount, dirtyRects, buffer, width, height); if (FEvent <> nil) then
FEvent.doOnPaint(browser, kind, dirtyRectsCount, dirtyRects, buffer, width, height);
end; end;
procedure TCustomRenderHandler.OnPopupShow(const browser: ICefBrowser; procedure TCustomRenderHandler.OnPopupShow(const browser: ICefBrowser;
show: Boolean); show: Boolean);
begin begin
FEvent.doOnPopupShow(browser, show); if (FEvent <> nil) then FEvent.doOnPopupShow(browser, show);
end; end;
procedure TCustomRenderHandler.OnPopupSize(const browser: ICefBrowser; procedure TCustomRenderHandler.OnPopupSize(const browser: ICefBrowser;
const rect: PCefRect); const rect: PCefRect);
begin begin
FEvent.doOnPopupSize(browser, rect); if (FEvent <> nil) then FEvent.doOnPopupSize(browser, rect);
end; end;
procedure TCustomRenderHandler.OnScrollOffsetChanged( procedure TCustomRenderHandler.OnScrollOffsetChanged(
const browser: ICefBrowser; x, y: Double); const browser: ICefBrowser; x, y: Double);
begin begin
FEvent.doOnScrollOffsetChanged(browser, x, y); if (FEvent <> nil) then FEvent.doOnScrollOffsetChanged(browser, x, y);
end; end;
procedure TCustomRenderHandler.OnIMECompositionRangeChanged(const browser: ICefBrowser; procedure TCustomRenderHandler.OnIMECompositionRangeChanged(const browser: ICefBrowser;
@@ -384,20 +406,23 @@ procedure TCustomRenderHandler.OnIMECompositionRangeChanged(const browser: ICefB
character_boundsCount: NativeUInt; character_boundsCount: NativeUInt;
const character_bounds: PCefRect); const character_bounds: PCefRect);
begin begin
FEvent.doOnIMECompositionRangeChanged(browser, selected_range, character_boundsCount, character_bounds); if (FEvent <> nil) then
FEvent.doOnIMECompositionRangeChanged(browser, selected_range, character_boundsCount, character_bounds);
end; end;
function TCustomRenderHandler.OnStartDragging(const browser: ICefBrowser; function TCustomRenderHandler.OnStartDragging(const browser: ICefBrowser;
const dragData: ICefDragData; allowedOps: TCefDragOperations; x, const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean;
y: Integer): Boolean;
begin begin
Result := FEvent.doOnStartDragging(browser, dragData, allowedOps, x, y); if (FEvent <> nil) then
Result := FEvent.doOnStartDragging(browser, dragData, allowedOps, x, y)
else
Result := inherited;
end; end;
procedure TCustomRenderHandler.OnUpdateDragCursor(const browser: ICefBrowser; procedure TCustomRenderHandler.OnUpdateDragCursor(const browser: ICefBrowser;
operation: TCefDragOperation); operation: TCefDragOperation);
begin begin
FEvent.doOnUpdateDragCursor(browser, operation); if (FEvent <> nil) then FEvent.doOnUpdateDragCursor(browser, operation);
end; end;
end. end.

View File

@@ -97,6 +97,7 @@ type
public public
constructor Create(const events: IChromiumEvents); reintroduce; virtual; constructor Create(const events: IChromiumEvents); reintroduce; virtual;
destructor Destroy; override;
end; end;
implementation implementation
@@ -453,21 +454,34 @@ end;
constructor TCustomRequestHandler.Create(const events: IChromiumEvents); constructor TCustomRequestHandler.Create(const events: IChromiumEvents);
begin begin
inherited Create; inherited Create;
FEvent := events; FEvent := events;
end; end;
destructor TCustomRequestHandler.Destroy;
begin
FEvent := nil;
inherited Destroy;
end;
function TCustomRequestHandler.GetAuthCredentials(const browser: ICefBrowser; function TCustomRequestHandler.GetAuthCredentials(const browser: ICefBrowser;
const frame: ICefFrame; isProxy: Boolean; const host: ustring; port: Integer; const frame: ICefFrame; isProxy: Boolean; const host: ustring; port: Integer;
const realm, scheme: ustring; const callback: ICefAuthCallback): Boolean; const realm, scheme: ustring; const callback: ICefAuthCallback): Boolean;
begin begin
Result := FEvent.doOnGetAuthCredentials(browser, frame, isProxy, host, port, if (FEvent <> nil) then
realm, scheme, callback); Result := FEvent.doOnGetAuthCredentials(browser, frame, isProxy, host, port, realm, scheme, callback)
else
Result := inherited;
end; end;
function TCustomRequestHandler.GetResourceHandler(const browser: ICefBrowser; function TCustomRequestHandler.GetResourceHandler(const browser: ICefBrowser;
const frame: ICefFrame; const request: ICefRequest): ICefResourceHandler; const frame: ICefFrame; const request: ICefRequest): ICefResourceHandler;
begin begin
Result := FEvent.doOnGetResourceHandler(browser, frame, request); if (FEvent <> nil) then
Result := FEvent.doOnGetResourceHandler(browser, frame, request)
else
Result := inherited;
end; end;
function TCustomRequestHandler.OnBeforeBrowse(const browser: ICefBrowser; function TCustomRequestHandler.OnBeforeBrowse(const browser: ICefBrowser;
@@ -481,21 +495,30 @@ function TCustomRequestHandler.OnBeforeResourceLoad(const browser: ICefBrowser;
const frame: ICefFrame; const request: ICefRequest; const frame: ICefFrame; const request: ICefRequest;
const callback: ICefRequestCallback): TCefReturnValue; const callback: ICefRequestCallback): TCefReturnValue;
begin begin
Result := FEvent.doOnBeforeResourceLoad(browser, frame, request, callback); if (FEvent <> nil) then
Result := FEvent.doOnBeforeResourceLoad(browser, frame, request, callback)
else
Result := inherited;
end; end;
function TCustomRequestHandler.OnCertificateError(const browser: ICefBrowser; function TCustomRequestHandler.OnCertificateError(const browser: ICefBrowser;
certError: TCefErrorcode; const requestUrl: ustring; const sslInfo: ICefSslInfo; certError: TCefErrorcode; const requestUrl: ustring; const sslInfo: ICefSslInfo;
const callback: ICefRequestCallback): Boolean; const callback: ICefRequestCallback): Boolean;
begin begin
Result := FEvent.doOnCertificateError(browser, certError, requestUrl, sslInfo, callback); if (FEvent <> nil) then
Result := FEvent.doOnCertificateError(browser, certError, requestUrl, sslInfo, callback)
else
Result := inherited;
end; end;
function TCustomRequestHandler.OnOpenUrlFromTab(const browser: ICefBrowser; function TCustomRequestHandler.OnOpenUrlFromTab(const browser: ICefBrowser;
const frame: ICefFrame; const targetUrl: ustring; const frame: ICefFrame; const targetUrl: ustring;
targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean): Boolean; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean): Boolean;
begin begin
Result := FEvent.doOnOpenUrlFromTab(browser, frame, targetUrl, targetDisposition, userGesture); if (FEvent <> nil) then
Result := FEvent.doOnOpenUrlFromTab(browser, frame, targetUrl, targetDisposition, userGesture)
else
Result := inherited;
end; end;
function TCustomRequestHandler.OnSelectClientCertificate(const browser : ICefBrowser; function TCustomRequestHandler.OnSelectClientCertificate(const browser : ICefBrowser;
@@ -506,50 +529,58 @@ function TCustomRequestHandler.OnSelectClientCertificate(const browser
const certificates : TCefX509CertificateArray; const certificates : TCefX509CertificateArray;
const callback : ICefSelectClientCertificateCallback): boolean; const callback : ICefSelectClientCertificateCallback): boolean;
begin begin
Result := FEvent.doOnSelectClientCertificate(browser, isProxy, host, port, certificatesCount, certificates, callback); if (FEvent <> nil) then
Result := FEvent.doOnSelectClientCertificate(browser, isProxy, host, port, certificatesCount, certificates, callback)
else
Result := inherited;
end; end;
procedure TCustomRequestHandler.OnPluginCrashed(const browser: ICefBrowser; procedure TCustomRequestHandler.OnPluginCrashed(const browser: ICefBrowser; const pluginPath: ustring);
const pluginPath: ustring);
begin begin
FEvent.doOnPluginCrashed(browser, pluginPath); if (FEvent <> nil) then FEvent.doOnPluginCrashed(browser, pluginPath);
end; end;
procedure TCustomRequestHandler.OnProtocolExecution(const browser: ICefBrowser; procedure TCustomRequestHandler.OnProtocolExecution(const browser: ICefBrowser;
const url: ustring; out allowOsExecution: Boolean); const url: ustring; out allowOsExecution: Boolean);
begin begin
FEvent.doOnProtocolExecution(browser, url, allowOsExecution); if (FEvent <> nil) then FEvent.doOnProtocolExecution(browser, url, allowOsExecution);
end; end;
function TCustomRequestHandler.OnQuotaRequest(const browser: ICefBrowser; function TCustomRequestHandler.OnQuotaRequest(const browser: ICefBrowser;
const originUrl: ustring; newSize: Int64; const originUrl: ustring; newSize: Int64;
const callback: ICefRequestCallback): Boolean; const callback: ICefRequestCallback): Boolean;
begin begin
Result := FEvent.doOnQuotaRequest(browser, originUrl, newSize, callback); if (FEvent <> nil) then
Result := FEvent.doOnQuotaRequest(browser, originUrl, newSize, callback)
else
Result := inherited;
end; end;
procedure TCustomRequestHandler.OnRenderProcessTerminated( procedure TCustomRequestHandler.OnRenderProcessTerminated(
const browser: ICefBrowser; status: TCefTerminationStatus); const browser: ICefBrowser; status: TCefTerminationStatus);
begin begin
FEvent.doOnRenderProcessTerminated(browser, status); if (FEvent <> nil) then FEvent.doOnRenderProcessTerminated(browser, status);
end; end;
procedure TCustomRequestHandler.OnRenderViewReady(const browser: ICefBrowser); procedure TCustomRequestHandler.OnRenderViewReady(const browser: ICefBrowser);
begin begin
FEvent.doOnRenderViewReady(browser); if (FEvent <> nil) then FEvent.doOnRenderViewReady(browser);
end; end;
procedure TCustomRequestHandler.OnResourceRedirect(const browser: ICefBrowser; procedure TCustomRequestHandler.OnResourceRedirect(const browser: ICefBrowser;
const frame: ICefFrame; const request: ICefRequest; const response: ICefResponse; var newUrl: ustring); const frame: ICefFrame; const request: ICefRequest; const response: ICefResponse; var newUrl: ustring);
begin begin
FEvent.doOnResourceRedirect(browser, frame, request, response, newUrl); if (FEvent <> nil) then FEvent.doOnResourceRedirect(browser, frame, request, response, newUrl);
end; end;
function TCustomRequestHandler.OnResourceResponse(const browser: ICefBrowser; function TCustomRequestHandler.OnResourceResponse(const browser: ICefBrowser;
const frame: ICefFrame; const request: ICefRequest; const frame: ICefFrame; const request: ICefRequest;
const response: ICefResponse): Boolean; const response: ICefResponse): Boolean;
begin begin
Result := FEvent.doOnResourceResponse(browser, frame, request, response); if (FEvent <> nil) then
Result := FEvent.doOnResourceResponse(browser, frame, request, response)
else
Result := inherited;
end; end;
function TCustomRequestHandler.GetResourceResponseFilter(const browser: ICefBrowser; function TCustomRequestHandler.GetResourceResponseFilter(const browser: ICefBrowser;
@@ -557,7 +588,10 @@ function TCustomRequestHandler.GetResourceResponseFilter(const browser: ICefBrow
const request: ICefRequest; const request: ICefRequest;
const response: ICefResponse): ICefResponseFilter; const response: ICefResponse): ICefResponseFilter;
begin begin
Result := FEvent.doOnGetResourceResponseFilter(browser, frame, request, response); if (FEvent <> nil) then
Result := FEvent.doOnGetResourceResponseFilter(browser, frame, request, response)
else
Result := inherited;
end; end;
procedure TCustomRequestHandler.OnResourceLoadComplete(const browser: ICefBrowser; procedure TCustomRequestHandler.OnResourceLoadComplete(const browser: ICefBrowser;
@@ -567,7 +601,8 @@ procedure TCustomRequestHandler.OnResourceLoadComplete(const browser: ICefBrowse
status: TCefUrlRequestStatus; status: TCefUrlRequestStatus;
receivedContentLength: Int64); receivedContentLength: Int64);
begin begin
FEvent.doOnResourceLoadComplete(browser, frame, request, response, status, receivedContentLength); if (FEvent <> nil) then
FEvent.doOnResourceLoadComplete(browser, frame, request, response, status, receivedContentLength);
end; end;
end. end.