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

Update to CEF 3.2987.1596.gc2b4638

* New properties in TCEFApplication :  SmoothScrolling, FastUnload,
DisableSafeBrowsing.
* Bug fix in CefResponseFilter. Thanks to Zdravko Gabrovski!
* MiniBrowser now has a context menu option to visit the DOM.
This commit is contained in:
Salvador Diaz Fau 2017-03-22 15:22:11 +01:00
parent 68769fdda2
commit b5b9547d28
23 changed files with 456 additions and 301 deletions

View File

@ -49,6 +49,13 @@ uses
uCEFApplication,
uCEFMiscFunctions,
uCEFSchemeRegistrar,
uCEFRenderProcessHandler,
uCEFv8Handler,
uCEFInterfaces,
uCEFDomVisitor,
uCEFConstants,
uCEFTypes,
uCEFTask,
uMiniBrowser in 'uMiniBrowser.pas' {MiniBrowserFrm},
uTestExtension in 'uTestExtension.pas',
uHelloScheme in 'uHelloScheme.pas',
@ -56,16 +63,58 @@ uses
{$R *.res}
var
TempProcessHandler : TCefCustomRenderProcessHandler;
procedure DOMVisitor_OnDocAvailable(const document: ICefDomDocument);
begin
// This function is called from a different process.
// document is only valid inside this function.
// As an example, this function only writes the document title to the 'debug.log' file.
CefLog('CEF4Delphi', 1, CEF_LOG_SEVERITY_ERROR, 'document.Title : ' + document.Title);
end;
procedure ProcessHandler_OnCustomMessage(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage);
var
TempFrame : ICefFrame;
TempVisitor : TCefFastDomVisitor;
begin
if (browser <> nil) then
begin
TempFrame := browser.MainFrame;
if (TempFrame <> nil) then
begin
TempVisitor := TCefFastDomVisitor.Create(DOMVisitor_OnDocAvailable);
TempFrame.VisitDom(TempVisitor);
end;
end;
end;
procedure ProcessHandler_OnWebKitReady;
begin
{$IFDEF DELPHI14_UP}
TCefRTTIExtension.Register('app', TTestExtension);
{$ENDIF}
end;
procedure GlobalCEFApp_OnRegCustomSchemes(const registrar: TCefSchemeRegistrarRef);
begin
registrar.AddCustomScheme('hello', True, True, False, False, False);
end;
begin
TempProcessHandler := TCefCustomRenderProcessHandler.Create;
TempProcessHandler.MessageName := 'retrievedom'; // same message name than TMiniBrowserFrm.VisitDOMMsg
TempProcessHandler.OnCustomMessage := ProcessHandler_OnCustomMessage;
TempProcessHandler.OnWebKitReady := ProcessHandler_OnWebKitReady;
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.RemoteDebuggingPort := 9000;
GlobalCEFApp.RenderProcessHandler := TCustomRenderProcessHandler.Create;
GlobalCEFApp.RenderProcessHandler := TempProcessHandler as ICefRenderProcessHandler;
GlobalCEFApp.OnRegCustomSchemes := GlobalCEFApp_OnRegCustomSchemes;
GlobalCEFApp.LogFile := 'debug.log';
GlobalCEFApp.LogSeverity := LOGSEVERITY_ERROR;
// Examples of command line switches.
// **********************************

View File

@ -105,7 +105,6 @@
<DCCReference Include="uHelloScheme.pas"/>
<DCCReference Include="uPreferences.pas">
<Form>PreferencesFrm</Form>
<FormType>dfm</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>

View File

