From 6178ab49a53ca670f000670f383bf9d8334079ed Mon Sep 17 00:00:00 2001 From: Salvador Diaz Fau Date: Wed, 15 Mar 2017 14:53:45 +0100 Subject: [PATCH] Update to CEF3.2924.1575 MiniBrowser : Addition of a preferences form, replacement of URLEdt by URLCbx, addition of a custom scheme TCEFApplication : Addition of 3 new properties : EnableSpellingService, EnableMediaStream, EnableSpeechInput TCEFChromium : Renamed internal procedures, addition of UppdatePreferences and SavePreferences procedures, more checks in doOnBeforeClose and doOnClose. TCefChromiumWindow : WebBrowser_OnClose returns False by default --- demos/MiniBrowser/MiniBrowser.dpr | 25 ++- demos/MiniBrowser/MiniBrowser.dproj | 39 ++-- demos/MiniBrowser/MiniBrowser.dproj.local | 14 +- demos/MiniBrowser/MiniBrowser.dsk | 156 +++++++------- demos/MiniBrowser/MiniBrowser.identcache | Bin 344 -> 1590 bytes demos/MiniBrowser/MiniBrowser.stat | 12 +- demos/MiniBrowser/uHelloScheme.pas | 152 ++++++++++++++ demos/MiniBrowser/uMiniBrowser.dfm | 65 +++++- demos/MiniBrowser/uMiniBrowser.pas | 147 +++++++++++-- demos/MiniBrowser/uPreferences.dfm | 193 ++++++++++++++++++ demos/MiniBrowser/uPreferences.pas | 83 ++++++++ demos/SimpleBrowser/SimpleBrowser.dsk | 128 +++++------- demos/SimpleBrowser/SimpleBrowser.identcache | Bin 345 -> 237 bytes demos/SimpleBrowser/SimpleBrowser.stat | 8 +- demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk | 161 ++++++--------- .../SimpleOSRBrowser.identcache | Bin 328 -> 249 bytes demos/SimpleOSRBrowser/SimpleOSRBrowser.stat | 8 +- source/CEF4Delphi.dsk | 188 +++++++++++------ source/CEF4Delphi.stat | 6 +- source/uCEFApplication.pas | 15 +- source/uCEFChromium.pas | 129 +++++++----- source/uCEFChromiumWindow.pas | 9 +- source/uCEFConstants.pas | 4 +- source/uCEFDeleteCookiesCallback.pas | 2 +- source/uCEFDomVisitor.pas | 2 +- source/uCEFMiscFunctions.pas | 70 ++++++- source/uCEFPDFPrintCallback.pas | 2 +- source/uCEFStringVisitor.pas | 2 +- source/uCEFTask.pas | 54 ++++- 29 files changed, 1223 insertions(+), 451 deletions(-) create mode 100644 demos/MiniBrowser/uHelloScheme.pas create mode 100644 demos/MiniBrowser/uPreferences.dfm create mode 100644 demos/MiniBrowser/uPreferences.pas diff --git a/demos/MiniBrowser/MiniBrowser.dpr b/demos/MiniBrowser/MiniBrowser.dpr index aaa73872..09aff154 100644 --- a/demos/MiniBrowser/MiniBrowser.dpr +++ b/demos/MiniBrowser/MiniBrowser.dpr @@ -45,17 +45,27 @@ uses Vcl.Forms, {$ELSE} Forms, - {$ENDIF} + {$ENDIF } uCEFApplication, + uCEFInterfaces, + uCEFMiscFunctions, uMiniBrowser in 'uMiniBrowser.pas' {MiniBrowserFrm}, - uTestExtension in 'uTestExtension.pas'; + uTestExtension in 'uTestExtension.pas', + uHelloScheme in 'uHelloScheme.pas', + uPreferences in 'uPreferences.pas' {PreferencesFrm}; {$R *.res} +procedure GlobalCEFApp_OnRegCustomSchemes(const registrar: ICefSchemeRegistrar); +begin + registrar.AddCustomScheme('hello', True, True, False); +end; + begin GlobalCEFApp := TCefApplication.Create; GlobalCEFApp.RemoteDebuggingPort := 9000; GlobalCEFApp.RenderProcessHandler := TCustomRenderProcessHandler.Create; + GlobalCEFApp.OnRegCustomSchemes := GlobalCEFApp_OnRegCustomSchemes; // Examples of command line switches. // ********************************** @@ -66,19 +76,14 @@ begin // Uncomment the following line to change the user agent string. //GlobalCEFApp.AddCustomCommandLine('--user-agent', 'MiniBrowser'); - - //GlobalCEFApp.LibCef := 'cef\libcef.dll'; - //GlobalCEFApp.FrameworkDirPath := 'k:\cef\'; - //GlobalCEFApp.ResourcesDirPath := 'k:\cef\'; - //GlobalCEFApp.LocalesDirPath := 'k:\cef\locales\'; - //GlobalCEFApp.CheckCEFFiles := False; - - if GlobalCEFApp.StartMainProcess then begin + CefRegisterSchemeHandlerFactory('hello', '', THelloScheme); + Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TMiniBrowserFrm, MiniBrowserFrm); + Application.CreateForm(TPreferencesFrm, PreferencesFrm); Application.Run; end; diff --git a/demos/MiniBrowser/MiniBrowser.dproj b/demos/MiniBrowser/MiniBrowser.dproj index d62656b5..8ad25d74 100644 --- a/demos/MiniBrowser/MiniBrowser.dproj +++ b/demos/MiniBrowser/MiniBrowser.dproj @@ -102,6 +102,11 @@
MiniBrowserFrm
+ + +
PreferencesFrm
+ dfm +
Cfg_2 Base @@ -134,27 +139,12 @@ true - - - 0 - .dll;.bpl - + 1 - .dylib - - - Contents\MacOS - 1 - .dylib 1 - .dylib - - - 1 - .dylib @@ -508,12 +498,27 @@ 1 - + + + 0 + .dll;.bpl + 1 + .dylib + + + Contents\MacOS + 1 + .dylib 1 + .dylib + + + 1 + .dylib diff --git a/demos/MiniBrowser/MiniBrowser.dproj.local b/demos/MiniBrowser/MiniBrowser.dproj.local index aba4c97a..e2b7301e 100644 --- a/demos/MiniBrowser/MiniBrowser.dproj.local +++ b/demos/MiniBrowser/MiniBrowser.dproj.local @@ -2,10 +2,16 @@ 2017/02/11 10:15:32.000.980,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm - 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 2017/02/11 10:16:37.000.392,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj + 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas + 2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.dfm + 2017/02/11 10:16:37.000.392,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj 2017/02/11 17:10:26.000.471,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas - 2017/02/11 17:11:01.000.244,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas + 2017/02/11 17:11:01.000.244,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas + 2017/03/12 17:11:11.000.786,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas + 2017/03/13 19:22:41.000.994,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas= + 2017/03/13 19:23:05.000.371,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas + 2017/03/15 12:39:07.741,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas + 2017/03/15 12:40:51.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm + 2017/03/15 12:40:51.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas diff --git a/demos/MiniBrowser/MiniBrowser.dsk b/demos/MiniBrowser/MiniBrowser.dsk index 622f7b83..28efdda7 100644 --- a/demos/MiniBrowser/MiniBrowser.dsk +++ b/demos/MiniBrowser/MiniBrowser.dsk @@ -1,20 +1,25 @@ [Closed Files] -File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,738,90,771,0,0,, -File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,961,23,995,0,0,, -File_2=TSourceModule,'V:\dcef3-2883\src\ceflib.pas',0,1,2391,60,2406,0,0,, -File_3=TSourceModule,'V:\2924\include\internal\cef_types.h',0,1,173,11,182,0,0,, -File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,1,61,103,0,0,, -File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,397,11,431,0,0,, -File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLibFunctions.pas',0,1,200,75,229,0,0,, -File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFConstants.pas',0,1,208,11,248,0,0,, -File_8=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\RTL\SYS\System.pas',0,1,29880,1,29902,0,0,, +File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas',0,1,31,23,63,0,0,, +File_1=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\vcl\Vcl.Dialogs.pas',0,1,6752,22,6771,0,0,, +File_2=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\Property Editors\FmxAnimationEditors.pas',0,1,1882,37,1904,0,0,, +File_3=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\Property Editors\Indy10\IdDsnPropEdBindingVCL.pas',0,1,789,25,811,0,0,, +File_4=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\Experts\ExpertsUIWizard.pas',0,1,540,33,562,0,0,, +File_5=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_6=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\data\ems\desktopconsole\EMSManagementConsole.FrameAdd.pas',0,1,478,32,500,0,0,, +File_7=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\ObjRepos\en\DelphiWin32\Vcl.recerror.pas',0,1,75,20,97,0,0,, +File_8=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Graphics32\GR32_Dsgn_Bitmap.pas',0,1,316,34,338,0,0,, +File_9=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Indy10\Builder\Package Generator\MgrPkgGenDBMain.pas',0,1,85,27,107,0,0,, [Modules] -Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas -Module1=default.htm -Count=2 +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 +Module2=default.htm +Count=3 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 @@ -24,10 +29,11 @@ FormOnTop=0 ModuleType=TURLModule [EditWindow0] -ViewCount=2 -CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas +ViewCount=3 +CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr View0=0 View1=1 +View2=2 PercentageSizes=1 Create=1 Visible=1 @@ -44,18 +50,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 +RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000110E000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF BottomPanelSize=0 BottomPanelClients=DockSite1,MessageView -BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF +BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002E80600000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF BottomMiddlePanelSize=0 BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF +TabDockLeftClients=DockSite3=0,PropertyInspector=1 [View0] CustomEditViewType=TWelcomePageView @@ -64,14 +69,25 @@ WelcomePageURL=bds:/default.htm [View1] CustomEditViewType=TEditView Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas -CursorX=45 -CursorY=268 -TopLine=233 +CursorX=68 +CursorY=342 +TopLine=356 LeftCol=1 Elisions= Bookmarks= EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas +[View2] +CustomEditViewType=TEditView +Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr +CursorX=3 +CursorY=86 +TopLine=49 +LeftCol=1 +Elisions= +Bookmarks= +EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr + [Watches] Count=0 @@ -86,11 +102,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1121 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1121 +ClientHeight=1345 TBDockHeight=213 LRDockWidth=13602 Dockable=1 @@ -134,11 +150,11 @@ State=0 Left=0 Top=0 Width=2000 -Height=4226 +Height=3117 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4226 +ClientHeight=3117 TBDockHeight=5897 LRDockWidth=2352 Dockable=1 @@ -151,14 +167,14 @@ Visible=0 Docked=1 State=0 Left=0 -Top=0 -Width=2773 -Height=1424 +Top=23 +Width=10000 +Height=1570 MaxLeft=-1 MaxTop=-1 -ClientWidth=2773 -ClientHeight=1424 -TBDockHeight=1424 +ClientWidth=10000 +ClientHeight=1570 +TBDockHeight=1570 LRDockWidth=2773 Dockable=1 StayOnTop=0 @@ -172,11 +188,11 @@ State=0 Left=0 Top=0 Width=2000 -Height=4339 +Height=5448 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4339 +ClientHeight=5448 TBDockHeight=7152 LRDockWidth=2000 Dockable=1 @@ -226,8 +242,8 @@ Create=1 Visible=0 Docked=1 State=0 -Left=-121 -Top=-74 +Left=-8 +Top=-30 Width=1844 Height=3139 MaxLeft=-1 @@ -280,22 +296,22 @@ StayOnTop=0 [PropertyInspector] PercentageSizes=1 Create=1 -Visible=1 +Visible=0 Docked=1 State=0 -Left=0 -Top=362 +Left=1 +Top=24 Width=1898 -Height=5370 +Height=9148 MaxLeft=-1 MaxTop=-1 ClientWidth=1898 -ClientHeight=5370 +ClientHeight=9148 TBDockHeight=7119 LRDockWidth=1898 Dockable=1 StayOnTop=0 -SplitPos=111 +SplitPos=119 [frmDesignPreview] PercentageSizes=1 @@ -366,11 +382,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1121 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1121 +ClientHeight=1345 TBDockHeight=415 LRDockWidth=4953 Dockable=1 @@ -385,11 +401,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1121 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1121 +ClientHeight=1345 TBDockHeight=213 LRDockWidth=7406 Dockable=1 @@ -408,11 +424,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1121 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1121 +ClientHeight=1345 TBDockHeight=1536 LRDockWidth=3484 Dockable=1 @@ -427,11 +443,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1121 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1121 +ClientHeight=1345 TBDockHeight=2063 LRDockWidth=3484 Dockable=1 @@ -549,11 +565,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1121 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1121 +ClientHeight=1345 TBDockHeight=1547 LRDockWidth=8742 Dockable=1 @@ -574,12 +590,12 @@ Docked=1 State=0 Left=0 Top=0 -Width=1898 -Height=3498 +Width=1773 +Height=6693 MaxLeft=-1 MaxTop=-1 -ClientWidth=1898 -ClientHeight=3498 +ClientWidth=1773 +ClientHeight=6693 TBDockHeight=3677 LRDockWidth=1898 Dockable=1 @@ -661,12 +677,12 @@ State=0 Left=0 Top=23 Width=3820 -Height=1424 +Height=1648 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1424 -TBDockHeight=1424 +ClientHeight=1648 +TBDockHeight=1648 LRDockWidth=3820 Dockable=1 StayOnTop=0 @@ -685,11 +701,11 @@ State=0 Left=0 Top=23 Width=2000 -Height=4529 +Height=3419 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4529 +ClientHeight=3419 TBDockHeight=7119 LRDockWidth=2000 Dockable=1 @@ -699,21 +715,21 @@ 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=7119 MaxLeft=-1 MaxTop=-1 -ClientWidth=1898 -ClientHeight=3498 +ClientWidth=1773 +ClientHeight=6693 TBDockHeight=7119 LRDockWidth=1898 Dockable=1 @@ -731,13 +747,13 @@ Visible=1 Docked=1 State=0 Left=0 -Top=454 +Top=355 Width=2000 -Height=4339 +Height=5448 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4339 +ClientHeight=5448 TBDockHeight=7119 LRDockWidth=2000 Dockable=1 diff --git a/demos/MiniBrowser/MiniBrowser.identcache b/demos/MiniBrowser/MiniBrowser.identcache index d221d84473fcde473490efb91e43940e5b7ebc27..2093c12c4b622750a11e8776681a13cbbbb0f944 100644 GIT binary patch literal 1590 zcmcgs%Wm5+5Olwwzu+%0@+eTCx9DNVXoRYEo#e1VK$9DVF+~bXDsg)2pJ#0;K_K-Y z18sDXD2X$i-P!p(8jXI&-ykPfkSNDfZO}tnt_4YolA}A3AVCg}j-vn1lXT38BX|~LS6$O@P zL)^TaO!?4wrc{^pj#*b8$wTdHK`bC~vfl0dt2&ndfRew(>GVsZjOj~OnrW*ea!-r} z^)K`x-3GK?JKLpH|Aq1$|HlyKgm*}2CHjvcJV#^PQr>f4yM&9u-kDqVe0&5KdJVB7 zgt&p_%;wXVZUms1IuQv zo3VN=;r@qq?BF`zFL&dWIaQmU5#mEn^C-B+iGVUrg!N>98|3;=7N2r>Ww diff --git a/demos/MiniBrowser/MiniBrowser.stat b/demos/MiniBrowser/MiniBrowser.stat index 7a57b3e6..4e79b76c 100644 --- a/demos/MiniBrowser/MiniBrowser.stat +++ b/demos/MiniBrowser/MiniBrowser.stat @@ -1,10 +1,10 @@ [Stats] -EditorSecs=8825 -DesignerSecs=233 -InspectorSecs=236 -CompileSecs=450273 -OtherSecs=1279 +EditorSecs=15680 +DesignerSecs=1469 +InspectorSecs=1128 +CompileSecs=710437 +OtherSecs=2298 StartTime=11/02/2017 10:51:15 RealKeys=0 EffectiveKeys=0 -DebugSecs=2514 +DebugSecs=7901 diff --git a/demos/MiniBrowser/uHelloScheme.pas b/demos/MiniBrowser/uHelloScheme.pas new file mode 100644 index 00000000..0ac23cf7 --- /dev/null +++ b/demos/MiniBrowser/uHelloScheme.pas @@ -0,0 +1,152 @@ +// ************************************************************************ +// ***************************** CEF4Delphi ******************************* +// ************************************************************************ +// +// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based +// browser in Delphi applications. +// +// The original license of DCEF3 still applies to CEF4Delphi. +// +// For more information about CEF4Delphi visit : +// https://www.briskbard.com/index.php?lang=en&pageid=cef +// +// Copyright © 2017 Salvador Díaz Fau. All rights reserved. +// +// ************************************************************************ +// ************ vvvv Original license and comments below vvvv ************* +// ************************************************************************ +(* + * Delphi Chromium Embedded 3 + * + * Usage allowed under the restrictions of the Lesser GNU General Public License + * or alternatively the restrictions of the Mozilla Public License 1.1 + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for + * the specific language governing rights and limitations under the License. + * + * Unit owner : Henri Gourvest + * Web site : http://www.progdigy.com + * Repository : http://code.google.com/p/delphichromiumembedded/ + * Group : http://groups.google.com/group/delphichromiumembedded + * + * Embarcadero Technologies, Inc is not permitted to use or redistribute + * this source code without explicit permission. + * + *) + +unit uHelloScheme; + +{$I cef.inc} + +interface +uses + {$IFDEF DELPHI16_UP} + System.Classes, WinApi.Windows, System.SysUtils, + {$ELSE} + Classes, Windows, SysUtils, + {$ENDIF} + uCEFInterfaces, uCEFTypes, uCEFResourceHandler; + +type + THelloScheme = class(TCefResourceHandlerOwn) + private + FStream : TStringStream; + FMimeType : string; + FStatusText : string; + FStatus : Integer; + + protected + function ProcessRequest(const request: ICefRequest; const callback: ICefCallback): Boolean; override; + procedure GetResponseHeaders(const response: ICefResponse; out responseLength: Int64; out redirectUrl: ustring); override; + function ReadResponse(const dataOut: Pointer; bytesToRead: Integer; var bytesRead: Integer; const callback: ICefCallback): Boolean; override; + + public + constructor Create(const browser: ICefBrowser; const frame: ICefFrame; const schemeName: ustring; const request: ICefRequest); override; + destructor Destroy; override; + procedure AfterConstruction; override; + end; + +implementation + +constructor THelloScheme.Create(const browser : ICefBrowser; + const frame : ICefFrame; + const schemeName : ustring; + const request : ICefRequest); +begin + inherited Create(browser, frame, schemeName, request); + + FStream := nil; + FStatus := 0; + FMimeType := ''; + FStatusText := ''; +end; + +destructor THelloScheme.Destroy; +begin + if (FStream <> nil) then FreeAndNil(FStream); + + inherited Destroy; +end; + +procedure THelloScheme.AfterConstruction; +begin + inherited AfterConstruction; + + FStream := TStringStream.Create; +end; + +procedure THelloScheme.GetResponseHeaders(const response : ICefResponse; + out responseLength : Int64; + out redirectUrl : ustring); +begin + if (response <> nil) then + begin + response.Status := FStatus; + response.StatusText := FStatusText; + response.MimeType := FMimeType; + end; + + if (FStream <> nil) then + responseLength := FStream.Size + else + responseLength := 0; +end; + +function THelloScheme.ProcessRequest(const request : ICefRequest; const callback : ICefCallback): Boolean; +begin + Result := True; + FStatus := 200; + FStatusText := 'OK'; + FMimeType := 'text/html'; + + if (FStream <> nil) and (request <> nil) then + begin + FStream.Clear; + FStream.WriteString('Hello world!
' + + request.URL + + ''); + end; + + if (callback <> nil) then callback.Cont; +end; + +function THelloScheme.ReadResponse(const dataOut : Pointer; + bytesToRead : Integer; + var bytesRead : Integer; + const callback : ICefCallback): Boolean; +begin + if (FStream <> nil) and (DataOut <> nil) then + begin + FStream.Seek(0, soFromBeginning); + + Result := True; + BytesRead := FStream.Read(DataOut^, BytesToRead); + + if (callback <> nil) then callback.Cont; + end + else + Result := False; +end; + +end. diff --git a/demos/MiniBrowser/uMiniBrowser.dfm b/demos/MiniBrowser/uMiniBrowser.dfm index ec5d8d6f..c3869709 100644 --- a/demos/MiniBrowser/uMiniBrowser.dfm +++ b/demos/MiniBrowser/uMiniBrowser.dfm @@ -109,30 +109,56 @@ object MiniBrowserFrm: TMiniBrowserFrm object URLEditPnl: TPanel Left = 133 Top = 0 - Width = 956 + Width = 915 Height = 41 Align = alClient BevelOuter = bvNone Padding.Top = 9 - Padding.Right = 8 Padding.Bottom = 8 ShowCaption = False TabOrder = 1 - object URLEdt: TEdit + ExplicitWidth = 844 + object URLCbx: TComboBox Left = 0 Top = 9 - Width = 948 - Height = 24 + Width = 915 + Height = 21 Align = alClient - Font.Charset = DEFAULT_CHARSET + TabOrder = 0 + Text = 'https://www.google.com' + OnKeyUp = URLCbxKeyUp + OnSelect = URLCbxSelect + Items.Strings = ( + 'https://www.google.com' + 'hello://world/' + + 'https://www.whatismybrowser.com/detect/what-http-headers-is-my-b' + + 'rowser-sending') + ExplicitWidth = 948 + end + end + object ConfigPnl: TPanel + Left = 1048 + Top = 0 + Width = 41 + Height = 41 + Align = alRight + BevelOuter = bvNone + TabOrder = 2 + object ConfigBtn: TButton + Left = 8 + Top = 8 + Width = 25 + Height = 25 + Caption = #8801 + Font.Charset = ANSI_CHARSET Font.Color = clWindowText - Font.Height = -15 - Font.Name = 'Tahoma' - Font.Style = [] + Font.Height = -17 + Font.Name = 'Arial' + Font.Style = [fsBold] ParentFont = False TabOrder = 0 - OnKeyUp = URLEdtKeyUp - ExplicitHeight = 26 + OnClick = ConfigBtnClick end end end @@ -164,6 +190,7 @@ object MiniBrowserFrm: TMiniBrowserFrm end> end object Chromium1: TChromium + OnTextResultAvailable = Chromium1TextResultAvailable OnProcessMessageReceived = Chromium1ProcessMessageReceived OnLoadingStateChange = Chromium1LoadingStateChange OnBeforeContextMenu = Chromium1BeforeContextMenu @@ -175,4 +202,20 @@ object MiniBrowserFrm: TMiniBrowserFrm Left = 424 Top = 352 end + object PopupMenu1: TPopupMenu + OnPopup = PopupMenu1Popup + Left = 664 + Top = 104 + object DevTools1: TMenuItem + Caption = 'DevTools' + OnClick = DevTools1Click + end + object N1: TMenuItem + Caption = '-' + end + object Preferences1: TMenuItem + Caption = 'Preferences...' + OnClick = Preferences1Click + end + end end diff --git a/demos/MiniBrowser/uMiniBrowser.pas b/demos/MiniBrowser/uMiniBrowser.pas index 63be762d..c4621ea8 100644 --- a/demos/MiniBrowser/uMiniBrowser.pas +++ b/demos/MiniBrowser/uMiniBrowser.pas @@ -44,24 +44,27 @@ interface uses {$IFDEF DELPHI16_UP} Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, - Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Types, Vcl.ComCtrls, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.Types, Vcl.ComCtrls, Vcl.ClipBrd, {$ELSE} Windows, Messages, SysUtils, Variants, Classes, Graphics, - Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Types, ComCtrls, + Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Types, ComCtrls, ClipBrd, {$ENDIF} - uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants; + uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants, + Vcl.Menus; const MINIBROWSER_CREATED = WM_APP + $100; MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101; MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102; + MINIBROWSER_COPYHTML = WM_APP + $103; - MINIBROWSER_HOMEPAGE = 'http://www.google.com'; + MINIBROWSER_HOMEPAGE = 'https://www.google.com'; MINIBROWSER_CONTEXTMENU_SHOWDEVTOOLS = MENU_ID_USER_FIRST + 1; MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS = MENU_ID_USER_FIRST + 2; MINIBROWSER_CONTEXTMENU_SHOWJSALERT = MENU_ID_USER_FIRST + 3; MINIBROWSER_CONTEXTMENU_SETJSEVENT = MENU_ID_USER_FIRST + 4; + MINIBROWSER_CONTEXTMENU_COPYHTML = MENU_ID_USER_FIRST + 5; type TMiniBrowserFrm = class(TForm) @@ -71,16 +74,20 @@ type BackBtn: TButton; ForwardBtn: TButton; ReloadBtn: TButton; - URLEdt: TEdit; CEFWindowParent1: TCEFWindowParent; Chromium1: TChromium; StopBtn: TButton; DevTools: TCEFWindowParent; Splitter1: TSplitter; StatusBar1: TStatusBar; + URLCbx: TComboBox; + ConfigPnl: TPanel; + ConfigBtn: TButton; + PopupMenu1: TPopupMenu; + DevTools1: TMenuItem; + N1: TMenuItem; + Preferences1: TMenuItem; procedure FormShow(Sender: TObject); - procedure URLEdtKeyUp(Sender: TObject; var Key: Word; - Shift: TShiftState); procedure BackBtnClick(Sender: TObject); procedure ForwardBtnClick(Sender: TObject); procedure ReloadBtnClick(Sender: TObject); @@ -106,14 +113,27 @@ type const message: ICefProcessMessage; out Result: Boolean); procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring); + procedure Chromium1TextResultAvailable(Sender: TObject; + const aText: string); + procedure URLCbxKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure URLCbxSelect(Sender: TObject); + procedure PopupMenu1Popup(Sender: TObject); + procedure DevTools1Click(Sender: TObject); + procedure Preferences1Click(Sender: TObject); + procedure ConfigBtnClick(Sender: TObject); protected - procedure ShowDevTools(aPoint : TPoint); + procedure AddURL(const aURL : string); + + procedure ShowDevTools(aPoint : TPoint); overload; + procedure ShowDevTools; overload; procedure HideDevTools; procedure BrowserCreatedMsg(var aMessage : TMessage); message MINIBROWSER_CREATED; procedure ShowDevToolsMsg(var aMessage : TMessage); message MINIBROWSER_SHOWDEVTOOLS; procedure HideDevToolsMsg(var aMessage : TMessage); message MINIBROWSER_HIDEDEVTOOLS; + procedure CopyHTMLMsg(var aMessage : TMessage); message MINIBROWSER_COPYHTML; public end; @@ -125,6 +145,9 @@ implementation {$R *.dfm} +uses + uPreferences; + procedure TMiniBrowserFrm.BackBtnClick(Sender: TObject); begin Chromium1.GoBack; @@ -143,7 +166,7 @@ end; procedure TMiniBrowserFrm.Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring); begin - URLEdt.Text := url; + AddURL(url); end; procedure TMiniBrowserFrm.Chromium1AfterCreated(Sender: TObject; @@ -158,7 +181,8 @@ procedure TMiniBrowserFrm.Chromium1BeforeContextMenu(Sender: TObject; begin model.AddSeparator; model.AddItem(MINIBROWSER_CONTEXTMENU_SHOWJSALERT, 'Show JS Alert'); - model.AddItem(MINIBROWSER_CONTEXTMENU_SETJSEVENT, 'Set mouseover event'); + model.AddItem(MINIBROWSER_CONTEXTMENU_SETJSEVENT, 'Set mouseover event'); + model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard'); if DevTools.Visible then model.AddItem(MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS, 'Hide DevTools') @@ -200,6 +224,9 @@ begin '};'+ 'app.mouseover(getpath(evt.target))}'+ ')', 'about:blank', 0); + + MINIBROWSER_CONTEXTMENU_COPYHTML : + PostMessage(Handle, MINIBROWSER_COPYHTML, 0, 0); end; end; @@ -231,6 +258,11 @@ begin StatusBar1.Panels[0].Text := value; end; +procedure TMiniBrowserFrm.Chromium1TextResultAvailable(Sender: TObject; const aText: string); +begin + clipboard.AsText := aText; +end; + procedure TMiniBrowserFrm.Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); begin @@ -240,12 +272,6 @@ begin caption := 'MiniBrowser'; end; -procedure TMiniBrowserFrm.URLEdtKeyUp(Sender: TObject; var Key: Word; - Shift: TShiftState); -begin - if (Key = 13) then Chromium1.LoadURL(URLEdt.Text); -end; - procedure TMiniBrowserFrm.FormShow(Sender: TObject); begin Chromium1.CreateBrowser(CEFWindowParent1, ''); @@ -254,10 +280,17 @@ end; procedure TMiniBrowserFrm.BrowserCreatedMsg(var aMessage : TMessage); begin NavControlPnl.Enabled := True; - URLEdt.Text := MINIBROWSER_HOMEPAGE; + AddURL(MINIBROWSER_HOMEPAGE); Chromium1.LoadURL(MINIBROWSER_HOMEPAGE); end; +procedure TMiniBrowserFrm.AddURL(const aURL : string); +begin + if (URLCbx.Items.IndexOf(aURL) < 0) then URLCbx.Items.Add(aURL); + + URLCbx.Text := aURL; +end; + procedure TMiniBrowserFrm.ShowDevToolsMsg(var aMessage : TMessage); var TempPoint : TPoint; @@ -272,6 +305,77 @@ begin HideDevTools; end; +procedure TMiniBrowserFrm.PopupMenu1Popup(Sender: TObject); +begin + if DevTools.Visible then + DevTools1.Caption := 'Hide DevTools' + else + DevTools1.Caption := 'Show DevTools'; +end; + +procedure TMiniBrowserFrm.Preferences1Click(Sender: TObject); +begin + PreferencesFrm.ProxyTypeCbx.ItemIndex := Chromium1.ProxyType; + PreferencesFrm.ProxyServerEdt.Text := Chromium1.ProxyServer; + PreferencesFrm.ProxyPortEdt.Text := inttostr(Chromium1.ProxyPort); + PreferencesFrm.ProxyUsernameEdt.Text := Chromium1.ProxyUsername; + PreferencesFrm.ProxyPasswordEdt.Text := Chromium1.ProxyPassword; + PreferencesFrm.ProxyScriptURLEdt.Text := Chromium1.ProxyScriptURL; + PreferencesFrm.ProxyByPassListEdt.Text := Chromium1.ProxyByPassList; + PreferencesFrm.HeaderNameEdt.Text := Chromium1.CustomHeaderName; + PreferencesFrm.HeaderValueEdt.Text := Chromium1.CustomHeaderValue; + + if (PreferencesFrm.ShowModal = mrOk) then + begin + Chromium1.ProxyType := PreferencesFrm.ProxyTypeCbx.ItemIndex; + Chromium1.ProxyServer := PreferencesFrm.ProxyServerEdt.Text; + Chromium1.ProxyPort := strtoint(PreferencesFrm.ProxyPortEdt.Text); + Chromium1.ProxyUsername := PreferencesFrm.ProxyUsernameEdt.Text; + Chromium1.ProxyPassword := PreferencesFrm.ProxyPasswordEdt.Text; + Chromium1.ProxyScriptURL := PreferencesFrm.ProxyScriptURLEdt.Text; + Chromium1.ProxyByPassList := PreferencesFrm.ProxyByPassListEdt.Text; + Chromium1.CustomHeaderName := PreferencesFrm.HeaderNameEdt.Text; + Chromium1.CustomHeaderValue := PreferencesFrm.HeaderValueEdt.Text; + + Chromium1.UpdatePreferences; + end; +end; + +procedure TMiniBrowserFrm.URLCbxKeyUp(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if (Key = 13) then Chromium1.LoadURL(URLCbx.Text); +end; + +procedure TMiniBrowserFrm.URLCbxSelect(Sender: TObject); +begin + Chromium1.LoadURL(URLCbx.Text); +end; + +procedure TMiniBrowserFrm.ConfigBtnClick(Sender: TObject); +var + TempPoint : TPoint; +begin + TempPoint.x := ConfigBtn.left; + TempPoint.y := ConfigBtn.top + ConfigBtn.Height; + TempPoint := ConfigPnl.ClientToScreen(TempPoint); + + PopupMenu1.Popup(TempPoint.x, TempPoint.y); +end; + +procedure TMiniBrowserFrm.CopyHTMLMsg(var aMessage : TMessage); +begin + Chromium1.RetrieveHTML; +end; + +procedure TMiniBrowserFrm.DevTools1Click(Sender: TObject); +begin + if DevTools.Visible then + HideDevTools + else + ShowDevTools; +end; + procedure TMiniBrowserFrm.ShowDevTools(aPoint : TPoint); begin Splitter1.Visible := True; @@ -280,6 +384,15 @@ begin Chromium1.ShowDevTools(aPoint, DevTools); end; +procedure TMiniBrowserFrm.ShowDevTools; +var + TempPoint : TPoint; +begin + TempPoint.x := low(integer); + TempPoint.y := low(integer); + ShowDevTools(TempPoint); +end; + procedure TMiniBrowserFrm.HideDevTools; begin Chromium1.CloseDevTools(DevTools); diff --git a/demos/MiniBrowser/uPreferences.dfm b/demos/MiniBrowser/uPreferences.dfm new file mode 100644 index 00000000..db0bad72 --- /dev/null +++ b/demos/MiniBrowser/uPreferences.dfm @@ -0,0 +1,193 @@ +object PreferencesFrm: TPreferencesFrm + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Preferences' + ClientHeight = 363 + ClientWidth = 428 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Button1: TButton + Left = 232 + Top = 330 + Width = 75 + Height = 25 + Caption = 'Ok' + ModalResult = 1 + TabOrder = 2 + end + object Button2: TButton + Left = 345 + Top = 330 + Width = 75 + Height = 25 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 3 + end + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 412 + Height = 223 + Caption = ' Proxy ' + TabOrder = 0 + object ProxyTypeLbl: TLabel + Left = 12 + Top = 27 + Width = 24 + Height = 13 + Caption = 'Type' + end + object ProxyServerLbl: TLabel + Left = 12 + Top = 56 + Width = 32 + Height = 13 + Caption = 'Server' + end + object ProxyPortLbl: TLabel + Left = 12 + Top = 83 + Width = 20 + Height = 13 + Caption = 'Port' + end + object ProxyUsernameLbl: TLabel + Left = 12 + Top = 110 + Width = 48 + Height = 13 + Caption = 'Username' + end + object ProxyPasswordLbl: TLabel + Left = 12 + Top = 137 + Width = 46 + Height = 13 + Caption = 'Password' + end + object ProxyScriptURLLbl: TLabel + Left = 12 + Top = 164 + Width = 49 + Height = 13 + Caption = 'Script URL' + end + object ProxyByPassListLbl: TLabel + Left = 12 + Top = 191 + Width = 50 + Height = 13 + Caption = 'ByPass list' + end + object ProxyTypeCbx: TComboBox + Left = 108 + Top = 24 + Width = 292 + Height = 21 + Style = csDropDownList + ItemIndex = 0 + TabOrder = 0 + Text = 'Direct' + Items.Strings = ( + 'Direct' + 'Autodetect' + 'System' + 'Fixed servers' + 'PAC script') + end + object ProxyServerEdt: TEdit + Left = 108 + Top = 53 + Width = 292 + Height = 21 + TabOrder = 1 + end + object ProxyPortEdt: TEdit + Left = 108 + Top = 80 + Width = 292 + Height = 21 + MaxLength = 5 + NumbersOnly = True + TabOrder = 2 + Text = '80' + end + object ProxyUsernameEdt: TEdit + Left = 108 + Top = 107 + Width = 292 + Height = 21 + TabOrder = 3 + end + object ProxyPasswordEdt: TEdit + Left = 108 + Top = 134 + Width = 292 + Height = 21 + PasswordChar = '*' + TabOrder = 4 + end + object ProxyScriptURLEdt: TEdit + Left = 108 + Top = 161 + Width = 292 + Height = 21 + TabOrder = 5 + end + object ProxyByPassListEdt: TEdit + Left = 108 + Top = 188 + Width = 292 + Height = 21 + TabOrder = 6 + end + end + object GroupBox2: TGroupBox + Left = 8 + Top = 237 + Width = 412 + Height = 84 + Caption = ' Custom header ' + TabOrder = 1 + object HeaderNameLbl: TLabel + Left = 12 + Top = 26 + Width = 27 + Height = 13 + Caption = 'Name' + end + object HeaderValueLbl: TLabel + Left = 12 + Top = 53 + Width = 26 + Height = 13 + Caption = 'Value' + end + object HeaderNameEdt: TEdit + Left = 108 + Top = 23 + Width = 292 + Height = 21 + TabOrder = 0 + end + object HeaderValueEdt: TEdit + Left = 108 + Top = 50 + Width = 292 + Height = 21 + TabOrder = 1 + end + end +end diff --git a/demos/MiniBrowser/uPreferences.pas b/demos/MiniBrowser/uPreferences.pas new file mode 100644 index 00000000..a9433ab9 --- /dev/null +++ b/demos/MiniBrowser/uPreferences.pas @@ -0,0 +1,83 @@ +// ************************************************************************ +// ***************************** CEF4Delphi ******************************* +// ************************************************************************ +// +// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based +// browser in Delphi applications. +// +// The original license of DCEF3 still applies to CEF4Delphi. +// +// For more information about CEF4Delphi visit : +// https://www.briskbard.com/index.php?lang=en&pageid=cef +// +// Copyright © 2017 Salvador Díaz Fau. All rights reserved. +// +// ************************************************************************ +// ************ vvvv Original license and comments below vvvv ************* +// ************************************************************************ +(* + * Delphi Chromium Embedded 3 + * + * Usage allowed under the restrictions of the Lesser GNU General Public License + * or alternatively the restrictions of the Mozilla Public License 1.1 + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for + * the specific language governing rights and limitations under the License. + * + * Unit owner : Henri Gourvest + * Web site : http://www.progdigy.com + * Repository : http://code.google.com/p/delphichromiumembedded/ + * Group : http://groups.google.com/group/delphichromiumembedded + * + * Embarcadero Technologies, Inc is not permitted to use or redistribute + * this source code without explicit permission. + * + *) + +unit uPreferences; + +interface + +uses + Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; + +type + TPreferencesFrm = class(TForm) + Button1: TButton; + Button2: TButton; + GroupBox1: TGroupBox; + ProxyTypeCbx: TComboBox; + ProxyTypeLbl: TLabel; + ProxyServerLbl: TLabel; + ProxyServerEdt: TEdit; + ProxyPortLbl: TLabel; + ProxyPortEdt: TEdit; + ProxyUsernameLbl: TLabel; + ProxyUsernameEdt: TEdit; + ProxyPasswordLbl: TLabel; + ProxyPasswordEdt: TEdit; + ProxyScriptURLEdt: TEdit; + ProxyScriptURLLbl: TLabel; + ProxyByPassListEdt: TEdit; + ProxyByPassListLbl: TLabel; + GroupBox2: TGroupBox; + HeaderNameEdt: TEdit; + HeaderNameLbl: TLabel; + HeaderValueEdt: TEdit; + HeaderValueLbl: TLabel; + private + { Private declarations } + public + { Public declarations } + end; + +var + PreferencesFrm: TPreferencesFrm; + +implementation + +{$R *.dfm} + +end. diff --git a/demos/SimpleBrowser/SimpleBrowser.dsk b/demos/SimpleBrowser/SimpleBrowser.dsk index 02439314..9be7ee50 100644 --- a/demos/SimpleBrowser/SimpleBrowser.dsk +++ b/demos/SimpleBrowser/SimpleBrowser.dsk @@ -1,5 +1,5 @@ [Closed Files] -File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,1,57,51,0,0,, +File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,55,70,89,0,0,, File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,1,30,47,0,0,, File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,205,3,222,0,0,, File_3=TSourceModule,'V:\dcef3-2883\src\ceflib.pas',0,1,32,2,32,0,0,, @@ -8,13 +8,11 @@ File_5=TSourceModule,'V:\dcef3-2883\src\cef.inc',0,1,82,7,119,0,0,, File_6=TSourceModule,'V:\dcef3-2883\src\cefgui.pas',0,1,1,1,1,0,0,, File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,199,23,221,0,0,, File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFClient.pas',0,1,45,32,52,0,0,, -File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBase.pas',0,1,136,89,152,0,0,, [Modules] Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas -Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dproj -Module2=default.htm -Count=3 +Module1=default.htm +Count=2 EditWindowCount=1 [C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas] @@ -22,18 +20,14 @@ ModuleType=TSourceModule FormState=1 FormOnTop=0 -[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dproj] -ModuleType=TBaseProject - [default.htm] ModuleType=TURLModule [EditWindow0] -ViewCount=3 +ViewCount=2 CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas View0=0 View1=1 -View2=2 PercentageSizes=1 Create=1 Visible=1 @@ -52,15 +46,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0 TopPanelSize=0 LeftPanelSize=0 RightPanelSize=2000 -RightPanelClients=DockSite2,DockSite4 -RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF +RightPanelClients=DockSite2 +RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF BottomPanelSize=0 BottomPanelClients=DockSite1,MessageView -BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF +BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B36000000000000020F06000000000000FFFFFFFF BottomMiddlePanelSize=0 BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF TabDockLeftClients=PropertyInspector=0,DockSite3=1 +TabDockRightClients=DockSite4=0 [View0] CustomEditViewType=TWelcomePageView @@ -68,20 +63,9 @@ WelcomePageURL=bds:/default.htm [View1] CustomEditViewType=TEditView -Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dpr -CursorX=3 -CursorY=46 -TopLine=13 -LeftCol=1 -Elisions= -Bookmarks= -EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\SimpleBrowser.dpr - -[View2] -CustomEditViewType=TEditView Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas -CursorX=54 -CursorY=57 +CursorX=69 +CursorY=68 TopLine=31 LeftCol=1 Elisions= @@ -102,11 +86,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=13602 Dockable=1 @@ -150,11 +134,11 @@ State=0 Left=0 Top=0 Width=2000 -Height=4226 +Height=8868 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4226 +ClientHeight=8868 TBDockHeight=5897 LRDockWidth=2352 Dockable=1 @@ -167,14 +151,14 @@ Visible=0 Docked=1 State=0 Left=0 -Top=0 +Top=23 Width=2773 -Height=1424 +Height=1345 MaxLeft=-1 MaxTop=-1 ClientWidth=2773 -ClientHeight=1424 -TBDockHeight=1424 +ClientHeight=1345 +TBDockHeight=1345 LRDockWidth=2773 Dockable=1 StayOnTop=0 @@ -187,12 +171,12 @@ Docked=1 State=0 Left=0 Top=0 -Width=2000 -Height=4339 +Width=1875 +Height=6738 MaxLeft=-1 MaxTop=-1 -ClientWidth=2000 -ClientHeight=4339 +ClientWidth=1875 +ClientHeight=6738 TBDockHeight=7152 LRDockWidth=2000 Dockable=1 @@ -302,12 +286,12 @@ State=0 Left=78 Top=386 Width=1898 -Height=7119 +Height=7164 MaxLeft=-1 MaxTop=-1 -ClientWidth=1898 -ClientHeight=7119 -TBDockHeight=7119 +ClientWidth=1773 +ClientHeight=6738 +TBDockHeight=7164 LRDockWidth=1898 Dockable=1 StayOnTop=0 @@ -357,8 +341,8 @@ Create=1 Visible=0 Docked=1 State=0 -Left=-1152 -Top=243 +Left=-8 +Top=287 Width=273 Height=359 MaxLeft=-1 @@ -382,11 +366,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 @@ -401,11 +385,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 @@ -424,11 +408,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 @@ -443,11 +427,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 @@ -565,11 +549,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,11 +575,11 @@ State=0 Left=0 Top=0 Width=1773 -Height=6693 +Height=6738 MaxLeft=-1 MaxTop=-1 ClientWidth=1773 -ClientHeight=6693 +ClientHeight=6738 TBDockHeight=3677 LRDockWidth=1898 Dockable=1 @@ -677,12 +661,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 @@ -701,12 +685,12 @@ State=0 Left=0 Top=23 Width=2000 -Height=4529 +Height=9170 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4529 -TBDockHeight=7119 +ClientHeight=9170 +TBDockHeight=7164 LRDockWidth=2000 Dockable=1 StayOnTop=0 @@ -725,12 +709,12 @@ State=0 Left=0 Top=0 Width=1898 -Height=7119 +Height=7164 MaxLeft=-1 MaxTop=-1 ClientWidth=1773 -ClientHeight=6693 -TBDockHeight=7119 +ClientHeight=6738 +TBDockHeight=7164 LRDockWidth=1898 Dockable=1 StayOnTop=0 @@ -739,22 +723,22 @@ ActiveTabID=StructureView TabDockClients=StructureView,ClassBrowserTool [DockSite4] -HostDockSite=DockRightPanel +HostDockSite=RightTabDock DockSiteType=1 PercentageSizes=1 Create=1 -Visible=1 +Visible=0 Docked=1 State=0 Left=0 -Top=454 +Top=0 Width=2000 -Height=4339 +Height=7164 MaxLeft=-1 MaxTop=-1 -ClientWidth=2000 -ClientHeight=4339 -TBDockHeight=7119 +ClientWidth=1875 +ClientHeight=6738 +TBDockHeight=7164 LRDockWidth=2000 Dockable=1 StayOnTop=0 diff --git a/demos/SimpleBrowser/SimpleBrowser.identcache b/demos/SimpleBrowser/SimpleBrowser.identcache index d94284bcadff458261044e4184b10e03ae7f1dc1..06271b87c7204225ae2108e53cf09e698809149a 100644 GIT binary patch delta 12 Tcmcb~^p=s4X(D6!#3!Wy9OeYT delta 47 zcmaFMc$0~dc_L#uWBkNQC)wis(xT+lm{Mm~H|LC^{M^ja-0;l2l>BnNg2dv9IgJ2| C&=Gt9 diff --git a/demos/SimpleBrowser/SimpleBrowser.stat b/demos/SimpleBrowser/SimpleBrowser.stat index 638b656f..f5e37285 100644 --- a/demos/SimpleBrowser/SimpleBrowser.stat +++ b/demos/SimpleBrowser/SimpleBrowser.stat @@ -1,10 +1,10 @@ [Stats] -EditorSecs=2230 +EditorSecs=2475 DesignerSecs=267 InspectorSecs=136 -CompileSecs=89840 -OtherSecs=367 +CompileSecs=119220 +OtherSecs=449 StartTime=22/01/2017 14:51:01 RealKeys=0 EffectiveKeys=0 -DebugSecs=404 +DebugSecs=571 diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk index 33f083ca..02d2966c 100644 --- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk +++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk @@ -1,39 +1,27 @@ [Closed Files] -File_0=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Graphics32\GR32_Image.pas',0,1,1,35,23,0,0,, -File_1=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Graphics32\Readme.txt',0,1,1,63,6,0,0,, -File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,1,39,51,0,0,, -File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\CEF4Delphi\uCEFTypes.pas',0,1,1,1,1,0,0,, -File_4=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\misc\uPopUpBrowserCEFFrm.pas',0,1,121,19,154,0,0,, -File_5=TSourceModule,'c:\program files\embarcadero\studio\17.0\CEF4Delphi\uCEFChromium.pas',0,1,1131,67,1155,0,0,, -File_6=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,6113,1,6135,0,0,, -File_7=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\base_components\uHTTPCEFPanel.pas',0,1,652,71,689,0,0,, -File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.pas',0,1,31,3,33,0,0,, -File_9=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\base_components\uBrowserTabBody.pas',0,1,2182,21,2205,0,0,, +File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,13,49,53,0,0,, +File_1=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Graphics32\GR32_Image.pas',0,1,1,35,23,0,0,, +File_2=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Graphics32\Readme.txt',0,1,1,63,6,0,0,, +File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,1,39,51,0,0,, +File_4=TSourceModule,'c:\program files\embarcadero\studio\17.0\CEF4Delphi\uCEFTypes.pas',0,1,1,1,1,0,0,, +File_5=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\misc\uPopUpBrowserCEFFrm.pas',0,1,121,19,154,0,0,, +File_6=TSourceModule,'c:\program files\embarcadero\studio\17.0\CEF4Delphi\uCEFChromium.pas',0,1,1131,67,1155,0,0,, +File_7=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,6113,1,6135,0,0,, +File_8=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\Componentes\base_components\uHTTPCEFPanel.pas',0,1,652,71,689,0,0,, +File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.pas',0,1,31,3,33,0,0,, [Modules] -Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas -Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj -Module2=default.htm -Count=3 +Module0=default.htm +Count=1 EditWindowCount=1 -[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas] -ModuleType=TSourceModule -FormState=1 -FormOnTop=0 - -[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj] -ModuleType=TBaseProject - [default.htm] ModuleType=TURLModule [EditWindow0] -ViewCount=3 -CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas +ViewCount=1 +CurrentView=0 View0=0 -View1=1 -View2=2 PercentageSizes=1 Create=1 Visible=1 @@ -52,42 +40,21 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0 TopPanelSize=0 LeftPanelSize=0 RightPanelSize=2000 -RightPanelClients=DockSite2,DockSite4 -RightPanelData=000008000101000000001E1500000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000511D000009000000446F636B5369746534FFFFFFFF -BottomPanelSize=1551 +RightPanelClients=DockSite2 +RightPanelData=00000800010100000000551500000000000001D00700000000000001000000009D1D000009000000446F636B5369746532FFFFFFFF +BottomPanelSize=1475 BottomPanelClients=DockSite1,MessageView -BottomPanelData=0000080001020100000009000000446F636B53697465313B36000000000000020F0600000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF +BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF BottomMiddlePanelSize=0 BottomMiddlePanelClients=DockSite0,GraphDrawingModel BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF TabDockLeftClients=PropertyInspector=0,DockSite3=1 +TabDockRightClients=DockSite4=0 [View0] CustomEditViewType=TWelcomePageView WelcomePageURL=bds:/default.htm -[View1] -CustomEditViewType=TEditView -Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr -CursorX=1 -CursorY=47 -TopLine=1 -LeftCol=1 -Elisions= -Bookmarks= -EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr - -[View2] -CustomEditViewType=TEditView -Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas -CursorX=49 -CursorY=53 -TopLine=1 -LeftCol=1 -Elisions= -Bookmarks= -EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas - [Watches] Count=0 @@ -102,11 +69,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1043 +Height=964 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1043 +ClientHeight=964 TBDockHeight=213 LRDockWidth=13602 Dockable=1 @@ -150,11 +117,11 @@ State=0 Left=0 Top=0 Width=2000 -Height=4226 +Height=7276 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4226 +ClientHeight=7276 TBDockHeight=5897 LRDockWidth=2352 Dockable=1 @@ -169,12 +136,12 @@ State=0 Left=0 Top=23 Width=10000 -Height=1345 +Height=1267 MaxLeft=-1 MaxTop=-1 ClientWidth=10000 -ClientHeight=1345 -TBDockHeight=1345 +ClientHeight=1267 +TBDockHeight=1267 LRDockWidth=2773 Dockable=1 StayOnTop=0 @@ -187,12 +154,12 @@ Docked=1 State=0 Left=0 Top=0 -Width=2000 -Height=2668 +Width=1875 +Height=6738 MaxLeft=-1 MaxTop=-1 -ClientWidth=2000 -ClientHeight=2668 +ClientWidth=1875 +ClientHeight=6738 TBDockHeight=7152 LRDockWidth=2000 Dockable=1 @@ -302,12 +269,12 @@ State=0 Left=78 Top=386 Width=1898 -Height=7119 +Height=7164 MaxLeft=-1 MaxTop=-1 -ClientWidth=1898 -ClientHeight=7119 -TBDockHeight=7119 +ClientWidth=1773 +ClientHeight=6738 +TBDockHeight=7164 LRDockWidth=1898 Dockable=1 StayOnTop=0 @@ -357,8 +324,8 @@ Create=1 Visible=0 Docked=1 State=0 -Left=-1152 -Top=243 +Left=-8 +Top=287 Width=273 Height=359 MaxLeft=-1 @@ -382,11 +349,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1043 +Height=964 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1043 +ClientHeight=964 TBDockHeight=415 LRDockWidth=4953 Dockable=1 @@ -401,11 +368,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1043 +Height=964 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1043 +ClientHeight=964 TBDockHeight=213 LRDockWidth=7406 Dockable=1 @@ -424,11 +391,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1043 +Height=964 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1043 +ClientHeight=964 TBDockHeight=1536 LRDockWidth=3484 Dockable=1 @@ -443,11 +410,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1043 +Height=964 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1043 +ClientHeight=964 TBDockHeight=2063 LRDockWidth=3484 Dockable=1 @@ -565,11 +532,11 @@ State=0 Left=0 Top=0 Width=3820 -Height=1043 +Height=964 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1043 +ClientHeight=964 TBDockHeight=1547 LRDockWidth=8742 Dockable=1 @@ -591,11 +558,11 @@ State=0 Left=0 Top=0 Width=1773 -Height=6693 +Height=6738 MaxLeft=-1 MaxTop=-1 ClientWidth=1773 -ClientHeight=6693 +ClientHeight=6738 TBDockHeight=3677 LRDockWidth=1898 Dockable=1 @@ -677,12 +644,12 @@ State=0 Left=0 Top=23 Width=3820 -Height=1345 +Height=1267 MaxLeft=-1 MaxTop=-1 ClientWidth=3820 -ClientHeight=1345 -TBDockHeight=1345 +ClientHeight=1267 +TBDockHeight=1267 LRDockWidth=3820 Dockable=1 StayOnTop=0 @@ -701,12 +668,12 @@ State=0 Left=0 Top=23 Width=2000 -Height=4529 +Height=7578 MaxLeft=-1 MaxTop=-1 ClientWidth=2000 -ClientHeight=4529 -TBDockHeight=7119 +ClientHeight=7578 +TBDockHeight=7164 LRDockWidth=2000 Dockable=1 StayOnTop=0 @@ -725,12 +692,12 @@ State=0 Left=0 Top=0 Width=1898 -Height=7119 +Height=7164 MaxLeft=-1 MaxTop=-1 ClientWidth=1773 -ClientHeight=6693 -TBDockHeight=7119 +ClientHeight=6738 +TBDockHeight=7164 LRDockWidth=1898 Dockable=1 StayOnTop=0 @@ -739,22 +706,22 @@ ActiveTabID=StructureView TabDockClients=StructureView,ClassBrowserTool [DockSite4] -HostDockSite=DockRightPanel +HostDockSite=RightTabDock DockSiteType=1 PercentageSizes=1 Create=1 -Visible=1 +Visible=0 Docked=1 State=0 Left=0 -Top=454 +Top=0 Width=2000 -Height=2668 +Height=7164 MaxLeft=-1 MaxTop=-1 -ClientWidth=2000 -ClientHeight=2668 -TBDockHeight=7119 +ClientWidth=1875 +ClientHeight=6738 +TBDockHeight=7164 LRDockWidth=2000 Dockable=1 StayOnTop=0 diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.identcache b/demos/SimpleOSRBrowser/SimpleOSRBrowser.identcache index b9e7a70221a86719aa99ea46bce61cc5febe4199..000d9223a792d67d0e3c74ba20cd3f5721681ee9 100644 GIT binary patch delta 12 TcmX@X^pla1X(D6Y#B)^u9ESw4 delta 76 zcmey#c!G(Mc_L$-y_2(5Oh8e7dQoDof?H-zYH^HfZc<`Va$-tqQGQHtNoh)EevF~H fo nil) and (FCustomCommandLineValues <> nil) and (FCustomCommandLines.Count = FCustomCommandLineValues.Count) then diff --git a/source/uCEFChromium.pas b/source/uCEFChromium.pas index bc57c667..be2919f6 100644 --- a/source/uCEFChromium.pas +++ b/source/uCEFChromium.pas @@ -74,7 +74,6 @@ type FFontOptions : TChromiumFontOptions; FPDFPrintOptions : TPDFPrintOptions; FDefaultEncoding : ustring; - FPrefs : TStringList; FProxyType : integer; FProxyServer : string; FProxyPort : integer; @@ -83,7 +82,6 @@ type FProxyScriptURL : string; FProxyByPassList : string; FUpdatePreferences : boolean; - FGetPreferences : boolean; FCustomHeaderName : string; FCustomHeaderValue : string; FAddCustomHeader : boolean; @@ -95,6 +93,7 @@ type FCMStoragePath : ustring; FZoomStep : byte; FWindowName : string; + FPrefsFileName : string; FIsOSR : boolean; FInitialized : boolean; FClosing : boolean; @@ -200,7 +199,7 @@ type // Custom FOnTextResultAvailable : TOnTextResultAvailableEvent; FOnPdfPrintFinished : TOnPdfPrintFinishedEvent; - FOnPrefsAvailable : TOnTextResultAvailableEvent; + FOnPrefsAvailable : TNotifyEvent; FOnCookiesDeleted : TOnCookiesDeletedEvent; FOnDocumentAvailable : TOnDocumentAvailableEvent; @@ -252,7 +251,6 @@ type procedure GetSettings(var aSettings : TCefBrowserSettings); procedure GetPrintPDFSettings(var aSettings : TCefPdfPrintSettings; const aTitle, aURL : string); - procedure UpdateAllPreferences; function UpdateProxyPrefs : boolean; function UpdatePreference(const aName : string; aValue : boolean) : boolean; overload; function UpdatePreference(const aName : string; aValue : integer) : boolean; overload; @@ -272,7 +270,6 @@ type procedure PrefsAvailableMsg(var aMessage : TMessage); function GetParentForm : TCustomForm; procedure ApplyZoomStep; - function GetAllPreferences : boolean; function SendCompMessage(aMsg : cardinal; wParam : cardinal = 0; lParam : integer = 0) : boolean; procedure WndProc(var aMessage: TMessage); @@ -379,13 +376,16 @@ type function CreateBrowser(const aBrowserParent : TWinControl = nil; const aWindowName : string = '') : boolean; procedure CloseBrowser(aForceClose : boolean); - procedure DOMVisitorVisit(const document: ICefDomDocument); - procedure CookiesDeleted(numDeleted : integer); - procedure GetHTML; - procedure VisitDOM; - procedure PdfPrintFinished(aResultOK : boolean); - procedure TextResultAvailable(const aText : string); - procedure ExecuteJavaScript(const aCode, aScriptURL : ustring; aStartLine : integer = 0); + // 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; + procedure Internal_SavePreferences; procedure LoadURL(const aURL : ustring); procedure LoadString(const aString : ustring; const aURL : ustring = ''); @@ -400,6 +400,9 @@ type procedure DeleteCookies; procedure RetrieveDOMDocument; procedure RetrieveHTML; + procedure ExecuteJavaScript(const aCode, aScriptURL : ustring; aStartLine : integer = 0); + procedure UpdatePreferences; + procedure SavePreferences(const aFileName : string); procedure ShowDevTools(inspectElementAt: TPoint; const aDevTools : TWinControl); procedure CloseDevTools(const aDevTools : TWinControl = nil); @@ -462,7 +465,6 @@ type property WindowHandle : THandle read GetWindowHandle; property FrameIsFocused : boolean read GetFrameIsFocused; property Initialized : boolean read GetInitialized; - property GetPreferences : boolean read FGetPreferences write FGetPreferences; property CookiePrefs : integer read FCookiePrefs write SetCookiePrefs; property ImagesPrefs : integer read FImagesPrefs write SetImagesPrefs; property CMStoragePath : ustring read FCMStoragePath write SetCMStoragePath; @@ -490,7 +492,7 @@ type published property OnTextResultAvailable : TOnTextResultAvailableEvent read FOnTextResultAvailable write FOnTextResultAvailable; property OnPdfPrintFinished : TOnPdfPrintFinishedEvent read FOnPdfPrintFinished write FOnPdfPrintFinished; - property OnPrefsAvailable : TOnTextResultAvailableEvent read FOnPrefsAvailable write FOnPrefsAvailable; + property OnPrefsAvailable : TNotifyEvent read FOnPrefsAvailable write FOnPrefsAvailable; property OnCookiesDeleted : TOnCookiesDeletedEvent read FOnCookiesDeleted write FOnCookiesDeleted; property OnDocumentAvailable : TOnDocumentAvailableEvent read FOnDocumentAvailable write FOnDocumentAvailable; @@ -620,11 +622,10 @@ begin FCookiDeletercb := nil; FDOMVisitor := nil; FPDFPrintOptions := nil; - FPrefs := nil; FUpdatePreferences := False; - FGetPreferences := False; FCustomHeaderName := ''; FCustomHeaderValue := ''; + FPrefsFileName := ''; FAddCustomHeader := False; FDoNotTrack := True; FSendReferrer := True; @@ -687,7 +688,6 @@ begin if (FFontOptions <> nil) then FreeAndNil(FFontOptions); if (FOptions <> nil) then FreeAndNil(FOptions); if (FPDFPrintOptions <> nil) then FreeAndNil(FPDFPrintOptions); - if (FPrefs <> nil) then FreeAndNil(FPrefs); except on e : exception do OutputDebugMessage('TChromium.Destroy error: ' + e.Message); @@ -708,7 +708,6 @@ begin FOptions := TChromiumOptions.Create; FFontOptions := TChromiumFontOptions.Create; FPDFPrintOptions := TPDFPrintOptions.Create; - FPrefs := TStringList.Create; end; except on e : exception do @@ -932,7 +931,7 @@ begin end; end; -procedure TChromium.VisitDOM; +procedure TChromium.Internal_VisitDOM; var TempFrame : ICefFrame; begin @@ -949,7 +948,7 @@ begin end; except on e : exception do - OutputDebugMessage('TChromium.VisitDOM error: ' + e.Message); + OutputDebugMessage('TChromium.Internal_VisitDOM error: ' + e.Message); end; end; @@ -1404,7 +1403,7 @@ procedure TChromium.SetCookiePrefs(aValue : integer); begin if (FCookiePrefs <> aValue) then begin - FCookiePrefs := aValue; + FCookiePrefs := aValue; FUpdatePreferences := True; end; end; @@ -1413,7 +1412,7 @@ procedure TChromium.SetImagesPrefs(aValue : integer); begin if (FImagesPrefs <> aValue) then begin - FImagesPrefs := aValue; + FImagesPrefs := aValue; FUpdatePreferences := True; end; end; @@ -1510,7 +1509,7 @@ begin CookieManager.SetStoragePath(FCMStoragePath, False, nil); end; -procedure TChromium.GetHTML; +procedure TChromium.Internal_GetHTML; var TempFrame : ICefFrame; begin @@ -1559,6 +1558,29 @@ begin end; end; +procedure TChromium.UpdatePreferences; +var + TempTask: ICefTask; +begin + if Initialized then + begin + TempTask := TCefUpdatePrefsTask.Create(self); + CefPostTask(TID_UI, TempTask); + end; +end; + +procedure TChromium.SavePreferences(const aFileName : string); +var + TempTask: ICefTask; +begin + if Initialized and (length(aFileName) > 0) then + begin + FPrefsFileName := aFileName; + TempTask := TCefSavePrefsTask.Create(self); + CefPostTask(TID_UI, TempTask); + end; +end; + procedure TChromium.SimulateMouseWheel(aDeltaX, aDeltaY : integer); var TempEvent : TCefMouseEvent; @@ -1572,8 +1594,10 @@ begin end; end; -procedure TChromium.UpdateAllPreferences; +procedure TChromium.Internal_UpdatePreferences; begin + FUpdatePreferences := False; + UpdateProxyPrefs; UpdatePreference('enable_do_not_track', FDoNotTrack); UpdatePreference('enable_referrers', FSendReferrer); @@ -1968,29 +1992,29 @@ begin end; end; -function TChromium.GetAllPreferences : boolean; +procedure TChromium.Internal_SavePreferences; var - TempDict : ICefDictionaryValue; + TempDict : ICefDictionaryValue; + TempPrefs : TStringList; begin - Result := False; - try - if (FBrowser <> nil) and (FPrefs <> nil) then + if Initialized then begin - FPrefs.Clear; + TempPrefs := TStringList.Create; TempDict := FBrowser.Host.RequestContext.GetAllPreferences(True); - HandleDictionary(TempDict, FPrefs, ''); - Result := SendCompMessage(CEF_PREFERENCES_AVAILABLE); + HandleDictionary(TempDict, TempPrefs, ''); + TempPrefs.SaveToFile(FPrefsFileName); + SendCompMessage(CEF_PREFERENCES_SAVED); end; except on e : exception do - OutputDebugMessage('TChromium.GetAllPreferences error: ' + e.Message); + OutputDebugMessage('TChromium.Internal_SavePreferences error: ' + e.Message); end; end; procedure TChromium.PrefsAvailableMsg(var aMessage : TMessage); begin - if (FPrefs <> nil) and assigned(FOnPrefsAvailable) then FOnPrefsAvailable(self, FPrefs.Text); + if assigned(FOnPrefsAvailable) then FOnPrefsAvailable(self); end; function TChromium.SendCompMessage(aMsg : cardinal; wParam : cardinal; lParam : integer) : boolean; @@ -1998,7 +2022,7 @@ begin Result := (FCompHandle <> 0) and PostMessage(FCompHandle, aMsg, wParam, lParam); end; -procedure TChromium.TextResultAvailable(const aText : string); +procedure TChromium.Internal_TextResultAvailable(const aText : string); begin if assigned(FOnTextResultAvailable) then FOnTextResultAvailable(self, aText); end; @@ -2021,24 +2045,24 @@ begin end; end; -procedure TChromium.CookiesDeleted(numDeleted : integer); +procedure TChromium.Internal_CookiesDeleted(numDeleted : integer); begin if assigned(FOnCookiesDeleted) then FOnCookiesDeleted(self, numDeleted); end; -procedure TChromium.DOMVisitorVisit(const document: ICefDomDocument); +procedure TChromium.Internal_DOMVisit(const document: ICefDomDocument); begin if assigned(FOnDocumentAvailable) then FOnDocumentAvailable(self, document); end; -procedure TChromium.PdfPrintFinished(aResultOK : boolean); +procedure TChromium.Internal_PdfPrintFinished(aResultOK : boolean); begin if assigned(FOnPdfPrintFinished) then FOnPdfPrintFinished(self, aResultOK); end; procedure TChromium.ShowDevTools(inspectElementAt: TPoint; const aDevTools : TWinControl); var - TempPoint : TCefPoint; + TempPoint : TCefPoint; begin if not(Initialized) or HasDevTools then Exit; @@ -2082,7 +2106,7 @@ end; procedure TChromium.WndProc(var aMessage: TMessage); begin case aMessage.Msg of - CEF_PREFERENCES_AVAILABLE : PrefsAvailableMsg(aMessage); + CEF_PREFERENCES_SAVED : PrefsAvailableMsg(aMessage); else aMessage.Result := DefWindowProc(FCompHandle, aMessage.Msg, aMessage.WParam, aMessage.LParam); end; @@ -2094,7 +2118,7 @@ begin if Assigned(FOnClose) then FOnClose(Self, browser, Result); - FClosing := True; + if (browser <> nil) and (FBrowserId = browser.Identifier) then FClosing := True; end; procedure TChromium.doOnAddressChange(const browser: ICefBrowser; const frame: ICefFrame; const url: ustring); @@ -2110,7 +2134,7 @@ begin if (FBrowser <> nil) then FBrowserId := FBrowser.Identifier; end; - UpdateAllPreferences; + Internal_UpdatePreferences; FInitialized := (FBrowser <> nil) and (FBrowserId <> 0); @@ -2124,26 +2148,19 @@ function TChromium.doOnBeforeBrowse(const browser : ICefBrowser; begin Result := False; - if FUpdatePreferences then - begin - FUpdatePreferences := False; - UpdateAllPreferences; - end; - - if FGetPreferences then - begin - FGetPreferences := False; - GetAllPreferences; - end; + if FUpdatePreferences then Internal_UpdatePreferences; if Assigned(FOnBeforeBrowse) then FOnBeforeBrowse(Self, browser, frame, request, isRedirect, Result); end; procedure TChromium.doOnBeforeClose(const browser: ICefBrowser); begin - FInitialized := False; - FBrowser := nil; - FBrowserId := 0; + if (browser <> nil) and (FBrowserId = browser.Identifier) then + begin + FInitialized := False; + FBrowser := nil; + FBrowserId := 0; + end; if Assigned(FOnBeforeClose) then FOnBeforeClose(Self, browser); end; diff --git a/source/uCEFChromiumWindow.pas b/source/uCEFChromiumWindow.pas index 8547662e..447bb01b 100644 --- a/source/uCEFChromiumWindow.pas +++ b/source/uCEFChromiumWindow.pas @@ -117,8 +117,13 @@ end; procedure TChromiumWindow.WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; out Result: Boolean); begin - PostMessage(self.Handle, CEF_DOONCLOSE, 0, 0); - Result := True; + if assigned(FOnClose) then + begin + PostMessage(self.Handle, CEF_DOONCLOSE, 0, 0); + Result := True; + end + else + Result := False; end; procedure TChromiumWindow.OnCloseMsg(var aMessage : TMessage); diff --git a/source/uCEFConstants.pas b/source/uCEFConstants.pas index 373119f8..3e55a726 100644 --- a/source/uCEFConstants.pas +++ b/source/uCEFConstants.pas @@ -270,8 +270,8 @@ const ZOOM_STEP_MAX = ZOOM_STEP_500; ZOOM_STEP_DEF = ZOOM_STEP_100; - CEF_PREFERENCES_AVAILABLE = WM_APP + $A00; - CEF_DOONCLOSE = WM_APP + $A01; + CEF_PREFERENCES_SAVED = WM_APP + $A00; + CEF_DOONCLOSE = WM_APP + $A01; USER_TIMER_MINIMUM = $0000000A; USER_TIMER_MAXIMUM = $7FFFFFFF; diff --git a/source/uCEFDeleteCookiesCallback.pas b/source/uCEFDeleteCookiesCallback.pas index f54fba03..e808f399 100644 --- a/source/uCEFDeleteCookiesCallback.pas +++ b/source/uCEFDeleteCookiesCallback.pas @@ -123,7 +123,7 @@ end; procedure TCefCustomDeleteCookiesCallback.OnComplete(numDeleted: Integer); begin if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then - TChromium(FChromiumBrowser).CookiesDeleted(numDeleted); + TChromium(FChromiumBrowser).Internal_CookiesDeleted(numDeleted); end; end. diff --git a/source/uCEFDomVisitor.pas b/source/uCEFDomVisitor.pas index 0314007d..3bfa0346 100644 --- a/source/uCEFDomVisitor.pas +++ b/source/uCEFDomVisitor.pas @@ -127,7 +127,7 @@ end; procedure TCustomDomVisitor.visit(const document: ICefDomDocument); begin if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then - TChromium(FChromiumBrowser).DOMVisitorVisit(document); + TChromium(FChromiumBrowser).Internal_DOMVisit(document); end; end. diff --git a/source/uCEFMiscFunctions.pas b/source/uCEFMiscFunctions.pas index 49e9413f..9611480e 100644 --- a/source/uCEFMiscFunctions.pas +++ b/source/uCEFMiscFunctions.pas @@ -52,7 +52,7 @@ uses {$ELSE} Windows, Classes, SysUtils, {$ENDIF} - uCEFTypes, uCEFInterfaces, uCEFLibFunctions; + uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFResourceHandler; const Kernel32DLL = 'kernel32.dll'; @@ -116,11 +116,18 @@ procedure CefSetCrashKeyValue(const aKey, aValue : ustring); procedure CefLog(const aFile : string; aLine, aSeverity : integer; const aMessage : string); procedure OutputDebugMessage(const aMessage : string); +function CefRegisterSchemeHandlerFactory(const SchemeName, HostName: ustring; const handler: TCefResourceHandlerClass): Boolean; overload; +function CefRegisterSchemeHandlerFactory(const SchemeName, HostName: ustring; const factory: ICefSchemeHandlerFactory): Boolean; overload; +function CefClearSchemeHandlerFactories: Boolean; + +function CefAddCrossOriginWhitelistEntry(const SourceOrigin, TargetProtocol, TargetDomain: ustring; AllowTargetSubdomains: Boolean): Boolean; +function CefRemoveCrossOriginWhitelistEntry(const SourceOrigin, TargetProtocol, TargetDomain: ustring; AllowTargetSubdomains: Boolean): Boolean; +function CefClearCrossOriginWhitelist: Boolean; implementation uses - uCEFConstants, uCEFApplication; + uCEFConstants, uCEFApplication, uCEFSchemeHandlerFactory; function CefColorGetA(color: TCefColor): Byte; begin @@ -446,4 +453,63 @@ begin {$ENDIF} end; +function CefRegisterSchemeHandlerFactory(const SchemeName, HostName: ustring; + const handler: TCefResourceHandlerClass): Boolean; +var + s, h: TCefString; +begin + s := CefString(SchemeName); + h := CefString(HostName); + Result := cef_register_scheme_handler_factory( + @s, + @h, + CefGetData(TCefSchemeHandlerFactoryOwn.Create(handler) as ICefBase)) <> 0; +end; + +function CefRegisterSchemeHandlerFactory(const SchemeName, HostName: ustring; + const factory: ICefSchemeHandlerFactory): Boolean; +var + s, h: TCefString; +begin + s := CefString(SchemeName); + h := CefString(HostName); + Result := cef_register_scheme_handler_factory( + @s, + @h, + CefGetData(factory as ICefBase)) <> 0; +end; + +function CefClearSchemeHandlerFactories: Boolean; +begin + Result := cef_clear_scheme_handler_factories <> 0; +end; + +function CefAddCrossOriginWhitelistEntry(const SourceOrigin, TargetProtocol, + TargetDomain: ustring; AllowTargetSubdomains: Boolean): Boolean; +var + so, tp, td: TCefString; +begin + so := CefString(SourceOrigin); + tp := CefString(TargetProtocol); + td := CefString(TargetDomain); + Result := cef_add_cross_origin_whitelist_entry(@so, @tp, @td, Ord(AllowTargetSubdomains)) <> 0; +end; + +function CefRemoveCrossOriginWhitelistEntry( + const SourceOrigin, TargetProtocol, TargetDomain: ustring; + AllowTargetSubdomains: Boolean): Boolean; +var + so, tp, td: TCefString; +begin + so := CefString(SourceOrigin); + tp := CefString(TargetProtocol); + td := CefString(TargetDomain); + Result := cef_remove_cross_origin_whitelist_entry(@so, @tp, @td, Ord(AllowTargetSubdomains)) <> 0; +end; + +function CefClearCrossOriginWhitelist: Boolean; +begin + Result := cef_clear_cross_origin_whitelist <> 0; +end; + end. diff --git a/source/uCEFPDFPrintCallback.pas b/source/uCEFPDFPrintCallback.pas index d0338fee..1d2260a2 100644 --- a/source/uCEFPDFPrintCallback.pas +++ b/source/uCEFPDFPrintCallback.pas @@ -120,7 +120,7 @@ end; procedure TCefPDFPrintCallBack.OnPdfPrintFinished(const path: ustring; aResultOK : Boolean); begin if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then - TChromium(FChromiumBrowser).PdfPrintFinished(aResultOK); + TChromium(FChromiumBrowser).Internal_PdfPrintFinished(aResultOK); end; end. diff --git a/source/uCEFStringVisitor.pas b/source/uCEFStringVisitor.pas index 681fe0ed..84372551 100644 --- a/source/uCEFStringVisitor.pas +++ b/source/uCEFStringVisitor.pas @@ -128,7 +128,7 @@ end; procedure TCustomCefStringVisitor.Visit(const str: ustring); begin if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then - TChromium(FChromiumBrowser).TextResultAvailable(str); + TChromium(FChromiumBrowser).Internal_TextResultAvailable(str); end; end. diff --git a/source/uCEFTask.pas b/source/uCEFTask.pas index 9a040ac7..857f043b 100644 --- a/source/uCEFTask.pas +++ b/source/uCEFTask.pas @@ -110,6 +110,26 @@ type constructor Create(const aCallBack : ICefDeleteCookiesCallback); reintroduce; end; + TCefUpdatePrefsTask = class(TCefTaskOwn) + protected + FChromiumBrowser : TObject; + + procedure Execute; override; + + public + constructor Create(const aChromiumBrowser : TObject); reintroduce; + end; + + TCefSavePrefsTask = class(TCefTaskOwn) + protected + FChromiumBrowser : TObject; + + procedure Execute; override; + + public + constructor Create(const aChromiumBrowser : TObject); reintroduce; + end; + implementation uses @@ -182,7 +202,7 @@ end; procedure TCefGetHTMLTask.Execute; begin if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then - TChromium(FChromiumBrowser).GetHTML; + TChromium(FChromiumBrowser).Internal_GetHTML; end; // TCefGetDocumentTask @@ -196,7 +216,7 @@ end; procedure TCefGetDocumentTask.Execute; begin if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then - TChromium(FChromiumBrowser).VisitDOM; + TChromium(FChromiumBrowser).Internal_VisitDOM; end; // TCefDeleteCookiesTask @@ -216,4 +236,34 @@ begin CookieManager.DeleteCookies('', '', FCallBack); end; +// TCefUpdatePrefsTask + +constructor TCefUpdatePrefsTask.Create(const aChromiumBrowser : TObject); +begin + inherited Create; + + FChromiumBrowser := aChromiumBrowser; +end; + +procedure TCefUpdatePrefsTask.Execute; +begin + if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then + TChromium(FChromiumBrowser).Internal_UpdatePreferences; +end; + +// TCefSavePrefsTask + +constructor TCefSavePrefsTask.Create(const aChromiumBrowser : TObject); +begin + inherited Create; + + FChromiumBrowser := aChromiumBrowser; +end; + +procedure TCefSavePrefsTask.Execute; +begin + if (FChromiumBrowser <> nil) and (FChromiumBrowser is TChromium) then + TChromium(FChromiumBrowser).Internal_SavePreferences; +end; + end.