diff --git a/README.md b/README.md
index bff3c0f..5291886 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ WebView4Delphi is an open source project created by Salvador Díaz Fau to embed
WebView4Delphi only supports Windows. If you need to embed a web browser in Linux, Windows or MacOS consider using [CEF4Delphi](https://github.com/salvadordf/CEF4Delphi) instead.
-WebView4Delphi uses the [Microsoft Edge WebView2 Runtime](https://docs.microsoft.com/en-us/microsoft-edge/webview2/) and [Microsoft.Web.WebView2 NuGet package version 1.0.1774.30](https://www.nuget.org/packages/Microsoft.Web.WebView2) to embed a web browser.
+WebView4Delphi uses the [Microsoft Edge WebView2 Runtime](https://docs.microsoft.com/en-us/microsoft-edge/webview2/) and [Microsoft.Web.WebView2 NuGet package version 1.0.1823.32](https://www.nuget.org/packages/Microsoft.Web.WebView2) to embed a web browser.
WebView4Delphi was developed and tested on Delphi 11.3, Delphi XE2, Delphi 7 and Lazarus 2.2.6/FPC 3.2.2.
diff --git a/bin32/WebView2Loader.dll b/bin32/WebView2Loader.dll
index 08f2bf6..518bd47 100644
Binary files a/bin32/WebView2Loader.dll and b/bin32/WebView2Loader.dll differ
diff --git a/bin64/WebView2Loader.dll b/bin64/WebView2Loader.dll
index 866fc5c..f924d92 100644
Binary files a/bin64/WebView2Loader.dll and b/bin64/WebView2Loader.dll differ
diff --git a/packages/webview4delphi.lpk b/packages/webview4delphi.lpk
index 4973641..88396f2 100644
--- a/packages/webview4delphi.lpk
+++ b/packages/webview4delphi.lpk
@@ -12,7 +12,7 @@
-
+
diff --git a/source/uWVBrowser.pas b/source/uWVBrowser.pas
index f1bc805..d946045 100644
--- a/source/uWVBrowser.pas
+++ b/source/uWVBrowser.pas
@@ -121,6 +121,7 @@ TWVBrowser = class(TWVBrowserBase)
property OnGetCustomSchemes;
property OnGetNonDefaultPermissionSettingsCompleted;
property OnSetPermissionStateCompleted;
+ property OnLaunchingExternalUriScheme;
end;
{$IFDEF FPC}
diff --git a/source/uWVBrowserBase.pas b/source/uWVBrowserBase.pas
index 80ba5dd..e2b9b73 100644
--- a/source/uWVBrowserBase.pas
+++ b/source/uWVBrowserBase.pas
@@ -154,6 +154,7 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
FOnGetCustomSchemes : TOnGetCustomSchemesEvent;
FOnGetNonDefaultPermissionSettingsCompleted : TOnGetNonDefaultPermissionSettingsCompletedEvent;
FOnSetPermissionStateCompleted : TOnSetPermissionStateCompletedEvent;
+ FOnLaunchingExternalUriScheme : TOnLaunchingExternalUriSchemeEvent;
function GetBrowserProcessID : cardinal;
function GetBrowserVersionInfo : wvstring;
@@ -214,6 +215,9 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
function GetPreferredColorScheme : TWVPreferredColorScheme;
function GetPreferredTrackingPreventionLevel : TWVTrackingPreventionLevel;
function GetProfileCookieManager : ICoreWebView2CookieManager;
+ function GetProfileIsPasswordAutosaveEnabled : boolean;
+ function GetProfileIsGeneralAutofillEnabled : boolean;
+ function GetMemoryUsageTargetLevel : TWVMemoryUsageTargetLevel;
procedure SetBuiltInErrorPageEnabled(aValue: boolean);
procedure SetDefaultContextMenusEnabled(aValue: boolean);
@@ -253,6 +257,9 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
procedure SetDefaultDownloadFolderPath(const aValue : wvstring);
procedure SetPreferredColorScheme(const aValue : TWVPreferredColorScheme);
procedure SetPreferredTrackingPreventionLevel(const aValue : TWVTrackingPreventionLevel);
+ procedure SetProfileIsPasswordAutosaveEnabled(aValue : boolean);
+ procedure SetProfileIsGeneralAutofillEnabled(aValue : boolean);
+ procedure SetMemoryUsageTargetLevel(aValue : TWVMemoryUsageTargetLevel);
function CreateEnvironment : boolean;
function CreateCompositionController: boolean;
@@ -353,6 +360,7 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
function PrintToPdfStreamCompletedHandler_Invoke(errorCode: HResult; const pdfStream: IStream): HRESULT;
function GetNonDefaultPermissionSettingsCompletedHandler_Invoke(errorCode: HResult; const collectionView: ICoreWebView2PermissionSettingCollectionView): HRESULT;
function SetPermissionStateCompletedHandler_Invoke(errorCode: HResult): HRESULT;
+ function LaunchingExternalUriSchemeEventHandler_Invoke(const sender: ICoreWebView2; const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs): HRESULT;
procedure doOnInitializationError(aErrorCode: HRESULT; const aErrorMessage: wvstring); virtual;
procedure doOnEnvironmentCompleted; virtual;
@@ -435,6 +443,7 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
procedure doOnGetCustomSchemes(var aSchemeRegistrations : TWVCustomSchemeRegistrationArray); virtual;
procedure doOnGetNonDefaultPermissionSettingsCompleted(errorCode: HResult; const collectionView: ICoreWebView2PermissionSettingCollectionView); virtual;
procedure doOnSetPermissionStateCompleted(errorCode: HResult); virtual;
+ procedure doOnLaunchingExternalUriSchemeEvent(const sender: ICoreWebView2; const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs); virtual;
public
constructor Create(AOwner: TComponent); override;
@@ -618,6 +627,9 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
// ICoreWebView2_15
property FaviconURI : wvstring read GetFaviconURI;
+ // ICoreWebView2_19
+ property MemoryUsageTargetLevel : TWVMemoryUsageTargetLevel read GetMemoryUsageTargetLevel write SetMemoryUsageTargetLevel; // ICoreWebView2_19.Get_MemoryUsageTargetLevel
+
// ICoreWebView2Controller properties
property Bounds : TRect read GetBounds write SetBounds; // ICoreWebView2Controller.get_Bounds
property IsVisible : boolean read GetIsVisible write SetIsVisible; // ICoreWebView2Controller.get_IsVisible
@@ -695,6 +707,10 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
// ICoreWebView2Profile5 properties
property ProfileCookieManager : ICoreWebView2CookieManager read GetProfileCookieManager; // ICoreWebView2Profile5.get_CookieManager
+ // ICoreWebView2Profile6 properties
+ property ProfileIsPasswordAutosaveEnabled : boolean read GetProfileIsPasswordAutosaveEnabled write SetProfileIsPasswordAutosaveEnabled; // ICoreWebView2Profile6.Get_IsPasswordAutosaveEnabled
+ property ProfileIsGeneralAutofillEnabled : boolean read GetProfileIsGeneralAutofillEnabled write SetProfileIsGeneralAutofillEnabled; // ICoreWebView2Profile6.Get_IsGeneralAutofillEnabled
+
// ICoreWebView2Environment5 events
property OnBrowserProcessExited : TOnBrowserProcessExitedEvent read FOnBrowserProcessExited write FOnBrowserProcessExited;
@@ -829,6 +845,7 @@ TWVBrowserBase = class(TComponent, IWVBrowserEvents)
property OnGetCustomSchemes : TOnGetCustomSchemesEvent read FOnGetCustomSchemes write FOnGetCustomSchemes;
property OnGetNonDefaultPermissionSettingsCompleted : TOnGetNonDefaultPermissionSettingsCompletedEvent read FOnGetNonDefaultPermissionSettingsCompleted write FOnGetNonDefaultPermissionSettingsCompleted;
property OnSetPermissionStateCompleted : TOnSetPermissionStateCompletedEvent read FOnSetPermissionStateCompleted write FOnSetPermissionStateCompleted;
+ property OnLaunchingExternalUriScheme : TOnLaunchingExternalUriSchemeEvent read FOnLaunchingExternalUriScheme write FOnLaunchingExternalUriScheme;
end;
implementation
@@ -964,6 +981,9 @@ constructor TWVBrowserBase.Create(AOwner: TComponent);
FOnGetFaviconCompleted := nil;
FOnPrintToPdfStreamCompleted := nil;
FOnGetCustomSchemes := nil;
+ FOnGetNonDefaultPermissionSettingsCompleted := nil;
+ FOnSetPermissionStateCompleted := nil;
+ FOnLaunchingExternalUriScheme := nil;
end;
destructor TWVBrowserBase.Destroy;
@@ -1996,6 +2016,12 @@ procedure TWVBrowserBase.doOnSetPermissionStateCompleted(errorCode: HResult);
FOnSetPermissionStateCompleted(self, errorCode);
end;
+procedure TWVBrowserBase.doOnLaunchingExternalUriSchemeEvent(const sender: ICoreWebView2; const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs);
+begin
+ if assigned(FOnLaunchingExternalUriScheme) then
+ FOnLaunchingExternalUriScheme(self, sender, args);
+end;
+
procedure TWVBrowserBase.doOnRetrieveMHTMLCompleted( aErrorCode : HRESULT;
const aReturnObjectAsJson : wvstring);
var
@@ -2290,6 +2316,12 @@ function TWVBrowserBase.SetPermissionStateCompletedHandler_Invoke(errorCode: HRe
doOnSetPermissionStateCompleted(errorCode);
end;
+function TWVBrowserBase.LaunchingExternalUriSchemeEventHandler_Invoke(const sender: ICoreWebView2; const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs): HRESULT;
+begin
+ Result := S_OK;
+ doOnLaunchingExternalUriSchemeEvent(sender, args);
+end;
+
function TWVBrowserBase.ExecuteScriptCompletedHandler_Invoke(errorCode: HRESULT; resultObjectAsJson: PWideChar; aExecutionID : integer): HRESULT;
begin
Result := S_OK;
@@ -2857,6 +2889,14 @@ function TWVBrowserBase.GetFaviconURI : wvstring;
Result := '';
end;
+function TWVBrowserBase.GetMemoryUsageTargetLevel : TWVMemoryUsageTargetLevel;
+begin
+ if Initialized then
+ Result := FCoreWebView2.MemoryUsageTargetLevel
+ else
+ Result := COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL;
+end;
+
function TWVBrowserBase.GetScreenScale : single;
begin
if (GlobalWebView2Loader <> nil) then
@@ -4495,6 +4535,40 @@ function TWVBrowserBase.GetProfileCookieManager : ICoreWebView2CookieManager;
end;
end;
+function TWVBrowserBase.GetProfileIsPasswordAutosaveEnabled : boolean;
+var
+ TempProfile : TCoreWebView2Profile;
+begin
+ Result := False;
+ TempProfile := nil;
+
+ if Initialized then
+ try
+ TempProfile := TCoreWebView2Profile.Create(FCoreWebView2.Profile);
+ Result := TempProfile.IsPasswordAutosaveEnabled;
+ finally
+ if assigned(TempProfile) then
+ FreeAndNil(TempProfile);
+ end;
+end;
+
+function TWVBrowserBase.GetProfileIsGeneralAutofillEnabled : boolean;
+var
+ TempProfile : TCoreWebView2Profile;
+begin
+ Result := False;
+ TempProfile := nil;
+
+ if Initialized then
+ try
+ TempProfile := TCoreWebView2Profile.Create(FCoreWebView2.Profile);
+ Result := TempProfile.IsGeneralAutofillEnabled;
+ finally
+ if assigned(TempProfile) then
+ FreeAndNil(TempProfile);
+ end;
+end;
+
procedure TWVBrowserBase.SetPreferredTrackingPreventionLevel(const aValue : TWVTrackingPreventionLevel);
var
TempProfile : TCoreWebView2Profile;
@@ -4511,6 +4585,44 @@ procedure TWVBrowserBase.SetPreferredTrackingPreventionLevel(const aValue : TWVT
end;
end;
+procedure TWVBrowserBase.SetProfileIsPasswordAutosaveEnabled(aValue : boolean);
+var
+ TempProfile : TCoreWebView2Profile;
+begin
+ TempProfile := nil;
+
+ if Initialized then
+ try
+ TempProfile := TCoreWebView2Profile.Create(FCoreWebView2.Profile);
+ TempProfile.IsPasswordAutosaveEnabled := aValue;
+ finally
+ if assigned(TempProfile) then
+ FreeAndNil(TempProfile);
+ end;
+end;
+
+procedure TWVBrowserBase.SetProfileIsGeneralAutofillEnabled(aValue : boolean);
+var
+ TempProfile : TCoreWebView2Profile;
+begin
+ TempProfile := nil;
+
+ if Initialized then
+ try
+ TempProfile := TCoreWebView2Profile.Create(FCoreWebView2.Profile);
+ TempProfile.IsGeneralAutofillEnabled := aValue;
+ finally
+ if assigned(TempProfile) then
+ FreeAndNil(TempProfile);
+ end;
+end;
+
+procedure TWVBrowserBase.SetMemoryUsageTargetLevel(aValue : TWVMemoryUsageTargetLevel);
+begin
+ if Initialized then
+ FCoreWebView2.MemoryUsageTargetLevel := aValue;
+end;
+
function TWVBrowserBase.CreateSharedBuffer(aSize : Largeuint; var aSharedBuffer : ICoreWebView2SharedBuffer) : boolean;
begin
Result := Initialized and
diff --git a/source/uWVCoreWebView2.pas b/source/uWVCoreWebView2.pas
index f163e13..dbc910e 100644
--- a/source/uWVCoreWebView2.pas
+++ b/source/uWVCoreWebView2.pas
@@ -34,6 +34,8 @@ TCoreWebView2 = class
FBaseIntf15 : ICoreWebView2_15;
FBaseIntf16 : ICoreWebView2_16;
FBaseIntf17 : ICoreWebView2_17;
+ FBaseIntf18 : ICoreWebView2_18;
+ FBaseIntf19 : ICoreWebView2_19;
FContainsFullScreenElementChangedToken : EventRegistrationToken;
FContentLoadingToken : EventRegistrationToken;
FDocumentTitleChangedToken : EventRegistrationToken;
@@ -63,6 +65,7 @@ TCoreWebView2 = class
FStatusBarTextChangedToken : EventRegistrationToken;
FServerCertificateErrorDetectedToken : EventRegistrationToken;
FFaviconChangedToken : EventRegistrationToken;
+ FLaunchingExternalUriSchemeToken : EventRegistrationToken;
FDevToolsEventNames : TStringList;
FDevToolsEventTokens : array of EventRegistrationToken;
@@ -86,10 +89,12 @@ TCoreWebView2 = class
function GetStatusBarText : wvstring;
function GetProfile : ICoreWebView2Profile;
function GetFaviconURI : wvstring;
+ function GetMemoryUsageTargetLevel : TWVMemoryUsageTargetLevel;
procedure SetIsMuted(aValue : boolean);
procedure SetDefaultDownloadDialogCornerAlignment(aValue : TWVDefaultDownloadDialogCornerAlignment);
procedure SetDefaultDownloadDialogMargin(aValue : TPoint);
+ procedure SetMemoryUsageTargetLevel(aValue : TWVMemoryUsageTargetLevel);
procedure InitializeFields;
procedure InitializeTokens;
@@ -125,6 +130,7 @@ TCoreWebView2 = class
function AddStatusBarTextChangedEvent(const aBrowserComponent : TComponent) : boolean;
function AddServerCertificateErrorDetectedEvent(const aBrowserComponent : TComponent) : boolean;
function AddFaviconChanged(const aBrowserComponent : TComponent) : boolean;
+ function AddLaunchingExternalUriScheme(const aBrowserComponent : TComponent) : boolean;
public
constructor Create(const aBaseIntf : ICoreWebView2); reintroduce;
@@ -187,6 +193,7 @@ TCoreWebView2 = class
property StatusBarText : wvstring read GetStatusBarText;
property Profile : ICoreWebView2Profile read GetProfile;
property FaviconURI : wvstring read GetFaviconURI;
+ property MemoryUsageTargetLevel : TWVMemoryUsageTargetLevel read GetMemoryUsageTargetLevel write SetMemoryUsageTargetLevel;
end;
implementation
@@ -217,8 +224,10 @@ constructor TCoreWebView2.Create(const aBaseIntf : ICoreWebView2);
LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_13, FBaseIntf13) and
LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_14, FBaseIntf14) and
LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_15, FBaseIntf15) and
- LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_16, FBaseIntf16) then
- LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_17, FBaseIntf17);
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_16, FBaseIntf16) and
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_17, FBaseIntf17) and
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_18, FBaseIntf18) then
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2_19, FBaseIntf19);
end;
destructor TCoreWebView2.Destroy;
@@ -267,6 +276,8 @@ procedure TCoreWebView2.InitializeFields;
FBaseIntf15 := nil;
FBaseIntf16 := nil;
FBaseIntf17 := nil;
+ FBaseIntf18 := nil;
+ FBaseIntf19 := nil;
FDevToolsEventTokens := nil;
FDevToolsEventNames := nil;
@@ -304,6 +315,7 @@ procedure TCoreWebView2.InitializeTokens;
FStatusBarTextChangedToken.value := 0;
FServerCertificateErrorDetectedToken.value := 0;
FFaviconChangedToken.value := 0;
+ FLaunchingExternalUriSchemeToken.value := 0;
end;
function TCoreWebView2.GetInitialized : boolean;
@@ -422,6 +434,10 @@ procedure TCoreWebView2.RemoveAllEvents;
(FFaviconChangedToken.Value <> 0) then
FBaseIntf15.remove_FaviconChanged(FFaviconChangedToken);
+ if assigned(FBaseIntf18) and
+ (FLaunchingExternalUriSchemeToken.Value <> 0) then
+ FBaseIntf18.remove_LaunchingExternalUriScheme(FLaunchingExternalUriSchemeToken);
+
UnsubscribeAllDevToolsProtocolEvents;
end;
except
@@ -868,6 +884,21 @@ function TCoreWebView2.AddFaviconChanged(const aBrowserComponent : TComponent) :
end;
end;
+function TCoreWebView2.AddLaunchingExternalUriScheme(const aBrowserComponent : TComponent) : boolean;
+var
+ TempHandler : ICoreWebView2LaunchingExternalUriSchemeEventHandler;
+begin
+ Result := False;
+
+ if assigned(FBaseIntf18) and (FLaunchingExternalUriSchemeToken.value = 0) then
+ try
+ TempHandler := TCoreWebView2LaunchingExternalUriSchemeEventHandler.Create(TWVBrowserBase(aBrowserComponent));
+ Result := succeeded(FBaseIntf18.add_LaunchingExternalUriScheme(TempHandler, FLaunchingExternalUriSchemeToken));
+ finally
+ TempHandler := nil;
+ end;
+end;
+
function TCoreWebView2.AddAllBrowserEvents(const aBrowserComponent : TComponent) : boolean;
begin
Result := AddNavigationStartingEvent(aBrowserComponent) and
@@ -898,7 +929,8 @@ function TCoreWebView2.AddAllBrowserEvents(const aBrowserComponent : TComponent)
AddContextMenuRequestedEvent(aBrowserComponent) and
AddStatusBarTextChangedEvent(aBrowserComponent) and
AddServerCertificateErrorDetectedEvent(aBrowserComponent) and
- AddFaviconChanged(aBrowserComponent);
+ AddFaviconChanged(aBrowserComponent) and
+ AddLaunchingExternalUriScheme(aBrowserComponent);
end;
function TCoreWebView2.AddWebResourceRequestedFilter(const URI : wvstring;
@@ -1464,6 +1496,17 @@ function TCoreWebView2.GetFaviconURI : wvstring;
end;
end;
+function TCoreWebView2.GetMemoryUsageTargetLevel : TWVMemoryUsageTargetLevel;
+var
+ TempResult : COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL;
+begin
+ if assigned(FBaseIntf19) and
+ succeeded(FBaseIntf19.Get_MemoryUsageTargetLevel(TempResult)) then
+ Result := TempResult
+ else
+ Result := COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL;
+end;
+
procedure TCoreWebView2.SetIsMuted(aValue : boolean);
begin
if assigned(FBaseIntf8) then
@@ -1482,4 +1525,10 @@ procedure TCoreWebView2.SetDefaultDownloadDialogMargin(aValue : TPoint);
FBaseIntf9.Set_DefaultDownloadDialogMargin(tagPOINT(aValue));
end;
+procedure TCoreWebView2.SetMemoryUsageTargetLevel(aValue : TWVMemoryUsageTargetLevel);
+begin
+ if assigned(FBaseIntf19) then
+ FBaseIntf19.Set_MemoryUsageTargetLevel(aValue);
+end;
+
end.
diff --git a/source/uWVCoreWebView2Args.pas b/source/uWVCoreWebView2Args.pas
index 4936e8b..6b807c6 100644
--- a/source/uWVCoreWebView2Args.pas
+++ b/source/uWVCoreWebView2Args.pas
@@ -572,6 +572,32 @@ TCoreWebView2ServerCertificateErrorDetectedEventArgs = class
property Deferral : ICoreWebView2Deferral read GetDeferral;
end;
+ TCoreWebView2LaunchingExternalUriSchemeEventArgs = class
+ protected
+ FBaseIntf : ICoreWebView2LaunchingExternalUriSchemeEventArgs;
+
+ function GetInitialized : boolean;
+ function GetUri : wvstring;
+ function GetInitiatingOrigin : wvstring;
+ function GetIsUserInitiated : boolean;
+ function GetCancel : boolean;
+ function GetDeferral : ICoreWebView2Deferral;
+
+ procedure SetCancel(aValue : boolean);
+
+ public
+ constructor Create(const aArgs: ICoreWebView2LaunchingExternalUriSchemeEventArgs); reintroduce;
+ destructor Destroy; override;
+
+ property Initialized : boolean read GetInitialized;
+ property BaseIntf : ICoreWebView2LaunchingExternalUriSchemeEventArgs read FBaseIntf;
+ property Uri : wvstring read GetUri;
+ property InitiatingOrigin : wvstring read GetInitiatingOrigin;
+ property IsUserInitiated : boolean read GetIsUserInitiated;
+ property Cancel : boolean read GetCancel write SetCancel;
+ property Deferral : ICoreWebView2Deferral read GetDeferral;
+ end;
+
implementation
@@ -2431,4 +2457,93 @@ procedure TCoreWebView2ServerCertificateErrorDetectedEventArgs.SetAction(aValue:
FBaseIntf.Set_Action(aValue);
end;
+
+// TCoreWebView2LaunchingExternalUriSchemeEventArgs
+
+constructor TCoreWebView2LaunchingExternalUriSchemeEventArgs.Create(const aArgs: ICoreWebView2LaunchingExternalUriSchemeEventArgs);
+begin
+ inherited Create;
+
+ FBaseIntf := aArgs;
+end;
+
+destructor TCoreWebView2LaunchingExternalUriSchemeEventArgs.Destroy;
+begin
+ FBaseIntf := nil;
+
+ inherited Destroy;
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventArgs.GetInitialized : boolean;
+begin
+ Result := assigned(FBaseIntf);
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventArgs.GetUri : wvstring;
+var
+ TempString : PWideChar;
+begin
+ Result := '';
+ TempString := nil;
+
+ if Initialized and
+ succeeded(FBaseIntf.Get_Uri(TempString)) then
+ begin
+ Result := TempString;
+ CoTaskMemFree(TempString);
+ end;
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventArgs.GetInitiatingOrigin : wvstring;
+var
+ TempString : PWideChar;
+begin
+ Result := '';
+ TempString := nil;
+
+ if Initialized and
+ succeeded(FBaseIntf.Get_InitiatingOrigin(TempString)) then
+ begin
+ Result := TempString;
+ CoTaskMemFree(TempString);
+ end;
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventArgs.GetIsUserInitiated: boolean;
+var
+ TempInt : integer;
+begin
+ Result := Initialized and
+ succeeded(FBaseIntf.Get_IsUserInitiated(TempInt)) and
+ (TempInt <> 0);
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventArgs.GetCancel: boolean;
+var
+ TempInt : integer;
+begin
+ Result := Initialized and
+ succeeded(FBaseIntf.Get_Cancel(TempInt)) and
+ (TempInt <> 0);
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventArgs.GetDeferral: ICoreWebView2Deferral;
+var
+ TempResult : ICoreWebView2Deferral;
+begin
+ Result := nil;
+ TempResult := nil;
+
+ if Initialized and
+ succeeded(FBaseIntf.GetDeferral(TempResult)) and
+ (TempResult <> nil) then
+ Result := TempResult;
+end;
+
+procedure TCoreWebView2LaunchingExternalUriSchemeEventArgs.SetCancel(aValue: boolean);
+begin
+ if Initialized then
+ FBaseIntf.Set_Cancel(ord(aValue));
+end;
+
end.
diff --git a/source/uWVCoreWebView2Delegates.pas b/source/uWVCoreWebView2Delegates.pas
index 22e25c8..a12f8ae 100644
--- a/source/uWVCoreWebView2Delegates.pas
+++ b/source/uWVCoreWebView2Delegates.pas
@@ -814,6 +814,17 @@ TCoreWebView2SetPermissionStateCompletedHandler = class(TInterfacedObject, ICo
destructor Destroy; override;
end;
+ TCoreWebView2LaunchingExternalUriSchemeEventHandler = class(TInterfacedObject, ICoreWebView2LaunchingExternalUriSchemeEventHandler)
+ protected
+ FEvents : Pointer;
+
+ function Invoke(const sender: ICoreWebView2; const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs): HResult; stdcall;
+
+ public
+ constructor Create(const aEvents: IWVBrowserEvents); reintroduce;
+ destructor Destroy; override;
+ end;
+
implementation
@@ -2640,4 +2651,31 @@ function TCoreWebView2SetPermissionStateCompletedHandler.Invoke(errorCode: HResu
Result := E_FAIL;
end;
+
+// TCoreWebView2LaunchingExternalUriSchemeEventHandler
+
+constructor TCoreWebView2LaunchingExternalUriSchemeEventHandler.Create(const aEvents: IWVBrowserEvents);
+begin
+ inherited Create;
+
+ FEvents := Pointer(aEvents);
+end;
+
+destructor TCoreWebView2LaunchingExternalUriSchemeEventHandler.Destroy;
+begin
+ FEvents := nil;
+
+ inherited Destroy;
+end;
+
+function TCoreWebView2LaunchingExternalUriSchemeEventHandler.Invoke(const sender: ICoreWebView2;
+ const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs): HResult; stdcall;
+begin
+ if (FEvents <> nil) then
+ Result := IWVBrowserEvents(FEvents).LaunchingExternalUriSchemeEventHandler_Invoke(sender, args)
+ else
+ Result := E_FAIL;
+end;
+
+
end.
diff --git a/source/uWVCoreWebView2Profile.pas b/source/uWVCoreWebView2Profile.pas
index 59318dd..37a6388 100644
--- a/source/uWVCoreWebView2Profile.pas
+++ b/source/uWVCoreWebView2Profile.pas
@@ -17,6 +17,7 @@ TCoreWebView2Profile = class
FBaseIntf3 : ICoreWebView2Profile3;
FBaseIntf4 : ICoreWebView2Profile4;
FBaseIntf5 : ICoreWebView2Profile5;
+ FBaseIntf6 : ICoreWebView2Profile6;
function GetInitialized : boolean;
function GetProfileName : wvstring;
@@ -26,10 +27,14 @@ TCoreWebView2Profile = class
function GetPreferredColorScheme : TWVPreferredColorScheme;
function GetPreferredTrackingPreventionLevel : TWVTrackingPreventionLevel;
function GetCookieManager : ICoreWebView2CookieManager;
+ function GetIsPasswordAutosaveEnabled : boolean;
+ function GetIsGeneralAutofillEnabled : boolean;
procedure SetDefaultDownloadFolderPath(const aValue : wvstring);
procedure SetPreferredColorScheme(aValue : TWVPreferredColorScheme);
procedure SetPreferredTrackingPreventionLevel(aValue : TWVTrackingPreventionLevel);
+ procedure SetIsPasswordAutosaveEnabled(aValue : boolean);
+ procedure SetIsGeneralAutofillEnabled(aValue : boolean);
procedure InitializeFields;
@@ -51,6 +56,8 @@ TCoreWebView2Profile = class
property PreferredColorScheme : TWVPreferredColorScheme read GetPreferredColorScheme write SetPreferredColorScheme;
property PreferredTrackingPreventionLevel : TWVTrackingPreventionLevel read GetPreferredTrackingPreventionLevel write SetPreferredTrackingPreventionLevel;
property CookieManager : ICoreWebView2CookieManager read GetCookieManager;
+ property IsPasswordAutosaveEnabled : boolean read GetIsPasswordAutosaveEnabled write SetIsPasswordAutosaveEnabled;
+ property IsGeneralAutofillEnabled : boolean read GetIsGeneralAutofillEnabled write SetIsGeneralAutofillEnabled;
end;
implementation
@@ -74,8 +81,9 @@ constructor TCoreWebView2Profile.Create(const aBaseIntf: ICoreWebView2Profile);
if Initialized and
LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile2, FBaseIntf2) and
LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile3, FBaseIntf3) and
- LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile4, FBaseIntf4) then
- LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile5, FBaseIntf5);
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile4, FBaseIntf4) and
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile5, FBaseIntf5) then
+ LoggedQueryInterface(FBaseIntf, IID_ICoreWebView2Profile6, FBaseIntf6);
end;
destructor TCoreWebView2Profile.Destroy;
@@ -92,6 +100,7 @@ procedure TCoreWebView2Profile.InitializeFields;
FBaseIntf3 := nil;
FBaseIntf4 := nil;
FBaseIntf5 := nil;
+ FBaseIntf6 := nil;
end;
function TCoreWebView2Profile.GetInitialized : boolean;
@@ -192,6 +201,24 @@ function TCoreWebView2Profile.GetCookieManager : ICoreWebView2CookieManager;
Result := TempResult;
end;
+function TCoreWebView2Profile.GetIsPasswordAutosaveEnabled : boolean;
+var
+ TempResult : integer;
+begin
+ Result := assigned(FBaseIntf6) and
+ succeeded(FBaseIntf6.Get_IsPasswordAutosaveEnabled(TempResult)) and
+ (TempResult <> 0);
+end;
+
+function TCoreWebView2Profile.GetIsGeneralAutofillEnabled : boolean;
+var
+ TempResult : integer;
+begin
+ Result := assigned(FBaseIntf6) and
+ succeeded(FBaseIntf6.Get_IsGeneralAutofillEnabled(TempResult)) and
+ (TempResult <> 0);
+end;
+
procedure TCoreWebView2Profile.SetDefaultDownloadFolderPath(const aValue : wvstring);
begin
if Initialized then
@@ -210,6 +237,18 @@ procedure TCoreWebView2Profile.SetPreferredTrackingPreventionLevel(aValue : TWVT
FBaseIntf3.Set_PreferredTrackingPreventionLevel(aValue);
end;
+procedure TCoreWebView2Profile.SetIsPasswordAutosaveEnabled(aValue: boolean);
+begin
+ if assigned(FBaseIntf6) then
+ FBaseIntf6.Set_IsPasswordAutosaveEnabled(ord(aValue));
+end;
+
+procedure TCoreWebView2Profile.SetIsGeneralAutofillEnabled(aValue: boolean);
+begin
+ if assigned(FBaseIntf6) then
+ FBaseIntf6.Set_IsGeneralAutofillEnabled(ord(aValue));
+end;
+
function TCoreWebView2Profile.ClearBrowsingData( dataKinds : TWVBrowsingDataKinds;
const handler : ICoreWebView2ClearBrowsingDataCompletedHandler): boolean;
begin
diff --git a/source/uWVEvents.pas b/source/uWVEvents.pas
index d3fd040..5f1f88a 100644
--- a/source/uWVEvents.pas
+++ b/source/uWVEvents.pas
@@ -89,6 +89,7 @@ interface
TOnGetCustomSchemesEvent = procedure(Sender: TObject; var aCustomSchemes: TWVCustomSchemeInfoArray) of object;
TOnGetNonDefaultPermissionSettingsCompletedEvent = procedure(Sender: TObject; aErrorCode: HRESULT; const aCollectionView: ICoreWebView2PermissionSettingCollectionView) of object;
TOnSetPermissionStateCompletedEvent = procedure(Sender: TObject; aErrorCode: HRESULT) of object;
+ TOnLaunchingExternalUriSchemeEvent = procedure(Sender: TObject; const aWebView: ICoreWebView2; const aArgs: ICoreWebView2LaunchingExternalUriSchemeEventArgs) of object;
// Custom events
TOnCompMsgEvent = procedure(Sender: TObject; var aMessage: TMessage; var aHandled: Boolean) of object;
diff --git a/source/uWVFMXBrowser.pas b/source/uWVFMXBrowser.pas
index 4b9ba63..9107310 100644
--- a/source/uWVFMXBrowser.pas
+++ b/source/uWVFMXBrowser.pas
@@ -121,6 +121,7 @@ TWVFMXBrowser = class(TWVBrowserBase)
property OnGetCustomSchemes;
property OnGetNonDefaultPermissionSettingsCompleted;
property OnSetPermissionStateCompleted;
+ property OnLaunchingExternalUriScheme;
end;
implementation
diff --git a/source/uWVInterfaces.pas b/source/uWVInterfaces.pas
index df5cb66..bc79a38 100644
--- a/source/uWVInterfaces.pas
+++ b/source/uWVInterfaces.pas
@@ -240,6 +240,9 @@ interface
// ICoreWebView2SetPermissionStateCompletedHandler
function SetPermissionStateCompletedHandler_Invoke(errorCode: HResult): HResult;
+
+ // ICoreWebView2LaunchingExternalUriSchemeEventHandler
+ function LaunchingExternalUriSchemeEventHandler_Invoke(const sender: ICoreWebView2; const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs): HResult;
end;
implementation
diff --git a/source/uWVTypeLibrary.pas b/source/uWVTypeLibrary.pas
index 000417b..a7f2406 100644
--- a/source/uWVTypeLibrary.pas
+++ b/source/uWVTypeLibrary.pas
@@ -30,10 +30,10 @@
// ************************************************************************ //
// $Rev: 98336 $
-// File generated on 09/05/2023 15:22:18 from Type Library described below.
+// File generated on 06/06/2023 11:23:24 from Type Library described below.
// ************************************************************************ //
-// Type Lib: R:\microsoft.web.webview2.1.0.1774.30.nupkg_FILES\WebView2.tlb (1)
+// Type Lib: R:\microsoft.web.webview2.1.0.1823.32.nupkg_FILES\WebView2.tlb (1)
// LIBID: {26D34152-879F-4065-BEA2-3DAA2CFADFB8}
// LCID: 0
// Helpfile:
@@ -197,6 +197,9 @@ interface
IID_ICoreWebView2PrintToPdfStreamCompletedHandler: TGUID = '{4C9F8229-8F93-444F-A711-2C0DFD6359D5}';
IID_ICoreWebView2_17: TGUID = '{702E75D4-FD44-434D-9D70-1A68A6B1192A}';
IID_ICoreWebView2SharedBuffer: TGUID = '{B747A495-0C6F-449E-97B8-2F81E9D6AB43}';
+ IID_ICoreWebView2_18: TGUID = '{7A626017-28BE-49B2-B865-3BA2B3522D90}';
+ IID_ICoreWebView2LaunchingExternalUriSchemeEventHandler: TGUID = '{74F712E0-8165-43A9-A13F-0CCE597E75DF}';
+ IID_ICoreWebView2LaunchingExternalUriSchemeEventArgs: TGUID = '{07D1A6C3-7175-4BA1-9306-E593CA07E46C}';
IID_ICoreWebView2BrowserProcessExitedEventArgs: TGUID = '{1F00663F-AF8C-4782-9CDD-DD01C52E34CB}';
IID_ICoreWebView2BrowserProcessExitedEventHandler: TGUID = '{FA504257-A216-4911-A860-FE8825712861}';
IID_ICoreWebView2CompositionController: TGUID = '{3DF9B733-B9AE-4A15-86B4-EB9EE9826469}';
@@ -261,6 +264,7 @@ interface
IID_ICoreWebView2Profile4: TGUID = '{8F4AE680-192E-4EC8-833A-21CFADAEF628}';
IID_ICoreWebView2SetPermissionStateCompletedHandler: TGUID = '{FC77FB30-9C9E-4076-B8C7-7644A703CA1B}';
IID_ICoreWebView2Profile5: TGUID = '{2EE5B76E-6E80-4DF2-BCD3-D4EC3340A01B}';
+ IID_ICoreWebView2Profile6: TGUID = '{BD82FA6A-1D65-4C33-B2B4-0393020CC61B}';
IID_ICoreWebView2Settings2: TGUID = '{EE9A0F68-F46C-4E32-AC23-EF8CAC224D2A}';
IID_ICoreWebView2Settings3: TGUID = '{FDB5AB74-AF33-4854-84F0-0A631DEB5EBA}';
IID_ICoreWebView2Settings4: TGUID = '{CB56846C-4168-4D53-B04F-03B6D6796FF2}';
@@ -268,6 +272,7 @@ interface
IID_ICoreWebView2Settings6: TGUID = '{11CB3ACD-9BC8-43B8-83BF-F40753714F87}';
IID_ICoreWebView2Settings7: TGUID = '{488DC902-35EF-42D2-BC7D-94B65C4BC49C}';
IID_ICoreWebView2Settings8: TGUID = '{9E6B0E8F-86AD-4E81-8147-A9B5EDB68650}';
+ IID_ICoreWebView2_19: TGUID = '{6921F954-79B0-437F-A997-C85811897C68}';
IID_ICoreWebView2File: TGUID = '{F2C19559-6BC1-4583-A757-90021BE9AFEC}';
IID_ICoreWebView2ObjectCollectionView: TGUID = '{0F36FD87-4F69-4415-98DA-888F89FB9A33}';
IID_ICoreWebView2WebMessageReceivedEventArgs2: TGUID = '{06FC7AB7-C90C-4297-9389-33CA01CF6D5E}';
@@ -706,6 +711,13 @@ interface
COREWEBVIEW2_PDF_TOOLBAR_ITEMS_FULL_SCREEN = $00000800;
COREWEBVIEW2_PDF_TOOLBAR_ITEMS_MORE_SETTINGS = $00001000;
+// Constants for enum COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL
+type
+ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL = TOleEnum;
+const
+ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_NORMAL = $00000000;
+ COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL_LOW = $00000001;
+
type
// *********************************************************************//
@@ -829,6 +841,9 @@ interface
ICoreWebView2PrintToPdfStreamCompletedHandler = interface;
ICoreWebView2_17 = interface;
ICoreWebView2SharedBuffer = interface;
+ ICoreWebView2_18 = interface;
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler = interface;
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs = interface;
ICoreWebView2BrowserProcessExitedEventArgs = interface;
ICoreWebView2BrowserProcessExitedEventHandler = interface;
ICoreWebView2CompositionController = interface;
@@ -893,6 +908,7 @@ interface
ICoreWebView2Profile4 = interface;
ICoreWebView2SetPermissionStateCompletedHandler = interface;
ICoreWebView2Profile5 = interface;
+ ICoreWebView2Profile6 = interface;
ICoreWebView2Settings2 = interface;
ICoreWebView2Settings3 = interface;
ICoreWebView2Settings4 = interface;
@@ -900,6 +916,7 @@ interface
ICoreWebView2Settings6 = interface;
ICoreWebView2Settings7 = interface;
ICoreWebView2Settings8 = interface;
+ ICoreWebView2_19 = interface;
ICoreWebView2File = interface;
ICoreWebView2ObjectCollectionView = interface;
ICoreWebView2WebMessageReceivedEventArgs2 = interface;
@@ -2660,6 +2677,44 @@ COREWEBVIEW2_COLOR = record
function Close: HResult; stdcall;
end;
+// *********************************************************************//
+// Interface: ICoreWebView2_18
+// Flags: (0)
+// GUID: {7A626017-28BE-49B2-B865-3BA2B3522D90}
+// *********************************************************************//
+ ICoreWebView2_18 = interface(ICoreWebView2_17)
+ ['{7A626017-28BE-49B2-B865-3BA2B3522D90}']
+ function add_LaunchingExternalUriScheme(const eventHandler: ICoreWebView2LaunchingExternalUriSchemeEventHandler;
+ out token: EventRegistrationToken): HResult; stdcall;
+ function remove_LaunchingExternalUriScheme(token: EventRegistrationToken): HResult; stdcall;
+ end;
+
+// *********************************************************************//
+// Interface: ICoreWebView2LaunchingExternalUriSchemeEventHandler
+// Flags: (0)
+// GUID: {74F712E0-8165-43A9-A13F-0CCE597E75DF}
+// *********************************************************************//
+ ICoreWebView2LaunchingExternalUriSchemeEventHandler = interface(IUnknown)
+ ['{74F712E0-8165-43A9-A13F-0CCE597E75DF}']
+ function Invoke(const sender: ICoreWebView2;
+ const args: ICoreWebView2LaunchingExternalUriSchemeEventArgs): HResult; stdcall;
+ end;
+
+// *********************************************************************//
+// Interface: ICoreWebView2LaunchingExternalUriSchemeEventArgs
+// Flags: (0)
+// GUID: {07D1A6C3-7175-4BA1-9306-E593CA07E46C}
+// *********************************************************************//
+ ICoreWebView2LaunchingExternalUriSchemeEventArgs = interface(IUnknown)
+ ['{07D1A6C3-7175-4BA1-9306-E593CA07E46C}']
+ function Get_uri(out value: PWideChar): HResult; stdcall;
+ function Get_InitiatingOrigin(out value: PWideChar): HResult; stdcall;
+ function Get_IsUserInitiated(out value: Integer): HResult; stdcall;
+ function Get_Cancel(out value: Integer): HResult; stdcall;
+ function Set_Cancel(value: Integer): HResult; stdcall;
+ function GetDeferral(out value: ICoreWebView2Deferral): HResult; stdcall;
+ end;
+
// *********************************************************************//
// Interface: ICoreWebView2BrowserProcessExitedEventArgs
// Flags: (0)
@@ -3497,6 +3552,19 @@ COREWEBVIEW2_COLOR = record
function Get_CookieManager(out CookieManager: ICoreWebView2CookieManager): HResult; stdcall;
end;
+// *********************************************************************//
+// Interface: ICoreWebView2Profile6
+// Flags: (0)
+// GUID: {BD82FA6A-1D65-4C33-B2B4-0393020CC61B}
+// *********************************************************************//
+ ICoreWebView2Profile6 = interface(ICoreWebView2Profile5)
+ ['{BD82FA6A-1D65-4C33-B2B4-0393020CC61B}']
+ function Get_IsPasswordAutosaveEnabled(out value: Integer): HResult; stdcall;
+ function Set_IsPasswordAutosaveEnabled(value: Integer): HResult; stdcall;
+ function Get_IsGeneralAutofillEnabled(out value: Integer): HResult; stdcall;
+ function Set_IsGeneralAutofillEnabled(value: Integer): HResult; stdcall;
+ end;
+
// *********************************************************************//
// Interface: ICoreWebView2Settings2
// Flags: (0)
@@ -3576,6 +3644,17 @@ COREWEBVIEW2_COLOR = record
function Set_IsReputationCheckingRequired(value: Integer): HResult; stdcall;
end;
+// *********************************************************************//
+// Interface: ICoreWebView2_19
+// Flags: (0)
+// GUID: {6921F954-79B0-437F-A997-C85811897C68}
+// *********************************************************************//
+ ICoreWebView2_19 = interface(ICoreWebView2_18)
+ ['{6921F954-79B0-437F-A997-C85811897C68}']
+ function Get_MemoryUsageTargetLevel(out level: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL): HResult; stdcall;
+ function Set_MemoryUsageTargetLevel(level: COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL): HResult; stdcall;
+ end;
+
// *********************************************************************//
// Interface: ICoreWebView2File
// Flags: (0)
diff --git a/source/uWVTypes.pas b/source/uWVTypes.pas
index 2c76843..a7049ac 100644
--- a/source/uWVTypes.pas
+++ b/source/uWVTypes.pas
@@ -64,6 +64,7 @@ interface
TWVPrintDialogKind = type COREWEBVIEW2_PRINT_DIALOG_KIND;
TWVSharedBufferAccess = type COREWEBVIEW2_SHARED_BUFFER_ACCESS;
TWVTrackingPreventionLevel = type COREWEBVIEW2_TRACKING_PREVENTION_LEVEL;
+ TWVMemoryUsageTargetLevel = type COREWEBVIEW2_MEMORY_USAGE_TARGET_LEVEL;
TWV2LoaderStatus = (wvlsCreated,
wvlsLoading,
diff --git a/source/uWVVersion.inc b/source/uWVVersion.inc
index eca75d4..d420920 100644
--- a/source/uWVVersion.inc
+++ b/source/uWVVersion.inc
@@ -1,12 +1,12 @@
WEBVIEW2LOADERLIB_VERSION_MAJOR = 1;
WEBVIEW2LOADERLIB_VERSION_MINOR = 0;
- WEBVIEW2LOADERLIB_VERSION_RELEASE = 1774;
- WEBVIEW2LOADERLIB_VERSION_BUILD = 30;
+ WEBVIEW2LOADERLIB_VERSION_RELEASE = 1823;
+ WEBVIEW2LOADERLIB_VERSION_BUILD = 32;
// For full API compatibility, WebView4Delphi requires the same
// WebView2 Runtime version mentioned in the release notes :
// https://docs.microsoft.com/en-us/microsoft-edge/webview2/release-notes
- CHROMIUM_VERSION_MAJOR = 113;
+ CHROMIUM_VERSION_MAJOR = 114;
CHROMIUM_VERSION_MINOR = 0;
CHROMIUM_VERSION_RELEASE = WEBVIEW2LOADERLIB_VERSION_RELEASE;
CHROMIUM_VERSION_BUILD = WEBVIEW2LOADERLIB_VERSION_BUILD;
\ No newline at end of file
diff --git a/update_WebView4Delphi.json b/update_WebView4Delphi.json
index 93ba8d9..735bb45 100644
--- a/update_WebView4Delphi.json
+++ b/update_WebView4Delphi.json
@@ -2,9 +2,9 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
- "InternalVersion" : 99,
+ "InternalVersion" : 100,
"Name" : "webview4delphi.lpk",
- "Version" : "1.0.1774.30"
+ "Version" : "1.0.1823.32"
}
],
"UpdatePackageData" : {