Compare commits

..
Author SHA1 Message Date
Carmelo Messina cc1a82b970 Patches for 134.0.6998.178 2025-03-28 09:47:00 +01:00
1760 changed files with 304372 additions and 170466 deletions
+1 -2
View File
@@ -1,2 +1 @@
*.zip binary
*.pdf binary
*.zip binary
-1
View File
@@ -93,7 +93,6 @@ body:
multiple: false
description: What version of Android are you running?
options:
- Android 16
- Android 15
- Android 14
- Android 13
+31 -31
View File
@@ -148,36 +148,6 @@ jobs:
fi
fi
- name: Create issue ${{ env.VERSION }}
if: "${{ env.NEW_VERSION != '' }}"
shell: bash
run: |
GH=../../gh_2.18.1_linux_amd64/bin/gh
wget https://github.com/cli/cli/releases/download/v2.18.1/gh_2.18.1_linux_amd64.tar.gz
tar xfz gh_2.18.1_linux_amd64.tar.gz
cd cromite/tools
echo ${{ secrets.GITHUB_TOKEN }} | $GH auth login --with-token
echo Custom Release $CHR_VERSION >body.txt
if [[ "$LATEST_WIN" == "$CHR_VERSION" ]]; then
echo Using Windows Release >body.txt
echo "\`\`\`" >>body.txt
curl -s 'https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Windows&num=10&offset=0' | \
jq --arg LATEST "$LATEST_WIN" '.[] | select( .version == $LATEST )' >>body.txt
echo "\`\`\`" >>body.txt
fi
if [[ "$LATEST_ANDROID" == "$CHR_VERSION" ]]; then
echo Using Android Release >body.txt
echo "\`\`\`" >>body.txt
curl -s 'https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Android&num=10&offset=0' | \
jq --arg LATEST "$LATEST_ANDROID" '.[] | select( .version == $LATEST )' >>body.txt
echo "\`\`\`" >>body.txt
fi
$GH issue create -t "$CHR_VERSION: new chromium version" -F body.txt
- name: Update files under control
shell: bash
run: |
@@ -226,4 +196,34 @@ jobs:
title: '[AUTO][FILECONTROL] - version ${{ env.NEW_VERSION }}'
body: ${{ env.MESSAGE }}
delete-branch: true
branch-suffix: short-commit-hash
branch-suffix: short-commit-hash
- name: Create issue ${{ env.VERSION }}
if: "${{ env.NEW_VERSION != '' }}"
shell: bash
run: |
GH=../../gh_2.18.1_linux_amd64/bin/gh
wget https://github.com/cli/cli/releases/download/v2.18.1/gh_2.18.1_linux_amd64.tar.gz
tar xfz gh_2.18.1_linux_amd64.tar.gz
cd cromite/tools
echo ${{ secrets.GITHUB_TOKEN }} | $GH auth login --with-token
echo Custom Release $CHR_VERSION >body.txt
if [[ "$LATEST_WIN" == "$CHR_VERSION" ]]; then
echo Using Windows Release >body.txt
echo "\`\`\`" >>body.txt
curl -s 'https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Windows&num=10&offset=0' | \
jq --arg LATEST "$LATEST_WIN" '.[] | select( .version == $LATEST )' >>body.txt
echo "\`\`\`" >>body.txt
fi
if [[ "$LATEST_ANDROID" == "$CHR_VERSION" ]]; then
echo Using Android Release >body.txt
echo "\`\`\`" >>body.txt
curl -s 'https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Android&num=10&offset=0' | \
jq --arg LATEST "$LATEST_ANDROID" '.[] | select( .version == $LATEST )' >>body.txt
echo "\`\`\`" >>body.txt
fi
$GH issue create -t "$CHR_VERSION: new chromium version" -F body.txt
@@ -111,6 +111,7 @@ jobs:
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/chr_arm64:/home/lg/working_dir/chromium/src/out/chr_arm64
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/chr_x64:/home/lg/working_dir/chromium/src/out/chr_x64
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/x64_webview:/home/lg/working_dir/chromium/src/out/x64_webview
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/arm64_webview:/home/lg/working_dir/chromium/src/out/arm64_webview
- /tmp/proxy:/tmp/proxy
- /win_sdk:/win_sdk
@@ -128,7 +129,7 @@ jobs:
http_proxy=
https_proxy=
# setup folder permissions
# set out folder permissions
test -d chromium/src/out/chr_arm || sudo mkdir -p chromium/src/out/chr_arm && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/chr_arm
@@ -144,11 +145,11 @@ jobs:
test -d chromium/src/out/x64_webview || sudo mkdir -p chromium/src/out/x64_webview && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/x64_webview
sudo chown lg /home/lg/working_dir
test -d /github/home/.config/depot_tools || sudo mkdir -p /github/home/.config/depot_tools
sudo chown lg /github/home/.config/depot_tools
test -d chromium/src/out/arm64_webview || sudo mkdir -p chromium/src/out/arm64_webview && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/arm64_webview
sudo mkdir -p /run/user/1000/
sudo chown lg /run/user/1000/
sudo chmod g-rxw /run/user/1000/
@@ -176,9 +177,27 @@ jobs:
gn args out/x64_webview/ --list >out/x64_webview/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/x64_webview system_webview_apk system_webview_shell --offline
ninja -C out/x64_webview system_webview_apk system_webview_shell
cp ../../cromite/build/RELEASE out/x64_webview
- name: Build Cromite System WebView arm64
shell: bash
run: |
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"android\" target_cpu = \"arm64\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) system_webview_package_name=\"com.android.webview\" enable_trybot_verification=false " out/arm64_webview
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/arm64_webview/ --list --short
gn args out/arm64_webview/ --list >out/arm64_webview/gn_list
echo "::endgroup::"
ninja -C out/arm64_webview system_webview_apk system_webview_shell
cp ../../cromite/build/RELEASE out/arm64_webview
- name: Prepare Build Container for vanilla chromium
shell: bash
run: |
@@ -205,7 +224,7 @@ jobs:
gn args out/chr_x64/ --list >out/chr_x64/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/chr_x64 chrome_public_apk --offline
ninja -C out/chr_x64 chrome_public_apk
cp ../../cromite/build/RELEASE out/chr_x64
@@ -224,7 +243,7 @@ jobs:
gn args out/chr_arm64/ --list >out/chr_arm64/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/chr_arm64 chrome_public_apk --offline
ninja -C out/chr_arm64 chrome_public_apk
cp ../../cromite/build/RELEASE out/chr_arm64
@@ -243,6 +262,6 @@ jobs:
gn args out/chr_arm/ --list >out/chr_arm/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/chr_arm chrome_public_apk --offline
ninja -C out/chr_arm chrome_public_apk
cp ../../cromite/build/RELEASE out/chr_arm
+31 -62
View File
@@ -177,15 +177,14 @@ jobs:
USELOCALIMAGE: true # CUSTOM RUNNER: permit use of local images
USEINTERNALNETWORK: true # CUSTOM RUNNER: create the docker network as internal
WORKSPACE: /home/lg/working_dir
HOME: /home/lg/working_dir
# kythe
KYTHE_CORPUS: chromium.googlesource.com/chromium/src
KYTHE_ROOT_DIRECTORY: /home/lg/working_dir/chromium/src
KYTHE_OUTPUT_DIRECTORY: /home/lg/working_dir/chromium/src/out/arm64/kythe
# cross build (change also release.yaml)
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/sdks/Win11SDK_10.0.26100.0/
WINDOWSSDKDIR: "/win_sdk/sdks/Win11SDK_10.0.26100.0/Windows Kits/10/"
GYP_MSVS_OVERRIDE_PATH: /win_sdk/sdks/Win11SDK_10.0.26100.0/
# cross build
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/sdks/Win11SDK_10.0.22621.2428/
WINDOWSSDKDIR: "/win_sdk/sdks/Win11SDK_10.0.22621.2428/Windows Kits/10/"
GYP_MSVS_OVERRIDE_PATH: /win_sdk/sdks/Win11SDK_10.0.22621.2428/
# compile in debug mode
TARGET_ISDEBUG: ${{ github.event.inputs.debug }}
TARGET_OS: ${{ github.event.inputs.target_os }}
@@ -198,7 +197,6 @@ jobs:
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/x64:/home/lg/working_dir/chromium/src/out/x64
- /storage/images/${{ github.event.inputs.sha }}/linux/${{ github.event.inputs.debug }}/lin64:/home/lg/working_dir/chromium/src/out/lin64
- /storage/images/${{ github.event.inputs.sha }}/win/x64:/home/lg/working_dir/chromium/src/out/win64
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/arm64_webview:/home/lg/working_dir/chromium/src/out/arm64_webview
- /tmp/proxy:/tmp/proxy
- /win_sdk:/win_sdk
@@ -216,7 +214,7 @@ jobs:
http_proxy=
https_proxy=
# setup folder permissions
# set out folder permissions
test -d chromium/src/out/arm || sudo mkdir -p chromium/src/out/arm && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/arm
@@ -236,14 +234,6 @@ jobs:
test -d chromium/src/out/lin64 || sudo mkdir -p chromium/src/out/lin64 && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/lin64
test -d chromium/src/out/arm64_webview || sudo mkdir -p chromium/src/out/arm64_webview && \
sudo chown lg chromium/src/out &&
sudo chown lg chromium/src/out/arm64_webview
sudo chown lg /home/lg/working_dir
test -d /github/home/.config/depot_tools || sudo mkdir -p /github/home/.config/depot_tools
sudo chown lg /github/home/.config/depot_tools
# make kythe output directory
test -d $KYTHE_OUTPUT_DIRECTORY || mkdir -p $KYTHE_OUTPUT_DIRECTORY
@@ -260,9 +250,6 @@ jobs:
gpg --homedir ./ -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch cromite.keystore.asc > cromite.keystore
echo "::endgroup::"
# bootstrap python3 for gn
echo ../../../../../usr/bin >$WORKSPACE/depot_tools/python3_bin_reldir.txt
- name: Build Cromite Android x64
if: ${{ (github.event.inputs.target_os == 'android' || github.event.inputs.target_os == 'all') && (github.event.inputs.build == 'x64' || github.event.inputs.build == 'all') }}
shell: bash
@@ -271,16 +258,16 @@ jobs:
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"x64\" " out/x64 || true
gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"x64\" " out/x64
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/x64/ --list --short || true
gn args out/x64/ --list >out/x64/gn_list || true
gn args out/x64/ --list --short
gn args out/x64/ --list >out/x64/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/x64 chrome_public_bundle --offline
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/x64 chrome_public_apk --offline
ninja -C out/x64 chrome_public_bundle
ninja -C out/x64 chrome_public_apk
cp ../../cromite/build/RELEASE out/x64
@@ -300,15 +287,15 @@ jobs:
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"win\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"x64\" " out/win64 || true
gn gen --args="target_os = \"win\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"x64\" " out/win64
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/win64/ --list --short || true
gn args out/win64/ --list >out/win64/gn_list || true
gn args out/win64/ --list --short
gn args out/win64/ --list >out/win64/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/win64 chrome --offline
ninja -C out/win64 chrome
cp ../../cromite/build/RELEASE out/win64
@@ -328,16 +315,16 @@ jobs:
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"arm64\" " out/arm64 || true
gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"arm64\" " out/arm64
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/arm64/ --list --short || true
gn args out/arm64/ --list >out/arm64/gn_list || true
gn args out/arm64/ --list --short
gn args out/arm64/ --list >out/arm64/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm64 chrome_public_bundle --offline
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm64 chrome_public_apk --offline
ninja -C out/arm64 chrome_public_bundle
ninja -C out/arm64 chrome_public_apk
cp ../../cromite/build/RELEASE out/arm64
@@ -357,7 +344,7 @@ jobs:
cd $WORKSPACE/chromium/src
echo "::group::-------- generating breakpad symbols"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm64 minidump_stackwalk dump_syms --offline
ninja -C out/arm64 minidump_stackwalk dump_syms
components/crash/content/tools/generate_breakpad_symbols.py --build-dir=out/arm64 \
--symbols-dir=out/arm64/symbols/ --binary=out/arm64/lib.unstripped/libchrome.so \
--platform=android --clear --verbose
@@ -373,7 +360,7 @@ jobs:
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
vpython3 tools/binary_size/libsupersize/main.py archive out/arm64/chrome.size --apk-file out/arm64/apks/ChromePublic.apk -v
tools/binary_size/supersize archive out/arm64/chrome.size --apk-file out/arm64/apks/ChromePublic.apk -v
- name: Build Cromite Android arm
if: ${{ (github.event.inputs.target_os == 'android' || github.event.inputs.target_os == 'all') && (github.event.inputs.build == 'arm' || github.event.inputs.build == 'all') }}
@@ -383,16 +370,16 @@ jobs:
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"arm\" " out/arm || true
gn gen --args="target_os = \"android\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"arm\" " out/arm
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/arm/ --list --short || true
gn args out/arm/ --list >out/arm/gn_list || true
gn args out/arm/ --list --short
gn args out/arm/ --list >out/arm/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm chrome_public_bundle --offline
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm chrome_public_apk --offline
ninja -C out/arm chrome_public_bundle
ninja -C out/arm chrome_public_apk
cp ../../cromite/build/RELEASE out/arm
@@ -412,15 +399,15 @@ jobs:
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"linux\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"x64\" " out/lin64 || true
gn gen --args="target_os = \"linux\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) target_cpu = \"x64\" " out/lin64
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/lin64/ --list --short || true
gn args out/lin64/ --list >out/lin64/gn_list || true
gn args out/lin64/ --list --short
gn args out/lin64/ --list >out/lin64/gn_list
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/lin64 chrome chrome_sandbox --offline
ninja -C out/lin64 chrome chrome_sandbox
cp ../../cromite/build/RELEASE out/lin64
@@ -432,24 +419,6 @@ jobs:
$WORKSPACE/ninjatracing/ninjatracing -a $WORKSPACE/chromium/src/out/lin64/.ninja_log >$WORKSPACE/chromium/src/out/lin64/ninja_log_trace.json
python3 $WORKSPACE/chromium/src/third_party/catapult/tracing/bin/trace2html $WORKSPACE/chromium/src/out/lin64/ninja_log_trace.json
- name: Build Cromite System WebView arm64
shell: bash
run: |
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
cd $WORKSPACE/chromium/src
echo "::group::-------- gn gen"
gn gen --args="target_os = \"android\" target_cpu = \"arm64\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) system_webview_package_name=\"com.android.webview\" enable_trybot_verification=false " out/arm64_webview || true
echo "::endgroup::"
echo "::group::-------- gn args"
gn args out/arm64_webview/ --list --short || true
gn args out/arm64_webview/ --list >out/arm64_webview/gn_list || true
echo "::endgroup::"
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm64_webview system_webview_apk system_webview_shell --offline
cp ../../cromite/build/RELEASE out/arm64_webview
- name: Generate clangd index for Android arm64
if: ${{ github.event.inputs.clangd == 'true' }}
shell: bash
@@ -462,5 +431,5 @@ jobs:
gn gen --args="import(\"/home/lg/working_dir/cromite/build/cromite.gn_args\") $(cat ../../build_args.gni) skip_clangd_unsupported_options = true" out/clangd && \
$WORKSPACE/ninja/ninja -C $WORKSPACE/chromium/src/out/clangd -a chrome_public_apk \
-t compdb cc cxx objc objcxx >$WORKSPACE/chromium/src/out/clangd/compile_commands.json && \
/home/lg/working_dir/clangd_snapshot_20250518/bin/clangd-indexer --executor=all-TUs out/clangd/compile_commands.json >out/arm64/cromite.idx && \
/home/lg/working_dir/clangd_snapshot_20211205/bin/clangd-indexer --executor=all-TUs out/clangd/compile_commands.json >out/arm64/cromite.idx && \
rm -rf out/clangd
+3
View File
@@ -1,6 +1,9 @@
name: 'Check NIST database'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
permissions:
+8 -19
View File
@@ -37,7 +37,6 @@ jobs:
OUTPUTFILE_X64: /storage/images/${{ github.event.inputs.sha }}/android/false/x64/
OUTPUTFILE_WIN: /storage/images/${{ github.event.inputs.sha }}/win/x64/
OUTPUTFILE_LIN: /storage/images/${{ github.event.inputs.sha }}/linux/false/lin64/
OUTPUTFILE_WV_ARM64: /storage/images/${{ github.event.inputs.sha }}/android/false/arm64_webview/
steps:
- name: Login to Docker Hub
@@ -131,9 +130,10 @@ jobs:
cp $OUTPUTFILE_WIN/chrome_proxy.exe chrome-win/
cp $OUTPUTFILE_WIN/chrome_pwa_launcher.exe chrome-win/
cp $OUTPUTFILE_WIN/chrome_wer.dll chrome-win/
cp "/win_sdk/sdks/Win11SDK_10.0.26100.0/Windows Kits/10/Redist/D3D/x64/d3dcompiler_47.dll" chrome-win/
cp "/win_sdk/10.0.22621.0/Windows Kits/10/Redist/D3D/x64/d3dcompiler_47.dll" chrome-win/
cp $OUTPUTFILE_WIN/elevation_service.exe chrome-win/
cp "$OUTPUTFILE_WIN/First Run" chrome-win/
cp $OUTPUTFILE_WIN/headless_lib_data.pak chrome-win/
cp $OUTPUTFILE_WIN/icudtl.dat chrome-win/
cp $OUTPUTFILE_WIN/libEGL.dll chrome-win/
cp $OUTPUTFILE_WIN/libGLESv2.dll chrome-win/
@@ -155,10 +155,6 @@ jobs:
$GH release upload $VERSION-$CROMITE_SHA chrome-win.zip
echo "::endgroup::"
TIMESTAMP=$(date +%s -r chrome-win.zip)
echo >updateurl.txt "browser=chromium;os=windows;architecture=64-bit;timestamp=$TIMESTAMP;editor=uazo;channel=stable;repository=https://github.com/uazo/cromite/releases;download=https://github.com/uazo/cromite/releases/latest/download/chrome-win.zip;version=$(cat $OUTPUTFILE_WIN/RELEASE);revision=1;commit=$CROMITE_SHA"
$GH release upload $VERSION-$CROMITE_SHA updateurl.txt
## linux
echo "::group::-------- linux x64"
mkdir chrome-lin/
@@ -188,7 +184,6 @@ jobs:
$GH release upload $VERSION-$CROMITE_SHA chrome-lin64.tar.gz
echo "::endgroup::"
# android arm64 symbols
echo "::group::-------- arm64 symbols"
zip arm64_symbols.zip ${{ env.OUTPUTFILE_ARM64 }}/dump_syms \
${{ env.OUTPUTFILE_ARM64 }}/minidump_stackwalk \
@@ -196,18 +191,9 @@ jobs:
$GH release upload $VERSION-$CROMITE_SHA arm64_symbols.zip
echo "::endgroup::"
# android arm64
echo "::group::-------- android systemwebview arm64"
sudo cp ${{ env.OUTPUTFILE_WV_ARM64 }}/apks/SystemWebView.apk arm64_SystemWebView.apk
sudo chown runner arm64_SystemWebView.apk
sudo cp ${{ env.OUTPUTFILE_WV_ARM64 }}/apks/SystemWebViewShell.apk arm64_SystemWebViewShell.apk
sudo chown runner arm64_SystemWebViewShell.apk
echo Uploading arm64_SystemWebView
$GH release upload $VERSION-$CROMITE_SHA arm64_SystemWebView.apk
$GH release upload $VERSION-$CROMITE_SHA arm64_SystemWebViewShell.apk
echo "::endgroup::"
TIMESTAMP=$(date +%s -r chrome-win.zip)
echo >updateurl.txt "browser=chromium;os=windows;architecture=64-bit;timestamp=$TIMESTAMP;editor=uazo;channel=stable;repository=https://github.com/uazo/cromite/releases;download=https://github.com/uazo/cromite/releases/latest/download/chrome-win.zip;version=$(cat $OUTPUTFILE_WIN/RELEASE);revision=1;commit=$CROMITE_SHA"
$GH release upload $VERSION-$CROMITE_SHA updateurl.txt
$GH release edit $VERSION-$CROMITE_SHA -t $VERSION-$CROMITE_SHA
@@ -215,4 +201,7 @@ jobs:
$GH release edit $VERSION-$CROMITE_SHA --draft=false
fi
VERSION=$(cat ${{ env.OUTPUTFILE_ARM64 }}/RELEASE)
docker push uazo/cromite:$VERSION-$CROMITE_SHA
docker push uazo/cromite-build:$VERSION-$CROMITE_SHA
@@ -24,6 +24,7 @@ jobs:
runs-on: ${{ github.event.inputs.type }}
env:
IS_DRAFT: ${{ github.event.inputs.draft }}
OUTPUTFILE_ARM64: /storage/images/${{ github.event.inputs.sha }}/android/false/arm64_webview/
OUTPUTFILE_X64: /storage/images/${{ github.event.inputs.sha }}/android/false/x64_webview/
OUTPUTFILE_CHR_ARM64: /storage/images/${{ github.event.inputs.sha }}/android/false/chr_arm64/
OUTPUTFILE_CHR_ARM: /storage/images/${{ github.event.inputs.sha }}/android/false/chr_arm/
@@ -47,7 +48,7 @@ jobs:
- name: Create release
shell: bash
run: |
VERSION=v$(cat ${{ env.OUTPUTFILE_X64 }}/RELEASE)
VERSION=v$(cat ${{ env.OUTPUTFILE_ARM64 }}/RELEASE)
cd cromite/tools
@@ -57,6 +58,19 @@ jobs:
echo ${{ secrets.GITHUB_TOKEN }} | $GH auth login --with-token
# android arm64
echo "::group::-------- android systemwebview arm64"
sudo cp ${{ env.OUTPUTFILE_ARM64 }}/apks/SystemWebView.apk arm64_SystemWebView.apk
sudo chown runner arm64_SystemWebView.apk
sudo cp ${{ env.OUTPUTFILE_ARM64 }}/apks/SystemWebViewShell.apk arm64_SystemWebViewShell.apk
sudo chown runner arm64_SystemWebViewShell.apk
echo Uploading arm64_SystemWebView
$GH release upload $VERSION-$CROMITE_SHA arm64_SystemWebView.apk
$GH release upload $VERSION-$CROMITE_SHA arm64_SystemWebViewShell.apk
echo "::endgroup::"
# android x64
echo "::group::-------- android systemwebview x64"
sudo cp ${{ env.OUTPUTFILE_X64 }}/apks/SystemWebView.apk x64_SystemWebView.apk
+4 -9
View File
@@ -2,11 +2,6 @@ name: Update fdroid repo
on:
workflow_dispatch:
inputs:
type:
description: 'runner? [dev/ci]'
required: true
default: 'ci'
env:
REMOVEDOCKERSUPPORT: true
@@ -15,7 +10,7 @@ env:
jobs:
update-fdroid:
runs-on: ${{ github.event.inputs.type }}
runs-on: ci2
container:
image: uazo/fdroidserver:latest
@@ -37,9 +32,9 @@ jobs:
apt update
DEBIAN_FRONTEND=noninteractive apt update && apt install -y wget unzip
wget https://github.com/rclone/rclone/releases/download/v1.72.0/rclone-v1.72.0-linux-amd64.zip
unzip rclone-v1.72.0-linux-amd64.zip
export rclone=rclone-v1.72.0-linux-amd64/rclone
wget https://github.com/rclone/rclone/releases/download/v1.64.0/rclone-v1.64.0-linux-amd64.zip
unzip rclone-v1.64.0-linux-amd64.zip
export rclone=rclone-v1.64.0-linux-amd64/rclone
mkdir -p ~/.config/rclone
echo "${{ secrets.RCLONE_CONF }}" > ~/.config/rclone/rclone.conf
+3 -11
View File
@@ -14,7 +14,7 @@
Cromite is a [Chromium](https://www.chromium.org/Home) fork based on [Bromite](https://github.com/bromite/bromite) with built-in support for ad blocking and an eye for privacy.
Cromite is available for Android arm64-v8a, arm32-v7a and x86_64, Android 10 and above, Windows and Linux 64bit.
Cromite is available for Android arm64-v8a, arm32-v7a and x86_64, Oreo and above (Minimum v8.0, API level 26), Windows and Linux 64bit.
# Goals
@@ -106,7 +106,7 @@ ChromiumUpdateUrl=https://github.com/uazo/cromite/releases/latest/download/updat
# Command line for Chromium (string):
# note --user-data-dir= works better if path is absolute
# See here: http://peter.sh/experiments/chromium-command-line-switches/
ChromiumCommandLine=--user-data-dir="%LOCALAPPDATA%\Cromite\User Data" --no-default-browser-check
ChromiumCommandLine=--user-data-dir="C:\Users\<my user>\AppData\Local\Cromite\User Data" --no-default-browser-check
# to enable full logging in c:\temp\log.txt (daily rotate, no automatic deletion)
# ChromiumCommandLine=--enable-logging --v=0 --log-file=C:\temp\log.txt --user-data-dir=".\User Data" --no-default-browser-check
@@ -133,7 +133,6 @@ you can activate (highly recommended) the 'RendererAppContainer' flag from the c
```
--enable-features=RendererAppContainer
```
In this case, it is also necessary to run icacls as indicated above.
### Auto-update setup for linux
working in progress in https://github.com/uazo/cromite/issues/771
@@ -186,14 +185,7 @@ thanks to [austinhuang0131](https://github.com/austinhuang0131) for the svg icon
# Donate
If you want, you can donate to support cromite development through [paypal](https://www.paypal.com/pools/c/9e5lO2OIzb).
Current link:
- https://www.paypal.com/pools/c/9hEHZ6tElk
Historical fundraisings links:
- https://www.paypal.com/pools/c/9cwNgAQhRL
- https://www.paypal.com/pools/c/9e5lO2OIzb
If you want, you can donate to support cromite development through [paypal](https://www.paypal.com/pools/c/9cwNgAQhRL).
# License
+1 -1
View File
@@ -1 +1 @@
147.0.7727.102
134.0.6998.178
-32
View File
@@ -1,32 +0,0 @@
)]}' {
"response": {
"server": "prod",
"protocol": "4.0",
"apps": [
{
"appid": "gcmjkmgdlgnkkcocmoeiminaijmmjnii",
"status": "ok",
"updatecheck": {
"status": "ok",
"nextversion": "1.0.0",
"pipelines": [
{
"operations": [
{
"type": "download",
"urls": [ { "url": "https://www.cromite.org/components/fonts_component.zip" } ],
"out": { "sha256": "22639FA1B21D9D95E6343A6A58028B224903D23BA404537584A22236FCFC3482" },
"size": 60716451
},
{
"type": "crx3",
"in": { "sha256": "22639FA1B21D9D95E6343A6A58028B224903D23BA404537584A22236FCFC3482" }
}
]
}
]
}
}
]
}
}
+23 -18
View File
@@ -4,10 +4,14 @@ build_contextual_search=false
build_with_tflite_lib=false
chrome_pgo_phase=0
dcheck_always_on=false
dfmify_dev_ui=false
disable_android_lint=true
disable_fieldtrial_testing_config=true
enable_gvr_services=false
enable_hangout_services_extension=false
enable_iterator_debugging=false
enable_mdns=false
enable_nacl=false
enable_remoting=false
enable_reporting=false
enable_vr=false
@@ -23,6 +27,8 @@ use_debug_fission=true
use_errorprone_java_compiler=false
use_official_google_api_keys=false
use_rtti=false
use_sysroot=false
webview_includes_weblayer=false
enable_arcore=false
enable_openxr=false
enable_cardboard=false
@@ -62,15 +68,30 @@ if (target_os == "android" || target_os == "win") {
# disable passthrough audio codecs
enable_platform_dts_audio = false
enable_passthrough_audio_codecs = false
# Do not compile libmonochrome.so with RELR relocations
# since supported only on API 28+
use_relr_relocations=false
# disabled the use of the context snapshot
# see https://github.com/uazo/cromite/pull/317 for context
use_v8_context_snapshot = false
# enable libjxl support by default
enable_jxl_decoder = false
# disable minikin engine
# see https://github.com/uazo/cromite/issues/697
use_minikin_hyphenation = false
# disable automatic update of sync-related cookies
# initial commit: https://source.chromium.org/chromium/chromium/src/+/fd9a841f7a63b9f5510f6b713d9c833d259c63ad
enable_bound_session_credentials = false
# Use LogErrorNotReached() for NOTREACHED_IN_MIGRATION()
enable_log_error_not_reached = true
# Allows building without //third_party/unrar included, for license reasons
safe_browsing_use_unrar = false
@@ -81,9 +102,6 @@ enable_request_header_integrity = false
# Disable precompiled headers because they are incompatible with the unsafe_buffers configuration
enable_precompiled_headers = false
# Disable TFLite with XNNPACK
build_tflite_with_xnnpack = false
declare_args() {
_is_debug_build = ""
build_webview = false
@@ -101,9 +119,6 @@ if (target_os == "android") {
chrome_pgo_phase = 2 # enable pgo
# do not split Developer UI split into a separate Dynamic Feature Module
dfmify_dev_ui = false
if (getenv("USE_KEYSTORE") != "") {
android_keystore_path = "/home/lg/working_dir/cromite.keystore"
android_keystore_name = "cromite"
@@ -112,8 +127,6 @@ if (target_os == "android") {
cromite_pref_hash_seed_bin = getenv("CROMITE_PREF_HASH_SEED_BIN")
disable_android_lint = true
_is_debug_build = getenv("TARGET_ISDEBUG")
if (_is_debug_build == "true") {
# print("Debug build on")
@@ -123,17 +136,7 @@ if (target_os == "android") {
symbol_level = 1
strip_debug_info = false
generate_linker_map = false
# Disable static analysis
android_static_analysis = "off"
# Turns off all V8 debug features. Disables running V8 in a pseudo debug mode
# bypass build error -5 in clang_x64/mksnapshot
v8_enable_debugging_features = false
v8_dcheck_always_on = false
} else {
include_both_v8_snapshots = false
include_both_v8_snapshots_android_secondary_abi = false
generate_linker_map = true
}
@@ -152,6 +155,7 @@ if (target_os == "win") {
enable_pdf = true
pdf_is_complete_lib = true
enable_plugins = true
enable_ppapi = false
chrome_pgo_phase = 2 # enable pgo
@@ -167,6 +171,7 @@ if (target_os == "linux") {
enable_pdf = true
pdf_is_complete_lib = true
enable_plugins = true
enable_ppapi = false
use_sysroot = true
chrome_pgo_phase = 2 # enable pgo
+22 -38
View File
@@ -1,14 +1,14 @@
Do-not-link-with-libatomic.patch
Force-use-vpython3-for-all-scripts.patch
Do-not-check-for-the-presence-of-use-remoteexec.patch
bromite-build-utils.patch
Add-cromite-flags-support.patch
Permit-PGO-for-debug-builds.patch
Fix-chromium-vanilla.patch
Final-patch-for-chromium-vanilla.patch
Restore-chrome-password-store.patch
Remove-EV-certificates.patch
do-not-hide-.orig-files.patch
do-not-add-suffix-to-package-name.patch
exit-on-failure-of-inclusion.patch
Move-some-account-settings-back-to-privacy-settings.patch
kill-Vision.patch
kill-Location-fall-back-to-system.patch
@@ -91,12 +91,15 @@ Disable-feeds-support-by-default.patch
Disable-DRM-media-origin-IDs-preprovisioning.patch
Disable-smart-selection-by-default.patch
Guard-for-user-agent-reduction.patch
AImageReader-CFI-crash-mitigations.patch
Add-menu-item-to-view-source.patch
Revert-removal-of-execution-context-address-space.patch
Block-gateway-attacks-via-websockets.patch
Enable-prefetch-privacy-changes-by-default.patch
Enable-darken-websites-checkbox-in-themes.patch
Remove-blocklisted-URLs-upon-bookmark-creation.patch
Disable-the-DIAL-repeating-discovery.patch
Block-qjz9zk-or-trk-requests.patch
Hardening-against-incognito-mode-detection.patch
Restore-Simplified-NTP-launch.patch
Add-option-to-use-home-page-as-NTP.patch
@@ -153,7 +156,9 @@ Enable-Certificate-Transparency.patch
Invalidate-components-public-key.patch
Improve-plain-text-rendering-on-mobile.patch
Remove-segmentation-platform.patch
Follow-only-system-dark-mode.patch
Remove-window-name-on-cross-origin-navigation.patch
Remove-preload-of-com.google.android.gms.fonts.patch
Partition-Blink-memory-cache.patch
Remove-navigator.connection-info.patch
Disable-PrivacyGuide.patch
@@ -165,6 +170,7 @@ Remove-HTTP-referrals-in-cross-origin-navigation.patch
Enable-third-party-storage-partitioning.patch
Restore-adaptive-button-in-top-toolbar-customization.patch
Add-kill-switch-for-unsupported-clangd-flags.patch
WIN-enable-pdf-plugin.patch
WIN-disable-annotate-downloads.patch
Enable-HighEfficiencyMode-by-default.patch
@@ -174,6 +180,7 @@ WIN-Disable-updater.patch
WIN-Disable-first-run.patch
WIN-Add-some-prefs-to-secure-preferences.patch
WIN-Disable-search-for-image.patch
AudioBuffer-AnalyserNode-fp-mitigations.patch
add-browser-policy.patch
Always-open-browser-controls-in-new-tab.patch
@@ -236,6 +243,8 @@ Partition-MediaDeviceId-by-default.patch
Keep-disabled-FetchLaterAPI.patch
Disable-ranker-url-fetcher.patch
Disable-prefers-reduced-transparency-media-query.patch
libjxl-0-8-2.patch
Add-support-to-jxl.patch
Block-Intents-While-Locked.patch
Keep-Manta-Service-Disabled.patch
Disable-Service-and-Shared-workers-on-3P-iframe.patch
@@ -244,7 +253,7 @@ Always-allow-inspect-fallback.patch
Add-PartialLowEndModeOnMidRangeDevices-flag.patch
Use-list-mode-for-tab-switcher.patch
Chrome-web-store-protection.patch
Enables-keyword-based-site-search-on-Android-devices.patch
Enable-search-engine-settings-desktop-ui.patch
Disable-Android-AppRestrictions.patch
Customize-selection-popup.patch
Enables-deactivation-of-the-js-debugger-statement.patch
@@ -266,6 +275,7 @@ Enable-Global-Privacy-Control.patch
Enable-Do-Not-Track-by-default.patch
Media-fingerprinting-mitigations.patch
Use-BoringSSL-for-RandBytes.patch
Restore-chrome-password-store.patch
Disable-support-for-pointer-device-id.patch
Disable-CSS-blink-feature-support.patch
Close-Sessions-On-Ip-Change.patch
@@ -280,52 +290,26 @@ Disable-Posture-API.patch
PublicKeyCredential-fingerprinting-mitigations.patch
Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch
Enable-Cert-Management-UI.patch
Enable-ProcessBoundStringEncryption-by-default.patch
Prevent-mouse-wheel-fingerprinting-on-Windows.patch
Enable-component-updater.patch
Android-fonts-fingerprinting-mitigation.patch
Disable-Android-Tab-Declutter.patch
Disable-CSSDynamicRangeLimit.patch
Disable-prefers-reduced-motion.patch
Disable-css-preferred-text-scale.patch
Disable-Viewport-Segments.patch
Keep-disabled-cache-sharing-for-pervasive-scripts.patch
High-Resolution-Timing-Mitigation.patch
Enable-snackbar-swipe.patch
Add-cromite-test-support.patch
Android-Pixel-Perfect-Mode.patch
Set-caret-blink-interval-to-default.patch
Set-the-screen-frame-rate-to-60-Hz.patch
Disable-Device-Attributes-API.patch
Add-setting-to-enable-Credman-for-passkeys.patch
Temp-disable-UseContextSnapshot.patch
Enable-ClientHello-Segmentation.patch
Disable-Sticky-User-Activation-Across-Same-Origin-Navigation.patch
Supporting-Dangling-Ptr-Detection-via-BackupRefPtr.patch
Disable-device-bound-session.patch
Keep-disabled-CpuPerformance.patch
Immediately-destroy-shared-workers-when-closing-the-page.patch
Disable-minikin-hyphenation.patch
# temporary or wip patches
Temp-PerformanceNavigationTiming-privacy-fix.patch
Temp-disable-predictive-back-gesture.patch
TEMP-Add-a-log-to-track-strange-behavior.patch
Temp-guard-FileSystemAccessPersistentPermissions.patch
Never-treat-Proguard-warnings-as-errors.patch
Temp-disable-experimental-web-platform-features.patch
Block-leakage-of-urls-in-sandbox-iframes.patch
Temporarily-disable-Tab-Group-Sync-Android.patch
Fix-chromium-build-bugs.patch
Try-to-fix-2082.patch
Temp-use-PREVIEW-for-IDCompositionDevice5.patch
Disable-integration-with-Gemini.patch
# adblock patches
eyeo-133.0.6943.49-base.patch
eyeo-133.0.6943.49-chrome_integration.patch
eyeo-133.0.6943.49-android_api.patch
eyeo-133.0.6943.49-android_settings.patch
eyeo-133.0.6943.49-extension_api.patch
eyeo-beta-118.0.5993.48-base.patch
eyeo-beta-118.0.5993.48-chrome_integration.patch
eyeo-beta-118.0.5993.48-android_api.patch
eyeo-beta-118.0.5993.48-android_settings.patch
eyeo-beta-118.0.5993.48-extension_api.patch
Eyeo-Adblock-for-Cromite.patch
# extension patches
Experimental-support-for-extensions-on-Android.patch
Enable-extension-in-incognito.patch
@@ -0,0 +1,252 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 5 May 2020 07:22:20 +0200
Subject: AImageReader CFI crash mitigations
Revert "gpu/android: Remove setup for disabling AImageReader."
This reverts commit dcd5a39518246eb999f1cc63bf1ec95d93fd5b2f.
Revert "Remove flags to enable/disable AImageReader."
This reverts commit 463fa0f2e3b9e418bc26e2c8954463f0b0f76634.
Restore GPU bug blacklist for AImageReader on ARM and Qualcomm CPUs
Restore the AImageReader blacklist for ARM/Qualcomm chipsets which causes
crashes on Android 9 and 10 (at different code locations).
See discussions at:
* https://github.com/bromite/bromite/issues/445
* https://github.com/bromite/bromite/issues/814
* https://github.com/bromite/bromite/issues/1005
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
base/android/android_image_reader_compat.cc | 16 ++++++++++++++++
base/android/android_image_reader_compat.h | 14 ++++++++++++++
chrome/browser/flag-metadata.json | 4 ++++
.../AImageReader-CFI-crash-mitigations.inc | 4 ++++
.../AImageReader-CFI-crash-mitigations.inc | 1 +
gpu/config/gpu_driver_bug_list.json | 16 ++++++++++++++++
gpu/config/gpu_finch_features.cc | 5 +++++
gpu/config/gpu_finch_features.h | 1 +
gpu/config/gpu_util.cc | 8 ++++++++
gpu/config/gpu_workaround_list.txt | 1 +
gpu/ipc/service/gpu_init.cc | 8 ++++++++
gpu/ipc/service/stream_texture_android.cc | 10 +++++++++-
12 files changed, 87 insertions(+), 1 deletion(-)
create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc
create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc
diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc
--- a/base/android/android_image_reader_compat.cc
+++ b/base/android/android_image_reader_compat.cc
@@ -7,7 +7,23 @@
namespace base {
namespace android {
+AndroidImageReader& AndroidImageReader::GetInstance() {
+ // C++11 static local variable initialization is
+ // thread-safe.
+ static AndroidImageReader instance;
+ return instance;
+}
+
+void AndroidImageReader::DisableSupport() {
+ disable_support_ = true;
+}
+
+bool AndroidImageReader::IsSupported() {
+ return !disable_support_;
+}
+
bool EnableAndroidImageReader() {
+ if (!AndroidImageReader::GetInstance().IsSupported()) return false;
// Currently we want to enable AImageReader only for android P+ devices.
if (__builtin_available(android 28, *)) {
return true;
diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h
--- a/base/android/android_image_reader_compat.h
+++ b/base/android/android_image_reader_compat.h
@@ -10,6 +10,20 @@
namespace base {
namespace android {
+class BASE_EXPORT AndroidImageReader {
+ public:
+ // Thread safe GetInstance.
+ static AndroidImageReader& GetInstance();
+
+ bool IsSupported();
+
+ // Disable image reader support.
+ void DisableSupport();
+
+ private:
+ bool disable_support_ = false;
+};
+
// Check if the image reader usage is supported.
BASE_EXPORT bool EnableAndroidImageReader();
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -3224,6 +3224,10 @@
"name": "enable-identity-in-auth-error",
"owners": [ "jlebel@chromium.org", "chrome-signin-team@google.com" ],
"expiry_milestone": 135
+ },{
+ "name": "enable-image-reader", // Bromite: do not expire
+ "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], // flag
+ "expiry_milestone": -1
},
{
"name": "enable-immersive-fullscreen-toolbar",
diff --git a/cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc b/cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc
@@ -0,0 +1,4 @@
+// Enables the Android Image Reader path for Video decoding(for AVDA and MCVD)
+CROMITE_FEATURE(kAImageReaderVideoOutput,
+ "AImageReaderVideoOutput",
+ base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc b/cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc
@@ -0,0 +1 @@
+MEDIA_EXPORT BASE_DECLARE_FEATURE(kAImageReaderVideoOutput);
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -2593,6 +2593,22 @@
"no_downscaled_overlay_promotion"
]
},
+ {
+ "id":335,
+ "cr_bugs": [1051705],
+ "description": "Disable AImageReader on ARM GPUs",
+ "os": {
+ "type": "android",
+ "version": {
+ "op": "<",
+ "value": "10"
+ }
+ },
+ "gl_vendor": "ARM.*|Qualcomm.*",
+ "features": [
+ "disable_aimagereader"
+ ]
+ },
{
"id": 381,
"cr_bugs": [
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -59,6 +59,11 @@ BASE_FEATURE(kAggressiveShaderCacheLimits,
base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_ANDROID)
+// Use android AImageReader when playing videos with MediaPlayer.
+CROMITE_FEATURE(kAImageReaderMediaPlayer,
+ "AImageReaderMediaPlayer",
+ base::FEATURE_ENABLED_BY_DEFAULT);
+
// Use android SurfaceControl API for managing display compositor's buffer queue
// and using overlays on Android. Also used by webview to disable surface
// SurfaceControl.
diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h
--- a/gpu/config/gpu_finch_features.h
+++ b/gpu/config/gpu_finch_features.h
@@ -26,6 +26,7 @@ GPU_EXPORT BASE_DECLARE_FEATURE(kUseGles2ForOopR);
GPU_EXPORT BASE_DECLARE_FEATURE(kAggressiveShaderCacheLimits);
#if BUILDFLAG(IS_ANDROID)
+GPU_EXPORT BASE_DECLARE_FEATURE(kAImageReaderMediaPlayer);
GPU_EXPORT BASE_DECLARE_FEATURE(kAndroidSurfaceControl);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControl);
GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControlForTV);
diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
--- a/gpu/config/gpu_util.cc
+++ b/gpu/config/gpu_util.cc
@@ -126,6 +126,9 @@ GpuFeatureStatus GetAndroidSurfaceControlFeatureStatus(
#if !BUILDFLAG(IS_ANDROID)
return kGpuFeatureStatusDisabled;
#else
+ if (blocklisted_features.count(GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL))
+ return kGpuFeatureStatusBlocklisted;
+
if (!gpu_preferences.enable_android_surface_control)
return kGpuFeatureStatusDisabled;
@@ -375,6 +378,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info,
kGpuFeatureStatusSoftware;
}
}
+
+ if (gpu_feature_info->IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
+ gpu_feature_info->status_values[GPU_FEATURE_TYPE_ANDROID_SURFACE_CONTROL] =
+ kGpuFeatureStatusBlocklisted;
+ }
}
// Estimates roughly user total disk space by counting in the drives where
diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list.txt
--- a/gpu/config/gpu_workaround_list.txt
+++ b/gpu/config/gpu_workaround_list.txt
@@ -6,6 +6,7 @@ check_egl_fence_before_wait
check_ycbcr_studio_g22_left_p709_for_nv12_support
disable_2d_canvas_auto_flush
disable_accelerated_av1_decode
+disable_aimagereader
disable_accelerated_av1_encode
disable_accelerated_h264_decode
disable_accelerated_h264_encode
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
--- a/gpu/ipc/service/gpu_init.cc
+++ b/gpu/ipc/service/gpu_init.cc
@@ -70,6 +70,7 @@
#if BUILDFLAG(IS_ANDROID)
#include "ui/gfx/android/android_surface_control_compat.h"
+#include "base/android/android_image_reader_compat.h"
#endif
#if BUILDFLAG(ENABLE_VULKAN)
@@ -715,6 +716,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
}
#endif // BUILDFLAG(IS_WIN)
+#if BUILDFLAG(IS_ANDROID)
+ // Disable AImageReader if the workaround is enabled.
+ if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
+ base::android::AndroidImageReader::GetInstance().DisableSupport();
+ }
+#endif
+
if (gpu_feature_info_.status_values[GPU_FEATURE_TYPE_VULKAN] !=
kGpuFeatureStatusEnabled ||
!InitializeVulkan()) {
diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc
--- a/gpu/ipc/service/stream_texture_android.cc
+++ b/gpu/ipc/service/stream_texture_android.cc
@@ -50,7 +50,15 @@ std::unique_ptr<ui::ScopedMakeCurrent> MakeCurrent(
}
TextureOwner::Mode GetTextureOwnerMode() {
- return base::android::EnableAndroidImageReader()
+ const bool a_image_reader_supported =
+ base::android::AndroidImageReader::GetInstance().IsSupported();
+
+ // TODO(vikassoni) : Currently we have 2 different flags to enable/disable
+ // AImageReader - one for MCVD and other for MediaPlayer here. Merge those 2
+ // flags into a single flag. Keeping the 2 flags separate for now since finch
+ // experiment using this flag is in progress.
+ return a_image_reader_supported && base::android::EnableAndroidImageReader() &&
+ base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer)
? TextureOwner::Mode::kAImageReaderInsecure
: TextureOwner::Mode::kSurfaceTextureInsecure;
}
--
@@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -255,6 +255,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
@@ -225,6 +225,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.SelectionPopupController;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.common.ContentSwitches;
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
import org.chromium.printing.PrintManagerDelegateImpl;
import org.chromium.printing.PrintingController;
import org.chromium.printing.PrintingControllerImpl;
@@ -1134,6 +1135,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -968,6 +969,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
super.onStartWithNative();
ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier());
@@ -40,42 +40,42 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
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
@@ -204,6 +204,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&feed::kFeedNoViewCache,
@@ -164,6 +164,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&feed::kFeedPerformanceStudy,
&feed::kFeedRecyclerBinderUnmountOnDetach,
+ &kAllowUserCertificates,
&feed::kFeedShowSignInCommand,
&feed::kFeedSignedOutViewDemotion,
+ &kAllowUserCertificates,
&feed::kFeedRecyclerBinderUnmountOnDetach,
&feed::kInterestFeedV2,
&feed::kWebFeedAwareness,
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
@@ -167,6 +167,7 @@ public abstract class ChromeFeatureList {
"AccountForSuppressedKeyboardInsets";
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 =
"AdaptiveButtonInTopToolbarCustomizationV2";
@@ -158,6 +158,7 @@ public abstract class ChromeFeatureList {
// Feature names.
/* Alphabetical: */
public static final String ACT_USER_BYPASS_UX = "ActUserBypassUx";
+ public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY =
"AdaptiveButtonInTopToolbarPageSummary";
// Don't clean up this flag yet, BCIV is launched, so this needs to be enabled by
@@ -803,6 +804,8 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sAndroidWindowPopupResizeAfterSpawn =
newCachedFlag(ANDROID_WINDOW_POPUP_RESIZE_AFTER_SPAWN, false, true);
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 =
@@ -624,6 +625,8 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sAndroidTabDeclutterDedupeTabIdsKillSwitch =
newCachedFlag(ANDROID_TAB_DECLUTTER_DEDUPE_TAB_IDS_KILL_SWITCH, true);
public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true);
+ public static final CachedFlag sAllowUserCertificates =
+ newCachedFlag(ALLOW_USER_CERTIFICATES, false);
public static final CachedFlag sAppSpecificHistoryViewIntent =
newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true);
public static final CachedFlag sAsyncNotificationManager =
@@ -1156,6 +1159,7 @@ public abstract class ChromeFeatureList {
sAccountForSuppressedKeyboardInsets,
sAndroidAnimatedProgressBarInBrowser,
sAndroidApb144Patch1,
newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false, true);
public static final CachedFlag sBlockIntentsWhileLocked =
@@ -845,6 +848,7 @@ public abstract class ChromeFeatureList {
public static final List<CachedFlag> sFlagsCachedFullBrowserChromium =
List.of(
sAndroidAppIntegration,
+ sAllowUserCertificates,
sAndroidAppIntegrationModule,
sAndroidAppIntegrationMultiDataSource,
sAndroidAutoMintedTwa,
sAndroidAppIntegrationV2,
sAndroidAppIntegrationWithFavicon,
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc
new file mode 100644
--- /dev/null
@@ -111,8 +111,8 @@ new file mode 100644
diff --git a/net/android/java/src/org/chromium/net/X509Util.java b/net/android/java/src/org/chromium/net/X509Util.java
--- a/net/android/java/src/org/chromium/net/X509Util.java
+++ b/net/android/java/src/org/chromium/net/X509Util.java
@@ -472,6 +472,8 @@ public class X509Util {
return result;
@@ -542,6 +542,8 @@ public class X509Util {
return userRootBytes.toArray(new byte[0][]);
}
+ public static boolean AllowUserCertificates = false;
@@ -120,7 +120,7 @@ diff --git a/net/android/java/src/org/chromium/net/X509Util.java b/net/android/j
public static AndroidCertVerifyResult verifyServerCertificates(
byte[][] certChain,
String authType,
@@ -649,6 +651,9 @@ public class X509Util {
@@ -642,6 +644,9 @@ public class X509Util {
X509Certificate root = verifiedChain.get(verifiedChain.size() - 1);
isIssuedByKnownRoot = isKnownRoot(root);
}
@@ -4,23 +4,19 @@ Subject: Add Alt+D hotkey to focus address bar
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../src/org/chromium/chrome/browser/KeyboardShortcuts.java | 6 ++++++
1 file changed, 6 insertions(+)
.../java/src/org/chromium/chrome/browser/KeyboardShortcuts.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
@@ -935,6 +935,12 @@ public class KeyboardShortcuts {
KeyEvent.KEYCODE_ESCAPE,
KeyEvent.META_CTRL_ON);
}
+ addShortcut(context,
+ shortcutGroupsById,
+ R.string.keyboard_shortcut_chrome_feature_group_header,
+ R.string.keyboard_shortcut_address_bar,
+ KeyEvent.KEYCODE_D,
+ KeyEvent.META_ALT_ON);
return new ArrayList<>(shortcutGroupsById.values());
}
@@ -472,6 +472,8 @@ public class KeyboardShortcuts {
R.string.keyboard_shortcut_address_bar,
KeyEvent.KEYCODE_L,
KeyEvent.META_CTRL_ON);
+ addShortcut(context, chromeFeatureShortcutGroup, R.string.keyboard_shortcut_address_bar,
+ KeyEvent.KEYCODE_D, KeyEvent.META_ALT_ON);
shortcutGroups.add(chromeFeatureShortcutGroup);
KeyboardShortcutGroup webpageShortcutGroup =
--
@@ -44,7 +44,7 @@ new file mode 100644
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -403,6 +403,11 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
@@ -372,6 +372,11 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
}
}
@@ -7,55 +7,36 @@ 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 +++++++++
chrome/browser/about_flags.cc | 1 +
.../Add-PartialLowEndModeOnMidRangeDevices-flag.inc | 12 ++++++++++++
3 files changed, 25 insertions(+)
3 files changed, 17 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
@@ -198,6 +198,10 @@ bool IsReducePPMsEnabled() {
return g_is_reduce_ppms_enabled.load(std::memory_order_relaxed);
}
@@ -123,6 +123,10 @@ BASE_FEATURE(kPostGetMyMemoryStateToBackground,
FEATURE_ENABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_ANDROID)
+#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.
void Init(EmitThreadControllerProfilerMetadata
emit_thread_controller_profiler_metadata) {
InitializeCpuReductionExperiment();
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -22,6 +22,7 @@
#include "base/base_switches.h"
#include "base/command_line.h"
#include "base/feature_list.h"
+#include "base/features.h"
#include "content/renderer/render_process_impl.h"
#include "build/build_config.h"
@@ -122,10 +123,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
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/i18n/base_i18n_switches.h"
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
@@ -27,14 +27,13 @@ diff --git a/chrome/android/expectations/expectations.gni b/chrome/android/expec
+enable_libs_and_assets_verification = enable_trybot_verification &&
!enable_chrome_android_internal && !is_component_build &&
!use_jacoco_coverage && is_official_build &&
((target_cpu == "arm64" || target_cpu == "x64") &&
@@ -16,7 +20,7 @@ enable_libs_and_assets_verification =
(target_cpu == "arm64" && android_channel == "stable")
@@ -15,6 +19,6 @@ enable_libs_and_assets_verification =
# use_jacoco_coverage: Adds proguard flags.
# android_channel: Manifest entries vary based on channel.
# target_cpu: android:versionCode varies.
-enable_manifest_verification =
+enable_manifest_verification = enable_trybot_verification &&
!is_java_debug && !enable_chrome_android_internal && !use_jacoco_coverage &&
((target_cpu == "arm64" || target_cpu == "x64") &&
android_channel == "stable")
(target_cpu == "arm64" && android_channel == "stable")
--
@@ -5,21 +5,37 @@ Subject: Add a flag to disable GamePad API
Adds restrict-gamepad-access flag (default active) to disable GamePad API.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/browser/flag-metadata.json | 4 ++--
content/child/runtime_features.cc | 2 ++
.../about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc | 7 +++++++
device/gamepad/public/cpp/gamepad_features.cc | 8 ++++++++
device/gamepad/public/cpp/gamepad_features.h | 2 ++
.../blink/renderer/modules/gamepad/navigator_gamepad.cc | 6 ++++++
5 files changed, 25 insertions(+)
.../blink/renderer/modules/gamepad/navigator_gamepad.cc | 7 +++++++
6 files changed, 28 insertions(+), 2 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -7665,9 +7665,9 @@
"expiry_milestone": 140
},
{
- "name": "restrict-gamepad-access",
+ "name": "restrict-gamepad-access", // restrict-gamepad-access"
"owners": [ "//device/gamepad/OWNERS", "jameshollyer@chromium.org" ],
- "expiry_milestone": 96
+ "expiry_milestone": -1
},
{
"name": "retain-omnibox-on-focus",
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -241,6 +241,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
{wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)},
{wf::EnablePeriodicBackgroundSync,
@@ -258,6 +258,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
raw_ref(features::kPeriodicBackgroundSync)},
{wf::EnablePushMessagingSubscriptionChange,
raw_ref(features::kPushSubscriptionChangeEvent)},
+ {wf::EnableRestrictGamepadAccess,
+ raw_ref(features::kRestrictGamepadAccess)},
{wf::EnableSecurePaymentConfirmation,
@@ -40,7 +56,7 @@ new file mode 100644
diff --git a/device/gamepad/public/cpp/gamepad_features.cc b/device/gamepad/public/cpp/gamepad_features.cc
--- a/device/gamepad/public/cpp/gamepad_features.cc
+++ b/device/gamepad/public/cpp/gamepad_features.cc
@@ -63,4 +63,12 @@ bool IsGamepadMultitouchEnabled() {
@@ -36,4 +36,12 @@ bool IsGamepadMultitouchEnabled() {
return false;
}
@@ -56,17 +72,12 @@ diff --git a/device/gamepad/public/cpp/gamepad_features.cc b/device/gamepad/publ
diff --git a/device/gamepad/public/cpp/gamepad_features.h b/device/gamepad/public/cpp/gamepad_features.h
--- a/device/gamepad/public/cpp/gamepad_features.h
+++ b/device/gamepad/public/cpp/gamepad_features.h
@@ -17,6 +17,7 @@ GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kEnableGamepadMultitouch);
@@ -13,8 +13,10 @@ namespace features {
GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(
kEnableSimulatedGamepadDataFetcher);
GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kGamepadRawInputChangeEvent);
kEnableWindowsGamingInputDataFetcher);
GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kEnableGamepadMultitouch);
+GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kRestrictGamepadAccess);
#if BUILDFLAG(IS_WIN)
GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kIgnorePS5GamepadsInWgi);
@@ -34,6 +35,7 @@ GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(
#endif // BUILDFLAG(IS_APPLE)
GAMEPAD_FEATURES_EXPORT bool IsGamepadMultitouchEnabled();
+GAMEPAD_FEATURES_EXPORT bool IsRestrictGamepadAccessEnabled();
@@ -80,23 +91,24 @@ diff --git a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc b/t
#include "base/auto_reset.h"
#include "device/gamepad/public/cpp/gamepads.h"
+#include "device/gamepad/public/cpp/gamepad_features.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
#include "third_party/blink/public/mojom/frame/user_activation_notification_type.mojom-blink.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_gamepad_mapping_type.h"
@@ -88,6 +89,9 @@ NavigatorGamepad& NavigatorGamepad::From(Navigator& navigator) {
@@ -114,6 +115,10 @@ void RecordGamepadsForIdentifiabilityStudy(
HeapVector<Member<Gamepad>> NavigatorGamepad::getGamepads(
Navigator& navigator,
ExceptionState& exception_state) {
+ if (::features::IsRestrictGamepadAccessEnabled()) {
+ exception_state.ThrowSecurityError("Access to the feature \"gamepad\" is denied");
+ return HeapVector<Member<Gamepad>>();
+ }
if (!navigator.DomWindow()) {
// Using an existing NavigatorGamepad if one exists, but don't create one
// for a detached window, as its subclasses depend on a non-null window.
@@ -433,6 +437,8 @@ void NavigatorGamepad::MaybeDispatchGamepadEvents(
void NavigatorGamepad::DispatchGamepadConnectionChangedEvent(
const AtomicString& event_name,
Gamepad* gamepad) {
@@ -420,6 +425,8 @@ void NavigatorGamepad::SampleAndCompareGamepadState() {
void NavigatorGamepad::DispatchGamepadEvent(const AtomicString& event_name,
Gamepad* gamepad) {
+ if (::features::IsRestrictGamepadAccessEnabled())
+ return;
// Ensure that we're blocking re-entrancy.
@@ -10,7 +10,6 @@ this implementation is the same as the one in ChromeOS which gets proxy informat
for the system network context; this is strictly not correct on Android because the network context is
never connected to any user profile and only gets proxy information from the system.
Existing settings on Profile are migrated to LocalState on startup.
Enable the support for multiple proxy chain via the bracketed [] sintax
Credits to @uazo for the LocalState integration.
@@ -30,20 +29,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/resources/proxy_config.html | 77 ++++
chrome/browser/resources/proxy_config.js | 278 +++++++++++++
chrome/browser/ui/BUILD.gn | 2 +
.../browser/ui/webui/chrome_web_ui_configs.cc | 5 +-
.../browser/ui/webui/chrome_web_ui_configs.cc | 4 +
chrome/browser/ui/webui/proxy_config_ui.cc | 389 ++++++++++++++++++
chrome/browser/ui/webui/proxy_config_ui.h | 41 ++
chrome/common/webui_url_constants.cc | 1 +
chrome/common/webui_url_constants.cc | 2 +
chrome/common/webui_url_constants.h | 2 +
.../pref_proxy_config_tracker_impl.cc | 5 +-
.../proxy_config/proxy_config_dictionary.cc | 30 +-
.../proxy_config/proxy_config_dictionary.h | 7 +-
.../proxy_config/proxy_policy_handler.cc | 2 +-
net/features.gni | 2 +-
net/proxy_resolution/pac_file_fetcher_impl.cc | 8 -
net/proxy_resolution/proxy_config.cc | 53 ++-
net/proxy_resolution/proxy_config.cc | 51 ++-
net/proxy_resolution/proxy_config.h | 3 +
27 files changed, 986 insertions(+), 27 deletions(-)
25 files changed, 984 insertions(+), 17 deletions(-)
create mode 100644 chrome/browser/resources/proxy_config.css
create mode 100644 chrome/browser/resources/proxy_config.html
create mode 100644 chrome/browser/resources/proxy_config.js
@@ -80,7 +77,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -108,6 +108,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -81,6 +81,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection";
private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
@@ -91,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -424,6 +424,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
@@ -333,6 +333,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
builtins_to_provide.push_back(chrome::kChromeUISettingsURL16);
#endif
builtins_to_provide.push_back(chrome::kChromeUIVersionURL16);
@@ -102,20 +99,20 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -225,6 +225,9 @@
<if expr="_google_chrome">
@@ -221,6 +221,9 @@
<include name="IDR_PREF_HASH_SEED_BIN" file="resources\settings\internal\pref_hash_seed.bin" type="BINDATA" />
<include name="IDR_ADDITIONAL_MODULE_IDS" file="${additional_modules_list_file}" use_base_dir="false" type="BINDATA" />
</if>
+ <!-- Bromite Proxy Configuration UI -->
+ <include name="IDR_PROXY_CONFIG_HTML" file="resources\proxy_config.html" flattenhtml="true" type="BINDATA" compress="gzip" />
+ <include name="IDR_PROXY_CONFIG_JS" file="resources\proxy_config.js" type="BINDATA" compress="gzip" />
<if expr="not is_android or enable_extensions_core">
<if expr="not is_android">
<!-- Page not available for guest. -->
<include name="IDR_PAGE_NOT_AVAILABLE_FOR_GUEST_APP_HTML" file="resources\page_not_available_for_guest\app.html" type="BINDATA" />
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
@@ -383,7 +383,7 @@ std::optional<base::DictValue> CreateProxyConfigDict(
@@ -372,7 +372,7 @@ std::optional<base::Value::Dict> CreateProxyConfigDict(
return std::nullopt;
}
return ProxyConfigDictionary::CreateFixedServers(proxy_rules_string,
@@ -152,7 +149,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
- return std::make_unique<PrefProxyConfigTrackerImpl>(profile_prefs, nullptr);
+ // Migrate from profile_prefs to local_state_prefs
+ if (local_state_prefs->GetBoolean("proxy_migrated") == false) {
+ const base::DictValue& dict =
+ const base::Value::Dict& dict =
+ profile_prefs->GetDict(proxy_config::prefs::kProxy);
+
+ LOG(INFO) << "CreatePrefProxyConfigTrackerOfProfile: Migration from profile to local state";
@@ -199,16 +196,16 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -212,6 +212,8 @@
@@ -200,6 +200,8 @@
#include "printing/buildflags/buildflags.h"
#include "rlz/buildflags/buildflags.h"
+#include "chrome/browser/net/proxy_service_factory.h"
+
#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
#include "chrome/browser/background/extensions/background_mode_manager.h"
#include "chrome/browser/background/background_mode_manager.h"
#endif
@@ -1438,6 +1440,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
@@ -1644,6 +1646,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
component_updater::RegisterPrefs(registry);
domain_reliability::RegisterPrefs(registry);
embedder_support::OriginTrialPrefs::RegisterPrefs(registry);
@@ -220,7 +217,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
--- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
+++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
@@ -161,7 +161,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
@@ -157,7 +157,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
command_line()->GetSwitchValueASCII(switches::kProxyBypassList);
SetValue(proxy_config::prefs::kProxy,
base::Value(ProxyConfigDictionary::CreateFixedServers(
@@ -663,7 +660,7 @@ new file mode 100644
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -158,6 +158,8 @@ static_library("ui") {
@@ -222,6 +222,8 @@ static_library("ui") {
"webui/metrics_internals/metrics_internals_ui.h",
"webui/net_export_ui.cc",
"webui/net_export_ui.h",
@@ -675,25 +672,22 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
--- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
@@ -64,6 +64,9 @@
@@ -55,6 +55,9 @@
#include "extensions/buildflags/buildflags.h"
#include "printing/buildflags/buildflags.h"
+#include "chrome/browser/ui/webui/proxy_config_ui.h"
+
+
#if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER)
#include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h"
#if BUILDFLAG(ENABLE_NACL)
#include "chrome/browser/ui/webui/nacl_ui.h"
#endif
@@ -388,4 +391,5 @@ void RegisterChromeWebUIConfigs() {
#if BUILDFLAG(ENABLE_GLIC)
map.AddWebUIConfig(std::make_unique<glic::GlicUIConfig>());
#endif
@@ -449,7 +452,7 @@ void RegisterChromeWebUIConfigs() {
map.AddWebUIConfig(std::make_unique<SigninErrorUIConfig>());
map.AddWebUIConfig(std::make_unique<SigninEmailConfirmationUIConfig>());
#endif // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
-
+ map.AddWebUIConfig(std::make_unique<ProxyConfigUIConfig>());
#if BUILDFLAG(SAFE_BROWSING_AVAILABLE)
map.AddWebUIConfig(
std::make_unique<safe_browsing::ChromeSafeBrowsingUIConfig>());
}
diff --git a/chrome/browser/ui/webui/proxy_config_ui.cc b/chrome/browser/ui/webui/proxy_config_ui.cc
new file mode 100644
--- /dev/null
@@ -774,9 +768,9 @@ new file mode 100644
+ void RegisterMessages() override;
+
+ // Messages
+ void OnEnableNotifyUIWithState(const base::ListValue& args);
+ void OnApply(const base::ListValue& args);
+ void OnClear(const base::ListValue& args);
+ void OnEnableNotifyUIWithState(const base::Value::List& args);
+ void OnApply(const base::Value::List& args);
+ void OnClear(const base::Value::List& args);
+
+ // net::ProxyConfigService::Observer implementation:
+ // Calls ProxyConfigView.onProxyConfigChanged JavaScript function in the
@@ -793,7 +787,7 @@ new file mode 100644
+ std::unique_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_;
+ bool is_observing_;
+
+ void encodeConfig(const net::ProxyConfig& config, base::DictValue& state);
+ void encodeConfig(const net::ProxyConfig& config, base::Value::Dict& state);
+
+ void apply(const net::ProxyConfig& config);
+
@@ -833,7 +827,7 @@ new file mode 100644
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
+ !BrowserThread::IsThreadInitialized(BrowserThread::UI));
+
+ base::DictValue state;
+ base::Value::Dict state;
+ bool pending = false;
+ switch (availability) {
+ case net::ProxyConfigService::CONFIG_VALID:
@@ -861,7 +855,7 @@ new file mode 100644
+ return pacString;
+}
+
+void ProxyConfigMessageHandler::encodeConfig(const net::ProxyConfig& config, base::DictValue& state) {
+void ProxyConfigMessageHandler::encodeConfig(const net::ProxyConfig& config, base::Value::Dict& state) {
+ // when automatic settings are enabled they take precedence over manual settings
+ // automatic settings are either the "auto-detect" flag or the existance of a PAC URL
+
@@ -932,7 +926,7 @@ new file mode 100644
+// The proxy configuration UI is not notified of state changes until this function runs.
+// After this function, OnProxyConfigChanged() will be called on all proxy state changes.
+void ProxyConfigMessageHandler::OnEnableNotifyUIWithState(
+ const base::ListValue& list) {
+ const base::Value::List& list) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ if (!is_observing_) {
@@ -954,23 +948,23 @@ new file mode 100644
+ OnProxyConfigChanged(config, availability);
+}
+
+void ProxyConfigMessageHandler::OnClear(const base::ListValue& list) {
+void ProxyConfigMessageHandler::OnClear(const base::Value::List& list) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ const base::DictValue cfg = ProxyConfigDictionary::CreateSystem();
+ const base::Value::Dict cfg = ProxyConfigDictionary::CreateSystem();
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
+ pref_service_->CommitPendingWrite();
+ OnEnableNotifyUIWithState(list);
+}
+
+void ProxyConfigMessageHandler::OnApply(const base::ListValue& list) {
+void ProxyConfigMessageHandler::OnApply(const base::Value::List& list) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
+ if ((list.size() != 1) || !list[0].is_dict()) {
+ return;
+ }
+
+ const base::DictValue& config = list[0].GetDict();
+ const base::Value::Dict& config = list[0].GetDict();
+
+ if (config.FindBool("auto_detect").value_or(false)) {
+ apply(net::ProxyConfig::CreateAutoDetect());
@@ -986,7 +980,7 @@ new file mode 100644
+ return;
+ }
+
+ const base::DictValue* rules = config.FindDict("rules");
+ const base::Value::Dict* rules = config.FindDict("rules");
+ if (rules == nullptr)
+ return;
+
@@ -1023,7 +1017,7 @@ new file mode 100644
+ } else if (*type == "direct") {
+ proxyConfig.proxy_rules().type = net::ProxyConfig::ProxyRules::Type::EMPTY;
+ } else if (*type == "none") {
+ base::ListValue empty;
+ base::Value::List empty;
+ OnClear(empty);
+ return;
+ } else {
@@ -1049,26 +1043,26 @@ new file mode 100644
+
+void ProxyConfigMessageHandler::apply(const net::ProxyConfig& proxyConfig) {
+ if (proxyConfig.auto_detect()) {
+ const base::DictValue cfg = ProxyConfigDictionary::CreateAutoDetect();
+ const base::Value::Dict cfg = ProxyConfigDictionary::CreateAutoDetect();
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
+ } else if (proxyConfig.has_pac_url()) {
+ const base::DictValue cfg = ProxyConfigDictionary::CreatePacScript(proxyConfig.pac_url().spec(), proxyConfig.pac_mandatory());
+ const base::Value::Dict cfg = ProxyConfigDictionary::CreatePacScript(proxyConfig.pac_url().spec(), proxyConfig.pac_mandatory());
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
+ } else if (proxyConfig.proxy_rules().type == net::ProxyConfig::ProxyRules::Type::EMPTY) {
+ const base::DictValue cfg = ProxyConfigDictionary::CreateDirect();
+ const base::Value::Dict cfg = ProxyConfigDictionary::CreateDirect();
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
+ } else {
+ auto proxyRulesAsString = proxyConfig.proxy_rules().ToString();
+ auto bypassRulesAsString = proxyConfig.proxy_rules().bypass_rules.ToString();
+
+ // fixed servers
+ const base::DictValue cfg = ProxyConfigDictionary::CreateFixedServers(proxyRulesAsString,
+ const base::Value::Dict cfg = ProxyConfigDictionary::CreateFixedServers(proxyRulesAsString,
+ bypassRulesAsString, proxyConfig.proxy_rules().reverse_bypass);
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
+ }
+ pref_service_->CommitPendingWrite();
+
+ base::ListValue empty;
+ base::Value::List empty;
+ OnEnableNotifyUIWithState(empty);
+}
+
@@ -1137,21 +1131,29 @@ new file mode 100644
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
--- a/chrome/common/webui_url_constants.cc
+++ b/chrome/common/webui_url_constants.cc
@@ -120,6 +120,7 @@ bool IsSystemWebUIHost(std::string_view host) {
@@ -50,6 +50,7 @@ bool IsSystemWebUIHost(std::string_view host) {
kChromeUILockScreenNetworkHost,
kChromeUILockScreenStartReauthHost,
kChromeUIMobileSetupHost,
+ kChromeUIProxyConfigHost,
kChromeUIMultiDeviceSetupHost,
kChromeUINetworkHost,
kChromeUINotificationTesterHost,
@@ -71,6 +72,7 @@ bool IsSystemWebUIHost(std::string_view host) {
// These hosts will also be suggested by BuiltinProvider.
base::span<const base::cstring_view> ChromeURLHosts() {
static constexpr auto kChromeURLHosts = std::to_array<base::cstring_view>({
+ kChromeUIProxyConfigHost,
kChromeUIAboutHost,
kChromeUIAccessibilityHost,
kChromeUIActorInternalsHost,
#if !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
--- a/chrome/common/webui_url_constants.h
+++ b/chrome/common/webui_url_constants.h
@@ -206,6 +206,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals";
@@ -160,6 +160,8 @@ inline constexpr char kChromeUINetExportHost[] = "net-export";
inline constexpr char kChromeUINetInternalsHost[] = "net-internals";
inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/";
inline constexpr char kChromeUINewTabHost[] = "newtab";
inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer";
+inline constexpr char16_t kChromeUIProxyConfigURL16[] = u"chrome://proxy/";
+inline constexpr char kChromeUIProxyConfigHost[] = "proxy";
inline constexpr char kChromeUINewTabPageHost[] = "new-tab-page";
@@ -1160,25 +1162,24 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const
diff --git a/components/proxy_config/pref_proxy_config_tracker_impl.cc b/components/proxy_config/pref_proxy_config_tracker_impl.cc
--- a/components/proxy_config/pref_proxy_config_tracker_impl.cc
+++ b/components/proxy_config/pref_proxy_config_tracker_impl.cc
@@ -525,7 +525,7 @@ PrefProxyConfigTrackerImpl::GetEffectiveProxyConfig(
@@ -253,14 +253,14 @@ PrefProxyConfigTrackerImpl::GetEffectiveProxyConfig(
// static
void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
- ProxyConfigDictionary::CreateSystem());
+ ProxyConfigDictionary::CreateDirect());
registry->RegisterListPref(proxy_config::prefs::kProxyOverrideRules);
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
registry->RegisterIntegerPref(
@@ -541,7 +541,7 @@ void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
}
// static
void PrefProxyConfigTrackerImpl::RegisterProfilePrefs(
PrefRegistrySimple* registry) {
registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
- ProxyConfigDictionary::CreateSystem());
+ ProxyConfigDictionary::CreateDirect());
registry->RegisterBooleanPref(proxy_config::prefs::kUseSharedProxies, false);
registry->RegisterListPref(proxy_config::prefs::kProxyOverrideRules);
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
@@ -705,6 +705,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(
}
@@ -405,6 +405,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(
if (proxy_dict.GetBypassList(&proxy_bypass)) {
proxy_config.proxy_rules().bypass_rules.ParseFromString(proxy_bypass);
}
@@ -1191,7 +1192,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
+++ b/components/proxy_config/proxy_config_dictionary.cc
@@ -30,6 +30,8 @@ const char kProxyPacMandatory[] = "pac_mandatory";
// String containing proxy bypass rules. For a specification of the
// expected syntax see net::ProxyHostMatchingRules::ParseFromString().
// expected syntax see net::ProxyBypassRules::ParseFromString().
const char kProxyBypassList[] = "bypass_list";
+// Boolean telling whether to reverse the meaning of the bypass list.
+const char kProxyReverseBypass[] = "reverse_bypass";
@@ -1210,26 +1211,26 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
+ return value->GetBool();
+}
+
const base::DictValue& ProxyConfigDictionary::GetDictionary() const {
const base::Value::Dict& ProxyConfigDictionary::GetDictionary() const {
return dict_;
}
@@ -83,13 +93,13 @@ const base::DictValue& ProxyConfigDictionary::GetDictionary() const {
@@ -83,13 +93,13 @@ const base::Value::Dict& ProxyConfigDictionary::GetDictionary() const {
// static
base::DictValue ProxyConfigDictionary::CreateDirect() {
base::Value::Dict ProxyConfigDictionary::CreateDirect() {
return CreateDictionary(ProxyPrefs::MODE_DIRECT, std::string(), false,
- std::string(), std::string());
+ std::string(), std::string(), false);
}
// static
base::DictValue ProxyConfigDictionary::CreateAutoDetect() {
base::Value::Dict ProxyConfigDictionary::CreateAutoDetect() {
return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT, std::string(), false,
- std::string(), std::string());
+ std::string(), std::string(), false);
}
// static
@@ -97,16 +107,17 @@ base::DictValue ProxyConfigDictionary::CreatePacScript(
@@ -97,16 +107,17 @@ base::Value::Dict ProxyConfigDictionary::CreatePacScript(
const std::string& pac_url,
bool pac_mandatory) {
return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT, pac_url, pac_mandatory,
@@ -1238,7 +1239,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
}
// static
base::DictValue ProxyConfigDictionary::CreateFixedServers(
base::Value::Dict ProxyConfigDictionary::CreateFixedServers(
const std::string& proxy_server,
- const std::string& bypass_list) {
+ const std::string& bypass_list,
@@ -1250,26 +1251,26 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
} else {
return CreateDirect();
}
@@ -115,7 +126,7 @@ base::DictValue ProxyConfigDictionary::CreateFixedServers(
@@ -115,7 +126,7 @@ base::Value::Dict ProxyConfigDictionary::CreateFixedServers(
// static
base::DictValue ProxyConfigDictionary::CreateSystem() {
base::Value::Dict ProxyConfigDictionary::CreateSystem() {
return CreateDictionary(ProxyPrefs::MODE_SYSTEM, std::string(), false,
- std::string(), std::string());
+ std::string(), std::string(), false);
}
// static
@@ -124,7 +135,8 @@ base::DictValue ProxyConfigDictionary::CreateDictionary(
@@ -124,7 +135,8 @@ base::Value::Dict ProxyConfigDictionary::CreateDictionary(
const std::string& pac_url,
bool pac_mandatory,
const std::string& proxy_server,
- const std::string& bypass_list) {
+ const std::string& bypass_list,
+ bool reverse_bypass) {
base::DictValue dict;
base::Value::Dict dict;
dict.Set(kProxyMode, base::Value(ProxyModeToString(mode)));
if (!pac_url.empty()) {
@@ -133,8 +145,10 @@ base::DictValue ProxyConfigDictionary::CreateDictionary(
@@ -133,8 +145,10 @@ base::Value::Dict ProxyConfigDictionary::CreateDictionary(
}
if (!proxy_server.empty())
dict.Set(kProxyServer, base::Value(proxy_server));
@@ -1290,27 +1291,27 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox
bool HasBypassList() const;
+ bool HasReverseBypass() const;
const base::DictValue& GetDictionary() const;
const base::Value::Dict& GetDictionary() const;
@@ -50,7 +51,8 @@ class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
static base::DictValue CreatePacScript(const std::string& pac_url,
bool pac_mandatory);
static base::DictValue CreateFixedServers(const std::string& proxy_server,
- const std::string& bypass_list);
+ const std::string& bypass_list,
static base::Value::Dict CreatePacScript(const std::string& pac_url,
bool pac_mandatory);
static base::Value::Dict CreateFixedServers(const std::string& proxy_server,
- const std::string& bypass_list);
+ const std::string& bypass_list,
+ bool reverse_bypass);
static base::DictValue CreateSystem();
static base::Value::Dict CreateSystem();
// Encodes the proxy server as "<url-scheme>=<proxy-scheme>://<proxy>".
@@ -66,7 +68,8 @@ class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
const std::string& pac_url,
bool pac_mandatory,
const std::string& proxy_server,
- const std::string& bypass_list);
+ const std::string& bypass_list,
const std::string& pac_url,
bool pac_mandatory,
const std::string& proxy_server,
- const std::string& bypass_list);
+ const std::string& bypass_list,
+ bool reverse_bypass);
base::DictValue dict_;
base::Value::Dict dict_;
};
diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_config/proxy_policy_handler.cc
--- a/components/proxy_config/proxy_policy_handler.cc
@@ -1324,41 +1325,11 @@ diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_
}
break;
}
diff --git a/net/features.gni b/net/features.gni
--- a/net/features.gni
+++ b/net/features.gni
@@ -62,7 +62,7 @@ declare_args() {
# Bracketed URIs parsing is only available for debug builds.
# TODO(crbug.com/365771838): Ensure tests are updated if needed if this
# feature is changed at all.
- enable_bracketed_proxy_uris = is_debug
+ enable_bracketed_proxy_uris = true
# General QUIC proxy support is only available for debug builds.
# TODO(crbug.com/367400641): If flag is changed or removed, ensure all
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc
--- a/net/proxy_resolution/pac_file_fetcher_impl.cc
+++ b/net/proxy_resolution/pac_file_fetcher_impl.cc
@@ -359,14 +359,6 @@ bool PacFileFetcherImpl::ConsumeBytesRead(URLRequest* request, int num_bytes) {
return false;
}
- // Enforce maximum size bound.
- if (num_bytes + bytes_read_so_far_.size() >
- static_cast<size_t>(max_response_bytes_)) {
- result_code_ = ERR_FILE_TOO_BIG;
- request->Cancel();
- return false;
- }
-
bytes_read_so_far_.append(buf_->data(), num_bytes);
return true;
}
diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_config.cc
--- a/net/proxy_resolution/proxy_config.cc
+++ b/net/proxy_resolution/proxy_config.cc
@@ -133,7 +133,7 @@ void ProxyConfig::ProxyRules::ParseFromString(std::string_view proxy_rules,
url_scheme, &single_proxies, ProxyServer::SCHEME_HTTP,
@@ -129,7 +129,7 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules,
std::move(url_scheme), &single_proxies, ProxyServer::SCHEME_HTTP,
allow_bracketed_proxy_chains, is_quic_allowed);
type = Type::PROXY_LIST;
- return;
@@ -1366,7 +1337,7 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
}
// Trim whitespace off the url scheme.
@@ -164,6 +164,57 @@ void ProxyConfig::ProxyRules::ParseFromString(std::string_view proxy_rules,
@@ -160,6 +160,55 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules,
}
}
@@ -1374,10 +1345,8 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
+ if (type == Type::PROXY_LIST) {
+ std::string proxy_list;
+ for (const auto& proxy_chain : single_proxies.AllChains()) {
+ if (proxy_chain.length()) {
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ proxy_list += ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ proxy_list += ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ // remove last semicolon
+ if (proxy_list.length() != 0 ) {
@@ -1427,8 +1396,8 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
diff --git a/net/proxy_resolution/proxy_config.h b/net/proxy_resolution/proxy_config.h
--- a/net/proxy_resolution/proxy_config.h
+++ b/net/proxy_resolution/proxy_config.h
@@ -106,6 +106,9 @@ class NET_EXPORT ProxyConfig {
void ParseFromString(std::string_view proxy_rules,
@@ -107,6 +107,9 @@ class NET_EXPORT ProxyConfig {
void ParseFromString(const std::string& proxy_rules,
bool allow_bracketed_proxy_chains = false,
bool is_quic_allowed = false);
+ // Returns the proxy rules in a format that can be parsed by ParseFromString;
File diff suppressed because it is too large Load Diff
+14 -14
View File
@@ -164,7 +164,7 @@ new file mode 100644
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
+import org.chromium.components.content_settings.ContentSetting;
+import org.chromium.components.content_settings.ContentSettingValues;
+import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.content_public.browser.BrowserContextHandle;
+
@@ -177,8 +177,8 @@ new file mode 100644
+public class BromiteAutoplayContentSetting extends BromiteCustomContentSetting {
+ public BromiteAutoplayContentSetting() {
+ super(/*contentSettingsType*/ ContentSettingsType.AUTOPLAY,
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
+ /*allowException*/ true,
+ /*preferenceKey*/ "autoplay",
+ /*profilePrefKey*/ "autoplay");
@@ -197,11 +197,11 @@ new file mode 100644
+ }
+
+ @Override
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
+ switch (value) {
+ case ContentSetting.ALLOW:
+ case ContentSettingValues.ALLOW:
+ return R.string.website_settings_category_autoplay_enabled;
+ case ContentSetting.BLOCK:
+ case ContentSettingValues.BLOCK:
+ return R.string.website_settings_category_autoplay_disabled;
+ default:
+ return 0;
@@ -229,8 +229,8 @@ new file mode 100644
+ }
+
+ @Override
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
+ return value != ContentSetting.BLOCK;
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
+ return value != ContentSettingValues.BLOCK;
+ }
+}
diff --git a/components/browser_ui/strings/bromite_content_settings/autoplay.grdp b/components/browser_ui/strings/bromite_content_settings/autoplay.grdp
@@ -279,9 +279,9 @@ new file mode 100644
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -254,7 +254,7 @@ void ContentSettingsRegistry::Init() {
@@ -248,7 +248,7 @@ void ContentSettingsRegistry::Init() {
ContentSettingsInfo::INHERIT_IN_INCOGNITO,
PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
- Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_ALLOW,
+ Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK,
@@ -292,14 +292,14 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc
+++ b/third_party/blink/renderer/core/html/media/autoplay_policy.cc
@@ -9,6 +9,7 @@
#include "third_party/blink/public/mojom/autoplay/autoplay.mojom-blink.h"
#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h"
#include "third_party/blink/public/mojom/permissions_policy/permissions_policy.mojom-blink.h"
#include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom-blink.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
#include "third_party/blink/public/platform/web_media_player.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_local_frame_client.h"
@@ -346,6 +347,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() {
@@ -337,6 +338,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() {
}
bool AutoplayPolicy::IsGestureNeededForPlayback() const {
@@ -308,7 +308,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi
if (!IsLockedPendingUserGesture())
return false;
@@ -457,6 +460,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() {
@@ -449,6 +452,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() {
}
}
@@ -329,7 +329,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi
diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.h b/third_party/blink/renderer/core/html/media/autoplay_policy.h
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.h
+++ b/third_party/blink/renderer/core/html/media/autoplay_policy.h
@@ -148,6 +148,10 @@ class CORE_EXPORT AutoplayPolicy final
@@ -151,6 +151,10 @@ class CORE_EXPORT AutoplayPolicy final
// should use, if checking to see if an action is allowed.
bool IsLockedPendingUserGesture() const;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,932 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Fri, 22 Aug 2025 15:41:58 +0000
Subject: Add cromite test support
Allows the activation of specific APIs used for cromite testing.
API are only available on the chrome://version page.
It allows the use of tools such as Browserstack for test automation.
Do not activate the corresponding options (available in the developer
settings) if you do not know what you are doing.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../java/res/xml/developer_preferences.xml | 12 ++
.../init/ProcessInitializationHandler.java | 6 +-
.../tracing/settings/DeveloperSettings.java | 2 +-
chrome/browser/BUILD.gn | 5 +
chrome/browser/android/devtools_server.cc | 10 +
...ontent_browser_client_receiver_bindings.cc | 10 +
.../cromite/cromite_private_api_host.cc | 74 +++++++
.../cromite/cromite_private_api_host.h | 54 +++++
.../browser/flags/cromite/sActAsWebView.java | 33 +++
.../cromite/sEnableCromiteTestSupport.java | 33 +++
.../NotificationPermissionController.java | 1 +
chrome/browser/ui/startup/bad_flags_prompt.cc | 1 +
chrome/common/BUILD.gn | 1 +
.../cromite_private_api_extension.mojom | 7 +
chrome/renderer/BUILD.gn | 2 +
.../chrome_content_renderer_client.cc | 2 +
.../cromite/cromite_private_api_extension.cc | 203 ++++++++++++++++++
.../cromite/cromite_private_api_extension.h | 65 ++++++
.../component_updater_service.h | 1 +
.../browser/devtools/devtools_http_handler.cc | 7 +-
content/browser/log_console_message.cc | 15 +-
content/browser/log_console_message.h | 3 +-
.../renderer_host/render_frame_host_impl.cc | 13 +-
.../about_flags_cc/Enable-test-support.inc | 19 ++
.../Enable-test-support.inc | 7 +
.../Enable-test-support.inc | 2 +
26 files changed, 581 insertions(+), 7 deletions(-)
create mode 100644 chrome/browser/cromite/cromite_private_api_host.cc
create mode 100644 chrome/browser/cromite/cromite_private_api_host.h
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sActAsWebView.java
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableCromiteTestSupport.java
create mode 100644 chrome/common/cromite_private_api_extension.mojom
create mode 100644 chrome/renderer/cromite/cromite_private_api_extension.cc
create mode 100644 chrome/renderer/cromite/cromite_private_api_extension.h
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Enable-test-support.inc
create mode 100644 cromite_flags/content/public/common/content_features_cc/Enable-test-support.inc
create mode 100644 cromite_flags/content/public/common/content_features_h/Enable-test-support.inc
diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/android/java/res/xml/developer_preferences.xml
--- a/chrome/android/java/res/xml/developer_preferences.xml
+++ b/chrome/android/java/res/xml/developer_preferences.xml
@@ -12,6 +12,18 @@ found in the LICENSE file.
android:fragment="org.chromium.chrome.browser.tracing.settings.TracingSettings"
android:key="tracing"
android:title="Tracing" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="enable_cromite_test_support"
+ android:title="Enable support for cromite test"
+ android:summary="Setting allows the activation of specific APIs used for cromite testing. Do not activate if you do not know what you are doing."
+ app:featureName="enable-cromite-test-support"
+ app:needRestart="true" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="act_as_webview"
+ android:title="Enable webview support for cromite test"
+ android:summary="Setting allows the activation of specific APIs used for cromite testing. Do not activate if you do not know what you are doing."
+ app:featureName="act-as-webview"
+ app:needRestart="true" />
<Preference
android:key="test_gwp_asan"
android:title="Test Gwp Asan"/>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
@@ -146,6 +146,7 @@ import org.chromium.ui.base.SelectFileDialog;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.edge_to_edge.EdgeToEdgeStateProvider;
import org.chromium.url.GURL;
+import org.chromium.chrome.browser.flags.cromite.sActAsWebView;
import java.io.File;
import java.nio.charset.StandardCharsets;
@@ -699,7 +700,10 @@ public class ProcessInitializationHandler {
tasks.add(
() -> {
- mDevToolsServer = new DevToolsServer(DEV_TOOLS_SERVER_SOCKET_PREFIX);
+ String socketPrefix = DEV_TOOLS_SERVER_SOCKET_PREFIX;
+ if (sActAsWebView.getInstance().isEnabled())
+ socketPrefix = "weblayer";
+ mDevToolsServer = new DevToolsServer(socketPrefix);
mDevToolsServer.setRemoteDebuggingEnabled(
true, DevToolsServer.Security.ALLOW_DEBUG_PERMISSION);
});
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java
@@ -39,7 +39,7 @@ public class DeveloperSettings extends ChromeBaseSettingsFragment implements Emb
private final NonNullObservableSupplier<String> mPageTitle =
ObservableSuppliers.createNonNull(MSG_DEVELOPER_OPTIONS_TITLE);
- private static @Nullable Boolean sIsEnabledForTests;
+ private static @Nullable Boolean sIsEnabledForTests = true;
public static boolean shouldShowDeveloperSettings() {
// Always enabled on canary, dev and local builds, otherwise can be enabled by tapping the
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -193,6 +193,11 @@ source_set("shell_integration") {
# require many files from it. This makes linking more efficient.
static_library("browser") {
sources = [
+ "cromite/cromite_private_api_host.cc",
+ "cromite/cromite_private_api_host.h",
+ ]
+
+ sources += [
"about_flags.cc",
"accessibility/accessibility_labels_service.cc",
"accessibility/accessibility_labels_service.h",
diff --git a/chrome/browser/android/devtools_server.cc b/chrome/browser/android/devtools_server.cc
--- a/chrome/browser/android/devtools_server.cc
+++ b/chrome/browser/android/devtools_server.cc
@@ -12,6 +12,7 @@
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/files/file_path.h"
+#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/strings/string_number_conversions.h"
@@ -32,6 +33,7 @@
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
+#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"
#include "net/base/net_errors.h"
@@ -64,6 +66,8 @@ const int kBackLog = 4096;
bool AuthorizeSocketAccessWithDebugPermission(
const net::UnixDomainServerSocket::Credentials& credentials) {
+ if (base::FeatureList::IsEnabled(features::kEnableCromiteTestSupport))
+ return true;
JNIEnv* env = base::android::AttachCurrentThread();
return Java_DevToolsServer_checkDebugPermission(env, credentials.process_id,
credentials.user_id) ||
@@ -127,6 +131,10 @@ DevToolsServer::DevToolsServer(const std::string& socket_name_prefix)
: socket_name_(base::StringPrintf(kDevToolsChannelNameFormat,
socket_name_prefix.c_str())),
is_started_(false) {
+ if (base::FeatureList::IsEnabled(features::kActAsWebView)) {
+ socket_name_ = base::StringPrintf("%s_devtools_remote_%d",
+ socket_name_prefix.c_str(), getpid());
+ }
// Override the socket name if one is specified on the command line.
const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess();
@@ -144,6 +152,8 @@ void DevToolsServer::Start(bool allow_debug_permission) {
if (is_started_)
return;
+ DLOG(INFO) << "---DevToolsServer::Start allow_debug_permission=" << allow_debug_permission;
+ DLOG(INFO) << "---socket_name_=" << socket_name_;
net::UnixDomainServerSocket::AuthCallback auth_callback =
allow_debug_permission
? base::BindRepeating(&AuthorizeSocketAccessWithDebugPermission)
diff --git a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc b/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
--- a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
+++ b/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
@@ -10,6 +10,7 @@
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_browser_interface_binders.h"
+#include "chrome/browser/cromite/cromite_private_api_host.h"
#include "chrome/browser/chrome_browser_interface_binders_webui.h"
#include "chrome/browser/chrome_content_browser_client.h"
#include "chrome/browser/chrome_content_browser_client_parts.h"
@@ -488,6 +489,15 @@ void ChromeContentBrowserClient::
render_frame_host);
},
&render_frame_host));
+ associated_registry.AddInterface<
+ chrome::mojom::CromitePrivateApiExtension>(base::BindRepeating(
+ [](content::RenderFrameHost* render_frame_host,
+ mojo::PendingAssociatedReceiver<
+ chrome::mojom::CromitePrivateApiExtension> receiver) {
+ CromitePrivateApiHost::BindHost(std::move(receiver),
+ render_frame_host);
+ },
+ &render_frame_host));
associated_registry.AddInterface<
chrome::mojom::GoogleAccountsPrivateApiExtension>(base::BindRepeating(
[](content::RenderFrameHost* render_frame_host,
diff --git a/chrome/browser/cromite/cromite_private_api_host.cc b/chrome/browser/cromite/cromite_private_api_host.cc
new file mode 100644
--- /dev/null
+++ b/chrome/browser/cromite/cromite_private_api_host.cc
@@ -0,0 +1,74 @@
+#include "chrome/browser/cromite/cromite_private_api_host.h"
+
+#include "base/json/json_writer.h"
+
+#include "chrome/browser/browser_process.h"
+#include "components/component_updater/component_updater_service.h"
+#include "components/update_client/crx_update_item.h"
+#include "content/public/browser/document_user_data.h"
+#include "content/public/browser/navigation_handle.h"
+#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/site_instance.h"
+
+CromitePrivateApiHost::CromitePrivateApiHost(
+ content::RenderFrameHost* rfh)
+ : DocumentUserData<CromitePrivateApiHost>(rfh),
+ receiver_(this) {}
+
+CromitePrivateApiHost::~CromitePrivateApiHost() = default;
+
+DOCUMENT_USER_DATA_KEY_IMPL(CromitePrivateApiHost);
+
+void CromitePrivateApiHost::BindReceiver(
+ mojo::PendingAssociatedReceiver<
+ chrome::mojom::CromitePrivateApiExtension> receiver) {
+ receiver_.Bind(std::move(receiver));
+}
+
+void CromitePrivateApiHost::GetComponentData(
+ const std::string& id,
+ GetComponentDataCallback callback) {
+ LOG(INFO) << "---CromitePrivateApiHost::GetComponentData "
+ << "id=" << id;
+ const raw_ptr<component_updater::ComponentUpdateService>
+ component_updater = g_browser_process->component_updater();
+
+ update_client::CrxUpdateItem item;
+ if (component_updater->GetComponentDetails(id, &item) && item.component) {
+ base::DictValue dict;
+ dict.Set("id", id);
+ dict.Set("version", item.component->version.GetString());
+ dict.Set("status", (int)item.state);
+
+ std::string json_string;
+ base::JSONWriter::WriteWithOptions(
+ dict, base::JSONWriter::OPTIONS_PRETTY_PRINT, &json_string);
+ base::TrimWhitespaceASCII(json_string, base::TRIM_ALL, &json_string);
+
+ std::move(callback).Run(json_string);
+ }
+}
+
+void CromitePrivateApiHost::StartComponentUpdate(const std::string& id) {
+ LOG(INFO) << "---CromitePrivateApiHost::StartComponentUpdate "
+ << "id=" << id;
+ const raw_ptr<component_updater::ComponentUpdateService>
+ component_updater = g_browser_process->component_updater();
+ component_updater->GetOnDemandUpdater().OnDemandUpdate(
+ id, component_updater::OnDemandUpdater::Priority::FOREGROUND,
+ component_updater::Callback());
+}
+
+void CromitePrivateApiHost::SetEnableLogConsole(bool enabled) {
+ enable_log_console_ = enabled;
+}
+
+// static
+void CromitePrivateApiHost::BindHost(
+ mojo::PendingAssociatedReceiver<
+ chrome::mojom::CromitePrivateApiExtension> receiver,
+ content::RenderFrameHost* render_frame_host) {
+ CromitePrivateApiHost* api_host =
+ CromitePrivateApiHost::GetOrCreateForCurrentDocument(render_frame_host);
+ api_host->BindReceiver(std::move(receiver));
+}
diff --git a/chrome/browser/cromite/cromite_private_api_host.h b/chrome/browser/cromite/cromite_private_api_host.h
new file mode 100644
--- /dev/null
+++ b/chrome/browser/cromite/cromite_private_api_host.h
@@ -0,0 +1,54 @@
+#ifndef CHROME_BROWSER_CROMITE_PRIVATE_API_HOST_H_
+#define CHROME_BROWSER_CROMITE_PRIVATE_API_HOST_H_
+
+#include <string>
+
+#include "base/functional/callback.h"
+#include "chrome/common/cromite_private_api_extension.mojom.h"
+#include "content/public/browser/document_user_data.h"
+#include "mojo/public/cpp/bindings/associated_receiver.h"
+
+namespace content {
+class NavigationHandle;
+class RenderFrameHost;
+} // namespace content
+
+class CromitePrivateApiHost
+ : public chrome::mojom::CromitePrivateApiExtension,
+ public content::DocumentUserData<CromitePrivateApiHost> {
+ public:
+ ~CromitePrivateApiHost() override;
+ CromitePrivateApiHost(const CromitePrivateApiHost&) = delete;
+ CromitePrivateApiHost& operator=(const CromitePrivateApiHost&) =
+ delete;
+
+ static void BindHost(
+ mojo::PendingAssociatedReceiver<
+ chrome::mojom::CromitePrivateApiExtension> receiver,
+ content::RenderFrameHost* render_frame_host);
+
+ void BindReceiver(mojo::PendingAssociatedReceiver<
+ chrome::mojom::CromitePrivateApiExtension> receiver);
+
+ bool IsLogConsoleEnabled() const { return enable_log_console_; }
+
+ // chrome::mojom::CromitePrivateApiExtension:
+ void GetComponentData(const std::string& id,
+ GetComponentDataCallback callback) override;
+ void StartComponentUpdate(const std::string& id) override;
+ void SetEnableLogConsole(bool can_show) override;
+
+ private:
+ explicit CromitePrivateApiHost(
+ content::RenderFrameHost* rfh);
+
+ friend DocumentUserData;
+ DOCUMENT_USER_DATA_KEY_DECL();
+
+ mojo::AssociatedReceiver<chrome::mojom::CromitePrivateApiExtension>
+ receiver_;
+
+ bool enable_log_console_ = false;
+};
+
+#endif // CHROME_BROWSER_CROMITE_PRIVATE_API_HOST_H_
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sActAsWebView.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sActAsWebView.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sActAsWebView.java
@@ -0,0 +1,33 @@
+/*
+ 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 <https://www.gnu.org/licenses/>.
+*/
+
+package org.chromium.chrome.browser.flags.cromite;
+
+import org.chromium.components.cached_flags.CachedFlag;
+import org.chromium.chrome.browser.flags.ChromeFeatureMap;
+
+public class sActAsWebView {
+ private static final CachedFlag sInstance =
+ new CachedFlag(ChromeFeatureMap.getInstance(),
+ "ActAsWebView", false);
+
+ private sActAsWebView() {}
+
+ public static CachedFlag getInstance() {
+ return sInstance;
+ }
+}
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableCromiteTestSupport.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableCromiteTestSupport.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableCromiteTestSupport.java
@@ -0,0 +1,33 @@
+/*
+ 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 <https://www.gnu.org/licenses/>.
+*/
+
+package org.chromium.chrome.browser.flags.cromite;
+
+import org.chromium.components.cached_flags.CachedFlag;
+import org.chromium.chrome.browser.flags.ChromeFeatureMap;
+
+public class sEnableCromiteTestSupport {
+ private static final CachedFlag sInstance =
+ new CachedFlag(ChromeFeatureMap.getInstance(),
+ "EnableCromiteTestSupport", false);
+
+ private sEnableCromiteTestSupport() {}
+
+ public static CachedFlag getInstance() {
+ return sInstance;
+ }
+}
diff --git a/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/permissions/NotificationPermissionController.java b/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/permissions/NotificationPermissionController.java
--- a/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/permissions/NotificationPermissionController.java
+++ b/chrome/browser/notifications/android/java/src/org/chromium/chrome/browser/notifications/permissions/NotificationPermissionController.java
@@ -175,6 +175,7 @@ public class NotificationPermissionController {
* @return True if any UI was shown (either rationale dialog or OS prompt), false otherwise.
*/
public boolean requestPermissionIfNeeded(boolean contextual) {
+ if (!contextual) return false;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU || DeviceInfo.isRetailDemoMode()) {
return false;
}
diff --git a/chrome/browser/ui/startup/bad_flags_prompt.cc b/chrome/browser/ui/startup/bad_flags_prompt.cc
--- a/chrome/browser/ui/startup/bad_flags_prompt.cc
+++ b/chrome/browser/ui/startup/bad_flags_prompt.cc
@@ -221,6 +221,7 @@ static const std::variant<const base::Feature*, const char*>
#if BUILDFLAG(IS_ANDROID)
&chrome::android::kCommandLineOnNonRooted,
+ &features::kEnableCromiteTestSupport,
#endif
// This flag disables security for the Page Embedded Permission Control,
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -666,6 +666,7 @@ mojom("mojo_bindings") {
"actor.mojom",
"chrome_render_frame.mojom",
"google_accounts_private_api_extension.mojom",
+ "cromite_private_api_extension.mojom",
"media/webrtc_logging.mojom",
"net/net_error_page_support.mojom",
"net_benchmarking.mojom",
diff --git a/chrome/common/cromite_private_api_extension.mojom b/chrome/common/cromite_private_api_extension.mojom
new file mode 100644
--- /dev/null
+++ b/chrome/common/cromite_private_api_extension.mojom
@@ -0,0 +1,7 @@
+module chrome.mojom;
+
+interface CromitePrivateApiExtension {
+ GetComponentData(string id) => (string response);
+ StartComponentUpdate(string id);
+ SetEnableLogConsole(bool enabled);
+};
diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn
--- a/chrome/renderer/BUILD.gn
+++ b/chrome/renderer/BUILD.gn
@@ -81,6 +81,8 @@ static_library("renderer") {
"chrome_render_thread_observer.cc",
"chrome_render_thread_observer.h",
"custom_menu_commands.h",
+ "cromite/cromite_private_api_extension.cc",
+ "cromite/cromite_private_api_extension.h",
"google_accounts_private_api_extension.cc",
"google_accounts_private_api_extension.h",
"google_accounts_private_api_util.cc",
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -56,6 +56,7 @@
#include "chrome/renderer/chrome_render_frame_observer.h"
#include "chrome/renderer/chrome_render_thread_observer.h"
#include "chrome/renderer/controlled_frame/controlled_frame_extensions_renderer_api_provider.h"
+#include "chrome/renderer/cromite/cromite_private_api_extension.h"
#include "chrome/renderer/google_accounts_private_api_extension.h"
#include "chrome/renderer/loadtimes_extension_bindings.h"
#include "chrome/renderer/media/flash_embed_rewrite.h"
@@ -662,6 +663,7 @@ void ChromeContentRendererClient::RenderFrameCreated(
TrustedVaultEncryptionKeysExtension::Create(render_frame);
GoogleAccountsPrivateApiExtension::Create(render_frame);
+ CromitePrivateApiExtension::Create(render_frame);
if (render_frame->IsMainFrame())
new webapps::WebPageMetadataAgent(render_frame);
diff --git a/chrome/renderer/cromite/cromite_private_api_extension.cc b/chrome/renderer/cromite/cromite_private_api_extension.cc
new file mode 100644
--- /dev/null
+++ b/chrome/renderer/cromite/cromite_private_api_extension.cc
@@ -0,0 +1,203 @@
+#include "chrome/renderer/cromite/cromite_private_api_extension.h"
+
+#include "chrome/common/chrome_features.h"
+#include "content/public/common/content_features.h"
+#include "content/public/common/isolated_world_ids.h"
+#include "content/public/renderer/chrome_object_extensions_utils.h"
+#include "content/public/renderer/render_frame.h"
+#include "gin/arguments.h"
+#include "gin/function_template.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
+#include "third_party/blink/public/platform/platform.h"
+#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "v8/include/v8-context.h"
+#include "v8/include/v8-function.h"
+
+namespace {
+
+bool ShouldExposeCromitePrivateApi(
+ content::RenderFrame* render_frame) {
+ DCHECK(render_frame);
+ if (!base::FeatureList::IsEnabled(features::kEnableCromiteTestSupport))
+ return false;
+
+ GURL origin_url = GURL("chrome://version");
+ const url::Origin& allowed_origin = url::Origin::Create(origin_url);
+
+ const url::Origin origin = render_frame->GetWebFrame()->GetSecurityOrigin();
+ return origin == allowed_origin;
+}
+
+}
+
+CromitePrivateApiExtension::PendingRequest::PendingRequest(
+ v8::Isolate* isolate,
+ v8::Local<v8::Context> context,
+ v8::Local<v8::Promise::Resolver> resolver)
+ : isolate(isolate),
+ context(isolate, context),
+ promise_resolver(isolate, resolver) {}
+
+CromitePrivateApiExtension::PendingRequest::~PendingRequest() = default;
+
+// static
+void CromitePrivateApiExtension::Create(content::RenderFrame* frame) {
+ new CromitePrivateApiExtension(frame);
+}
+
+CromitePrivateApiExtension::CromitePrivateApiExtension(
+ content::RenderFrame* frame)
+ : content::RenderFrameObserver(frame) {}
+
+CromitePrivateApiExtension::~CromitePrivateApiExtension() =
+ default;
+
+void CromitePrivateApiExtension::OnDestruct() {
+ delete this;
+}
+
+void CromitePrivateApiExtension::DidCreateScriptContext(
+ v8::Local<v8::Context> v8_context,
+ int32_t world_id) {
+ if (!render_frame() || world_id != content::ISOLATED_WORLD_ID_GLOBAL) {
+ return;
+ }
+
+ if (ShouldExposeCromitePrivateApi(render_frame())) {
+ InjectScript();
+ }
+}
+
+void CromitePrivateApiExtension::InjectScript() {
+ DCHECK(render_frame());
+
+ blink::WebLocalFrame* web_frame = render_frame()->GetWebFrame();
+ v8::Isolate* isolate = web_frame->GetAgentGroupScheduler()->Isolate();
+ v8::HandleScope handle_scope(isolate);
+ v8::Local<v8::Context> context = web_frame->MainWorldScriptContext();
+ if (context.IsEmpty()) {
+ return;
+ }
+
+ v8::Context::Scope context_scope(context);
+
+ v8::Local<v8::Object> window =
+ content::GetOrCreateObject(isolate, context, "window");
+ v8::Local<v8::Object> oCromiteObject =
+ content::GetOrCreateObject(isolate, context, window, "cromite");
+
+ oCromiteObject
+ ->Set(
+ context, gin::StringToSymbol(isolate, "getComponentData"),
+ gin::CreateFunctionTemplate(
+ isolate, base::BindRepeating(
+ &CromitePrivateApiExtension::GetComponentData,
+ weak_ptr_factory_.GetWeakPtr()))
+ ->GetFunction(context)
+ .ToLocalChecked())
+ .Check();
+
+ oCromiteObject
+ ->Set(
+ context, gin::StringToSymbol(isolate, "startComponentUpdate"),
+ gin::CreateFunctionTemplate(
+ isolate, base::BindRepeating(
+ &CromitePrivateApiExtension::StartComponentUpdate,
+ weak_ptr_factory_.GetWeakPtr()))
+ ->GetFunction(context)
+ .ToLocalChecked())
+ .Check();
+
+ oCromiteObject
+ ->Set(
+ context, gin::StringToSymbol(isolate, "setEnableLogConsole"),
+ gin::CreateFunctionTemplate(
+ isolate, base::BindRepeating(
+ &CromitePrivateApiExtension::SetEnableLogConsole,
+ weak_ptr_factory_.GetWeakPtr()))
+ ->GetFunction(context)
+ .ToLocalChecked())
+ .Check();
+}
+
+void CromitePrivateApiExtension::GetComponentData(gin::Arguments* args) {
+ std::string component_id;
+ if (!args->GetNext(&component_id)) {
+ args->ThrowError();
+ return;
+ }
+
+ if (!remote_.is_bound()) {
+ render_frame()->GetRemoteAssociatedInterfaces()->GetInterface(&remote_);
+ }
+
+ v8::Isolate* isolate = args->isolate();
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+
+ v8::Local<v8::Promise::Resolver> resolver =
+ v8::Promise::Resolver::New(context).ToLocalChecked();
+ v8::Local<v8::Promise> promise = resolver->GetPromise();
+
+ base::UnguessableToken request_id = base::UnguessableToken::Create();
+ pending_requests_.emplace(
+ request_id,
+ std::make_unique<PendingRequest>(isolate, context, resolver));
+
+ remote_->GetComponentData(component_id,
+ base::BindOnce(&CromitePrivateApiExtension::OnGetComponentData,
+ weak_ptr_factory_.GetWeakPtr(), request_id));
+
+ args->Return(promise);
+}
+
+void CromitePrivateApiExtension::OnGetComponentData(const base::UnguessableToken callback_id,
+ const std::string& result) {
+ auto iter = pending_requests_.find(callback_id);
+ if (iter == pending_requests_.end())
+ return;
+
+ std::unique_ptr<PendingRequest> request = std::move(iter->second);
+ pending_requests_.erase(iter);
+
+ v8::HandleScope handle_scope(request->isolate);
+ v8::Local<v8::Context> context =
+ request->context.Get(request->isolate);
+ v8::Local<v8::Promise::Resolver> resolver =
+ request->promise_resolver.Get(request->isolate);
+
+ LOG(INFO) << "---CromitePrivateApiExtension::OnGetComponentData4";
+ resolver->Resolve(context,
+ gin::StringToV8(request->isolate, result))
+ .ToChecked();
+
+ LOG(INFO) << "---CromitePrivateApiExtension::OnGetComponentData5";
+}
+
+void CromitePrivateApiExtension::StartComponentUpdate(gin::Arguments* args) {
+ std::string component_id;
+ if (!args->GetNext(&component_id)) {
+ args->ThrowError();
+ return;
+ }
+
+ if (!remote_.is_bound()) {
+ render_frame()->GetRemoteAssociatedInterfaces()->GetInterface(&remote_);
+ }
+
+ remote_->StartComponentUpdate(component_id);
+}
+
+void CromitePrivateApiExtension::SetEnableLogConsole(gin::Arguments* args) {
+ bool enabled;
+ if (!args->GetNext(&enabled)) {
+ args->ThrowError();
+ return;
+ }
+
+ if (!remote_.is_bound()) {
+ render_frame()->GetRemoteAssociatedInterfaces()->GetInterface(&remote_);
+ }
+
+ remote_->SetEnableLogConsole(enabled);
+}
diff --git a/chrome/renderer/cromite/cromite_private_api_extension.h b/chrome/renderer/cromite/cromite_private_api_extension.h
new file mode 100644
--- /dev/null
+++ b/chrome/renderer/cromite/cromite_private_api_extension.h
@@ -0,0 +1,65 @@
+#ifndef CHROME_RENDERER_CROMITE_PRIVATE_API_EXTENSION_H_
+#define CHROME_RENDERER_CROMITE_PRIVATE_API_EXTENSION_H_
+
+#include "base/memory/weak_ptr.h"
+#include "chrome/common/cromite_private_api_extension.mojom.h"
+#include "content/public/renderer/render_frame_observer.h"
+#include "mojo/public/cpp/bindings/associated_remote.h"
+#include "v8/include/v8.h"
+
+namespace gin {
+class Arguments;
+} // namespace gin
+
+class CromitePrivateApiExtension : public content::RenderFrameObserver {
+ public:
+ // Creates a new instance, with ownership transferred to |*frame|.
+ static void Create(content::RenderFrame* frame);
+
+ CromitePrivateApiExtension(const CromitePrivateApiExtension&) =
+ delete;
+ CromitePrivateApiExtension& operator=(
+ const CromitePrivateApiExtension&) = delete;
+
+ ~CromitePrivateApiExtension() override;
+
+ // content::RenderFrameObserver:
+ void OnDestruct() override;
+ void DidCreateScriptContext(v8::Local<v8::Context> v8_context,
+ int32_t world_id) override;
+
+ private:
+
+ struct PendingRequest {
+ PendingRequest(
+ v8::Isolate* isolate,
+ v8::Local<v8::Context> context,
+ v8::Local<v8::Promise::Resolver> resolver);
+
+ ~PendingRequest();
+
+ raw_ptr<v8::Isolate> isolate;
+ v8::Global<v8::Context> context;
+ v8::Global<v8::Promise::Resolver> promise_resolver;
+ };
+
+ explicit CromitePrivateApiExtension(content::RenderFrame* frame);
+
+ void InjectScript();
+
+ void GetComponentData(gin::Arguments* args);
+ void OnGetComponentData(const base::UnguessableToken callback_id,
+ const std::string& label);
+ void StartComponentUpdate(gin::Arguments* args);
+ void SetEnableLogConsole(gin::Arguments* args);
+
+ std::map<const base::UnguessableToken,
+ std::unique_ptr<PendingRequest>> pending_requests_;
+
+ mojo::AssociatedRemote<chrome::mojom::CromitePrivateApiExtension>
+ remote_;
+ base::WeakPtrFactory<CromitePrivateApiExtension> weak_ptr_factory_{
+ this};
+};
+
+#endif // CHROME_RENDERER_CROMITE_PRIVATE_API_EXTENSION_H_
diff --git a/components/component_updater/component_updater_service.h b/components/component_updater/component_updater_service.h
--- a/components/component_updater/component_updater_service.h
+++ b/components/component_updater/component_updater_service.h
@@ -243,6 +243,7 @@ class OnDemandUpdater {
// the update will be applied. The caller can subscribe to component update
// service notifications and provide an optional callback to get the result
// of the call. The function does not implement any cooldown interval.
+ public:
virtual void OnDemandUpdate(const std::string& id,
Priority priority,
Callback callback) = 0;
diff --git a/content/browser/devtools/devtools_http_handler.cc b/content/browser/devtools/devtools_http_handler.cc
--- a/content/browser/devtools/devtools_http_handler.cc
+++ b/content/browser/devtools/devtools_http_handler.cc
@@ -16,6 +16,7 @@
#include "base/command_line.h"
#include "base/compiler_specific.h"
#include "base/files/file_util.h"
+#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/json/json_writer.h"
@@ -47,6 +48,7 @@
#include "content/public/browser/devtools_socket_factory.h"
#include "content/public/common/content_client.h"
#include "content/public/common/content_constants.h"
+#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"
#include "net/base/io_buffer.h"
@@ -610,9 +612,12 @@ void DevToolsHttpHandler::OnJsonRequest(
if (command == "version") {
base::DictValue version;
+ auto browser = GetContentClient()->browser()->GetProduct();
+ if (base::FeatureList::IsEnabled(features::kEnableCromiteTestSupport))
+ browser = "Chrome/0.0.0.0";
version.Set("Protocol-Version", DevToolsAgentHost::GetProtocolVersion());
version.Set("WebKit-Version", GetWebKitVersion());
- version.Set("Browser", GetContentClient()->browser()->GetProduct());
+ version.Set("Browser", browser);
version.Set("User-Agent", GetContentClient()->browser()->GetUserAgent());
version.Set("V8-Version", V8_VERSION_STRING);
std::string host = info.GetHeaderValue("host");
diff --git a/content/browser/log_console_message.cc b/content/browser/log_console_message.cc
--- a/content/browser/log_console_message.cc
+++ b/content/browser/log_console_message.cc
@@ -17,10 +17,23 @@ void LogConsoleMessage(blink::mojom::ConsoleMessageLevel log_level,
int32_t line_number,
bool is_builtin_component,
bool is_off_the_record,
- const std::u16string& source_id) {
+ const std::u16string& source_id,
+ bool is_log_console_enabled) {
+ if (base::FeatureList::IsEnabled(features::kEnableCromiteTestSupport)) {
+ LOG(INFO) << "CONSOLE:"
+ << "\"" << message << "\", source: " << source_id << " (" << line_number
+ << ")";
+ return;
+ }
const int32_t resolved_level =
is_builtin_component ? ConsoleMessageLevelToLogSeverity(log_level)
: ::logging::LOGGING_INFO;
+ if (is_log_console_enabled) {
+ logging::LogMessage("CONSOLE", line_number, resolved_level).stream()
+ << "\"" << message << "\", source: " << source_id << " (" << line_number
+ << ")";
+ return;
+ }
if (::logging::GetMinLogLevel() > resolved_level)
return;
diff --git a/content/browser/log_console_message.h b/content/browser/log_console_message.h
--- a/content/browser/log_console_message.h
+++ b/content/browser/log_console_message.h
@@ -19,7 +19,8 @@ void LogConsoleMessage(blink::mojom::ConsoleMessageLevel log_level,
int32_t line_number,
bool is_builtin_component,
bool is_off_the_record,
- const std::u16string& source_id);
+ const std::u16string& source_id,
+ bool is_log_console_enabled = false);
} // namespace content
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -327,6 +327,8 @@
#include "url/origin.h"
#include "url/url_constants.h"
+//#include "chrome/browser/cromite/cromite_private_api_host.h"
+
#if BUILDFLAG(IS_ANDROID)
#include "base/android/scoped_service_binding_batch.h"
#include "content/browser/accessibility/browser_accessibility_manager_android.h"
@@ -4997,7 +4999,8 @@ void RenderFrameHostImpl::DidAddMessageToConsole(
if (delegate_->DidAddMessageToConsole(this, log_level, message, line_no,
updated_source_id,
untrusted_stack_trace)) {
- return;
+ if (!base::FeatureList::IsEnabled(features::kEnableCromiteTestSupport))
+ return;
}
// Pass through log severity only on builtin components pages to limit console
@@ -5014,8 +5017,14 @@ void RenderFrameHostImpl::DidAddMessageToConsole(
const bool is_off_the_record =
GetSiteInstance()->GetBrowserContext()->IsOffTheRecord();
+ bool is_log_console_enabled = false;
+ // CromitePrivateApiHost* cromite_data =
+ // CromitePrivateApiHost::GetForCurrentDocument(this);
+ // if (cromite_data) {
+ // is_log_console_enabled = cromite_data->IsLogConsoleEnabled();
+ // }
LogConsoleMessage(log_level, message, line_no, is_builtin_component,
- is_off_the_record, updated_source_id);
+ is_off_the_record, updated_source_id, is_log_console_enabled);
}
void RenderFrameHostImpl::FrameSizeChanged(const gfx::Size& frame_size) {
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Enable-test-support.inc b/cromite_flags/chrome/browser/about_flags_cc/Enable-test-support.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/about_flags_cc/Enable-test-support.inc
@@ -0,0 +1,19 @@
+#ifdef FLAG_SECTION
+
+ {"enable-cromite-test-support",
+ "Enable support for cromite test",
+ "Setting allows the activation of specific APIs used for cromite testing. "
+ "Do not activate if you do not know what you are doing.", kOsAll,
+ FEATURE_VALUE_TYPE(features::kEnableCromiteTestSupport)},
+
+#if BUILDFLAG(IS_ANDROID)
+
+ {"act-as-webview",
+ "Enable webview support for cromite test",
+ "Setting allows the activation of specific APIs used for cromite testing. "
+ "Do not activate if you do not know what you are doing.", kOsAndroid,
+ FEATURE_VALUE_TYPE(features::kActAsWebView)},
+
+#endif
+
+#endif
diff --git a/cromite_flags/content/public/common/content_features_cc/Enable-test-support.inc b/cromite_flags/content/public/common/content_features_cc/Enable-test-support.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/public/common/content_features_cc/Enable-test-support.inc
@@ -0,0 +1,7 @@
+CROMITE_FEATURE(kEnableCromiteTestSupport,
+ "EnableCromiteTestSupport",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+
+CROMITE_FEATURE(kActAsWebView,
+ "ActAsWebView",
+ base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/cromite_flags/content/public/common/content_features_h/Enable-test-support.inc b/cromite_flags/content/public/common/content_features_h/Enable-test-support.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/public/common/content_features_h/Enable-test-support.inc
@@ -0,0 +1,2 @@
+CONTENT_EXPORT BASE_DECLARE_FEATURE(kEnableCromiteTestSupport);
+CONTENT_EXPORT BASE_DECLARE_FEATURE(kActAsWebView);
--
@@ -13,26 +13,25 @@ See also: https://github.com/bromite/bromite/issues/1474
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../java/res/xml/privacy_preferences.xml | 15 ++++++
.../browser/LaunchIntentDispatcher.java | 22 ++++++++
.../CustomTabIntentDataProvider.java | 22 ++++----
.../customtabs/CustomTabsConnection.java | 3 +-
.../IncognitoCustomTabIntentDataProvider.java | 14 +++++
.../privacy/settings/PrivacySettings.java | 51 +++++++++++++++++++
.../flags/android/chrome_feature_list.cc | 4 +-
.../browser/LaunchIntentDispatcher.java | 21 ++++++++
.../CustomTabIntentDataProvider.java | 4 +-
.../customtabs/CustomTabsConnection.java | 1 +
.../IncognitoCustomTabIntentDataProvider.java | 14 ++++++
.../privacy/settings/PrivacySettings.java | 50 +++++++++++++++++++
.../browser/flags/ChromeFeatureList.java | 3 ++
.../chrome/browser/tab/TabAssociatedApp.java | 6 ++-
...Add-custom-tab-intents-privacy-option.grdp | 25 +++++++++
...Add-custom-tab-intents-privacy-option.grdp | 25 ++++++++++
.../OriginVerifier.java | 5 ++
.../core/common/language_experiments.cc | 1 +
.../add-custom-tab-intents-privacy-option.inc | 1 +
13 files changed, 159 insertions(+), 13 deletions(-)
12 files changed, 144 insertions(+), 2 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -40,6 +40,21 @@ found in the LICENSE file.
@@ -56,6 +56,21 @@ found in the LICENSE file.
android:key="cromite_flags"
android:title="@string/cromite_flags_title"
app:url="@string/cromite_flags_url" />
@@ -57,15 +56,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -23,6 +23,7 @@ import androidx.core.os.BuildCompat;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.CommandLine;
+import org.chromium.base.ContextUtils;
import org.chromium.base.IntentUtils;
import org.chromium.base.Log;
import org.chromium.base.metrics.RecordHistogram;
@@ -53,6 +54,9 @@ import java.lang.annotation.Retention;
@@ -64,6 +64,9 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Set;
@@ -75,8 +66,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
/**
* Dispatches incoming intents to the appropriate activity based on the current configuration and
* Intent fired.
@@ -139,6 +143,9 @@ public class LaunchIntentDispatcher {
*/
@@ -267,6 +270,9 @@ public class LaunchIntentDispatcher {
@OptIn(markerClass = ExperimentalAuthTab.class)
public static boolean isCustomTabIntent(Intent intent) {
if (intent == null) return false;
+ if (!ContextUtils.getAppSharedPreferences()
@@ -85,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
Log.w(
TAG,
"CustomTabsIntent#shouldAlwaysUseBrowserUI() = "
@@ -165,6 +172,10 @@ public class LaunchIntentDispatcher {
@@ -295,6 +301,10 @@ public class LaunchIntentDispatcher {
// Make sure the result of the CustomTabActivity is forwarded to the client.
newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
@@ -96,7 +87,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
// Since configureIntentForResizableCustomTab() might change the componenet/class
// associated with the passed intent, it needs to be called after #setClassName(context,
// CustomTabActivity.class.getName());
@@ -342,6 +353,17 @@ public class LaunchIntentDispatcher {
@@ -490,6 +500,17 @@ public class LaunchIntentDispatcher {
if (Intent.ACTION_VIEW.equals(newIntent.getAction())
&& !IntentHandler.wasIntentSenderChrome(newIntent)) {
@@ -111,56 +102,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
+ IntentHandler.setTabLaunchType(newIntent, TabLaunchType.FROM_EXTERNAL_APP);
+ newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ }
if (!chromeTabbedTaskExists(mActivity)) {
if (!chromeTabbedTaskExists()) {
newIntent.putExtra(IntentHandler.EXTRA_STARTED_TABBED_CHROME_TASK, true);
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -239,16 +239,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
// Extra whose value is an array of ints that is supplied to
// SyntheticTrialRegistry::RegisterExternalExperiments().
- public static final String EXPERIMENT_IDS =
- "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS";
+ // public static final String EXPERIMENT_IDS =
+ // "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS";
// These Extra Intent parameters allow an Intent to enable or disable a set of Features.
// The set of Features that may be enabled or disabled is restricted by the code,
// and initially only two Features may be enabled together, or disabled together.
- public static final String EXPERIMENTS_ENABLE =
- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE";
- public static final String EXPERIMENTS_DISABLE =
- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE";
+ // public static final String EXPERIMENTS_ENABLE =
+ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE";
+ // public static final String EXPERIMENTS_DISABLE =
+ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE";
/**
* Extra that, if set, makes the Custom Tab Activity's height to be x pixels, the Custom Tab
@@ -696,7 +696,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION,
ScreenOrientation.DEFAULT));
- mGsaExperimentIds = IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS);
+ mGsaExperimentIds = null; //IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS);
mBreakPointDp = getActivityBreakPointFromIntent(intent);
mInitialActivityHeight = getInitialActivityHeightFromIntent(intent);
@@ -709,8 +709,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT);
mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED;
- mInteractWithBackground = CustomTabsIntent.isBackgroundInteractionEnabled(intent);
- if (IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) {
+ mInteractWithBackground = false; // CustomTabsIntent.isBackgroundInteractionEnabled(intent);
+ if (((false)) && IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) {
@BackgroundInteractBehavior
int backgroundInteractBehavior =
IntentUtils.safeGetIntExtra(
@@ -1379,7 +1379,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
@@ -1187,7 +1187,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
public @CustomTabProfileType int getCustomTabMode() {
return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()
? CustomTabProfileType.INCOGNITO
@@ -174,16 +122,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -786,7 +786,7 @@ public class CustomTabsConnection {
ThreadUtils.assertOnUiThread();
if (extras == null) return;
int[] experimentIds =
- IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS);
+ null; //IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS);
if (experimentIds == null) return;
// When ids are set through cct, they should not override existing ids.
boolean override = false;
@@ -1003,6 +1003,7 @@ public class CustomTabsConnection {
@@ -980,6 +980,7 @@ public class CustomTabsConnection {
PostTask.postTask(
TaskTraits.UI_DEFAULT,
() -> {
@@ -194,7 +133,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
@@ -45,6 +45,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
@@ -40,6 +40,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
import java.util.ArrayList;
import java.util.List;
@@ -204,7 +143,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco
/**
* A model class that parses the incoming intent for incognito Custom Tabs specific customization
* data.
@@ -134,6 +137,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
@@ -118,6 +121,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
}
private static boolean isIntentFromThirdPartyAllowed() {
@@ -214,7 +153,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco
return ChromeFeatureList.sCctIncognitoAvailableToThirdParty.isEnabled();
}
@@ -231,6 +237,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
@@ -217,6 +223,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
}
public static boolean isValidIncognitoIntent(Intent intent, boolean recordMetrics) {
@@ -225,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco
if (!isIncognitoRequested(intent)) return false;
var session = SessionHolder.getSessionHolderFromIntent(intent);
if (isIntentFromThirdPartyAllowed()
@@ -341,6 +351,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
@@ -330,6 +340,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
@Override
public @CustomTabProfileType int getCustomTabMode() {
@@ -239,17 +178,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -12,6 +12,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
+import android.os.Build;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.style.ClickableSpan;
@@ -86,6 +87,15 @@ import org.chromium.ui.text.SpanApplier;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
@@ -59,6 +59,15 @@ import org.chromium.device.DeviceFeatureList;
import org.chromium.device.DeviceFeatureMap;
import org.chromium.ui.text.SpanApplier;
+import android.app.role.RoleManager;
+import android.content.Context;
@@ -260,20 +191,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
+import org.chromium.base.IntentUtils;
+import org.chromium.base.PackageManagerUtils;
+
import androidx.annotation.Nullable;
import androidx.preference.PreferenceCategory;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
import org.chromium.base.shared_preferences.SharedPreferencesManager;
@@ -155,6 +165,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
startTag, endTag, new ChromeClickableSpan(context, onClickCallback));
}
@@ -107,6 +116,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
private IncognitoLockSettings mIncognitoLockSettings;
private final ObservableSupplierImpl<String> mPageTitle = new ObservableSupplierImpl<>();
+ private ChromeSwitchPreference allowCustomTabIntentsPref;
+ private ChromeSwitchPreference openExternalLinksPref;
+
@Override
public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) {
mPageTitle.set(getString(R.string.prefs_privacy_security));
@@ -405,6 +418,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -336,6 +348,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
new SpanApplier.SpanInfo("<link2>", "</link2>", servicesLink));
}
@@ -283,7 +214,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
@@ -425,6 +441,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -356,6 +371,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
UserPrefs.get(getProfile())
.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
@@ -315,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
}
return true;
}
@@ -457,6 +498,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -388,6 +428,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
}
@@ -332,44 +263,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
if (doNotTrackPref != null) {
doNotTrackPref.setSummary(
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
@@ -713,7 +713,9 @@ BASE_FEATURE(kMagicStackAndroid, base::FEATURE_ENABLED_BY_DEFAULT);
// Enables an experimental feature which forces mayLaunchUrl to use a different
// storage partition. This may reduce performance. This should not be enabled by
// default.
-BASE_FEATURE(kMayLaunchUrlUsesSeparateStoragePartition, base::FEATURE_DISABLED_BY_DEFAULT);
+CROMITE_FEATURE(kMayLaunchUrlUsesSeparateStoragePartition,
+ "MayLaunchUrlUsesSeparateStoragePartition",
+ base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kMediaIndicatorsAndroid, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kMostVisitedTilesCustomization, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kMostVisitedTilesReselect, base::FEATURE_DISABLED_BY_DEFAULT);
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
@@ -997,6 +997,8 @@ public abstract class ChromeFeatureList {
MOST_VISITED_TILES_CUSTOMIZATION,
/* defaultValue= */ true,
/* defaultValueInTests= */ true);
@@ -730,6 +730,8 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true);
public static final CachedFlag sMostVisitedTilesCustomization =
newCachedFlag(MOST_VISITED_TILES_CUSTOMIZATION, false);
+ public static final CachedFlag sMayLaunchurlUsesSeparateStoragePartition =
+ newCachedFlag(MAYLAUNCHURL_USES_SEPARATE_STORAGE_PARTITION, false);
public static final CachedFlag sMostVisitedTilesReselect =
newCachedFlag(MOST_VISITED_TILES_RESELECT, false);
public static final CachedFlag sMoveToFrontInLaunchIntentDispatcher =
@@ -1257,6 +1259,7 @@ public abstract class ChromeFeatureList {
sMaliciousApkDownloadCheck,
public static final CachedFlag sMultiInstanceApplicationStatusCleanup =
@@ -897,6 +899,7 @@ public abstract class ChromeFeatureList {
sNotificationTrampoline,
sMagicStackAndroid,
sMostVisitedTilesCustomization,
sMostVisitedTilesReselect,
+ sMayLaunchurlUsesSeparateStoragePartition,
sMoveToFrontInLaunchIntentDispatcher,
sMultiInstanceSharedPrefsMigration,
sMvcUpdateViewWhenModelChanged,
sMostVisitedTilesReselect,
sMultiInstanceApplicationStatusCleanup,
sNavBarColorAnimation,
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
@@ -90,7 +90,11 @@ public final class TabAssociatedApp extends TabWebContentsUserData implements Im
@@ -87,7 +87,11 @@ public final class TabAssociatedApp extends TabWebContentsUserData implements Im
public static boolean isOpenedFromExternalApp(Tab tab) {
TabAssociatedApp app = get(tab);
if (app == null) return false;
@@ -415,7 +332,7 @@ new file mode 100644
diff --git a/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java b/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
--- a/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
+++ b/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
@@ -181,6 +181,11 @@ public abstract class OriginVerifier {
@@ -180,6 +180,11 @@ public abstract class OriginVerifier {
assert mNativeOriginVerifier != 0
: "Either provide a browserContextHandle to "
+ "OriginVerifier#ctor or call initNativeOriginVerifier.";
@@ -430,9 +347,9 @@ diff --git a/components/content_relationship_verification/android/java/src/org/c
diff --git a/components/language/core/common/language_experiments.cc b/components/language/core/common/language_experiments.cc
--- a/components/language/core/common/language_experiments.cc
+++ b/components/language/core/common/language_experiments.cc
@@ -20,4 +20,5 @@ BASE_FEATURE(kTranslateOpenSettings, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kDisableGeoLanguageModel, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -32,4 +32,5 @@ BASE_FEATURE(kDisableGeoLanguageModel,
// Params:
const char kContentLanguagesDisableObserversParam[] = "disable_observers";
+SET_CROMITE_FEATURE_DISABLED(kCctAutoTranslate);
} // namespace language
@@ -441,5 +358,5 @@ new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
@@ -0,0 +1 @@
+// explicitly empty
+SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides);
--
+42 -48
View File
@@ -6,58 +6,69 @@ Corrected Exit functionality
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/values/ids.xml | 1 +
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++++
.../org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
.../chrome/browser/init/ChromeLifetimeController.java | 2 ++
.../tabbed_mode/TabbedAppMenuPropertiesDelegate.java | 7 +++++++
.../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
6 files changed, 23 insertions(+)
chrome/android/java/res/menu/main_menu.xml | 6 ++++++
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++++
.../src/org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
.../chrome/browser/init/ChromeLifetimeController.java | 2 ++
.../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
5 files changed, 21 insertions(+)
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
--- a/chrome/android/java/res/values/ids.xml
+++ b/chrome/android/java/res/values/ids.xml
@@ -125,6 +125,7 @@ found in the LICENSE file.
<item type="id" name="ntp_feed_header_menu_item_toggle_switch" />
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -166,6 +166,9 @@ found in the LICENSE file.
<item android:id="@+id/managed_by_menu_id"
android:title="@string/managed_browser"
android:icon="@drawable/ic_business" />
+ <item android:id="@+id/exit_id"
+ android:title="@string/menu_exit"
+ android:icon="@drawable/ic_exit_to_app_white_24dp" />
</group>
<!-- App Menu -->
+ <item type="id" name="exit_id" />
<item type="id" name="icon_row_menu_id" />
<item type="id" name="submenu_header_menu_id" />
<item type="id" name="forward_menu_id" />
<!-- Items shown only in the tab switcher -->
@@ -195,6 +198,9 @@ found in the LICENSE file.
<item android:id="@id/preferences_id"
android:title="@string/menu_settings"
android:icon="@drawable/settings_cog" />
+ <item android:id="@+id/exit_id"
+ android:title="@string/menu_exit"
+ android:icon="@drawable/ic_exit_to_app_white_24dp" />
</group>
<!-- Items shown only when the tablet has no visible tabs -->
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -395,6 +395,8 @@ import java.util.Set;
@@ -293,6 +293,8 @@ import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier;
import java.util.function.DoubleConsumer;
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
+
/**
* This is the main activity for ChromeMobile when not running in document mode. All the tabs are
* accessible via a chrome specific tab switching UI.
@@ -4132,6 +4134,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -3021,6 +3023,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
.closeTabs(
TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true);
RecordUserAction.record("MobileTabClosed");
+ } else if (id == R.id.exit_id) {
+ ApplicationLifetime.terminate(false);
} else if (id == R.id.close_all_tabs_menu_id) {
boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion);
// Close both incognito and normal tabs.
Runnable closeAllTabsRunnable =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -69,6 +69,7 @@ import org.chromium.base.supplier.SettableNullableObservableSupplier;
import org.chromium.chrome.R;
@@ -60,6 +60,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.ActivityUtils;
import org.chromium.chrome.browser.AppHooks;
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
import org.chromium.chrome.browser.ChromeActivitySessionTracker;
import org.chromium.chrome.browser.ChromeApplicationImpl;
import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
@@ -2724,6 +2725,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2374,6 +2375,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
return true;
}
@@ -72,15 +83,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
@@ -20,6 +20,7 @@ import org.chromium.build.annotations.MonotonicNonNull;
import org.chromium.build.annotations.NullMarked;
@@ -18,6 +18,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.chrome.browser.BrowserRestartActivity;
import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
/**
* Answers requests to kill and (potentially) restart Chrome's main browser process.
@@ -76,6 +77,7 @@ class ChromeLifetimeController
@@ -73,6 +74,7 @@ class ChromeLifetimeController
@Override
public void onTerminate(boolean restart) {
@@ -88,29 +99,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
mRestartChromeOnDestroy = restart;
// Tell all Chrome Activities to finish themselves.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -478,6 +478,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
modelList.add(buildContentFilterHelpCenterMenuItem(currentTab));
}
+ modelList.add(new MVCListAdapter.ListItem(
+ AppMenuHandler.AppMenuItemType.STANDARD,
+ buildModelForStandardMenuItem(
+ R.id.exit_id,
+ R.string.menu_exit,
+ shouldShowIconBeforeItem() ? R.drawable.ic_exit_to_app_white_24dp : 0)));
+
// Default browser promo menu item (entry point).
if (shouldShowDefaultBrowserPromo()) {
maybeAddDividerLine(modelList, R.id.divider_line_id);
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -4563,6 +4563,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_MENU_MORE_TOOLS" desc="Menu item to more tools. [CHAR_LIMIT=27]">
More tools
@@ -4345,6 +4345,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_MENU_AUTO_DARK_WEB_CONTENTS" desc="Menu item in Chrome's overflow/options menu. When Chrome's browser UI is set to dark theme and this option is checked, sites will have a dark theme automatically applied as well. [CHAR_LIMIT=24]">
Dark theme
</message>
+ <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
+ Exit
@@ -10,42 +10,42 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/autocomplete_controller.cc | 10 ++++++
.../omnibox/browser/history_url_provider.cc | 3 ++
components/omnibox/browser/search_provider.cc | 4 +++
components/url_formatter/url_fixer.cc | 3 ++
components/url_formatter/url_fixer.cc | 4 +++
...lag-for-omnibox-autocomplete-filtering.inc | 32 +++++++++++++++++++
5 files changed, 52 insertions(+)
5 files changed, 53 insertions(+)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-flag-for-omnibox-autocomplete-filtering.inc
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
--- a/components/omnibox/browser/autocomplete_controller.cc
+++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -22,6 +22,7 @@
#include <utility>
#include "base/check_op.h"
#include "base/containers/contains.h"
+#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/format_macros.h"
#include "base/functional/bind.h"
@@ -547,6 +548,15 @@ AutocompleteController::AutocompleteController(
@@ -540,6 +541,15 @@ AutocompleteController::AutocompleteController(
provider_client_->GetOmniboxTriggeredFeatureService()),
steady_state_omnibox_position_(
metrics::OmniboxEventProto::UNKNOWN_POSITION),
config_(config) {
metrics::OmniboxEventProto::UNKNOWN_POSITION) {
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering")) {
+ const std::string flag_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering");
+ config_.provider_types &= AutocompleteProvider::TYPE_KEYWORD | AutocompleteProvider::TYPE_SEARCH |
+ provider_types &= AutocompleteProvider::TYPE_KEYWORD | AutocompleteProvider::TYPE_SEARCH |
+ AutocompleteProvider::TYPE_HISTORY_URL | AutocompleteProvider::TYPE_BOOKMARK | AutocompleteProvider::TYPE_BUILTIN;
+ if (!flag_value.contains("bookmarks"))
+ config_.provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK;
+ if (!flag_value.contains("chrome"))
+ config_.provider_types &= ~AutocompleteProvider::TYPE_BUILTIN;
+ if (!base::Contains(flag_value, "bookmarks"))
+ provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK;
+ if (!base::Contains(flag_value, "chrome"))
+ provider_types &= ~AutocompleteProvider::TYPE_BUILTIN;
+ }
config_.provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes();
provider_types &= ~OmniboxFieldTrial::GetDisabledProviderTypes();
// Providers run in the order they're added. Async providers should run first
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
--- a/components/omnibox/browser/history_url_provider.cc
+++ b/components/omnibox/browser/history_url_provider.cc
@@ -488,6 +488,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
@@ -489,6 +489,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY)
matches_.push_back(what_you_typed_match);
@@ -58,7 +58,7 @@ diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omn
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
--- a/components/omnibox/browser/search_provider.cc
+++ b/components/omnibox/browser/search_provider.cc
@@ -17,6 +17,7 @@
@@ -14,6 +14,7 @@
#include "base/base64.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
@@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/
#include "base/functional/callback.h"
#include "base/i18n/break_iterator.h"
#include "base/i18n/case_conversion.h"
@@ -662,6 +663,9 @@ void SearchProvider::Run(bool query_is_private) {
@@ -629,6 +630,9 @@ void SearchProvider::Run(bool query_is_private) {
}
void SearchProvider::DoHistoryQuery(bool minimal_changes) {
@@ -79,20 +79,21 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/
diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
--- a/components/url_formatter/url_fixer.cc
+++ b/components/url_formatter/url_fixer.cc
@@ -11,6 +11,7 @@
@@ -15,6 +15,8 @@
#include <string_view>
#include "base/check_op.h"
#include "base/compiler_specific.h"
+#include "base/containers/contains.h"
+#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/i18n/char_iterator.h"
@@ -639,6 +640,8 @@ GURL FixupURLInternal(const std::string& text,
@@ -655,6 +657,8 @@ GURL FixupURLInternal(const std::string& text,
FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url);
if (chrome_url && !parts.host.is_valid()) {
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering") ||
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering").contains("chrome"))
+ base::Contains(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("omnibox-autocomplete-filtering"), "chrome"))
url.append(kChromeUIDefaultHost);
}
FixupPort(trimmed, parts.port, &url);
@@ -8,13 +8,40 @@ with limited CPU/memory resources and it is disabled by default.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../common/network_features.cc | 3 +++
.../common/network_features.h | 4 ++++
.../common/network_switch_list.h | 4 ++++
.../spoof_checks/top_domains/BUILD.gn | 1 +
...o-configure-maximum-connections-per-host.inc | 17 +++++++++++++++++
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
4 files changed, 39 insertions(+)
6 files changed, 46 insertions(+)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-flag-to-configure-maximum-connections-per-host.inc
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
--- a/components/network_session_configurator/common/network_features.cc
+++ b/components/network_session_configurator/common/network_features.cc
@@ -8,4 +8,7 @@
namespace features {
+const char kMaxConnectionsPerHostChoiceDefault[] = "6",
+ kMaxConnectionsPerHostChoice15[] = "15";
+
} // namespace features
diff --git a/components/network_session_configurator/common/network_features.h b/components/network_session_configurator/common/network_features.h
--- a/components/network_session_configurator/common/network_features.h
+++ b/components/network_session_configurator/common/network_features.h
@@ -10,6 +10,10 @@
namespace features {
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kMaxConnectionsPerHostChoiceDefault[],
+ kMaxConnectionsPerHostChoice6[],
+ kMaxConnectionsPerHostChoice15[];
+
} // namespace features
#endif // COMPONENTS_NETWORK_SESSION_CONFIGURATOR_COMMON_NETWORK_FEATURES_H_
diff --git a/components/network_session_configurator/common/network_switch_list.h b/components/network_session_configurator/common/network_switch_list.h
--- a/components/network_session_configurator/common/network_switch_list.h
+++ b/components/network_session_configurator/common/network_switch_list.h
@@ -27,8 +54,8 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
+NETWORK_SWITCH(kMaxConnectionsPerHost, "max-connections-per-host")
+
// Ignores certificate-related errors.
// Note: In tests using net::EmbeddedTestServer with a custom hostname not
// covered by the default test certs, using this switch is usually incorrect.
NETWORK_SWITCH(kIgnoreCertificateErrors, "ignore-certificate-errors")
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
@@ -48,8 +75,8 @@ new file mode 100644
+#ifdef FEATURE_PARAM_SECTION
+
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
+ {/*features::kMaxConnectionsPerHostChoiceDefault*/ "6", "", ""},
+ {/*features::kMaxConnectionsPerHostChoice15*/ "15", switches::kMaxConnectionsPerHost, "15"},
+ {features::kMaxConnectionsPerHostChoiceDefault, "", ""},
+ {features::kMaxConnectionsPerHostChoice15, switches::kMaxConnectionsPerHost, "15"},
+};
+
+#endif
@@ -65,7 +92,7 @@ new file mode 100644
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -21,6 +21,10 @@
@@ -22,6 +22,10 @@
#include "net/socket/client_socket_handle.h"
#include "net/socket/client_socket_pool.h"
#include "net/socket/connect_job.h"
@@ -76,8 +103,8 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
#include "net/ssl/ssl_config.h"
#include "url/gurl.h"
#include "url/scheme_host_port.h"
@@ -162,6 +166,19 @@ void ClientSocketPoolManager::set_socket_soft_cap_per_pool_for_test(
size_t ClientSocketPoolManager::max_sockets_per_group(
@@ -161,6 +165,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
int ClientSocketPoolManager::max_sockets_per_group(
HttpNetworkSession::SocketPoolType pool_type) {
DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);
+
@@ -45,18 +45,18 @@ new file mode 100644
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1215,6 +1215,7 @@ component("net") {
":net_deps",
@@ -1118,6 +1118,7 @@ component("net") {
"//build:chromeos_buildflags",
"//components/miracle_parameter/common",
"//components/network_time/time_tracker",
"//components/unexportable_keys",
+ "//components/network_session_configurator/common",
"//net/http:transport_security_state_generated_files",
"//third_party/simdutf",
"//third_party/simdutf:simdutf",
]
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
--- a/net/dns/host_resolver_manager.cc
+++ b/net/dns/host_resolver_manager.cc
@@ -115,6 +115,7 @@
@@ -114,6 +114,7 @@
#include "net/log/net_log_event_type.h"
#include "net/log/net_log_source.h"
#include "net/log/net_log_source_type.h"
@@ -64,7 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
#include "net/log/net_log_with_source.h"
#include "net/socket/client_socket_factory.h"
#include "net/url_request/url_request_context.h"
@@ -1506,6 +1507,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck(
@@ -1425,6 +1426,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck(
return OK;
}
@@ -12,17 +12,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../java/res/xml/privacy_preferences.xml | 7 +++-
.../customtabs/CustomTabDelegateFactory.java | 2 ++
.../ExternalNavigationDelegateImpl.java | 6 ++--
.../ExternalNavigationDelegateImpl.java | 4 ++-
.../cromite/sAllowExternalIntentRequests.java | 33 +++++++++++++++++++
...g-to-disable-external-intent-requests.grdp | 9 +++++
.../android/external_intents_features.cc | 6 ++++
.../android/external_intents_features.cc | 7 +++-
.../android/external_intents_features.h | 1 +
.../ExternalIntentsFeatures.java | 6 ++++
.../ExternalNavigationHandler.java | 21 ++++++++++++
...ag-to-disable-external-intent-requests.inc | 13 ++++++++
...t-Delete-block-external-form-redirects.inc | 15 +++++++++
...ag-to-disable-external-intent-requests.inc | 3 ++
12 files changed, 119 insertions(+), 3 deletions(-)
12 files changed, 118 insertions(+), 3 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAllowExternalIntentRequests.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-flag-to-disable-external-intent-requests.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc
@@ -32,7 +32,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -65,7 +65,12 @@ found in the LICENSE file.
@@ -81,7 +81,12 @@ found in the LICENSE file.
android:title="@string/settings_incognito_tab_lock_title"
android:summary="@string/settings_incognito_tab_lock_summary_android_setting_off"
android:persistent="false" />
@@ -45,11 +45,11 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
+ app:needRestart="false" />
<PreferenceCategory
android:key="security_section"
android:title="@string/security_section_title" />
android:title="@string/security_section_title" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabDelegateFactory.java
@@ -39,6 +39,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator;
@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.ephemeraltab.EphemeralTabCoordinator;
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
import org.chromium.chrome.browser.flags.ActivityType;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -57,7 +57,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
import org.chromium.chrome.browser.fullscreen.FullscreenManager;
import org.chromium.chrome.browser.init.ChromeActivityNativeDelegate;
@@ -167,6 +168,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory {
@@ -133,6 +134,7 @@ public class CustomTabDelegateFactory implements TabDelegateFactory {
@Override
public boolean shouldDisableAllExternalIntents() {
@@ -68,30 +68,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
@@ -27,6 +27,7 @@ import org.chromium.base.ResettersForTesting;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
@@ -20,6 +20,7 @@ import org.chromium.base.IntentUtils;
import org.chromium.base.PackageManagerUtils;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.browser.ChromeTabbedActivity2;
+import org.chromium.chrome.browser.flags.cromite.sAllowExternalIntentRequests;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.browserservices.intents.WebappConstants;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
@@ -139,7 +140,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@Override
public boolean shouldDisableExternalIntentRequestsForUrl(
ExternalNavigationParams params, Intent intent) {
- return false;
+ if ("tel".equals(params.getUrl().getScheme())) return false;
+ return !sAllowExternalIntentRequests.getInstance().isEnabled();
}
import org.chromium.chrome.browser.password_manager.CctPasswordSavingMetricsRecorderBridge;
import org.chromium.chrome.browser.safe_browsing.SafeBrowsingBridge;
@@ -107,7 +108,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@Override
@@ -320,7 +322,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
&& params.isInitialNavigationInFrame()
// TODO(crbug.com/452537438): Figure out a better way to check whether we are in
// desktop windowing mode or if the device can enter desktop windowing mode.
- && (DeviceInfo.isDesktop() || params.isInDesktopWindowingMode());
+ && (params.isInDesktopWindowingMode());
public boolean shouldDisableExternalIntentRequestsForUrl(GURL url) {
- return false;
+ if ("tel".equals(url.getScheme())) return false;
+ return !sAllowExternalIntentRequests.getInstance().isEnabled();
}
@Override
@@ -150,21 +141,28 @@ new file mode 100644
diff --git a/components/external_intents/android/external_intents_features.cc b/components/external_intents/android/external_intents_features.cc
--- a/components/external_intents/android/external_intents_features.cc
+++ b/components/external_intents/android/external_intents_features.cc
@@ -32,8 +32,14 @@ BASE_FEATURE(kExternalNavigationDebugLogs, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kNavigationCaptureRefactorAndroid,
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -27,7 +27,6 @@ namespace {
const base::Feature* const kFeaturesExposedToJava[] = {
&kExternalNavigationDebugLogs, &kBlockFrameRenavigations,
&kBlockIntentsToSelf, &kTrustedClientGestureBypass};
-
} // namespace
// Alphabetical:
@@ -48,7 +47,13 @@ BASE_FEATURE(kTrustedClientGestureBypass,
"TrustedClientGestureBypass",
base::FEATURE_ENABLED_BY_DEFAULT);
+CROMITE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture,
+ "IntentBlockExternalFormRedirectsNoGesture",
+ base::FEATURE_ENABLED_BY_DEFAULT);
+
static int64_t JNI_ExternalIntentsFeatures_GetFeature(JNIEnv* env,
int32_t ordinal) {
static jlong JNI_ExternalIntentsFeatures_GetFeature(JNIEnv* env, jint ordinal) {
+ if (ordinal == -1)
+ return reinterpret_cast<int64_t>(&kIntentBlockExternalFormRedirectsNoGesture);
return reinterpret_cast<int64_t>(
UNSAFE_TODO(kFeaturesExposedToJava[ordinal]));
+ return reinterpret_cast<jlong>(&kIntentBlockExternalFormRedirectsNoGesture);
return reinterpret_cast<jlong>(kFeaturesExposedToJava[ordinal]);
}
diff --git a/components/external_intents/android/external_intents_features.h b/components/external_intents/android/external_intents_features.h
--- a/components/external_intents/android/external_intents_features.h
+++ b/components/external_intents/android/external_intents_features.h
@@ -175,28 +173,28 @@ diff --git a/components/external_intents/android/external_intents_features.h b/c
+BASE_DECLARE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture);
BASE_DECLARE_FEATURE(kExternalNavigationDebugLogs);
BASE_DECLARE_FEATURE(kBlockFrameRenavigations);
BASE_DECLARE_FEATURE(kNavigationCaptureRefactorAndroid);
BASE_DECLARE_FEATURE(kBlockIntentsToSelf);
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalIntentsFeatures.java
@@ -19,6 +19,12 @@ import org.chromium.build.annotations.NullMarked;
@@ -18,6 +18,12 @@ import org.chromium.base.Features;
*/
@JNINamespace("external_intents")
@NullMarked
public class ExternalIntentsFeatures {
public class ExternalIntentsFeatures extends Features {
+ public static final String INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME =
+ "IntentBlockExternalFormRedirectsNoGesture";
+
+ public static final ExternalIntentsFeature INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE =
+ new ExternalIntentsFeature(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME);
+ public static final ExternalIntentsFeatures INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE =
+ new ExternalIntentsFeatures(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME);
+
public static final String EXTERNAL_NAVIGATION_DEBUG_LOGS_NAME = "ExternalNavigationDebugLogs";
public static final String NAVIGATION_CAPTURE_REFACTOR_ANDROID_NAME =
"NavigationCaptureRefactorAndroid";
public static final String BLOCK_FRAME_RENAVIGATIONS_NAME = "BlockFrameRenavigations3";
public static final String BLOCK_INTENTS_TO_SELF_NAME = "BlockIntentsToSelf";
diff --git a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
--- a/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
+++ b/components/external_intents/android/java/src/org/chromium/components/external_intents/ExternalNavigationHandler.java
@@ -1796,6 +1796,12 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper {
return false;
@@ -1529,6 +1529,12 @@ public class ExternalNavigationHandler {
|| ignoreBackForwardNav(params);
}
+ /** Wrapper of check against the feature to support overriding for testing. */
@@ -208,7 +206,7 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component
private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal(
ExternalNavigationParams params,
Intent targetIntent,
@@ -1883,6 +1889,21 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper {
@@ -1585,6 +1591,21 @@ public class ExternalNavigationHandler {
return OverrideUrlLoadingResult.forNoOverride();
}
@@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -81,6 +81,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
@@ -104,6 +104,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
if (command_line.HasSwitch(switches::kDisableMediaSessionAPI)) {
WebRuntimeFeatures::EnableMediaSession(false);
}
@@ -59,14 +59,14 @@ new file mode 100644
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -70,6 +70,7 @@ class BLINK_PLATFORM_EXPORT WebRuntimeFeatures : public WebRuntimeFeaturesBase {
@@ -71,6 +71,7 @@ class BLINK_PLATFORM_EXPORT WebRuntimeFeatures : public WebRuntimeFeaturesBase {
static void EnableFingerprintingCanvasImageDataNoise(bool);
static void EnableFluentScrollbars(bool);
static void EnableDesktopAndroidScrollbars(bool);
static void EnableFluentOverlayScrollbars(bool);
+ static void EnableVibration(bool);
static void EnableLocalNetworkAccessWebRTC(bool);
WebRuntimeFeatures() = delete;
};
diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
--- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc
+++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
@@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1216,6 +1216,10 @@
@@ -858,6 +858,10 @@
{
name: "CompositingDecisionAtAnimationPhaseBoundaries"
},
@@ -7,71 +7,49 @@ Allows build with clangd by suppressing unsupported parameters
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
build/config/compiler/BUILD.gn | 17 ++++++++++++++---
build_overrides/build.gni | 5 +++++
2 files changed, 19 insertions(+), 3 deletions(-)
build/config/compiler/BUILD.gn | 11 ++++++++++-
build_overrides/build.gni | 3 +++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -669,7 +669,7 @@ config("compiler") {
# TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
# It also causes segfault on Linux s390x:
# https://github.com/llvm/llvm-project/issues/149511
- if (is_linux && use_lld && current_cpu != "arm" && current_cpu != "s390x") {
+ if (is_linux && !skip_clangd_unsupported_options && use_lld && current_cpu != "arm" && current_cpu != "s390x") {
cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
}
}
@@ -1861,7 +1861,7 @@ config("clang_revision") {
# e.g. by setting in the the project's .gn file.
config("clang_warning_suppression") {
# Some build configs use older versions of clang that don't support WSMs
- if (use_clang_warning_suppression_file) {
+ if (use_clang_warning_suppression_file && !skip_clangd_unsupported_options) {
from_build_root =
rebase_path(clang_warning_suppression_file, root_build_dir)
inputs = [ clang_warning_suppression_file ]
@@ -2236,7 +2236,9 @@ config("default_warnings") {
# TODO(crbug.com/432275627): Fix and re-enable.
"-Wno-uninitialized-const-pointer",
]
@@ -1974,7 +1974,6 @@ config("default_warnings") {
# TODO(crbug.com/40284799): Fix and re-enable.
"-Wno-thread-safety-reference-return",
]
-
+ if (skip_clangd_unsupported_options) {
+ cflags -= [ "-Wno-uninitialized-const-pointer" ]
+ }
cflags_cc += [
# TODO(crbug.com/328490295): Fix and re-enable for C flags.
"-Wenum-compare-conditional",
@@ -2290,6 +2292,15 @@ config("default_warnings") {
ldflags += [ "-Wno-version-check" ]
cflags_cc += [
# TODO(crbug.com/328490295): Fix and re-enable for C flags.
"-Wenum-compare-conditional",
@@ -1992,6 +1991,16 @@ config("default_warnings") {
# TODO(crbug.com/376641662): Fix and re-enable.
cflags += [ "-Wno-nontrivial-memcall" ]
}
+ if (skip_clangd_unsupported_options) {
+ cflags -= [
+ "-Wno-thread-safety-reference-return",
+ "-Wno-nontrivial-memcall",
+ ]
+ cflags_cc -= [
+ "-Wno-c++11-narrowing-const-reference",
+ "-Wno-missing-template-arg-list-after-template-kw",
+ ]
+ }
}
+ if (skip_clangd_unsupported_options) {
+ cflags -= [
+ "-Wno-thread-safety-reference-return",
+ "-Wno-nontrivial-memcall",
+ ]
+ cflags_cc -= [
+ ]
+ }
+
# Disable the GNU line marker warning when building a target with Icecc,
# ccache, or both. This warning appears frequently when compiling
# files that use GNU-style line markers with Clang and Icecc. It can
# Some builders, such as Cronet, use a different version of Clang than
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
--- a/build_overrides/build.gni
+++ b/build_overrides/build.gni
@@ -54,6 +54,11 @@ declare_args() {
gtest_enable_absl_printers = true
}
@@ -54,6 +54,9 @@ declare_args() {
# to lack of toolchain support.
gtest_enable_absl_printers = !is_nacl
+declare_args() {
+ # Allows clangd builds by suppressing unsupported parameters
+ skip_clangd_unsupported_options = false
+}
+
# Features used by //base/trace_event.
declare_args() {
# Use Perfetto's trace processor for converting protobuf-encoded traces to
# Allow projects that wish to stay on C++17 to override Chromium's default.
# TODO(crbug.com/40251117): evaluate removing this end of 2023
use_cxx17 = false
--
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -4,30 +4,45 @@ Subject: Add menu item to view source
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/values/ids.xml | 1 +
.../chrome/browser/ChromeTabbedActivity.java | 2 ++
.../chrome/browser/app/ChromeActivity.java | 5 ++++
.../AppMenuPropertiesDelegateImpl.java | 24 +++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 3 +++
.../TabbedAppMenuPropertiesDelegate.java | 3 +++
.../strings/android_chrome_strings.grd | 4 ++++
7 files changed, 42 insertions(+)
.../android/java/res/menu/custom_tabs_menu.xml | 3 +++
chrome/android/java/res/menu/main_menu.xml | 3 +++
.../chrome/browser/ChromeTabbedActivity.java | 2 ++
.../chrome/browser/app/ChromeActivity.java | 5 +++++
.../appmenu/AppMenuPropertiesDelegateImpl.java | 18 ++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
.../android/strings/android_chrome_strings.grd | 4 ++++
7 files changed, 36 insertions(+)
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
--- a/chrome/android/java/res/values/ids.xml
+++ b/chrome/android/java/res/values/ids.xml
@@ -136,6 +136,7 @@ found in the LICENSE file.
<item type="id" name="update_menu_id" />
<item type="id" name="new_tab_menu_id" />
<item type="id" name="new_incognito_tab_menu_id" />
+ <item type="id" name="view_source_id" />
<item type="id" name="add_to_group_menu_id" />
<item type="id" name="pin_tab_menu_id" />
<item type="id" name="unpin_tab_menu_id" />
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -58,6 +58,9 @@ found in the LICENSE file.
<item android:id="@+id/universal_install"
android:title="@string/menu_add_to_homescreen"
android:orderInCategory="2" />
+ <item android:id="@+id/view_source_id"
+ android:title="@string/view_source"
+ android:orderInCategory="2" />
<item android:id="@+id/open_webapk_id"
android:title="@string/menu_open_webapk"
android:orderInCategory="2" />
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -119,6 +119,9 @@ found in the LICENSE file.
<item android:id="@+id/universal_install"
android:title="@string/menu_add_to_homescreen"
android:icon="@drawable/ic_add_to_home_screen" />
+ <item android:id="@+id/view_source_id"
+ android:title="@string/view_source"
+ android:icon="@drawable/ic_drive_document_24dp" />
<item android:id="@+id/open_webapk_id"
android:title="@string/menu_open_webapk"
android:icon="@drawable/ic_open_webapk" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -4196,6 +4196,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -3086,6 +3086,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
}
RecordUserAction.record("MobileMenuDownloadManager");
@@ -35,12 +50,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
+ currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
} else if (id == R.id.open_recently_closed_tab) {
TabModel currentModel = mTabModelSelector.getCurrentModel();
if (!currentModel.isIncognito()) {
if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedEntry();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -2888,6 +2888,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
return AppInstallMenuHandler.doOpenWebApk(this, currentTab);
@@ -2524,6 +2524,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
return doOpenWebApk(currentTab);
}
+ if (id == R.id.view_source_id) {
@@ -54,8 +69,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -1057,6 +1057,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
return false;
@@ -580,6 +580,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
isNativePage, isFileScheme, isContentScheme, isIncognito, url));
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isNativePage);
+ updateViewSourceMenuItem(menu, currentTab);
updateAutoDarkMenuItem(menu, currentTab, isNativePage);
@@ -1293,6 +1294,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
findInPageMenuRow.setVisible(itemVisible);
}
+ /**
@@ -64,58 +87,36 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
+ * @param menu {@link Menu} for view source.
+ * @param currentTab Current tab being displayed.
+ */
+ protected void buildAddViewSourceItem(
+ MVCListAdapter.ModelList modelList,
+ @Nullable Tab currentTab) {
+ protected void updateViewSourceMenuItem(
+ Menu menu, Tab currentTab) {
+ MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
+ boolean visible = false;
+ if (currentTab != null) {
+ String url = currentTab.getUrl().getSpec();
+ visible = !url.isEmpty() && !url.startsWith("view-source:");
+ }
+ if (visible) {
+ modelList.add(new MVCListAdapter.ListItem(
+ AppMenuHandler.AppMenuItemType.STANDARD,
+ buildModelForStandardMenuItem(
+ R.id.view_source_id,
+ R.string.view_source,
+ shouldShowIconBeforeItem() ? R.drawable.ic_drive_document_24dp : 0)));
+ String url = currentTab.getUrl().getSpec();
+ visible = !url.isEmpty() && !url.startsWith("view-source:");
+ }
+ viewSourceMenuItem.setVisible(visible);
+ }
+
/**
* Updates the bookmark item's visibility.
* Updates the request desktop site item's state.
*
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -407,6 +407,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
modelList.add(buildOpenInAppItem());
}
@@ -303,6 +303,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
+ // Add view source item
+ buildAddViewSourceItem(modelList, currentTab);
+
// --- Request Desktop Site ---
if (requestDesktopSiteVisible) {
MVCListAdapter.ListItem rdsListItem =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java
@@ -424,6 +424,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
modelList.add(buildOpenInAppItem());
updateRequestDesktopSiteMenuItem(
menu, currentTab, requestDesktopSiteVisible, isNativePage);
+ updateViewSourceMenuItem(menu, currentTab);
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
}
+ // Add view source item
+ buildAddViewSourceItem(modelList, currentTab);
+
// RDS
MVCListAdapter.ListItem rdsListItem =
maybeBuildRequestDesktopSiteListItem(
}
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -346,6 +346,10 @@ CHAR_LIMIT guidelines:
Chrome Tips
@@ -315,6 +315,10 @@ CHAR_LIMIT guidelines:
Collaboration
</message>
+ <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
@@ -15,12 +15,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
@@ -536,7 +536,12 @@ class TabGridViewBinder {
@@ -408,7 +408,12 @@ class TabGridViewBinder {
if (result != null) {
TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize);
} else {
thumbnail.setThumbnailViewState(ThumbnailViewState.PLACEHOLDER_LOADED);
- thumbnail.setImageDrawable(null);
+ TabFavicon tabFavicon = model.get(TabProperties.FAVICON);
+ TabListFaviconProvider.TabFavicon tabFavicon = model.get(TabProperties.FAVICON);
+ if (tabFavicon != null) {
+ thumbnail.setScaleType(ImageView.ScaleType.CENTER);
+ thumbnail.setImageDrawable(
@@ -29,10 +29,10 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
}
};
if (sThumbnailFetcherForTesting != null) {
@@ -574,6 +579,7 @@ class TabGridViewBinder {
@@ -449,6 +454,7 @@ class TabGridViewBinder {
*/
private static void setFavicon(
ImageView faviconView, PropertyModel model, @Nullable TabFavicon favicon) {
ImageView faviconView, PropertyModel model, TabListFaviconProvider.TabFavicon favicon) {
+ model.set(TabProperties.FAVICON, favicon);
if (favicon == null) {
faviconView.setImageDrawable(null);
@@ -40,7 +40,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java
@@ -131,6 +131,9 @@ public class TabProperties {
@@ -72,6 +72,9 @@ public class TabProperties {
public static final WritableBooleanPropertyKey FAVICON_FETCHED =
new WritableBooleanPropertyKey();
@@ -50,15 +50,15 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
/** Property for lazily fetching favicons when required by an item in a UI. */
public static final WritableObjectPropertyKey<TabListFaviconProvider.TabFaviconFetcher>
FAVICON_FETCHER = new WritableObjectPropertyKey<>();
@@ -233,6 +236,7 @@ public class TabProperties {
@@ -155,6 +158,7 @@ public class TabProperties {
CARD_TYPE,
CONTENT_DESCRIPTION_TEXT_RESOLVER,
ACTION_BUTTON_DESCRIPTION_TEXT_RESOLVER,
+ FAVICON,
SHOPPING_PERSISTED_TAB_DATA_FETCHER,
SHOULD_SHOW_PRICE_DROP_TOOLTIP,
QUICK_DELETE_ANIMATION_STATUS,
TAB_GROUP_COLOR_VIEW_PROVIDER,
TAB_GROUP_CARD_COLOR,
@@ -274,6 +278,7 @@ public class TabProperties {
@@ -173,6 +177,7 @@ public class TabProperties {
TAB_ACTION_BUTTON_DATA,
FAVICON_FETCHED,
FAVICON_FETCHER,
@@ -69,7 +69,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -61,6 +61,11 @@ found in the LICENSE file.
@@ -77,6 +77,11 @@ found in the LICENSE file.
android:title="@string/open_external_links_incognito_title"
android:summary="@string/open_external_links_incognito_summary"
android:defaultValue="false" />
@@ -84,19 +84,19 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -160,6 +160,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
@@ -139,6 +139,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory;
import org.chromium.chrome.browser.printing.TabPrinter;
+import org.chromium.chrome.browser.privacy.settings.PrivacySettings;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.chrome.browser.profiles.ProfileManagerUtils;
@@ -694,7 +695,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
import org.chromium.chrome.browser.profiles.ProfileProvider;
@@ -612,7 +613,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
new TabContentManager(
this,
mBrowserControlsManagerSupplier.get(),
- /* snapshotsEnabled= */ true,
- !TabUiFeatureUtilities.shouldUseListMode(),
+ !TabUiFeatureUtilities.shouldUseListMode()
+ && !ContextUtils.getAppSharedPreferences().getBoolean(PrivacySettings.PREF_TABGRID_USE_ICONS, false),
tabModelSelector != null ? tabModelSelector::getTabById : null,
@@ -105,15 +105,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -30,6 +30,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.IntentUtils;
@@ -21,6 +21,7 @@ import androidx.preference.Preference;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
+import java.util.function.Supplier;
import org.chromium.base.supplier.MonotonicObservableSupplier;
import org.chromium.base.supplier.ObservableSuppliers;
import org.chromium.base.supplier.SettableMonotonicObservableSupplier;
@@ -105,13 +106,27 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
+import org.chromium.base.supplier.Supplier;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.base.ContextUtils;
@@ -78,12 +79,26 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
@@ -126,7 +126,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
import java.util.List;
/** Fragment to keep track of the all the privacy related preferences. */
@NullMarked
public class PrivacySettings extends ChromeBaseSettingsFragment
- implements Preference.OnPreferenceChangeListener {
+ implements Preference.OnPreferenceChangeListener, INeedSnackbarManager {
@@ -142,10 +141,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_PRELOAD_PAGES = "preload_pages";
private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
@@ -198,6 +213,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
if (shouldHideSandboxPref(privacySandboxBridge)) {
getPreferenceScreen().removePreference(sandboxPreference);
@@ -170,6 +185,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
}
}
+ mSnackbar = Snackbar.make(getActivity().getString(R.string.ui_relaunch_notice),
+ new SnackbarManager.SnackbarController() {
+ @Override
@@ -156,7 +155,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
+ ApplicationLifetime.terminate(true);
+ }
+ }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN)
+ .setDefaultLines(false)
+ .setSingleLine(false)
+ .setAction(getActivity().getString(R.string.relaunch),
+ /*actionData*/null)
+ .setDuration(/*durationMs*/70000);
@@ -164,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE);
// Record the launch of PG from the S&P link-row entry point
privacyGuidePreference.setOnPreferenceClickListener(
@@ -462,6 +492,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -392,6 +422,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito";
@@ -172,7 +171,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -508,6 +539,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -438,6 +469,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
sharedPreferencesEditor.apply();
@@ -186,7 +185,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
}
return true;
}
@@ -558,6 +596,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -504,6 +542,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
: R.string.text_off);
}
@@ -200,7 +199,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -6706,6 +6706,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -5954,6 +5954,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
Your <ph name="FQDN">%1$s<ex>www.amazon.com</ex></ph> timer ran out. It'll start again tomorrow.
</message>
+196 -166
View File
@@ -6,43 +6,43 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../layout/custom_tabs_control_container.xml | 2 +-
.../java/res/layout/recent_tabs_page.xml | 2 +-
.../java/res/values-sw600dp/dimens.xml | 3 ++-
chrome/android/java/res/values/dimens.xml | 3 ++-
.../java/res/values-sw600dp/dimens.xml | 4 ++--
chrome/android/java/res/values/dimens.xml | 6 +++++-
.../browser/ChromeBaseAppCompatActivity.java | 3 +++
.../chrome/browser/WarmupManager.java | 7 +++++--
.../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++++++++
.../chrome/browser/app/ChromeActivity.java | 5 ++++-
.../overlays/strip/StripLayoutHelper.java | 1 +
.../chrome/browser/WarmupManager.java | 5 ++++-
.../ChromeAccessibilitySettingsDelegate.java | 19 ++++++++++++++++++
.../chrome/browser/app/ChromeActivity.java | 4 +++-
.../overlays/strip/StripLayoutHelper.java | 10 ++++++++--
.../strip/StripLayoutHelperManager.java | 6 +++++-
.../scene_layer/TabStripSceneLayer.java | 8 ++++++++
.../init/ChromeBrowserInitializer.java | 2 ++
.../tabbed_mode/TabbedRootUiCoordinator.java | 4 +++-
.../chrome/browser/ui/RootUiCoordinator.java | 6 +++++-
chrome/browser/preferences/BUILD.gn | 1 +
.../preferences/ChromePreferenceKeys.java | 1 +
.../preferences/ChromeSharedPreferences.java | 12 ++++++++++++
.../preferences/ChromeSharedPreferences.java | 12 +++++++++++
.../LegacyChromePreferenceKeys.java | 1 +
.../ui/desktop_windowing/AppHeaderUtils.java | 2 ++
.../AppHeaderCoordinator.java | 2 ++
.../omnibox/LocationBarCoordinator.java | 2 +-
.../strings/android_chrome_strings.grd | 7 +++++++
.../java/res/layout/control_container.xml | 8 ++++----
.../java/res/layout/toolbar_tablet.xml | 2 +-
.../java/res/values-sw600dp/dimens.xml | 5 +++--
.../toolbar/java/res/values/dimens.xml | 6 ++++--
.../toolbar/top/ToolbarControlContainer.java | 6 ++++++
.../browser/toolbar/ControlContainer.java | 2 +-
.../toolbar/top/ToolbarControlContainer.java | 20 ++++++++++++++++++-
.../browser/toolbar/top/ToolbarLayout.java | 5 ++++-
.../tab_strip/HeightTransitionHandler.java | 2 ++
.../TabStripTransitionCoordinator.java | 6 +++++-
.../res/xml/accessibility_preferences.xml | 5 +++++
.../accessibility/AccessibilitySettings.java | 13 +++++++++++++
.../accessibility/AccessibilitySettings.java | 13 ++++++++++++
.../AccessibilitySettingsDelegate.java | 2 ++
.../chromium/ui/base/DeviceFormFactor.java | 14 ++++++++++++++
33 files changed, 149 insertions(+), 22 deletions(-)
.../chromium/ui/base/DeviceFormFactor.java | 14 +++++++++++++
33 files changed, 163 insertions(+), 26 deletions(-)
diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml
--- a/chrome/android/java/res/layout/custom_tabs_control_container.xml
+++ b/chrome/android/java/res/layout/custom_tabs_control_container.xml
@@ -31,7 +31,7 @@ found in the LICENSE file.
@@ -32,7 +32,7 @@ found in the LICENSE file.
android:id="@+id/find_toolbar_stub"
android:inflatedId="@+id/find_toolbar"
android:visibility="gone"
@@ -66,41 +66,47 @@ diff --git a/chrome/android/java/res/layout/recent_tabs_page.xml b/chrome/androi
diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/java/res/values-sw600dp/dimens.xml
--- a/chrome/android/java/res/values-sw600dp/dimens.xml
+++ b/chrome/android/java/res/values-sw600dp/dimens.xml
@@ -14,7 +14,8 @@ found in the LICENSE file.
@@ -14,8 +14,8 @@ found in the LICENSE file.
<dimen name="compositor_tab_title_text_size">14sp</dimen>
<!-- Full Screen Dimensions -->
- <dimen name="control_container_height">96dp</dimen>
- <dimen name="custom_tabs_control_container_height">64dp</dimen>
+ <dimen name="control_container_height_cromite">96dp</dimen>
+ <dimen name="control_container_height_tabletui">56dp</dimen>
+ <dimen name="control_container_height_tabletui">96dp</dimen>
<!-- NTP dimensions -->
<dimen name="ntp_search_box_transition_start_offset">60dp</dimen>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -116,7 +116,8 @@ found in the LICENSE file.
<dimen name="signin_screen_top_padding">50dp</dimen>
@@ -117,9 +117,13 @@ found in the LICENSE file.
<dimen name="tab_modal_scrim_vertical_margin">16dp</dimen>
<!-- Should match toolbar_height_no_shadow -->
- <dimen name="control_container_height">@dimen/default_action_bar_height</dimen>
+ <dimen name="control_container_height_cromite">@dimen/default_action_bar_height</dimen>
+ <dimen name="control_container_height_tabletui">56dp</dimen>
+ <dimen name="control_container_height_tabletui">96dp</dimen>
<dimen name="custom_tabs_control_container_height">@dimen/default_action_bar_height</dimen>
+ <!-- The combined height of the tab strip and toolbar. -->
+ <dimen name="tab_strip_and_toolbar_height_cromite">56dp</dimen>
+
<!-- Find in Page dimensions -->
<dimen name="find_in_page_popup_width">375dp</dimen>
<dimen name="find_in_page_popup_height">64dp</dimen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
@@ -65,6 +65,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeControllerCreator;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeFieldTrialImpl;
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
@@ -58,6 +58,7 @@ import org.chromium.chrome.browser.metrics.UmaSessionStats;
import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder;
import org.chromium.chrome.browser.night_mode.NightModeStateProvider;
import org.chromium.chrome.browser.night_mode.NightModeUtils;
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.ui.edge_to_edge.SimpleEdgeToEdgeController;
import org.chromium.components.browser_ui.styles.SemanticColorUtils;
import org.chromium.components.browser_ui.util.AutomotiveUtils;
@@ -154,6 +155,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeManager;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider;
@@ -131,6 +132,8 @@ public class ChromeBaseAppCompatActivity extends AppCompatActivity
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
@@ -112,31 +118,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCo
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
@@ -64,6 +64,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.content_public.browser.WebContents;
@@ -63,6 +63,7 @@ import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.net.NetId;
import org.chromium.ui.LayoutInflaterUtils;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.display.DisplayUtil;
import org.chromium.url.GURL;
@@ -475,8 +476,10 @@ public class WarmupManager {
@@ -476,7 +477,9 @@ public class WarmupManager {
ControlContainer controlContainer = mainView.findViewById(R.id.control_container);
if (toolbarId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) {
- controlContainer.initWithToolbar(
- toolbarId, R.dimen.custom_tabs_control_container_height);
- controlContainer.initWithToolbar(toolbarId);
+ controlContainer.initWithToolbar(toolbarId,
+ DeviceFormFactor.isForceTabletUI()
+ ? R.dimen.control_container_height_tabletui
+ : R.dimen.custom_tabs_control_container_height);
+ ? R.dimen.control_container_height_tabletui : 0);
}
return mainView;
} catch (InflateException e) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
@@ -67,6 +67,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
@@ -62,6 +62,25 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
}
}
@@ -165,82 +169,79 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -845,7 +845,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -758,7 +758,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
// Inflate the correct toolbar layout for the device.
int toolbarLayoutId = getToolbarLayoutId();
if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) {
- controlContainer.initWithToolbar(toolbarLayoutId, getToolbarLayoutHeightResId());
- controlContainer.initWithToolbar(toolbarLayoutId);
+ controlContainer.initWithToolbar(toolbarLayoutId,
+ DeviceFormFactor.isForceTabletUI()
+ ? R.dimen.control_container_height_tabletui
+ : getToolbarLayoutHeightResId());
+ ? R.dimen.control_container_height_tabletui : 0);
}
onInitialLayoutInflationComplete();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -147,6 +147,7 @@ import org.chromium.components.tab_group_sync.TabGroupSyncService;
import org.chromium.components.tab_group_sync.TriggerSource;
@@ -114,6 +114,7 @@ import org.chromium.components.tab_group_sync.SavedTabGroup;
import org.chromium.components.tab_group_sync.TabGroupSyncService;
import org.chromium.components.tab_groups.TabGroupColorId;
import org.chromium.ui.accessibility.AccessibilityState;
import org.chromium.ui.MotionEventUtils;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.util.ColorUtils;
import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -4060,8 +4061,13 @@ public class StripLayoutHelper
mTabMenu.setAnchorView(tabView);
// 3. Set the vertical offset to align the tab menu with bottom of the tab strip
int tabHeight = mManagerHost.getHeight();
- int verticalOffset =
- -(tabHeight - (int) mContext.getResources().getDimension(R.dimen.tab_strip_height));
+ int tab_strip_height =
+ (int) mContext.getResources().getDimension(R.dimen.tab_strip_height_cromite);
+ if (DeviceFormFactor.isForceTabletUI()) {
+ tab_strip_height =
+ (int) mContext.getResources().getDimension(R.dimen.tab_strip_height_tabletui);
+ }
+ int verticalOffset = -(tabHeight - tab_strip_height);
mTabMenu.setVerticalOffset(verticalOffset);
// 4. Set the horizontal offset to align the tab menu with the right side of the tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -116,6 +116,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa
@@ -94,6 +94,7 @@ import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateMa
import org.chromium.components.browser_ui.styles.SemanticColorUtils;
import org.chromium.components.browser_ui.widget.gesture.BackPressHandler;
import org.chromium.components.browser_ui.widget.scrim.ScrimProperties;
import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.base.PageTransition;
import org.chromium.ui.base.WindowAndroid;
@@ -576,7 +577,10 @@ public class StripLayoutHelperManager
mIsHeaderCustomizationSupported =
ToolbarFeatures.isAppHeaderCustomizationSupported(
/* isTablet= */ true, DisplayUtil.isContextInDefaultDisplay(mContext));
@@ -453,7 +454,10 @@ public class StripLayoutHelperManager
mIsLayoutOptimizationsEnabled =
ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled(true);
- mScrollableStripHeight = res.getDimension(R.dimen.tab_strip_height) / mDensity;
+ mScrollableStripHeight =
+ (DeviceFormFactor.isForceTabletUI()
+ ? res.getDimension(R.dimen.tab_strip_height_tabletui)
+ : res.getDimension(R.dimen.tab_strip_height_cromite)) / mDensity;
mHeight =
mIsHeaderCustomizationSupported
mIsLayoutOptimizationsEnabled
? toolbarManager.getTabStripHeightSupplier().get() / mDensity
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java
@@ -120,6 +120,14 @@ public class TabStripSceneLayer extends SceneOverlayLayer {
if (mNativePtr == 0) return;
final boolean visible = yOffset > -layoutHelper.getHeight();
+ if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(ContextUtils.getApplicationContext())) {
+ TintedCompositorButton newTabButton = layoutHelper.getNewTabButton();
+ if (newTabButton.isVisible()) {
+ rightPaddingDp += newTabButton.getWidth() + layoutHelper.getNewTabBtnVisualOffset()
+ + StripLayoutGroupTitle.REORDER_BACKGROUND_PADDING_END;
+ }
+ }
+
// This will hide the tab strips if necessary.
TabStripSceneLayerJni.get()
.beginBuildingFrame(mNativePtr, visible, resourceManager, layerTitleCache);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java
@@ -18,6 +18,7 @@ import org.chromium.base.task.TaskTraits;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
@@ -17,6 +17,7 @@ import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.base.task.ChainedTasks;
import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.ProfileManager;
import org.chromium.chrome.browser.signin.SigninCheckerProvider;
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
@@ -110,6 +111,7 @@ public class ChromeBrowserInitializer {
@@ -107,6 +108,7 @@ public class ChromeBrowserInitializer {
public void handlePreNativeStartupAndLoadLibraries(final BrowserParts parts) {
ThreadUtils.checkUiThread();
if (parts.isActivityFinishingOrDestroyed()) return;
@@ -251,7 +252,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrow
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -893,7 +893,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -620,7 +620,9 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@Override
public int getControlContainerHeightResource() {
@@ -265,18 +266,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -131,6 +131,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
@@ -109,6 +109,8 @@ import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
import org.chromium.chrome.browser.pdf.PdfPage;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.quick_delete.QuickDeleteController;
import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl;
@@ -2058,7 +2060,9 @@ public class RootUiCoordinator
import org.chromium.chrome.browser.price_insights.PriceInsightsButtonController;
import org.chromium.chrome.browser.price_tracking.CurrentTabPriceTrackingStateSupplier;
import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController;
@@ -1777,7 +1779,9 @@ public class RootUiCoordinator
if (!mSupportsFindInPageSupplier.getAsBoolean()) return;
protected int getFindToolbarStub() {
int stubId = R.id.find_toolbar_stub;
- if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) {
+ if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity) &&
@@ -284,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false)) {
stubId = R.id.find_toolbar_tablet_stub;
}
return stubId;
mFindToolbarManager =
diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn
--- a/chrome/browser/preferences/BUILD.gn
+++ b/chrome/browser/preferences/BUILD.gn
@@ -299,7 +300,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -417,6 +417,7 @@ public final class ChromePreferenceKeys {
@@ -280,6 +280,7 @@ public final class ChromePreferenceKeys {
/** Whether the app-specific history info text was already seen by users. */
public static final String HISTORY_APP_SPECIFIC_INFO_SEEN =
"Chrome.History.AppSpecificInfoSeen";
@@ -339,7 +340,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
@@ -56,6 +56,7 @@ public class LegacyChromePreferenceKeys {
@@ -57,6 +57,7 @@ public class LegacyChromePreferenceKeys {
ChromePreferenceKeys.FIRST_RUN_FLOW_COMPLETE,
ChromePreferenceKeys.FIRST_RUN_FLOW_SIGNIN_SETUP,
ChromePreferenceKeys.FIRST_RUN_LIGHTWEIGHT_FLOW_COMPLETE,
@@ -347,29 +348,29 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
ChromePreferenceKeys.FIRST_RUN_SKIP_WELCOME_PAGE,
ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
ChromePreferenceKeys.HOMEPAGE_ENABLED,
diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java
--- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java
+++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderUtils.java
@@ -20,6 +20,7 @@ import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher.ActivityState;
diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
--- a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
+++ b/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/chrome/browser/ui/desktop_windowing/AppHeaderCoordinator.java
@@ -35,6 +35,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils.Windowing
import org.chromium.components.browser_ui.desktop_windowing.AppHeaderState;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
import org.chromium.components.browser_ui.edge_to_edge.EdgeToEdgeStateProvider;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.display.DisplayUtil;
import org.chromium.ui.insets.InsetsRectProvider;
@@ -169,6 +170,7 @@ public class AppHeaderUtils {
*/
static @DesktopWindowHeuristicResult int checkIsInDesktopWindow(
InsetsRectProvider insetsRectProvider, Context context) {
import org.chromium.ui.InsetObserver;
import org.chromium.ui.InsetObserver.WindowInsetsConsumer;
import org.chromium.ui.InsetsRectProvider;
@@ -260,6 +261,7 @@ public class AppHeaderCoordinator
private static @DesktopWindowHeuristicResult int checkIsInDesktopWindow(
InsetsRectProvider insetsRectProvider,
@DesktopWindowHeuristicResult int currentResult) {
+ if (DeviceFormFactor.isForceTabletUI()) return DesktopWindowHeuristicResult.IN_DESKTOP_WINDOW;
@DesktopWindowHeuristicResult int newResult;
boolean isOnExternalDisplay = !DisplayUtil.isContextInDefaultDisplay(context);
Insets captionBarInset = insetsRectProvider.getCachedInset();
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -1061,7 +1061,7 @@ public class LocationBarCoordinator
@@ -799,7 +799,7 @@ public class LocationBarCoordinator
}
private boolean isTabletWindow() {
@@ -381,8 +382,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1592,6 +1592,13 @@ Your Google account may have other forms of browsing history like searches and a
Privacy guide explanation closed
@@ -1657,6 +1657,13 @@ Your Google account may have other forms of browsing history like searches and a
Hide your IP address
</message>
+ <message name="IDS_FORCE_TABLET_UI_SUMMARY" desc="Summary of the preference that allows the user to force chromium to use tablet UI.">
@@ -402,28 +403,30 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container
android:id="@+id/control_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:minHeight="@dimen/control_container_height">
+ android:minHeight="@dimen/control_container_height_cromite">
- android:minHeight="@dimen/control_container_height" >
+ android:minHeight="@dimen/control_container_height_cromite" >
<view
class="org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer$ToolbarViewResourceCoordinatorLayout"
class="org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer$ToolbarViewResourceFrameLayout"
@@ -20,7 +20,7 @@ found in the LICENSE file.
<ViewStub
android:id="@+id/toolbar_stub"
android:layout_width="match_parent"
- android:layout_marginTop="@dimen/tab_strip_height"
+ android:layout_marginTop="@dimen/tab_strip_height_cromite"
android:layout_marginBottom="@dimen/toolbar_hairline_height"
android:layout_height="@dimen/toolbar_height_no_shadow" />
@@ -30,13 +30,13 @@ found in the LICENSE file.
<ImageView
@@ -28,7 +28,7 @@ found in the LICENSE file.
android:src="@drawable/toolbar_hairline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_anchorGravity="bottom"
- />
+ android:layout_marginTop="@dimen/control_container_height_cromite" />
- android:layout_marginTop="@dimen/control_container_height"
+ android:layout_marginTop="@dimen/control_container_height_cromite"
android:scaleType="fitXY"
android:importantForAccessibility="no" />
<ViewStub
@@ -36,7 +36,7 @@ found in the LICENSE file.
android:id="@+id/find_toolbar_stub"
android:inflatedId="@+id/find_toolbar"
android:visibility="gone"
@@ -435,14 +438,14 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container
diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
--- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xml
@@ -14,7 +14,7 @@ found in the LICENSE file.
@@ -15,7 +15,7 @@ found in the LICENSE file.
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height_no_shadow"
- android:layout_marginTop="@dimen/tab_strip_height"
+ android:layout_marginTop="@dimen/tab_strip_height_tabletui"
android:background="@macro/default_bg_color"
>
>
diff --git a/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml b/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml
--- a/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml
@@ -461,7 +464,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml b/chro
--- a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml
+++ b/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml
@@ -10,8 +10,10 @@ found in the LICENSE file.
<dimen name="toolbar_tab_count_text_size_2_digit">9dp</dimen>
<dimen name="toolbar_tab_count_text_size_2_digit">10dp</dimen>
<!-- Tab Strip Dimensions -->
- <dimen name="tab_strip_height">0dp</dimen>
@@ -472,45 +475,72 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml b/chro
+ <dimen name="tab_strip_reserved_top_padding_tabletui">2dp</dimen>
<dimen name="ntp_search_box_height">64dp</dimen>
<dimen name="ntp_search_box_height_tall">72dp</dimen>
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ControlContainer.java
@@ -23,7 +23,7 @@ public interface ControlContainer {
* Initialize the control container with the specified toolbar.
* @param toolbarLayoutId The ID of the toolbar layout to use.
*/
- void initWithToolbar(int toolbarLayoutId);
+ void initWithToolbar(int toolbarLayoutId, int controlContainerHeightOverrideId);
/**
* @return The {@link ViewResourceAdapter} that exposes this {@link View} as a CC resource.
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarControlContainer.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.toolbar.top;
import static org.chromium.build.NullUtil.assumeNonNull;
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.toolbar.top;
import android.content.Context;
+import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PorterDuff;
@@ -174,6 +175,11 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
@Initializer
public void initWithToolbar(int toolbarLayoutId, int toolbarLayoutHeightResId) {
import android.graphics.Rect;
@@ -143,8 +144,25 @@ public class ToolbarControlContainer extends OptimizedFrameLayout
}
@Override
- public void initWithToolbar(int toolbarLayoutId) {
+ public void initWithToolbar(int toolbarLayoutId, int controlContainerHeightOverrideId) {
try (TraceEvent te = TraceEvent.scoped("ToolbarControlContainer.initWithToolbar")) {
+ if (DeviceFormFactor.isForceTabletUI() && toolbarLayoutHeightResId != 0) {
+ toolbarLayoutHeightResId = R.dimen.control_container_height_tabletui;
+ if (controlContainerHeightOverrideId != 0) {
+ Resources res = getContext().getResources();
+ setMinimumHeight((int) res.getDimension(toolbarLayoutHeightResId));
+ setMinimumHeight((int) res.getDimension(controlContainerHeightOverrideId));
+ int tab_strip_height =
+ (int) res.getDimension(R.dimen.tab_strip_height_tabletui);
+
+ View view = findViewById(R.id.toolbar_stub);
+ if (view != null)
+ ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height;
+
+ view = findViewById(R.id.toolbar_hairline);
+ if (view != null) view.setVisibility(View.GONE);
+
+ view = findViewById(R.id.find_toolbar_stub);
+ if (view != null)
+ ((MarginLayoutParams)view.getLayoutParams()).topMargin = tab_strip_height;
+ }
mToolbarContainer = findViewById(R.id.toolbar_container);
mToolbarLayoutHeight = getResources().getDimensionPixelSize(toolbarLayoutHeightResId);
mToolbarContainer =
(ToolbarViewResourceFrameLayout) findViewById(R.id.toolbar_container);
ViewStub toolbarStub = findViewById(R.id.toolbar_stub);
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/ToolbarLayout.java
@@ -66,6 +66,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp;
@@ -63,6 +63,7 @@ import org.chromium.chrome.browser.util.BrowserUiUtils;
import org.chromium.chrome.browser.util.BrowserUiUtils.ModuleTypeOnStartAndNtp;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.ui.base.ViewUtils;
import org.chromium.ui.util.MotionEventUtils;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.util.TokenHolder;
import org.chromium.url.GURL;
@@ -591,7 +592,9 @@ public abstract class ToolbarLayout extends FrameLayout
* @see Toolbar#getTabStripHeight()
@@ -590,7 +591,9 @@ public abstract class ToolbarLayout extends FrameLayout
* not have a tab strip.
*/
public int getTabStripHeightFromResource() {
protected int getTabStripHeightFromResource() {
- return getResources().getDimensionPixelSize(R.dimen.tab_strip_height);
+ if (DeviceFormFactor.isForceTabletUI())
+ return getResources().getDimensionPixelSize(R.dimen.tab_strip_height_tabletui);
@@ -521,34 +551,34 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/HeightTransitionHandler.java
@@ -29,6 +29,7 @@ import org.chromium.chrome.browser.toolbar.ControlContainer;
@@ -28,6 +28,7 @@ import org.chromium.chrome.browser.toolbar.top.ToolbarLayout;
import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripHeightObserver;
import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionDelegate;
import org.chromium.chrome.browser.toolbar.top.tab_strip.TabStripTransitionCoordinator.TabStripTransitionHandler;
import org.chromium.ui.base.ViewUtils;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.resources.dynamics.DynamicResourceReadyOnceCallback;
import org.chromium.ui.util.TokenHolder;
@@ -514,6 +515,7 @@ class HeightTransitionHandler {
/** Get the min screen width (in dp) required for the tab strip to become visible. */
private static int getScreenWidthThresholdDp() {
+ if (DeviceFormFactor.isForceTabletUI()) return 0;
@@ -559,6 +560,7 @@ class HeightTransitionHandler {
if (TabStripTransitionCoordinator.sHeightTransitionThresholdForTesting != null) {
return TabStripTransitionCoordinator.sHeightTransitionThresholdForTesting;
}
+ if (DeviceFormFactor.isForceTabletUI()) return 0;
return TRANSITION_THRESHOLD_DP;
}
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/tab_strip/TabStripTransitionCoordinator.java
@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
@@ -28,6 +28,7 @@ import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
import org.chromium.components.browser_ui.desktop_windowing.AppHeaderState;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager;
import org.chromium.components.browser_ui.desktop_windowing.DesktopWindowStateManager.AppHeaderObserver;
+import org.chromium.ui.base.DeviceFormFactor;
/**
* Class used to manage tab strip visibility and height updates.
@@ -171,7 +172,10 @@ public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHea
/** Class used to manage tab strip visibility and height updates. */
public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHeaderObserver {
@@ -153,7 +154,10 @@ public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHea
mTabStripReservedTopPadding =
controlContainerView()
.getResources()
@@ -563,9 +593,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -46,6 +46,11 @@ found in the LICENSE file.
android:summary="@string/caret_browsing_summary"
android:title="@string/caret_browsing_title" />
@@ -41,6 +41,11 @@ found in the LICENSE file.
android:summary="@string/jump_start_omnibox_summary"
android:title="@string/jump_start_omnibox_title" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="force_tablet_ui"
@@ -578,17 +608,17 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -39,6 +39,7 @@ import org.chromium.content_public.browser.ContentFeatureMap;
import org.chromium.ui.base.UiAndroidFeatureList;
@@ -25,6 +25,7 @@ import org.chromium.content_public.browser.ContentFeatureList;
import org.chromium.content_public.browser.ContentFeatureMap;
import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
+import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate.BooleanPreferenceDelegate;
/** Fragment to keep track of all the accessibility related preferences. */
@NullMarked
@@ -80,6 +81,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
}
};
public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -39,6 +40,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public static final String PREF_ZOOM_INFO = "zoom_info";
public static final String PREF_IMAGE_DESCRIPTIONS = "image_descriptions";
+ private BooleanPreferenceDelegate mForceTabletUIDelegate;
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
@@ -596,9 +626,9 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -167,6 +171,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
readerEnableLinks.setOnPreferenceChangeListener(this);
}
@@ -105,6 +109,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.getReaderAccessibilityDelegate().getValue());
readerForAccessibilityPref.setOnPreferenceChangeListener(this);
+ ChromeSwitchPreference forceTabletUiPref =
+ (ChromeSwitchPreference) findPreference(PREF_FORCE_TABLET_UI);
@@ -609,7 +639,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -262,6 +272,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -165,6 +175,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
mDelegate.getForceEnableZoomAccessibilityDelegate().setValue((Boolean) newValue);
@@ -617,12 +647,12 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
+ mForceTabletUIDelegate.setValue((Boolean) newValue);
+ mDelegate.requestRestart(getActivity());
} else if (PREF_READER_FOR_ACCESSIBILITY.equals(preference.getKey())) {
boolean readerModeEnabled = (Boolean) newValue;
mDelegate.getReaderAccessibilityDelegate().setValue(readerModeEnabled);
mDelegate.getReaderAccessibilityDelegate().setValue((Boolean) newValue);
} else if (PREF_PAGE_ZOOM_DEFAULT_ZOOM.equals(preference.getKey())) {
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
@@ -42,6 +42,8 @@ public interface AccessibilitySettingsDelegate {
@@ -39,6 +39,8 @@ public interface AccessibilitySettingsDelegate {
*/
BrowserContextHandle getBrowserContextHandle();
@@ -634,9 +664,9 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
--- a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
+++ b/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java
@@ -87,6 +87,14 @@ public class DeviceFormFactor {
/** See {@link #setIsTabletForTesting(boolean)}. */
private static @Nullable Boolean sIsTabletForTesting;
@@ -69,6 +69,14 @@ public class DeviceFormFactor {
return BuildConfig.IS_DESKTOP_ANDROID;
}
+ private static boolean mForceTabletUI = false;
+ public static void setForceTabletUI(boolean forceTabletUI) {
@@ -649,7 +679,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
/**
* Each activity could be on a different display, and this will just tell you whether the
* display associated with the application context is "tablet sized". Use {@link
@@ -95,6 +103,7 @@ public class DeviceFormFactor {
@@ -77,6 +85,7 @@ public class DeviceFormFactor {
@CalledByNative
@Deprecated
public static boolean isTablet() {
@@ -657,7 +687,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
if (sIsTabletForTesting != null) {
return sIsTabletForTesting;
}
@@ -125,6 +134,7 @@ public class DeviceFormFactor {
@@ -107,6 +116,7 @@ public class DeviceFormFactor {
* E.g. http://developer.samsung.com/samsung-dex/testing
*/
public static boolean isNonMultiDisplayContextOnTablet(Context context) {
@@ -665,7 +695,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return detectScreenWidthBucket(context) >= SCREEN_BUCKET_TABLET;
}
@@ -159,6 +169,7 @@ public class DeviceFormFactor {
@@ -142,6 +152,7 @@ public class DeviceFormFactor {
* @return The screen width bucket the device is in (see constants at the top of this class).
*/
private static int detectScreenWidthBucket(Context context) {
@@ -673,7 +703,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return context.getResources().getInteger(R.integer.min_screen_width_bucket);
}
@@ -166,6 +177,7 @@ public class DeviceFormFactor {
@@ -149,6 +160,7 @@ public class DeviceFormFactor {
ThreadUtils.assertOnUiThread();
Context context = windowAndroid.getContext().get();
if (context == null) return 0;
@@ -681,7 +711,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return context.getResources().getInteger(R.integer.min_screen_width_bucket);
}
@@ -175,6 +187,7 @@ public class DeviceFormFactor {
@@ -158,6 +170,7 @@ public class DeviceFormFactor {
*/
@UiThread
public static int getNonMultiDisplayMinimumTabletWidthPx(Context context) {
@@ -689,7 +719,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/DeviceFormFactor.java b/ui
return getMinimumTabletWidthPx(DisplayAndroid.getNonMultiDisplay(context));
}
@@ -183,6 +196,7 @@ public class DeviceFormFactor {
@@ -166,6 +179,7 @@ public class DeviceFormFactor {
* layout.
*/
public static int getMinimumTabletWidthPx(DisplayAndroid display) {
@@ -4,17 +4,16 @@ Subject: Add option to not persist tabs across sessions
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../android/java/res/xml/privacy_preferences.xml | 5 +++++
.../chrome/browser/ChromeTabbedActivity.java | 5 ++++-
.../browser/privacy/settings/PrivacySettings.java | 15 ++++++++++++++-
.../browser/tab_group_sync/StartupHelper.java | 6 ++++++
.../ui/android/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 35 insertions(+), 2 deletions(-)
.../android/java/res/xml/privacy_preferences.xml | 5 +++++
.../chrome/browser/ChromeTabbedActivity.java | 5 ++++-
.../privacy/settings/PrivacySettings.java | 16 +++++++++++++++-
.../android/strings/android_chrome_strings.grd | 6 ++++++
4 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -82,6 +82,11 @@ found in the LICENSE file.
@@ -96,6 +96,11 @@ found in the LICENSE file.
android:title="@string/incognito_settings_title"
android:summary="@string/incognito_settings_summary"
android:fragment="org.chromium.chrome.browser.privacy.settings.IncognitoSettings"/>
@@ -29,17 +28,17 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -58,6 +58,7 @@ import org.chromium.base.ApplicationStatus;
import org.chromium.base.Callback;
@@ -45,6 +45,7 @@ import org.chromium.base.Callback;
import org.chromium.base.CallbackController;
import org.chromium.base.CallbackUtils;
+import org.chromium.base.ContextUtils;
import org.chromium.base.CommandLine;
import org.chromium.base.DeviceInfo;
+import org.chromium.base.ContextUtils;
import org.chromium.base.IntentUtils;
@@ -2291,8 +2292,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
ActivityRestoreState.NUM_ENTRIES);
}
import org.chromium.base.Log;
import org.chromium.base.MemoryPressureListener;
@@ -1666,8 +1667,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
boolean hadCipherData =
CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState());
+ String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
boolean noRestoreState =
@@ -52,32 +51,33 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -10,6 +10,7 @@ import static org.chromium.ui.R.drawable.gshield_colorful;
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.privacy.settings;
import static org.chromium.components.content_settings.PrefNames.COOKIE_CONTROLS_MODE;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
+import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.SpannableString;
@@ -24,6 +25,7 @@ import androidx.preference.Preference;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback;
+import org.chromium.base.ContextUtils;
import org.chromium.base.IntentUtils;
import org.chromium.base.metrics.RecordHistogram;
import android.text.style.ClickableSpan;
@@ -22,6 +23,8 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
@@ -119,6 +121,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.ObservableSupplierImpl;
+import org.chromium.base.ContextUtils;
+import org.chromium.base.BuildInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.enterprise.util.ManagedBrowserUtils;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -92,6 +95,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
private final SharedPreferencesManager mSharedPreferencesManager =
ChromeSharedPreferences.getInstance();
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
+
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@VisibleForTesting static final String PREF_THIRD_PARTY_COOKIES = "third_party_cookies";
private static final String PREF_ADVANCED_PROTECTION_INFO = "advanced_protection_info";
@@ -403,7 +407,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@VisibleForTesting static final String PREF_FP_PROTECTION = "fp_protection";
@VisibleForTesting static final String PREF_IP_PROTECTION = "ip_protection";
@@ -333,7 +338,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
@@ -90,7 +90,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
UserPrefs.get(getProfile())
.setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
} else if (PREF_HTTPS_FIRST_MODE_LEGACY.equals(key)) {
@@ -463,6 +471,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -409,6 +418,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
getContext(), getProfile()));
}
@@ -102,35 +102,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
if (secureDnsPref != null && secureDnsPref.isVisible()) {
secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext()));
diff --git a/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/StartupHelper.java b/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/StartupHelper.java
--- a/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/StartupHelper.java
+++ b/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/StartupHelper.java
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.tab_group_sync;
+import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.build.annotations.NullMarked;
import org.chromium.chrome.browser.preferences.Pref;
@@ -74,6 +75,11 @@ public class StartupHelper {
*/
public void initializeTabGroupSync() {
LogUtils.log(TAG, "initializeTabGroupSync");
+ if (ContextUtils.getAppSharedPreferences().getBoolean("close_tabs_on_exit", false)) {
+ for (String tabGroupId : mTabGroupSyncService.getAllGroupIds()) {
+ mTabGroupSyncService.removeGroup(tabGroupId);
+ }
+ }
// First close the groups that were deleted remotely when the activity was not running.
closeDeletedGroupsFromTabModel();
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -2978,6 +2978,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_ACCESSIBILITY_TAB_SWITCHER_TITLE" desc="Accessibility label of the current window when Grid Tab Switcher is shown.">
All tabs
@@ -5479,6 +5479,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
IMAGE
</message>
+ <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
+ Close all open tabs on exit
@@ -138,7 +115,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
+ <message name="IDS_CLOSE_TABS_ON_EXIT_SUMMARY" desc="Summary text for 'Close tabs on exit' settings-privacy option.">
+ Don't persist tabs between browsing sessions. Caution: parameters in urls allow linking between different sessions.
+ </message>
<message name="IDS_TAB_LOADING_DEFAULT_TITLE" desc="The title of a tab when we are still waiting for either the URL or the real title. This generally shows when the page is first loading.">
Loading…
<message name="IDS_CONTEXTMENU_LINK_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the link.">
LINK
</message>
--
@@ -6,10 +6,10 @@ And allow use about:blank as default homepage
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../tab_management/TabGridDialogMediator.java | 12 +++++++++++-
.../tab_management/TabGridDialogMediator.java | 11 ++++++++++-
.../tasks/tab_management/TabGroupUiMediator.java | 8 +++++++-
.../java/res/xml/homepage_preferences.xml | 5 +++++
.../strip/TabGroupContextMenuCoordinator.java | 10 +++++++++-
.../strip/TabGroupContextMenuCoordinator.java | 11 ++++++++++-
.../chrome/browser/homepage/HomepageManager.java | 16 ++++++++++++++++
.../homepage/settings/HomepageSettings.java | 12 ++++++++++++
.../chrome/browser/metrics/LaunchMetrics.java | 1 -
@@ -24,17 +24,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -103,6 +103,7 @@ import org.chromium.components.collaboration.messaging.PersistentNotificationTyp
import org.chromium.components.data_sharing.DataSharingService;
import org.chromium.components.data_sharing.GroupMember;
import org.chromium.components.data_sharing.member_role.MemberRole;
+import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.tab_group_sync.EitherId.EitherGroupId;
import org.chromium.components.tab_group_sync.LocalTabGroupId;
import org.chromium.components.tab_group_sync.TabGroupSyncService;
@@ -123,6 +124,9 @@ import java.util.Objects;
import java.util.Set;
import java.util.function.Supplier;
@@ -99,6 +99,9 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.url.GURL;
@@ -42,47 +34,47 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
/**
* A mediator for the TabGridDialog component, responsible for communicating with the components'
* coordinator as well as managing the business logic for dialog show/hide.
@@ -1026,9 +1030,15 @@ public class TabGridDialogMediator
UrlConstantResolver urlConstantResolver =
UrlConstantResolverFactory.getForProfile(profile);
@@ -918,9 +921,15 @@ public class TabGridDialogMediator
return;
}
+ String url = urlConstantResolver.getNtpUrl();
+ String url = UrlConstants.NTP_URL;
+ if (UrlConstants.NTP_URL.equals(url)
+ && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(profile.isIncognitoBranded());
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
TabGroupUtils.openUrlInGroup(
assumeNonNull(mCurrentTabGroupModelFilterSupplier.get()),
- urlConstantResolver.getNtpUrl(),
mCurrentTabGroupModelFilterSupplier.get(),
- UrlConstants.NTP_URL,
+ url,
tabsInGroup.get(tabsInGroup.size() - 1).getId(),
currentTab.getId(),
TabLaunchType.FROM_TAB_GROUP_UI);
RecordUserAction.record("MobileNewTabOpened." + mComponentName);
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java
@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory;
import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesConfig;
@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.collaboration.CollaborationServiceFactory;
import org.chromium.chrome.browser.data_sharing.DataSharingServiceFactory;
import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesCoordinator;
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.homepage.HomepageManager;
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver;
import org.chromium.chrome.browser.layouts.LayoutType;
import org.chromium.chrome.browser.profiles.Profile;
@@ -428,10 +429,15 @@ public class TabGroupUiMediator implements BackPressHandler {
UrlConstantResolverFactory.getForProfile(currentTabProfile);
@@ -366,10 +367,15 @@ public class TabGroupUiMediator implements BackPressHandler, ThemeColorObserver,
assert relatedTabs.size() > 0;
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
+ String url = urlConstantResolver.getNtpUrl();
+ String url = UrlConstants.NTP_URL;
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(currentTab.isIncognito());
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
mTabCreatorManager
.getTabCreator(currentTab.isIncognito())
.createNewTab(
- new LoadUrlParams(urlConstantResolver.getNtpUrl()),
- new LoadUrlParams(UrlConstants.NTP_URL),
+ new LoadUrlParams(url),
TabLaunchType.FROM_TAB_GROUP_UI,
parentTabToAttach);
@@ -105,9 +97,9 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabGroupContextMenuCoordinator.java
@@ -93,6 +93,9 @@ import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Supplier;
@@ -66,6 +66,9 @@ import org.chromium.ui.text.EmptyTextWatcher;
import org.chromium.ui.widget.AnchoredPopupWindow.HorizontalOrientation;
import org.chromium.ui.widget.RectProvider;
+import org.chromium.chrome.browser.homepage.HomepageManager;
+import org.chromium.url.GURL;
@@ -115,26 +107,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over
/**
* A coordinator for the context menu on the tab strip by long-pressing on the group titles. It is
* responsible for creating a list of menu items, setting up the menu and displaying the menu.
@@ -246,9 +249,14 @@ public class TabGroupContextMenuCoordinator extends TabStripReorderingHelper<Tok
UrlConstantResolver resolver =
UrlConstantResolverFactory.getForProfile(
tabGroupModelFilter.getTabModel().getProfile());
+ String url = resolver.getNtpUrl();
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(tabModelSupplier.get().isIncognitoBranded());
@@ -197,9 +200,15 @@ public class TabGroupContextMenuCoordinator extends TabGroupOverflowMenuCoordina
/* didCloseCallback= */ null);
recordUserAction("DeleteGroup");
} else if (menuId == org.chromium.chrome.R.id.open_new_tab_in_group) {
+ String url = UrlConstants.NTP_URL;
+ if (UrlConstants.NTP_URL.equals(url)
+ && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
TabGroupUtils.openUrlInGroup(
tabGroupModelFilter,
- resolver.getNtpUrl(),
- UrlConstants.NTP_URL,
+ url,
tabId,
TabLaunchType.FROM_TAB_GROUP_UI);
RecordUserAction.record("MobileToolbarTabGroupMenu.NewTabInGroup");
recordUserAction("NewTabInGroup");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
@@ -264,6 +264,22 @@ public class HomepageManager
@@ -237,6 +237,22 @@ public class HomepageManager
notifyHomepageUpdated();
}
@@ -160,15 +153,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
@@ -28,6 +28,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils;
@@ -24,6 +24,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.components.url_formatter.UrlFormatter;
import org.chromium.url.GURL;
+import org.chromium.components.embedder_support.util.UrlConstants;
/** Fragment that allows the user to configure homepage related preferences. */
@NullMarked
@@ -37,6 +38,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
public class HomepageSettings extends ChromeBaseSettingsFragment {
@@ -32,6 +33,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
@VisibleForTesting
public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group";
@@ -176,9 +169,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin
+
private HomepageManager mHomepageManager;
private RadioButtonGroupHomepagePreference mRadioButtons;
private final SettableMonotonicObservableSupplier<String> mPageTitle =
@@ -105,6 +108,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
mRadioButtons.setOnHomepagePreferenceChangeListener(this::onRadioButtonGroupChanged);
private final ObservableSupplierImpl<String> mPageTitle = new ObservableSupplierImpl<>();
@@ -67,6 +70,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
});
mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup());
+ ChromeSwitchPreference mNTPIsHomepageSwitch =
@@ -196,7 +189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
@@ -136,7 +136,6 @@ public class LaunchMetrics {
@@ -113,7 +113,6 @@ public class LaunchMetrics {
public static void recordHomePageLaunchMetrics(
boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) {
if (homepageGurl.isEmpty()) {
@@ -207,21 +200,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchM
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFact
import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask;
@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.new_tab_url.DseNewTabUrlManager;
+import org.chromium.chrome.browser.homepage.HomepageManager;
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge;
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState;
import org.chromium.chrome.browser.profiles.Profile;
@@ -576,6 +577,13 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode
@@ -485,6 +486,13 @@ public class ChromeTabCreator extends TabCreator {
* @return the created tab.
*/
public @Nullable Tab launchUrl(
String url, @TabLaunchType int type, @Nullable Intent intent, long intentTimestamp) {
public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) {
+ if (!mIncognito && url.equals(UrlConstants.NTP_URL)) {
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(mIncognito);
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
+ url = gurl != null ? gurl.getSpec() : url;
+ }
+ }
@@ -232,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -430,6 +430,7 @@ public final class ChromePreferenceKeys {
@@ -293,6 +293,7 @@ public final class ChromePreferenceKeys {
public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP";
public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
@@ -243,7 +236,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
@@ -60,6 +60,7 @@ public class LegacyChromePreferenceKeys {
@@ -61,6 +61,7 @@ public class LegacyChromePreferenceKeys {
ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
ChromePreferenceKeys.HOMEPAGE_ENABLED,
ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI,
@@ -254,7 +247,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1422,6 +1422,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1478,6 +1478,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
Last hour
</message>
@@ -267,21 +260,21 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -126,6 +126,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
pref_registration_flags);
registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false,
pref_registration_flags);
@@ -90,6 +90,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kShowForwardButton, true,
GetHomeAndForwardButtonAndHomePageIsNewTabPageFlags());
+ registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
+ PrefRegistry::NO_REGISTRATION_FLAGS);
registry->RegisterInt64Pref(prefs::kDefaultBrowserInfobarLastDeclined, 0);
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true);
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -1265,6 +1265,10 @@ inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] =
// by enterprise policy.
inline constexpr char kGeminiSettings[] = "browser.gemini_settings";
@@ -1326,6 +1326,10 @@ inline constexpr char kShowHomeButton[] = "browser.show_home_button";
// toolbar.
inline constexpr char kShowForwardButton[] = "browser.show_forward_button";
+// A boolean specifying whether opening a new tab should open the Home page
+// instead of the New Tab page.
+67 -85
View File
@@ -9,18 +9,20 @@ Add DuckDuckGo Lite
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../search_engine_choice/default_favicon.png | Bin 0 -> 903 bytes
...search_engine_choice_scaled_resources.grdp | 1 +
components/search_engines/BUILD.gn | 3 ++
components/search_engines/cromite/BUILD.gn | 12 ++++++
.../cromite/cromite_prepopulated_engines.json | 37 ++++++++++++++++++
.../search_engine_choice_utils.cc | 9 +----
.../search_engine_choice_utils.cc | 5 +--
.../search_engine_countries-inc.cc | 2 +
.../search_engines/search_engine_type.h | 5 +++
.../template_url_prepopulate_data.cc | 21 +++++++++-
.../template_url_prepopulate_data.h | 9 -----
.../template_url_prepopulate_data.cc | 3 +-
.../template_url_prepopulate_data.h | 7 ----
tools/json_to_struct/json_to_struct.gni | 9 +++++
tools/json_to_struct/json_to_struct.py | 26 ++++++++----
tools/json_to_struct/struct_generator.py | 10 +++--
tools/variations/fieldtrial_to_struct.py | 4 +-
12 files changed, 113 insertions(+), 32 deletions(-)
14 files changed, 99 insertions(+), 25 deletions(-)
create mode 100644 components/resources/default_100_percent/search_engine_choice/default_favicon.png
create mode 100644 components/search_engines/cromite/BUILD.gn
create mode 100644 components/search_engines/cromite/cromite_prepopulated_engines.json
@@ -52,10 +54,21 @@ d#;<tA>kFnu^?NN9uE_uZ002ovPDHLkV1m60sc!%P
literal 0
HcmV?d00001
diff --git a/components/resources/search_engine_choice_scaled_resources.grdp b/components/resources/search_engine_choice_scaled_resources.grdp
--- a/components/resources/search_engine_choice_scaled_resources.grdp
+++ b/components/resources/search_engine_choice_scaled_resources.grdp
@@ -5,6 +5,7 @@
<if expr="_google_chrome">
<structure type="chrome_scaled_image" name="IDR_GOOGLE_COM_PNG" file="google_chrome/google_search_logo.png" />
</if>
+ <structure type="chrome_scaled_image" name="IDR_GOOGLEEN_PNG" file="search_engine_choice/default_favicon.png" />
<structure type="chrome_scaled_image" name="IDR_AR_YAHOO_COM_PNG" file="search_engine_choice/yahoo_com.png" />
<structure type="chrome_scaled_image" name="IDR_AT_YAHOO_COM_PNG" file="search_engine_choice/yahoo_com.png" />
<structure type="chrome_scaled_image" name="IDR_AU_YAHOO_COM_PNG" file="search_engine_choice/yahoo_com.png" />
diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn
--- a/components/search_engines/BUILD.gn
+++ b/components/search_engines/BUILD.gn
@@ -74,6 +74,7 @@ static_library("search_engines") {
@@ -70,6 +70,7 @@ static_library("search_engines") {
"//third_party/metrics_proto",
"//third_party/omnibox_proto",
"//third_party/search_engines_data:prepopulated_engines",
@@ -63,18 +76,18 @@ diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUIL
]
deps = [
@@ -165,6 +166,7 @@ source_set("search_engine_utils") {
"//components/regional_capabilities",
"//components/regional_capabilities:switches",
@@ -155,6 +156,7 @@ source_set("search_engine_utils") {
":search_engine_type",
"//components/google/core/common",
"//third_party/search_engines_data:prepopulated_engines",
+ "cromite:cromite_prepopulated_engines",
]
deps = [ "//url" ]
@@ -263,6 +265,7 @@ source_set("unit_tests") {
@@ -235,6 +237,7 @@ source_set("unit_tests") {
"//testing/gmock",
"//testing/gtest",
"//third_party/search_engines_data:prepopulated_engines",
"//third_party/search_engines_data:regional_settings",
+ "cromite:cromite_prepopulated_engines",
"//ui/base",
"//url",
@@ -141,7 +154,7 @@ new file mode 100644
diff --git a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc
--- a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc
+++ b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc
@@ -209,14 +209,7 @@ void RecordChoiceScreenDefaultSearchProviderType(
@@ -182,10 +182,7 @@ void RecordChoiceScreenDefaultSearchProviderType(
}
void RecordChoiceScreenSelectedIndex(int selected_engine_index) {
@@ -149,27 +162,33 @@ diff --git a/components/search_engines/search_engine_choice/search_engine_choice
- kSearchEngineChoiceScreenSelectedEngineIndexHistogram,
- selected_engine_index,
- TemplateURLPrepopulateData::kMaxEeaPrepopulatedEngines);
- base::PumaHistogramExactLinear(
- base::PumaType::kRc, kPumaSearchChoiceScreenSelectedEngineIndexHistogram,
- selected_engine_index,
- TemplateURLPrepopulateData::kMaxEeaPrepopulatedEngines);
+ // do nothing in Cromite
}
void RecordChoiceScreenPositionsCountryMismatch(bool has_mismatch) {
diff --git a/components/search_engines/search_engine_countries-inc.cc b/components/search_engines/search_engine_countries-inc.cc
--- a/components/search_engines/search_engine_countries-inc.cc
+++ b/components/search_engines/search_engine_countries-inc.cc
@@ -1452,5 +1452,7 @@ const std::vector<EngineAndTier> GetPrepopulationSetFromCountryID(
for (size_t i = 0; i < num_engines; i++) {
t_url.push_back(engines[i]);
}
+ t_url.push_back({SearchEngineTier::kTopEngines, &googleen});
+ t_url.push_back({SearchEngineTier::kTopEngines, &duckduckgo_light});
return t_url;
}
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
--- a/components/search_engines/search_engine_type.h
+++ b/components/search_engines/search_engine_type.h
@@ -99,11 +99,16 @@ enum SearchEngineType {
SEARCH_ENGINE_KAGI = 79,
SEARCH_ENGINE_STARTER_PACK_AI_MODE = 80,
SEARCH_ENGINE_YAHOO_JP = 81,
+ SEARCH_ENGINE_GOOGLE_EN = 82,
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 83,
@@ -91,10 +91,15 @@ enum SearchEngineType {
SEARCH_ENGINE_YOU = 72,
SEARCH_ENGINE_STARTER_PACK_GEMINI = 73,
SEARCH_ENGINE_LILO = 74,
+ SEARCH_ENGINE_GOOGLE_EN = 75,
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 76,
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
};
// LINT.ThenChange(//tools/metrics/histograms/enums.xml:OmniboxSearchEngineType)
+static_assert(SEARCH_ENGINE_DUCKDUCKGOLIGHT == (SEARCH_ENGINE_MAX - 1),
+ "Please check this patch");
@@ -180,8 +199,8 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -27,6 +27,8 @@
#include "components/search_engines/template_url_data_util.h"
@@ -29,6 +29,8 @@
#include "components/version_info/version_info.h"
#include "third_party/search_engines_data/resources/definitions/prepopulated_engines.h"
+#include "components/search_engines/cromite/cromite_prepopulated_engines.h"
@@ -189,53 +208,18 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
namespace TemplateURLPrepopulateData {
// Helpers --------------------------------------------------------------------
@@ -152,7 +154,7 @@ int GetDataVersion(PrefService* prefs) {
kCurrentDataVersion;
@@ -78,7 +80,6 @@ GetPrepopulatedEnginesForEeaRegionCountries(int country_id,
generator.seed(profile_seed);
std::shuffle(t_urls.begin(), t_urls.end(), generator);
- CHECK_LE(t_urls.size(), kMaxEeaPrepopulatedEngines);
return t_urls;
}
-std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
+std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEnginesChromium(
PrefService& prefs,
const std::vector<const PrepopulatedEngine*>&
regional_prepopulated_engines) {
@@ -168,6 +170,17 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
&PrepopulatedEngineToTemplateURLData);
}
+std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
+ PrefService& prefs,
+ const std::vector<const PrepopulatedEngine*>&
+ regional_prepopulated_engines) {
+ std::vector<std::unique_ptr<TemplateURLData>> t_urls =
+ GetPrepopulatedEnginesChromium(prefs, regional_prepopulated_engines);
+ t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(googleen));
+ t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(duckduckgo_light));
+ return t_urls;
+}
+
std::unique_ptr<TemplateURLData> GetPrepopulatedEngine(
PrefService& prefs,
const std::vector<const PrepopulatedEngine*>& regional_prepopulated_engines,
@@ -188,10 +201,14 @@ std::vector<std::unique_ptr<TemplateURLData>> GetLocalPrepopulatedEngines(
return std::vector<std::unique_ptr<TemplateURLData>>();
}
- return base::ToVector(regional_capabilities::GetPrepopulatedEngines(
+ std::vector<std::unique_ptr<TemplateURLData>> t_urls =
+ base::ToVector(regional_capabilities::GetPrepopulatedEngines(
country_id, prefs,
regional_capabilities::SearchEngineListType::kTopN),
&PrepopulatedEngineToTemplateURLData);
+ t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(googleen));
+ t_urls.push_back(TemplateURLDataFromPrepopulatedEngine(duckduckgo_light));
+ return t_urls;
}
#endif
diff --git a/components/search_engines/template_url_prepopulate_data.h b/components/search_engines/template_url_prepopulate_data.h
--- a/components/search_engines/template_url_prepopulate_data.h
+++ b/components/search_engines/template_url_prepopulate_data.h
@@ -27,15 +27,6 @@ struct PrepopulatedEngine;
@@ -32,13 +32,6 @@ struct PrepopulatedEngine;
extern const int kMaxPrepopulatedEngineID;
@@ -244,17 +228,15 @@ diff --git a/components/search_engines/template_url_prepopulate_data.h b/compone
-//
-// Note: If this is increased, please also increase the declared variant count
-// for the `Search.ChoiceScreenShowedEngineAt.Index{Index}` histogram.
-// TODO(crbug.com/408932087): Investigate moving it to the file that actually
-// populates these, `//c/regional_capabilities/r*c*_util.cc`.
-inline constexpr size_t kMaxEeaPrepopulatedEngines = 8;
-
// The maximum number of prepopulated search engines that can be returned in
// in the rest of the world by `GetPrepopulatedEngines()`.
// TODO(crbug.com/408932087): Investigate deduping it with the constant
inline constexpr size_t kMaxRowPrepopulatedEngines = 5;
diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni
--- a/tools/json_to_struct/json_to_struct.gni
+++ b/tools/json_to_struct/json_to_struct.gni
@@ -39,6 +39,11 @@ template("json_to_struct") {
@@ -25,6 +25,11 @@ template("json_to_struct") {
action_name = target_name + "_action"
source_set_name = target_name
@@ -266,7 +248,7 @@ diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json
action(action_name) {
visibility = [ ":$source_set_name" ]
script = "//tools/json_to_struct/json_to_struct.py"
@@ -61,6 +66,10 @@ template("json_to_struct") {
@@ -49,6 +54,10 @@ template("json_to_struct") {
"--namespace=" + invoker.namespace,
"--schema=" + rebase_path(invoker.schema_file, root_build_dir),
]
@@ -280,7 +262,7 @@ diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json
diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_to_struct.py
--- a/tools/json_to_struct/json_to_struct.py
+++ b/tools/json_to_struct/json_to_struct.py
@@ -104,7 +104,7 @@ def _GenerateHeaderGuard(h_filename):
@@ -97,7 +97,7 @@ def _GenerateHeaderGuard(h_filename):
return re.sub(u'^_*', '', result) + u'_' # Remove leading underscores.
@@ -289,7 +271,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_
"""Generates the .h file containing the definition of the structure specified
by the schema.
@@ -148,11 +148,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
@@ -133,11 +133,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
f.write(u'#include "%s"\n' % header)
f.write(u'\n')
@@ -306,7 +288,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_
schema['type_name'], schema['schema']))
f.write(u'\n')
@@ -177,7 +181,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
@@ -162,7 +166,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
f.write(u'#endif // %s\n' % header_guard)
@@ -315,16 +297,16 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_
"""Generates the .cc file containing the static initializers for the
of the elements specified in the description.
@@ -212,7 +216,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description):
@@ -191,7 +195,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description):
f.write(element_generator.GenerateElements(schema['type_name'],
schema['schema'], description))
- if not aggregation.export_items:
+ if excludetype == False and not aggregation.export_items:
f.write('\n} // anonymous namespace \n\n')
aggregated = GenerateCCAggregation(schema['type_name'], aggregation)
@@ -299,7 +303,7 @@ def GenerateClass(basepath,
- if 'generate_array' in description:
+ if excludetype == False and 'generate_array' in description:
f.write(u'\n')
f.write(
u'const %s* const array_%s[] = {\n' %
@@ -283,7 +287,7 @@ def GenerateClass(basepath,
def GenerateStruct(basepath, output_root, namespace, schema, description,
@@ -333,7 +315,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_
"""Generates a C++ struct from a JSON description.
Args:
@@ -318,8 +322,8 @@ def GenerateStruct(basepath, output_root, namespace, schema, description,
@@ -302,8 +306,8 @@ def GenerateStruct(basepath, output_root, namespace, schema, description,
"""
year = int(year) if year else datetime.now().year
head = HEAD % (year, schema_filename, description_filename)
@@ -344,7 +326,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_
if __name__ == '__main__':
parser = optparse.OptionParser(
@@ -334,11 +338,17 @@ if __name__ == '__main__':
@@ -318,11 +322,17 @@ if __name__ == '__main__':
parser.add_option('-s', '--schema', help='path to the schema file, '
'mandatory.')
parser.add_option('-o', '--output', help='output filename, ')
@@ -362,7 +344,7 @@ diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_
description_filename = os.path.normpath(args[0])
root, ext = os.path.splitext(description_filename)
shortroot = opts.output if opts.output else os.path.split(root)[1]
@@ -355,4 +365,4 @@ if __name__ == '__main__':
@@ -339,4 +349,4 @@ if __name__ == '__main__':
schema = _Load(opts.schema)
description = _Load(description_filename)
GenerateStruct(basepath, output_root, opts.namespace, schema, description,
@@ -402,7 +384,7 @@ diff --git a/tools/json_to_struct/struct_generator.py b/tools/json_to_struct/str
diff --git a/tools/variations/fieldtrial_to_struct.py b/tools/variations/fieldtrial_to_struct.py
--- a/tools/variations/fieldtrial_to_struct.py
+++ b/tools/variations/fieldtrial_to_struct.py
@@ -210,14 +210,14 @@ def main(arguments):
@@ -232,14 +232,14 @@ def main(arguments):
json_to_struct.GenerateStruct(
basepath, output_root, opts.namespace, schema, description,
os.path.split(description_filename)[1], os.path.split(opts.schema)[1],
File diff suppressed because it is too large Load Diff
@@ -1,351 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Thu, 9 Oct 2025 09:11:01 +0000
Subject: Add setting to enable Credman for passkeys
Enables Credential Manager for passkey management on A14+ devices via a switch
in the settings. By default, the feature is disabled.
In other versions of Android, webauthn appears to be enabled on websites but
always returns a timeout error as per specifications.
Conditional immediate support is disabled.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../settings/PasswordSettings.java | 27 +++++++++++++++++++
.../touch_to_fill_controller.cc | 2 ++
...etting-to-enable-Credman-for-passkeys.grdp | 12 +++++++++
.../webauthn/AuthenticatorImpl.java | 24 +++++++----------
.../components/webauthn/WebauthnFeatures.java | 2 ++
.../cred_man/CredManSupportProvider.java | 25 +++++------------
.../webauthn/android/webauthn_feature_map.cc | 1 +
components/webauthn/features.cc | 4 +++
components/webauthn/features.h | 3 +++
device/fido/public/features.cc | 2 ++
.../authentication_credentials_container.cc | 5 ++++
11 files changed, 74 insertions(+), 33 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-enable-Credman-for-passkeys.grdp
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
@@ -11,6 +11,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
@@ -68,6 +69,10 @@ import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
+import org.chromium.chrome.browser.flags.CromiteNativeUtils;
+import org.chromium.components.webauthn.WebauthnFeatureMap;
+import org.chromium.components.webauthn.WebauthnFeatures;
+
/**
* The "Passwords" screen in Settings, which allows the user to enable or disable password saving,
* to view saved passwords (just the username and URL), and to delete saved passwords.
@@ -334,6 +339,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
createSavePasswordsSwitch();
createAutoSignInCheckbox();
createEnableAndroidAutofillSwitch();
+ createCredManSwitch();
PasswordManagerHandlerProvider.getForProfile(getProfile())
.getPasswordManagerHandler()
@@ -687,6 +693,27 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_AUTOSIGNIN));
}
+ private void createCredManSwitch() {
+ ChromeSwitchPreference credManSwitch =
+ new ChromeSwitchPreference(getStyledContext(), null);
+ credManSwitch.setTitle(R.string.enable_android_credman_title);
+ credManSwitch.setOrder(0);
+ credManSwitch.setSummary(R.string.enable_android_credman_summary);
+ credManSwitch.setChecked(
+ WebauthnFeatureMap.getInstance().isEnabled(WebauthnFeatures.WEBAUTHN_ANDROID_PASSKEY));
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ credManSwitch.setSummary(R.string.enable_android_credman_disabled_summary);
+ credManSwitch.setEnabled(false);
+ }
+ credManSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
+ CromiteNativeUtils.setFlagEnabled("WebAuthenticationAndroidPasskey", (boolean)newValue);
+ if (!mSnackbarManagerSupplier.get().isShowing())
+ mSnackbarManagerSupplier.get().showSnackbar(mSnackbar);
+ return true;
+ });
+ getPreferenceScreen().addPreference(credManSwitch);
+ }
+
private void displayManageAccountLink() {
SyncService syncService = SyncServiceFactory.getForProfile(getProfile());
if (syncService == null || !syncService.isEngineInitialized()) {
diff --git a/chrome/browser/touch_to_fill/password_manager/touch_to_fill_controller.cc b/chrome/browser/touch_to_fill/password_manager/touch_to_fill_controller.cc
--- a/chrome/browser/touch_to_fill/password_manager/touch_to_fill_controller.cc
+++ b/chrome/browser/touch_to_fill/password_manager/touch_to_fill_controller.cc
@@ -312,6 +312,7 @@ void TouchToFillController::Reset() {
}
visibility_controller_->Reset();
credentials_.clear();
+ cred_man_delegate_ = nullptr;
}
void TouchToFillController::ActionCompleted() {
@@ -319,6 +320,7 @@ void TouchToFillController::ActionCompleted() {
visibility_controller_->SetShown();
}
ttf_delegate_.reset();
+ cred_man_delegate_ = nullptr;
}
DisplayTarget TouchToFillController::GetResponsibleDisplayTarget(
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-enable-Credman-for-passkeys.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-enable-Credman-for-passkeys.grdp
new file mode 100644
--- /dev/null
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-enable-Credman-for-passkeys.grdp
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_ENABLE_ANDROID_CREDMAN_TITLE" desc="" formatter_data="android_java">
+ Enable Android Credential Manager
+ </message>
+ <message name="IDS_ENABLE_ANDROID_CREDMAN_SUMMARY" desc="" formatter_data="android_java">
+ Enable support for Android Credential Manager
+ </message>
+ <message name="IDS_ENABLE_ANDROID_CREDMAN_DISABLED_SUMMARY" desc="" formatter_data="android_java">
+ Not supported on your device (require A14+)
+ </message>
+</grit-part>
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
@@ -30,6 +30,8 @@ import org.chromium.blink.mojom.WebAuthnClientCapability;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.components.password_manager.BrowserAssistedLoginType;
+import org.chromium.components.webauthn.CredManSupport;
+import org.chromium.components.webauthn.cred_man.CredManSupportProvider;
import org.chromium.components.ukm.UkmRecorder;
import org.chromium.content_public.browser.RenderFrameHost;
import org.chromium.content_public.browser.Visibility;
@@ -167,8 +169,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
mIsPaymentRequest = options.isPaymentCredentialCreation;
mRequestCallback = requestCallback;
mRequestCallback.setCompletionCallback(this::cleanupRequest);
- if (!GmsCoreUtils.isWebauthnSupported()
- || (!isChrome(mWebContents) && !GmsCoreUtils.isResultReceiverSupported())) {
+ if (CredManSupportProvider.getCredManSupport() == CredManSupport.DISABLED) {
mRequestCallback.onComplete(
WebauthnRequestResponse.forFailedMakeCredential(
AuthenticatorStatus.NOT_IMPLEMENTED,
@@ -254,8 +255,7 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
&& DeviceFeatureMap.isEnabled(
DeviceFeatureList
.WEBAUTHN_AUTHENTICATOR_PASSWORDS_ONLY_IMMEDIATE_REQUESTS);
- if (!GmsCoreUtils.isWebauthnSupported()
- || (!isChrome(mWebContents) && !GmsCoreUtils.isResultReceiverSupported())
+ if (CredManSupportProvider.getCredManSupport() == CredManSupport.DISABLED
|| (options.publicKey == null && !isPasswordOnlyFlux)) {
RequestMetrics metrics =
new RequestMetrics.Builder()
@@ -300,12 +300,11 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
}
private boolean couldSupportConditionalMediation() {
- return GmsCoreUtils.isWebauthnSupported() && isChrome(mWebContents);
+ return isChrome(mWebContents);
}
private boolean couldSupportUvpaa() {
- return GmsCoreUtils.isWebauthnSupported()
- && (isChrome(mWebContents) || GmsCoreUtils.isResultReceiverSupported());
+ return isChrome(mWebContents);
}
@Override
@@ -379,22 +378,19 @@ public final class AuthenticatorImpl implements Authenticator, AuthenticationCon
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_CONDITIONAL_GET,
- couldSupportConditionalMediation() && isUvpaa));
+ true));
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_UVPAA,
- couldSupportUvpaa() && isUvpaa));
+ true));
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_CONDITIONAL_CREATE,
- isUvpaa && couldSupportConditionalMediation()));
+ true));
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants.CAPABILITY_IMMEDIATE_GET,
- DeviceFeatureMap.isEnabled(
- DeviceFeatureList
- .WEBAUTHN_IMMEDIATE_GET)
- && isUvpaa));
+ false));
capabilities.add(
createWebAuthnClientCapability(
AuthenticatorConstants
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java
--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java
+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnFeatures.java
@@ -19,4 +19,6 @@ public abstract class WebauthnFeatures {
public static final String WEBAUTHN_ANDROID_CRED_MAN_FOR_DEV = "WebAuthnAndroidCredManForDev";
public static final String WEBAUTHN_ANDROID_CRED_MAN_REQUEST_EXTRA_BUNDLE =
"WebAuthenticationAndroidCredManRequestExtraBundle";
+ public static final String WEBAUTHN_ANDROID_PASSKEY =
+ "WebAuthenticationAndroidPasskey";
}
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java
--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java
+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java
@@ -19,11 +19,11 @@ import org.chromium.base.version_info.VersionInfo;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.components.webauthn.CredManSupport;
-import org.chromium.components.webauthn.GmsCoreUtils;
import org.chromium.components.webauthn.WebauthnFeatureMap;
import org.chromium.components.webauthn.WebauthnFeatures;
import org.chromium.components.webauthn.WebauthnMode;
import org.chromium.components.webauthn.WebauthnModeProvider;
+import org.chromium.components.webauthn.WebauthnLogger;
@NullMarked
public class CredManSupportProvider {
@@ -79,12 +79,12 @@ public class CredManSupportProvider {
}
if (getAndroidVersion() < Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
sCredManSupport = CredManSupport.DISABLED;
- log(TAG, "Disabled because of Android version.");
+ WebauthnLogger.logError(TAG, "Disabled because of Android version.");
return sCredManSupport;
}
- if (notSkippedBecauseInTests() && hasOldGmsVersion()) {
+ if (!WebauthnFeatureMap.getInstance().isEnabled(WebauthnFeatures.WEBAUTHN_ANDROID_PASSKEY)) {
sCredManSupport = CredManSupport.DISABLED;
- log(TAG, "Disabled because of old GMS version.");
+ WebauthnLogger.logError(TAG, "Disabled because of user.");
return sCredManSupport;
}
if (notSkippedBecauseInTests()
@@ -92,14 +92,14 @@ public class CredManSupportProvider {
== null) {
sCredManSupport = CredManSupport.DISABLED;
recordCredManAvailability(/* available= */ false);
- log(TAG, "Disabled because CredentialManager is not available.");
+ WebauthnLogger.logError(TAG, "Disabled because CredentialManager is not available.");
return sCredManSupport;
}
recordCredManAvailability(/* available= */ true);
final CredManUiRecommender recommender =
ServiceLoaderUtil.maybeCreate(CredManUiRecommender.class);
- boolean customUiRecommended = recommender != null && recommender.recommendsCustomUi();
+ boolean customUiRecommended = true;
boolean gpmInCredMan =
sOverrideForcesGpm != null ? sOverrideForcesGpm : customUiRecommended;
boolean isChrome3pPwmMode =
@@ -138,13 +138,6 @@ public class CredManSupportProvider {
"WebAuthentication.Android.CredManAvailability", available);
}
- private static boolean hasOldGmsVersion() {
- assert sOverrideAndroidVersion == null : "Don't use in testing!";
- // The check works for unavailable and low GMS versions. `getGmsCoreVersion()` is -1 if the
- // GMS version can't be retrieved. Chrome assumes an insufficient GMS availability then.
- return GmsCoreUtils.getGmsCoreVersion() < getMinGmsVersionForCurrentChannel();
- }
-
private static int getAndroidVersion() {
return sOverrideAndroidVersion == null ? Build.VERSION.SDK_INT : sOverrideAndroidVersion;
}
@@ -152,10 +145,4 @@ public class CredManSupportProvider {
private static boolean notSkippedBecauseInTests() {
return sOverrideForcesGpm == null && sOverrideAndroidVersion == null;
}
-
- private static int getMinGmsVersionForCurrentChannel() {
- return (VersionInfo.isBetaBuild() || VersionInfo.isStableBuild())
- ? GMSCORE_MIN_VERSION_BETA_STABLE
- : GMSCORE_MIN_VERSION_CANARY_DEV;
- }
}
diff --git a/components/webauthn/android/webauthn_feature_map.cc b/components/webauthn/android/webauthn_feature_map.cc
--- a/components/webauthn/android/webauthn_feature_map.cc
+++ b/components/webauthn/android/webauthn_feature_map.cc
@@ -18,6 +18,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kWebAuthnAndroidPasskeyCacheMigration,
&kWebAuthnAndroidCredManForDev,
&kWebAuthnAndroidCredManRequestExtraBundle,
+ &kWebAuthnAndroidPasskey,
};
// static
diff --git a/components/webauthn/features.cc b/components/webauthn/features.cc
--- a/components/webauthn/features.cc
+++ b/components/webauthn/features.cc
@@ -34,6 +34,10 @@ BASE_FEATURE(kWebAuthnAndroidCredManRequestExtraBundle,
BASE_FEATURE(kWebAuthnConditionalUiSuppressedOnWebView,
base::FEATURE_ENABLED_BY_DEFAULT);
+CROMITE_FEATURE(kWebAuthnAndroidPasskey,
+ "WebAuthenticationAndroidPasskey",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+
#endif // BUILDFLAG(IS_ANDROID)
#if !BUILDFLAG(IS_ANDROID)
diff --git a/components/webauthn/features.h b/components/webauthn/features.h
--- a/components/webauthn/features.h
+++ b/components/webauthn/features.h
@@ -27,6 +27,9 @@ BASE_DECLARE_FEATURE(kWebAuthnAndroidCredManForDev);
COMPONENT_EXPORT(WEBAUTHN)
extern const base::FeatureParam<std::string> kWebAuthnAndroidCredManForDevMode;
+COMPONENT_EXPORT(WEBAUTHN)
+BASE_DECLARE_FEATURE(kWebAuthnAndroidPasskey);
+
// Whether to send a custom bundle values for the CredMan requests. The extras
// are used by Google Password Manager.
COMPONENT_EXPORT(WEBAUTHN)
diff --git a/device/fido/public/features.cc b/device/fido/public/features.cc
--- a/device/fido/public/features.cc
+++ b/device/fido/public/features.cc
@@ -124,6 +124,7 @@ BASE_FEATURE(kWebAuthnPublishPrelinkingInfo,
"WebAuthenticationPublishPrelinkingInfo",
base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_ANDROID)
+SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGet);
// Disabled by default.
BASE_FEATURE(kWebAuthnHelloSignal,
@@ -177,6 +178,7 @@ BASE_FEATURE_PARAM(int,
BASE_FEATURE(kWebAuthnImmediateGetAutoselect,
"WebAuthenticationImmediateGetAutoselect",
base::FEATURE_ENABLED_BY_DEFAULT);
+SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGetAutoselect);
// Deprecation flag. Disabled by default in M142. Remove in or after M145.
BASE_FEATURE(kWebAuthnSendPinGeneration,
diff --git a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc
--- a/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc
+++ b/third_party/blink/renderer/modules/credentialmanagement/authentication_credentials_container.cc
@@ -1129,6 +1129,11 @@ DOMException* AuthenticatorStatusToDOMException(
const WebAuthnDOMExceptionDetailsPtr& dom_exception_details) {
DCHECK_EQ(status != AuthenticatorStatus::ERROR_WITH_DOM_EXCEPTION_DETAILS,
dom_exception_details.is_null());
+ if (status == AuthenticatorStatus::UNKNOWN_ERROR ||
+ status == AuthenticatorStatus::NOT_IMPLEMENTED) {
+ status = AuthenticatorStatus::NOT_ALLOWED_ERROR;
+ base::PlatformThread::Sleep(base::Milliseconds(base::RandInt(1000, 6000)));
+ }
switch (status) {
case AuthenticatorStatus::SUCCESS:
NOTREACHED();
--
@@ -21,7 +21,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../accessibility/AccessibilitySettings.java | 12 +++++++
.../AccessibilitySettingsDelegate.java | 2 ++
.../contextmenu/ContextMenuItemDelegate.java | 3 ++
.../ThinWebViewContextMenuItemDelegate.java | 6 ++++
...Add-setting-to-invert-tap-and-long-tap.inc | 8 +++++
...Add-setting-to-invert-tap-and-long-tap.inc | 3 ++
...Add-setting-to-invert-tap-and-long-tap.inc | 1 +
@@ -29,9 +28,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../renderer/core/html/html_anchor_element.h | 7 +++-
.../renderer/core/html/html_image_element.cc | 17 +++++++++
.../renderer/core/html/html_image_element.h | 2 ++
.../core/page/context_menu_controller.cc | 23 +++++++++---
.../core/page/context_menu_controller.cc | 33 ++++++++++++-----
.../core/page/context_menu_controller.h | 5 +--
23 files changed, 170 insertions(+), 16 deletions(-)
22 files changed, 170 insertions(+), 20 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Add-setting-to-invert-tap-and-long-tap.inc
create mode 100644 cromite_flags/third_party/blink/common/features_h/Add-setting-to-invert-tap-and-long-tap.inc
@@ -41,8 +40,8 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/contextmenu/A
+++ b/android_webview/java/src/org/chromium/android_webview/contextmenu/AwContextMenuItemDelegate.java
@@ -11,6 +11,7 @@ import android.net.Uri;
import org.chromium.base.IntentUtils;
import org.chromium.build.annotations.NullMarked;
import org.chromium.components.embedder_support.contextmenu.ContextMenuItemDelegate;
import org.chromium.components.embedder_support.contextmenu.ContextMenuParams;
+import org.chromium.content_public.common.Referrer;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.Clipboard;
@@ -60,7 +59,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/contextmenu/A
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
--- a/chrome/android/java/res/values/ids.xml
+++ b/chrome/android/java/res/values/ids.xml
@@ -111,6 +111,7 @@ found in the LICENSE file.
@@ -88,6 +88,7 @@ found in the LICENSE file.
<!-- Menu item IDs for FullscreenActivities -->
<item type="id" name="contextmenu_open_in_chrome" />
@@ -71,7 +70,7 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
@@ -167,6 +167,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
@@ -162,6 +162,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
mSnackbarManagerSupplier.get().showSnackbar(mSnackbar);
}
@@ -99,38 +98,38 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java
@@ -135,8 +135,9 @@ class ChromeContextMenuItem {
// Developer Group
int VIEW_PAGE_SOURCE = 41;
int INSPECT_ELEMENT = 42;
+ int FOLLOW_LINK = 43;
@@ -111,8 +111,9 @@ class ChromeContextMenuItem {
int SHARE_HIGHLIGHT = 32;
int REMOVE_HIGHLIGHT = 33;
int LEARN_MORE = 34;
+ int FOLLOW_LINK = 35;
// ALWAYS UPDATE!
- int NUM_ENTRIES = 43;
+ int NUM_ENTRIES = 44;
- int NUM_ENTRIES = 35;
+ int NUM_ENTRIES = 36;
}
/** Mapping from {@link Item} to the ID found in the ids.xml. */
@@ -184,6 +185,7 @@ class ChromeContextMenuItem {
R.id.contextmenu_print_page, // Item.PRINT_PAGE
R.id.contextmenu_view_page_source, // Item.VIEW_PAGE_SOURCE
R.id.contextmenu_inspect_element, // Item.INSPECT_ELEMENT
+ R.id.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB
@@ -152,6 +153,7 @@ class ChromeContextMenuItem {
R.id.contextmenu_share_highlight, // Item.SHARE_HIGHLIGHT
R.id.contextmenu_remove_highlight, // Item.REMOVE_HIGHLIGHT
R.id.contextmenu_learn_more, // Item.LEARN_MORE
+ R.id.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB
};
/** Mapping from {@link Item} to the ID of the string that describes the action of the item. */
@@ -231,6 +233,7 @@ class ChromeContextMenuItem {
R.string.contextmenu_print_page, // Item.PRINT_PAGE
R.string.contextmenu_view_page_source, // Item.VIEW_PAGE_SOURCE
R.string.contextmenu_inspect_element, // Item.INSPECT_ELEMENT
+ R.string.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB
@@ -191,6 +193,7 @@ class ChromeContextMenuItem {
R.string.contextmenu_share_highlight, // Item.SHARE_HIGHLIGHT
R.string.contextmenu_remove_highlight, // Item.REMOVE_HIGHLIGHT
R.string.contextmenu_learn_more, // Item.LEARN_MORE
+ R.string.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB:
};
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -488,6 +488,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
}
@@ -347,6 +347,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
if (mParams.isAnchor()) {
ModelList linkGroup = new ModelList();
+ if (ChromeFeatureList.sShowAlwaysContextMenuOnLinks.isEnabled()) {
@@ -139,19 +138,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
if (FirstRunStatus.getFirstRunFlowComplete()
&& !isEmptyUrl(mParams.getUrl())
&& UrlUtilities.isAcceptedScheme(mParams.getUrl())) {
@@ -1132,6 +1135,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
title = mParams.getLinkText();
}
tabItemDelegate.onReadLater(mParams.getUrl(), title);
@@ -738,6 +741,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
getProfile(),
false);
});
+ } else if (itemId == R.id.contextmenu_open_in_tab) {
+ mItemDelegate.onOpenUrl(mParams.getUrl(), mParams.getReferrer());
} else if (itemId == R.id.contextmenu_open_in_chrome) {
recordContextMenuSelection(ContextMenuUma.Action.OPEN_IN_CHROME);
tabItemDelegate.onOpenInChrome(mParams.getUrl(), mParams.getPageUrl());
mItemDelegate.onOpenInChrome(mParams.getUrl(), mParams.getPageUrl());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
@@ -417,6 +417,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@@ -301,6 +301,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
mTab.loadUrl(loadUrlParams);
}
@@ -169,47 +168,47 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM
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
@@ -447,6 +447,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kTabClosureMethodRefactor,
&kTabModelInitFixes,
&kTabStorageSqlitePrototype,
@@ -343,6 +343,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kTabDragDropAndroid,
&kToolbarPhoneCleanup,
&kTabGroupCreationDialogAndroid,
+ &blink::features::kShowAlwaysContextMenuOnLinks,
&kTabStripAutoSelectOnCloseChange,
&kTabStripCloseRefactorAndroid,
&kTabStripDensityChangeAndroid,
&kTabResumptionModuleAndroid,
&kTabStateFlatBuffer,
&kTabStripGroupCollapseAndroid,
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
@@ -528,6 +528,8 @@ public abstract class ChromeFeatureList {
@@ -410,6 +410,8 @@ public abstract class ChromeFeatureList {
"DisableToolbarSwipeUp";
public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM =
"MoveTopToolbarToBottom";
+ public static final String SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS =
+ "ShowAlwaysContextMenuOnLinks";
public static final String NEW_TAB_PAGE_CUSTOMIZATION_THEME_SYNC =
"NewTabPageCustomizationThemeSync";
public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2";
@@ -1051,6 +1053,8 @@ public abstract class ChromeFeatureList {
public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant";
public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET =
"NotificationPermissionBottomSheet";
@@ -773,6 +775,8 @@ public abstract class ChromeFeatureList {
newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false);
public static final CachedFlag sMoveTopToolbarToBottom =
newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false);
+ public static final CachedFlag sShowAlwaysContextMenuOnLinks =
+ newCachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false);
public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false);
public static final CachedFlag sPersistAcrossReboots =
newCachedFlag(PERSIST_ACROSS_REBOOTS, false);
@@ -1325,6 +1329,7 @@ public abstract class ChromeFeatureList {
sTopControlsRefactorV2,
sTouchToSearchCallout,
sUnparcelIntentFileDescriptors,
+ sShowAlwaysContextMenuOnLinks,
sUseActivityManagerForTabActivation,
public static final CachedFlag sPostGetMyMemoryStateToBackground =
newCachedFlag(POST_GET_MEMORY_PRESSURE_TO_BACKGROUND, true);
@@ -959,6 +963,7 @@ public abstract class ChromeFeatureList {
sTabWindowManagerReportIndicesMismatch,
sTraceBinderIpc,
sUseChimeAndroidSdk,
sUseInitialNetworkStateAtStartup,
+ sShowAlwaysContextMenuOnLinks,
sUseLibunwindstackNativeUnwinderAndroid,
sWebApkMinShellApkVersion);
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1657,6 +1657,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1722,6 +1722,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_DISABLE_TOOLBAR_SWIPE_UP" desc="Summary of the preference that allows the user to disable toolbar swipeup.">
Disable toolbar swipe up
</message>
@@ -222,20 +221,20 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<!-- Safety check -->
<message name="IDS_PREFS_SAFETY_CHECK" desc="Title of the Safety check element in settings, allowing the user to check multiple areas of browser safety. [CHAR_LIMIT=32]">
@@ -3320,6 +3326,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -3281,6 +3287,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_CONTEXTMENU_OPEN_IN_NEW_CHROME_TAB" desc="Context sensitive menu item to open the selected link in a new Chrome tab from Chrome Custom Tab. [CHAR_LIMIT=30]">
Open in new Chrome tab
</message>
+ <message name="IDS_CONTEXTMENU_OPEN_IN_TAB" desc="Context sensitive menu item to open the selected link in tab. [CHAR_LIMIT=30]">
+ Open in current tab
+ </message>
<message name="IDS_CONTEXTMENU_OPEN_IN_CHROME_WINDOW" desc="Context sensitive menu item to open the selected link in a Chrome window from Chrome Custom Tab. Used when there is a dedicated window for Incognito tabs. [CHAR_LIMIT=30]">
Open in Chrome window
<message name="IDS_CONTEXTMENU_OPEN_IN_CHROME_INCOGNITO_TAB" desc="Context sensitive menu item to open the selected link in a Chrome Incognito tab from Chrome Custom Tab. [CHAR_LIMIT=30]">
Open in Incognito tab
</message>
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -26,6 +26,11 @@ found in the LICENSE file.
@@ -31,6 +31,11 @@ found in the LICENSE file.
android:summary="@string/page_zoom_always_show_preference_summary"
android:title="@string/page_zoom_always_show_preference_title" />
@@ -250,7 +249,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -89,6 +89,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -48,6 +48,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate;
private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate;
@@ -260,7 +259,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -198,6 +201,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -136,6 +139,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.getValue());
mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this);
@@ -273,7 +272,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -323,6 +332,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -214,6 +223,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
} else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) {
mDisableToolbarSwipeUpDelegate.setValue((Boolean) newValue);
mDelegate.requestRestart(getActivity());
@@ -286,7 +285,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
@@ -45,6 +45,8 @@ public interface AccessibilitySettingsDelegate {
@@ -42,6 +42,8 @@ public interface AccessibilitySettingsDelegate {
BooleanPreferenceDelegate getMoveTopToolbarToBottomDelegate();
BooleanPreferenceDelegate getDisableToolbarSwipeUpDelegate();
@@ -298,15 +297,15 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
diff --git a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java
--- a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java
+++ b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuItemDelegate.java
@@ -11,6 +11,7 @@ import androidx.annotation.IntDef;
@@ -9,6 +9,7 @@ import android.net.Uri;
import androidx.annotation.IntDef;
import org.chromium.build.annotations.NullMarked;
import org.chromium.content_public.browser.WebContents;
+import org.chromium.content_public.common.Referrer;
import org.chromium.url.GURL;
import java.lang.annotation.Retention;
@@ -175,6 +176,8 @@ public interface ContextMenuItemDelegate {
@@ -148,6 +149,8 @@ public interface ContextMenuItemDelegate {
*/
GURL getPageUrl();
@@ -315,29 +314,6 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
/**
* Called when the current embedder app is not the default to handle a View Intent.
*
diff --git a/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java b/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java
--- a/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java
+++ b/components/thin_webview/internal/java/src/org/chromium/components/thinwebview/internal/ThinWebViewContextMenuItemDelegate.java
@@ -6,6 +6,7 @@ package org.chromium.components.thinwebview.internal;
import org.chromium.build.annotations.NullMarked;
import org.chromium.components.embedder_support.contextmenu.ContextMenuItemDelegate;
+import org.chromium.content_public.common.Referrer;
import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.Clipboard;
import org.chromium.url.GURL;
@@ -43,6 +44,11 @@ public class ThinWebViewContextMenuItemDelegate implements ContextMenuItemDelega
// Intentionally empty.
}
+ @Override
+ public void onOpenUrl(GURL url, Referrer referrer) {
+ // Intentionally empty. (Add setting to invert tap and long tap)
+ }
+
@Override
public GURL getPageUrl() {
return mWebContents.getVisibleUrl();
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-setting-to-invert-tap-and-long-tap.inc
new file mode 100644
--- /dev/null
@@ -368,15 +344,15 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third_party/blink/renderer/core/html/html_anchor_element.cc
--- a/third_party/blink/renderer/core/html/html_anchor_element.cc
+++ b/third_party/blink/renderer/core/html/html_anchor_element.cc
@@ -69,6 +69,7 @@
@@ -63,6 +63,7 @@
#include "third_party/blink/renderer/core/loader/render_blocking_resource_manager.h"
#include "third_party/blink/renderer/core/navigation_api/navigation_api.h"
#include "third_party/blink/renderer/core/page/chrome_client.h"
+#include "third_party/blink/renderer/core/page/context_menu_controller.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/core/scroll/scroll_into_view_util.h"
#include "third_party/blink/renderer/core/speculation_rules/document_speculation_rules.h"
@@ -429,6 +430,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
@@ -503,6 +504,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
bool is_trusted,
base::TimeTicks platform_time_stamp,
KURL completed_url) {
@@ -394,8 +370,8 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
LocalDOMWindow* window = GetDocument().domWindow();
if (!window) {
return;
@@ -509,6 +521,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
frame_request.SetImpression(impression);
@@ -585,6 +597,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
request.GetReferrerPolicy()));
}
+ if (!do_not_show_context_menu &&
@@ -410,8 +386,8 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
Frame* target_frame =
frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame;
@@ -545,7 +566,7 @@ bool HTMLAnchorElementBase::IsValidInterestInvoker(Element& target) const {
return IsLink();
@@ -627,7 +648,7 @@ Element* HTMLAnchorElementBase::interestTargetElement() {
html_names::kInteresttargetAttr);
}
-void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
@@ -419,25 +395,25 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
event.SetDefaultHandled();
LocalDOMWindow* window = GetDocument().domWindow();
@@ -603,13 +624,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
@@ -723,13 +744,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
return;
}
- base::OnceClosure navigate_closure = blink::BindOnce(
- base::OnceClosure navigate_closure = WTF::BindOnce(
- &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this),
- std::move(request), navigation_policy, event.isTrusted(),
- event.PlatformTimeStamp(), std::move(completed_url));
-
if (navigation_policy == kNavigationPolicyDownload ||
navigation_policy == kNavigationPolicyLinkPreview) {
+ base::OnceClosure navigate_closure = blink::BindOnce(
+ base::OnceClosure navigate_closure = WTF::BindOnce(
+ &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this),
+ std::move(request), navigation_policy, event.isTrusted(),
+ event.PlatformTimeStamp(), std::move(completed_url));
// We distinguish single/double click with some modifiers.
// See the comment of `EventHandler.delayed_navigation_task_handle_`.
auto task_handle = PostDelayedCancellableTask(
@@ -619,7 +639,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
@@ -739,7 +759,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
frame->GetEventHandler().SetDelayedNavigationTaskHandle(
std::move(task_handle));
} else {
@@ -451,15 +427,15 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_party/blink/renderer/core/html/html_anchor_element.h
--- a/third_party/blink/renderer/core/html/html_anchor_element.h
+++ b/third_party/blink/renderer/core/html/html_anchor_element.h
@@ -90,6 +90,7 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement,
bool IsValidInterestInvoker(Element& target) const override;
@@ -112,6 +112,7 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement,
Element* interestTargetElement() override;
void Trace(Visitor*) const override;
+ void HandleClick(MouseEvent&, bool do_not_show_context_menu = false);
protected:
HTMLAnchorElementBase(const QualifiedName& tag_name, Document&);
@@ -121,7 +122,11 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement,
@@ -143,7 +144,11 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement,
bool is_trusted,
base::TimeTicks platform_time_stamp,
KURL);
@@ -475,7 +451,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_
diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_party/blink/renderer/core/html/html_image_element.cc
--- a/third_party/blink/renderer/core/html/html_image_element.cc
+++ b/third_party/blink/renderer/core/html/html_image_element.cc
@@ -37,6 +37,7 @@
@@ -36,6 +36,7 @@
#include "third_party/blink/renderer/core/dom/events/event_dispatch_forbidden_scope.h"
#include "third_party/blink/renderer/core/dom/node_traversal.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
@@ -483,7 +459,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
#include "third_party/blink/renderer/core/frame/attribution_src_loader.h"
#include "third_party/blink/renderer/core/frame/deprecation/deprecation.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
@@ -65,6 +66,7 @@
@@ -63,6 +64,7 @@
#include "third_party/blink/renderer/core/media_type_names.h"
#include "third_party/blink/renderer/core/page/chrome_client.h"
#include "third_party/blink/renderer/core/page/page.h"
@@ -491,7 +467,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
#include "third_party/blink/renderer/core/paint/timing/paint_timing.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h"
@@ -782,6 +784,21 @@ void HTMLImageElement::DidFinishLayout() {
@@ -797,6 +799,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate(
}
}
@@ -512,23 +488,23 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
+
bool HTMLImageElement::draggable() const {
// Image elements are draggable by default.
return !EqualIgnoringAsciiCase(FastGetAttribute(html_names::kDraggableAttr),
return !EqualIgnoringASCIICase(FastGetAttribute(html_names::kDraggableAttr),
diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_party/blink/renderer/core/html/html_image_element.h
--- a/third_party/blink/renderer/core/html/html_image_element.h
+++ b/third_party/blink/renderer/core/html/html_image_element.h
@@ -211,6 +211,8 @@ class CORE_EXPORT HTMLImageElement
@@ -218,6 +218,8 @@ class CORE_EXPORT HTMLImageElement
void DidAddUserAgentShadowRoot(ShadowRoot&) override;
void AdjustStyle(ComputedStyleBuilder&) override;
+ void DefaultEventHandler(Event&) override;
+
private:
void ParseAttribute(const AttributeModificationParams&) override;
bool IsPresentationAttribute(const QualifiedName&) const override;
bool AreAuthorShadowsAllowed() const override { return false; }
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc
--- a/third_party/blink/renderer/core/page/context_menu_controller.cc
+++ b/third_party/blink/renderer/core/page/context_menu_controller.cc
@@ -201,15 +201,17 @@ void ContextMenuController::DocumentDetached(Document* document) {
@@ -197,14 +197,16 @@ void ContextMenuController::DocumentDetached(Document* document) {
}
}
@@ -538,8 +514,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
+ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) {
+ DCHECK(mouse_event->type() == event_type_names::kContextmenu);
+ }
LocalFrame* frame =
mouse_event->RawTarget()->ToNode()->GetDocument().GetFrame();
LocalFrame* frame = mouse_event->target()->ToNode()->GetDocument().GetFrame();
PhysicalOffset location =
PhysicalOffset::FromPointFRound(mouse_event->AbsoluteLocation());
@@ -549,7 +524,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
mouse_event->SetDefaultHandled();
}
@@ -440,7 +442,8 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
@@ -428,7 +430,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch(
bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
const PhysicalOffset& point,
WebMenuSourceType source_type,
@@ -559,7 +534,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
// Displaying the context menu in this function is a big hack as we don't
// have context, i.e. whether this is being invoked via a script or in
// response to user input (Mouse event WM_RBUTTONDOWN,
@@ -463,6 +466,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
@@ -451,6 +454,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
if (!result.InnerNodeOrImageMapImage())
return false;
@@ -576,19 +551,29 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
// Clear any previously set cached results if we are resetting the hit test
// result.
image_selection_cached_result_ = nullptr;
@@ -843,7 +856,7 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
@@ -782,11 +795,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
SetAutofillData(result.InnerNode(), data);
- const bool from_touch = source_type == kMenuSourceTouch ||
- source_type == kMenuSourceLongPress ||
- source_type == kMenuSourceLongTap;
- if (from_touch && !ShouldShowContextMenuFromTouch(data))
+ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks) && from_touch && !ShouldShowContextMenuFromTouch(data))
return false;
- return false;
+ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) {
+ const bool from_touch = source_type == kMenuSourceTouch ||
+ source_type == kMenuSourceLongPress ||
+ source_type == kMenuSourceLongTap;
+ if (from_touch && !ShouldShowContextMenuFromTouch(data))
+ return false;
+ }
WebLocalFrameImpl* selected_web_frame =
WebLocalFrameImpl::FromFrame(selected_frame);
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/third_party/blink/renderer/core/page/context_menu_controller.h
--- a/third_party/blink/renderer/core/page/context_menu_controller.h
+++ b/third_party/blink/renderer/core/page/context_menu_controller.h
@@ -58,7 +58,7 @@ class CORE_EXPORT ContextMenuController
@@ -58,7 +58,7 @@ class CORE_EXPORT ContextMenuController final
void DocumentDetached(Document*);
@@ -597,13 +582,13 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/th
void ShowContextMenuAtPoint(LocalFrame*,
float x,
float y,
@@ -127,7 +127,8 @@ class CORE_EXPORT ContextMenuController
virtual bool ShowContextMenu(LocalFrame*,
const PhysicalOffset&,
WebMenuSourceType,
- const MouseEvent* mouse_event);
+ const MouseEvent* mouse_event,
+ bool do_not_show_context_menu = false);
@@ -125,7 +125,8 @@ class CORE_EXPORT ContextMenuController final
bool ShowContextMenu(LocalFrame*,
const PhysicalOffset&,
WebMenuSourceType,
- const MouseEvent* mouse_event = nullptr);
+ const MouseEvent* mouse_event = nullptr,
+ bool do_not_show_context_menu = false);
bool ShouldShowContextMenuFromTouch(const ContextMenuData&);
+9 -44
View File
@@ -9,8 +9,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/about_flags.cc | 1 +
.../engagement/important_sites_util.cc | 9 +++++
.../browser/media/media_engagement_service.cc | 4 ++-
.../auto_picture_in_picture_tab_helper.cc | 2 +-
.../internal/tracker_impl.cc | 3 ++
.../public/feature_configurations.cc | 7 ++++
.../content/site_engagement_score.cc | 5 +++
@@ -18,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/site_engagement/core/features.cc | 30 ++++++++++++++++
components/site_engagement/core/features.h | 34 +++++++++++++++++++
.../Add-site-engagement-flag.inc | 10 ++++++
11 files changed, 109 insertions(+), 2 deletions(-)
9 files changed, 105 insertions(+)
create mode 100644 components/site_engagement/core/features.cc
create mode 100644 components/site_engagement/core/features.h
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-site-engagement-flag.inc
@@ -29,7 +27,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
@@ -166,6 +166,7 @@
#include "components/sensitive_content/features.h"
#include "components/services/heap_profiling/public/cpp/switches.h"
#include "components/services/storage/dom_storage/features.h"
#include "components/services/storage/public/cpp/buckets/bucket_info.h"
+#include "components/site_engagement/core/features.h"
#include "components/shared_highlighting/core/common/shared_highlighting_features.h"
#include "components/sharing_message/features.h"
@@ -37,7 +35,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc
--- a/chrome/browser/engagement/important_sites_util.cc
+++ b/chrome/browser/engagement/important_sites_util.cc
@@ -29,6 +29,7 @@
@@ -32,6 +32,7 @@
#include "components/prefs/scoped_user_pref_update.h"
#include "components/site_engagement/content/site_engagement_score.h"
#include "components/site_engagement/content/site_engagement_service.h"
@@ -45,7 +43,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/
#include "components/site_engagement/core/mojom/site_engagement_details.mojom.h"
#include "components/webapps/browser/banners/app_banner_settings_helper.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
@@ -343,6 +344,10 @@ void ImportantSitesUtil::RegisterProfilePrefs(
@@ -349,6 +350,10 @@ void ImportantSitesUtil::RegisterProfilePrefs(
// static
std::set<std::string> ImportantSitesUtil::GetInstalledRegisterableDomains(
Profile* profile) {
@@ -56,7 +54,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/
std::set<GURL> installed_origins = GetOriginsWithInstalledWebApps(profile);
std::set<std::string> registerable_domains;
@@ -357,6 +362,10 @@ std::vector<ImportantDomainInfo>
@@ -363,6 +368,10 @@ std::vector<ImportantDomainInfo>
ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile,
size_t max_results) {
SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime");
@@ -67,39 +65,6 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/
std::map<std::string, ImportantDomainInfo> important_info;
std::map<GURL, double> engagement_map;
diff --git a/chrome/browser/media/media_engagement_service.cc b/chrome/browser/media/media_engagement_service.cc
--- a/chrome/browser/media/media_engagement_service.cc
+++ b/chrome/browser/media/media_engagement_service.cc
@@ -25,6 +25,7 @@
#include "components/history/core/browser/history_service.h"
#include "components/no_state_prefetch/browser/no_state_prefetch_contents.h"
#include "components/prefs/pref_service.h"
+#include "components/site_engagement/core/features.h"
#include "content/public/browser/web_contents.h"
#include "media/base/media_switches.h"
#include "url/origin.h"
@@ -54,7 +55,8 @@ enum class MediaEngagementClearReason {
// static
bool MediaEngagementService::IsEnabled() {
- return base::FeatureList::IsEnabled(media::kRecordMediaEngagementScores);
+ return base::FeatureList::IsEnabled(media::kRecordMediaEngagementScores)
+ && base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement);
}
// static
diff --git a/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc b/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc
--- a/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc
+++ b/chrome/browser/picture_in_picture/auto_picture_in_picture_tab_helper.cc
@@ -46,7 +46,7 @@ AutoPictureInPictureTabHelper::AutoPictureInPictureTabHelper(
Profile::FromBrowserContext(web_contents->GetBrowserContext()))),
auto_blocker_(PermissionDecisionAutoBlockerFactory::GetForProfile(
Profile::FromBrowserContext(web_contents->GetBrowserContext()))),
- media_engagement_service_(MediaEngagementService::Get(
+ media_engagement_service_(!MediaEngagementService::IsEnabled() ? nullptr : MediaEngagementService::Get(
Profile::FromBrowserContext(web_contents->GetBrowserContext()))),
clock_(base::DefaultTickClock::GetInstance()) {
// `base::Unretained` is safe here since we own `tab_observer_helper_`.
diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components/feature_engagement/internal/tracker_impl.cc
--- a/components/feature_engagement/internal/tracker_impl.cc
+++ b/components/feature_engagement/internal/tracker_impl.cc
@@ -111,19 +76,19 @@ diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components
#include "components/feature_engagement/internal/availability_model_impl.h"
#include "components/feature_engagement/internal/blocked_iph_features.h"
#include "components/feature_engagement/internal/chrome_variations_configuration.h"
@@ -290,6 +291,8 @@ TrackerImpl::TrackerImpl(
@@ -236,6 +237,8 @@ TrackerImpl::TrackerImpl(
TrackerImpl::~TrackerImpl() = default;
void TrackerImpl::NotifyEvent(const std::string& event) {
+ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement))
+ return;
GetEventModelWriter()->IncrementEvent(event, time_provider_->GetCurrentDay());
event_model_->IncrementEvent(event, time_provider_->GetCurrentDay());
stats::RecordNotifyEvent(event, configuration_.get(),
event_model_provider_->IsReady());
event_model_->IsReady());
diff --git a/components/feature_engagement/public/feature_configurations.cc b/components/feature_engagement/public/feature_configurations.cc
--- a/components/feature_engagement/public/feature_configurations.cc
+++ b/components/feature_engagement/public/feature_configurations.cc
@@ -6,6 +6,7 @@
@@ -11,6 +11,7 @@
#include "base/strings/string_util.h"
#include "build/build_config.h"
@@ -5,17 +5,25 @@ Subject: Add support for ISupportHelpAndFeedback
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../chrome/browser/settings/SettingsActivity.java | 8 ++++++--
.../components/browser_ui/settings/SettingsUtils.java | 4 ++++
2 files changed, 10 insertions(+), 2 deletions(-)
.../chrome/browser/settings/SettingsActivity.java | 9 +++++++--
.../components/browser_ui/settings/SettingsUtils.java | 4 ++++
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
@@ -1056,8 +1056,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
@@ -55,6 +55,7 @@ import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory;
import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController;
+import org.chromium.components.browser_ui.settings.SettingsUtils;
import org.chromium.components.browser_ui.modaldialog.AppModalPresenter;
import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage;
import org.chromium.components.browser_ui.util.TraceEventVectorDrawableCompat;
@@ -442,8 +443,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
finishCurrentSettings(mainFragment);
return true;
} else if (item.getItemId() == R.id.menu_id_general_help) {
RecordUserAction.record("Settings.MobileHelpAndFeedback");
- HelpAndFeedbackLauncherImpl.getForProfile(mProfile)
- .show(this, getString(R.string.help_context_settings), null);
+ if (mainFragment instanceof SettingsUtils.ISupportHelpAndFeedback) {
@@ -30,15 +38,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
diff --git a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsUtils.java b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsUtils.java
--- a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsUtils.java
+++ b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsUtils.java
@@ -33,6 +33,10 @@ import java.util.ArrayList;
/** A helper class for Settings. */
@NullMarked
public class SettingsUtils {
@@ -93,4 +93,8 @@ public class SettingsUtils {
ToolbarUtils.setOverflowMenuVisibility(toolbar, visibility);
return true;
}
+
+ public interface ISupportHelpAndFeedback {
+ void onHelpAndFeebackPressed();
+ }
+
/**
* A helper that is used to load preferences from XML resources without causing a
* StrictModeViolation. See http://crbug.com/692125.
}
--
@@ -9,13 +9,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
base/android/content_uri_utils.cc | 10 ++++++
base/android/content_uri_utils.h | 4 +++
.../org/chromium/base/ContentUriUtils.java | 33 +++++++++++++++++++
3 files changed, 47 insertions(+)
.../org/chromium/base/ContentUriUtils.java | 34 +++++++++++++++++++
3 files changed, 48 insertions(+)
diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc
--- a/base/android/content_uri_utils.cc
+++ b/base/android/content_uri_utils.cc
@@ -140,6 +140,16 @@ static void JNI_ContentUriUtils_AddFileInfoToVector(
@@ -119,6 +119,16 @@ void JNI_ContentUriUtils_AddFileInfoToVector(JNIEnv* env,
Time::FromMillisecondsSinceUnixEpoch(last_modified));
}
@@ -35,9 +35,9 @@ diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.
diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h
--- a/base/android/content_uri_utils.h
+++ b/base/android/content_uri_utils.h
@@ -46,6 +46,10 @@ int ContentUriGetFd(
void ContentUriClose(
const base::android::JavaRef<jobject>& java_parcel_file_descriptor);
@@ -33,6 +33,10 @@ BASE_EXPORT std::optional<std::string> TranslateOpenFlagsToJavaMode(
// Returns -1 if the URI is invalid.
int OpenContentUri(const FilePath& content_uri, uint32_t open_flags);
+// Opens a content URI for write and returns the file descriptor to the caller.
+// Returns -1 if the URI is invalid.
@@ -49,7 +49,15 @@ diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h
diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base/android/java/src/org/chromium/base/ContentUriUtils.java
--- a/base/android/java/src/org/chromium/base/ContentUriUtils.java
+++ b/base/android/java/src/org/chromium/base/ContentUriUtils.java
@@ -31,6 +31,9 @@ import org.chromium.build.annotations.Nullable;
@@ -12,6 +12,7 @@ import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
+import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import android.text.TextUtils;
@@ -30,6 +31,9 @@ import org.chromium.build.annotations.Nullable;
import java.io.IOException;
import java.util.List;
@@ -59,8 +67,8 @@ diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base
/** This class provides methods to access content URI schemes. */
@JNINamespace("base")
@NullMarked
@@ -72,6 +75,36 @@ public abstract class ContentUriUtils {
StreamUtil.closeQuietly(parcelFileDescriptor);
@@ -64,6 +68,36 @@ public abstract class ContentUriUtils {
return -1;
}
+ @CalledByNative
File diff suppressed because it is too large Load Diff
+18 -18
View File
@@ -52,7 +52,7 @@ new file mode 100644
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
+import org.chromium.components.content_settings.ContentSetting;
+import org.chromium.components.content_settings.ContentSettingValues;
+import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.content_public.browser.BrowserContextHandle;
+
@@ -65,8 +65,8 @@ new file mode 100644
+public class BromiteWebGLContentSetting extends BromiteCustomContentSetting {
+ public BromiteWebGLContentSetting() {
+ super(/*contentSettingsType*/ ContentSettingsType.WEBGL,
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
+ /*allowException*/ true,
+ /*preferenceKey*/ "webgl",
+ /*profilePrefKey*/ "webgl");
@@ -85,11 +85,11 @@ new file mode 100644
+ }
+
+ @Override
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
+ switch (value) {
+ case ContentSetting.ALLOW:
+ case ContentSettingValues.ALLOW:
+ return R.string.website_settings_category_webgl_enabled;
+ case ContentSetting.BLOCK:
+ case ContentSettingValues.BLOCK:
+ return R.string.website_settings_category_webgl_disabled;
+ default:
+ return 0;
@@ -117,8 +117,8 @@ new file mode 100644
+ }
+
+ @Override
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
+ return value != ContentSetting.BLOCK;
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
+ return value != ContentSettingValues.BLOCK;
+ }
+}
diff --git a/components/browser_ui/strings/bromite_content_settings/webgl.grdp b/components/browser_ui/strings/bromite_content_settings/webgl.grdp
@@ -166,7 +166,7 @@ new file mode 100644
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::WEBGL)
@@ -189,7 +189,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
+++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -86,6 +86,13 @@ blink::WebContentSettingsClient* GetContentSettingsClientFor(
@@ -85,6 +85,13 @@ blink::WebContentSettingsClient* GetContentSettingsClientFor(
return settings;
}
@@ -206,7 +206,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
+++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -111,6 +111,8 @@ enum ReasonForCallingCanExecuteScripts {
@@ -116,6 +116,8 @@ enum ReasonForCallingCanExecuteScripts {
enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag };
@@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -342,6 +342,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
@@ -297,6 +297,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
}
}
@@ -232,8 +232,8 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() {
base::AutoLock locker(WebGLContextLimitLock());
DCHECK(webgl_context_limits_initialized_);
@@ -612,25 +619,6 @@ static String ExtractWebGLContextCreationError(
const Platform::WebGLContextInfo& info) {
@@ -566,25 +573,6 @@ static String ExtractWebGLContextCreationError(
const Platform::GraphicsInfo& info) {
StringBuilder builder;
builder.Append("Could not create a WebGL context");
- FormatWebGLStatusString(
@@ -258,10 +258,10 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(),
builder);
builder.Append('.');
@@ -691,6 +679,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
@@ -644,6 +632,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
const CanvasContextCreationAttributesCore& attributes,
Platform::WebGLContextType context_type,
Platform::WebGLContextInfo* context_info) {
Platform::ContextType context_type,
Platform::GraphicsInfo* graphics_info) {
+ if (!AllowWebglForHost(host)) {
+ host->HostDispatchEvent(WebGLContextEvent::Create(
+ event_type_names::kWebglcontextcreationerror,
@@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
@@ -2009,6 +2009,8 @@ class MODULES_EXPORT WebGLRenderingContextBase
@@ -1936,6 +1936,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
DOMArrayBufferView* pixels,
int64_t offset);
+22 -24
View File
@@ -12,9 +12,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bromite_content_settings/webrtc.inc | 22 +++++
.../bromite_content_settings/WEBRTC.inc | 1 +
.../peer_connection_dependency_factory.cc | 6 ++
.../peerconnection/rtc_rtp_receiver.cc | 11 +++
.../modules/peerconnection/rtc_rtp_sender.cc | 11 +++
7 files changed, 172 insertions(+)
.../peerconnection/rtc_rtp_receiver.cc | 10 ++
.../modules/peerconnection/rtc_rtp_sender.cc | 10 ++
7 files changed, 170 insertions(+)
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebRTCContentSetting.java
create mode 100644 components/browser_ui/strings/bromite_content_settings/webrtc.grdp
create mode 100644 components/content_settings/core/browser/bromite_content_settings/webrtc.inc
@@ -49,7 +49,7 @@ new file mode 100644
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
+import org.chromium.components.content_settings.ContentSetting;
+import org.chromium.components.content_settings.ContentSettingValues;
+import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.content_public.browser.BrowserContextHandle;
+
@@ -62,8 +62,8 @@ new file mode 100644
+public class BromiteWebRTCContentSetting extends BromiteCustomContentSetting {
+ public BromiteWebRTCContentSetting() {
+ super(/*contentSettingsType*/ ContentSettingsType.WEBRTC,
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
+ /*allowException*/ true,
+ /*preferenceKey*/ "webrtc",
+ /*profilePrefKey*/ "webrtc");
@@ -82,11 +82,11 @@ new file mode 100644
+ }
+
+ @Override
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
+ switch (value) {
+ case ContentSetting.ALLOW:
+ case ContentSettingValues.ALLOW:
+ return R.string.website_settings_category_webrtc_enabled;
+ case ContentSetting.BLOCK:
+ case ContentSettingValues.BLOCK:
+ return R.string.website_settings_category_webrtc_disabled;
+ default:
+ // this will cause a runtime exception
@@ -115,8 +115,8 @@ new file mode 100644
+ }
+
+ @Override
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
+ return value != ContentSetting.BLOCK;
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
+ return value != ContentSettingValues.BLOCK;
+ }
+}
diff --git a/components/browser_ui/strings/bromite_content_settings/webrtc.grdp b/components/browser_ui/strings/bromite_content_settings/webrtc.grdp
@@ -164,7 +164,7 @@ new file mode 100644
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::WEBRTC)
@@ -187,7 +187,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -48,6 +48,7 @@
@@ -41,6 +41,7 @@
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
@@ -195,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d
#include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h"
#include "third_party/blink/public/web/web_document.h"
@@ -1071,6 +1072,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
@@ -936,6 +937,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
// |request_multiple_routes|. Whether local IP addresses could be
// collected depends on if mic/camera permission is granted for this
// origin.
@@ -210,17 +210,16 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
@@ -12,6 +12,9 @@
#include "base/synchronization/lock.h"
#include "base/task/single_thread_task_runner.h"
@@ -14,6 +14,8 @@
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
@@ -277,6 +280,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
@@ -286,6 +288,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -238,17 +237,16 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
@@ -17,6 +17,9 @@
#include "base/strings/to_string.h"
#include "base/task/single_thread_task_runner.h"
@@ -19,6 +19,8 @@
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
@@ -1019,6 +1022,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
@@ -1033,6 +1035,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -3,38 +3,24 @@ Date: Mon, 7 Aug 2023 11:02:18 +0000
Subject: Allow DocumentPiP if PopupsAndRedirects are active
Allow documentPiP api use only with content setting popup allowed
and disables the possibility of verifying the activation of PIP
in the device with document.pictureInPictureEnabled
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../chromium/chrome/browser/media/PictureInPicture.java | 1 +
.../picture_in_picture_controller_impl.cc | 7 +++++++
2 files changed, 8 insertions(+)
1 file changed, 7 insertions(+)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java b/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/PictureInPicture.java
@@ -29,6 +29,7 @@ public abstract class PictureInPicture {
* @return boolean true if Picture-In-Picture is enabled, otherwise false.
*/
public static boolean isEnabled(Context context) {
+ if ((true)) return true;
// Some versions of Android crash when the activity enters Picture-in-Picture
// immediately after it exits Picture-in-Picture. See b/143784148
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
diff --git a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
--- a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
+++ b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
@@ -31,6 +31,7 @@
@@ -27,6 +27,7 @@
#include "third_party/blink/renderer/core/html/media/html_media_element.h"
#include "third_party/blink/renderer/core/html/media/html_video_element.h"
#include "third_party/blink/renderer/core/layout/layout_video.h"
#include "third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture.h"
#include "third_party/blink/renderer/modules/document_picture_in_picture/document_picture_in_picture_event.h"
+#include "third_party/blink/renderer/core/loader/document_loader.h"
#include "third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_event.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
@@ -386,6 +387,12 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow(
@@ -377,6 +378,12 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow(
return;
}
@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/network/reporting_service_proxy.cc | 3 +++
.../renderer_host/render_frame_host_impl.cc | 6 ------
.../coop/cross_origin_opener_policy_reporter.cc | 16 +++++++---------
.../dip/document_isolation_policy_reporter.cc | 3 +++
.../dip/document_isolation_policy_reporter.cc | 2 ++
.../web_package/signed_exchange_reporter.cc | 2 ++
...content_switch_dependent_feature_overrides.cc | 1 +
.../Allow-building-without-enable_reporting.inc | 2 ++
@@ -22,17 +22,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../network/public/mojom/network_context.mojom | 3 +++
.../core/frame/csp/content_security_policy.cc | 3 +++
.../blink/renderer/core/frame/local_frame.cc | 3 +++
.../blink/renderer/core/frame/local_frame.h | 3 +++
.../blink/renderer/core/frame/local_frame.h | 4 +++-
.../renderer/core/frame/reporting_context.cc | 9 +++++++++
.../renderer/core/frame/reporting_context.h | 7 +++++--
.../renderer/core/frame/reporting_observer.cc | 4 +---
22 files changed, 64 insertions(+), 26 deletions(-)
.../renderer/core/frame/reporting_observer.cc | 3 +--
22 files changed, 63 insertions(+), 26 deletions(-)
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Allow-building-without-enable_reporting.inc
diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chrome_report_sender.cc
--- a/chrome/browser/net/chrome_report_sender.cc
+++ b/chrome/browser/net/chrome_report_sender.cc
@@ -88,6 +88,7 @@ void SendReport(
@@ -85,6 +85,7 @@ void SendReport(
const std::string& report,
base::OnceClosure success_callback,
ErrorCallback error_callback) {
@@ -43,7 +43,7 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -1628,6 +1628,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
@@ -1473,6 +1473,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
}
}
@@ -51,7 +51,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow
std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
std::vector<GURL> urls;
frame_host->ForEachRenderFrameHostImplWithAction(
@@ -1641,6 +1642,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
@@ -1486,6 +1487,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
});
return urls;
}
@@ -87,7 +87,7 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/
+ const std::optional<std::string>& endpoint =
+ report_only ? report_only_endpoint_ : endpoint_;
if (endpoint) {
base::DictValue body_to_pass;
base::Value::Dict body_to_pass;
for (const auto& pair : body) {
@@ -125,6 +127,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
network_anonymization_key_, std::move(body_to_pass));
@@ -106,12 +106,12 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse
#include "base/values.h"
+#include "net/base/features.h"
#include "content/browser/service_worker/service_worker_host.h"
#include "content/browser/shared_storage/shared_storage_worklet_host.h"
#include "content/browser/worker_host/dedicated_worker_host.h"
@@ -241,12 +242,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
#include "content/browser/worker_host/shared_worker_host.h"
@@ -222,12 +223,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
const std::string& group,
const std::string& type,
base::DictValue body) {
base::Value::Dict body) {
+#if BUILDFLAG(ENABLE_REPORTING)
auto* rph = RenderProcessHost::FromID(render_process_id_);
if (!rph)
@@ -126,19 +126,19 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -16697,12 +16697,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
@@ -15703,12 +15703,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
}
}
}
-
- // Send the crash report to the Reporting API.
- GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport(
- /*type=*/"crash", crash_reporting_group_, last_committed_url_,
- /*type=*/"crash", /*group=*/"default", last_committed_url_,
- GetReportingSource(), isolation_info_.network_anonymization_key(),
- std::move(body));
}
base::DictValue RenderFrameHostImpl::ReadCrashReportAPIBody() {
void RenderFrameHostImpl::SendCommitNavigation(
diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.cc b/content/browser/security/coop/cross_origin_opener_policy_reporter.cc
--- a/content/browser/security/coop/cross_origin_opener_policy_reporter.cc
+++ b/content/browser/security/coop/cross_origin_opener_policy_reporter.cc
@@ -177,7 +177,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
switch (coop_value) {
case network::mojom::CrossOriginOpenerPolicyValue::kUnsafeNone:
@@ -59,6 +52,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
@@ -64,6 +57,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
return "noopener-allow-popups";
}
}
@@ -185,7 +185,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
FrameTreeNode* TopLevelOpener(FrameTreeNode* frame) {
FrameTreeNode* opener =
@@ -230,6 +224,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
@@ -235,6 +229,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
network::mojom::SourceLocationPtr source_location,
const std::string& reported_window_url,
const std::string& initial_popup_url) const {
@@ -193,7 +193,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
// Cross-Origin-Opener-Policy-Report-Only is not required to provide
// endpoints.
if (!coop_.report_only_reporting_endpoint)
@@ -277,12 +272,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
@@ -282,12 +277,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
storage_partition_->GetNetworkContext()->QueueReport(
"coop", endpoint, context_url_, reporting_source_,
network_anonymization_key_, std::move(body));
@@ -201,14 +201,14 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
}
void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
base::DictValue body,
base::Value::Dict body,
const std::string& endpoint,
bool is_report_only) {
+#if BUILDFLAG(ENABLE_REPORTING)
body.Set(kDisposition,
is_report_only ? kDispositionReporting : kDispositionEnforce);
body.Set(kEffectivePolicy,
@@ -290,6 +287,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
@@ -295,6 +292,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
storage_partition_->GetNetworkContext()->QueueReport(
"coop", endpoint, context_url_, reporting_source_,
network_anonymization_key_, std::move(body));
@@ -219,15 +219,7 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
diff --git a/content/browser/security/dip/document_isolation_policy_reporter.cc b/content/browser/security/dip/document_isolation_policy_reporter.cc
--- a/content/browser/security/dip/document_isolation_policy_reporter.cc
+++ b/content/browser/security/dip/document_isolation_policy_reporter.cc
@@ -7,6 +7,7 @@
#include <string_view>
#include "base/values.h"
+#include "net/net_buildflags.h"
#include "content/public/browser/storage_partition.h"
#include "services/network/public/cpp/request_destination.h"
#include "services/network/public/mojom/network_context.mojom.h"
@@ -94,11 +95,13 @@ void DocumentIsolationPolicyReporter::QueueAndNotify(
@@ -94,11 +94,13 @@ void DocumentIsolationPolicyReporter::QueueAndNotify(
}
body_to_pass.Set("disposition", disposition);
@@ -281,7 +273,7 @@ new file mode 100644
diff --git a/net/reporting/reporting_header_parser.cc b/net/reporting/reporting_header_parser.cc
--- a/net/reporting/reporting_header_parser.cc
+++ b/net/reporting/reporting_header_parser.cc
@@ -344,6 +344,7 @@ void ReportingHeaderParser::ProcessParsedReportingEndpointsHeader(
@@ -337,6 +337,7 @@ void ReportingHeaderParser::ProcessParsedReportingEndpointsHeader(
const NetworkAnonymizationKey& network_anonymization_key,
const url::Origin& origin,
base::flat_map<std::string, std::string> header) {
@@ -292,7 +284,7 @@ diff --git a/net/reporting/reporting_header_parser.cc b/net/reporting/reporting_
diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
--- a/net/reporting/reporting_service.cc
+++ b/net/reporting/reporting_service.cc
@@ -227,6 +227,12 @@ class ReportingServiceImpl : public ReportingService {
@@ -225,6 +225,12 @@ class ReportingServiceImpl : public ReportingService {
int depth,
base::TimeTicks queued_ticks,
ReportingTargetType target_type) {
@@ -303,22 +295,22 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic
+#error Attempting to build with enable_reporting
+#endif
DCHECK(initialized_);
context_->cache()->AddReport(
reporting_source, network_anonymization_key, sanitized_url, user_agent,
context_->cache()->AddReport(reporting_source, network_anonymization_key,
sanitized_url, user_agent, group, type,
diff --git a/services/network/network_context.h b/services/network/network_context.h
--- a/services/network/network_context.h
+++ b/services/network/network_context.h
@@ -492,14 +492,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
@@ -470,14 +470,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
const GURL& url,
const std::optional<base::UnguessableToken>& reporting_source,
const net::NetworkAnonymizationKey& network_anonymization_key,
- base::DictValue body) override;
+ base::DictValue body);
- base::Value::Dict body) override;
+ base::Value::Dict body);
void QueueEnterpriseReport(const std::string& type,
const std::string& group,
const GURL& url,
- base::DictValue body) override;
+ base::DictValue body);
- base::Value::Dict body) override;
+ base::Value::Dict body);
void QueueSignedExchangeReport(
mojom::SignedExchangeReportPtr report,
- const net::NetworkAnonymizationKey& network_anonymization_key) override;
@@ -329,7 +321,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/public/cpp/parsed_headers.cc
--- a/services/network/public/cpp/parsed_headers.cc
+++ b/services/network/public/cpp/parsed_headers.cc
@@ -137,6 +137,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders(
@@ -115,6 +115,7 @@ mojom::ParsedHeadersPtr PopulateParsedHeaders(
}
#if BUILDFLAG(ENABLE_REPORTING)
@@ -340,7 +332,7 @@ diff --git a/services/network/public/cpp/parsed_headers.cc b/services/network/pu
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
--- a/services/network/public/mojom/BUILD.gn
+++ b/services/network/public/mojom/BUILD.gn
@@ -1894,7 +1894,6 @@ mojom("mojom") {
@@ -1590,7 +1590,6 @@ mojom("mojom") {
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
if (enable_reporting) {
@@ -351,7 +343,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1247,6 +1247,7 @@ interface NetworkContext {
@@ -1205,6 +1205,7 @@ interface NetworkContext {
// provided `network_anonymization_key`.
//
// Spec: https://w3c.github.io/reporting/#concept-reports
@@ -359,7 +351,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
QueueReport(string type,
string group,
url.mojom.Url url,
@@ -1254,6 +1255,7 @@ interface NetworkContext {
@@ -1212,6 +1213,7 @@ interface NetworkContext {
NetworkAnonymizationKey network_anonymization_key,
mojo_base.mojom.DictionaryValue body);
@@ -367,7 +359,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
QueueEnterpriseReport(string type,
string group,
url.mojom.Url url,
@@ -1264,6 +1266,7 @@ interface NetworkContext {
@@ -1222,6 +1224,7 @@ interface NetworkContext {
// Note that this queued report will never be delivered if no reporting
// endpoint matching is registered for with the provided
// `network_anonymization_key`.
@@ -383,18 +375,18 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c
#include <utility>
+#include "net/net_buildflags.h"
#include "base/containers/contains.h"
#include "base/debug/dump_without_crashing.h"
#include "base/feature_list.h"
#include "base/metrics/histogram_functions.h"
@@ -1378,6 +1379,7 @@ void ContentSecurityPolicy::ReportViolation(
ShouldBypassContentSecurityPolicy(KURL(violation_data->sourceFile()))) {
#include "services/network/public/cpp/web_sandbox_flags.h"
@@ -1295,6 +1296,7 @@ void ContentSecurityPolicy::ReportViolation(
return;
}
+#if BUILDFLAG(ENABLE_REPORTING)
PostViolationReport(violation_data, context_frame, report_endpoints,
use_reporting_api);
@@ -1385,6 +1387,7 @@ void ContentSecurityPolicy::ReportViolation(
@@ -1302,6 +1304,7 @@ void ContentSecurityPolicy::ReportViolation(
// `context_frame` (i.e. we're not processing 'frame-ancestors').
if (delegate_ && !context_frame)
delegate_->DispatchViolationEvent(*violation_data, element);
@@ -405,7 +397,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -50,6 +50,7 @@
@@ -47,6 +47,7 @@
#include "build/build_config.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "mojo/public/cpp/system/message_pipe.h"
@@ -413,7 +405,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
#include "services/network/public/cpp/features.h"
#include "services/network/public/mojom/content_security_policy.mojom-blink.h"
#include "services/network/public/mojom/source_location.mojom-blink.h"
@@ -2889,9 +2890,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() {
@@ -2796,9 +2797,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() {
return CHECK_DEREF(GetDocument()).GetResourceCoordinator();
}
@@ -428,18 +420,19 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -38,6 +38,7 @@
@@ -37,6 +37,7 @@
#include "base/time/time.h"
#include "base/unguessable_token.h"
#include "build/build_config.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "net/net_buildflags.h"
#include "net/storage_access_api/status.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
@@ -677,7 +678,9 @@ class CORE_EXPORT LocalFrame final
return client_hints_preferences_;
}
@@ -659,8 +660,9 @@ class CORE_EXPORT LocalFrame final
void FinishedScrollSequence();
SmoothScrollSequencer* GetSmoothScrollSequencer() const;
-
+#if BUILDFLAG(ENABLE_REPORTING)
mojom::blink::ReportingServiceProxy* GetReportingService();
+#endif
@@ -457,7 +450,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
@@ -59,7 +60,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
@@ -58,7 +59,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
ReportingContext::ReportingContext(ExecutionContext& context)
: Supplement<ExecutionContext>(context),
execution_context_(context),
@@ -467,7 +460,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
receivers_(this, &context) {}
// static
@@ -126,7 +129,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
@@ -125,7 +128,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
visitor->Trace(observers_);
visitor->Trace(report_buffer_);
visitor->Trace(execution_context_);
@@ -477,7 +470,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
visitor->Trace(receivers_);
Supplement<ExecutionContext>::Trace(visitor);
}
@@ -149,6 +154,7 @@ void ReportingContext::CountReport(Report* report) {
@@ -148,6 +153,7 @@ void ReportingContext::CountReport(Report* report) {
UseCounter::Count(execution_context_, feature);
}
@@ -485,7 +478,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
const HeapMojoRemote<mojom::blink::ReportingServiceProxy>&
ReportingContext::GetReportingService() const {
if (!reporting_service_.is_bound()) {
@@ -158,6 +164,7 @@ ReportingContext::GetReportingService() const {
@@ -157,6 +163,7 @@ ReportingContext::GetReportingService() const {
}
return reporting_service_;
}
@@ -493,7 +486,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
void ReportingContext::NotifyInternal(Report* report) {
if (!ShouldReportBeVisibleToObservers(report)) {
@@ -184,6 +191,7 @@ void ReportingContext::NotifyInternal(Report* report) {
@@ -183,6 +190,7 @@ void ReportingContext::NotifyInternal(Report* report) {
void ReportingContext::SendToReportingAPI(Report* report,
const String& endpoint) const {
@@ -501,7 +494,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
const String& type = report->type();
if (!(type == ReportType::kCSPViolation || type == ReportType::kCSPHash ||
type == ReportType::kDeprecation ||
@@ -268,6 +276,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
@@ -254,6 +262,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
url, endpoint, body->featureId(), body->disposition(), body->message(),
body->sourceFile(), line_number, column_number);
}
@@ -520,7 +513,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p
#include "third_party/blink/public/mojom/frame/reporting_observer.mojom-blink.h"
#include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h"
#include "third_party/blink/renderer/core/core_export.h"
@@ -56,10 +57,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected<ReportingContext>,
@@ -55,10 +56,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected<ReportingContext>,
private:
// Counts the use of a report type via UseCounter.
void CountReport(Report*);
@@ -533,7 +526,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p
void NotifyInternal(Report* report);
// Send |report| via the Reporting API to |endpoint|.
void SendToReportingAPI(Report* report, const String& endpoint) const;
@@ -71,8 +72,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected<ReportingContext>,
@@ -69,8 +70,10 @@ class CORE_EXPORT ReportingContext : public GarbageCollected<ReportingContext>,
// This is declared mutable so that the service endpoint can be cached by
// const methods.
@@ -547,13 +540,12 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p
diff --git a/third_party/blink/renderer/core/frame/reporting_observer.cc b/third_party/blink/renderer/core/frame/reporting_observer.cc
--- a/third_party/blink/renderer/core/frame/reporting_observer.cc
+++ b/third_party/blink/renderer/core/frame/reporting_observer.cc
@@ -61,9 +61,7 @@ void ReportingObserver::QueueReport(Report* report) {
@@ -62,8 +62,7 @@ void ReportingObserver::QueueReport(Report* report) {
}
bool ReportingObserver::ObservedType(const String& type) {
- return !options_->hasTypes() || !options_->types() ||
- options_->types()->empty() ||
- options_->types()->Find(type) != kNotFound;
- return !options_->hasTypesNonNull() || options_->typesNonNull().empty() ||
- options_->typesNonNull().Find(type) != kNotFound;
+ return false;
}
@@ -7,36 +7,34 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/android/BUILD.gn | 1 -
.../chrome/browser/feedback/ChromeFeedbackCollector.java | 1 -
chrome/browser/feedback/android/BUILD.gn | 2 --
chrome/browser/prefs/chrome_pref_service_factory.cc | 6 ------
chrome/browser/prefs/chrome_pref_service_factory.cc | 2 +-
chrome/browser/profiles/profile_attributes_entry.cc | 2 +-
chrome/browser/profiles/profile_impl.cc | 5 +----
chrome/browser/profiles/profile_manager.cc | 7 -------
.../supervised_user/supervised_user_browser_utils.cc | 1 +
chrome/browser/ui/webui/managed_ui_handler.cc | 4 ----
.../browser/ui/webui/management/management_ui_handler.cc | 4 ----
.../browser/android/content_filters_observer_bridge.cc | 2 +-
.../core/browser/supervised_user_pref_store.cc | 1 +
.../core/browser/supervised_user_preferences.cc | 6 +++++-
.../core/browser/supervised_user_service.cc | 1 +
components/supervised_user/core/common/features.cc | 1 +
extensions/browser/api/management/management_api.cc | 1 +
16 files changed, 13 insertions(+), 32 deletions(-)
.../core/browser/supervised_user_service.cc | 5 +----
.../supervised_user/core/browser/supervised_user_utils.cc | 1 +
components/supervised_user/core/common/features.cc | 6 ++++++
14 files changed, 17 insertions(+), 30 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -833,7 +833,6 @@ if (_is_default_toolchain) {
@@ -784,7 +784,6 @@ if (current_toolchain == default_toolchain) {
"//components/offline_pages/core:offline_page_model_enums_java",
"//components/sharing_message:sharing_dialog_type_generated_enum",
"//components/sharing_message:sharing_send_message_result_generated_enum",
- "//components/supervised_user/core/browser:supervised_user_utils_enum_javagen",
"//components/touch_to_search/core/browser:quick_action_category_enum_javagen",
]
# From java_sources.gni.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
@@ -96,7 +96,6 @@ public class ChromeFeedbackCollector extends FeedbackCollector<ChromeFeedbackCol
@@ -92,7 +92,6 @@ public class ChromeFeedbackCollector extends FeedbackCollector<ChromeFeedbackCol
// FamilyInfoFeedbackSource relies on IdentityManager which is not available for the
// incognito profile.
if (!initParams.profile.isOffTheRecord()) {
@@ -66,23 +64,19 @@ diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/
diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc
--- a/chrome/browser/prefs/chrome_pref_service_factory.cc
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc
@@ -352,12 +352,6 @@ void PrepareFactory(
PrepareFactory(factory, pref_filename, policy_service,
std::move(user_pref_store), std::move(extension_prefs), async,
policy_connector);
-
- scoped_refptr<PrefStore> supervised_user_prefs =
- base::MakeRefCounted<SupervisedUserPrefStore>(
- family_link_settings_service, device_parental_controls);
- DCHECK(async || supervised_user_prefs->IsInitializationComplete());
- factory->set_supervised_user_prefs(supervised_user_prefs);
}
class ResetOnLoadObserverImpl : public prefs::mojom::ResetOnLoadObserver {
@@ -328,7 +328,7 @@ void PrepareFactory(
policy::BrowserPolicyConnector* policy_connector) {
factory->SetManagedPolicies(policy_service, policy_connector);
factory->SetRecommendedPolicies(policy_service, policy_connector);
- if (supervised_user_settings) {
+ if (((false)) && supervised_user_settings) {
scoped_refptr<PrefStore> supervised_user_prefs =
base::MakeRefCounted<SupervisedUserPrefStore>(supervised_user_settings);
DCHECK(async || supervised_user_prefs->IsInitializationComplete());
diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc
--- a/chrome/browser/profiles/profile_attributes_entry.cc
+++ b/chrome/browser/profiles/profile_attributes_entry.cc
@@ -468,7 +468,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const {
@@ -469,7 +469,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const {
}
std::string ProfileAttributesEntry::GetSupervisedUserId() const {
@@ -94,7 +88,7 @@ diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browse
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -685,10 +685,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) {
@@ -675,10 +675,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) {
prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_);
pref_change_registrar_.Init(prefs);
@@ -105,7 +99,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
// Changes in the profile avatar.
pref_change_registrar_.Add(
@@ -1604,6 +1600,7 @@ GURL ProfileImpl::GetHomePage() {
@@ -1623,6 +1619,7 @@ GURL ProfileImpl::GetHomePage() {
}
void ProfileImpl::UpdateSupervisedUserIdInStorage() {
@@ -116,7 +110,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -1276,10 +1276,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
@@ -1181,10 +1181,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
profile->GetPrefs()->SetString(prefs::kProfileName, profile_name);
}
@@ -124,10 +118,10 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
- profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
- supervised_user_id);
- }
}
void ProfileManager::RegisterTestingProfile(std::unique_ptr<Profile> profile,
@@ -2077,9 +2073,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
#if !BUILDFLAG(IS_ANDROID)
if (profile->IsNewProfile()) {
profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false);
@@ -1970,9 +1966,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
init_params.icon_index =
profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex);
@@ -137,21 +131,10 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
#if BUILDFLAG(IS_CHROMEOS)
user_manager::User* user =
ash::ProfileHelper::Get()->GetUserByProfile(profile);
diff --git a/chrome/browser/supervised_user/supervised_user_browser_utils.cc b/chrome/browser/supervised_user/supervised_user_browser_utils.cc
--- a/chrome/browser/supervised_user/supervised_user_browser_utils.cc
+++ b/chrome/browser/supervised_user/supervised_user_browser_utils.cc
@@ -98,6 +98,7 @@ bool SupervisedUserCanSkipExtensionParentApprovals(const Profile* profile) {
}
bool AreExtensionsPermissionsEnabled(Profile* profile) {
+ if ((true)) return false;
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
return profile->IsChild();
#else
diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/webui/managed_ui_handler.cc
--- a/chrome/browser/ui/webui/managed_ui_handler.cc
+++ b/chrome/browser/ui/webui/managed_ui_handler.cc
@@ -88,10 +88,6 @@ void ManagedUIHandler::AddObservers() {
@@ -89,10 +89,6 @@ void ManagedUIHandler::AddObservers() {
auto domain = static_cast<policy::PolicyDomain>(i);
policy_service->AddObserver(domain, this);
}
@@ -165,7 +148,7 @@ diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/w
diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc
--- a/chrome/browser/ui/webui/management/management_ui_handler.cc
+++ b/chrome/browser/ui/webui/management/management_ui_handler.cc
@@ -621,10 +621,6 @@ bool ManagementUIHandler::managed() const {
@@ -595,10 +595,6 @@ bool ManagementUIHandler::managed() const {
void ManagementUIHandler::RegisterPrefChange(
PrefChangeRegistrar& pref_registrar) {
@@ -176,33 +159,21 @@ diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrom
}
void ManagementUIHandler::UpdateManagedState() {
diff --git a/components/supervised_user/core/browser/android/content_filters_observer_bridge.cc b/components/supervised_user/core/browser/android/content_filters_observer_bridge.cc
--- a/components/supervised_user/core/browser/android/content_filters_observer_bridge.cc
+++ b/components/supervised_user/core/browser/android/content_filters_observer_bridge.cc
@@ -39,7 +39,7 @@ void ContentFiltersObserverBridge::OnChange(JNIEnv* env, bool enabled) {
}
void ContentFiltersObserverBridge::SetEnabled(bool enabled) {
- enabled_ = enabled;
+ enabled_ = false;
NotifyObservers();
}
diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.cc b/components/supervised_user/core/browser/supervised_user_pref_store.cc
--- a/components/supervised_user/core/browser/supervised_user_pref_store.cc
+++ b/components/supervised_user/core/browser/supervised_user_pref_store.cc
@@ -188,6 +188,7 @@ void SupervisedUserPrefStore::RecreatePreferences() {
return;
}
@@ -126,6 +126,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() = default;
void SupervisedUserPrefStore::OnNewSettingsAvailable(
const base::Value::Dict& settings) {
+ if ((true)) return;
std::unique_ptr<PrefValueMap> old_prefs = std::move(prefs_);
prefs_ = std::make_unique<PrefValueMap>();
if (!settings.empty()) {
diff --git a/components/supervised_user/core/browser/supervised_user_preferences.cc b/components/supervised_user/core/browser/supervised_user_preferences.cc
--- a/components/supervised_user/core/browser/supervised_user_preferences.cc
+++ b/components/supervised_user/core/browser/supervised_user_preferences.cc
@@ -160,6 +160,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -155,6 +155,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
}
void EnableParentalControls(PrefService& pref_service) {
@@ -212,8 +183,8 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
+ }
pref_service.SetString(prefs::kSupervisedUserId,
supervised_user::kChildAccountSUID);
#if BUILDFLAG(IS_CHROMEOS)
@@ -187,7 +191,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) {
SetIsChildAccountStatusKnown(pref_service);
@@ -177,7 +181,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) {
}
bool IsSubjectToParentalControls(const PrefService& pref_service) {
@@ -221,38 +192,52 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
+ return false;
}
bool IsGoogleSafeSearchEnforced(const PrefService& pref_service) {
} // namespace supervised_user
diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc
--- a/components/supervised_user/core/browser/supervised_user_service.cc
+++ b/components/supervised_user/core/browser/supervised_user_service.cc
@@ -160,6 +160,7 @@ SupervisedUserService::SupervisedUserService(
@@ -50,10 +50,6 @@ void SupervisedUserService::Init() {
DCHECK(settings_service_->IsReady());
pref_change_registrar_.Init(&user_prefs_.get());
- pref_change_registrar_.Add(
- prefs::kSupervisedUserId,
- base::BindRepeating(&SupervisedUserService::OnSupervisedUserIdChanged,
- base::Unretained(this)));
SetActive(supervised_user::IsSubjectToParentalControls(user_prefs_.get()));
}
void SupervisedUserService::SetSettingsServiceActive(bool active) {
+ active = false;
settings_service_->SetActive(active);
@@ -139,6 +135,7 @@ SupervisedUserService::SupervisedUserService(
}
// Trigger a sync reconfig to enable/disable the right SU data types.
void SupervisedUserService::SetActive(bool active) {
+ active = false;
if (active_ == active) {
return;
}
diff --git a/components/supervised_user/core/browser/supervised_user_utils.cc b/components/supervised_user/core/browser/supervised_user_utils.cc
--- a/components/supervised_user/core/browser/supervised_user_utils.cc
+++ b/components/supervised_user/core/browser/supervised_user_utils.cc
@@ -300,6 +300,7 @@ GURL NormalizeUrl(const GURL& url) {
}
bool AreWebFilterPrefsDefault(const PrefService& pref_service) {
+ if ((true)) return true;
return pref_service
.FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior)
->IsDefaultValue() ||
diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc
--- a/components/supervised_user/core/common/features.cc
+++ b/components/supervised_user/core/common/features.cc
@@ -19,6 +19,7 @@ namespace supervised_user {
// Enables local parent approvals for the blocked website on the Family Link
// user's device.
BASE_FEATURE(kLocalWebApprovals, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -171,4 +171,10 @@ BASE_FEATURE(kReplaceSupervisionSystemCapabilitiesWithAccountCapabilitiesOnIOS,
"ReplaceSupervisionSystemCapabilitiesWithAccountCapabilitiesOnIOS",
base::FEATURE_DISABLED_BY_DEFAULT);
#endif
+
+SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals);
// TODO(crbug.com/391799078): Support local web approval for subframes on
// Desktop.
diff --git a/extensions/browser/api/management/management_api.cc b/extensions/browser/api/management/management_api.cc
--- a/extensions/browser/api/management/management_api.cc
+++ b/extensions/browser/api/management/management_api.cc
@@ -324,6 +324,7 @@ void AddExtensionInfo(const Extension* source_extension,
}
bool PlatformSupportsApprovalFlowForExtensions() {
+ if ((true)) return false;
#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
BUILDFLAG(IS_WIN)
return true;
+#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
+SET_CROMITE_FEATURE_DISABLED(kEnableExtensionsPermissionsForSupervisedUsersOnDesktop);
+#endif
+
} // namespace supervised_user
--
@@ -4,27 +4,15 @@ Subject: Allow playing audio in background
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../renderer/render_frame_media_playback_options.cc | 1 +
.../renderer/platform/media/web_media_player_impl.cc | 11 ++++++++++-
.../renderer/platform/media/web_media_player_impl.h | 3 +++
3 files changed, 14 insertions(+), 1 deletion(-)
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/content/public/renderer/render_frame_media_playback_options.cc b/content/public/renderer/render_frame_media_playback_options.cc
--- a/content/public/renderer/render_frame_media_playback_options.cc
+++ b/content/public/renderer/render_frame_media_playback_options.cc
@@ -14,6 +14,7 @@
namespace content {
bool IsBackgroundMediaSuspendEnabled() {
+ if ((true)) return false;
#if BUILDFLAG(IS_ANDROID)
// For Android devices, do not suspend background media for devices with large
// displays. Exception is for Webview.
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
@@ -1342,6 +1342,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
return pipeline_metadata_.has_audio;
@@ -1311,6 +1311,12 @@ void WebMediaPlayerImpl::OnSelectedVideoTrackChanged(
pipeline_controller_->OnSelectedVideoTrackChanged(selected);
}
+bool WebMediaPlayerImpl::HasVideoNonEmptySize() const {
@@ -34,11 +22,11 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
+}
+
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
std::optional<WebMediaPlayer::TrackId> enabled_track_id) {
const std::vector<WebMediaPlayer::TrackId>& enabled_track_ids) {
DCHECK(main_task_runner_->BelongsToCurrentThread());
@@ -3740,7 +3746,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
@@ -3710,7 +3716,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
: HasAudio();
const bool preserve_audio = HasUnmutedAudio() || audio_source_provider_->IsAudioBeingCaptured();
// Audio only stream is allowed to play when in background.
- if (!HasVideo() && preserve_audio)
+ //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
@@ -47,11 +35,11 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
+ if (!HasVideoNonEmptySize() && preserve_audio)
return false;
// Video PiP is the only exception when background video playback is disabled.
// MediaPlayer always signals audio and video, so use an empty natural size to
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b/third_party/blink/renderer/platform/media/web_media_player_impl.h
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.h
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h
@@ -213,6 +213,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl
@@ -211,6 +211,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl
bool HasVideo() const override;
bool HasAudio() const override;
@@ -59,6 +47,6 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.h b
+ bool HasVideoNonEmptySize() const;
+
void EnabledAudioTracksChanged(
std::optional<WebMediaPlayer::TrackId> enabled_track_id) override;
const std::vector<WebMediaPlayer::TrackId>& enabled_track_ids) override;
void SelectedVideoTrackChanged(
--
@@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resources/inspect/inspect.js
--- a/chrome/browser/resources/inspect/inspect.js
+++ b/chrome/browser/resources/inspect/inspect.js
@@ -46,6 +46,7 @@ if ('browser-inspector' in queryParamsObject) {
@@ -45,6 +45,7 @@ if ('browser-inspector' in queryParamsObject) {
})();
function isVersionNewerThanHost(version) {
@@ -20,7 +20,7 @@ diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resour
if (!HOST_CHROME_VERSION) {
return false;
}
@@ -597,7 +598,7 @@ function formatValue(data, property) {
@@ -566,7 +567,7 @@ function formatValue(data, property) {
function addFavicon(row, data) {
const favicon = document.createElement('img');
if (data['faviconUrl']) {
@@ -10,34 +10,34 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
@@ -23,6 +23,7 @@ import org.chromium.base.PackageManagerUtils;
@@ -21,6 +21,7 @@ import org.chromium.base.IntentUtils;
import org.chromium.base.PackageManagerUtils;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.base.supplier.Supplier;
+import org.chromium.cc.input.BrowserControlsState;
import org.chromium.chrome.browser.DefaultBrowserInfo;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpenerImpl;
@@ -46,6 +47,7 @@ import org.chromium.chrome.browser.preferences.Pref;
import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory;
import org.chromium.chrome.browser.printing.TabPrinter;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
@@ -34,6 +35,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
import org.chromium.chrome.browser.offlinepages.RequestCoordinatorBridge;
import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -351,6 +353,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@Nullable Referrer referrer,
@@ -235,6 +237,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
Referrer referrer,
boolean navigateToTab,
@Nullable AdditionalNavigationParams additionalNavigationParams) {
+ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true);
RecordUserAction.record("MobileNewTabOpened");
RecordUserAction.record("LinkOpenedInNewTab");
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
@@ -371,6 +374,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@@ -255,6 +258,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
* @param url The URL to open.
*/
public void onOpenInNewTabInGroup(GURL url, @Nullable Referrer referrer) {
public void onOpenInNewTabInGroup(GURL url, Referrer referrer) {
+ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true);
RecordUserAction.record("MobileNewTabOpened");
RecordUserAction.record("LinkOpenedInNewTab");
@@ -7,52 +7,39 @@ Ignore any partner-provided home page.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ----
.../chrome/browser/new_tab_url/DseNewTabUrlManager.java | 2 +-
.../partnerbookmarks/PartnerBookmarksProviderIterator.java | 1 +
.../partnercustomizations/PartnerBrowserCustomizations.java | 2 +-
.../org/chromium/components/search_engines/TemplateUrl.java | 1 +
.../search_engines/android/template_url_service_android.cc | 1 +
.../always-use-new-tab-page-for-default-home-page.inc | 1 +
7 files changed, 6 insertions(+), 6 deletions(-)
.../always-use-new-tab-page-for-default-home-page.inc | 2 ++
6 files changed, 6 insertions(+), 5 deletions(-)
create mode 100755 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
@@ -164,10 +164,6 @@ public class HomepageManager
@@ -155,10 +155,6 @@ public class HomepageManager
* tab page if the homepage button is force enabled via flag.
*/
public GURL getDefaultHomepageGurl(boolean isIncognito) {
public GURL getDefaultHomepageGurl() {
- if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) {
- return assumeNonNull(PartnerBrowserCustomizations.getInstance().getHomePageUrl());
- return PartnerBrowserCustomizations.getInstance().getHomePageUrl();
- }
-
String homepagePartnerDefaultGurlSerialized =
ChromeSharedPreferences.getInstance()
.readString(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java
@@ -59,7 +59,7 @@ public class DseNewTabUrlManager {
/** Returns whether the feature NewTabSearchEngineUrlAndroid is enabled. */
public static boolean isNewTabSearchEngineUrlAndroidEnabled() {
- return true;
+ return false;
}
/**
diff --git a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
--- a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
+++ b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
@@ -70,6 +70,7 @@ public class PartnerBookmarksProviderIterator implements PartnerBookmark.Bookmar
new AsyncTask<@Nullable Cursor>() {
@Override
protected @Nullable Cursor doInBackground() {
+ if ((true)) return null;
try {
return ContextUtils.getApplicationContext()
.getContentResolver()
@@ -61,6 +61,7 @@ public class PartnerBookmarksProviderIterator implements PartnerBookmark.Bookmar
* @return Iterator over bookmarks or null.
*/
public static PartnerBookmarksProviderIterator createIfAvailable() {
+ if ((true)) return null;
try {
Cursor cursor =
ContextUtils.getApplicationContext()
diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
--- a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
+++ b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
@@ -68,7 +55,7 @@ diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/b
diff --git a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java
--- a/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java
+++ b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java
@@ -109,6 +109,7 @@ public class TemplateUrl {
@@ -74,6 +74,7 @@ public class TemplateUrl {
* prepopulated_engines.json.
*/
public String getNewTabURL() {
@@ -79,18 +66,19 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/
diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc
--- a/components/search_engines/android/template_url_service_android.cc
+++ b/components/search_engines/android/template_url_service_android.cc
@@ -414,6 +414,7 @@ bool TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
@@ -404,6 +404,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
jimage_translate_source_language_param_key,
const base::android::JavaRef<jstring>&
const base::android::JavaParamRef<jstring>&
jimage_translate_target_language_param_key) {
+ if ((true)) return false;
// The function is scheduled to run only when the service is loaded, see
// `TemplateUrlService#runWhenLoaded()`.
CHECK(template_url_service_->loaded());
CHECK(template_url_service_->loaded(), base::NotFatalUntil::M128);
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc
new file mode 100755
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc
@@ -0,0 +1 @@
@@ -0,0 +1,2 @@
+SET_CROMITE_FEATURE_DISABLED(kNewTabSearchEngineUrlAndroid);
+SET_CROMITE_FEATURE_DISABLED(kPartnerCustomizationsUma);
--
File diff suppressed because it is too large Load Diff
@@ -7,35 +7,13 @@ Adds a setting for blocking the toolbar hiding
need: Add-cromite-flags-support.patch
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
...rowserStateBrowserControlsVisibilityDelegate.java | 4 +++-
.../Toolbar-Scroll-Ablation-flag.grdp | 9 +++++++++
.../java/res/xml/accessibility_preferences.xml | 6 ++++++
.../about_flags_cc/Toolbar-Scroll-Ablation-flag.inc | 12 ++++++++++++
4 files changed, 30 insertions(+), 1 deletion(-)
3 files changed, 27 insertions(+)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Toolbar-Scroll-Ablation-flag.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Toolbar-Scroll-Ablation-flag.inc
diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java
--- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java
+++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate.java
@@ -40,6 +40,7 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro
private final NonNullObservableSupplier<Boolean> mPersistentFullscreenMode;
private long mCurrentShowingStartTime;
+ private int temporaryToken;
/**
* Constructs a BrowserControlsVisibilityDelegate designed to deal with overrides driven by the
@@ -65,7 +66,8 @@ public class BrowserStateBrowserControlsVisibilityDelegate extends BrowserContro
long currentShowingTime = SystemClock.uptimeMillis() - mCurrentShowingStartTime;
if (currentShowingTime >= MINIMUM_SHOW_DURATION_MS) return;
- final int temporaryToken = mTokenHolder.acquireToken();
+ mTokenHolder.releaseToken(temporaryToken);
+ temporaryToken = mTokenHolder.acquireToken();
mHandler.postDelayed(
() -> mTokenHolder.releaseToken(temporaryToken),
MINIMUM_SHOW_DURATION_MS - currentShowingTime);
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Toolbar-Scroll-Ablation-flag.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Toolbar-Scroll-Ablation-flag.grdp
new file mode 100644
--- /dev/null
@@ -53,7 +31,7 @@ new file mode 100644
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -89,6 +89,12 @@ found in the LICENSE file.
@@ -73,6 +73,12 @@ found in the LICENSE file.
android:key="disable_toolbar_swipeup"
android:title="@string/disable_toolbar_swipe_up" />
File diff suppressed because it is too large Load Diff
@@ -23,19 +23,19 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../java/res/xml/homepage_preferences.xml | 6 +
.../ConnectivityDetector.java | 1 -
.../indicator/OfflineDetector.java | 111 +++++++++++++++++-
.../OfflineIndicatorControllerV2.java | 14 ++-
.../OfflineIndicatorControllerV2.java | 15 ++-
.../tabbed_mode/TabbedRootUiCoordinator.java | 5 +-
.../tabmodel/TabModelSelectorBase.java | 7 ++
.../sAskForRestartOnConnectionChange.java | 32 +++++
.../browser/tabmodel/TabModelSelector.java | 2 +
.../browser/tabmodel/TabModelUtils.java | 18 +++
.../browser/tabwindow/TabWindowManager.java | 2 +
.../tabwindow/TabWindowManagerImpl.java | 10 ++
.../browser/tabmodel/TabWindowManager.java | 2 +
.../tabmodel/TabWindowManagerImpl.java | 10 ++
.../Ask-for-restart-on-connection-change.grdp | 15 +++
.../java/res/layout/floating_snackbar.xml | 10 ++
.../android/java/res/layout/snackbar.xml | 10 ++
.../ui/messages/snackbar/Snackbar.java | 16 +++
.../ui/messages/snackbar/SnackbarManager.java | 6 +
.../ui/messages/snackbar/SnackbarView.java | 10 ++
.../ui/messages/snackbar/SnackbarView.java | 13 +-
.../web_contents/web_contents_android.cc | 16 +++
.../web_contents/web_contents_android.h | 1 +
.../browser/web_contents/web_contents_impl.cc | 2 +
@@ -49,7 +49,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../blink/renderer/core/frame/local_frame.cc | 2 +
.../main_thread/frame_scheduler_impl.cc | 2 +
.../main_thread/page_scheduler_impl.cc | 9 +-
29 files changed, 319 insertions(+), 9 deletions(-)
29 files changed, 322 insertions(+), 10 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAskForRestartOnConnectionChange.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Ask-for-restart-on-connection-change.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Ask-for-restart-on-connection-change.inc
@@ -75,7 +75,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java b/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector.java
@@ -470,7 +470,6 @@ public class ConnectivityDetector implements NetworkChangeNotifier.ConnectionTyp
@@ -468,7 +468,6 @@ public class ConnectivityDetector implements NetworkChangeNotifier.ConnectionTyp
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public void setConnectionState(@ConnectionState int connectionState) {
Log.i(TAG, "setConnectionState connectionState=" + connectionState);
@@ -86,7 +86,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/connectivit
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineDetector.java
@@ -22,10 +22,31 @@ import org.chromium.build.annotations.Nullable;
@@ -21,16 +21,38 @@ import org.chromium.base.version_info.VersionInfo;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector;
import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState;
@@ -95,10 +95,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
import org.chromium.components.variations.VariationsAssociatedData;
+import android.app.Activity;
+import org.chromium.base.supplier.MonotonicObservableSupplier;
+import org.chromium.base.supplier.ObservableSupplier;
+import org.chromium.url.GURL;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton;
+import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
+import org.chromium.chrome.browser.layouts.LayoutManager;
+import org.chromium.chrome.browser.compositor.layouts.Layout;
+import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl;
@@ -111,18 +111,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.TabModelUtils;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.tabwindow.TabWindowManager;
+import org.chromium.chrome.browser.tabmodel.TabWindowManager;
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
+import org.chromium.content_public.browser.WebContentsObserver;
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.net.NetworkChangeNotifier;
+
import java.util.function.Supplier;
/**
@@ -34,7 +55,8 @@ import java.util.function.Supplier;
* Class that detects if the network is offline. Waits for the network to stablize before notifying
* the observer.
*/
@NullMarked
class OfflineDetector
- implements ConnectivityDetector.Observer, ApplicationStatus.ApplicationStateListener {
+ implements ConnectivityDetector.Observer, ApplicationStatus.ApplicationStateListener,
@@ -130,26 +128,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
// If the connection is online, then we report that immediately via |mIsOfflineCallback|.
// |STATUS_INDICATOR_WAIT_ON_OFFLINE_DURATION_MS| and
// |mStatusIndicatorWaitOnSwitchOnlineToOfflineDurationMs| control the duration before
@@ -120,6 +142,11 @@ class OfflineDetector
@@ -116,6 +138,11 @@ class OfflineDetector
private static final String TAG = "OfflineDetector";
+ private long mLastNetworkId = 0;
+ private MonotonicObservableSupplier<TabModelSelector> mTabModelSelectorSupplier;
+ private MonotonicObservableSupplier<LayoutManager> mLayoutManager;
+ private ObservableSupplier<TabModelSelector> mTabModelSelectorSupplier;
+ private ObservableSupplier<LayoutManager> mLayoutManager;
+ private Supplier<SnackbarManager> mSnackbarManagerSupplier;
+
/**
* Constructs the offline indicator.
* @param isOfflineCallback The {@link Callback} is invoked when the connectivity status is
@@ -131,7 +158,13 @@ class OfflineDetector
@@ -127,7 +154,13 @@ class OfflineDetector
OfflineDetector(
Callback<Boolean> isOfflineCallback,
Callback<Boolean> isForegroundCallback,
- Context context) {
+ Context context,
+ MonotonicObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
+ MonotonicObservableSupplier<LayoutManager> layoutManager,
+ ObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
+ ObservableSupplier<LayoutManager> layoutManager,
+ Supplier<SnackbarManager> snackbarManagerSupplier) {
+ mTabModelSelectorSupplier = tabModelSelectorSupplier;
+ mSnackbarManagerSupplier = snackbarManagerSupplier;
@@ -157,7 +155,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
mIsOfflineCallback = isOfflineCallback;
mIsForegroundCallback = isForegroundCallback;
mContext = context;
@@ -235,6 +268,75 @@ class OfflineDetector
@@ -231,6 +264,75 @@ class OfflineDetector
updateState();
}
@@ -198,7 +196,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
+ Snackbar snackbar = Snackbar.make(
+ mContext.getString(R.string.ask_to_restart_on_connection_change_restart),
+ /* snackbarController */ this, Snackbar.TYPE_PERSISTENT, Snackbar.UMA_UNKNOWN)
+ .setDefaultLines(false)
+ .setSingleLine(false)
+ .setAction(mContext.getString(R.string.relaunch), /*actionData*/0)
+ .setDismissAction(mContext.getString(R.string.ask_to_restart_on_connection_change_close_notification), /*actionData*/1);
+ SnackbarManager snackbarManager = mSnackbarManagerSupplier.get();
@@ -233,7 +231,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
private void logToAdbConsoleNow(String prefix) {
Log.i(
TAG,
@@ -321,6 +423,7 @@ class OfflineDetector
@@ -316,6 +418,7 @@ class OfflineDetector
** Calls |mUpdateOfflineStatusIndicatorDelayedRunnable| to update the connection state.
*/
private void updateState() {
@@ -244,10 +242,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2.java
@@ -32,6 +32,10 @@ import java.lang.annotation.Retention;
@@ -28,6 +28,11 @@ import org.chromium.content_public.common.ContentSwitches;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.function.Supplier;
+import org.chromium.base.supplier.ObservableSupplierImpl;
+import org.chromium.chrome.browser.layouts.LayoutManager;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -255,19 +254,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
/**
* Class that controls visibility and content of {@link StatusIndicatorCoordinator} to relay
* connectivity information.
@@ -105,7 +109,10 @@ public class OfflineIndicatorControllerV2 {
@@ -101,7 +106,10 @@ public class OfflineIndicatorControllerV2 {
Context context,
StatusIndicatorCoordinator statusIndicator,
NonNullObservableSupplier<Boolean> isUrlBarFocusedSupplier,
ObservableSupplier<Boolean> isUrlBarFocusedSupplier,
- Supplier<Boolean> canAnimateNativeBrowserControls) {
+ Supplier<Boolean> canAnimateNativeBrowserControls,
+ MonotonicObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
+ MonotonicObservableSupplier<LayoutManager> layoutManager,
+ ObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
+ ObservableSupplierImpl<LayoutManager> layoutManager,
+ Supplier<SnackbarManager> snackbarManagerSupplier) {
// If "force online connection state" switch is set, the offline indicator should never
// show.
assert !CommandLine.getInstance()
@@ -131,7 +138,10 @@ public class OfflineIndicatorControllerV2 {
if (CommandLine.getInstance()
.hasSwitch(ContentSwitches.FORCE_ONLINE_CONNECTION_STATE_FOR_INDICATOR)) {
// If "force online connection state" switch is set, the offline indicator should never
@@ -129,7 +137,10 @@ public class OfflineIndicatorControllerV2 {
new OfflineDetector(
(Boolean offline) -> onConnectionStateChanged(offline),
(Boolean isForeground) -> onApplicationStateChanged(isForeground),
@@ -282,22 +281,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -1628,7 +1628,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
mActivity,
mStatusIndicatorCoordinator,
isUrlBarFocusedSupplier,
- mCanAnimateBrowserControls);
+ mCanAnimateBrowserControls,
+ mTabModelSelectorSupplier,
+ mLayoutManagerSupplier,
+ mSnackbarManagerSupplier);
}
@@ -1239,7 +1239,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
mActivity,
mStatusIndicatorCoordinator,
isUrlBarFocusedSupplier,
- mCanAnimateBrowserControls);
+ mCanAnimateBrowserControls,
+ mTabModelSelectorSupplier,
+ mLayoutManagerSupplier,
+ mSnackbarManagerSupplier);
if (mToolbarManager.getOmniboxStub() != null) {
mToolbarManager.getOmniboxStub().addUrlFocusChangeListener(mUrlFocusChangeListener);
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
@@ -207,6 +207,13 @@ public abstract class TabModelSelectorBase
@@ -195,6 +195,13 @@ public abstract class TabModelSelectorBase
return null;
}
@@ -309,7 +308,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
+ }
+
@Override
public TabModel getCurrentModel() {
public @NonNull TabModel getCurrentModel() {
if (mTabModelInternals.size() == 0) return EmptyTabModel.getInstance(false);
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAskForRestartOnConnectionChange.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAskForRestartOnConnectionChange.java
new file mode 100644
@@ -351,19 +350,19 @@ new file mode 100644
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java
--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java
+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelector.java
@@ -146,6 +146,8 @@ public interface TabModelSelector {
/** Get total pinned tab count across all tab models */
int getTotalPinnedTabCount();
@@ -147,6 +147,8 @@ public interface TabModelSelector {
/** Get total tab count across all tab models */
int getTotalTabCount();
+ void setPagesFrozen(boolean frozen);
+
/**
* Search all TabModels for a tab with the specified id.
*
* @return specified tab or null if tab is not found
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java
--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java
+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelUtils.java
@@ -15,6 +15,7 @@ import org.chromium.build.annotations.Nullable;
@@ -17,12 +17,16 @@ import org.chromium.base.supplier.SupplierUtils;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabSelectionType;
import org.chromium.content_public.browser.WebContents;
@@ -371,17 +370,16 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
import org.chromium.ui.base.WindowAndroid;
import java.util.ArrayList;
@@ -22,6 +23,9 @@ import java.util.Collection;
import java.util.Collection;
import java.util.List;
import java.util.function.Predicate;
import java.util.function.Supplier;
+import java.util.Collections;
+import java.util.stream.IntStream;
+import java.util.stream.Collectors;
/**
* A set of convenience methods used for interacting with {@link TabList}s and {@link TabModel}s.
@@ -54,6 +58,20 @@ public class TabModelUtils {
@@ -55,6 +59,20 @@ public class TabModelUtils {
return TabModel.INVALID_TAB_INDEX;
}
@@ -402,11 +400,11 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
/**
* Find the {@link Tab} index whose URL matches the specified URL.
*
diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
--- a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
+++ b/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManager.java
@@ -148,6 +148,8 @@ public interface TabWindowManager {
/** Returns the total number of incognito tabs across all tab model selectors. */
diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
--- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManager.java
@@ -109,6 +109,8 @@ public interface TabWindowManager {
*/
int getIncognitoTabCount();
+ void setPagesFrozen(boolean frozen);
@@ -414,17 +412,17 @@ diff --git a/chrome/browser/tabwindow/android/java/src/org/chromium/chrome/brows
/**
* @param tab The tab to look for in each model.
* @return The TabModel containing the given Tab or null if one doesn't exist.
diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
--- a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
+++ b/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chrome/browser/tabwindow/TabWindowManagerImpl.java
@@ -534,6 +534,16 @@ public class TabWindowManagerImpl implements TabWindowManager {
return tabGroupModelFilter.getTabsInGroup(tabGroupId);
diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
--- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
+++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
@@ -458,6 +458,16 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
return null;
}
+ @Override
+ public void setPagesFrozen(boolean frozen) {
+ for (Map.Entry<@WindowId Integer, TabModelSelector> entry : mWindowIdToSelectors.entrySet()) {
+ TabModelSelector selector = entry.getValue();
+ for (int i = 0; i < mSelectors.size(); i++) {
+ TabModelSelector selector = mSelectors.get(i);
+ if (selector != null) {
+ selector.setPagesFrozen(frozen);
+ }
@@ -432,8 +430,8 @@ diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chr
+ }
+
@Override
public @Nullable TabModelSelector getTabModelSelectorById(@WindowId int windowId) {
return mWindowIdToSelectors.get(windowId);
public TabModelSelector getTabModelSelectorById(int index) {
return mSelectors.get(index);
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Ask-for-restart-on-connection-change.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Ask-for-restart-on-connection-change.grdp
new file mode 100644
--- /dev/null
@@ -454,38 +452,38 @@ new file mode 100644
+ Not now
+ </message>
+</grit-part>
diff --git a/chrome/browser/ui/messages/android/java/res/layout/floating_snackbar.xml b/chrome/browser/ui/messages/android/java/res/layout/floating_snackbar.xml
--- a/chrome/browser/ui/messages/android/java/res/layout/floating_snackbar.xml
+++ b/chrome/browser/ui/messages/android/java/res/layout/floating_snackbar.xml
@@ -50,5 +50,15 @@ found in the LICENSE file.
android:paddingEnd="@dimen/snackbar_button_padding"
android:paddingStart="@dimen/snackbar_button_padding"
style="@style/TextButton" />
diff --git a/chrome/browser/ui/messages/android/java/res/layout/snackbar.xml b/chrome/browser/ui/messages/android/java/res/layout/snackbar.xml
--- a/chrome/browser/ui/messages/android/java/res/layout/snackbar.xml
+++ b/chrome/browser/ui/messages/android/java/res/layout/snackbar.xml
@@ -82,5 +82,15 @@ found in the LICENSE file.
android:paddingEnd="@dimen/snackbar_button_padding"
android:paddingStart="@dimen/snackbar_button_padding"
style="@style/TextButton" />
+
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/snackbar_dismiss"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:paddingEnd="24dp"
+ android:paddingStart="24dp"
+ android:visibility="gone"
+ style="@style/TextButton" />
</LinearLayout>
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/snackbar_dismiss"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:paddingEnd="24dp"
+ android:paddingStart="24dp"
+ android:visibility="gone"
+ style="@style/TextButton" />
</LinearLayout>
</RelativeLayout>
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java
+++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/Snackbar.java
@@ -145,6 +145,8 @@ public class Snackbar {
private @Nullable String mTemplateText;
private @Nullable String mActionText;
private @Nullable Object mActionData;
@@ -133,6 +133,8 @@ public class Snackbar {
private String mTemplateText;
private String mActionText;
private Object mActionData;
+ private String mDismissActionText;
+ private Object mDismissActionData;
private int mBackgroundColor;
private int mTextAppearanceResId;
private boolean mDefaultLines = true;
@@ -251,6 +253,20 @@ public class Snackbar {
private int mTextApperanceResId;
private boolean mSingleLine = true;
@@ -235,6 +237,20 @@ public class Snackbar {
return this;
}
@@ -509,7 +507,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java
+++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager.java
@@ -434,6 +434,12 @@ public class SnackbarManager
@@ -318,6 +318,12 @@ public class SnackbarManager
new SnackbarView(
mActivity,
this,
@@ -525,32 +523,46 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
--- a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
+++ b/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/browser/ui/messages/snackbar/SnackbarView.java
@@ -56,6 +56,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
@@ -51,6 +51,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
protected final ViewGroup mSnackbarView;
protected final TemplatePreservingTextView mMessageView;
private final TextView mActionButtonView;
+ private final TextView mDismissButtonView;
private final ImageView mProfileImageView;
private final int mAnimationDuration;
private final ViewGroup mOriginalParent;
@@ -106,6 +107,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
private final boolean mIsTablet;
@@ -97,11 +98,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
public SnackbarView(
Activity activity,
SnackbarManager manager,
OnClickListener listener,
+ OnClickListener dismissListener,
Snackbar snackbar,
ViewGroup parentView,
@Nullable WindowAndroid windowAndroid,
@@ -165,6 +167,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
boolean isTablet) {
- this(activity, listener, snackbar, parentView, windowAndroid, null, isTablet);
+ this(activity, listener, dismissListener, snackbar, parentView, windowAndroid, null, isTablet);
}
/**
@@ -120,6 +122,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
public SnackbarView(
Activity activity,
OnClickListener listener,
+ OnClickListener dismissListener,
Snackbar snackbar,
ViewGroup parentView,
@Nullable WindowAndroid windowAndroid,
@@ -147,6 +150,8 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
(TemplatePreservingTextView) mContainerView.findViewById(R.id.snackbar_message);
mActionButtonView = (TextView) mContainerView.findViewById(R.id.snackbar_button);
mActionButtonView.setOnClickListener(manager);
mActionButtonView.setOnClickListener(listener);
+ mDismissButtonView = (TextView) mContainerView.findViewById(R.id.snackbar_dismiss);
+ mDismissButtonView.setOnClickListener(dismissListener);
mProfileImageView = (ImageView) mContainerView.findViewById(R.id.snackbar_profile_image);
// Add bottom margin to extend the snackbar view into the bottom window inset. This
// margin has to be applied to the snackbar view itself to avoid weird visual clipping
@@ -415,6 +419,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
mEdgeToEdgeSupplier = edgeToEdgeSupplier;
if (SnackbarManager.isFloatingSnackbarEnabled()) {
@@ -394,6 +399,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
mActionButtonView.setVisibility(View.VISIBLE);
mActionButtonView.setContentDescription(snackbar.getActionText());
setViewText(mActionButtonView, snackbar.getActionText(), animate);
@@ -566,7 +578,7 @@ diff --git a/chrome/browser/ui/messages/android/java/src/org/chromium/chrome/bro
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc
--- a/content/browser/web_contents/web_contents_android.cc
+++ b/content/browser/web_contents/web_contents_android.cc
@@ -903,6 +903,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, bool focused) {
@@ -898,6 +898,22 @@ void WebContentsAndroid::SetFocus(JNIEnv* env, jboolean focused) {
view->SetFocus(focused);
}
@@ -592,10 +604,10 @@ diff --git a/content/browser/web_contents/web_contents_android.cc b/content/brow
diff --git a/content/browser/web_contents/web_contents_android.h b/content/browser/web_contents/web_contents_android.h
--- a/content/browser/web_contents/web_contents_android.h
+++ b/content/browser/web_contents/web_contents_android.h
@@ -199,6 +199,7 @@ class CONTENT_EXPORT WebContentsAndroid {
@@ -194,6 +194,7 @@ class CONTENT_EXPORT WebContentsAndroid {
void OnScaleFactorChanged(JNIEnv* env);
void SetFocus(JNIEnv* env, bool focused);
void SetFocus(JNIEnv* env, jboolean focused);
+ void SetPageFrozen(JNIEnv* env, jboolean frozen);
bool IsBeingDestroyed(JNIEnv* env);
@@ -603,7 +615,7 @@ diff --git a/content/browser/web_contents/web_contents_android.h b/content/brows
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4106,8 +4106,10 @@ void WebContentsImpl::Stop() {
@@ -3748,8 +3748,10 @@ void WebContentsImpl::Stop() {
void WebContentsImpl::SetPageFrozen(bool frozen) {
TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen);
@@ -617,7 +629,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser
diff --git a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
--- a/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/webcontents/WebContentsImpl.java
@@ -1171,6 +1171,12 @@ public class WebContentsImpl
@@ -1161,6 +1161,12 @@ public class WebContentsImpl
WebContentsImplJni.get().setFocus(mNativeWebContentsAndroid, hasFocus);
}
@@ -630,7 +642,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon
@Override
public void setDisplayCutoutSafeArea(Rect insets) {
if (mNativeWebContentsAndroid == 0) return;
@@ -1519,6 +1525,8 @@ public class WebContentsImpl
@@ -1459,6 +1465,8 @@ public class WebContentsImpl
void setFocus(long nativeWebContentsAndroid, boolean focused);
@@ -642,7 +654,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/webcon
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
--- a/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/WebContents.java
@@ -297,6 +297,8 @@ public interface WebContents extends Parcelable {
@@ -289,6 +289,8 @@ public interface WebContents extends Parcelable {
*/
void setFocus(boolean hasFocus);
@@ -654,7 +666,7 @@ diff --git a/content/public/android/java/src/org/chromium/content_public/browser
diff --git a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java
--- a/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java
+++ b/content/public/test/android/javatests/src/org/chromium/content_public/browser/test/mock/MockWebContents.java
@@ -191,6 +191,9 @@ public class MockWebContents implements WebContents, WebContentsObserver.Observa
@@ -187,6 +187,9 @@ public class MockWebContents implements WebContents, WebContentsObserver.Observa
@Override
public void setFocus(boolean hasFocus) {}
@@ -699,7 +711,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -4620,6 +4620,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) {
@@ -4307,6 +4307,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) {
}
void Document::DispatchFreezeEvent() {
@@ -710,7 +722,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -3339,6 +3339,7 @@ void LocalFrame::DidFreeze() {
@@ -3231,6 +3231,7 @@ void LocalFrame::DidFreeze() {
LoaderFreezeMode freeze_mode = GetLoaderFreezeMode();
GetDocument()->Fetcher()->SetDefersLoading(freeze_mode);
Loader().SetDefersLoading(freeze_mode);
@@ -718,7 +730,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
}
void LocalFrame::DidResume() {
@@ -3353,6 +3354,7 @@ void LocalFrame::DidResume() {
@@ -3245,6 +3246,7 @@ void LocalFrame::DidResume() {
GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone);
Loader().SetDefersLoading(LoaderFreezeMode::kNone);
@@ -729,7 +741,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -1022,7 +1022,9 @@ SchedulingLifecycleState FrameSchedulerImpl::CalculateLifecycleState(
@@ -986,7 +986,9 @@ SchedulingLifecycleState FrameSchedulerImpl::CalculateLifecycleState(
if (!parent_page_scheduler_)
return SchedulingLifecycleState::kNotThrottled;
if (parent_page_scheduler_->IsFrozen()) {
@@ -742,7 +754,7 @@ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_sch
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc
--- a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc
@@ -235,10 +235,12 @@ void PageSchedulerImpl::SetPageFrozen(bool frozen) {
@@ -238,10 +238,12 @@ void PageSchedulerImpl::SetPageFrozen(bool frozen) {
// it is desirable to reject the page freeze to prevent the scheduler from
// being put in a bad state. See https://crbug.com/873214 for context of how
// this can happen on the browser side.
@@ -755,7 +767,7 @@ diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_sche
PolicyUpdater policy_updater;
SetPageFrozenImpl(frozen, policy_updater);
}
@@ -803,7 +805,12 @@ bool PageSchedulerImpl::IsBackgrounded() const {
@@ -799,7 +801,12 @@ bool PageSchedulerImpl::IsBackgrounded() const {
// expire immediately when a page is backgrounded, which is undesirable in
// headless mode. To prevent that, a page is never considerer backgrounded
// when virtual time is enabled.
@@ -15,9 +15,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../modules/webaudio/base_audio_context.cc | 12 ++++++++++++
.../renderer/modules/webaudio/base_audio_context.h | 2 ++
.../modules/webaudio/offline_audio_context.cc | 1 +
.../renderer/modules/webaudio/realtime_analyser.cc | 13 ++++++++++---
.../renderer/modules/webaudio/realtime_analyser.cc | 7 +++++++
.../platform/runtime_enabled_features.json5 | 5 ++---
11 files changed, 59 insertions(+), 7 deletions(-)
11 files changed, 56 insertions(+), 4 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc
create mode 100644 cromite_flags/third_party/blink/common/features_h/AudioBuffer-AnalyserNode-fp-mitigations.inc
@@ -52,7 +52,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc b/third_party/blink/renderer/modules/webaudio/audio_buffer.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.cc
@@ -197,6 +197,20 @@ AudioBuffer::AudioBuffer(AudioBus* bus)
@@ -202,6 +202,20 @@ AudioBuffer::AudioBuffer(AudioBus* bus)
}
}
@@ -88,7 +88,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.h b/third_
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
@@ -21,6 +21,7 @@
@@ -15,6 +15,7 @@
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/mediastream/media_devices.h"
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
@@ -96,7 +96,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
#include "third_party/blink/public/platform/web_audio_latency_hint.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
@@ -1133,7 +1134,9 @@ double AudioContext::baseLatency() const {
@@ -639,7 +640,9 @@ double AudioContext::baseLatency() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(main_thread_sequence_checker_);
DCHECK(destination());
@@ -110,15 +110,15 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir
diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
@@ -30,6 +30,7 @@
@@ -29,6 +29,7 @@
#include "base/metrics/histogram_functions.h"
#include "build/build_config.h"
#include "media/base/audio_bus.h"
+#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h"
#include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h"
#include "third_party/blink/public/platform/platform.h"
@@ -777,6 +778,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const {
@@ -709,6 +710,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const {
return To<LocalDOMWindow>(GetExecutionContext());
}
@@ -139,19 +139,19 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b
diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.h b/third_party/blink/renderer/modules/webaudio/base_audio_context.h
--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.h
+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.h
@@ -331,6 +331,8 @@ class MODULES_EXPORT BaseAudioContext
@@ -327,6 +327,8 @@ class MODULES_EXPORT BaseAudioContext
// if the execution context does not exist.
bool CheckExecutionContextAndThrowIfNecessary(ExceptionState&);
+ static float ShuffleAudioData(float data, unsigned index);
+
protected:
enum class ContextType { kRealtimeContext, kOfflineContext };
enum ContextType { kRealtimeContext, kOfflineContext };
diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc b/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc
--- a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc
@@ -418,6 +418,7 @@ void OfflineAudioContext::FireCompletionEvent() {
@@ -372,6 +372,7 @@ void OfflineAudioContext::FireCompletionEvent() {
if (!rendered_buffer) {
return;
}
@@ -162,30 +162,33 @@ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.c
diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
--- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
@@ -33,6 +33,7 @@
@@ -36,6 +36,7 @@
#include <bit>
#include <complex>
#include "base/compiler_specific.h"
#include "media/base/audio_bus.h"
+#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h"
#include "third_party/blink/renderer/platform/audio/audio_bus.h"
#include "third_party/blink/renderer/platform/audio/audio_utilities.h"
#include "third_party/blink/renderer/platform/audio/vector_math.h"
@@ -117,7 +118,8 @@ void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array,
for (unsigned i = 0; i < len; ++i) {
const float linear_value = magnitude_buffer_[i];
const double db_mag = audio_utilities::LinearToDecibels(linear_value);
- destination[i] = static_cast<float>(db_mag);
+ auto v = static_cast<float>(db_mag);
+ destination[i] = BaseAudioContext::ShuffleAudioData(v, i);
@@ -160,6 +161,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData(
input_buffer[(i + write_index - fft_size + kInputBufferSize) %
kInputBufferSize];
+ value = BaseAudioContext::ShuffleAudioData(value, i);
destination[i] = value;
}
}
}
@@ -153,9 +155,11 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array,
@@ -187,6 +189,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) {
input_buffer[(i + write_index - fft_size + kInputBufferSize) %
kInputBufferSize];
// The range m_minDecibels to m_maxDecibels will be scaled to byte values
// from 0 to UCHAR_MAX.
- const double scaled_value =
+ double scaled_value =
+ value = BaseAudioContext::ShuffleAudioData(value, i);
+
// Scale from nominal -1 -> +1 to unsigned byte.
double scaled_value = 128 * (value + 1);
@@ -306,6 +310,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) {
double scaled_value =
UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor;
+ scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i);
@@ -193,32 +196,18 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/
// Clip to valid range.
destination[i] =
static_cast<unsigned char>(ClampTo(scaled_value, 0, UCHAR_MAX));
@@ -184,6 +188,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData(
input_buffer_[(i + write_index - fft_size + kInputBufferSize) %
kInputBufferSize];
+ value = BaseAudioContext::ShuffleAudioData(value, i);
destination[i] = value;
@@ -325,6 +331,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) {
float linear_value = source[i];
double db_mag = audio_utilities::LinearToDecibels(linear_value);
destination[i] = static_cast<float>(db_mag);
+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i);
}
}
@@ -205,10 +210,12 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) {
base::span<unsigned char> destination = destination_array->AsSpan();
for (unsigned i = 0; i < len; ++i) {
// Buffer access is protected due to modulo operation.
- const float value =
+ float value =
input_buffer_[(i + write_index - fft_size + kInputBufferSize) %
kInputBufferSize];
+ value = BaseAudioContext::ShuffleAudioData(value, i);
+
// Scale from nominal -1 -> +1 to unsigned byte.
const double scaled_value = 128 * (value + 1);
}
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -688,9 +688,8 @@
@@ -485,9 +485,8 @@
{
// AudioContext.playoutStats interface.
// https://chromestatus.com/feature/5172818344148992
@@ -7,23 +7,49 @@ This approach is not comprehensive, see also:
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../execution_context/execution_context.cc | 15 +++++++++
.../execution_context/execution_context.h | 1 +
.../renderer/core/loader/base_fetch_context.h | 1 +
.../core/loader/frame_fetch_context.cc | 20 ++++++++++++
.../core/loader/frame_fetch_context.h | 1 +
.../core/loader/worker_fetch_context.cc | 21 +++++++++++++
.../core/loader/worker_fetch_context.h | 1 +
.../core/workers/installed_scripts_manager.cc | 2 +-
.../core/workers/installed_scripts_manager.cc | 4 +--
.../background_fetch_manager.cc | 31 +++++++++++++++++++
.../websockets/websocket_channel_impl.cc | 5 +++
.../modules/websockets/websocket_common.cc | 30 ++++++++++++++++++
.../modules/websockets/websocket_common.h | 4 +++
11 files changed, 116 insertions(+), 1 deletion(-)
12 files changed, 132 insertions(+), 2 deletions(-)
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
+++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -707,6 +707,21 @@ void ExecutionContext::WriteIntoTrace(
proto->set_world_type(GetWorldType(*this));
}
+String ExecutionContext::addressSpaceForBindings() const {
+ switch (AddressSpace()) {
+ case network::mojom::IPAddressSpace::kPublic:
+ case network::mojom::IPAddressSpace::kUnknown:
+ return "public";
+
+ case network::mojom::IPAddressSpace::kPrivate:
+ return "private";
+
+ case network::mojom::IPAddressSpace::kLocal:
+ return "local";
+ }
+ NOTREACHED();
+}
+
bool ExecutionContext::CrossOriginIsolatedCapabilityOrDisabledWebSecurity()
const {
return Agent::IsWebSecurityDisabled() || CrossOriginIsolatedCapability();
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
+++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -388,6 +388,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
@@ -396,6 +396,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space);
HeapObserverList<ContextLifecycleObserver>& ContextLifecycleObserverSet();
@@ -34,7 +60,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third_party/blink/renderer/core/loader/base_fetch_context.h
--- a/third_party/blink/renderer/core/loader/base_fetch_context.h
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.h
@@ -86,6 +86,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
@@ -84,6 +84,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
virtual SubresourceFilter* GetSubresourceFilter() const = 0;
virtual bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const = 0;
@@ -45,7 +71,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
@@ -1138,6 +1138,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
@@ -996,6 +996,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
return should_block_request;
}
@@ -58,7 +84,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -75,7 +101,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.h b/third_party/blink/renderer/core/loader/frame_fetch_context.h
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.h
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.h
@@ -197,6 +197,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
@@ -182,6 +182,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
override;
@@ -107,7 +133,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -135,9 +161,12 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.h b/thi
diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
--- a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
+++ b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
@@ -35,7 +35,7 @@ InstalledScriptsManager::ScriptData::ScriptData(
@@ -33,9 +33,9 @@ InstalledScriptsManager::ScriptData::ScriptData(
// place so that this is shareable out of worker code.
response_address_space_ = network::mojom::IPAddressSpace::kPublic;
if (network_utils::IsReservedIPAddress(script_url_.Host()))
response_address_space_ = network::mojom::IPAddressSpace::kLocal;
- response_address_space_ = network::mojom::IPAddressSpace::kLocal;
+ response_address_space_ = network::mojom::IPAddressSpace::kPrivate;
if (SecurityOrigin::Create(script_url_)->IsLocalhost())
- response_address_space_ = network::mojom::IPAddressSpace::kLoopback;
+ response_address_space_ = network::mojom::IPAddressSpace::kLocal;
@@ -147,8 +176,8 @@ diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.c
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
@@ -104,6 +104,30 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
request_url.ProtocolIsInHttpFamily();
@@ -102,6 +102,30 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
request_url.ProtocolIsInHTTPFamily();
}
+bool ShouldBlockGateWayAttacks(ExecutionContext* execution_context,
@@ -164,7 +193,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -178,7 +207,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
scoped_refptr<BlobDataHandle> ExtractBlobHandle(
Request* request,
ExceptionState& exception_state) {
@@ -191,6 +215,13 @@ ScriptPromise<BackgroundFetchRegistration> BackgroundFetchManager::fetch(
@@ -189,6 +213,13 @@ ScriptPromise<BackgroundFetchRegistration> BackgroundFetchManager::fetch(
exception_state);
}
@@ -210,7 +239,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_imp
diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b/third_party/blink/renderer/modules/websockets/websocket_common.cc
--- a/third_party/blink/renderer/modules/websockets/websocket_common.cc
+++ b/third_party/blink/renderer/modules/websockets/websocket_common.cc
@@ -139,9 +139,39 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect(
@@ -135,9 +135,39 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect(
return ConnectResult::kException;
}
@@ -236,7 +265,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -25,7 +25,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -5374,7 +5374,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin(
@@ -4967,7 +4967,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin(
}
void RenderFrameHostImpl::SetInheritedBaseUrl(const GURL& inherited_base_url) {
@@ -82,7 +82,7 @@ diff --git a/third_party/blink/renderer/core/frame/location.cc b/third_party/bli
#include "third_party/blink/renderer/bindings/core/v8/binding_security.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
#include "third_party/blink/renderer/core/dom/document.h"
@@ -127,8 +128,20 @@ DOMStringList* Location::ancestorOrigins() const {
@@ -125,8 +126,20 @@ DOMStringList* Location::ancestorOrigins() const {
auto* origins = MakeGarbageCollected<DOMStringList>();
if (!IsAttached())
return origins;
@@ -106,7 +106,7 @@ diff --git a/third_party/blink/renderer/core/frame/location.cc b/third_party/bli
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -850,6 +850,11 @@ WebString DocumentLoader::HttpMethod() const {
@@ -827,6 +827,11 @@ WebString DocumentLoader::HttpMethod() const {
}
const AtomicString& DocumentLoader::GetReferrer() const {
@@ -118,7 +118,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p
return referrer_;
}
@@ -2965,6 +2970,13 @@ void DocumentLoader::CommitNavigation() {
@@ -2930,6 +2935,13 @@ void DocumentLoader::CommitNavigation() {
response_.HttpHeaderField(http_names::kDocumentPolicyReportOnly));
}
@@ -135,7 +135,7 @@ diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_p
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h
--- a/third_party/blink/renderer/core/loader/document_loader.h
+++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -789,7 +789,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected<DocumentLoader>,
@@ -780,7 +780,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected<DocumentLoader>,
// |archive_|, but won't have |loading_main_document_from_mhtml_archive_| set.
bool loading_main_document_from_mhtml_archive_ = false;
const bool loading_srcdoc_ = false;
@@ -0,0 +1,277 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 30 Oct 2019 11:50:13 +0100
Subject: Block 'qjz9zk' or 'trk:' requests
An info bar is displayed unless the --disable-trkbar command-line flag or the chrome://flag option is used.
This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs being retrieved'
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../chrome_autocomplete_scheme_classifier.cc | 1 +
chrome/browser/history/history_utils.cc | 1 +
chrome/browser/ui/singleton_tabs.cc | 5 ++++
.../omnibox/browser/autocomplete_input.cc | 8 ++++-
components/url_formatter/url_fixer.cc | 4 +++
.../child_process_security_policy_impl.cc | 1 +
net/BUILD.gn | 2 ++
net/url_request/trk_protocol_handler.cc | 25 ++++++++++++++++
net/url_request/trk_protocol_handler.h | 30 +++++++++++++++++++
net/url_request/url_request.cc | 8 +++++
.../url_request_context_builder.cc | 3 ++
url/url_constants.h | 1 +
url/url_util.cc | 2 ++
13 files changed, 90 insertions(+), 1 deletion(-)
create mode 100644 net/url_request/trk_protocol_handler.cc
create mode 100644 net/url_request/trk_protocol_handler.h
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
@@ -56,6 +56,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme(
if (base::IsStringASCII(scheme) &&
(ProfileIOData::IsHandledProtocol(scheme) ||
base::EqualsCaseInsensitiveASCII(scheme, content::kViewSourceScheme) ||
+ base::EqualsCaseInsensitiveASCII(scheme, url::kTraceScheme) ||
base::EqualsCaseInsensitiveASCII(scheme, url::kJavaScriptScheme) ||
base::EqualsCaseInsensitiveASCII(scheme, url::kDataScheme))) {
return metrics::OmniboxInputType::URL;
diff --git a/chrome/browser/history/history_utils.cc b/chrome/browser/history/history_utils.cc
--- a/chrome/browser/history/history_utils.cc
+++ b/chrome/browser/history/history_utils.cc
@@ -22,6 +22,7 @@ bool CanAddURLToHistory(const GURL& url) {
url.SchemeIs(content::kChromeUIScheme) ||
url.SchemeIs(content::kChromeUIUntrustedScheme) ||
url.SchemeIs(content::kViewSourceScheme) ||
+ url.SchemeIs(url::kTraceScheme) ||
url.SchemeIs(chrome::kChromeNativeScheme) ||
url.SchemeIs(chrome::kChromeSearchScheme) ||
url.SchemeIs(dom_distiller::kDomDistillerScheme))
diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_tabs.cc
--- a/chrome/browser/ui/singleton_tabs.cc
+++ b/chrome/browser/ui/singleton_tabs.cc
@@ -128,6 +128,11 @@ int GetIndexOfExistingTab(Browser* browser, const NavigateParams& params) {
continue;
}
+ // trk: URLs must not be rewritten
+ if (tab_url.SchemeIs(url::kTraceScheme)) {
+ continue;
+ }
+
GURL rewritten_tab_url = tab_url;
content::BrowserURLHandler::GetInstance()->RewriteURLIfNecessary(
&rewritten_tab_url, browser->profile());
diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
--- a/components/omnibox/browser/autocomplete_input.cc
+++ b/components/omnibox/browser/autocomplete_input.cc
@@ -96,10 +96,15 @@ void OffsetComponentsExcludingScheme(url::Parsed* parts, int offset) {
bool HasScheme(const std::u16string& input, const char* scheme) {
std::string utf8_input(base::UTF16ToUTF8(input));
url::Component view_source_scheme;
+
+ if (url::FindAndCompareScheme(utf8_input, url::kTraceScheme, &view_source_scheme)) {
+ return false;
+ }
if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme,
&view_source_scheme)) {
utf8_input.erase(0, view_source_scheme.end() + 1);
}
+
return url::FindAndCompareScheme(utf8_input, scheme, nullptr);
}
@@ -582,7 +587,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
// For the view-source and blob schemes, we should emphasize the host of the
// URL qualified by the view-source or blob prefix.
if ((base::EqualsCaseInsensitiveASCII(scheme_str, kViewSourceScheme) ||
- base::EqualsCaseInsensitiveASCII(scheme_str, url::kBlobScheme)) &&
+ base::EqualsCaseInsensitiveASCII(scheme_str, url::kBlobScheme) ||
+ base::EqualsCaseInsensitiveASCII(scheme_str, url::kTraceScheme)) &&
(static_cast<int>(text.length()) > after_scheme_and_colon)) {
// Obtain the URL prefixed by view-source or blob and parse it.
std::u16string real_url(text.substr(after_scheme_and_colon));
diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
--- a/components/url_formatter/url_fixer.cc
+++ b/components/url_formatter/url_fixer.cc
@@ -607,6 +607,10 @@ GURL FixupURLInternal(const std::string& text,
}
}
+ if (scheme == url::kTraceScheme) {
+ return GURL();
+ }
+
// We handle the file scheme separately.
if (scheme == url::kFileScheme) {
return GURL(parts.scheme.is_valid() ? text : FixupPath(text));
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
--- a/content/browser/child_process_security_policy_impl.cc
+++ b/content/browser/child_process_security_policy_impl.cc
@@ -951,6 +951,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
RegisterPseudoScheme(url::kJavaScriptScheme);
RegisterPseudoScheme(kViewSourceScheme);
RegisterPseudoScheme(kGoogleChromeScheme);
+ RegisterWebSafeScheme(url::kTraceScheme);
}
ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() {
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1085,6 +1085,8 @@ component("net") {
"url_request/url_request_http_job.cc",
"url_request/url_request_http_job.h",
"url_request/url_request_interceptor.cc",
+ "url_request/trk_protocol_handler.cc",
+ "url_request/trk_protocol_handler.h",
"url_request/url_request_interceptor.h",
"url_request/url_request_job.cc",
"url_request/url_request_job.h",
diff --git a/net/url_request/trk_protocol_handler.cc b/net/url_request/trk_protocol_handler.cc
new file mode 100644
--- /dev/null
+++ b/net/url_request/trk_protocol_handler.cc
@@ -0,0 +1,25 @@
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/url_request/trk_protocol_handler.h"
+
+#include "base/logging.h"
+#include "net/base/net_errors.h"
+#include "net/url_request/url_request_error_job.h"
+
+namespace net {
+
+TrkProtocolHandler::TrkProtocolHandler() = default;
+
+std::unique_ptr<URLRequestJob> TrkProtocolHandler::CreateJob(
+ URLRequest* request) const {
+ LOG(ERROR) << "Blocked URL in TrkProtocolHandler: " << request->original_url();
+ return std::make_unique<URLRequestErrorJob>(request, ERR_BLOCKED_BY_CLIENT);
+}
+
+bool TrkProtocolHandler::IsSafeRedirectTarget(const GURL& location) const {
+ return true;
+}
+
+} // namespace net
diff --git a/net/url_request/trk_protocol_handler.h b/net/url_request/trk_protocol_handler.h
new file mode 100644
--- /dev/null
+++ b/net/url_request/trk_protocol_handler.h
@@ -0,0 +1,30 @@
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
+#define NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
+
+#include "base/compiler_specific.h"
+#include "net/base/net_export.h"
+#include "net/url_request/url_request_job_factory.h"
+
+namespace net {
+
+class URLRequestJob;
+
+// Implements a ProtocolHandler for Trk jobs.
+class NET_EXPORT TrkProtocolHandler
+ : public URLRequestJobFactory::ProtocolHandler {
+ public:
+ TrkProtocolHandler(const TrkProtocolHandler&) = delete;
+ TrkProtocolHandler& operator=(const TrkProtocolHandler&) = delete;
+
+ TrkProtocolHandler();
+ std::unique_ptr<URLRequestJob> CreateJob(URLRequest* request) const override;
+ bool IsSafeRedirectTarget(const GURL& location) const override;
+};
+
+} // namespace net
+
+#endif // NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -15,6 +15,7 @@
#include "base/notreached.h"
#include "base/rand_util.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/strings/string_util.h"
#include "base/synchronization/lock.h"
#include "base/task/single_thread_task_runner.h"
#include "base/types/optional_util.h"
@@ -53,6 +54,7 @@
#include "net/url_request/url_request_redirect_job.h"
#include "url/gurl.h"
#include "url/origin.h"
+#include "url/url_constants.h"
namespace net {
@@ -635,6 +637,12 @@ URLRequest::URLRequest(base::PassKey<URLRequestContext> pass_key,
// Sanity check out environment.
DCHECK(base::SingleThreadTaskRunner::HasCurrentDefault());
+ if (!url.SchemeIs(url::kTraceScheme) &&
+ base::EndsWith(url.host(), "qjz9zk", base::CompareCase::INSENSITIVE_ASCII)) {
+ LOG(ERROR) << "Block URL in URLRequest: " << url;
+ url_chain_[0] = GURL(url::kTraceScheme + (":" + url.possibly_invalid_spec()));
+ }
+
context->url_requests()->insert(this);
net_log_.BeginEvent(NetLogEventType::REQUEST_ALIVE, [&] {
return NetLogURLRequestConstructorParams(url, priority_,
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
--- a/net/url_request/url_request_context_builder.cc
+++ b/net/url_request/url_request_context_builder.cc
@@ -49,6 +49,7 @@
#include "net/socket/network_binding_client_socket_factory.h"
#include "net/ssl/ssl_config_service_defaults.h"
#include "net/url_request/static_http_user_agent_settings.h"
+#include "net/url_request/trk_protocol_handler.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_job_factory.h"
#include "url/url_constants.h"
@@ -601,6 +602,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
job_factory->SetProtocolHandler(scheme_handler.first,
std::move(scheme_handler.second));
}
+ job_factory->SetProtocolHandler(url::kTraceScheme,
+ std::make_unique<TrkProtocolHandler>());
protocol_handlers_.clear();
context->set_job_factory(std::move(job_factory));
diff --git a/url/url_constants.h b/url/url_constants.h
--- a/url/url_constants.h
+++ b/url/url_constants.h
@@ -34,6 +34,7 @@ inline constexpr char16_t kDataScheme16[] = u"data";
inline constexpr char kDrivefsScheme[] = "drivefs";
inline constexpr char kFileScheme[] = "file";
inline constexpr char16_t kFileScheme16[] = u"file";
+inline constexpr char kTraceScheme[] = "trk";
inline constexpr char kFileSystemScheme[] = "filesystem";
inline constexpr char16_t kFileSystemScheme16[] = u"filesystem";
inline constexpr char kFtpScheme[] = "ftp";
diff --git a/url/url_util.cc b/url/url_util.cc
--- a/url/url_util.cc
+++ b/url/url_util.cc
@@ -53,6 +53,7 @@ struct SchemeRegistry {
std::vector<SchemeWithType> standard_schemes = {
{kHttpsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
{kHttpScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
+ {kTraceScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
// Yes, file URLs can have a hostname, so file URLs should be handled as
// "standard". File URLs never have a port as specified by the SchemeType
// field. Unlike other SCHEME_WITH_HOST schemes, the 'host' in a file
@@ -98,6 +99,7 @@ struct SchemeRegistry {
kAboutScheme,
kJavaScriptScheme,
kDataScheme,
+ kTraceScheme,
};
// Schemes that can be sent CORS requests.
--
@@ -28,48 +28,54 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c
<item
android:id="@+id/import_menu_id"
android:icon="@drawable/ic_folder_blue_24dp"
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
@@ -28,6 +28,7 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelega
import java.util.ArrayList;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
@@ -26,6 +26,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
+import java.util.HashSet;
+import java.util.HashSet;
+
/**
* Main toolbar of bookmark UI. It is responsible for displaying title and buttons associated with
@@ -197,6 +198,11 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
* the current context.
@@ -186,12 +188,16 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
void setCurrentFolder(BookmarkId folder) {
mCurrentFolder = mBookmarkModel.getBookmarkById(folder);
enableImportExportMenu();
+ enableSelectAllMenu();
+ }
}
void enableImportExportMenu() {
getMenu().findItem(R.id.import_menu_id).setVisible(true);
getMenu().findItem(R.id.export_menu_id).setVisible(true);
}
+
+ void enableSelectAllMenu() {
+ getMenu().findItem(R.id.select_all_menu_id).setVisible(true);
}
void enableImportExportMenu() {
@@ -233,6 +239,17 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
void setNavigateBackRunnable(Runnable navigateBackRunnable) {
@@ -218,6 +224,17 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
mExportBookmarkRunnable.run();
return true;
}
+ if (menuItem.getItemId() == R.id.select_all_menu_id) {
+ if (mBookmarkModel.isBookmarkModelLoaded()) {
+ List<BookmarkId> childs = mBookmarkModel.getChildIds(mCurrentFolder.getId());
+ HashSet<BookmarkId> ids = new HashSet<>(childs.size());
+ for (BookmarkId item : childs) {
+ ids.add(item);
+ List<BookmarkItem> items = mBookmarkModel.getBookmarksForFolder(mCurrentFolder.getId());
+ HashSet<BookmarkId> ids = new HashSet<>(items.size());
+ for (BookmarkItem item : items) {
+ ids.add(item.getId());
+ }
+ mSelectionDelegate.setSelectedItems(ids);
+ }
+ return true;
+ }
return assumeNonNull(mMenuIdClickedFunction).apply(menuItem.getItemId());
return mMenuIdClickedFunction.apply(menuItem.getItemId());
}
@@ -255,6 +272,7 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
@@ -235,6 +252,7 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
getMenu().findItem(R.id.import_menu_id).setVisible(mCurrentFolder != null);
getMenu().findItem(R.id.export_menu_id).setVisible(mCurrentFolder != null);
@@ -80,7 +86,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -271,6 +271,9 @@ CHAR_LIMIT guidelines:
@@ -246,6 +246,9 @@ CHAR_LIMIT guidelines:
<message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR_LIMIT=32]">
Sites
</message>
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -10,10 +10,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -23,7 +23,7 @@ declare_args() {
# Android package name to use when compiling the public chrome targets
# (chrome_public_apk, trichrome_chrome_bundle, etc. as well as the
# *_bundle variants). This defaults to the Chromium browser package name.
@@ -26,7 +26,7 @@ declare_args() {
# WebView providers which declare one of a handful of package names. See
# https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/build-instructions.md#Changing-package-name
# for details.
- chrome_public_manifest_package = "org.chromium.chrome"
+ chrome_public_manifest_package = "org.bromite.bromite"
if (use_stable_package_name_for_trichrome) {
+159 -175
View File
@@ -21,18 +21,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../java/res/xml/adblock_preferences.xml | 25 ++
.../android/java/res/xml/main_preferences.xml | 5 +
.../browser/settings/AdBlockEditor.java | 91 ++++++
.../browser/settings/AdBlockPreferences.java | 76 +++++
.../browser/settings/SettingsActivity.java | 3 +
.../browser/settings/AdBlockPreferences.java | 58 ++++
.../chrome/browser/tabmodel/TabModelImpl.java | 4 +-
chrome/app/generated_resources.grd | 10 +
chrome/browser/after_startup_task_utils.cc | 5 +
chrome/browser/browser_process.h | 5 +
chrome/browser/browser_process_impl.cc | 30 ++
chrome/browser/after_startup_task_utils.cc | 4 +
chrome/browser/browser_process.h | 6 +
chrome/browser/browser_process_impl.cc | 28 ++
chrome/browser/browser_process_impl.h | 2 +
chrome/browser/chrome_browser_main.cc | 3 +
chrome/browser/flags/BUILD.gn | 3 +
.../flags/android/adblock_native_gateway.cc | 33 ++
.../flags/android/adblock_native_gateway.cc | 31 ++
.../browser/flags/AdBlockNativeGateway.java | 30 ++
.../net/system_network_context_manager.cc | 4 +
.../sessions/session_restore_android.cc | 7 +-
.../strings/android_chrome_strings.grd | 14 +
chrome/common/pref_names.h | 5 +
.../strings/android/site_settings.grdp | 3 +
@@ -43,14 +44,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../component_updater/download_filters_task.h | 129 ++++++++
...ent_subresource_filter_throttle_manager.cc | 15 +
...tent_subresource_filter_throttle_manager.h | 2 +
.../content/browser/ruleset_service.cc | 44 ++-
.../content/browser/ruleset_service.h | 8 +-
.../content/shared/browser/ruleset_service.cc | 47 ++-
.../content/shared/browser/ruleset_service.h | 8 +-
.../unindexed_ruleset_stream_generator.cc | 3 +
.../core/browser/ruleset_version.h | 4 +
.../browser/subresource_filter_features.cc | 118 +-------
.../browser/subresource_filter_features.cc | 114 +------
.../core/browser/verified_ruleset_dealer.cc | 4 +
.../core/common/indexed_ruleset.cc | 5 +-
38 files changed, 1288 insertions(+), 127 deletions(-)
39 files changed, 1271 insertions(+), 129 deletions(-)
create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
@@ -65,7 +66,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -318,6 +318,7 @@ if (_is_default_toolchain) {
@@ -322,6 +322,7 @@ if (current_toolchain == default_toolchain) {
"//chrome/android/features/tab_ui/public:ui_java_resources",
"//chrome/android/modules/stack_unwinder/provider:java",
"//chrome/android/webapk/libs/client:client_java",
@@ -76,18 +77,18 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -432,6 +432,7 @@ chrome_java_resources = [
@@ -436,6 +436,7 @@ chrome_java_resources = [
"java/res/layout/account_divider_preference.xml",
"java/res/layout/account_management_account_row.xml",
"java/res/layout/app_history_filter.xml",
"java/res/layout/auto_pip_permission_dialog.xml",
+ "java/res/layout/adblock_editor.xml",
"java/res/layout/auto_sign_in_first_run_dialog.xml",
"java/res/layout/autofill_billing_address_dropdown.xml",
"java/res/layout/autofill_card_name_and_number.xml",
@@ -638,6 +639,7 @@ chrome_java_resources = [
@@ -624,6 +625,7 @@ chrome_java_resources = [
"java/res/xml/about_chrome_preferences.xml",
"java/res/xml/account_management_preferences.xml",
"java/res/xml/ad_services_config.xml",
"java/res/xml/appearance_preferences.xml",
+ "java/res/xml/adblock_preferences.xml",
"java/res/xml/bookmark_widget_info.xml",
"java/res/xml/clear_browsing_data_preferences.xml",
@@ -95,7 +96,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -977,6 +977,8 @@ chrome_java_sources = [
@@ -941,6 +941,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/permissions/PermissionBlockedDialog.java",
"java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java",
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
@@ -179,7 +180,7 @@ new file mode 100644
diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml
--- a/chrome/android/java/res/values/styles.xml
+++ b/chrome/android/java/res/values/styles.xml
@@ -339,6 +339,24 @@ found in the LICENSE file.
@@ -256,6 +256,24 @@ found in the LICENSE file.
</item>
</style>
@@ -251,7 +252,7 @@ new file mode 100644
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -113,6 +113,11 @@ found in the LICENSE file.
@@ -120,6 +120,11 @@ for the previous order (main_preferences_legacy). -->
android:key="toolbar_shortcut"
android:order="21"
android:title="@string/toolbar_shortcut"/>
@@ -363,7 +364,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBloc
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
@@ -0,0 +1,76 @@
@@ -0,0 +1,58 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
@@ -373,48 +374,30 @@ new file mode 100644
+import android.os.Bundle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+
+import org.chromium.base.supplier.MonotonicObservableSupplier;
+import org.chromium.base.supplier.ObservableSuppliers;
+import org.chromium.base.supplier.SettableMonotonicObservableSupplier;
+import java.util.function.Supplier;
+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
+
+import org.chromium.content_public.browser.BrowserContextHandle;
+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
+import org.chromium.components.browser_ui.site_settings.BaseSiteSettingsFragment;
+import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
+import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.components.browser_ui.settings.SettingsUtils;
+import org.chromium.components.browser_ui.settings.SettingsFragment;
+
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.flags.AdBlockNativeGateway;
+import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment;
+import androidx.annotation.VisibleForTesting;
+import org.chromium.chrome.R;
+
+/**
+ * Fragment that allows the user to configure AdBlock related preferences.
+ */
+public class AdBlockPreferences extends ChromeBaseSettingsFragment {
+public class AdBlockPreferences extends BaseSiteSettingsFragment {
+ @VisibleForTesting
+ public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
+ private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
+
+ private Preference mAdBlockEdit;
+ private final SettableMonotonicObservableSupplier<String> mPageTitle =
+ ObservableSuppliers.createMonotonic();
+
+ @Override
+ public MonotonicObservableSupplier<String> getPageTitle() {
+ return mPageTitle;
+ }
+
+ @Override
+ public @SettingsFragment.AnimationType int getAnimationType() {
+ return SettingsFragment.AnimationType.PROPERTY;
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ mPageTitle.set(getString(R.string.options_adblock_title));
+ getActivity().setTitle(R.string.options_adblock_title);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
+
+ ChromeSwitchPreference mAdBlockSwitch =
@@ -440,30 +423,24 @@ new file mode 100644
+ updateCurrentAdBlockUrl();
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
@@ -106,6 +106,8 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
@@ -923,9 +923,7 @@ public class TabModelImpl extends TabModelJniBridge {
.createTabWithWebContents(
parent,
webContents,
- select
- ? TabLaunchType.FROM_RECENT_TABS_FOREGROUND
- : TabLaunchType.FROM_RECENT_TABS);
+ TabLaunchType.FROM_LINK);
}
+import org.chromium.chrome.browser.settings.AdBlockEditor;
+
/**
* The Chrome settings activity.
*
@@ -1325,6 +1327,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
&& !MAIN_FRAGMENT_TAG.equals(fragment.getTag())) {
return;
}
+ if (fragment instanceof AdBlockEditor) return;
String className = fragment.getClass().getSimpleName();
RecordHistogram.recordSparseHistogram(
@Override
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -17715,6 +17715,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
@@ -16490,6 +16490,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
Never show this again.
</message>
@@ -483,17 +460,16 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
--- a/chrome/browser/after_startup_task_utils.cc
+++ b/chrome/browser/after_startup_task_utils.cc
@@ -24,6 +24,9 @@
#include "chrome/browser/ui/ash/login/login_display_host.h"
#endif
@@ -29,6 +29,8 @@
#include "chromeos/startup/browser_params_proxy.h"
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
+#include "chrome/browser/browser_process.h"
+#include "components/component_updater/adblock_updater_service.h"
+
using content::BrowserThread;
namespace {
@@ -129,6 +132,8 @@ void SetBrowserStartupIsComplete() {
@@ -134,6 +136,8 @@ void SetBrowserStartupIsComplete() {
}
GetAfterStartupTasks().clear();
GetAfterStartupTasks().shrink_to_fit();
@@ -505,7 +481,15 @@ diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_s
diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
--- a/chrome/browser/browser_process.h
+++ b/chrome/browser/browser_process.h
@@ -96,6 +96,10 @@ namespace component_updater {
@@ -32,6 +32,7 @@
#include "chrome/common/buildflags.h"
#include "components/safe_browsing/buildflags.h"
#include "media/media_buildflags.h"
+#include "components/component_updater/adblock_updater_service.h"
class BackgroundModeManager;
class BrowserProcessPlatformPart;
@@ -89,6 +90,10 @@ namespace component_updater {
class ComponentUpdateService;
}
@@ -516,27 +500,18 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
namespace gcm {
class GCMDriver;
}
@@ -294,6 +298,7 @@ class BrowserProcess {
virtual activity_reporter::ActivityReporter* activity_reporter() = 0;
@@ -269,6 +274,7 @@ class BrowserProcess {
#endif
virtual component_updater::ComponentUpdateService* component_updater() = 0;
+ virtual adblock_updater::AdBlockUpdaterService* adblock_updater() = 0;
#if BUILDFLAG(IS_CHROMEOS)
virtual MediaFileSystemRegistry* media_file_system_registry() = 0;
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -184,6 +184,8 @@
#include "ui/message_center/message_center.h"
#endif
+#include "components/component_updater/adblock_updater_service.h"
+
#if BUILDFLAG(IS_ANDROID)
#include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h"
#include "chrome/browser/flags/android/chrome_feature_list.h"
@@ -1375,6 +1377,34 @@ BrowserProcessImpl::component_updater() {
@@ -1240,6 +1240,34 @@ BrowserProcessImpl::component_updater() {
return component_updater_.get();
}
@@ -569,20 +544,20 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
+}
+
void BrowserProcessImpl::OnKeepAliveStateChanged(bool is_keeping_alive) {
if (is_keeping_alive) {
if (is_keeping_alive)
Pin();
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
--- a/chrome/browser/browser_process_impl.h
+++ b/chrome/browser/browser_process_impl.h
@@ -220,6 +220,7 @@ class BrowserProcessImpl : public BrowserProcess,
@@ -217,6 +217,7 @@ class BrowserProcessImpl : public BrowserProcess,
#endif
activity_reporter::ActivityReporter* activity_reporter() override;
component_updater::ComponentUpdateService* component_updater() override;
+ adblock_updater::AdBlockUpdaterService* adblock_updater() override;
#if BUILDFLAG(IS_CHROMEOS)
MediaFileSystemRegistry* media_file_system_registry() override;
#endif
@@ -439,6 +440,7 @@ class BrowserProcessImpl : public BrowserProcess,
WebRtcLogUploader* webrtc_log_uploader() override;
network_time::NetworkTimeTracker* network_time_tracker() override;
@@ -429,6 +430,7 @@ class BrowserProcessImpl : public BrowserProcess,
// to concerns over integrity of data shared between profiles,
// but some users of component updater only install per-user.
std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
@@ -593,7 +568,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -439,6 +439,9 @@ StartupProfileInfo CreateInitialProfile(
@@ -468,6 +468,9 @@ StartupProfileInfo CreateInitialProfile(
// missing code in the above test.
CHECK(profile_info.profile) << "Cannot get default profile.";
@@ -601,12 +576,12 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows
+ g_browser_process->adblock_updater();
+
#else
profile_info =
GetStartupProfile(/*cur_dir=*/base::FilePath(), parsed_command_line);
#if BUILDFLAG(IS_CHROMEOS_LACROS)
// Lacros has a special "primary" profile that is tied to the active ChromeOS
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
@@ -9,6 +9,7 @@ import("//third_party/jni_zero/jni_zero.gni")
@@ -8,6 +8,7 @@ import("//third_party/jni_zero/jni_zero.gni")
android_library("java") {
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
sources += [
@@ -614,7 +589,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java",
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java",
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
@@ -49,6 +50,7 @@ java_bromite_impl("java_cromite_cached_flags") {
@@ -47,6 +48,7 @@ java_bromite_impl("java_cromite_cached_flags") {
generate_jni("jni_headers") {
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
sources += [
@@ -622,7 +597,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java",
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
]
@@ -62,6 +64,7 @@ static_library("flags_android") {
@@ -61,6 +63,7 @@ static_library("flags_android") {
"android/chrome_session_state.cc",
"android/chrome_session_state.h",
]
@@ -634,7 +609,7 @@ diff --git a/chrome/browser/flags/android/adblock_native_gateway.cc b/chrome/bro
new file mode 100755
--- /dev/null
+++ b/chrome/browser/flags/android/adblock_native_gateway.cc
@@ -0,0 +1,33 @@
@@ -0,0 +1,31 @@
+#include "chrome/browser/flags/jni_headers/AdBlockNativeGateway_jni.h"
+
+#include "base/android/jni_string.h"
@@ -643,7 +618,7 @@ new file mode 100755
+#include "components/prefs/pref_service.h"
+
+using base::android::ScopedJavaLocalRef;
+using base::android::JavaRef;
+using base::android::JavaParamRef;
+
+static ScopedJavaLocalRef<jstring> JNI_AdBlockNativeGateway_GetAdBlockFiltersURL(
+ JNIEnv* env) {
@@ -652,22 +627,20 @@ new file mode 100755
+}
+
+static void JNI_AdBlockNativeGateway_SetAdBlockFiltersURL(
+ JNIEnv* env, const JavaRef<jstring>& url) {
+ JNIEnv* env, const JavaParamRef<jstring>& url) {
+ g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL,
+ base::android::ConvertJavaStringToUTF8(env, url));
+}
+
+static bool JNI_AdBlockNativeGateway_GetAdBlockEnabled(
+static jboolean JNI_AdBlockNativeGateway_GetAdBlockEnabled(
+ JNIEnv* env) {
+ return g_browser_process->local_state()->GetBoolean(prefs::kAdBlockEnabled);
+}
+
+static void JNI_AdBlockNativeGateway_SetAdBlockEnabled(
+ JNIEnv* env, bool enabled) {
+ JNIEnv* env, jboolean enabled) {
+ g_browser_process->local_state()->SetBoolean(prefs::kAdBlockEnabled, enabled);
+}
+
+DEFINE_JNI(AdBlockNativeGateway)
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java
new file mode 100755
--- /dev/null
@@ -696,7 +669,7 @@ new file mode 100755
+ }
+
+ @NativeMethods
+ public interface Natives {
+ interface Natives {
+ void setAdBlockFiltersURL(String url);
+ String getAdBlockFiltersURL();
+ void setAdBlockEnabled(boolean enabled);
@@ -706,9 +679,9 @@ new file mode 100755
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -718,6 +718,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
@@ -640,6 +640,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
StubResolverConfigReader::RegisterPrefs(registry);
DefaultDnsOverHttpsConfigSource::RegisterPrefs(registry);
NetworkProcessLaunchWatcher::RegisterPrefs(registry);
+ registry->RegisterBooleanPref(prefs::kAdBlockEnabled, false);
+ registry->RegisterStringPref(prefs::kAdBlockFiltersURL,
@@ -717,11 +690,28 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
// Static auth params
registry->RegisterStringPref(prefs::kAuthSchemes,
"basic,digest,ntlm,negotiate");
diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser/sessions/session_restore_android.cc
--- a/chrome/browser/sessions/session_restore_android.cc
+++ b/chrome/browser/sessions/session_restore_android.cc
@@ -58,8 +58,11 @@ content::WebContents* SessionRestore::RestoreForeignSessionTab(
DCHECK(current_tab);
// If swapped, return the current tab's most up-to-date web contents.
if (disposition == WindowOpenDisposition::CURRENT_TAB) {
- current_tab->SwapWebContents(std::move(new_web_contents), false, false);
- return current_tab->web_contents();
+ int active_tab_index = tab_model->GetActiveIndex();
+ tab_model->CreateTab(current_tab, new_web_contents.release(),
+ disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB);
+ tab_model->CloseTabAt(active_tab_index);
+ return raw_new_web_contents;
}
DCHECK(disposition == WindowOpenDisposition::NEW_FOREGROUND_TAB ||
disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB);
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -239,6 +239,20 @@ CHAR_LIMIT guidelines:
Try searching the help center
@@ -218,6 +218,20 @@ CHAR_LIMIT guidelines:
Advanced
</message>
+ <!-- AdBlock settings -->
@@ -744,7 +734,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -2778,6 +2778,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
@@ -2868,6 +2868,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
inline constexpr char kAudioCaptureAllowedUrls[] =
"hardware.audio_capture_allowed_urls";
@@ -759,7 +749,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp
--- a/components/browser_ui/strings/android/site_settings.grdp
+++ b/components/browser_ui/strings/android/site_settings.grdp
@@ -421,6 +421,9 @@
@@ -373,6 +373,9 @@
<message name="IDS_INTRUSIVE_ADS_INFORMATION" desc="The extra information at the top of the Site Details page when the site tends to show intrusive ads">
This site shows intrusive or misleading ads
</message>
@@ -1121,7 +1111,7 @@ new file mode 100644
+#include "components/component_updater/update_scheduler.h"
+#include "url/gurl.h"
+#include "components/component_updater/download_filters_task.h"
+#include "components/subresource_filter/content/browser/ruleset_service.h"
+#include "components/subresource_filter/content/shared/browser/ruleset_service.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+
+namespace adblock_updater {
@@ -1583,18 +1573,17 @@ new file mode 100644
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
--- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
+++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
@@ -17,7 +17,10 @@
@@ -18,6 +18,9 @@
#include "base/strings/stringprintf.h"
#include "base/trace_event/trace_event.h"
#include "base/trace_event/traced_value.h"
#include "base/tracing/protos/chrome_track_event.pbzero.h"
+#include "components/content_settings/core/common/content_settings_types.h"
#include "components/subresource_filter/content/browser/activation_state_computing_navigation_throttle.h"
+#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h"
+#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h"
#include "components/subresource_filter/content/browser/ad_tagging_utils.h"
#include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h"
#include "components/subresource_filter/content/browser/page_load_statistics.h"
@@ -113,6 +116,7 @@ ContentSubresourceFilterThrottleManager::
#include "components/subresource_filter/content/browser/profile_interaction_manager.h"
@@ -112,6 +115,7 @@ ContentSubresourceFilterThrottleManager::
profile_interaction_manager_(
std::make_unique<subresource_filter::ProfileInteractionManager>(
profile_context)),
@@ -1602,17 +1591,17 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
web_contents_helper_(web_contents_helper) {}
ContentSubresourceFilterThrottleManager::
@@ -659,6 +663,17 @@ ContentSubresourceFilterThrottleManager::
@@ -679,6 +683,17 @@ ContentSubresourceFilterThrottleManager::
throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
ad_tagging_state);
}
+
+ const GURL& url(navigation_handle.GetURL());
+ const GURL& url(navigation_handle->GetURL());
+ if (profile_context_->settings_manager()->GetSitePermission(url) != CONTENT_SETTING_ALLOW) {
+ subresource_filter::ActivationDecision ignored_decision;
+ mojom::ActivationState ad_filtering_state;
+ ad_filtering_state.activation_level = profile_interaction_manager_->OnPageActivationComputed(
+ &navigation_handle, mojom::ActivationLevel::kEnabled, &ignored_decision);
+ navigation_handle, mojom::ActivationLevel::kEnabled, &ignored_decision);
+ throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
+ ad_filtering_state);
+ }
@@ -1623,7 +1612,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h
--- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h
+++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h
@@ -410,6 +410,8 @@ class ContentSubresourceFilterThrottleManager
@@ -414,6 +414,8 @@ class ContentSubresourceFilterThrottleManager
std::unique_ptr<ProfileInteractionManager> profile_interaction_manager_;
@@ -1632,10 +1621,10 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
// Unowned since the throttle manager cannot outlive the Page that owns it.
// The throttle manager is held as user data first on NavigationHandle, then
// transferred to Page once it is created. Once the Page is created and this
diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc
--- a/components/subresource_filter/content/browser/ruleset_service.cc
+++ b/components/subresource_filter/content/browser/ruleset_service.cc
@@ -50,12 +50,7 @@ namespace {
diff --git a/components/subresource_filter/content/shared/browser/ruleset_service.cc b/components/subresource_filter/content/shared/browser/ruleset_service.cc
--- a/components/subresource_filter/content/shared/browser/ruleset_service.cc
+++ b/components/subresource_filter/content/shared/browser/ruleset_service.cc
@@ -51,12 +51,7 @@ namespace {
void RecordIndexAndWriteRulesetResult(
std::string_view uma_tag,
RulesetService::IndexAndWriteRulesetResult result) {
@@ -1649,22 +1638,23 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
}
// Implements operations on a `sentinel file`, which is used as a safeguard to
@@ -237,11 +232,13 @@ RulesetService::RulesetService(
@@ -237,10 +232,13 @@ RulesetService::RulesetService(
RulesetService::~RulesetService() = default;
void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
- const UnindexedRulesetInfo& unindexed_ruleset_info) {
- if (unindexed_ruleset_info.content_version.empty())
+ const UnindexedRulesetInfo& unindexed_ruleset_info, bool ignore_recent_version) {
if (unindexed_ruleset_info.content_version.empty()) {
+ if (unindexed_ruleset_info.content_version.empty()) {
+ LOG(INFO) << "RulesetService: ignoring update with empty version.";
return;
}
+ }
+ if (!ignore_recent_version) {
// Trying to store a ruleset with the same version for a second time would
// not only be futile, but would fail on Windows due to "File System
// Tunneling" as long as the previously stored copy of the rules is still
@@ -251,13 +248,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
@@ -250,13 +248,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
if (most_recently_indexed_version.IsCurrentFormatVersion() &&
most_recently_indexed_version.content_version ==
unindexed_ruleset_info.content_version) {
@@ -1681,7 +1671,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
return;
}
@@ -277,6 +277,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
@@ -276,6 +277,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
const RulesetConfig& config,
const base::FilePath& indexed_ruleset_base_dir,
const UnindexedRulesetInfo& unindexed_ruleset_info) {
@@ -1705,7 +1695,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK);
@@ -284,6 +301,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
@@ -283,6 +301,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
unindexed_ruleset_info);
if (!unindexed_ruleset_stream_generator.ruleset_stream()) {
@@ -1713,7 +1703,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
RecordIndexAndWriteRulesetResult(
config.uma_tag,
IndexAndWriteRulesetResult::kFailedOpeningUnindexedRuleset);
@@ -298,6 +316,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
@@ -297,6 +316,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
indexed_ruleset_base_dir, indexed_version);
if (!base::CreateDirectory(indexed_ruleset_version_dir)) {
@@ -1721,7 +1711,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
RecordIndexAndWriteRulesetResult(
config.uma_tag, IndexAndWriteRulesetResult::kFailedCreatingVersionDir);
return IndexedRulesetVersion(config.filter_tag);
@@ -305,13 +324,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
@@ -304,13 +324,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
SentinelFile sentinel_file(indexed_ruleset_version_dir);
if (sentinel_file.IsPresent()) {
@@ -1737,7 +1727,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
RecordIndexAndWriteRulesetResult(
config.uma_tag,
IndexAndWriteRulesetResult::kFailedCreatingSentinelFile);
@@ -326,6 +343,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
@@ -325,6 +343,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
RulesetIndexer indexer;
if (!(*g_index_ruleset_func)(config, &unindexed_ruleset_stream_generator,
&indexer)) {
@@ -1745,7 +1735,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
RecordIndexAndWriteRulesetResult(
config.uma_tag,
IndexAndWriteRulesetResult::kFailedParsingUnindexedRuleset);
@@ -346,9 +364,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
@@ -345,9 +364,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
unindexed_ruleset_info.license_path, indexer.data());
RecordIndexAndWriteRulesetResult(config.uma_tag, result);
if (result != IndexAndWriteRulesetResult::kSuccess) {
@@ -1755,20 +1745,20 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
+ LOG(INFO) << "RulesetService: successful parsing.";
+
CHECK(indexed_version.IsValid());
CHECK(indexed_version.IsValid(), base::NotFatalUntil::M129);
return indexed_version;
}
@@ -472,6 +493,7 @@ void RulesetService::IndexAndStoreRuleset(
@@ -470,6 +492,7 @@ void RulesetService::IndexAndStoreRuleset(
void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback,
const IndexedRulesetVersion& version) {
CHECK(!result_callback.is_null());
CHECK(!result_callback.is_null(), base::NotFatalUntil::M129);
+ LOG(INFO) << "RulesetService: valid version: " << version.IsValid();
if (!version.IsValid()) {
if (!version.IsValid())
return;
}
diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h
--- a/components/subresource_filter/content/browser/ruleset_service.h
+++ b/components/subresource_filter/content/browser/ruleset_service.h
version.SaveToPrefs(local_state_);
diff --git a/components/subresource_filter/content/shared/browser/ruleset_service.h b/components/subresource_filter/content/shared/browser/ruleset_service.h
--- a/components/subresource_filter/content/shared/browser/ruleset_service.h
+++ b/components/subresource_filter/content/shared/browser/ruleset_service.h
@@ -183,7 +183,7 @@ class RulesetService {
//
// Virtual so that it can be mocked out in tests.
@@ -1791,10 +1781,10 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c
// Reads the rules via the |unindexed_ruleset_stream_generator|, and indexes
// them using |indexer|. Returns whether the entire ruleset could be parsed.
static bool IndexRuleset(
diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc b/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc
--- a/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc
+++ b/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc
@@ -12,6 +12,7 @@
diff --git a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc
--- a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc
+++ b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc
@@ -13,6 +13,7 @@
#include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h"
#include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h"
#include "ui/base/resource/resource_bundle.h"
@@ -1802,7 +1792,7 @@ diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_str
namespace subresource_filter {
@@ -46,6 +47,8 @@ void UnindexedRulesetStreamGenerator::GenerateStreamFromFile(
@@ -49,6 +50,8 @@ void UnindexedRulesetStreamGenerator::GenerateStreamFromFile(
ruleset_size_ = unindexed_ruleset_file.GetLength();
@@ -1814,7 +1804,7 @@ diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_str
diff --git a/components/subresource_filter/core/browser/ruleset_version.h b/components/subresource_filter/core/browser/ruleset_version.h
--- a/components/subresource_filter/core/browser/ruleset_version.h
+++ b/components/subresource_filter/core/browser/ruleset_version.h
@@ -53,6 +53,10 @@ struct UnindexedRulesetInfo {
@@ -54,6 +54,10 @@ struct UnindexedRulesetInfo {
// can be indicated not only by setting |license_path| to empty, but also by
// setting it to any non existent path.
base::FilePath license_path;
@@ -1828,7 +1818,7 @@ diff --git a/components/subresource_filter/core/browser/ruleset_version.h b/comp
diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc
--- a/components/subresource_filter/core/browser/subresource_filter_features.cc
+++ b/components/subresource_filter/core/browser/subresource_filter_features.cc
@@ -54,75 +54,8 @@ class CommaSeparatedStrings {
@@ -55,71 +55,8 @@ class CommaSeparatedStrings {
const std::vector<std::string_view> pieces_;
};
@@ -1836,9 +1826,8 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
- std::map<std::string, std::string>* params,
- const std::string& key) {
- auto it = params->find(key);
- if (it == params->end()) {
- if (it == params->end())
- return std::string();
- }
- std::string value = std::move(it->second);
- params->erase(it);
- return value;
@@ -1846,23 +1835,21 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
-
-mojom::ActivationLevel ParseActivationLevel(std::string_view activation_level) {
- if (base::EqualsCaseInsensitiveASCII(activation_level,
- kActivationLevelEnabled)) {
- kActivationLevelEnabled))
- return mojom::ActivationLevel::kEnabled;
- } else if (base::EqualsCaseInsensitiveASCII(activation_level,
- kActivationLevelDryRun)) {
- else if (base::EqualsCaseInsensitiveASCII(activation_level,
- kActivationLevelDryRun))
- return mojom::ActivationLevel::kDryRun;
- }
- return mojom::ActivationLevel::kDisabled;
-}
-
-ActivationScope ParseActivationScope(std::string_view activation_scope) {
- if (base::EqualsCaseInsensitiveASCII(activation_scope,
- kActivationScopeAllSites)) {
- kActivationScopeAllSites))
- return ActivationScope::ALL_SITES;
- } else if (base::EqualsCaseInsensitiveASCII(activation_scope,
- kActivationScopeActivationList)) {
- else if (base::EqualsCaseInsensitiveASCII(activation_scope,
- kActivationScopeActivationList))
- return ActivationScope::ACTIVATION_LIST;
- }
- return ActivationScope::NO_SITES;
-}
-
@@ -1887,9 +1874,8 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
-// Will return a value between 0 and 1 inclusive.
-double ParsePerformanceMeasurementRate(const std::string& rate) {
- double value = 0.0;
- if (!base::StringToDouble(rate, &value) || value < 0) {
- if (!base::StringToDouble(rate, &value) || value < 0)
- return 0.0;
- }
- return value < 1 ? value : 1;
-}
-
@@ -1898,14 +1884,14 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
- base::StringToInt(value, &result);
- return result;
-}
-
std::vector<Configuration> FillEnabledPresetConfigurations(
-std::vector<Configuration> FillEnabledPresetConfigurations(
- std::map<std::string, std::string>* params) {
+ /*std::map<std::string, std::string>* params*/) {
+std::vector<Configuration> FillEnabledPresetConfigurations() {
// If ad tagging is enabled, turn on the dryrun automatically.
bool ad_tagging_enabled = base::FeatureList::IsEnabled(kAdTagging);
const struct {
@@ -130,23 +63,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
@@ -127,23 +64,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
bool enabled_by_default;
Configuration (*factory_method)();
} kAvailablePresetConfigurations[] = {
@@ -1931,7 +1917,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
enabled_configurations.push_back(available_preset.factory_method());
}
}
@@ -154,48 +80,12 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
@@ -151,46 +81,10 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
return enabled_configurations;
}
@@ -1970,17 +1956,15 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
- base::GetFieldTrialParamsByFeature(kSafeBrowsingSubresourceFilter, &params);
-
std::vector<Configuration> configs;
if (base::FeatureList::IsEnabled(kSafeBrowsingSubresourceFilter)) {
if (base::FeatureList::IsEnabled(kSafeBrowsingSubresourceFilter))
- configs = FillEnabledPresetConfigurations(&params);
+ configs = FillEnabledPresetConfigurations();
}
-
- Configuration experimental_config = ParseExperimentalConfiguration(&params);
- configs.push_back(std::move(experimental_config));
-
+ configs = FillEnabledPresetConfigurations();
return configs;
}
diff --git a/components/subresource_filter/core/browser/verified_ruleset_dealer.cc b/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
--- a/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
+++ b/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
@@ -1989,10 +1973,10 @@ diff --git a/components/subresource_filter/core/browser/verified_ruleset_dealer.
#include "base/functional/callback_helpers.h"
#include "base/location.h"
+#include "base/logging.h"
#include "base/not_fatal_until.h"
#include "base/notreached.h"
#include "base/task/sequenced_task_runner.h"
#include "base/trace_event/trace_event.h"
@@ -39,6 +40,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile(
@@ -40,6 +41,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile(
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
"VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",
file->IsValid());
@@ -2005,14 +1989,14 @@ diff --git a/components/subresource_filter/core/browser/verified_ruleset_dealer.
diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/components/subresource_filter/core/common/indexed_ruleset.cc
--- a/components/subresource_filter/core/common/indexed_ruleset.cc
+++ b/components/subresource_filter/core/common/indexed_ruleset.cc
@@ -7,6 +7,7 @@
@@ -6,6 +6,7 @@
#include "base/check.h"
#include "base/functional/callback.h"
#include "base/hash/hash.h"
+#include "base/logging.h"
#include "base/metrics/histogram_functions.h"
#include "base/not_fatal_until.h"
#include "base/strings/strcat.h"
#include "base/trace_event/trace_event.h"
@@ -38,7 +39,9 @@ VerifyStatus GetVerifyStatus(base::span<const uint8_t> buffer,
// least once. The verifier detects a subset of the errors detected by the
// checksum, and is unneeded once expected_checksum is consistently nonzero.
@@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/ui/views/toolbar/reload_button.cc
--- a/chrome/browser/ui/views/toolbar/reload_button.cc
+++ b/chrome/browser/ui/views/toolbar/reload_button.cc
@@ -284,6 +284,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) {
@@ -226,6 +226,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) {
command = IDC_RELOAD;
}
@@ -33,9 +33,9 @@ diff --git a/chrome/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/u
diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
--- a/ui/views/widget/widget.h
+++ b/ui/views/widget/widget.h
@@ -1481,6 +1481,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
// initialized.
void SaveWindowPlacementIfNeeded();
@@ -1362,6 +1362,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
void UpdateAccessibleNameForRootView();
void UpdateAccessibleURLForRootView(const GURL& url);
+ // Type of ways to ignore activation changes.
+ enum class DisableActivationChangeHandlingType {
@@ -53,8 +53,8 @@ diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
protected:
// Creates the RootView to be used within this Widget. Subclasses may override
// to create custom RootViews that do specialized event processing.
@@ -1521,13 +1534,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
void set_widget_closed() { widget_closed_ = true; }
@@ -1400,13 +1413,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
ui::ColorProviderKey GetColorProviderKey() const override;
private:
- // Type of ways to ignore activation changes.
@@ -67,7 +67,7 @@ diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
class PaintAsActiveLockImpl;
friend class ButtonTest;
@@ -1538,11 +1544,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
@@ -1417,11 +1423,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
friend class ui_devtools::BubbleLocking;
friend void DisableActivationChangeHandlingForTests();
+20 -53
View File
@@ -6,37 +6,24 @@ In site settings added ability to block all popups per site
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../settings/site_settings/popups_page.html | 2 +
.../tab_under_navigation_throttle.cc | 11 +-
.../android/popup_blocked_message_delegate.cc | 20 ++-
.../android/popup_blocked_message_delegate.cc | 20 +++-
.../android/popup_blocked_message_delegate.h | 1 +
components/blocked_content/popup_blocker.cc | 3 +
components/blocked_content_strings.grdp | 3 +
.../impl/BromitePopupContentSetting.java | 115 ++++++++++++++++++
.../bromite_content_settings/popups.grdp | 18 +++
.../bromite_content_settings/popups.inc | 13 ++
.../impl/BromitePopupContentSetting.java | 106 ++++++++++++++++++
.../bromite_content_settings/popups.grdp | 12 ++
.../bromite_content_settings/popups.inc | 8 ++
.../core/browser/content_settings_registry.cc | 2 +-
10 files changed, 182 insertions(+), 6 deletions(-)
9 files changed, 160 insertions(+), 6 deletions(-)
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
create mode 100644 components/browser_ui/strings/bromite_content_settings/popups.grdp
create mode 100644 components/content_settings/core/browser/bromite_content_settings/popups.inc
diff --git a/chrome/browser/resources/settings/site_settings/popups_page.html b/chrome/browser/resources/settings/site_settings/popups_page.html
--- a/chrome/browser/resources/settings/site_settings/popups_page.html
+++ b/chrome/browser/resources/settings/site_settings/popups_page.html
@@ -10,6 +10,8 @@
category="[[contentSettingsTypesEnum_.POPUPS]]"
allow-option-label="$i18n{siteSettingsPopupsAllowed}"
allow-option-icon="cr:open-in-new"
+ ask-option-label="$i18n{brSiteSettingspopupsAsk}"
+ ask-option-icon="privacy:open-in-new-off"
block-option-label="$i18n{siteSettingsPopupsBlocked}"
block-option-icon="privacy:open-in-new-off">
</settings-category-default-radio-group>
diff --git a/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc b/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc
--- a/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc
+++ b/chrome/browser/ui/blocked_content/tab_under_navigation_throttle.cc
@@ -143,9 +143,14 @@ TabUnderNavigationThrottle::MaybeBlockNavigation() {
@@ -142,9 +142,14 @@ TabUnderNavigationThrottle::MaybeBlockNavigation() {
LogTabUnderAttempt(navigation_handle());
@@ -146,7 +133,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
@@ -0,0 +1,115 @@
@@ -0,0 +1,106 @@
+/*
+ This file is part of Bromite.
+
@@ -173,7 +160,7 @@ new file mode 100644
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
+import org.chromium.components.content_settings.ContentSetting;
+import org.chromium.components.content_settings.ContentSettingValues;
+import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.content_public.browser.BrowserContextHandle;
+
@@ -186,8 +173,8 @@ new file mode 100644
+public class BromitePopupContentSetting extends BromiteCustomContentSetting {
+ public BromitePopupContentSetting() {
+ super(/*contentSettingsType*/ ContentSettingsType.POPUPS,
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
+ /*allowException*/ true,
+ /*preferenceKey*/ "popups",
+ /*profilePrefKey*/ "popups");
@@ -206,13 +193,13 @@ new file mode 100644
+ }
+
+ @Override
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
+ switch (value) {
+ case ContentSetting.ALLOW:
+ case ContentSettingValues.ALLOW:
+ return R.string.website_settings_category_popup_allowed;
+ case ContentSetting.BLOCK:
+ case ContentSettingValues.BLOCK:
+ return R.string.website_settings_category_popup_blocked;
+ case ContentSetting.ASK:
+ case ContentSettingValues.ASK:
+ return R.string.website_settings_category_popup_block_all;
+ default:
+ return 0;
@@ -239,15 +226,6 @@ new file mode 100644
+ }
+
+ @Override
+ public int[] getTriStateSettingIconIDs() {
+ return new int[] {
+ R.drawable.permission_popups,
+ R.drawable.permission_popups,
+ R.drawable.sensors_off_24px
+ };
+ }
+
+ @Override
+ public boolean showOnlyDescriptions() {
+ return true;
+ }
@@ -258,23 +236,17 @@ new file mode 100644
+ }
+
+ @Override
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
+ return ContentSetting.ALLOW != value;
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
+ return ContentSettingValues.ALLOW != value;
+ }
+}
diff --git a/components/browser_ui/strings/bromite_content_settings/popups.grdp b/components/browser_ui/strings/bromite_content_settings/popups.grdp
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/strings/bromite_content_settings/popups.grdp
@@ -0,0 +1,18 @@
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP" desc="" formatter_data="android_java">
+ Block sites from showing pop-ups and redirects
+ </message>
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_DESCRIPTION" desc="" formatter_data="android_java">
+ When on, sites can use pop-ups and redirects. When off, sites cant use pop-ups and redirects.
+ </message>
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL" desc="" formatter_data="android_java">
+ Block all popups
+ </message>
@@ -289,24 +261,19 @@ diff --git a/components/content_settings/core/browser/bromite_content_settings/p
new file mode 100644
--- /dev/null
+++ b/components/content_settings/core/browser/bromite_content_settings/popups.inc
@@ -0,0 +1,13 @@
@@ -0,0 +1,8 @@
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::POPUPS)
+ ->set_show_into_info_page()
+ .set_desktop_ui()
+ .set_is_renderer_content_setting()
+ .set_title_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP)
+ .set_description_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_DESCRIPTION)
+ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_ALLOWED)
+ .set_ask_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL)
+ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED)
+ .set_allowed_exceptions_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_ALLOWED)
+ .set_blocked_exceptions_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED)
+ .set_mid_sentence_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP);
+ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED);
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -139,7 +139,7 @@ void ContentSettingsRegistry::Init() {
@@ -134,7 +134,7 @@ void ContentSettingsRegistry::Init() {
WebsiteSettingsInfo::SYNCABLE,
/*allowlisted_primary_schemes=*/
{kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme},
File diff suppressed because it is too large Load Diff
@@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/services/network/cors/preflight_cache.cc b/services/network/cors/preflight_cache.cc
--- a/services/network/cors/preflight_cache.cc
+++ b/services/network/cors/preflight_cache.cc
@@ -197,6 +197,10 @@ void PreflightCache::MayPurgeForTesting(size_t max_entries, size_t purge_unit) {
@@ -200,6 +200,10 @@ void PreflightCache::MayPurgeForTesting(size_t max_entries, size_t purge_unit) {
MayPurge(max_entries, purge_unit);
}
@@ -29,7 +29,7 @@ diff --git a/services/network/cors/preflight_cache.cc b/services/network/cors/pr
diff --git a/services/network/cors/preflight_cache.h b/services/network/cors/preflight_cache.h
--- a/services/network/cors/preflight_cache.h
+++ b/services/network/cors/preflight_cache.h
@@ -75,6 +75,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightCache final {
@@ -78,6 +78,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightCache final {
// `max_entries` for testing.
void MayPurgeForTesting(size_t max_entries, size_t purge_unit);
@@ -41,7 +41,7 @@ diff --git a/services/network/cors/preflight_cache.h b/services/network/cors/pre
diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc
--- a/services/network/cors/preflight_controller.cc
+++ b/services/network/cors/preflight_controller.cc
@@ -631,6 +631,10 @@ void PreflightController::ClearCorsPreflightCache(
@@ -835,6 +835,10 @@ void PreflightController::ClearCorsPreflightCache(
cache_.ClearCache(std::move(url_filter));
}
@@ -51,13 +51,13 @@ diff --git a/services/network/cors/preflight_controller.cc b/services/network/co
+
void PreflightController::RemoveLoader(PreflightLoader* loader) {
auto it = loaders_.find(loader);
CHECK(it != loaders_.end());
CHECK(it != loaders_.end(), base::NotFatalUntil::M130);
diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h
--- a/services/network/cors/preflight_controller.h
+++ b/services/network/cors/preflight_controller.h
@@ -117,6 +117,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final {
mojo::PendingRemote<mojom::URLLoaderNetworkServiceObserver>
url_loader_network_service_observer);
@@ -157,6 +157,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final {
url_loader_network_service_observer,
const PreflightMode& preflight_mode);
+ void ClearCache();
+
@@ -79,12 +79,12 @@ diff --git a/services/network/cors/preflight_result.cc b/services/network/cors/p
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1379,6 +1379,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time,
@@ -1320,6 +1320,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time,
base::Time end_time,
mojom::ClearDataFilterPtr filter,
ClearHttpCacheCallback callback) {
+ cors_preflight_controller_.ClearCache();
if (base::FeatureList::IsEnabled(net::features::kLogicalClearHttpCache)) {
net::HttpCache* cache =
url_request_context_->http_transaction_factory()->GetCache();
// It's safe to use Unretained below as the HttpCacheDataRemover is owned by
// |this| and guarantees it won't call its callback if deleted.
http_cache_data_removers_.push_back(HttpCacheDataRemover::CreateAndStart(
--
+92 -120
View File
@@ -7,65 +7,30 @@ Use Google Chrome branding for client hints
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../SupportLibWebViewChromiumFactory.java | 2 +-
components/client_hints/browser/client_hints.cc | 5 +++--
components/embedder_support/user_agent_utils.cc | 5 ++---
content/browser/client_hints/client_hints.cc | 17 +++++++++++++++--
.../about_flags_cc/Client-hints-overrides.inc | 9 +++++++++
.../features_cc/Client-hints-overrides.inc | 1 +
.../cpp/features_cc/Client-hints-overrides.inc | 1 +
net/http/http_network_transaction.cc | 1 +
services/network/public/cpp/client_hints.cc | 2 +-
.../blink/common/client_hints/client_hints.cc | 6 ++++--
.../common/client_hints/enabled_client_hints.cc | 8 ++++++++
.../blink/renderer/core/frame/navigator_ua.idl | 4 +++-
.../renderer/core/frame/navigator_ua_data.cc | 1 +
.../renderer/core/frame/navigator_ua_data.idl | 5 ++++-
.../renderer/core/loader/frame_fetch_context.cc | 4 +++-
.../platform/runtime_enabled_features.json5 | 8 ++++++--
16 files changed, 63 insertions(+), 16 deletions(-)
components/embedder_support/user_agent_utils.cc | 4 +---
content/browser/client_hints/client_hints.cc | 15 ++++++++++-----
.../browser/loader/navigation_url_loader_impl.cc | 5 +++++
.../about_flags_cc/Client-hints-overrides.inc | 9 +++++++++
.../common/features_cc/Client-hints-overrides.inc | 1 +
.../cpp/features_cc/Client-hints-overrides.inc | 1 +
net/http/http_network_transaction.cc | 1 +
services/network/public/cpp/client_hints.cc | 1 +
.../blink/common/client_hints/client_hints.cc | 6 ++++--
.../common/client_hints/enabled_client_hints.cc | 6 ++++++
.../blink/renderer/core/frame/navigator_ua.idl | 4 +++-
.../renderer/core/frame/navigator_ua_data.cc | 1 +
.../renderer/core/frame/navigator_ua_data.idl | 5 ++++-
.../renderer/core/loader/frame_fetch_context.cc | 4 +++-
.../platform/runtime_enabled_features.json5 | 8 ++++++--
15 files changed, 56 insertions(+), 15 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Client-hints-overrides.inc
create mode 100644 cromite_flags/content/common/features_cc/Client-hints-overrides.inc
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc
diff --git a/android_webview/support_library/java/src/org/chromium/support_lib_glue/SupportLibWebViewChromiumFactory.java b/android_webview/support_library/java/src/org/chromium/support_lib_glue/SupportLibWebViewChromiumFactory.java
--- a/android_webview/support_library/java/src/org/chromium/support_lib_glue/SupportLibWebViewChromiumFactory.java
+++ b/android_webview/support_library/java/src/org/chromium/support_lib_glue/SupportLibWebViewChromiumFactory.java
@@ -99,7 +99,7 @@ public class SupportLibWebViewChromiumFactory implements WebViewProviderFactoryB
Features.GET_COOKIE_INFO,
Features.WEB_MESSAGE_ARRAY_BUFFER,
Features.IMAGE_DRAG_DROP,
- Features.USER_AGENT_METADATA,
+ // Features.USER_AGENT_METADATA,
Features.MULTI_PROFILE,
Features.ATTRIBUTION_BEHAVIOR,
Features.WEBVIEW_MEDIA_INTEGRITY_API_STATUS,
diff --git a/components/client_hints/browser/client_hints.cc b/components/client_hints/browser/client_hints.cc
--- a/components/client_hints/browser/client_hints.cc
+++ b/components/client_hints/browser/client_hints.cc
@@ -35,7 +35,7 @@ ParseInitializeClientHintsStorage() {
auto results =
base::flat_map<url::Origin,
std::vector<network::mojom::WebClientHintsType>>();
-
+ if ((true)) return results;
std::string raw_client_hint_json =
base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
switches::kInitializeClientHintsStorage);
@@ -200,7 +200,8 @@ void ClientHints::PersistClientHints(
// TODO(tbansal): crbug.com/735518. Disable updates to client hints settings
// when cookies are disabled for |primary_origin|.
content_settings::ContentSettingConstraints constraints;
- constraints.set_session_model(content_settings::mojom::SessionModel::DURABLE);
+ constraints.set_session_model(content_settings::mojom::SessionModel::USER_SESSION);
+ constraints.set_lifetime(base::Minutes(1));
settings_map_->SetWebsiteSettingDefaultScope(
primary_url, GURL(), ContentSettingsType::CLIENT_HINTS,
base::Value(std::move(client_hints_dictionary)), constraints);
diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc
--- a/components/embedder_support/user_agent_utils.cc
+++ b/components/embedder_support/user_agent_utils.cc
@@ -163,9 +163,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
@@ -188,9 +188,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
bool parse_result = base::StringToInt(major_version, &major_version_number);
DCHECK(parse_result);
std::optional<std::string> brand;
@@ -76,57 +41,67 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
std::string brand_version =
output_version_type == blink::UserAgentBrandVersionType::kFullVersion
@@ -662,6 +660,7 @@ blink::UserAgentMetadata GetUserAgentMetadata(bool only_low_entropy_ch) {
}
// High entropy client hints.
+ if ((true)) return metadata;
metadata.brand_full_version_list =
GetUserAgentBrandFullVersionListInternal(std::nullopt);
metadata.full_version = std::string(version_info::GetVersionNumber());
diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc
--- a/content/browser/client_hints/client_hints.cc
+++ b/content/browser/client_hints/client_hints.cc
@@ -57,6 +57,7 @@
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/page/page_zoom.h"
@@ -60,6 +60,7 @@
#include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h"
#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
#include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "url/origin.h"
@@ -601,10 +602,21 @@ bool IsClientHintEnabled(const ClientHintsExtendedData& data,
bool IsClientHintAllowed(const ClientHintsExtendedData& data,
WebClientHintsType type) {
+ if (!blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled())
+ return false;
+
+ bool allowed = false;
+ if (type == WebClientHintsType::kUA ||
+ type == WebClientHintsType::kUAMobile ||
+ type == WebClientHintsType::kUAPlatform ||
+ type == WebClientHintsType::kUAModel ||
+ type == WebClientHintsType::kUAPlatformVersion) {
+ allowed = true;
+ }
if (data.is_outermost_main_frame) {
- return true;
+ return allowed;
@@ -704,7 +705,8 @@ void UpdateNavigationRequestClientUaHeadersImpl(
// value, disable them. This overwrites previous decision from UI.
disable_due_to_custom_ua = !ua_metadata.has_value();
}
- return (data.permissions_policy->IsFeatureEnabledForOrigin(
+ return ((false)) && (data.permissions_policy->IsFeatureEnabledForOrigin(
network::GetClientHintToPolicyFeatureMap().at(type),
data.resource_origin));
}
@@ -629,6 +641,7 @@ bool IsJavascriptEnabled(FrameTreeNode* frame_tree_node) {
void UpdateIFramePermissionsPolicyWithDelegationSupportForClientHints(
ClientHintsExtendedData& data,
const network::ParsedPermissionsPolicy& container_policy) {
+ if ((true)) return;
if (container_policy.empty()) {
-
+ if (!blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled())
+ disable_due_to_custom_ua = true;
if (!disable_due_to_custom_ua) {
if (!ua_metadata.has_value())
ua_metadata = delegate->GetUserAgentMetadata();
@@ -886,10 +888,12 @@ void AddRequestClientHintsHeaders(
AddEctHeader(headers, network_quality_tracker, url);
}
- UpdateNavigationRequestClientUaHeadersImpl(
- delegate, is_ua_override_on, frame_tree_node,
- ClientUaHeaderCallType::kDuringCreation, headers, container_policy,
- request_url, data);
+ if (blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled()) {
+ UpdateNavigationRequestClientUaHeadersImpl(
+ delegate, is_ua_override_on, frame_tree_node,
+ ClientUaHeaderCallType::kDuringCreation, headers, container_policy,
+ request_url, data);
+ }
if (ShouldAddClientHint(data, WebClientHintsType::kPrefersColorScheme)) {
AddPrefersColorSchemeHeader(headers, frame_tree_node);
@@ -975,6 +979,7 @@ ParseAndPersistAcceptCHForNavigation(
BrowserContext* context,
ClientHintsControllerDelegate* delegate,
FrameTreeNode* frame_tree_node) {
+ if ((true)) return std::nullopt;
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(context);
DCHECK(parsed_headers);
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -1301,6 +1301,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
return;
}
+ if (!base::FeatureList::IsEnabled(network::features::kAcceptCHFrame)) {
+ std::move(callback).Run(net::OK);
+ return;
+ }
+
LogAcceptCHFrameStatus(AcceptCHFrameRestart::kFramePresent);
// Given that this is happening in the middle of navigation, there should
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Client-hints-overrides.inc b/cromite_flags/chrome/browser/about_flags_cc/Client-hints-overrides.inc
new file mode 100644
--- /dev/null
@@ -146,17 +121,17 @@ new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/common/features_cc/Client-hints-overrides.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_ENABLED(kCriticalClientHint);
+SET_CROMITE_FEATURE_DISABLED(kCriticalClientHint);
diff --git a/cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc b/cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_ENABLED(kAcceptCHFrame);
+SET_CROMITE_FEATURE_DISABLED(kAcceptCHFrame);
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -119,6 +119,7 @@ const size_t kMaxRestarts = 32;
@@ -109,6 +109,7 @@ const size_t kMaxRestarts = 32;
// Returns true when Early Hints are allowed on the given protocol.
bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) {
@@ -167,12 +142,11 @@ diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transa
diff --git a/services/network/public/cpp/client_hints.cc b/services/network/public/cpp/client_hints.cc
--- a/services/network/public/cpp/client_hints.cc
+++ b/services/network/public/cpp/client_hints.cc
@@ -111,7 +111,7 @@ const DecodeMap& GetDecodeMap() {
} // namespace
@@ -112,6 +112,7 @@ const DecodeMap& GetDecodeMap() {
std::optional<std::vector<network::mojom::WebClientHintsType>>
-ParseClientHintsHeader(const std::string& header) {
+ParseClientHintsHeader(const std::string& header) { // Parse Client Hints Header
ParseClientHintsHeader(const std::string& header) {
+ if ((true)) return std::nullopt;
// Accept-CH is an sh-list of tokens; see:
// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1
std::optional<net::structured_headers::List> maybe_list =
@@ -182,12 +156,12 @@ diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party
@@ -14,6 +14,7 @@
#include "base/strings/string_util.h"
#include "services/network/public/cpp/client_hints.h"
#include "services/network/public/cpp/permissions_policy/client_hints_permissions_policy_mapping.h"
+#include "third_party/blink/public/common/features_generated.h"
#include "services/network/public/cpp/permissions_policy/permissions_policy.h"
#include "third_party/blink/public/common/features.h"
+#include "third_party/blink/public/common/features_generated.h"
#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
#include "url/origin.h"
@@ -22,11 +23,12 @@ namespace blink {
@@ -108,11 +109,12 @@ const PolicyFeatureToClientHintMap& GetPolicyFeatureToClientHintMap() {
bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type) {
switch (type) {
@@ -205,15 +179,13 @@ diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party
diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/third_party/blink/common/client_hints/enabled_client_hints.cc
--- a/third_party/blink/common/client_hints/enabled_client_hints.cc
+++ b/third_party/blink/common/client_hints/enabled_client_hints.cc
@@ -15,6 +15,14 @@ namespace {
@@ -15,6 +15,12 @@ namespace {
using ::network::mojom::WebClientHintsType;
bool IsDisabledByFeature(const WebClientHintsType type) {
+ if (type == WebClientHintsType::kUA ||
+ type == WebClientHintsType::kUAMobile ||
+ type == WebClientHintsType::kUAPlatform ||
+ type == WebClientHintsType::kUAModel ||
+ type == WebClientHintsType::kUAPlatformVersion) {
+ type == WebClientHintsType::kUAPlatform) {
+ return false;
+ }
+ if ((true)) return true;
@@ -236,7 +208,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua.idl b/third_part
diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_party/blink/renderer/core/frame/navigator_ua_data.cc
--- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc
@@ -114,6 +114,7 @@ const String& NavigatorUAData::platform() const {
@@ -186,6 +186,7 @@ const String& NavigatorUAData::platform() const {
}
bool AllowedToCollectHighEntropyValues(ExecutionContext* execution_context) {
@@ -256,13 +228,13 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third
+ RuntimeEnabled=UserAgentClientHint,
+ Exposed=(Window,Worker)
+] interface NavigatorUAData {
[MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray<NavigatorUABrandVersion> brands;
[MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile;
[MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform;
[HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray<NavigatorUABrandVersion> brands;
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile;
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform;
diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
@@ -233,6 +233,8 @@ bool ShouldSendClientHint(const network::PermissionsPolicy& policy,
@@ -217,6 +217,8 @@ bool ShouldSendClientHint(const PermissionsPolicy& policy,
bool is_1p_origin,
network::mojom::blink::WebClientHintsType type,
const ClientHintsPreferences& hints_preferences) {
@@ -271,7 +243,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
// For subresource requests, sending the hint in the fetch request based on
// the permissions policy.
if (!policy.IsFeatureEnabledForOrigin(
@@ -731,7 +733,7 @@ void FrameFetchContext::AddClientHintsIfNecessary(
@@ -610,7 +612,7 @@ void FrameFetchContext::AddClientHintsIfNecessary(
}
// Only send User Agent hints if the info is available
@@ -283,9 +255,9 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -647,6 +647,11 @@
name: "AriaNotifyV2",
status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"},
@@ -438,6 +438,11 @@
name: "AriaNotify",
status: "test",
},
+ {
+ name: "UserAgentClientHint",
@@ -295,14 +267,14 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5
{
name: "AriaRowColIndexText",
status: "stable",
@@ -1085,8 +1090,7 @@
@@ -804,8 +809,7 @@
// Allows top-level sites to restrict collection of high-entropy UA client
// hints (from 3Ps, or itself) via the getHighEntropyValues API.
// crbug.com/385161047
- name: "ClientHintUAHighEntropyValuesPermissionPolicy",
- status: "stable",
- status: "test",
+ name: "ClientHintUAHighEntropyValuesPermissionPolicy", // disabled by default
},
{
// Enables clipboardchange event API for listening for changes to the
// This ensures that clipboard event fires on a target node which is
// focused in case no visible selection is present.
--
@@ -9,12 +9,12 @@ No change in doh connections.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../browser/network_session_configurator.cc | 12 ++++--------
.../browser/network_session_configurator.cc | 11 ++++-------
.../about_flags_cc/Close-Sessions-On-Ip-Change.inc | 14 ++++++++++++++
.../features_cc/Close-Sessions-On-Ip-Change.inc | 5 +++++
.../features_h/Close-Sessions-On-Ip-Change.inc | 3 +++
net/base/features.cc | 2 +-
5 files changed, 27 insertions(+), 9 deletions(-)
5 files changed, 27 insertions(+), 8 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Close-Sessions-On-Ip-Change.inc
create mode 100644 cromite_flags/net/base/features_cc/Close-Sessions-On-Ip-Change.inc
create mode 100644 cromite_flags/net/base/features_h/Close-Sessions-On-Ip-Change.inc
@@ -22,7 +22,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/components/network_session_configurator/browser/network_session_configurator.cc b/components/network_session_configurator/browser/network_session_configurator.cc
--- a/components/network_session_configurator/browser/network_session_configurator.cc
+++ b/components/network_session_configurator/browser/network_session_configurator.cc
@@ -221,9 +221,8 @@ quic::QuicTagVector GetQuicClientConnectionOptions(
@@ -220,9 +220,8 @@ quic::QuicTagVector GetQuicClientConnectionOptions(
bool ShouldQuicCloseSessionsOnIpChange(
const VariationParameters& quic_trial_params) {
@@ -34,15 +34,14 @@ diff --git a/components/network_session_configurator/browser/network_session_con
}
bool ShouldQuicGoAwaySessionsOnIpChange(
@@ -304,11 +303,8 @@ bool ShouldQuicEstimateInitialRtt(
@@ -303,10 +302,8 @@ bool ShouldQuicEstimateInitialRtt(
bool ShouldQuicMigrateSessionsOnNetworkChangeV2(
const VariationParameters& quic_trial_params) {
- return GetVariationBoolParamOrFeatureSetting(
- quic_trial_params, "migrate_sessions_on_network_change_v2",
- base::FeatureList::IsEnabled(
- net::features::kMigrateSessionsOnNetworkChangeV2),
- "true");
- net::features::kMigrateSessionsOnNetworkChangeV2));
+ return base::FeatureList::IsEnabled(
+ net::features::kMigrateSessionsOnNetworkChangeV2);
}
@@ -88,7 +87,7 @@ new file mode 100644
diff --git a/net/base/features.cc b/net/base/features.cc
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -294,7 +294,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, base::FEATURE_DISABLED_BY_DEFAULT);
@@ -485,7 +485,7 @@ const base::FeatureParam<bool> kIpPrivacyOnlyInIncognito{
// NetworkChangeNotifier::AreNetworkHandlesSupported).
#if BUILDFLAG(IS_ANDROID)
inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
@@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -600,6 +600,7 @@ template("chrome_common_apk_or_module_tmpl") {
@@ -663,6 +663,7 @@ template("chrome_common_apk_or_module_tmpl") {
[ "//components/crash/core/app:chrome_crashpad_handler_named_as_so" ]
loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ]
library_always_compress += [ "libchrome_crashpad_handler.so" ]
File diff suppressed because it is too large Load Diff
@@ -8,17 +8,17 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/android/chrome_java_resources.gni | 2 +-
.../android/java/res/xml/main_preferences.xml | 4 +-
.../res/xml/privacy_preferences_cromite.xml | 191 ++++++++++++++++++
.../privacy/settings/PrivacySettings.java | 6 +-
.../res/xml/privacy_preferences_cromite.xml | 197 ++++++++++++++++++
.../privacy/settings/PrivacySettings.java | 4 +-
.../Cromite-settings-ui.grdp | 15 ++
5 files changed, 213 insertions(+), 5 deletions(-)
5 files changed, 217 insertions(+), 5 deletions(-)
create mode 100644 chrome/android/java/res/xml/privacy_preferences_cromite.xml
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -663,7 +663,7 @@ chrome_java_resources = [
@@ -643,7 +643,7 @@ chrome_java_resources = [
"java/res/xml/manage_sync_preferences.xml",
"java/res/xml/personalize_google_services_preferences.xml",
"java/res/xml/incognito_preferences.xml",
@@ -30,16 +30,16 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -12,7 +12,7 @@ found in the LICENSE file.
android:key="settings_promo_card"
android:order="0" />
@@ -15,7 +15,7 @@ for the previous order (main_preferences_legacy). -->
<!-- `order=0` is reserved and it will be added in code. -->
<!-- TODO(crbug.com/364906215): Move SettingsPromoCardPreference here once SyncPromoPreference is removed -->
<PreferenceCategory
- android:key="account_and_google_services_section"
+ android:key="account_and_google_services_section" app:isPreferenceVisible="false"
android:order="1001"
android:title="@string/prefs_section_account_and_google_services"/>
<org.chromium.chrome.browser.sync.settings.SignInPreference
@@ -24,7 +24,7 @@ found in the LICENSE file.
@@ -28,7 +28,7 @@ for the previous order (main_preferences_legacy). -->
android:layout="@layout/account_management_account_row"
android:title="@string/sync_category_title"/>
<org.chromium.components.browser_ui.settings.ChromeBasePreference
@@ -52,7 +52,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences_cromite.xml b/chrom
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/xml/privacy_preferences_cromite.xml
@@ -0,0 +1,191 @@
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+Copyright 2022 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
@@ -108,12 +108,6 @@ new file mode 100644
+ android:key="can_make_payment"
+ android:title="@string/can_make_payment_title"
+ android:summary="@string/settings_can_make_payment_toggle_label" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="throttle_main_thread_to_60hz"
+ android:title="@string/throttle_main_thread_to_60hz_title"
+ android:summary="@string/throttle_main_thread_to_60hz_summary"
+ app:featureName="throttle-main-thread-to-60hz"
+ app:needRestart="true" />
+
+ <PreferenceCategory
+ android:title="@string/data_exposed_to_device_section_title"/>
@@ -194,12 +188,13 @@ new file mode 100644
+ android:title="@string/improve_search_suggestions_title"
+ android:summary="@string/improve_search_suggestions_summary"
+ android:persistent="false"/>
+ <Preference
+ android:key="phone_as_a_security_key"
+ android:title="@string/cablev2_paask_title"
+ android:summary="@string/cablev2_paask_body"
+ android:fragment="org.chromium.chrome.browser.webauthn.PrivacySettingsFragment" />
+
+ <!--Always hidden-->
+ <org.chromium.chrome.browser.safety_hub.SafetyHubExpandablePreference
+ android:key="advanced_protection_info"
+ android:title="@string/settings_privacy_and_security_advanced_protection_section_title"
+ app:isPreferenceVisible="false" />
+ <Preference
+ android:key="safe_browsing"
+ android:title="@string/prefs_safe_browsing_title"
@@ -223,6 +218,16 @@ new file mode 100644
+ android:fragment="org.chromium.components.privacy_sandbox.TrackingProtectionSettings"
+ app:isPreferenceVisible="false" />
+ <Preference
+ android:key="ip_protection"
+ android:title="@string/ip_protection_title"
+ android:fragment="org.chromium.components.privacy_sandbox.IpProtectionSettingsFragment"
+ app:isPreferenceVisible="false" />
+ <Preference
+ android:key="fp_protection"
+ android:title="@string/tracking_protection_fingerprinting_protection_title"
+ android:fragment="org.chromium.components.privacy_sandbox.FingerprintingProtectionSettingsFragment"
+ app:isPreferenceVisible="false" />
+ <Preference
+ android:key="privacy_sandbox"
+ android:title="@string/ad_privacy_link_row_label"
+ android:summary="@string/ad_privacy_link_row_sub_label"
@@ -241,32 +246,31 @@ new file mode 100644
+ <org.chromium.components.browser_ui.settings.ChromeBasePreference
+ android:key="javascript_optimizer"
+ android:title="@string/website_settings_privacy_and_security_javascript_optimizer_row_label"
+ android:summary="@string/website_settings_privacy_and_security_javascript_optimizer_summary"
+ android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings"
+ app:isPreferenceVisible="false" />
+</PreferenceScreen>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
@@ -196,7 +196,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
@@ -147,7 +147,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) {
mPageTitle.set(getString(R.string.prefs_privacy_security));
- SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences_cromite);
Preference sandboxPreference = findPreference(PREF_PRIVACY_SANDBOX);
// Overwrite the click listener to pass a correct referrer to the fragment.
@@ -283,7 +283,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
ChromeSwitchPreference passwordLeakTogglePref =
Preference fpProtectionPreference = findPreference(PREF_FP_PROTECTION);
fpProtectionPreference.setVisible(shouldShowFpProtectionUi());
@@ -244,7 +244,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
(ChromeSwitchPreference) findPreference(PREF_PASSWORD_LEAK_DETECTION);
- passwordLeakTogglePref.setOnPreferenceChangeListener(this);
+ if (passwordLeakTogglePref != null) {
+ passwordLeakTogglePref.setVisible(false);
+ }
if (ChromeFeatureList.isEnabled(ChromeFeatureList.PASSWORD_LEAK_TOGGLE_MOVE)) {
passwordLeakTogglePref.setOnPreferenceChangeListener(this);
- } else {
+ } else if (passwordLeakTogglePref != null) {
passwordLeakTogglePref.setVisible(false);
}
mSearchSuggestions = (ChromeSwitchPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
mSearchSuggestions.setOnPreferenceChangeListener(this);
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp
new file mode 100644
--- /dev/null
+118 -425
View File
@@ -4,7 +4,6 @@ Subject: Cromite Branding
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
base/win/message_window.cc | 2 +-
build/BUILD.gn | 8 ++
build/config/BUILDCONFIG.gn | 4 +
chrome/android/java/AndroidManifest.xml | 2 +-
@@ -27,10 +26,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../mipmap-xxxhdpi/layered_app_icon.png | Bin 3652 -> 29220 bytes
.../layered_app_icon_background.png | Bin 3519 -> 142032 bytes
.../values/channel_constants.xml | 8 +-
.../ChromeContextMenuPopulator.java | 2 +-
.../browser/fullscreen/FullscreenToast.java | 2 +-
.../inline/BromiteInlineUpdateController.java | 19 +++-
.../tabbed_mode/TabbedRootUiCoordinator.java | 4 +-
chrome/app/extensions_strings.grdp | 4 +-
chrome/app/settings_strings.grdp | 2 +-
chrome/app/theme/chromium/BRANDING | 8 +-
@@ -39,60 +35,37 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../theme/chromium/win/tiles/SmallLogo.png | Bin 9784 -> 12363 bytes
.../chromium/product_logo_32.png | Bin 822 -> 2301 bytes
chrome/browser/BUILD.gn | 1 +
.../external_registry_loader_win.cc | 3 +-
.../browser/hub/HubToolbarMediator.java | 2 +-
.../android/res/layout/hub_toolbar_layout.xml | 83 +++++++++-------
.../chrome/browser/omaha/UpdateConfigs.java | 2 +-
chrome/browser/prefs/BUILD.gn | 1 +
.../prefs/chrome_pref_service_factory.cc | 6 +-
chrome/browser/process_singleton_win.cc | 2 +-
.../profiles/profile_shortcut_manager_win.cc | 2 +-
.../settings/settings_menu/settings_menu.html | 14 ++-
.../tab_group_sync/TabGroupSyncUtils.java | 5 +-
.../OmniboxSuggestionsContainer.java | 8 +-
.../strings/android_chrome_strings.grd | 4 +-
.../strings/android_chrome_strings.grd | 2 +-
.../toolbar/chrome_labs/chrome_labs_utils.cc | 1 +
chrome/common/url_constants.h | 4 +-
.../install_static/chromium_install_modes.h | 2 +-
.../install_static/chromium_install_modes.cc | 2 +-
.../strings/android/browser_ui_strings.grd | 2 +-
.../drawable-hdpi/fre_product_logo.png | Bin 3912 -> 22295 bytes
.../drawable-mdpi/fre_product_logo.png | Bin 2490 -> 12171 bytes
.../drawable-xhdpi/fre_product_logo.png | Bin 5151 -> 34576 bytes
.../drawable-xxhdpi/fre_product_logo.png | Bin 7720 -> 60959 bytes
.../drawable-xxxhdpi/fre_product_logo.png | Bin 10740 -> 93273 bytes
.../browser/autocomplete_controller.cc | 1 +
.../vector_icons/product_chrome_refresh.icon | 93 +++++++++---------
components/policy/core/common/policy_paths.cc | 2 +-
.../policy/tools/generate_policy_source.py | 2 +-
.../chromium/product_logo.png | Bin 1562 -> 3577 bytes
.../chromium/product_logo_white.png | Bin 1417 -> 3040 bytes
.../chromium/product_logo.png | Bin 2714 -> 7923 bytes
.../chromium/product_logo_white.png | Bin 2512 -> 6790 bytes
.../webui/version/resources/about_version.ts | 4 +-
.../resources/about_version_mobile.css | 10 ++
.../resources/about_version_mobile.css | 9 ++
content/child/runtime_features.cc | 44 ++++-----
.../Cromite-Branding.inc | 1 +
tools/grit/grit/grd_reader.py | 35 +++++++
69 files changed, 272 insertions(+), 179 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc
55 files changed, 201 insertions(+), 128 deletions(-)
diff --git a/base/win/message_window.cc b/base/win/message_window.cc
--- a/base/win/message_window.cc
+++ b/base/win/message_window.cc
@@ -29,7 +29,7 @@
// To avoid conflicts with the macro from the Windows SDK...
#undef FindWindow
-const wchar_t kMessageWindowClassName[] = L"Chrome_MessageWindow";
+const wchar_t kMessageWindowClassName[] = L"Cromite_MessageWindow";
namespace {
diff --git a/build/BUILD.gn b/build/BUILD.gn
--- a/build/BUILD.gn
+++ b/build/BUILD.gn
@@ -56,6 +56,14 @@ buildflag_header("branding_buildflags") {
flags += [ "ENABLE_BUILTIN_SEARCH_PROVIDER_ASSETS=$enable_builtin_search_provider_assets" ]
@@ -55,6 +55,14 @@ buildflag_header("branding_buildflags") {
}
}
+buildflag_header("cromite_buildflags") {
@@ -109,8 +82,8 @@ diff --git a/build/BUILD.gn b/build/BUILD.gn
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
--- a/build/config/BUILDCONFIG.gn
+++ b/build/config/BUILDCONFIG.gn
@@ -184,6 +184,10 @@ declare_args() {
clang_warning_suppression_file = ""
@@ -186,6 +186,10 @@ declare_args() {
clang_unsafe_buffers_paths = ""
}
+declare_args() {
@@ -123,7 +96,7 @@ diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -206,7 +206,7 @@ by a child template that "extends" this file.
@@ -178,7 +178,7 @@ by a child template that "extends" this file.
<application android:name="{% block application_name %}org.chromium.chrome.browser.base.SplitChromeApplication{% endblock %}"
android:icon="@drawable/ic_launcher"
android:roundIcon="@drawable/ic_launcher_round"
@@ -155,8 +128,8 @@ diff --git a/chrome/android/java/res/xml/legal_information_preferences.xml b/chr
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -13,19 +13,19 @@ found in the LICENSE file.
android:order="0" />
@@ -16,20 +16,20 @@ for the previous order (main_preferences_legacy). -->
<!-- TODO(crbug.com/364906215): Move SettingsPromoCardPreference here once SyncPromoPreference is removed -->
<PreferenceCategory
android:key="account_and_google_services_section"
- android:order="1"
@@ -164,8 +137,9 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
android:title="@string/prefs_section_account_and_google_services"/>
<org.chromium.chrome.browser.sync.settings.SignInPreference
android:key="sign_in"
- android:order="2"/>
+ android:order="1002"/>
- android:order="2"
+ android:order="1002"
android:title="@string/sign_in_to_chrome"/>
<org.chromium.components.browser_ui.settings.ChromeBasePreference
android:key="manage_sync"
- android:order="3"
@@ -9160,31 +9134,6 @@ diff --git a/chrome/android/java/res_chromium_base/values/channel_constants.xml
+ <string name="search_widget_title" translatable="false">Cromite search</string>
+ <string name="quick_action_search_widget_title" translatable="false">Cromite quick action search</string>
</resources>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -495,8 +495,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
&& !isEmptyUrl(mParams.getUrl())
&& UrlUtilities.isAcceptedScheme(mParams.getUrl())) {
if (mMode == ContextMenuMode.NORMAL) {
- linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB));
linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP));
+ linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB));
if (!mItemDelegate.isIncognito()
&& mItemDelegate.isIncognitoSupported()
&& !shouldOpenIncognitoAsWindow()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenToast.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenToast.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenToast.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenToast.java
@@ -109,7 +109,7 @@ interface FullscreenToast {
mNotificationToast =
Toast.makeTextWithPriority(
mActivity, toastTextId, Toast.LENGTH_LONG, ToastPriority.HIGH);
- mNotificationToast.setGravity(Gravity.BOTTOM | Gravity.CENTER, 0, 0);
+ mNotificationToast.setGravity(Gravity.TOP | Gravity.CENTER, 0, 0);
mNotificationToast.show();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
@@ -9228,28 +9177,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/Br
Log.i(TAG, "BromiteUpdater: fetching with GET '%s'", UPSTREAM_VERSION_URL);
EndpointFetcher.nativeFetchWithNoAuth(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -1014,12 +1014,12 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
if (tab.canGoBack()) {
return ActionType.NAVIGATE_BACK;
}
- if (TabAssociatedApp.isOpenedFromExternalApp(tab)) {
+ if (TabAssociatedApp.isOpenedFromExternalApp(tab) && tab.getLaunchType() == TabLaunchType.FROM_EXTERNAL_APP) {
return ActionType.EXIT_APP;
}
return mBackButtonShouldCloseTabFn.apply(tab)
? ActionType.CLOSE_TAB
- : ActionType.EXIT_APP;
+ : ActionType.CLOSE_TAB;
}
@Override
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp
--- a/chrome/app/extensions_strings.grdp
+++ b/chrome/app/extensions_strings.grdp
@@ -395,7 +395,7 @@
@@ -392,7 +392,7 @@
No recent activities
</message>
<message name="IDS_EXTENSIONS_NO_INSTALLED_ITEMS" desc="The message shown to the user on the Extensions settings page when there are no extensions or apps installed.">
@@ -9258,27 +9189,27 @@ diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.
</message>
<message name="IDS_EXTENSIONS_NO_DESCRIPTION" desc="The message shown to the user when an extension does not have any description.">
No description provided
@@ -533,7 +533,7 @@
@@ -530,7 +530,7 @@
My extensions
</message>
<message name="IDS_EXTENSIONS_SIDEBAR_DISCOVER_MORE" desc="The text displayed in the sidebar of the chrome://extensions page to open the Chrome Web Store to get more extensions.">
<message name="IDS_EXTENSIONS_SIDEBAR_DISCOVER_MORE" desc="The text displayed in the sidebar to open the Chrome Web Store to get more extensions.">
- Discover more extensions and themes on the <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>Chrome Web Store<ph name="END_LINK">&lt;/a&gt; <ex>&lt;/a&gt;</ex> </ph>
+ Discover more extensions and themes on the <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>Chromedontreplace Web Store<ph name="END_LINK">&lt;/a&gt; <ex>&lt;/a&gt;</ex> </ph>
</message>
<message name="IDS_EXTENSIONS_WHATS_NEW_SIDEBAR_PROMO" desc="The text displayed in the sidebar of the chrome://extensions page to promote the extension documenation, for when the user is in developer mode.">
Developing extensions? Stay up to date on <ph name="BEGIN_LINK">&lt;a target="_blank" href="$1"&gt;</ph>What's New<ph name="END_LINK">&lt;/a&gt;</ph> with Chrome Extension developer documentation.
<message name="IDS_EXTENSIONS_SIDEBAR_KEYBOARD_SHORTCUTS" desc="The text for the link to manage keyboard shortcuts for extensions.">
Keyboard shortcuts
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -84,7 +84,7 @@
Accessibility
@@ -275,7 +275,7 @@
Change
</message>
<message name="IDS_SETTINGS_ACCESSIBILITY_WEB_STORE" desc="Text for an external link explaining that additional accessibility features are found on the Chrome Web Store.">
<message name="IDS_SETTINGS_WEB_STORE" desc="Sub-label about choosing something from the Chrome Web Store.">
- Open Chrome Web Store
+ Open Chromedontreplace Web Store
</message>
<message name="IDS_SETTINGS_MORE_FEATURES_LINK" desc="Link which opens page where users can install extensions which provide additional accessibility features.">
Add accessibility features
<if expr="is_macosx">
<message name="IDS_SETTINGS_TABS_TO_LINKS_PREF" desc="The documentation string of the 'Tabs to Links' preference">
diff --git a/chrome/app/theme/chromium/BRANDING b/chrome/app/theme/chromium/BRANDING
--- a/chrome/app/theme/chromium/BRANDING
+++ b/chrome/app/theme/chromium/BRANDING
@@ -13224,7 +13155,7 @@ e)fqMZZ`3a)Ds&5H<cfp<0000<MNUMnLSTYHt&Yn8
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1623,6 +1623,7 @@ static_library("browser") {
@@ -1844,6 +1844,7 @@ static_library("browser") {
"//build/config/chromebox_for_meetings:buildflags",
"//build/config/compiler:compiler_buildflags",
"//build/config/linux/dbus:buildflags",
@@ -13232,145 +13163,10 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"//cc",
"//chrome:extra_resources",
"//chrome:resources",
diff --git a/chrome/browser/extensions/external_registry_loader_win.cc b/chrome/browser/extensions/external_registry_loader_win.cc
--- a/chrome/browser/extensions/external_registry_loader_win.cc
+++ b/chrome/browser/extensions/external_registry_loader_win.cc
@@ -35,7 +35,7 @@ using content::BrowserThread;
namespace {
// The Registry subkey that contains information about external extensions.
-const wchar_t kRegistryExtensions[] = L"Software\\Google\\Chrome\\Extensions";
+const wchar_t kRegistryExtensions[] = L"Software\\Uazo\\Cromite\\Extensions";
// Registry value of the key that defines the installation parameter.
const wchar_t kRegistryExtensionInstallParam[] = L"install_parameter";
@@ -82,6 +82,7 @@ void ExternalRegistryLoader::StartLoading() {
base::DictValue ExternalRegistryLoader::LoadPrefsOnBlockingThread() {
base::DictValue prefs;
+ if ((true)) return prefs;
// A map of IDs, to weed out duplicates between HKCU and HKLM.
std::set<std::wstring> keys;
diff --git a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubToolbarMediator.java b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubToolbarMediator.java
--- a/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubToolbarMediator.java
+++ b/chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/HubToolbarMediator.java
@@ -83,7 +83,7 @@ public class HubToolbarMediator {
@Override
public void onConfigurationChanged(Configuration configuration) {
int screenWidthDp = configuration.screenWidthDp;
- boolean isTablet = HubUtils.isScreenWidthTablet(screenWidthDp);
+ boolean isTablet = true; //HubUtils.isScreenWidthTablet(screenWidthDp);
Pane pane = mPaneManager.getFocusedPaneSupplier().get();
if (pane == null) return;
diff --git a/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.xml b/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.xml
--- a/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.xml
+++ b/chrome/browser/hub/internal/android/res/layout/hub_toolbar_layout.xml
@@ -38,34 +38,22 @@ found in the LICENSE file.
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start|center_vertical">
+ <Space
+ android:layout_width="@dimen/hub_toolbar_action_button_start_margin"
+ android:layout_height="match_parent"/>
- <!-- This is needed to keep the new tab button aligned with the first tab. -->
- <Space
- android:id="@+id/margin_spacer"
- android:layout_width="@dimen/hub_toolbar_action_button_start_margin"
- android:layout_height="match_parent"
- android:visibility="visible"/>
-
- <org.chromium.ui.widget.ChromeImageButton
- android:id="@+id/toolbar_back_button"
- android:src="@drawable/ic_arrow_back_24dp"
- android:layout_width="@dimen/min_touch_target_size"
- android:layout_height="@dimen/min_touch_target_size"
- android:layout_gravity="center"
- android:layout_marginStart="4dp"
- android:contentDescription="@string/back"
- android:tooltipText="@string/back"
- android:visibility="gone"
- style="@style/ToolbarMenuButton"
- app:tint="@color/default_icon_color_tint_list"/>
-
- <Button
- android:id="@+id/toolbar_action_button"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:layout_gravity="start|center_vertical"
- android:visibility="gone"
- style="?attr/newTabButtonStyle"/>
+ <!-- On tablets, the searchbox (R.id.search_box) is hidden in favor of a button. -->
+ <org.chromium.ui.widget.ChromeImageButton
+ android:id="@+id/search_loupe"
+ android:visibility="gone"
+ android:gravity="center_vertical"
+ android:layout_width="44dp"
+ android:layout_height="match_parent"
+ android:contentDescription="@string/search"
+ android:src="@drawable/ic_search_24dp"
+ android:tooltipText="@string/accessibility_search_loupe_tooltip_text"
+ style="@style/ToolbarMenuButton"
+ app:tint="@color/default_icon_color_tint_list" />
</LinearLayout>
<FrameLayout
@@ -97,18 +85,39 @@ found in the LICENSE file.
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end" >
- <!-- On tablets, the searchbox (R.id.search_box) is hidden in favor of a button. -->
- <org.chromium.ui.widget.ChromeImageButton
- android:id="@+id/search_loupe"
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="start|center_vertical">
+
+ <org.chromium.ui.widget.ChromeImageButton
+ android:id="@+id/toolbar_back_button"
+ android:src="@drawable/ic_arrow_back_24dp"
+ android:layout_width="@dimen/min_touch_target_size"
+ android:layout_height="@dimen/min_touch_target_size"
+ android:layout_gravity="center"
+ android:layout_marginStart="4dp"
+ android:contentDescription="@string/back"
+ android:tooltipText="@string/back"
android:visibility="gone"
- android:gravity="center_vertical"
- android:layout_width="44dp"
- android:layout_height="match_parent"
- android:contentDescription="@string/search"
- android:src="@drawable/ic_search_24dp"
- android:tooltipText="@string/accessibility_search_loupe_tooltip_text"
style="@style/ToolbarMenuButton"
- app:tint="@color/default_icon_color_tint_list" />
+ app:tint="@color/default_icon_color_tint_list"/>
+
+ <Button
+ android:id="@+id/toolbar_action_button"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_gravity="start|center_vertical"
+ android:visibility="gone"
+ style="?attr/newTabButtonStyle"/>
+
+ <Space
+ android:id="@+id/margin_spacer"
+ android:layout_width="@dimen/hub_toolbar_action_button_start_margin"
+ android:layout_height="match_parent"
+ android:visibility="gone"/>
+ </LinearLayout>
<include layout="@layout/menu_button" />
</LinearLayout>
diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java b/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
--- a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
+++ b/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
@@ -39,7 +39,7 @@ public class UpdateConfigs {
@@ -37,7 +37,7 @@ public class UpdateConfigs {
private static final String UPDATE_AVAILABLE_SWITCH_VALUE = "update_available";
private static final String UNSUPPORTED_OS_VERSION_SWITCH_VALUE = "unsupported_os_version";
@@ -13382,27 +13178,27 @@ diff --git a/chrome/browser/omaha/android/java/src/org/chromium/chrome/browser/o
diff --git a/chrome/browser/prefs/BUILD.gn b/chrome/browser/prefs/BUILD.gn
--- a/chrome/browser/prefs/BUILD.gn
+++ b/chrome/browser/prefs/BUILD.gn
@@ -59,6 +59,7 @@ source_set("impl") {
@@ -52,6 +52,7 @@ source_set("impl") {
deps = [
":prefs",
":util",
+ "//build:cromite_buildflags",
"//chrome/browser:browser_process",
"//chrome/browser:flags",
"//chrome/browser/autocomplete:aim_eligibility_service",
"//chrome/browser/devtools",
"//chrome/browser/media/prefs",
diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc
--- a/chrome/browser/prefs/chrome_pref_service_factory.cc
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc
@@ -26,6 +26,7 @@
#include "base/trace_event/trace_event.h"
@@ -27,6 +27,7 @@
#include "build/branding_buildflags.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
+#include "build/cromite_flags.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/enterprise/signin/enterprise_signin_prefs.h"
#include "chrome/browser/policy/chrome_browser_policy_connector.h"
@@ -293,10 +294,7 @@ std::unique_ptr<ProfilePrefStoreManager> CreateProfilePrefStoreManager(
const base::FilePath& profile_path) {
@@ -291,10 +292,7 @@ std::unique_ptr<ProfilePrefStoreManager> CreateProfilePrefStoreManager(
#endif
std::string seed;
CHECK(ui::ResourceBundle::HasSharedInstance());
-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
@@ -13410,21 +13206,9 @@ diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browse
- IDR_PREF_HASH_SEED_BIN));
-#endif
+ seed = BUILDFLAG_INTERNAL_CROMITE_PREF_HASH_SEED_BIN();
return std::make_unique<ProfilePrefStoreManager>(profile_path, seed);
return std::make_unique<ProfilePrefStoreManager>(profile_path, seed,
legacy_device_id);
}
diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc
--- a/chrome/browser/process_singleton_win.cc
+++ b/chrome/browser/process_singleton_win.cc
@@ -381,7 +381,7 @@ ProcessSingleton::NotifyOtherProcessOrCreate() {
bool ProcessSingleton::Create() {
TRACE_EVENT0("startup", "ProcessSingleton::Create");
- static const wchar_t kMutexName[] = L"Local\\ChromeProcessSingletonStartup!";
+ static const wchar_t kMutexName[] = L"Local\\CromiteProcessSingletonStartup!";
remote_window_ = FindRunningChromeWindow(user_data_dir_);
if (!remote_window_ && !EscapeVirtualization(user_data_dir_)) {
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc
--- a/chrome/browser/profiles/profile_shortcut_manager_win.cc
+++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc
@@ -13459,7 +13243,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html
#menu {
color: var(--google-grey-700);
display: flex;
@@ -167,7 +179,7 @@
@@ -173,7 +185,7 @@
</a>
<a role="menuitem" id="about-menu" href="/help"
class="cr-nav-menu-item">
@@ -13468,50 +13252,10 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html
$i18n{aboutPageTitle}
<cr-ripple></cr-ripple>
</a>
diff --git a/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/TabGroupSyncUtils.java b/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/TabGroupSyncUtils.java
--- a/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/TabGroupSyncUtils.java
+++ b/chrome/browser/tab_group_sync/android/java/src/org/chromium/chrome/browser/tab_group_sync/TabGroupSyncUtils.java
@@ -127,7 +127,10 @@ public final class TabGroupSyncUtils {
for (String syncGroupId : tabGroupSyncService.getAllGroupIds()) {
SavedTabGroup savedTabGroup = tabGroupSyncService.getGroup(syncGroupId);
// If there is no local ID the group is already hidden so this is a no-op.
- if (savedTabGroup == null || savedTabGroup.localId == null) continue;
+ if (savedTabGroup == null || savedTabGroup.localId == null) {
+ tabGroupSyncService.removeGroup(syncGroupId);
+ continue;
+ }
if (!isInAnyWindow(savedTabGroup.localId, filterList)) {
tabGroupSyncService.removeLocalTabGroupMapping(
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsContainer.java
@@ -24,6 +24,7 @@ import org.chromium.base.TraceEvent;
import org.chromium.base.metrics.TimingMetric;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits;
+import org.chromium.base.ui.KeyboardUtils;
import org.chromium.build.annotations.NullMarked;
import org.chromium.chrome.browser.omnibox.OmniboxMetrics;
import org.chromium.chrome.browser.omnibox.R;
@@ -109,8 +110,11 @@ public class OmniboxSuggestionsContainer extends FrameLayout {
// Omnibox.
// Making the container `clickable=true` achieves similar goal, but this consumes all
// activators, including keyboard <Enter> key.
- super.onTouchEvent(event);
- return true;
+ if (KeyboardUtils.isAndroidSoftKeyboardShowing(this)) {
+ KeyboardUtils.hideAndroidSoftKeyboard(this);
+ return true;
+ }
+ return false;
}
/**
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -2466,7 +2466,7 @@ Your Google account may have other forms of browsing history like searches and a
@@ -2425,7 +2425,7 @@ Your Google account may have other forms of browsing history like searches and a
About Chrome
</message>
<message name="IDS_LEGAL_INFORMATION_SUMMARY" desc="Summary for legal information" meaning="Android">
@@ -13520,19 +13264,10 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
</message>
<message name="IDS_APPLICATION_VERSION_TITLE" desc="Title for application version">
Application version
@@ -6039,7 +6039,7 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<!-- Storage Preference UI strings for clearing storage. -->
<message name="IDS_STORAGE_MANAGEMENT_ACTIVITY_LABEL" desc="Title for Chrome's Manage Space Activity.">
- Google <ph name="APP_NAME">%1$s<ex>Chrome</ex></ph> storage
+ <ph name="APP_NAME">%1$s<ex>Chrome</ex></ph> storage
</message>
<message name="IDS_STORAGE_MANAGEMENT_UNIMPORTANT_SITE_DATA_DESCRIPTION" desc="Text to describe the data stored by unimportant or infrequent sites.">
Stored data that Chrome doesn't think is important (e.g. sites with no saved settings or that you don't visit often)
diff --git a/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc b/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc
--- a/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc
+++ b/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc
@@ -139,6 +139,7 @@ bool AreNewChromeLabsExperimentsAvailable(Profile* profile) {
@@ -144,6 +144,7 @@ bool AreNewChromeLabsExperimentsAvailable(const ChromeLabsModel* model,
}
bool IsChromeLabsEnabled() {
@@ -13543,40 +13278,40 @@ diff --git a/chrome/browser/ui/toolbar/chrome_labs/chrome_labs_utils.cc b/chrome
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
--- a/chrome/common/url_constants.h
+++ b/chrome/common/url_constants.h
@@ -117,7 +117,7 @@ inline constexpr char kChromeHelpViaMenuURL[] =
#endif // BUILDFLAG(IS_CHROMEOS)
@@ -136,7 +136,7 @@ inline constexpr char kChromeHelpViaMenuURL[] =
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
inline constexpr char kChromeHelpViaWebUIURL[] =
- "https://support.google.com/chrome?p=help&ctx=settings";
+ "https://github.com/uazo/cromite/issues";
#if BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_CHROMEOS_ASH)
inline constexpr char kChromeOsHelpViaWebUIURL[] =
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
@@ -175,7 +175,7 @@ inline constexpr char kChromeUIUntrustedNewTabPageUrl[] =
@@ -199,7 +199,7 @@ inline constexpr char kChromeUIUntrustedNewTabPageUrl[] =
"chrome-untrusted://new-tab-page/";
// The URL for the Chromium project used in the About dialog.
-inline constexpr char16_t kChromiumProjectURL[] = u"https://www.chromium.org/";
+inline constexpr char16_t kChromiumProjectURL[] = u"https://www.cromite.org/";
#if BUILDFLAG(IS_CHROMEOS)
static_assert(std::u16string_view(kChromiumProjectURL) ==
ash::chrome_external_urls::kChromiumProjectURL);
diff --git a/chrome/install_static/chromium_install_modes.h b/chrome/install_static/chromium_install_modes.h
--- a/chrome/install_static/chromium_install_modes.h
+++ b/chrome/install_static/chromium_install_modes.h
@@ -21,7 +21,7 @@ inline constexpr wchar_t kCompanyPathName[] = L"";
// The brand-specific product name to be included as a component of the install
// and user data directory paths.
-inline constexpr wchar_t kProductPathName[] = L"Chromium";
+inline constexpr wchar_t kProductPathName[] = L"Cromite";
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
// The URL for the "Clear browsing data in Chrome" help center article.
diff --git a/chrome/install_static/chromium_install_modes.cc b/chrome/install_static/chromium_install_modes.cc
--- a/chrome/install_static/chromium_install_modes.cc
+++ b/chrome/install_static/chromium_install_modes.cc
@@ -16,7 +16,7 @@ namespace install_static {
const wchar_t kCompanyPathName[] = L"";
-const wchar_t kProductPathName[] = L"Chromium";
+const wchar_t kProductPathName[] = L"Cromite";
const size_t kProductPathNameLength = _countof(kProductPathName) - 1;
// The brand-specific safe browsing client name.
inline constexpr char kSafeBrowsingName[] = "chromium";
diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd
--- a/components/browser_ui/strings/android/browser_ui_strings.grd
+++ b/components/browser_ui/strings/android/browser_ui_strings.grd
@@ -1003,7 +1003,7 @@
@@ -975,7 +975,7 @@
<!-- Accessibility preferences -->
<message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR_LIMIT=32]">
@@ -18481,17 +18216,6 @@ z-aP~TXJZ`-(Yg4YH}L#8=YM{CKWmuBV|oH(e6M*W+WLnfYBCzOQRGLiPvyZq6&Nv6
z4G!>zy1hcOdP%7GG2>1P`Or}=o{p{?6G1~J{`Cl{gUX-*clf=;TVY)N<lVO9k)vG$
i?Ib$(ofrX17!1R|`h|N%TnD<%35@j2bgPM^i2nno*_EOI
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
--- a/components/omnibox/browser/autocomplete_controller.cc
+++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -1117,6 +1117,7 @@ bool AutocompleteController::ShouldRunProvider(
#if BUILDFLAG(IS_ANDROID)
if (omnibox::IsAndroidHub(input_.current_page_classification())) {
+ if ((true)) return provider->type() == AutocompleteProvider::TYPE_OPEN_TAB;
return provider->type() == AutocompleteProvider::TYPE_SEARCH ||
provider->type() == AutocompleteProvider::TYPE_OPEN_TAB ||
provider->type() == AutocompleteProvider::TYPE_BOOKMARK ||
diff --git a/components/omnibox/browser/vector_icons/product_chrome_refresh.icon b/components/omnibox/browser/vector_icons/product_chrome_refresh.icon
--- a/components/omnibox/browser/vector_icons/product_chrome_refresh.icon
+++ b/components/omnibox/browser/vector_icons/product_chrome_refresh.icon
@@ -18501,15 +18225,15 @@ diff --git a/components/omnibox/browser/vector_icons/product_chrome_refresh.icon
-// found in the LICENSE file.
-
-CANVAS_DIMENSIONS, 15,
-MOVE_TO, 4.92, 7.5,
-R_CUBIC_TO, 0, 0.71, 0.25, 1.31, 0.76, 1.82,
-R_CUBIC_TO, 0.51, 0.51, 1.12, 0.76, 1.82, 0.76,
-R_CUBIC_TO, 0.7, 0, 1.31, -0.25, 1.82, -0.76,
-R_CUBIC_TO, 0.51, -0.51, 0.76, -1.12, 0.76, -1.82,
-R_CUBIC_TO, 0, -0.7, -0.25, -1.31, -0.76, -1.82,
-R_ARC_TO, 2.49, 2.49, 0, 0, 0, -1.82, -0.76,
-R_CUBIC_TO, -0.7, 0, -1.31, 0.25, -1.82, 0.76,
-R_ARC_TO, 2.49, 2.49, 0, 0, 0, -0.76, 1.82,
-MOVE_TO, 4.92f, 7.5f,
-R_CUBIC_TO, 0, 0.71f, 0.25f, 1.31f, 0.76f, 1.82f,
-R_CUBIC_TO, 0.51f, 0.51f, 1.12f, 0.76f, 1.82f, 0.76f,
-R_CUBIC_TO, 0.7f, 0, 1.31f, -0.25f, 1.82f, -0.76f,
-R_CUBIC_TO, 0.51f, -0.51f, 0.76f, -1.12f, 0.76f, -1.82f,
-R_CUBIC_TO, 0, -0.7f, -0.25f, -1.31f, -0.76f, -1.82f,
-R_ARC_TO, 2.49f, 2.49f, 0, 0, 0, -1.82f, -0.76f,
-R_CUBIC_TO, -0.7f, 0, -1.31f, 0.25f, -1.82f, 0.76f,
-R_ARC_TO, 2.49f, 2.49f, 0, 0, 0, -0.76f, 1.82f,
+CANVAS_DIMENSIONS, 16,
+MOVE_TO, 15.99f, 8,
+CUBIC_TO, 15.99f, 9.83f, 15.37f, 11.52f, 14.34f, 12.87f,
@@ -18521,47 +18245,47 @@ diff --git a/components/omnibox/browser/vector_icons/product_chrome_refresh.icon
+CUBIC_TO, 14.47f, 3.29f, 14.38f, 3.18f, 14.29f, 3.07f,
+CUBIC_TO, 15.36f, 4.43f, 15.99f, 6.14f, 15.99f, 8,
CLOSE,
-MOVE_TO, 7.5, 11.48,
-R_CUBIC_TO, 0.14, 0, 0.28, 0, 0.41, -0.02,
-R_CUBIC_TO, 0.13, -0.01, 0.26, -0.04, 0.39, -0.07,
-LINE_TO, 6.77, 14.06,
-R_CUBIC_TO, -1.65, -0.19, -3.04, -0.89, -4.15, -2.12,
-CUBIC_TO, 1.5, 10.71, 0.94, 9.24, 0.94, 7.55,
-R_CUBIC_TO, 0, -0.46, 0.05, -0.9, 0.13, -1.33,
-R_CUBIC_TO, 0.08, -0.44, 0.22, -0.85, 0.39, -1.25,
-R_LINE_TO, 2.63, 4.55,
-R_CUBIC_TO, 0.34, 0.59, 0.81, 1.07, 1.41, 1.43,
-R_CUBIC_TO, 0.6, 0.36, 1.26, 0.54, 2.01, 0.54,
-MOVE_TO, 7.5f, 11.48f,
-R_CUBIC_TO, 0.14f, 0, 0.28f, 0, 0.41f, -0.02f,
-R_CUBIC_TO, 0.13f, -0.01f, 0.26f, -0.04f, 0.39f, -0.07f,
-LINE_TO, 6.77f, 14.06f,
-R_CUBIC_TO, -1.65f, -0.19f, -3.04f, -0.89f, -4.15f, -2.12f,
-CUBIC_TO, 1.5f, 10.71f, 0.94f, 9.24f, 0.94f, 7.55f,
-R_CUBIC_TO, 0, -0.46f, 0.05f, -0.9f, 0.13f, -1.33f,
-R_CUBIC_TO, 0.08f, -0.44f, 0.22f, -0.85f, 0.39f, -1.25f,
-R_LINE_TO, 2.63f, 4.55f,
-R_CUBIC_TO, 0.34f, 0.59f, 0.81f, 1.07f, 1.41f, 1.43f,
-R_CUBIC_TO, 0.6f, 0.36f, 1.26f, 0.54f, 2.01f, 0.54f,
+MOVE_TO, 14.29f, 3.07f,
+CUBIC_TO, 14.29f, 3.06f, 14.28f, 3.05f, 14.27f, 3.04f,
+CUBIC_TO, 14.28f, 3.05f, 14.29f, 3.06f, 14.29f, 3.07f,
CLOSE,
-R_MOVE_TO, 0, -7.87,
-R_CUBIC_TO, -0.87, 0, -1.65, 0.25, -2.33, 0.77,
-R_ARC_TO, 3.95, 3.95, 0, 0, 0, -1.42, 1.94,
-LINE_TO, 2.21, 3.66,
-R_ARC_TO, 6.79, 6.79, 0, 0, 1, 2.27, -1.94,
-CUBIC_TO, 5.4, 1.22, 6.4, 0.98, 7.5, 0.98,
-R_CUBIC_TO, 1.1, 0, 2.08, 0.24, 2.99, 0.72,
-ARC_TO, 6.66, 6.66, 0, 0, 1, 12.76, 3.6,
-H_LINE_TO, 7.51,
-R_LINE_TO, -0.01, 0.01,
-R_MOVE_TO, 0, -7.87f,
-R_CUBIC_TO, -0.87f, 0, -1.65f, 0.25f, -2.33f, 0.77f,
-R_ARC_TO, 3.95f, 3.95f, 0, 0, 0, -1.42f, 1.94f,
-LINE_TO, 2.21f, 3.66f,
-R_ARC_TO, 6.79f, 6.79f, 0, 0, 1, 2.27f, -1.94f,
-CUBIC_TO, 5.4f, 1.22f, 6.4f, 0.98f, 7.5f, 0.98f,
-R_CUBIC_TO, 1.1f, 0, 2.08f, 0.24f, 2.99f, 0.72f,
-ARC_TO, 6.66f, 6.66f, 0, 0, 1, 12.76f, 3.6f,
-H_LINE_TO, 7.51f,
-R_LINE_TO, -0.01f, 0.01f,
+MOVE_TO, 14.34f, 12.87f,
+CUBIC_TO, 14.29f, 12.93f, 14.24f, 12.99f, 14.2f, 13.05f,
+CUBIC_TO, 14.24f, 12.99f, 14.29f, 12.93f, 14.34f, 12.87f,
CLOSE,
-R_MOVE_TO, 6.01, 1.31,
-R_CUBIC_TO, 0.19, 0.4, 0.32, 0.83, 0.41, 1.27,
-R_CUBIC_TO, 0.09, 0.44, 0.15, 0.89, 0.15, 1.36,
-R_CUBIC_TO, 0, 1.7, -0.55, 3.16, -1.68, 4.38,
-R_CUBIC_TO, -1.11, 1.23, -2.47, 1.93, -4.1, 2.13,
-R_LINE_TO, 2.63, -4.55,
-R_CUBIC_TO, 0.17, -0.28, 0.29, -0.59, 0.38, -0.92,
-R_CUBIC_TO, 0.09, -0.34, 0.15, -0.69, 0.15, -1.05,
-R_CUBIC_TO, 0, -0.52, -0.09, -0.99, -0.28, -1.42,
-R_ARC_TO, 3.96, 3.96, 0, 0, 0, -0.74, -1.2,
-R_H_LINE_TO, 3.08,
-R_V_LINE_TO, 0.01,
-R_MOVE_TO, 6.01f, 1.31f,
-R_CUBIC_TO, 0.19f, 0.4f, 0.32f, 0.83f, 0.41f, 1.27f,
-R_CUBIC_TO, 0.09f, 0.44f, 0.15f, 0.89f, 0.15f, 1.36f,
-R_CUBIC_TO, 0, 1.7f, -0.55f, 3.16f, -1.68f, 4.38f,
-R_CUBIC_TO, -1.11f, 1.23f, -2.47f, 1.93f, -4.1f, 2.13f,
-R_LINE_TO, 2.63f, -4.55f,
-R_CUBIC_TO, 0.17f, -0.28f, 0.29f, -0.59f, 0.38f, -0.92f,
-R_CUBIC_TO, 0.09f, -0.34f, 0.15f, -0.69f, 0.15f, -1.05f,
-R_CUBIC_TO, 0, -0.52f, -0.09f, -0.99f, -0.28f, -1.42f,
-R_ARC_TO, 3.96f, 3.96f, 0, 0, 0, -0.74f, -1.2f,
-R_H_LINE_TO, 3.08f,
-R_V_LINE_TO, 0.01f,
+MOVE_TO, 14.27f, 3.04f,
+CUBIC_TO, 14.19f, 2.94f, 14.11f, 2.84f, 14.02f, 2.74f,
+CUBIC_TO, 14.11f, 2.84f, 14.19f, 2.94f, 14.27f, 3.04f,
@@ -18593,30 +18317,6 @@ diff --git a/components/omnibox/browser/vector_icons/product_chrome_refresh.icon
+CLOSE,
+MOVE_TO, 11.2f, 8,
CLOSE
diff --git a/components/policy/core/common/policy_paths.cc b/components/policy/core/common/policy_paths.cc
--- a/components/policy/core/common/policy_paths.cc
+++ b/components/policy/core/common/policy_paths.cc
@@ -18,7 +18,7 @@ const char kPolicyPath[] = "/etc/opt/chrome/policies";
#elif BUILDFLAG(GOOGLE_CHROME_FOR_TESTING_BRANDING)
const char kPolicyPath[] = "/etc/opt/chrome_for_testing/policies";
#else
-const char kPolicyPath[] = "/etc/chromium/policies";
+const char kPolicyPath[] = "/etc/cromite/policies";
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
#endif // BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
diff --git a/components/policy/tools/generate_policy_source.py b/components/policy/tools/generate_policy_source.py
--- a/components/policy/tools/generate_policy_source.py
+++ b/components/policy/tools/generate_policy_source.py
@@ -28,7 +28,7 @@ from xml.sax.saxutils import escape as xml_escape
CHROME_POLICY_KEY = 'SOFTWARE\\\\Policies\\\\Google\\\\Chrome'
CHROME_FOR_TESTING_POLICY_KEY = CHROME_POLICY_KEY + ' for Testing'
-CHROMIUM_POLICY_KEY = 'SOFTWARE\\\\Policies\\\\Chromium'
+CHROMIUM_POLICY_KEY = 'SOFTWARE\\\\Policies\\\\Cromite'
PLATFORM_STRINGS = {
'chrome_frame': ['win'],
'chrome_os': ['chrome_os'],
diff --git a/components/resources/default_100_percent/chromium/product_logo.png b/components/resources/default_100_percent/chromium/product_logo.png
index 7b60bd8c6053346e4eb265cc77d28add65103028..66b3c4c7a4f68fba1ef098000bd373ba103a0de0 100644
GIT binary patch
@@ -19241,13 +18941,12 @@ diff --git a/components/webui/version/resources/about_version.ts b/components/we
diff --git a/components/webui/version/resources/about_version_mobile.css b/components/webui/version/resources/about_version_mobile.css
--- a/components/webui/version/resources/about_version_mobile.css
+++ b/components/webui/version/resources/about_version_mobile.css
@@ -17,3 +17,13 @@
@@ -17,3 +17,12 @@
margin-left: auto;
margin-right: auto;
}
+
+tr,
+td {
+tr, td {
+ display: block;
+ text-align: left !important;
+}
@@ -19258,7 +18957,7 @@ diff --git a/components/webui/version/resources/about_version_mobile.css b/compo
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -549,19 +549,22 @@ void ResolveInvalidConfigurations() {
@@ -564,19 +564,22 @@ void ResolveInvalidConfigurations() {
base::FeatureList::IsEnabled(
features::kPrivacySandboxAdsAPIsM1Override)) &&
!base::FeatureList::IsEnabled(blink::features::kFencedFrames)) {
@@ -19285,7 +18984,7 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Fenced frames must be enabled in order to enable local "
"unpartitioned "
<< "data access. Use --" << switches::kEnableFeatures << "="
@@ -569,12 +572,14 @@ void ResolveInvalidConfigurations() {
@@ -584,12 +587,14 @@ void ResolveInvalidConfigurations() {
WebRuntimeFeatures::EnableFeatureFromString(
"FencedFramesLocalUnpartitionedDataAccess", false);
}
@@ -19295,13 +18994,13 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
// Topics API cannot be enabled without the support of the browser process.
// The Document API should be additionally gated by the
// `kBrowsingTopicsDocumentAPI` feature.
if (!base::FeatureList::IsEnabled(network::features::kBrowsingTopics)) {
if (!base::FeatureList::IsEnabled(blink::features::kBrowsingTopics)) {
- LOG_IF(WARNING, WebRuntimeFeatures::IsTopicsAPIEnabled())
+ CHECK(!WebRuntimeFeatures::IsTopicsAPIEnabled())
<< "Topics cannot be enabled in this configuration. Use --"
<< switches::kEnableFeatures << "="
<< network::features::kBrowsingTopics.name << " in addition.";
@@ -582,30 +587,23 @@ void ResolveInvalidConfigurations() {
<< blink::features::kBrowsingTopics.name << " in addition.";
@@ -597,30 +602,23 @@ void ResolveInvalidConfigurations() {
WebRuntimeFeatures::EnableTopicsDocumentAPI(false);
WebRuntimeFeatures::EnableTopicsImgAPI(false);
} else {
@@ -19318,14 +19017,14 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
+ CHECK(false) << "kBrowsingTopics is enabled!";
}
if (!base::FeatureList::IsEnabled(network::features::kSharedStorageAPI)) {
if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) {
- LOG_IF(WARNING, WebRuntimeFeatures::IsSharedStorageAPIEnabled())
- << "SharedStorage cannot be enabled in this "
+ CHECK(!WebRuntimeFeatures::IsSharedStorageAPIEnabled())
+ << "SharedStorage for M118+ cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
<< network::features::kSharedStorageAPI.name << " in addition.";
<< blink::features::kSharedStorageAPI.name << " in addition.";
WebRuntimeFeatures::EnableSharedStorageAPI(false);
+ } else {
+ CHECK(false) << "kSharedStorageAPI is enabled!";
@@ -19338,46 +19037,40 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "AttributionReporting cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -613,23 +611,25 @@ void ResolveInvalidConfigurations() {
@@ -628,23 +626,25 @@ void ResolveInvalidConfigurations() {
<< " in addition.";
WebRuntimeFeatures::EnableAttributionReporting(false);
}
+ CHECK(!base::FeatureList::IsEnabled(attribution_reporting::features::kConversionMeasurement))
+ << "kConversionMeasurement is enabled!";
if (!base::FeatureList::IsEnabled(network::features::kInterestGroupStorage)) {
if (!base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) {
- LOG_IF(WARNING,
- WebRuntimeFeatures::IsAdInterestGroupAPIEnabledByRuntimeFlag())
+ CHECK(!WebRuntimeFeatures::IsAdInterestGroupAPIEnabledByRuntimeFlag())
<< "AdInterestGroupAPI cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
<< network::features::kInterestGroupStorage.name << " in addition.";
<< blink::features::kInterestGroupStorage.name << " in addition.";
WebRuntimeFeatures::EnableAdInterestGroupAPI(false);
WebRuntimeFeatures::EnableFledge(false);
+ } else {
+ CHECK(false) << "kInterestGroupStorage is enabled!";
}
// UserMediaElement cannot be enabled without the support of the
// PermissionElement cannot be enabled without the support of the
// browser process.
if (!base::FeatureList::IsEnabled(blink::features::kUserMediaElement)) {
if (!base::FeatureList::IsEnabled(blink::features::kPermissionElement)) {
- LOG_IF(WARNING,
- WebRuntimeFeatures::IsUserMediaElementEnabledByRuntimeFlag())
+ CHECK(!WebRuntimeFeatures::IsUserMediaElementEnabledByRuntimeFlag())
<< "UserMediaElement cannot be enabled in this configuration. Use --"
- WebRuntimeFeatures::IsPermissionElementEnabledByRuntimeFlag())
+ CHECK(!WebRuntimeFeatures::IsPermissionElementEnabledByRuntimeFlag())
<< "PermissionElement cannot be enabled in this configuration. Use --"
<< switches::kEnableFeatures << "="
<< blink::features::kUserMediaElement.name << " instead.";
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Cromite-Branding.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kShowTabListAnimations);
<< blink::features::kPermissionElement.name << " instead.";
diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py
--- a/tools/grit/grit/grd_reader.py
+++ b/tools/grit/grit/grd_reader.py
@@ -129,6 +129,7 @@ class GrdContentHandler(xml.sax.handler.ContentHandler):
@@ -126,6 +126,7 @@ class GrdContentHandler(xml.sax.handler.ContentHandler):
def characters(self, content):
if self.ignore_depth == 0:
if self.stack[-1]:
@@ -19385,7 +19078,7 @@ diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py
self.stack[-1].AppendContent(content)
def ignorableWhitespace(self, whitespace):
@@ -136,6 +137,40 @@ class GrdContentHandler(xml.sax.handler.ContentHandler):
@@ -133,6 +134,40 @@ class GrdContentHandler(xml.sax.handler.ContentHandler):
# parser?
pass
+248 -371
View File
@@ -7,67 +7,23 @@ Opens tabs in foreground, Move web search to the top of items,
Web search in tab group and Enable smart text selection
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../SamsungSelectionActionMenuDelegate.java | 7 +-
.../browser/ChromeActionModeHandler.java | 4 +-
.../chrome/browser/ChromeTabbedActivity.java | 15 +++-
...ActivityTabWebContentsDelegateAndroid.java | 10 ++-
.../compositor/layouts/LayoutManagerImpl.java | 9 ++-
.../tab/TabContextMenuItemDelegate.java | 7 +-
.../chrome/browser/ui/RootUiCoordinator.java | 8 +-
.../Customize-selection-popup.grdp | 34 +++++++++
.../AutofillSelectionMenuItemHelper.java | 4 +-
.../res/xml/accessibility_preferences.xml | 24 ++++++
.../selection/SelectActionMenuHelper.java | 20 ++---
.../SelectionPopupControllerImpl.java | 2 +-
.../selection/SmartSelectionClient.java | 4 +
.../browser/PendingSelectionMenu.java | 8 +-
.../browser/SelectionMenuItem.java | 73 ++++++++++++-------
.../SelectionActionMenuDelegate.java | 32 +++++---
16 files changed, 194 insertions(+), 67 deletions(-)
.../browser/ChromeActionModeHandler.java | 4 +-
.../chrome/browser/ChromeTabbedActivity.java | 15 +-
...ActivityTabWebContentsDelegateAndroid.java | 10 +-
.../compositor/layouts/LayoutManagerImpl.java | 8 ++
.../tab/TabContextMenuItemDelegate.java | 7 +-
.../chrome/browser/ui/RootUiCoordinator.java | 8 +-
.../Customize-selection-popup.grdp | 34 +++++
.../res/xml/accessibility_preferences.xml | 24 ++++
.../selection/SelectActionMenuHelper.java | 129 ++++++++++++------
.../selection/SmartSelectionClient.java | 4 +
10 files changed, 192 insertions(+), 51 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp
diff --git a/android_webview/java/src/org/chromium/android_webview/selection/SamsungSelectionActionMenuDelegate.java b/android_webview/java/src/org/chromium/android_webview/selection/SamsungSelectionActionMenuDelegate.java
--- a/android_webview/java/src/org/chromium/android_webview/selection/SamsungSelectionActionMenuDelegate.java
+++ b/android_webview/java/src/org/chromium/android_webview/selection/SamsungSelectionActionMenuDelegate.java
@@ -134,7 +134,7 @@ public class SamsungSelectionActionMenuDelegate extends AutofillSelectionActionM
.setIcon(null)
.setOrderAndCategory(
Menu.CATEGORY_SECONDARY,
- SelectionMenuItem.ItemGroupOffset.TEXT_PROCESSING_ITEMS)
+ SelectionMenuItem.ItemGroupOffset.TEXT_PROCESSING_ITEMS())
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
.setIntent(createManageAppsIntent())
.build());
@@ -167,7 +167,7 @@ public class SamsungSelectionActionMenuDelegate extends AutofillSelectionActionM
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
.setOrderAndCategory(
DefaultItem.PASTE, // Show after paste.
- SelectionMenuItem.ItemGroupOffset.DEFAULT_ITEMS)
+ SelectionMenuItem.ItemGroupOffset.DEFAULT_ITEMS())
.setIntent(
getTranslationActionIntent(selectedText, translateResolveInfo))
.build());
@@ -180,7 +180,7 @@ public class SamsungSelectionActionMenuDelegate extends AutofillSelectionActionM
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS)
.setOrderAndCategory(
Menu.FIRST, // Show as first item after primary assist item.
- SelectionMenuItem.ItemGroupOffset.ASSIST_ITEMS)
+ SelectionMenuItem.ItemGroupOffset.ASSIST_ITEMS())
.setIntent(
createWritingToolkitIntent(selectedText, isSelectionReadOnly))
.build());
@@ -239,6 +239,7 @@ public class SamsungSelectionActionMenuDelegate extends AutofillSelectionActionM
}
public static boolean shouldUseSamsungMenuItemOrdering() {
+ if ((true)) return false;
return Build.VERSION.SDK_INT <= MAXIMUM_BUILD_VERSION_CODE_SUPPORTED && isSamsungDevice();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
@@ -173,9 +173,7 @@ public class ChromeActionModeHandler {
@@ -166,9 +166,7 @@ public class ChromeActionModeHandler {
| ActionModeCallbackHelper.MENU_ITEM_SHARE;
// Disable options that expose additional Chrome functionality prior to the FRE being
// completed (i.e. creation of a new tab).
@@ -81,7 +37,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionMod
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -936,10 +936,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
@@ -781,10 +781,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
@TabLaunchType int type,
@TabCreationState int creationState,
boolean markedForSelection) {
@@ -106,7 +62,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java b/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid.java
@@ -253,6 +253,14 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat
@@ -195,12 +195,20 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat
// Skip opening a new Tab if it doesn't make sense.
if (mTab.isClosing()) return false;
@@ -118,53 +74,46 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/tab_activit
+ tabLaunchType = TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP;
+ }
+
if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOCUMENT_PICTURE_IN_PICTURE_API)
&& disposition == WindowOpenDisposition.NEW_PICTURE_IN_PICTURE) {
assertNonNull(pictureInPictureWindowOptions);
@@ -270,7 +278,7 @@ public class ActivityTabWebContentsDelegateAndroid extends TabWebContentsDelegat
mTab,
/* shouldPin= */ false,
webContents,
- TabLaunchType.FROM_LONGPRESS_FOREGROUND,
+ tabLaunchType,
targetUrl,
addTabToModel);
if (tab == null) return false;
// Creating new Tabs asynchronously requires starting a new Activity to create the Tab,
// so the Tab returned will always be null. There's no way to know synchronously
// whether the Tab is created, so assume it's always successful.
boolean success =
tabCreator.createTabWithWebContents(
- mTab, webContents, TabLaunchType.FROM_LONGPRESS_FOREGROUND, url);
+ mTab, webContents, tabLaunchType, url);
if (success) {
if (disposition == WindowOpenDisposition.NEW_FOREGROUND_TAB) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
@@ -20,6 +20,7 @@ import androidx.annotation.Px;
@@ -18,6 +18,7 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.Callback;
+import org.chromium.base.ContextUtils;
import org.chromium.base.ObserverList;
import org.chromium.base.TraceEvent;
import org.chromium.base.supplier.MonotonicObservableSupplier;
@@ -243,11 +244,17 @@ public class LayoutManagerImpl
boolean willBeSelected = willAddedTabBeSelected(launchType, incognito);
float lastTapX = LocalizationUtils.isLayoutRtl() ? mHost.getWidth() * mPxToDp : 0.f;
float lastTapY = 0.f;
+ boolean selectionPopupTabsForeground =
+ ContextUtils.getAppSharedPreferences().getBoolean(
+ "selection_popup_tabs_foreground", false);
+ if (selectionPopupTabsForeground) {
+ willBeSelected = launchType != TabLaunchType.FROM_RESTORE_TABS_UI
+ || (!getTabModelSelector().isIncognitoSelected() && incognito);
+ }
if (launchType != TabLaunchType.FROM_CHROME_UI) {
lastTapX = mPxToDp * mLastTapX;
lastTapY = mPxToDp * mLastTapY;
}
-
tabCreated(
tabId,
getTabModelSelector().getCurrentTabId(),
import org.chromium.base.supplier.ObservableSupplier;
@@ -237,6 +238,13 @@ public class LayoutManagerImpl
!= TabLaunchType
.FROM_COLLABORATION_BACKGROUND_IN_GROUP)
|| (!getTabModelSelector().isIncognitoSelected() && incognito);
+ boolean selectionPopupTabsForeground =
+ ContextUtils.getAppSharedPreferences().getBoolean(
+ "selection_popup_tabs_foreground", false);
+ if (selectionPopupTabsForeground) {
+ willBeSelected = launchType != TabLaunchType.FROM_RESTORE_TABS_UI
+ || (!getTabModelSelector().isIncognitoSelected() && incognito);
+ }
float lastTapX = LocalizationUtils.isLayoutRtl() ? mHost.getWidth() * mPxToDp : 0.f;
float lastTapY = 0.f;
if (launchType != TabLaunchType.FROM_CHROME_UI) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
@@ -433,8 +433,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
public void onOpenImageInNewTab(GURL url, @Nullable Referrer referrer) {
@@ -317,8 +317,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
public void onOpenImageInNewTab(GURL url, Referrer referrer) {
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
loadUrlParams.setReferrer(referrer);
+ @TabLaunchType int type = TabLaunchType.FROM_LONGPRESS_BACKGROUND;
@@ -181,15 +130,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -34,6 +34,7 @@ import androidx.core.view.WindowInsetsCompat;
@@ -28,6 +28,7 @@ import androidx.appcompat.content.res.AppCompatResources;
import org.chromium.base.BuildInfo;
import org.chromium.base.Callback;
import org.chromium.base.CallbackController;
+import org.chromium.base.ContextUtils;
import org.chromium.base.DeviceInfo;
import org.chromium.base.TraceEvent;
import org.chromium.base.lifetime.Destroyable;
@@ -1060,11 +1061,16 @@ public class RootUiCoordinator
import org.chromium.base.metrics.RecordUserAction;
@@ -823,11 +824,16 @@ public class RootUiCoordinator
TrackerFactory.getTrackerForProfile(tab.getProfile())
.notifyEvent(EventConstants.WEB_SEARCH_PERFORMED);
@@ -246,31 +195,10 @@ new file mode 100644
+ Smart Text selection automatically augments the selected boundaries and classifies the selected text based on the context by sending selection together with its surrounding text
+ </message>
+</grit-part>
diff --git a/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillSelectionMenuItemHelper.java b/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillSelectionMenuItemHelper.java
--- a/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillSelectionMenuItemHelper.java
+++ b/components/android_autofill/browser/java/src/org/chromium/components/autofill/AutofillSelectionMenuItemHelper.java
@@ -39,7 +39,7 @@ public class AutofillSelectionMenuItemHelper {
.setGroupId(R.id.select_action_menu_delegate_items)
.setOrderAndCategory(
Menu.FIRST,
- SelectionMenuItem.ItemGroupOffset.SECONDARY_ASSIST_ITEMS)
+ SelectionMenuItem.ItemGroupOffset.SECONDARY_ASSIST_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_WITH_TEXT)
@@ -52,7 +52,7 @@ public class AutofillSelectionMenuItemHelper {
.setGroupId(R.id.select_action_menu_delegate_items)
.setOrderAndCategory(
Menu.CATEGORY_SECONDARY, // Show at end of section.
- SelectionMenuItem.ItemGroupOffset.SECONDARY_ASSIST_ITEMS)
+ SelectionMenuItem.ItemGroupOffset.SECONDARY_ASSIST_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_NEVER
| MenuItem.SHOW_AS_ACTION_WITH_TEXT)
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -89,4 +89,28 @@ found in the LICENSE file.
@@ -73,4 +73,28 @@ found in the LICENSE file.
android:key="disable_toolbar_swipeup"
android:title="@string/disable_toolbar_swipe_up" />
@@ -302,178 +230,31 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
@@ -169,7 +169,7 @@ public class SelectActionMenuHelper {
return new SelectionMenuItem.Builder(primaryAction.getTitle())
.setId(android.R.id.textAssist)
.setGroupId(R.id.select_action_menu_assist_items)
- .setOrderAndCategory(0, ItemGroupOffset.ASSIST_ITEMS)
+ .setOrderAndCategory(0, ItemGroupOffset.ASSIST_ITEMS())
.setIcon(getPrimaryActionIconForClassificationResult(classificationResult, context))
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
.build();
@@ -247,7 +247,7 @@ public class SelectActionMenuHelper {
.setGroupId(groupId)
.setIcon(icons == null ? null : icons.get(i))
.setOrderAndCategory(
- i - startIndex, ItemGroupOffset.SECONDARY_ASSIST_ITEMS)
+ i - startIndex, ItemGroupOffset.SECONDARY_ASSIST_ITEMS())
.setContentDescription(action.getContentDescription())
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
.build();
@@ -296,7 +296,7 @@ public class SelectActionMenuHelper {
.setId(Menu.NONE)
.setGroupId(R.id.select_action_menu_text_processing_items)
.setIcon(icon)
- .setOrderAndCategory(i, ItemGroupOffset.TEXT_PROCESSING_ITEMS)
+ .setOrderAndCategory(i, ItemGroupOffset.TEXT_PROCESSING_ITEMS())
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM)
.setIntent(intent)
.build());
@@ -341,7 +341,7 @@ public class SelectActionMenuHelper {
.setGroupId(R.id.select_action_menu_default_items)
.setIconAttr(android.R.attr.actionModeCutDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.CUT)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true)
@@ -355,7 +355,7 @@ public class SelectActionMenuHelper {
.setGroupId(R.id.select_action_menu_default_items)
.setIconAttr(android.R.attr.actionModeCopyDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.COPY)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true)
@@ -369,7 +369,7 @@ public class SelectActionMenuHelper {
.setGroupId(R.id.select_action_menu_default_items)
.setIconAttr(android.R.attr.actionModePasteDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.PASTE)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true)
@@ -385,7 +385,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_share)
.setGroupId(R.id.select_action_menu_default_items)
.setIconAttr(android.R.attr.actionModeShareDrawable)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true)
@@ -399,7 +399,7 @@ public class SelectActionMenuHelper {
.setGroupId(R.id.select_action_menu_default_items)
.setIconAttr(android.R.attr.actionModeSelectAllDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.SELECT_ALL)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true)
@@ -412,7 +412,7 @@ public class SelectActionMenuHelper {
new SelectionMenuItem.Builder(android.R.string.paste_as_plain_text)
.setId(R.id.select_action_menu_paste_as_plain_text)
.setGroupId(R.id.select_action_menu_default_items)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true);
@@ -432,7 +432,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_web_search)
.setGroupId(R.id.select_action_menu_default_items)
.setIconAttr(android.R.attr.actionModeWebSearchDrawable)
- .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS)
+ .setOrderAndCategory(order, ItemGroupOffset.DEFAULT_ITEMS())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(true)
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
@@ -1133,7 +1133,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
private boolean handleAssistMenuItemClick(int order) {
// Primary assist action is always the first action in the list so offset by 1.
- int index = 1 + order - SelectionMenuItem.ItemGroupOffset.SECONDARY_ASSIST_ITEMS;
+ int index = 1 + order - SelectionMenuItem.ItemGroupOffset.SECONDARY_ASSIST_ITEMS();
if (mClassificationResult == null
|| mClassificationResult.textClassification == null
|| mClassificationResult.textClassification.getActions().size() <= index) {
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java b/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java
@@ -19,6 +19,7 @@ import org.jni_zero.JNINamespace;
import org.jni_zero.JniType;
import org.jni_zero.NativeMethods;
+import org.chromium.base.ContextUtils;
import org.chromium.base.ObserverList;
import org.chromium.base.UserData;
import org.chromium.build.annotations.Initializer;
@@ -81,6 +82,9 @@ public class SmartSelectionClient implements SelectionClient, UserData {
return null;
}
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(
+ "selection_popup_smart_text", false)) return null;
+
SmartSelectionClient client =
assumeNonNull(
webContents.getOrSetUserData(
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/PendingSelectionMenu.java b/content/public/android/java/src/org/chromium/content_public/browser/PendingSelectionMenu.java
--- a/content/public/android/java/src/org/chromium/content_public/browser/PendingSelectionMenu.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/PendingSelectionMenu.java
@@ -165,13 +165,13 @@ public final class PendingSelectionMenu {
@VisibleForTesting
public @LogicalGroup int determineGroup(SelectionMenuItem item) {
int order = item.order;
- if (order >= ItemGroupOffset.TEXT_PROCESSING_ITEMS) {
+ if (order >= ItemGroupOffset.TEXT_PROCESSING_ITEMS()) {
return LogicalGroup.TEXT_PROCESSING_ITEMS;
- } else if (order >= ItemGroupOffset.SECONDARY_ASSIST_ITEMS) {
+ } else if (order >= ItemGroupOffset.SECONDARY_ASSIST_ITEMS()) {
return LogicalGroup.SECONDARY_ASSIST_ITEMS;
- } else if (order >= ItemGroupOffset.DEFAULT_ITEMS) {
+ } else if (order >= ItemGroupOffset.DEFAULT_ITEMS()) {
return LogicalGroup.DEFAULT_ITEMS;
- } else if (order >= ItemGroupOffset.ASSIST_ITEMS) {
+ } else if (order >= ItemGroupOffset.ASSIST_ITEMS()) {
return LogicalGroup.ASSIST_ITEMS;
}
throw new IllegalStateException("Invalid order. Must be >= 0");
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/SelectionMenuItem.java b/content/public/android/java/src/org/chromium/content_public/browser/SelectionMenuItem.java
--- a/content/public/android/java/src/org/chromium/content_public/browser/SelectionMenuItem.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/SelectionMenuItem.java
@@ -18,6 +18,7 @@ import androidx.annotation.IntDef;
import androidx.annotation.StringRes;
import androidx.appcompat.content.res.AppCompatResources;
@@ -27,6 +27,7 @@ import androidx.core.content.ContextCompat;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
+import org.chromium.base.ContextUtils;
import org.chromium.base.PackageManagerUtils;
import org.chromium.base.StrictModeContext;
import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
@@ -54,38 +55,84 @@ import java.util.TreeSet;
public class SelectActionMenuHelper {
private static final String TAG = "SelectActionMenu"; // 20 char limit.
@@ -34,18 +35,38 @@ public final class SelectionMenuItem implements Comparable<SelectionMenuItem> {
* less than SECONDARY_ASSIST_ITEMS will appear in the default items section. Each section is
* separated by a divider in dropdown menus.
*/
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({
- ItemGroupOffset.ASSIST_ITEMS,
- ItemGroupOffset.DEFAULT_ITEMS,
- ItemGroupOffset.SECONDARY_ASSIST_ITEMS,
- ItemGroupOffset.TEXT_PROCESSING_ITEMS
- GroupItemOrder.ASSIST_ITEMS,
- GroupItemOrder.DEFAULT_ITEMS,
- GroupItemOrder.SECONDARY_ASSIST_ITEMS,
- GroupItemOrder.TEXT_PROCESSING_ITEMS
- })
- public @interface ItemGroupOffset {
- int ASSIST_ITEMS = 0;
- int DEFAULT_ITEMS = 10;
- int SECONDARY_ASSIST_ITEMS = 20;
- int TEXT_PROCESSING_ITEMS = 30;
+ public static class ItemGroupOffset {
- public @interface GroupItemOrder {
- int ASSIST_ITEMS = 1;
- int DEFAULT_ITEMS = 2;
- int SECONDARY_ASSIST_ITEMS = 3;
- int TEXT_PROCESSING_ITEMS = 4;
+ private static class GroupItemOrderChromium {
+ static int CHROMIUM_ASSIST_ITEMS = 1;
+ static int CHROMIUM_DEFAULT_ITEMS = 2;
+ static int CHROMIUM_SECONDARY_ASSIST_ITEMS = 3;
@@ -507,93 +288,189 @@ diff --git a/content/public/android/java/src/org/chromium/content_public/browser
+ }
}
private final @AttrRes int mIconAttr;
@@ -210,25 +231,23 @@ public final class SelectionMenuItem implements Comparable<SelectionMenuItem> {
* @param order the order, must be >= 0.
* @param category the section of the menu in which this item should appear.
*/
- public Builder setOrderAndCategory(int order, @ItemGroupOffset int category) {
+ public Builder setOrderAndCategory(int order, int category) {
if (order < 0) {
throw new IllegalArgumentException("Invalid order. Must be >= 0");
}
// Make sure items don't spill over into the next category.
- mOrder =
- switch (category) {
- case ItemGroupOffset.ASSIST_ITEMS ->
- Math.min(order + category, ItemGroupOffset.DEFAULT_ITEMS - 1);
- case ItemGroupOffset.DEFAULT_ITEMS ->
- Math.min(
- order + category,
- ItemGroupOffset.SECONDARY_ASSIST_ITEMS - 1);
- case ItemGroupOffset.SECONDARY_ASSIST_ITEMS ->
- Math.min(
- order + category,
- ItemGroupOffset.TEXT_PROCESSING_ITEMS - 1);
- default -> order + category;
- };
+ if (category == ItemGroupOffset.ASSIST_ITEMS())
+ mOrder = Math.min(order + category, ItemGroupOffset.DEFAULT_ITEMS() - 1);
+ else if (category == ItemGroupOffset.DEFAULT_ITEMS())
+ mOrder = Math.min(
+ order + category,
+ ItemGroupOffset.SECONDARY_ASSIST_ITEMS() - 1);
+ else if (category == ItemGroupOffset.SECONDARY_ASSIST_ITEMS())
+ mOrder = Math.min(
+ order + category,
+ ItemGroupOffset.TEXT_PROCESSING_ITEMS() - 1);
+ else
+ mOrder = order + category;
return this;
}
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/selection/SelectionActionMenuDelegate.java b/content/public/android/java/src/org/chromium/content_public/browser/selection/SelectionActionMenuDelegate.java
--- a/content/public/android/java/src/org/chromium/content_public/browser/selection/SelectionActionMenuDelegate.java
+++ b/content/public/android/java/src/org/chromium/content_public/browser/selection/SelectionActionMenuDelegate.java
@@ -7,6 +7,7 @@ package org.chromium.content_public.browser.selection;
import android.content.pm.ResolveInfo;
import android.view.View;
+import org.chromium.base.ContextUtils;
import org.chromium.base.SelectionActionMenuClientWrapper.DefaultItem;
import org.chromium.base.SelectionActionMenuClientWrapper.MenuType;
import org.chromium.build.annotations.NullMarked;
@@ -23,15 +24,28 @@ import java.util.List;
@NullMarked
public interface SelectionActionMenuDelegate {
static @DefaultItem int[] getDefaultMenuItemOrder() {
- return new @DefaultItem int[] {
- DefaultItem.CUT,
- DefaultItem.COPY,
- DefaultItem.PASTE,
- DefaultItem.PASTE_AS_PLAIN_TEXT,
- DefaultItem.SHARE,
- DefaultItem.SELECT_ALL,
- DefaultItem.WEB_SEARCH
- };
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(
+ "selection_popup_web_search_to_top", false)) {
+ return new @DefaultItem int[] {
+ DefaultItem.CUT,
+ DefaultItem.COPY,
+ DefaultItem.PASTE,
+ DefaultItem.PASTE_AS_PLAIN_TEXT,
+ DefaultItem.SHARE,
+ DefaultItem.SELECT_ALL,
+ DefaultItem.WEB_SEARCH
+ };
+ } else {
+ return new @DefaultItem int[] {
+ DefaultItem.WEB_SEARCH,
+ DefaultItem.CUT,
+ DefaultItem.COPY,
+ DefaultItem.PASTE,
+ DefaultItem.PASTE_AS_PLAIN_TEXT,
+ DefaultItem.SHARE,
+ DefaultItem.SELECT_ALL
+ };
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({
- DefaultItemOrder.CUT,
- DefaultItemOrder.COPY,
- DefaultItemOrder.PASTE,
- DefaultItemOrder.PASTE_AS_PLAIN_TEXT,
- DefaultItemOrder.SHARE,
- DefaultItemOrder.SELECT_ALL,
- DefaultItemOrder.WEB_SEARCH
- })
- public @interface DefaultItemOrder {
- int CUT = 1;
- int COPY = 2;
- int PASTE = 3;
- int PASTE_AS_PLAIN_TEXT = 4;
- int SHARE = 5;
- int SELECT_ALL = 6;
- int WEB_SEARCH = 7;
+ private static class DefaultItemOrderChromium {
+ static int CHROMIUM_CUT = 1;
+ static int CHROMIUM_COPY = 2;
+ static int CHROMIUM_PASTE = 3;
+ static int CHROMIUM_SHARE = 4;
+ static int CHROMIUM_SELECT_ALL = 5;
+ static int CHROMIUM_PASTE_AS_PLAIN_TEXT = 6;
+ static int CHROMIUM_WEB_SEARCH = 7;
+
+ static int CROMITE_WEB_SEARCH = 1;
+ static int CROMITE_CUT = 2;
+ static int CROMITE_COPY = 3;
+ static int CROMITE_PASTE = 4;
+ static int CROMITE_SHARE = 5;
+ static int CROMITE_SELECT_ALL = 6;
+ static int CROMITE_PASTE_AS_PLAIN_TEXT = 7;
+
+ private static int GetValue(int a, int b) {
+ return !ContextUtils.getAppSharedPreferences().getBoolean(
+ "selection_popup_web_search_to_top", false)
+ ? a : b;
+ }
+
+ public static int CUT() {
+ return GetValue(CHROMIUM_CUT, CROMITE_CUT);
+ }
+ public static int COPY() {
+ return GetValue(CHROMIUM_COPY, CROMITE_COPY);
+ }
+ public static int PASTE() {
+ return GetValue(CHROMIUM_PASTE, CROMITE_PASTE);
+ }
+ public static int SHARE() {
+ return GetValue(CHROMIUM_SHARE, CROMITE_SHARE);
+ }
+ public static int SELECT_ALL() {
+ return GetValue(CHROMIUM_SELECT_ALL, CROMITE_SELECT_ALL);
+ }
+ public static int PASTE_AS_PLAIN_TEXT() {
+ return GetValue(CHROMIUM_PASTE_AS_PLAIN_TEXT, CROMITE_PASTE_AS_PLAIN_TEXT);
+ }
+ public static int WEB_SEARCH() {
+ return GetValue(CHROMIUM_WEB_SEARCH, CROMITE_WEB_SEARCH);
+ }
}
/**
@Retention(RetentionPolicy.SOURCE)
@@ -196,7 +243,7 @@ public class SelectActionMenuHelper {
}
SelectionMenuGroup primaryAssistGroup =
new SelectionMenuGroup(
- R.id.select_action_menu_assist_items, GroupItemOrder.ASSIST_ITEMS);
+ R.id.select_action_menu_assist_items, GroupItemOrderChromium.ASSIST_ITEMS());
View.OnClickListener clickListener = null;
if (classificationResult.onClickListener != null) {
clickListener = classificationResult.onClickListener;
@@ -223,7 +270,7 @@ public class SelectActionMenuHelper {
String selectedText) {
SelectionMenuGroup defaultGroup =
new SelectionMenuGroup(
- R.id.select_action_menu_default_items, GroupItemOrder.DEFAULT_ITEMS);
+ R.id.select_action_menu_default_items, GroupItemOrderChromium.DEFAULT_ITEMS());
List<SelectionMenuItem.Builder> menuItemBuilders = new ArrayList<>();
menuItemBuilders.add(cut(delegate.canCut()));
menuItemBuilders.add(copy(delegate.canCopy()));
@@ -251,7 +298,7 @@ public class SelectActionMenuHelper {
// menu items if there is selected text.
@IdRes int groupId = selectedText.isEmpty() ? Menu.NONE : android.R.id.textAssist;
SelectionMenuGroup secondaryAssistItems =
- new SelectionMenuGroup(groupId, GroupItemOrder.SECONDARY_ASSIST_ITEMS);
+ new SelectionMenuGroup(groupId, GroupItemOrderChromium.SECONDARY_ASSIST_ITEMS());
if (selectedText.isEmpty() && selectionActionMenuDelegate != null) {
List<SelectionMenuItem> additionalMenuItems =
@@ -313,7 +360,7 @@ public class SelectActionMenuHelper {
SelectionMenuGroup textProcessingItems =
new SelectionMenuGroup(
R.id.select_action_menu_text_processing_items,
- GroupItemOrder.TEXT_PROCESSING_ITEMS);
+ GroupItemOrderChromium.TEXT_PROCESSING_ITEMS());
if (isSelectionPassword || intentHandler == null) {
addAdditionalTextProcessingItems(textProcessingItems, selectionActionMenuDelegate);
return textProcessingItems;
@@ -415,7 +462,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_cut)
.setIconAttr(android.R.attr.actionModeCutDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.CUT)
- .setOrderInCategory(DefaultItemOrder.CUT)
+ .setOrderInCategory(DefaultItemOrderChromium.CUT())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -427,7 +474,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_copy)
.setIconAttr(android.R.attr.actionModeCopyDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.COPY)
- .setOrderInCategory(DefaultItemOrder.COPY)
+ .setOrderInCategory(DefaultItemOrderChromium.COPY())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -439,7 +486,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_paste)
.setIconAttr(android.R.attr.actionModePasteDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.PASTE)
- .setOrderInCategory(DefaultItemOrder.PASTE)
+ .setOrderInCategory(DefaultItemOrderChromium.PASTE())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -453,7 +500,7 @@ public class SelectActionMenuHelper {
return new SelectionMenuItem.Builder(context.getString(R.string.actionbar_share))
.setId(R.id.select_action_menu_share)
.setIconAttr(android.R.attr.actionModeShareDrawable)
- .setOrderInCategory(DefaultItemOrder.SHARE)
+ .setOrderInCategory(DefaultItemOrderChromium.SHARE())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -465,7 +512,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_select_all)
.setIconAttr(android.R.attr.actionModeSelectAllDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.SELECT_ALL)
- .setOrderInCategory(DefaultItemOrder.SELECT_ALL)
+ .setOrderInCategory(DefaultItemOrderChromium.SELECT_ALL())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -477,7 +524,7 @@ public class SelectActionMenuHelper {
SelectionMenuItem.Builder builder =
new SelectionMenuItem.Builder(android.R.string.paste_as_plain_text)
.setId(R.id.select_action_menu_paste_as_plain_text)
- .setOrderInCategory(DefaultItemOrder.PASTE_AS_PLAIN_TEXT)
+ .setOrderInCategory(DefaultItemOrderChromium.PASTE_AS_PLAIN_TEXT())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled);
@@ -497,7 +544,7 @@ public class SelectActionMenuHelper {
return new SelectionMenuItem.Builder(context.getString(R.string.actionbar_web_search))
.setId(R.id.select_action_menu_web_search)
.setIconAttr(android.R.attr.actionModeWebSearchDrawable)
- .setOrderInCategory(DefaultItemOrder.WEB_SEARCH)
+ .setOrderInCategory(DefaultItemOrderChromium.WEB_SEARCH())
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java b/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SmartSelectionClient.java
@@ -18,6 +18,7 @@ import org.jni_zero.CalledByNative;
import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
+import org.chromium.base.ContextUtils;
import org.chromium.base.ObserverList;
import org.chromium.base.UserData;
import org.chromium.build.annotations.Initializer;
@@ -85,6 +86,9 @@ public class SmartSelectionClient implements SelectionClient, UserData {
return null;
}
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(
+ "selection_popup_smart_text", false)) return null;
+
SmartSelectionClient client =
assumeNonNull(
((WebContentsImpl) webContents)
--
@@ -10,103 +10,47 @@ Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/layout/url_bar.xml | 1 +
.../browser/omnibox/LocationBarMediator.java | 25 +++++++++++++-----
.../chrome/browser/omnibox/UrlBar.java | 26 +++++++++++++++++++
.../browser/omnibox/UrlBarViewBinder.java | 1 +
4 files changed, 47 insertions(+), 6 deletions(-)
.../browser/omnibox/LocationBarMediator.java | 13 ++++++++--
.../chrome/browser/omnibox/UrlBar.java | 24 +++++++++++++++++++
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml
--- a/chrome/android/java/res/layout/url_bar.xml
+++ b/chrome/android/java/res/layout/url_bar.xml
@@ -16,6 +16,7 @@ found in the LICENSE file.
@@ -15,5 +15,6 @@ found in the LICENSE file.
android:singleLine="true"
android:imeOptions="actionGo|flagNoExtractUi|flagNoFullscreen"
android:textAppearance="@style/TextAppearance.SearchBoxText"
+ android:inputType="textUri"
android:hint="@string/omnibox_empty_hint"
android:textAlignment="viewStart"
android:importantForAutofill="no"
android:importantForAutofill="no" />
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -591,7 +591,7 @@ class LocationBarMediator
if (NativePage.isChromePageUrl(currentUrl, mLocationBarDataProvider.isOffTheRecord())
&& mCurrentInput != null) {
mCurrentInput.setUserText(null);
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
} else {
setUrlBarText(
mLocationBarDataProvider.getUrlBarData(),
@@ -842,7 +842,7 @@ class LocationBarMediator
if (mCurrentInput == null) return; // session not started yet.
mCurrentInput.setUserText(null);
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
updateButtonVisibility();
mUrlCoordinator.requestAccessibilityFocus();
}
@@ -923,7 +923,7 @@ class LocationBarMediator
// Existing text (e.g. if the user pasted via the fakebox) from the fake box
// should be restored after toggling the focus.
if (mCurrentInput != null && !mCurrentInput.getUserText().isEmpty()) {
- beginOrResumeInput(/* activateNewSession= */ false);
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
}
}
@@ -968,7 +968,7 @@ class LocationBarMediator
*/
@EnsuresNonNullIf("mCurrentInput")
@VisibleForTesting
- void beginOrResumeInput(boolean activateNewSession) {
+ void beginOrResumeInput(boolean activateNewSession, boolean wasFocus) {
// Do not instantiate a new ephemeral session unless we're activating it as well.
var session = FuseboxSessionState.from(mLocationBarDataProvider);
@@ -1002,6 +1002,19 @@ class LocationBarMediator
.addSyncObserverAndCallIfNonNull(mAutocompleteRequestTypeObserver);
UrlBarData data = UrlBarData.forNonUrlText(mCurrentInput.getUserText());
+ if (wasFocus) {
+ data = mLocationBarDataProvider.getUrlBarData();
+ GURL url = mLocationBarDataProvider.getUrlBarData().url;
+ if (url != null && mTemplateUrlServiceSupplier.get() != null) {
+ String searchParams =
+ mTemplateUrlServiceSupplier.get().getSearchQueryForUrl(url);
+ if (searchParams != null && !searchParams.isEmpty()) {
+ mCurrentInput.setUserText(searchParams);
+ data = UrlBarData.forUrlAndText(data.url, data.displayText, searchParams);
@@ -297,8 +297,17 @@ class LocationBarMediator
if (!mUrlFocusedWithPastedText
&& !shouldRetainOmniboxOnFocus
&& mLocationBarLayout.shouldClearTextOnFocus()) {
- setUrlBarText(
- UrlBarData.EMPTY, UrlBar.ScrollType.NO_SCROLL, SelectionState.SELECT_END);
+ UrlBarData data = mLocationBarDataProvider.getUrlBarData();
+ @SelectionState int selectionState = SelectionState.SELECT_ALL;
+ GURL url = mLocationBarDataProvider.getUrlBarData().url;
+ if (url != null && mTemplateUrlServiceSupplier.hasValue()) {
+ String searchParams =
+ mTemplateUrlServiceSupplier.get().getSearchQueryForUrl(url);
+ if (searchParams != null && !searchParams.isEmpty()) {
+ data = UrlBarData.forUrlAndText(data.url, data.displayText, searchParams);
+ }
+ }
+ }
+ mCurrentInput.setSelection(0, Integer.MAX_VALUE);
+ }
mUrlCoordinator.setUrlBarData(
data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection());
@@ -1076,7 +1089,7 @@ class LocationBarMediator
// This call is permitted to happen before anyone else is activated, and
// must be called before everyone else cleans up.
if (hasFocus) {
- beginOrResumeInput(/* activateNewSession= */ true);
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ true);
} else {
endInputInternal();
}
@@ -1953,7 +1966,7 @@ class LocationBarMediator
}
// Wait for the Url focus change before refreshing autocomplete.
- beginOrResumeInput(/* activateNewSession= */ true);
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ false);
}
/**
+ setUrlBarText(data, UrlBar.ScrollType.NO_SCROLL, selectionState);
} else if (shouldRetainOmniboxOnFocus) {
mUrlCoordinator.setSelectAllOnFocus(true);
}
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
@@ -11,6 +11,7 @@ import android.graphics.Canvas;
@@ -9,6 +9,7 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Build;
@@ -114,26 +58,18 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import android.os.SystemClock;
import android.text.Editable;
import android.text.InputType;
@@ -57,6 +58,7 @@ import org.chromium.components.browser_ui.util.FirstDrawDetector;
import org.chromium.components.omnibox.OmniboxFeatures;
import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.KeyNavigationUtil;
+import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.display.DisplayAndroid;
import org.chromium.ui.display.DisplayUtil;
@@ -109,6 +111,7 @@ public class UrlBar extends AutocompleteEditText {
private boolean mFocusEventEmitted;
@@ -110,6 +111,7 @@ public class UrlBar extends AutocompleteEditText {
private boolean mAllowFocus = true;
private boolean mAllowMultilineInput;
+ private boolean mPendingSelectAll;
private boolean mCurrentInputCanBeWrapped;
private boolean mShouldSendTypingStartedEvent;
+ private boolean mPendingSelectAll;
private boolean mPendingScroll;
@@ -332,6 +335,29 @@ public class UrlBar extends AutocompleteEditText {
mPendingScroll = false;
}
private boolean mIsInCct;
@@ -336,6 +338,28 @@ public class UrlBar extends AutocompleteEditText {
fixupTextDirection();
mShouldSendTypingStartedEvent = focused;
+
+ if (mPendingSelectAll) {
+ UrlBar sender = this;
@@ -149,8 +85,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
+
+ @Override
+ public void selectAll() {
+ if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext()))
+ mPendingSelectAll = true;
+ mPendingSelectAll = true;
+ super.selectAll();
+ }
+
@@ -160,15 +95,4 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
}
@Override
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBarViewBinder.java
@@ -100,6 +100,7 @@ class UrlBarViewBinder {
selectionRange = Range.create(textLength, textLength);
}
view.setSelection(selectionRange.getLower(), selectionRange.getUpper());
+ view.selectAll();
view.requestAccessibilityFocus();
}
} else if (UrlBarProperties.TEXT_COLOR.equals(propertyKey)) {
--
@@ -27,22 +27,22 @@ new file mode 100644
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -11,6 +11,11 @@ found in the LICENSE file.
android:key="zoom_info"
android:title="@string/zoom_info_preference_title"/>
@@ -8,6 +8,11 @@ found in the LICENSE file.
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="enable_accessibility"
+ android:summary="@string/enable_accessibility_summary"
+ android:title="@string/enable_accessibility_title" />
+
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
android:key="page_zoom_include_os_adjustment"
android:summary="@string/page_zoom_include_os_adjustment_summary"
<org.chromium.components.browser_ui.accessibility.PageZoomPreference
android:key="page_zoom_default_zoom"
android:selectable="false" />
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
@@ -1325,6 +1325,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa
@@ -1095,6 +1095,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa
structure.setChildCount(0);
return;
}
@@ -4,7 +4,6 @@ Subject: Disable Android AppRestrictions
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../org/chromium/chrome/browser/AppHooks.java | 4 +-
chrome/browser/enterprise/util/BUILD.gn | 1 +
.../enterprise/util/EnterpriseInfoImpl.java | 5 +++
chrome/browser/flags/BUILD.gn | 1 +
@@ -13,49 +12,35 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../DisableAndroidAppRestriction.inc | 13 +++++++
.../disable-android-app-restriction.inc | 3 ++
.../disable-android-app-restriction.inc | 1 +
9 files changed, 77 insertions(+), 2 deletions(-)
8 files changed, 75 insertions(+)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/DisableAndroidAppRestriction.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/disable-android-app-restriction.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/disable-android-app-restriction.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
@@ -43,8 +43,8 @@ public class AppHooks {
}
public void registerPolicyProviders(CombinedPolicyProvider combinedProvider) {
- combinedProvider.registerProvider(
- new AppRestrictionsProvider(ContextUtils.getApplicationContext()));
+ // combinedProvider.registerProvider(
+ // new AppRestrictionsProvider(ContextUtils.getApplicationContext()));
}
/** Async fetch the iterator of partner bookmarks (or null if not available). */
diff --git a/chrome/browser/enterprise/util/BUILD.gn b/chrome/browser/enterprise/util/BUILD.gn
--- a/chrome/browser/enterprise/util/BUILD.gn
+++ b/chrome/browser/enterprise/util/BUILD.gn
@@ -21,6 +21,7 @@ android_library("java") {
@@ -20,6 +20,7 @@ android_library("java") {
"//build/android:build_java",
"//chrome/browser/flags:java",
"//chrome/browser/profiles/android:java",
+ "//components/policy/android:policy_java",
"//content/public/android:content_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",
]
diff --git a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java
--- a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java
+++ b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java
@@ -31,6 +31,7 @@ import org.chromium.build.annotations.NullMarked;
import org.chromium.build.annotations.Nullable;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -23,6 +23,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.components.policy.AppRestrictionsProvider;
import java.util.ArrayDeque;
import java.util.List;
@@ -113,6 +114,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo {
import java.util.LinkedList;
import java.util.Queue;
@@ -104,6 +105,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo {
new AsyncTask<OwnedState>() {
// TODO: Unit test this function. https://crbug.com/1099262
private OwnedState calculateIsRunningOnManagedProfile(Context context) {
@@ -63,16 +48,16 @@ diff --git a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome
+ return new OwnedState(/*hasDeviceOwnerApp*/false,
+ /*hasProfileOwnerApp*/false);
+ }
long startTime = SystemClock.elapsedRealtime();
boolean hasProfileOwnerApp = false;
boolean hasDeviceOwnerApp = false;
PackageManager packageManager = context.getPackageManager();
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
@@ -28,6 +28,7 @@ android_library("java") {
@@ -26,6 +26,7 @@ android_library("java") {
"//build:chromeos_buildflags",
"//build/android:build_java",
"//chrome/browser/preferences:java",
"//content/public/android:content_main_dex_java",
+ "//components/policy/android:policy_java",
"//third_party/android_deps:guava_android_java",
"//third_party/androidx:androidx_annotation_annotation_java",
@@ -1,50 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Tue, 1 Apr 2025 11:37:52 +0000
Subject: Disable Android Tab Declutter
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/xml/main_preferences.xml | 3 ++-
.../org/chromium/chrome/browser/tab/TabArchiveSettings.java | 3 ++-
.../chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc | 1 +
3 files changed, 5 insertions(+), 2 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -98,7 +98,8 @@ found in the LICENSE file.
android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings"
android:key="tabs"
android:order="18"
- android:title="@string/tabs_settings_title"/>
+ android:title="@string/tabs_settings_title"
+ app:isPreferenceVisible="false"/>
<Preference
android:fragment="org.chromium.chrome.browser.glic.GlicSettings"
android:key="glic"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabArchiveSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabArchiveSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabArchiveSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabArchiveSettings.java
@@ -105,11 +105,12 @@ public class TabArchiveSettings {
// are created, and tabs disappearing from tests is very unexpected. For archive tests,
// this will need to be turned on manually.
return mPrefsManager.readBoolean(
- ChromePreferenceKeys.TAB_DECLUTTER_ARCHIVE_ENABLED, !BuildConfig.IS_FOR_TEST);
+ ChromePreferenceKeys.TAB_DECLUTTER_ARCHIVE_ENABLED, false);
}
/** Sets whether archive is enabled in settings. */
public void setArchiveEnabled(boolean enabled) {
+ enabled = false;
mPrefsManager.writeBoolean(ChromePreferenceKeys.TAB_DECLUTTER_ARCHIVE_ENABLED, enabled);
}
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc
@@ -0,0 +1 @@
+// empty
--
@@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc b/third_party/blink/renderer/core/css/parser/css_supports_parser.cc
--- a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc
+++ b/third_party/blink/renderer/core/css/parser/css_supports_parser.cc
@@ -298,7 +298,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) {
@@ -393,7 +393,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) {
feature_name.Value().Utf8()) &&
guard.Release()) {
stream.ConsumeWhitespace();
@@ -28,7 +28,7 @@ diff --git a/third_party/blink/renderer/core/css/parser/css_supports_parser.cc b
diff --git a/third_party/blink/renderer/core/speculation_rules/document_rule_predicate.cc b/third_party/blink/renderer/core/speculation_rules/document_rule_predicate.cc
--- a/third_party/blink/renderer/core/speculation_rules/document_rule_predicate.cc
+++ b/third_party/blink/renderer/core/speculation_rules/document_rule_predicate.cc
@@ -521,7 +521,7 @@ DocumentRulePredicate* DocumentRulePredicate::Parse(
@@ -585,7 +585,7 @@ DocumentRulePredicate* DocumentRulePredicate::Parse(
HeapVector<CSSSelector> arena;
CSSPropertyValueSet* empty_properties =
ImmutableCSSPropertyValueSet::Create(base::span<CSSPropertyValue>(),
@@ -1,27 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Fri, 2 May 2025 14:20:38 +0000
Subject: Disable CSSDynamicRangeLimit
Disables the ability for pages to limit the maximum brightness of HDR content
since use as screen fingerprinting is possible.
see https://www.github.com/w3ctag/design-reviews/issues/1027
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../blink/renderer/platform/runtime_enabled_features.json5 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1507,7 +1507,7 @@
},
{
name: "CSSDynamicRangeLimit",
- status: "stable",
+ status: "experimental",
},
{
// Include custom properties in CSSComputedStyleDeclaration::item/length.
--
+41 -16
View File
@@ -4,25 +4,50 @@ Subject: Disable Compose feature
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/browser/ui/webui/settings/settings_ui.cc | 4 ++--
chrome/browser/BUILD.gn | 9 +++++++--
chrome/browser/ui/webui/settings/settings_ui.cc | 2 +-
components/compose/core/browser/compose_features.cc | 2 ++
components/compose/features.gni | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)
4 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -8151,6 +8151,12 @@ static_library("browser") {
deps += [ "//components/segmentation_platform/internal:optimization_guide_segmentation_handler" ]
}
+ if (!is_android) {
+ deps += [
+ ":compose_optimization_guide_proto",
+ ]
+ }
+
if (enable_compose) {
sources += [
"compose/chrome_compose_client.cc",
@@ -8166,7 +8172,6 @@ static_library("browser") {
]
deps += [
- ":compose_optimization_guide_proto",
"//chrome/common/compose",
"//chrome/common/compose:mojo_bindings",
"//components/autofill/content/browser:browser",
@@ -8609,7 +8614,7 @@ source_set("font_pref") {
deps = [ "//chrome/common" ]
}
-if (enable_compose) {
+if (!is_android) {
proto_library("compose_optimization_guide_proto") {
sources = [ "compose/proto/compose_optimization_guide.proto" ]
cc_generator_options = "lite=true:"
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc
--- a/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -21,7 +21,7 @@
#include "chrome/browser/browser_features.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/commerce/shopping_service_factory.h"
-#include "chrome/browser/compose/compose_enabling.h"
+// #include "chrome/browser/compose/compose_enabling.h"
#include "chrome/browser/glic/public/glic_enabling.h"
#include "chrome/browser/glic/public/glic_keyed_service.h"
#include "chrome/browser/history_embeddings/history_embeddings_utils.h"
@@ -369,7 +369,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
base::FeatureList::IsEnabled(permissions::features::kKeyboardLockPrompt));
@@ -382,7 +382,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
base::FeatureList::IsEnabled(features::kLinkedServicesSetting));
#if BUILDFLAG(ENABLE_COMPOSE)
- const bool compose_enabled = ComposeEnabling::IsEnabledForProfile(profile);
@@ -33,9 +58,9 @@ diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui
diff --git a/components/compose/core/browser/compose_features.cc b/components/compose/core/browser/compose_features.cc
--- a/components/compose/core/browser/compose_features.cc
+++ b/components/compose/core/browser/compose_features.cc
@@ -73,4 +73,6 @@ BASE_FEATURE(kComposeAllowOnDeviceExecution, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kComposeUpfrontInputModes, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -104,4 +104,6 @@ BASE_FEATURE(kComposeUpfrontInputModes,
"ComposeUpfrontInputModes",
base::FEATURE_ENABLED_BY_DEFAULT);
+SET_CROMITE_FEATURE_DISABLED(kEnableCompose);
+SET_CROMITE_FEATURE_DISABLED(kComposeEligible);
@@ -4,28 +4,27 @@ Subject: Disable Compression Dictionary Transport
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/browser/chrome_content_browser_client.cc | 3 +--
.../features_cc/Disable-Compression-Dictionary-Transport.inc | 1 +
2 files changed, 2 insertions(+), 2 deletions(-)
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc
.../blink/renderer/platform/runtime_enabled_features.json5 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1527,8 +1527,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs(
registry->RegisterBooleanPref(prefs::kSandboxExternalProtocolBlocked, true);
registry->RegisterBooleanPref(prefs::kSSLErrorOverrideAllowed, true);
registry->RegisterListPref(prefs::kSSLErrorOverrideAllowedForOrigins);
- registry->RegisterBooleanPref(prefs::kCompressionDictionaryTransportEnabled,
- true);
+ registry->RegisterBooleanPref(prefs::kCompressionDictionaryTransportEnabled, false);
registry->RegisterBooleanPref(
prefs::kSuppressDifferentOriginSubframeJSDialogs, true);
#if BUILDFLAG(IS_ANDROID)
diff --git a/cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc b/cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kCompressionDictionaryTransport);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -878,12 +878,14 @@
}
},
{
- name: "CompressionDictionaryTransport",
+ name: "CompressionDictionaryTransport", // need to be disabled
+ status: "experimental",
base_feature: "none",
public: true,
},
{
- name: "CompressionDictionaryTransportBackend",
+ name: "CompressionDictionaryTransportBackend", // need to be disabled
+ status: "experimental",
base_feature: "none",
public: true,
},
--
@@ -1,32 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Wed, 10 Sep 2025 07:46:17 +0000
Subject: Disable Device Attributes API
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/browser/device_api/device_service_impl.cc | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/chrome/browser/device_api/device_service_impl.cc b/chrome/browser/device_api/device_service_impl.cc
--- a/chrome/browser/device_api/device_service_impl.cc
+++ b/chrome/browser/device_api/device_service_impl.cc
@@ -147,6 +147,7 @@ bool IsAffiliatedUser() {
bool IsTrustedContext(content::RenderFrameHost& host,
const url::Origin& origin) {
+ if ((true)) return false;
// Do not create the service for the incognito mode.
if (GetProfile(host)->IsIncognitoProfile()) {
return false;
@@ -323,6 +324,10 @@ void DeviceServiceImpl::GetAnnotatedLocation(
void DeviceServiceImpl::GetDeviceAttribute(
void (DeviceAttributeApi::*method)(DeviceAttributeCallback callback),
DeviceAttributeCallback callback) {
+ if ((true)) {
+ device_attribute_api_->ReportNotAllowedError(std::move(callback));
+ return;
+ }
if (!IsAffiliatedUser() &&
!IsDevModeInstalledIwaOrigin(render_frame_host(), origin())) {
device_attribute_api_->ReportNotAffiliatedError(std::move(callback));
--
+3 -24
View File
@@ -4,50 +4,29 @@ Subject: Disable FedCm
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../content_settings/core/browser/content_settings_registry.cc | 2 +-
.../content/public/common/content_features_cc/Disable-FedCm.inc | 1 +
.../services/network/public/cpp/features_cc/Disable-FedCm.inc | 1 +
.../third_party/blink/common/features_cc/Disable-FedCm.inc | 1 +
.../blink/renderer/platform/runtime_enabled_features.json5 | 2 +-
5 files changed, 5 insertions(+), 2 deletions(-)
3 files changed, 3 insertions(+), 1 deletion(-)
create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-FedCm.inc
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-FedCm.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-FedCm.inc
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -640,7 +640,7 @@ void ContentSettingsRegistry::Init() {
PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
Register(ContentSettingsType::FEDERATED_IDENTITY_AUTO_REAUTHN_PERMISSION,
- "webid-auto-reauthn", CONTENT_SETTING_ALLOW,
+ "webid-auto-reauthn", CONTENT_SETTING_BLOCK, // requires user mediation
WebsiteSettingsInfo::UNSYNCABLE,
/*allowlisted_primary_schemes=*/{},
/*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK},
diff --git a/cromite_flags/content/public/common/content_features_cc/Disable-FedCm.inc b/cromite_flags/content/public/common/content_features_cc/Disable-FedCm.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/public/common/content_features_cc/Disable-FedCm.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kFedCm);
diff --git a/cromite_flags/services/network/public/cpp/features_cc/Disable-FedCm.inc b/cromite_flags/services/network/public/cpp/features_cc/Disable-FedCm.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/services/network/public/cpp/features_cc/Disable-FedCm.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_ENABLED(kSendSameSiteLaxForFedCM);
diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-FedCm.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-FedCm.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/third_party/blink/common/features_cc/Disable-FedCm.inc
@@ -0,0 +1 @@
+// empty
+SET_CROMITE_FEATURE_DISABLED(kFedCmWithStorageAccessAPI);
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2462,7 +2462,7 @@
@@ -1833,7 +1833,7 @@
{
name: "FedCm",
public: true,
@@ -29,7 +29,7 @@ diff --git a/chrome/browser/feedback/BUILD.gn b/chrome/browser/feedback/BUILD.gn
diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FeedbackCollector.java b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FeedbackCollector.java
--- a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FeedbackCollector.java
+++ b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/FeedbackCollector.java
@@ -29,6 +29,7 @@ import org.chromium.components.signin.identitymanager.ConsentLevel;
@@ -28,6 +28,7 @@ import org.chromium.components.signin.identitymanager.ConsentLevel;
import org.chromium.components.signin.identitymanager.IdentityManager;
import java.util.HashMap;
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browse
import java.util.List;
import java.util.Map;
@@ -73,31 +74,8 @@ public abstract class FeedbackCollector<T> implements Runnable {
@@ -69,31 +70,8 @@ public abstract class FeedbackCollector<T> implements Runnable {
@Nullable ScreenshotSource screenshotTask,
T initParams,
Profile profile) {
+66 -83
View File
@@ -4,62 +4,74 @@ Subject: Disable GSA by default
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../src/org/chromium/base/PackageUtils.java | 1 +
.../chrome/browser/IntentHandler.java | 6 ----
.../chrome/browser/share/LensUtils.java | 14 ++------
.../chromium/chrome/browser/gsa/GSAUtils.java | 34 +++----------------
.../GoogleBottomBarActionsHandler.java | 19 ++---------
.../chrome/browser/pdf/PdfCoordinator.java | 2 +-
.../chrome/browser/IntentHandler.java | 6 ------
.../provider/PageContentProviderImpl.java | 6 ------
.../chrome/browser/share/LensUtils.java | 14 ++------------
.../chromium/chrome/browser/gsa/GSAUtils.java | 10 +++-------
.../GoogleBottomBarActionsHandler.java | 19 ++-----------------
.../chrome/browser/pdf/PdfCoordinator.java | 4 +---
.../Disable-GSA-by-default.inc | 1 +
7 files changed, 12 insertions(+), 65 deletions(-)
7 files changed, 9 insertions(+), 51 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc
diff --git a/base/android/java/src/org/chromium/base/PackageUtils.java b/base/android/java/src/org/chromium/base/PackageUtils.java
--- a/base/android/java/src/org/chromium/base/PackageUtils.java
+++ b/base/android/java/src/org/chromium/base/PackageUtils.java
@@ -185,6 +185,7 @@ public class PackageUtils {
* @return Package name of assistant app, or null if unable to get.
*/
public static @Nullable String getDefaultAssistantPackageName(Context context) {
+ if ((true)) return null;
@Nullable String defaultAssistantSetting =
Settings.Secure.getString(context.getContentResolver(), DEFAULT_ASSISTANT_SETTING);
if (defaultAssistantSetting == null || defaultAssistantSetting.isBlank()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
@@ -51,7 +51,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity;
@@ -45,7 +45,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler;
import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler.RequestMetadata;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
-import org.chromium.chrome.browser.gsa.GSAUtils;
import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator;
import org.chromium.chrome.browser.pdf.PdfUtils;
import org.chromium.chrome.browser.profiles.Profile;
@@ -310,9 +309,6 @@ public class IntentHandler {
public static final String EXTRA_TIPS_NOTIFICATION_FEATURE_TYPE =
"org.chromium.chrome.browser.tips_notification_feature_type";
import org.chromium.chrome.browser.profiles.ProfileManager;
@@ -263,9 +262,6 @@ public class IntentHandler {
public static final String EXTRA_SKIP_PRECONNECT =
"org.chromium.chrome.browser.skip_preconnect";
- /** The package name for the Google Search App. */
- public static final String PACKAGE_GSA = GSAUtils.GSA_PACKAGE_NAME;
-
/** Action to launch the Chrome Item Picker UI, e.g.: tabs. */
public static final String EXTRA_OPEN_CHROME_ITEM_PICKER =
"org.chromium.chrome.browser.actions.open_chrome_item_picker";
@@ -573,8 +569,6 @@ public class IntentHandler {
private static Pair<Integer, String> sPendingReferrer;
private static int sReferrerId;
private static String sPendingIncognitoUrl;
@@ -539,8 +535,6 @@ public class IntentHandler {
return ExternalAppId.LINE;
} else if (PACKAGE_WHATSAPP.equals(packageName)) {
} else if (packageName.equals(PACKAGE_WHATSAPP)) {
return ExternalAppId.WHATSAPP;
- } else if (PACKAGE_GSA.equals(packageName)) {
- } else if (packageName.equals(PACKAGE_GSA)) {
- return ExternalAppId.GSA;
} else if (ContextUtils.getApplicationContext().getPackageName().equals(packageName)) {
} else if (packageName.equals(ContextUtils.getApplicationContext().getPackageName())) {
return ExternalAppId.CHROME;
} else if (assumeNonNull(packageName).startsWith(WEBAPK_PACKAGE_PREFIX)) {
} else if (packageName.startsWith(WEBAPK_PACKAGE_PREFIX)) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/provider/PageContentProviderImpl.java
@@ -57,8 +57,6 @@ public class PageContentProviderImpl extends SplitCompatContentProvider.Impl {
private static final int INVALIDATE_URI_DELAY_MS = 60_000;
private static final int PAGE_EXTRACTION_TIMEOUT_MS = 30_000;
- private static final String[] AUTHORIZED_PACKAGE_NAMES =
- new String[] {GSAUtils.GSA_PACKAGE_NAME};
static final class PageContentInvocationState {
@@ -354,10 +352,6 @@ public class PageContentProviderImpl extends SplitCompatContentProvider.Impl {
}
private static void grantAccessToUri(Uri uri) {
- for (String packageName : AUTHORIZED_PACKAGE_NAMES) {
- ContextUtils.getApplicationContext()
- .grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
- }
}
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
@@ -10,7 +10,6 @@ import org.chromium.base.ResettersForTesting;
import org.chromium.build.annotations.NullMarked;
@@ -10,7 +10,6 @@ import android.os.Build;
import org.chromium.base.ResettersForTesting;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
-import org.chromium.chrome.browser.gsa.GSAUtils;
@@ -79,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils
}
}
@@ -77,15 +71,11 @@ public class LensUtils {
@@ -92,15 +86,11 @@ public class LensUtils {
* @return Whether the package is valid.
*/
public static boolean isValidAgsaPackage() {
@@ -100,18 +112,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils
diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java
--- a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java
+++ b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtils.java
@@ -15,19 +15,12 @@ import org.chromium.build.annotations.Nullable;
@@ -14,16 +14,11 @@ import org.chromium.build.annotations.Nullable;
/** This class provides utilities for the state of Google Search App. */
@NullMarked
public class GSAUtils {
- private static final Object sPackageInfoLock = new Object();
- @Nullable private static volatile PackageInfo sPackageInfo;
-
- public static final String GSA_PACKAGE_NAME = "com.google.android.googlequicksearchbox";
- public static final String GSA_CLASS_NAME =
- "com.google.android.apps.search.googleapp.activity.GoogleAppActivity";
- public static final String VOICE_SEARCH_INTENT_ACTION = "android.intent.action.VOICE_ASSIST";
-
/**
* @return Whether the given package name is the package name for Google Search App.
*/
@@ -121,7 +130,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil
}
/**
@@ -39,6 +32,7 @@ public class GSAUtils {
@@ -35,6 +30,7 @@ public class GSAUtils {
*/
public static boolean isAgsaVersionBelowMinimum(
@Nullable String installedVersionName, @Nullable String minimumVersionName) {
@@ -129,48 +138,13 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil
if (TextUtils.isEmpty(installedVersionName) || TextUtils.isEmpty(minimumVersionName)) {
return true;
}
@@ -69,8 +63,8 @@ public class GSAUtils {
@@ -65,7 +61,7 @@ public class GSAUtils {
* @return The version name of the Agsa package or null if it can't be found.
*/
public static @Nullable String getAgsaVersionName() {
- PackageInfo info = getAgsaPackageInfo();
- return info == null ? null : info.versionName;
- PackageInfo packageInfo = PackageUtils.getPackageInfo(GSA_PACKAGE_NAME, 0);
+ PackageInfo packageInfo = null;
+ return packageInfo == null ? null : packageInfo.versionName;
}
/**
@@ -79,20 +73,7 @@ public class GSAUtils {
* @return Whether the AGSA is enabled
*/
public static boolean isAgsaEnabled() {
- PackageInfo info = getAgsaPackageInfo();
- return info != null && info.applicationInfo != null && info.applicationInfo.enabled;
- }
-
- @Nullable
- private static PackageInfo getAgsaPackageInfo() {
- if (sPackageInfo == null) {
- synchronized (sPackageInfoLock) {
- if (sPackageInfo == null) {
- sPackageInfo = PackageUtils.getPackageInfo(GSA_PACKAGE_NAME, 0);
- }
- }
- }
- return sPackageInfo;
+ return false;
}
/**
@@ -101,10 +82,5 @@ public class GSAUtils {
* @param packageInfo The package info to set for AGSA.
*/
public static void setAgsaPackageInfoForTesting(@Nullable PackageInfo packageInfo) {
- sPackageInfo = packageInfo;
- ResettersForTesting.register(
- () -> {
- sPackageInfo = null;
- });
return packageInfo == null ? null : packageInfo.versionName;
}
}
diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java b/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java
@@ -186,7 +160,7 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c
import static org.chromium.chrome.browser.ui.google_bottom_bar.GoogleBottomBarLogger.GoogleBottomBarButtonEvent.SEARCHBOX_HOME;
import static org.chromium.chrome.browser.ui.google_bottom_bar.GoogleBottomBarLogger.GoogleBottomBarButtonEvent.SEARCHBOX_LENS;
import static org.chromium.chrome.browser.ui.google_bottom_bar.GoogleBottomBarLogger.GoogleBottomBarButtonEvent.SEARCHBOX_SEARCH;
@@ -106,11 +103,6 @@ class GoogleBottomBarActionsHandler {
@@ -102,11 +99,6 @@ class GoogleBottomBarActionsHandler {
}
void onSearchboxMicTap() {
@@ -198,7 +172,7 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c
}
void onSearchboxLensTap(View buttonView) {
@@ -149,21 +141,13 @@ class GoogleBottomBarActionsHandler {
@@ -145,21 +137,13 @@ class GoogleBottomBarActionsHandler {
}
private void openGoogleAppSearch() {
@@ -221,7 +195,7 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c
intent.putExtra(EXTRA_IS_LAUNCHED_FROM_CHROME_SEARCH_ENTRYPOINT, true);
if (PackageManagerUtils.canResolveActivity(intent)) {
@@ -275,6 +259,7 @@ class GoogleBottomBarActionsHandler {
@@ -271,6 +255,7 @@ class GoogleBottomBarActionsHandler {
}
private void sendPendingIntentWithUrl(PendingIntent pendingIntent) {
@@ -232,15 +206,24 @@ diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/c
diff --git a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java
--- a/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java
+++ b/chrome/browser/ui/android/pdf/java/src/org/chromium/chrome/browser/pdf/PdfCoordinator.java
@@ -351,7 +351,7 @@ public class PdfCoordinator implements PdfActionsDelegate {
@@ -246,7 +246,7 @@ public class PdfCoordinator {
}
@Nullable String requestAssistContent(String filename, boolean isWorkProfile) {
String requestAssistContent(String filename, boolean isWorkProfile) {
- if (mUri == null) {
+ if ((true)) {
return null;
}
String structuredData;
@@ -264,8 +264,6 @@ public class PdfCoordinator {
} catch (JSONException e) {
return null;
}
- mActivity.grantUriPermission(
- GSAUtils.GSA_PACKAGE_NAME, mUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
PdfUtils.recordIsWorkProfile(isWorkProfile);
return structuredData;
}
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc
new file mode 100644
--- /dev/null
@@ -16,9 +16,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java b/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java
--- a/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java
+++ b/components/installedapp/android/java/src/org/chromium/components/installedapp/InstalledAppProviderImpl.java
@@ -137,6 +137,7 @@ public class InstalledAppProviderImpl implements InstalledAppProvider {
@@ -153,6 +153,7 @@ public class InstalledAppProviderImpl implements InstalledAppProvider {
final RelatedApplication[] relatedApps,
final Url manifestUrl,
final boolean addSavedRelatedApplications,
final FilterInstalledApps_Response callback) {
+ assert false;
GURL url = mRenderFrameHost.getLastCommittedURL();
@@ -27,8 +27,8 @@ diff --git a/components/installedapp/android/java/src/org/chromium/components/in
diff --git a/content/browser/installedapp/installed_app_provider_impl.cc b/content/browser/installedapp/installed_app_provider_impl.cc
--- a/content/browser/installedapp/installed_app_provider_impl.cc
+++ b/content/browser/installedapp/installed_app_provider_impl.cc
@@ -62,7 +62,7 @@ void InstalledAppProviderImpl::FilterInstalledApps(
bool add_saved_related_applications,
@@ -60,7 +60,7 @@ void InstalledAppProviderImpl::FilterInstalledApps(
const GURL& manifest_url,
FilterInstalledAppsCallback callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- if (!base::FeatureList::IsEnabled(features::kInstalledAppProvider)) {
@@ -58,8 +58,8 @@ new file mode 100644
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -3266,9 +3266,8 @@
status: "stable",
@@ -2514,9 +2514,8 @@
name: "InspectorGhostRules",
},
{
- name: "InstalledApp",
@@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java
@@ -119,7 +119,7 @@ public class StartupPaintPreviewHelper implements Destroyable {
@@ -107,7 +107,7 @@ public class StartupPaintPreviewHelper {
/** Enables Paint Preview show attempt on restoration of a tab. */
public static void enableShowOnRestore() {
+3 -16
View File
@@ -5,9 +5,8 @@ Subject: Disable PrivacyGuide
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/java/res/xml/privacy_preferences.xml | 1 +
chrome/browser/prefs/browser_prefs.cc | 2 +-
chrome/browser/ui/webui/settings/settings_ui.cc | 3 +--
3 files changed, 3 insertions(+), 3 deletions(-)
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
@@ -20,22 +19,10 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
android:title="@string/privacy_guide_pref_title"
android:summary="@string/privacy_guide_pref_summary"
android:fragment="org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment" />
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -2158,7 +2158,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
registry->RegisterBooleanPref(webauthn::pref_names::kAllowWithBrokenCerts,
false);
- registry->RegisterBooleanPref(prefs::kPrivacyGuideViewed, false);
+ registry->RegisterBooleanPref(prefs::kPrivacyGuideViewed, true);
RegisterProfilePrefsForMigration(registry);
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc
--- a/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -342,8 +342,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
@@ -352,8 +352,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
#endif // BUILDFLAG(IS_CHROMEOS)
bool show_privacy_guide =
@@ -44,5 +31,5 @@ diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui
+ false;
html_source->AddBoolean("showPrivacyGuide", show_privacy_guide);
html_source->AddBoolean(
html_source->AddBoolean("enableHandTrackingContentSetting",
--
@@ -3,27 +3,15 @@ Date: Wed, 24 Jan 2024 12:19:44 +0000
Subject: Disable Read Aloud by default
---
chrome/browser/prefs/browser_prefs.cc | 2 +-
.../flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
.../flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -1505,7 +1505,7 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
#if BUILDFLAG(IS_ANDROID)
registry->RegisterBooleanPref(policy::policy_prefs::kBackForwardCacheEnabled,
true);
- registry->RegisterBooleanPref(policy::policy_prefs::kReadAloudEnabled, true);
+ registry->RegisterBooleanPref(policy::policy_prefs::kReadAloudEnabled, false);
#endif // BUILDFLAG(IS_ANDROID)
// Below this point is for platform-specific and compile-time conditional
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Read-Aloud.inc
@@ -0,0 +1 @@
@@ -0,0 +1,2 @@
+SET_CROMITE_FEATURE_DISABLED(kReadAloud);
+SET_CROMITE_FEATURE_DISABLED(kReadAloudPlayback);
--
+36 -45
View File
@@ -4,16 +4,16 @@ Subject: Disable Real Box
Real-box is search box in ntp
---
chrome/browser/prefs/browser_prefs.cc | 2 +-
.../browser/resources/new_tab_page/app.html | 19 +------------------
.../searchbox/searchbox_handler.cc | 1 +
components/search/ntp_features.cc | 4 ++--
4 files changed, 5 insertions(+), 21 deletions(-)
chrome/browser/prefs/browser_prefs.cc | 2 +-
chrome/browser/resources/new_tab_page/app.html | 8 --------
chrome/browser/ui/webui/searchbox/searchbox_handler.cc | 1 +
components/search/ntp_features.cc | 6 +++---
4 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -2130,7 +2130,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
@@ -2323,7 +2323,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
registry->RegisterBooleanPref(
prefs::kLensRegionSearchEnabled, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
@@ -21,66 +21,57 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
+ registry->RegisterBooleanPref(prefs::kLensDesktopNTPSearchEnabled, false);
#endif
registry->RegisterBooleanPref(prefs::kDisableScreenshots, false);
#if !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html
--- a/chrome/browser/resources/new_tab_page/app.html
+++ b/chrome/browser/resources/new_tab_page/app.html
@@ -43,24 +43,7 @@ import {nothing} from '//resources/lit/v3_0/lit.rollup.js';
<div id="searchboxContainer"
@focusin="${this.onSearchboxContainerFocusin_}"
@focusout="${this.onSearchboxContainerFocusout_}">
- <ntp-searchbox id="searchbox" ?is-dark="${this.isThemeDark_()}"
- placeholder-text="$i18n{searchBoxPlaceholder}"
@@ -19,14 +19,6 @@
?hidden="${!this.logoEnabled_}">
</ntp-logo>
<div id="searchboxContainer">
- <cr-searchbox id="searchbox" ?is-dark="${this.isThemeDark_()}"
- ?color-source-is-baseline="${this.colorSourceIsBaseline}"
- @open-composebox="${this.onOpenComposebox_}"
- @open-lens-search="${this.onOpenLensSearch_}"
- @open-voice-search="${this.onOpenVoiceSearch_}" ?shown="${this.realboxShown_}"
- ?had-secondary-side="${this.realboxHadSecondarySide}"
- @had-secondary-side-changed="${this.onRealboxHadSecondarySideChanged_}"
- @context-menu-entrypoint-click="${this.onContextMenuEntrypointClick_}"
- ?can-show-secondary-side="${this.realboxCanShowSecondarySide}"
- ?compose-button-enabled="${this.composeButtonEnabled}"
- ?composebox-enabled="${this.composeboxEnabled}"
- searchbox-layout-mode="${this.realboxLayoutMode_}"
- ?ntp-realbox-next-enabled="${this.ntpRealboxNextEnabled_}"
- ?cycling-placeholders="${this.searchboxCyclingPlaceholders_}"
- context-menu-glif-animation-state="${this.contextMenuGlifAnimationState_}"
- ?multi-line-enabled="${this.multiLineEnabled_}">
- </ntp-searchbox>
+ <div id="searchbox"></div>
${this.showComposebox_ ? html`
<div id="dialogAnchor"></div>
<dialog id="composeboxDialog">
diff --git a/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc b/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc
--- a/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc
+++ b/chrome/browser/ui/webui/cr_components/searchbox/searchbox_handler.cc
@@ -307,6 +307,7 @@ void SearchboxHandler::SetupWebUIDataSource(content::WebUIDataSource* source,
- ?can-show-secondary-side="${this.realboxCanShowSecondarySide}">
- </cr-searchbox>
${this.showLensUploadDialog_ ? html`
<ntp-lens-upload-dialog id="lensUploadDialog"
@close-lens-search="${this.onCloseLensSearch_}">
diff --git a/chrome/browser/ui/webui/searchbox/searchbox_handler.cc b/chrome/browser/ui/webui/searchbox/searchbox_handler.cc
--- a/chrome/browser/ui/webui/searchbox/searchbox_handler.cc
+++ b/chrome/browser/ui/webui/searchbox/searchbox_handler.cc
@@ -420,6 +420,7 @@ void SearchboxHandler::SetupWebUIDataSource(content::WebUIDataSource* source,
Profile* profile,
bool enable_voice_search,
bool enable_lens_search,
bool session_allows_drag_and_drop) {
bool enable_lens_search) {
+ enable_lens_search = false;
// The WebUI Omnibox code will override this to `true` to adjust various
// color and layout options.
source->AddBoolean("isTopChromeSearchbox", false);
// Embedders which are served from chrome-untrusted:// URLs should override
// this to false. The chrome.timeTicks capability that the metrics reporter
// depends on is not defined in chrome-untrusted environments and attempting
diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc
--- a/components/search/ntp_features.cc
+++ b/components/search/ntp_features.cc
@@ -91,7 +91,7 @@ BASE_FEATURE(kNtpDriveModuleSegmentation, base::FEATURE_DISABLED_BY_DEFAULT);
@@ -121,7 +121,7 @@ BASE_FEATURE(kNtpDriveModuleShowSixFiles,
// If enabled, logo will be shown.
// This is a kill switch. Keep indefinitely.
-BASE_FEATURE(kNtpLogo, base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kNtpLogo, base::FEATURE_DISABLED_BY_DEFAULT);
-BASE_FEATURE(kNtpLogo, "NtpLogo", base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kNtpLogo, "NtpLogo", base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, middle slot promo will be shown.
// This is a kill switch. Keep indefinitely.
@@ -133,7 +133,7 @@ BASE_FEATURE(kNtpModuleSignInRequirement, base::FEATURE_ENABLED_BY_DEFAULT);
@@ -174,8 +174,8 @@ BASE_FEATURE(kNtpModulesLoad,
// If enabled, OneGoogleBar will be shown.
// This is a kill switch. Keep indefinitely.
-BASE_FEATURE(kNtpOneGoogleBar, base::FEATURE_ENABLED_BY_DEFAULT);
+BASE_FEATURE(kNtpOneGoogleBar, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kNtpOneGoogleBar,
- "NtpOneGoogleBar",
- base::FEATURE_ENABLED_BY_DEFAULT);
+ "NtpOneGoogleBar", // disabled
+ base::FEATURE_DISABLED_BY_DEFAULT); // by default
// If enabled, outlook calendar module will be shown.
BASE_FEATURE(kNtpOutlookCalendarModule, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kNtpOutlookCalendarModule,
--
@@ -14,7 +14,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/components/embedder_support/content_settings_utils.cc b/components/embedder_support/content_settings_utils.cc
--- a/components/embedder_support/content_settings_utils.cc
+++ b/components/embedder_support/content_settings_utils.cc
@@ -30,16 +30,7 @@ namespace {
@@ -29,16 +29,7 @@ namespace {
// allowed by default, and access is only blocked due to general third-party
// cookie blocking (and not due to a user specified pattern) then storage
// access can be allowed.
@@ -32,9 +32,9 @@ diff --git a/components/embedder_support/content_settings_utils.cc b/components/
bool AllowWorkerStorageAccess(
StorageType storage_type,
const GURL& url,
@@ -56,17 +47,11 @@ bool AllowWorkerStorageAccess(
net::CookieSettingOverrides(), storage_key.ToCookiePartitionKey(),
&cookie_settings_metadata);
@@ -53,17 +44,11 @@ bool AllowWorkerStorageAccess(
url, net::SiteForCookies::FromUrl(url), url::Origin::Create(url),
net::CookieSettingOverrides(), &cookie_settings_metadata);
- if (!allow && PartitionedStorageByDefaultAllowed(cookie_settings_metadata)) {
- allow = true;
@@ -51,9 +51,9 @@ diff --git a/components/embedder_support/content_settings_utils.cc b/components/
for (const auto& it : render_frames) {
auto* rfh = content::RenderFrameHost::FromID(it);
@@ -126,19 +111,16 @@ content::AllowServiceWorkerResult AllowServiceWorker(
&cookie_settings_metadata);
@@ -108,19 +93,16 @@ content::AllowServiceWorkerResult AllowServiceWorker(
scope, site_for_cookies, top_frame_origin,
cookie_settings->SettingOverridesForStorage(), &cookie_settings_metadata);
- if (!allow_cookies &&
- PartitionedStorageByDefaultAllowed(cookie_settings_metadata)) {
@@ -75,9 +75,9 @@ diff --git a/components/embedder_support/content_settings_utils.cc b/components/
return content::AllowServiceWorkerResult::FromPolicy(!allow_javascript,
!allow_cookies);
@@ -174,17 +156,16 @@ bool AllowSharedWorker(
net::CookieSettingOverrides(), cookie_partition_key,
&cookie_settings_metadata);
@@ -143,17 +125,16 @@ bool AllowSharedWorker(
worker_url, site_for_cookies, top_frame_origin,
cookie_settings->SettingOverridesForStorage(), &cookie_settings_metadata);
- if (!allow && PartitionedStorageByDefaultAllowed(cookie_settings_metadata)) {
- allow = true;

Some files were not shown because too many files have changed in this diff Show More