You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-08-04 21:32:54 +02:00
Improved function to emulate the user agent thanks to 김케이 KimK-Hack
This commit is contained in:
@ -41,7 +41,7 @@ object Form1: TForm1
|
||||
Align = alClient
|
||||
ReadOnly = True
|
||||
ScrollBars = ssBoth
|
||||
TabOrder = 0
|
||||
TabOrder = 3
|
||||
end
|
||||
object Panel3: TPanel
|
||||
Left = 0
|
||||
@ -54,7 +54,7 @@ object Form1: TForm1
|
||||
Padding.Top = 10
|
||||
Padding.Right = 10
|
||||
Padding.Bottom = 10
|
||||
TabOrder = 1
|
||||
TabOrder = 0
|
||||
object CanEmulateBtn: TButton
|
||||
Left = 10
|
||||
Top = 10
|
||||
@ -86,7 +86,7 @@ object Form1: TForm1
|
||||
Padding.Left = 10
|
||||
Padding.Right = 10
|
||||
Padding.Bottom = 10
|
||||
TabOrder = 2
|
||||
TabOrder = 1
|
||||
object GroupBox1: TGroupBox
|
||||
Left = 10
|
||||
Top = 0
|
||||
@ -218,7 +218,7 @@ object Form1: TForm1
|
||||
Padding.Left = 10
|
||||
Padding.Right = 10
|
||||
Padding.Bottom = 10
|
||||
TabOrder = 3
|
||||
TabOrder = 2
|
||||
object GroupBox2: TGroupBox
|
||||
Left = 10
|
||||
Top = 0
|
||||
@ -239,7 +239,7 @@ object Form1: TForm1
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
Padding.Bottom = 5
|
||||
TabOrder = 0
|
||||
TabOrder = 1
|
||||
object Label1: TLabel
|
||||
Left = 0
|
||||
Top = 0
|
||||
@ -270,7 +270,7 @@ object Form1: TForm1
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
Padding.Bottom = 5
|
||||
TabOrder = 1
|
||||
TabOrder = 0
|
||||
object Label2: TLabel
|
||||
Left = 0
|
||||
Top = 0
|
||||
@ -300,7 +300,7 @@ object Form1: TForm1
|
||||
Height = 25
|
||||
Align = alBottom
|
||||
Caption = 'Override device metrics'
|
||||
TabOrder = 2
|
||||
TabOrder = 5
|
||||
OnClick = OverrideDeviceMetricsBtnClick
|
||||
end
|
||||
object Panel8: TPanel
|
||||
@ -311,7 +311,7 @@ object Form1: TForm1
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
Padding.Bottom = 5
|
||||
TabOrder = 3
|
||||
TabOrder = 2
|
||||
object Label3: TLabel
|
||||
Left = 0
|
||||
Top = 0
|
||||
@ -343,7 +343,7 @@ object Form1: TForm1
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
Padding.Bottom = 5
|
||||
TabOrder = 4
|
||||
TabOrder = 3
|
||||
object Label4: TLabel
|
||||
Left = 0
|
||||
Top = 0
|
||||
@ -379,7 +379,7 @@ object Form1: TForm1
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
Padding.Bottom = 5
|
||||
TabOrder = 5
|
||||
TabOrder = 4
|
||||
object Label5: TLabel
|
||||
Left = 0
|
||||
Top = 0
|
||||
|
@ -53,6 +53,9 @@ type
|
||||
procedure Timer1Timer(Sender: TObject);
|
||||
procedure CanEmulateBtnClick(Sender: TObject);
|
||||
procedure OverrideUserAgentBtnClick(Sender: TObject);
|
||||
procedure EmulateTouchChkClick(Sender: TObject);
|
||||
procedure ClearDeviceMetricsOverrideBtnClick(Sender: TObject);
|
||||
procedure OverrideDeviceMetricsBtnClick(Sender: TObject);
|
||||
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
@ -64,9 +67,6 @@ type
|
||||
procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient; var settings: TCefBrowserSettings; var extra_info: ICefDictionaryValue; var noJavascriptAccess, Result: Boolean);
|
||||
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
||||
procedure Chromium1DevToolsMethodResult(Sender: TObject; const browser: ICefBrowser; message_id: Integer; success: Boolean; const result: ICefValue);
|
||||
procedure EmulateTouchChkClick(Sender: TObject);
|
||||
procedure ClearDeviceMetricsOverrideBtnClick(Sender: TObject);
|
||||
procedure OverrideDeviceMetricsBtnClick(Sender: TObject);
|
||||
|
||||
protected
|
||||
// Variables to control when can we destroy the form safely
|
||||
@ -102,7 +102,7 @@ implementation
|
||||
{$R *.dfm}
|
||||
|
||||
uses
|
||||
uCEFApplication, uCefMiscFunctions;
|
||||
uCEFApplication, uCefMiscFunctions, uCEFListValue;
|
||||
|
||||
// This demo allows you to emulate a mobile browser using the "Emulation" namespace of the DevTools.
|
||||
// It's necesary to reload the browser after using the controls in the right panel.
|
||||
@ -294,10 +294,42 @@ end;
|
||||
procedure TForm1.OverrideUserAgentBtnClick(Sender: TObject);
|
||||
var
|
||||
TempParams : ICefDictionaryValue;
|
||||
TempMetadataDict, TempBrandDict, TempFullVersionDict: ICefDictionaryValue;
|
||||
TempBrandsArray, TempFullVersionListArray: ICefListValue;
|
||||
begin
|
||||
try
|
||||
TempParams := TCefDictionaryValueRef.New;
|
||||
|
||||
TempMetadataDict := TCefDictionaryValueRef.New;
|
||||
TempBrandsArray := TCefListValueRef.New;
|
||||
TempFullVersionListArray := TCefListValueRef.New;
|
||||
|
||||
TempBrandsArray.SetSize(1);
|
||||
TempBrandDict := TCefDictionaryValueRef.New;
|
||||
TempBrandDict.SetString('brand', 'Chromium');
|
||||
TempBrandDict.SetString('version', '91');
|
||||
TempBrandsArray.SetDictionary(0, TempBrandDict);
|
||||
|
||||
|
||||
TempFullVersionListArray.SetSize(1);
|
||||
TempFullVersionDict := TCefDictionaryValueRef.New;
|
||||
TempFullVersionDict.SetString('brand', 'Chromium'); //Not:A
|
||||
TempFullVersionDict.SetString('version', '91.0.4472.114');
|
||||
TempFullVersionListArray.SetDictionary(0, TempFullVersionDict);
|
||||
|
||||
TempMetadataDict.SetList('brands', TempBrandsArray);
|
||||
TempMetadataDict.SetList('fullVersionList', TempFullVersionListArray);
|
||||
TempMetadataDict.SetString('platform', 'Android'); //or Windows
|
||||
TempMetadataDict.SetString('platformVersion', '12');
|
||||
TempMetadataDict.SetString('architecture', 'arm');
|
||||
TempMetadataDict.SetString('model', 'SM-F916N');
|
||||
TempMetadataDict.SetBool('mobile', true);
|
||||
TempMetadataDict.SetString('bitness', '32');
|
||||
|
||||
TempParams.SetString('userAgent', UserAgentCb.Text);
|
||||
// Setting the userAgentMetadata value is optional and can be omited.
|
||||
// All the values in TempMetadataDict are just an example and they should be customized for each use case.
|
||||
TempParams.SetDictionary('userAgentMetadata', TempMetadataDict);
|
||||
|
||||
FPendingMsgID := DEVTOOLS_SETUSERAGENTOVERRIDE_MSGID;
|
||||
Chromium1.ExecuteDevToolsMethod(0, 'Emulation.setUserAgentOverride', TempParams);
|
||||
|
Reference in New Issue
Block a user