diff --git a/build/patches/00Add-cromite-flags-support.patch b/build/patches/00Add-cromite-flags-support.patch index 4a435b71..3de67cdb 100644 --- a/build/patches/00Add-cromite-flags-support.patch +++ b/build/patches/00Add-cromite-flags-support.patch @@ -25,9 +25,13 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/settings/SettingsActivity.java | 36 +++++ chrome/browser/about_flags.cc | 7 + chrome/browser/browser_features.cc | 1 + + chrome/browser/flags/BUILD.gn | 12 ++ .../flags/android/chrome_feature_list.cc | 1 + .../flags/android/chrome_feature_list.h | 1 + .../chrome/browser/flags/CachedFlag.java | 6 + + .../browser/flags/ChromeFeatureList.java | 13 +- + .../flags/cromite/include_all_directory.java | 1 + + .../java_template/CromiteCachedFlag.java.tmpl | 47 ++++++ chrome/browser/settings/BUILD.gn | 1 + .../settings/ChromeBaseSettingsFragment.java | 47 ++++++ .../strings/android_chrome_strings.grd | 1 + @@ -81,7 +85,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html services/network/public/cpp/features.h | 1 + third_party/blink/common/features.cc | 1 + third_party/blink/public/common/features.h | 1 + - 67 files changed, 659 insertions(+), 17 deletions(-) + 71 files changed, 731 insertions(+), 18 deletions(-) + create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java + create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/placeholder.txt create mode 100755 cromite_flags/BUILD.gn create mode 100755 cromite_flags/chrome/browser/about_flags_cc/placeholder.txt @@ -523,6 +529,42 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature +#include "cromite_flags/chrome_browser_browser_features_cc.inc" } // namespace features +diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn +--- a/chrome/browser/flags/BUILD.gn ++++ b/chrome/browser/flags/BUILD.gn +@@ -26,7 +26,11 @@ android_library("java") { + "android/java/src/org/chromium/chrome/browser/flags/ValuesReturned.java", + "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java", + ] ++ sources += [ ++ "android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java", ++ ] + deps = [ ++ ":java_cromite_cached_flags", + "//base:base_java", + "//build:chromeos_buildflags", + "//build/android:build_java", +@@ -37,12 +41,20 @@ android_library("java") { + "//third_party/jni_zero:jni_zero_java", + ] + srcjar_deps = [ ++ ":java_cromite_cached_flags", + ":chrome_android_java_switches_srcjar", + ":chrome_browser_flags_enums_srcjar", + ":jni_headers", + ] + } + ++java_bromite_impl("java_cromite_cached_flags") { ++ inputs = [ "android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java" ] ++ namespace = "org.chromium.chrome.browser.flags.cromite" ++ template = "android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl" ++ static_classes = true ++} ++ + generate_jni("jni_headers") { + sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ] + sources += [ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc @@ -560,6 +602,101 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f /** * Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */ +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +@@ -7,6 +7,10 @@ package org.chromium.chrome.browser.flags; + import org.chromium.base.FeatureMap; + import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; + ++import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase; ++import java.util.Arrays; ++import java.util.stream.Collectors; ++ + import java.util.List; + import java.util.Map; + +@@ -673,7 +677,7 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sUseLibunwindstackNativeUnwinderAndroid = + new CachedFlag(USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID, true); + +- public static final List sFlagsCachedFullBrowser = ++ public static final List sFlagsCachedFullBrowserChromium = + List.of( + sAllowUserCertificates, + sAndroidAppIntegration, +@@ -757,6 +761,13 @@ public abstract class ChromeFeatureList { + sShowAlwaysContextMenuOnLinks, + sUseLibunwindstackNativeUnwinderAndroid); + ++ private static List concatenateLists(List... collections) { ++ return Arrays.stream(collections).flatMap(x -> x.stream()).collect(Collectors.toList()); ++ } ++ ++ public static final List sFlagsCachedFullBrowser = ++ concatenateLists(CromiteCachedFlagImplBase.getList(), sFlagsCachedFullBrowserChromium); ++ + public static final List sFlagsCachedInMinimalBrowser = + List.of(sExperimentsForAgsa); + +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java +new file mode 100644 +--- /dev/null ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java +@@ -0,0 +1 @@ ++this file is intentionally empty +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl +new file mode 100644 +--- /dev/null ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl +@@ -0,0 +1,47 @@ ++/* ++ This file is part of Cromite. ++ ++ Cromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Cromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Cromite. If not, see . ++ ++*/ ++ ++{DESCRIPTION} ++ ++package org.chromium.chrome.browser.flags.cromite; ++ ++import java.util.ArrayList; ++import java.util.List; ++ ++import org.chromium.chrome.browser.flags.CachedFlag; ++ ++{IMPORT_CLAUSE} ++ ++public class CromiteCachedFlagImplBase {{ ++ ++ static protected final ArrayList mItemList; ++ ++ private static void add(CachedFlag flag) {{ ++ mItemList.add(flag); ++ }} ++ ++ public static List getList() {{ ++ return mItemList; ++ }} ++ ++ static {{ ++ mItemList = new ArrayList(); ++{ADD_CLAUSE} ++ }} ++ ++}} diff --git a/chrome/browser/settings/BUILD.gn b/chrome/browser/settings/BUILD.gn --- a/chrome/browser/settings/BUILD.gn +++ b/chrome/browser/settings/BUILD.gn @@ -615,7 +752,7 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse + Preference pref = prefScreen.getPreference(i); + if (pref instanceof ChromeSwitchPreference) { + ChromeSwitchPreference switchPref = (ChromeSwitchPreference)pref; -+ String featureName = switchPref.GetFeatureName(); ++ String featureName = switchPref.getFeatureName(); + if (featureName == null) + continue; + @@ -624,7 +761,7 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse + + switchPref.setOnPreferenceChangeListener((preference, newValue) -> { + CromiteNativeUtils.setFlagEnabled(featureName, (boolean)newValue); -+ if (switchPref.NeedRestart()) ++ if (switchPref.needRestart()) + mRequireRestartDelegate.RequireRestart(); + return true; + }); @@ -719,11 +856,11 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium + a.recycle(); + } + -+ public String GetFeatureName() { ++ public String getFeatureName() { + return mFeatureName; + } + -+ public boolean NeedRestart() { ++ public boolean needRestart() { + return mNeedRestart; } diff --git a/build/patches/00Use-list-mode-for-tab-switcher.patch b/build/patches/00Use-list-mode-for-tab-switcher.patch index 1edf6ddb..5ed122d4 100644 --- a/build/patches/00Use-list-mode-for-tab-switcher.patch +++ b/build/patches/00Use-list-mode-for-tab-switcher.patch @@ -7,23 +7,34 @@ Added a setting for the option need: Add-cromite-flags-support.patch License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../tasks/tab_management/TabUiFeatureUtilities.java | 2 +- - chrome/android/java/res/xml/privacy_preferences.xml | 7 +++++++ - .../Use-list-mode-for-tab-switcher.grdp | 9 +++++++++ - .../chrome_feature_list_cc/tab-switcher-list-mode.inc | 3 +++ - 4 files changed, 20 insertions(+), 1 deletion(-) + .../tab_management/TabUiFeatureUtilities.java | 4 +-- + .../java/res/xml/privacy_preferences.xml | 7 +++++ + .../flags/cromite/sTabSwitcherListMode.java | 31 +++++++++++++++++++ + .../Use-list-mode-for-tab-switcher.grdp | 9 ++++++ + .../tab-switcher-list-mode.inc | 3 ++ + 5 files changed, 52 insertions(+), 2 deletions(-) + create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-list-mode-for-tab-switcher.grdp create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/tab-switcher-list-mode.inc diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java -@@ -116,7 +116,7 @@ public class TabUiFeatureUtilities { +@@ -15,6 +15,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.flags.IntCachedFieldTrialParameter; + import org.chromium.chrome.browser.flags.MutableFlagWithSafeDefault; + import org.chromium.ui.base.DeviceFormFactor; ++import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode; + + /** + * A class to handle the state of flags for tab_management. +@@ -115,8 +116,7 @@ public class TabUiFeatureUtilities { + * @param context The activity context. */ public static boolean shouldUseListMode(Context context) { - // Low-end forces list mode. +- // Low-end forces list mode. - return SysUtils.isLowEndDevice(); -+ return ChromeFeatureList.isEnabled("TabSwitcherListMode"); ++ return sTabSwitcherListMode.getInstance().isEnabled(); } /** @@ -44,6 +55,42 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java +new file mode 100644 +--- /dev/null ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java +@@ -0,0 +1,31 @@ ++/* ++ This file is part of Cromite. ++ ++ Cromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Cromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Cromite. If not, see . ++*/ ++ ++package org.chromium.chrome.browser.flags.cromite; ++ ++import org.chromium.chrome.browser.flags.CachedFlag; ++ ++public class sTabSwitcherListMode { ++ private static final CachedFlag sInstance = ++ new CachedFlag("TabSwitcherListMode", false); ++ ++ private sTabSwitcherListMode() {} ++ ++ public static CachedFlag getInstance() { ++ return sInstance; ++ } ++} diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-list-mode-for-tab-switcher.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-list-mode-for-tab-switcher.grdp new file mode 100644 --- /dev/null diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 60d78252..fb8ece9c 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -25,7 +25,7 @@ Require: bromite-build-utils.patch .../views/page_info/page_info_view_factory.cc | 13 + .../settings_localized_strings_provider.cc | 39 +++ .../ui/webui/settings/site_settings_helper.cc | 34 +- - .../browser_ui/site_settings/android/BUILD.gn | 16 + + .../browser_ui/site_settings/android/BUILD.gn | 18 + .../site_settings/AllSiteSettings.java | 5 +- .../BromiteCustomContentSetting.java | 139 ++++++++ .../BromiteCustomContentSettingImpl.java | 307 ++++++++++++++++++ @@ -72,7 +72,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 5 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 61 files changed, 1193 insertions(+), 44 deletions(-) + 61 files changed, 1195 insertions(+), 44 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomTriStateSiteSettingsPreferenceImpl.java @@ -587,7 +587,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -148,6 +148,21 @@ android_library("java") { +@@ -148,6 +148,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -605,11 +605,13 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b + +java_bromite_impl("java_bromite_content_settings") { + inputs = [ "java/src/org/chromium/components/browser_ui/site_settings/impl/include_all_directory.java" ] ++ namespace = "org.chromium.components.browser_ui.site_settings.impl" + template = "java/src/org/chromium/components/browser_ui/site_settings/impl/java_template/BromiteCustomContentSettingImplBase.java.tmpl" ++ static_classes = false } android_library("javatests") { -@@ -193,6 +208,7 @@ robolectric_library("junit") { +@@ -193,6 +210,7 @@ robolectric_library("junit") { } android_resources("java_resources") { diff --git a/build/patches/bromite-build-utils.patch b/build/patches/bromite-build-utils.patch index 22b04223..ccb4249b 100644 --- a/build/patches/bromite-build-utils.patch +++ b/build/patches/bromite-build-utils.patch @@ -3,23 +3,23 @@ Date: Fri, 9 Jun 2023 15:11:46 +0000 Subject: bromite build utils --- - build/android/gyp/java_cpp_enum.py | 36 +++++-- - build/android/gyp/util/build_utils.py | 25 ++++- - build/bromite/bromite_utils.gni | 69 ++++++++++++++ - build/bromite/gyp/cpp_bromite_include.py | 35 +++++++ - build/bromite/gyp/cpp_bromite_include.pydeps | 9 ++ - build/bromite/gyp/java_bromite_impl.py | 94 +++++++++++++++++++ - build/bromite/gyp/java_bromite_impl.pydeps | 9 ++ - build/config/BUILDCONFIG.gn | 1 + - build/config/android/rules.gni | 6 +- - .../ChromeAccessibilitySettingsDelegate.java | 5 + - chrome/browser/flags/BUILD.gn | 10 +- - .../flags/android/cromite_native_utils.cc | 41 ++++++++ - .../flags/android/cromite_native_utils.h | 14 +++ - .../browser/flags/CromiteNativeUtils.java | 41 ++++++++ - tools/grit/grit/grd_reader.py | 27 +++++- - tools/grit/preprocess_if_expr.py | 32 ++++++- - 16 files changed, 438 insertions(+), 16 deletions(-) + build/android/gyp/java_cpp_enum.py | 36 +++++- + build/android/gyp/util/build_utils.py | 25 +++- + build/bromite/bromite_utils.gni | 79 +++++++++++++ + build/bromite/gyp/cpp_bromite_include.py | 35 ++++++ + build/bromite/gyp/cpp_bromite_include.pydeps | 9 ++ + build/bromite/gyp/java_bromite_impl.py | 108 ++++++++++++++++++ + build/bromite/gyp/java_bromite_impl.pydeps | 9 ++ + build/config/BUILDCONFIG.gn | 1 + + build/config/android/rules.gni | 6 +- + .../ChromeAccessibilitySettingsDelegate.java | 5 + + chrome/browser/flags/BUILD.gn | 10 +- + .../flags/android/cromite_native_utils.cc | 41 +++++++ + .../flags/android/cromite_native_utils.h | 14 +++ + .../browser/flags/CromiteNativeUtils.java | 46 ++++++++ + tools/grit/grit/grd_reader.py | 27 ++++- + tools/grit/preprocess_if_expr.py | 32 +++++- + 16 files changed, 467 insertions(+), 16 deletions(-) create mode 100644 build/bromite/bromite_utils.gni create mode 100644 build/bromite/gyp/cpp_bromite_include.py create mode 100644 build/bromite/gyp/cpp_bromite_include.pydeps @@ -162,7 +162,7 @@ diff --git a/build/bromite/bromite_utils.gni b/build/bromite/bromite_utils.gni new file mode 100644 --- /dev/null +++ b/build/bromite/bromite_utils.gni -@@ -0,0 +1,69 @@ +@@ -0,0 +1,79 @@ +import("//build/config/python.gni") + +# generates the file specified in ouput_file containing @@ -215,18 +215,28 @@ new file mode 100644 + TESTONLY_AND_VISIBILITY + [ + "deps", + "inputs", ++ "namespace", ++ "static_classes", + ]) + script = "//build/bromite/gyp/java_bromite_impl.py" ++ namespace = "" ++ static_classes = false + + _srcjar_path = "${target_gen_dir}/${target_name}.srcjar" + _rebased_srcjar_path = rebase_path(_srcjar_path, root_build_dir) + _rebased_directories = rebase_path(invoker.inputs, root_build_dir) + _rebased_template = rebase_path(invoker.template, root_build_dir) ++ _namespace = invoker.namespace ++ _static_classes = invoker.static_classes + + args = [ + "--srcjar=$_rebased_srcjar_path", + "--template=$_rebased_template", ++ "--namespace=$_namespace", + ] ++ if (_static_classes) { ++ args += [ "--static_classes", ] ++ } + args += _rebased_directories + + outputs = [ _srcjar_path ] @@ -290,7 +300,7 @@ diff --git a/build/bromite/gyp/java_bromite_impl.py b/build/bromite/gyp/java_bro new file mode 100644 --- /dev/null +++ b/build/bromite/gyp/java_bromite_impl.py -@@ -0,0 +1,94 @@ +@@ -0,0 +1,108 @@ +#!/usr/bin/env python3 + +import argparse @@ -307,7 +317,8 @@ new file mode 100644 +import action_helpers # build_utils adds //build to sys.path. +import zip_helpers + -+def _GenerateOutput(template, source_paths, template_path, strings): ++def _GenerateOutput(template, source_paths, template_path, strings, ++ namespace, static_classes): + description_template = """ +// This following string constants were inserted by +// {SCRIPT_NAME} @@ -325,8 +336,13 @@ new file mode 100644 + description = description_template.format(**values) + + import_clause = '\n'.join( -+ ['import org.chromium.components.browser_ui.site_settings.impl.' + f + ';' for f in strings]) -+ add_clause = '\n\t'.join(['\tadd(new ' + f + '());' for f in strings]) ++ ['import ' + namespace + '.' + f + ';' for f in strings]) ++ print(namespace) ++ print(static_classes) ++ if static_classes: ++ add_clause = '\n\t'.join(['\tadd(' + f + '.getInstance());' for f in strings]) ++ else: ++ add_clause = '\n\t'.join(['\tadd(new ' + f + '());' for f in strings]) + + values = { + 'DESCRIPTION': description, @@ -336,7 +352,7 @@ new file mode 100644 + return template.format(**values) + + -+def _Generate(source_paths, template_path): ++def _Generate(source_paths, template_path, namespace, static_classes): + with open(template_path) as f: + lines = f.readlines() + @@ -356,7 +372,8 @@ new file mode 100644 + if not f.endswith('include_all_directory.java') and + not f.endswith('.java.tmpl') ] + -+ output = _GenerateOutput(template, source_paths, template_path, strings) ++ output = _GenerateOutput(template, source_paths, template_path, strings, ++ namespace, static_classes) + + return output, output_path + @@ -374,12 +391,19 @@ new file mode 100644 + 'class.') + + parser.add_argument( ++ '--namespace', required=True, help='Output namespace') ++ parser.add_argument( ++ '--static_classes', action="store_true", ++ default=False, ++ help='True to use getInstance() method') ++ parser.add_argument( + 'inputs', nargs='+', help='Input folder(s)', metavar='INPUTFILE') + args = parser.parse_args(argv) + + with action_helpers.atomic_output(args.srcjar) as f: + with zipfile.ZipFile(f, 'w', zipfile.ZIP_STORED) as srcjar: -+ data, path = _Generate(args.inputs, args.template) ++ data, path = _Generate(args.inputs, args.template, ++ args.namespace, args.static_classes) + zip_helpers.add_to_zip_hermetic(srcjar, path, data=data) + + @@ -551,7 +575,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f new file mode 100755 --- /dev/null +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java -@@ -0,0 +1,41 @@ +@@ -0,0 +1,46 @@ +package org.chromium.chrome.browser.flags; + +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -570,17 +594,22 @@ new file mode 100755 + * @param flagName the flag name name from about_flags.cc. + */ + public static void setFlagEnabled(String flagName, Boolean newValue) { -+ CromiteNativeUtilsJni.get().setEnabled(flagName, newValue); ++ CachedFlag cachedFlag = ChromeFeatureList.sAllCachedFlags.get(flagName); ++ setFlagEnabled(cachedFlag == null ++ ? "" ++ : cachedFlag.getFeatureName(), flagName, newValue); + } + + public static void setFlagEnabled(String featureName, String flagName, Boolean newValue) { -+ setFlagEnabled(flagName, newValue); ++ CromiteNativeUtilsJni.get().setEnabled(flagName, newValue); + -+ CachedFlag cachedFlag = ChromeFeatureList.sAllCachedFlags.get(featureName); -+ String preferenceName = cachedFlag.getSharedPreferenceKey(); ++ if (!featureName.isEmpty()) { ++ CachedFlag cachedFlag = ChromeFeatureList.sAllCachedFlags.get(featureName); ++ String preferenceName = cachedFlag.getSharedPreferenceKey(); + -+ ChromeSharedPreferences.getInstance().writeBoolean(preferenceName, newValue); -+ cachedFlag.setValueReturnedOverride(newValue); ++ ChromeSharedPreferences.getInstance().writeBoolean(preferenceName, newValue); ++ cachedFlag.setValueReturnedOverride(newValue); ++ } + } + + public static boolean isFlagEnabled(String featureName) {