From: uazo Date: Wed, 6 Dec 2023 10:21:45 +0000 Subject: Add PartialLowEndModeOnMidRangeDevices flag adds a new flag in chrome://flags to re-enable the experiment License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- base/features.cc | 4 ++++ content/renderer/render_process_impl.cc | 9 +++++++++ .../Add-PartialLowEndModeOnMidRangeDevices-flag.inc | 12 ++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc diff --git a/base/features.cc b/base/features.cc --- a/base/features.cc +++ b/base/features.cc @@ -199,6 +199,10 @@ bool IsReducePPMsEnabled() { return g_is_reduce_ppms_enabled.load(std::memory_order_relaxed); } +#if BUILDFLAG(IS_ANDROID) +SET_CROMITE_FEATURE_DISABLED(kPartialLowEndModeOnMidRangeDevices); +#endif + void Init() { g_is_reduce_ppms_enabled.store(FeatureList::IsEnabled(kReducePPMs), std::memory_order_relaxed); diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc --- a/content/renderer/render_process_impl.cc +++ b/content/renderer/render_process_impl.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/features.h" #include "content/renderer/render_process_impl.h" #include "build/build_config.h" @@ -123,10 +124,18 @@ RenderProcessImpl::RenderProcessImpl() base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisallowV8FeatureFlagOverrides); if (!disallow_v8_feature_flag_overrides) { +#if BUILDFLAG(IS_ANDROID) + if (base::SysInfo::IsLowEndDevice() + && base::FeatureList::IsEnabled(base::features::kPartialLowEndModeOnMidRangeDevices)) { + std::string_view optimize_flag("--optimize-for-size"); + v8::V8::SetFlagsFromString(optimize_flag.data(), optimize_flag.size()); + } +#else if (base::SysInfo::IsLowEndDevice()) { std::string_view optimize_flag("--optimize-for-size"); v8::V8::SetFlagsFromString(optimize_flag.data(), optimize_flag.size()); } +#endif //////////////////////////////////////////////////////////////////////////// // V8 flags are typically set in gin/v8_initializer.cc. Only those flags diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc @@ -0,0 +1,12 @@ +#if BUILDFLAG(IS_ANDROID) + +#ifdef FLAG_SECTION + + {"partial-lowendmode-on-midrange-devices", + "Partial Low End Mode On Mid Range Devices", + "Enables the LowEndDeviceMode experiment in devices with 4-6 gb of ram.", + kOsAndroid, FEATURE_VALUE_TYPE(base::features::kPartialLowEndModeOnMidRangeDevices)}, + +#endif + +#endif --