Created
February 28, 2018 11:46
-
-
Save a-sanders/65d49fa78461fb07d0212b9f5578404b to your computer and use it in GitHub Desktop.
How to set and delete cookies using CookieManager of CEF
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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