@ -1,39 +1,46 @@
[Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,1,1,40,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,1,1,40,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,1,25,38,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas',0,1,10,51,49,0,0,,
File_4=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\vcl\Vcl.Dialogs.pas',0,1,6752,22,6771,0,0,,
File_5=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\Property Editors\FmxAnimationEditors.pas',0,1,1882,37,1904,0,0,,
File_6=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\Property Editors\Indy10\IdDsnPropEdBindingVCL.pas',0,1,789,25,811,0,0,,
File_7=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\Experts\ExpertsUIWizard.pas',0,1,540,33,562,0,0,,
File_8=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\DUnit\Contrib\DUnitWizard\Source\DelphiExperts\DUnitProject\XPDUnitTestModule.pas',0,1,135,32,157,0,0,,
File_9=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\data\ems\desktopconsole\EMSManagementConsole.FrameAdd.pas',0,1,478,32,500,0,0,,
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,558,38,599,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFRenderProcessHandler.pas',0,1,62,19,86,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,735,3,764,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,588,5,617,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,1,35,96,52,0,0,,
File_5=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,132,44,155,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,222,65,245,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,265,1,288,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseRefCounted.pas',0,1,121,1,146,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,1,1,40,0,0,,
[Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj
Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj
Module2=default.htm
Count=3
Module3=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas
Count=4
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
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj]
ModuleType=TBaseProject
[default.htm]
ModuleType=TURLModule
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[EditWindow0]
ViewCount=3
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
ViewCount=4
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
View0=0
View1=1
View2=2
View3=3
PercentageSizes=1
Create=1
Visible=1
@ -50,18 +57,17 @@ ClientHeight=9428
DockedToMainForm=1
BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=1898
LeftPanelClients=PropertyInspector,DockSite3
LeftPanelData=00000800010100000000AA19000000000000016A0700000000000001000000005D0E000009000000446F636B53697465330100000000A12300001100000050726F7065727479496E73706563746F72FFFFFFFF
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=0
RightPanelData=000008000101000000001E1500000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000511D000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1551
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF
BottomPanelData=0000080001020100000009000000446F636B53697465313B36000000000000020F0600000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
[View0]
CustomEditViewType=TWelcomePageView
@ -69,25 +75,36 @@ WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
CursorX=70
CursorY=95
TopLine=74
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=76
CursorY=82
TopLine=1
CursorX=87
CursorY=411
TopLine=387
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
[View2]
[View3]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas
CursorX=1
CursorY=41
TopLine=22
CursorY=68
TopLine=38
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas
[Watches]
Count=0
@ -103,18 +120,19 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=1043
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=1043
TBDockHeight=213
LRDockWidth=13602
Dockable=1
StayOnTop=0
[Breakpoints]
Count=0
Count=1
Breakpoint0='C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',2552,'',0,1,'',0,0,0,'doOnProcessMessageReceived',1,'','','',0,''
[EmbarcaderoWin32Debugger_AddressBreakpoints]
Count=0
@ -164,18 +182,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=0
Visible=1
Docked=1
State=0
Left=0
Top=0
Width=2773
Height=1424
Top=23
Width=10000
Height=1345
MaxLeft=-1
MaxTop=-1
ClientWidth=2773
ClientHeight=1424
TBDockHeight=1424
ClientWidth=10000
ClientHeight=1345
TBDockHeight=1345
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -189,11 +207,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4339
Height=2668
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientHeight=2668
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -243,8 +261,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-121
Top=-74
Left=-8
Top=-30
Width=1844
Height=3139
MaxLeft=-1
@ -297,18 +315,18 @@ StayOnTop=0
[PropertyInspector]
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=362
Left=78
Top=386
Width=1898
Height=5370
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=5370
TBDockHeight=7119
ClientHeight=7164
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
@ -383,11 +401,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=1043
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=1043
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -402,11 +420,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=1043
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=1043
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -425,11 +443,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=1043
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=1043
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -444,11 +462,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=1043
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=1043
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -566,11 +584,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=1043
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=1043
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -591,12 +609,12 @@ Docked=1
State=0
Left=0
Top=0
Width=1898
Height=3498
Width=1773
Height=6738
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=3498
ClientWidth=1773
ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@ -678,12 +696,12 @@ State=0
Left=0
Top=23
Width=3820
Height=1424
Height=1345
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=1345
TBDockHeight=1345
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -716,22 +734,22 @@ ActiveTabID=ProjectManager
TabDockClients=ProjectManager,ModelViewTool,DataExplorerContainer,frmDesignPreview,TFileExplorerForm
[DockSite3]
HostDockSite=DockLeftPanel
HostDockSite=LeftDockTabSet
DockSiteType=1
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=23
Top=0
Width=1898
Height=3498
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=3498
TBDockHeight=7119
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
@ -750,11 +768,11 @@ State=0
Left=0
Top=454
Width=2000
Height=4339
Height=2668
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientHeight=2668
TBDockHeight=7119
LRDockWidth=2000
Dockable=1

View File

@ -1,10 +1,10 @@
[Stats]
EditorSecs=16035
DesignerSecs=1777
InspectorSecs=1204
CompileSecs=764079
OtherSecs=2346
EditorSecs=20406
DesignerSecs=1796
InspectorSecs=1288
CompileSecs=899865
OtherSecs=2832
StartTime=11/02/2017 10:51:15
RealKeys=0
EffectiveKeys=0
DebugSecs=8921
DebugSecs=10091

View File

@ -117,7 +117,6 @@ object MiniBrowserFrm: TMiniBrowserFrm
Padding.Bottom = 8
ShowCaption = False
TabOrder = 1
ExplicitWidth = 915
object URLCbx: TComboBox
Left = 0
Top = 9
@ -133,7 +132,6 @@ object MiniBrowserFrm: TMiniBrowserFrm
'https://www.whatismybrowser.com/detect/what-http-headers-is-my-b' +
'rowser-sending'
'https://www.w3schools.com/js/tryit.asp?filename=tryjs_win_close')
ExplicitWidth = 915
end
end
object ConfigPnl: TPanel
@ -144,7 +142,6 @@ object MiniBrowserFrm: TMiniBrowserFrm
Align = alRight
BevelOuter = bvNone
TabOrder = 2
ExplicitLeft = 1015
object ConfigBtn: TButton
Left = 40
Top = 8
@ -184,7 +181,6 @@ object MiniBrowserFrm: TMiniBrowserFrm
Height = 656
Align = alClient
TabOrder = 1
ExplicitHeight = 621
end
object DevTools: TCEFWindowParent
Left = 1089
@ -194,7 +190,6 @@ object MiniBrowserFrm: TMiniBrowserFrm
Align = alRight
TabOrder = 2
Visible = False
ExplicitHeight = 621
end
object StatusBar1: TStatusBar
Left = 0
@ -205,7 +200,6 @@ object MiniBrowserFrm: TMiniBrowserFrm
item
Width = 50
end>
ExplicitTop = 662
end
object Chromium1: TChromium
OnTextResultAvailable = Chromium1TextResultAvailable
@ -228,6 +222,35 @@ object MiniBrowserFrm: TMiniBrowserFrm
Caption = 'DevTools'
OnClick = DevTools1Click
end
object N2: TMenuItem
Caption = '-'
end
object Print1: TMenuItem
Caption = 'Print'
OnClick = Print1Click
end
object PrintinPDF1: TMenuItem
Caption = 'Print to PDF'
OnClick = PrintinPDF1Click
end
object N3: TMenuItem
Caption = '-'
end
object Zoom1: TMenuItem
Caption = 'Zoom'
object Inczoom1: TMenuItem
Caption = 'Inc zoom'
OnClick = Inczoom1Click
end
object Deczoom1: TMenuItem
Caption = 'Dec zoom'
OnClick = Deczoom1Click
end
object Resetzoom1: TMenuItem
Caption = 'Reset zoom'
OnClick = Resetzoom1Click
end
end
object N1: TMenuItem
Caption = '-'
end
@ -236,4 +259,8 @@ object MiniBrowserFrm: TMiniBrowserFrm
OnClick = Preferences1Click
end
end
object SaveDialog1: TSaveDialog
Left = 488
Top = 232
end
end

