mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-04-27 07:02:21 +02:00
Added all TCefCookieManager functions to TChromium
- Added TChromium.VisitAllCookies - Added TChromium.VisitURLCookies - Added TChromium.SetCookie - Added TChromium.OnCookiesVisited - Added TChromium.OnCookieSet - Removed unused constants. - CookieVisitor demo adapted to the new TChromium functions and events.
This commit is contained in:
parent
d8ea60d8fd
commit
2fe89069a4
@ -14,7 +14,6 @@ object CookieVisitorFrm: TCookieVisitorFrm
|
|||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
OnCloseQuery = FormCloseQuery
|
OnCloseQuery = FormCloseQuery
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
@ -66,6 +65,8 @@ object CookieVisitorFrm: TCookieVisitorFrm
|
|||||||
end
|
end
|
||||||
object Chromium1: TChromium
|
object Chromium1: TChromium
|
||||||
OnCookiesDeleted = Chromium1CookiesDeleted
|
OnCookiesDeleted = Chromium1CookiesDeleted
|
||||||
|
OnCookiesVisited = Chromium1CookiesVisited
|
||||||
|
OnCookieSet = Chromium1CookieSet
|
||||||
OnBeforeContextMenu = Chromium1BeforeContextMenu
|
OnBeforeContextMenu = Chromium1BeforeContextMenu
|
||||||
OnContextMenuCommand = Chromium1ContextMenuCommand
|
OnContextMenuCommand = Chromium1ContextMenuCommand
|
||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
|
@ -53,12 +53,14 @@ uses
|
|||||||
uCEFCookieManager, uCEFCookieVisitor, uCEFWinControl, uCEFSentinel;
|
uCEFCookieManager, uCEFCookieVisitor, uCEFWinControl, uCEFSentinel;
|
||||||
|
|
||||||
const
|
const
|
||||||
MINIBROWSER_SHOWCOOKIES = WM_APP + $101;
|
MINIBROWSER_SHOWCOOKIES = WM_APP + $101;
|
||||||
MINIBROWSER_SETCOOKIERSLT = WM_APP + $102;
|
MINIBROWSER_COOKIESDELETED = WM_APP + $102;
|
||||||
|
MINIBROWSER_COOKIESET = WM_APP + $103;
|
||||||
|
|
||||||
MINIBROWSER_CONTEXTMENU_DELETECOOKIES = MENU_ID_USER_FIRST + 1;
|
MINIBROWSER_CONTEXTMENU_DELETECOOKIES = MENU_ID_USER_FIRST + 1;
|
||||||
MINIBROWSER_CONTEXTMENU_GETCOOKIES = MENU_ID_USER_FIRST + 2;
|
MINIBROWSER_CONTEXTMENU_GETCOOKIES = MENU_ID_USER_FIRST + 2;
|
||||||
MINIBROWSER_CONTEXTMENU_SETCOOKIE = MENU_ID_USER_FIRST + 3;
|
MINIBROWSER_CONTEXTMENU_SETCOOKIE = MENU_ID_USER_FIRST + 3;
|
||||||
|
MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES = MENU_ID_USER_FIRST + 4;
|
||||||
|
|
||||||
type
|
type
|
||||||
TCookieVisitorFrm = class(TForm)
|
TCookieVisitorFrm = class(TForm)
|
||||||
@ -82,7 +84,6 @@ type
|
|||||||
procedure Chromium1CookiesDeleted(Sender: TObject;
|
procedure Chromium1CookiesDeleted(Sender: TObject;
|
||||||
numDeleted: Integer);
|
numDeleted: Integer);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormDestroy(Sender: TObject);
|
|
||||||
procedure Timer1Timer(Sender: TObject);
|
procedure Timer1Timer(Sender: TObject);
|
||||||
procedure Chromium1BeforePopup(Sender: TObject;
|
procedure Chromium1BeforePopup(Sender: TObject;
|
||||||
const browser: ICefBrowser; const frame: ICefFrame; const targetUrl,
|
const browser: ICefBrowser; const frame: ICefFrame; const targetUrl,
|
||||||
@ -98,6 +99,12 @@ type
|
|||||||
procedure Chromium1BeforeClose(Sender: TObject;
|
procedure Chromium1BeforeClose(Sender: TObject;
|
||||||
const browser: ICefBrowser);
|
const browser: ICefBrowser);
|
||||||
procedure CEFSentinel1Close(Sender: TObject);
|
procedure CEFSentinel1Close(Sender: TObject);
|
||||||
|
procedure Chromium1CookiesVisited(Sender: TObject; const name_, value,
|
||||||
|
domain, path: ustring; secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime; count,
|
||||||
|
total, aID : Integer; var aDeleteCookie, aResult: Boolean);
|
||||||
|
procedure Chromium1CookieSet(Sender: TObject; aSuccess: Boolean;
|
||||||
|
aID: Integer);
|
||||||
|
|
||||||
private
|
private
|
||||||
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
|
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
|
||||||
@ -107,11 +114,11 @@ type
|
|||||||
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
||||||
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEF_DESTROY;
|
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEF_DESTROY;
|
||||||
procedure ShowCookiesMsg(var aMessage : TMessage); message MINIBROWSER_SHOWCOOKIES;
|
procedure ShowCookiesMsg(var aMessage : TMessage); message MINIBROWSER_SHOWCOOKIES;
|
||||||
procedure SetCookieRsltMsg(var aMessage : TMessage); message MINIBROWSER_SETCOOKIERSLT;
|
procedure CookiesDeletedMsg(var aMessage : TMessage); message MINIBROWSER_COOKIESDELETED;
|
||||||
|
procedure CookieSetMsg(var aMessage : TMessage); message MINIBROWSER_COOKIESET;
|
||||||
|
|
||||||
protected
|
protected
|
||||||
FText : string;
|
FText : string;
|
||||||
FVisitor : ICefCookieVisitor;
|
|
||||||
// Variables to control when can we destroy the form safely
|
// Variables to control when can we destroy the form safely
|
||||||
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
|
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
|
||||||
FClosing : boolean; // Set to True in the CloseQuery event.
|
FClosing : boolean; // Set to True in the CloseQuery event.
|
||||||
@ -133,12 +140,17 @@ implementation
|
|||||||
uses
|
uses
|
||||||
uSimpleTextViewer, uCEFTask, uCEFMiscFunctions;
|
uSimpleTextViewer, uCEFTask, uCEFMiscFunctions;
|
||||||
|
|
||||||
// This demo has a context menu to test the DeleteCookies function and a CookieVisitor example.
|
// This demo has a context menu to test several TChromium functions related to cookies like TChromium.VisitAllCookies,
|
||||||
|
// TChromium.SetCookie, TChromium.DeleteCookies, etc.
|
||||||
|
|
||||||
// The cookie visitor gets the global cookie manager to call the VisitAllCookies function.
|
// TChromium.VisitAllCookies and TChromium.VisitURLCookies trigger the TChromium.OnCookiesVisited event for each
|
||||||
// The cookie visitor will call CookieVisitorProc for each cookie and it'll save the information using the AddCookieInfo function.
|
// cookie and it'll save the information using the AddCookieInfo function.
|
||||||
// When the last cookie arrives we show the information in a SimpleTextViewer form.
|
// When the last cookie arrives we show the information in a SimpleTextViewer form.
|
||||||
|
|
||||||
|
// TChromium.SetCookie triggers TChromium.OnCookieSet when it has set the cookie.
|
||||||
|
|
||||||
|
// TChromium.DeleteCookies triggers TChromium.OnCookiesDeleted when the cookies have been deleted.
|
||||||
|
|
||||||
// Destruction steps
|
// Destruction steps
|
||||||
// =================
|
// =================
|
||||||
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which triggers the TChromium.OnClose event.
|
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which triggers the TChromium.OnClose event.
|
||||||
@ -153,41 +165,6 @@ begin
|
|||||||
//GlobalCEFApp.LogSeverity := LOGSEVERITY_VERBOSE;
|
//GlobalCEFApp.LogSeverity := LOGSEVERITY_VERBOSE;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// This function is called in the IO thread.
|
|
||||||
function CookieVisitorProc(const name, value, domain, path: ustring;
|
|
||||||
secure, httponly, hasExpires: Boolean;
|
|
||||||
const creation, lastAccess, expires: TDateTime;
|
|
||||||
count, total: Integer;
|
|
||||||
out deleteCookie: Boolean): Boolean;
|
|
||||||
var
|
|
||||||
TempCookie : TCookie;
|
|
||||||
begin
|
|
||||||
deleteCookie := False;
|
|
||||||
|
|
||||||
TempCookie.name := name;
|
|
||||||
TempCookie.value := value;
|
|
||||||
TempCookie.domain := domain;
|
|
||||||
TempCookie.path := path;
|
|
||||||
TempCookie.secure := secure;
|
|
||||||
TempCookie.httponly := httponly;
|
|
||||||
TempCookie.creation := creation;
|
|
||||||
TempCookie.last_access := lastAccess;
|
|
||||||
TempCookie.has_expires := hasExpires;
|
|
||||||
TempCookie.expires := expires;
|
|
||||||
|
|
||||||
CookieVisitorFrm.AddCookieInfo(TempCookie);
|
|
||||||
|
|
||||||
if (count = pred(total)) then
|
|
||||||
begin
|
|
||||||
if (CookieVisitorFrm <> nil) and CookieVisitorFrm.HandleAllocated then
|
|
||||||
PostMessage(CookieVisitorFrm.Handle, MINIBROWSER_SHOWCOOKIES, 0, 0);
|
|
||||||
|
|
||||||
Result := False;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.AddCookieInfo(const aCookie : TCookie);
|
procedure TCookieVisitorFrm.AddCookieInfo(const aCookie : TCookie);
|
||||||
begin
|
begin
|
||||||
// This should be protected by a mutex.
|
// This should be protected by a mutex.
|
||||||
@ -212,12 +189,17 @@ begin
|
|||||||
SimpleTextViewerFrm.ShowModal;
|
SimpleTextViewerFrm.ShowModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.SetCookieRsltMsg(var aMessage : TMessage);
|
procedure TCookieVisitorFrm.CookiesDeletedMsg(var aMessage : TMessage);
|
||||||
begin
|
begin
|
||||||
if (aMessage.wParam = 0) then
|
showmessage('Deleted cookies : ' + inttostr(aMessage.lParam));
|
||||||
showmessage('There was a problem setting the cookie')
|
end;
|
||||||
|
|
||||||
|
procedure TCookieVisitorFrm.CookieSetMsg(var aMessage : TMessage);
|
||||||
|
begin
|
||||||
|
if (aMessage.wParam <> 0) then
|
||||||
|
showmessage('Cookie set successfully !')
|
||||||
else
|
else
|
||||||
showmessage('Cookie set successfully !');
|
showmessage('There was a problem setting the cookie');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.Timer1Timer(Sender: TObject);
|
procedure TCookieVisitorFrm.Timer1Timer(Sender: TObject);
|
||||||
@ -253,10 +235,11 @@ procedure TCookieVisitorFrm.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_DELETECOOKIES, 'Delete cookies');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_DELETECOOKIES, 'Delete cookies');
|
||||||
model.AddSeparator;
|
model.AddSeparator;
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_GETCOOKIES, 'Visit cookies');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_GETCOOKIES, 'Visit all cookies');
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_SETCOOKIE, 'Set cookie');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES, 'Visit cookies from Google');
|
||||||
|
model.AddItem(MINIBROWSER_CONTEXTMENU_SETCOOKIE, 'Set cookie');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.Chromium1BeforePopup(Sender: TObject;
|
procedure TCookieVisitorFrm.Chromium1BeforePopup(Sender: TObject;
|
||||||
@ -284,8 +267,6 @@ procedure TCookieVisitorFrm.Chromium1ContextMenuCommand(Sender: TObject;
|
|||||||
const browser: ICefBrowser; const frame: ICefFrame;
|
const browser: ICefBrowser; const frame: ICefFrame;
|
||||||
const params: ICefContextMenuParams; commandId: Integer;
|
const params: ICefContextMenuParams; commandId: Integer;
|
||||||
eventFlags: Cardinal; out Result: Boolean);
|
eventFlags: Cardinal; out Result: Boolean);
|
||||||
var
|
|
||||||
TempManager : ICefCookieManager;
|
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
|
|
||||||
@ -295,37 +276,73 @@ begin
|
|||||||
MINIBROWSER_CONTEXTMENU_GETCOOKIES :
|
MINIBROWSER_CONTEXTMENU_GETCOOKIES :
|
||||||
begin
|
begin
|
||||||
// This should be protected by a mutex
|
// This should be protected by a mutex
|
||||||
FText := '';
|
FText := '';
|
||||||
TempManager := TCefCookieManagerRef.Global(nil);
|
Chromium1.VisitAllCookies;
|
||||||
TempManager.VisitAllCookies(FVisitor);
|
end;
|
||||||
|
|
||||||
|
MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES :
|
||||||
|
begin
|
||||||
|
// This should be protected by a mutex
|
||||||
|
FText := '';
|
||||||
|
Chromium1.VisitURLCookies('https://www.google.com');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
MINIBROWSER_CONTEXTMENU_SETCOOKIE :
|
MINIBROWSER_CONTEXTMENU_SETCOOKIE :
|
||||||
begin
|
Chromium1.SetCookie('https://www.example.com',
|
||||||
TempManager := TCefCookieManagerRef.Global(nil);
|
'example_cookie_name',
|
||||||
|
'1234',
|
||||||
if TempManager.SetCookie('https://www.example.com',
|
'',
|
||||||
'example_cookie_name',
|
'/',
|
||||||
'1234',
|
True,
|
||||||
'',
|
True,
|
||||||
'/',
|
False,
|
||||||
True,
|
now,
|
||||||
True,
|
now,
|
||||||
False,
|
now,
|
||||||
now,
|
False);
|
||||||
now,
|
|
||||||
now,
|
|
||||||
nil) then
|
|
||||||
PostMessage(Handle, MINIBROWSER_SETCOOKIERSLT, ord(True), 0)
|
|
||||||
else
|
|
||||||
PostMessage(Handle, MINIBROWSER_SETCOOKIERSLT, ord(False), 0);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.Chromium1CookiesDeleted(Sender: TObject; numDeleted: Integer);
|
procedure TCookieVisitorFrm.Chromium1CookiesDeleted(Sender: TObject; numDeleted: Integer);
|
||||||
begin
|
begin
|
||||||
showmessage('Deleted cookies : ' + inttostr(numDeleted));
|
PostMessage(Handle, MINIBROWSER_COOKIESDELETED, 0, numDeleted);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCookieVisitorFrm.Chromium1CookieSet(Sender: TObject;
|
||||||
|
aSuccess: Boolean; aID: Integer);
|
||||||
|
begin
|
||||||
|
PostMessage(Handle, MINIBROWSER_COOKIESET, ord(aSuccess), aID);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCookieVisitorFrm.Chromium1CookiesVisited(Sender: TObject;
|
||||||
|
const name_, value, domain, path: ustring; secure, httponly,
|
||||||
|
hasExpires: Boolean; const creation, lastAccess, expires: TDateTime;
|
||||||
|
count, total, aID: Integer; var aDeleteCookie, aResult: Boolean);
|
||||||
|
var
|
||||||
|
TempCookie : TCookie;
|
||||||
|
begin
|
||||||
|
aDeleteCookie := False;
|
||||||
|
|
||||||
|
TempCookie.name := name_;
|
||||||
|
TempCookie.value := value;
|
||||||
|
TempCookie.domain := domain;
|
||||||
|
TempCookie.path := path;
|
||||||
|
TempCookie.secure := secure;
|
||||||
|
TempCookie.httponly := httponly;
|
||||||
|
TempCookie.creation := creation;
|
||||||
|
TempCookie.last_access := lastAccess;
|
||||||
|
TempCookie.has_expires := hasExpires;
|
||||||
|
TempCookie.expires := expires;
|
||||||
|
|
||||||
|
AddCookieInfo(TempCookie);
|
||||||
|
|
||||||
|
if (count = pred(total)) then
|
||||||
|
begin
|
||||||
|
PostMessage(Handle, MINIBROWSER_SHOWCOOKIES, 0, 0);
|
||||||
|
aResult := False;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
aResult := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
procedure TCookieVisitorFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
||||||
@ -342,16 +359,10 @@ end;
|
|||||||
|
|
||||||
procedure TCookieVisitorFrm.FormCreate(Sender: TObject);
|
procedure TCookieVisitorFrm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FVisitor := TCefFastCookieVisitor.Create(CookieVisitorProc);
|
|
||||||
FCanClose := False;
|
FCanClose := False;
|
||||||
FClosing := False;
|
FClosing := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.FormDestroy(Sender: TObject);
|
|
||||||
begin
|
|
||||||
FVisitor := nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.FormShow(Sender: TObject);
|
procedure TCookieVisitorFrm.FormShow(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
|
// GlobalCEFApp.GlobalContextInitialized has to be TRUE before creating any browser
|
||||||
|
@ -83,7 +83,7 @@
|
|||||||
</Other>
|
</Other>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
<Debugging>
|
<Debugging>
|
||||||
<Exceptions Count="3">
|
<Exceptions Count="4">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Name Value="EAbort"/>
|
<Name Value="EAbort"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
@ -93,6 +93,10 @@
|
|||||||
<Item3>
|
<Item3>
|
||||||
<Name Value="EFOpenError"/>
|
<Name Value="EFOpenError"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
|
<Item4>
|
||||||
|
<Name Value="EThread"/>
|
||||||
|
<Enabled Value="False"/>
|
||||||
|
</Item4>
|
||||||
</Exceptions>
|
</Exceptions>
|
||||||
</Debugging>
|
</Debugging>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<TopLine Value="40"/>
|
<TopLine Value="40"/>
|
||||||
<CursorPos X="25" Y="74"/>
|
<CursorPos X="25" Y="74"/>
|
||||||
<UsageCount Value="22"/>
|
<UsageCount Value="24"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
<DefaultSyntaxHighlighter Value="Delphi"/>
|
<DefaultSyntaxHighlighter Value="Delphi"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
@ -22,9 +22,14 @@
|
|||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<IsVisibleTab Value="True"/>
|
<IsVisibleTab Value="True"/>
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<TopLine Value="131"/>
|
<TopLine Value="231"/>
|
||||||
<CursorPos X="82" Y="150"/>
|
<CursorPos X="13" Y="235"/>
|
||||||
<UsageCount Value="22"/>
|
<UsageCount Value="24"/>
|
||||||
|
<Bookmarks Count="3">
|
||||||
|
<Item0 Y="350" ID="1"/>
|
||||||
|
<Item1 X="3" Y="198" ID="2"/>
|
||||||
|
<Item2 X="66" Y="229" ID="3"/>
|
||||||
|
</Bookmarks>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
<LoadedDesigner Value="True"/>
|
<LoadedDesigner Value="True"/>
|
||||||
<DefaultSyntaxHighlighter Value="Delphi"/>
|
<DefaultSyntaxHighlighter Value="Delphi"/>
|
||||||
@ -37,73 +42,138 @@
|
|||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<EditorIndex Value="-1"/>
|
<EditorIndex Value="-1"/>
|
||||||
<CursorPos X="8" Y="29"/>
|
<CursorPos X="8" Y="29"/>
|
||||||
<UsageCount Value="22"/>
|
<UsageCount Value="24"/>
|
||||||
<DefaultSyntaxHighlighter Value="Delphi"/>
|
<DefaultSyntaxHighlighter Value="Delphi"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
<Unit3>
|
<Unit3>
|
||||||
<Filename Value="C:\lazarus\lcl\interfaces\win32\win32object.inc"/>
|
<Filename Value="C:\lazarus\lcl\interfaces\win32\win32object.inc"/>
|
||||||
<EditorIndex Value="-1"/>
|
<EditorIndex Value="-1"/>
|
||||||
<TopLine Value="354"/>
|
<TopLine Value="399"/>
|
||||||
<CursorPos Y="413"/>
|
<CursorPos Y="413"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit3>
|
</Unit3>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="14" HistoryIndex="13">
|
<JumpHistory Count="30" HistoryIndex="29">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="252" Column="5" TopLine="249"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="50" Column="3" TopLine="32"/>
|
<Caret Line="64" Column="35" TopLine="42"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="368" TopLine="335"/>
|
<Caret Line="85" Column="41" TopLine="61"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="126" Column="8" TopLine="116"/>
|
<Caret Line="356" Column="81" TopLine="334"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="74" TopLine="39"/>
|
<Caret Line="223" TopLine="206"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
<Position6>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="57" TopLine="39"/>
|
<Caret Line="251" Column="70" TopLine="234"/>
|
||||||
</Position6>
|
</Position6>
|
||||||
<Position7>
|
<Position7>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="40" TopLine="40"/>
|
<Caret Line="252" Column="3" TopLine="239"/>
|
||||||
</Position7>
|
</Position7>
|
||||||
<Position8>
|
<Position8>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="75" TopLine="40"/>
|
<Caret Line="79" Column="67" TopLine="75"/>
|
||||||
</Position8>
|
</Position8>
|
||||||
<Position9>
|
<Position9>
|
||||||
<Filename Value="CookieVisitor.lpr"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="58" Column="31" TopLine="36"/>
|
<Caret Line="352" Column="38" TopLine="336"/>
|
||||||
</Position9>
|
</Position9>
|
||||||
<Position10>
|
<Position10>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="86" Column="26" TopLine="72"/>
|
<Caret Line="41" Column="100" TopLine="29"/>
|
||||||
</Position10>
|
</Position10>
|
||||||
<Position11>
|
<Position11>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="125" Column="11" TopLine="115"/>
|
<Caret Line="99" Column="40" TopLine="71"/>
|
||||||
</Position11>
|
</Position11>
|
||||||
<Position12>
|
<Position12>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="149" Column="69" TopLine="139"/>
|
<Caret Line="119" Column="15" TopLine="103"/>
|
||||||
</Position12>
|
</Position12>
|
||||||
<Position13>
|
<Position13>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="150" Column="58" TopLine="139"/>
|
<Caret Line="191" Column="3" TopLine="182"/>
|
||||||
</Position13>
|
</Position13>
|
||||||
<Position14>
|
<Position14>
|
||||||
<Filename Value="uCookieVisitor.pas"/>
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
<Caret Line="155" Column="58" TopLine="144"/>
|
<Caret Line="339" Column="60" TopLine="324"/>
|
||||||
</Position14>
|
</Position14>
|
||||||
|
<Position15>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="191" Column="62" TopLine="176"/>
|
||||||
|
</Position15>
|
||||||
|
<Position16>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="120" Column="67" TopLine="106"/>
|
||||||
|
</Position16>
|
||||||
|
<Position17>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="339" Column="31" TopLine="324"/>
|
||||||
|
</Position17>
|
||||||
|
<Position18>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="117" Column="84" TopLine="94"/>
|
||||||
|
</Position18>
|
||||||
|
<Position19>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="115" Column="96" TopLine="95"/>
|
||||||
|
</Position19>
|
||||||
|
<Position20>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="119" Column="87" TopLine="95"/>
|
||||||
|
</Position20>
|
||||||
|
<Position21>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="245" Column="11" TopLine="222"/>
|
||||||
|
</Position21>
|
||||||
|
<Position22>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="340" TopLine="325"/>
|
||||||
|
</Position22>
|
||||||
|
<Position23>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="339" Column="74" TopLine="325"/>
|
||||||
|
</Position23>
|
||||||
|
<Position24>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="216" Column="51" TopLine="202"/>
|
||||||
|
</Position24>
|
||||||
|
<Position25>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="340" Column="68" TopLine="326"/>
|
||||||
|
</Position25>
|
||||||
|
<Position26>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="121" Column="15" TopLine="109"/>
|
||||||
|
</Position26>
|
||||||
|
<Position27>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="198" Column="5" TopLine="190"/>
|
||||||
|
</Position27>
|
||||||
|
<Position28>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="221" Column="66" TopLine="208"/>
|
||||||
|
</Position28>
|
||||||
|
<Position29>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="198" Column="28" TopLine="178"/>
|
||||||
|
</Position29>
|
||||||
|
<Position30>
|
||||||
|
<Filename Value="uCookieVisitor.pas"/>
|
||||||
|
<Caret Line="83" Column="72" TopLine="75"/>
|
||||||
|
</Position30>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
<RunParams>
|
<RunParams>
|
||||||
<FormatVersion Value="2"/>
|
<FormatVersion Value="2"/>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
object CookieVisitorFrm: TCookieVisitorFrm
|
object CookieVisitorFrm: TCookieVisitorFrm
|
||||||
Left = 183
|
Left = 449
|
||||||
Height = 762
|
Height = 762
|
||||||
Top = 77
|
Top = 101
|
||||||
Width = 884
|
Width = 884
|
||||||
Caption = 'Cookie Visitor'
|
Caption = 'Cookie Visitor'
|
||||||
ClientHeight = 762
|
ClientHeight = 762
|
||||||
@ -59,6 +59,8 @@ object CookieVisitorFrm: TCookieVisitorFrm
|
|||||||
end
|
end
|
||||||
object Chromium1: TChromium
|
object Chromium1: TChromium
|
||||||
OnCookiesDeleted = Chromium1CookiesDeleted
|
OnCookiesDeleted = Chromium1CookiesDeleted
|
||||||
|
OnCookiesVisited = Chromium1CookiesVisited
|
||||||
|
OnCookieSet = Chromium1CookieSet
|
||||||
OnBeforeContextMenu = Chromium1BeforeContextMenu
|
OnBeforeContextMenu = Chromium1BeforeContextMenu
|
||||||
OnContextMenuCommand = Chromium1ContextMenuCommand
|
OnContextMenuCommand = Chromium1ContextMenuCommand
|
||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
|
@ -50,15 +50,17 @@ uses
|
|||||||
Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
|
Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants,
|
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants,
|
||||||
uCEFCookieManager, uCEFCookieVisitor, uCEFWinControl, uCEFSentinel;
|
uCEFCookieManager, uCEFCookieVisitor, uCEFWinControl, uCEFSentinel, uCEFChromiumEvents;
|
||||||
|
|
||||||
const
|
const
|
||||||
MINIBROWSER_SHOWCOOKIES = WM_APP + $101;
|
MINIBROWSER_SHOWCOOKIES = WM_APP + $101;
|
||||||
MINIBROWSER_SETCOOKIERSLT = WM_APP + $102;
|
MINIBROWSER_COOKIESDELETED = WM_APP + $102;
|
||||||
|
MINIBROWSER_COOKIESET = WM_APP + $103;
|
||||||
|
|
||||||
MINIBROWSER_CONTEXTMENU_DELETECOOKIES = MENU_ID_USER_FIRST + 1;
|
MINIBROWSER_CONTEXTMENU_DELETECOOKIES = MENU_ID_USER_FIRST + 1;
|
||||||
MINIBROWSER_CONTEXTMENU_GETCOOKIES = MENU_ID_USER_FIRST + 2;
|
MINIBROWSER_CONTEXTMENU_GETCOOKIES = MENU_ID_USER_FIRST + 2;
|
||||||
MINIBROWSER_CONTEXTMENU_SETCOOKIE = MENU_ID_USER_FIRST + 3;
|
MINIBROWSER_CONTEXTMENU_SETCOOKIE = MENU_ID_USER_FIRST + 3;
|
||||||
|
MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES = MENU_ID_USER_FIRST + 4;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -74,6 +76,12 @@ type
|
|||||||
Timer1: TTimer;
|
Timer1: TTimer;
|
||||||
procedure CEFSentinel1Close(Sender: TObject);
|
procedure CEFSentinel1Close(Sender: TObject);
|
||||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||||
|
procedure Chromium1CookieSet(Sender: TObject; aSuccess: boolean;
|
||||||
|
aID: integer);
|
||||||
|
procedure Chromium1CookiesVisited(Sender: TObject; const name_, value,
|
||||||
|
domain, path: ustring; secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime; count, total, aID: Integer;
|
||||||
|
var aDeleteCookie, aResult: Boolean);
|
||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure GoBtnClick(Sender: TObject);
|
procedure GoBtnClick(Sender: TObject);
|
||||||
procedure Chromium1BeforeContextMenu(Sender: TObject;
|
procedure Chromium1BeforeContextMenu(Sender: TObject;
|
||||||
@ -110,11 +118,11 @@ type
|
|||||||
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
||||||
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEF_DESTROY;
|
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEF_DESTROY;
|
||||||
procedure ShowCookiesMsg(var aMessage : TMessage); message MINIBROWSER_SHOWCOOKIES;
|
procedure ShowCookiesMsg(var aMessage : TMessage); message MINIBROWSER_SHOWCOOKIES;
|
||||||
procedure SetCookieRsltMsg(var aMessage : TMessage); message MINIBROWSER_SETCOOKIERSLT;
|
procedure CookiesDeletedMsg(var aMessage : TMessage); message MINIBROWSER_COOKIESDELETED;
|
||||||
|
procedure CookieSetMsg(var aMessage : TMessage); message MINIBROWSER_COOKIESET;
|
||||||
|
|
||||||
protected
|
protected
|
||||||
FText : string;
|
FText : string;
|
||||||
FVisitor : ICefCookieVisitor;
|
|
||||||
// Variables to control when can we destroy the form safely
|
// Variables to control when can we destroy the form safely
|
||||||
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
|
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
|
||||||
FClosing : boolean; // Set to True in the CloseQuery event.
|
FClosing : boolean; // Set to True in the CloseQuery event.
|
||||||
@ -136,12 +144,17 @@ implementation
|
|||||||
uses
|
uses
|
||||||
uSimpleTextViewer, uCEFTask, uCEFMiscFunctions;
|
uSimpleTextViewer, uCEFTask, uCEFMiscFunctions;
|
||||||
|
|
||||||
// This demo has a context menu to test the DeleteCookies function and a CookieVisitor example.
|
// This demo has a context menu to test several TChromium functions related to cookies like TChromium.VisitAllCookies,
|
||||||
|
// TChromium.SetCookie, TChromium.DeleteCookies, etc.
|
||||||
|
|
||||||
// The cookie visitor gets the global cookie manager to call the VisitAllCookies function.
|
// TChromium.VisitAllCookies and TChromium.VisitURLCookies trigger the TChromium.OnCookiesVisited event for each
|
||||||
// The cookie visitor will call CookieVisitorProc for each cookie and it'll save the information using the AddCookieInfo function.
|
// cookie and it'll save the information using the AddCookieInfo function.
|
||||||
// When the last cookie arrives we show the information in a SimpleTextViewer form.
|
// When the last cookie arrives we show the information in a SimpleTextViewer form.
|
||||||
|
|
||||||
|
// TChromium.SetCookie triggers TChromium.OnCookieSet when it has set the cookie.
|
||||||
|
|
||||||
|
// TChromium.DeleteCookies triggers TChromium.OnCookiesDeleted when the cookies have been deleted.
|
||||||
|
|
||||||
// Destruction steps
|
// Destruction steps
|
||||||
// =================
|
// =================
|
||||||
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which triggers the TChromium.OnClose event.
|
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which triggers the TChromium.OnClose event.
|
||||||
@ -156,41 +169,6 @@ begin
|
|||||||
//GlobalCEFApp.LogSeverity := LOGSEVERITY_VERBOSE;
|
//GlobalCEFApp.LogSeverity := LOGSEVERITY_VERBOSE;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// This function is called in the IO thread.
|
|
||||||
function CookieVisitorProc(const name, value, domain, path: ustring;
|
|
||||||
secure, httponly, hasExpires: Boolean;
|
|
||||||
const creation, lastAccess, expires: TDateTime;
|
|
||||||
count, total: Integer;
|
|
||||||
out deleteCookie: Boolean): Boolean;
|
|
||||||
var
|
|
||||||
TempCookie : TCookie;
|
|
||||||
begin
|
|
||||||
deleteCookie := False;
|
|
||||||
|
|
||||||
TempCookie.name := name;
|
|
||||||
TempCookie.value := value;
|
|
||||||
TempCookie.domain := domain;
|
|
||||||
TempCookie.path := path;
|
|
||||||
TempCookie.secure := secure;
|
|
||||||
TempCookie.httponly := httponly;
|
|
||||||
TempCookie.creation := creation;
|
|
||||||
TempCookie.last_access := lastAccess;
|
|
||||||
TempCookie.has_expires := hasExpires;
|
|
||||||
TempCookie.expires := expires;
|
|
||||||
|
|
||||||
CookieVisitorFrm.AddCookieInfo(TempCookie);
|
|
||||||
|
|
||||||
if (count = pred(total)) then
|
|
||||||
begin
|
|
||||||
if (CookieVisitorFrm <> nil) and CookieVisitorFrm.HandleAllocated then
|
|
||||||
PostMessage(CookieVisitorFrm.Handle, MINIBROWSER_SHOWCOOKIES, 0, 0);
|
|
||||||
|
|
||||||
Result := False;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Result := True;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.AddCookieInfo(const aCookie : TCookie);
|
procedure TCookieVisitorFrm.AddCookieInfo(const aCookie : TCookie);
|
||||||
begin
|
begin
|
||||||
// This should be protected by a mutex.
|
// This should be protected by a mutex.
|
||||||
@ -215,12 +193,17 @@ begin
|
|||||||
SimpleTextViewerFrm.ShowModal;
|
SimpleTextViewerFrm.ShowModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.SetCookieRsltMsg(var aMessage : TMessage);
|
procedure TCookieVisitorFrm.CookiesDeletedMsg(var aMessage : TMessage);
|
||||||
begin
|
begin
|
||||||
if (aMessage.wParam = 0) then
|
showmessage('Deleted cookies : ' + inttostr(aMessage.lParam));
|
||||||
showmessage('There was a problem setting the cookie')
|
end;
|
||||||
|
|
||||||
|
procedure TCookieVisitorFrm.CookieSetMsg(var aMessage : TMessage);
|
||||||
|
begin
|
||||||
|
if (aMessage.wParam <> 0) then
|
||||||
|
showmessage('Cookie set successfully !')
|
||||||
else
|
else
|
||||||
showmessage('Cookie set successfully !');
|
showmessage('There was a problem setting the cookie');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.Timer1Timer(Sender: TObject);
|
procedure TCookieVisitorFrm.Timer1Timer(Sender: TObject);
|
||||||
@ -240,6 +223,43 @@ begin
|
|||||||
PostMessage(Handle, CEF_AFTERCREATED, 0, 0);
|
PostMessage(Handle, CEF_AFTERCREATED, 0, 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCookieVisitorFrm.Chromium1CookieSet(Sender: TObject;
|
||||||
|
aSuccess: boolean; aID: integer);
|
||||||
|
begin
|
||||||
|
PostMessage(Handle, MINIBROWSER_COOKIESET, ord(aSuccess), aID);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCookieVisitorFrm.Chromium1CookiesVisited(Sender: TObject;
|
||||||
|
const name_, value, domain, path: ustring; secure, httponly,
|
||||||
|
hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count,
|
||||||
|
total, aID: Integer; var aDeleteCookie, aResult: Boolean);
|
||||||
|
var
|
||||||
|
TempCookie : TCookie;
|
||||||
|
begin
|
||||||
|
aDeleteCookie := False;
|
||||||
|
|
||||||
|
TempCookie.name := name_;
|
||||||
|
TempCookie.value := value;
|
||||||
|
TempCookie.domain := domain;
|
||||||
|
TempCookie.path := path;
|
||||||
|
TempCookie.secure := secure;
|
||||||
|
TempCookie.httponly := httponly;
|
||||||
|
TempCookie.creation := creation;
|
||||||
|
TempCookie.last_access := lastAccess;
|
||||||
|
TempCookie.has_expires := hasExpires;
|
||||||
|
TempCookie.expires := expires;
|
||||||
|
|
||||||
|
AddCookieInfo(TempCookie);
|
||||||
|
|
||||||
|
if (count = pred(total)) then
|
||||||
|
begin
|
||||||
|
PostMessage(Handle, MINIBROWSER_SHOWCOOKIES, 0, 0);
|
||||||
|
aResult := False;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
aResult := True;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.CEFSentinel1Close(Sender: TObject);
|
procedure TCookieVisitorFrm.CEFSentinel1Close(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FCanClose := True;
|
FCanClose := True;
|
||||||
@ -256,10 +276,11 @@ procedure TCookieVisitorFrm.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_DELETECOOKIES, 'Delete cookies');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_DELETECOOKIES, 'Delete cookies');
|
||||||
model.AddSeparator;
|
model.AddSeparator;
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_GETCOOKIES, 'Visit cookies');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_GETCOOKIES, 'Visit all cookies');
|
||||||
model.AddItem(MINIBROWSER_CONTEXTMENU_SETCOOKIE, 'Set cookie');
|
model.AddItem(MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES, 'Visit cookies from Google');
|
||||||
|
model.AddItem(MINIBROWSER_CONTEXTMENU_SETCOOKIE, 'Set cookie');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.Chromium1BeforePopup(Sender: TObject;
|
procedure TCookieVisitorFrm.Chromium1BeforePopup(Sender: TObject;
|
||||||
@ -287,8 +308,6 @@ procedure TCookieVisitorFrm.Chromium1ContextMenuCommand(Sender: TObject;
|
|||||||
const browser: ICefBrowser; const frame: ICefFrame;
|
const browser: ICefBrowser; const frame: ICefFrame;
|
||||||
const params: ICefContextMenuParams; commandId: Integer;
|
const params: ICefContextMenuParams; commandId: Integer;
|
||||||
eventFlags: Cardinal; out Result: Boolean);
|
eventFlags: Cardinal; out Result: Boolean);
|
||||||
var
|
|
||||||
TempManager : ICefCookieManager;
|
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
|
|
||||||
@ -298,37 +317,36 @@ begin
|
|||||||
MINIBROWSER_CONTEXTMENU_GETCOOKIES :
|
MINIBROWSER_CONTEXTMENU_GETCOOKIES :
|
||||||
begin
|
begin
|
||||||
// This should be protected by a mutex
|
// This should be protected by a mutex
|
||||||
FText := '';
|
FText := '';
|
||||||
TempManager := TCefCookieManagerRef.Global(nil);
|
Chromium1.VisitAllCookies;
|
||||||
TempManager.VisitAllCookies(FVisitor);
|
end;
|
||||||
|
|
||||||
|
MINIBROWSER_CONTEXTMENU_GETGOOGLECOOKIES :
|
||||||
|
begin
|
||||||
|
// This should be protected by a mutex
|
||||||
|
FText := '';
|
||||||
|
Chromium1.VisitURLCookies('https://www.google.com');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
MINIBROWSER_CONTEXTMENU_SETCOOKIE :
|
MINIBROWSER_CONTEXTMENU_SETCOOKIE :
|
||||||
begin
|
Chromium1.SetCookie('https://www.example.com',
|
||||||
TempManager := TCefCookieManagerRef.Global(nil);
|
'example_cookie_name',
|
||||||
|
'1234',
|
||||||
if TempManager.SetCookie('https://www.example.com',
|
'',
|
||||||
'example_cookie_name',
|
'/',
|
||||||
'1234',
|
True,
|
||||||
'',
|
True,
|
||||||
'/',
|
False,
|
||||||
True,
|
now,
|
||||||
True,
|
now,
|
||||||
False,
|
now,
|
||||||
now,
|
False);
|
||||||
now,
|
|
||||||
now,
|
|
||||||
nil) then
|
|
||||||
PostMessage(Handle, MINIBROWSER_SETCOOKIERSLT, ord(True), 0)
|
|
||||||
else
|
|
||||||
PostMessage(Handle, MINIBROWSER_SETCOOKIERSLT, ord(False), 0);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.Chromium1CookiesDeleted(Sender: TObject; numDeleted: Integer);
|
procedure TCookieVisitorFrm.Chromium1CookiesDeleted(Sender: TObject; numDeleted: Integer);
|
||||||
begin
|
begin
|
||||||
showmessage('Deleted cookies : ' + inttostr(numDeleted));
|
PostMessage(Handle, MINIBROWSER_COOKIESDELETED, 0, numDeleted);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
procedure TCookieVisitorFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
||||||
@ -345,14 +363,13 @@ end;
|
|||||||
|
|
||||||
procedure TCookieVisitorFrm.FormCreate(Sender: TObject);
|
procedure TCookieVisitorFrm.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FVisitor := TCefFastCookieVisitor.Create(CookieVisitorProc);
|
|
||||||
FCanClose := False;
|
FCanClose := False;
|
||||||
FClosing := False;
|
FClosing := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.FormDestroy(Sender: TObject);
|
procedure TCookieVisitorFrm.FormDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FVisitor := nil;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCookieVisitorFrm.FormShow(Sender: TObject);
|
procedure TCookieVisitorFrm.FormShow(Sender: TObject);
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
<ComponentName Value="MainForm"/>
|
<ComponentName Value="MainForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<IsVisibleTab Value="True"/>
|
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<TopLine Value="128"/>
|
<TopLine Value="128"/>
|
||||||
<CursorPos X="58" Y="152"/>
|
<CursorPos X="58" Y="152"/>
|
||||||
@ -38,7 +37,7 @@
|
|||||||
<ComponentName Value="ChildForm"/>
|
<ComponentName Value="ChildForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="3"/>
|
||||||
<TopLine Value="52"/>
|
<TopLine Value="52"/>
|
||||||
<CursorPos X="54" Y="97"/>
|
<CursorPos X="54" Y="97"/>
|
||||||
<UsageCount Value="23"/>
|
<UsageCount Value="23"/>
|
||||||
@ -55,10 +54,12 @@
|
|||||||
</Unit3>
|
</Unit3>
|
||||||
<Unit4>
|
<Unit4>
|
||||||
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<EditorIndex Value="-1"/>
|
<IsVisibleTab Value="True"/>
|
||||||
<TopLine Value="1009"/>
|
<EditorIndex Value="2"/>
|
||||||
<CursorPos X="9" Y="1022"/>
|
<TopLine Value="2395"/>
|
||||||
|
<CursorPos X="3" Y="2406"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="10"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit4>
|
</Unit4>
|
||||||
<Unit5>
|
<Unit5>
|
||||||
<Filename Value="..\..\..\source\uCEFMiscFunctions.pas"/>
|
<Filename Value="..\..\..\source\uCEFMiscFunctions.pas"/>
|
||||||
@ -86,123 +87,123 @@
|
|||||||
<JumpHistory Count="30" HistoryIndex="29">
|
<JumpHistory Count="30" HistoryIndex="29">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="344" Column="17" TopLine="320"/>
|
<Caret Line="346" Column="58" TopLine="320"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="346" Column="19" TopLine="322"/>
|
<Caret Line="337" TopLine="320"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="197" Column="72" TopLine="182"/>
|
<Caret Line="184" Column="66" TopLine="175"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="352" Column="56" TopLine="322"/>
|
<Caret Line="337" Column="30" TopLine="322"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="332" TopLine="310"/>
|
<Caret Line="67" TopLine="49"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
<Position6>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="334" Column="51" TopLine="310"/>
|
<Caret Line="180" Column="40" TopLine="166"/>
|
||||||
</Position6>
|
</Position6>
|
||||||
<Position7>
|
<Position7>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="67" TopLine="49"/>
|
<Caret Line="335" Column="59" TopLine="309"/>
|
||||||
</Position7>
|
</Position7>
|
||||||
<Position8>
|
<Position8>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="340" TopLine="311"/>
|
<Caret Line="333" Column="40" TopLine="309"/>
|
||||||
</Position8>
|
</Position8>
|
||||||
<Position9>
|
<Position9>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="337" TopLine="311"/>
|
<Caret Line="332" TopLine="309"/>
|
||||||
</Position9>
|
</Position9>
|
||||||
<Position10>
|
<Position10>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="343" Column="33" TopLine="314"/>
|
<Caret Line="339" TopLine="309"/>
|
||||||
</Position10>
|
</Position10>
|
||||||
<Position11>
|
<Position11>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="337" TopLine="314"/>
|
<Caret Line="188" Column="99" TopLine="177"/>
|
||||||
</Position11>
|
</Position11>
|
||||||
<Position12>
|
<Position12>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="346" Column="58" TopLine="320"/>
|
<Caret Line="343" Column="19" TopLine="333"/>
|
||||||
</Position12>
|
</Position12>
|
||||||
<Position13>
|
<Position13>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="337" TopLine="320"/>
|
<Caret Line="69" TopLine="52"/>
|
||||||
</Position13>
|
</Position13>
|
||||||
<Position14>
|
<Position14>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="184" Column="66" TopLine="175"/>
|
<Caret Line="336" TopLine="321"/>
|
||||||
</Position14>
|
</Position14>
|
||||||
<Position15>
|
<Position15>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="337" Column="30" TopLine="322"/>
|
<Caret Line="335" TopLine="320"/>
|
||||||
</Position15>
|
</Position15>
|
||||||
<Position16>
|
<Position16>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="67" TopLine="49"/>
|
<Caret Line="330" Column="32" TopLine="320"/>
|
||||||
</Position16>
|
</Position16>
|
||||||
<Position17>
|
<Position17>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="180" Column="40" TopLine="166"/>
|
<Caret Line="67" TopLine="49"/>
|
||||||
</Position17>
|
</Position17>
|
||||||
<Position18>
|
<Position18>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="335" Column="59" TopLine="309"/>
|
<Caret Line="328" Column="59" TopLine="313"/>
|
||||||
</Position18>
|
</Position18>
|
||||||
<Position19>
|
<Position19>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="333" Column="40" TopLine="309"/>
|
<Caret Line="335" Column="59" TopLine="315"/>
|
||||||
</Position19>
|
</Position19>
|
||||||
<Position20>
|
<Position20>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="uMainForm.pas"/>
|
||||||
<Caret Line="332" TopLine="309"/>
|
<Caret Line="152" Column="58" TopLine="128"/>
|
||||||
</Position20>
|
</Position20>
|
||||||
<Position21>
|
<Position21>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="339" TopLine="309"/>
|
<Caret Line="507" Column="42" TopLine="495"/>
|
||||||
</Position21>
|
</Position21>
|
||||||
<Position22>
|
<Position22>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="188" Column="99" TopLine="177"/>
|
<Caret Line="582" Column="55" TopLine="568"/>
|
||||||
</Position22>
|
</Position22>
|
||||||
<Position23>
|
<Position23>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="343" Column="19" TopLine="333"/>
|
<Caret Line="507" Column="44" TopLine="495"/>
|
||||||
</Position23>
|
</Position23>
|
||||||
<Position24>
|
<Position24>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="69" TopLine="52"/>
|
<Caret Line="582" Column="29" TopLine="568"/>
|
||||||
</Position24>
|
</Position24>
|
||||||
<Position25>
|
<Position25>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="336" TopLine="321"/>
|
<Caret Line="2406" Column="3" TopLine="2395"/>
|
||||||
</Position25>
|
</Position25>
|
||||||
<Position26>
|
<Position26>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="335" TopLine="320"/>
|
<Caret Line="582" Column="45" TopLine="569"/>
|
||||||
</Position26>
|
</Position26>
|
||||||
<Position27>
|
<Position27>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="330" Column="32" TopLine="320"/>
|
<Caret Line="2415" Column="68" TopLine="2395"/>
|
||||||
</Position27>
|
</Position27>
|
||||||
<Position28>
|
<Position28>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="67" TopLine="49"/>
|
<Caret Line="507" Column="19" TopLine="497"/>
|
||||||
</Position28>
|
</Position28>
|
||||||
<Position29>
|
<Position29>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="328" Column="59" TopLine="313"/>
|
<Caret Line="3423" Column="60" TopLine="3410"/>
|
||||||
</Position29>
|
</Position29>
|
||||||
<Position30>
|
<Position30>
|
||||||
<Filename Value="uMainForm.pas"/>
|
<Filename Value="..\..\..\source\uCEFChromium.pas"/>
|
||||||
<Caret Line="335" Column="59" TopLine="315"/>
|
<Caret Line="582" Column="19" TopLine="564"/>
|
||||||
</Position30>
|
</Position30>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
<RunParams>
|
<RunParams>
|
||||||
|
@ -253,6 +253,8 @@ type
|
|||||||
FOnHttpAuthCredentialsCleared : TNotifyEvent;
|
FOnHttpAuthCredentialsCleared : TNotifyEvent;
|
||||||
FOnAllConnectionsClosed : TNotifyEvent;
|
FOnAllConnectionsClosed : TNotifyEvent;
|
||||||
FOnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread;
|
FOnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread;
|
||||||
|
FOnCookiesVisited : TOnCookiesVisited;
|
||||||
|
FOnCookieSet : TOnCookieSet;
|
||||||
{$IFNDEF FPC}
|
{$IFNDEF FPC}
|
||||||
FOnBrowserCompMsg : TOnCompMsgEvent;
|
FOnBrowserCompMsg : TOnCompMsgEvent;
|
||||||
FOnWidgetCompMsg : TOnCompMsgEvent;
|
FOnWidgetCompMsg : TOnCompMsgEvent;
|
||||||
@ -502,6 +504,8 @@ type
|
|||||||
procedure doHttpAuthCredentialsCleared; virtual;
|
procedure doHttpAuthCredentialsCleared; virtual;
|
||||||
procedure doAllConnectionsClosed; virtual;
|
procedure doAllConnectionsClosed; virtual;
|
||||||
procedure doOnExecuteTaskOnCefThread(aTaskID : cardinal); virtual;
|
procedure doOnExecuteTaskOnCefThread(aTaskID : cardinal); virtual;
|
||||||
|
procedure doOnCookiesVisited(const name_, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count, total, aID : Integer; var aDeleteCookie, aResult : Boolean); virtual;
|
||||||
|
procedure doOnCookieSet(aSuccess : boolean; aID : integer); virtual;
|
||||||
function MustCreateLoadHandler : boolean; virtual;
|
function MustCreateLoadHandler : boolean; virtual;
|
||||||
function MustCreateFocusHandler : boolean; virtual;
|
function MustCreateFocusHandler : boolean; virtual;
|
||||||
function MustCreateContextMenuHandler : boolean; virtual;
|
function MustCreateContextMenuHandler : boolean; virtual;
|
||||||
@ -549,8 +553,6 @@ type
|
|||||||
procedure DownloadImage(const imageUrl: ustring; isFavicon: Boolean; maxImageSize: cardinal; bypassCache: Boolean);
|
procedure DownloadImage(const imageUrl: ustring; isFavicon: Boolean; maxImageSize: cardinal; bypassCache: Boolean);
|
||||||
|
|
||||||
procedure SimulateMouseWheel(aDeltaX, aDeltaY : integer);
|
procedure SimulateMouseWheel(aDeltaX, aDeltaY : integer);
|
||||||
function DeleteCookies(const url : ustring = ''; const cookieName : ustring = '') : boolean;
|
|
||||||
function FlushCookieStore(aFlushImmediately : boolean = True) : boolean;
|
|
||||||
function ClearCertificateExceptions(aClearImmediately : boolean = True) : boolean;
|
function ClearCertificateExceptions(aClearImmediately : boolean = True) : boolean;
|
||||||
function ClearHttpAuthCredentials(aClearImmediately : boolean = True) : boolean;
|
function ClearHttpAuthCredentials(aClearImmediately : boolean = True) : boolean;
|
||||||
function CloseAllConnections(aCloseImmediately : boolean = True) : boolean;
|
function CloseAllConnections(aCloseImmediately : boolean = True) : boolean;
|
||||||
@ -574,6 +576,12 @@ type
|
|||||||
function IsSameBrowser(const aBrowser : ICefBrowser) : boolean;
|
function IsSameBrowser(const aBrowser : ICefBrowser) : boolean;
|
||||||
function ExecuteTaskOnCefThread(aCefThreadId : TCefThreadId; aTaskID : cardinal; aDelayMs : Int64 = 0) : boolean;
|
function ExecuteTaskOnCefThread(aCefThreadId : TCefThreadId; aTaskID : cardinal; aDelayMs : Int64 = 0) : boolean;
|
||||||
|
|
||||||
|
function DeleteCookies(const url : ustring = ''; const cookieName : ustring = '') : boolean;
|
||||||
|
function VisitAllCookies(aID : integer = 0) : boolean;
|
||||||
|
function VisitURLCookies(const url : ustring; includeHttpOnly : boolean = False; aID : integer = 0) : boolean;
|
||||||
|
function SetCookie(const url, name_, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; aSetImmediately : boolean = True; aID : integer = 0): Boolean;
|
||||||
|
function FlushCookieStore(aFlushImmediately : boolean = True) : boolean;
|
||||||
|
|
||||||
procedure ShowDevTools(inspectElementAt: TPoint; const aDevTools : TWinControl);
|
procedure ShowDevTools(inspectElementAt: TPoint; const aDevTools : TWinControl);
|
||||||
procedure CloseDevTools(const aDevTools : TWinControl = nil);
|
procedure CloseDevTools(const aDevTools : TWinControl = nil);
|
||||||
|
|
||||||
@ -719,6 +727,8 @@ type
|
|||||||
property OnHttpAuthCredentialsCleared : TNotifyEvent read FOnHttpAuthCredentialsCleared write FOnHttpAuthCredentialsCleared;
|
property OnHttpAuthCredentialsCleared : TNotifyEvent read FOnHttpAuthCredentialsCleared write FOnHttpAuthCredentialsCleared;
|
||||||
property OnAllConnectionsClosed : TNotifyEvent read FOnAllConnectionsClosed write FOnAllConnectionsClosed;
|
property OnAllConnectionsClosed : TNotifyEvent read FOnAllConnectionsClosed write FOnAllConnectionsClosed;
|
||||||
property OnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread read FOnExecuteTaskOnCefThread write FOnExecuteTaskOnCefThread;
|
property OnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread read FOnExecuteTaskOnCefThread write FOnExecuteTaskOnCefThread;
|
||||||
|
property OnCookiesVisited : TOnCookiesVisited read FOnCookiesVisited write FOnCookiesVisited;
|
||||||
|
property OnCookieSet : TOnCookieSet read FOnCookieSet write FOnCookieSet;
|
||||||
{$IFNDEF FPC}
|
{$IFNDEF FPC}
|
||||||
property OnBrowserCompMsg : TOnCompMsgEvent read FOnBrowserCompMsg write FOnBrowserCompMsg;
|
property OnBrowserCompMsg : TOnCompMsgEvent read FOnBrowserCompMsg write FOnBrowserCompMsg;
|
||||||
property OnWidgetCompMsg : TOnCompMsgEvent read FOnWidgetCompMsg write FOnWidgetCompMsg;
|
property OnWidgetCompMsg : TOnCompMsgEvent read FOnWidgetCompMsg write FOnWidgetCompMsg;
|
||||||
@ -877,7 +887,7 @@ uses
|
|||||||
uCEFApplication, uCEFProcessMessage, uCEFRequestContext, {$IFNDEF FPC}uCEFOLEDragAndDrop,{$ENDIF}
|
uCEFApplication, uCEFProcessMessage, uCEFRequestContext, {$IFNDEF FPC}uCEFOLEDragAndDrop,{$ENDIF}
|
||||||
uCEFPDFPrintCallback, uCEFResolveCallback, uCEFDeleteCookiesCallback, uCEFStringVisitor,
|
uCEFPDFPrintCallback, uCEFResolveCallback, uCEFDeleteCookiesCallback, uCEFStringVisitor,
|
||||||
uCEFListValue, uCEFNavigationEntryVisitor, uCEFDownloadImageCallBack, uCEFCookieManager,
|
uCEFListValue, uCEFNavigationEntryVisitor, uCEFDownloadImageCallBack, uCEFCookieManager,
|
||||||
uCEFRequestContextHandler;
|
uCEFRequestContextHandler, uCEFCookieVisitor, uCEFSetCookieCallback;
|
||||||
|
|
||||||
constructor TChromium.Create(AOwner: TComponent);
|
constructor TChromium.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
@ -1252,6 +1262,8 @@ begin
|
|||||||
FOnHttpAuthCredentialsCleared := nil;
|
FOnHttpAuthCredentialsCleared := nil;
|
||||||
FOnAllConnectionsClosed := nil;
|
FOnAllConnectionsClosed := nil;
|
||||||
FOnExecuteTaskOnCefThread := nil;
|
FOnExecuteTaskOnCefThread := nil;
|
||||||
|
FOnCookiesVisited := nil;
|
||||||
|
FOnCookieSet := nil;
|
||||||
{$IFNDEF FPC}
|
{$IFNDEF FPC}
|
||||||
FOnBrowserCompMsg := nil;
|
FOnBrowserCompMsg := nil;
|
||||||
FOnWidgetCompMsg := nil;
|
FOnWidgetCompMsg := nil;
|
||||||
@ -2340,6 +2352,89 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// TChromium.VisitAllCookies triggers the TChromium.OnCookiesVisited event for each cookie
|
||||||
|
// aID is an optional parameter to identify which VisitAllCookies call has triggered the
|
||||||
|
// OnCookiesVisited event.
|
||||||
|
function TChromium.VisitAllCookies(aID : integer) : boolean;
|
||||||
|
var
|
||||||
|
TempManager : ICefCookieManager;
|
||||||
|
TempVisitor : ICefCookieVisitor;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
if Initialized and (FBrowser.Host <> nil) and (FBrowser.Host.RequestContext <> nil) then
|
||||||
|
begin
|
||||||
|
TempManager := FBrowser.Host.RequestContext.GetCookieManager(nil);
|
||||||
|
|
||||||
|
if (TempManager <> nil) then
|
||||||
|
try
|
||||||
|
TempVisitor := TCefCustomCookieVisitor.Create(self, aID);
|
||||||
|
Result := TempManager.VisitAllCookies(TempVisitor);
|
||||||
|
finally
|
||||||
|
TempVisitor := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// TChromium.VisitURLCookies triggers the TChromium.OnCookiesVisited event for each cookie
|
||||||
|
// aID is an optional parameter to identify which VisitAllCookies call has triggered the
|
||||||
|
// OnCookiesVisited event.
|
||||||
|
function TChromium.VisitURLCookies(const url : ustring; includeHttpOnly : boolean; aID : integer) : boolean;
|
||||||
|
var
|
||||||
|
TempManager : ICefCookieManager;
|
||||||
|
TempVisitor : ICefCookieVisitor;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
if Initialized and (FBrowser.Host <> nil) and (FBrowser.Host.RequestContext <> nil) then
|
||||||
|
begin
|
||||||
|
TempManager := FBrowser.Host.RequestContext.GetCookieManager(nil);
|
||||||
|
|
||||||
|
if (TempManager <> nil) then
|
||||||
|
try
|
||||||
|
TempVisitor := TCefCustomCookieVisitor.Create(self, aID);
|
||||||
|
Result := TempManager.VisitUrlCookies(url, includeHttpOnly, TempVisitor);
|
||||||
|
finally
|
||||||
|
TempVisitor := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// TChromium.SetCookie triggers the TChromium.OnCookieSet event when the cookie has been set
|
||||||
|
// aID is an optional parameter to identify which SetCookie call has triggered the
|
||||||
|
// OnCookieSet event.
|
||||||
|
function TChromium.SetCookie(const url, name_, value, domain, path: ustring;
|
||||||
|
secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime;
|
||||||
|
aSetImmediately : boolean;
|
||||||
|
aID : integer): Boolean;
|
||||||
|
var
|
||||||
|
TempManager : ICefCookieManager;
|
||||||
|
TempCallback : ICefSetCookieCallback;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
if Initialized and (FBrowser.Host <> nil) and (FBrowser.Host.RequestContext <> nil) then
|
||||||
|
begin
|
||||||
|
TempManager := FBrowser.Host.RequestContext.GetCookieManager(nil);
|
||||||
|
|
||||||
|
if (TempManager <> nil) then
|
||||||
|
try
|
||||||
|
if aSetImmediately then
|
||||||
|
TempCallback := nil
|
||||||
|
else
|
||||||
|
TempCallback := TCefCustomSetCookieCallback.Create(self, aID);
|
||||||
|
|
||||||
|
Result := TempManager.SetCookie(url, name_, value, domain, path,
|
||||||
|
secure, httponly, hasExpires,
|
||||||
|
creation, lastAccess, expires,
|
||||||
|
TempCallback);
|
||||||
|
finally
|
||||||
|
TempCallback := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
// If aFlushImmediately is false then OnCookiesFlushed is triggered when the cookies are flushed
|
// If aFlushImmediately is false then OnCookiesFlushed is triggered when the cookies are flushed
|
||||||
function TChromium.FlushCookieStore(aFlushImmediately : boolean) : boolean;
|
function TChromium.FlushCookieStore(aFlushImmediately : boolean) : boolean;
|
||||||
var
|
var
|
||||||
@ -3323,6 +3418,25 @@ begin
|
|||||||
if assigned(FOnExecuteTaskOnCefThread) then FOnExecuteTaskOnCefThread(self, aTaskID);
|
if assigned(FOnExecuteTaskOnCefThread) then FOnExecuteTaskOnCefThread(self, aTaskID);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TChromium.doOnCookiesVisited(const name_, value, domain, path: ustring;
|
||||||
|
secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime;
|
||||||
|
count, total, aID : Integer;
|
||||||
|
var aDeleteCookie, aResult : Boolean);
|
||||||
|
begin
|
||||||
|
if assigned(FOnCookiesVisited) then
|
||||||
|
FOnCookiesVisited(self, name_, value, domain, path,
|
||||||
|
secure, httponly, hasExpires,
|
||||||
|
creation, lastAccess, expires,
|
||||||
|
count, total, aID,
|
||||||
|
aDeleteCookie, aResult);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TChromium.doOnCookieSet(aSuccess : boolean; aID : integer);
|
||||||
|
begin
|
||||||
|
if assigned(FOnCookieSet) then FOnCookieSet(self, aSuccess, aID);
|
||||||
|
end;
|
||||||
|
|
||||||
function TChromium.MustCreateLoadHandler : boolean;
|
function TChromium.MustCreateLoadHandler : boolean;
|
||||||
begin
|
begin
|
||||||
Result := assigned(FOnLoadStart) or
|
Result := assigned(FOnLoadStart) or
|
||||||
|
@ -174,6 +174,8 @@ type
|
|||||||
TOnNavigationVisitorResultAvailableEvent = procedure(const entry: ICefNavigationEntry; current: Boolean; index, total: Integer; var aResult : boolean) of object;
|
TOnNavigationVisitorResultAvailableEvent = procedure(const entry: ICefNavigationEntry; current: Boolean; index, total: Integer; var aResult : boolean) of object;
|
||||||
TOnDownloadImageFinishedEvent = procedure(Sender: TObject; const imageUrl: ustring; httpStatusCode: Integer; const image: ICefImage) of object;
|
TOnDownloadImageFinishedEvent = procedure(Sender: TObject; const imageUrl: ustring; httpStatusCode: Integer; const image: ICefImage) of object;
|
||||||
TOnExecuteTaskOnCefThread = procedure(Sender: TObject; aTaskID : cardinal) of object;
|
TOnExecuteTaskOnCefThread = procedure(Sender: TObject; aTaskID : cardinal) of object;
|
||||||
|
TOnCookiesVisited = procedure(Sender: TObject; const name_, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count, total, aID : Integer; var aDeleteCookie, aResult : Boolean) of object;
|
||||||
|
TOnCookieSet = procedure(Sender: TObject; aSuccess : boolean; aID : integer) of object;
|
||||||
{$IFDEF MSWINDOWS}
|
{$IFDEF MSWINDOWS}
|
||||||
TOnCompMsgEvent = procedure(var aMessage: TMessage; var aHandled: Boolean) of object;
|
TOnCompMsgEvent = procedure(var aMessage: TMessage; var aHandled: Boolean) of object;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
@ -536,13 +536,6 @@ const
|
|||||||
CEF_PROXYTYPE_FIXED_SERVERS = 3;
|
CEF_PROXYTYPE_FIXED_SERVERS = 3;
|
||||||
CEF_PROXYTYPE_PAC_SCRIPT = 4;
|
CEF_PROXYTYPE_PAC_SCRIPT = 4;
|
||||||
|
|
||||||
CEF_CONTENT_SETTING_DEFAULT = 0;
|
|
||||||
CEF_CONTENT_SETTING_ALLOW = 1;
|
|
||||||
CEF_CONTENT_SETTING_BLOCK = 2;
|
|
||||||
CEF_CONTENT_SETTING_ASK = 3;
|
|
||||||
CEF_CONTENT_SETTING_SESSION_ONLY = 4;
|
|
||||||
CEF_CONTENT_SETTING_NUM_SETTINGS = 5;
|
|
||||||
|
|
||||||
// Used in the severity parameter in the 'cef_log' function, also known as 'CefLog' in CEF4Delphi.
|
// Used in the severity parameter in the 'cef_log' function, also known as 'CefLog' in CEF4Delphi.
|
||||||
CEF_LOG_SEVERITY_INFO = 0;
|
CEF_LOG_SEVERITY_INFO = 0;
|
||||||
CEF_LOG_SEVERITY_WARNING = 1;
|
CEF_LOG_SEVERITY_WARNING = 1;
|
||||||
|
@ -65,7 +65,7 @@ type
|
|||||||
function VisitAllCookiesProc(const visitor: TCefCookieVisitorProc): Boolean;
|
function VisitAllCookiesProc(const visitor: TCefCookieVisitorProc): Boolean;
|
||||||
function VisitUrlCookies(const url: ustring; includeHttpOnly: Boolean; const visitor: ICefCookieVisitor): Boolean;
|
function VisitUrlCookies(const url: ustring; includeHttpOnly: Boolean; const visitor: ICefCookieVisitor): Boolean;
|
||||||
function VisitUrlCookiesProc(const url: ustring; includeHttpOnly: Boolean; const visitor: TCefCookieVisitorProc): Boolean;
|
function VisitUrlCookiesProc(const url: ustring; includeHttpOnly: Boolean; const visitor: TCefCookieVisitorProc): Boolean;
|
||||||
function SetCookie(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: ICefSetCookieCallback): Boolean;
|
function SetCookie(const url, name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: ICefSetCookieCallback): Boolean;
|
||||||
function SetCookieProc(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: TCefSetCookieCallbackProc): Boolean;
|
function SetCookieProc(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: TCefSetCookieCallbackProc): Boolean;
|
||||||
function DeleteCookies(const url, cookieName: ustring; const callback: ICefDeleteCookiesCallback): Boolean;
|
function DeleteCookies(const url, cookieName: ustring; const callback: ICefDeleteCookiesCallback): Boolean;
|
||||||
function DeleteCookiesProc(const url, cookieName: ustring; const callback: TCefDeleteCookiesCallbackProc): Boolean;
|
function DeleteCookiesProc(const url, cookieName: ustring; const callback: TCefDeleteCookiesCallbackProc): Boolean;
|
||||||
|
@ -70,9 +70,26 @@ type
|
|||||||
constructor Create(const visitor: TCefCookieVisitorProc); reintroduce;
|
constructor Create(const visitor: TCefCookieVisitorProc); reintroduce;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TCefCustomCookieVisitor = class(TCefCookieVisitorOwn)
|
||||||
|
protected
|
||||||
|
FEvents : Pointer;
|
||||||
|
FID : integer;
|
||||||
|
|
||||||
|
function visit(const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count, total: Integer; out deleteCookie: Boolean): Boolean; override;
|
||||||
|
|
||||||
|
public
|
||||||
|
constructor Create(const aEvents : IChromiumEvents; aID : integer); reintroduce;
|
||||||
|
destructor Destroy; override;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
|
{$IFDEF DELPHI16_UP}
|
||||||
|
System.SysUtils,
|
||||||
|
{$ELSE}
|
||||||
|
SysUtils,
|
||||||
|
{$ENDIF}
|
||||||
uCEFMiscFunctions, uCEFLibFunctions;
|
uCEFMiscFunctions, uCEFLibFunctions;
|
||||||
|
|
||||||
function cef_cookie_visitor_visit(self: PCefCookieVisitor;
|
function cef_cookie_visitor_visit(self: PCefCookieVisitor;
|
||||||
@ -148,4 +165,47 @@ begin
|
|||||||
creation, lastAccess, expires, count, total, deleteCookie);
|
creation, lastAccess, expires, count, total, deleteCookie);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
// TCefCustomCookieVisitor
|
||||||
|
|
||||||
|
constructor TCefCustomCookieVisitor.Create(const aEvents : IChromiumEvents; aID : integer);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
|
||||||
|
FEvents := Pointer(aEvents);
|
||||||
|
FID := aID;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TCefCustomCookieVisitor.Destroy;
|
||||||
|
begin
|
||||||
|
FEvents := nil;
|
||||||
|
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCefCustomCookieVisitor.visit(const name, value, domain, path: ustring;
|
||||||
|
secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime;
|
||||||
|
count, total: Integer;
|
||||||
|
out deleteCookie: Boolean): Boolean;
|
||||||
|
var
|
||||||
|
TempDelete : boolean;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
TempDelete := False;
|
||||||
|
|
||||||
|
try
|
||||||
|
try
|
||||||
|
if (FEvents <> nil) then
|
||||||
|
IChromiumEvents(FEvents).doOnCookiesVisited(name, value, domain, path, secure, httponly, hasExpires,
|
||||||
|
creation, lastAccess, expires, count, total, FID, TempDelete, Result);
|
||||||
|
except
|
||||||
|
on e : exception do
|
||||||
|
if CustomExceptionHandler('TCefCustomCookieVisitor.visit', e) then raise;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
deleteCookie := TempDelete;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -236,6 +236,8 @@ type
|
|||||||
FOnHttpAuthCredentialsCleared : TNotifyEvent;
|
FOnHttpAuthCredentialsCleared : TNotifyEvent;
|
||||||
FOnAllConnectionsClosed : TNotifyEvent;
|
FOnAllConnectionsClosed : TNotifyEvent;
|
||||||
FOnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread;
|
FOnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread;
|
||||||
|
FOnCookiesVisited : TOnCookiesVisited;
|
||||||
|
FOnCookieSet : TOnCookieSet;
|
||||||
{$IFDEF MSWINDOWS}
|
{$IFDEF MSWINDOWS}
|
||||||
FOnBrowserCompMsg : TOnCompMsgEvent;
|
FOnBrowserCompMsg : TOnCompMsgEvent;
|
||||||
FOnWidgetCompMsg : TOnCompMsgEvent;
|
FOnWidgetCompMsg : TOnCompMsgEvent;
|
||||||
@ -469,6 +471,8 @@ type
|
|||||||
procedure doHttpAuthCredentialsCleared; virtual;
|
procedure doHttpAuthCredentialsCleared; virtual;
|
||||||
procedure doAllConnectionsClosed; virtual;
|
procedure doAllConnectionsClosed; virtual;
|
||||||
procedure doOnExecuteTaskOnCefThread(aTaskID : cardinal); virtual;
|
procedure doOnExecuteTaskOnCefThread(aTaskID : cardinal); virtual;
|
||||||
|
procedure doOnCookiesVisited(const name_, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count, total, aID : Integer; var aDeleteCookie, aResult : Boolean); virtual;
|
||||||
|
procedure doOnCookieSet(aSuccess : boolean; aID : integer); virtual;
|
||||||
function MustCreateLoadHandler : boolean; virtual;
|
function MustCreateLoadHandler : boolean; virtual;
|
||||||
function MustCreateFocusHandler : boolean; virtual;
|
function MustCreateFocusHandler : boolean; virtual;
|
||||||
function MustCreateContextMenuHandler : boolean; virtual;
|
function MustCreateContextMenuHandler : boolean; virtual;
|
||||||
@ -516,8 +520,6 @@ type
|
|||||||
procedure DownloadImage(const imageUrl: ustring; isFavicon: Boolean; maxImageSize: cardinal; bypassCache: Boolean);
|
procedure DownloadImage(const imageUrl: ustring; isFavicon: Boolean; maxImageSize: cardinal; bypassCache: Boolean);
|
||||||
|
|
||||||
procedure SimulateMouseWheel(aDeltaX, aDeltaY : integer);
|
procedure SimulateMouseWheel(aDeltaX, aDeltaY : integer);
|
||||||
function DeleteCookies(const url : ustring = ''; const cookieName : ustring = '') : boolean;
|
|
||||||
function FlushCookieStore(aFlushImmediately : boolean = True) : boolean;
|
|
||||||
function ClearCertificateExceptions(aClearImmediately : boolean = True) : boolean;
|
function ClearCertificateExceptions(aClearImmediately : boolean = True) : boolean;
|
||||||
function ClearHttpAuthCredentials(aClearImmediately : boolean = True) : boolean;
|
function ClearHttpAuthCredentials(aClearImmediately : boolean = True) : boolean;
|
||||||
function CloseAllConnections(aCloseImmediately : boolean = True) : boolean;
|
function CloseAllConnections(aCloseImmediately : boolean = True) : boolean;
|
||||||
@ -539,6 +541,12 @@ type
|
|||||||
function IsSameBrowser(const aBrowser : ICefBrowser) : boolean;
|
function IsSameBrowser(const aBrowser : ICefBrowser) : boolean;
|
||||||
function ExecuteTaskOnCefThread(aCefThreadId : TCefThreadId; aTaskID : cardinal; aDelayMs : Int64 = 0) : boolean;
|
function ExecuteTaskOnCefThread(aCefThreadId : TCefThreadId; aTaskID : cardinal; aDelayMs : Int64 = 0) : boolean;
|
||||||
|
|
||||||
|
function DeleteCookies(const url : ustring = ''; const cookieName : ustring = '') : boolean;
|
||||||
|
function VisitAllCookies(aID : integer = 0) : boolean;
|
||||||
|
function VisitURLCookies(const url : ustring; includeHttpOnly : boolean = False; aID : integer = 0) : boolean;
|
||||||
|
function SetCookie(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; aSetImmediately : boolean = True; aID : integer = 0): Boolean;
|
||||||
|
function FlushCookieStore(aFlushImmediately : boolean = True) : boolean;
|
||||||
|
|
||||||
procedure ShowDevTools(inspectElementAt: TPoint);
|
procedure ShowDevTools(inspectElementAt: TPoint);
|
||||||
procedure CloseDevTools;
|
procedure CloseDevTools;
|
||||||
|
|
||||||
@ -678,6 +686,8 @@ type
|
|||||||
property OnHttpAuthCredentialsCleared : TNotifyEvent read FOnHttpAuthCredentialsCleared write FOnHttpAuthCredentialsCleared;
|
property OnHttpAuthCredentialsCleared : TNotifyEvent read FOnHttpAuthCredentialsCleared write FOnHttpAuthCredentialsCleared;
|
||||||
property OnAllConnectionsClosed : TNotifyEvent read FOnAllConnectionsClosed write FOnAllConnectionsClosed;
|
property OnAllConnectionsClosed : TNotifyEvent read FOnAllConnectionsClosed write FOnAllConnectionsClosed;
|
||||||
property OnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread read FOnExecuteTaskOnCefThread write FOnExecuteTaskOnCefThread;
|
property OnExecuteTaskOnCefThread : TOnExecuteTaskOnCefThread read FOnExecuteTaskOnCefThread write FOnExecuteTaskOnCefThread;
|
||||||
|
property OnCookiesVisited : TOnCookiesVisited read FOnCookiesVisited write FOnCookiesVisited;
|
||||||
|
property OnCookieSet : TOnCookieSet read FOnCookieSet write FOnCookieSet;
|
||||||
{$IFDEF MSWINDOWS}
|
{$IFDEF MSWINDOWS}
|
||||||
property OnBrowserCompMsg : TOnCompMsgEvent read FOnBrowserCompMsg write FOnBrowserCompMsg;
|
property OnBrowserCompMsg : TOnCompMsgEvent read FOnBrowserCompMsg write FOnBrowserCompMsg;
|
||||||
property OnWidgetCompMsg : TOnCompMsgEvent read FOnWidgetCompMsg write FOnWidgetCompMsg;
|
property OnWidgetCompMsg : TOnCompMsgEvent read FOnWidgetCompMsg write FOnWidgetCompMsg;
|
||||||
@ -826,7 +836,7 @@ uses
|
|||||||
uCEFApplication, uCEFProcessMessage, uCEFRequestContext, uCEFCookieManager,
|
uCEFApplication, uCEFProcessMessage, uCEFRequestContext, uCEFCookieManager,
|
||||||
uCEFPDFPrintCallback, uCEFResolveCallback, uCEFDeleteCookiesCallback, uCEFStringVisitor,
|
uCEFPDFPrintCallback, uCEFResolveCallback, uCEFDeleteCookiesCallback, uCEFStringVisitor,
|
||||||
uCEFListValue, uCEFNavigationEntryVisitor, uCEFDownloadImageCallBack,
|
uCEFListValue, uCEFNavigationEntryVisitor, uCEFDownloadImageCallBack,
|
||||||
uCEFRequestContextHandler;
|
uCEFRequestContextHandler, uCEFCookieVisitor, uCEFSetCookieCallback;
|
||||||
|
|
||||||
constructor TFMXChromium.Create(AOwner: TComponent);
|
constructor TFMXChromium.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
@ -1155,6 +1165,8 @@ begin
|
|||||||
FOnHttpAuthCredentialsCleared := nil;
|
FOnHttpAuthCredentialsCleared := nil;
|
||||||
FOnAllConnectionsClosed := nil;
|
FOnAllConnectionsClosed := nil;
|
||||||
FOnExecuteTaskOnCefThread := nil;
|
FOnExecuteTaskOnCefThread := nil;
|
||||||
|
FOnCookiesVisited := nil;
|
||||||
|
FOnCookieSet := nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TFMXChromium.CreateBrowser(const aWindowName : ustring;
|
function TFMXChromium.CreateBrowser(const aWindowName : ustring;
|
||||||
@ -2139,6 +2151,89 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// TFMXChromium.VisitAllCookies triggers the TFMXChromium.OnCookiesVisited event for each cookie
|
||||||
|
// aID is an optional parameter to identify which VisitAllCookies call has triggered the
|
||||||
|
// OnCookiesVisited event.
|
||||||
|
function TFMXChromium.VisitAllCookies(aID : integer) : boolean;
|
||||||
|
var
|
||||||
|
TempManager : ICefCookieManager;
|
||||||
|
TempVisitor : ICefCookieVisitor;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
if Initialized and (FBrowser.Host <> nil) and (FBrowser.Host.RequestContext <> nil) then
|
||||||
|
begin
|
||||||
|
TempManager := FBrowser.Host.RequestContext.GetCookieManager(nil);
|
||||||
|
|
||||||
|
if (TempManager <> nil) then
|
||||||
|
try
|
||||||
|
TempVisitor := TCefCustomCookieVisitor.Create(self, aID);
|
||||||
|
Result := TempManager.VisitAllCookies(TempVisitor);
|
||||||
|
finally
|
||||||
|
TempVisitor := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// TFMXChromium.VisitURLCookies triggers the TFMXChromium.OnCookiesVisited event for each cookie
|
||||||
|
// aID is an optional parameter to identify which VisitAllCookies call has triggered the
|
||||||
|
// OnCookiesVisited event.
|
||||||
|
function TFMXChromium.VisitURLCookies(const url : ustring; includeHttpOnly : boolean; aID : integer) : boolean;
|
||||||
|
var
|
||||||
|
TempManager : ICefCookieManager;
|
||||||
|
TempVisitor : ICefCookieVisitor;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
if Initialized and (FBrowser.Host <> nil) and (FBrowser.Host.RequestContext <> nil) then
|
||||||
|
begin
|
||||||
|
TempManager := FBrowser.Host.RequestContext.GetCookieManager(nil);
|
||||||
|
|
||||||
|
if (TempManager <> nil) then
|
||||||
|
try
|
||||||
|
TempVisitor := TCefCustomCookieVisitor.Create(self, aID);
|
||||||
|
Result := TempManager.VisitUrlCookies(url, includeHttpOnly, TempVisitor);
|
||||||
|
finally
|
||||||
|
TempVisitor := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// TFMXChromium.SetCookie triggers the TFMXChromium.OnCookieSet event when the cookie has been set
|
||||||
|
// aID is an optional parameter to identify which SetCookie call has triggered the
|
||||||
|
// OnCookieSet event.
|
||||||
|
function TFMXChromium.SetCookie(const url, name, value, domain, path: ustring;
|
||||||
|
secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime;
|
||||||
|
aSetImmediately : boolean;
|
||||||
|
aID : integer): Boolean;
|
||||||
|
var
|
||||||
|
TempManager : ICefCookieManager;
|
||||||
|
TempCallback : ICefSetCookieCallback;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
|
||||||
|
if Initialized and (FBrowser.Host <> nil) and (FBrowser.Host.RequestContext <> nil) then
|
||||||
|
begin
|
||||||
|
TempManager := FBrowser.Host.RequestContext.GetCookieManager(nil);
|
||||||
|
|
||||||
|
if (TempManager <> nil) then
|
||||||
|
try
|
||||||
|
if aSetImmediately then
|
||||||
|
TempCallback := nil
|
||||||
|
else
|
||||||
|
TempCallback := TCefCustomSetCookieCallback.Create(self, aID);
|
||||||
|
|
||||||
|
Result := TempManager.SetCookie(url, name, value, domain, path,
|
||||||
|
secure, httponly, hasExpires,
|
||||||
|
creation, lastAccess, expires,
|
||||||
|
TempCallback);
|
||||||
|
finally
|
||||||
|
TempCallback := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
// If aFlushImmediately is false then OnCookiesFlushed is triggered when the cookies are flushed
|
// If aFlushImmediately is false then OnCookiesFlushed is triggered when the cookies are flushed
|
||||||
function TFMXChromium.FlushCookieStore(aFlushImmediately : boolean) : boolean;
|
function TFMXChromium.FlushCookieStore(aFlushImmediately : boolean) : boolean;
|
||||||
var
|
var
|
||||||
@ -3065,6 +3160,25 @@ begin
|
|||||||
if assigned(FOnExecuteTaskOnCefThread) then FOnExecuteTaskOnCefThread(self, aTaskID);
|
if assigned(FOnExecuteTaskOnCefThread) then FOnExecuteTaskOnCefThread(self, aTaskID);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFMXChromium.doOnCookiesVisited(const name_, value, domain, path: ustring;
|
||||||
|
secure, httponly, hasExpires: Boolean;
|
||||||
|
const creation, lastAccess, expires: TDateTime;
|
||||||
|
count, total, aID : Integer;
|
||||||
|
var aDeleteCookie, aResult : Boolean);
|
||||||
|
begin
|
||||||
|
if assigned(FOnCookiesVisited) then
|
||||||
|
FOnCookiesVisited(self, name, value, domain, path,
|
||||||
|
secure, httponly, hasExpires,
|
||||||
|
creation, lastAccess, expires,
|
||||||
|
count, total, aID,
|
||||||
|
aDeleteCookie, aResult);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TFMXChromium.doOnCookieSet(aSuccess : boolean; aID : integer);
|
||||||
|
begin
|
||||||
|
if assigned(FOnCookieSet) then FOnCookieSet(self, aSuccess, aID);
|
||||||
|
end;
|
||||||
|
|
||||||
function TFMXChromium.MustCreateLoadHandler : boolean;
|
function TFMXChromium.MustCreateLoadHandler : boolean;
|
||||||
begin
|
begin
|
||||||
Result := assigned(FOnLoadStart) or
|
Result := assigned(FOnLoadStart) or
|
||||||
|
@ -394,6 +394,8 @@ type
|
|||||||
procedure doHttpAuthCredentialsCleared;
|
procedure doHttpAuthCredentialsCleared;
|
||||||
procedure doAllConnectionsClosed;
|
procedure doAllConnectionsClosed;
|
||||||
procedure doOnExecuteTaskOnCefThread(aTaskID : cardinal);
|
procedure doOnExecuteTaskOnCefThread(aTaskID : cardinal);
|
||||||
|
procedure doOnCookiesVisited(const name_, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count, total, aID : Integer; var aDeleteCookie, aResult : Boolean);
|
||||||
|
procedure doOnCookieSet(aSuccess : boolean; aID : integer);
|
||||||
function MustCreateLoadHandler : boolean;
|
function MustCreateLoadHandler : boolean;
|
||||||
function MustCreateFocusHandler : boolean;
|
function MustCreateFocusHandler : boolean;
|
||||||
function MustCreateContextMenuHandler : boolean;
|
function MustCreateContextMenuHandler : boolean;
|
||||||
@ -1299,7 +1301,7 @@ type
|
|||||||
function VisitAllCookiesProc(const visitor: TCefCookieVisitorProc): Boolean;
|
function VisitAllCookiesProc(const visitor: TCefCookieVisitorProc): Boolean;
|
||||||
function VisitUrlCookies(const url: ustring; includeHttpOnly: Boolean; const visitor: ICefCookieVisitor): Boolean;
|
function VisitUrlCookies(const url: ustring; includeHttpOnly: Boolean; const visitor: ICefCookieVisitor): Boolean;
|
||||||
function VisitUrlCookiesProc(const url: ustring; includeHttpOnly: Boolean; const visitor: TCefCookieVisitorProc): Boolean;
|
function VisitUrlCookiesProc(const url: ustring; includeHttpOnly: Boolean; const visitor: TCefCookieVisitorProc): Boolean;
|
||||||
function SetCookie(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: ICefSetCookieCallback): Boolean;
|
function SetCookie(const url, name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: ICefSetCookieCallback): Boolean;
|
||||||
function SetCookieProc(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: TCefSetCookieCallbackProc): Boolean;
|
function SetCookieProc(const url: ustring; const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; const callback: TCefSetCookieCallbackProc): Boolean;
|
||||||
function DeleteCookies(const url, cookieName: ustring; const callback: ICefDeleteCookiesCallback): Boolean;
|
function DeleteCookies(const url, cookieName: ustring; const callback: ICefDeleteCookiesCallback): Boolean;
|
||||||
function DeleteCookiesProc(const url, cookieName: ustring; const callback: TCefDeleteCookiesCallbackProc): Boolean;
|
function DeleteCookiesProc(const url, cookieName: ustring; const callback: TCefDeleteCookiesCallbackProc): Boolean;
|
||||||
|
@ -70,9 +70,26 @@ type
|
|||||||
constructor Create(const callback: TCefSetCookieCallbackProc); reintroduce;
|
constructor Create(const callback: TCefSetCookieCallbackProc); reintroduce;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TCefCustomSetCookieCallback = class(TCefSetCookieCallbackOwn)
|
||||||
|
protected
|
||||||
|
FEvents : Pointer;
|
||||||
|
FID : integer;
|
||||||
|
|
||||||
|
procedure OnComplete(success: Boolean); override;
|
||||||
|
|
||||||
|
public
|
||||||
|
constructor Create(const aEvents : IChromiumEvents; aID : integer); reintroduce;
|
||||||
|
destructor Destroy; override;
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
|
{$IFDEF DELPHI16_UP}
|
||||||
|
System.SysUtils,
|
||||||
|
{$ELSE}
|
||||||
|
SysUtils,
|
||||||
|
{$ENDIF}
|
||||||
uCEFMiscFunctions, uCEFLibFunctions;
|
uCEFMiscFunctions, uCEFLibFunctions;
|
||||||
|
|
||||||
procedure cef_set_cookie_callback_on_complete(self : PCefSetCookieCallback;
|
procedure cef_set_cookie_callback_on_complete(self : PCefSetCookieCallback;
|
||||||
@ -108,4 +125,37 @@ begin
|
|||||||
FCallback(success);
|
FCallback(success);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
// TCefCustomSetCookieCallback
|
||||||
|
|
||||||
|
constructor TCefCustomSetCookieCallback.Create(const aEvents : IChromiumEvents; aID : integer);
|
||||||
|
begin
|
||||||
|
inherited Create;
|
||||||
|
|
||||||
|
FEvents := Pointer(aEvents);
|
||||||
|
FID := aID;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TCefCustomSetCookieCallback.Destroy;
|
||||||
|
begin
|
||||||
|
FEvents := nil;
|
||||||
|
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCefCustomSetCookieCallback.OnComplete(success: Boolean);
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
try
|
||||||
|
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnCookieSet(success, FID);
|
||||||
|
except
|
||||||
|
on e : exception do
|
||||||
|
if CustomExceptionHandler('TCefCustomSetCookieCallback.OnComplete', e) then raise;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
FEvents := nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"UpdateLazPackages" : [
|
"UpdateLazPackages" : [
|
||||||
{
|
{
|
||||||
"ForceNotify" : true,
|
"ForceNotify" : true,
|
||||||
"InternalVersion" : 50,
|
"InternalVersion" : 51,
|
||||||
"Name" : "cef4delphi_lazarus.lpk",
|
"Name" : "cef4delphi_lazarus.lpk",
|
||||||
"Version" : "77.1.18.0"
|
"Version" : "77.1.18.0"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user