From 24e310e8ae7b718c909cd073d3dc36f3cf3f2f03 Mon Sep 17 00:00:00 2001 From: salvadordf <briskbard@briskbard.com> Date: Wed, 25 Jan 2023 18:06:32 +0100 Subject: [PATCH] Added 2 browser performance properties. Added TChromiumCore,BatterySaverModeState Added TChromiumCore,HighEfficiencyMode --- source/uCEFChromiumCore.pas | 32 ++++++++++++++++++++++++++++++++ source/uCEFTypes.pas | 10 ++++++++++ update_CEF4Delphi.json | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/source/uCEFChromiumCore.pas b/source/uCEFChromiumCore.pas index 2e9dec98..9872828f 100644 --- a/source/uCEFChromiumCore.pas +++ b/source/uCEFChromiumCore.pas @@ -143,6 +143,8 @@ type FQuicAllowed : boolean; FJavascriptEnabled : boolean; FLoadImagesAutomatically : boolean; + FBatterySaverModeState : TCefBatterySaverModeState; + FHighEfficiencyMode : TCefState; {$IFDEF LINUX} FXDisplay : PXDisplay; @@ -430,6 +432,8 @@ type procedure SetQuicAllowed(aValue : boolean); procedure SetJavascriptEnabled(aValue : boolean); procedure SetLoadImagesAutomatically(aValue : boolean); + procedure SetBatterySaverModeState(aValue : TCefBatterySaverModeState); + procedure SetHighEfficiencyMode(aValue : TCefState); procedure SetDefaultUrl(const aValue : ustring); function CreateBrowserHost(aWindowInfo : PCefWindowInfo; const aURL : ustring; const aSettings : PCefBrowserSettings; const aExtraInfo : ICefDictionaryValue; const aContext : ICefRequestContext): boolean; @@ -965,6 +969,8 @@ type property QuicAllowed : boolean read FQuicAllowed write SetQuicAllowed; property JavascriptEnabled : boolean read FJavascriptEnabled write SetJavascriptEnabled; property LoadImagesAutomatically : boolean read FLoadImagesAutomatically write SetLoadImagesAutomatically; + property BatterySaverModeState : TCefBatterySaverModeState read FBatterySaverModeState write SetBatterySaverModeState; + property HighEfficiencyMode : TCefState read FHighEfficiencyMode write SetHighEfficiencyMode; {$IFDEF LINUX} property XDisplay : PXDisplay read GetXDisplay; {$ENDIF} @@ -1322,6 +1328,8 @@ begin FQuicAllowed := True; FJavascriptEnabled := True; FLoadImagesAutomatically := True; + FBatterySaverModeState := bsmsDefault; + FHighEfficiencyMode := STATE_DEFAULT; {$IFDEF LINUX} FXDisplay := nil; {$ENDIF} @@ -2891,6 +2899,24 @@ begin end; end; +procedure TChromiumCore.SetBatterySaverModeState(aValue : TCefBatterySaverModeState); +begin + if (FBatterySaverModeState <> aValue) then + begin + FBatterySaverModeState := aValue; + FUpdatePreferences := True; + end; +end; + +procedure TChromiumCore.SetHighEfficiencyMode(aValue : TCefState); +begin + if (FHighEfficiencyMode <> aValue) then + begin + FHighEfficiencyMode := aValue; + FUpdatePreferences := True; + end; +end; + procedure TChromiumCore.SetDefaultUrl(const aValue : ustring); begin FDefaultUrl := trim(aValue); @@ -4119,6 +4145,12 @@ begin UpdatePreference(aBrowser, 'webkit.webprefs.javascript_enabled', FJavascriptEnabled); UpdatePreference(aBrowser, 'webkit.webprefs.loads_images_automatically', FLoadImagesAutomatically); + if (FHighEfficiencyMode <> STATE_DEFAULT) then + UpdatePreference(aBrowser, 'performance_tuning.high_efficiency_mode.enabled', (FHighEfficiencyMode = STATE_ENABLED)); + + if (FBatterySaverModeState <> bsmsDefault) then + UpdatePreference(aBrowser, 'performance_tuning.battery_saver_mode.state', integer(FBatterySaverModeState)); + if assigned(FOnPrefsUpdated) then FOnPrefsUpdated(self); end; diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas index b23880e2..3779d1f8 100644 --- a/source/uCEFTypes.pas +++ b/source/uCEFTypes.pas @@ -514,6 +514,16 @@ type nlcmEverything ); + // Values used by the battery saver mode state preference + // https://source.chromium.org/chromium/chromium/src/+/main:components/performance_manager/public/user_tuning/prefs.h + TCefBatterySaverModeState = ( + bsmsDisabled = 0, + bsmsEnabledBelowThreshold = 1, + bsmsEnabledOnBattery = 2, + bsmsEnabled = 3, + bsmsDefault = 4 // Custom value used to update the preferences only when there's a non-default value + ); + // Used by TCEFFileDialogInfo TCEFDialogType = (dtOpen, dtOpenMultiple, dtOpenFolder, dtSave); diff --git a/update_CEF4Delphi.json b/update_CEF4Delphi.json index 561763f2..a9e8e71a 100644 --- a/update_CEF4Delphi.json +++ b/update_CEF4Delphi.json @@ -2,7 +2,7 @@ "UpdateLazPackages" : [ { "ForceNotify" : true, - "InternalVersion" : 457, + "InternalVersion" : 458, "Name" : "cef4delphi_lazarus.lpk", "Version" : "109.1.16" }