View File

@ -56,6 +56,7 @@ const
MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
MINIBROWSER_COPYHTML = WM_APP + $103;
MINIBROWSER_VISITDOM = WM_APP + $104;
MINIBROWSER_HOMEPAGE = 'https://www.google.com';
@ -64,6 +65,7 @@ const
MINIBROWSER_CONTEXTMENU_SHOWJSALERT = MENU_ID_USER_FIRST + 3;
MINIBROWSER_CONTEXTMENU_SETJSEVENT = MENU_ID_USER_FIRST + 4;
MINIBROWSER_CONTEXTMENU_COPYHTML = MENU_ID_USER_FIRST + 5;
MINIBROWSER_CONTEXTMENU_VISITDOM = MENU_ID_USER_FIRST + 6;
type
TMiniBrowserFrm = class(TForm)
@ -87,6 +89,15 @@ type
N1: TMenuItem;
Preferences1: TMenuItem;
GoBtn: TButton;
N2: TMenuItem;
PrintinPDF1: TMenuItem;
Print1: TMenuItem;
N3: TMenuItem;
Zoom1: TMenuItem;
Inczoom1: TMenuItem;
Deczoom1: TMenuItem;
Resetzoom1: TMenuItem;
SaveDialog1: TSaveDialog;
procedure FormShow(Sender: TObject);
procedure BackBtnClick(Sender: TObject);
procedure ForwardBtnClick(Sender: TObject);
@ -120,6 +131,11 @@ type
procedure Preferences1Click(Sender: TObject);
procedure ConfigBtnClick(Sender: TObject);
procedure GoBtnClick(Sender: TObject);
procedure PrintinPDF1Click(Sender: TObject);
procedure Print1Click(Sender: TObject);
procedure Inczoom1Click(Sender: TObject);
procedure Deczoom1Click(Sender: TObject);
procedure Resetzoom1Click(Sender: TObject);
protected
procedure AddURL(const aURL : string);
@ -132,6 +148,7 @@ type
procedure ShowDevToolsMsg(var aMessage : TMessage); message MINIBROWSER_SHOWDEVTOOLS;
procedure HideDevToolsMsg(var aMessage : TMessage); message MINIBROWSER_HIDEDEVTOOLS;
procedure CopyHTMLMsg(var aMessage : TMessage); message MINIBROWSER_COPYHTML;
procedure VisitDOMMsg(var aMessage : TMessage); message MINIBROWSER_VISITDOM;
public
end;
@ -144,7 +161,7 @@ implementation
{$R *.dfm}
uses
uPreferences;
uPreferences, uCEFProcessMessage;
procedure TMiniBrowserFrm.BackBtnClick(Sender: TObject);
begin
@ -166,6 +183,11 @@ begin
Chromium1.Reload;
end;
procedure TMiniBrowserFrm.Resetzoom1Click(Sender: TObject);
begin
Chromium1.ResetZoomStep;
end;
procedure TMiniBrowserFrm.Chromium1AddressChange(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
begin
@ -186,6 +208,7 @@ begin
model.AddItem(MINIBROWSER_CONTEXTMENU_SHOWJSALERT, 'Show JS Alert');
model.AddItem(MINIBROWSER_CONTEXTMENU_SETJSEVENT, 'Set mouseover event');
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard');
model.AddItem(MINIBROWSER_CONTEXTMENU_VISITDOM, 'Visit DOM');
if DevTools.Visible then
model.AddItem(MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS, 'Hide DevTools')
@ -230,6 +253,9 @@ begin
MINIBROWSER_CONTEXTMENU_COPYHTML :
PostMessage(Handle, MINIBROWSER_COPYHTML, 0, 0);
MINIBROWSER_CONTEXTMENU_VISITDOM :
PostMessage(Handle, MINIBROWSER_VISITDOM, 0, 0);
end;
end;
@ -308,6 +334,11 @@ begin
HideDevTools;
end;
procedure TMiniBrowserFrm.Inczoom1Click(Sender: TObject);
begin
Chromium1.IncZoomStep;
end;
procedure TMiniBrowserFrm.PopupMenu1Popup(Sender: TObject);
begin
if DevTools.Visible then
@ -344,6 +375,20 @@ begin
end;
end;
procedure TMiniBrowserFrm.Print1Click(Sender: TObject);
begin
Chromium1.Print;
end;
procedure TMiniBrowserFrm.PrintinPDF1Click(Sender: TObject);
begin
SaveDialog1.DefaultExt := 'pdf';
SaveDialog1.Filter := 'PDF files (*.pdf)|*.PDF';
if SaveDialog1.Execute and (length(SaveDialog1.FileName) > 0) then
Chromium1.PrintToPDF(SaveDialog1.FileName, Chromium1.DocumentURL, Chromium1.DocumentURL);
end;
procedure TMiniBrowserFrm.ConfigBtnClick(Sender: TObject);
var
TempPoint : TPoint;
@ -360,6 +405,24 @@ begin
Chromium1.RetrieveHTML;
end;
procedure TMiniBrowserFrm.VisitDOMMsg(var aMessage : TMessage);
var
TempMsg : ICefProcessMessage;
begin
// Only works using a TCefCustomRenderProcessHandler. See MiniBrowser demo.
if Chromium1.Initialized then
begin
// Use the ArgumentList property if you need to pass some parameters.
TempMsg := TCefProcessMessageRef.New('retrievedom'); // Same name than TCefCustomRenderProcessHandler.MessageName
Chromium1.Browser.SendProcessMessage(PID_RENDERER, TempMsg);
end;
end;
procedure TMiniBrowserFrm.Deczoom1Click(Sender: TObject);
begin
Chromium1.DecZoomStep;
end;
procedure TMiniBrowserFrm.DevTools1Click(Sender: TObject);
begin
if DevTools.Visible then

View File

@ -51,11 +51,6 @@ uses
uCEFv8Context, uCEFTypes, uCEFv8Handler;
type
TCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
protected
procedure OnWebKitInitialized; override;
end;
TCustomBrowserProcessHandler = class(TCefBrowserProcessHandlerOwn)
protected
procedure OnScheduleMessagePumpWork(delayMs: Int64); override;
@ -71,22 +66,6 @@ implementation
var
pumpMessages: Integer = 0;
{ TCustomRenderProcessHandler }
function getpath(const n: ICefDomNode): string;
begin
Result := '<' + n.Name + '>';
if (n.Parent <> nil) then
Result := getpath(n.Parent) + Result;
end;
procedure TCustomRenderProcessHandler.OnWebKitInitialized;
begin
{$IFDEF DELPHI14_UP}
TCefRTTIExtension.Register('app', TTestExtension);
{$ENDIF}
end;
{ TTestExtension }
class procedure TTestExtension.mouseover(const data: string);

View File

@ -256,7 +256,16 @@
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<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>
<DeployClass Name="ProjectOSXResource">
<Platform Name="OSX32">
<RemoteDir>Contents\Resources</RemoteDir>
@ -570,16 +579,7 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<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>
<DeployClass Name="ProjectiOSDeviceResourceRules"/>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
<ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
<ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>

View File

@ -1,27 +1,34 @@
[Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,31,80,57,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,1995,70,2009,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,53,30,76,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi_new\source\uCEFMiscFunctions.pas',0,1,1,1,1,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLibFunctions.pas',0,1,1,1,1,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFResourceHandler.pas',0,1,1,1,1,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFSchemeRegistrar.pas',0,1,1,1,1,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi_new\source\uCEFLibFunctions.pas',0,1,1,1,1,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi_new\source\uCEFResourceHandler.pas',0,1,1,1,1,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi_new\source\uCEFSchemeRegistrar.pas',0,1,1,1,1,0,0,,
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFResponseFilter.pas',0,1,33,1,56,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,1170,1,1202,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,1615,96,1640,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFRenderProcessHandler.pas',0,1,262,52,291,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomVisitor.pas',0,1,37,1,108,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,1,1,71,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFProcessMessage.pas',0,1,22,66,53,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTask.pas',0,1,44,1,145,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,1,32,1,61,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFPDFPrintOptions.pas',0,3,65,25,93,0,0,,
[Modules]
Module0=default.htm
Count=1
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
Module1=default.htm
Count=2
EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[default.htm]
ModuleType=TURLModule
[EditWindow0]
ViewCount=1
CurrentView=0
ViewCount=2
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
View0=0
View1=1
PercentageSizes=1
Create=1
Visible=1
@ -41,10 +48,10 @@ TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=0
RightPanelData=000008000101000000001E1500000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000511D000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1551
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF
BottomPanelData=0000080001020100000009000000446F636B53697465313B36000000000000020F0600000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@ -54,6 +61,17 @@ TabDockLeftClients=PropertyInspector=0,DockSite3=1
CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
CursorX=19
CursorY=397
TopLine=385
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
[Watches]
Count=0
@ -129,18 +147,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=0
Visible=1
Docked=1
State=0
Left=0
Top=0
Width=2773
Height=1424
Top=23
Width=10000
Height=1345
MaxLeft=-1
MaxTop=-1
ClientWidth=2773
ClientHeight=1424
TBDockHeight=1424
ClientWidth=10000
ClientHeight=1345
TBDockHeight=1345
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -154,11 +172,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4339
Height=2668
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientHeight=2668
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -715,11 +733,11 @@ State=0
Left=0
Top=454
Width=2000
Height=4339
Height=2668
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientHeight=2668
TBDockHeight=7164
LRDockWidth=2000
Dockable=1

Binary file not shown.

View File

@ -1,9 +1,9 @@
[Stats]
EditorSecs=59984
EditorSecs=63819
DesignerSecs=14
InspectorSecs=11
CompileSecs=1099139
OtherSecs=5315
CompileSecs=1290419
OtherSecs=5794
StartTime=22/01/2017 10:49:52
RealKeys=0
EffectiveKeys=0

View File

@ -57,7 +57,7 @@ uses
const
CEF_SUPPORTED_VERSION_MAJOR = 3;
CEF_SUPPORTED_VERSION_MINOR = 2987;
CEF_SUPPORTED_VERSION_RELEASE = 1594;
CEF_SUPPORTED_VERSION_RELEASE = 1596;
CEF_SUPPORTED_VERSION_BUILD = 0;
CEF_CHROMEELF_VERSION_MAJOR = 57;
@ -68,13 +68,6 @@ const
type
TInternalApp = class;
TFileVersionInfo = record
MajorVer : uint16;
MinorVer : uint16;
Release : uint16;
Build : uint16;
end;
TCefApplication = class
protected
FMustShutDown : boolean;
@ -120,6 +113,9 @@ type
FEnableSpeechInput : boolean;
FCheckCEFFiles : boolean;
FLibLoaded : boolean;
FSmoothScrolling : boolean;
FFastUnload : boolean;
FDisableSafeBrowsing : boolean;
FChromeVersionInfo : TFileVersionInfo;
FLibHandle : THandle;
FOnRegisterCustomSchemes : TOnRegisterCustomSchemes;
@ -250,6 +246,9 @@ type
property ResourceBundleHandler : ICefResourceBundleHandler read FResourceBundleHandler write FResourceBundleHandler;
property BrowserProcessHandler : ICefBrowserProcessHandler read FBrowserProcessHandler write FBrowserProcessHandler;
property RenderProcessHandler : ICefRenderProcessHandler read FRenderProcessHandler write FRenderProcessHandler;
property SmoothScrolling : boolean read FSmoothScrolling write FSmoothScrolling;
property FastUnload : boolean read FFastUnload write FFastUnload;
property DisableSafeBrowsing : boolean read FDisableSafeBrowsing write FDisableSafeBrowsing;
property LibLoaded : boolean read FLibLoaded;
property LibCef : string read FLibCef write FLibCef;
end;
@ -350,6 +349,9 @@ begin
FCustomCommandLines := nil;
FCustomCommandLineValues := nil;
FCheckCEFFiles := True;
FSmoothScrolling := False;
FFastUnload := False;
FDisableSafeBrowsing := False;
FOnRegisterCustomSchemes := nil;
FResourceBundleHandler := nil;
FBrowserProcessHandler := nil;
@ -854,6 +856,19 @@ begin
commandLine.AppendSwitchWithValue('--enable-media-stream', IntToStr(Ord(FEnableMediaStream)));
commandLine.AppendSwitchWithValue('--enable-speech-input', IntToStr(Ord(FEnableSpeechInput)));
if FSmoothScrolling then
commandLine.AppendSwitch('--enable-smooth-scrolling');
if FFastUnload then
commandLine.AppendSwitch('--enable-fast-unload');
if FDisableSafeBrowsing then
begin
commandLine.AppendSwitch('--disable-client-side-phishing-detection');
commandLine.AppendSwitch('--safebrowsing-disable-auto-update');
commandLine.AppendSwitch('--safebrowsing-disable-download-protection');
end;
if (FCustomCommandLines <> nil) and
(FCustomCommandLineValues <> nil) and
(FCustomCommandLines.Count = FCustomCommandLineValues.Count) then

View File

@ -64,7 +64,6 @@ type
FVisitor : ICefStringVisitor;
FPDFPrintcb : ICefPdfPrintCallback;
FCookiDeletercb : ICefDeleteCookiesCallback;
FDOMVisitor : ICefDomVisitor;
FClientHandler : TVCLClientHandler;
FHandler : ICefClient;
FBrowser : ICefBrowser;
@ -201,7 +200,6 @@ type
FOnPdfPrintFinished : TOnPdfPrintFinishedEvent;
FOnPrefsAvailable : TNotifyEvent;
FOnCookiesDeleted : TOnCookiesDeletedEvent;
FOnDocumentAvailable : TOnDocumentAvailableEvent;
function GetIsLoading : boolean;
function GetMultithreadApp : boolean;
@ -378,10 +376,8 @@ type
// Internal procedures.
// Only tasks, visitors or callbacks should use them in the right thread/process.
procedure Internal_DOMVisit(const document: ICefDomDocument);
procedure Internal_CookiesDeleted(numDeleted : integer);
procedure Internal_GetHTML;
procedure Internal_VisitDOM;
procedure Internal_PdfPrintFinished(aResultOK : boolean);
procedure Internal_TextResultAvailable(const aText : string);
procedure Internal_UpdatePreferences;
@ -398,7 +394,6 @@ type
procedure SimulateMouseWheel(aDeltaX, aDeltaY : integer);
procedure DeleteCookies;
procedure RetrieveDOMDocument;
procedure RetrieveHTML;
procedure ExecuteJavaScript(const aCode, aScriptURL : ustring; aStartLine : integer = 0);
procedure UpdatePreferences;
@ -494,7 +489,6 @@ type
property OnPdfPrintFinished : TOnPdfPrintFinishedEvent read FOnPdfPrintFinished write FOnPdfPrintFinished;
property OnPrefsAvailable : TNotifyEvent read FOnPrefsAvailable write FOnPrefsAvailable;
property OnCookiesDeleted : TOnCookiesDeletedEvent read FOnCookiesDeleted write FOnCookiesDeleted;
property OnDocumentAvailable : TOnDocumentAvailableEvent read FOnDocumentAvailable write FOnDocumentAvailable;
// ICefClient
property OnProcessMessageReceived : TOnProcessMessageReceived read FOnProcessMessageReceived write FOnProcessMessageReceived;
@ -601,7 +595,7 @@ uses
SysUtils, Math,
{$ENDIF}
uCEFBrowser, uCEFValue, uCEFDictionaryValue, uCEFStringMultimap, uCEFCookieManager, uCEFFrame,
uCEFApplication;
uCEFApplication, uCEFProcessMessage;
constructor TChromium.Create(AOwner: TComponent);
begin
@ -620,7 +614,6 @@ begin
FVisitor := nil;
FPDFPrintcb := nil;
FCookiDeletercb := nil;
FDOMVisitor := nil;
FPDFPrintOptions := nil;
FUpdatePreferences := False;
FCustomHeaderName := '';
@ -683,7 +676,6 @@ begin
FVisitor := nil;
FPDFPrintcb := nil;
FCookiDeletercb := nil;
FDOMVisitor := nil;
if (FFontOptions <> nil) then FreeAndNil(FFontOptions);
if (FOptions <> nil) then FreeAndNil(FOptions);
@ -834,7 +826,6 @@ begin
FOnPdfPrintFinished := nil;
FOnPrefsAvailable := nil;
FOnCookiesDeleted := nil;
FOnDocumentAvailable := nil;
end;
function TChromium.CreateBrowser(const aBrowserParent : TWinControl; const aWindowName : string) : boolean;
@ -931,27 +922,6 @@ begin
end;
end;
procedure TChromium.Internal_VisitDOM;
var
TempFrame : ICefFrame;
begin
try
if Initialized then
begin
TempFrame := FBrowser.MainFrame;
if (TempFrame <> nil) then
begin
if (FDOMVisitor = nil) then FDOMVisitor := TCustomDomVisitor.Create(self);
TempFrame.VisitDom(FDOMVisitor);
end;
end;
except
on e : exception do
OutputDebugMessage('TChromium.Internal_VisitDOM error: ' + e.Message);
end;
end;
procedure TChromium.ClipboardCopy;
var
TempFrame : ICefFrame;
@ -1051,6 +1021,7 @@ begin
aSettings.header_footer_url := CefString(aURL);
aSettings.page_width := FPDFPrintOptions.page_width;
aSettings.page_height := FPDFPrintOptions.page_height;
aSettings.scale_factor := FPDFPrintOptions.scale_factor;
aSettings.margin_top := FPDFPrintOptions.margin_top;
aSettings.margin_right := FPDFPrintOptions.margin_right;
aSettings.margin_bottom := FPDFPrintOptions.margin_bottom;
@ -1536,17 +1507,6 @@ begin
end;
end;
procedure TChromium.RetrieveDOMDocument;
var
TempTask: ICefTask;
begin
if Initialized then
begin
TempTask := TCefGetDocumentTask.Create(self);
CefPostTask(TID_RENDERER, TempTask);
end;
end;
procedure TChromium.RetrieveHTML;
var
TempTask: ICefTask;
@ -2056,11 +2016,6 @@ begin
if assigned(FOnCookiesDeleted) then FOnCookiesDeleted(self, numDeleted);
end;
procedure TChromium.Internal_DOMVisit(const document: ICefDomDocument);
begin
if assigned(FOnDocumentAvailable) then FOnDocumentAvailable(self, document);
end;
procedure TChromium.Internal_PdfPrintFinished(aResultOK : boolean);
begin
if assigned(FOnPdfPrintFinished) then FOnPdfPrintFinished(self, aResultOK);

View File

@ -58,7 +58,6 @@ type
TOnTextResultAvailableEvent = procedure(Sender: TObject; const aText : string) of object;
TOnPdfPrintFinishedEvent = procedure(Sender: TObject; aResultOK : boolean) of object;
TOnCookiesDeletedEvent = procedure(Sender: TObject; numDeleted : integer) of object;
TOnDocumentAvailableEvent = procedure(Sender: TObject; const aDocument : ICefDomDocument) of object;
TOnProcessMessageReceived = procedure(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean) of object;
TOnLoadingStateChange = procedure(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean) of object;
TOnLoadStart = procedure(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; transitionType: TCefTransitionType) of object;

View File

@ -68,16 +68,6 @@ type
constructor Create(const proc: TCefDomVisitorProc); reintroduce; virtual;
end;
TCustomDomVisitor = class(TCefDomVisitorOwn)
protected
FChromiumBrowser : TObject;
procedure visit(const document: ICefDomDocument); override;
public
constructor Create(const aChromiumBrowser : TObject); reintroduce;
end;
implementation
uses
@ -115,19 +105,4 @@ begin
FProc(document);
end;
// TCustomDomVisitor
constructor TCustomDomVisitor.Create(const aChromiumBrowser : TObject);
begin
inherited Create;
FChromiumBrowser := aChromiumBrowser;
end;
procedure TCustomDomVisitor.visit(const document: ICefDomDocument);
begin
if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then
TChromium(FChromiumBrowser).Internal_DOMVisit(document);
end;
end.

View File

@ -90,6 +90,7 @@ type
ICefResourceBundleHandler = interface;
ICefBrowserProcessHandler = interface;
ICefRenderProcessHandler = interface;
ICefProcessMessage = interface;
TCefv8ValueArray = array of ICefv8Value;
TCefX509CertificateArray = array of ICefX509Certificate;
@ -103,6 +104,8 @@ type
TOnGetBrowserProcessHandler = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(var aCefBrowserProcessHandler : ICefBrowserProcessHandler) {$IFNDEF DELPHI12_UP}of object{$ENDIF};
TOnGetRenderProcessHandler = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(var aCefRenderProcessHandler : ICefRenderProcessHandler) {$IFNDEF DELPHI12_UP}of object{$ENDIF};
TOnBeforeCommandLineProcessing = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const processType: ustring; const commandLine: ICefCommandLine) {$IFNDEF DELPHI12_UP}of object{$ENDIF};
TOnCustomMessage = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage) {$IFNDEF DELPHI12_UP}of object{$ENDIF};
TOnWebKitReady = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure() {$IFNDEF DELPHI12_UP}of object{$ENDIF};
TCefCompletionCallbackProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure;
TCefSetCookieCallbackProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(success: Boolean);
@ -1196,8 +1199,7 @@ type
ICefResponseFilter = interface(ICefBaseRefCounted)
['{5013BC3C-F1AE-407A-A571-A4C6B1D6831E}']
function InitFilter: Boolean;
function Filter(dataIn: Pointer; dataInSize, dataInRead: NativeUInt;
dataOut: Pointer; dataOutSize, dataOutWritten: NativeUInt): TCefResponseFilterStatus;
function Filter(dataIn: Pointer; dataInSize : NativeUInt; dataInRead: PNativeUInt; dataOut: Pointer; dataOutSize : NativeUInt; dataOutWritten: PNativeUInt): TCefResponseFilterStatus;
end;
ICefRequestHandler = interface(ICefBaseRefCounted)

