Skip to content

Instantly share code, notes, and snippets.

@a-sanders
Created February 28, 2018 11:46
Show Gist options
  • Save a-sanders/65d49fa78461fb07d0212b9f5578404b to your computer and use it in GitHub Desktop.
Save a-sanders/65d49fa78461fb07d0212b9f5578404b to your computer and use it in GitHub Desktop.
How to set and delete cookies using CookieManager of CEF
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 545
ClientWidth = 905
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 0
Top = 0
Width = 905
Height = 81
Align = alTop
BevelOuter = bvNone
Caption = 'Panel1'
ShowCaption = False
TabOrder = 0
object Button1: TButton
Left = 633
Top = 44
Width = 75
Height = 25
Caption = 'Navigate'
Default = True
TabOrder = 0
OnClick = Button1Click
end
object edName: TLabeledEdit
Left = 88
Top = 13
Width = 109
Height = 21
EditLabel.Width = 62
EditLabel.Height = 13
EditLabel.Caption = 'Cookie Name'
LabelPosition = lpLeft
TabOrder = 1
Text = 'TEST_COOKIE'
end
object edValue: TLabeledEdit
Left = 232
Top = 13
Width = 395
Height = 21
EditLabel.Width = 26
EditLabel.Height = 13
EditLabel.Caption = 'Value'
LabelPosition = lpLeft
TabOrder = 2
Text = 'TEST_VALUE'
end
object edURL: TLabeledEdit
Left = 40
Top = 46
Width = 587
Height = 21
EditLabel.Width = 19
EditLabel.Height = 13
EditLabel.Caption = 'URL'
LabelPosition = lpLeft
TabOrder = 3
Text = 'http://www.html-kit.com/tools/cookietester/'
end
object Button2: TButton
Left = 633
Top = 13
Width = 75
Height = 25
Caption = 'Set Cookie'
TabOrder = 4
OnClick = Button2Click
end
object Button3: TButton
Left = 714
Top = 13
Width = 75
Height = 25
Caption = 'Delete Cookie'
TabOrder = 5
OnClick = Button3Click
end
end
object Chromium: TChromium
AlignWithMargins = True
Left = 3
Top = 84
Width = 899
Height = 439
Align = alClient
DefaultUrl = 'about:blank'
TabOrder = 1
OnLoadEnd = ChromiumLoadEnd
OnLoadError = ChromiumLoadError
OnKeyEvent = ChromiumKeyEvent
OnTitleChange = ChromiumTitleChange
OnTooltip = ChromiumTooltip
OnStatusMessage = ChromiumStatusMessage
OnCertificateError = ChromiumCertificateError
Options.Plugins = STATE_DISABLED
Options.WebSecurity = STATE_DISABLED
Options.Databases = STATE_DISABLED
Options.ApplicationCache = STATE_DISABLED
Options.Webgl = STATE_DISABLED
end
object StatusBar: TStatusBar
Left = 0
Top = 526
Width = 905
Height = 19
Panels = <>
SimplePanel = True
end
end
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, cefvcl, ceflib, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Chromium: TChromium;
StatusBar: TStatusBar;
edName: TLabeledEdit;
edValue: TLabeledEdit;
edURL: TLabeledEdit;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure ChromiumCertificateError(Sender: TObject;
const browser: ICefBrowser; certError: Integer; const requestUrl: ustring;
const sslInfo: ICefSslInfo; const callback: ICefRequestCallback;
out Result: Boolean);
procedure ChromiumKeyEvent(Sender: TObject; const browser: ICefBrowser;
const event: PCefKeyEvent; osEvent: PMsg; out Result: Boolean);
procedure ChromiumLoadError(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; errorCode: Integer; const errorText,
failedUrl: ustring);
procedure ChromiumStatusMessage(Sender: TObject; const browser: ICefBrowser;
const value: ustring);
procedure ChromiumTitleChange(Sender: TObject; const browser: ICefBrowser;
const title: ustring);
procedure ChromiumTooltip(Sender: TObject; const browser: ICefBrowser;
var text: ustring; out Result: Boolean);
procedure ChromiumLoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
function GetCookieManager: ICefCookieManager;
property CookieManager: ICefCookieManager read GetCookieManager;
public
function IsMainFrame(const b: ICefBrowser; const f: ICefFrame): Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Chromium.Browser.MainFrame.LoadUrl(edURL.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
sCookieName: string;
sCookieValue: string;
sCookieDomain: string;
sCookiePath: string;
bCookieSecure: boolean;
begin
sCookieName := Trim(edName.Text);
sCookieValue := Trim(edValue.Text);
sCookieDomain := '';
sCookiePath := '';
bCookieSecure := False;
if (sCookieName <> '') and (sCookieValue <> '') then begin
CookieManager.SetCookie(edURL.Text,
sCookieName, sCookieValue, sCookieDomain, sCookiePath, bCookieSecure,
False, False, 0.0, Now, 0.0, nil);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
sCookieName: string;
begin
sCookieName := Trim(edName.Text);
if (sCookieName <> '') then
CookieManager.DeleteCookies('', sCookieName, nil);
end;
procedure TForm1.ChromiumCertificateError(Sender: TObject;
const browser: ICefBrowser; certError: Integer; const requestUrl: ustring;
const sslInfo: ICefSslInfo; const callback: ICefRequestCallback;
out Result: Boolean);
begin
callback.Cont(True);
Result := True;
end;
procedure TForm1.ChromiumKeyEvent(Sender: TObject; const browser: ICefBrowser;
const event: PCefKeyEvent; osEvent: PMsg; out Result: Boolean);
begin
if (event^.kind = KEYEVENT_RAWKEYDOWN) and (event^.windows_key_code = VK_F5) then
begin
Result := True;
Chromium.Browser.Reload;
end;
end;
function TForm1.IsMainFrame(const b: ICefBrowser; const f: ICefFrame): Boolean;
begin
Result := (b <> nil) and (b.Identifier = Chromium.BrowserId) and ((f = nil) or (f.IsMain));
end;
procedure TForm1.ChromiumLoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
begin
if (frame.url <> 'about:blank') and IsMainFrame(browser, frame) then begin
edURL.Text := frame.Url;
browser.MainFrame.ExecuteJavaScript(
'document.body.insertBefore(document.createTextNode("DOCUMENT COOKIES: " + document.cookie), document.body.firstChild);'+
'window.scrollTo(-1, -1);',
'', 0);
end;
end;
procedure TForm1.ChromiumLoadError(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; errorCode: Integer; const errorText,
failedUrl: ustring);
begin
StatusBar.SimpleText := Format('Error: errorCode=%d; errorText=%s; failedUrl=%s', [
errorCode, errorText, failedUrl]);
end;
procedure TForm1.ChromiumStatusMessage(Sender: TObject;
const browser: ICefBrowser; const value: ustring);
begin
StatusBar.SimpleText := value
end;
procedure TForm1.ChromiumTitleChange(Sender: TObject;
const browser: ICefBrowser; const title: ustring);
begin
Caption := title;
end;
procedure TForm1.ChromiumTooltip(Sender: TObject; const browser: ICefBrowser;
var text: ustring; out Result: Boolean);
begin
StatusBar.SimpleText := text;
end;
function TForm1.GetCookieManager: ICefCookieManager;
begin
Result := TCefCookieManagerRef.Global(nil)
end;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment