mirror of
https://github.com/jqssun/android-helium-browser.git
synced 2026-06-23 09:16:54 +00:00
compat
This commit is contained in:
parent
e7df780b05
commit
8f50dff27b
3 changed files with 107 additions and 92 deletions
36
args.gn
Normal file
36
args.gn
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
chrome_public_manifest_package = "io.github.jqssun.helium"
|
||||
is_desktop_android = true
|
||||
target_os = "android"
|
||||
target_cpu = "arm"
|
||||
is_component_build = false
|
||||
is_debug = false
|
||||
is_official_build = true
|
||||
symbol_level = 1
|
||||
disable_fieldtrial_testing_config = true
|
||||
ffmpeg_branding = "Chrome"
|
||||
proprietary_codecs = true
|
||||
enable_vr = false
|
||||
enable_arcore = false
|
||||
enable_openxr = false
|
||||
enable_cardboard = false
|
||||
enable_remoting = false
|
||||
enable_reporting = false
|
||||
google_api_key = "x"
|
||||
google_default_client_id = "x"
|
||||
google_default_client_secret = "x"
|
||||
|
||||
use_siso = true
|
||||
use_login_database_as_backend = true
|
||||
build_contextual_search = false
|
||||
dcheck_always_on = false
|
||||
enable_iterator_debugging = false
|
||||
exclude_unwind_tables = false
|
||||
icu_use_data_file = true
|
||||
rtc_build_examples = false
|
||||
use_errorprone_java_compiler = false
|
||||
use_rtti = false
|
||||
enable_av1_decoder = true
|
||||
enable_dav1d_decoder = true
|
||||
include_both_v8_snapshots = false
|
||||
include_both_v8_snapshots_android_secondary_abi = false
|
||||
generate_linker_map = true
|
||||
95
build.sh
95
build.sh
|
|
@ -39,6 +39,7 @@ git config --add remote.origin.fetch '+refs/tags/*:refs/tags/*'
|
|||
# https://grapheneos.org/build#browser-and-webview
|
||||
rm -rf $SCRIPT_DIR/vanadium/patches/*trichrome-{apk-build-targets,browser-apk-targets}.patch
|
||||
rm -rf $SCRIPT_DIR/vanadium/patches/*{detailed,supported}-language*.patch
|
||||
# rm -rf $SCRIPT_DIR/vanadium/patches/*crashpad*.patch
|
||||
replace "$SCRIPT_DIR/vanadium/patches" "VANADIUM" "HELIUM"
|
||||
replace "$SCRIPT_DIR/vanadium/patches" "Vanadium" "Helium"
|
||||
replace "$SCRIPT_DIR/vanadium/patches" "vanadium" "helium"
|
||||
|
|
@ -56,99 +57,9 @@ rm -rf third_party/angle/third_party/VK-GL-CTS/
|
|||
# python3 "${SCRIPT_DIR}/helium/utils/generate_resources.py" "${SCRIPT_DIR}/helium/resources/generate_resources.txt" "${SCRIPT_DIR}/helium/resources"
|
||||
# python3 "${SCRIPT_DIR}/helium/utils/replace_resources.py" "${SCRIPT_DIR}/helium/resources/helium_resources.txt" "${SCRIPT_DIR}/helium/resources" .
|
||||
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kSkipVulkanBlocklist);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kDefaultANGLEVulkan);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kVulkanFromANGLE);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kDefaultPassthroughCommandDecoder);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
|
||||
# dev
|
||||
sed -i 's/BASE_FEATURE(kSubmenusInAppMenu, base::FEATURE_DISABLED_BY_DEFAULT);/BASE_FEATURE(kSubmenusInAppMenu, base::FEATURE_ENABLED_BY_DEFAULT);/' chrome/browser/flags/android/chrome_feature_list.cc
|
||||
sed -i 's/BASE_FEATURE(kAndroidDevToolsFrontend, base::FEATURE_DISABLED_BY_DEFAULT);/BASE_FEATURE(kAndroidDevToolsFrontend, base::FEATURE_ENABLED_BY_DEFAULT);/' content/public/common/content_features.cc
|
||||
sed -i 's|if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) {|if (false) {|' chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
|
||||
|
||||
# search
|
||||
sed -i 's|BASE_FEATURE(kOmniboxSiteSearch, DISABLED);|BASE_FEATURE(kOmniboxSiteSearch, ENABLED);|' components/omnibox/common/omnibox_features.cc
|
||||
|
||||
# playback
|
||||
sed -i 's|#if BUILDFLAG(IS_ANDROID)|#if 0|' content/public/renderer/render_frame_media_playback_options.cc
|
||||
|
||||
# zoom
|
||||
sed -i 's|public static boolean shouldShowZoomMenuItem(@Nullable BrowserContextHandle context) {|public static boolean shouldShowZoomMenuItem(@Nullable BrowserContextHandle context) { if (true) return true;|' components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/PageZoomUtils.java
|
||||
sed -i 's|private boolean shouldShowLFFPageZoomItem() {|private boolean shouldShowLFFPageZoomItem() { if (true) return true;|' chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
|
||||
|
||||
# viewport
|
||||
sed -i 's|constexpr gfx::Size kMinSize = {25, 25};|constexpr gfx::Size kMinSize = {256, 25};|' chrome/browser/ui/android/extensions/extension_action_popup_contents.cc
|
||||
sed -i 's|<meta name="color-scheme" content="light dark">|&\n<meta name="viewport" content="width=device-width">|' chrome/browser/resources/extensions/extensions.html
|
||||
sed -i 's|--extensions-card-width: 400px;|--extensions-card-width: 96%;|' chrome/browser/resources/extensions/item_list.css # card width
|
||||
sed -i 's|--cr-toolbar-field-width: 680px;|--cr-toolbar-field-width: 96%;|' chrome/browser/resources/extensions/shared_vars.css # page content
|
||||
sed -i 's|padding: 24px 60px 64px;|padding: 24px 0 64px;|' chrome/browser/resources/extensions/item_list.css # content wrapper
|
||||
|
||||
# ext: mv2
|
||||
sed -i 's/BASE_FEATURE(kExtensionManifestV2Unsupported, base::FEATURE_ENABLED_BY_DEFAULT);/BASE_FEATURE(kExtensionManifestV2Unsupported, base::FEATURE_DISABLED_BY_DEFAULT);/' extensions/common/extension_features.cc
|
||||
sed -i 's/BASE_FEATURE(kExtensionManifestV2Disabled, base::FEATURE_ENABLED_BY_DEFAULT);/BASE_FEATURE(kExtensionManifestV2Disabled, base::FEATURE_DISABLED_BY_DEFAULT);/' extensions/common/extension_features.cc
|
||||
sed -i 's|uncompiled_sources_ = \[|&\n "browser_action.json",\n "page_action.json",|' chrome/common/extensions/api/api_sources.gni
|
||||
|
||||
# ext: toolbar
|
||||
sed -i '/<ViewStub/{N;N;N;N;N;N; /optional_button_stub/a\
|
||||
<ViewStub\
|
||||
android:id="@+id/extensions_toolbar_container_stub"\
|
||||
android:inflatedId="@+id/extensions_toolbar_container"\
|
||||
android:layout_width="wrap_content"\
|
||||
android:layout_height="match_parent" />
|
||||
}' chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
|
||||
sed -i 's|(ToolbarTablet) mToolbarLayout,|mToolbarLayout,|' chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
|
||||
|
||||
# ext: pin
|
||||
sed -i '/Pref.PIN_EXTENSIONS_MENU_BUTTON, this::updateMenuButtonPinState);$/a\if (!mPrefService.getBoolean(Pref.PIN_EXTENSIONS_MENU_BUTTON)) { mContainer.findViewById(R.id.extensions_menu_button).setVisibility(View.GONE); }' chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
|
||||
sed -i '/"ExtensionsToolbarCoordinatorImpl.requestLayoutWithViewUtils()");$/a\if (!isMenuButtonPinned()) { mContainer.findViewById(R.id.extensions_menu_button).setVisibility(View.GONE); }' chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
|
||||
|
||||
# ext: incognito
|
||||
sed -i 's| if (!context->IsOffTheRecord()) {| if (true) {|' extensions/browser/process_manager.cc
|
||||
sed -i 's|public static boolean shouldOpenIncognitoAsWindow() {|public static boolean shouldOpenIncognitoAsWindow() { if (true) return true;|' chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java
|
||||
|
||||
# tmp
|
||||
sed -i 's|if (!IncognitoUtils.shouldOpenIncognitoAsWindow() \|\| isIncognitoShowing()) {|if (true) {|' chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
|
||||
sed -i 's/BASE_FEATURE(kAndroidSearchInSettings,"SearchInSettings", base::FEATURE_DISABLED_BY_DEFAULT);/BASE_FEATURE(kAndroidSearchInSettings,"SearchInSettings", base::FEATURE_ENABLED_BY_DEFAULT);/' chrome/browser/flags/android/chrome_feature_list.cc
|
||||
|
||||
cat > out/Default/args.gn <<EOF
|
||||
chrome_public_manifest_package = "io.github.jqssun.helium"
|
||||
is_desktop_android = true
|
||||
target_os = "android"
|
||||
target_cpu = "arm"
|
||||
is_component_build = false
|
||||
is_debug = false
|
||||
is_official_build = true
|
||||
symbol_level = 1
|
||||
disable_fieldtrial_testing_config = true
|
||||
ffmpeg_branding = "Chrome"
|
||||
proprietary_codecs = true
|
||||
enable_vr = false
|
||||
enable_arcore = false
|
||||
enable_openxr = false
|
||||
enable_cardboard = false
|
||||
enable_remoting = false
|
||||
enable_reporting = false
|
||||
google_api_key = "x"
|
||||
google_default_client_id = "x"
|
||||
google_default_client_secret = "x"
|
||||
|
||||
use_siso = true
|
||||
use_login_database_as_backend = true
|
||||
build_contextual_search = false
|
||||
dcheck_always_on = false
|
||||
enable_iterator_debugging = false
|
||||
exclude_unwind_tables = false
|
||||
icu_use_data_file = true
|
||||
rtc_build_examples = false
|
||||
use_errorprone_java_compiler = false
|
||||
use_rtti = false
|
||||
enable_av1_decoder = true
|
||||
enable_dav1d_decoder = true
|
||||
include_both_v8_snapshots = false
|
||||
include_both_v8_snapshots_android_secondary_abi = false
|
||||
generate_linker_map = true
|
||||
EOF
|
||||
source $SCRIPT_DIR/patch.sh
|
||||
|
||||
cp $SCRIPT_DIR/args.gn out/Default/args.gn
|
||||
sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install -y libgcc-s1:i386
|
||||
gn gen out/Default # gn args out/Default; echo 'treat_warnings_as_errors = false' >> out/Default/args.gn
|
||||
mkdir -p out/tmp out/release
|
||||
|
|
|
|||
68
patch.sh
Executable file
68
patch.sh
Executable file
|
|
@ -0,0 +1,68 @@
|
|||
#!/bin/bash
|
||||
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kSkipVulkanBlocklist);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kDefaultANGLEVulkan);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kVulkanFromANGLE);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i '/feature_overrides.EnableFeature(::features::kDefaultPassthroughCommandDecoder);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
|
||||
# dev
|
||||
sed -i 's/BASE_FEATURE(kSubmenusInAppMenu, base::FEATURE_DISABLED_BY_DEFAULT);/BASE_FEATURE(kSubmenusInAppMenu, base::FEATURE_ENABLED_BY_DEFAULT);/' chrome/browser/flags/android/chrome_feature_list.cc
|
||||
sed -i 's/BASE_FEATURE(kAndroidDevToolsFrontend, base::FEATURE_DISABLED_BY_DEFAULT);/BASE_FEATURE(kAndroidDevToolsFrontend, base::FEATURE_ENABLED_BY_DEFAULT);/' content/public/common/content_features.cc
|
||||
sed -i 's|if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(mContext)) {|if (false) {|' chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
|
||||
|
||||
# search
|
||||
sed -i 's|BASE_FEATURE(kOmniboxSiteSearch, DISABLED);|BASE_FEATURE(kOmniboxSiteSearch, ENABLED);|' components/omnibox/common/omnibox_features.cc
|
||||
|
||||
# playback
|
||||
sed -i 's|#if BUILDFLAG(IS_ANDROID)|#if 0|' content/public/renderer/render_frame_media_playback_options.cc
|
||||
|
||||
# viewport
|
||||
sed -i 's|constexpr gfx::Size kMinSize = {25, 25};|constexpr gfx::Size kMinSize = {256, 25};|' chrome/browser/ui/android/extensions/extension_action_popup_contents.cc
|
||||
sed -i 's|<meta name="color-scheme" content="light dark">|&\n<meta name="viewport" content="width=device-width">|' chrome/browser/resources/extensions/extensions.html
|
||||
sed -i 's|--extensions-card-width: 400px;|--extensions-card-width: 96%;|' chrome/browser/resources/extensions/item_list.css # card width
|
||||
sed -i 's|--cr-toolbar-field-width: 680px;|--cr-toolbar-field-width: 96%;|' chrome/browser/resources/extensions/shared_vars.css # page content
|
||||
sed -i 's|padding: 24px 60px 64px;|padding: 24px 0 64px;|' chrome/browser/resources/extensions/item_list.css # content wrapper
|
||||
|
||||
# ext: mv2
|
||||
sed -i 's/BASE_FEATURE(kExtensionManifestV2Unsupported, base::FEATURE_ENABLED_BY_DEFAULT);/BASE_FEATURE(kExtensionManifestV2Unsupported, base::FEATURE_DISABLED_BY_DEFAULT);/' extensions/common/extension_features.cc
|
||||
sed -i 's/BASE_FEATURE(kExtensionManifestV2Disabled, base::FEATURE_ENABLED_BY_DEFAULT);/BASE_FEATURE(kExtensionManifestV2Disabled, base::FEATURE_DISABLED_BY_DEFAULT);/' extensions/common/extension_features.cc
|
||||
sed -i 's|uncompiled_sources_ = \[|&\n "browser_action.json",\n "page_action.json",|' chrome/common/extensions/api/api_sources.gni
|
||||
|
||||
# ext: toolbar
|
||||
sed -i '/<ViewStub/{N;N;N;N;N;N; /optional_button_stub/a\
|
||||
<ViewStub\
|
||||
android:id="@+id/extensions_toolbar_container_stub"\
|
||||
android:inflatedId="@+id/extensions_toolbar_container"\
|
||||
android:layout_width="wrap_content"\
|
||||
android:layout_height="match_parent" />
|
||||
}' chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml
|
||||
sed -i 's|(ToolbarTablet) mToolbarLayout,|mToolbarLayout,|' chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
|
||||
|
||||
# ext: pin
|
||||
sed -i '/Pref.PIN_EXTENSIONS_MENU_BUTTON, this::updateMenuButtonPinState);$/a\if (!mPrefService.getBoolean(Pref.PIN_EXTENSIONS_MENU_BUTTON)) { mContainer.findViewById(R.id.extensions_menu_button).setVisibility(View.GONE); }' chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
|
||||
sed -i '/"ExtensionsToolbarCoordinatorImpl.requestLayoutWithViewUtils()");$/a\if (!isMenuButtonPinned()) { mContainer.findViewById(R.id.extensions_menu_button).setVisibility(View.GONE); }' chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java
|
||||
|
||||
# ext: incognito
|
||||
sed -i 's|if (!context->IsOffTheRecord()) {|if (true) {|' extensions/browser/process_manager.cc
|
||||
sed -i 's|public static boolean shouldOpenIncognitoAsWindow() {|public static boolean shouldOpenIncognitoAsWindow() { if (true) return true;|' chrome/browser/incognito/android/java/src/org/chromium/chrome/browser/incognito/IncognitoUtils.java
|
||||
|
||||
# tmp
|
||||
sed -i 's|if (!IncognitoUtils.shouldOpenIncognitoAsWindow() \|\| isIncognitoShowing()) {|if (true) {|' chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
|
||||
sed -i 's/BASE_FEATURE(kAndroidSearchInSettings,"SearchInSettings", base::FEATURE_DISABLED_BY_DEFAULT);/BASE_FEATURE(kAndroidSearchInSettings,"SearchInSettings", base::FEATURE_ENABLED_BY_DEFAULT);/' chrome/browser/flags/android/chrome_feature_list.cc
|
||||
|
||||
# crbug.com/431004500: incognito uaf
|
||||
sed -i '/for (int i = 0; i < tab_list->GetTabCount(); ++i) {/i if (!tab_list) { continue; }' chrome/browser/extensions/api/tabs/tabs_api.cc
|
||||
|
||||
# crbug.com/40274462: incognito uaf
|
||||
sed -i '/CONTENT_EXPORT static WebContents\* FromRenderFrameHost(RenderFrameHost\* rfh);/a\CONTENT_EXPORT static bool HasLiveWebContentsForBrowserContext(BrowserContext* browser_context);' content/public/browser/web_contents.h
|
||||
sed -i '/^WebContentsImpl::WebContentsImpl(BrowserContext\* browser_context)/i\ bool WebContents::HasLiveWebContentsForBrowserContext(BrowserContext* browser_context) { for (WebContentsImpl* web_contents : WebContentsImpl::GetAllWebContents()) { if (web_contents->GetBrowserContext() == browser_context) { return true; } } return false; }' content/browser/web_contents/web_contents_impl.cc
|
||||
sed -i '/#include "content\/public\/browser\/render_process_host.h"/a#include "content/public/browser/web_contents.h"' chrome/browser/profiles/profile_destroyer.cc
|
||||
sed -i '/^void ProfileDestroyer::DestroyOTRProfileWhenAppropriateWithTimeout($/,/MaybeSendDestroyedNotification/{/ profile->MaybeSendDestroyedNotification();/i\
|
||||
if (content::WebContents::HasLiveWebContentsForBrowserContext(profile)) { return; }
|
||||
}' chrome/browser/profiles/profile_destroyer.cc
|
||||
|
||||
# crbug.com/444024982: api 31
|
||||
sed -i 's/|| mSupportedProfileType == SupportedProfileType.REGULAR) {/|| mSupportedProfileType == SupportedProfileType.REGULAR || mSupportedProfileType == SupportedProfileType.MIXED) {/' chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||
sed -i 's/|| mSupportedProfileType == SupportedProfileType.OFF_THE_RECORD) {/|| mSupportedProfileType == SupportedProfileType.OFF_THE_RECORD || mSupportedProfileType == SupportedProfileType.MIXED) {/' chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||
|
||||
export PATCHED=1
|
||||
Loading…
Add table
Add a link
Reference in a new issue