View File

@ -59,6 +59,7 @@ type
protected
Fpage_width : integer;
Fpage_height : Integer;
Fscale_factor : integer;
Fmargin_top : double;
Fmargin_right : double;
Fmargin_bottom : double;
@ -74,7 +75,8 @@ type
published
property page_width : integer read Fpage_width write Fpage_width default 0;
property page_height : Integer read Fpage_height write Fpage_height default 0;
property page_height : integer read Fpage_height write Fpage_height default 0;
property scale_factor : integer read Fscale_factor write Fscale_factor default 0;
property margin_top : double read Fmargin_top write Fmargin_top;
property margin_right : double read Fmargin_right write Fmargin_right;
property margin_bottom : double read Fmargin_bottom write Fmargin_bottom;
@ -92,6 +94,7 @@ constructor TPDFPrintOptions.Create;
begin
Fpage_width := 0;
Fpage_height := 0;
Fscale_factor := 100;
Fmargin_top := 0;
Fmargin_right := 0;
Fmargin_bottom := 0;

View File

@ -95,16 +95,17 @@ end;
class function TCefProcessMessageRef.New(const name: ustring): ICefProcessMessage;
var
n: TCefString;
TempString : TCefString;
begin
n := CefString(name);
Result := UnWrap(cef_process_message_create(@n));
TempString := CefString(name);
Result := UnWrap(cef_process_message_create(@TempString));
end;
class function TCefProcessMessageRef.UnWrap(data: Pointer): ICefProcessMessage;
begin
if data <> nil then
Result := Create(data) as ICefProcessMessage else
if (data <> nil) then
Result := Create(data) as ICefProcessMessage
else
Result := nil;
end;

