1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-06-22 22:17:48 +02:00

Added TChromium.GetNavigationEntries and TChromium.OnNavigationVisitorResultAvailable

- MiniBrowser demo : Added a context menu option to get the navigation entries.
This commit is contained in:
Salvador Díaz Fau
2019-02-03 15:34:21 +01:00
parent a3de8552e3
commit 1f96e8272b
8 changed files with 196 additions and 55 deletions

View File

@ -63,6 +63,7 @@ const
MINIBROWSER_SAVEPREFERENCES = WM_APP + $107;
MINIBROWSER_COPYALLTEXT = WM_APP + $108;
MINIBROWSER_TAKESNAPSHOT = WM_APP + $109;
MINIBROWSER_SHOWNAVIGATION = WM_APP + $10A;
MINIBROWSER_HOMEPAGE = 'https://www.google.com';
@ -77,6 +78,7 @@ const
MINIBROWSER_CONTEXTMENU_SAVEPREFERENCES = MENU_ID_USER_FIRST + 9;
MINIBROWSER_CONTEXTMENU_COPYALLTEXT = MENU_ID_USER_FIRST + 10;
MINIBROWSER_CONTEXTMENU_TAKESNAPSHOT = MENU_ID_USER_FIRST + 11;
MINIBROWSER_CONTEXTMENU_GETNAVIGATION = MENU_ID_USER_FIRST + 12;
type
TMiniBrowserFrm = class(TForm)
@ -208,10 +210,14 @@ type
const browser: ICefBrowser; certError: Integer;
const requestUrl: ustring; const sslInfo: ICefSslInfo;
const callback: ICefRequestCallback; out Result: Boolean);
procedure Chromium1NavigationVisitorResultAvailable(
const entry: ICefNavigationEntry; current: Boolean; index, total: Integer;
var aResult: Boolean);
protected
FResponse : TStringList;
FRequest : TStringList;
FResponse : TStringList;
FRequest : TStringList;
FNavigation : TStringList;
// Variables to control when can we destroy the form safely
FCanClose : boolean; // Set to True in TChromium.OnBeforeClose
FClosing : boolean; // Set to True in the CloseQuery event.
@ -237,6 +243,7 @@ type
procedure CopyFramesIDsMsg(var aMessage : TMessage); message MINIBROWSER_COPYFRAMEIDS;
procedure CopyFramesNamesMsg(var aMessage : TMessage); message MINIBROWSER_COPYFRAMENAMES;
procedure ShowResponseMsg(var aMessage : TMessage); message MINIBROWSER_SHOWRESPONSE;
procedure ShowNavigationMsg(var aMessage : TMessage); message MINIBROWSER_SHOWNAVIGATION;
procedure SavePreferencesMsg(var aMessage : TMessage); message MINIBROWSER_SAVEPREFERENCES;
procedure TakeSnapshotMsg(var aMessage : TMessage); message MINIBROWSER_TAKESNAPSHOT;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
@ -329,6 +336,7 @@ begin
model.AddSeparator;
model.AddItem(MINIBROWSER_CONTEXTMENU_TAKESNAPSHOT, 'Take snapshot...');
model.AddItem(MINIBROWSER_CONTEXTMENU_GETNAVIGATION, 'Get navigation entries');
model.AddSeparator;
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYALLTEXT, 'Copy displayed text to clipboard');
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard');
@ -475,6 +483,12 @@ begin
MINIBROWSER_CONTEXTMENU_TAKESNAPSHOT :
PostMessage(Handle, MINIBROWSER_TAKESNAPSHOT, 0, 0);
MINIBROWSER_CONTEXTMENU_GETNAVIGATION :
begin
FNavigation.Clear;
Chromium1.GetNavigationEntries(False);
end;
MINIBROWSER_CONTEXTMENU_JSWRITEDOC :
if (browser <> nil) and (browser.MainFrame <> nil) then
browser.MainFrame.ExecuteJavaScript(
@ -677,6 +691,21 @@ begin
end;
end;
procedure TMiniBrowserFrm.Chromium1NavigationVisitorResultAvailable(
const entry: ICefNavigationEntry; current: Boolean; index, total: Integer;
var aResult: Boolean);
begin
if (entry <> nil) and entry.IsValid then FNavigation.Add(entry.Url);
if (index < pred(total)) then
aResult := True
else
begin
aResult := False;
PostMessage(Handle, MINIBROWSER_SHOWNAVIGATION, 0, 0);
end;
end;
procedure TMiniBrowserFrm.Chromium1PdfPrintFinished(Sender: TObject; aResultOK: Boolean);
begin
if aResultOK then
@ -844,10 +873,11 @@ end;
procedure TMiniBrowserFrm.FormCreate(Sender: TObject);
begin
FCanClose := False;
FClosing := False;
FResponse := TStringList.Create;
FRequest := TStringList.Create;
FCanClose := False;
FClosing := False;
FResponse := TStringList.Create;
FRequest := TStringList.Create;
FNavigation := TStringList.Create;
Chromium1.DefaultURL := MINIBROWSER_HOMEPAGE;
end;
@ -855,6 +885,7 @@ procedure TMiniBrowserFrm.FormDestroy(Sender: TObject);
begin
FResponse.Free;
FRequest.Free;
FNavigation.Free;
end;
procedure TMiniBrowserFrm.FormShow(Sender: TObject);
@ -1099,6 +1130,13 @@ begin
SimpleTextViewerFrm.ShowModal;
end;
procedure TMiniBrowserFrm.ShowNavigationMsg(var aMessage : TMessage);
begin
SimpleTextViewerFrm.Memo1.Lines.Clear;
SimpleTextViewerFrm.Memo1.Lines.AddStrings(FNavigation);
SimpleTextViewerFrm.ShowModal;
end;
procedure TMiniBrowserFrm.SavePreferencesMsg(var aMessage : TMessage);
begin
SaveDialog1.DefaultExt := 'txt';