Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc1a82b970 |
+1
-2
@@ -1,2 +1 @@
|
||||
*.zip binary
|
||||
*.pdf binary
|
||||
*.zip binary
|
||||
@@ -93,7 +93,6 @@ body:
|
||||
multiple: false
|
||||
description: What version of Android are you running?
|
||||
options:
|
||||
- Android 16
|
||||
- Android 15
|
||||
- Android 14
|
||||
- Android 13
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
name: 'Check NIST database'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -1 +1 @@
|
||||
147.0.7727.102
|
||||
134.0.6998.178
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
--
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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,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
@@ -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);
|
||||
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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, ¶ms);
|
||||
-
|
||||
std::vector<Configuration> configs;
|
||||
if (base::FeatureList::IsEnabled(kSafeBrowsingSubresourceFilter)) {
|
||||
if (base::FeatureList::IsEnabled(kSafeBrowsingSubresourceFilter))
|
||||
- configs = FillEnabledPresetConfigurations(¶ms);
|
||||
+ configs = FillEnabledPresetConfigurations();
|
||||
}
|
||||
|
||||
-
|
||||
- Configuration experimental_config = ParseExperimentalConfiguration(¶ms);
|
||||
- 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();
|
||||
|
||||
|
||||
@@ -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 can’t 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(
|
||||
--
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"><a target="_blank" href="$1"></ph>Chrome Web Store<ph name="END_LINK"></a> <ex></a></ex> </ph>
|
||||
+ Discover more extensions and themes on the <ph name="BEGIN_LINK"><a target="_blank" href="$1"></ph>Chromedontreplace Web Store<ph name="END_LINK"></a> <ex></a></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"><a target="_blank" href="$1"></ph>What's New<ph name="END_LINK"></a></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
|
||||
|
||||
|
||||
@@ -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.
|
||||
--
|
||||
@@ -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));
|
||||
--
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
--
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user