View File

@ -47,25 +47,47 @@ unit uCEFRenderProcessHandler;
interface
uses
{$IFDEF DELPHI16_UP}
System.Classes,
{$ELSE}
Classes,
{$ENDIF}
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes, uCEFListValue, uCEFBrowser, uCEFFrame, uCEFRequest,
uCEFv8Context, uCEFv8Exception, uCEFv8StackTrace, uCEFDomNode, uCEFProcessMessage;
type
TCefRenderProcessHandlerOwn = class(TCefBaseRefCountedOwn, ICefRenderProcessHandler)
protected
procedure OnRenderThreadCreated(const extraInfo: ICefListValue); virtual;
procedure OnWebKitInitialized; virtual;
procedure OnBrowserCreated(const browser: ICefBrowser); virtual;
procedure OnBrowserDestroyed(const browser: ICefBrowser); virtual;
function GetLoadHandler: PCefLoadHandler; virtual;
function OnBeforeNavigation(const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; navigationType: TCefNavigationType; isRedirect: Boolean): Boolean; virtual;
procedure OnContextCreated(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context); virtual;
procedure OnContextReleased(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context); virtual;
procedure OnUncaughtException(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context; const exception: ICefV8Exception; const stackTrace: ICefV8StackTrace); virtual;
procedure OnFocusedNodeChanged(const browser: ICefBrowser; const frame: ICefFrame; const node: ICefDomNode); virtual;
function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; virtual;
public
constructor Create; virtual;
protected
procedure OnRenderThreadCreated(const extraInfo: ICefListValue); virtual;
procedure OnWebKitInitialized; virtual;
procedure OnBrowserCreated(const browser: ICefBrowser); virtual;
procedure OnBrowserDestroyed(const browser: ICefBrowser); virtual;
function GetLoadHandler: PCefLoadHandler; virtual;
function OnBeforeNavigation(const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; navigationType: TCefNavigationType; isRedirect: Boolean): Boolean; virtual;
procedure OnContextCreated(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context); virtual;
procedure OnContextReleased(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context); virtual;
procedure OnUncaughtException(const browser: ICefBrowser; const frame: ICefFrame; const context: ICefv8Context; const exception: ICefV8Exception; const stackTrace: ICefV8StackTrace); virtual;
procedure OnFocusedNodeChanged(const browser: ICefBrowser; const frame: ICefFrame; const node: ICefDomNode); virtual;
function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; virtual;
public
constructor Create; virtual;
end;
TCefCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
protected
FMessageName : ustring;
FOnCustomMessage : TOnCustomMessage;
FOnWebKitReady : TOnWebKitReady;
procedure OnWebKitInitialized; override;
function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage): Boolean; override;
public
constructor Create; override;
property MessageName : ustring read FMessageName write FMessageName;
property OnCustomMessage : TOnCustomMessage read FOnCustomMessage write FOnCustomMessage;
property OnWebKitReady : TOnWebKitReady read FOnWebKitReady write FOnWebKitReady;
end;
implementation
@ -159,23 +181,27 @@ begin
end;
// TCefRenderProcessHandlerOwn
constructor TCefRenderProcessHandlerOwn.Create;
begin
inherited CreateData(SizeOf(TCefRenderProcessHandler));
with PCefRenderProcessHandler(FData)^ do
begin
on_render_thread_created := cef_render_process_handler_on_render_thread_created;
on_web_kit_initialized := cef_render_process_handler_on_web_kit_initialized;
on_browser_created := cef_render_process_handler_on_browser_created;
on_browser_destroyed := cef_render_process_handler_on_browser_destroyed;
get_load_handler := cef_render_process_handler_get_load_handler;
on_before_navigation := cef_render_process_handler_on_before_navigation;
on_context_created := cef_render_process_handler_on_context_created;
on_context_released := cef_render_process_handler_on_context_released;
on_uncaught_exception := cef_render_process_handler_on_uncaught_exception;
on_focused_node_changed := cef_render_process_handler_on_focused_node_changed;
on_process_message_received := cef_render_process_handler_on_process_message_received;
end;
begin
on_render_thread_created := cef_render_process_handler_on_render_thread_created;
on_web_kit_initialized := cef_render_process_handler_on_web_kit_initialized;
on_browser_created := cef_render_process_handler_on_browser_created;
on_browser_destroyed := cef_render_process_handler_on_browser_destroyed;
get_load_handler := cef_render_process_handler_get_load_handler;
on_before_navigation := cef_render_process_handler_on_before_navigation;
on_context_created := cef_render_process_handler_on_context_created;
on_context_released := cef_render_process_handler_on_context_released;
on_uncaught_exception := cef_render_process_handler_on_uncaught_exception;
on_focused_node_changed := cef_render_process_handler_on_focused_node_changed;
on_process_message_received := cef_render_process_handler_on_process_message_received;
end;
end;
function TCefRenderProcessHandlerOwn.GetLoadHandler: PCefLoadHandler;
@ -248,4 +274,34 @@ begin
end;
// TCefCustomRenderProcessHandler
constructor TCefCustomRenderProcessHandler.Create;
begin
inherited Create;
FMessageName := '';
FOnCustomMessage := nil;
FOnWebKitReady := nil;
end;
procedure TCefCustomRenderProcessHandler.OnWebKitInitialized;
begin
if assigned(FOnWebKitReady) then FOnWebKitReady();
end;
function TCefCustomRenderProcessHandler.OnProcessMessageReceived(const browser : ICefBrowser;
sourceProcess : TCefProcessId;
const message : ICefProcessMessage): Boolean;
begin
if assigned(FOnCustomMessage) and (message.Name = FMessageName) then
begin
FOnCustomMessage(browser, sourceProcess, message);
Result := True;
end
else
Result := inherited OnProcessMessageReceived(browser, sourceProcess, message);
end;
end.

