diff --git a/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.dfm b/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.dfm index ede47b5d..7c66e5be 100644 --- a/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.dfm +++ b/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.dfm @@ -380,6 +380,10 @@ object MiniBrowserFrm: TMiniBrowserFrm Caption = 'Clear cache' OnClick = Clearcache1Click end + object ClearallstorageforcurrentURL1: TMenuItem + Caption = 'Clear all storage for current URL' + OnClick = ClearallstorageforcurrentURL1Click + end object akescreenshot1: TMenuItem Caption = 'Take screenshot' OnClick = akescreenshot1Click diff --git a/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.pas b/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.pas index 2edc5c12..cfff31be 100644 --- a/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.pas +++ b/demos/Delphi_VCL/MiniBrowser/uMiniBrowser.pas @@ -137,6 +137,7 @@ type Clearcache1: TMenuItem; akescreenshot1: TMenuItem; Useragent1: TMenuItem; + ClearallstorageforcurrentURL1: TMenuItem; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -204,6 +205,7 @@ type procedure Clearcache1Click(Sender: TObject); procedure akescreenshot1Click(Sender: TObject); procedure Useragent1Click(Sender: TObject); + procedure ClearallstorageforcurrentURL1Click(Sender: TObject); protected FScreenshotMsgID : integer; @@ -984,6 +986,11 @@ begin ShowStatusText('Zoom : ' + floattostr(aZoomPct) + '%'); end; +procedure TMiniBrowserFrm.ClearallstorageforcurrentURL1Click(Sender: TObject); +begin + Chromium1.ClearDataForOrigin(URLCbx.Text); +end; + procedure TMiniBrowserFrm.Clearcache1Click(Sender: TObject); begin Chromium1.ClearCache; diff --git a/source/uCEFChromiumCore.pas b/source/uCEFChromiumCore.pas index 30dfeb48..1560bf49 100644 --- a/source/uCEFChromiumCore.pas +++ b/source/uCEFChromiumCore.pas @@ -695,7 +695,8 @@ type procedure ResolveHost(const aURL : ustring); function IsSameBrowser(const aBrowser : ICefBrowser) : boolean; function ExecuteTaskOnCefThread(aCefThreadId : TCefThreadId; aTaskID : cardinal; aDelayMs : Int64 = 0) : boolean; - procedure SetUserAgentOverride(const aUserAgent : string; const aAcceptLanguage : string = ''; const aPlatform : string = ''); + procedure SetUserAgentOverride(const aUserAgent : ustring; const aAcceptLanguage : ustring = ''; const aPlatform : ustring = ''); + procedure ClearDataForOrigin(const aOriginURL : ustring; aStorageTypes : TCefClearDataStorageTypes = cdstAll); procedure ClearCache; function DeleteCookies(const url : ustring = ''; const cookieName : ustring = ''; aDeleteImmediately : boolean = False) : boolean; @@ -2963,7 +2964,7 @@ begin end; end; -procedure TChromiumCore.SetUserAgentOverride(const aUserAgent, aAcceptLanguage, aPlatform : string); +procedure TChromiumCore.SetUserAgentOverride(const aUserAgent, aAcceptLanguage, aPlatform : ustring); var TempParams : ICefDictionaryValue; begin @@ -2983,6 +2984,33 @@ begin end; end; +procedure TChromiumCore.ClearDataForOrigin(const aOriginURL : ustring; aStorageTypes : TCefClearDataStorageTypes); +var + TempParams : ICefDictionaryValue; +begin + try + TempParams := TCefDictionaryValueRef.New; + TempParams.SetString('origin', aOriginURL); + + case aStorageTypes of + cdstAppCache : TempParams.SetString('storageTypes', 'appcache'); + cdstCookies : TempParams.SetString('storageTypes', 'cookies'); + cdstFileSystems : TempParams.SetString('storageTypes', 'file_systems'); + cdstIndexeddb : TempParams.SetString('storageTypes', 'indexeddb'); + cdstLocalStorage : TempParams.SetString('storageTypes', 'local_storage'); + cdstShaderCache : TempParams.SetString('storageTypes', 'shader_cache'); + cdstWebsql : TempParams.SetString('storageTypes', 'websql'); + cdstServiceWorkers : TempParams.SetString('storageTypes', 'service_workers'); + cdstCacheStorage : TempParams.SetString('storageTypes', 'cache_storage'); + else TempParams.SetString('storageTypes', 'all'); + end; + + ExecuteDevToolsMethod(0, 'Storage.clearDataForOrigin', TempParams); + finally + TempParams := nil; + end; +end; + procedure TChromiumCore.SetYouTubeRestrict(aValue : integer); begin if (FYouTubeRestrict <> aValue) then diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas index 644d8862..c3f75c17 100644 --- a/source/uCEFTypes.pas +++ b/source/uCEFTypes.pas @@ -431,6 +431,17 @@ type TCefProxyScheme = (psHTTP, psSOCKS4, psSOCKS5); + TCefClearDataStorageTypes = (cdstAppCache, + cdstCookies, + cdstFileSystems, + cdstIndexeddb, + cdstLocalStorage, + cdstShaderCache, + cdstWebsql, + cdstServiceWorkers, + cdstCacheStorage, + cdstAll); + TCefAutoplayPolicy = (appDefault, appDocumentUserActivationRequired, appNoUserGestureRequired, diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index a979810c..0b8c73bd 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,7 +2,7 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 156, + "InternalVersion" : 157, "Name" : "cef4delphi_lazarus.lpk", "Version" : "83.4.2.0" }