Hi,
We have been using the TAdvWebBrowser and TCoreWebView2HistoryChangedEventHandler in one of our forms. However when closing the application we notice a few memory leaks. Any idea on how to prevent these?
Probably it is caused by the creation of the TCoreWebView2HistoryChangedEventHandler in the code below.
type
TCoreWebView2HistoryChangedEventHandler = class(TInterfacedPersistent, ICoreWebView2HistoryChangedEventHandler)
function Invoke(sender: ICoreWebView2; args: IUnknown): HRESULT; stdcall;
end;
..
procedure TFormFormCreate(Sender: TObject);
var
w: ICoreWebView2;
c: ICoreWebView2Controller;
e: EventRegistrationToken;
begin
c := ICoreWebView2Controller(AdvWebBrowserLogin.NativeBrowser);
if c.get_CoreWebView2(w) = S_OK then
begin
w.add_HistoryChanged(TCoreWebView2HistoryChangedEventHandler.Create, @e);
end;
end;
{ TCoreWebView2HistoryChangedEventHandler }
function TCoreWebView2HistoryChangedEventHandler.Invoke(sender: ICoreWebView2;
args: IInterface): HRESULT;
var
s: PWideChar;
cText: string;
oJSONValue: TJSONValue;
begin
Result := S_OK;
if sender.get_Source(@s) = S_OK then
begin
cText := PChar(s);
AdvWebBrowserLogin.ExecuteJavaScript('window.sessionStorage.getItem("default_oauth")',
procedure(const AValue: string)
begin
if (AValue<>'null') and (AValue<>'"null"') then
begin
cDefault_token := AnsiReplaceStr(AValue, '"', '');
end;
end);
end;
end;