View File

@ -53,8 +53,7 @@ type
TCefResponseFilterOwn = class(TCefBaseRefCountedOwn, ICefResponseFilter)
protected
function InitFilter: Boolean; virtual; abstract;
function Filter(dataIn: Pointer; dataInSize, dataInRead: NativeUInt; dataOut: Pointer;
dataOutSize, dataOutWritten: NativeUInt): TCefResponseFilterStatus; virtual; abstract;
function Filter(dataIn: Pointer; dataInSize : NativeUInt; dataInRead: PNativeUInt; dataOut: Pointer; dataOutSize : NativeUInt; dataOutWritten: PNativeUInt): TCefResponseFilterStatus; virtual; abstract;
public
constructor Create; virtual;
end;
@ -70,11 +69,11 @@ begin
Result := Ord(InitFilter());
end;
function cef_response_filter_filter(self: PCefResponseFilter; data_in: Pointer; data_in_size, data_in_read: NativeUInt;
data_out: Pointer; data_out_size, data_out_written: NativeUInt): TCefResponseFilterStatus; stdcall;
function cef_response_filter_filter(self: PCefResponseFilter; data_in: Pointer; data_in_size : NativeUInt; var data_in_read: NativeUInt;
data_out: Pointer; data_out_size: NativeUInt; var data_out_written: NativeUInt): TCefResponseFilterStatus; stdcall;
begin
with TCefResponseFilterOwn(CefGetObject(self)) do
Result := Filter(data_in, data_in_size, data_in_read, data_out, data_out_size, data_out_written);
Result := Filter(data_in, data_in_size, @data_in_read, data_out, data_out_size, @data_out_written);
end;
constructor TCefResponseFilterOwn.Create;

