You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-06-22 22:17:48 +02:00
- Modified CheckLocalFiles for D7 compatibility - Added WebRTC properties to TChromium
This commit is contained in:
@ -147,7 +147,8 @@ object MiniBrowserFrm: TMiniBrowserFrm
|
|||||||
'ples/streetview-embed?hl=fr'
|
'ples/streetview-embed?hl=fr'
|
||||||
|
|
||||||
'https://www.w3schools.com/Tags/tryit.asp?filename=tryhtml_iframe' +
|
'https://www.w3schools.com/Tags/tryit.asp?filename=tryhtml_iframe' +
|
||||||
'_name')
|
'_name'
|
||||||
|
'https://www.browserleaks.com/webrtc')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object ConfigPnl: TPanel
|
object ConfigPnl: TPanel
|
||||||
@ -220,6 +221,7 @@ object MiniBrowserFrm: TMiniBrowserFrm
|
|||||||
object Chromium1: TChromium
|
object Chromium1: TChromium
|
||||||
OnTextResultAvailable = Chromium1TextResultAvailable
|
OnTextResultAvailable = Chromium1TextResultAvailable
|
||||||
OnPdfPrintFinished = Chromium1PdfPrintFinished
|
OnPdfPrintFinished = Chromium1PdfPrintFinished
|
||||||
|
OnPrefsAvailable = Chromium1PrefsAvailable
|
||||||
OnResolvedHostAvailable = Chromium1ResolvedHostAvailable
|
OnResolvedHostAvailable = Chromium1ResolvedHostAvailable
|
||||||
OnLoadingStateChange = Chromium1LoadingStateChange
|
OnLoadingStateChange = Chromium1LoadingStateChange
|
||||||
OnBeforeContextMenu = Chromium1BeforeContextMenu
|
OnBeforeContextMenu = Chromium1BeforeContextMenu
|
||||||
@ -309,7 +311,7 @@ object MiniBrowserFrm: TMiniBrowserFrm
|
|||||||
end
|
end
|
||||||
object Timer1: TTimer
|
object Timer1: TTimer
|
||||||
Enabled = False
|
Enabled = False
|
||||||
Interval = 200
|
Interval = 300
|
||||||
OnTimer = Timer1Timer
|
OnTimer = Timer1Timer
|
||||||
Left = 32
|
Left = 32
|
||||||
Top = 344
|
Top = 344
|
||||||
|
@ -53,23 +53,25 @@ uses
|
|||||||
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants;
|
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants;
|
||||||
|
|
||||||
const
|
const
|
||||||
MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
|
MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
|
||||||
MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
|
MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
|
||||||
MINIBROWSER_COPYHTML = WM_APP + $103;
|
MINIBROWSER_COPYHTML = WM_APP + $103;
|
||||||
MINIBROWSER_SHOWRESPONSE = WM_APP + $104;
|
MINIBROWSER_SHOWRESPONSE = WM_APP + $104;
|
||||||
MINIBROWSER_COPYFRAMEIDS = WM_APP + $105;
|
MINIBROWSER_COPYFRAMEIDS = WM_APP + $105;
|
||||||
MINIBROWSER_COPYFRAMENAMES = WM_APP + $106;
|
MINIBROWSER_COPYFRAMENAMES = WM_APP + $106;
|
||||||
|
MINIBROWSER_SAVEPREFERENCES = WM_APP + $107;
|
||||||
|
|
||||||
MINIBROWSER_HOMEPAGE = 'https://www.google.com';
|
MINIBROWSER_HOMEPAGE = 'https://www.google.com';
|
||||||
|
|
||||||
MINIBROWSER_CONTEXTMENU_SHOWDEVTOOLS = MENU_ID_USER_FIRST + 1;
|
MINIBROWSER_CONTEXTMENU_SHOWDEVTOOLS = MENU_ID_USER_FIRST + 1;
|
||||||
MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS = MENU_ID_USER_FIRST + 2;
|
MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS = MENU_ID_USER_FIRST + 2;
|
||||||
MINIBROWSER_CONTEXTMENU_COPYHTML = MENU_ID_USER_FIRST + 3;
|
MINIBROWSER_CONTEXTMENU_COPYHTML = MENU_ID_USER_FIRST + 3;
|
||||||
MINIBROWSER_CONTEXTMENU_JSWRITEDOC = MENU_ID_USER_FIRST + 4;
|
MINIBROWSER_CONTEXTMENU_JSWRITEDOC = MENU_ID_USER_FIRST + 4;
|
||||||
MINIBROWSER_CONTEXTMENU_JSPRINTDOC = MENU_ID_USER_FIRST + 5;
|
MINIBROWSER_CONTEXTMENU_JSPRINTDOC = MENU_ID_USER_FIRST + 5;
|
||||||
MINIBROWSER_CONTEXTMENU_SHOWRESPONSE = MENU_ID_USER_FIRST + 6;
|
MINIBROWSER_CONTEXTMENU_SHOWRESPONSE = MENU_ID_USER_FIRST + 6;
|
||||||
MINIBROWSER_CONTEXTMENU_COPYFRAMEIDS = MENU_ID_USER_FIRST + 7;
|
MINIBROWSER_CONTEXTMENU_COPYFRAMEIDS = MENU_ID_USER_FIRST + 7;
|
||||||
MINIBROWSER_CONTEXTMENU_COPYFRAMENAMES = MENU_ID_USER_FIRST + 8;
|
MINIBROWSER_CONTEXTMENU_COPYFRAMENAMES = MENU_ID_USER_FIRST + 8;
|
||||||
|
MINIBROWSER_CONTEXTMENU_SAVEPREFERENCES = MENU_ID_USER_FIRST + 9;
|
||||||
|
|
||||||
type
|
type
|
||||||
TMiniBrowserFrm = class(TForm)
|
TMiniBrowserFrm = class(TForm)
|
||||||
@ -165,6 +167,7 @@ type
|
|||||||
procedure Chromium1ResolvedHostAvailable(Sender: TObject;
|
procedure Chromium1ResolvedHostAvailable(Sender: TObject;
|
||||||
result: Integer; const resolvedIps: TStrings);
|
result: Integer; const resolvedIps: TStrings);
|
||||||
procedure Timer1Timer(Sender: TObject);
|
procedure Timer1Timer(Sender: TObject);
|
||||||
|
procedure Chromium1PrefsAvailable(Sender: TObject; aResultOK: Boolean);
|
||||||
|
|
||||||
protected
|
protected
|
||||||
FResponse : string;
|
FResponse : string;
|
||||||
@ -185,6 +188,7 @@ type
|
|||||||
procedure CopyFramesIDsMsg(var aMessage : TMessage); message MINIBROWSER_COPYFRAMEIDS;
|
procedure CopyFramesIDsMsg(var aMessage : TMessage); message MINIBROWSER_COPYFRAMEIDS;
|
||||||
procedure CopyFramesNamesMsg(var aMessage : TMessage); message MINIBROWSER_COPYFRAMENAMES;
|
procedure CopyFramesNamesMsg(var aMessage : TMessage); message MINIBROWSER_COPYFRAMENAMES;
|
||||||
procedure ShowResponseMsg(var aMessage : TMessage); message MINIBROWSER_SHOWRESPONSE;
|
procedure ShowResponseMsg(var aMessage : TMessage); message MINIBROWSER_SHOWRESPONSE;
|
||||||
|
procedure SavePreferencesMsg(var aMessage : TMessage); message MINIBROWSER_SAVEPREFERENCES;
|
||||||
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
|
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
|
||||||
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
|
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
|
||||||
|
|
||||||
@ -252,13 +256,15 @@ procedure TMiniBrowserFrm.Chromium1BeforeContextMenu(Sender: TObject;
|
|||||||
const params: ICefContextMenuParams; const model: ICefMenuModel);
|
const params: ICefContextMenuParams; const model: ICefMenuModel);
|
||||||
begin
|
begin
|
||||||
model.AddSeparator;
|
model.AddSeparator;
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard');
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYFRAMEIDS, 'Copy HTML frame identifiers to clipboard');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYFRAMEIDS, 'Copy HTML frame identifiers to clipboard');
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYFRAMENAMES, 'Copy HTML frame names to clipboard');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYFRAMENAMES, 'Copy HTML frame names to clipboard');
|
||||||
model.AddSeparator;
|
model.AddSeparator;
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_JSWRITEDOC, 'Modify HTML document');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_SAVEPREFERENCES, 'Save preferences as...');
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_JSPRINTDOC, 'Print using Javascript');
|
model.AddSeparator;
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_SHOWRESPONSE, 'Show last server response');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_JSWRITEDOC, 'Modify HTML document');
|
||||||
|
model.AddItem(MINIBROWSER_CONTEXTMENU_JSPRINTDOC, 'Print using Javascript');
|
||||||
|
model.AddItem(MINIBROWSER_CONTEXTMENU_SHOWRESPONSE, 'Show last server response');
|
||||||
|
|
||||||
if DevTools.Visible then
|
if DevTools.Visible then
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS, 'Hide DevTools')
|
model.AddItem(MINIBROWSER_CONTEXTMENU_HIDEDEVTOOLS, 'Hide DevTools')
|
||||||
@ -297,6 +303,9 @@ begin
|
|||||||
MINIBROWSER_CONTEXTMENU_SHOWRESPONSE :
|
MINIBROWSER_CONTEXTMENU_SHOWRESPONSE :
|
||||||
PostMessage(Handle, MINIBROWSER_SHOWRESPONSE, 0, 0);
|
PostMessage(Handle, MINIBROWSER_SHOWRESPONSE, 0, 0);
|
||||||
|
|
||||||
|
MINIBROWSER_CONTEXTMENU_SAVEPREFERENCES :
|
||||||
|
PostMessage(Handle, MINIBROWSER_SAVEPREFERENCES, 0, 0);
|
||||||
|
|
||||||
MINIBROWSER_CONTEXTMENU_JSWRITEDOC :
|
MINIBROWSER_CONTEXTMENU_JSWRITEDOC :
|
||||||
if (browser <> nil) and (browser.MainFrame <> nil) then
|
if (browser <> nil) and (browser.MainFrame <> nil) then
|
||||||
browser.MainFrame.ExecuteJavaScript(
|
browser.MainFrame.ExecuteJavaScript(
|
||||||
@ -424,6 +433,14 @@ begin
|
|||||||
showmessage('There was a problem generating the PDF file.');
|
showmessage('There was a problem generating the PDF file.');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMiniBrowserFrm.Chromium1PrefsAvailable(Sender: TObject; aResultOK: Boolean);
|
||||||
|
begin
|
||||||
|
if aResultOK then
|
||||||
|
showmessage('The preferences file was generated successfully')
|
||||||
|
else
|
||||||
|
showmessage('There was a problem generating the preferences file.');
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMiniBrowserFrm.Chromium1PreKeyEvent(Sender: TObject;
|
procedure TMiniBrowserFrm.Chromium1PreKeyEvent(Sender: TObject;
|
||||||
const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
|
const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg;
|
||||||
out isKeyboardShortcut, Result: Boolean);
|
out isKeyboardShortcut, Result: Boolean);
|
||||||
@ -496,6 +513,14 @@ end;
|
|||||||
|
|
||||||
procedure TMiniBrowserFrm.FormShow(Sender: TObject);
|
procedure TMiniBrowserFrm.FormShow(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
ShowStatusText('Initializing browser. Please wait...');
|
||||||
|
|
||||||
|
// WebRTC's IP leaking can lowered/avoided by setting these preferences
|
||||||
|
// To test this go to https://www.browserleaks.com/webrtc
|
||||||
|
Chromium1.WebRTCIPHandlingPolicy := hpDisableNonProxiedUDP;
|
||||||
|
Chromium1.WebRTCMultipleRoutes := STATE_DISABLED;
|
||||||
|
Chromium1.WebRTCNonproxiedUDP := STATE_DISABLED;
|
||||||
|
|
||||||
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
|
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
|
||||||
// If it's not initialized yet, we use a simple timer to create the browser later.
|
// If it's not initialized yet, we use a simple timer to create the browser later.
|
||||||
if not(Chromium1.CreateBrowser(CEFWindowParent1, '')) then Timer1.Enabled := True;
|
if not(Chromium1.CreateBrowser(CEFWindowParent1, '')) then Timer1.Enabled := True;
|
||||||
@ -655,6 +680,15 @@ begin
|
|||||||
if (length(FResponse) > 0) then MessageDlg(FResponse, mtInformation, [mbOk], 0);
|
if (length(FResponse) > 0) then MessageDlg(FResponse, mtInformation, [mbOk], 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMiniBrowserFrm.SavePreferencesMsg(var aMessage : TMessage);
|
||||||
|
begin
|
||||||
|
SaveDialog1.DefaultExt := 'txt';
|
||||||
|
SaveDialog1.Filter := 'Text files (*.txt)|*.TXT';
|
||||||
|
|
||||||
|
if SaveDialog1.Execute and (length(SaveDialog1.FileName) > 0) then
|
||||||
|
Chromium1.SavePreferences(SaveDialog1.FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMiniBrowserFrm.WMMove(var aMessage : TWMMove);
|
procedure TMiniBrowserFrm.WMMove(var aMessage : TWMMove);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
@ -63,7 +63,7 @@ object Form1: TForm1
|
|||||||
end
|
end
|
||||||
object Timer1: TTimer
|
object Timer1: TTimer
|
||||||
Enabled = False
|
Enabled = False
|
||||||
Interval = 200
|
Interval = 300
|
||||||
OnTimer = Timer1Timer
|
OnTimer = Timer1Timer
|
||||||
Left = 552
|
Left = 552
|
||||||
Top = 264
|
Top = 264
|
||||||
|
@ -91,6 +91,8 @@ implementation
|
|||||||
|
|
||||||
procedure TForm1.FormShow(Sender: TObject);
|
procedure TForm1.FormShow(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
Caption := 'Simple Browser - Initializing browser. Please wait...';
|
||||||
|
|
||||||
// You *MUST* call CreateBrowser to create and initialize the browser.
|
// You *MUST* call CreateBrowser to create and initialize the browser.
|
||||||
// This will trigger the AfterCreated event when the browser is fully
|
// This will trigger the AfterCreated event when the browser is fully
|
||||||
// initialized and ready to receive commands.
|
// initialized and ready to receive commands.
|
||||||
@ -103,6 +105,7 @@ end;
|
|||||||
procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
|
procedure TForm1.ChromiumWindow1AfterCreated(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// Now the browser is fully initialized we can load the initial web page.
|
// Now the browser is fully initialized we can load the initial web page.
|
||||||
|
Caption := 'Simple Browser';
|
||||||
AddressPnl.Enabled := True;
|
AddressPnl.Enabled := True;
|
||||||
GoBtn.Click;
|
GoBtn.Click;
|
||||||
end;
|
end;
|
||||||
|
@ -150,6 +150,9 @@ contains
|
|||||||
uCEFBaseRefCounted in 'uCEFBaseRefCounted.pas',
|
uCEFBaseRefCounted in 'uCEFBaseRefCounted.pas',
|
||||||
uCEFBaseScopedWrapper in 'uCEFBaseScopedWrapper.pas',
|
uCEFBaseScopedWrapper in 'uCEFBaseScopedWrapper.pas',
|
||||||
uCEFDragAndDropMgr in 'uCEFDragAndDropMgr.pas',
|
uCEFDragAndDropMgr in 'uCEFDragAndDropMgr.pas',
|
||||||
uOLEDragAndDrop in 'uOLEDragAndDrop.pas';
|
uOLEDragAndDrop in 'uOLEDragAndDrop.pas',
|
||||||
|
uCEFGetExtensionResourceCallback in 'uCEFGetExtensionResourceCallback.pas',
|
||||||
|
uCEFExtension in 'uCEFExtension.pas',
|
||||||
|
uCEFExtensionHandler in 'uCEFExtensionHandler.pas';
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -104,6 +104,9 @@ type
|
|||||||
FDragDropManager : TCEFDragAndDropMgr;
|
FDragDropManager : TCEFDragAndDropMgr;
|
||||||
FDropTargetCtrl : TWinControl;
|
FDropTargetCtrl : TWinControl;
|
||||||
FDragAndDropInitialized : boolean;
|
FDragAndDropInitialized : boolean;
|
||||||
|
FWebRTCIPHandlingPolicy : TCefWebRTCHandlingPolicy;
|
||||||
|
FWebRTCMultipleRoutes : TCefState;
|
||||||
|
FWebRTCNonProxiedUDP : TCefState;
|
||||||
|
|
||||||
// ICefClient
|
// ICefClient
|
||||||
FOnProcessMessageReceived : TOnProcessMessageReceived;
|
FOnProcessMessageReceived : TOnProcessMessageReceived;
|
||||||
@ -204,7 +207,7 @@ type
|
|||||||
// Custom
|
// Custom
|
||||||
FOnTextResultAvailable : TOnTextResultAvailableEvent;
|
FOnTextResultAvailable : TOnTextResultAvailableEvent;
|
||||||
FOnPdfPrintFinished : TOnPdfPrintFinishedEvent;
|
FOnPdfPrintFinished : TOnPdfPrintFinishedEvent;
|
||||||
FOnPrefsAvailable : TNotifyEvent;
|
FOnPrefsAvailable : TOnPrefsAvailableEvent;
|
||||||
FOnCookiesDeleted : TOnCookiesDeletedEvent;
|
FOnCookiesDeleted : TOnCookiesDeletedEvent;
|
||||||
FOnResolvedHostAvailable : TOnResolvedIPsAvailableEvent;
|
FOnResolvedHostAvailable : TOnResolvedIPsAvailableEvent;
|
||||||
|
|
||||||
@ -234,6 +237,9 @@ type
|
|||||||
procedure SetDoNotTrack(aValue : boolean);
|
procedure SetDoNotTrack(aValue : boolean);
|
||||||
procedure SetSendReferrer(aValue : boolean);
|
procedure SetSendReferrer(aValue : boolean);
|
||||||
procedure SetHyperlinkAuditing(aValue : boolean);
|
procedure SetHyperlinkAuditing(aValue : boolean);
|
||||||
|
procedure SetWebRTCIPHandlingPolicy(aValue : TCefWebRTCHandlingPolicy);
|
||||||
|
procedure SetWebRTCMultipleRoutes(aValue : TCefState);
|
||||||
|
procedure SetWebRTCNonProxiedUDP(aValue : TCefState);
|
||||||
procedure SetCookiePrefs(aValue : integer);
|
procedure SetCookiePrefs(aValue : integer);
|
||||||
procedure SetImagesPrefs(aValue : integer);
|
procedure SetImagesPrefs(aValue : integer);
|
||||||
procedure SetProxyType(aValue : integer);
|
procedure SetProxyType(aValue : integer);
|
||||||
@ -406,8 +412,8 @@ type
|
|||||||
procedure Internal_GetHTML(const aFrameIdentifier : int64); overload;
|
procedure Internal_GetHTML(const aFrameIdentifier : int64); overload;
|
||||||
procedure Internal_PdfPrintFinished(aResultOK : boolean);
|
procedure Internal_PdfPrintFinished(aResultOK : boolean);
|
||||||
procedure Internal_TextResultAvailable(const aText : string);
|
procedure Internal_TextResultAvailable(const aText : string);
|
||||||
procedure Internal_UpdatePreferences;
|
procedure Internal_UpdatePreferences; virtual;
|
||||||
procedure Internal_SavePreferences;
|
function Internal_SavePreferences : boolean;
|
||||||
procedure Internal_ResolvedHostAvailable(result: TCefErrorCode; const resolvedIps: TStrings);
|
procedure Internal_ResolvedHostAvailable(result: TCefErrorCode; const resolvedIps: TStrings);
|
||||||
|
|
||||||
procedure LoadURL(const aURL : ustring);
|
procedure LoadURL(const aURL : ustring);
|
||||||
@ -526,6 +532,10 @@ type
|
|||||||
property FrameCount : NativeUInt read GetFrameCount;
|
property FrameCount : NativeUInt read GetFrameCount;
|
||||||
property DragOperations : TCefDragOperations read FDragOperations write FDragOperations;
|
property DragOperations : TCefDragOperations read FDragOperations write FDragOperations;
|
||||||
|
|
||||||
|
property WebRTCIPHandlingPolicy : TCefWebRTCHandlingPolicy read FWebRTCIPHandlingPolicy write SetWebRTCIPHandlingPolicy;
|
||||||
|
property WebRTCMultipleRoutes : TCefState read FWebRTCMultipleRoutes write SetWebRTCMultipleRoutes;
|
||||||
|
property WebRTCNonproxiedUDP : TCefState read FWebRTCNonProxiedUDP write SetWebRTCNonProxiedUDP;
|
||||||
|
|
||||||
property ProxyType : integer read FProxyType write SetProxyType;
|
property ProxyType : integer read FProxyType write SetProxyType;
|
||||||
property ProxyServer : string read FProxyServer write SetProxyServer;
|
property ProxyServer : string read FProxyServer write SetProxyServer;
|
||||||
property ProxyPort : integer read FProxyPort write SetProxyPort;
|
property ProxyPort : integer read FProxyPort write SetProxyPort;
|
||||||
@ -537,7 +547,7 @@ type
|
|||||||
published
|
published
|
||||||
property OnTextResultAvailable : TOnTextResultAvailableEvent read FOnTextResultAvailable write FOnTextResultAvailable;
|
property OnTextResultAvailable : TOnTextResultAvailableEvent read FOnTextResultAvailable write FOnTextResultAvailable;
|
||||||
property OnPdfPrintFinished : TOnPdfPrintFinishedEvent read FOnPdfPrintFinished write FOnPdfPrintFinished;
|
property OnPdfPrintFinished : TOnPdfPrintFinishedEvent read FOnPdfPrintFinished write FOnPdfPrintFinished;
|
||||||
property OnPrefsAvailable : TNotifyEvent read FOnPrefsAvailable write FOnPrefsAvailable;
|
property OnPrefsAvailable : TOnPrefsAvailableEvent read FOnPrefsAvailable write FOnPrefsAvailable;
|
||||||
property OnCookiesDeleted : TOnCookiesDeletedEvent read FOnCookiesDeleted write FOnCookiesDeleted;
|
property OnCookiesDeleted : TOnCookiesDeletedEvent read FOnCookiesDeleted write FOnCookiesDeleted;
|
||||||
property OnResolvedHostAvailable : TOnResolvedIPsAvailableEvent read FOnResolvedHostAvailable write FOnResolvedHostAvailable;
|
property OnResolvedHostAvailable : TOnResolvedIPsAvailableEvent read FOnResolvedHostAvailable write FOnResolvedHostAvailable;
|
||||||
|
|
||||||
@ -681,11 +691,16 @@ begin
|
|||||||
FImagesPrefs := CEF_CONTENT_SETTING_ALLOW;
|
FImagesPrefs := CEF_CONTENT_SETTING_ALLOW;
|
||||||
FZoomStep := ZOOM_STEP_DEF;
|
FZoomStep := ZOOM_STEP_DEF;
|
||||||
FWindowName := '';
|
FWindowName := '';
|
||||||
|
|
||||||
FDragOperations := DRAG_OPERATION_NONE;
|
FDragOperations := DRAG_OPERATION_NONE;
|
||||||
FDragDropManager := nil;
|
FDragDropManager := nil;
|
||||||
FDropTargetCtrl := nil;
|
FDropTargetCtrl := nil;
|
||||||
FDragAndDropInitialized := False;
|
FDragAndDropInitialized := False;
|
||||||
|
|
||||||
|
FWebRTCIPHandlingPolicy := hpDefault;
|
||||||
|
FWebRTCMultipleRoutes := STATE_DEFAULT;
|
||||||
|
FWebRTCNonProxiedUDP := STATE_DEFAULT;
|
||||||
|
|
||||||
FProxyType := CEF_PROXYTYPE_DIRECT;
|
FProxyType := CEF_PROXYTYPE_DIRECT;
|
||||||
FProxyServer := '';
|
FProxyServer := '';
|
||||||
FProxyPort := 80;
|
FProxyPort := 80;
|
||||||
@ -1640,6 +1655,33 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TChromium.SetWebRTCIPHandlingPolicy(aValue : TCefWebRTCHandlingPolicy);
|
||||||
|
begin
|
||||||
|
if (FWebRTCIPHandlingPolicy <> aValue) then
|
||||||
|
begin
|
||||||
|
FWebRTCIPHandlingPolicy := aValue;
|
||||||
|
FUpdatePreferences := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TChromium.SetWebRTCMultipleRoutes(aValue : TCefState);
|
||||||
|
begin
|
||||||
|
if (FWebRTCMultipleRoutes <> aValue) then
|
||||||
|
begin
|
||||||
|
FWebRTCMultipleRoutes := aValue;
|
||||||
|
FUpdatePreferences := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TChromium.SetWebRTCNonProxiedUDP(aValue : TCefState);
|
||||||
|
begin
|
||||||
|
if (FWebRTCNonProxiedUDP <> aValue) then
|
||||||
|
begin
|
||||||
|
FWebRTCNonProxiedUDP := aValue;
|
||||||
|
FUpdatePreferences := True;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TChromium.SetCookiePrefs(aValue : integer);
|
procedure TChromium.SetCookiePrefs(aValue : integer);
|
||||||
begin
|
begin
|
||||||
if (FCookiePrefs <> aValue) then
|
if (FCookiePrefs <> aValue) then
|
||||||
@ -1912,6 +1954,23 @@ begin
|
|||||||
UpdatePreference('enable_do_not_track', FDoNotTrack);
|
UpdatePreference('enable_do_not_track', FDoNotTrack);
|
||||||
UpdatePreference('enable_referrers', FSendReferrer);
|
UpdatePreference('enable_referrers', FSendReferrer);
|
||||||
UpdatePreference('enable_a_ping', FHyperlinkAuditing);
|
UpdatePreference('enable_a_ping', FHyperlinkAuditing);
|
||||||
|
|
||||||
|
case FWebRTCIPHandlingPolicy of
|
||||||
|
hpDefaultPublicAndPrivateInterfaces :
|
||||||
|
UpdatePreference('webrtc.ip_handling_policy', 'default_public_and_private_interfaces');
|
||||||
|
|
||||||
|
hpDefaultPublicInterfaceOnly :
|
||||||
|
UpdatePreference('webrtc.ip_handling_policy', 'default_public_interface_only');
|
||||||
|
|
||||||
|
hpDisableNonProxiedUDP :
|
||||||
|
UpdatePreference('webrtc.ip_handling_policy', 'disable_non_proxied_udp');
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (FWebRTCMultipleRoutes <> STATE_DEFAULT) then
|
||||||
|
UpdatePreference('webrtc.multiple_routes_enabled', (FWebRTCMultipleRoutes = STATE_ENABLED));
|
||||||
|
|
||||||
|
if (FWebRTCNonProxiedUDP <> STATE_DEFAULT) then
|
||||||
|
UpdatePreference('webrtc.nonproxied_udp_enabled', (FWebRTCNonProxiedUDP = STATE_ENABLED));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TChromium.UpdateProxyPrefs : boolean;
|
function TChromium.UpdateProxyPrefs : boolean;
|
||||||
@ -2301,11 +2360,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChromium.Internal_SavePreferences;
|
function TChromium.Internal_SavePreferences : boolean;
|
||||||
var
|
var
|
||||||
TempDict : ICefDictionaryValue;
|
TempDict : ICefDictionaryValue;
|
||||||
TempPrefs : TStringList;
|
TempPrefs : TStringList;
|
||||||
begin
|
begin
|
||||||
|
Result := False;
|
||||||
TempPrefs := nil;
|
TempPrefs := nil;
|
||||||
|
|
||||||
try
|
try
|
||||||
@ -2316,13 +2376,14 @@ begin
|
|||||||
TempDict := FBrowser.Host.RequestContext.GetAllPreferences(True);
|
TempDict := FBrowser.Host.RequestContext.GetAllPreferences(True);
|
||||||
HandleDictionary(TempDict, TempPrefs, '');
|
HandleDictionary(TempDict, TempPrefs, '');
|
||||||
TempPrefs.SaveToFile(FPrefsFileName);
|
TempPrefs.SaveToFile(FPrefsFileName);
|
||||||
SendCompMessage(CEF_PREFERENCES_SAVED);
|
Result := True;
|
||||||
end;
|
end;
|
||||||
except
|
except
|
||||||
on e : exception do
|
on e : exception do
|
||||||
if CustomExceptionHandler('TChromium.Internal_SavePreferences', e) then raise;
|
if CustomExceptionHandler('TChromium.Internal_SavePreferences', e) then raise;
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
|
SendCompMessage(CEF_PREFERENCES_SAVED, Ord(Result));
|
||||||
if (TempPrefs <> nil) then FreeAndNil(TempPrefs);
|
if (TempPrefs <> nil) then FreeAndNil(TempPrefs);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -2334,7 +2395,7 @@ end;
|
|||||||
|
|
||||||
procedure TChromium.PrefsAvailableMsg(var aMessage : TMessage);
|
procedure TChromium.PrefsAvailableMsg(var aMessage : TMessage);
|
||||||
begin
|
begin
|
||||||
if assigned(FOnPrefsAvailable) then FOnPrefsAvailable(self);
|
if assigned(FOnPrefsAvailable) then FOnPrefsAvailable(self, (aMessage.WParam <> 0));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TChromium.SendCompMessage(aMsg : cardinal; wParam : cardinal; lParam : integer) : boolean;
|
function TChromium.SendCompMessage(aMsg : cardinal; wParam : cardinal; lParam : integer) : boolean;
|
||||||
|
@ -58,6 +58,7 @@ type
|
|||||||
TOnAccessibilityEvent = procedure(Sender: TObject; const value: ICefValue) of object;
|
TOnAccessibilityEvent = procedure(Sender: TObject; const value: ICefValue) of object;
|
||||||
TOnTextResultAvailableEvent = procedure(Sender: TObject; const aText : string) of object;
|
TOnTextResultAvailableEvent = procedure(Sender: TObject; const aText : string) of object;
|
||||||
TOnPdfPrintFinishedEvent = procedure(Sender: TObject; aResultOK : boolean) of object;
|
TOnPdfPrintFinishedEvent = procedure(Sender: TObject; aResultOK : boolean) of object;
|
||||||
|
TOnPrefsAvailableEvent = procedure(Sender: TObject; aResultOK : boolean) of object;
|
||||||
TOnCookiesDeletedEvent = procedure(Sender: TObject; numDeleted : integer) of object;
|
TOnCookiesDeletedEvent = procedure(Sender: TObject; numDeleted : integer) of object;
|
||||||
TOnResolvedIPsAvailableEvent = procedure(Sender: TObject; result: TCefErrorCode; const resolvedIps: TStrings) of object;
|
TOnResolvedIPsAvailableEvent = procedure(Sender: TObject; result: TCefErrorCode; const resolvedIps: TStrings) of object;
|
||||||
TOnProcessMessageReceived = procedure(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean) of object;
|
TOnProcessMessageReceived = procedure(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean) of object;
|
||||||
|
@ -611,24 +611,31 @@ end;
|
|||||||
|
|
||||||
function CheckLocaleFiles(const aLocalesDirPath, aLocalesRequired : string) : boolean;
|
function CheckLocaleFiles(const aLocalesDirPath, aLocalesRequired : string) : boolean;
|
||||||
var
|
var
|
||||||
LLocaleList: TStrings;
|
TempLocaleList : TStrings;
|
||||||
LLocale: string;
|
TempLocale : string;
|
||||||
|
i, j : integer;
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
LLocaleList := TStringList.Create;
|
TempLocaleList := TStringList.Create;
|
||||||
|
|
||||||
try
|
try
|
||||||
LLocaleList.CommaText := aLocalesRequired;
|
TempLocaleList.CommaText := aLocalesRequired;
|
||||||
for LLocale in LLocaleList do
|
|
||||||
begin
|
i := 0;
|
||||||
// avoid typing mistakes
|
j := TempLocaleList.Count;
|
||||||
if Length(LLocale) = 0 then
|
|
||||||
Continue;
|
while (i < j) and Result do
|
||||||
Result := Result and CheckLocaleFile(aLocalesDirPath, LLocale);
|
begin
|
||||||
if not Result then
|
TempLocale := trim(TempLocaleList[i]);
|
||||||
Break;
|
|
||||||
end;
|
// avoid typing mistakes
|
||||||
|
if (Length(TempLocale) > 0) then
|
||||||
|
Result := Result and CheckLocaleFile(aLocalesDirPath, TempLocale);
|
||||||
|
|
||||||
|
inc(i);
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
FreeAndNil(LLocaleList);
|
FreeAndNil(TempLocaleList);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -689,8 +696,8 @@ const
|
|||||||
'zh-CN,' +
|
'zh-CN,' +
|
||||||
'zh-TW';
|
'zh-TW';
|
||||||
var
|
var
|
||||||
TempDir : string;
|
TempDir : string;
|
||||||
LLocalesRequired: string;
|
TempLocalesRequired : string;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
|
|
||||||
@ -703,12 +710,13 @@ begin
|
|||||||
if DirectoryExists(TempDir) then
|
if DirectoryExists(TempDir) then
|
||||||
begin
|
begin
|
||||||
TempDir := IncludeTrailingPathDelimiter(TempDir);
|
TempDir := IncludeTrailingPathDelimiter(TempDir);
|
||||||
if Length(aLocalesRequired) > 0 then
|
|
||||||
LLocalesRequired := aLocalesRequired
|
|
||||||
else
|
|
||||||
LLocalesRequired := LOCALES_REQUIRED_DEFAULT;
|
|
||||||
|
|
||||||
Result := CheckLocaleFiles(TempDir, LLocalesRequired);
|
if (length(aLocalesRequired) > 0) then
|
||||||
|
TempLocalesRequired := aLocalesRequired
|
||||||
|
else
|
||||||
|
TempLocalesRequired := LOCALES_REQUIRED_DEFAULT;
|
||||||
|
|
||||||
|
Result := CheckLocaleFiles(TempDir, TempLocalesRequired);
|
||||||
end;
|
end;
|
||||||
except
|
except
|
||||||
on e : exception do
|
on e : exception do
|
||||||
|
@ -287,6 +287,13 @@ type
|
|||||||
|
|
||||||
TCefProcessType = (ptBrowser, ptRenderer, ptZygote, ptOther);
|
TCefProcessType = (ptBrowser, ptRenderer, ptZygote, ptOther);
|
||||||
|
|
||||||
|
TCefWebRTCHandlingPolicy = (
|
||||||
|
hpDefault,
|
||||||
|
hpDefaultPublicAndPrivateInterfaces,
|
||||||
|
hpDefaultPublicInterfaceOnly,
|
||||||
|
hpDisableNonProxiedUDP
|
||||||
|
);
|
||||||
|
|
||||||
// /include/internal/cef_types_win.h (cef_main_args_t)
|
// /include/internal/cef_types_win.h (cef_main_args_t)
|
||||||
TCefMainArgs = record
|
TCefMainArgs = record
|
||||||
instance: HINST;
|
instance: HINST;
|
||||||
|
Reference in New Issue
Block a user