Compare commits
22 commits
v147.0.772
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b91057e79 | ||
|
|
c63f21c76d | ||
|
|
41fb08ba13 | ||
|
|
fe89591825 | ||
|
|
3e0d493fb2 | ||
|
|
727f80a0b2 | ||
|
|
c0be0b1ccc | ||
|
|
8692691dad | ||
|
|
47a8883b95 | ||
|
|
8f50dff27b | ||
|
|
e7df780b05 | ||
|
|
5dfc4c34cf | ||
|
|
66db726a34 | ||
|
|
973b832475 | ||
|
|
95cacaea77 | ||
|
|
d2782a6479 | ||
|
|
6ac4a1fdb5 | ||
|
|
1116001bb9 | ||
|
|
a0c02be2f0 | ||
|
|
ca7da81860 | ||
|
|
214280e117 | ||
|
|
edb4434392 |
37
.github/ISSUE_TEMPLATE/report.yml
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
name: Report
|
||||
description: Report a bug or suggest a feature
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
### Important
|
||||
Before reporting a new issue, please check if it already exists [upstream](https://crbug.com/) or in the [issue tracker](https://github.com/jqssun/android-helium-browser/issues).
|
||||
|
||||
We aim to keep things lightweight. The scope of accepted bugs is limited to current patches. If a feature can be achieved via an extension or a user script, please refrain from opening a report.
|
||||
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Verification
|
||||
description: Please verify the following before submitting.
|
||||
options:
|
||||
- label: I have checked upstream at crbug.com and I confirm this is NOT a known issue from Chromium.
|
||||
required: true
|
||||
- label: I have checked the issue tracker and I confirm this is NOT a known issue in this project.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: environment
|
||||
attributes:
|
||||
label: Environment
|
||||
description: Please provide the applicable device model, operating system version, and app version.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: A clear and concise description of what the issue is.
|
||||
validations:
|
||||
required: true
|
||||
12
.github/workflows/build.yml
vendored
|
|
@ -13,6 +13,8 @@ on:
|
|||
|
||||
permissions:
|
||||
contents: write
|
||||
id-token: write
|
||||
attestations: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
|
@ -53,6 +55,7 @@ jobs:
|
|||
run: |
|
||||
export VERSION=$(find chromium/src/out/release -name '*arm64-v8a.apk' | sed 's/.*\///;s/\-arm64-v8a.apk$//')
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
mv $(find chromium/src/out/release -name '*arm64-v8a.aab') $VERSION-${{ env.unix_time }}-arm64-v8a.aab
|
||||
mv $(find chromium/src/out/release -name '*arm64-v8a.apk') $VERSION-${{ env.unix_time }}-arm64-v8a.apk
|
||||
mv $(find chromium/src/out/release -name '*armeabi-v7a.apk') $VERSION-${{ env.unix_time }}-armeabi-v7a.apk
|
||||
|
||||
|
|
@ -63,5 +66,14 @@ jobs:
|
|||
name: v${{ env.VERSION }}
|
||||
tag_name: v${{ env.VERSION }}
|
||||
files: |
|
||||
${{ env.VERSION }}-${{ env.unix_time }}-arm64-v8a.aab
|
||||
${{ env.VERSION }}-${{ env.unix_time }}-arm64-v8a.apk
|
||||
${{ env.VERSION }}-${{ env.unix_time }}-armeabi-v7a.apk
|
||||
|
||||
- name: Attest
|
||||
uses: actions/attest-build-provenance@v4
|
||||
with:
|
||||
subject-path: |
|
||||
${{ env.VERSION }}-${{ env.unix_time }}-arm64-v8a.aab
|
||||
${{ env.VERSION }}-${{ env.unix_time }}-arm64-v8a.apk
|
||||
${{ env.VERSION }}-${{ env.unix_time }}-armeabi-v7a.apk
|
||||
|
|
|
|||
3
.gitignore
vendored
|
|
@ -4,4 +4,5 @@ chromium/
|
|||
depot_tools/
|
||||
keys/
|
||||
|
||||
*.apk
|
||||
*.aab
|
||||
*.apk
|
||||
32
README.md
|
|
@ -5,20 +5,28 @@
|
|||
[](https://github.com/jqssun/android-helium-browser/actions/workflows/build.yml)
|
||||
[](https://github.com/jqssun/android-helium-browser/releases)
|
||||
|
||||
An experimental Chromium-based web browser for Android with extensions support, based on
|
||||
- [Helium](https://github.com/imputnet/helium) by [imput](https://github.com/imputnet), as well as
|
||||
A fully open-source experimental Chromium-based web browser for Android with extensions support, based on
|
||||
- [Vanadium](https://github.com/GrapheneOS/Vanadium) by [GrapheneOS](https://github.com/GrapheneOS)
|
||||
- [Helium](https://github.com/imputnet/helium) by [imput](https://github.com/imputnet) (future patches pending GPLv2 compatibility)
|
||||
|
||||
<img alt="Helium Browser for Android on Android Phone" src="https://github.com/user-attachments/assets/e48b7f55-c9db-4919-b398-bd0395a92af7" />
|
||||
<img alt="Helium Browser for Android" src="fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" />
|
||||
|
||||
## Usage
|
||||
|
||||
### Installing Extensions
|
||||
|
||||
Navigate to [Chrome Web Store](https://chromewebstore.google.com/), then enable **Desktop site** by selecting the menu button <kbd>⋮</kbd> in the top right corner and ensure the option is checked. Select **Okay** and proceed as normal if prompted with:
|
||||
Navigate to [Chrome Web Store](https://chromewebstore.google.com/), enable **Desktop site** by selecting the menu button <kbd>⋮</kbd> in the top right corner and ensure the option is checked. Select **Okay** and proceed as normal if prompted with:
|
||||
> The Chrome Web Store is only available on desktop.
|
||||
|
||||
Manifest V2 (MV2) extensions are supported. You can install [uBlock Origin from Chrome Web Store](https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm).
|
||||
|
||||
Once you select **Add to Chrome**, [the extension will be installed in the background](https://support.google.com/chrome_webstore/answer/2664769) until the button changes into **Remove from Chrome**.
|
||||
Once you select **Add to Chrome**, [the extension will be installed in the background](https://support.google.com/chrome_webstore/answer/2664769) until the button changes to **Remove from Chrome**.
|
||||
|
||||
### Using Extensions
|
||||
|
||||
To use [an extension's popup](https://developer.chrome.com/docs/extensions/develop/ui/add-popup), open extensions menu, select the menu button <kbd>⋮</kbd> next to the extension, and choose **Pin to toolbar** from the list. You can then open the popup using the extension's dedicated toolbar icon.
|
||||
|
||||
To run an extension in Incognito (OTR) mode, go to **Manage extensions**, find the extension you want to use in Incognito mode, select **Details**, and turn on **Allow in Incognito**.
|
||||
|
||||
### Debug URLs
|
||||
|
||||
|
|
@ -72,16 +80,20 @@ flowchart TD
|
|||
style n8 stroke:#FF6D00
|
||||
```
|
||||
|
||||
The full build aims to be consistent with [Helium](https://github.com/imputnet/helium-linux), which means additional patches are necessary before all features can be ported over. All [Vanadium](https://github.com/GrapheneOS/Vanadium) patches are applied by default. Further patches are underway.
|
||||
All [Vanadium](https://github.com/GrapheneOS/Vanadium) patches are applied by default. While the full build aims to be consistent with [Helium](https://github.com/imputnet/helium-linux), downstream implementation of Helium patches is currently paused to ensure strict compliance with upstream licensing requirements. The diagram reflects the architecture of initial ported releases and serves as the target framework if resolution is achieved.
|
||||
|
||||
## Building
|
||||
|
||||
All releases are built using [Actions](https://github.com/features/actions). Current releases can also be attested using [GitHub CLI](https://github.com/cli/cli).
|
||||
|
||||
```shell
|
||||
gh attestation verify *.apk -R jqssun/android-helium-browser
|
||||
```
|
||||
|
||||
This repository provides the build script to compile on the latest Ubuntu, and may also work with other Linux distributions.
|
||||
|
||||
To build these releases yourself via CI (e.g. GitHub Actions), fork this repository. Supply your `base64` encoded `keystore.jks` and `local.properties` (containing your `keyAlias`, `keyPassword` and `storePassword`) to [**Repository secrets**](https://github.com/jqssun/android-helium-browser/blob/main/.github/workflows/build.yml#L28-L29) under **Settings** > **Secrets and variables** > **Actions**. To generate a release, go to **Actions**, select **Build**, and select **Run workflow**. Under **Runner**, you can either use a GitHub-hosted runner by entering `ubuntu-latest`, or `self-hosted` for your own hardware.
|
||||
To build these releases yourself via CI (e.g. GitHub Actions), fork this repository. Supply your `base64` encoded `keystore.jks` and `local.properties` (containing your `keyAlias`, `keyPassword` and `storePassword`) to [**Repository secrets**](https://github.com/jqssun/android-helium-browser/blob/main/.github/workflows/build.yml#L49-L50) under **Settings** > **Secrets and variables** > **Actions**. To generate a release, go to **Actions**, select **Build**, and select **Run workflow**. Under **Runner**, you can either use a GitHub-hosted runner by entering `ubuntu-latest`, or `self-hosted` for your own hardware.
|
||||
|
||||
## Credits
|
||||
|
||||
This project would not have been possible without the huge community contributions from [Helium](https://github.com/imputnet/helium), [Vanadium](https://github.com/GrapheneOS/Vanadium), as well as [ungoogled-chromium](https://github.com/ungoogled-software/ungoogled-chromium) and various other upstream projects.
|
||||
|
||||
All credit goes to the original authors and contributors. This project is named to reflect support for [Helium's](https://helium.computer) naming in a recent controversy.
|
||||
This project would not have been possible without the huge community contributions from [Vanadium](https://github.com/GrapheneOS/Vanadium), [Helium](https://github.com/imputnet/helium), as well as [ungoogled-chromium](https://github.com/ungoogled-software/ungoogled-chromium) and various other upstream projects. All credit goes to the original authors and contributors. This project started around the same time as [Helium Browser for Linux](https://github.com/imputnet/helium-linux) but it is not officially affiliated with the upstream [Helium](https://github.com/imputnet/helium) project.
|
||||
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
|
||||
79
build.sh
|
|
@ -5,7 +5,7 @@ export VERSION=$(grep -m1 -o '[0-9]\+\(\.[0-9]\+\)\{3\}' vanadium/args.gn)
|
|||
export CHROMIUM_SOURCE=https://chromium.googlesource.com/chromium/src.git # https://github.com/chromium/chromium.git
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y sudo lsb-release file nano git curl python3 python3-pillow
|
||||
sudo apt-get install -y sudo lsb-release file nano git curl python3 python3-pillow imagemagick
|
||||
|
||||
# https://github.com/uazo/cromite/blob/master/tools/images/chr-source/prepare-build.sh
|
||||
git clone --depth 1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||
|
|
@ -14,7 +14,7 @@ mkdir -p chromium/src/out/Default; cd chromium
|
|||
gclient root; cd src
|
||||
git init
|
||||
git remote add origin $CHROMIUM_SOURCE
|
||||
git fetch --depth 2 $CHROMIUM_SOURCE +refs/tags/$VERSION:chromium_$VERSION
|
||||
git fetch --depth 1 $CHROMIUM_SOURCE +refs/tags/$VERSION:chromium_$VERSION
|
||||
git checkout $VERSION
|
||||
export COMMIT=$(git show-ref -s $VERSION | head -n1)
|
||||
cat > ../.gclient <<EOF
|
||||
|
|
@ -38,6 +38,9 @@ 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/*component-updates.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"
|
||||
|
|
@ -54,75 +57,23 @@ 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 '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 '/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
|
||||
: << TOOLBAR_PHONE
|
||||
sed -i '/<ViewStub/{N;N;N;N;N;N; /optional_button_stub/a\
|
||||
\
|
||||
<ViewStub\
|
||||
android:id="@+id/extension_toolbar_container_stub"\
|
||||
android:inflatedId="@+id/extension_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/extension_toolbar_baseline_width">600dp/extension_toolbar_baseline_width">0dp/' chrome/browser/ui/android/extensions/java/res/values/dimens.xml
|
||||
TOOLBAR_PHONE
|
||||
source $SCRIPT_DIR/patch.sh
|
||||
|
||||
cat > out/Default/args.gn <<EOF
|
||||
chrome_public_manifest_package = "io.github.jqssun.helium"
|
||||
is_desktop_android = true
|
||||
target_os = "android"
|
||||
target_cpu = "arm64"
|
||||
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 = false
|
||||
build_contextual_search = false
|
||||
build_with_tflite_lib = true
|
||||
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
|
||||
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
|
||||
autoninja -C out/Default chrome_public_apk
|
||||
mkdir -p out/tmp out/release
|
||||
mv $(find out/Default/apks -name 'Chrome*.apk') out/tmp/$VERSION-arm64-v8a.apk
|
||||
|
||||
sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install -y libgcc-s1:i386
|
||||
sed -i 's/target_cpu = "arm64"/target_cpu = "arm"/' out/Default/args.gn
|
||||
autoninja -C out/Default chrome_public_apk
|
||||
mv $(find out/Default/apks -name 'Chrome*.apk') out/tmp/$VERSION-armeabi-v7a.apk
|
||||
|
||||
sed -i 's/target_cpu = "arm"/target_cpu = "arm64"/' out/Default/args.gn
|
||||
autoninja -C out/Default chrome_public_apk chrome_public_bundle
|
||||
mv $(find out/Default/apks -name 'Chrome*.apk') out/tmp/$VERSION-arm64-v8a.apk
|
||||
mv $(find out/Default/apks -name 'Chrome*.aab') out/tmp/$VERSION-arm64-v8a.aab
|
||||
|
||||
export PATH=$PWD/third_party/jdk/current/bin/:$PATH
|
||||
export ANDROID_HOME=$PWD/third_party/android_sdk/public
|
||||
sign_apk out/tmp/$VERSION-arm64-v8a.apk out/release/$VERSION-arm64-v8a.apk
|
||||
sign_apk out/tmp/$VERSION-armeabi-v7a.apk out/release/$VERSION-armeabi-v7a.apk
|
||||
sign_apk out/tmp/$VERSION-arm64-v8a.apk out/release/$VERSION-arm64-v8a.apk
|
||||
sign_aab out/tmp/$VERSION-arm64-v8a.aab out/release/$VERSION-arm64-v8a.aab
|
||||
rm -rf $SCRIPT_DIR/keys
|
||||
|
|
|
|||
|
|
@ -18,3 +18,8 @@ sign_apk() {
|
|||
source $SCRIPT_DIR/keys/local.properties
|
||||
$apksigner sign -verbose -ks $SCRIPT_DIR/keys/test.jks --ks-pass pass:$storePassword --key-pass pass:$keyPassword --ks-key-alias $keyAlias --out $2 $1 || exit 1
|
||||
}
|
||||
|
||||
sign_aab() {
|
||||
source $SCRIPT_DIR/keys/local.properties
|
||||
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore $SCRIPT_DIR/keys/test.jks -storepass $storePassword -keypass $keyPassword -signedjar $2 $1 $keyAlias || exit 1
|
||||
}
|
||||
|
|
|
|||
9
fastlane/metadata/android/en-US/full_description.txt
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
A fully open-source experimental Chromium-based web browser for Android with extensions support.
|
||||
|
||||
- Installing Extensions: Navigate to Chrome Web Store, enable "Desktop site", and then proceed as normal. Manifest V2 (MV2) extensions are supported. You can install uBlock Origin from Chrome Web Store.
|
||||
|
||||
- Using Extensions: To use an extension's popup, open extensions menu, select the menu button next to the extension, and choose "Pin to toolbar" from the list. You can then open the popup using the extension's dedicated toolbar icon. To run an extension in Incognito (OTR) mode, go to "Manage extensions", find the extension you want to use in Incognito mode, select "Details", and turn on "Allow in Incognito".
|
||||
|
||||
- Debug URLs: To view and access them, use "chrome://chrome-urls".
|
||||
|
||||
- WebRTC IP Policy: Available under "Privacy and security" in Settings. If you experience issues with WebRTC due to IPs being shielded by default, you may try to change it to Default public interface only, or Default.
|
||||
BIN
fastlane/metadata/android/en-US/images/featureGraphic.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/1.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/2.png
Normal file
|
After Width: | Height: | Size: 335 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/3.png
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/4.png
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/5.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/6.png
Normal file
|
After Width: | Height: | Size: 414 KiB |
1
fastlane/metadata/android/en-US/short_description.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Private and secure open-source Android browser with support for extensions
|
||||
96
patch.sh
Executable file
|
|
@ -0,0 +1,96 @@
|
|||
#!/bin/bash
|
||||
|
||||
mkdir -p chrome/android/java/res_helium_base
|
||||
for icon in $(find chrome/android/java/res_helium_base -type f -name '*.png'); do convert $icon -fill navy -tint 36 $icon; done
|
||||
# sed -i 's|Google LLC|jqssun, Google LLC|' chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
|
||||
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 '/BASE_FEATURE(kTaskManagerClank,/,/);/ s/base::FEATURE_DISABLED_BY_DEFAULT/base::FEATURE_ENABLED_BY_DEFAULT/' chrome/browser/task_manager/common/task_manager_features.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
|
||||
sed -i 's|boolean shouldShowDeveloperMenu() {|boolean shouldShowDeveloperMenu() { if (true) return DevToolsWindowAndroid.isDevToolsAllowedFor(getProfile(), mItemDelegate.getWebContents());|' chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
sed -i 's|TabUtils.isUsingDesktopUserAgent(mItemDelegate.getWebContents())|(true \|\| TabUtils.isUsingDesktopUserAgent(mItemDelegate.getWebContents()))|' chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.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
|
||||
sed -i 's/api::webstore_private::MV2DeprecationStatus::kHardDisable)));/api::webstore_private::MV2DeprecationStatus::kNone)));/' chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
|
||||
sed -i 's/bool g_allow_mv2_for_testing = false;/bool g_allow_mv2_for_testing = true;/' extensions/browser/manifest_v2_experiment_manager.cc
|
||||
|
||||
# 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
|
||||
sed -i '/\/\/ Draw the signin button if visible./i\ { View extContainer = findViewById(R.id.extensions_toolbar_container); if (extContainer != null \&\& extContainer.getVisibility() != View.GONE \&\& extContainer.getWidth() != 0) { canvas.save(); ViewUtils.translateCanvasToView(mToolbarButtonsContainer, extContainer, canvas); extContainer.draw(canvas); canvas.restore(); } }' chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarPhone.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
|
||||
|
||||
# ext: priority
|
||||
sed -i 's|host_contents_->SetColorProviderSource(NoOpColorProviderSource::Get());|&\nhost_contents_->SetPrimaryPageImportance(content::ChildProcessImportance::IMPORTANT, content::ChildProcessImportance::NORMAL);|' extensions/browser/extension_host.cc
|
||||
|
||||
# ext: perms prompt
|
||||
sed -i '/content::WebContents\* web_contents = show_params->GetParentWebContents();/,/DCHECK(view_android);/{/GetParentWebContents/!d}' chrome/browser/ui/android/extensions/extension_install_dialog_view_android.cc
|
||||
sed -i 's|view_android->GetWindowAndroid();|show_params->GetParentWindow();|' chrome/browser/ui/android/extensions/extension_install_dialog_view_android.cc
|
||||
|
||||
# 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
|
||||
for file in components/omnibox/browser/autocomplete_match.h components/omnibox/browser/autocomplete_match.cc components/omnibox/browser/actions/omnibox_action.h components/omnibox/browser/location_bar_model_impl.cc components/omnibox/browser/location_bar_model_util.cc; do
|
||||
sed -i '/#include "build\/build_config.h"/i #include "build/android_buildflags.h"' $file
|
||||
sed -i 's/#if (!BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_VR)) && !BUILDFLAG(IS_IOS)/#if (!BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_VR) || BUILDFLAG(IS_DESKTOP_ANDROID)) \&\& !BUILDFLAG(IS_IOS)/' $file
|
||||
done
|
||||
|
||||
# crbug.com/40831291: bottom address bar
|
||||
sed -i 's@(idealFitsBelow && spaceBelowAnchor >= spaceAboveAnchor) || !idealFitsAbove;@(idealFitsBelow == idealFitsAbove) ? (spaceBelowAnchor >= spaceAboveAnchor) : idealFitsBelow;@' ui/android/java/src/org/chromium/ui/widget/PopupSpecCalculator.java
|
||||
|
||||
# crbug.com/404069963: ntp override
|
||||
sed -i '/feature_overrides.EnableFeature(chrome::android::kChromeNativeUrlOverriding);/d' chrome/browser/chrome_browser_field_trials.cc
|
||||
sed -i 's|newCachedFlag(CHROME_NATIVE_URL_OVERRIDING, BuildConfig.IS_DESKTOP_ANDROID)|newCachedFlag(CHROME_NATIVE_URL_OVERRIDING, false)|' chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
||||
|
||||
# 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
|
||||
2
vanadium
|
|
@ -1 +1 @@
|
|||
Subproject commit 14fc123ea514a06e7de2cb2aabe9b4719a827a3f
|
||||
Subproject commit 6f3faec0acc5d003cf1c2374d555062cfe3b757f
|
||||