View File

@ -90,16 +90,6 @@ type
constructor Create(const aChromiumBrowser : TObject); reintroduce;
end;
TCefGetDocumentTask = class(TCefTaskOwn)
protected
FChromiumBrowser : TObject;
procedure Execute; override;
public
constructor Create(const aChromiumBrowser : TObject); reintroduce;
end;
TCefDeleteCookiesTask = class(TCefTaskOwn)
protected
FCallBack : ICefDeleteCookiesCallback;
@ -152,8 +142,10 @@ begin
//
end;
// TCefTaskRef
procedure TCefTaskRef.Execute;
begin
PCefTask(FData).execute(FData);
@ -167,8 +159,10 @@ begin
Result := nil;
end;
// TCefFastTask
constructor TCefFastTask.Create(const method: TCefFastTaskProc);
begin
inherited Create;
@ -191,7 +185,10 @@ begin
CefPostDelayedTask(threadId, Create(method), Delay);
end;
// TCefGetHTMLTask
constructor TCefGetHTMLTask.Create(const aChromiumBrowser : TObject);
begin
inherited Create;
@ -205,22 +202,10 @@ begin
TChromium(FChromiumBrowser).Internal_GetHTML;
end;
// TCefGetDocumentTask
constructor TCefGetDocumentTask.Create(const aChromiumBrowser : TObject);
begin
inherited Create;
FChromiumBrowser := aChromiumBrowser;
end;
procedure TCefGetDocumentTask.Execute;
begin
if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then
TChromium(FChromiumBrowser).Internal_VisitDOM;
end;
// TCefDeleteCookiesTask
constructor TCefDeleteCookiesTask.Create(const aCallBack : ICefDeleteCookiesCallback);
begin
inherited Create;
@ -236,8 +221,10 @@ begin
CookieManager.DeleteCookies('', '', FCallBack);
end;
// TCefUpdatePrefsTask
constructor TCefUpdatePrefsTask.Create(const aChromiumBrowser : TObject);
begin
inherited Create;
@ -251,8 +238,10 @@ begin
TChromium(FChromiumBrowser).Internal_UpdatePreferences;
end;
// TCefSavePrefsTask
constructor TCefSavePrefsTask.Create(const aChromiumBrowser : TObject);
begin
inherited Create;

View File

@ -265,6 +265,13 @@ type
instance: HINST;
end;
TFileVersionInfo = record
MajorVer : uint16;
MinorVer : uint16;
Release : uint16;
Build : uint16;
end;
// /include/internal/cef_types.h (cef_rect_t)
TCefRect = record
x: Integer;
@ -1636,7 +1643,7 @@ type
TCefResponseFilter = record
base: TCefBaseRefCounted;
init_filter: function(self: PCefResponseFilter): Integer; stdcall;
filter: function(self: PCefResponseFilter; data_in: Pointer; data_in_size, data_in_read: NativeUInt; data_out: Pointer; data_out_size, data_out_written: NativeUInt): TCefResponseFilterStatus; stdcall;
filter: function(self: PCefResponseFilter; data_in: Pointer; data_in_size: NativeUInt; var data_in_read: NativeUInt; data_out: Pointer; data_out_size : NativeUInt; var data_out_written: NativeUInt): TCefResponseFilterStatus; stdcall;
end;
// /include/capi/cef_auth_callback_capi.h (cef_auth_callback_t)
@ -1790,6 +1797,7 @@ type
header_footer_url: TCefString;
page_width: Integer;
page_height: Integer;
scale_factor: Integer;
margin_top: double;
margin_right: double;
margin_bottom: double;