Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7baf3a8b2 |
@@ -1,14 +0,0 @@
|
|||||||
{{ range .Versions }}
|
|
||||||
<a name="{{ .Tag.Name }}"></a>
|
|
||||||
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]({{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}){{ else }}{{ .Tag.Name }}{{ end }} ({{ datetime "2006-01-02" .Tag.Date }})
|
|
||||||
|
|
||||||
{{ range .Commits -}}
|
|
||||||
{{ if not (contains .Type "[") }}- {{.Hash.Short}} {{ .Subject }}
|
|
||||||
{{ if not (eq (len .Body) 0) }}{{ .Body }}{{ end }}
|
|
||||||
{{ range .Refs -}}
|
|
||||||
{{ " " }} - #{{ .Ref }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ end -}}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
style: github
|
|
||||||
template: CHANGELOG.tpl.md
|
|
||||||
info:
|
|
||||||
title: CHANGELOG
|
|
||||||
repository_url: https://github.com/uazo/cromite
|
|
||||||
options:
|
|
||||||
commits:
|
|
||||||
filters:
|
|
||||||
Type:
|
|
||||||
- "[AUTO]"
|
|
||||||
commit_groups:
|
|
||||||
# title_maps: []
|
|
||||||
header:
|
|
||||||
pattern: "^(\\[.*\\])?(.*)$"
|
|
||||||
pattern_maps:
|
|
||||||
- Type
|
|
||||||
- Subject
|
|
||||||
notes:
|
|
||||||
keywords:
|
|
||||||
- BREAKING CHANGE
|
|
||||||
+1
-2
@@ -1,2 +1 @@
|
|||||||
*.zip binary
|
*.zip binary
|
||||||
*.pdf binary
|
|
||||||
@@ -22,8 +22,6 @@ body:
|
|||||||
required: true
|
required: true
|
||||||
- label: "I have searched the existing issues for my problem. This is a new ticket, NOT a duplicate or related to another open issue."
|
- label: "I have searched the existing issues for my problem. This is a new ticket, NOT a duplicate or related to another open issue."
|
||||||
required: true
|
required: true
|
||||||
- label: "I have read the [FAQs](https://github.com/uazo/cromite/blob/master/docs/FAQ.md)."
|
|
||||||
required: true
|
|
||||||
- label: "I have updated Cromite to the latest version. The bug is reproducible on this latest version."
|
- label: "I have updated Cromite to the latest version. The bug is reproducible on this latest version."
|
||||||
required: true
|
required: true
|
||||||
- label: "This is a bug report about the Cromite browser; not the website nor F-Droid nor anything else."
|
- label: "This is a bug report about the Cromite browser; not the website nor F-Droid nor anything else."
|
||||||
@@ -93,12 +91,10 @@ body:
|
|||||||
multiple: false
|
multiple: false
|
||||||
description: What version of Android are you running?
|
description: What version of Android are you running?
|
||||||
options:
|
options:
|
||||||
- Android 16
|
|
||||||
- Android 15
|
|
||||||
- Android 14
|
- Android 14
|
||||||
- Android 13
|
- Android 13
|
||||||
- Android 12.1
|
- Android 12.1
|
||||||
- Android 12
|
- Android 12.0
|
||||||
- Android 11
|
- Android 11
|
||||||
- Android 10
|
- Android 10
|
||||||
- Android 9
|
- Android 9
|
||||||
@@ -152,7 +148,7 @@ body:
|
|||||||
- type: dropdown
|
- type: dropdown
|
||||||
id: is_incognito
|
id: is_incognito
|
||||||
attributes:
|
attributes:
|
||||||
label: Is this bug happening ONLY in an incognito tab?
|
label: Is this bug happening in an incognito tab?
|
||||||
multiple: false
|
multiple: false
|
||||||
options:
|
options:
|
||||||
- "Yes"
|
- "Yes"
|
||||||
|
|||||||
@@ -37,41 +37,18 @@ jobs:
|
|||||||
- name: Reclaiming disk space on / by removing dotnet/android/ghc
|
- name: Reclaiming disk space on / by removing dotnet/android/ghc
|
||||||
#if: ${{ github.event.inputs.type == '' }}
|
#if: ${{ github.event.inputs.type == '' }}
|
||||||
run: |
|
run: |
|
||||||
df -h
|
test -d /usr/share/dotnet && sudo rm -rf /usr/share/dotnet
|
||||||
|
test -d /usr/local/lib/android && sudo rm -rf /usr/local/lib/android
|
||||||
DIR=/usr/share/dotnet && sudo rm -rf $DIR
|
test -d /opt/ghc && sudo rm -rf /opt/ghc
|
||||||
DIR=/usr/local/lib/android && sudo rm -rf $DIR
|
test -d /opt/hostedtoolcache/CodeQL && sudo rm -rf /opt/hostedtoolcache/CodeQL
|
||||||
DIR=/opt/ghc && sudo rm -rf $DIR
|
|
||||||
DIR=/opt/hostedtoolcache/CodeQL && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/.ghcup && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/lib/jvm && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/julia1.10.5 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/x86_64-linux-gnu && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/gcc && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/llvm-15 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/llvm-14 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/llvm-13 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/heroku && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/share/swift && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/share/miniconda && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/share/az_12.1.0 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/share/powershell && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/local/share/chromium && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/lib/gcc && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/lib/llvm-15 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/lib/llvm-14 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
DIR=/usr/lib/llvm-13 && test -d $DIR && sudo rm -rf $DIR
|
|
||||||
|
|
||||||
sudo apt-get remove google-cloud-cli azure-cli google-chrome-stable \
|
sudo apt-get remove google-cloud-cli azure-cli google-chrome-stable \
|
||||||
firefox mysql-server-core-8.0 mono-devel podman \
|
firefox mysql-server-core-8.0 mono-devel podman \
|
||||||
powershell || true
|
powershell || true
|
||||||
sudo apt-get autoremove
|
sudo apt-get autoremove
|
||||||
|
|
||||||
df -h
|
|
||||||
|
|
||||||
- name: Enable proxy on container
|
- name: Enable proxy on container
|
||||||
shell: bash
|
shell: bash
|
||||||
if: ${{ github.event.inputs.type != '' && github.event.inputs.type != 'ubuntu-latest' }}
|
if: ${{ github.event.inputs.type != 'ubuntu-latest' }}
|
||||||
run: |
|
run: |
|
||||||
if ! [[ -z "${HTTP_PROXY}" ]]; then
|
if ! [[ -z "${HTTP_PROXY}" ]]; then
|
||||||
PROXY_ADDR=http://$(hostname -I | cut -d' ' -f1 | xargs):8118
|
PROXY_ADDR=http://$(hostname -I | cut -d' ' -f1 | xargs):8118
|
||||||
@@ -105,18 +82,12 @@ jobs:
|
|||||||
echo "CHR_VERSION=$CHR_VERSION" >> $GITHUB_ENV
|
echo "CHR_VERSION=$CHR_VERSION" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Download regctl
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
curl -L https://github.com/regclient/regclient/releases/latest/download/regctl-linux-amd64 >regctl
|
|
||||||
chmod 755 regctl
|
|
||||||
|
|
||||||
- name: Building build-deps container ${{ env.VERSION }}
|
- name: Building build-deps container ${{ env.VERSION }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/build-deps:$CHR_VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker inspect --type=image uazo/build-deps:$CHR_VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/build-deps:$CHR_VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/build-deps:$CHR_VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
DOCKER_BUILDKIT=1 docker build -t uazo/build-deps:$CHR_VERSION \
|
DOCKER_BUILDKIT=1 docker build -t uazo/build-deps:$CHR_VERSION \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
@@ -135,7 +106,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/chromium:$CHR_VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker inspect --type=image uazo/chromium:$CHR_VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/chromium:$CHR_VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/chromium:$CHR_VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
DOCKER_BUILDKIT=1 docker build -t uazo/chromium:$CHR_VERSION \
|
DOCKER_BUILDKIT=1 docker build -t uazo/chromium:$CHR_VERSION \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
@@ -148,36 +119,6 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
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
|
- name: Update files under control
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@@ -215,7 +156,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c #v6.1.0
|
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
|
||||||
if: env.CHANGES == '1'
|
if: env.CHANGES == '1'
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.CROMITE_PULLS }}
|
token: ${{ secrets.CROMITE_PULLS }}
|
||||||
@@ -226,4 +167,32 @@ jobs:
|
|||||||
title: '[AUTO][FILECONTROL] - version ${{ env.NEW_VERSION }}'
|
title: '[AUTO][FILECONTROL] - version ${{ env.NEW_VERSION }}'
|
||||||
body: ${{ env.MESSAGE }}
|
body: ${{ env.MESSAGE }}
|
||||||
delete-branch: true
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
@@ -1,248 +0,0 @@
|
|||||||
name: Build Additional Targets
|
|
||||||
permissions:
|
|
||||||
actions: none
|
|
||||||
checks: none
|
|
||||||
contents: none
|
|
||||||
deployments: none
|
|
||||||
issues: none
|
|
||||||
packages: none
|
|
||||||
pull-requests: none
|
|
||||||
repository-projects: none
|
|
||||||
security-events: none
|
|
||||||
statuses: none
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
sha:
|
|
||||||
description: 'uazo/cromite SHA'
|
|
||||||
required: true
|
|
||||||
default: ''
|
|
||||||
type:
|
|
||||||
description: 'runner? [dev/ci]'
|
|
||||||
required: true
|
|
||||||
default: 'ci'
|
|
||||||
debug:
|
|
||||||
description: 'debug? [true/false]'
|
|
||||||
required: true
|
|
||||||
default: 'false'
|
|
||||||
|
|
||||||
env:
|
|
||||||
CROMITE_SHA: ${{ github.event.inputs.sha }}
|
|
||||||
REMOVEDOCKERSUPPORT: true
|
|
||||||
USELOCALIMAGE: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check_images:
|
|
||||||
runs-on: ${{ github.event.inputs.type }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout repo
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
path: cromite
|
|
||||||
ref: ${{ github.event.inputs.sha }}
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Enable proxy on container
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
if ! [[ -z "${HTTP_PROXY}" ]]; then
|
|
||||||
PROXY_ADDR=http://$(hostname -I | cut -d' ' -f1 | xargs):8118
|
|
||||||
echo "PROXY_ADDR=$PROXY_ADDR" >> $GITHUB_ENV
|
|
||||||
sudo iptables -D INPUT -p tcp -s localhost --dport 8118 -j ACCEPT
|
|
||||||
sudo iptables -D INPUT -p tcp --dport 8118 -j DROP
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Get current chromium version
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
export VERSION=$( cat ./cromite/build/RELEASE )
|
|
||||||
|
|
||||||
echo Current version is $VERSION
|
|
||||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
cd cromite/tools
|
|
||||||
|
|
||||||
- name: Get uazo/cromite-build from docker hub if present
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
IS_PRESENT=$(docker manifest inspect uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
|
||||||
if [ $IS_PRESENT -eq "0" ]; then
|
|
||||||
docker pull uazo/cromite-build:$VERSION-$CROMITE_SHA
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Mark image to build
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/cromite-build:build > /dev/null ; echo $?)
|
|
||||||
if [ $IS_PRESENT -eq "0" ]; then
|
|
||||||
docker rmi uazo/cromite-build:build
|
|
||||||
fi
|
|
||||||
docker tag uazo/cromite-build:$VERSION-$CROMITE_SHA uazo/cromite-build:build
|
|
||||||
|
|
||||||
build:
|
|
||||||
runs-on: ${{ github.event.inputs.type }}
|
|
||||||
needs: check_images
|
|
||||||
if: success()
|
|
||||||
timeout-minutes: 1440
|
|
||||||
|
|
||||||
container:
|
|
||||||
image: uazo/cromite-build:build
|
|
||||||
env:
|
|
||||||
REMOVEDOCKERSUPPORT: true # CUSTOM RUNNER: remove sharing of docker socket
|
|
||||||
USELOCALIMAGE: true # CUSTOM RUNNER: permit use of local images
|
|
||||||
USEINTERNALNETWORK: true # CUSTOM RUNNER: create the docker network as internal
|
|
||||||
WORKSPACE: /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
|
|
||||||
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/10.0.22621.0/
|
|
||||||
WINDOWSSDKDIR: "/win_sdk/10.0.22621.0/Windows Kits/10/"
|
|
||||||
GYP_MSVS_OVERRIDE_PATH: /win_sdk/10.0.22621.0/
|
|
||||||
# compile in debug mode
|
|
||||||
TARGET_ISDEBUG: ${{ github.event.inputs.debug }}
|
|
||||||
USE_KEYSTORE: true
|
|
||||||
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
|
|
||||||
CROMITE_PREF_HASH_SEED_BIN: ${{ secrets.CROMITE_PREF_HASH_SEED_BIN }}
|
|
||||||
volumes:
|
|
||||||
- /storage/images/${{ github.event.inputs.sha }}/android/${{ github.event.inputs.debug }}/chr_arm:/home/lg/working_dir/chromium/src/out/chr_arm
|
|
||||||
- /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
|
|
||||||
- /tmp/proxy:/tmp/proxy
|
|
||||||
- /win_sdk:/win_sdk
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Prepare Build Container
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# set workspace paths
|
|
||||||
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
|
|
||||||
cd $WORKSPACE
|
|
||||||
|
|
||||||
# reset proxy env
|
|
||||||
HTTP_PROXY=
|
|
||||||
HTTPS_PROXY=
|
|
||||||
http_proxy=
|
|
||||||
https_proxy=
|
|
||||||
|
|
||||||
# setup 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
|
|
||||||
|
|
||||||
test -d chromium/src/out/chr_arm64 || sudo mkdir -p chromium/src/out/chr_arm64 && \
|
|
||||||
sudo chown lg chromium/src/out &&
|
|
||||||
sudo chown lg chromium/src/out/chr_arm64
|
|
||||||
|
|
||||||
test -d chromium/src/out/chr_x64 || sudo mkdir -p chromium/src/out/chr_x64 && \
|
|
||||||
sudo chown lg chromium/src/out &&
|
|
||||||
sudo chown lg chromium/src/out/chr_x64
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
sudo mkdir -p /run/user/1000/
|
|
||||||
sudo chown lg /run/user/1000/
|
|
||||||
sudo chmod g-rxw /run/user/1000/
|
|
||||||
sudo chmod o-rxw /run/user/1000/
|
|
||||||
|
|
||||||
# prepare keystore
|
|
||||||
echo "::group::-------- prepare keystore"
|
|
||||||
cd $WORKSPACE
|
|
||||||
echo "${{ secrets.KEYSTORE }}" > cromite.keystore.asc
|
|
||||||
gpg --homedir ./ -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch cromite.keystore.asc > cromite.keystore
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
- name: Build Cromite System WebView x64
|
|
||||||
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 = \"x64\" $(cat /home/lg/working_dir/cromite/build/cromite.gn_args) system_webview_package_name=\"com.android.webview\" enable_trybot_verification=false " out/x64_webview
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
|
||||||
gn args out/x64_webview/ --list --short
|
|
||||||
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
|
|
||||||
cp ../../cromite/build/RELEASE out/x64_webview
|
|
||||||
|
|
||||||
- name: Prepare Build Container for vanilla chromium
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# set workspace paths
|
|
||||||
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
|
|
||||||
|
|
||||||
# checkout chromium commit
|
|
||||||
LAST_PATCH=$(git log --all --grep='Fix-chromium-vanilla.patch' --format="%H")
|
|
||||||
git checkout $LAST_PATCH
|
|
||||||
|
|
||||||
- name: Build Chromium Vanilla Android x64
|
|
||||||
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\" $(cat /home/lg/working_dir/cromite/build/chromium.gn_args) target_cpu = \"x64\" " out/chr_x64
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
|
||||||
gn args out/chr_x64/ --list --short
|
|
||||||
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
|
|
||||||
|
|
||||||
cp ../../cromite/build/RELEASE out/chr_x64
|
|
||||||
|
|
||||||
- name: Build Chromium Vanilla Android 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\" $(cat /home/lg/working_dir/cromite/build/chromium.gn_args) target_cpu = \"arm64\" " out/chr_arm64
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
|
||||||
gn args out/chr_arm64/ --list --short
|
|
||||||
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
|
|
||||||
|
|
||||||
cp ../../cromite/build/RELEASE out/chr_arm64
|
|
||||||
|
|
||||||
- name: Build Chromium Vanilla Android arm
|
|
||||||
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\" $(cat /home/lg/working_dir/cromite/build/chromium.gn_args) target_cpu = \"arm\" " out/chr_arm
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
|
||||||
gn args out/chr_arm/ --list --short
|
|
||||||
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
|
|
||||||
|
|
||||||
cp ../../cromite/build/RELEASE out/chr_arm
|
|
||||||
@@ -65,12 +65,6 @@ jobs:
|
|||||||
sudo iptables -D INPUT -p tcp --dport 8118 -j DROP
|
sudo iptables -D INPUT -p tcp --dport 8118 -j DROP
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Download regctl
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
curl -L https://github.com/regclient/regclient/releases/latest/download/regctl-linux-amd64 >regctl
|
|
||||||
chmod 755 regctl
|
|
||||||
|
|
||||||
- name: Get current chromium version
|
- name: Get current chromium version
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@@ -84,10 +78,9 @@ jobs:
|
|||||||
- name: Building build-deps container ${{ env.VERSION }}
|
- name: Building build-deps container ${{ env.VERSION }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
docker pull uazo/build-deps:$VERSION || true
|
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/build-deps:$VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker inspect --type=image uazo/build-deps:$VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/build-deps:$VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/build-deps:$VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
DOCKER_BUILDKIT=1 docker build -t uazo/build-deps:$VERSION \
|
DOCKER_BUILDKIT=1 docker build -t uazo/build-deps:$VERSION \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
@@ -101,10 +94,9 @@ jobs:
|
|||||||
- name: Building chromium container ${{ env.VERSION }}
|
- name: Building chromium container ${{ env.VERSION }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
docker pull uazo/chromium:$VERSION || true
|
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/chromium:$VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker inspect --type=image uazo/chromium:$VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/chromium:$VERSION > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/chromium:$VERSION > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
DOCKER_BUILDKIT=1 docker build -t uazo/chromium:$VERSION \
|
DOCKER_BUILDKIT=1 docker build -t uazo/chromium:$VERSION \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
@@ -117,10 +109,9 @@ jobs:
|
|||||||
- name: Building cromite container ${{ env.VERSION }}-${{ env.CROMITE_SHA }}
|
- name: Building cromite container ${{ env.VERSION }}-${{ env.CROMITE_SHA }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
docker pull uazo/cromite:$VERSION-$CROMITE_SHA || true
|
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/cromite:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
IS_PRESENT=$(docker inspect --type=image uazo/cromite:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/cromite:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/cromite:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
DOCKER_BUILDKIT=1 docker build -t uazo/cromite:$VERSION-$CROMITE_SHA --progress plain \
|
DOCKER_BUILDKIT=1 docker build -t uazo/cromite:$VERSION-$CROMITE_SHA --progress plain \
|
||||||
--build-arg CROMITE_SHA=$CROMITE_SHA \
|
--build-arg CROMITE_SHA=$CROMITE_SHA \
|
||||||
@@ -133,10 +124,9 @@ jobs:
|
|||||||
- name: Building cromite-build container ${{ env.VERSION }}-${{ env.CROMITE_SHA }}
|
- name: Building cromite-build container ${{ env.VERSION }}-${{ env.CROMITE_SHA }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
docker pull uazo/cromite-build:$VERSION-$CROMITE_SHA || true
|
|
||||||
IS_PRESENT=$(docker inspect --type=image uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
IS_PRESENT=$(docker inspect --type=image uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -ne "0" ]; then
|
if [ $IS_PRESENT -ne "0" ]; then
|
||||||
DOCKER_BUILDKIT=1 docker build -t uazo/cromite-build:$VERSION-$CROMITE_SHA --progress plain \
|
DOCKER_BUILDKIT=1 docker build -t uazo/cromite-build:$VERSION-$CROMITE_SHA --progress plain \
|
||||||
--build-arg CROMITE_SHA=$CROMITE_SHA \
|
--build-arg CROMITE_SHA=$CROMITE_SHA \
|
||||||
@@ -150,7 +140,7 @@ jobs:
|
|||||||
- name: Get uazo/cromite-build from docker hub if present
|
- name: Get uazo/cromite-build from docker hub if present
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
IS_PRESENT=$(./regctl image inspect uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
IS_PRESENT=$(docker manifest inspect uazo/cromite-build:$VERSION-$CROMITE_SHA > /dev/null ; echo $?)
|
||||||
if [ $IS_PRESENT -eq "0" ]; then
|
if [ $IS_PRESENT -eq "0" ]; then
|
||||||
docker pull uazo/cromite-build:$VERSION-$CROMITE_SHA
|
docker pull uazo/cromite-build:$VERSION-$CROMITE_SHA
|
||||||
fi
|
fi
|
||||||
@@ -177,15 +167,14 @@ jobs:
|
|||||||
USELOCALIMAGE: true # CUSTOM RUNNER: permit use of local images
|
USELOCALIMAGE: true # CUSTOM RUNNER: permit use of local images
|
||||||
USEINTERNALNETWORK: true # CUSTOM RUNNER: create the docker network as internal
|
USEINTERNALNETWORK: true # CUSTOM RUNNER: create the docker network as internal
|
||||||
WORKSPACE: /home/lg/working_dir
|
WORKSPACE: /home/lg/working_dir
|
||||||
HOME: /home/lg/working_dir
|
|
||||||
# kythe
|
# kythe
|
||||||
KYTHE_CORPUS: chromium.googlesource.com/chromium/src
|
KYTHE_CORPUS: chromium.googlesource.com/chromium/src
|
||||||
KYTHE_ROOT_DIRECTORY: /home/lg/working_dir/chromium/src
|
KYTHE_ROOT_DIRECTORY: /home/lg/working_dir/chromium/src
|
||||||
KYTHE_OUTPUT_DIRECTORY: /home/lg/working_dir/chromium/src/out/arm64/kythe
|
KYTHE_OUTPUT_DIRECTORY: /home/lg/working_dir/chromium/src/out/arm64/kythe
|
||||||
# cross build (change also release.yaml)
|
# cross build
|
||||||
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/sdks/Win11SDK_10.0.26100.0/
|
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: /win_sdk/10.0.22621.0/
|
||||||
WINDOWSSDKDIR: "/win_sdk/sdks/Win11SDK_10.0.26100.0/Windows Kits/10/"
|
WINDOWSSDKDIR: "/win_sdk/10.0.22621.0/Windows Kits/10/"
|
||||||
GYP_MSVS_OVERRIDE_PATH: /win_sdk/sdks/Win11SDK_10.0.26100.0/
|
GYP_MSVS_OVERRIDE_PATH: /win_sdk/10.0.22621.0/
|
||||||
# compile in debug mode
|
# compile in debug mode
|
||||||
TARGET_ISDEBUG: ${{ github.event.inputs.debug }}
|
TARGET_ISDEBUG: ${{ github.event.inputs.debug }}
|
||||||
TARGET_OS: ${{ github.event.inputs.target_os }}
|
TARGET_OS: ${{ github.event.inputs.target_os }}
|
||||||
@@ -198,7 +187,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 }}/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 }}/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 }}/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
|
- /tmp/proxy:/tmp/proxy
|
||||||
- /win_sdk:/win_sdk
|
- /win_sdk:/win_sdk
|
||||||
|
|
||||||
@@ -216,7 +204,7 @@ jobs:
|
|||||||
http_proxy=
|
http_proxy=
|
||||||
https_proxy=
|
https_proxy=
|
||||||
|
|
||||||
# setup folder permissions
|
# set out folder permissions
|
||||||
test -d chromium/src/out/arm || sudo mkdir -p chromium/src/out/arm && \
|
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 &&
|
||||||
sudo chown lg chromium/src/out/arm
|
sudo chown lg chromium/src/out/arm
|
||||||
@@ -236,14 +224,6 @@ jobs:
|
|||||||
test -d chromium/src/out/lin64 || sudo mkdir -p chromium/src/out/lin64 && \
|
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 &&
|
||||||
sudo chown lg chromium/src/out/lin64
|
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
|
# make kythe output directory
|
||||||
test -d $KYTHE_OUTPUT_DIRECTORY || mkdir -p $KYTHE_OUTPUT_DIRECTORY
|
test -d $KYTHE_OUTPUT_DIRECTORY || mkdir -p $KYTHE_OUTPUT_DIRECTORY
|
||||||
@@ -260,9 +240,6 @@ jobs:
|
|||||||
gpg --homedir ./ -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch cromite.keystore.asc > cromite.keystore
|
gpg --homedir ./ -d --passphrase "${{ secrets.KEYSTORE_PASSPHRASE }}" --batch cromite.keystore.asc > cromite.keystore
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
# bootstrap python3 for gn
|
|
||||||
echo ../../../../../usr/bin >$WORKSPACE/depot_tools/python3_bin_reldir.txt
|
|
||||||
|
|
||||||
- name: Build Cromite Android x64
|
- 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') }}
|
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
|
shell: bash
|
||||||
@@ -271,16 +248,16 @@ jobs:
|
|||||||
cd $WORKSPACE/chromium/src
|
cd $WORKSPACE/chromium/src
|
||||||
|
|
||||||
echo "::group::-------- gn gen"
|
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 "::endgroup::"
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
echo "::group::-------- gn args"
|
||||||
gn args out/x64/ --list --short || true
|
gn args out/x64/ --list --short
|
||||||
gn args out/x64/ --list >out/x64/gn_list || true
|
gn args out/x64/ --list >out/x64/gn_list
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/x64 chrome_public_bundle --offline
|
ninja -C out/x64 chrome_public_bundle
|
||||||
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/x64 chrome_public_apk --offline
|
ninja -C out/x64 chrome_public_apk
|
||||||
|
|
||||||
cp ../../cromite/build/RELEASE out/x64
|
cp ../../cromite/build/RELEASE out/x64
|
||||||
|
|
||||||
@@ -300,15 +277,15 @@ jobs:
|
|||||||
cd $WORKSPACE/chromium/src
|
cd $WORKSPACE/chromium/src
|
||||||
|
|
||||||
echo "::group::-------- gn gen"
|
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 "::endgroup::"
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
echo "::group::-------- gn args"
|
||||||
gn args out/win64/ --list --short || true
|
gn args out/win64/ --list --short
|
||||||
gn args out/win64/ --list >out/win64/gn_list || true
|
gn args out/win64/ --list >out/win64/gn_list
|
||||||
echo "::endgroup::"
|
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
|
cp ../../cromite/build/RELEASE out/win64
|
||||||
|
|
||||||
@@ -328,16 +305,16 @@ jobs:
|
|||||||
cd $WORKSPACE/chromium/src
|
cd $WORKSPACE/chromium/src
|
||||||
|
|
||||||
echo "::group::-------- gn gen"
|
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 "::endgroup::"
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
echo "::group::-------- gn args"
|
||||||
gn args out/arm64/ --list --short || true
|
gn args out/arm64/ --list --short
|
||||||
gn args out/arm64/ --list >out/arm64/gn_list || true
|
gn args out/arm64/ --list >out/arm64/gn_list
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm64 chrome_public_bundle --offline
|
ninja -C out/arm64 chrome_public_bundle
|
||||||
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm64 chrome_public_apk --offline
|
ninja -C out/arm64 chrome_public_apk
|
||||||
|
|
||||||
cp ../../cromite/build/RELEASE out/arm64
|
cp ../../cromite/build/RELEASE out/arm64
|
||||||
|
|
||||||
@@ -357,7 +334,7 @@ jobs:
|
|||||||
cd $WORKSPACE/chromium/src
|
cd $WORKSPACE/chromium/src
|
||||||
|
|
||||||
echo "::group::-------- generating breakpad symbols"
|
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 \
|
components/crash/content/tools/generate_breakpad_symbols.py --build-dir=out/arm64 \
|
||||||
--symbols-dir=out/arm64/symbols/ --binary=out/arm64/lib.unstripped/libchrome.so \
|
--symbols-dir=out/arm64/symbols/ --binary=out/arm64/lib.unstripped/libchrome.so \
|
||||||
--platform=android --clear --verbose
|
--platform=android --clear --verbose
|
||||||
@@ -373,7 +350,7 @@ jobs:
|
|||||||
PATH=$WORKSPACE/chromium/src/third_party/llvm-build/Release+Asserts/bin:$WORKSPACE/depot_tools/:/usr/local/go/bin:$WORKSPACE/mtool/bin:$PATH
|
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
|
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
|
- 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') }}
|
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 +360,16 @@ jobs:
|
|||||||
cd $WORKSPACE/chromium/src
|
cd $WORKSPACE/chromium/src
|
||||||
|
|
||||||
echo "::group::-------- gn gen"
|
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 "::endgroup::"
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
echo "::group::-------- gn args"
|
||||||
gn args out/arm/ --list --short || true
|
gn args out/arm/ --list --short
|
||||||
gn args out/arm/ --list >out/arm/gn_list || true
|
gn args out/arm/ --list >out/arm/gn_list
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm chrome_public_bundle --offline
|
ninja -C out/arm chrome_public_bundle
|
||||||
vpython3 /home/lg/working_dir/depot_tools/siso.py ninja -C out/arm chrome_public_apk --offline
|
ninja -C out/arm chrome_public_apk
|
||||||
|
|
||||||
cp ../../cromite/build/RELEASE out/arm
|
cp ../../cromite/build/RELEASE out/arm
|
||||||
|
|
||||||
@@ -412,15 +389,15 @@ jobs:
|
|||||||
cd $WORKSPACE/chromium/src
|
cd $WORKSPACE/chromium/src
|
||||||
|
|
||||||
echo "::group::-------- gn gen"
|
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 "::endgroup::"
|
||||||
|
|
||||||
echo "::group::-------- gn args"
|
echo "::group::-------- gn args"
|
||||||
gn args out/lin64/ --list --short || true
|
gn args out/lin64/ --list --short
|
||||||
gn args out/lin64/ --list >out/lin64/gn_list || true
|
gn args out/lin64/ --list >out/lin64/gn_list
|
||||||
echo "::endgroup::"
|
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
|
cp ../../cromite/build/RELEASE out/lin64
|
||||||
|
|
||||||
@@ -432,24 +409,6 @@ jobs:
|
|||||||
$WORKSPACE/ninjatracing/ninjatracing -a $WORKSPACE/chromium/src/out/lin64/.ninja_log >$WORKSPACE/chromium/src/out/lin64/ninja_log_trace.json
|
$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
|
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
|
- name: Generate clangd index for Android arm64
|
||||||
if: ${{ github.event.inputs.clangd == 'true' }}
|
if: ${{ github.event.inputs.clangd == 'true' }}
|
||||||
shell: bash
|
shell: bash
|
||||||
@@ -462,5 +421,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 && \
|
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 \
|
$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 && \
|
-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
|
rm -rf out/clangd
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c #v6.1.0
|
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
|
||||||
if: env.CHANGES == '1'
|
if: env.CHANGES == '1'
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.CROMITE_PULLS }}
|
token: ${{ secrets.CROMITE_PULLS }}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
name: 'Check NIST database'
|
name: 'Check NIST database'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '30 1 * * *'
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -53,7 +56,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c #v6.1.0
|
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
|
||||||
if: env.CHANGES == '1'
|
if: env.CHANGES == '1'
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.CROMITE_PULLS }}
|
token: ${{ secrets.CROMITE_PULLS }}
|
||||||
|
|||||||
@@ -17,15 +17,11 @@ on:
|
|||||||
description: 'draft? [true/false]'
|
description: 'draft? [true/false]'
|
||||||
required: true
|
required: true
|
||||||
default: 'false'
|
default: 'false'
|
||||||
comment:
|
|
||||||
description: 'comment'
|
|
||||||
required: true
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
CROMITE_SHA: ${{ github.event.inputs.sha }}
|
CROMITE_SHA: ${{ github.event.inputs.sha }}
|
||||||
REMOVEDOCKERSUPPORT: true
|
REMOVEDOCKERSUPPORT: true
|
||||||
USELOCALIMAGE: true
|
USELOCALIMAGE: true
|
||||||
COMMENT: ${{ github.event.inputs.comment }}
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
@@ -37,7 +33,6 @@ jobs:
|
|||||||
OUTPUTFILE_X64: /storage/images/${{ github.event.inputs.sha }}/android/false/x64/
|
OUTPUTFILE_X64: /storage/images/${{ github.event.inputs.sha }}/android/false/x64/
|
||||||
OUTPUTFILE_WIN: /storage/images/${{ github.event.inputs.sha }}/win/x64/
|
OUTPUTFILE_WIN: /storage/images/${{ github.event.inputs.sha }}/win/x64/
|
||||||
OUTPUTFILE_LIN: /storage/images/${{ github.event.inputs.sha }}/linux/false/lin64/
|
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:
|
steps:
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
@@ -53,6 +48,9 @@ jobs:
|
|||||||
BRANCH=$(curl https://github.com/uazo/cromite/branch_commits/$CROMITE_SHA | ./pup -p li.branch:last-child a text{} | xargs)
|
BRANCH=$(curl https://github.com/uazo/cromite/branch_commits/$CROMITE_SHA | ./pup -p li.branch:last-child a text{} | xargs)
|
||||||
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
- name: Checkout 'uazo/cromite'
|
- name: Checkout 'uazo/cromite'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
@@ -73,7 +71,10 @@ jobs:
|
|||||||
|
|
||||||
echo ${{ secrets.GITHUB_TOKEN }} | $GH auth login --with-token
|
echo ${{ secrets.GITHUB_TOKEN }} | $GH auth login --with-token
|
||||||
|
|
||||||
echo $COMMENT >note
|
echo "\`\`\`" >note
|
||||||
|
# echo "this is not the official release of bromite but a test version." >>note
|
||||||
|
# echo "you can try it at your own risk." >>note
|
||||||
|
echo "\`\`\`" >>note
|
||||||
|
|
||||||
$GH release create $VERSION-$CROMITE_SHA --notes-file note -d
|
$GH release create $VERSION-$CROMITE_SHA --notes-file note -d
|
||||||
|
|
||||||
@@ -131,13 +132,15 @@ jobs:
|
|||||||
cp $OUTPUTFILE_WIN/chrome_proxy.exe chrome-win/
|
cp $OUTPUTFILE_WIN/chrome_proxy.exe chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/chrome_pwa_launcher.exe chrome-win/
|
cp $OUTPUTFILE_WIN/chrome_pwa_launcher.exe chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/chrome_wer.dll 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/elevation_service.exe chrome-win/
|
||||||
cp "$OUTPUTFILE_WIN/First Run" 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/icudtl.dat chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/libEGL.dll chrome-win/
|
cp $OUTPUTFILE_WIN/libEGL.dll chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/libGLESv2.dll chrome-win/
|
cp $OUTPUTFILE_WIN/libGLESv2.dll chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/Logo.png chrome-win/
|
cp $OUTPUTFILE_WIN/Logo.png chrome-win/
|
||||||
|
cp $OUTPUTFILE_WIN/mojo_core.dll chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/notification_helper.exe chrome-win/
|
cp $OUTPUTFILE_WIN/notification_helper.exe chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/resources.pak chrome-win/
|
cp $OUTPUTFILE_WIN/resources.pak chrome-win/
|
||||||
cp $OUTPUTFILE_WIN/SmallLogo.png chrome-win/
|
cp $OUTPUTFILE_WIN/SmallLogo.png chrome-win/
|
||||||
@@ -155,10 +158,6 @@ jobs:
|
|||||||
$GH release upload $VERSION-$CROMITE_SHA chrome-win.zip
|
$GH release upload $VERSION-$CROMITE_SHA chrome-win.zip
|
||||||
echo "::endgroup::"
|
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
|
## linux
|
||||||
echo "::group::-------- linux x64"
|
echo "::group::-------- linux x64"
|
||||||
mkdir chrome-lin/
|
mkdir chrome-lin/
|
||||||
@@ -180,7 +179,6 @@ jobs:
|
|||||||
cp $OUTPUTFILE_LIN/snapshot_blob.bin chrome-lin/
|
cp $OUTPUTFILE_LIN/snapshot_blob.bin chrome-lin/
|
||||||
cp $OUTPUTFILE_LIN/xdg-mime chrome-lin/
|
cp $OUTPUTFILE_LIN/xdg-mime chrome-lin/
|
||||||
cp $OUTPUTFILE_LIN/xdg-settings chrome-lin/
|
cp $OUTPUTFILE_LIN/xdg-settings chrome-lin/
|
||||||
cp $OUTPUTFILE_LIN/chrome_sandbox chrome-lin/
|
|
||||||
|
|
||||||
tar -czvf chrome-lin64.tar.gz chrome-lin/
|
tar -czvf chrome-lin64.tar.gz chrome-lin/
|
||||||
|
|
||||||
@@ -188,7 +186,6 @@ jobs:
|
|||||||
$GH release upload $VERSION-$CROMITE_SHA chrome-lin64.tar.gz
|
$GH release upload $VERSION-$CROMITE_SHA chrome-lin64.tar.gz
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
# android arm64 symbols
|
|
||||||
echo "::group::-------- arm64 symbols"
|
echo "::group::-------- arm64 symbols"
|
||||||
zip arm64_symbols.zip ${{ env.OUTPUTFILE_ARM64 }}/dump_syms \
|
zip arm64_symbols.zip ${{ env.OUTPUTFILE_ARM64 }}/dump_syms \
|
||||||
${{ env.OUTPUTFILE_ARM64 }}/minidump_stackwalk \
|
${{ env.OUTPUTFILE_ARM64 }}/minidump_stackwalk \
|
||||||
@@ -196,18 +193,9 @@ jobs:
|
|||||||
$GH release upload $VERSION-$CROMITE_SHA arm64_symbols.zip
|
$GH release upload $VERSION-$CROMITE_SHA arm64_symbols.zip
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
# android arm64
|
TIMESTAMP=$(date +%s -r chrome-win.zip)
|
||||||
echo "::group::-------- android systemwebview arm64"
|
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"
|
||||||
sudo cp ${{ env.OUTPUTFILE_WV_ARM64 }}/apks/SystemWebView.apk arm64_SystemWebView.apk
|
$GH release upload $VERSION-$CROMITE_SHA updateurl.txt
|
||||||
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::"
|
|
||||||
|
|
||||||
$GH release edit $VERSION-$CROMITE_SHA -t $VERSION-$CROMITE_SHA
|
$GH release edit $VERSION-$CROMITE_SHA -t $VERSION-$CROMITE_SHA
|
||||||
|
|
||||||
@@ -215,4 +203,7 @@ jobs:
|
|||||||
$GH release edit $VERSION-$CROMITE_SHA --draft=false
|
$GH release edit $VERSION-$CROMITE_SHA --draft=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
VERSION=$(cat ${{ env.OUTPUTFILE_ARM64 }}/RELEASE)
|
||||||
|
docker push uazo/cromite:$VERSION-$CROMITE_SHA
|
||||||
|
docker push uazo/cromite-build:$VERSION-$CROMITE_SHA
|
||||||
|
|
||||||
|
|||||||
@@ -1,98 +0,0 @@
|
|||||||
name: Release Additional Targets
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
sha:
|
|
||||||
description: 'uazo/cromite SHA'
|
|
||||||
required: true
|
|
||||||
default: ''
|
|
||||||
type:
|
|
||||||
description: 'runner? [dev/ci]'
|
|
||||||
required: true
|
|
||||||
default: 'ci'
|
|
||||||
|
|
||||||
env:
|
|
||||||
CROMITE_SHA: ${{ github.event.inputs.sha }}
|
|
||||||
REMOVEDOCKERSUPPORT: true
|
|
||||||
USELOCALIMAGE: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
runs-on: ${{ github.event.inputs.type }}
|
|
||||||
env:
|
|
||||||
IS_DRAFT: ${{ github.event.inputs.draft }}
|
|
||||||
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/
|
|
||||||
OUTPUTFILE_CHR_X64: /storage/images/${{ github.event.inputs.sha }}/android/false/chr_x64/
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Prepare container
|
|
||||||
run: |
|
|
||||||
wget https://github.com/ericchiang/pup/releases/download/v0.4.0/pup_v0.4.0_linux_amd64.zip
|
|
||||||
unzip pup_v0.4.0_linux_amd64.zip && rm pup_v0.4.0_linux_amd64.zip
|
|
||||||
BRANCH=$(curl https://github.com/uazo/cromite/branch_commits/$CROMITE_SHA | ./pup -p li.branch:last-child a text{} | xargs)
|
|
||||||
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout 'uazo/cromite'
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
repository: 'uazo/cromite'
|
|
||||||
path: 'cromite'
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
VERSION=v$(cat ${{ env.OUTPUTFILE_X64 }}/RELEASE)
|
|
||||||
|
|
||||||
cd cromite/tools
|
|
||||||
|
|
||||||
GH=gh_2.21.1_linux_amd64/bin/gh
|
|
||||||
wget https://github.com/cli/cli/releases/download/v2.21.1/gh_2.21.1_linux_amd64.tar.gz
|
|
||||||
tar xfz gh_2.21.1_linux_amd64.tar.gz
|
|
||||||
|
|
||||||
echo ${{ secrets.GITHUB_TOKEN }} | $GH auth login --with-token
|
|
||||||
|
|
||||||
# android x64
|
|
||||||
echo "::group::-------- android systemwebview x64"
|
|
||||||
sudo cp ${{ env.OUTPUTFILE_X64 }}/apks/SystemWebView.apk x64_SystemWebView.apk
|
|
||||||
sudo chown runner x64_SystemWebView.apk
|
|
||||||
|
|
||||||
sudo cp ${{ env.OUTPUTFILE_X64 }}/apks/SystemWebViewShell.apk x64_SystemWebViewShell.apk
|
|
||||||
sudo chown runner x64_SystemWebViewShell.apk
|
|
||||||
|
|
||||||
echo Uploading x64_SystemWebView
|
|
||||||
$GH release upload $VERSION-$CROMITE_SHA x64_SystemWebView.apk
|
|
||||||
$GH release upload $VERSION-$CROMITE_SHA x64_SystemWebViewShell.apk
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
# vanilla chromium arm
|
|
||||||
echo "::group::-------- vanilla chromium arm"
|
|
||||||
sudo cp ${{ env.OUTPUTFILE_CHR_ARM }}/apks/ChromePublic.apk arm_VanillaChromium.apk
|
|
||||||
sudo chown runner arm_VanillaChromium.apk
|
|
||||||
|
|
||||||
echo Uploading arm_VanillaChromium
|
|
||||||
$GH release upload $VERSION-$CROMITE_SHA arm_VanillaChromium.apk
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
# vanilla chromium arm64
|
|
||||||
echo "::group::-------- vanilla chromium arm64"
|
|
||||||
sudo cp ${{ env.OUTPUTFILE_CHR_ARM64 }}/apks/ChromePublic.apk arm64_VanillaChromium.apk
|
|
||||||
sudo chown runner arm64_VanillaChromium.apk
|
|
||||||
|
|
||||||
echo Uploading arm64_VanillaChromium
|
|
||||||
$GH release upload $VERSION-$CROMITE_SHA arm64_VanillaChromium.apk
|
|
||||||
echo "::endgroup::"
|
|
||||||
|
|
||||||
# vanilla chromium x64
|
|
||||||
echo "::group::-------- vanilla chromium x64"
|
|
||||||
sudo cp ${{ env.OUTPUTFILE_CHR_X64 }}/apks/ChromePublic.apk x64_VanillaChromium.apk
|
|
||||||
sudo chown runner x64_VanillaChromium.apk
|
|
||||||
|
|
||||||
echo Uploading x64_VanillaChromium
|
|
||||||
$GH release upload $VERSION-$CROMITE_SHA x64_VanillaChromium.apk
|
|
||||||
echo "::endgroup::"
|
|
||||||
@@ -67,14 +67,14 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c #v6.1.0
|
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
|
||||||
if: env.CHANGES == '1'
|
if: env.CHANGES == '1'
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.CROMITE_PULLS }}
|
token: ${{ secrets.CROMITE_PULLS }}
|
||||||
path: cromite
|
path: cromite
|
||||||
base: ${{ env.BRANCH }}
|
base: ${{ env.BRANCH }}
|
||||||
add-paths: |
|
add-paths: |
|
||||||
docs/*.md
|
build/patches/*.patch
|
||||||
commit-message: '[AUTO][DOC] Generate patches doc for master branch'
|
commit-message: '[AUTO][DOC] Generate patches doc for master branch'
|
||||||
title: '[AUTO][DOC] Generate patches doc for master branch'
|
title: '[AUTO][DOC] Generate patches doc for master branch'
|
||||||
body: ${{ env.MESSAGE }}
|
body: ${{ env.MESSAGE }}
|
||||||
|
|||||||
@@ -2,11 +2,6 @@ name: Update fdroid repo
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
|
||||||
type:
|
|
||||||
description: 'runner? [dev/ci]'
|
|
||||||
required: true
|
|
||||||
default: 'ci'
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
REMOVEDOCKERSUPPORT: true
|
REMOVEDOCKERSUPPORT: true
|
||||||
@@ -15,7 +10,7 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-fdroid:
|
update-fdroid:
|
||||||
runs-on: ${{ github.event.inputs.type }}
|
runs-on: ci2
|
||||||
|
|
||||||
container:
|
container:
|
||||||
image: uazo/fdroidserver:latest
|
image: uazo/fdroidserver:latest
|
||||||
@@ -32,14 +27,12 @@ jobs:
|
|||||||
touch /etc/apt/apt.conf.d/proxy.conf
|
touch /etc/apt/apt.conf.d/proxy.conf
|
||||||
echo "Acquire::http::Proxy \"$https_proxy\";" >/etc/apt/apt.conf.d/proxy.conf
|
echo "Acquire::http::Proxy \"$https_proxy\";" >/etc/apt/apt.conf.d/proxy.conf
|
||||||
|
|
||||||
cd /
|
|
||||||
. fdroidserver-env/bin/activate
|
|
||||||
apt update
|
apt update
|
||||||
|
|
||||||
DEBIAN_FRONTEND=noninteractive apt update && apt install -y wget unzip
|
DEBIAN_FRONTEND=noninteractive apt update && apt install -y wget
|
||||||
wget https://github.com/rclone/rclone/releases/download/v1.72.0/rclone-v1.72.0-linux-amd64.zip
|
wget https://github.com/rclone/rclone/releases/download/v1.64.0/rclone-v1.64.0-linux-amd64.zip
|
||||||
unzip rclone-v1.72.0-linux-amd64.zip
|
unzip rclone-v1.64.0-linux-amd64.zip
|
||||||
export rclone=rclone-v1.72.0-linux-amd64/rclone
|
export rclone=rclone-v1.64.0-linux-amd64/rclone
|
||||||
|
|
||||||
mkdir -p ~/.config/rclone
|
mkdir -p ~/.config/rclone
|
||||||
echo "${{ secrets.RCLONE_CONF }}" > ~/.config/rclone/rclone.conf
|
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 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, Nougat and above (Minimum v7.0, API level 24), Windows and Linux 64bit.
|
||||||
|
|
||||||
# Goals
|
# Goals
|
||||||
|
|
||||||
@@ -27,13 +27,12 @@ In addition, Cromite would like to promote greater integration with other non-pr
|
|||||||
|
|
||||||
# Privacy limitations
|
# Privacy limitations
|
||||||
|
|
||||||
Cromite's privacy features, including anti-fingerprinting mitigations (which are not comprehensive), **are not to be considered useful for journalists and people living in countries with freedom limitations**, please look at [Tor Browser](https://www.torproject.org/download/) in such cases (better to use the desktop version).
|
Cromite's privacy features, including anti-fingerprinting mitigations (which are not comprehensive), **are not to be considered useful for journalists and people living in countries with freedom limitations**, please look at [Tor Browser](https://www.torproject.org/download/) in such cases.
|
||||||
Please note that this project is not free of bugs and that changing the behaviour of a browser can be risky and not without problems.
|
Please note that this project is not free of bugs and that changing the behaviour of a browser can be risky and not without problems.
|
||||||
|
|
||||||
# Docs
|
# Docs
|
||||||
- [Privacy Policy](https://github.com/uazo/cromite/blob/master/docs/PRIVACY_POLICY.md)
|
- [Privacy Policy](https://github.com/uazo/cromite/blob/master/docs/PRIVACY_POLICY.md)
|
||||||
- [Features](https://github.com/uazo/cromite/blob/master/docs/FEATURES.md)
|
- [Features](https://github.com/uazo/cromite/blob/master/docs/FEATURES.md)
|
||||||
- [Faqs](https://github.com/uazo/cromite/blob/master/docs/FAQ.md)
|
|
||||||
- [How to build](https://github.com/uazo/cromite/blob/master/docs/HOW_TO_BUILD.md)
|
- [How to build](https://github.com/uazo/cromite/blob/master/docs/HOW_TO_BUILD.md)
|
||||||
- [Patch list](https://github.com/uazo/cromite/blob/master/docs/PATCHES.md)
|
- [Patch list](https://github.com/uazo/cromite/blob/master/docs/PATCHES.md)
|
||||||
|
|
||||||
@@ -41,58 +40,16 @@ Please note that this project is not free of bugs and that changing the behaviou
|
|||||||
|
|
||||||
All built versions are available as [releases](https://github.com/uazo/cromite/releases).
|
All built versions are available as [releases](https://github.com/uazo/cromite/releases).
|
||||||
|
|
||||||
Cromite is currently built for ARM, ARM64, Android x86, Windows x64 and Linux.
|
Cromite is currently built for ARM64, x86 (Android SDK version 23+) and Windows x64.
|
||||||
|
|
||||||
The following files will be present for each release:
|
You will automatically receive notifications about new updates (and be able to install them) via the auto updater functionality (enabled by default), see [related wiki page](https://github.com/bromite/bromite/wiki/AutomaticUpdates).
|
||||||
|
|
||||||
#### Cromite apk for android:
|
|
||||||
- [arm64_ChromePublic.apk](https://github.com/uazo/cromite/releases/latest/download/arm64_ChromePublic.apk)
|
|
||||||
- [arm_ChromePublic.apk](https://github.com/uazo/cromite/releases/latest/download/arm_ChromePublic.apk)
|
|
||||||
- [x64_ChromePublic.apk](https://github.com/uazo/cromite/releases/latest/download/x64_ChromePublic.apk)
|
|
||||||
|
|
||||||
#### Linux package:
|
|
||||||
- [chrome-lin64.tar.gz](https://github.com/uazo/cromite/releases/latest/download/chrome-lin64.tar.gz)
|
|
||||||
|
|
||||||
#### Windows package:
|
|
||||||
- [chrome-win.zip](https://github.com/uazo/cromite/releases/latest/download/chrome-win.zip)
|
|
||||||
|
|
||||||
#### Debugging symbols and proguard file for java stacktrace deobfuscation
|
|
||||||
- x64_ChromePublic.apk.mapping
|
|
||||||
- arm64_ChromePublic.apk.mapping
|
|
||||||
- arm64_symbols.zip
|
|
||||||
|
|
||||||
#### Build time analysis file:
|
|
||||||
- arm64_ninja_log_trace.html
|
|
||||||
|
|
||||||
#### Chrlauncher autoupdate file:
|
|
||||||
- updateurl.txt
|
|
||||||
|
|
||||||
Additional files are also available: please note that these files are created by an [additional build](https://github.com/uazo/cromite/actions/workflows/build_additional_targets.yaml) separate from the release process, and therefore may not be immediately available.
|
|
||||||
|
|
||||||
#### Cromite System WebView apk for android:
|
|
||||||
- arm64_SystemWebView.apk
|
|
||||||
- x64_SystemWebView.apk
|
|
||||||
|
|
||||||
#### Vanilla Chromium for android (used for tests):
|
|
||||||
- arm64_VanillaChromium.apk
|
|
||||||
- arm_VanillaChromium.apk
|
|
||||||
- x64_VanillaChromium.apk
|
|
||||||
|
|
||||||
#### SystemWebView Shell (used for tests)
|
|
||||||
- arm64_SystemWebViewShell.apk
|
|
||||||
- x64_SystemWebViewShell.apk
|
|
||||||
|
|
||||||
### F-droid
|
### F-droid
|
||||||
|
|
||||||
Official F-droid repo url:
|
Official F-droid repo url:
|
||||||
https://www.cromite.org/fdroid/repo/?fingerprint=49F37E74DEE483DCA2B991334FB5A0200787430D0B5F9A783DD5F13695E9517B
|
https://www.cromite.org/fdroid/repo/?fingerprint=49F37E74DEE483DCA2B991334FB5A0200787430D0B5F9A783DD5F13695E9517B
|
||||||
|
|
||||||
### Auto-update in Android
|
### Auto-update setup for windows
|
||||||
|
|
||||||
You will automatically receive notifications about new updates (and be able to install them) via the auto updater functionality.
|
|
||||||
You will be asked whether you want to activate the functionality during the first start-up.
|
|
||||||
|
|
||||||
### Auto-update setup for Windows
|
|
||||||
|
|
||||||
1. Download https://github.com/henrypp/chrlauncher/releases
|
1. Download https://github.com/henrypp/chrlauncher/releases
|
||||||
2. Create a `chrlauncher.ini`
|
2. Create a `chrlauncher.ini`
|
||||||
@@ -106,7 +63,7 @@ ChromiumUpdateUrl=https://github.com/uazo/cromite/releases/latest/download/updat
|
|||||||
# Command line for Chromium (string):
|
# Command line for Chromium (string):
|
||||||
# note --user-data-dir= works better if path is absolute
|
# note --user-data-dir= works better if path is absolute
|
||||||
# See here: http://peter.sh/experiments/chromium-command-line-switches/
|
# 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\Chromium\User Data" --no-default-browser-check
|
||||||
|
|
||||||
# to enable full logging in c:\temp\log.txt (daily rotate, no automatic deletion)
|
# 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
|
# ChromiumCommandLine=--enable-logging --v=0 --log-file=C:\temp\log.txt --user-data-dir=".\User Data" --no-default-browser-check
|
||||||
@@ -129,38 +86,14 @@ icacls . /grant "*S-1-15-2-2:(OI)(CI)(RX)"
|
|||||||
see https://github.com/uazo/bromite-buildtools/issues/51
|
see https://github.com/uazo/bromite-buildtools/issues/51
|
||||||
|
|
||||||
### Enable AppContainer for renderer process in windows
|
### Enable AppContainer for renderer process in windows
|
||||||
you can activate (highly recommended) the 'RendererAppContainer' flag from the command line with
|
you can activate the 'RendererAppContainer' flag from the command line with
|
||||||
```
|
```
|
||||||
--enable-features=RendererAppContainer
|
--enable-features=RendererAppContainer
|
||||||
```
|
```
|
||||||
In this case, it is also necessary to run icacls as indicated above.
|
|
||||||
|
|
||||||
### Auto-update setup for linux
|
### Auto-update setup for linux
|
||||||
working in progress in https://github.com/uazo/cromite/issues/771
|
working in progress in https://github.com/uazo/cromite/issues/771
|
||||||
|
|
||||||
### Making Cromite work in Ubuntu 24.04 and its derivatives (kubuntu, etc)
|
|
||||||
This happens because, starting with Ubuntu 24.04, Apparmor
|
|
||||||
restricts the use of unprivileged user namespaces. To fix this, you have several options:
|
|
||||||
#### 1. Creating an apparmor profile for cromite
|
|
||||||
Create `/etc/apparmor.d/chrome`, and write:
|
|
||||||
```
|
|
||||||
abi <abi/4.0>,
|
|
||||||
include <tunables/global>
|
|
||||||
|
|
||||||
profile cromite /home/user/cromite/chrome-lin/chrome flags=(unconfined) {
|
|
||||||
userns,
|
|
||||||
|
|
||||||
include if exists <local/chrome>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
replacing the cromite binary path with where you have placed cromite.
|
|
||||||
|
|
||||||
Now, run `sudo apparmor_parser -r /etc/apparmor.d/cromite` to apply the changes.
|
|
||||||
#### 2. Disabling the restriction until next reboot
|
|
||||||
`sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0`
|
|
||||||
#### 3. Disabling the restriction permanently
|
|
||||||
Add `kernel.apparmor_restrict_unprivileged_userns=0` to the file `/etc/sysctl.d/60-apparmor-namespace.conf`. Create the file if not exists.
|
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
Please submit issues following the issue template; beware that GitHub does not display the templates from mobile.
|
Please submit issues following the issue template; beware that GitHub does not display the templates from mobile.
|
||||||
@@ -184,17 +117,6 @@ For any usage or development discussion please use GitHub Discussions: https://g
|
|||||||
|
|
||||||
thanks to [austinhuang0131](https://github.com/austinhuang0131) for the svg icon
|
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
|
|
||||||
|
|
||||||
# License
|
# License
|
||||||
|
|
||||||
Cromite is published under [GNU GPL v3](./LICENSE).
|
Cromite is published under [GNU GPL v3](./LICENSE).
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
148.0.7778.168
|
125.0.6422.76
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
# infra/config/generated/builders/ci/android-official/gn-args.json
|
|
||||||
debuggable_apks = false
|
|
||||||
is_official_build = true
|
|
||||||
|
|
||||||
# the official instructions use symbol_level=2 but I do not need the debug symbols
|
|
||||||
symbol_level = 0
|
|
||||||
|
|
||||||
# do not make the second build of v8
|
|
||||||
include_both_v8_snapshots = false
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,36 +0,0 @@
|
|||||||
)]}'
|
|
||||||
{
|
|
||||||
"response": {
|
|
||||||
"server": "prod",
|
|
||||||
"protocol": "3.1",
|
|
||||||
"app": [
|
|
||||||
{
|
|
||||||
"appid": "gcmjkmgdlgnkkcocmoeiminaijmmjnii",
|
|
||||||
"status": "ok",
|
|
||||||
"updatecheck": {
|
|
||||||
"status": "ok",
|
|
||||||
"urls": {
|
|
||||||
"url": [
|
|
||||||
{
|
|
||||||
"codebase": "https://www.cromite.org/components/"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"manifest": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"packages": {
|
|
||||||
"package": [
|
|
||||||
{
|
|
||||||
"hash_sha256": "22639FA1B21D9D95E6343A6A58028B224903D23BA404537584A22236FCFC3482",
|
|
||||||
"name": "fonts_component.zip",
|
|
||||||
"fp": "1.22639FA1B21D9D95E6343A6A58028B224903D23BA404537584A22236FCFC3482",
|
|
||||||
"required": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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" }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+32
-35
@@ -1,12 +1,18 @@
|
|||||||
android_channel="stable"
|
android_channel="stable"
|
||||||
blink_symbol_level=1
|
blink_symbol_level=1
|
||||||
build_contextual_search=false
|
build_contextual_search=false
|
||||||
|
build_with_tflite_lib=false
|
||||||
chrome_pgo_phase=0
|
chrome_pgo_phase=0
|
||||||
dcheck_always_on=false
|
dcheck_always_on=false
|
||||||
|
debuggable_apks=false
|
||||||
|
dfmify_dev_ui=false
|
||||||
|
disable_android_lint=true
|
||||||
disable_fieldtrial_testing_config=true
|
disable_fieldtrial_testing_config=true
|
||||||
|
enable_gvr_services=false
|
||||||
enable_hangout_services_extension=false
|
enable_hangout_services_extension=false
|
||||||
enable_iterator_debugging=false
|
enable_iterator_debugging=false
|
||||||
enable_mdns=false
|
enable_mdns=false
|
||||||
|
enable_nacl=false
|
||||||
enable_remoting=false
|
enable_remoting=false
|
||||||
enable_reporting=false
|
enable_reporting=false
|
||||||
enable_vr=false
|
enable_vr=false
|
||||||
@@ -19,10 +25,15 @@ rtc_build_examples=false
|
|||||||
symbol_level=1
|
symbol_level=1
|
||||||
treat_warnings_as_errors=true
|
treat_warnings_as_errors=true
|
||||||
use_debug_fission=true
|
use_debug_fission=true
|
||||||
|
use_errorprone_java_compiler=false
|
||||||
use_official_google_api_keys=false
|
use_official_google_api_keys=false
|
||||||
use_rtti=false
|
use_rtti=false
|
||||||
|
use_sysroot=false
|
||||||
|
webview_includes_weblayer=false
|
||||||
enable_arcore=false
|
enable_arcore=false
|
||||||
enable_openxr=false
|
enable_openxr=false
|
||||||
|
enable_gvr_services=false
|
||||||
|
enable_feed_v2=false
|
||||||
enable_cardboard=false
|
enable_cardboard=false
|
||||||
is_high_end_android=true
|
is_high_end_android=true
|
||||||
|
|
||||||
@@ -60,28 +71,27 @@ if (target_os == "android" || target_os == "win") {
|
|||||||
|
|
||||||
# disable passthrough audio codecs
|
# disable passthrough audio codecs
|
||||||
enable_platform_dts_audio = false
|
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
|
# disabled the use of the context snapshot
|
||||||
# see https://github.com/uazo/cromite/pull/317 for context
|
# see https://github.com/uazo/cromite/pull/317 for context
|
||||||
use_v8_context_snapshot = false
|
use_v8_context_snapshot = false
|
||||||
|
|
||||||
|
# enable libjxl support by default
|
||||||
|
enable_jxl_decoder = true
|
||||||
|
|
||||||
|
# disable minikin engine
|
||||||
|
# see https://github.com/uazo/cromite/issues/697
|
||||||
|
use_minikin_hyphenation = false
|
||||||
|
|
||||||
# disable automatic update of sync-related cookies
|
# disable automatic update of sync-related cookies
|
||||||
# initial commit: https://source.chromium.org/chromium/chromium/src/+/fd9a841f7a63b9f5510f6b713d9c833d259c63ad
|
# initial commit: https://source.chromium.org/chromium/chromium/src/+/fd9a841f7a63b9f5510f6b713d9c833d259c63ad
|
||||||
enable_bound_session_credentials = false
|
enable_bound_session_credentials = false
|
||||||
|
|
||||||
# Allows building without //third_party/unrar included, for license reasons
|
|
||||||
safe_browsing_use_unrar = false
|
|
||||||
|
|
||||||
# Keep disabled Google Request Header Integrity
|
|
||||||
# see https://chromium-review.googlesource.com/c/chromium/src/+/5778493
|
|
||||||
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() {
|
declare_args() {
|
||||||
_is_debug_build = ""
|
_is_debug_build = ""
|
||||||
build_webview = false
|
build_webview = false
|
||||||
@@ -89,6 +99,10 @@ declare_args() {
|
|||||||
|
|
||||||
not_needed(["_target_build", "_is_debug_build"])
|
not_needed(["_target_build", "_is_debug_build"])
|
||||||
|
|
||||||
|
if (getenv("TARGET_CPU") != "") {
|
||||||
|
target_cpu = getenv("TARGET_CPU")
|
||||||
|
}
|
||||||
|
|
||||||
if (target_os == "android") {
|
if (target_os == "android") {
|
||||||
target_os = "android" # fix traffic annotation auditor
|
target_os = "android" # fix traffic annotation auditor
|
||||||
#enable_kythe_annotations = true
|
#enable_kythe_annotations = true
|
||||||
@@ -97,13 +111,6 @@ if (target_os == "android") {
|
|||||||
system_webview_package_name="org.cromite.webview" #"com.android.webview"
|
system_webview_package_name="org.cromite.webview" #"com.android.webview"
|
||||||
system_webview_shell_package_name="org.cromite.webview_shell"
|
system_webview_shell_package_name="org.cromite.webview_shell"
|
||||||
|
|
||||||
chrome_pgo_phase = 2 # enable pgo
|
|
||||||
|
|
||||||
use_errorprone_java_compiler = false
|
|
||||||
|
|
||||||
# do not split Developer UI split into a separate Dynamic Feature Module
|
|
||||||
dfmify_dev_ui = false
|
|
||||||
|
|
||||||
if (getenv("USE_KEYSTORE") != "") {
|
if (getenv("USE_KEYSTORE") != "") {
|
||||||
android_keystore_path = "/home/lg/working_dir/cromite.keystore"
|
android_keystore_path = "/home/lg/working_dir/cromite.keystore"
|
||||||
android_keystore_name = "cromite"
|
android_keystore_name = "cromite"
|
||||||
@@ -112,10 +119,8 @@ if (target_os == "android") {
|
|||||||
|
|
||||||
cromite_pref_hash_seed_bin = getenv("CROMITE_PREF_HASH_SEED_BIN")
|
cromite_pref_hash_seed_bin = getenv("CROMITE_PREF_HASH_SEED_BIN")
|
||||||
|
|
||||||
disable_android_lint = true
|
|
||||||
|
|
||||||
_is_debug_build = getenv("TARGET_ISDEBUG")
|
_is_debug_build = getenv("TARGET_ISDEBUG")
|
||||||
if (_is_debug_build == "true") {
|
if(_is_debug_build == "true") {
|
||||||
# print("Debug build on")
|
# print("Debug build on")
|
||||||
is_debug = true
|
is_debug = true
|
||||||
is_official_build = false
|
is_official_build = false
|
||||||
@@ -123,23 +128,13 @@ if (target_os == "android") {
|
|||||||
symbol_level = 1
|
symbol_level = 1
|
||||||
strip_debug_info = false
|
strip_debug_info = false
|
||||||
generate_linker_map = 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 {
|
} else {
|
||||||
include_both_v8_snapshots = false
|
|
||||||
include_both_v8_snapshots_android_secondary_abi = false
|
|
||||||
generate_linker_map = true
|
generate_linker_map = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (build_webview) {
|
if (build_webview) {
|
||||||
# 32 and 64bit
|
# only 64bit
|
||||||
skip_secondary_abi_for_cq = false
|
skip_secondary_abi_for_cq = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,6 +147,7 @@ if (target_os == "win") {
|
|||||||
enable_pdf = true
|
enable_pdf = true
|
||||||
pdf_is_complete_lib = true
|
pdf_is_complete_lib = true
|
||||||
enable_plugins = true
|
enable_plugins = true
|
||||||
|
enable_ppapi = false
|
||||||
|
|
||||||
chrome_pgo_phase = 2 # enable pgo
|
chrome_pgo_phase = 2 # enable pgo
|
||||||
|
|
||||||
@@ -167,6 +163,7 @@ if (target_os == "linux") {
|
|||||||
enable_pdf = true
|
enable_pdf = true
|
||||||
pdf_is_complete_lib = true
|
pdf_is_complete_lib = true
|
||||||
enable_plugins = true
|
enable_plugins = true
|
||||||
|
enable_ppapi = false
|
||||||
|
|
||||||
use_sysroot = true
|
use_sysroot = true
|
||||||
chrome_pgo_phase = 2 # enable pgo
|
chrome_pgo_phase = 2 # enable pgo
|
||||||
|
|||||||
@@ -1,14 +1,9 @@
|
|||||||
Do-not-link-with-libatomic.patch
|
|
||||||
Force-use-vpython3-for-all-scripts.patch
|
|
||||||
bromite-build-utils.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
|
Remove-EV-certificates.patch
|
||||||
do-not-hide-.orig-files.patch
|
do-not-hide-.orig-files.patch
|
||||||
|
Do-not-link-with-libatomic.patch
|
||||||
do-not-add-suffix-to-package-name.patch
|
do-not-add-suffix-to-package-name.patch
|
||||||
|
exit-on-failure-of-inclusion.patch
|
||||||
Move-some-account-settings-back-to-privacy-settings.patch
|
Move-some-account-settings-back-to-privacy-settings.patch
|
||||||
kill-Vision.patch
|
kill-Vision.patch
|
||||||
kill-Location-fall-back-to-system.patch
|
kill-Location-fall-back-to-system.patch
|
||||||
@@ -25,7 +20,8 @@ Restore-classic-new-tab-page.patch
|
|||||||
Always-use-new-tab-page-for-default-home-page.patch
|
Always-use-new-tab-page-for-default-home-page.patch
|
||||||
disable-battery-status-updater.patch
|
disable-battery-status-updater.patch
|
||||||
Battery-API-return-nothing.patch
|
Battery-API-return-nothing.patch
|
||||||
Disable-omission-of-URL-elements.patch
|
updater-disable-updater-pings.patch
|
||||||
|
Disable-omission-of-URL-elements-in-Omnibox.patch
|
||||||
Modify-default-preferences.patch
|
Modify-default-preferences.patch
|
||||||
Do-not-store-passwords-by-default.patch
|
Do-not-store-passwords-by-default.patch
|
||||||
Disable-NTP-remote-suggestions-by-default.patch
|
Disable-NTP-remote-suggestions-by-default.patch
|
||||||
@@ -38,10 +34,14 @@ ungoogled-chromium-Disable-translate-integration.patch
|
|||||||
ungoogled-chromium-Disable-profile-avatar.patch
|
ungoogled-chromium-Disable-profile-avatar.patch
|
||||||
ungoogled-chromium-Disable-intranet-detector.patch
|
ungoogled-chromium-Disable-intranet-detector.patch
|
||||||
ungoogled-chromium-no-special-hosts-domains.patch
|
ungoogled-chromium-no-special-hosts-domains.patch
|
||||||
|
ungoogled-chromium-Disable-Gaia.patch
|
||||||
ungoogled-chromium-Disable-Network-Time-Tracker.patch
|
ungoogled-chromium-Disable-Network-Time-Tracker.patch
|
||||||
Disable-all-promo-dialogs.patch
|
Disable-all-promo-dialogs.patch
|
||||||
Disable-update-scheduler.patch
|
Disable-update-scheduler.patch
|
||||||
Add-search-engine.patch
|
Add-search-engine.patch
|
||||||
|
openH264-enable-ARM-ARM64-optimizations.patch
|
||||||
|
build-remove-calling-untrusted-hooks.patch
|
||||||
|
Inject-scripts-for-AMP-tracking-ads-and-video.patch
|
||||||
Allow-playing-audio-in-background.patch
|
Allow-playing-audio-in-background.patch
|
||||||
Add-flag-to-control-video-playback-resume-feature.patch
|
Add-flag-to-control-video-playback-resume-feature.patch
|
||||||
Add-exit-menu-item.patch
|
Add-exit-menu-item.patch
|
||||||
@@ -50,7 +50,6 @@ Multiple-fingerprinting-mitigations.patch
|
|||||||
Add-flag-to-configure-maximum-connections-per-host.patch
|
Add-flag-to-configure-maximum-connections-per-host.patch
|
||||||
Do-not-ignore-download-location-prompt-setting.patch
|
Do-not-ignore-download-location-prompt-setting.patch
|
||||||
Add-support-for-writing-URIs.patch
|
Add-support-for-writing-URIs.patch
|
||||||
Restore-BookmarkToolbar-setCurrentFolder.patch
|
|
||||||
Add-bookmark-import-export-actions.patch
|
Add-bookmark-import-export-actions.patch
|
||||||
Bookmarks-select-all-menu-entry.patch
|
Bookmarks-select-all-menu-entry.patch
|
||||||
Add-an-always-incognito-mode.patch
|
Add-an-always-incognito-mode.patch
|
||||||
@@ -58,10 +57,11 @@ Keep-flag-to-allow-screenshots-in-Incognito-mode.patch
|
|||||||
Add-option-to-not-persist-tabs-across-sessions.patch
|
Add-option-to-not-persist-tabs-across-sessions.patch
|
||||||
Add-a-proxy-configuration-page.patch
|
Add-a-proxy-configuration-page.patch
|
||||||
Add-custom-tab-intents-privacy-option.patch
|
Add-custom-tab-intents-privacy-option.patch
|
||||||
Disable-privacy-sandbox.patch
|
Disable-FLoC-and-privacy-sandbox.patch
|
||||||
History-number-of-days-privacy-setting.patch
|
History-number-of-days-privacy-setting.patch
|
||||||
Disable-fetching-of-all-field-trials.patch
|
Disable-fetching-of-all-field-trials.patch
|
||||||
Disable-plugins-enumeration.patch
|
Disable-plugins-enumeration.patch
|
||||||
|
net-cert-increase-default-key-length.patch
|
||||||
dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
|
dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
|
||||||
Add-flag-to-disable-IPv6-probes.patch
|
Add-flag-to-disable-IPv6-probes.patch
|
||||||
profile-resetter-disable-send-settings.patch
|
profile-resetter-disable-send-settings.patch
|
||||||
@@ -69,6 +69,8 @@ Do-not-build-API-keys-infobar.patch
|
|||||||
autofill-miscellaneous.patch
|
autofill-miscellaneous.patch
|
||||||
Enable-native-Android-autofill.patch
|
Enable-native-Android-autofill.patch
|
||||||
translate-disable-fetching-of-languages-from-server.patch
|
translate-disable-fetching-of-languages-from-server.patch
|
||||||
|
Offer-builtin-autocomplete-for-chrome-flags.patch
|
||||||
|
Use-4-tile-rows-never-show-logo.patch
|
||||||
Disable-various-metrics.patch
|
Disable-various-metrics.patch
|
||||||
Enable-StrictOriginIsolation-and-SitePerProcess.patch
|
Enable-StrictOriginIsolation-and-SitePerProcess.patch
|
||||||
Use-64-bit-WebView-processes.patch
|
Use-64-bit-WebView-processes.patch
|
||||||
@@ -91,12 +93,16 @@ Disable-feeds-support-by-default.patch
|
|||||||
Disable-DRM-media-origin-IDs-preprovisioning.patch
|
Disable-DRM-media-origin-IDs-preprovisioning.patch
|
||||||
Disable-smart-selection-by-default.patch
|
Disable-smart-selection-by-default.patch
|
||||||
Guard-for-user-agent-reduction.patch
|
Guard-for-user-agent-reduction.patch
|
||||||
|
AImageReader-CFI-crash-mitigations.patch
|
||||||
Add-menu-item-to-view-source.patch
|
Add-menu-item-to-view-source.patch
|
||||||
Revert-removal-of-execution-context-address-space.patch
|
Revert-removal-of-execution-context-address-space.patch
|
||||||
Block-gateway-attacks-via-websockets.patch
|
Block-gateway-attacks-via-websockets.patch
|
||||||
|
Enable-prefetch-privacy-changes-by-default.patch
|
||||||
|
Disable-support-for-RAR-files-inspection.patch
|
||||||
Enable-darken-websites-checkbox-in-themes.patch
|
Enable-darken-websites-checkbox-in-themes.patch
|
||||||
Remove-blocklisted-URLs-upon-bookmark-creation.patch
|
Remove-blocklisted-URLs-upon-bookmark-creation.patch
|
||||||
Disable-the-DIAL-repeating-discovery.patch
|
Disable-the-DIAL-repeating-discovery.patch
|
||||||
|
Block-qjz9zk-or-trk-requests.patch
|
||||||
Hardening-against-incognito-mode-detection.patch
|
Hardening-against-incognito-mode-detection.patch
|
||||||
Restore-Simplified-NTP-launch.patch
|
Restore-Simplified-NTP-launch.patch
|
||||||
Add-option-to-use-home-page-as-NTP.patch
|
Add-option-to-use-home-page-as-NTP.patch
|
||||||
@@ -114,6 +120,7 @@ User-agent-customization.patch
|
|||||||
Add-AllowUserCertificates-flag.patch
|
Add-AllowUserCertificates-flag.patch
|
||||||
Add-IsCleartextPermitted-flag.patch
|
Add-IsCleartextPermitted-flag.patch
|
||||||
Add-flag-for-omnibox-autocomplete-filtering.patch
|
Add-flag-for-omnibox-autocomplete-filtering.patch
|
||||||
|
Revert-Delete-block-external-form-redirects.patch
|
||||||
Add-flag-to-disable-external-intent-requests.patch
|
Add-flag-to-disable-external-intent-requests.patch
|
||||||
Enable-share-intent.patch
|
Enable-share-intent.patch
|
||||||
Logcat-crash-reports-UI.patch
|
Logcat-crash-reports-UI.patch
|
||||||
@@ -121,6 +128,7 @@ Add-flag-to-disable-vibration.patch
|
|||||||
mime_util-force-text-x-suse-ymp-to-be-downloaded.patch
|
mime_util-force-text-x-suse-ymp-to-be-downloaded.patch
|
||||||
Client-hints-overrides.patch
|
Client-hints-overrides.patch
|
||||||
Allow-building-without-enable_reporting.patch
|
Allow-building-without-enable_reporting.patch
|
||||||
|
Disable-lock-icon-in-address-bar-by-default.patch
|
||||||
Experimental-user-scripts-support.patch
|
Experimental-user-scripts-support.patch
|
||||||
Keep-empty-tabs-between-sessions.patch
|
Keep-empty-tabs-between-sessions.patch
|
||||||
Disable-third-party-origin-trials.patch
|
Disable-third-party-origin-trials.patch
|
||||||
@@ -153,7 +161,9 @@ Enable-Certificate-Transparency.patch
|
|||||||
Invalidate-components-public-key.patch
|
Invalidate-components-public-key.patch
|
||||||
Improve-plain-text-rendering-on-mobile.patch
|
Improve-plain-text-rendering-on-mobile.patch
|
||||||
Remove-segmentation-platform.patch
|
Remove-segmentation-platform.patch
|
||||||
|
Follow-only-system-dark-mode.patch
|
||||||
Remove-window-name-on-cross-origin-navigation.patch
|
Remove-window-name-on-cross-origin-navigation.patch
|
||||||
|
Remove-preload-of-com.google.android.gms.fonts.patch
|
||||||
Partition-Blink-memory-cache.patch
|
Partition-Blink-memory-cache.patch
|
||||||
Remove-navigator.connection-info.patch
|
Remove-navigator.connection-info.patch
|
||||||
Disable-PrivacyGuide.patch
|
Disable-PrivacyGuide.patch
|
||||||
@@ -161,27 +171,36 @@ sharing-hub-always-use-visible-URL.patch
|
|||||||
Enable-HEVC-by-default.patch
|
Enable-HEVC-by-default.patch
|
||||||
Partition-blobs-by-top-frame-URL.patch
|
Partition-blobs-by-top-frame-URL.patch
|
||||||
Override-Navigator-Language.patch
|
Override-Navigator-Language.patch
|
||||||
|
Disable-add-to-home-screen-prompt.patch
|
||||||
Remove-HTTP-referrals-in-cross-origin-navigation.patch
|
Remove-HTTP-referrals-in-cross-origin-navigation.patch
|
||||||
|
Disable-StartSurface-feature.patch
|
||||||
|
Enable-PermuteTLSExtensions-by-default.patch
|
||||||
Enable-third-party-storage-partitioning.patch
|
Enable-third-party-storage-partitioning.patch
|
||||||
Restore-adaptive-button-in-top-toolbar-customization.patch
|
Restore-adaptive-button-in-top-toolbar-customization.patch
|
||||||
Add-kill-switch-for-unsupported-clangd-flags.patch
|
Add-kill-switch-for-unsupported-clangd-flags.patch
|
||||||
|
|
||||||
WIN-enable-pdf-plugin.patch
|
WIN-enable-pdf-plugin.patch
|
||||||
WIN-disable-annotate-downloads.patch
|
WIN-disable-annotate-downloads.patch
|
||||||
Enable-HighEfficiencyMode-by-default.patch
|
WIN-enable-HighEfficiencyMode-by-default.patch
|
||||||
|
WIN-enable-file-system-access-blocklist.patch
|
||||||
WIN-Disable-TabHoverCard-images.patch
|
WIN-Disable-TabHoverCard-images.patch
|
||||||
WIN-Fix-log-to-file.patch
|
WIN-Fix-log-to-file.patch
|
||||||
WIN-Disable-updater.patch
|
WIN-Disable-updater.patch
|
||||||
WIN-Disable-first-run.patch
|
WIN-Disable-first-run.patch
|
||||||
WIN-Add-some-prefs-to-secure-preferences.patch
|
WIN-Add-some-prefs-to-secure-preferences.patch
|
||||||
WIN-Disable-search-for-image.patch
|
WIN-Disable-search-for-image.patch
|
||||||
|
|
||||||
AudioBuffer-AnalyserNode-fp-mitigations.patch
|
AudioBuffer-AnalyserNode-fp-mitigations.patch
|
||||||
|
Disable-Component-Updates.patch
|
||||||
add-browser-policy.patch
|
add-browser-policy.patch
|
||||||
Always-open-browser-controls-in-new-tab.patch
|
Always-open-browser-controls-in-new-tab.patch
|
||||||
Partitioning-all-cookies-by-top-frame-domain.patch
|
Partitioning-all-cookies-by-top-frame-domain.patch
|
||||||
Disable-FedCm.patch
|
Disable-FedCm.patch
|
||||||
Disable-BackForwardCache.patch
|
Disable-BackForwardCache.patch
|
||||||
|
Evict-the-entire-FrameTree-like-desktop.patch
|
||||||
Disable-visited-pseudo-class.patch
|
Disable-visited-pseudo-class.patch
|
||||||
Add-setting-to-clear-data-on-exit.patch
|
Add-setting-to-clear-data-on-exit.patch
|
||||||
|
WIN-Disable-sharing-hub.patch
|
||||||
Improve-the-browser-sandbox.patch
|
Improve-the-browser-sandbox.patch
|
||||||
Disable-csp-reports.patch
|
Disable-csp-reports.patch
|
||||||
Fonts-fingerprinting-mitigation.patch
|
Fonts-fingerprinting-mitigation.patch
|
||||||
@@ -200,11 +219,14 @@ Clear-CORS-Preflight-Cache-on-clearing-data.patch
|
|||||||
Multi-Screen-Window-Placement-API-fix.patch
|
Multi-Screen-Window-Placement-API-fix.patch
|
||||||
Add-a-flag-to-disable-GamePad-API.patch
|
Add-a-flag-to-disable-GamePad-API.patch
|
||||||
Disable-WebGPU.patch
|
Disable-WebGPU.patch
|
||||||
|
Disable-FirstPartySets-and-StorageAccessAPI.patch
|
||||||
Disable-GetInstalledRelatedApps-API.patch
|
Disable-GetInstalledRelatedApps-API.patch
|
||||||
Disable-GSA-by-default.patch
|
Disable-GSA-by-default.patch
|
||||||
|
Disable-PrivateStateTokens-API.patch
|
||||||
Disallowing-MIDI-permission-by-default.patch
|
Disallowing-MIDI-permission-by-default.patch
|
||||||
Disable-Compression-Dictionary-Transport.patch
|
Disable-Compression-Dictionary-Transport.patch
|
||||||
Disallow-Android-App-Scheme-as-referrer.patch
|
Disallow-Android-App-Scheme-as-referrer.patch
|
||||||
|
Deprecate-Data-URL-in-SVGUseElement.patch
|
||||||
Content-settings-infrastructure.patch
|
Content-settings-infrastructure.patch
|
||||||
Add-autoplay-site-setting.patch
|
Add-autoplay-site-setting.patch
|
||||||
Site-setting-for-images.patch
|
Site-setting-for-images.patch
|
||||||
@@ -230,21 +252,26 @@ Allow-DocumentPiP-if-PopupsAndRedirects-are-active.patch
|
|||||||
allow-the-download-of-clang-for-windows-crossbuild.patch
|
allow-the-download-of-clang-for-windows-crossbuild.patch
|
||||||
Add-option-to-disable-snapshots.patch
|
Add-option-to-disable-snapshots.patch
|
||||||
Enable-Android-Dynamic-Performance-Framework.patch
|
Enable-Android-Dynamic-Performance-Framework.patch
|
||||||
|
Remove-GoogleAccountsPrivateApiHost.patch
|
||||||
Fix-crash-on-customize-profile-ui.patch
|
Fix-crash-on-customize-profile-ui.patch
|
||||||
Enable-ImprovedBookmarks-by-default.patch
|
Enable-ImprovedBookmarks-by-default.patch
|
||||||
Partition-MediaDeviceId-by-default.patch
|
Partition-MediaDeviceId-by-default.patch
|
||||||
Keep-disabled-FetchLaterAPI.patch
|
Keep-disabled-FetchLaterAPI.patch
|
||||||
Disable-ranker-url-fetcher.patch
|
Disable-ranker-url-fetcher.patch
|
||||||
|
Show-full-urls-for-bookmark.patch
|
||||||
Disable-prefers-reduced-transparency-media-query.patch
|
Disable-prefers-reduced-transparency-media-query.patch
|
||||||
|
libjxl-0-8-2.patch
|
||||||
|
Add-support-to-jxl.patch
|
||||||
Block-Intents-While-Locked.patch
|
Block-Intents-While-Locked.patch
|
||||||
Keep-Manta-Service-Disabled.patch
|
Keep-Manta-Service-Disabled.patch
|
||||||
Disable-Service-and-Shared-workers-on-3P-iframe.patch
|
Disable-Service-and-Shared-workers-on-3P-iframe.patch
|
||||||
Disable-Real-Box.patch
|
Disable-Real-Box.patch
|
||||||
Always-allow-inspect-fallback.patch
|
Always-allow-inspect-fallback.patch
|
||||||
|
Add-cromite-flags-support.patch
|
||||||
Add-PartialLowEndModeOnMidRangeDevices-flag.patch
|
Add-PartialLowEndModeOnMidRangeDevices-flag.patch
|
||||||
Use-list-mode-for-tab-switcher.patch
|
Use-list-mode-for-tab-switcher.patch
|
||||||
Chrome-web-store-protection.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
|
Disable-Android-AppRestrictions.patch
|
||||||
Customize-selection-popup.patch
|
Customize-selection-popup.patch
|
||||||
Enables-deactivation-of-the-js-debugger-statement.patch
|
Enables-deactivation-of-the-js-debugger-statement.patch
|
||||||
@@ -252,6 +279,7 @@ Enable-gwp-asan-on-Android.patch
|
|||||||
Disable-Read-Aloud-by-default.patch
|
Disable-Read-Aloud-by-default.patch
|
||||||
Disable-Compose-feature.patch
|
Disable-Compose-feature.patch
|
||||||
Disable-offline-autofetch-flag.patch
|
Disable-offline-autofetch-flag.patch
|
||||||
|
Enable-percent-based-scrolling-on-Windows.patch
|
||||||
Show-NTP-at-startup.patch
|
Show-NTP-at-startup.patch
|
||||||
Enable-platform-aac-audio-and-h264-video.patch
|
Enable-platform-aac-audio-and-h264-video.patch
|
||||||
Disable-Paint-Preview-by-default.patch
|
Disable-Paint-Preview-by-default.patch
|
||||||
@@ -261,73 +289,17 @@ Allow-building-without-supervised-users.patch
|
|||||||
Keep-ComputePressure-disabled.patch
|
Keep-ComputePressure-disabled.patch
|
||||||
Android-Toolbar-Scroll-Ablation-setting.patch
|
Android-Toolbar-Scroll-Ablation-setting.patch
|
||||||
Keep-disabled-WebViewMediaIntegrityApi.patch
|
Keep-disabled-WebViewMediaIntegrityApi.patch
|
||||||
Enable-menu-on-reload-button.patch
|
|
||||||
Enable-Global-Privacy-Control.patch
|
|
||||||
Enable-Do-Not-Track-by-default.patch
|
|
||||||
Media-fingerprinting-mitigations.patch
|
|
||||||
Use-BoringSSL-for-RandBytes.patch
|
|
||||||
Disable-support-for-pointer-device-id.patch
|
|
||||||
Disable-CSS-blink-feature-support.patch
|
|
||||||
Close-Sessions-On-Ip-Change.patch
|
|
||||||
Ask-for-restart-on-connection-change.patch
|
|
||||||
Bubble-Locking-on-UI-DevTools.patch
|
|
||||||
Add-a-GN-flag-to-disable-trybot-verification.patch
|
|
||||||
Override-the-MV2-deprecation.patch
|
|
||||||
Remove-sideloading-of-version-dll.patch
|
|
||||||
Use-browser-navigation-handler.patch
|
|
||||||
Cromite-Branding--improve-settings-ui.patch
|
|
||||||
Disable-Posture-API.patch
|
|
||||||
PublicKeyCredential-fingerprinting-mitigations.patch
|
|
||||||
Disable-Web-Bluetooth-by-default-in-desktop-platforms.patch
|
|
||||||
Enable-Cert-Management-UI.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
|
|
||||||
Disable-integration-with-Gemini.patch
|
|
||||||
Disable-AppRating.patch
|
|
||||||
Enable-Android-DevTools-Frontend.patch
|
|
||||||
|
|
||||||
# temporary or wip patches
|
Temp-PerformanceNavigationTiming-privacy-fix.patch
|
||||||
Temp-disable-predictive-back-gesture.patch
|
Temp-disable-predictive-back-gesture.patch
|
||||||
TEMP-Add-a-log-to-track-strange-behavior.patch
|
TEMP-Add-a-log-to-track-strange-behavior.patch
|
||||||
Temp-guard-FileSystemAccessPersistentPermissions.patch
|
Temp-guard-FileSystemAccessPersistentPermissions.patch
|
||||||
Never-treat-Proguard-warnings-as-errors.patch
|
Never-treat-Proguard-warnings-as-errors.patch
|
||||||
Temp-disable-experimental-web-platform-features.patch
|
|
||||||
Block-leakage-of-urls-in-sandbox-iframes.patch
|
|
||||||
Fix-chromium-build-bugs.patch
|
Fix-chromium-build-bugs.patch
|
||||||
Try-to-fix-2082.patch
|
|
||||||
Temp-use-PREVIEW-for-IDCompositionDevice5.patch
|
|
||||||
|
|
||||||
# adblock patches
|
eyeo-beta-118.0.5993.48-base.patch
|
||||||
eyeo-133.0.6943.49-base.patch
|
eyeo-beta-118.0.5993.48-chrome_integration.patch
|
||||||
eyeo-133.0.6943.49-chrome_integration.patch
|
eyeo-beta-118.0.5993.48-android_api.patch
|
||||||
eyeo-133.0.6943.49-android_api.patch
|
eyeo-beta-118.0.5993.48-android_settings.patch
|
||||||
eyeo-133.0.6943.49-android_settings.patch
|
eyeo-beta-118.0.5993.48-extension_api.patch
|
||||||
eyeo-133.0.6943.49-extension_api.patch
|
Eyeo-Adblock-Remove-Privacy-Issues.patch
|
||||||
Eyeo-Adblock-for-Cromite.patch
|
|
||||||
|
|
||||||
# extension patches
|
|
||||||
Experimental-support-for-extensions-on-Android.patch
|
|
||||||
Enable-extension-in-incognito.patch
|
|
||||||
|
|||||||
@@ -0,0 +1,262 @@
|
|||||||
|
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 | 6 +++---
|
||||||
|
.../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 | 11 ++++++++++-
|
||||||
|
12 files changed, 87 insertions(+), 4 deletions(-)
|
||||||
|
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
|
||||||
|
@@ -3186,9 +3186,9 @@
|
||||||
|
"expiry_milestone": 135
|
||||||
|
},
|
||||||
|
{
|
||||||
|
- "name": "enable-image-reader",
|
||||||
|
- "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ],
|
||||||
|
- "expiry_milestone": 125
|
||||||
|
+ "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
|
||||||
|
@@ -2689,6 +2689,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
|
||||||
|
@@ -65,6 +65,11 @@ BASE_FEATURE(kUseGles2ForOopR,
|
||||||
|
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
|
||||||
|
@@ -24,6 +24,7 @@ GPU_EXPORT BASE_DECLARE_FEATURE(kUseGles2ForOopR);
|
||||||
|
// All features in alphabetical order. The features should be documented
|
||||||
|
// alongside the definition of their values in the .cc file.
|
||||||
|
#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(kAImageReader);
|
||||||
|
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
|
||||||
|
@@ -124,6 +124,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;
|
||||||
|
|
||||||
|
@@ -385,6 +388,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
|
||||||
|
gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] =
|
||||||
|
kGpuFeatureStatusBlocklisted;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ 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
|
||||||
|
@@ -11,6 +11,7 @@ clamp_texture_base_level_and_max_level
|
||||||
|
clear_pixel_unpack_buffer_before_copyteximage
|
||||||
|
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
|
||||||
|
@@ -69,6 +69,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)
|
||||||
|
@@ -723,6 +724,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
|
||||||
|
@@ -6,6 +6,7 @@
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
+#include "base/android/android_image_reader_compat.h"
|
||||||
|
#include "base/android/scoped_hardware_buffer_fence_sync.h"
|
||||||
|
#include "base/feature_list.h"
|
||||||
|
#include "base/functional/bind.h"
|
||||||
|
@@ -50,7 +51,15 @@ std::unique_ptr<ui::ScopedMakeCurrent> MakeCurrent(
|
||||||
|
}
|
||||||
|
|
||||||
|
TextureOwner::Mode GetTextureOwnerMode() {
|
||||||
|
- return features::IsAImageReaderEnabled()
|
||||||
|
+ 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 && features::IsAImageReaderEnabled() &&
|
||||||
|
+ 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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
@@ -256,6 +256,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
|
@@ -232,6 +232,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
|
||||||
import org.chromium.content_public.browser.SelectionPopupController;
|
import org.chromium.content_public.browser.SelectionPopupController;
|
||||||
import org.chromium.content_public.browser.WebContents;
|
import org.chromium.content_public.browser.WebContents;
|
||||||
import org.chromium.content_public.common.ContentSwitches;
|
import org.chromium.content_public.common.ContentSwitches;
|
||||||
@@ -28,10 +28,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||||||
import org.chromium.printing.PrintManagerDelegateImpl;
|
import org.chromium.printing.PrintManagerDelegateImpl;
|
||||||
import org.chromium.printing.PrintingController;
|
import org.chromium.printing.PrintingController;
|
||||||
import org.chromium.printing.PrintingControllerImpl;
|
import org.chromium.printing.PrintingControllerImpl;
|
||||||
@@ -1137,6 +1138,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
@@ -1078,6 +1079,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||||
super.onStartWithNative();
|
super.onStartWithNative();
|
||||||
|
ChromeActivitySessionTracker.getInstance().onStartWithNative();
|
||||||
ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier());
|
ChromeCachedFlags.getInstance().cacheNativeFlags();
|
||||||
+ X509Util.AllowUserCertificates = ChromeFeatureList.isEnabled(
|
+ X509Util.AllowUserCertificates = ChromeFeatureList.isEnabled(
|
||||||
+ ChromeFeatureList.ALLOW_USER_CERTIFICATES);
|
+ ChromeFeatureList.ALLOW_USER_CERTIFICATES);
|
||||||
|
|
||||||
@@ -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
|
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
|
--- a/chrome/browser/flags/android/chrome_feature_list.cc
|
||||||
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
||||||
@@ -206,6 +206,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
@@ -138,6 +138,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
||||||
&feed::kFeedNoViewCache,
|
&feed::kFeedShowSignInCommand,
|
||||||
&feed::kFeedPerformanceStudy,
|
|
||||||
&feed::kFeedRecyclerBinderUnmountOnDetach,
|
|
||||||
+ &kAllowUserCertificates,
|
|
||||||
&feed::kFeedSignedOutViewDemotion,
|
&feed::kFeedSignedOutViewDemotion,
|
||||||
|
&feed::kFeedUserInteractionReliabilityReport,
|
||||||
|
+ &kAllowUserCertificates,
|
||||||
&feed::kInterestFeedV2,
|
&feed::kInterestFeedV2,
|
||||||
|
&feed::kInterestFeedV2Hearts,
|
||||||
&feed::kWebFeedAwareness,
|
&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
|
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
|
--- 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
|
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
||||||
@@ -168,6 +168,7 @@ public abstract class ChromeFeatureList {
|
@@ -146,6 +146,7 @@ public abstract class ChromeFeatureList {
|
||||||
"AccountForSuppressedKeyboardInsets";
|
/* Alphabetical: */
|
||||||
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 =
|
public static final String ACCOUNT_REAUTHENTICATION_RECENT_TIME_WINDOW =
|
||||||
"AdaptiveButtonInTopToolbarCustomizationV2";
|
"AccountReauthenticationRecentTimeWindow";
|
||||||
+ public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
|
+ public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
|
||||||
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY =
|
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE =
|
||||||
"AdaptiveButtonInTopToolbarPageSummary";
|
"AdaptiveButtonInTopToolbarTranslate";
|
||||||
// Don't clean up this flag yet, BCIV is launched, so this needs to be enabled by
|
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS =
|
||||||
@@ -836,6 +837,8 @@ public abstract class ChromeFeatureList {
|
@@ -536,6 +537,8 @@ public abstract class ChromeFeatureList {
|
||||||
public static final CachedFlag sAndroidXrImmersivePlayer =
|
public static final CachedFlag sAndroidTabGroupStableIds =
|
||||||
newCachedFlag(ANDROID_XR_IMMERSIVE_PLAYER, false);
|
newCachedFlag(ANDROID_TAB_GROUP_STABLE_IDS, false);
|
||||||
public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true);
|
public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, false);
|
||||||
+ public static final CachedFlag sAllowUserCertificates =
|
+ public static final CachedFlag sAllowUserCertificates =
|
||||||
+ newCachedFlag(ALLOW_USER_CERTIFICATES, false);
|
+ newCachedFlag(ALLOW_USER_CERTIFICATES, false);
|
||||||
public static final CachedFlag sAppSpecificHistoryViewIntent =
|
public static final CachedFlag sArchiveTabService = newCachedFlag(ARCHIVE_TAB_SERVICE, false);
|
||||||
newCachedFlag(APP_SPECIFIC_HISTORY_VIEW_INTENT, true);
|
|
||||||
public static final CachedFlag sAsyncNotificationManager =
|
public static final CachedFlag sAsyncNotificationManager =
|
||||||
@@ -1217,6 +1220,7 @@ public abstract class ChromeFeatureList {
|
newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false);
|
||||||
sAccountForSuppressedKeyboardInsets,
|
@@ -686,6 +689,7 @@ public abstract class ChromeFeatureList {
|
||||||
sAndroidAnimatedProgressBarInBrowser,
|
public static final List<CachedFlag> sFlagsCachedFullBrowser =
|
||||||
sAndroidApb144Patch1,
|
List.of(
|
||||||
|
sAccountReauthenticationRecentTimeWindow,
|
||||||
+ sAllowUserCertificates,
|
+ sAllowUserCertificates,
|
||||||
sAndroidApb144Patch2,
|
sAndroidAppIntegration,
|
||||||
sAndroidApb144Patch3,
|
sAndroidElegantTextHeight,
|
||||||
sAndroidApb144Patch4,
|
sAndroidHub,
|
||||||
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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -111,19 +111,19 @@ 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
|
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
|
--- a/net/android/java/src/org/chromium/net/X509Util.java
|
||||||
+++ b/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 {
|
@@ -525,6 +525,8 @@ public class X509Util {
|
||||||
return result;
|
return userRootBytes.toArray(new byte[0][]);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ public static boolean AllowUserCertificates = false;
|
+ public static boolean AllowUserCertificates = false;
|
||||||
+
|
+
|
||||||
public static AndroidCertVerifyResult verifyServerCertificates(
|
public static AndroidCertVerifyResult verifyServerCertificates(
|
||||||
byte[][] certChain,
|
byte[][] certChain, String authType, String host)
|
||||||
String authType,
|
throws KeyStoreException, NoSuchAlgorithmException {
|
||||||
@@ -649,6 +651,9 @@ public class X509Util {
|
@@ -613,6 +615,9 @@ public class X509Util {
|
||||||
X509Certificate root = verifiedChain.get(verifiedChain.size() - 1);
|
|
||||||
isIssuedByKnownRoot = isKnownRoot(root);
|
isIssuedByKnownRoot = isKnownRoot(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (AllowUserCertificates == false && isIssuedByKnownRoot == false)
|
+ if (AllowUserCertificates == false && isIssuedByKnownRoot == false)
|
||||||
+ return new AndroidCertVerifyResult(CertVerifyStatusAndroid.NO_TRUSTED_ROOT);
|
+ return new AndroidCertVerifyResult(CertVerifyStatusAndroid.NO_TRUSTED_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
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../src/org/chromium/chrome/browser/KeyboardShortcuts.java | 6 ++++++
|
.../java/src/org/chromium/chrome/browser/KeyboardShortcuts.java | 2 ++
|
||||||
1 file changed, 6 insertions(+)
|
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
|
||||||
@@ -939,6 +939,12 @@ public class KeyboardShortcuts {
|
@@ -204,6 +204,8 @@ public class KeyboardShortcuts {
|
||||||
KeyEvent.KEYCODE_ESCAPE,
|
R.string.keyboard_shortcut_address_bar,
|
||||||
KeyEvent.META_CTRL_ON);
|
KeyEvent.KEYCODE_L,
|
||||||
}
|
KeyEvent.META_CTRL_ON);
|
||||||
+ addShortcut(context,
|
+ addShortcut(context, chromeFeatureShortcutGroup, R.string.keyboard_shortcut_address_bar,
|
||||||
+ shortcutGroupsById,
|
+ KeyEvent.KEYCODE_D, KeyEvent.META_ALT_ON);
|
||||||
+ R.string.keyboard_shortcut_chrome_feature_group_header,
|
shortcutGroups.add(chromeFeatureShortcutGroup);
|
||||||
+ R.string.keyboard_shortcut_address_bar,
|
|
||||||
+ KeyEvent.KEYCODE_D,
|
|
||||||
+ KeyEvent.META_ALT_ON);
|
|
||||||
return new ArrayList<>(shortcutGroupsById.values());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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
|
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
|
--- a/net/url_request/url_request_http_job.cc
|
||||||
+++ b/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) {
|
@@ -306,6 +306,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
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
---
|
---
|
||||||
base/features.cc | 4 ++++
|
base/features.cc | 4 ++++
|
||||||
content/renderer/render_process_impl.cc | 9 +++++++++
|
chrome/browser/about_flags.cc | 1 +
|
||||||
.../Add-PartialLowEndModeOnMidRangeDevices-flag.inc | 12 ++++++++++++
|
.../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
|
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc
|
||||||
|
|
||||||
diff --git a/base/features.cc b/base/features.cc
|
diff --git a/base/features.cc b/base/features.cc
|
||||||
--- a/base/features.cc
|
--- a/base/features.cc
|
||||||
+++ b/base/features.cc
|
+++ b/base/features.cc
|
||||||
@@ -199,6 +199,10 @@ bool IsReducePPMsEnabled() {
|
@@ -91,6 +91,10 @@ BASE_FEATURE(kCollectAndroidFrameTimelineMetrics,
|
||||||
return g_is_reduce_ppms_enabled.load(std::memory_order_relaxed);
|
FEATURE_DISABLED_BY_DEFAULT);
|
||||||
}
|
#endif // BUILDFLAG(IS_ANDROID)
|
||||||
|
|
||||||
+#if BUILDFLAG(IS_ANDROID)
|
+#if BUILDFLAG(IS_ANDROID)
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kPartialLowEndModeOnMidRangeDevices);
|
+SET_CROMITE_FEATURE_DISABLED(kPartialLowEndModeOnMidRangeDevices);
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
void Init() {
|
void Init(EmitThreadControllerProfilerMetadata
|
||||||
g_is_reduce_ppms_enabled.store(FeatureList::IsEnabled(kReducePPMs),
|
emit_thread_controller_profiler_metadata) {
|
||||||
std::memory_order_relaxed);
|
InitializeCpuReductionExperiment();
|
||||||
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc
|
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||||
--- a/content/renderer/render_process_impl.cc
|
--- a/chrome/browser/about_flags.cc
|
||||||
+++ b/content/renderer/render_process_impl.cc
|
+++ b/chrome/browser/about_flags.cc
|
||||||
@@ -2,6 +2,7 @@
|
@@ -16,6 +16,7 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
#include "base/base_switches.h"
|
||||||
// found in the LICENSE file.
|
#include "base/command_line.h"
|
||||||
|
#include "base/feature_list.h"
|
||||||
+#include "base/features.h"
|
+#include "base/features.h"
|
||||||
#include "content/renderer/render_process_impl.h"
|
#include "base/functional/bind.h"
|
||||||
|
#include "base/functional/callback.h"
|
||||||
#include "build/build_config.h"
|
#include "base/i18n/base_i18n_switches.h"
|
||||||
@@ -123,10 +124,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
|
|
||||||
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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Mon, 2 Sep 2024 07:03:38 +0000
|
|
||||||
Subject: Add a GN flag to disable trybot verification
|
|
||||||
|
|
||||||
Adds flag in GN to deactivate the check performed by some google build bots.
|
|
||||||
The flag is deactivated when generating the system webview with
|
|
||||||
skip_secondary_abi_for_cq=true in arm64.
|
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
|
||||||
chrome/android/expectations/expectations.gni | 8 ++++++--
|
|
||||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/chrome/android/expectations/expectations.gni b/chrome/android/expectations/expectations.gni
|
|
||||||
--- a/chrome/android/expectations/expectations.gni
|
|
||||||
+++ b/chrome/android/expectations/expectations.gni
|
|
||||||
@@ -5,8 +5,12 @@
|
|
||||||
import("//build/config/android/config.gni")
|
|
||||||
import("//build/config/coverage/coverage.gni")
|
|
||||||
|
|
||||||
+declare_args() {
|
|
||||||
+ enable_trybot_verification = true
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
# Chosen to match android-binary-size trybot.
|
|
||||||
-enable_libs_and_assets_verification =
|
|
||||||
+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 =
|
|
||||||
# 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")
|
|
||||||
--
|
|
||||||
@@ -5,99 +5,67 @@ Subject: Add a flag to disable GamePad API
|
|||||||
Adds restrict-gamepad-access flag (default active) 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
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
---
|
---
|
||||||
content/child/runtime_features.cc | 2 ++
|
chrome/browser/flag-metadata.json | 4 ++--
|
||||||
.../about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc | 7 +++++++
|
chrome/browser/flag_descriptions.cc | 2 +-
|
||||||
device/gamepad/public/cpp/gamepad_features.cc | 8 ++++++++
|
device/gamepad/public/cpp/gamepad_features.cc | 1 +
|
||||||
device/gamepad/public/cpp/gamepad_features.h | 2 ++
|
.../blink/renderer/modules/gamepad/navigator_gamepad.cc | 6 ++++++
|
||||||
.../blink/renderer/modules/gamepad/navigator_gamepad.cc | 6 ++++++
|
4 files changed, 10 insertions(+), 3 deletions(-)
|
||||||
5 files changed, 25 insertions(+)
|
|
||||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc
|
|
||||||
|
|
||||||
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
|
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
|
||||||
--- a/content/child/runtime_features.cc
|
--- a/chrome/browser/flag-metadata.json
|
||||||
+++ b/content/child/runtime_features.cc
|
+++ b/chrome/browser/flag-metadata.json
|
||||||
@@ -246,6 +246,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
|
@@ -7333,9 +7333,9 @@
|
||||||
{wf::EnablePaymentApp, raw_ref(features::kServiceWorkerPaymentApps)},
|
"expiry_milestone": 126
|
||||||
{wf::EnablePeriodicBackgroundSync,
|
},
|
||||||
raw_ref(features::kPeriodicBackgroundSync)},
|
{
|
||||||
+ {wf::EnableRestrictGamepadAccess,
|
- "name": "restrict-gamepad-access",
|
||||||
+ raw_ref(features::kRestrictGamepadAccess)},
|
+ "name": "restrict-gamepad-access", // restrict-gamepad-access"
|
||||||
{wf::EnableSecurePaymentConfirmation,
|
"owners": [ "//device/gamepad/OWNERS", "jameshollyer@chromium.org" ],
|
||||||
raw_ref(features::kSecurePaymentConfirmation)},
|
- "expiry_milestone": 96
|
||||||
{wf::EnableSecurePaymentConfirmationDebug,
|
+ "expiry_milestone": -1
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc
|
},
|
||||||
new file mode 100644
|
{
|
||||||
--- /dev/null
|
"name": "revamp-page-info-ios",
|
||||||
+++ b/cromite_flags/chrome/browser/about_flags_cc/Add-a-flag-to-disable-GamePad-API.inc
|
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
|
||||||
@@ -0,0 +1,7 @@
|
--- a/chrome/browser/flag_descriptions.cc
|
||||||
+#ifdef FLAG_SECTION
|
+++ b/chrome/browser/flag_descriptions.cc
|
||||||
+
|
@@ -3005,7 +3005,7 @@ const char kResetShortcutCustomizationsDescription[] =
|
||||||
+ {"restrict-gamepad-access", "Restrict gamepad access",
|
|
||||||
+ "Disable the Gamepad API", kOsAll,
|
const char kRestrictGamepadAccessName[] = "Restrict gamepad access";
|
||||||
+ FEATURE_VALUE_TYPE(features::kRestrictGamepadAccess)},
|
const char kRestrictGamepadAccessDescription[] =
|
||||||
+
|
- "Enables Permissions Policy and Secure Context restrictions on the Gamepad "
|
||||||
+#endif
|
+ "Disable the Gamepad "
|
||||||
|
"API";
|
||||||
|
|
||||||
|
const char kRoundedDisplay[] = "Rounded display";
|
||||||
diff --git a/device/gamepad/public/cpp/gamepad_features.cc b/device/gamepad/public/cpp/gamepad_features.cc
|
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
|
--- a/device/gamepad/public/cpp/gamepad_features.cc
|
||||||
+++ b/device/gamepad/public/cpp/gamepad_features.cc
|
+++ b/device/gamepad/public/cpp/gamepad_features.cc
|
||||||
@@ -59,4 +59,12 @@ bool IsGamepadMultitouchEnabled() {
|
@@ -65,4 +65,5 @@ bool IsGamepadMultitouchEnabled() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
+CROMITE_FEATURE(kRestrictGamepadAccess,
|
+SET_CROMITE_FEATURE_ENABLED(kRestrictGamepadAccess);
|
||||||
+ "RestrictGamepadAccess",
|
|
||||||
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
||||||
+
|
|
||||||
+bool IsRestrictGamepadAccessEnabled() {
|
|
||||||
+ return base::FeatureList::IsEnabled(kRestrictGamepadAccess);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
} // namespace features
|
} // namespace features
|
||||||
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(
|
|
||||||
GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(kGamepadRawInputChangeEvent);
|
|
||||||
GAMEPAD_FEATURES_EXPORT BASE_DECLARE_FEATURE(
|
|
||||||
kClaimDuplicateGamepadsProductIdentifier);
|
|
||||||
+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();
|
|
||||||
|
|
||||||
} // namespace features
|
|
||||||
|
|
||||||
diff --git a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc b/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
|
diff --git a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc b/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
|
||||||
--- a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
|
--- a/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
|
||||||
+++ b/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
|
+++ b/third_party/blink/renderer/modules/gamepad/navigator_gamepad.cc
|
||||||
@@ -27,6 +27,7 @@
|
@@ -113,6 +113,10 @@ void RecordGamepadsForIdentifiabilityStudy(
|
||||||
|
|
||||||
#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/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) {
|
|
||||||
HeapVector<Member<Gamepad>> NavigatorGamepad::getGamepads(
|
HeapVector<Member<Gamepad>> NavigatorGamepad::getGamepads(
|
||||||
Navigator& navigator,
|
Navigator& navigator,
|
||||||
ExceptionState& exception_state) {
|
ExceptionState& exception_state) {
|
||||||
+ if (::features::IsRestrictGamepadAccessEnabled()) {
|
+ if (base::FeatureList::IsEnabled(::features::kRestrictGamepadAccess)) {
|
||||||
|
+ exception_state.ThrowSecurityError("Access to the feature \"gamepad\" is denied");
|
||||||
+ return HeapVector<Member<Gamepad>>();
|
+ return HeapVector<Member<Gamepad>>();
|
||||||
+ }
|
+ }
|
||||||
if (!navigator.DomWindow()) {
|
if (!navigator.DomWindow()) {
|
||||||
// Using an existing NavigatorGamepad if one exists, but don't create one
|
// 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.
|
// for a detached window, as its subclasses depend on a non-null window.
|
||||||
@@ -433,6 +437,8 @@ void NavigatorGamepad::MaybeDispatchGamepadEvents(
|
@@ -435,6 +439,8 @@ void NavigatorGamepad::SampleAndCompareGamepadState() {
|
||||||
void NavigatorGamepad::DispatchGamepadConnectionChangedEvent(
|
|
||||||
const AtomicString& event_name,
|
void NavigatorGamepad::DispatchGamepadEvent(const AtomicString& event_name,
|
||||||
Gamepad* gamepad) {
|
Gamepad* gamepad) {
|
||||||
+ if (::features::IsRestrictGamepadAccessEnabled())
|
+ if (base::FeatureList::IsEnabled(::features::kRestrictGamepadAccess))
|
||||||
+ return;
|
+ return;
|
||||||
// Ensure that we're blocking re-entrancy.
|
// Ensure that we're blocking re-entrancy.
|
||||||
DCHECK(processing_events_);
|
DCHECK(processing_events_);
|
||||||
|
|||||||
@@ -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
|
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.
|
never connected to any user profile and only gets proxy information from the system.
|
||||||
Existing settings on Profile are migrated to LocalState on startup.
|
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.
|
Credits to @uazo for the LocalState integration.
|
||||||
|
|
||||||
@@ -19,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
chrome/android/java/res/values/values.xml | 3 +
|
chrome/android/java/res/values/values.xml | 3 +
|
||||||
.../java/res/xml/privacy_preferences.xml | 4 +
|
.../java/res/xml/privacy_preferences.xml | 4 +
|
||||||
.../privacy/settings/PrivacySettings.java | 1 +
|
.../privacy/settings/PrivacySettings.java | 1 +
|
||||||
.../chrome_autocomplete_provider_client.cc | 1 +
|
.../chrome_autocomplete_provider_client.cc | 2 +
|
||||||
chrome/browser/browser_resources.grd | 3 +
|
chrome/browser/browser_resources.grd | 3 +
|
||||||
.../extensions/api/proxy/proxy_api_helpers.cc | 2 +-
|
.../extensions/api/proxy/proxy_api_helpers.cc | 2 +-
|
||||||
chrome/browser/net/proxy_service_factory.cc | 24 +-
|
chrome/browser/net/proxy_service_factory.cc | 24 +-
|
||||||
@@ -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.html | 77 ++++
|
||||||
chrome/browser/resources/proxy_config.js | 278 +++++++++++++
|
chrome/browser/resources/proxy_config.js | 278 +++++++++++++
|
||||||
chrome/browser/ui/BUILD.gn | 2 +
|
chrome/browser/ui/BUILD.gn | 2 +
|
||||||
.../browser/ui/webui/chrome_web_ui_configs.cc | 5 +-
|
.../webui/chrome_web_ui_controller_factory.cc | 3 +
|
||||||
chrome/browser/ui/webui/proxy_config_ui.cc | 389 ++++++++++++++++++
|
chrome/browser/ui/webui/proxy_config_ui.cc | 393 ++++++++++++++++++
|
||||||
chrome/browser/ui/webui/proxy_config_ui.h | 41 ++
|
chrome/browser/ui/webui/proxy_config_ui.h | 31 ++
|
||||||
chrome/common/webui_url_constants.cc | 1 +
|
chrome/common/webui_url_constants.cc | 4 +
|
||||||
chrome/common/webui_url_constants.h | 2 +
|
chrome/common/webui_url_constants.h | 2 +
|
||||||
.../pref_proxy_config_tracker_impl.cc | 5 +-
|
.../pref_proxy_config_tracker_impl.cc | 5 +-
|
||||||
.../proxy_config/proxy_config_dictionary.cc | 30 +-
|
.../proxy_config/proxy_config_dictionary.cc | 30 +-
|
||||||
.../proxy_config/proxy_config_dictionary.h | 7 +-
|
.../proxy_config/proxy_config_dictionary.h | 7 +-
|
||||||
.../proxy_config/proxy_policy_handler.cc | 2 +-
|
.../proxy_config/proxy_policy_handler.cc | 2 +-
|
||||||
net/features.gni | 2 +-
|
net/proxy_resolution/proxy_config.cc | 51 ++-
|
||||||
net/proxy_resolution/pac_file_fetcher_impl.cc | 8 -
|
|
||||||
net/proxy_resolution/proxy_config.cc | 53 ++-
|
|
||||||
net/proxy_resolution/proxy_config.h | 3 +
|
net/proxy_resolution/proxy_config.h | 3 +
|
||||||
27 files changed, 986 insertions(+), 27 deletions(-)
|
25 files changed, 980 insertions(+), 17 deletions(-)
|
||||||
create mode 100644 chrome/browser/resources/proxy_config.css
|
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.html
|
||||||
create mode 100644 chrome/browser/resources/proxy_config.js
|
create mode 100644 chrome/browser/resources/proxy_config.js
|
||||||
@@ -53,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||||
--- a/chrome/android/java/res/values/values.xml
|
--- a/chrome/android/java/res/values/values.xml
|
||||||
+++ b/chrome/android/java/res/values/values.xml
|
+++ b/chrome/android/java/res/values/values.xml
|
||||||
@@ -22,6 +22,9 @@ found in the LICENSE file.
|
@@ -19,6 +19,9 @@ found in the LICENSE file.
|
||||||
<!-- Compositor Tab Title Text -->
|
<!-- Compositor Tab Title Text -->
|
||||||
<bool name="compositor_tab_title_fake_bold_text">true</bool>
|
<bool name="compositor_tab_title_fake_bold_text">true</bool>
|
||||||
|
|
||||||
@@ -80,42 +77,43 @@ 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
|
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
|
--- 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
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
||||||
@@ -110,6 +110,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -78,6 +78,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection";
|
private static final String PREF_SAFE_BROWSING = "safe_browsing";
|
||||||
private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
|
private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
|
||||||
private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
|
private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox";
|
||||||
+ private static final String PREF_PROXY_OPTIONS = "proxy";
|
+ private static final String PREF_PROXY_OPTIONS = "proxy";
|
||||||
private static final String PREF_PRIVACY_GUIDE = "privacy_guide";
|
private static final String PREF_PRIVACY_GUIDE = "privacy_guide";
|
||||||
private static final String PREF_INCOGNITO_LOCK = "incognito_lock";
|
private static final String PREF_INCOGNITO_LOCK = "incognito_lock";
|
||||||
private static final String PREF_JAVASCRIPT_OPTIMIZER = "javascript_optimizer";
|
private static final String PREF_THIRD_PARTY_COOKIES = "third_party_cookies";
|
||||||
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
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
|
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
||||||
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
||||||
@@ -420,6 +420,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
|
@@ -303,6 +303,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
|
||||||
builtins_to_provide.push_back(chrome::kChromeUISettingsURL16);
|
builtins_to_provide.push_back(
|
||||||
|
base::ASCIIToUTF16(chrome::kChromeUISettingsURL));
|
||||||
#endif
|
#endif
|
||||||
builtins_to_provide.push_back(chrome::kChromeUIVersionURL16);
|
+ builtins_to_provide.push_back(
|
||||||
+ builtins_to_provide.push_back(chrome::kChromeUIProxyConfigURL16);
|
+ base::ASCIIToUTF16(chrome::kChromeUIProxyConfigURL));
|
||||||
|
builtins_to_provide.push_back(
|
||||||
|
base::ASCIIToUTF16(chrome::kChromeUIVersionURL));
|
||||||
return builtins_to_provide;
|
return builtins_to_provide;
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
|
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
|
||||||
--- a/chrome/browser/browser_resources.grd
|
--- a/chrome/browser/browser_resources.grd
|
||||||
+++ b/chrome/browser/browser_resources.grd
|
+++ b/chrome/browser/browser_resources.grd
|
||||||
@@ -236,6 +236,9 @@
|
@@ -233,6 +233,9 @@
|
||||||
<if expr="_google_chrome">
|
|
||||||
<include name="IDR_PREF_HASH_SEED_BIN" file="resources\settings\internal\pref_hash_seed.bin" type="BINDATA" />
|
<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>
|
</if>
|
||||||
+ <!-- Bromite Proxy Configuration UI -->
|
+ <!-- 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_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" />
|
+ <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. -->
|
<!-- 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" />
|
<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
|
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
|
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
|
||||||
+++ b/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(
|
@@ -387,7 +387,7 @@ std::optional<base::Value::Dict> CreateProxyConfigDict(
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
return ProxyConfigDictionary::CreateFixedServers(proxy_rules_string,
|
return ProxyConfigDictionary::CreateFixedServers(proxy_rules_string,
|
||||||
@@ -143,16 +141,16 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
|
|||||||
+#include "components/prefs/pref_service.h"
|
+#include "components/prefs/pref_service.h"
|
||||||
+#include "components/prefs/pref_registry_simple.h"
|
+#include "components/prefs/pref_registry_simple.h"
|
||||||
|
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
#include "chromeos/ash/components/network/proxy/proxy_config_service_impl.h"
|
#include "chromeos/ash/components/network/proxy/proxy_config_service_impl.h"
|
||||||
@@ -57,7 +61,20 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfProfile(
|
@@ -70,7 +74,20 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfProfile(
|
||||||
return std::make_unique<ash::ProxyConfigServiceImpl>(
|
return std::make_unique<ash::ProxyConfigServiceImpl>(
|
||||||
profile_prefs, local_state_prefs, nullptr);
|
profile_prefs, local_state_prefs, nullptr);
|
||||||
#else
|
#else
|
||||||
- return std::make_unique<PrefProxyConfigTrackerImpl>(profile_prefs, nullptr);
|
- return std::make_unique<PrefProxyConfigTrackerImpl>(profile_prefs, nullptr);
|
||||||
+ // Migrate from profile_prefs to local_state_prefs
|
+ // Migrate from profile_prefs to local_state_prefs
|
||||||
+ if (local_state_prefs->GetBoolean("proxy_migrated") == false) {
|
+ if (local_state_prefs->GetBoolean("proxy_migrated") == false) {
|
||||||
+ const base::DictValue& dict =
|
+ const base::Value::Dict& dict =
|
||||||
+ profile_prefs->GetDict(proxy_config::prefs::kProxy);
|
+ profile_prefs->GetDict(proxy_config::prefs::kProxy);
|
||||||
+
|
+
|
||||||
+ LOG(INFO) << "CreatePrefProxyConfigTrackerOfProfile: Migration from profile to local state";
|
+ LOG(INFO) << "CreatePrefProxyConfigTrackerOfProfile: Migration from profile to local state";
|
||||||
@@ -164,12 +162,12 @@ diff --git a/chrome/browser/net/proxy_service_factory.cc b/chrome/browser/net/pr
|
|||||||
+ local_state_prefs->CommitPendingWrite();
|
+ local_state_prefs->CommitPendingWrite();
|
||||||
+ }
|
+ }
|
||||||
+ return std::make_unique<PrefProxyConfigTrackerImpl>(local_state_prefs, nullptr);
|
+ return std::make_unique<PrefProxyConfigTrackerImpl>(local_state_prefs, nullptr);
|
||||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,3 +90,8 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfLocalState(
|
@@ -86,3 +103,8 @@ ProxyServiceFactory::CreatePrefProxyConfigTrackerOfLocalState(
|
||||||
nullptr);
|
nullptr);
|
||||||
#endif // BUILDFLAG(IS_CHROMEOS)
|
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
}
|
}
|
||||||
+
|
+
|
||||||
+// static
|
+// static
|
||||||
@@ -199,16 +197,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
|
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
|
||||||
--- a/chrome/browser/prefs/browser_prefs.cc
|
--- a/chrome/browser/prefs/browser_prefs.cc
|
||||||
+++ b/chrome/browser/prefs/browser_prefs.cc
|
+++ b/chrome/browser/prefs/browser_prefs.cc
|
||||||
@@ -212,6 +212,8 @@
|
@@ -191,6 +191,8 @@
|
||||||
#include "printing/buildflags/buildflags.h"
|
|
||||||
#include "rlz/buildflags/buildflags.h"
|
#include "rlz/buildflags/buildflags.h"
|
||||||
|
#include "services/screen_ai/buildflags/buildflags.h"
|
||||||
|
|
||||||
+#include "chrome/browser/net/proxy_service_factory.h"
|
+#include "chrome/browser/net/proxy_service_factory.h"
|
||||||
+
|
+
|
||||||
#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||||
#include "chrome/browser/background/extensions/background_mode_manager.h"
|
#include "chrome/browser/background/background_mode_manager.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -1374,6 +1376,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
|
@@ -1523,6 +1525,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
|
||||||
component_updater::RegisterPrefs(registry);
|
component_updater::RegisterPrefs(registry);
|
||||||
domain_reliability::RegisterPrefs(registry);
|
domain_reliability::RegisterPrefs(registry);
|
||||||
embedder_support::OriginTrialPrefs::RegisterPrefs(registry);
|
embedder_support::OriginTrialPrefs::RegisterPrefs(registry);
|
||||||
@@ -220,7 +218,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
|
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
|
--- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
|
||||||
+++ b/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() {
|
@@ -156,7 +156,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
|
||||||
command_line()->GetSwitchValueASCII(switches::kProxyBypassList);
|
command_line()->GetSwitchValueASCII(switches::kProxyBypassList);
|
||||||
SetValue(proxy_config::prefs::kProxy,
|
SetValue(proxy_config::prefs::kProxy,
|
||||||
base::Value(ProxyConfigDictionary::CreateFixedServers(
|
base::Value(ProxyConfigDictionary::CreateFixedServers(
|
||||||
@@ -663,7 +661,7 @@ new file mode 100644
|
|||||||
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
||||||
--- a/chrome/browser/ui/BUILD.gn
|
--- a/chrome/browser/ui/BUILD.gn
|
||||||
+++ b/chrome/browser/ui/BUILD.gn
|
+++ b/chrome/browser/ui/BUILD.gn
|
||||||
@@ -156,6 +156,8 @@ static_library("ui") {
|
@@ -314,6 +314,8 @@ static_library("ui") {
|
||||||
"webui/metrics_internals/metrics_internals_ui.h",
|
"webui/metrics_internals/metrics_internals_ui.h",
|
||||||
"webui/net_export_ui.cc",
|
"webui/net_export_ui.cc",
|
||||||
"webui/net_export_ui.h",
|
"webui/net_export_ui.h",
|
||||||
@@ -672,33 +670,31 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
|||||||
"webui/net_internals/net_internals_ui.cc",
|
"webui/net_internals/net_internals_ui.cc",
|
||||||
"webui/net_internals/net_internals_ui.h",
|
"webui/net_internals/net_internals_ui.h",
|
||||||
"webui/ntp_tiles_internals_ui.cc",
|
"webui/ntp_tiles_internals_ui.cc",
|
||||||
diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
|
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
||||||
--- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc
|
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
||||||
+++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
|
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
||||||
@@ -64,6 +64,9 @@
|
@@ -55,6 +55,7 @@
|
||||||
#include "extensions/buildflags/buildflags.h"
|
#include "chrome/browser/ui/webui/ntp_tiles_internals_ui.h"
|
||||||
#include "printing/buildflags/buildflags.h"
|
#include "chrome/browser/ui/webui/omnibox/omnibox_ui.h"
|
||||||
|
#include "chrome/browser/ui/webui/policy/policy_ui.h"
|
||||||
+#include "chrome/browser/ui/webui/proxy_config_ui.h"
|
+#include "chrome/browser/ui/webui/proxy_config_ui.h"
|
||||||
+
|
#include "chrome/browser/ui/webui/predictors/predictors_ui.h"
|
||||||
+
|
#include "chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_ui.h"
|
||||||
#if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER)
|
#include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h"
|
||||||
#include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h"
|
@@ -455,6 +456,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
|
||||||
#endif
|
return &NewWebUI<MetricsInternalsUI>;
|
||||||
@@ -453,7 +456,7 @@ void RegisterChromeWebUIConfigs() {
|
if (url.host_piece() == chrome::kChromeUINetExportHost)
|
||||||
map.AddWebUIConfig(std::make_unique<SigninErrorUIConfig>());
|
return &NewWebUI<NetExportUI>;
|
||||||
map.AddWebUIConfig(std::make_unique<SigninEmailConfirmationUIConfig>());
|
+ if (url.host_piece() == chrome::kChromeUIProxyConfigHost)
|
||||||
#endif // !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
|
+ return &NewWebUI<ProxyConfigUI>;
|
||||||
-
|
if (url.host_piece() == chrome::kChromeUINetInternalsHost)
|
||||||
+ map.AddWebUIConfig(std::make_unique<ProxyConfigUIConfig>());
|
return &NewWebUI<NetInternalsUI>;
|
||||||
#if BUILDFLAG(SAFE_BROWSING_AVAILABLE)
|
if (url.host_piece() == chrome::kChromeUINTPTilesInternalsHost)
|
||||||
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
|
diff --git a/chrome/browser/ui/webui/proxy_config_ui.cc b/chrome/browser/ui/webui/proxy_config_ui.cc
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/chrome/browser/ui/webui/proxy_config_ui.cc
|
+++ b/chrome/browser/ui/webui/proxy_config_ui.cc
|
||||||
@@ -0,0 +1,389 @@
|
@@ -0,0 +1,393 @@
|
||||||
+/*
|
+/*
|
||||||
+ This file is part of Bromite.
|
+ This file is part of Bromite.
|
||||||
+
|
+
|
||||||
@@ -760,6 +756,7 @@ new file mode 100644
|
|||||||
+// this class's public methods are expected to run on the UI thread.
|
+// this class's public methods are expected to run on the UI thread.
|
||||||
+class ProxyConfigMessageHandler
|
+class ProxyConfigMessageHandler
|
||||||
+ : public WebUIMessageHandler,
|
+ : public WebUIMessageHandler,
|
||||||
|
+ public base::SupportsWeakPtr<ProxyConfigMessageHandler>,
|
||||||
+ public net::ProxyConfigService::Observer {
|
+ public net::ProxyConfigService::Observer {
|
||||||
+ public:
|
+ public:
|
||||||
+ ProxyConfigMessageHandler(const ProxyConfigMessageHandler&) = delete;
|
+ ProxyConfigMessageHandler(const ProxyConfigMessageHandler&) = delete;
|
||||||
@@ -774,9 +771,9 @@ new file mode 100644
|
|||||||
+ void RegisterMessages() override;
|
+ void RegisterMessages() override;
|
||||||
+
|
+
|
||||||
+ // Messages
|
+ // Messages
|
||||||
+ void OnEnableNotifyUIWithState(const base::ListValue& args);
|
+ void OnEnableNotifyUIWithState(const base::Value::List& args);
|
||||||
+ void OnApply(const base::ListValue& args);
|
+ void OnApply(const base::Value::List& args);
|
||||||
+ void OnClear(const base::ListValue& args);
|
+ void OnClear(const base::Value::List& args);
|
||||||
+
|
+
|
||||||
+ // net::ProxyConfigService::Observer implementation:
|
+ // net::ProxyConfigService::Observer implementation:
|
||||||
+ // Calls ProxyConfigView.onProxyConfigChanged JavaScript function in the
|
+ // Calls ProxyConfigView.onProxyConfigChanged JavaScript function in the
|
||||||
@@ -793,14 +790,16 @@ new file mode 100644
|
|||||||
+ std::unique_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_;
|
+ std::unique_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_;
|
||||||
+ bool is_observing_;
|
+ 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);
|
+ void apply(const net::ProxyConfig& config);
|
||||||
+
|
+
|
||||||
+ base::WeakPtrFactory<ProxyConfigMessageHandler> weak_ptr_factory_{this};
|
+ base::WeakPtrFactory<ProxyConfigMessageHandler> weak_ptr_factory_;
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+ProxyConfigMessageHandler::ProxyConfigMessageHandler(Profile *profile) {
|
+ProxyConfigMessageHandler::ProxyConfigMessageHandler(Profile *profile)
|
||||||
|
+ :
|
||||||
|
+ weak_ptr_factory_(this) {
|
||||||
+
|
+
|
||||||
+ // used to set new configuration preferences
|
+ // used to set new configuration preferences
|
||||||
+ pref_service_ = g_browser_process->local_state();
|
+ pref_service_ = g_browser_process->local_state();
|
||||||
@@ -833,7 +832,7 @@ new file mode 100644
|
|||||||
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
|
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
|
||||||
+ !BrowserThread::IsThreadInitialized(BrowserThread::UI));
|
+ !BrowserThread::IsThreadInitialized(BrowserThread::UI));
|
||||||
+
|
+
|
||||||
+ base::DictValue state;
|
+ base::Value::Dict state;
|
||||||
+ bool pending = false;
|
+ bool pending = false;
|
||||||
+ switch (availability) {
|
+ switch (availability) {
|
||||||
+ case net::ProxyConfigService::CONFIG_VALID:
|
+ case net::ProxyConfigService::CONFIG_VALID:
|
||||||
@@ -861,7 +860,7 @@ new file mode 100644
|
|||||||
+ return pacString;
|
+ 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
|
+ // 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
|
+ // automatic settings are either the "auto-detect" flag or the existance of a PAC URL
|
||||||
+
|
+
|
||||||
@@ -897,6 +896,7 @@ new file mode 100644
|
|||||||
+ break;
|
+ break;
|
||||||
+ default:
|
+ default:
|
||||||
+ NOTREACHED();
|
+ NOTREACHED();
|
||||||
|
+ break;
|
||||||
+ }
|
+ }
|
||||||
+ state.SetByDottedPath("config.rules.type", base::Value(type));
|
+ state.SetByDottedPath("config.rules.type", base::Value(type));
|
||||||
+ state.SetByDottedPath("config.rules.bypass_rules", base::Value(rules.bypass_rules.ToString()));
|
+ state.SetByDottedPath("config.rules.bypass_rules", base::Value(rules.bypass_rules.ToString()));
|
||||||
@@ -932,7 +932,7 @@ new file mode 100644
|
|||||||
+// The proxy configuration UI is not notified of state changes until this function runs.
|
+// 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.
|
+// After this function, OnProxyConfigChanged() will be called on all proxy state changes.
|
||||||
+void ProxyConfigMessageHandler::OnEnableNotifyUIWithState(
|
+void ProxyConfigMessageHandler::OnEnableNotifyUIWithState(
|
||||||
+ const base::ListValue& list) {
|
+ const base::Value::List& list) {
|
||||||
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||||
+
|
+
|
||||||
+ if (!is_observing_) {
|
+ if (!is_observing_) {
|
||||||
@@ -954,23 +954,23 @@ new file mode 100644
|
|||||||
+ OnProxyConfigChanged(config, availability);
|
+ OnProxyConfigChanged(config, availability);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void ProxyConfigMessageHandler::OnClear(const base::ListValue& list) {
|
+void ProxyConfigMessageHandler::OnClear(const base::Value::List& list) {
|
||||||
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
+ 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_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
|
||||||
+ pref_service_->CommitPendingWrite();
|
+ pref_service_->CommitPendingWrite();
|
||||||
+ OnEnableNotifyUIWithState(list);
|
+ OnEnableNotifyUIWithState(list);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void ProxyConfigMessageHandler::OnApply(const base::ListValue& list) {
|
+void ProxyConfigMessageHandler::OnApply(const base::Value::List& list) {
|
||||||
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||||
+
|
+
|
||||||
+ if ((list.size() != 1) || !list[0].is_dict()) {
|
+ if ((list.size() != 1) || !list[0].is_dict()) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ const base::DictValue& config = list[0].GetDict();
|
+ const base::Value::Dict& config = list[0].GetDict();
|
||||||
+
|
+
|
||||||
+ if (config.FindBool("auto_detect").value_or(false)) {
|
+ if (config.FindBool("auto_detect").value_or(false)) {
|
||||||
+ apply(net::ProxyConfig::CreateAutoDetect());
|
+ apply(net::ProxyConfig::CreateAutoDetect());
|
||||||
@@ -978,7 +978,7 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ if (const std::string* pacURL = config.FindString("pac_url")) {
|
+ if (const std::string* pacURL = config.FindString("pac_url")) {
|
||||||
+ std::optional<bool> pacMandatory = config.FindBool("pac_mandatory");
|
+ absl::optional<bool> pacMandatory = config.FindBool("pac_mandatory");
|
||||||
+ auto proxyConfig = net::ProxyConfig::CreateFromCustomPacURL(
|
+ auto proxyConfig = net::ProxyConfig::CreateFromCustomPacURL(
|
||||||
+ GURL(*pacURL));
|
+ GURL(*pacURL));
|
||||||
+ proxyConfig.set_pac_mandatory(pacMandatory.value_or(false));
|
+ proxyConfig.set_pac_mandatory(pacMandatory.value_or(false));
|
||||||
@@ -986,7 +986,7 @@ new file mode 100644
|
|||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ const base::DictValue* rules = config.FindDict("rules");
|
+ const base::Value::Dict* rules = config.FindDict("rules");
|
||||||
+ if (rules == nullptr)
|
+ if (rules == nullptr)
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
@@ -1023,7 +1023,7 @@ new file mode 100644
|
|||||||
+ } else if (*type == "direct") {
|
+ } else if (*type == "direct") {
|
||||||
+ proxyConfig.proxy_rules().type = net::ProxyConfig::ProxyRules::Type::EMPTY;
|
+ proxyConfig.proxy_rules().type = net::ProxyConfig::ProxyRules::Type::EMPTY;
|
||||||
+ } else if (*type == "none") {
|
+ } else if (*type == "none") {
|
||||||
+ base::ListValue empty;
|
+ base::Value::List empty;
|
||||||
+ OnClear(empty);
|
+ OnClear(empty);
|
||||||
+ return;
|
+ return;
|
||||||
+ } else {
|
+ } else {
|
||||||
@@ -1038,7 +1038,7 @@ new file mode 100644
|
|||||||
+ if (bypass_rules == nullptr)
|
+ if (bypass_rules == nullptr)
|
||||||
+ return;
|
+ return;
|
||||||
+
|
+
|
||||||
+ std::optional<bool> reverse_bypass = rules->FindBool("reverse_bypass");
|
+ absl::optional<bool> reverse_bypass = rules->FindBool("reverse_bypass");
|
||||||
+
|
+
|
||||||
+ proxyConfig.proxy_rules().bypass_rules.ParseFromString(*bypass_rules);
|
+ proxyConfig.proxy_rules().bypass_rules.ParseFromString(*bypass_rules);
|
||||||
+ proxyConfig.proxy_rules().reverse_bypass = reverse_bypass.value_or(false);
|
+ proxyConfig.proxy_rules().reverse_bypass = reverse_bypass.value_or(false);
|
||||||
@@ -1049,26 +1049,26 @@ new file mode 100644
|
|||||||
+
|
+
|
||||||
+void ProxyConfigMessageHandler::apply(const net::ProxyConfig& proxyConfig) {
|
+void ProxyConfigMessageHandler::apply(const net::ProxyConfig& proxyConfig) {
|
||||||
+ if (proxyConfig.auto_detect()) {
|
+ 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());
|
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
|
||||||
+ } else if (proxyConfig.has_pac_url()) {
|
+ } 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());
|
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
|
||||||
+ } else if (proxyConfig.proxy_rules().type == net::ProxyConfig::ProxyRules::Type::EMPTY) {
|
+ } 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());
|
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
|
||||||
+ } else {
|
+ } else {
|
||||||
+ auto proxyRulesAsString = proxyConfig.proxy_rules().ToString();
|
+ auto proxyRulesAsString = proxyConfig.proxy_rules().ToString();
|
||||||
+ auto bypassRulesAsString = proxyConfig.proxy_rules().bypass_rules.ToString();
|
+ auto bypassRulesAsString = proxyConfig.proxy_rules().bypass_rules.ToString();
|
||||||
+
|
+
|
||||||
+ // fixed servers
|
+ // fixed servers
|
||||||
+ const base::DictValue cfg = ProxyConfigDictionary::CreateFixedServers(proxyRulesAsString,
|
+ const base::Value::Dict cfg = ProxyConfigDictionary::CreateFixedServers(proxyRulesAsString,
|
||||||
+ bypassRulesAsString, proxyConfig.proxy_rules().reverse_bypass);
|
+ bypassRulesAsString, proxyConfig.proxy_rules().reverse_bypass);
|
||||||
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
|
+ pref_service_->SetDict(proxy_config::prefs::kProxy, cfg.Clone());
|
||||||
+ }
|
+ }
|
||||||
+ pref_service_->CommitPendingWrite();
|
+ pref_service_->CommitPendingWrite();
|
||||||
+
|
+
|
||||||
+ base::ListValue empty;
|
+ base::Value::List empty;
|
||||||
+ OnEnableNotifyUIWithState(empty);
|
+ OnEnableNotifyUIWithState(empty);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
@@ -1092,7 +1092,7 @@ diff --git a/chrome/browser/ui/webui/proxy_config_ui.h b/chrome/browser/ui/webui
|
|||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/chrome/browser/ui/webui/proxy_config_ui.h
|
+++ b/chrome/browser/ui/webui/proxy_config_ui.h
|
||||||
@@ -0,0 +1,41 @@
|
@@ -0,0 +1,31 @@
|
||||||
+/*
|
+/*
|
||||||
+ This file is part of Bromite.
|
+ This file is part of Bromite.
|
||||||
+
|
+
|
||||||
@@ -1113,9 +1113,7 @@ new file mode 100644
|
|||||||
+#ifndef CHROME_BROWSER_UI_WEBUI_PROXY_CONFIG_UI_H_
|
+#ifndef CHROME_BROWSER_UI_WEBUI_PROXY_CONFIG_UI_H_
|
||||||
+#define CHROME_BROWSER_UI_WEBUI_PROXY_CONFIG_UI_H_
|
+#define CHROME_BROWSER_UI_WEBUI_PROXY_CONFIG_UI_H_
|
||||||
+
|
+
|
||||||
+#include "chrome/common/webui_url_constants.h"
|
|
||||||
+#include "content/public/browser/web_ui_controller.h"
|
+#include "content/public/browser/web_ui_controller.h"
|
||||||
+#include "content/public/browser/webui_config.h"
|
|
||||||
+
|
+
|
||||||
+// The WebUI for chrome://proxy/.
|
+// The WebUI for chrome://proxy/.
|
||||||
+class ProxyConfigUI : public content::WebUIController {
|
+class ProxyConfigUI : public content::WebUIController {
|
||||||
@@ -1125,60 +1123,68 @@ new file mode 100644
|
|||||||
+ explicit ProxyConfigUI(content::WebUI* web_ui);
|
+ explicit ProxyConfigUI(content::WebUI* web_ui);
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+class ProxyConfigUIConfig
|
|
||||||
+ : public content::DefaultWebUIConfig<ProxyConfigUI> {
|
|
||||||
+ public:
|
|
||||||
+ ProxyConfigUIConfig()
|
|
||||||
+ : DefaultWebUIConfig(content::kChromeUIScheme,
|
|
||||||
+ chrome::kChromeUIProxyConfigHost) {}
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#endif // CHROME_BROWSER_UI_WEBUI_PROXY_CONFIG_UI_H_
|
+#endif // CHROME_BROWSER_UI_WEBUI_PROXY_CONFIG_UI_H_
|
||||||
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
|
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
|
||||||
--- a/chrome/common/webui_url_constants.cc
|
--- a/chrome/common/webui_url_constants.cc
|
||||||
+++ b/chrome/common/webui_url_constants.cc
|
+++ b/chrome/common/webui_url_constants.cc
|
||||||
@@ -120,6 +120,7 @@ bool IsSystemWebUIHost(std::string_view host) {
|
@@ -49,6 +49,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
|
||||||
// These hosts will also be suggested by BuiltinProvider.
|
const char kChromeUICertificateViewerURL[] = "chrome://view-cert/";
|
||||||
base::span<const base::cstring_view> ChromeURLHosts() {
|
const char kChromeUIChromeSigninHost[] = "chrome-signin";
|
||||||
static constexpr auto kChromeURLHosts = std::to_array<base::cstring_view>({
|
const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/";
|
||||||
|
+const char kChromeUIProxyConfigHost[] = "proxy";
|
||||||
|
+const char kChromeUIProxyConfigURL[] = "chrome://proxy/";
|
||||||
|
const char kChromeUIChromeURLsHost[] = "chrome-urls";
|
||||||
|
const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
|
||||||
|
const char kChromeUIComponentsHost[] = "components";
|
||||||
|
@@ -464,6 +466,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
|
||||||
|
kChromeUILockScreenNetworkHost,
|
||||||
|
kChromeUILockScreenStartReauthHost,
|
||||||
|
kChromeUIMobileSetupHost,
|
||||||
+ kChromeUIProxyConfigHost,
|
+ kChromeUIProxyConfigHost,
|
||||||
kChromeUIAboutHost,
|
kChromeUIMultiDeviceSetupHost,
|
||||||
kChromeUIAccessibilityHost,
|
kChromeUINetworkHost,
|
||||||
kChromeUIActorInternalsHost,
|
kChromeUINotificationTesterHost,
|
||||||
|
@@ -760,6 +763,7 @@ const char* const kChromeHostURLs[] = {
|
||||||
|
#if !BUILDFLAG(IS_ANDROID)
|
||||||
|
#if !BUILDFLAG(IS_CHROMEOS)
|
||||||
|
kChromeUIAppLauncherPageHost,
|
||||||
|
+ kChromeUIProxyConfigHost,
|
||||||
|
#endif
|
||||||
|
kChromeUIBookmarksHost,
|
||||||
|
kChromeUIDownloadsHost,
|
||||||
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
|
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
|
||||||
--- a/chrome/common/webui_url_constants.h
|
--- a/chrome/common/webui_url_constants.h
|
||||||
+++ b/chrome/common/webui_url_constants.h
|
+++ b/chrome/common/webui_url_constants.h
|
||||||
@@ -210,6 +210,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals";
|
@@ -135,6 +135,8 @@ extern const char kChromeUINTPTilesInternalsHost[];
|
||||||
inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/";
|
extern const char kChromeUINaClHost[];
|
||||||
inline constexpr char kChromeUINewTabHost[] = "newtab";
|
extern const char kChromeUINetExportHost[];
|
||||||
inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer";
|
extern const char kChromeUINetExportURL[];
|
||||||
+inline constexpr char16_t kChromeUIProxyConfigURL16[] = u"chrome://proxy/";
|
+extern const char kChromeUIProxyConfigHost[];
|
||||||
+inline constexpr char kChromeUIProxyConfigHost[] = "proxy";
|
+extern const char kChromeUIProxyConfigURL[];
|
||||||
inline constexpr char kChromeUINewTabPageHost[] = "new-tab-page";
|
extern const char kChromeUINetInternalsHost[];
|
||||||
inline constexpr char kChromeUINewTabPageThirdPartyHost[] =
|
extern const char kChromeUINetInternalsURL[];
|
||||||
"new-tab-page-third-party";
|
extern const char kChromeUINewTabHost[];
|
||||||
diff --git a/components/proxy_config/pref_proxy_config_tracker_impl.cc b/components/proxy_config/pref_proxy_config_tracker_impl.cc
|
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
|
--- a/components/proxy_config/pref_proxy_config_tracker_impl.cc
|
||||||
+++ b/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(
|
@@ -244,14 +244,14 @@ PrefProxyConfigTrackerImpl::GetEffectiveProxyConfig(
|
||||||
// static
|
// static
|
||||||
void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
|
void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||||
registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
|
registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
|
||||||
- ProxyConfigDictionary::CreateSystem());
|
- ProxyConfigDictionary::CreateSystem());
|
||||||
+ ProxyConfigDictionary::CreateDirect());
|
+ ProxyConfigDictionary::CreateDirect());
|
||||||
registry->RegisterListPref(proxy_config::prefs::kProxyOverrideRules);
|
}
|
||||||
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
|
|
||||||
registry->RegisterIntegerPref(
|
// static
|
||||||
@@ -541,7 +541,7 @@ void PrefProxyConfigTrackerImpl::RegisterPrefs(PrefRegistrySimple* registry) {
|
|
||||||
void PrefProxyConfigTrackerImpl::RegisterProfilePrefs(
|
void PrefProxyConfigTrackerImpl::RegisterProfilePrefs(
|
||||||
PrefRegistrySimple* registry) {
|
PrefRegistrySimple* registry) {
|
||||||
registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
|
registry->RegisterDictionaryPref(proxy_config::prefs::kProxy,
|
||||||
- ProxyConfigDictionary::CreateSystem());
|
- ProxyConfigDictionary::CreateSystem());
|
||||||
+ ProxyConfigDictionary::CreateDirect());
|
+ ProxyConfigDictionary::CreateDirect());
|
||||||
registry->RegisterBooleanPref(proxy_config::prefs::kUseSharedProxies, false);
|
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(
|
@@ -388,6 +388,7 @@ bool PrefProxyConfigTrackerImpl::PrefConfigToNetConfig(
|
||||||
if (proxy_dict.GetBypassList(&proxy_bypass)) {
|
if (proxy_dict.GetBypassList(&proxy_bypass)) {
|
||||||
proxy_config.proxy_rules().bypass_rules.ParseFromString(proxy_bypass);
|
proxy_config.proxy_rules().bypass_rules.ParseFromString(proxy_bypass);
|
||||||
}
|
}
|
||||||
@@ -1191,7 +1197,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
|
|||||||
+++ b/components/proxy_config/proxy_config_dictionary.cc
|
+++ b/components/proxy_config/proxy_config_dictionary.cc
|
||||||
@@ -30,6 +30,8 @@ const char kProxyPacMandatory[] = "pac_mandatory";
|
@@ -30,6 +30,8 @@ const char kProxyPacMandatory[] = "pac_mandatory";
|
||||||
// String containing proxy bypass rules. For a specification of the
|
// 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";
|
const char kProxyBypassList[] = "bypass_list";
|
||||||
+// Boolean telling whether to reverse the meaning of the bypass list.
|
+// Boolean telling whether to reverse the meaning of the bypass list.
|
||||||
+const char kProxyReverseBypass[] = "reverse_bypass";
|
+const char kProxyReverseBypass[] = "reverse_bypass";
|
||||||
@@ -1210,26 +1216,26 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
|
|||||||
+ return value->GetBool();
|
+ return value->GetBool();
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
const base::DictValue& ProxyConfigDictionary::GetDictionary() const {
|
const base::Value::Dict& ProxyConfigDictionary::GetDictionary() const {
|
||||||
return dict_;
|
return dict_;
|
||||||
}
|
}
|
||||||
@@ -83,13 +93,13 @@ const base::DictValue& ProxyConfigDictionary::GetDictionary() const {
|
@@ -83,13 +93,13 @@ const base::Value::Dict& ProxyConfigDictionary::GetDictionary() const {
|
||||||
// static
|
// static
|
||||||
base::DictValue ProxyConfigDictionary::CreateDirect() {
|
base::Value::Dict ProxyConfigDictionary::CreateDirect() {
|
||||||
return CreateDictionary(ProxyPrefs::MODE_DIRECT, std::string(), false,
|
return CreateDictionary(ProxyPrefs::MODE_DIRECT, std::string(), false,
|
||||||
- std::string(), std::string());
|
- std::string(), std::string());
|
||||||
+ std::string(), std::string(), false);
|
+ std::string(), std::string(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
base::DictValue ProxyConfigDictionary::CreateAutoDetect() {
|
base::Value::Dict ProxyConfigDictionary::CreateAutoDetect() {
|
||||||
return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT, std::string(), false,
|
return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT, std::string(), false,
|
||||||
- std::string(), std::string());
|
- std::string(), std::string());
|
||||||
+ std::string(), std::string(), false);
|
+ std::string(), std::string(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
@@ -97,16 +107,17 @@ base::DictValue ProxyConfigDictionary::CreatePacScript(
|
@@ -97,16 +107,17 @@ base::Value::Dict ProxyConfigDictionary::CreatePacScript(
|
||||||
const std::string& pac_url,
|
const std::string& pac_url,
|
||||||
bool pac_mandatory) {
|
bool pac_mandatory) {
|
||||||
return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT, pac_url, pac_mandatory,
|
return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT, pac_url, pac_mandatory,
|
||||||
@@ -1238,7 +1244,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
base::DictValue ProxyConfigDictionary::CreateFixedServers(
|
base::Value::Dict ProxyConfigDictionary::CreateFixedServers(
|
||||||
const std::string& proxy_server,
|
const std::string& proxy_server,
|
||||||
- const std::string& bypass_list) {
|
- const std::string& bypass_list) {
|
||||||
+ const std::string& bypass_list,
|
+ const std::string& bypass_list,
|
||||||
@@ -1250,26 +1256,26 @@ diff --git a/components/proxy_config/proxy_config_dictionary.cc b/components/pro
|
|||||||
} else {
|
} else {
|
||||||
return CreateDirect();
|
return CreateDirect();
|
||||||
}
|
}
|
||||||
@@ -115,7 +126,7 @@ base::DictValue ProxyConfigDictionary::CreateFixedServers(
|
@@ -115,7 +126,7 @@ base::Value::Dict ProxyConfigDictionary::CreateFixedServers(
|
||||||
// static
|
// static
|
||||||
base::DictValue ProxyConfigDictionary::CreateSystem() {
|
base::Value::Dict ProxyConfigDictionary::CreateSystem() {
|
||||||
return CreateDictionary(ProxyPrefs::MODE_SYSTEM, std::string(), false,
|
return CreateDictionary(ProxyPrefs::MODE_SYSTEM, std::string(), false,
|
||||||
- std::string(), std::string());
|
- std::string(), std::string());
|
||||||
+ std::string(), std::string(), false);
|
+ std::string(), std::string(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
@@ -124,7 +135,8 @@ base::DictValue ProxyConfigDictionary::CreateDictionary(
|
@@ -124,7 +135,8 @@ base::Value::Dict ProxyConfigDictionary::CreateDictionary(
|
||||||
const std::string& pac_url,
|
const std::string& pac_url,
|
||||||
bool pac_mandatory,
|
bool pac_mandatory,
|
||||||
const std::string& proxy_server,
|
const std::string& proxy_server,
|
||||||
- const std::string& bypass_list) {
|
- const std::string& bypass_list) {
|
||||||
+ const std::string& bypass_list,
|
+ const std::string& bypass_list,
|
||||||
+ bool reverse_bypass) {
|
+ bool reverse_bypass) {
|
||||||
base::DictValue dict;
|
base::Value::Dict dict;
|
||||||
dict.Set(kProxyMode, base::Value(ProxyModeToString(mode)));
|
dict.Set(kProxyMode, base::Value(ProxyModeToString(mode)));
|
||||||
if (!pac_url.empty()) {
|
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())
|
if (!proxy_server.empty())
|
||||||
dict.Set(kProxyServer, base::Value(proxy_server));
|
dict.Set(kProxyServer, base::Value(proxy_server));
|
||||||
@@ -1290,32 +1296,32 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox
|
|||||||
bool HasBypassList() const;
|
bool HasBypassList() const;
|
||||||
+ bool HasReverseBypass() const;
|
+ bool HasReverseBypass() const;
|
||||||
|
|
||||||
const base::DictValue& GetDictionary() const;
|
const base::Value::Dict& GetDictionary() const;
|
||||||
|
|
||||||
@@ -50,7 +51,8 @@ class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
|
@@ -50,7 +51,8 @@ class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
|
||||||
static base::DictValue CreatePacScript(const std::string& pac_url,
|
static base::Value::Dict CreatePacScript(const std::string& pac_url,
|
||||||
bool pac_mandatory);
|
bool pac_mandatory);
|
||||||
static base::DictValue CreateFixedServers(const std::string& proxy_server,
|
static base::Value::Dict CreateFixedServers(const std::string& proxy_server,
|
||||||
- const std::string& bypass_list);
|
- const std::string& bypass_list);
|
||||||
+ const std::string& bypass_list,
|
+ const std::string& bypass_list,
|
||||||
+ bool reverse_bypass);
|
+ bool reverse_bypass);
|
||||||
static base::DictValue CreateSystem();
|
static base::Value::Dict CreateSystem();
|
||||||
|
|
||||||
// Encodes the proxy server as "<url-scheme>=<proxy-scheme>://<proxy>".
|
// Encodes the proxy server as "<url-scheme>=<proxy-scheme>://<proxy>".
|
||||||
@@ -66,7 +68,8 @@ class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
|
@@ -66,7 +68,8 @@ class PROXY_CONFIG_EXPORT ProxyConfigDictionary {
|
||||||
const std::string& pac_url,
|
const std::string& pac_url,
|
||||||
bool pac_mandatory,
|
bool pac_mandatory,
|
||||||
const std::string& proxy_server,
|
const std::string& proxy_server,
|
||||||
- const std::string& bypass_list);
|
- const std::string& bypass_list);
|
||||||
+ const std::string& bypass_list,
|
+ const std::string& bypass_list,
|
||||||
+ bool reverse_bypass);
|
+ 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
|
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
|
--- a/components/proxy_config/proxy_policy_handler.cc
|
||||||
+++ b/components/proxy_config/proxy_policy_handler.cc
|
+++ b/components/proxy_config/proxy_policy_handler.cc
|
||||||
@@ -378,7 +378,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
|
@@ -376,7 +376,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
|
||||||
set_proxy_pref_value(ProxyConfigDictionary::CreateFixedServers(
|
set_proxy_pref_value(ProxyConfigDictionary::CreateFixedServers(
|
||||||
server->GetString(), bypass_list && bypass_list->is_string()
|
server->GetString(), bypass_list && bypass_list->is_string()
|
||||||
? bypass_list->GetString()
|
? bypass_list->GetString()
|
||||||
@@ -1324,49 +1330,19 @@ diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_
|
|||||||
}
|
}
|
||||||
break;
|
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
|
|
||||||
@@ -364,14 +364,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
|
diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_config.cc
|
||||||
--- a/net/proxy_resolution/proxy_config.cc
|
--- a/net/proxy_resolution/proxy_config.cc
|
||||||
+++ b/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,
|
@@ -109,7 +109,7 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
|
||||||
url_scheme, &single_proxies, ProxyServer::SCHEME_HTTP,
|
&single_proxies,
|
||||||
allow_bracketed_proxy_chains, is_quic_allowed);
|
ProxyServer::SCHEME_HTTP);
|
||||||
type = Type::PROXY_LIST;
|
type = Type::PROXY_LIST;
|
||||||
- return;
|
- return;
|
||||||
+ continue;
|
+ continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trim whitespace off the url scheme.
|
// Trim whitespace off the url scheme.
|
||||||
@@ -164,6 +164,57 @@ void ProxyConfig::ProxyRules::ParseFromString(std::string_view proxy_rules,
|
@@ -140,6 +140,55 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1374,10 +1350,8 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
|
|||||||
+ if (type == Type::PROXY_LIST) {
|
+ if (type == Type::PROXY_LIST) {
|
||||||
+ std::string proxy_list;
|
+ std::string proxy_list;
|
||||||
+ for (const auto& proxy_chain : single_proxies.AllChains()) {
|
+ for (const auto& proxy_chain : single_proxies.AllChains()) {
|
||||||
+ if (proxy_chain.length()) {
|
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
|
||||||
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
|
+ proxy_list += ProxyServerToProxyUri(proxy_server) + ";";
|
||||||
+ proxy_list += ProxyServerToProxyUri(proxy_server) + ";";
|
|
||||||
+ }
|
|
||||||
+ }
|
+ }
|
||||||
+ // remove last semicolon
|
+ // remove last semicolon
|
||||||
+ if (proxy_list.length() != 0 ) {
|
+ if (proxy_list.length() != 0 ) {
|
||||||
@@ -1423,14 +1397,14 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
|
|||||||
+
|
+
|
||||||
const ProxyList* ProxyConfig::ProxyRules::MapUrlSchemeToProxyList(
|
const ProxyList* ProxyConfig::ProxyRules::MapUrlSchemeToProxyList(
|
||||||
const std::string& url_scheme) const {
|
const std::string& url_scheme) const {
|
||||||
const ProxyList* proxy_server_list =
|
const ProxyList* proxy_server_list = const_cast<ProxyRules*>(this)->
|
||||||
diff --git a/net/proxy_resolution/proxy_config.h b/net/proxy_resolution/proxy_config.h
|
diff --git a/net/proxy_resolution/proxy_config.h b/net/proxy_resolution/proxy_config.h
|
||||||
--- a/net/proxy_resolution/proxy_config.h
|
--- a/net/proxy_resolution/proxy_config.h
|
||||||
+++ b/net/proxy_resolution/proxy_config.h
|
+++ b/net/proxy_resolution/proxy_config.h
|
||||||
@@ -106,6 +106,9 @@ class NET_EXPORT ProxyConfig {
|
@@ -103,6 +103,9 @@ class NET_EXPORT ProxyConfig {
|
||||||
void ParseFromString(std::string_view proxy_rules,
|
// and use socks4://foopy2 for all other
|
||||||
bool allow_bracketed_proxy_chains = false,
|
// URLs.
|
||||||
bool is_quic_allowed = false);
|
void ParseFromString(const std::string& proxy_rules);
|
||||||
+ // Returns the proxy rules in a format that can be parsed by ParseFromString;
|
+ // Returns the proxy rules in a format that can be parsed by ParseFromString;
|
||||||
+ // all information except bypass rules is used.
|
+ // all information except bypass rules is used.
|
||||||
+ std::string ToString() const;
|
+ std::string ToString() const;
|
||||||
|
|||||||
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.BromiteCustomContentSetting;
|
||||||
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
||||||
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
|
+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.components.content_settings.ContentSettingsType;
|
||||||
+import org.chromium.content_public.browser.BrowserContextHandle;
|
+import org.chromium.content_public.browser.BrowserContextHandle;
|
||||||
+
|
+
|
||||||
@@ -177,8 +177,8 @@ new file mode 100644
|
|||||||
+public class BromiteAutoplayContentSetting extends BromiteCustomContentSetting {
|
+public class BromiteAutoplayContentSetting extends BromiteCustomContentSetting {
|
||||||
+ public BromiteAutoplayContentSetting() {
|
+ public BromiteAutoplayContentSetting() {
|
||||||
+ super(/*contentSettingsType*/ ContentSettingsType.AUTOPLAY,
|
+ super(/*contentSettingsType*/ ContentSettingsType.AUTOPLAY,
|
||||||
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
|
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
|
||||||
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
|
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
|
||||||
+ /*allowException*/ true,
|
+ /*allowException*/ true,
|
||||||
+ /*preferenceKey*/ "autoplay",
|
+ /*preferenceKey*/ "autoplay",
|
||||||
+ /*profilePrefKey*/ "autoplay");
|
+ /*profilePrefKey*/ "autoplay");
|
||||||
@@ -197,11 +197,11 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
|
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
|
||||||
+ switch (value) {
|
+ switch (value) {
|
||||||
+ case ContentSetting.ALLOW:
|
+ case ContentSettingValues.ALLOW:
|
||||||
+ return R.string.website_settings_category_autoplay_enabled;
|
+ return R.string.website_settings_category_autoplay_enabled;
|
||||||
+ case ContentSetting.BLOCK:
|
+ case ContentSettingValues.BLOCK:
|
||||||
+ return R.string.website_settings_category_autoplay_disabled;
|
+ return R.string.website_settings_category_autoplay_disabled;
|
||||||
+ default:
|
+ default:
|
||||||
+ return 0;
|
+ return 0;
|
||||||
@@ -229,8 +229,8 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
|
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
|
||||||
+ return value != ContentSetting.BLOCK;
|
+ 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
|
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
|
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
|
--- a/components/content_settings/core/browser/content_settings_registry.cc
|
||||||
+++ b/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,
|
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_ALLOW,
|
||||||
+ Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK,
|
+ Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK,
|
||||||
@@ -291,15 +291,15 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
|
|||||||
diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc
|
diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc
|
||||||
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc
|
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc
|
||||||
+++ b/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 @@
|
@@ -8,6 +8,7 @@
|
||||||
#include "third_party/blink/public/mojom/autoplay/autoplay.mojom-blink.h"
|
#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/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_content_settings_client.h"
|
||||||
#include "third_party/blink/public/platform/web_media_player.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.h"
|
||||||
#include "third_party/blink/public/web/web_local_frame_client.h"
|
#include "third_party/blink/public/web/web_local_frame_client.h"
|
||||||
@@ -346,6 +347,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() {
|
@@ -330,6 +331,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AutoplayPolicy::IsGestureNeededForPlayback() const {
|
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())
|
if (!IsLockedPendingUserGesture())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -457,6 +460,17 @@ void AutoplayPolicy::MaybeSetAutoplayInitiated() {
|
@@ -428,6 +431,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
|
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
|
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.h
|
||||||
+++ b/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
|
@@ -142,6 +142,10 @@ class CORE_EXPORT AutoplayPolicy final
|
||||||
// should use, if checking to see if an action is allowed.
|
// should use, if checking to see if an action is allowed.
|
||||||
bool IsLockedPendingUserGesture() const;
|
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
|
|
||||||
@@ -145,6 +145,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;
|
|
||||||
@@ -696,7 +697,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
|
|
||||||
@@ -204,6 +204,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"
|
|
||||||
@@ -491,6 +492,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
|
|
||||||
@@ -223,6 +223,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
|
|
||||||
@@ -668,6 +668,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"
|
|
||||||
@@ -663,6 +664,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"
|
|
||||||
@@ -46,6 +47,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"
|
|
||||||
@@ -616,9 +618,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
|
|
||||||
@@ -335,6 +335,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"
|
|
||||||
@@ -5049,7 +5051,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
|
|
||||||
@@ -5066,8 +5069,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);
|
|
||||||
--
|
|
||||||
@@ -4,7 +4,6 @@ Subject: Add custom tab intents privacy option
|
|||||||
|
|
||||||
Add custom tab intents privacy option and force
|
Add custom tab intents privacy option and force
|
||||||
open external links in incognito flag.
|
open external links in incognito flag.
|
||||||
Use the CCT ephemeral mode.
|
|
||||||
|
|
||||||
Flags are mutually exclusive.
|
Flags are mutually exclusive.
|
||||||
|
|
||||||
@@ -12,41 +11,31 @@ See also: https://github.com/bromite/bromite/issues/1474
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../java/res/xml/privacy_preferences.xml | 15 ++++++
|
.../java/res/xml/privacy_preferences.xml | 10 ++++++++
|
||||||
.../browser/LaunchIntentDispatcher.java | 22 ++++++++
|
.../browser/LaunchIntentDispatcher.java | 21 ++++++++++++++++
|
||||||
.../CustomTabIntentDataProvider.java | 22 ++++----
|
.../customtabs/CustomTabsConnection.java | 1 +
|
||||||
.../customtabs/CustomTabsConnection.java | 3 +-
|
.../IncognitoCustomTabIntentDataProvider.java | 6 +++++
|
||||||
.../IncognitoCustomTabIntentDataProvider.java | 14 +++++
|
.../privacy/settings/PrivacySettings.java | 24 +++++++++++++++++++
|
||||||
.../privacy/settings/PrivacySettings.java | 51 +++++++++++++++++++
|
.../chrome/browser/tab/TabAssociatedApp.java | 6 ++++-
|
||||||
.../flags/android/chrome_feature_list.cc | 4 +-
|
.../strings/android_chrome_strings.grd | 14 +++++++++++
|
||||||
.../browser/flags/ChromeFeatureList.java | 3 ++
|
|
||||||
.../chrome/browser/tab/TabAssociatedApp.java | 6 ++-
|
|
||||||
...Add-custom-tab-intents-privacy-option.grdp | 25 +++++++++
|
|
||||||
.../OriginVerifier.java | 5 ++
|
|
||||||
.../core/common/language_experiments.cc | 1 +
|
.../core/common/language_experiments.cc | 1 +
|
||||||
.../add-custom-tab-intents-privacy-option.inc | 1 +
|
.../add-custom-tab-intents-privacy-option.inc | 1 +
|
||||||
13 files changed, 159 insertions(+), 13 deletions(-)
|
9 files changed, 83 insertions(+), 1 deletion(-)
|
||||||
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
|
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
|
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
|
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||||
+++ b/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.
|
@@ -54,6 +54,16 @@ found in the LICENSE file.
|
||||||
android:key="cromite_flags"
|
android:key="do_not_track"
|
||||||
android:title="@string/cromite_flags_title"
|
android:title="@string/do_not_track_title"
|
||||||
app:url="@string/cromite_flags_url" />
|
android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings" />
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||||
+ android:key="allow_custom_tab_intents"
|
+ android:key="allow_custom_tab_intents"
|
||||||
+ android:title="@string/allow_custom_tab_intents_title"
|
+ android:title="@string/allow_custom_tab_intents_title"
|
||||||
+ android:summary="@string/allow_custom_tab_intents_summary"
|
+ android:summary="@string/allow_custom_tab_intents_summary"
|
||||||
+ android:defaultValue="false" />
|
+ android:defaultValue="false" />
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||||
+ android:title="@string/uses_separate_storagepartition_for_cct_title"
|
|
||||||
+ android:summary="@string/uses_separate_storagepartition_for_cct_summary"
|
|
||||||
+ app:featureName="maylaunchurl-uses-separate-storage-partition"
|
|
||||||
+ app:needRestart="true" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="open_external_links_incognito"
|
+ android:key="open_external_links_incognito"
|
||||||
+ android:title="@string/open_external_links_incognito_title"
|
+ android:title="@string/open_external_links_incognito_title"
|
||||||
+ android:summary="@string/open_external_links_incognito_summary"
|
+ android:summary="@string/open_external_links_incognito_summary"
|
||||||
@@ -57,15 +46,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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
|
||||||
+++ b/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;
|
@@ -52,6 +52,9 @@ import java.lang.annotation.Retention;
|
||||||
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;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -75,7 +56,7 @@ 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
|
* Dispatches incoming intents to the appropriate activity based on the current configuration and
|
||||||
* Intent fired.
|
* Intent fired.
|
||||||
@@ -139,6 +143,9 @@ public class LaunchIntentDispatcher {
|
@@ -239,6 +242,9 @@ public class LaunchIntentDispatcher {
|
||||||
*/
|
*/
|
||||||
public static boolean isCustomTabIntent(Intent intent) {
|
public static boolean isCustomTabIntent(Intent intent) {
|
||||||
if (intent == null) return false;
|
if (intent == null) return false;
|
||||||
@@ -85,9 +66,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
|
|||||||
Log.w(
|
Log.w(
|
||||||
TAG,
|
TAG,
|
||||||
"CustomTabsIntent#shouldAlwaysUseBrowserUI() = "
|
"CustomTabsIntent#shouldAlwaysUseBrowserUI() = "
|
||||||
@@ -165,6 +172,10 @@ public class LaunchIntentDispatcher {
|
@@ -260,6 +266,10 @@ public class LaunchIntentDispatcher {
|
||||||
// Make sure the result of the CustomTabActivity is forwarded to the client.
|
newIntent.setData(uri);
|
||||||
newIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
|
newIntent.setClassName(context, CustomTabActivity.class.getName());
|
||||||
|
|
||||||
+ if (ContextUtils.getAppSharedPreferences()
|
+ if (ContextUtils.getAppSharedPreferences()
|
||||||
+ .getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false))
|
+ .getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false))
|
||||||
@@ -96,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
|
|||||||
// Since configureIntentForResizableCustomTab() might change the componenet/class
|
// Since configureIntentForResizableCustomTab() might change the componenet/class
|
||||||
// associated with the passed intent, it needs to be called after #setClassName(context,
|
// associated with the passed intent, it needs to be called after #setClassName(context,
|
||||||
// CustomTabActivity.class.getName());
|
// CustomTabActivity.class.getName());
|
||||||
@@ -342,6 +353,17 @@ public class LaunchIntentDispatcher {
|
@@ -407,6 +417,17 @@ public class LaunchIntentDispatcher {
|
||||||
|
|
||||||
if (Intent.ACTION_VIEW.equals(newIntent.getAction())
|
if (Intent.ACTION_VIEW.equals(newIntent.getAction())
|
||||||
&& !IntentHandler.wasIntentSenderChrome(newIntent)) {
|
&& !IntentHandler.wasIntentSenderChrome(newIntent)) {
|
||||||
@@ -111,79 +92,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
|
|||||||
+ IntentHandler.setTabLaunchType(newIntent, TabLaunchType.FROM_EXTERNAL_APP);
|
+ IntentHandler.setTabLaunchType(newIntent, TabLaunchType.FROM_EXTERNAL_APP);
|
||||||
+ newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
+ newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
+ }
|
+ }
|
||||||
if (!chromeTabbedTaskExists(mActivity)) {
|
if (!chromeTabbedTaskExists()) {
|
||||||
newIntent.putExtra(IntentHandler.EXTRA_STARTED_TABBED_CHROME_TASK, true);
|
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
|
|
||||||
@@ -248,16 +248,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
|
|
||||||
@@ -727,7 +727,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);
|
|
||||||
@@ -740,8 +740,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(
|
|
||||||
@@ -1410,7 +1410,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
|
||||||
public @CustomTabProfileType int getCustomTabMode() {
|
|
||||||
return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()
|
|
||||||
? CustomTabProfileType.INCOGNITO
|
|
||||||
- : CustomTabProfileType.REGULAR;
|
|
||||||
+ : (ChromeFeatureList.sMayLaunchurlUsesSeparateStoragePartition.isEnabled()
|
|
||||||
+ ? CustomTabProfileType.EPHEMERAL
|
|
||||||
+ : CustomTabProfileType.REGULAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
|
||||||
+++ b/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 {
|
@@ -854,6 +854,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 {
|
|
||||||
PostTask.postTask(
|
PostTask.postTask(
|
||||||
TaskTraits.UI_DEFAULT,
|
TaskTraits.UI_DEFAULT,
|
||||||
() -> {
|
() -> {
|
||||||
@@ -194,7 +109,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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
|
||||||
+++ b/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;
|
@@ -38,6 +38,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -204,7 +119,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
|
* A model class that parses the incoming intent for incognito Custom Tabs specific customization
|
||||||
* data.
|
* data.
|
||||||
@@ -134,6 +137,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
|
@@ -115,6 +118,9 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isIntentFromThirdPartyAllowed() {
|
private static boolean isIntentFromThirdPartyAllowed() {
|
||||||
@@ -214,66 +129,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Inco
|
|||||||
return ChromeFeatureList.sCctIncognitoAvailableToThirdParty.isEnabled();
|
return ChromeFeatureList.sCctIncognitoAvailableToThirdParty.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,6 +237,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isValidIncognitoIntent(Intent intent, boolean recordMetrics) {
|
|
||||||
+ if (ContextUtils.getAppSharedPreferences()
|
|
||||||
+ .getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false)) {
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
if (!isIncognitoRequested(intent)) return false;
|
|
||||||
var session = SessionHolder.getSessionHolderFromIntent(intent);
|
|
||||||
if (isIntentFromThirdPartyAllowed()
|
|
||||||
@@ -341,6 +351,10 @@ public class IncognitoCustomTabIntentDataProvider extends BrowserServicesIntentD
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public @CustomTabProfileType int getCustomTabMode() {
|
|
||||||
+ if (ContextUtils.getAppSharedPreferences()
|
|
||||||
+ .getBoolean(PrivacySettings.PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, false)) {
|
|
||||||
+ return CustomTabProfileType.EPHEMERAL;
|
|
||||||
+ }
|
|
||||||
return CustomTabProfileType.INCOGNITO;
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
||||||
@@ -12,6 +12,7 @@ import android.content.Context;
|
@@ -103,6 +103,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
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.SpannableStringBuilder;
|
|
||||||
@@ -88,6 +89,15 @@ import org.chromium.ui.widget.ChromeBulletSpan;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.function.Consumer;
|
|
||||||
|
|
||||||
+import android.app.role.RoleManager;
|
private IncognitoLockSettings mIncognitoLockSettings;
|
||||||
+import android.content.Context;
|
|
||||||
+import android.content.Intent;
|
|
||||||
+import android.content.pm.ResolveInfo;
|
|
||||||
+import android.provider.Settings;
|
|
||||||
+import android.text.TextUtils;
|
|
||||||
+import org.chromium.base.IntentUtils;
|
|
||||||
+import org.chromium.base.PackageManagerUtils;
|
|
||||||
+
|
|
||||||
import androidx.preference.PreferenceCategory;
|
|
||||||
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
|
|
||||||
import org.chromium.base.shared_preferences.SharedPreferencesManager;
|
|
||||||
@@ -163,6 +173,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
|
||||||
startTag, endTag, new ChromeClickableSpan(context, onClickCallback));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ private ChromeSwitchPreference allowCustomTabIntentsPref;
|
+ private ChromeSwitchPreference allowCustomTabIntentsPref;
|
||||||
+ private ChromeSwitchPreference openExternalLinksPref;
|
+ private ChromeSwitchPreference openExternalLinksPref;
|
||||||
+
|
+
|
||||||
@Override
|
@Override
|
||||||
public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||||
mPageTitle.set(getString(R.string.prefs_privacy_security));
|
getActivity().setTitle(R.string.prefs_privacy_security);
|
||||||
@@ -420,6 +433,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -298,6 +301,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
new SpanApplier.SpanInfo("<link2>", "</link2>", servicesLink));
|
new SpanApplier.SpanInfo("<link2>", "</link2>", servicesLink));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
String key = preference.getKey();
|
String key = preference.getKey();
|
||||||
@@ -440,6 +456,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -314,6 +320,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
||||||
UserPrefs.get(getProfile())
|
UserPrefs.get(getProfile())
|
||||||
.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
|
.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
|
||||||
@@ -291,23 +160,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||||
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
|
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
|
||||||
+ sharedPreferencesEditor.apply();
|
+ sharedPreferencesEditor.apply();
|
||||||
+ // check default browser
|
|
||||||
+ if ((boolean)newValue) {
|
|
||||||
+ ResolveInfo info = PackageManagerUtils.resolveDefaultWebBrowserActivity();
|
|
||||||
+ if (info == null || info.match == 0 ||
|
|
||||||
+ !TextUtils.equals(ContextUtils.getApplicationContext().getPackageName(),
|
|
||||||
+ info.activityInfo.packageName)) {
|
|
||||||
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
|
||||||
+ RoleManager roleManager = (RoleManager) getContext().getSystemService(Context.ROLE_SERVICE);
|
|
||||||
+ Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_BROWSER);
|
|
||||||
+ startActivityForResult(intent, 0);
|
|
||||||
+ } else {
|
|
||||||
+ Intent intent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
|
|
||||||
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
+ IntentUtils.safeStartActivity(getContext(), intent);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ } else if (PREF_OPEN_EXTERNAL_LINKS_INCOGNITO.equals(key)) {
|
+ } else if (PREF_OPEN_EXTERNAL_LINKS_INCOGNITO.equals(key)) {
|
||||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||||
+ sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
|
+ sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
|
||||||
@@ -315,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -472,6 +513,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -336,6 +350,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
|
UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,44 +184,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
|
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
|
||||||
if (doNotTrackPref != null) {
|
if (doNotTrackPref != null) {
|
||||||
doNotTrackPref.setSummary(
|
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
|
|
||||||
@@ -741,7 +741,9 @@ BASE_FEATURE(kLogoViewRefactor, base::FEATURE_DISABLED_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
|
|
||||||
@@ -1053,6 +1053,8 @@ public abstract class ChromeFeatureList {
|
|
||||||
MOST_VISITED_TILES_CUSTOMIZATION,
|
|
||||||
/* defaultValue= */ true,
|
|
||||||
/* defaultValueInTests= */ true);
|
|
||||||
+ 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 =
|
|
||||||
@@ -1330,6 +1332,7 @@ public abstract class ChromeFeatureList {
|
|
||||||
sMaliciousApkDownloadCheck,
|
|
||||||
sMostVisitedTilesCustomization,
|
|
||||||
sMostVisitedTilesReselect,
|
|
||||||
+ sMayLaunchurlUsesSeparateStoragePartition,
|
|
||||||
sMoveToFrontInLaunchIntentDispatcher,
|
|
||||||
sMultiInstanceSharedPrefsMigration,
|
|
||||||
sMvcUpdateViewWhenModelChanged,
|
|
||||||
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
|
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
|
--- 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
|
+++ 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) {
|
public static boolean isOpenedFromExternalApp(Tab tab) {
|
||||||
TabAssociatedApp app = get(tab);
|
TabAssociatedApp app = get(tab);
|
||||||
if (app == null) return false;
|
if (app == null) return false;
|
||||||
@@ -382,57 +200,36 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso
|
|||||||
String packageName = ContextUtils.getApplicationContext().getPackageName();
|
String packageName = ContextUtils.getApplicationContext().getPackageName();
|
||||||
return tab.getLaunchType() == TabLaunchType.FROM_EXTERNAL_APP
|
return tab.getLaunchType() == TabLaunchType.FROM_EXTERNAL_APP
|
||||||
&& !TextUtils.equals(app.getAppId(), packageName);
|
&& !TextUtils.equals(app.getAppId(), packageName);
|
||||||
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
|
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
new file mode 100644
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
--- /dev/null
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
|
@@ -5217,6 +5217,20 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||||
@@ -0,0 +1,25 @@
|
<message name="IDS_NEAR_OOM_INTERVENTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can resume what it was doing.">
|
||||||
+<?xml version="1.0" encoding="utf-8"?>
|
Resume
|
||||||
+<grit-part>
|
</message>
|
||||||
+ <!-- Allow custom tab intents -->
|
+ <!-- Allow custom tab intents -->
|
||||||
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
|
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
|
||||||
+ Allow custom tab intents.
|
+ Allow custom tab intents
|
||||||
+ </message>
|
+ </message>
|
||||||
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
|
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
|
||||||
+ Allow applications to open custom tab intents, similar to webview. To work, Cromite must be set as the default browser.
|
+ Allow applications to open custom tab intents, similar to webview.
|
||||||
+ </message>
|
+ </message>
|
||||||
+
|
+ <!-- Open External Links in Incognito -->
|
||||||
+ <message name="IDS_USES_SEPARATE_STORAGEPARTITION_FOR_CCT_TITLE" desc="Text for 'Use ephemeral mode for CCT' settings-privacy option.">
|
+ <message name="IDS_OPEN_EXTERNAL_LINKS_INCOGNITO_TITLE" desc="Text for 'Open external links in incognito' settings-privacy option.">
|
||||||
+ Use ephemeral mode for CCT
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_USES_SEPARATE_STORAGEPARTITION_FOR_CCT_SUMMARY" desc="Summary text for 'Use ephemeral mode for CCT' settings-privacy option.">
|
|
||||||
+ Use a separate storage partition when opening custom tab intents
|
|
||||||
+ </message>
|
|
||||||
+
|
|
||||||
+ <!-- Open External Links in Incognito -->
|
|
||||||
+ <message name="IDS_OPEN_EXTERNAL_LINKS_INCOGNITO_TITLE" desc="Text for 'Open external links in incognito' settings-privacy option.">
|
|
||||||
+ Open external links in incognito
|
+ Open external links in incognito
|
||||||
+ </message>
|
+ </message>
|
||||||
+ <message name="IDS_OPEN_EXTERNAL_LINKS_INCOGNITO_SUMMARY" desc="Summary text for 'Open external links in incognito' settings-privacy option.">
|
+ <message name="IDS_OPEN_EXTERNAL_LINKS_INCOGNITO_SUMMARY" desc="Summary text for 'Open external links in incognito' settings-privacy option.">
|
||||||
+ Force the opening of all external links in incognito mode and uses the CCT ephemeral mode. Caution: there is only one incognito profile.
|
+ Force the opening of all external links in incognito mode
|
||||||
+ </message>
|
+ </message>
|
||||||
+</grit-part>
|
<!-- Usage Stats strings -->
|
||||||
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
|
<message name="IDS_USAGE_STATS_CONSENT_TITLE" desc="Title for activity authorizing Digital Wellbeing to access Chrome usage data">
|
||||||
--- a/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
|
Show your Chrome activity in Digital Wellbeing?
|
||||||
+++ b/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
|
|
||||||
@@ -181,6 +181,11 @@ public abstract class OriginVerifier {
|
|
||||||
assert mNativeOriginVerifier != 0
|
|
||||||
: "Either provide a browserContextHandle to "
|
|
||||||
+ "OriginVerifier#ctor or call initNativeOriginVerifier.";
|
|
||||||
+ if ((true)) {
|
|
||||||
+ PostTask.runOrPostTask(
|
|
||||||
+ TaskTraits.UI_DEFAULT, new VerifiedCallback(origin, false, null));
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
String scheme = origin.uri().getScheme();
|
|
||||||
String host = assumeNonNull(origin.uri().getHost());
|
|
||||||
diff --git a/components/language/core/common/language_experiments.cc b/components/language/core/common/language_experiments.cc
|
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
|
--- a/components/language/core/common/language_experiments.cc
|
||||||
+++ b/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);
|
@@ -24,4 +24,5 @@ BASE_FEATURE(kCctAutoTranslate,
|
||||||
|
// Params:
|
||||||
BASE_FEATURE(kDisableGeoLanguageModel, base::FEATURE_ENABLED_BY_DEFAULT);
|
const char kContentLanguagesDisableObserversParam[] = "disable_observers";
|
||||||
|
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kCctAutoTranslate);
|
+SET_CROMITE_FEATURE_DISABLED(kCctAutoTranslate);
|
||||||
} // namespace language
|
} // namespace language
|
||||||
@@ -441,5 +238,5 @@ new file mode 100644
|
|||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
|
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
|
||||||
@@ -0,0 +1 @@
|
@@ -0,0 +1 @@
|
||||||
+// explicitly empty
|
+SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides);
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -6,58 +6,88 @@ Corrected Exit functionality
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
chrome/android/java/res/values/ids.xml | 1 +
|
chrome/android/java/res/menu/main_menu.xml | 6 ++++++
|
||||||
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++++
|
.../org/chromium/chrome/browser/ApplicationLifetime.java | 2 ++
|
||||||
.../org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
|
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++++
|
||||||
.../chrome/browser/init/ChromeLifetimeController.java | 2 ++
|
.../src/org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
|
||||||
.../tabbed_mode/TabbedAppMenuPropertiesDelegate.java | 7 +++++++
|
.../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
|
||||||
.../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
|
5 files changed, 21 insertions(+)
|
||||||
6 files changed, 23 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
|
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/values/ids.xml
|
--- a/chrome/android/java/res/menu/main_menu.xml
|
||||||
+++ b/chrome/android/java/res/values/ids.xml
|
+++ b/chrome/android/java/res/menu/main_menu.xml
|
||||||
@@ -126,6 +126,7 @@ found in the LICENSE file.
|
@@ -160,6 +160,9 @@ found in the LICENSE file.
|
||||||
<item type="id" name="ntp_feed_header_menu_item_toggle_switch" />
|
<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 -->
|
<!-- Items shown only in the tab switcher -->
|
||||||
+ <item type="id" name="exit_id" />
|
@@ -186,6 +189,9 @@ found in the LICENSE file.
|
||||||
<item type="id" name="icon_row_menu_id" />
|
<item android:id="@id/preferences_id"
|
||||||
<item type="id" name="submenu_header_menu_id" />
|
android:title="@string/menu_settings"
|
||||||
<item type="id" name="back_menu_id" />
|
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/ApplicationLifetime.java b/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java
|
||||||
|
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser;
|
||||||
|
import org.jni_zero.CalledByNative;
|
||||||
|
|
||||||
|
import org.chromium.base.ObserverList;
|
||||||
|
+import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
|
||||||
|
|
||||||
|
/** Watches for when Chrome is told to restart itself. */
|
||||||
|
public class ApplicationLifetime {
|
||||||
|
@@ -39,6 +40,7 @@ public class ApplicationLifetime {
|
||||||
|
|
||||||
|
@CalledByNative
|
||||||
|
public static void terminate(boolean restart) {
|
||||||
|
+ IncognitoNotificationManager.dismissIncognitoNotification();
|
||||||
|
for (Observer observer : sObservers) {
|
||||||
|
observer.onTerminate(restart);
|
||||||
|
}
|
||||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
@@ -401,6 +401,8 @@ import java.util.Set;
|
@@ -267,6 +267,8 @@ import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.DoubleConsumer;
|
||||||
|
|
||||||
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
|
+import org.chromium.chrome.browser.ApplicationLifetime;
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* This is the main activity for ChromeMobile when not running in document mode. All the tabs are
|
* 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.
|
* accessible via a chrome specific tab switching UI.
|
||||||
@@ -4160,6 +4162,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
@@ -2935,6 +2937,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||||
.closeTabs(
|
} else if (id == R.id.close_tab) {
|
||||||
TabClosureParams.closeTab(currentTab).build(), /* allowDialog= */ true);
|
getCurrentTabModel().closeTab(currentTab, true, false, true);
|
||||||
RecordUserAction.record("MobileTabClosed");
|
RecordUserAction.record("MobileTabClosed");
|
||||||
+ } else if (id == R.id.exit_id) {
|
+ } else if (id == R.id.exit_id) {
|
||||||
+ ApplicationLifetime.terminate(false);
|
+ ApplicationLifetime.terminate(false);
|
||||||
} else if (id == R.id.close_all_tabs_menu_id) {
|
} else if (id == R.id.close_all_tabs_menu_id) {
|
||||||
boolean allowUndo = TabClosureParamsUtils.shouldAllowUndo(triggeringMotion);
|
// Close both incognito and normal tabs.
|
||||||
|
CloseAllTabsDialog.show(
|
||||||
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
+++ b/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;
|
@@ -62,6 +62,7 @@ import org.chromium.chrome.R;
|
||||||
import org.chromium.chrome.R;
|
|
||||||
import org.chromium.chrome.browser.ActivityTabProvider;
|
import org.chromium.chrome.browser.ActivityTabProvider;
|
||||||
import org.chromium.chrome.browser.ActivityUtils;
|
import org.chromium.chrome.browser.ActivityUtils;
|
||||||
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
|
import org.chromium.chrome.browser.AppHooks;
|
||||||
|
+import org.chromium.chrome.browser.ApplicationLifetime;
|
||||||
import org.chromium.chrome.browser.ChromeActivitySessionTracker;
|
import org.chromium.chrome.browser.ChromeActivitySessionTracker;
|
||||||
import org.chromium.chrome.browser.ChromeApplicationImpl;
|
import org.chromium.chrome.browser.ChromeApplicationImpl;
|
||||||
import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
|
import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
|
||||||
@@ -2718,6 +2719,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
@@ -2571,6 +2572,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,48 +99,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||||||
if (id == R.id.update_menu_id) {
|
if (id == R.id.update_menu_id) {
|
||||||
UpdateMenuItemHelper.getInstance(
|
UpdateMenuItemHelper.getInstance(
|
||||||
getProfileProviderSupplier().get().getOriginalProfile())
|
getProfileProviderSupplier().get().getOriginalProfile())
|
||||||
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;
|
|
||||||
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
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onTerminate(boolean restart) {
|
|
||||||
+ IncognitoNotificationManager.dismissIncognitoNotification();
|
|
||||||
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
|
|
||||||
@@ -492,6 +492,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
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -4572,6 +4572,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
|
@@ -3846,6 +3846,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||||
<message name="IDS_MENU_MORE_TOOLS" desc="Menu item to more tools. [CHAR_LIMIT=27]">
|
<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]">
|
||||||
More tools
|
Dark theme
|
||||||
</message>
|
</message>
|
||||||
+ <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
|
+ <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
|
||||||
+ Exit
|
+ Exit
|
||||||
|
|||||||
@@ -10,42 +10,42 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
.../browser/autocomplete_controller.cc | 10 ++++++
|
.../browser/autocomplete_controller.cc | 10 ++++++
|
||||||
.../omnibox/browser/history_url_provider.cc | 3 ++
|
.../omnibox/browser/history_url_provider.cc | 3 ++
|
||||||
components/omnibox/browser/search_provider.cc | 4 +++
|
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 +++++++++++++++++++
|
...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
|
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
|
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
|
||||||
--- a/components/omnibox/browser/autocomplete_controller.cc
|
--- a/components/omnibox/browser/autocomplete_controller.cc
|
||||||
+++ b/components/omnibox/browser/autocomplete_controller.cc
|
+++ b/components/omnibox/browser/autocomplete_controller.cc
|
||||||
@@ -22,6 +22,7 @@
|
@@ -22,6 +22,7 @@
|
||||||
#include <utility>
|
|
||||||
|
|
||||||
#include "base/check_op.h"
|
#include "base/check_op.h"
|
||||||
|
#include "base/containers/contains.h"
|
||||||
+#include "base/command_line.h"
|
+#include "base/command_line.h"
|
||||||
#include "base/feature_list.h"
|
#include "base/feature_list.h"
|
||||||
#include "base/format_macros.h"
|
#include "base/format_macros.h"
|
||||||
#include "base/functional/bind.h"
|
#include "base/functional/bind.h"
|
||||||
@@ -549,6 +550,15 @@ AutocompleteController::AutocompleteController(
|
@@ -417,6 +418,15 @@ AutocompleteController::AutocompleteController(
|
||||||
|
provider_client_->GetOmniboxTriggeredFeatureService()),
|
||||||
steady_state_omnibox_position_(
|
steady_state_omnibox_position_(
|
||||||
metrics::OmniboxEventProto::UNKNOWN_POSITION),
|
metrics::OmniboxEventProto::UNKNOWN_POSITION) {
|
||||||
config_(config) {
|
|
||||||
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering")) {
|
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering")) {
|
||||||
+ const std::string flag_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII("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;
|
+ AutocompleteProvider::TYPE_HISTORY_URL | AutocompleteProvider::TYPE_BOOKMARK | AutocompleteProvider::TYPE_BUILTIN;
|
||||||
+ if (!flag_value.contains("bookmarks"))
|
+ if (!base::Contains(flag_value, "bookmarks"))
|
||||||
+ config_.provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK;
|
+ provider_types &= ~AutocompleteProvider::TYPE_BOOKMARK;
|
||||||
+ if (!flag_value.contains("chrome"))
|
+ if (!base::Contains(flag_value, "chrome"))
|
||||||
+ config_.provider_types &= ~AutocompleteProvider::TYPE_BUILTIN;
|
+ 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
|
// 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
|
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
|
--- a/components/omnibox/browser/history_url_provider.cc
|
||||||
+++ b/components/omnibox/browser/history_url_provider.cc
|
+++ b/components/omnibox/browser/history_url_provider.cc
|
||||||
@@ -487,6 +487,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
|
@@ -479,6 +479,9 @@ void HistoryURLProvider::Start(const AutocompleteInput& input,
|
||||||
if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY)
|
if (fixed_up_input.type() != metrics::OmniboxInputType::QUERY)
|
||||||
matches_.push_back(what_you_typed_match);
|
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
|
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
|
||||||
--- a/components/omnibox/browser/search_provider.cc
|
--- a/components/omnibox/browser/search_provider.cc
|
||||||
+++ b/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/base64.h"
|
||||||
#include "base/feature_list.h"
|
#include "base/feature_list.h"
|
||||||
#include "base/functional/bind.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/functional/callback.h"
|
||||||
#include "base/i18n/break_iterator.h"
|
#include "base/i18n/break_iterator.h"
|
||||||
#include "base/i18n/case_conversion.h"
|
#include "base/i18n/case_conversion.h"
|
||||||
@@ -662,6 +663,9 @@ void SearchProvider::Run(bool query_is_private) {
|
@@ -647,6 +648,9 @@ void SearchProvider::Run(bool query_is_private) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SearchProvider::DoHistoryQuery(bool minimal_changes) {
|
void SearchProvider::DoHistoryQuery(bool minimal_changes) {
|
||||||
@@ -79,23 +79,24 @@ 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
|
diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
|
||||||
--- a/components/url_formatter/url_fixer.cc
|
--- a/components/url_formatter/url_fixer.cc
|
||||||
+++ b/components/url_formatter/url_fixer.cc
|
+++ b/components/url_formatter/url_fixer.cc
|
||||||
@@ -11,6 +11,7 @@
|
@@ -7,6 +7,8 @@
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "base/check_op.h"
|
#include "base/check_op.h"
|
||||||
#include "base/compiler_specific.h"
|
+#include "base/containers/contains.h"
|
||||||
+#include "base/command_line.h"
|
+#include "base/command_line.h"
|
||||||
#include "base/files/file_path.h"
|
#include "base/files/file_path.h"
|
||||||
#include "base/files/file_util.h"
|
#include "base/files/file_util.h"
|
||||||
#include "base/i18n/char_iterator.h"
|
#include "base/i18n/char_iterator.h"
|
||||||
@@ -635,6 +636,8 @@ GURL FixupURLInternal(const std::string& text,
|
@@ -621,6 +623,8 @@ GURL FixupURLInternal(const std::string& text,
|
||||||
desired_tld, &url);
|
|
||||||
}
|
FixupHost(trimmed, parts.host, parts.scheme.is_valid(), desired_tld, &url);
|
||||||
if (chrome_url && !parts.host.is_valid()) {
|
if (chrome_url && !parts.host.is_valid())
|
||||||
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch("omnibox-autocomplete-filtering") ||
|
+ 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);
|
url.append(kChromeUIDefaultHost);
|
||||||
}
|
|
||||||
FixupPort(trimmed, parts.port, &url);
|
FixupPort(trimmed, parts.port, &url);
|
||||||
|
FixupPath(trimmed, parts.path, &url);
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-flag-for-omnibox-autocomplete-filtering.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-flag-for-omnibox-autocomplete-filtering.inc
|
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-flag-for-omnibox-autocomplete-filtering.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-flag-for-omnibox-autocomplete-filtering.inc
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
|
|||||||
@@ -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
|
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 ++++
|
.../common/network_switch_list.h | 4 ++++
|
||||||
.../spoof_checks/top_domains/BUILD.gn | 1 +
|
.../spoof_checks/top_domains/BUILD.gn | 1 +
|
||||||
...o-configure-maximum-connections-per-host.inc | 17 +++++++++++++++++
|
...o-configure-maximum-connections-per-host.inc | 17 +++++++++++++++++
|
||||||
net/socket/client_socket_pool_manager.cc | 16 ++++++++++++++++
|
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
|
||||||
4 files changed, 38 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
|
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
|
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
|
--- a/components/network_session_configurator/common/network_switch_list.h
|
||||||
+++ b/components/network_session_configurator/common/network_switch_list.h
|
+++ b/components/network_session_configurator/common/network_switch_list.h
|
||||||
@@ -27,12 +54,12 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
|
|||||||
+NETWORK_SWITCH(kMaxConnectionsPerHost, "max-connections-per-host")
|
+NETWORK_SWITCH(kMaxConnectionsPerHost, "max-connections-per-host")
|
||||||
+
|
+
|
||||||
// Ignores certificate-related errors.
|
// Ignores certificate-related errors.
|
||||||
// Note: In tests using net::EmbeddedTestServer with a custom hostname not
|
NETWORK_SWITCH(kIgnoreCertificateErrors, "ignore-certificate-errors")
|
||||||
// covered by the default test certs, using this switch is usually incorrect.
|
|
||||||
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
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
|
--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||||
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||||
@@ -90,6 +90,7 @@ executable("make_top_domain_list_variables") {
|
@@ -89,6 +89,7 @@ executable("make_top_domain_list_variables") {
|
||||||
"//base:i18n",
|
"//base:i18n",
|
||||||
"//components/url_formatter/spoof_checks/common_words:common",
|
"//components/url_formatter/spoof_checks/common_words:common",
|
||||||
"//third_party/icu",
|
"//third_party/icu",
|
||||||
@@ -48,8 +75,8 @@ new file mode 100644
|
|||||||
+#ifdef FEATURE_PARAM_SECTION
|
+#ifdef FEATURE_PARAM_SECTION
|
||||||
+
|
+
|
||||||
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
|
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
|
||||||
+ {/*features::kMaxConnectionsPerHostChoiceDefault*/ "6", "", ""},
|
+ {features::kMaxConnectionsPerHostChoiceDefault, "", ""},
|
||||||
+ {/*features::kMaxConnectionsPerHostChoice15*/ "15", switches::kMaxConnectionsPerHost, "15"},
|
+ {features::kMaxConnectionsPerHostChoice15, switches::kMaxConnectionsPerHost, "15"},
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
@@ -76,11 +103,12 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
|
|||||||
#include "net/ssl/ssl_config.h"
|
#include "net/ssl/ssl_config.h"
|
||||||
#include "url/gurl.h"
|
#include "url/gurl.h"
|
||||||
#include "url/scheme_host_port.h"
|
#include "url/scheme_host_port.h"
|
||||||
@@ -169,6 +173,18 @@ void ClientSocketPoolManager::set_socket_soft_cap_per_pool_for_test(
|
@@ -168,6 +172,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
|
||||||
// static
|
int ClientSocketPoolManager::max_sockets_per_group(
|
||||||
size_t ClientSocketPoolManager::max_sockets_per_group(
|
|
||||||
HttpNetworkSession::SocketPoolType pool_type) {
|
HttpNetworkSession::SocketPoolType pool_type) {
|
||||||
+ if (pool_type == net::HttpNetworkSession::SocketPoolType::kNormal) {
|
DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);
|
||||||
|
+
|
||||||
|
+ if (pool_type == HttpNetworkSession::NORMAL_SOCKET_POOL) {
|
||||||
+ int maxConnectionsPerHost = 0;
|
+ int maxConnectionsPerHost = 0;
|
||||||
+ auto value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost);
|
+ auto value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost);
|
||||||
+ if (!value.empty() && !base::StringToInt(value, &maxConnectionsPerHost)) {
|
+ if (!value.empty() && !base::StringToInt(value, &maxConnectionsPerHost)) {
|
||||||
@@ -92,7 +120,7 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
|
|||||||
+ // fallthrough for default value
|
+ // fallthrough for default value
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
return g_max_sockets_per_group[std::to_underlying(pool_type)];
|
return g_max_sockets_per_group[pool_type];
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -45,18 +45,18 @@ new file mode 100644
|
|||||||
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||||
--- a/net/BUILD.gn
|
--- a/net/BUILD.gn
|
||||||
+++ b/net/BUILD.gn
|
+++ b/net/BUILD.gn
|
||||||
@@ -1219,6 +1219,7 @@ component("net") {
|
@@ -1045,6 +1045,7 @@ component("net") {
|
||||||
":net_deps",
|
"//build:chromeos_buildflags",
|
||||||
"//components/network_time/time_tracker",
|
"//components/miracle_parameter/common",
|
||||||
"//components/unexportable_keys",
|
|
||||||
+ "//components/network_session_configurator/common",
|
|
||||||
"//net/http:transport_security_state_generated_files",
|
"//net/http:transport_security_state_generated_files",
|
||||||
"//third_party/simdutf",
|
+ "//components/network_session_configurator/common"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
public_deps = [
|
||||||
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
|
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
|
||||||
--- a/net/dns/host_resolver_manager.cc
|
--- a/net/dns/host_resolver_manager.cc
|
||||||
+++ b/net/dns/host_resolver_manager.cc
|
+++ b/net/dns/host_resolver_manager.cc
|
||||||
@@ -114,6 +114,7 @@
|
@@ -113,6 +113,7 @@
|
||||||
#include "net/log/net_log_event_type.h"
|
#include "net/log/net_log_event_type.h"
|
||||||
#include "net/log/net_log_source.h"
|
#include "net/log/net_log_source.h"
|
||||||
#include "net/log/net_log_source_type.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/log/net_log_with_source.h"
|
||||||
#include "net/socket/client_socket_factory.h"
|
#include "net/socket/client_socket_factory.h"
|
||||||
#include "net/url_request/url_request_context.h"
|
#include "net/url_request/url_request_context.h"
|
||||||
@@ -1505,6 +1506,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck(
|
@@ -1388,6 +1389,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck(
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,233 +3,14 @@ Date: Tue, 25 May 2021 19:46:14 +0200
|
|||||||
Subject: Add flag to disable external intent requests
|
Subject: Add flag to disable external intent requests
|
||||||
|
|
||||||
Adds a new flag that allows to control the switch with same name;
|
Adds a new flag that allows to control the switch with same name;
|
||||||
when flag is disabled no external intent will ever be allowed,
|
when flag is disabled no external intent will ever be allowed, for any URL.
|
||||||
for any URL except for the tel: schema.
|
|
||||||
This also reverts commit b710cefb53b558a8bcd884f6baf0229ba4225721 and
|
|
||||||
enables IntentBlockExternalFormRedirectsNoGesture.
|
|
||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../java/res/xml/privacy_preferences.xml | 7 +++-
|
...Add-flag-to-disable-external-intent-requests.inc | 13 +++++++++++++
|
||||||
.../customtabs/CustomTabDelegateFactory.java | 2 ++
|
1 file changed, 13 insertions(+)
|
||||||
.../ExternalNavigationDelegateImpl.java | 6 ++--
|
|
||||||
.../cromite/sAllowExternalIntentRequests.java | 33 +++++++++++++++++++
|
|
||||||
...g-to-disable-external-intent-requests.grdp | 9 +++++
|
|
||||||
.../android/external_intents_features.cc | 6 ++++
|
|
||||||
.../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(-)
|
|
||||||
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
|
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc
|
||||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc
|
|
||||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.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
|
|
||||||
@@ -65,7 +65,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" />
|
|
||||||
-
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="allow_external_intent_requests"
|
|
||||||
+ android:title="@string/allow_external_intent_requests_title"
|
|
||||||
+ android:summary="@string/allow_external_intent_requests_summary"
|
|
||||||
+ app:featureName="AllowExternalIntentRequests"
|
|
||||||
+ app:needRestart="false" />
|
|
||||||
<PreferenceCategory
|
|
||||||
android:key="security_section"
|
|
||||||
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;
|
|
||||||
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
|
|
||||||
import org.chromium.chrome.browser.flags.ActivityType;
|
|
||||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
||||||
+import org.chromium.chrome.browser.flags.cromite.sAllowExternalIntentRequests;
|
|
||||||
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 {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldDisableAllExternalIntents() {
|
|
||||||
+ if (!sAllowExternalIntentRequests.getInstance().isEnabled()) return true;
|
|
||||||
return mActivityType == ActivityType.AUTH_TAB
|
|
||||||
&& ChromeFeatureList.sCctAuthTabDisableAllExternalIntents.isEnabled();
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
@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());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAllowExternalIntentRequests.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAllowExternalIntentRequests.java
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAllowExternalIntentRequests.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 sAllowExternalIntentRequests {
|
|
||||||
+ private static final CachedFlag sInstance =
|
|
||||||
+ new CachedFlag(ChromeFeatureMap.getInstance(),
|
|
||||||
+ "AllowExternalIntentRequests", false);
|
|
||||||
+
|
|
||||||
+ private sAllowExternalIntentRequests() {}
|
|
||||||
+
|
|
||||||
+ public static CachedFlag getInstance() {
|
|
||||||
+ return sInstance;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-flag-to-disable-external-intent-requests.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-flag-to-disable-external-intent-requests.grdp
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-flag-to-disable-external-intent-requests.grdp
|
|
||||||
@@ -0,0 +1,9 @@
|
|
||||||
+<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
+<grit-part>
|
|
||||||
+ <message name="IDS_ALLOW_EXTERNAL_INTENT_REQUESTS_TITLE" desc="">
|
|
||||||
+ Allow forward URL requests to external intents
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_ALLOW_EXTERNAL_INTENT_REQUESTS_SUMMARY" desc="">
|
|
||||||
+ If disabled, URL requests will never allow redirection to an external intent, such as open application. Caution: since no verification is possible on the information, allows linkage between browser browsing and activity on the application.
|
|
||||||
+ </message>
|
|
||||||
+</grit-part>
|
|
||||||
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);
|
|
||||||
|
|
||||||
+CROMITE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture,
|
|
||||||
+ "IntentBlockExternalFormRedirectsNoGesture",
|
|
||||||
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
||||||
+
|
|
||||||
static int64_t JNI_ExternalIntentsFeatures_GetFeature(JNIEnv* env,
|
|
||||||
int32_t ordinal) {
|
|
||||||
+ if (ordinal == -1)
|
|
||||||
+ return reinterpret_cast<int64_t>(&kIntentBlockExternalFormRedirectsNoGesture);
|
|
||||||
return reinterpret_cast<int64_t>(
|
|
||||||
UNSAFE_TODO(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
|
|
||||||
@@ -9,6 +9,7 @@
|
|
||||||
|
|
||||||
namespace external_intents {
|
|
||||||
|
|
||||||
+BASE_DECLARE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture);
|
|
||||||
BASE_DECLARE_FEATURE(kExternalNavigationDebugLogs);
|
|
||||||
BASE_DECLARE_FEATURE(kBlockFrameRenavigations);
|
|
||||||
BASE_DECLARE_FEATURE(kNavigationCaptureRefactorAndroid);
|
|
||||||
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;
|
|
||||||
@JNINamespace("external_intents")
|
|
||||||
@NullMarked
|
|
||||||
public class ExternalIntentsFeatures {
|
|
||||||
+ 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 String EXTERNAL_NAVIGATION_DEBUG_LOGS_NAME = "ExternalNavigationDebugLogs";
|
|
||||||
public static final String NAVIGATION_CAPTURE_REFACTOR_ANDROID_NAME =
|
|
||||||
"NavigationCaptureRefactorAndroid";
|
|
||||||
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
|
|
||||||
@@ -1793,6 +1793,12 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /** Wrapper of check against the feature to support overriding for testing. */
|
|
||||||
+ @VisibleForTesting
|
|
||||||
+ boolean blockExternalFormRedirectsWithoutGesture() {
|
|
||||||
+ return ExternalIntentsFeatures.INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE.isEnabled();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
private OverrideUrlLoadingResult shouldOverrideUrlLoadingInternal(
|
|
||||||
ExternalNavigationParams params,
|
|
||||||
Intent targetIntent,
|
|
||||||
@@ -1880,6 +1886,21 @@ public class ExternalNavigationHandler implements ExternalNavigationHelper {
|
|
||||||
return OverrideUrlLoadingResult.forNoOverride();
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // http://crbug.com/839751: Require user gestures for form submits to external
|
|
||||||
+ // protocols.
|
|
||||||
+ // TODO(tedchoc): Turn this on by default once we verify this change does
|
|
||||||
+ // not break the world.
|
|
||||||
+ int pageTransitionCore = params.getPageTransition() & PageTransition.CORE_MASK;
|
|
||||||
+ boolean isFormSubmit = pageTransitionCore == PageTransition.FORM_SUBMIT;
|
|
||||||
+ boolean isRedirectFromFormSubmit = isFormSubmit && params.isRedirect();
|
|
||||||
+ if (isRedirectFromFormSubmit && !incomingIntentRedirect && !params.hasUserGesture()
|
|
||||||
+ && blockExternalFormRedirectsWithoutGesture()) {
|
|
||||||
+ if (debug()) {
|
|
||||||
+ Log.i(TAG, "Incoming form intent attempting to redirect without user gesture");
|
|
||||||
+ }
|
|
||||||
+ return OverrideUrlLoadingResult.forNoOverride();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (hasInternalScheme(params.getUrl(), targetIntent)
|
|
||||||
|| hasContentScheme(params.getUrl(), targetIntent)
|
|
||||||
|| hasFileSchemeInIntentURI(params.getUrl(), targetIntent)
|
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc
|
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-flag-to-disable-external-intent-requests.inc
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -248,32 +29,4 @@ new file mode 100644
|
|||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc b/cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/about_flags_cc/Revert-Delete-block-external-form-redirects.inc
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+#if BUILDFLAG(IS_ANDROID)
|
|
||||||
+
|
|
||||||
+#ifdef FLAG_SECTION
|
|
||||||
+
|
|
||||||
+ {"block-external-form-redirects-no-gesture",
|
|
||||||
+ "Block intents from form submissions without user gesture",
|
|
||||||
+ "Require a user gesture that triggered a form submission in order to "
|
|
||||||
+ "allow for redirecting to an external intent.",
|
|
||||||
+ kOsAndroid,
|
|
||||||
+ FEATURE_VALUE_TYPE(
|
|
||||||
+ external_intents::kIntentBlockExternalFormRedirectsNoGesture)},
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Add-flag-to-disable-external-intent-requests.inc
|
|
||||||
@@ -0,0 +1,3 @@
|
|
||||||
+CROMITE_FEATURE(kAllowExternalIntentRequests,
|
|
||||||
+ "AllowExternalIntentRequests",
|
|
||||||
+ base::FEATURE_DISABLED_BY_DEFAULT);
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -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
|
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
|
||||||
--- a/content/child/runtime_features.cc
|
--- a/content/child/runtime_features.cc
|
||||||
+++ b/content/child/runtime_features.cc
|
+++ b/content/child/runtime_features.cc
|
||||||
@@ -82,6 +82,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
|
@@ -103,6 +103,7 @@ void SetRuntimeFeatureDefaultsForPlatform(
|
||||||
if (command_line.HasSwitch(switches::kDisableMediaSessionAPI)) {
|
if (command_line.HasSwitch(switches::kDisableMediaSessionAPI)) {
|
||||||
WebRuntimeFeatures::EnableMediaSession(false);
|
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
|
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
|
--- a/third_party/blink/public/platform/web_runtime_features.h
|
||||||
+++ b/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 EnableFingerprintingCanvasImageDataNoise(bool);
|
||||||
static void EnableFluentScrollbars(bool);
|
static void EnableFluentScrollbars(bool);
|
||||||
static void EnableDesktopAndroidScrollbars(bool);
|
static void EnableFluentOverlayScrollbars(bool);
|
||||||
+ static void EnableVibration(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
|
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
|
--- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc
|
||||||
+++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
|
+++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
|
||||||
@@ -78,7 +78,7 @@ diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.c
|
|||||||
|
|
||||||
// Maximum number of entries in a vibration pattern.
|
// Maximum number of entries in a vibration pattern.
|
||||||
const unsigned kVibrationPatternLengthMax = 99;
|
const unsigned kVibrationPatternLengthMax = 99;
|
||||||
@@ -108,6 +109,8 @@ bool VibrationController::vibrate(Navigator& navigator,
|
@@ -109,6 +110,8 @@ bool VibrationController::vibrate(Navigator& navigator,
|
||||||
// reference to |window| or |navigator| was retained in another window.
|
// reference to |window| or |navigator| was retained in another window.
|
||||||
if (!navigator.DomWindow())
|
if (!navigator.DomWindow())
|
||||||
return false;
|
return false;
|
||||||
@@ -104,9 +104,9 @@ 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
|
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
|
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||||
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||||
@@ -1242,6 +1242,10 @@
|
@@ -660,6 +660,10 @@
|
||||||
{
|
status: {"Android": "stable"},
|
||||||
name: "CompositingDecisionAtAnimationPhaseBoundaries"
|
base_feature: "none",
|
||||||
},
|
},
|
||||||
+ {
|
+ {
|
||||||
+ name: "Vibration",
|
+ name: "Vibration",
|
||||||
|
|||||||
@@ -7,71 +7,48 @@ 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
|
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
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
build/config/compiler/BUILD.gn | 17 ++++++++++++++---
|
build/config/compiler/BUILD.gn | 10 +++++++++-
|
||||||
build_overrides/build.gni | 5 +++++
|
build_overrides/build.gni | 3 +++
|
||||||
2 files changed, 19 insertions(+), 3 deletions(-)
|
2 files changed, 12 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
||||||
--- a/build/config/compiler/BUILD.gn
|
--- a/build/config/compiler/BUILD.gn
|
||||||
+++ b/build/config/compiler/BUILD.gn
|
+++ b/build/config/compiler/BUILD.gn
|
||||||
@@ -681,7 +681,7 @@ config("compiler") {
|
@@ -1926,7 +1926,6 @@ config("default_warnings") {
|
||||||
# TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
|
# TODO(https://crbug.com/1490607): Fix and re-enable.
|
||||||
# It also causes segfault on Linux s390x:
|
"-Wno-thread-safety-reference-return",
|
||||||
# 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" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1886,7 +1886,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 ]
|
|
||||||
@@ -2283,7 +2283,9 @@ config("default_warnings") {
|
|
||||||
# TODO(crbug.com/432275627): Fix and re-enable.
|
|
||||||
"-Wno-uninitialized-const-pointer",
|
|
||||||
]
|
|
||||||
-
|
-
|
||||||
+ if (skip_clangd_unsupported_options) {
|
cflags_cc += [
|
||||||
+ cflags -= [ "-Wno-uninitialized-const-pointer" ]
|
# TODO(crbug.com/328490295): Fix and re-enable for C flags.
|
||||||
+ }
|
"-Wenum-compare-conditional",
|
||||||
cflags_cc += [
|
@@ -1938,6 +1937,15 @@ config("default_warnings") {
|
||||||
# TODO(crbug.com/328490295): Fix and re-enable for C flags.
|
"-Wno-c++11-narrowing-const-reference",
|
||||||
"-Wenum-compare-conditional",
|
]
|
||||||
@@ -2337,6 +2339,15 @@ config("default_warnings") {
|
}
|
||||||
ldflags += [ "-Wno-version-check" ]
|
+ if (skip_clangd_unsupported_options) {
|
||||||
|
+ cflags -= [
|
||||||
|
+ "-Wno-deprecated-builtins",
|
||||||
|
+ "-Wno-thread-safety-reference-return",
|
||||||
|
+ ]
|
||||||
|
+ cflags_cc -= [
|
||||||
|
+ "-Wno-c++11-narrowing-const-reference",
|
||||||
|
+ ]
|
||||||
|
+ }
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (skip_clangd_unsupported_options) {
|
# Some builders, such as Cronet, use a different version of Clang than
|
||||||
+ 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
|
|
||||||
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
|
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
|
||||||
--- a/build_overrides/build.gni
|
--- a/build_overrides/build.gni
|
||||||
+++ b/build_overrides/build.gni
|
+++ b/build_overrides/build.gni
|
||||||
@@ -54,6 +54,11 @@ declare_args() {
|
@@ -58,6 +58,9 @@ declare_args() {
|
||||||
gtest_enable_absl_printers = true
|
# to lack of toolchain support.
|
||||||
}
|
gtest_enable_absl_printers = !is_nacl
|
||||||
|
|
||||||
+declare_args() {
|
|
||||||
+ # Allows clangd builds by suppressing unsupported parameters
|
+ # Allows clangd builds by suppressing unsupported parameters
|
||||||
+ skip_clangd_unsupported_options = false
|
+ skip_clangd_unsupported_options = false
|
||||||
+}
|
|
||||||
+
|
+
|
||||||
# Features used by //base/trace_event.
|
# Allow projects that wish to stay on C++17 to override Chromium's default.
|
||||||
declare_args() {
|
# TODO(crbug.com/1402249): evaluate removing this end of 2023
|
||||||
# Use Perfetto's trace processor for converting protobuf-encoded traces to
|
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
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
chrome/android/java/res/values/ids.xml | 1 +
|
.../android/java/res/menu/custom_tabs_menu.xml | 3 +++
|
||||||
.../chrome/browser/ChromeTabbedActivity.java | 2 ++
|
chrome/android/java/res/menu/main_menu.xml | 3 +++
|
||||||
.../chrome/browser/app/ChromeActivity.java | 5 ++++
|
.../chrome/browser/ChromeTabbedActivity.java | 2 ++
|
||||||
.../AppMenuPropertiesDelegateImpl.java | 24 +++++++++++++++++++
|
.../chrome/browser/app/ChromeActivity.java | 5 +++++
|
||||||
.../CustomTabAppMenuPropertiesDelegate.java | 3 +++
|
.../appmenu/AppMenuPropertiesDelegateImpl.java | 18 ++++++++++++++++++
|
||||||
.../TabbedAppMenuPropertiesDelegate.java | 3 +++
|
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
|
||||||
.../strings/android_chrome_strings.grd | 4 ++++
|
.../android/strings/android_chrome_strings.grd | 4 ++++
|
||||||
7 files changed, 42 insertions(+)
|
7 files changed, 36 insertions(+)
|
||||||
|
|
||||||
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
|
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/values/ids.xml
|
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
|
||||||
+++ b/chrome/android/java/res/values/ids.xml
|
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
|
||||||
@@ -138,6 +138,7 @@ found in the LICENSE file.
|
@@ -62,6 +62,9 @@ found in the LICENSE file.
|
||||||
<item type="id" name="update_menu_id" />
|
<item android:id="@+id/add_to_homescreen_id"
|
||||||
<item type="id" name="new_tab_menu_id" />
|
android:title="@string/menu_add_to_homescreen"
|
||||||
<item type="id" name="new_incognito_tab_menu_id" />
|
android:orderInCategory="2" />
|
||||||
+ <item type="id" name="view_source_id" />
|
+ <item android:id="@+id/view_source_id"
|
||||||
<item type="id" name="add_to_group_menu_id" />
|
+ android:title="@string/view_source"
|
||||||
<item type="id" name="pin_tab_menu_id" />
|
+ android:orderInCategory="2" />
|
||||||
<item type="id" name="unpin_tab_menu_id" />
|
<item android:id="@+id/install_webapp_id"
|
||||||
|
android:title="@string/menu_install_webapp"
|
||||||
|
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
|
||||||
|
@@ -107,6 +107,9 @@ found in the LICENSE file.
|
||||||
|
<item android:id="@+id/add_to_homescreen_id"
|
||||||
|
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/install_webapp_id"
|
||||||
|
android:title="@string/menu_install_webapp"
|
||||||
|
android:icon="@drawable/ic_install_webapp" />
|
||||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
@@ -4225,6 +4225,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
@@ -2986,6 +2986,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||||
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
||||||
}
|
}
|
||||||
RecordUserAction.record("MobileMenuDownloadManager");
|
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()));
|
+ currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrl().getSpec()));
|
||||||
} else if (id == R.id.open_recently_closed_tab) {
|
} else if (id == R.id.open_recently_closed_tab) {
|
||||||
TabModel currentModel = mTabModelSelector.getCurrentModel();
|
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
@@ -2884,6 +2884,11 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
@@ -2722,6 +2722,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||||
return AppInstallMenuHandler.doOpenWebApk(this, currentTab);
|
return doOpenWebApk(currentTab);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (id == R.id.view_source_id) {
|
+ 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
|
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
|
--- 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
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||||
@@ -1076,6 +1076,30 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties
|
@@ -576,6 +576,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
|
||||||
return false;
|
isNativePage, isFileScheme, isContentScheme, isIncognito, url));
|
||||||
|
|
||||||
|
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isNativePage);
|
||||||
|
+ updateViewSourceMenuItem(menu, currentTab);
|
||||||
|
|
||||||
|
updateAutoDarkMenuItem(menu, currentTab, isNativePage);
|
||||||
|
|
||||||
|
@@ -1286,6 +1287,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ /**
|
+ /**
|
||||||
@@ -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 menu {@link Menu} for view source.
|
||||||
+ * @param currentTab Current tab being displayed.
|
+ * @param currentTab Current tab being displayed.
|
||||||
+ */
|
+ */
|
||||||
+ protected void buildAddViewSourceItem(
|
+ protected void updateViewSourceMenuItem(
|
||||||
+ MVCListAdapter.ModelList modelList,
|
+ Menu menu, Tab currentTab) {
|
||||||
+ @Nullable Tab currentTab) {
|
+ MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id);
|
||||||
+ boolean visible = false;
|
+ boolean visible = false;
|
||||||
+ if (currentTab != null) {
|
+ if (currentTab != null) {
|
||||||
+ String url = currentTab.getUrl().getSpec();
|
+ String url = currentTab.getUrl().getSpec();
|
||||||
+ visible = !url.isEmpty() && !url.startsWith("view-source:");
|
+ 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)));
|
|
||||||
+ }
|
+ }
|
||||||
|
+ 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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||||
@@ -412,6 +412,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
@@ -294,6 +294,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
||||||
modelList.add(buildOpenInAppItem());
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Add view source item
|
updateRequestDesktopSiteMenuItem(
|
||||||
+ buildAddViewSourceItem(modelList, currentTab);
|
menu, currentTab, requestDesktopSiteVisible, isNativePage);
|
||||||
+
|
+ updateViewSourceMenuItem(menu, currentTab);
|
||||||
// --- Request Desktop Site ---
|
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
|
||||||
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
|
|
||||||
@@ -438,6 +438,9 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm
|
|
||||||
modelList.add(buildOpenInAppItem());
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
+ // 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
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -355,6 +355,10 @@ CHAR_LIMIT guidelines:
|
@@ -319,6 +319,10 @@ CHAR_LIMIT guidelines:
|
||||||
Chrome finds
|
USB
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
+ <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
|
+ <message name="IDS_VIEW_SOURCE" desc="Title for the menu command to view the source of the current page. [CHAR-LIMIT=40]">
|
||||||
|
|||||||
@@ -4,23 +4,26 @@ Subject: Add option to disable snapshots
|
|||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
---
|
---
|
||||||
.../tab_management/TabGridViewBinder.java | 8 +++-
|
.../tab_management/TabGridViewBinder.java | 10 +++--
|
||||||
.../tasks/tab_management/TabProperties.java | 5 +++
|
.../tasks/tab_management/TabProperties.java | 5 +++
|
||||||
.../java/res/xml/privacy_preferences.xml | 5 +++
|
.../java/res/xml/privacy_preferences.xml | 5 +++
|
||||||
.../chrome/browser/app/ChromeActivity.java | 4 +-
|
.../chrome/browser/app/ChromeActivity.java | 3 +-
|
||||||
.../privacy/settings/PrivacySettings.java | 44 ++++++++++++++++++-
|
.../privacy/settings/PrivacySettings.java | 42 ++++++++++++++++++-
|
||||||
|
.../browser/tab_ui/TabContentManager.java | 6 ++-
|
||||||
.../strings/android_chrome_strings.grd | 8 ++++
|
.../strings/android_chrome_strings.grd | 8 ++++
|
||||||
6 files changed, 71 insertions(+), 3 deletions(-)
|
7 files changed, 72 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
|
||||||
@@ -536,7 +536,12 @@ class TabGridViewBinder {
|
@@ -330,9 +330,12 @@ class TabGridViewBinder {
|
||||||
TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize);
|
// Adjust bitmap to thumbnail.
|
||||||
} else {
|
TabUtils.setBitmapAndUpdateImageMatrix(thumbnail, result, thumbnailSize);
|
||||||
thumbnail.setThumbnailViewState(ThumbnailViewState.PLACEHOLDER_LOADED);
|
} else if (isMostRecentRequest) {
|
||||||
|
- // If the most recent request is a null bitmap ensure a placeholder is
|
||||||
|
- // visible.
|
||||||
- thumbnail.setImageDrawable(null);
|
- thumbnail.setImageDrawable(null);
|
||||||
+ TabFavicon tabFavicon = model.get(TabProperties.FAVICON);
|
+ TabListFaviconProvider.TabFavicon tabFavicon = model.get(TabProperties.FAVICON);
|
||||||
+ if (tabFavicon != null) {
|
+ if (tabFavicon != null) {
|
||||||
+ thumbnail.setScaleType(ImageView.ScaleType.CENTER);
|
+ thumbnail.setScaleType(ImageView.ScaleType.CENTER);
|
||||||
+ thumbnail.setImageDrawable(
|
+ thumbnail.setImageDrawable(
|
||||||
@@ -29,18 +32,18 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (sThumbnailFetcherForTesting != null) {
|
if (sThumbnailFetcherForTesting != null) {
|
||||||
@@ -574,6 +579,7 @@ class TabGridViewBinder {
|
@@ -371,6 +374,7 @@ class TabGridViewBinder {
|
||||||
*/
|
ViewLookupCachingFrameLayout rootView,
|
||||||
private static void setFavicon(
|
PropertyModel model,
|
||||||
ImageView faviconView, PropertyModel model, @Nullable TabFavicon favicon) {
|
TabListFaviconProvider.TabFavicon favicon) {
|
||||||
+ model.set(TabProperties.FAVICON, favicon);
|
+ model.set(TabProperties.FAVICON, favicon);
|
||||||
|
ImageView faviconView = (ImageView) rootView.fastFindViewById(R.id.tab_favicon);
|
||||||
if (favicon == null) {
|
if (favicon == null) {
|
||||||
faviconView.setImageDrawable(null);
|
faviconView.setImageDrawable(null);
|
||||||
return;
|
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java
|
||||||
@@ -131,6 +131,9 @@ public class TabProperties {
|
@@ -64,6 +64,9 @@ public class TabProperties {
|
||||||
public static final WritableBooleanPropertyKey FAVICON_FETCHED =
|
public static final WritableBooleanPropertyKey FAVICON_FETCHED =
|
||||||
new WritableBooleanPropertyKey();
|
new WritableBooleanPropertyKey();
|
||||||
|
|
||||||
@@ -50,26 +53,26 @@ 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. */
|
/** Property for lazily fetching favicons when required by an item in a UI. */
|
||||||
public static final WritableObjectPropertyKey<TabListFaviconProvider.TabFaviconFetcher>
|
public static final WritableObjectPropertyKey<TabListFaviconProvider.TabFaviconFetcher>
|
||||||
FAVICON_FETCHER = new WritableObjectPropertyKey<>();
|
FAVICON_FETCHER = new WritableObjectPropertyKey<>();
|
||||||
@@ -233,6 +236,7 @@ public class TabProperties {
|
@@ -165,6 +168,7 @@ public class TabProperties {
|
||||||
CARD_TYPE,
|
CARD_TYPE,
|
||||||
CONTENT_DESCRIPTION_TEXT_RESOLVER,
|
CONTENT_DESCRIPTION_STRING,
|
||||||
ACTION_BUTTON_DESCRIPTION_TEXT_RESOLVER,
|
CLOSE_BUTTON_DESCRIPTION_STRING,
|
||||||
+ FAVICON,
|
+ FAVICON,
|
||||||
|
SHOPPING_PERSISTED_TAB_DATA_FETCHER,
|
||||||
|
SHOULD_SHOW_PRICE_DROP_TOOLTIP,
|
||||||
QUICK_DELETE_ANIMATION_STATUS,
|
QUICK_DELETE_ANIMATION_STATUS,
|
||||||
TAB_GROUP_COLOR_VIEW_PROVIDER,
|
@@ -178,6 +182,7 @@ public class TabProperties {
|
||||||
TAB_GROUP_CARD_COLOR,
|
TAB_CLOSED_LISTENER,
|
||||||
@@ -274,6 +278,7 @@ public class TabProperties {
|
|
||||||
TAB_ACTION_BUTTON_DATA,
|
|
||||||
FAVICON_FETCHED,
|
FAVICON_FETCHED,
|
||||||
FAVICON_FETCHER,
|
FAVICON_FETCHER,
|
||||||
+ FAVICON,
|
+ FAVICON,
|
||||||
IS_SELECTED,
|
IS_SELECTED,
|
||||||
TITLE,
|
TITLE,
|
||||||
HAS_NOTIFICATION_BUBBLE
|
TABSTRIP_FAVICON_BACKGROUND_COLOR_ID,
|
||||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
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
|
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||||
+++ b/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.
|
@@ -65,6 +65,11 @@ found in the LICENSE file.
|
||||||
android:title="@string/open_external_links_incognito_title"
|
android:title="@string/open_external_links_incognito_title"
|
||||||
android:summary="@string/open_external_links_incognito_summary"
|
android:summary="@string/open_external_links_incognito_summary"
|
||||||
android:defaultValue="false" />
|
android:defaultValue="false" />
|
||||||
@@ -84,68 +87,57 @@ 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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||||
@@ -161,6 +161,7 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
@@ -144,6 +144,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.preferences.Pref;
|
||||||
import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory;
|
|
||||||
import org.chromium.chrome.browser.printing.TabPrinter;
|
import org.chromium.chrome.browser.printing.TabPrinter;
|
||||||
+import org.chromium.chrome.browser.privacy.settings.PrivacySettings;
|
+import org.chromium.chrome.browser.privacy.settings.PrivacySettings;
|
||||||
import org.chromium.chrome.browser.profiles.Profile;
|
import org.chromium.chrome.browser.profiles.Profile;
|
||||||
import org.chromium.chrome.browser.profiles.ProfileManager;
|
import org.chromium.chrome.browser.profiles.ProfileProvider;
|
||||||
import org.chromium.chrome.browser.profiles.ProfileManagerUtils;
|
import org.chromium.chrome.browser.readaloud.ReadAloudController;
|
||||||
@@ -699,7 +700,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
@@ -730,7 +731,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||||
new TabContentManager(
|
new TabContentManager(
|
||||||
this,
|
this,
|
||||||
mBrowserControlsManagerSupplier.get(),
|
mBrowserControlsManagerSupplier.get(),
|
||||||
- /* snapshotsEnabled= */ true,
|
- !SysUtils.isLowEndDevice(),
|
||||||
+ !TabUiFeatureUtilities.shouldUseListMode()
|
+ !ContextUtils.getAppSharedPreferences().getBoolean(PrivacySettings.PREF_TABGRID_USE_ICONS, false),
|
||||||
+ && !ContextUtils.getAppSharedPreferences().getBoolean(PrivacySettings.PREF_TABGRID_USE_ICONS, false),
|
tabModelSelector != null ? tabModelSelector::getTabById : null));
|
||||||
tabModelSelector != null ? tabModelSelector::getTabById : null,
|
|
||||||
TabWindowManagerSingleton.getInstance()));
|
|
||||||
|
|
||||||
|
getBrowserControlsManager()
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
||||||
@@ -31,6 +31,7 @@ import org.chromium.base.ContextUtils;
|
@@ -68,12 +68,25 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||||
import org.chromium.base.IntentUtils;
|
|
||||||
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;
|
|
||||||
@@ -107,13 +108,27 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
|
||||||
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
|
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
|
||||||
import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
|
import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate;
|
||||||
|
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
|
+import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
|
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
|
||||||
+import org.chromium.chrome.browser.lifetime.ApplicationLifetime;
|
+import org.chromium.chrome.browser.ApplicationLifetime;
|
||||||
+
|
+
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/** Fragment to keep track of the all the privacy related preferences. */
|
/** Fragment to keep track of the all the privacy related preferences. */
|
||||||
@NullMarked
|
|
||||||
public class PrivacySettings extends ChromeBaseSettingsFragment
|
public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
- implements Preference.OnPreferenceChangeListener {
|
- implements Preference.OnPreferenceChangeListener {
|
||||||
+ implements Preference.OnPreferenceChangeListener, INeedSnackbarManager {
|
+ implements Preference.OnPreferenceChangeListener, INeedSnackbarManager {
|
||||||
+
|
+ private SnackbarManager mSnackbarManager;
|
||||||
+ private Supplier<SnackbarManager> mSnackbarManagerSupplier;
|
|
||||||
+ private Snackbar mSnackbar;
|
+ private Snackbar mSnackbar;
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setSnackbarManagerSupplier(Supplier<SnackbarManager> manager) {
|
+ public void setSnackbarManager(SnackbarManager manager) {
|
||||||
+ mSnackbarManagerSupplier = manager;
|
+ mSnackbarManager = manager;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
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_PRELOAD_PAGES = "preload_pages";
|
||||||
private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
|
private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode";
|
||||||
@@ -206,6 +221,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -155,6 +168,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
if (shouldHideSandboxPref(privacySandboxBridge)) {
|
}
|
||||||
getPreferenceScreen().removePreference(sandboxPreference);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+ mSnackbar = Snackbar.make(getActivity().getString(R.string.ui_relaunch_notice),
|
+ mSnackbar = Snackbar.make(getActivity().getString(R.string.ui_relaunch_notice),
|
||||||
+ new SnackbarManager.SnackbarController() {
|
+ new SnackbarManager.SnackbarController() {
|
||||||
+ @Override
|
+ @Override
|
||||||
@@ -156,7 +148,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
+ ApplicationLifetime.terminate(true);
|
+ ApplicationLifetime.terminate(true);
|
||||||
+ }
|
+ }
|
||||||
+ }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN)
|
+ }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN)
|
||||||
+ .setDefaultLines(false)
|
+ .setSingleLine(false)
|
||||||
+ .setAction(getActivity().getString(R.string.relaunch),
|
+ .setAction(getActivity().getString(R.string.relaunch),
|
||||||
+ /*actionData*/null)
|
+ /*actionData*/null)
|
||||||
+ .setDuration(/*durationMs*/70000);
|
+ .setDuration(/*durationMs*/70000);
|
||||||
@@ -164,7 +156,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE);
|
Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE);
|
||||||
// Record the launch of PG from the S&P link-row entry point
|
// Record the launch of PG from the S&P link-row entry point
|
||||||
privacyGuidePreference.setOnPreferenceClickListener(
|
privacyGuidePreference.setOnPreferenceClickListener(
|
||||||
@@ -477,6 +507,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -345,6 +373,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
|
|
||||||
public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
|
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";
|
public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito";
|
||||||
@@ -172,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
@@ -523,6 +554,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -370,6 +399,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||||
sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
|
sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
|
||||||
sharedPreferencesEditor.apply();
|
sharedPreferencesEditor.apply();
|
||||||
@@ -180,13 +172,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||||
+ sharedPreferencesEditor.putBoolean(PREF_TABGRID_USE_ICONS, (boolean)newValue);
|
+ sharedPreferencesEditor.putBoolean(PREF_TABGRID_USE_ICONS, (boolean)newValue);
|
||||||
+ sharedPreferencesEditor.apply();
|
+ sharedPreferencesEditor.apply();
|
||||||
+ if (!mSnackbarManagerSupplier.get().isShowing()) {
|
+ if (!mSnackbarManager.isShowing()) {
|
||||||
+ mSnackbarManagerSupplier.get().showSnackbar(mSnackbar);
|
+ mSnackbarManager.showSnackbar(mSnackbar);
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -573,6 +611,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -418,6 +454,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
: R.string.text_off);
|
: R.string.text_off);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,10 +189,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
Preference refererPolicyPref = findPreference(PREF_REFERER_POLICY);
|
Preference refererPolicyPref = findPreference(PREF_REFERER_POLICY);
|
||||||
refererPolicyPref.setSummary(
|
refererPolicyPref.setSummary(
|
||||||
RefererSettingsFragment.getRefererSummaryString(getContext()));
|
RefererSettingsFragment.getRefererSummaryString(getContext()));
|
||||||
|
diff --git a/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java b/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java
|
||||||
|
--- a/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java
|
||||||
|
+++ b/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java
|
||||||
|
@@ -328,8 +328,10 @@ public class TabContentManager {
|
||||||
|
@NonNull Callback<Bitmap> callback,
|
||||||
|
boolean forceUpdate,
|
||||||
|
boolean writeBack) {
|
||||||
|
- if (!mSnapshotsEnabled) return;
|
||||||
|
-
|
||||||
|
+ if (!mSnapshotsEnabled) {
|
||||||
|
+ callback.onResult(null);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
// TODO(crbug/1444782): Remove forceUpdate and writeBack params once the following features
|
||||||
|
// launch:
|
||||||
|
// * GridTabSwitcherAndroidAnimations
|
||||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -6691,6 +6691,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
|
@@ -5436,6 +5436,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||||
Your <ph name="FQDN">%1$s<ex>www.amazon.com</ex></ph> timer ran out. It'll start again tomorrow.
|
Your <ph name="FQDN">%1$s<ex>www.amazon.com</ex></ph> timer ran out. It'll start again tomorrow.
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
@@ -209,7 +217,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||||||
+ Use only icons in the tab grid
|
+ Use only icons in the tab grid
|
||||||
+ </message>
|
+ </message>
|
||||||
+ <message name="IDS_TABGRID_USE_ICONS_SUMMARY" desc="Summary text for 'Use icons in the tab grid' settings-privacy option.">
|
+ <message name="IDS_TABGRID_USE_ICONS_SUMMARY" desc="Summary text for 'Use icons in the tab grid' settings-privacy option.">
|
||||||
+ Disable saving snapshots to disk (even for incognito sessions)
|
+ Disable the saving of snapshots to disk
|
||||||
+ </message>
|
+ </message>
|
||||||
+
|
+
|
||||||
<!-- Tab Group Tab Switcher strings -->
|
<!-- Tab Group Tab Switcher strings -->
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,12 +4,11 @@ Subject: Add option to not persist tabs across sessions
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../android/java/res/xml/privacy_preferences.xml | 5 +++++
|
.../android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||||
.../chrome/browser/ChromeTabbedActivity.java | 5 ++++-
|
.../chrome/browser/ChromeTabbedActivity.java | 5 ++++-
|
||||||
.../browser/privacy/settings/PrivacySettings.java | 15 ++++++++++++++-
|
.../privacy/settings/PrivacySettings.java | 16 +++++++++++++++-
|
||||||
.../browser/tab_group_sync/StartupHelper.java | 6 ++++++
|
.../android/strings/android_chrome_strings.grd | 6 ++++++
|
||||||
.../ui/android/strings/android_chrome_strings.grd | 6 ++++++
|
4 files changed, 30 insertions(+), 2 deletions(-)
|
||||||
5 files changed, 35 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
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
|
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||||
@@ -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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
+++ b/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;
|
@@ -41,6 +41,7 @@ import org.chromium.base.BuildInfo;
|
||||||
import org.chromium.base.Callback;
|
import org.chromium.base.Callback;
|
||||||
import org.chromium.base.CallbackController;
|
import org.chromium.base.CallbackController;
|
||||||
import org.chromium.base.CallbackUtils;
|
|
||||||
+import org.chromium.base.ContextUtils;
|
|
||||||
import org.chromium.base.CommandLine;
|
import org.chromium.base.CommandLine;
|
||||||
import org.chromium.base.DeviceInfo;
|
+import org.chromium.base.ContextUtils;
|
||||||
import org.chromium.base.IntentUtils;
|
import org.chromium.base.IntentUtils;
|
||||||
@@ -2309,8 +2310,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
import org.chromium.base.Log;
|
||||||
ActivityRestoreState.NUM_ENTRIES);
|
import org.chromium.base.MemoryPressureListener;
|
||||||
}
|
@@ -1614,8 +1615,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||||
|
boolean hadCipherData =
|
||||||
|
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
|
||||||
|
|
||||||
+ String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
+ String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
||||||
boolean noRestoreState =
|
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
|
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
|
--- 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
|
+++ 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.os.Build;
|
||||||
import android.content.Intent;
|
|
||||||
+import android.content.SharedPreferences;
|
+import android.content.SharedPreferences;
|
||||||
import android.graphics.drawable.Drawable;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
@@ -25,6 +26,7 @@ import androidx.preference.Preference;
|
import android.text.style.ForegroundColorSpan;
|
||||||
|
@@ -21,6 +22,8 @@ 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 org.chromium.base.metrics.RecordHistogram;
|
||||||
import org.chromium.base.metrics.RecordUserAction;
|
import org.chromium.base.metrics.RecordUserAction;
|
||||||
@@ -121,6 +123,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
+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;
|
||||||
|
@@ -88,6 +91,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
private final SharedPreferencesManager mSharedPreferencesManager =
|
private final SharedPreferencesManager mSharedPreferencesManager =
|
||||||
ChromeSharedPreferences.getInstance();
|
ChromeSharedPreferences.getInstance();
|
||||||
|
|
||||||
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
||||||
+
|
+
|
||||||
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
|
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
|
||||||
@VisibleForTesting static final String PREF_THIRD_PARTY_COOKIES = "third_party_cookies";
|
private static final String PREF_IP_PROTECTION = "ip_protection";
|
||||||
private static final String PREF_ADVANCED_PROTECTION_INFO = "advanced_protection_info";
|
@VisibleForTesting static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
|
||||||
@@ -418,7 +422,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -295,7 +300,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
String key = preference.getKey();
|
String key = preference.getKey();
|
||||||
@@ -89,8 +89,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
+ } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
|
+ } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
|
||||||
UserPrefs.get(getProfile())
|
UserPrefs.get(getProfile())
|
||||||
.setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
|
.setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
|
||||||
} else if (PREF_HTTPS_FIRST_MODE_LEGACY.equals(key)) {
|
} else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
|
||||||
@@ -478,6 +486,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
@@ -349,6 +358,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
||||||
getContext(), getProfile()));
|
getContext(), getProfile()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,43 +102,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
|
|||||||
Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
|
Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
|
||||||
if (secureDnsPref != null && secureDnsPref.isVisible()) {
|
if (secureDnsPref != null && secureDnsPref.isVisible()) {
|
||||||
secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext()));
|
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
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -3021,6 +3021,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
|
@@ -4918,6 +4918,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||||
<message name="IDS_ACCESSIBILITY_TAB_SWITCHER_TITLE" desc="Accessibility label of the current window when Grid Tab Switcher is shown.">
|
<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.">
|
||||||
All tabs
|
IMAGE
|
||||||
</message>
|
</message>
|
||||||
+ <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
|
+ <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
|
||||||
+ Close all open tabs on exit
|
+ Close all open tabs on exit
|
||||||
+ </message>
|
+ </message>
|
||||||
+ <message name="IDS_CLOSE_TABS_ON_EXIT_SUMMARY" desc="Summary text for 'Close tabs on exit' settings-privacy option.">
|
+ <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.
|
+ Don't persist tabs between browsing sessions
|
||||||
+ </message>
|
+ </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.">
|
<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.">
|
||||||
Loading…
|
LINK
|
||||||
</message>
|
</message>
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -6,10 +6,9 @@ And allow use about:blank as default homepage
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../tab_management/TabGridDialogMediator.java | 12 +++++++++++-
|
.../tab_management/TabGridDialogMediator.java | 9 ++++++++-
|
||||||
.../tasks/tab_management/TabGroupUiMediator.java | 8 +++++++-
|
.../tasks/tab_management/TabGroupUiMediator.java | 8 +++++++-
|
||||||
.../java/res/xml/homepage_preferences.xml | 5 +++++
|
.../java/res/xml/homepage_preferences.xml | 5 +++++
|
||||||
.../strip/TabGroupContextMenuCoordinator.java | 10 +++++++++-
|
|
||||||
.../chrome/browser/homepage/HomepageManager.java | 16 ++++++++++++++++
|
.../chrome/browser/homepage/HomepageManager.java | 16 ++++++++++++++++
|
||||||
.../homepage/settings/HomepageSettings.java | 12 ++++++++++++
|
.../homepage/settings/HomepageSettings.java | 12 ++++++++++++
|
||||||
.../chrome/browser/metrics/LaunchMetrics.java | 1 -
|
.../chrome/browser/metrics/LaunchMetrics.java | 1 -
|
||||||
@@ -19,70 +18,69 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
.../android/strings/android_chrome_strings.grd | 3 +++
|
.../android/strings/android_chrome_strings.grd | 3 +++
|
||||||
chrome/browser/ui/browser_ui_prefs.cc | 2 ++
|
chrome/browser/ui/browser_ui_prefs.cc | 2 ++
|
||||||
chrome/common/pref_names.h | 4 ++++
|
chrome/common/pref_names.h | 4 ++++
|
||||||
13 files changed, 79 insertions(+), 4 deletions(-)
|
12 files changed, 67 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
|
||||||
@@ -102,6 +102,7 @@ import org.chromium.components.collaboration.messaging.PersistentNotificationTyp
|
@@ -26,6 +26,7 @@ import org.chromium.base.task.TaskTraits;
|
||||||
import org.chromium.components.data_sharing.DataSharingService;
|
import org.chromium.chrome.browser.data_sharing.DataSharingNotificationManager;
|
||||||
import org.chromium.components.data_sharing.GroupMember;
|
import org.chromium.chrome.browser.data_sharing.SharedImageTilesCoordinator;
|
||||||
import org.chromium.components.data_sharing.member_role.MemberRole;
|
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||||
+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;
|
|
||||||
@@ -122,6 +123,9 @@ import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
+import org.chromium.chrome.browser.homepage.HomepageManager;
|
+import org.chromium.chrome.browser.homepage.HomepageManager;
|
||||||
|
import org.chromium.chrome.browser.tab.Tab;
|
||||||
|
import org.chromium.chrome.browser.tab.TabCreationState;
|
||||||
|
import org.chromium.chrome.browser.tab.TabLaunchType;
|
||||||
|
@@ -58,6 +59,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate;
|
||||||
|
import org.chromium.ui.base.DeviceFormFactor;
|
||||||
|
import org.chromium.ui.modelutil.PropertyModel;
|
||||||
|
import org.chromium.ui.text.EmptyTextWatcher;
|
||||||
+import org.chromium.url.GURL;
|
+import org.chromium.url.GURL;
|
||||||
+
|
|
||||||
/**
|
|
||||||
* A mediator for the TabGridDialog component, responsible for communicating with the components'
|
|
||||||
* coordinator as well as managing the business logic for dialog show/hide.
|
|
||||||
@@ -1017,9 +1021,15 @@ public class TabGridDialogMediator
|
|
||||||
UrlConstantResolver urlConstantResolver =
|
|
||||||
UrlConstantResolverFactory.getForProfile(profile);
|
|
||||||
|
|
||||||
+ String url = urlConstantResolver.getNtpUrl();
|
import java.util.ArrayList;
|
||||||
+ if (UrlConstants.NTP_URL.equals(url)
|
import java.util.List;
|
||||||
+ && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
|
@@ -697,11 +699,16 @@ public class TabGridDialogMediator
|
||||||
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(profile.isIncognitoBranded());
|
|
||||||
|
assert relatedTabs.size() > 0;
|
||||||
|
|
||||||
|
+ String url = UrlConstants.NTP_URL;
|
||||||
|
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
|
||||||
|
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
|
||||||
+ url = gurl != null ? gurl.getSpec() : url;
|
+ url = gurl != null ? gurl.getSpec() : url;
|
||||||
+ }
|
+ }
|
||||||
TabGroupUtils.openUrlInGroup(
|
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
|
||||||
assumeNonNull(mCurrentTabGroupModelFilterSupplier.get()),
|
mTabCreatorManager
|
||||||
- urlConstantResolver.getNtpUrl(),
|
.getTabCreator(currentTab.isIncognito())
|
||||||
+ url,
|
.createNewTab(
|
||||||
tabsInGroup.get(tabsInGroup.size() - 1).getId(),
|
- new LoadUrlParams(UrlConstants.NTP_URL),
|
||||||
TabLaunchType.FROM_TAB_GROUP_UI);
|
+ new LoadUrlParams(url),
|
||||||
|
TabLaunchType.FROM_TAB_GROUP_UI,
|
||||||
|
parentTabToAttach);
|
||||||
RecordUserAction.record("MobileNewTabOpened." + mComponentName);
|
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
|
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
|
--- 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
|
+++ 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;
|
@@ -18,6 +18,7 @@ import org.chromium.base.supplier.LazyOneshotSupplier;
|
||||||
import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesConfig;
|
import org.chromium.base.supplier.ObservableSupplier;
|
||||||
import org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesCoordinator;
|
import org.chromium.base.supplier.ObservableSupplierImpl;
|
||||||
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
|
import org.chromium.base.supplier.OneshotSupplier;
|
||||||
+import org.chromium.chrome.browser.homepage.HomepageManager;
|
+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.LayoutStateProvider.LayoutStateObserver;
|
||||||
import org.chromium.chrome.browser.layouts.LayoutType;
|
import org.chromium.chrome.browser.layouts.LayoutType;
|
||||||
import org.chromium.chrome.browser.profiles.Profile;
|
@@ -375,10 +376,15 @@ public class TabGroupUiMediator implements BackPressHandler {
|
||||||
@@ -426,10 +427,15 @@ public class TabGroupUiMediator implements BackPressHandler {
|
assert relatedTabs.size() > 0;
|
||||||
UrlConstantResolverFactory.getForProfile(currentTabProfile);
|
|
||||||
|
|
||||||
Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
|
parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
|
||||||
+ String url = urlConstantResolver.getNtpUrl();
|
+ String url = UrlConstants.NTP_URL;
|
||||||
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
|
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
|
||||||
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(currentTab.isIncognito());
|
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
|
||||||
+ url = gurl != null ? gurl.getSpec() : url;
|
+ url = gurl != null ? gurl.getSpec() : url;
|
||||||
+ }
|
+ }
|
||||||
mTabCreatorManager
|
mTabCreatorManager
|
||||||
.getTabCreator(currentTab.isIncognito())
|
.getTabCreator(currentTab.isIncognito())
|
||||||
.createNewTab(
|
.createNewTab(
|
||||||
- new LoadUrlParams(urlConstantResolver.getNtpUrl()),
|
- new LoadUrlParams(UrlConstants.NTP_URL),
|
||||||
+ new LoadUrlParams(url),
|
+ new LoadUrlParams(url),
|
||||||
TabLaunchType.FROM_TAB_GROUP_UI,
|
TabLaunchType.FROM_TAB_GROUP_UI,
|
||||||
parentTabToAttach);
|
parentTabToAttach);
|
||||||
@@ -102,39 +100,10 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro
|
|||||||
<org.chromium.chrome.browser.homepage.settings.RadioButtonGroupHomepagePreference
|
<org.chromium.chrome.browser.homepage.settings.RadioButtonGroupHomepagePreference
|
||||||
android:key="homepage_radio_group"
|
android:key="homepage_radio_group"
|
||||||
android:selectable="false"
|
android:selectable="false"
|
||||||
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
|
|
||||||
@@ -96,6 +96,9 @@ import java.util.List;
|
|
||||||
import java.util.function.BiConsumer;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
+import org.chromium.chrome.browser.homepage.HomepageManager;
|
|
||||||
+import org.chromium.url.GURL;
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* 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.
|
|
||||||
@@ -249,9 +252,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());
|
|
||||||
+ url = gurl != null ? gurl.getSpec() : url;
|
|
||||||
+ }
|
|
||||||
TabGroupUtils.openUrlInGroup(
|
|
||||||
tabGroupModelFilter,
|
|
||||||
- resolver.getNtpUrl(),
|
|
||||||
+ url,
|
|
||||||
tabId,
|
|
||||||
TabLaunchType.FROM_TAB_GROUP_UI);
|
|
||||||
RecordUserAction.record("MobileToolbarTabGroupMenu.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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
|
||||||
+++ b/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
|
@@ -233,6 +233,22 @@ public class HomepageManager
|
||||||
notifyHomepageUpdated();
|
notifyHomepageUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,15 +129,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
|
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
|
--- 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
|
+++ 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;
|
@@ -22,6 +22,7 @@ import org.chromium.components.browser_ui.settings.SettingsUtils;
|
||||||
import org.chromium.components.embedder_support.util.UrlUtilities;
|
import org.chromium.components.embedder_support.util.UrlUtilities;
|
||||||
import org.chromium.components.url_formatter.UrlFormatter;
|
import org.chromium.components.url_formatter.UrlFormatter;
|
||||||
import org.chromium.url.GURL;
|
import org.chromium.url.GURL;
|
||||||
+import org.chromium.components.embedder_support.util.UrlConstants;
|
+import org.chromium.components.embedder_support.util.UrlConstants;
|
||||||
|
|
||||||
/** Fragment that allows the user to configure homepage related preferences. */
|
/** Fragment that allows the user to configure homepage related preferences. */
|
||||||
@NullMarked
|
public class HomepageSettings extends ChromeBaseSettingsFragment {
|
||||||
@@ -37,6 +38,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
|
@@ -30,6 +31,8 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group";
|
public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group";
|
||||||
|
|
||||||
@@ -176,9 +145,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin
|
|||||||
+
|
+
|
||||||
private HomepageManager mHomepageManager;
|
private HomepageManager mHomepageManager;
|
||||||
private RadioButtonGroupHomepagePreference mRadioButtons;
|
private RadioButtonGroupHomepagePreference mRadioButtons;
|
||||||
private final SettableMonotonicObservableSupplier<String> mPageTitle =
|
|
||||||
@@ -105,6 +108,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
|
@@ -64,6 +67,15 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
|
||||||
mRadioButtons.setOnHomepagePreferenceChangeListener(this::onRadioButtonGroupChanged);
|
});
|
||||||
mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup());
|
mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup());
|
||||||
|
|
||||||
+ ChromeSwitchPreference mNTPIsHomepageSwitch =
|
+ ChromeSwitchPreference mNTPIsHomepageSwitch =
|
||||||
@@ -196,7 +165,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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java
|
||||||
+++ b/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 {
|
@@ -111,7 +111,6 @@ public class LaunchMetrics {
|
||||||
public static void recordHomePageLaunchMetrics(
|
public static void recordHomePageLaunchMetrics(
|
||||||
boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) {
|
boolean showHomeButton, boolean homepageIsNtp, GURL homepageGurl) {
|
||||||
if (homepageGurl.isEmpty()) {
|
if (homepageGurl.isEmpty()) {
|
||||||
@@ -207,21 +176,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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||||
@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFact
|
@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask;
|
||||||
import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask;
|
|
||||||
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
|
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
|
||||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
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.homepage.HomepageManager;
|
||||||
|
import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin;
|
||||||
|
import org.chromium.chrome.browser.ntp.NewTabPageUtils;
|
||||||
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge;
|
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge;
|
||||||
import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState;
|
@@ -485,6 +486,13 @@ public class ChromeTabCreator extends TabCreator {
|
||||||
import org.chromium.chrome.browser.profiles.Profile;
|
* @return the created tab.
|
||||||
@@ -575,6 +576,13 @@ public class ChromeTabCreator implements TabCreator, NeedsTabModel, NeedsTabMode
|
|
||||||
*/
|
*/
|
||||||
public @Nullable Tab launchUrl(
|
public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) {
|
||||||
String url, @TabLaunchType int type, @Nullable Intent intent, long intentTimestamp) {
|
|
||||||
+ if (!mIncognito && url.equals(UrlConstants.NTP_URL)) {
|
+ if (!mIncognito && url.equals(UrlConstants.NTP_URL)) {
|
||||||
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
|
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
|
||||||
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl(mIncognito);
|
+ GURL gurl = HomepageManager.getInstance().getHomepageGurl();
|
||||||
+ url = gurl != null ? gurl.getSpec() : url;
|
+ url = gurl != null ? gurl.getSpec() : url;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
@@ -232,7 +201,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
|
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
|
--- 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
|
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
|
||||||
@@ -426,6 +426,7 @@ public final class ChromePreferenceKeys {
|
@@ -277,6 +277,7 @@ public final class ChromePreferenceKeys {
|
||||||
public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP";
|
public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP";
|
||||||
public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
|
public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
|
||||||
|
|
||||||
@@ -243,7 +212,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
|
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
|
--- 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
|
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
|
||||||
@@ -60,6 +60,7 @@ public class LegacyChromePreferenceKeys {
|
@@ -62,6 +62,7 @@ public class LegacyChromePreferenceKeys {
|
||||||
ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
|
ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO,
|
||||||
ChromePreferenceKeys.HOMEPAGE_ENABLED,
|
ChromePreferenceKeys.HOMEPAGE_ENABLED,
|
||||||
ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI,
|
ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI,
|
||||||
@@ -254,7 +223,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
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -1465,6 +1465,9 @@ Your Google account may have other forms of browsing history like searches and a
|
@@ -1377,6 +1377,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.">
|
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
|
||||||
Last hour
|
Last hour
|
||||||
</message>
|
</message>
|
||||||
@@ -267,27 +236,27 @@ 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
|
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
|
--- a/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
||||||
@@ -128,6 +128,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
@@ -85,6 +85,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||||
pref_registration_flags);
|
registry->RegisterBooleanPref(
|
||||||
registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false,
|
prefs::kShowForwardButton, true,
|
||||||
pref_registration_flags);
|
GetHomeAndForwardButtonAndHomePageIsNewTabPageFlags());
|
||||||
+ registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
|
+ registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
|
||||||
+ PrefRegistry::NO_REGISTRATION_FLAGS);
|
+ PrefRegistry::NO_REGISTRATION_FLAGS);
|
||||||
|
|
||||||
registry->RegisterInt64Pref(prefs::kDefaultBrowserInfobarLastDeclined, 0);
|
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
|
||||||
registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true);
|
registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true);
|
||||||
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||||
--- a/chrome/common/pref_names.h
|
--- a/chrome/common/pref_names.h
|
||||||
+++ b/chrome/common/pref_names.h
|
+++ b/chrome/common/pref_names.h
|
||||||
@@ -868,6 +868,10 @@ inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] =
|
@@ -1280,6 +1280,10 @@ inline constexpr char kShowHomeButton[] = "browser.show_home_button";
|
||||||
// by enterprise policy.
|
// toolbar.
|
||||||
inline constexpr char kGeminiSettings[] = "browser.gemini_settings";
|
inline constexpr char kShowForwardButton[] = "browser.show_forward_button";
|
||||||
|
|
||||||
+// A boolean specifying whether opening a new tab should open the Home page
|
+// A boolean specifying whether opening a new tab should open the Home page
|
||||||
+// instead of the New Tab page.
|
+// instead of the New Tab page.
|
||||||
+inline constexpr char kNewTabPageIsHomePage[] = "newtabpage_is_homepage";
|
+inline constexpr char kNewTabPageIsHomePage[] = "newtabpage_is_homepage";
|
||||||
+
|
+
|
||||||
// Comma separated list of domain names (e.g. "google.com,school.edu").
|
// Boolean pref to define the default setting for "block offensive words".
|
||||||
// When this pref is set, the user will be able to access Google Apps
|
// The old key value is kept to avoid unnecessary migration code.
|
||||||
// only using an account that belongs to one of the domains from this pref.
|
inline constexpr char kSpeechRecognitionFilterProfanities[] =
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -9,21 +9,12 @@ Add DuckDuckGo Lite
|
|||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
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/default_favicon.png | Bin 0 -> 903 bytes
|
||||||
components/search_engines/BUILD.gn | 3 ++
|
...search_engine_choice_scaled_resources.grdp | 1 +
|
||||||
components/search_engines/cromite/BUILD.gn | 12 ++++++
|
.../search_engines/prepopulated_engines.json | 31 ++++++++++++++++++
|
||||||
.../cromite/cromite_prepopulated_engines.json | 37 ++++++++++++++++++
|
.../search_engine_countries-inc.cc | 3 ++
|
||||||
.../search_engine_choice_utils.cc | 9 +----
|
|
||||||
.../search_engines/search_engine_type.h | 5 +++
|
.../search_engines/search_engine_type.h | 5 +++
|
||||||
.../template_url_prepopulate_data.cc | 21 +++++++++-
|
5 files changed, 40 insertions(+)
|
||||||
.../template_url_prepopulate_data.h | 9 -----
|
|
||||||
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(-)
|
|
||||||
create mode 100644 components/resources/default_100_percent/search_engine_choice/default_favicon.png
|
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
|
|
||||||
|
|
||||||
diff --git a/components/resources/default_100_percent/search_engine_choice/default_favicon.png b/components/resources/default_100_percent/search_engine_choice/default_favicon.png
|
diff --git a/components/resources/default_100_percent/search_engine_choice/default_favicon.png b/components/resources/default_100_percent/search_engine_choice/default_favicon.png
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
@@ -52,124 +43,96 @@ d#;<tA>kFnu^?NN9uE_uZ002ovPDHLkV1m60sc!%P
|
|||||||
literal 0
|
literal 0
|
||||||
HcmV?d00001
|
HcmV?d00001
|
||||||
|
|
||||||
diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn
|
diff --git a/components/resources/search_engine_choice_scaled_resources.grdp b/components/resources/search_engine_choice_scaled_resources.grdp
|
||||||
--- a/components/search_engines/BUILD.gn
|
--- a/components/resources/search_engine_choice_scaled_resources.grdp
|
||||||
+++ b/components/search_engines/BUILD.gn
|
+++ b/components/resources/search_engine_choice_scaled_resources.grdp
|
||||||
@@ -74,6 +74,7 @@ static_library("search_engines") {
|
@@ -5,6 +5,7 @@
|
||||||
"//third_party/metrics_proto",
|
<if expr="_google_chrome">
|
||||||
"//third_party/omnibox_proto",
|
<structure type="chrome_scaled_image" name="IDR_GOOGLE_COM_PNG" file="google_chrome/google_search_logo.png" />
|
||||||
"//third_party/search_engines_data:prepopulated_engines",
|
</if>
|
||||||
+ "cromite:cromite_prepopulated_engines",
|
+ <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/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||||
|
--- a/components/search_engines/prepopulated_engines.json
|
||||||
|
+++ b/components/search_engines/prepopulated_engines.json
|
||||||
|
@@ -113,6 +113,16 @@
|
||||||
|
"id": 92
|
||||||
|
},
|
||||||
|
|
||||||
deps = [
|
+ "duckduckgo_light": {
|
||||||
@@ -165,6 +166,7 @@ source_set("search_engine_utils") {
|
+ "name": "DuckDuckGo Light",
|
||||||
"//components/regional_capabilities",
|
+ "keyword": "duckduckgo.com/lite",
|
||||||
"//components/regional_capabilities:switches",
|
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
|
||||||
"//third_party/search_engines_data:prepopulated_engines",
|
+ "search_url": "https://duckduckgo.com/lite/?q={searchTerms}",
|
||||||
+ "cromite:cromite_prepopulated_engines",
|
+ "suggest_url": "https://duckduckgo.com/ac/?q={searchTerms}&type=list",
|
||||||
]
|
+ "type": "SEARCH_ENGINE_DUCKDUCKGOLIGHT",
|
||||||
|
+ "id": 12
|
||||||
deps = [ "//url" ]
|
|
||||||
@@ -264,6 +266,7 @@ source_set("unit_tests") {
|
|
||||||
"//testing/gtest",
|
|
||||||
"//third_party/search_engines_data:prepopulated_engines",
|
|
||||||
"//third_party/search_engines_data:regional_settings",
|
|
||||||
+ "cromite:cromite_prepopulated_engines",
|
|
||||||
"//ui/base",
|
|
||||||
"//url",
|
|
||||||
]
|
|
||||||
diff --git a/components/search_engines/cromite/BUILD.gn b/components/search_engines/cromite/BUILD.gn
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/components/search_engines/cromite/BUILD.gn
|
|
||||||
@@ -0,0 +1,12 @@
|
|
||||||
+import("//tools/json_to_struct/json_to_struct.gni")
|
|
||||||
+
|
|
||||||
+json_to_struct("cromite_prepopulated_engines") {
|
|
||||||
+ visibility = [ "//components/search_engines:*" ]
|
|
||||||
+
|
|
||||||
+ source = "cromite_prepopulated_engines.json"
|
|
||||||
+ schema_file = "//third_party/search_engines_data/prepopulated_engines_schema.json"
|
|
||||||
+ namespace = "TemplateURLPrepopulateData"
|
|
||||||
+ excludetype = true
|
|
||||||
+
|
|
||||||
+ deps = [ "//base" ]
|
|
||||||
+}
|
|
||||||
diff --git a/components/search_engines/cromite/cromite_prepopulated_engines.json b/components/search_engines/cromite/cromite_prepopulated_engines.json
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/components/search_engines/cromite/cromite_prepopulated_engines.json
|
|
||||||
@@ -0,0 +1,37 @@
|
|
||||||
+{
|
|
||||||
+ "additionals_includes": {
|
|
||||||
+ "third_party/search_engines_data/resources/definitions/prepopulated_engines.h": ""
|
|
||||||
+ },
|
+ },
|
||||||
+ "elements": {
|
|
||||||
+ "duckduckgo_light": {
|
|
||||||
+ "name": "DuckDuckGo Light",
|
|
||||||
+ "keyword": "duckduckgo.com/lite",
|
|
||||||
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
|
|
||||||
+ "search_url": "https://duckduckgo.com/lite/?q={searchTerms}",
|
|
||||||
+ "suggest_url": "https://duckduckgo.com/ac/?q={searchTerms}&type=list",
|
|
||||||
+ "type": "SEARCH_ENGINE_DUCKDUCKGOLIGHT",
|
|
||||||
+ "id": 12
|
|
||||||
+ },
|
|
||||||
+
|
+
|
||||||
+ "googleen": {
|
"ecosia": {
|
||||||
+ "name": "Google in English",
|
"name": "Ecosia",
|
||||||
+ "keyword": "googleen",
|
"keyword": "ecosia.org",
|
||||||
+ "favicon_url": "https://www.google.com/favicon.ico",
|
@@ -174,6 +184,27 @@
|
||||||
+ "search_url": "{google:baseURL}search?q={searchTerms}&ie={inputEncoding}&hl=en",
|
"id": 111
|
||||||
+ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&q={searchTerms}&hl=en",
|
},
|
||||||
+ "image_url": "{google:baseURL}searchbyimage/upload?hl=en",
|
|
||||||
+ "new_tab_url": "{google:baseURL}_/chrome/newtab?hl=en&ie={inputEncoding}",
|
|
||||||
+ "contextual_search_url": "{google:baseURL}_/contextualsearch?{google:contextualSearchVersion}{google:contextualSearchContextData}&hl=en",
|
|
||||||
+ "image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
|
|
||||||
+ "alternate_urls": [
|
|
||||||
+ "{google:baseURL}?hl=en#q={searchTerms}",
|
|
||||||
+ "{google:baseURL}search?hl=en#q={searchTerms}",
|
|
||||||
+ "{google:baseURL}webhp?hl=en#q={searchTerms}",
|
|
||||||
+ "{google:baseURL}s?hl=en#q={searchTerms}",
|
|
||||||
+ "{google:baseURL}s?hl=en&q={searchTerms}"
|
|
||||||
+ ],
|
|
||||||
+ "type": "SEARCH_ENGINE_GOOGLE_EN",
|
|
||||||
+ "id": 13
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
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
|
|
||||||
@@ -211,14 +211,7 @@ void RecordChoiceScreenDefaultSearchProviderType(
|
|
||||||
}
|
|
||||||
|
|
||||||
void RecordChoiceScreenSelectedIndex(int selected_engine_index) {
|
+ "googleen": {
|
||||||
- base::UmaHistogramExactLinear(
|
+ "name": "Google in English",
|
||||||
- kSearchEngineChoiceScreenSelectedEngineIndexHistogram,
|
+ "keyword": "googleen",
|
||||||
- selected_engine_index,
|
+ "favicon_url": "https://www.google.com/favicon.ico",
|
||||||
- TemplateURLPrepopulateData::kMaxEeaPrepopulatedEngines);
|
+ "search_url": "{google:baseURL}search?q={searchTerms}&ie={inputEncoding}&hl=en",
|
||||||
- base::PumaHistogramExactLinear(
|
+ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&q={searchTerms}&hl=en",
|
||||||
- base::PumaType::kRc, kPumaSearchChoiceScreenSelectedEngineIndexHistogram,
|
+ "image_url": "{google:baseURL}searchbyimage/upload?hl=en",
|
||||||
- selected_engine_index,
|
+ "new_tab_url": "{google:baseURL}_/chrome/newtab?hl=en&ie={inputEncoding}",
|
||||||
- TemplateURLPrepopulateData::kMaxEeaPrepopulatedEngines);
|
+ "contextual_search_url": "{google:baseURL}_/contextualsearch?{google:contextualSearchVersion}{google:contextualSearchContextData}&hl=en",
|
||||||
+ // do nothing in Cromite
|
+ "image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
|
||||||
}
|
+ "alternate_urls": [
|
||||||
|
+ "{google:baseURL}?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}search?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}webhp?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}s?hl=en#q={searchTerms}",
|
||||||
|
+ "{google:baseURL}s?hl=en&q={searchTerms}"
|
||||||
|
+ ],
|
||||||
|
+ "type": "SEARCH_ENGINE_GOOGLE_EN",
|
||||||
|
+ "id": 13
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
"mail_ru": {
|
||||||
|
"name": "@MAIL.RU",
|
||||||
|
"keyword": "mail.ru",
|
||||||
|
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
|
||||||
|
@@ -33,6 +33,7 @@ struct EngineAndTier {
|
||||||
|
|
||||||
void RecordChoiceScreenPositionsCountryMismatch(bool has_mismatch) {
|
// Default (for countries with no better engine set)
|
||||||
|
constexpr EngineAndTier engines_default[] = {
|
||||||
|
+ {SearchEngineTier::kTopEngines, &googleen},
|
||||||
|
{SearchEngineTier::kTopEngines, &google},
|
||||||
|
{SearchEngineTier::kTopEngines, &bing},
|
||||||
|
{SearchEngineTier::kTopEngines, &yahoo},
|
||||||
|
@@ -1449,5 +1450,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
|
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
|
--- a/components/search_engines/search_engine_type.h
|
||||||
+++ b/components/search_engines/search_engine_type.h
|
+++ b/components/search_engines/search_engine_type.h
|
||||||
@@ -99,11 +99,16 @@ enum SearchEngineType {
|
@@ -91,10 +91,15 @@ enum SearchEngineType {
|
||||||
SEARCH_ENGINE_KAGI = 79,
|
SEARCH_ENGINE_YOU = 72,
|
||||||
SEARCH_ENGINE_STARTER_PACK_AI_MODE = 80,
|
SEARCH_ENGINE_STARTER_PACK_ASK_GOOGLE = 73,
|
||||||
SEARCH_ENGINE_YAHOO_JP = 81,
|
SEARCH_ENGINE_LILO = 74,
|
||||||
+ SEARCH_ENGINE_GOOGLE_EN = 82,
|
+ SEARCH_ENGINE_GOOGLE_EN = 75,
|
||||||
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 83,
|
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 76,
|
||||||
|
|
||||||
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
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),
|
+static_assert(SEARCH_ENGINE_DUCKDUCKGOLIGHT == (SEARCH_ENGINE_MAX - 1),
|
||||||
+ "Please check this patch");
|
+ "Please check this patch");
|
||||||
@@ -177,246 +140,4 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
|
|||||||
// Enum to record the type of search engine a user used in keyword mode. This
|
// Enum to record the type of search engine a user used in keyword mode. This
|
||||||
// should be kept aligned with the `OmniboxBuiltinEngineType` enum in enums.xml.
|
// should be kept aligned with the `OmniboxBuiltinEngineType` enum in enums.xml.
|
||||||
// Entries should not be renumbered and numeric values should never be reused.
|
// Entries should not be renumbered and numeric values should never be reused.
|
||||||
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
|
|
||||||
@@ -29,6 +29,8 @@
|
|
||||||
#include "components/search_engines/template_url_data_util.h"
|
|
||||||
#include "third_party/search_engines_data/resources/definitions/prepopulated_engines.h"
|
|
||||||
|
|
||||||
+#include "components/search_engines/cromite/cromite_prepopulated_engines.h"
|
|
||||||
+
|
|
||||||
namespace TemplateURLPrepopulateData {
|
|
||||||
|
|
||||||
// Helpers --------------------------------------------------------------------
|
|
||||||
@@ -172,7 +174,7 @@ int GetDataVersion(PrefService* prefs) {
|
|
||||||
return kCurrentDataVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
-std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
|
|
||||||
+std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEnginesChromium(
|
|
||||||
PrefService& prefs,
|
|
||||||
const std::vector<const PrepopulatedEngine*>&
|
|
||||||
regional_prepopulated_engines) {
|
|
||||||
@@ -188,6 +190,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,
|
|
||||||
@@ -208,10 +221,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;
|
|
||||||
|
|
||||||
extern const int kMaxPrepopulatedEngineID;
|
|
||||||
|
|
||||||
-// The maximum number of prepopulated search engines that can be returned in
|
|
||||||
-// any of the EEA countries by `GetPrepopulatedEngines()`.
|
|
||||||
-//
|
|
||||||
-// 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
|
|
||||||
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") {
|
|
||||||
action_name = target_name + "_action"
|
|
||||||
source_set_name = target_name
|
|
||||||
|
|
||||||
+ excludetype = false
|
|
||||||
+ if (defined(invoker.excludetype)) {
|
|
||||||
+ excludetype = invoker.excludetype
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
action(action_name) {
|
|
||||||
visibility = [ ":$source_set_name" ]
|
|
||||||
script = "//tools/json_to_struct/json_to_struct.py"
|
|
||||||
@@ -61,6 +66,10 @@ template("json_to_struct") {
|
|
||||||
"--namespace=" + invoker.namespace,
|
|
||||||
"--schema=" + rebase_path(invoker.schema_file, root_build_dir),
|
|
||||||
]
|
|
||||||
+
|
|
||||||
+ if (excludetype) {
|
|
||||||
+ args += [ "--excludetype=yes" ]
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
source_set(source_set_name) {
|
|
||||||
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):
|
|
||||||
return re.sub(u'^_*', '', result) + u'_' # Remove leading underscores.
|
|
||||||
|
|
||||||
|
|
||||||
-def _GenerateH(basepath, fileroot, head, namespace, schema, description):
|
|
||||||
+def _GenerateH(basepath, fileroot, head, namespace, schema, description, excludetype):
|
|
||||||
"""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):
|
|
||||||
f.write(u'#include "%s"\n' % header)
|
|
||||||
f.write(u'\n')
|
|
||||||
|
|
||||||
+ for header in description.get(u'additionals_includes', []):
|
|
||||||
+ f.write(u'#include "%s"\n' % header)
|
|
||||||
+ f.write(u'\n')
|
|
||||||
+
|
|
||||||
if namespace:
|
|
||||||
f.write(u'namespace %s {\n' % namespace)
|
|
||||||
f.write(u'\n')
|
|
||||||
|
|
||||||
- f.write(struct_generator.GenerateStruct(
|
|
||||||
+ f.write(struct_generator.GenerateStruct(excludetype,
|
|
||||||
schema['type_name'], schema['schema']))
|
|
||||||
f.write(u'\n')
|
|
||||||
|
|
||||||
@@ -177,7 +181,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
|
|
||||||
f.write(u'#endif // %s\n' % header_guard)
|
|
||||||
|
|
||||||
|
|
||||||
-def _GenerateCC(basepath, fileroot, head, namespace, schema, description):
|
|
||||||
+def _GenerateCC(basepath, fileroot, head, namespace, schema, description, excludetype):
|
|
||||||
"""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):
|
|
||||||
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,
|
|
||||||
|
|
||||||
|
|
||||||
def GenerateStruct(basepath, output_root, namespace, schema, description,
|
|
||||||
- description_filename, schema_filename, year=None):
|
|
||||||
+ description_filename, schema_filename, excludetype, year):
|
|
||||||
"""Generates a C++ struct from a JSON description.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
@@ -318,8 +322,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)
|
|
||||||
- _GenerateH(basepath, output_root, head, namespace, schema, description)
|
|
||||||
- _GenerateCC(basepath, output_root, head, namespace, schema, description)
|
|
||||||
+ _GenerateH(basepath, output_root, head, namespace, schema, description, excludetype)
|
|
||||||
+ _GenerateCC(basepath, output_root, head, namespace, schema, description, excludetype)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
parser = optparse.OptionParser(
|
|
||||||
@@ -334,11 +338,17 @@ if __name__ == '__main__':
|
|
||||||
parser.add_option('-s', '--schema', help='path to the schema file, '
|
|
||||||
'mandatory.')
|
|
||||||
parser.add_option('-o', '--output', help='output filename, ')
|
|
||||||
+ parser.add_option('-x', '--excludetype', help='exclude type generator, ')
|
|
||||||
(opts, args) = parser.parse_args()
|
|
||||||
|
|
||||||
if not opts.schema:
|
|
||||||
parser.error('You must specify a --schema.')
|
|
||||||
|
|
||||||
+ if not opts.excludetype:
|
|
||||||
+ opts.excludetype = False
|
|
||||||
+ else:
|
|
||||||
+ opts.excludetype = True
|
|
||||||
+
|
|
||||||
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__':
|
|
||||||
schema = _Load(opts.schema)
|
|
||||||
description = _Load(description_filename)
|
|
||||||
GenerateStruct(basepath, output_root, opts.namespace, schema, description,
|
|
||||||
- description_filename, opts.schema)
|
|
||||||
+ description_filename, opts.schema, opts.excludetype, datetime.now().year)
|
|
||||||
diff --git a/tools/json_to_struct/struct_generator.py b/tools/json_to_struct/struct_generator.py
|
|
||||||
--- a/tools/json_to_struct/struct_generator.py
|
|
||||||
+++ b/tools/json_to_struct/struct_generator.py
|
|
||||||
@@ -30,20 +30,24 @@ def GenerateField(field_info):
|
|
||||||
else:
|
|
||||||
raise RuntimeError('Unknown field type "%s"' % type)
|
|
||||||
|
|
||||||
-def GenerateStruct(type_name, schema):
|
|
||||||
+def GenerateStruct(excludetype, type_name, schema):
|
|
||||||
"""Generate a string defining a structure containing the fields specified in
|
|
||||||
the schema list.
|
|
||||||
"""
|
|
||||||
lines = []
|
|
||||||
+ if excludetype:
|
|
||||||
+ lines.append('struct %s;' % type_name)
|
|
||||||
+ return '\n'.join(lines) + '\n'
|
|
||||||
+
|
|
||||||
lines.append('struct %s {' % type_name)
|
|
||||||
for field_info in schema:
|
|
||||||
if field_info['type'] == 'struct':
|
|
||||||
- lines.insert(0, GenerateStruct(field_info['type_name'],
|
|
||||||
+ lines.insert(0, GenerateStruct(excludetype, field_info['type_name'],
|
|
||||||
field_info['fields']))
|
|
||||||
elif (field_info['type'] == 'array'
|
|
||||||
and field_info['contents']['type'] == 'struct'):
|
|
||||||
contents = field_info['contents']
|
|
||||||
- lines.insert(0, GenerateStruct(contents['type_name'],
|
|
||||||
+ lines.insert(0, GenerateStruct(excludetype, contents['type_name'],
|
|
||||||
contents['fields']))
|
|
||||||
lines.append(' ' + GenerateField(field_info) + ';')
|
|
||||||
lines.append('};')
|
|
||||||
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):
|
|
||||||
json_to_struct.GenerateStruct(
|
|
||||||
basepath, output_root, opts.namespace, schema, description,
|
|
||||||
os.path.split(description_filename)[1], os.path.split(opts.schema)[1],
|
|
||||||
- opts.year)
|
|
||||||
+ False, opts.year)
|
|
||||||
|
|
||||||
# TODO(peilinwang) filter the schema by platform, form_factor, etc.
|
|
||||||
if opts.java:
|
|
||||||
json_to_struct.GenerateClass(basepath, output_root, opts.namespace, schema,
|
|
||||||
description,
|
|
||||||
os.path.split(description_filename)[1],
|
|
||||||
- os.path.split(opts.schema)[1], opts.year)
|
|
||||||
+ os.path.split(opts.schema)[1], False, opts.year)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
--
|
--
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,343 +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 | 1 +
|
|
||||||
.../authentication_credentials_container.cc | 5 ++++
|
|
||||||
11 files changed, 73 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
|
|
||||||
@@ -183,6 +183,7 @@ BASE_FEATURE_PARAM(int,
|
|
||||||
BASE_FEATURE(kWebAuthnImmediateGet,
|
|
||||||
"WebAuthenticationImmediateGet",
|
|
||||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kWebAuthnImmediateGet);
|
|
||||||
|
|
||||||
BASE_FEATURE_PARAM(int,
|
|
||||||
kWebAuthnImmediateMediationTimeoutMilliseconds,
|
|
||||||
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
|
|
||||||
@@ -1157,6 +1157,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();
|
|
||||||
--
|
|
||||||
@@ -8,20 +8,18 @@ The feature can be activated from the accessibility settings.
|
|||||||
Need: bromite-build-utils.patch
|
Need: bromite-build-utils.patch
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
---
|
---
|
||||||
.../AwContextMenuItemDelegate.java | 4 +++
|
|
||||||
chrome/android/java/res/values/ids.xml | 1 +
|
chrome/android/java/res/values/ids.xml | 1 +
|
||||||
|
.../settings/AccessibilitySettings.java | 12 +++++++
|
||||||
.../ChromeAccessibilitySettingsDelegate.java | 18 ++++++++++
|
.../ChromeAccessibilitySettingsDelegate.java | 18 ++++++++++
|
||||||
.../contextmenu/ChromeContextMenuItem.java | 5 ++-
|
.../contextmenu/ChromeContextMenuItem.java | 5 ++-
|
||||||
.../ChromeContextMenuPopulator.java | 5 +++
|
.../ChromeContextMenuPopulator.java | 5 +++
|
||||||
.../tab/TabContextMenuItemDelegate.java | 8 +++++
|
.../tab/TabContextMenuItemDelegate.java | 8 +++++
|
||||||
|
.../contextmenu/ContextMenuItemDelegate.java | 2 ++
|
||||||
.../flags/android/chrome_feature_list.cc | 1 +
|
.../flags/android/chrome_feature_list.cc | 1 +
|
||||||
.../browser/flags/ChromeFeatureList.java | 5 +++
|
.../browser/flags/ChromeFeatureList.java | 5 +++
|
||||||
.../strings/android_chrome_strings.grd | 9 +++++
|
.../strings/android_chrome_strings.grd | 9 +++++
|
||||||
.../res/xml/accessibility_preferences.xml | 5 +++
|
.../res/xml/accessibility_preferences.xml | 5 +++
|
||||||
.../accessibility/AccessibilitySettings.java | 12 +++++++
|
|
||||||
.../AccessibilitySettingsDelegate.java | 2 ++
|
.../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 | 8 +++++
|
||||||
...Add-setting-to-invert-tap-and-long-tap.inc | 3 ++
|
...Add-setting-to-invert-tap-and-long-tap.inc | 3 ++
|
||||||
...Add-setting-to-invert-tap-and-long-tap.inc | 1 +
|
...Add-setting-to-invert-tap-and-long-tap.inc | 1 +
|
||||||
@@ -29,38 +27,17 @@ 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_anchor_element.h | 7 +++-
|
||||||
.../renderer/core/html/html_image_element.cc | 17 +++++++++
|
.../renderer/core/html/html_image_element.cc | 17 +++++++++
|
||||||
.../renderer/core/html/html_image_element.h | 2 ++
|
.../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 +--
|
.../core/page/context_menu_controller.h | 5 +--
|
||||||
23 files changed, 170 insertions(+), 16 deletions(-)
|
21 files changed, 165 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/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_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
|
create mode 100644 cromite_flags/third_party/blink/common/features_h/Add-setting-to-invert-tap-and-long-tap.inc
|
||||||
|
|
||||||
diff --git a/android_webview/java/src/org/chromium/android_webview/contextmenu/AwContextMenuItemDelegate.java b/android_webview/java/src/org/chromium/android_webview/contextmenu/AwContextMenuItemDelegate.java
|
|
||||||
--- a/android_webview/java/src/org/chromium/android_webview/contextmenu/AwContextMenuItemDelegate.java
|
|
||||||
+++ 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.content_public.common.Referrer;
|
|
||||||
import org.chromium.content_public.browser.WebContents;
|
|
||||||
import org.chromium.ui.base.Clipboard;
|
|
||||||
import org.chromium.url.GURL;
|
|
||||||
@@ -52,6 +53,9 @@ public class AwContextMenuItemDelegate implements ContextMenuItemDelegate {
|
|
||||||
IntentUtils.safeStartActivity(mActivity, intent);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Override
|
|
||||||
+ public void onOpenUrl(GURL url, Referrer referrer) { }
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public GURL getPageUrl() {
|
|
||||||
return mWebContents.getVisibleUrl();
|
|
||||||
diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/values/ids.xml
|
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
|
--- a/chrome/android/java/res/values/ids.xml
|
||||||
+++ b/chrome/android/java/res/values/ids.xml
|
+++ b/chrome/android/java/res/values/ids.xml
|
||||||
@@ -112,6 +112,7 @@ found in the LICENSE file.
|
@@ -91,6 +91,7 @@ found in the LICENSE file.
|
||||||
|
|
||||||
<!-- Menu item IDs for FullscreenActivities -->
|
<!-- Menu item IDs for FullscreenActivities -->
|
||||||
<item type="id" name="contextmenu_open_in_chrome" />
|
<item type="id" name="contextmenu_open_in_chrome" />
|
||||||
@@ -68,21 +45,57 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va
|
|||||||
|
|
||||||
<!-- Tags -->
|
<!-- Tags -->
|
||||||
<item type="id" name="highlight_color" />
|
<item type="id" name="highlight_color" />
|
||||||
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
|
||||||
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
|
||||||
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java
|
||||||
|
@@ -55,6 +55,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
|
||||||
|
private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate;
|
||||||
|
private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate;
|
||||||
|
|
||||||
|
+ static final String PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS = "always_show_contextmenu_on_links";
|
||||||
|
+ private BooleanPreferenceDelegate mShowAlwaysContextMenuOnLinksDelegate;
|
||||||
|
+
|
||||||
|
private TextScalePreference mTextScalePref;
|
||||||
|
private PageZoomPreference mPageZoomDefaultZoomPref;
|
||||||
|
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
|
||||||
|
@@ -174,6 +177,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
|
||||||
|
mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.isEnabled());
|
||||||
|
mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this);
|
||||||
|
|
||||||
|
+ ChromeSwitchPreference mShowAlwaysContextMenuOnLinksPref =
|
||||||
|
+ (ChromeSwitchPreference) findPreference(PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS);
|
||||||
|
+ mShowAlwaysContextMenuOnLinksDelegate = mDelegate.getShowAlwaysContextMenuOnLinksDelegate();
|
||||||
|
+ mShowAlwaysContextMenuOnLinksPref.setChecked(mShowAlwaysContextMenuOnLinksDelegate.isEnabled());
|
||||||
|
+ mShowAlwaysContextMenuOnLinksPref.setOnPreferenceChangeListener(this);
|
||||||
|
+
|
||||||
|
Preference captions = findPreference(PREF_CAPTIONS);
|
||||||
|
captions.setOnPreferenceClickListener(
|
||||||
|
preference -> {
|
||||||
|
@@ -262,6 +271,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
|
||||||
|
mDelegate.requestRestart(getActivity());
|
||||||
|
} else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) {
|
||||||
|
mDisableToolbarSwipeUpDelegate.setEnabled((Boolean) newValue);
|
||||||
|
+ } else if (PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS.equals(preference.getKey())) {
|
||||||
|
+ mShowAlwaysContextMenuOnLinksDelegate.setEnabled((Boolean) newValue);
|
||||||
|
+ mDelegate.requestRestart(getActivity());
|
||||||
|
} else if (PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT.equals(preference.getKey())) {
|
||||||
|
// TODO(mschillaci): Implement the override behavior for OS level.
|
||||||
|
}
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
|
||||||
@@ -167,6 +167,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
|
@@ -136,6 +136,24 @@ public class ChromeAccessibilitySettingsDelegate implements AccessibilitySetting
|
||||||
mSnackbarManagerSupplier.get().showSnackbar(mSnackbar);
|
mSnackbarManager.showSnackbar(mSnackbar);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ private static class ShowAlwaysContextMenuOnLinksDelegate implements BooleanPreferenceDelegate {
|
+ private static class ShowAlwaysContextMenuOnLinksDelegate implements BooleanPreferenceDelegate {
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public boolean getValue() {
|
+ public boolean isEnabled() {
|
||||||
+ return ChromeFeatureList.sShowAlwaysContextMenuOnLinks.isEnabled();
|
+ return ChromeFeatureList.sShowAlwaysContextMenuOnLinks.isEnabled();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setValue(boolean value) {
|
+ public void setEnabled(boolean value) {
|
||||||
+ CromiteNativeUtils.setFlagEnabled(ChromeFeatureList.SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS,
|
+ CromiteNativeUtils.setFlagEnabled(ChromeFeatureList.SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS,
|
||||||
+ "show-always-context-menu-on-links", value);
|
+ "show-always-context-menu-on-links", value);
|
||||||
+ }
|
+ }
|
||||||
@@ -99,59 +112,59 @@ 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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuItem.java
|
||||||
+++ b/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 {
|
@@ -111,8 +111,9 @@ class ChromeContextMenuItem {
|
||||||
// Developer Group
|
int SHARE_HIGHLIGHT = 32;
|
||||||
int VIEW_PAGE_SOURCE = 41;
|
int REMOVE_HIGHLIGHT = 33;
|
||||||
int INSPECT_ELEMENT = 42;
|
int LEARN_MORE = 34;
|
||||||
+ int FOLLOW_LINK = 43;
|
+ int FOLLOW_LINK = 35;
|
||||||
// ALWAYS UPDATE!
|
// ALWAYS UPDATE!
|
||||||
- int NUM_ENTRIES = 43;
|
- int NUM_ENTRIES = 35;
|
||||||
+ int NUM_ENTRIES = 44;
|
+ int NUM_ENTRIES = 36;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Mapping from {@link Item} to the ID found in the ids.xml. */
|
/** Mapping from {@link Item} to the ID found in the ids.xml. */
|
||||||
@@ -184,6 +185,7 @@ class ChromeContextMenuItem {
|
@@ -152,6 +153,7 @@ class ChromeContextMenuItem {
|
||||||
R.id.contextmenu_print_page, // Item.PRINT_PAGE
|
R.id.contextmenu_share_highlight, // Item.SHARE_HIGHLIGHT
|
||||||
R.id.contextmenu_view_page_source, // Item.VIEW_PAGE_SOURCE
|
R.id.contextmenu_remove_highlight, // Item.REMOVE_HIGHLIGHT
|
||||||
R.id.contextmenu_inspect_element, // Item.INSPECT_ELEMENT
|
R.id.contextmenu_learn_more, // Item.LEARN_MORE
|
||||||
+ R.id.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB
|
+ 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. */
|
/** Mapping from {@link Item} to the ID of the string that describes the action of the item. */
|
||||||
@@ -231,6 +233,7 @@ class ChromeContextMenuItem {
|
@@ -191,6 +193,7 @@ class ChromeContextMenuItem {
|
||||||
R.string.contextmenu_print_page, // Item.PRINT_PAGE
|
R.string.contextmenu_share_highlight, // Item.SHARE_HIGHLIGHT
|
||||||
R.string.contextmenu_view_page_source, // Item.VIEW_PAGE_SOURCE
|
R.string.contextmenu_remove_highlight, // Item.REMOVE_HIGHLIGHT
|
||||||
R.string.contextmenu_inspect_element, // Item.INSPECT_ELEMENT
|
R.string.contextmenu_learn_more, // Item.LEARN_MORE
|
||||||
+ R.string.contextmenu_open_in_tab, // Item.OPEN_IN_NEW_CHROME_TAB
|
+ 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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||||
@@ -495,6 +495,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
@@ -266,6 +266,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||||
}
|
|
||||||
if (mParams.isAnchor()) {
|
if (mParams.isAnchor()) {
|
||||||
ModelList linkGroup = new ModelList();
|
ModelList linkGroup = new ModelList();
|
||||||
+ if (ChromeFeatureList.sShowAlwaysContextMenuOnLinks.isEnabled()) {
|
+ if (ChromeFeatureList.sShowAlwaysContextMenuOnLinks.isEnabled()) {
|
||||||
+ linkGroup.add(createListItem(Item.FOLLOW_LINK));
|
+ linkGroup.add(createListItem(Item.FOLLOW_LINK));
|
||||||
+ }
|
+ }
|
||||||
if (areMandatoryFlowsCompleted(getProfile())
|
if (FirstRunStatus.getFirstRunFlowComplete()
|
||||||
&& !isEmptyUrl(mParams.getUrl())
|
&& !isEmptyUrl(mParams.getUrl())
|
||||||
&& UrlUtilities.isAcceptedScheme(mParams.getUrl())) {
|
&& UrlUtilities.isAcceptedScheme(mParams.getUrl())) {
|
||||||
@@ -1141,6 +1144,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
@@ -631,6 +634,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||||
title = mParams.getLinkText();
|
getProfile(),
|
||||||
}
|
false);
|
||||||
tabItemDelegate.onReadLater(mParams.getUrl(), title);
|
});
|
||||||
+ } else if (itemId == R.id.contextmenu_open_in_tab) {
|
+ } else if (itemId == R.id.contextmenu_open_in_tab) {
|
||||||
+ mItemDelegate.onOpenUrl(mParams.getUrl(), mParams.getReferrer());
|
+ mItemDelegate.onOpenUrl(mParams.getUrl(), mParams.getReferrer());
|
||||||
} else if (itemId == R.id.contextmenu_open_in_chrome) {
|
} else if (itemId == R.id.contextmenu_open_in_chrome) {
|
||||||
recordContextMenuSelection(ContextMenuUma.Action.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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
||||||
@@ -388,6 +388,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
@@ -273,6 +273,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
||||||
mTab.loadUrl(loadUrlParams);
|
mTab.loadUrl(loadUrlParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,54 +175,66 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM
|
|||||||
+ loadUrlParams.setReferrer(referrer);
|
+ loadUrlParams.setReferrer(referrer);
|
||||||
+ mTab.loadUrl(loadUrlParams);
|
+ mTab.loadUrl(loadUrlParams);
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
@Override
|
||||||
|
public void onOpenImageInNewTab(GURL url, Referrer referrer) {
|
||||||
|
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
|
||||||
|
diff --git a/chrome/browser/contextmenu/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuItemDelegate.java b/chrome/browser/contextmenu/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuItemDelegate.java
|
||||||
|
--- a/chrome/browser/contextmenu/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuItemDelegate.java
|
||||||
|
+++ b/chrome/browser/contextmenu/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuItemDelegate.java
|
||||||
|
@@ -110,6 +110,8 @@ public interface ContextMenuItemDelegate {
|
||||||
|
*/
|
||||||
|
void onOpenImageUrl(GURL url, Referrer referrer);
|
||||||
|
|
||||||
|
+ void onOpenUrl(GURL url, Referrer referrer);
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* Called when the {@code url} is of an image and should be opened in a new page.
|
* Called when the {@code url} is of an image and should be opened in a new tab.
|
||||||
*
|
* @param url The image URL to open.
|
||||||
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
|
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
|
--- a/chrome/browser/flags/android/chrome_feature_list.cc
|
||||||
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
||||||
@@ -463,6 +463,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
@@ -287,6 +287,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
||||||
&kTabClosureMethodRefactor,
|
&kTabIdMapAndroid,
|
||||||
&kTabModelInitFixes,
|
&kTabletTabSwitcherLongPressMenu,
|
||||||
&kTabStorageSqlitePrototype,
|
&kTabletToolbarIncognitoStatus,
|
||||||
+ &blink::features::kShowAlwaysContextMenuOnLinks,
|
+ &blink::features::kShowAlwaysContextMenuOnLinks,
|
||||||
&kTabStripAutoSelectOnCloseChange,
|
&kTabletToolbarReordering,
|
||||||
&kTabStripCloseRefactorAndroid,
|
&kTabResumptionModuleAndroid,
|
||||||
&kTabStripDensityChangeAndroid,
|
&kTabStateFlatBuffer,
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
|
||||||
@@ -546,6 +546,8 @@ public abstract class ChromeFeatureList {
|
@@ -348,6 +348,8 @@ public abstract class ChromeFeatureList {
|
||||||
"DisableToolbarSwipeUp";
|
"DisableToolbarSwipeUp";
|
||||||
public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM =
|
public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM =
|
||||||
"MoveTopToolbarToBottom";
|
"MoveTopToolbarToBottom";
|
||||||
+ public static final String SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS =
|
+ public static final String SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS =
|
||||||
+ "ShowAlwaysContextMenuOnLinks";
|
+ "ShowAlwaysContextMenuOnLinks";
|
||||||
public static final String NEW_TAB_PAGE_CUSTOMIZATION_THEME_SYNC =
|
public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant";
|
||||||
"NewTabPageCustomizationThemeSync";
|
public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET =
|
||||||
public static final String NEW_TAB_PAGE_CUSTOMIZATION_V2 = "NewTabPageCustomizationV2";
|
"NotificationPermissionBottomSheet";
|
||||||
@@ -1107,6 +1109,8 @@ public abstract class ChromeFeatureList {
|
@@ -630,6 +632,8 @@ public abstract class ChromeFeatureList {
|
||||||
newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false);
|
newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false);
|
||||||
public static final CachedFlag sMoveTopToolbarToBottom =
|
public static final CachedFlag sMoveTopToolbarToBottom =
|
||||||
newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false);
|
newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false);
|
||||||
+ public static final CachedFlag sShowAlwaysContextMenuOnLinks =
|
+ public static final CachedFlag sShowAlwaysContextMenuOnLinks =
|
||||||
+ newCachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false);
|
+ newCachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false);
|
||||||
public static final CachedFlag sPaintPreviewDemo = newCachedFlag(PAINT_PREVIEW_DEMO, false);
|
public static final CachedFlag sOmniboxModernizeVisualUpdate =
|
||||||
public static final CachedFlag sPersistAcrossReboots =
|
newCachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, true);
|
||||||
newCachedFlag(PERSIST_ACROSS_REBOOTS, true);
|
public static final CachedFlag sOptimizationGuidePushNotifications =
|
||||||
@@ -1399,6 +1403,7 @@ public abstract class ChromeFeatureList {
|
@@ -786,6 +790,7 @@ public abstract class ChromeFeatureList {
|
||||||
sTopControlsRefactorV2,
|
sTabWindowManagerIndexReassignmentActivityNotInAppTasks,
|
||||||
sTouchToSearchCallout,
|
sTabWindowManagerReportIndicesMismatch,
|
||||||
sUnparcelIntentFileDescriptors,
|
|
||||||
+ sShowAlwaysContextMenuOnLinks,
|
|
||||||
sUseActivityManagerForTabActivation,
|
|
||||||
sUseChimeAndroidSdk,
|
sUseChimeAndroidSdk,
|
||||||
sUseInitialNetworkStateAtStartup,
|
+ sShowAlwaysContextMenuOnLinks,
|
||||||
|
sUseLibunwindstackNativeUnwinderAndroid,
|
||||||
|
sVerticalAutomotiveBackButtonToolbar);
|
||||||
|
|
||||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -1700,6 +1700,12 @@ Your Google account may have other forms of browsing history like searches and a
|
@@ -1692,6 +1692,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.">
|
<message name="IDS_DISABLE_TOOLBAR_SWIPE_UP" desc="Summary of the preference that allows the user to disable toolbar swipeup.">
|
||||||
Disable toolbar swipe up
|
Disable toolbar swipe up
|
||||||
</message>
|
</message>
|
||||||
@@ -222,20 +247,20 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||||||
|
|
||||||
<!-- Safety check -->
|
<!-- 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]">
|
<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]">
|
||||||
@@ -3369,6 +3375,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
|
@@ -2871,6 +2877,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
|
||||||
<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]">
|
<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
|
Open in new Chrome tab
|
||||||
</message>
|
</message>
|
||||||
+ <message name="IDS_CONTEXTMENU_OPEN_IN_TAB" desc="Context sensitive menu item to open the selected link in tab. [CHAR_LIMIT=30]">
|
+ <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
|
+ Open in current tab
|
||||||
+ </message>
|
+ </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]">
|
<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 Chrome window
|
Open in Incognito tab
|
||||||
</message>
|
</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
|
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
|
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
|
||||||
+++ b/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.
|
@@ -35,6 +35,11 @@ found in the LICENSE file.
|
||||||
android:summary="@string/page_zoom_always_show_preference_summary"
|
android:summary="@string/page_zoom_always_show_preference_summary"
|
||||||
android:title="@string/page_zoom_always_show_preference_title" />
|
android:title="@string/page_zoom_always_show_preference_title" />
|
||||||
|
|
||||||
@@ -247,97 +272,18 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
|
|||||||
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||||
android:key="force_enable_zoom"
|
android:key="force_enable_zoom"
|
||||||
android:summary="@string/force_enable_zoom_summary"
|
android:summary="@string/force_enable_zoom_summary"
|
||||||
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
|
|
||||||
private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate;
|
|
||||||
private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate;
|
|
||||||
|
|
||||||
+ static final String PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS = "always_show_contextmenu_on_links";
|
|
||||||
+ private BooleanPreferenceDelegate mShowAlwaysContextMenuOnLinksDelegate;
|
|
||||||
+
|
|
||||||
private PageZoomPreference mPageZoomDefaultZoomPref;
|
|
||||||
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
|
|
||||||
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
|
|
||||||
@@ -198,6 +201,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
|
|
||||||
mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.getValue());
|
|
||||||
mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this);
|
|
||||||
|
|
||||||
+ ChromeSwitchPreference mShowAlwaysContextMenuOnLinksPref =
|
|
||||||
+ (ChromeSwitchPreference) findPreference(PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS);
|
|
||||||
+ mShowAlwaysContextMenuOnLinksDelegate = mDelegate.getShowAlwaysContextMenuOnLinksDelegate();
|
|
||||||
+ mShowAlwaysContextMenuOnLinksPref.setChecked(mShowAlwaysContextMenuOnLinksDelegate.getValue());
|
|
||||||
+ mShowAlwaysContextMenuOnLinksPref.setOnPreferenceChangeListener(this);
|
|
||||||
+
|
|
||||||
Preference captions = findPreference(PREF_CAPTIONS);
|
|
||||||
captions.setOnPreferenceClickListener(
|
|
||||||
preference -> {
|
|
||||||
@@ -323,6 +332,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
|
|
||||||
} else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) {
|
|
||||||
mDisableToolbarSwipeUpDelegate.setValue((Boolean) newValue);
|
|
||||||
mDelegate.requestRestart(getActivity());
|
|
||||||
+ } else if (PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS.equals(preference.getKey())) {
|
|
||||||
+ mShowAlwaysContextMenuOnLinksDelegate.setValue((Boolean) newValue);
|
|
||||||
+ mDelegate.requestRestart(getActivity());
|
|
||||||
} else if (PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT.equals(preference.getKey())) {
|
|
||||||
// TODO(mschillaci): Implement the override behavior for OS level.
|
|
||||||
} else if (OmniboxFeatures.KEY_JUMP_START_OMNIBOX.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
|
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
|
--- 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
|
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
|
||||||
@@ -45,6 +45,8 @@ public interface AccessibilitySettingsDelegate {
|
@@ -39,6 +39,8 @@ public interface AccessibilitySettingsDelegate {
|
||||||
BooleanPreferenceDelegate getMoveTopToolbarToBottomDelegate();
|
BooleanPreferenceDelegate getMoveTopToolbarToBottomDelegate();
|
||||||
BooleanPreferenceDelegate getDisableToolbarSwipeUpDelegate();
|
BooleanPreferenceDelegate getDisableToolbarSwipeUpDelegate();
|
||||||
|
|
||||||
+ BooleanPreferenceDelegate getShowAlwaysContextMenuOnLinksDelegate();
|
+ BooleanPreferenceDelegate getShowAlwaysContextMenuOnLinksDelegate();
|
||||||
+
|
+
|
||||||
/**
|
/** @return The BrowserContextHandle that should be used to read and update settings. */
|
||||||
* @return The BrowserContextHandle that should be used to read and update settings.
|
BrowserContextHandle getBrowserContextHandle();
|
||||||
*/
|
|
||||||
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;
|
|
||||||
|
|
||||||
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;
|
|
||||||
@@ -148,6 +149,8 @@ public interface ContextMenuItemDelegate {
|
|
||||||
/** Returns the page url. */
|
|
||||||
GURL getPageUrl();
|
|
||||||
|
|
||||||
+ void onOpenUrl(GURL url, Referrer referrer);
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* 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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -368,24 +314,24 @@ 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
|
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
|
--- a/third_party/blink/renderer/core/html/html_anchor_element.cc
|
||||||
+++ b/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/loader/render_blocking_resource_manager.h"
|
||||||
#include "third_party/blink/renderer/core/navigation_api/navigation_api.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/chrome_client.h"
|
||||||
+#include "third_party/blink/renderer/core/page/context_menu_controller.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/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"
|
#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"
|
||||||
bool is_trusted,
|
@@ -518,6 +519,17 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request,
|
||||||
base::TimeTicks platform_time_stamp,
|
bool is_trusted,
|
||||||
KURL completed_url) {
|
base::TimeTicks platform_time_stamp,
|
||||||
|
KURL completed_url) {
|
||||||
+ UIEvent& event = *UIEvent::Create();
|
+ UIEvent& event = *UIEvent::Create();
|
||||||
+ NavigateToHyperlink2(std::move(request), navigation_policy, is_trusted, platform_time_stamp,
|
+ NavigateToHyperlink2(std::move(request), navigation_policy, is_trusted, platform_time_stamp,
|
||||||
+ std::move(completed_url), event, true);
|
+ std::move(completed_url), event, true);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void HTMLAnchorElementBase::NavigateToHyperlink2(ResourceRequest request,
|
+void HTMLAnchorElement::NavigateToHyperlink2(ResourceRequest request,
|
||||||
+ NavigationPolicy navigation_policy,
|
+ NavigationPolicy navigation_policy,
|
||||||
+ bool is_trusted,
|
+ bool is_trusted,
|
||||||
+ base::TimeTicks platform_time_stamp,
|
+ base::TimeTicks platform_time_stamp,
|
||||||
@@ -394,8 +340,8 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
|
|||||||
LocalDOMWindow* window = GetDocument().domWindow();
|
LocalDOMWindow* window = GetDocument().domWindow();
|
||||||
if (!window) {
|
if (!window) {
|
||||||
return;
|
return;
|
||||||
@@ -511,6 +523,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink(
|
@@ -578,6 +590,15 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request,
|
||||||
frame_request.SetImpression(impression);
|
/*element=*/this, request.HasUserGesture()));
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (!do_not_show_context_menu &&
|
+ if (!do_not_show_context_menu &&
|
||||||
@@ -410,39 +356,39 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
|
|||||||
Frame* target_frame =
|
Frame* target_frame =
|
||||||
frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame;
|
frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame;
|
||||||
|
|
||||||
@@ -547,7 +568,7 @@ bool HTMLAnchorElementBase::IsValidInterestInvoker(Element& target) const {
|
@@ -631,7 +652,7 @@ AtomicString HTMLAnchorElement::interestAction() const {
|
||||||
return IsLink();
|
return g_empty_atom;
|
||||||
}
|
}
|
||||||
|
|
||||||
-void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
|
-void HTMLAnchorElement::HandleClick(MouseEvent& event) {
|
||||||
+void HTMLAnchorElementBase::HandleClick(MouseEvent& event, bool do_not_show_context_menu) {
|
+void HTMLAnchorElement::HandleClick(MouseEvent& event, bool do_not_show_context_menu) {
|
||||||
event.SetDefaultHandled();
|
event.SetDefaultHandled();
|
||||||
|
|
||||||
// It's unclear whether synthesized middle-button "click" events should be
|
LocalDOMWindow* window = GetDocument().domWindow();
|
||||||
@@ -621,13 +642,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
|
@@ -727,13 +748,12 @@ void HTMLAnchorElement::HandleClick(MouseEvent& event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
- base::OnceClosure navigate_closure = blink::BindOnce(
|
- base::OnceClosure navigate_closure = WTF::BindOnce(
|
||||||
- &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this),
|
- &HTMLAnchorElement::NavigateToHyperlink, WrapWeakPersistent(this),
|
||||||
- std::move(request), navigation_policy, event.isTrusted(),
|
- std::move(request), navigation_policy, event.isTrusted(),
|
||||||
- event.PlatformTimeStamp(), std::move(completed_url));
|
- event.PlatformTimeStamp(), std::move(completed_url));
|
||||||
-
|
-
|
||||||
if (navigation_policy == kNavigationPolicyDownload ||
|
if (navigation_policy == kNavigationPolicyDownload ||
|
||||||
navigation_policy == kNavigationPolicyLinkPreview) {
|
navigation_policy == kNavigationPolicyLinkPreview) {
|
||||||
+ base::OnceClosure navigate_closure = blink::BindOnce(
|
+ base::OnceClosure navigate_closure = WTF::BindOnce(
|
||||||
+ &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this),
|
+ &HTMLAnchorElement::NavigateToHyperlink, WrapWeakPersistent(this),
|
||||||
+ std::move(request), navigation_policy, event.isTrusted(),
|
+ std::move(request), navigation_policy, event.isTrusted(),
|
||||||
+ event.PlatformTimeStamp(), std::move(completed_url));
|
+ event.PlatformTimeStamp(), std::move(completed_url));
|
||||||
// We distinguish single/double click with some modifiers.
|
// We distinguish single/double click with some modifiers.
|
||||||
// See the comment of `EventHandler.delayed_navigation_task_handle_`.
|
// See the comment of `EventHandler.delayed_navigation_task_handle_`.
|
||||||
auto task_handle = PostDelayedCancellableTask(
|
auto task_handle = PostDelayedCancellableTask(
|
||||||
@@ -637,7 +657,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) {
|
@@ -743,7 +763,9 @@ void HTMLAnchorElement::HandleClick(MouseEvent& event) {
|
||||||
frame->GetEventHandler().SetDelayedNavigationTaskHandle(
|
frame->GetEventHandler().SetDelayedNavigationTaskHandle(
|
||||||
std::move(task_handle));
|
std::move(task_handle));
|
||||||
} else {
|
} else {
|
||||||
- std::move(navigate_closure).Run();
|
- std::move(navigate_closure).Run();
|
||||||
+ HTMLAnchorElementBase::NavigateToHyperlink2(std::move(request), navigation_policy,
|
+ HTMLAnchorElement::NavigateToHyperlink2(std::move(request), navigation_policy,
|
||||||
+ event.isTrusted(), event.PlatformTimeStamp(), std::move(completed_url),
|
+ event.isTrusted(), event.PlatformTimeStamp(), std::move(completed_url),
|
||||||
+ event, do_not_show_context_menu);
|
+ event, do_not_show_context_menu);
|
||||||
}
|
}
|
||||||
@@ -451,15 +397,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
|
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
|
--- a/third_party/blink/renderer/core/html/html_anchor_element.h
|
||||||
+++ b/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,
|
@@ -112,6 +112,7 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils {
|
||||||
bool IsValidInterestInvoker(Element& target) const override;
|
AtomicString interestAction() const override;
|
||||||
|
|
||||||
void Trace(Visitor*) const override;
|
void Trace(Visitor*) const override;
|
||||||
+ void HandleClick(MouseEvent&, bool do_not_show_context_menu = false);
|
+ void HandleClick(MouseEvent&, bool do_not_show_context_menu = false);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HTMLAnchorElementBase(const QualifiedName& tag_name, Document&);
|
void ParseAttribute(const AttributeModificationParams&) override;
|
||||||
@@ -121,7 +122,11 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement,
|
@@ -143,7 +144,11 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils {
|
||||||
bool is_trusted,
|
bool is_trusted,
|
||||||
base::TimeTicks platform_time_stamp,
|
base::TimeTicks platform_time_stamp,
|
||||||
KURL);
|
KURL);
|
||||||
@@ -483,7 +429,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/attribution_src_loader.h"
|
||||||
#include "third_party/blink/renderer/core/frame/deprecation/deprecation.h"
|
#include "third_party/blink/renderer/core/frame/deprecation/deprecation.h"
|
||||||
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
|
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
|
||||||
@@ -68,6 +69,7 @@
|
@@ -65,6 +66,7 @@
|
||||||
#include "third_party/blink/renderer/core/media_type_names.h"
|
#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/chrome_client.h"
|
||||||
#include "third_party/blink/renderer/core/page/page.h"
|
#include "third_party/blink/renderer/core/page/page.h"
|
||||||
@@ -491,7 +437,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/paint/timing/paint_timing.h"
|
||||||
#include "third_party/blink/renderer/core/probe/core_probes.h"
|
#include "third_party/blink/renderer/core/probe/core_probes.h"
|
||||||
#include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h"
|
#include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h"
|
||||||
@@ -796,6 +798,21 @@ void HTMLImageElement::DidFinishLayout() {
|
@@ -799,6 +801,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,23 +458,23 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
|
|||||||
+
|
+
|
||||||
bool HTMLImageElement::draggable() const {
|
bool HTMLImageElement::draggable() const {
|
||||||
// Image elements are draggable by default.
|
// 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
|
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
|
--- a/third_party/blink/renderer/core/html/html_image_element.h
|
||||||
+++ b/third_party/blink/renderer/core/html/html_image_element.h
|
+++ b/third_party/blink/renderer/core/html/html_image_element.h
|
||||||
@@ -226,6 +226,8 @@ class CORE_EXPORT HTMLImageElement
|
@@ -236,6 +236,8 @@ class CORE_EXPORT HTMLImageElement final
|
||||||
|
void DidAddUserAgentShadowRoot(ShadowRoot&) override;
|
||||||
void AdjustStyle(ComputedStyleBuilder&) override;
|
void AdjustStyle(ComputedStyleBuilder&) override;
|
||||||
|
|
||||||
+ void DefaultEventHandler(Event&) override;
|
+ void DefaultEventHandler(Event&) override;
|
||||||
+
|
+
|
||||||
private:
|
private:
|
||||||
void ParseAttribute(const AttributeModificationParams&) override;
|
bool AreAuthorShadowsAllowed() const override { return false; }
|
||||||
bool IsPresentationAttribute(const QualifiedName&) const override;
|
|
||||||
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc
|
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
|
--- a/third_party/blink/renderer/core/page/context_menu_controller.cc
|
||||||
+++ b/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) {
|
@@ -228,14 +228,16 @@ void ContextMenuController::DocumentDetached(Document* document) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -538,8 +484,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
|
|||||||
+ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) {
|
+ if (!base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) {
|
||||||
+ DCHECK(mouse_event->type() == event_type_names::kContextmenu);
|
+ DCHECK(mouse_event->type() == event_type_names::kContextmenu);
|
||||||
+ }
|
+ }
|
||||||
LocalFrame* frame =
|
LocalFrame* frame = mouse_event->target()->ToNode()->GetDocument().GetFrame();
|
||||||
mouse_event->RawTarget()->ToNode()->GetDocument().GetFrame();
|
|
||||||
PhysicalOffset location =
|
PhysicalOffset location =
|
||||||
PhysicalOffset::FromPointFRound(mouse_event->AbsoluteLocation());
|
PhysicalOffset::FromPointFRound(mouse_event->AbsoluteLocation());
|
||||||
|
|
||||||
@@ -549,24 +494,24 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
|
|||||||
mouse_event->SetDefaultHandled();
|
mouse_event->SetDefaultHandled();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -443,7 +445,8 @@ bool ContextMenuController::ShowContextMenu(
|
@@ -453,7 +455,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch(
|
||||||
LocalFrame* frame,
|
bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
|
||||||
const PhysicalOffset& point,
|
const PhysicalOffset& point,
|
||||||
ui::mojom::blink::MenuSourceType source_type,
|
WebMenuSourceType source_type,
|
||||||
- const MouseEvent* mouse_event) {
|
- const MouseEvent* mouse_event) {
|
||||||
+ const MouseEvent* mouse_event,
|
+ const MouseEvent* mouse_event,
|
||||||
+ bool do_not_show_context_menu) {
|
+ bool do_not_show_context_menu) {
|
||||||
// Displaying the context menu in this function is a big hack as we don'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
|
// have context, i.e. whether this is being invoked via a script or in
|
||||||
// response to user input (Mouse event WM_RBUTTONDOWN,
|
// response to user input (Mouse event WM_RBUTTONDOWN,
|
||||||
@@ -466,6 +469,16 @@ bool ContextMenuController::ShowContextMenu(
|
@@ -476,6 +479,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
|
||||||
if (!result.InnerNodeOrImageMapImage())
|
if (!result.InnerNodeOrImageMapImage())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
+ if (!do_not_show_context_menu &&
|
+ if (!do_not_show_context_menu &&
|
||||||
+ base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) {
|
+ base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) {
|
||||||
+ if (auto* anchor_element = DynamicTo<HTMLAnchorElement>(result.URLElement())) {
|
+ if (auto* anchor_element = DynamicTo<HTMLAnchorElement>(result.URLElement())) {
|
||||||
+ MouseEvent& event = *MouseEvent::Create();
|
+ MouseEvent event;
|
||||||
+ event.SetTarget(mouse_event->target());
|
+ event.SetTarget(mouse_event->target());
|
||||||
+ anchor_element->HandleClick(event, /*do_not_show_context_menu*/true);
|
+ anchor_element->HandleClick(event, /*do_not_show_context_menu*/true);
|
||||||
+ return true;
|
+ return true;
|
||||||
@@ -576,19 +521,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
|
// Clear any previously set cached results if we are resetting the hit test
|
||||||
// result.
|
// result.
|
||||||
image_selection_cached_result_ = nullptr;
|
image_selection_cached_result_ = nullptr;
|
||||||
@@ -848,7 +861,7 @@ bool ContextMenuController::ShowContextMenu(
|
@@ -830,11 +843,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
|
||||||
|
|
||||||
SetAutofillData(result.InnerNode(), data);
|
SetAutofillData(result.InnerNode(), data);
|
||||||
|
SetPasswordManagerData(result.InnerElement(), data);
|
||||||
|
|
||||||
|
- const bool from_touch = source_type == kMenuSourceTouch ||
|
||||||
|
- source_type == kMenuSourceLongPress ||
|
||||||
|
- source_type == kMenuSourceLongTap;
|
||||||
- if (from_touch && !ShouldShowContextMenuFromTouch(data))
|
- 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* 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
|
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
|
--- a/third_party/blink/renderer/core/page/context_menu_controller.h
|
||||||
+++ b/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
|
@@ -57,7 +57,7 @@ class CORE_EXPORT ContextMenuController final
|
||||||
|
|
||||||
void DocumentDetached(Document*);
|
void DocumentDetached(Document*);
|
||||||
|
|
||||||
@@ -597,13 +552,13 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.h b/th
|
|||||||
void ShowContextMenuAtPoint(LocalFrame*,
|
void ShowContextMenuAtPoint(LocalFrame*,
|
||||||
float x,
|
float x,
|
||||||
float y,
|
float y,
|
||||||
@@ -129,7 +129,8 @@ class CORE_EXPORT ContextMenuController
|
@@ -123,7 +123,8 @@ class CORE_EXPORT ContextMenuController final
|
||||||
virtual bool ShowContextMenu(LocalFrame*,
|
bool ShowContextMenu(LocalFrame*,
|
||||||
const PhysicalOffset&,
|
const PhysicalOffset&,
|
||||||
ui::mojom::blink::MenuSourceType,
|
WebMenuSourceType,
|
||||||
- const MouseEvent* mouse_event);
|
- const MouseEvent* mouse_event = nullptr);
|
||||||
+ const MouseEvent* mouse_event,
|
+ const MouseEvent* mouse_event = nullptr,
|
||||||
+ bool do_not_show_context_menu = false);
|
+ bool do_not_show_context_menu = false);
|
||||||
|
|
||||||
bool ShouldShowContextMenuFromTouch(const ContextMenuData&);
|
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 +
|
chrome/browser/about_flags.cc | 1 +
|
||||||
.../engagement/important_sites_util.cc | 9 +++++
|
.../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 ++
|
.../internal/tracker_impl.cc | 3 ++
|
||||||
.../public/feature_configurations.cc | 7 ++++
|
.../public/feature_configurations.cc | 7 ++++
|
||||||
.../content/site_engagement_score.cc | 5 +++
|
.../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.cc | 30 ++++++++++++++++
|
||||||
components/site_engagement/core/features.h | 34 +++++++++++++++++++
|
components/site_engagement/core/features.h | 34 +++++++++++++++++++
|
||||||
.../Add-site-engagement-flag.inc | 10 ++++++
|
.../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.cc
|
||||||
create mode 100644 components/site_engagement/core/features.h
|
create mode 100644 components/site_engagement/core/features.h
|
||||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-site-engagement-flag.inc
|
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-site-engagement-flag.inc
|
||||||
@@ -26,18 +24,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||||
--- a/chrome/browser/about_flags.cc
|
--- a/chrome/browser/about_flags.cc
|
||||||
+++ b/chrome/browser/about_flags.cc
|
+++ b/chrome/browser/about_flags.cc
|
||||||
@@ -171,6 +171,7 @@
|
@@ -155,6 +155,7 @@
|
||||||
#include "components/sensitive_content/features.h"
|
#include "components/send_tab_to_self/features.h"
|
||||||
#include "components/services/heap_profiling/public/cpp/switches.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/site_engagement/core/features.h"
|
||||||
#include "components/shared_highlighting/core/common/shared_highlighting_features.h"
|
#include "components/shared_highlighting/core/common/shared_highlighting_features.h"
|
||||||
#include "components/sharing_message/features.h"
|
|
||||||
#include "components/signin/core/browser/dice_account_reconcilor_delegate.h"
|
#include "components/signin/core/browser/dice_account_reconcilor_delegate.h"
|
||||||
|
#include "components/signin/public/base/signin_buildflags.h"
|
||||||
diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.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
|
--- a/chrome/browser/engagement/important_sites_util.cc
|
||||||
+++ b/chrome/browser/engagement/important_sites_util.cc
|
+++ b/chrome/browser/engagement/important_sites_util.cc
|
||||||
@@ -29,6 +29,7 @@
|
@@ -33,6 +33,7 @@
|
||||||
#include "components/prefs/scoped_user_pref_update.h"
|
#include "components/prefs/scoped_user_pref_update.h"
|
||||||
#include "components/site_engagement/content/site_engagement_score.h"
|
#include "components/site_engagement/content/site_engagement_score.h"
|
||||||
#include "components/site_engagement/content/site_engagement_service.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/site_engagement/core/mojom/site_engagement_details.mojom.h"
|
||||||
#include "components/webapps/browser/banners/app_banner_settings_helper.h"
|
#include "components/webapps/browser/banners/app_banner_settings_helper.h"
|
||||||
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
||||||
@@ -343,6 +344,10 @@ void ImportantSitesUtil::RegisterProfilePrefs(
|
@@ -388,6 +389,10 @@ void ImportantSitesUtil::RegisterProfilePrefs(
|
||||||
// static
|
// static
|
||||||
std::set<std::string> ImportantSitesUtil::GetInstalledRegisterableDomains(
|
std::set<std::string> ImportantSitesUtil::GetInstalledRegisterableDomains(
|
||||||
Profile* profile) {
|
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<GURL> installed_origins = GetOriginsWithInstalledWebApps(profile);
|
||||||
std::set<std::string> registerable_domains;
|
std::set<std::string> registerable_domains;
|
||||||
|
|
||||||
@@ -357,6 +362,10 @@ std::vector<ImportantDomainInfo>
|
@@ -402,6 +407,10 @@ std::vector<ImportantDomainInfo>
|
||||||
ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile,
|
ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile,
|
||||||
size_t max_results) {
|
size_t max_results) {
|
||||||
SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime");
|
SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime");
|
||||||
@@ -67,59 +65,26 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/
|
|||||||
std::map<std::string, ImportantDomainInfo> important_info;
|
std::map<std::string, ImportantDomainInfo> important_info;
|
||||||
std::map<GURL, double> engagement_map;
|
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
|
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
|
--- a/components/feature_engagement/internal/tracker_impl.cc
|
||||||
+++ b/components/feature_engagement/internal/tracker_impl.cc
|
+++ b/components/feature_engagement/internal/tracker_impl.cc
|
||||||
@@ -23,6 +23,7 @@
|
@@ -24,6 +24,7 @@
|
||||||
#include "base/task/single_thread_task_runner.h"
|
|
||||||
#include "base/time/clock.h"
|
#include "base/time/clock.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
|
#include "build/chromeos_buildflags.h"
|
||||||
+#include "components/site_engagement/core/features.h"
|
+#include "components/site_engagement/core/features.h"
|
||||||
#include "components/feature_engagement/internal/availability_model_impl.h"
|
#include "components/feature_engagement/internal/availability_model_impl.h"
|
||||||
#include "components/feature_engagement/internal/blocked_iph_features.h"
|
#include "components/feature_engagement/internal/blocked_iph_features.h"
|
||||||
#include "components/feature_engagement/internal/chrome_variations_configuration.h"
|
#include "components/feature_engagement/internal/chrome_variations_configuration.h"
|
||||||
@@ -290,6 +291,8 @@ TrackerImpl::TrackerImpl(
|
@@ -212,6 +213,8 @@ TrackerImpl::TrackerImpl(
|
||||||
TrackerImpl::~TrackerImpl() = default;
|
TrackerImpl::~TrackerImpl() = default;
|
||||||
|
|
||||||
void TrackerImpl::NotifyEvent(const std::string& event) {
|
void TrackerImpl::NotifyEvent(const std::string& event) {
|
||||||
+ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement))
|
+ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement))
|
||||||
+ return;
|
+ return;
|
||||||
GetEventModelWriter()->IncrementEvent(event, time_provider_->GetCurrentDay());
|
event_model_->IncrementEvent(event, time_provider_->GetCurrentDay());
|
||||||
stats::RecordNotifyEvent(event, configuration_.get(),
|
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
|
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
|
--- a/components/feature_engagement/public/feature_configurations.cc
|
||||||
+++ b/components/feature_engagement/public/feature_configurations.cc
|
+++ b/components/feature_engagement/public/feature_configurations.cc
|
||||||
@@ -131,7 +96,7 @@ diff --git a/components/feature_engagement/public/feature_configurations.cc b/co
|
|||||||
#include "components/feature_engagement/public/configuration.h"
|
#include "components/feature_engagement/public/configuration.h"
|
||||||
#include "components/feature_engagement/public/event_constants.h"
|
#include "components/feature_engagement/public/event_constants.h"
|
||||||
#include "components/feature_engagement/public/feature_constants.h"
|
#include "components/feature_engagement/public/feature_constants.h"
|
||||||
@@ -118,6 +119,12 @@ std::optional<FeatureConfig> GetClientSideFeatureConfig(
|
@@ -112,6 +113,12 @@ std::optional<FeatureConfig> GetClientSideFeatureConfig(
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
|
#endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
|
||||||
@@ -143,11 +108,11 @@ diff --git a/components/feature_engagement/public/feature_configurations.cc b/co
|
|||||||
+
|
+
|
||||||
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
|
#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_LINUX) || \
|
||||||
BUILDFLAG(IS_CHROMEOS)
|
BUILDFLAG(IS_CHROMEOS)
|
||||||
if (kIPHPasswordsManagementBubbleAfterSaveFeature.name == feature->name) {
|
if (kIPHPasswordsAccountStorageFeature.name == feature->name) {
|
||||||
diff --git a/components/site_engagement/content/site_engagement_score.cc b/components/site_engagement/content/site_engagement_score.cc
|
diff --git a/components/site_engagement/content/site_engagement_score.cc b/components/site_engagement/content/site_engagement_score.cc
|
||||||
--- a/components/site_engagement/content/site_engagement_score.cc
|
--- a/components/site_engagement/content/site_engagement_score.cc
|
||||||
+++ b/components/site_engagement/content/site_engagement_score.cc
|
+++ b/components/site_engagement/content/site_engagement_score.cc
|
||||||
@@ -19,6 +19,7 @@
|
@@ -18,6 +18,7 @@
|
||||||
#include "components/content_settings/core/common/content_settings.h"
|
#include "components/content_settings/core/common/content_settings.h"
|
||||||
#include "components/content_settings/core/common/content_settings_types.h"
|
#include "components/content_settings/core/common/content_settings_types.h"
|
||||||
#include "components/content_settings/core/common/content_settings_utils.h"
|
#include "components/content_settings/core/common/content_settings_utils.h"
|
||||||
@@ -155,7 +120,7 @@ diff --git a/components/site_engagement/content/site_engagement_score.cc b/compo
|
|||||||
#include "components/site_engagement/content/engagement_type.h"
|
#include "components/site_engagement/content/engagement_type.h"
|
||||||
#include "components/site_engagement/content/site_engagement_metrics.h"
|
#include "components/site_engagement/content/site_engagement_metrics.h"
|
||||||
#include "third_party/blink/public/mojom/site_engagement/site_engagement.mojom.h"
|
#include "third_party/blink/public/mojom/site_engagement/site_engagement.mojom.h"
|
||||||
@@ -276,6 +277,10 @@ void SiteEngagementScore::Commit() {
|
@@ -275,6 +276,10 @@ void SiteEngagementScore::Commit() {
|
||||||
if (!UpdateScoreDict(*score_dict_))
|
if (!UpdateScoreDict(*score_dict_))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
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
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../chrome/browser/settings/SettingsActivity.java | 8 ++++++--
|
.../chrome/browser/settings/SettingsActivity.java | 9 +++++++--
|
||||||
.../components/browser_ui/settings/SettingsUtils.java | 4 ++++
|
.../components/browser_ui/settings/SettingsUtils.java | 4 ++++
|
||||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
|
||||||
@@ -1102,8 +1102,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
|
@@ -88,6 +88,7 @@ import org.chromium.components.browser_ui.settings.CustomDividerFragment;
|
||||||
|
import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher;
|
||||||
|
import org.chromium.components.browser_ui.settings.PaddedItemDecorationWithDivider;
|
||||||
|
import org.chromium.components.browser_ui.settings.SettingsLauncher;
|
||||||
|
+import org.chromium.components.browser_ui.settings.SettingsUtils;
|
||||||
|
import org.chromium.components.browser_ui.site_settings.BaseSiteSettingsFragment;
|
||||||
|
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
|
||||||
|
import org.chromium.components.browser_ui.util.TraceEventVectorDrawableCompat;
|
||||||
|
@@ -460,8 +461,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
|
||||||
|
finish();
|
||||||
return true;
|
return true;
|
||||||
} else if (item.getItemId() == R.id.menu_id_general_help) {
|
} else if (item.getItemId() == R.id.menu_id_general_help) {
|
||||||
RecordUserAction.record("Settings.MobileHelpAndFeedback");
|
|
||||||
- HelpAndFeedbackLauncherImpl.getForProfile(mProfile)
|
- HelpAndFeedbackLauncherImpl.getForProfile(mProfile)
|
||||||
- .show(this, getString(R.string.help_context_settings), null);
|
- .show(this, getString(R.string.help_context_settings), null);
|
||||||
+ if (mainFragment instanceof SettingsUtils.ISupportHelpAndFeedback) {
|
+ 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
|
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
|
--- 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
|
+++ b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsUtils.java
|
||||||
@@ -33,6 +33,10 @@ import java.util.ArrayList;
|
@@ -91,4 +91,8 @@ public class SettingsUtils {
|
||||||
/** A helper class for Settings. */
|
ToolbarUtils.setOverflowMenuVisibility(toolbar, visibility);
|
||||||
@NullMarked
|
return true;
|
||||||
public class SettingsUtils {
|
}
|
||||||
|
+
|
||||||
+ public interface ISupportHelpAndFeedback {
|
+ public interface ISupportHelpAndFeedback {
|
||||||
+ void onHelpAndFeebackPressed();
|
+ void onHelpAndFeebackPressed();
|
||||||
+ }
|
+ }
|
||||||
+
|
}
|
||||||
/**
|
|
||||||
* A helper that is used to load preferences from XML resources without causing a
|
|
||||||
* StrictModeViolation. See http://crbug.com/692125.
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc
|
diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc
|
||||||
--- a/base/android/content_uri_utils.cc
|
--- a/base/android/content_uri_utils.cc
|
||||||
+++ b/base/android/content_uri_utils.cc
|
+++ b/base/android/content_uri_utils.cc
|
||||||
@@ -140,6 +140,16 @@ static void JNI_ContentUriUtils_AddFileInfoToVector(
|
@@ -30,6 +30,16 @@ File OpenContentUriForRead(const FilePath& content_uri) {
|
||||||
Time::FromMillisecondsSinceUnixEpoch(last_modified));
|
return File(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
+File OpenContentUriForWrite(const FilePath& content_uri) {
|
+File OpenContentUriForWrite(const FilePath& content_uri) {
|
||||||
@@ -30,37 +30,37 @@ diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
std::string GetContentUriMimeType(const FilePath& content_uri) {
|
std::string GetContentUriMimeType(const FilePath& content_uri) {
|
||||||
JNIEnv* env = android::AttachCurrentThread();
|
JNIEnv* env = base::android::AttachCurrentThread();
|
||||||
return Java_ContentUriUtils_getMimeType(env, content_uri.value());
|
ScopedJavaLocalRef<jstring> j_uri =
|
||||||
diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h
|
diff --git a/base/android/content_uri_utils.h b/base/android/content_uri_utils.h
|
||||||
--- a/base/android/content_uri_utils.h
|
--- a/base/android/content_uri_utils.h
|
||||||
+++ b/base/android/content_uri_utils.h
|
+++ b/base/android/content_uri_utils.h
|
||||||
@@ -46,6 +46,10 @@ int ContentUriGetFd(
|
@@ -18,6 +18,10 @@ namespace base {
|
||||||
void ContentUriClose(
|
// Returns -1 if the URI is invalid.
|
||||||
const base::android::JavaRef<jobject>& java_parcel_file_descriptor);
|
BASE_EXPORT File OpenContentUriForRead(const FilePath& content_uri);
|
||||||
|
|
||||||
+// Opens a content URI for write and returns the file descriptor to the caller.
|
+// Opens a content URI for write and returns the file descriptor to the caller.
|
||||||
+// Returns -1 if the URI is invalid.
|
+// Returns -1 if the URI is invalid.
|
||||||
+BASE_EXPORT File OpenContentUriForWrite(const FilePath& content_uri);
|
+BASE_EXPORT File OpenContentUriForWrite(const FilePath& content_uri);
|
||||||
+
|
+
|
||||||
// Returns true if file exists and results are populated, else returns false.
|
// Check whether a content URI exists.
|
||||||
bool ContentUriGetFileInfo(const FilePath& content_uri,
|
BASE_EXPORT bool ContentUriExists(const FilePath& content_uri);
|
||||||
FileEnumerator::FileInfo* results);
|
|
||||||
diff --git a/base/android/java/src/org/chromium/base/ContentUriUtils.java b/base/android/java/src/org/chromium/base/ContentUriUtils.java
|
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
|
--- a/base/android/java/src/org/chromium/base/ContentUriUtils.java
|
||||||
+++ b/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;
|
@@ -23,6 +23,9 @@ import org.jni_zero.CalledByNative;
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
+import android.system.Os;
|
+import android.system.Os;
|
||||||
+import android.content.ContentProviderClient;
|
+import android.content.ContentProviderClient;
|
||||||
+
|
+
|
||||||
/** This class provides methods to access content URI schemes. */
|
/** This class provides methods to access content URI schemes. */
|
||||||
@JNINamespace("base")
|
public abstract class ContentUriUtils {
|
||||||
@NullMarked
|
private static final String TAG = "ContentUriUtils";
|
||||||
@@ -72,6 +75,36 @@ public abstract class ContentUriUtils {
|
@@ -87,6 +90,36 @@ public abstract class ContentUriUtils {
|
||||||
StreamUtil.closeQuietly(parcelFileDescriptor);
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ @CalledByNative
|
+ @CalledByNative
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
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.BromiteCustomContentSetting;
|
||||||
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
||||||
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
|
+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.components.content_settings.ContentSettingsType;
|
||||||
+import org.chromium.content_public.browser.BrowserContextHandle;
|
+import org.chromium.content_public.browser.BrowserContextHandle;
|
||||||
+
|
+
|
||||||
@@ -65,8 +65,8 @@ new file mode 100644
|
|||||||
+public class BromiteWebGLContentSetting extends BromiteCustomContentSetting {
|
+public class BromiteWebGLContentSetting extends BromiteCustomContentSetting {
|
||||||
+ public BromiteWebGLContentSetting() {
|
+ public BromiteWebGLContentSetting() {
|
||||||
+ super(/*contentSettingsType*/ ContentSettingsType.WEBGL,
|
+ super(/*contentSettingsType*/ ContentSettingsType.WEBGL,
|
||||||
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
|
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
|
||||||
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
|
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
|
||||||
+ /*allowException*/ true,
|
+ /*allowException*/ true,
|
||||||
+ /*preferenceKey*/ "webgl",
|
+ /*preferenceKey*/ "webgl",
|
||||||
+ /*profilePrefKey*/ "webgl");
|
+ /*profilePrefKey*/ "webgl");
|
||||||
@@ -85,11 +85,11 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
|
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
|
||||||
+ switch (value) {
|
+ switch (value) {
|
||||||
+ case ContentSetting.ALLOW:
|
+ case ContentSettingValues.ALLOW:
|
||||||
+ return R.string.website_settings_category_webgl_enabled;
|
+ return R.string.website_settings_category_webgl_enabled;
|
||||||
+ case ContentSetting.BLOCK:
|
+ case ContentSettingValues.BLOCK:
|
||||||
+ return R.string.website_settings_category_webgl_disabled;
|
+ return R.string.website_settings_category_webgl_disabled;
|
||||||
+ default:
|
+ default:
|
||||||
+ return 0;
|
+ return 0;
|
||||||
@@ -117,8 +117,8 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
|
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
|
||||||
+ return value != ContentSetting.BLOCK;
|
+ 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
|
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,
|
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
|
||||||
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
|
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
|
||||||
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
|
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
|
||||||
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
|
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
|
||||||
+
|
+
|
||||||
+ content_settings::WebsiteSettingsRegistry::GetInstance()
|
+ content_settings::WebsiteSettingsRegistry::GetInstance()
|
||||||
+ ->GetMutable(ContentSettingsType::WEBGL)
|
+ ->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
|
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
|
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
|
||||||
+++ b/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(
|
@@ -84,6 +84,13 @@ blink::WebContentSettingsClient* GetContentSettingsClientFor(
|
||||||
return settings;
|
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
|
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
|
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
|
||||||
+++ b/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 {
|
@@ -115,6 +115,8 @@ enum ReasonForCallingCanExecuteScripts {
|
||||||
|
|
||||||
enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag };
|
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
|
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
|
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
|
||||||
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
|
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
|
||||||
@@ -345,6 +345,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
|
@@ -313,6 +313,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,8 +232,8 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
|
|||||||
unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() {
|
unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() {
|
||||||
base::AutoLock locker(WebGLContextLimitLock());
|
base::AutoLock locker(WebGLContextLimitLock());
|
||||||
DCHECK(webgl_context_limits_initialized_);
|
DCHECK(webgl_context_limits_initialized_);
|
||||||
@@ -631,25 +638,6 @@ static String ExtractWebGLContextCreationError(
|
@@ -586,25 +593,6 @@ static String ExtractWebGLContextCreationError(
|
||||||
const Platform::WebGLContextInfo& info) {
|
const Platform::GraphicsInfo& info) {
|
||||||
StringBuilder builder;
|
StringBuilder builder;
|
||||||
builder.Append("Could not create a WebGL context");
|
builder.Append("Could not create a WebGL context");
|
||||||
- FormatWebGLStatusString(
|
- 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(),
|
FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(),
|
||||||
builder);
|
builder);
|
||||||
builder.Append('.');
|
builder.Append('.');
|
||||||
@@ -710,6 +698,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
|
@@ -664,6 +652,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
|
||||||
const CanvasContextCreationAttributesCore& attributes,
|
const CanvasContextCreationAttributesCore& attributes,
|
||||||
Platform::WebGLContextType context_type,
|
Platform::ContextType context_type,
|
||||||
Platform::WebGLContextInfo* context_info) {
|
Platform::GraphicsInfo* graphics_info) {
|
||||||
+ if (!AllowWebglForHost(host)) {
|
+ if (!AllowWebglForHost(host)) {
|
||||||
+ host->HostDispatchEvent(WebGLContextEvent::Create(
|
+ host->HostDispatchEvent(WebGLContextEvent::Create(
|
||||||
+ event_type_names::kWebglcontextcreationerror,
|
+ 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
|
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
|
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
|
||||||
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
|
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
|
||||||
@@ -1968,6 +1968,8 @@ class MODULES_EXPORT WebGLRenderingContextBase
|
@@ -1978,6 +1978,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
|
||||||
DOMArrayBufferView* pixels,
|
DOMArrayBufferView* pixels,
|
||||||
int64_t offset);
|
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 | 22 +++++
|
||||||
.../bromite_content_settings/WEBRTC.inc | 1 +
|
.../bromite_content_settings/WEBRTC.inc | 1 +
|
||||||
.../peer_connection_dependency_factory.cc | 6 ++
|
.../peer_connection_dependency_factory.cc | 6 ++
|
||||||
.../peerconnection/rtc_rtp_receiver.cc | 11 +++
|
.../peerconnection/rtc_rtp_receiver.cc | 10 ++
|
||||||
.../modules/peerconnection/rtc_rtp_sender.cc | 11 +++
|
.../modules/peerconnection/rtc_rtp_sender.cc | 10 ++
|
||||||
7 files changed, 172 insertions(+)
|
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/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/browser_ui/strings/bromite_content_settings/webrtc.grdp
|
||||||
create mode 100644 components/content_settings/core/browser/bromite_content_settings/webrtc.inc
|
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.BromiteCustomContentSetting;
|
||||||
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
|
||||||
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
|
+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.components.content_settings.ContentSettingsType;
|
||||||
+import org.chromium.content_public.browser.BrowserContextHandle;
|
+import org.chromium.content_public.browser.BrowserContextHandle;
|
||||||
+
|
+
|
||||||
@@ -62,8 +62,8 @@ new file mode 100644
|
|||||||
+public class BromiteWebRTCContentSetting extends BromiteCustomContentSetting {
|
+public class BromiteWebRTCContentSetting extends BromiteCustomContentSetting {
|
||||||
+ public BromiteWebRTCContentSetting() {
|
+ public BromiteWebRTCContentSetting() {
|
||||||
+ super(/*contentSettingsType*/ ContentSettingsType.WEBRTC,
|
+ super(/*contentSettingsType*/ ContentSettingsType.WEBRTC,
|
||||||
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
|
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
|
||||||
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
|
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
|
||||||
+ /*allowException*/ true,
|
+ /*allowException*/ true,
|
||||||
+ /*preferenceKey*/ "webrtc",
|
+ /*preferenceKey*/ "webrtc",
|
||||||
+ /*profilePrefKey*/ "webrtc");
|
+ /*profilePrefKey*/ "webrtc");
|
||||||
@@ -82,11 +82,11 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
|
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
|
||||||
+ switch (value) {
|
+ switch (value) {
|
||||||
+ case ContentSetting.ALLOW:
|
+ case ContentSettingValues.ALLOW:
|
||||||
+ return R.string.website_settings_category_webrtc_enabled;
|
+ return R.string.website_settings_category_webrtc_enabled;
|
||||||
+ case ContentSetting.BLOCK:
|
+ case ContentSettingValues.BLOCK:
|
||||||
+ return R.string.website_settings_category_webrtc_disabled;
|
+ return R.string.website_settings_category_webrtc_disabled;
|
||||||
+ default:
|
+ default:
|
||||||
+ // this will cause a runtime exception
|
+ // this will cause a runtime exception
|
||||||
@@ -115,8 +115,8 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
|
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
|
||||||
+ return value != ContentSetting.BLOCK;
|
+ 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
|
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,
|
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
|
||||||
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
|
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
|
||||||
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
|
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
|
||||||
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
|
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
|
||||||
+
|
+
|
||||||
+ content_settings::WebsiteSettingsRegistry::GetInstance()
|
+ content_settings::WebsiteSettingsRegistry::GetInstance()
|
||||||
+ ->GetMutable(ContentSettingsType::WEBRTC)
|
+ ->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
|
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
|
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
|
||||||
+++ b/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/modules/webrtc/webrtc_logging.h"
|
||||||
#include "third_party/blink/public/platform/platform.h"
|
#include "third_party/blink/public/platform/platform.h"
|
||||||
#include "third_party/blink/public/platform/task_type.h"
|
#include "third_party/blink/public/platform/task_type.h"
|
||||||
@@ -195,32 +195,31 @@ 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/platform/web_url.h"
|
||||||
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h"
|
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h"
|
||||||
#include "third_party/blink/public/web/web_document.h"
|
#include "third_party/blink/public/web/web_document.h"
|
||||||
@@ -1071,6 +1072,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
|
@@ -838,6 +839,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
|
||||||
// |request_multiple_routes|. Whether local IP addresses could be
|
|
||||||
// collected depends on if mic/camera permission is granted for this
|
|
||||||
// origin.
|
// origin.
|
||||||
|
WebRTCIPHandlingPolicy policy =
|
||||||
|
GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy);
|
||||||
+ blink::WebContentSettingsClient* settings = web_frame->GetContentSettingsClient();
|
+ blink::WebContentSettingsClient* settings = web_frame->GetContentSettingsClient();
|
||||||
+ if (settings && settings->AllowContentSetting(ContentSettingsType::WEBRTC, false)) {
|
+ if (settings && settings->AllowContentSetting(ContentSettingsType::WEBRTC, false)) {
|
||||||
+ webrtc_ip_handling_policy = mojom::blink::WebRtcIpHandlingPolicy::kDefault;
|
+ policy = kDefault;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
switch (webrtc_ip_handling_policy) {
|
switch (policy) {
|
||||||
// TODO(guoweis): specify the flag of disabling local candidate
|
// TODO(guoweis): specify the flag of disabling local candidate
|
||||||
// collection when webrtc is updated.
|
// collection when webrtc is updated.
|
||||||
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
|
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
|
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
|
||||||
+++ b/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 @@
|
@@ -12,6 +12,8 @@
|
||||||
#include "base/synchronization/lock.h"
|
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
|
||||||
#include "base/task/single_thread_task_runner.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/modules/webrtc/webrtc_logging.h"
|
||||||
+#include "third_party/blink/public/platform/web_content_settings_client.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/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/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_insertable_streams.h"
|
||||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
|
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
|
||||||
@@ -277,6 +280,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
|
@@ -312,6 +314,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
|
||||||
if (kind != "audio" && kind != "video")
|
if (kind != "audio" && kind != "video")
|
||||||
return nullptr;
|
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
|
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
|
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
|
||||||
+++ b/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 @@
|
@@ -17,6 +17,8 @@
|
||||||
#include "base/strings/to_string.h"
|
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
|
||||||
#include "base/task/single_thread_task_runner.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/modules/webrtc/webrtc_logging.h"
|
||||||
+#include "third_party/blink/public/platform/web_content_settings_client.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/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/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_encoding_options.h"
|
||||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
|
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
|
||||||
@@ -1020,6 +1023,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
|
@@ -1070,6 +1072,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
|
||||||
if (kind != "audio" && kind != "video")
|
if (kind != "audio" && kind != "video")
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
|
|||||||
@@ -3,44 +3,23 @@ Date: Mon, 7 Aug 2023 11:02:18 +0000
|
|||||||
Subject: Allow DocumentPiP if PopupsAndRedirects are active
|
Subject: Allow DocumentPiP if PopupsAndRedirects are active
|
||||||
|
|
||||||
Allow documentPiP api use only with content setting popup allowed
|
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
|
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 +++++++
|
.../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
|
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
|
--- 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
|
+++ b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
|
||||||
@@ -31,6 +31,7 @@
|
@@ -368,6 +368,13 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow(
|
||||||
#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(
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (!opener.GetFrame()->Loader().GetDocumentLoader()->GetContentSettings()->allow_popup) {
|
+ if (!opener.GetFrame()->GetContentSettings()->allow_popup) {
|
||||||
+ resolver->RejectWithDOMException(DOMExceptionCode::kNotAllowedError,
|
+ exception_state.ThrowDOMException(DOMExceptionCode::kNotAllowedError,
|
||||||
+ "Document PiP requires user popup permission");
|
+ "Document PiP requires user popup permission");
|
||||||
|
+ resolver->Reject(exception_state);
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -7,32 +7,30 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
chrome/browser/net/chrome_report_sender.cc | 1 +
|
chrome/browser/net/chrome_report_sender.cc | 1 +
|
||||||
.../browser/devtools/protocol/network_handler.cc | 2 ++
|
.../browser/devtools/protocol/network_handler.cc | 2 ++
|
||||||
.../cross_origin_embedder_policy_reporter.cc | 7 +++++--
|
.../cross_origin_embedder_policy_reporter.cc | 7 +++++--
|
||||||
|
.../cross_origin_opener_policy_reporter.cc | 16 +++++++---------
|
||||||
.../browser/network/reporting_service_proxy.cc | 3 +++
|
.../browser/network/reporting_service_proxy.cc | 3 +++
|
||||||
.../renderer_host/render_frame_host_impl.cc | 6 ------
|
.../renderer_host/render_frame_host_impl.cc | 6 ------
|
||||||
.../coop/cross_origin_opener_policy_reporter.cc | 16 +++++++---------
|
|
||||||
.../dip/document_isolation_policy_reporter.cc | 3 +++
|
|
||||||
.../web_package/signed_exchange_reporter.cc | 2 ++
|
.../web_package/signed_exchange_reporter.cc | 2 ++
|
||||||
...content_switch_dependent_feature_overrides.cc | 1 +
|
...content_switch_dependent_feature_overrides.cc | 1 +
|
||||||
.../Allow-building-without-enable_reporting.inc | 2 ++
|
.../Allow-building-without-enable_reporting.inc | 2 ++
|
||||||
net/reporting/reporting_header_parser.cc | 1 +
|
net/base/features.cc | 1 +
|
||||||
net/reporting/reporting_service.cc | 6 ++++++
|
net/reporting/reporting_service.cc | 6 ++++++
|
||||||
services/network/network_context.h | 6 +++---
|
services/network/network_context.h | 4 ++--
|
||||||
services/network/public/cpp/parsed_headers.cc | 1 +
|
|
||||||
services/network/public/mojom/BUILD.gn | 1 -
|
services/network/public/mojom/BUILD.gn | 1 -
|
||||||
.../network/public/mojom/network_context.mojom | 3 +++
|
.../network/public/mojom/network_context.mojom | 2 ++
|
||||||
.../core/frame/csp/content_security_policy.cc | 3 +++
|
.../core/frame/csp/content_security_policy.cc | 3 +++
|
||||||
.../blink/renderer/core/frame/local_frame.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.cc | 9 +++++++++
|
||||||
.../renderer/core/frame/reporting_context.h | 7 +++++--
|
.../renderer/core/frame/reporting_context.h | 7 +++++--
|
||||||
.../renderer/core/frame/reporting_observer.cc | 4 +---
|
.../renderer/core/frame/reporting_observer.cc | 3 +--
|
||||||
22 files changed, 64 insertions(+), 26 deletions(-)
|
20 files changed, 58 insertions(+), 25 deletions(-)
|
||||||
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Allow-building-without-enable_reporting.inc
|
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
|
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
|
--- a/chrome/browser/net/chrome_report_sender.cc
|
||||||
+++ b/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,
|
const std::string& report,
|
||||||
base::OnceClosure success_callback,
|
base::OnceClosure success_callback,
|
||||||
ErrorCallback error_callback) {
|
ErrorCallback error_callback) {
|
||||||
@@ -43,15 +41,15 @@ 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
|
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
|
--- a/content/browser/devtools/protocol/network_handler.cc
|
||||||
+++ b/content/browser/devtools/protocol/network_handler.cc
|
+++ b/content/browser/devtools/protocol/network_handler.cc
|
||||||
@@ -1670,6 +1670,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
|
@@ -1417,6 +1417,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
|
std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
|
||||||
std::vector<GURL> urls;
|
std::vector<GURL> urls;
|
||||||
frame_host->ForEachRenderFrameHostImplWithAction(
|
frame_host->ForEachRenderFrameHostWithAction(
|
||||||
@@ -1683,6 +1684,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
|
@@ -1430,6 +1431,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
|
||||||
});
|
});
|
||||||
return urls;
|
return urls;
|
||||||
}
|
}
|
||||||
@@ -84,64 +82,22 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/
|
|||||||
kType, context_url_, blink::mojom::ReportBody::New(std::move(list))));
|
kType, context_url_, blink::mojom::ReportBody::New(std::move(list))));
|
||||||
}
|
}
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
+ const std::optional<std::string>& endpoint =
|
+ const absl::optional<std::string>& endpoint =
|
||||||
+ report_only ? report_only_endpoint_ : endpoint_;
|
+ report_only ? report_only_endpoint_ : endpoint_;
|
||||||
if (endpoint) {
|
if (endpoint) {
|
||||||
base::DictValue body_to_pass;
|
base::Value::Dict body_to_pass;
|
||||||
for (const auto& pair : body) {
|
for (const auto& pair : body) {
|
||||||
@@ -125,6 +127,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
|
@@ -126,6 +128,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
|
||||||
network_anonymization_key_, std::move(body_to_pass));
|
/*user_agent=*/std::nullopt, std::move(body_to_pass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace content
|
} // namespace content
|
||||||
diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browser/network/reporting_service_proxy.cc
|
diff --git a/content/browser/network/cross_origin_opener_policy_reporter.cc b/content/browser/network/cross_origin_opener_policy_reporter.cc
|
||||||
--- a/content/browser/network/reporting_service_proxy.cc
|
--- a/content/browser/network/cross_origin_opener_policy_reporter.cc
|
||||||
+++ b/content/browser/network/reporting_service_proxy.cc
|
+++ b/content/browser/network/cross_origin_opener_policy_reporter.cc
|
||||||
@@ -11,6 +11,7 @@
|
|
||||||
#include "base/memory/ref_counted.h"
|
|
||||||
#include "base/unguessable_token.h"
|
|
||||||
#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"
|
|
||||||
@@ -250,12 +251,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
|
|
||||||
const std::string& group,
|
|
||||||
const std::string& type,
|
|
||||||
base::DictValue body) {
|
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
|
||||||
auto* rph = RenderProcessHost::FromID(render_process_id_);
|
|
||||||
if (!rph)
|
|
||||||
return;
|
|
||||||
rph->GetStoragePartition()->GetNetworkContext()->QueueReport(
|
|
||||||
type, group, url, reporting_source_, network_anonymization_key_,
|
|
||||||
std::move(body));
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
const ChildProcessId render_process_id_;
|
|
||||||
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
|
|
||||||
@@ -16912,12 +16912,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- // Send the crash report to the Reporting API.
|
|
||||||
- GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport(
|
|
||||||
- /*type=*/"crash", crash_reporting_group_, last_committed_url_,
|
|
||||||
- GetReportingSource(), isolation_info_.network_anonymization_key(),
|
|
||||||
- std::move(body));
|
|
||||||
}
|
|
||||||
|
|
||||||
base::DictValue RenderFrameHostImpl::ReadCrashReportAPIBody() {
|
|
||||||
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
|
|
||||||
@@ -18,25 +18,17 @@
|
@@ -18,25 +18,17 @@
|
||||||
#include "services/network/public/mojom/network_context.mojom.h"
|
#include "services/network/public/mojom/network_context.mojom.h"
|
||||||
#include "services/network/public/mojom/source_location.mojom.h"
|
#include "services/network/public/mojom/source_location.mojom.h"
|
||||||
@@ -177,15 +133,15 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
|
|||||||
std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
|
std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
|
||||||
switch (coop_value) {
|
switch (coop_value) {
|
||||||
case network::mojom::CrossOriginOpenerPolicyValue::kUnsafeNone:
|
case network::mojom::CrossOriginOpenerPolicyValue::kUnsafeNone:
|
||||||
@@ -59,6 +52,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
|
@@ -62,6 +55,7 @@ std::string ToString(network::mojom::CrossOriginOpenerPolicyValue coop_value) {
|
||||||
return "noopener-allow-popups";
|
return "restrict-properties-plus-coep";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
FrameTreeNode* TopLevelOpener(FrameTreeNode* frame) {
|
FrameTreeNode* TopLevelOpener(FrameTreeNode* frame) {
|
||||||
FrameTreeNode* opener =
|
FrameTreeNode* opener =
|
||||||
@@ -230,6 +224,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
|
@@ -233,6 +227,7 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
|
||||||
network::mojom::SourceLocationPtr source_location,
|
network::mojom::SourceLocationPtr source_location,
|
||||||
const std::string& reported_window_url,
|
const std::string& reported_window_url,
|
||||||
const std::string& initial_popup_url) const {
|
const std::string& initial_popup_url) const {
|
||||||
@@ -193,66 +149,83 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
|
|||||||
// Cross-Origin-Opener-Policy-Report-Only is not required to provide
|
// Cross-Origin-Opener-Policy-Report-Only is not required to provide
|
||||||
// endpoints.
|
// endpoints.
|
||||||
if (!coop_.report_only_reporting_endpoint)
|
if (!coop_.report_only_reporting_endpoint)
|
||||||
@@ -277,12 +272,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
|
@@ -280,12 +275,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
|
||||||
storage_partition_->GetNetworkContext()->QueueReport(
|
storage_partition_->GetNetworkContext()->QueueReport(
|
||||||
"coop", endpoint, context_url_, reporting_source_,
|
"coop", endpoint, context_url_, reporting_source_,
|
||||||
network_anonymization_key_, std::move(body));
|
network_anonymization_key_, std::nullopt, std::move(body));
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
|
void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
|
||||||
base::DictValue body,
|
base::Value::Dict body,
|
||||||
const std::string& endpoint,
|
const std::string& endpoint,
|
||||||
bool is_report_only) {
|
bool is_report_only) {
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
body.Set(kDisposition,
|
body.Set(kDisposition,
|
||||||
is_report_only ? kDispositionReporting : kDispositionEnforce);
|
is_report_only ? kDispositionReporting : kDispositionEnforce);
|
||||||
body.Set(kEffectivePolicy,
|
body.Set(kEffectivePolicy,
|
||||||
@@ -290,6 +287,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
|
@@ -294,6 +291,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
|
||||||
storage_partition_->GetNetworkContext()->QueueReport(
|
|
||||||
"coop", endpoint, context_url_, reporting_source_,
|
"coop", endpoint, context_url_, reporting_source_,
|
||||||
network_anonymization_key_, std::move(body));
|
network_anonymization_key_,
|
||||||
|
/*user_agent=*/std::nullopt, std::move(body));
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace content
|
} // namespace content
|
||||||
diff --git a/content/browser/security/dip/document_isolation_policy_reporter.cc b/content/browser/security/dip/document_isolation_policy_reporter.cc
|
diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browser/network/reporting_service_proxy.cc
|
||||||
--- a/content/browser/security/dip/document_isolation_policy_reporter.cc
|
--- a/content/browser/network/reporting_service_proxy.cc
|
||||||
+++ b/content/browser/security/dip/document_isolation_policy_reporter.cc
|
+++ b/content/browser/network/reporting_service_proxy.cc
|
||||||
@@ -7,6 +7,7 @@
|
@@ -11,6 +11,7 @@
|
||||||
#include <string_view>
|
#include "base/memory/ref_counted.h"
|
||||||
|
#include "base/unguessable_token.h"
|
||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
+#include "net/net_buildflags.h"
|
+#include "net/base/features.h"
|
||||||
#include "content/public/browser/storage_partition.h"
|
#include "content/browser/service_worker/service_worker_host.h"
|
||||||
#include "services/network/public/cpp/request_destination.h"
|
#include "content/browser/worker_host/dedicated_worker_host.h"
|
||||||
#include "services/network/public/mojom/network_context.mojom.h"
|
#include "content/browser/worker_host/shared_worker_host.h"
|
||||||
@@ -94,11 +95,13 @@ void DocumentIsolationPolicyReporter::QueueAndNotify(
|
@@ -175,12 +176,14 @@ class ReportingServiceProxyImpl : public blink::mojom::ReportingServiceProxy {
|
||||||
}
|
const std::string& group,
|
||||||
body_to_pass.Set("disposition", disposition);
|
const std::string& type,
|
||||||
|
base::Value::Dict body) {
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
if (auto* storage_partition = storage_partition_.get()) {
|
auto* rph = RenderProcessHost::FromID(render_process_id_);
|
||||||
storage_partition->GetNetworkContext()->QueueReport(
|
if (!rph)
|
||||||
kType, *endpoint, context_url_, reporting_source_,
|
return;
|
||||||
network_anonymization_key_, std::move(body_to_pass));
|
rph->GetStoragePartition()->GetNetworkContext()->QueueReport(
|
||||||
}
|
type, group, url, reporting_source_, network_anonymization_key_,
|
||||||
|
/*user_agent=*/std::nullopt, std::move(body));
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int render_process_id_;
|
||||||
|
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
|
||||||
|
@@ -14056,12 +14056,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- // Send the crash report to the Reporting API.
|
||||||
|
- GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport(
|
||||||
|
- /*type=*/"crash", /*group=*/"default", last_committed_url_,
|
||||||
|
- GetReportingSource(), isolation_info_.network_anonymization_key(),
|
||||||
|
- /*user_agent=*/std::nullopt, std::move(body));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderFrameHostImpl::SendCommitNavigation(
|
||||||
diff --git a/content/browser/web_package/signed_exchange_reporter.cc b/content/browser/web_package/signed_exchange_reporter.cc
|
diff --git a/content/browser/web_package/signed_exchange_reporter.cc b/content/browser/web_package/signed_exchange_reporter.cc
|
||||||
--- a/content/browser/web_package/signed_exchange_reporter.cc
|
--- a/content/browser/web_package/signed_exchange_reporter.cc
|
||||||
+++ b/content/browser/web_package/signed_exchange_reporter.cc
|
+++ b/content/browser/web_package/signed_exchange_reporter.cc
|
||||||
@@ -127,6 +127,7 @@ void ReportResult(
|
@@ -128,6 +128,7 @@ void ReportResult(
|
||||||
FrameTreeNodeId frame_tree_node_id,
|
int frame_tree_node_id,
|
||||||
network::mojom::SignedExchangeReportPtr report,
|
network::mojom::SignedExchangeReportPtr report,
|
||||||
const net::NetworkAnonymizationKey& network_anonymization_key) {
|
const net::NetworkAnonymizationKey& network_anonymization_key) {
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
FrameTreeNode* frame_tree_node =
|
FrameTreeNode* frame_tree_node =
|
||||||
FrameTreeNode::GloballyFindByID(frame_tree_node_id);
|
FrameTreeNode::GloballyFindByID(frame_tree_node_id);
|
||||||
if (!frame_tree_node)
|
if (!frame_tree_node)
|
||||||
@@ -141,6 +142,7 @@ void ReportResult(
|
@@ -142,6 +143,7 @@ void ReportResult(
|
||||||
DCHECK(partition);
|
DCHECK(partition);
|
||||||
partition->GetNetworkContext()->QueueSignedExchangeReport(
|
partition->GetNetworkContext()->QueueSignedExchangeReport(
|
||||||
std::move(report), network_anonymization_key);
|
std::move(report), network_anonymization_key);
|
||||||
@@ -278,24 +251,24 @@ new file mode 100644
|
|||||||
@@ -0,0 +1,2 @@
|
@@ -0,0 +1,2 @@
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kNetworkErrorLogging);
|
+SET_CROMITE_FEATURE_DISABLED(kNetworkErrorLogging);
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kReporting);
|
+SET_CROMITE_FEATURE_DISABLED(kReporting);
|
||||||
diff --git a/net/reporting/reporting_header_parser.cc b/net/reporting/reporting_header_parser.cc
|
diff --git a/net/base/features.cc b/net/base/features.cc
|
||||||
--- a/net/reporting/reporting_header_parser.cc
|
--- a/net/base/features.cc
|
||||||
+++ b/net/reporting/reporting_header_parser.cc
|
+++ b/net/base/features.cc
|
||||||
@@ -344,6 +344,7 @@ void ReportingHeaderParser::ProcessParsedReportingEndpointsHeader(
|
@@ -222,6 +222,7 @@ extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
|
||||||
const NetworkAnonymizationKey& network_anonymization_key,
|
base::Seconds(30));
|
||||||
const url::Origin& origin,
|
|
||||||
base::flat_map<std::string, std::string> header) {
|
#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
+ CHECK(false);
|
+#error Attempting to build with enable_reporting
|
||||||
DCHECK(GURL::SchemeIsCryptographic(origin.scheme()));
|
BASE_FEATURE(kDocumentReporting,
|
||||||
DCHECK(!reporting_source.is_empty());
|
"DocumentReporting",
|
||||||
DCHECK(network_anonymization_key.IsEmpty() ||
|
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||||
diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
|
diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
|
||||||
--- a/net/reporting/reporting_service.cc
|
--- a/net/reporting/reporting_service.cc
|
||||||
+++ b/net/reporting/reporting_service.cc
|
+++ b/net/reporting/reporting_service.cc
|
||||||
@@ -227,6 +227,12 @@ class ReportingServiceImpl : public ReportingService {
|
@@ -214,6 +214,12 @@ class ReportingServiceImpl : public ReportingService {
|
||||||
|
base::Value::Dict body,
|
||||||
int depth,
|
int depth,
|
||||||
base::TimeTicks queued_ticks,
|
base::TimeTicks queued_ticks) {
|
||||||
ReportingTargetType target_type) {
|
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
+ if ((true))
|
+ if ((true))
|
||||||
+ return;
|
+ return;
|
||||||
@@ -308,17 +281,12 @@ diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_servic
|
|||||||
diff --git a/services/network/network_context.h b/services/network/network_context.h
|
diff --git a/services/network/network_context.h b/services/network/network_context.h
|
||||||
--- a/services/network/network_context.h
|
--- a/services/network/network_context.h
|
||||||
+++ b/services/network/network_context.h
|
+++ b/services/network/network_context.h
|
||||||
@@ -504,14 +504,14 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
@@ -464,10 +464,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||||
const GURL& url,
|
|
||||||
const std::optional<base::UnguessableToken>& reporting_source,
|
const std::optional<base::UnguessableToken>& reporting_source,
|
||||||
const net::NetworkAnonymizationKey& network_anonymization_key,
|
const net::NetworkAnonymizationKey& network_anonymization_key,
|
||||||
- base::DictValue body) override;
|
const std::optional<std::string>& user_agent,
|
||||||
+ base::DictValue body);
|
- base::Value::Dict body) override;
|
||||||
void QueueEnterpriseReport(const std::string& type,
|
+ base::Value::Dict body);
|
||||||
const std::string& group,
|
|
||||||
const GURL& url,
|
|
||||||
- base::DictValue body) override;
|
|
||||||
+ base::DictValue body);
|
|
||||||
void QueueSignedExchangeReport(
|
void QueueSignedExchangeReport(
|
||||||
mojom::SignedExchangeReportPtr report,
|
mojom::SignedExchangeReportPtr report,
|
||||||
- const net::NetworkAnonymizationKey& network_anonymization_key) override;
|
- const net::NetworkAnonymizationKey& network_anonymization_key) override;
|
||||||
@@ -326,21 +294,10 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
|
|||||||
void AddDomainReliabilityContextForTesting(
|
void AddDomainReliabilityContextForTesting(
|
||||||
const url::Origin& origin,
|
const url::Origin& origin,
|
||||||
const GURL& upload_url,
|
const GURL& upload_url,
|
||||||
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(
|
|
||||||
}
|
|
||||||
|
|
||||||
#if BUILDFLAG(ENABLE_REPORTING)
|
|
||||||
+#error Attempting to build with enable_reporting
|
|
||||||
if (std::optional<std::string> reporting_endpoints =
|
|
||||||
headers->GetNormalizedHeader("Reporting-Endpoints")) {
|
|
||||||
parsed_headers->reporting_endpoints =
|
|
||||||
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
|
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
|
||||||
--- a/services/network/public/mojom/BUILD.gn
|
--- a/services/network/public/mojom/BUILD.gn
|
||||||
+++ b/services/network/public/mojom/BUILD.gn
|
+++ b/services/network/public/mojom/BUILD.gn
|
||||||
@@ -1899,7 +1899,6 @@ mojom("mojom") {
|
@@ -1467,7 +1467,6 @@ mojom("mojom") {
|
||||||
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
|
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
|
||||||
export_header_blink = "third_party/blink/public/platform/web_common.h"
|
export_header_blink = "third_party/blink/public/platform/web_common.h"
|
||||||
if (enable_reporting) {
|
if (enable_reporting) {
|
||||||
@@ -351,26 +308,18 @@ 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
|
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
|
--- a/services/network/public/mojom/network_context.mojom
|
||||||
+++ b/services/network/public/mojom/network_context.mojom
|
+++ b/services/network/public/mojom/network_context.mojom
|
||||||
@@ -1252,6 +1252,7 @@ interface NetworkContext {
|
@@ -1221,6 +1221,7 @@ interface NetworkContext {
|
||||||
// provided `network_anonymization_key`.
|
// provided |network_isolation_key|.
|
||||||
//
|
//
|
||||||
// Spec: https://w3c.github.io/reporting/#concept-reports
|
// Spec: https://w3c.github.io/reporting/#concept-reports
|
||||||
+ [EnableIf=enable_reporting]
|
+ [EnableIf=enable_reporting]
|
||||||
QueueReport(string type,
|
QueueReport(string type,
|
||||||
string group,
|
string group,
|
||||||
url.mojom.Url url,
|
url.mojom.Url url,
|
||||||
@@ -1259,6 +1260,7 @@ interface NetworkContext {
|
@@ -1234,6 +1235,7 @@ interface NetworkContext {
|
||||||
NetworkAnonymizationKey network_anonymization_key,
|
|
||||||
mojo_base.mojom.DictionaryValue body);
|
|
||||||
|
|
||||||
+ [EnableIf=enable_reporting]
|
|
||||||
QueueEnterpriseReport(string type,
|
|
||||||
string group,
|
|
||||||
url.mojom.Url url,
|
|
||||||
@@ -1269,6 +1271,7 @@ interface NetworkContext {
|
|
||||||
// Note that this queued report will never be delivered if no reporting
|
// Note that this queued report will never be delivered if no reporting
|
||||||
// endpoint matching is registered for with the provided
|
// endpoint matching is registered for with the provided
|
||||||
// `network_anonymization_key`.
|
// |network_isolation_key|.
|
||||||
+ [EnableIf=enable_reporting]
|
+ [EnableIf=enable_reporting]
|
||||||
QueueSignedExchangeReport(SignedExchangeReport report,
|
QueueSignedExchangeReport(SignedExchangeReport report,
|
||||||
NetworkAnonymizationKey network_anonymization_key);
|
NetworkAnonymizationKey network_anonymization_key);
|
||||||
@@ -378,23 +327,23 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
|
|||||||
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
|
diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
|
||||||
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
|
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
|
||||||
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
|
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
|
||||||
@@ -31,6 +31,7 @@
|
@@ -29,6 +29,7 @@
|
||||||
#include <set>
|
#include <optional>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
+#include "net/net_buildflags.h"
|
+#include "net/net_buildflags.h"
|
||||||
|
#include "base/containers/contains.h"
|
||||||
#include "base/debug/dump_without_crashing.h"
|
#include "base/debug/dump_without_crashing.h"
|
||||||
#include "base/feature_list.h"
|
#include "base/ranges/algorithm.h"
|
||||||
#include "base/metrics/histogram_functions.h"
|
@@ -1215,6 +1216,7 @@ void ContentSecurityPolicy::ReportViolation(
|
||||||
@@ -1383,6 +1384,7 @@ void ContentSecurityPolicy::ReportViolation(
|
|
||||||
ShouldBypassContentSecurityPolicy(KURL(violation_data->sourceFile()))) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
PostViolationReport(violation_data, context_frame, report_endpoints,
|
PostViolationReport(violation_data, context_frame, report_endpoints,
|
||||||
use_reporting_api);
|
use_reporting_api);
|
||||||
|
|
||||||
@@ -1390,6 +1392,7 @@ void ContentSecurityPolicy::ReportViolation(
|
@@ -1222,6 +1224,7 @@ void ContentSecurityPolicy::ReportViolation(
|
||||||
// `context_frame` (i.e. we're not processing 'frame-ancestors').
|
// `context_frame` (i.e. we're not processing 'frame-ancestors').
|
||||||
if (delegate_ && !context_frame)
|
if (delegate_ && !context_frame)
|
||||||
delegate_->DispatchViolationEvent(*violation_data, element);
|
delegate_->DispatchViolationEvent(*violation_data, element);
|
||||||
@@ -405,7 +354,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
|
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
|
--- a/third_party/blink/renderer/core/frame/local_frame.cc
|
||||||
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
|
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
|
||||||
@@ -50,6 +50,7 @@
|
@@ -45,6 +45,7 @@
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
|
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
|
||||||
#include "mojo/public/cpp/system/message_pipe.h"
|
#include "mojo/public/cpp/system/message_pipe.h"
|
||||||
@@ -413,8 +362,8 @@ 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/cpp/features.h"
|
||||||
#include "services/network/public/mojom/content_security_policy.mojom-blink.h"
|
#include "services/network/public/mojom/content_security_policy.mojom-blink.h"
|
||||||
#include "services/network/public/mojom/source_location.mojom-blink.h"
|
#include "services/network/public/mojom/source_location.mojom-blink.h"
|
||||||
@@ -2879,9 +2880,11 @@ DocumentResourceCoordinator* LocalFrame::GetDocumentResourceCoordinator() {
|
@@ -2670,9 +2671,11 @@ void LocalFrame::MainFrameFirstMeaningfulPaint() {
|
||||||
return CHECK_DEREF(GetDocument()).GetResourceCoordinator();
|
v8_local_compile_hints_producer_->GenerateData(kIsFinalData);
|
||||||
}
|
}
|
||||||
|
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
@@ -428,18 +377,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
|
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
|
--- a/third_party/blink/renderer/core/frame/local_frame.h
|
||||||
+++ b/third_party/blink/renderer/core/frame/local_frame.h
|
+++ b/third_party/blink/renderer/core/frame/local_frame.h
|
||||||
@@ -38,6 +38,7 @@
|
@@ -36,6 +36,7 @@
|
||||||
|
#include "base/time/time.h"
|
||||||
#include "base/unguessable_token.h"
|
#include "base/unguessable_token.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
|
||||||
+#include "net/net_buildflags.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/metrics/public/cpp/ukm_source_id.h"
|
||||||
#include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
|
@@ -661,8 +662,9 @@ class CORE_EXPORT LocalFrame final
|
||||||
@@ -674,7 +675,9 @@ class CORE_EXPORT LocalFrame final
|
void FinishedScrollSequence();
|
||||||
return client_hints_preferences_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
SmoothScrollSequencer* GetSmoothScrollSequencer() const;
|
||||||
|
-
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
mojom::blink::ReportingServiceProxy* GetReportingService();
|
mojom::blink::ReportingServiceProxy* GetReportingService();
|
||||||
+#endif
|
+#endif
|
||||||
@@ -454,30 +404,30 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
|
|||||||
#include "third_party/blink/renderer/core/frame/reporting_context.h"
|
#include "third_party/blink/renderer/core/frame/reporting_context.h"
|
||||||
|
|
||||||
+#include "net/net_buildflags.h"
|
+#include "net/net_buildflags.h"
|
||||||
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
|
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
|
||||||
#include "third_party/blink/public/platform/platform.h"
|
#include "third_party/blink/public/platform/platform.h"
|
||||||
#include "third_party/blink/public/platform/task_type.h"
|
#include "third_party/blink/public/platform/task_type.h"
|
||||||
@@ -59,7 +60,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
|
@@ -53,7 +54,9 @@ const char ReportingContext::kSupplementName[] = "ReportingContext";
|
||||||
ReportingContext::ReportingContext(ExecutionContext& context)
|
ReportingContext::ReportingContext(ExecutionContext& context)
|
||||||
: Supplement<ExecutionContext>(context),
|
: Supplement<ExecutionContext>(context),
|
||||||
execution_context_(context),
|
execution_context_(context),
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
reporting_service_(&context),
|
reporting_service_(&context),
|
||||||
+#endif
|
+#endif
|
||||||
receivers_(this, &context) {}
|
receiver_(this, &context) {}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
@@ -126,7 +129,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
|
@@ -117,7 +120,9 @@ void ReportingContext::Trace(Visitor* visitor) const {
|
||||||
visitor->Trace(observers_);
|
visitor->Trace(observers_);
|
||||||
visitor->Trace(report_buffer_);
|
visitor->Trace(report_buffer_);
|
||||||
visitor->Trace(execution_context_);
|
visitor->Trace(execution_context_);
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
visitor->Trace(reporting_service_);
|
visitor->Trace(reporting_service_);
|
||||||
+#endif
|
+#endif
|
||||||
visitor->Trace(receivers_);
|
visitor->Trace(receiver_);
|
||||||
Supplement<ExecutionContext>::Trace(visitor);
|
Supplement<ExecutionContext>::Trace(visitor);
|
||||||
}
|
}
|
||||||
@@ -149,6 +154,7 @@ void ReportingContext::CountReport(Report* report) {
|
@@ -139,6 +144,7 @@ void ReportingContext::CountReport(Report* report) {
|
||||||
UseCounter::Count(execution_context_, feature);
|
UseCounter::Count(execution_context_, feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,23 +435,23 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_
|
|||||||
const HeapMojoRemote<mojom::blink::ReportingServiceProxy>&
|
const HeapMojoRemote<mojom::blink::ReportingServiceProxy>&
|
||||||
ReportingContext::GetReportingService() const {
|
ReportingContext::GetReportingService() const {
|
||||||
if (!reporting_service_.is_bound()) {
|
if (!reporting_service_.is_bound()) {
|
||||||
@@ -158,6 +164,7 @@ ReportingContext::GetReportingService() const {
|
@@ -148,6 +154,7 @@ ReportingContext::GetReportingService() const {
|
||||||
}
|
}
|
||||||
return reporting_service_;
|
return reporting_service_;
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
void ReportingContext::NotifyInternal(Report* report) {
|
void ReportingContext::NotifyInternal(Report* report) {
|
||||||
if (!ShouldReportBeVisibleToObservers(report)) {
|
// Buffer the report.
|
||||||
@@ -184,6 +191,7 @@ void ReportingContext::NotifyInternal(Report* report) {
|
@@ -170,6 +177,7 @@ void ReportingContext::NotifyInternal(Report* report) {
|
||||||
|
|
||||||
void ReportingContext::SendToReportingAPI(Report* report,
|
void ReportingContext::SendToReportingAPI(Report* report,
|
||||||
const String& endpoint) const {
|
const String& endpoint) const {
|
||||||
+#if BUILDFLAG(ENABLE_REPORTING)
|
+#if BUILDFLAG(ENABLE_REPORTING)
|
||||||
const String& type = report->type();
|
const String& type = report->type();
|
||||||
if (!(type == ReportType::kCSPViolation || type == ReportType::kCSPHash ||
|
if (!(type == ReportType::kCSPViolation || type == ReportType::kDeprecation ||
|
||||||
type == ReportType::kDeprecation ||
|
type == ReportType::kPermissionsPolicyViolation ||
|
||||||
@@ -269,6 +277,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
|
@@ -227,6 +235,7 @@ void ReportingContext::SendToReportingAPI(Report* report,
|
||||||
url, endpoint, body->featureId(), body->disposition(), body->message(),
|
url, endpoint, body->featureId(), body->disposition(), body->message(),
|
||||||
body->sourceFile(), line_number, column_number);
|
body->sourceFile(), line_number, column_number);
|
||||||
}
|
}
|
||||||
@@ -520,7 +470,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/frame/reporting_observer.mojom-blink.h"
|
||||||
#include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h"
|
#include "third_party/blink/public/mojom/reporting/reporting.mojom-blink.h"
|
||||||
#include "third_party/blink/renderer/core/core_export.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:
|
private:
|
||||||
// Counts the use of a report type via UseCounter.
|
// Counts the use of a report type via UseCounter.
|
||||||
void CountReport(Report*);
|
void CountReport(Report*);
|
||||||
@@ -533,7 +483,7 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p
|
|||||||
void NotifyInternal(Report* report);
|
void NotifyInternal(Report* report);
|
||||||
// Send |report| via the Reporting API to |endpoint|.
|
// Send |report| via the Reporting API to |endpoint|.
|
||||||
void SendToReportingAPI(Report* report, const String& endpoint) const;
|
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
|
// This is declared mutable so that the service endpoint can be cached by
|
||||||
// const methods.
|
// const methods.
|
||||||
@@ -542,18 +492,17 @@ diff --git a/third_party/blink/renderer/core/frame/reporting_context.h b/third_p
|
|||||||
reporting_service_;
|
reporting_service_;
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
// There might be up to two ReportingObservers stored here: one that is called
|
HeapMojoReceiver<mojom::blink::ReportingObserver, ReportingContext> receiver_;
|
||||||
// from the CrossOriginEmbedderPolicyReporter and one that is called from the
|
};
|
||||||
diff --git a/third_party/blink/renderer/core/frame/reporting_observer.cc b/third_party/blink/renderer/core/frame/reporting_observer.cc
|
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
|
--- a/third_party/blink/renderer/core/frame/reporting_observer.cc
|
||||||
+++ b/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) {
|
bool ReportingObserver::ObservedType(const String& type) {
|
||||||
- return !options_->hasTypes() || !options_->types() ||
|
- return !options_->hasTypesNonNull() || options_->typesNonNull().empty() ||
|
||||||
- options_->types()->empty() ||
|
- options_->typesNonNull().Find(type) != kNotFound;
|
||||||
- options_->types()->Find(type) != kNotFound;
|
|
||||||
+ return false;
|
+ return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,85 +4,83 @@ Subject: Allow building without supervised users
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
chrome/android/BUILD.gn | 1 -
|
chrome/android/BUILD.gn | 1 -
|
||||||
.../chrome/browser/feedback/ChromeFeedbackCollector.java | 1 -
|
.../browser/feed/FeedSurfaceCoordinator.java | 5 +----
|
||||||
chrome/browser/feedback/android/BUILD.gn | 2 --
|
chrome/browser/BUILD.gn | 2 --
|
||||||
chrome/browser/prefs/chrome_pref_service_factory.cc | 6 ------
|
.../prefs/chrome_pref_service_factory.cc | 2 +-
|
||||||
chrome/browser/profiles/profile_attributes_entry.cc | 2 +-
|
.../profiles/profile_attributes_entry.cc | 2 +-
|
||||||
chrome/browser/profiles/profile_impl.cc | 5 +----
|
chrome/browser/profiles/profile_impl.cc | 5 +----
|
||||||
chrome/browser/profiles/profile_manager.cc | 7 -------
|
chrome/browser/profiles/profile_manager.cc | 20 -------------------
|
||||||
.../supervised_user/supervised_user_browser_utils.cc | 1 +
|
chrome/browser/ui/webui/managed_ui_handler.cc | 4 ----
|
||||||
chrome/browser/ui/webui/managed_ui_handler.cc | 4 ----
|
.../webui/management/management_ui_handler.cc | 5 -----
|
||||||
.../browser/ui/webui/management/management_ui_handler.cc | 4 ----
|
.../browser/supervised_user_pref_store.cc | 1 +
|
||||||
.../browser/android/content_filters_observer_bridge.cc | 2 +-
|
.../browser/supervised_user_preferences.cc | 6 +++++-
|
||||||
.../core/browser/supervised_user_pref_store.cc | 1 +
|
.../core/browser/supervised_user_service.cc | 1 +
|
||||||
.../core/browser/supervised_user_preferences.cc | 6 +++++-
|
.../core/browser/supervised_user_utils.cc | 1 +
|
||||||
.../core/browser/supervised_user_service.cc | 1 +
|
.../supervised_user/core/common/features.cc | 6 ++++++
|
||||||
components/supervised_user/core/common/features.cc | 1 +
|
14 files changed, 18 insertions(+), 43 deletions(-)
|
||||||
extensions/browser/api/management/management_api.cc | 1 +
|
|
||||||
16 files changed, 13 insertions(+), 32 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||||
--- a/chrome/android/BUILD.gn
|
--- a/chrome/android/BUILD.gn
|
||||||
+++ b/chrome/android/BUILD.gn
|
+++ b/chrome/android/BUILD.gn
|
||||||
@@ -840,7 +840,6 @@ if (_is_default_toolchain) {
|
@@ -749,7 +749,6 @@ if (current_toolchain == default_toolchain) {
|
||||||
|
"//components/dom_distiller/core:distiller_type_java",
|
||||||
|
"//components/ntp_tiles:ntp_tiles_enums_java",
|
||||||
"//components/offline_pages/core:offline_page_model_enums_java",
|
"//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/supervised_user/core/browser:supervised_user_utils_enum_javagen",
|
||||||
"//components/touch_to_search/core/browser:quick_action_category_enum_javagen",
|
"//net:effective_connection_type_java",
|
||||||
]
|
]
|
||||||
|
|
||||||
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
|
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
|
||||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
|
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java
|
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
|
||||||
@@ -96,7 +96,6 @@ public class ChromeFeedbackCollector extends FeedbackCollector<ChromeFeedbackCol
|
@@ -68,7 +68,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
|
||||||
// FamilyInfoFeedbackSource relies on IdentityManager which is not available for the
|
import org.chromium.components.feature_engagement.EventConstants;
|
||||||
// incognito profile.
|
import org.chromium.components.feature_engagement.Tracker;
|
||||||
if (!initParams.profile.isOffTheRecord()) {
|
import org.chromium.components.prefs.PrefService;
|
||||||
- sources.add(new FamilyInfoFeedbackSource(initParams.profile));
|
-import org.chromium.components.supervised_user.SupervisedUserPreferences;
|
||||||
}
|
import org.chromium.components.user_prefs.UserPrefs;
|
||||||
|
import org.chromium.third_party.android.swiperefresh.SwipeRefreshLayout;
|
||||||
|
import org.chromium.ui.base.DeviceFormFactor;
|
||||||
|
@@ -753,9 +752,7 @@ public class FeedSurfaceCoordinator
|
||||||
|
* Returns true if the supervised user feed should be displayed.
|
||||||
|
*/
|
||||||
|
public boolean shouldDisplaySupervisedFeed() {
|
||||||
|
- PrefService prefService = UserPrefs.get(mProfile);
|
||||||
|
- return SupervisedUserPreferences.isSubjectToParentalControls(prefService)
|
||||||
|
- && ChromeFeatureList.isEnabled(ChromeFeatureList.KID_FRIENDLY_CONTENT_FEED);
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
return sources;
|
/**
|
||||||
diff --git a/chrome/browser/feedback/android/BUILD.gn b/chrome/browser/feedback/android/BUILD.gn
|
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||||
--- a/chrome/browser/feedback/android/BUILD.gn
|
--- a/chrome/browser/BUILD.gn
|
||||||
+++ b/chrome/browser/feedback/android/BUILD.gn
|
+++ b/chrome/browser/BUILD.gn
|
||||||
@@ -8,7 +8,6 @@ import("//third_party/jni_zero/jni_zero.gni")
|
@@ -3237,8 +3237,6 @@ static_library("browser") {
|
||||||
|
"feed/android/refresh_task_scheduler_impl.cc",
|
||||||
generate_jni("jni_headers") {
|
"feed/android/refresh_task_scheduler_impl.h",
|
||||||
sources = [
|
"feed/android/web_feed_bridge.cc",
|
||||||
- "java/src/org/chromium/chrome/browser/feedback/FamilyInfoFeedbackSource.java",
|
- "feedback/android/family_info_feedback_source.cc",
|
||||||
"java/src/org/chromium/chrome/browser/feedback/ProcessIdFeedbackSource.java",
|
- "feedback/android/family_info_feedback_source.h",
|
||||||
"java/src/org/chromium/chrome/browser/feedback/SystemInfoFeedbackSource.java",
|
"file_select_helper_contacts_android.cc",
|
||||||
]
|
"file_select_helper_contacts_android.h",
|
||||||
@@ -56,7 +55,6 @@ android_library("java") {
|
"first_run/android/first_run_prefs.cc",
|
||||||
"java/src/org/chromium/chrome/browser/feedback/AsyncFeedbackSourceAdapter.java",
|
|
||||||
"java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java",
|
|
||||||
"java/src/org/chromium/chrome/browser/feedback/FallbackHelpAndFeedbackLauncherDelegate.java",
|
|
||||||
- "java/src/org/chromium/chrome/browser/feedback/FamilyInfoFeedbackSource.java",
|
|
||||||
"java/src/org/chromium/chrome/browser/feedback/FeedbackContextFeedbackSource.java",
|
|
||||||
"java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncher.java",
|
|
||||||
"java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherDelegate.java",
|
|
||||||
diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc
|
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
|
--- a/chrome/browser/prefs/chrome_pref_service_factory.cc
|
||||||
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc
|
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc
|
||||||
@@ -351,12 +351,6 @@ void PrepareFactory(
|
@@ -317,7 +317,7 @@ void PrepareFactory(
|
||||||
PrepareFactory(factory, pref_filename, policy_service,
|
policy::BrowserPolicyConnector* policy_connector) {
|
||||||
std::move(user_pref_store), std::move(extension_prefs), async,
|
factory->SetManagedPolicies(policy_service, policy_connector);
|
||||||
policy_connector);
|
factory->SetRecommendedPolicies(policy_service, policy_connector);
|
||||||
-
|
- if (supervised_user_settings) {
|
||||||
- scoped_refptr<PrefStore> supervised_user_prefs =
|
+ if (((false)) && supervised_user_settings) {
|
||||||
- base::MakeRefCounted<SupervisedUserPrefStore>(
|
scoped_refptr<PrefStore> supervised_user_prefs =
|
||||||
- family_link_settings_service, device_parental_controls);
|
base::MakeRefCounted<SupervisedUserPrefStore>(supervised_user_settings);
|
||||||
- DCHECK(async || supervised_user_prefs->IsInitializationComplete());
|
DCHECK(async || supervised_user_prefs->IsInitializationComplete());
|
||||||
- factory->set_supervised_user_prefs(supervised_user_prefs);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ResetOnLoadObserverImpl : public prefs::mojom::ResetOnLoadObserver {
|
|
||||||
diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc
|
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
|
--- a/chrome/browser/profiles/profile_attributes_entry.cc
|
||||||
+++ b/chrome/browser/profiles/profile_attributes_entry.cc
|
+++ b/chrome/browser/profiles/profile_attributes_entry.cc
|
||||||
@@ -466,7 +466,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const {
|
@@ -422,7 +422,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ProfileAttributesEntry::GetSupervisedUserId() const {
|
std::string ProfileAttributesEntry::GetSupervisedUserId() const {
|
||||||
@@ -94,7 +92,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
|
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
|
||||||
--- a/chrome/browser/profiles/profile_impl.cc
|
--- a/chrome/browser/profiles/profile_impl.cc
|
||||||
+++ b/chrome/browser/profiles/profile_impl.cc
|
+++ b/chrome/browser/profiles/profile_impl.cc
|
||||||
@@ -689,10 +689,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) {
|
@@ -690,10 +690,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) {
|
||||||
prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_);
|
prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_);
|
||||||
|
|
||||||
pref_change_registrar_.Init(prefs);
|
pref_change_registrar_.Init(prefs);
|
||||||
@@ -105,7 +103,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
|
|||||||
|
|
||||||
// Changes in the profile avatar.
|
// Changes in the profile avatar.
|
||||||
pref_change_registrar_.Add(
|
pref_change_registrar_.Add(
|
||||||
@@ -1618,6 +1614,7 @@ GURL ProfileImpl::GetHomePage() {
|
@@ -1631,6 +1627,7 @@ GURL ProfileImpl::GetHomePage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProfileImpl::UpdateSupervisedUserIdInStorage() {
|
void ProfileImpl::UpdateSupervisedUserIdInStorage() {
|
||||||
@@ -116,42 +114,44 @@ 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
|
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
|
||||||
--- a/chrome/browser/profiles/profile_manager.cc
|
--- a/chrome/browser/profiles/profile_manager.cc
|
||||||
+++ b/chrome/browser/profiles/profile_manager.cc
|
+++ b/chrome/browser/profiles/profile_manager.cc
|
||||||
@@ -1308,10 +1308,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
|
@@ -1214,23 +1214,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
|
||||||
profile->GetPrefs()->SetString(prefs::kProfileName, profile_name);
|
profile->GetPrefs()->SetString(prefs::kProfileName, profile_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (!profile->GetPrefs()->HasPrefPath(prefs::kSupervisedUserId)) {
|
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||||
|
- bool force_supervised_user_id =
|
||||||
|
-#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
|
- !ash::IsSigninBrowserContext(profile) &&
|
||||||
|
- !ash::IsLockScreenAppBrowserContext(profile) &&
|
||||||
|
-#endif
|
||||||
|
- command_line->HasSwitch(switches::kSupervisedUserId);
|
||||||
|
-
|
||||||
|
- if (force_supervised_user_id) {
|
||||||
|
- supervised_user_id =
|
||||||
|
- command_line->GetSwitchValueASCII(switches::kSupervisedUserId);
|
||||||
|
- }
|
||||||
|
- if (force_supervised_user_id ||
|
||||||
|
- !profile->GetPrefs()->HasPrefPath(prefs::kSupervisedUserId)) {
|
||||||
- profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
|
- profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
|
||||||
- supervised_user_id);
|
- supervised_user_id);
|
||||||
- }
|
- }
|
||||||
}
|
#if !BUILDFLAG(IS_ANDROID)
|
||||||
|
if (profile->IsNewProfile()) {
|
||||||
void ProfileManager::RegisterTestingProfile(std::unique_ptr<Profile> profile,
|
profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false);
|
||||||
@@ -2114,9 +2110,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
|
@@ -2038,9 +2021,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
|
||||||
init_params.icon_index =
|
init_params.icon_index =
|
||||||
profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex);
|
profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex);
|
||||||
|
|
||||||
- init_params.supervised_user_id =
|
- init_params.supervised_user_id =
|
||||||
- profile->GetPrefs()->GetString(prefs::kSupervisedUserId);
|
- profile->GetPrefs()->GetString(prefs::kSupervisedUserId);
|
||||||
-
|
-
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
user_manager::User* user =
|
user_manager::User* user =
|
||||||
ash::ProfileHelper::Get()->GetUserByProfile(profile);
|
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
|
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
|
--- a/chrome/browser/ui/webui/managed_ui_handler.cc
|
||||||
+++ b/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);
|
auto domain = static_cast<policy::PolicyDomain>(i);
|
||||||
policy_service->AddObserver(domain, this);
|
policy_service->AddObserver(domain, this);
|
||||||
}
|
}
|
||||||
@@ -165,44 +165,33 @@ 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
|
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
|
--- a/chrome/browser/ui/webui/management/management_ui_handler.cc
|
||||||
+++ b/chrome/browser/ui/webui/management/management_ui_handler.cc
|
+++ b/chrome/browser/ui/webui/management/management_ui_handler.cc
|
||||||
@@ -627,10 +627,6 @@ bool ManagementUIHandler::managed() const {
|
@@ -1496,11 +1496,6 @@ void ManagementUIHandler::AddObservers() {
|
||||||
|
|
||||||
|
pref_registrar_.Init(profile->GetPrefs());
|
||||||
|
|
||||||
void ManagementUIHandler::RegisterPrefChange(
|
|
||||||
PrefChangeRegistrar& pref_registrar) {
|
|
||||||
- pref_registrar_.Add(
|
- pref_registrar_.Add(
|
||||||
- prefs::kSupervisedUserId,
|
- prefs::kSupervisedUserId,
|
||||||
- base::BindRepeating(&ManagementUIHandler::UpdateManagedState,
|
- base::BindRepeating(&ManagementUIHandler::UpdateManagedState,
|
||||||
- base::Unretained(this)));
|
- base::Unretained(this)));
|
||||||
}
|
-
|
||||||
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||||
void ManagementUIHandler::UpdateManagedState() {
|
pref_registrar_.Add(
|
||||||
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
|
plugin_vm::prefs::kPluginVmDataCollectionAllowed,
|
||||||
--- 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
|
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
|
--- a/components/supervised_user/core/browser/supervised_user_pref_store.cc
|
||||||
+++ b/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() {
|
@@ -126,6 +126,7 @@ SupervisedUserPrefStore::~SupervisedUserPrefStore() {}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
void SupervisedUserPrefStore::OnNewSettingsAvailable(
|
||||||
|
const base::Value::Dict& settings) {
|
||||||
+ if ((true)) return;
|
+ if ((true)) return;
|
||||||
std::unique_ptr<PrefValueMap> old_prefs = std::move(prefs_);
|
std::unique_ptr<PrefValueMap> old_prefs = std::move(prefs_);
|
||||||
prefs_ = std::make_unique<PrefValueMap>();
|
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
|
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
|
--- a/components/supervised_user/core/browser/supervised_user_preferences.cc
|
||||||
+++ b/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) {
|
@@ -162,6 +162,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnableParentalControls(PrefService& pref_service) {
|
void EnableParentalControls(PrefService& pref_service) {
|
||||||
@@ -212,8 +201,8 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
|
|||||||
+ }
|
+ }
|
||||||
pref_service.SetString(prefs::kSupervisedUserId,
|
pref_service.SetString(prefs::kSupervisedUserId,
|
||||||
supervised_user::kChildAccountSUID);
|
supervised_user::kChildAccountSUID);
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
SetIsChildAccountStatusKnown(pref_service);
|
||||||
@@ -187,7 +191,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) {
|
@@ -184,7 +188,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsSubjectToParentalControls(const PrefService& pref_service) {
|
bool IsSubjectToParentalControls(const PrefService& pref_service) {
|
||||||
@@ -221,38 +210,41 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
|
|||||||
+ return false;
|
+ return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsGoogleSafeSearchEnforced(const PrefService& pref_service) {
|
bool AreExtensionsPermissionsEnabled(const PrefService& pref_service) {
|
||||||
diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc
|
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
|
--- a/components/supervised_user/core/browser/supervised_user_service.cc
|
||||||
+++ b/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(
|
@@ -189,6 +189,7 @@ FirstTimeInterstitialBannerState SupervisedUserService::GetUpdatedBannerState(
|
||||||
}
|
}
|
||||||
|
|
||||||
void SupervisedUserService::SetSettingsServiceActive(bool active) {
|
void SupervisedUserService::SetActive(bool active) {
|
||||||
+ active = false;
|
+ active = false;
|
||||||
settings_service_->SetActive(active);
|
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
|
||||||
|
@@ -99,6 +99,7 @@ GURL NormalizeUrl(const GURL& url) {
|
||||||
|
}
|
||||||
|
|
||||||
// Trigger a sync reconfig to enable/disable the right SU data types.
|
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
|
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
|
--- a/components/supervised_user/core/common/features.cc
|
||||||
+++ b/components/supervised_user/core/common/features.cc
|
+++ b/components/supervised_user/core/common/features.cc
|
||||||
@@ -19,6 +19,7 @@ namespace supervised_user {
|
@@ -122,4 +122,10 @@ bool IsShadowKidsApiWithSafeSitesEnabled() {
|
||||||
// Enables local parent approvals for the blocked website on the Family Link
|
return base::FeatureList::IsEnabled(kShadowKidsApiWithSafeSites);
|
||||||
// user's device.
|
}
|
||||||
BASE_FEATURE(kLocalWebApprovals, base::FEATURE_ENABLED_BY_DEFAULT);
|
|
||||||
|
+SET_CROMITE_FEATURE_DISABLED(kKidFriendlyContentFeed);
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals);
|
+SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals);
|
||||||
|
+#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
|
||||||
// TODO(crbug.com/391799078): Support local web approval for subframes on
|
+SET_CROMITE_FEATURE_DISABLED(kEnableExtensionsPermissionsForSupervisedUsersOnDesktop);
|
||||||
// Desktop.
|
+#endif
|
||||||
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
|
} // namespace supervised_user
|
||||||
+++ b/extensions/browser/api/management/management_api.cc
|
|
||||||
@@ -693,6 +693,7 @@ bool ManagementSetEnabledFunction::HasUnsupportedRequirements(
|
|
||||||
|
|
||||||
bool ManagementSetEnabledFunction::IsSupervisedExtensionApprovalFlowRequired(
|
|
||||||
const Extension* target_extension) const {
|
|
||||||
+ if ((true)) return false;
|
|
||||||
SupervisedUserExtensionsDelegate* supervised_user_extensions_delegate =
|
|
||||||
ManagementAPI::GetFactoryInstance()
|
|
||||||
->Get(browser_context())
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -4,26 +4,14 @@ Subject: Allow playing audio in background
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
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.cc | 11 ++++++++++-
|
||||||
.../renderer/platform/media/web_media_player_impl.h | 3 +++
|
.../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
|
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
|
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
|
||||||
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
|
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
|
||||||
@@ -1348,6 +1348,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
|
@@ -1197,6 +1197,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
|
||||||
return pipeline_metadata_.has_audio;
|
return pipeline_metadata_.has_audio;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,11 +22,11 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
|
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
|
||||||
std::optional<WebMediaPlayer::TrackId> enabled_track_id) {
|
const WebVector<WebMediaPlayer::TrackId>& enabledTrackIds) {
|
||||||
DCHECK(main_task_runner_->BelongsToCurrentThread());
|
DCHECK(main_task_runner_->BelongsToCurrentThread());
|
||||||
@@ -3745,7 +3751,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
|
@@ -3541,7 +3547,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.
|
// Audio only stream is allowed to play when in background.
|
||||||
- if (!HasVideo() && preserve_audio)
|
- if (!HasVideo() && preserve_audio)
|
||||||
+ //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
|
+ //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)
|
+ if (!HasVideoNonEmptySize() && preserve_audio)
|
||||||
return false;
|
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
|
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
|
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.h
|
||||||
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h
|
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.h
|
||||||
@@ -214,6 +214,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl
|
@@ -212,6 +212,9 @@ class PLATFORM_EXPORT WebMediaPlayerImpl
|
||||||
bool HasVideo() const override;
|
bool HasVideo() const override;
|
||||||
bool HasAudio() 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;
|
+ bool HasVideoNonEmptySize() const;
|
||||||
+
|
+
|
||||||
void EnabledAudioTracksChanged(
|
void EnabledAudioTracksChanged(
|
||||||
std::optional<WebMediaPlayer::TrackId> enabled_track_id) override;
|
const WebVector<WebMediaPlayer::TrackId>& enabledTrackIds) override;
|
||||||
void SelectedVideoTrackChanged(
|
void SelectedVideoTrackChanged(
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -3,8 +3,6 @@ Date: Mon, 13 Nov 2023 14:26:00 +0000
|
|||||||
Subject: Always allow inspect fallback
|
Subject: Always allow inspect fallback
|
||||||
|
|
||||||
Always enable 'inspect fallback' in 'chrome://inspect/#devices'
|
Always enable 'inspect fallback' in 'chrome://inspect/#devices'
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
---
|
||||||
chrome/browser/resources/inspect/inspect.js | 3 ++-
|
chrome/browser/resources/inspect/inspect.js | 3 ++-
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
@@ -12,7 +10,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
|
diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resources/inspect/inspect.js
|
||||||
--- a/chrome/browser/resources/inspect/inspect.js
|
--- a/chrome/browser/resources/inspect/inspect.js
|
||||||
+++ b/chrome/browser/resources/inspect/inspect.js
|
+++ b/chrome/browser/resources/inspect/inspect.js
|
||||||
@@ -46,6 +46,7 @@ if ('browser-inspector' in queryParamsObject) {
|
@@ -50,6 +50,7 @@ if ('browser-inspector' in queryParamsObject) {
|
||||||
})();
|
})();
|
||||||
|
|
||||||
function isVersionNewerThanHost(version) {
|
function isVersionNewerThanHost(version) {
|
||||||
@@ -20,7 +18,7 @@ diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resour
|
|||||||
if (!HOST_CHROME_VERSION) {
|
if (!HOST_CHROME_VERSION) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -600,7 +601,7 @@ function formatValue(data, property) {
|
@@ -561,7 +562,7 @@ function formatValue(data, property) {
|
||||||
function addFavicon(row, data) {
|
function addFavicon(row, data) {
|
||||||
const favicon = document.createElement('img');
|
const favicon = document.createElement('img');
|
||||||
if (data['faviconUrl']) {
|
if (data['faviconUrl']) {
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
From: Your Name <you@example.com>
|
||||||
Date: Wed, 28 Dec 2022 07:19:58 +0000
|
Date: Wed, 28 Dec 2022 07:19:58 +0000
|
||||||
Subject: Always open browser controls in new tab
|
Subject: Always open browser controls in new tab
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
---
|
||||||
.../chrome/browser/tab/TabContextMenuItemDelegate.java | 4 ++++
|
.../chrome/browser/tab/TabContextMenuItemDelegate.java | 4 ++++
|
||||||
1 file changed, 4 insertions(+)
|
1 file changed, 4 insertions(+)
|
||||||
@@ -10,34 +9,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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java
|
||||||
+++ b/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.base.metrics.RecordUserAction;
|
||||||
import org.chromium.build.annotations.NullMarked;
|
import org.chromium.base.supplier.Supplier;
|
||||||
import org.chromium.build.annotations.Nullable;
|
|
||||||
+import org.chromium.cc.input.BrowserControlsState;
|
+import org.chromium.cc.input.BrowserControlsState;
|
||||||
|
import org.chromium.chrome.browser.DefaultBrowserInfo;
|
||||||
import org.chromium.chrome.browser.IntentHandler;
|
import org.chromium.chrome.browser.IntentHandler;
|
||||||
import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpenerImpl;
|
|
||||||
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
|
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
|
||||||
@@ -43,6 +44,7 @@ import org.chromium.chrome.browser.preferences.Pref;
|
@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
||||||
import org.chromium.chrome.browser.price_tracking.PriceDropNotificationManagerFactory;
|
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
|
||||||
import org.chromium.chrome.browser.printing.TabPrinter;
|
import org.chromium.chrome.browser.offlinepages.RequestCoordinatorBridge;
|
||||||
import org.chromium.chrome.browser.profiles.Profile;
|
import org.chromium.chrome.browser.profiles.Profile;
|
||||||
+import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper;
|
+import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper;
|
||||||
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
||||||
|
import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher;
|
||||||
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
||||||
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
|
@@ -219,6 +221,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
||||||
@@ -322,6 +324,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
Referrer referrer,
|
||||||
@Nullable Referrer referrer,
|
|
||||||
boolean navigateToTab,
|
boolean navigateToTab,
|
||||||
@Nullable AdditionalNavigationParams additionalNavigationParams) {
|
@Nullable AdditionalNavigationParams additionalNavigationParams) {
|
||||||
+ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true);
|
+ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true);
|
||||||
RecordUserAction.record("MobileNewTabOpened");
|
RecordUserAction.record("MobileNewTabOpened");
|
||||||
RecordUserAction.record("LinkOpenedInNewTab");
|
RecordUserAction.record("LinkOpenedInNewTab");
|
||||||
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
|
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
|
||||||
@@ -342,6 +345,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
@@ -235,6 +238,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
||||||
* @param url The URL to open.
|
|
||||||
*/
|
@Override
|
||||||
public void onOpenInNewTabInGroup(GURL url, @Nullable Referrer referrer) {
|
public void onOpenInNewTabInGroup(GURL url, Referrer referrer) {
|
||||||
+ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true);
|
+ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true);
|
||||||
RecordUserAction.record("MobileNewTabOpened");
|
RecordUserAction.record("MobileNewTabOpened");
|
||||||
RecordUserAction.record("LinkOpenedInNewTab");
|
RecordUserAction.record("LinkOpenedInNewTab");
|
||||||
|
|||||||
@@ -7,56 +7,31 @@ Ignore any partner-provided home page.
|
|||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ----
|
.../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ----
|
||||||
.../chrome/browser/new_tab_url/DseNewTabUrlManager.java | 2 +-
|
|
||||||
.../partnerbookmarks/PartnerBookmarksProviderIterator.java | 1 +
|
|
||||||
.../partnercustomizations/PartnerBrowserCustomizations.java | 2 +-
|
.../partnercustomizations/PartnerBrowserCustomizations.java | 2 +-
|
||||||
.../org/chromium/components/search_engines/TemplateUrl.java | 1 +
|
.../org/chromium/components/search_engines/TemplateUrl.java | 1 +
|
||||||
.../search_engines/android/template_url_service_android.cc | 1 +
|
.../search_engines/android/template_url_service_android.cc | 1 +
|
||||||
.../always-use-new-tab-page-for-default-home-page.inc | 1 +
|
.../always-use-new-tab-page-for-default-home-page.inc | 2 ++
|
||||||
7 files changed, 6 insertions(+), 6 deletions(-)
|
5 files changed, 5 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
|
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java
|
||||||
+++ b/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
|
@@ -152,10 +152,6 @@ public class HomepageManager
|
||||||
* tab page if the homepage button is force enabled via flag.
|
* tab page if the homepage button is force enabled via flag.
|
||||||
*/
|
*/
|
||||||
public GURL getDefaultHomepageGurl(boolean isIncognito) {
|
public static GURL getDefaultHomepageGurl() {
|
||||||
- if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) {
|
- if (PartnerBrowserCustomizations.getInstance().isHomepageProviderAvailableAndEnabled()) {
|
||||||
- return assumeNonNull(PartnerBrowserCustomizations.getInstance().getHomePageUrl());
|
- return PartnerBrowserCustomizations.getInstance().getHomePageUrl();
|
||||||
- }
|
- }
|
||||||
-
|
-
|
||||||
String homepagePartnerDefaultGurlSerialized =
|
String homepagePartnerDefaultGurlSerialized =
|
||||||
ChromeSharedPreferences.getInstance()
|
ChromeSharedPreferences.getInstance()
|
||||||
.readString(
|
.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()
|
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||||
@@ -213,7 +213,7 @@ public class PartnerBrowserCustomizations {
|
@@ -212,7 +212,7 @@ public class PartnerBrowserCustomizations {
|
||||||
& ApplicationInfo.FLAG_SYSTEM)
|
& ApplicationInfo.FLAG_SYSTEM)
|
||||||
== 1
|
== 1
|
||||||
|| !VersionInfo.isStableBuild();
|
|| !VersionInfo.isStableBuild();
|
||||||
@@ -68,7 +43,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
|
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
|
--- 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
|
+++ b/components/search_engines/android/java/src/org/chromium/components/search_engines/TemplateUrl.java
|
||||||
@@ -110,6 +110,7 @@ public class TemplateUrl {
|
@@ -69,6 +69,7 @@ public class TemplateUrl {
|
||||||
* prepopulated_engines.json.
|
* prepopulated_engines.json.
|
||||||
*/
|
*/
|
||||||
public String getNewTabURL() {
|
public String getNewTabURL() {
|
||||||
@@ -79,18 +54,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
|
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
|
--- a/components/search_engines/android/template_url_service_android.cc
|
||||||
+++ b/components/search_engines/android/template_url_service_android.cc
|
+++ b/components/search_engines/android/template_url_service_android.cc
|
||||||
@@ -426,6 +426,7 @@ bool TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
|
@@ -330,6 +330,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
|
||||||
jimage_translate_source_language_param_key,
|
const base::android::JavaParamRef<jstring>&
|
||||||
const base::android::JavaRef<jstring>&
|
jimage_translate_target_language_param_key,
|
||||||
jimage_translate_target_language_param_key) {
|
jboolean set_as_default) {
|
||||||
+ if ((true)) return false;
|
+ if ((true)) return false;
|
||||||
// The function is scheduled to run only when the service is loaded, see
|
// Check if there is already a search engine created from Play API.
|
||||||
// `TemplateUrlService#runWhenLoaded()`.
|
TemplateURLService::TemplateURLVector template_urls =
|
||||||
CHECK(template_url_service_->loaded());
|
template_url_service_->GetTemplateURLs();
|
||||||
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
|
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
|
new file mode 100755
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/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
|
||||||
@@ -0,0 +1 @@
|
@@ -0,0 +1,2 @@
|
||||||
|
+SET_CROMITE_FEATURE_DISABLED(kNewTabSearchEngineUrlAndroid);
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kPartnerCustomizationsUma);
|
+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
|
need: Add-cromite-flags-support.patch
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
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 +++++++++
|
.../Toolbar-Scroll-Ablation-flag.grdp | 9 +++++++++
|
||||||
.../java/res/xml/accessibility_preferences.xml | 6 ++++++
|
.../java/res/xml/accessibility_preferences.xml | 6 ++++++
|
||||||
.../about_flags_cc/Toolbar-Scroll-Ablation-flag.inc | 12 ++++++++++++
|
.../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 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
|
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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /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
|
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
|
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
|
||||||
+++ b/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:key="disable_toolbar_swipeup"
|
||||||
android:title="@string/disable_toolbar_swipe_up" />
|
android:title="@string/disable_toolbar_swipe_up" />
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,772 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Tue, 18 Jun 2024 15:31:12 +0000
|
|
||||||
Subject: Ask to restart on connection change
|
|
||||||
|
|
||||||
Experimental use of the OfflineDetector to identify network change, disabled by default.
|
|
||||||
If it is active, when the network change is detected by the android API,
|
|
||||||
the user is warned and asked to restart the browser.
|
|
||||||
Technically, blink's freeze mode is exploited, which allows javascript
|
|
||||||
execution and network calls to be blocked.
|
|
||||||
A preventive shutdown of all service workers is carried out, to inhibit the sending
|
|
||||||
of messages over the new ip, since the service workers have access
|
|
||||||
to the background fetch api.
|
|
||||||
The freeze and resume event of javascript is deliberately left, since the
|
|
||||||
page could deduct it in any case. In any case during the execution of
|
|
||||||
the javascript events, the page can only access the FetchLater api,
|
|
||||||
which is disabled by another patch.
|
|
||||||
The patch also changes the standard behaviour of the browser, allowing visible pages to freeze.
|
|
||||||
This could lead to the failure of some DCHECKS related to the handling of UI messages at unfreeze,
|
|
||||||
but since the goal is a reboot, this should not be the case.
|
|
||||||
|
|
||||||
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 ++-
|
|
||||||
.../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 ++
|
|
||||||
.../Ask-for-restart-on-connection-change.grdp | 15 +++
|
|
||||||
.../java/res/layout/floating_snackbar.xml | 10 ++
|
|
||||||
.../ui/messages/snackbar/Snackbar.java | 16 +++
|
|
||||||
.../ui/messages/snackbar/SnackbarManager.java | 6 +
|
|
||||||
.../ui/messages/snackbar/SnackbarView.java | 10 ++
|
|
||||||
.../web_contents/web_contents_android.cc | 16 +++
|
|
||||||
.../web_contents/web_contents_android.h | 1 +
|
|
||||||
.../browser/web_contents/web_contents_impl.cc | 2 +
|
|
||||||
.../browser/webcontents/WebContentsImpl.java | 8 ++
|
|
||||||
.../content_public/browser/WebContents.java | 2 +
|
|
||||||
.../browser/test/mock/MockWebContents.java | 3 +
|
|
||||||
.../Ask-for-restart-on-connection-change.inc | 13 ++
|
|
||||||
.../Ask-for-restart-on-connection-change.inc | 3 +
|
|
||||||
.../Ask-for-restart-on-connection-change.inc | 1 +
|
|
||||||
.../blink/renderer/core/dom/document.cc | 1 +
|
|
||||||
.../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(-)
|
|
||||||
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
|
|
||||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Ask-for-restart-on-connection-change.inc
|
|
||||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Ask-for-restart-on-connection-change.inc
|
|
||||||
|
|
||||||
diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml
|
|
||||||
--- a/chrome/android/java/res/xml/homepage_preferences.xml
|
|
||||||
+++ b/chrome/android/java/res/xml/homepage_preferences.xml
|
|
||||||
@@ -25,6 +25,12 @@ found in the LICENSE file.
|
|
||||||
app:featureName="enable-show-ntp-at-startup"
|
|
||||||
app:needRestart="true" />
|
|
||||||
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:title="@string/ask_to_restart_on_connection_change_title"
|
|
||||||
+ android:summary="@string/ask_to_restart_on_connection_change_summary"
|
|
||||||
+ app:featureName="ask-for-restart-on-connection-change"
|
|
||||||
+ app:needRestart="true" />
|
|
||||||
+
|
|
||||||
<org.chromium.chrome.browser.homepage.settings.RadioButtonGroupHomepagePreference
|
|
||||||
android:key="homepage_radio_group"
|
|
||||||
android:selectable="false"
|
|
||||||
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
|
|
||||||
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
|
|
||||||
public void setConnectionState(@ConnectionState int connectionState) {
|
|
||||||
Log.i(TAG, "setConnectionState connectionState=" + connectionState);
|
|
||||||
- if (mConnectionState == connectionState) return;
|
|
||||||
mConnectionState = connectionState;
|
|
||||||
if (mObserver != null) mObserver.onConnectionStateChanged(mConnectionState);
|
|
||||||
}
|
|
||||||
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;
|
|
||||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
||||||
import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector;
|
|
||||||
import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState;
|
|
||||||
-import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector;
|
|
||||||
-import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState;
|
|
||||||
import org.chromium.components.variations.VariationsAssociatedData;
|
|
||||||
|
|
||||||
+import android.app.Activity;
|
|
||||||
+import org.chromium.base.supplier.MonotonicObservableSupplier;
|
|
||||||
+import org.chromium.url.GURL;
|
|
||||||
+import org.chromium.chrome.R;
|
|
||||||
+import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton;
|
|
||||||
+import org.chromium.chrome.browser.layouts.LayoutManager;
|
|
||||||
+import org.chromium.chrome.browser.compositor.layouts.Layout;
|
|
||||||
+import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl;
|
|
||||||
+import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver;
|
|
||||||
+import org.chromium.chrome.browser.flags.cromite.sAskForRestartOnConnectionChange;
|
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager;
|
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
|
|
||||||
+import org.chromium.chrome.browser.hub.HubLayout;
|
|
||||||
+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.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;
|
|
||||||
*/
|
|
||||||
@NullMarked
|
|
||||||
class OfflineDetector
|
|
||||||
- implements ConnectivityDetector.Observer, ApplicationStatus.ApplicationStateListener {
|
|
||||||
+ implements ConnectivityDetector.Observer, ApplicationStatus.ApplicationStateListener,
|
|
||||||
+ SnackbarManager.SnackbarController, SceneChangeObserver {
|
|
||||||
// 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
|
|
||||||
|
|
||||||
private static final String TAG = "OfflineDetector";
|
|
||||||
|
|
||||||
+ private long mLastNetworkId = 0;
|
|
||||||
+ private MonotonicObservableSupplier<TabModelSelector> mTabModelSelectorSupplier;
|
|
||||||
+ private MonotonicObservableSupplier<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
|
|
||||||
OfflineDetector(
|
|
||||||
Callback<Boolean> isOfflineCallback,
|
|
||||||
Callback<Boolean> isForegroundCallback,
|
|
||||||
- Context context) {
|
|
||||||
+ Context context,
|
|
||||||
+ MonotonicObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
|
|
||||||
+ MonotonicObservableSupplier<LayoutManager> layoutManager,
|
|
||||||
+ Supplier<SnackbarManager> snackbarManagerSupplier) {
|
|
||||||
+ mTabModelSelectorSupplier = tabModelSelectorSupplier;
|
|
||||||
+ mSnackbarManagerSupplier = snackbarManagerSupplier;
|
|
||||||
+ mLayoutManager = layoutManager;
|
|
||||||
mIsOfflineCallback = isOfflineCallback;
|
|
||||||
mIsForegroundCallback = isForegroundCallback;
|
|
||||||
mContext = context;
|
|
||||||
@@ -235,6 +268,75 @@ class OfflineDetector
|
|
||||||
updateState();
|
|
||||||
}
|
|
||||||
|
|
||||||
+ private void checkLastNetworkId() {
|
|
||||||
+ if (!sAskForRestartOnConnectionChange.getInstance().isEnabled())
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ long currentNetworkId = NetworkChangeNotifier.getInstance().getCurrentDefaultNetId();
|
|
||||||
+ Log.i(TAG, "onConnectionTypeChanged: currentNetworkId=" + currentNetworkId);
|
|
||||||
+
|
|
||||||
+ if (currentNetworkId != -1 && mLastNetworkId != 0
|
|
||||||
+ && mLastNetworkId != currentNetworkId) {
|
|
||||||
+ // close snackbar with scene change
|
|
||||||
+ LayoutManagerImpl layoutManager = (LayoutManagerImpl)mLayoutManager.get();
|
|
||||||
+ if (layoutManager != null) layoutManager.addSceneChangeObserver(this);
|
|
||||||
+
|
|
||||||
+ // close snackbar with reload
|
|
||||||
+ Tab currentTab = TabModelUtils.getCurrentTab(mTabModelSelectorSupplier.get().getCurrentModel());
|
|
||||||
+ if (currentTab != null) {
|
|
||||||
+ WebContents webContents = currentTab.getWebContents();
|
|
||||||
+ SnackbarManager.SnackbarController controller = this;
|
|
||||||
+ if (webContents != null) {
|
|
||||||
+ new WebContentsObserver(webContents) {
|
|
||||||
+ @Override
|
|
||||||
+ public void didStartLoading(GURL url) {
|
|
||||||
+ observe(null);
|
|
||||||
+ SnackbarManager snackbarManager = mSnackbarManagerSupplier.get();
|
|
||||||
+ snackbarManager.dismissSnackbars(controller);
|
|
||||||
+ }
|
|
||||||
+ };
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // freeze all pages
|
|
||||||
+ TabWindowManagerSingleton.getInstance().setPagesFrozen(true);
|
|
||||||
+
|
|
||||||
+ // show snackbar
|
|
||||||
+ 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)
|
|
||||||
+ .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();
|
|
||||||
+ if (!snackbarManager.isShowing())
|
|
||||||
+ snackbarManager.showSnackbar(snackbar);
|
|
||||||
+ }
|
|
||||||
+ mLastNetworkId = currentNetworkId;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // SnackbarManager.SnackbarController
|
|
||||||
+ @Override
|
|
||||||
+ public void onDismissNoAction(Object actionData) {
|
|
||||||
+ ((LayoutManagerImpl)mLayoutManager.get()).removeSceneChangeObserver(this);
|
|
||||||
+ TabWindowManagerSingleton.getInstance().setPagesFrozen(false);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public void onAction(Object actionData) {
|
|
||||||
+ if ((int)actionData == 0)
|
|
||||||
+ ApplicationLifetime.terminate(true);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // TabWindowManager.Observer
|
|
||||||
+ @Override
|
|
||||||
+ public void onSceneChange(Layout layout) {
|
|
||||||
+ if (!(layout instanceof HubLayout)) {
|
|
||||||
+ SnackbarManager snackbarManager = mSnackbarManagerSupplier.get();
|
|
||||||
+ snackbarManager.dismissSnackbars(this);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
private void logToAdbConsoleNow(String prefix) {
|
|
||||||
Log.i(
|
|
||||||
TAG,
|
|
||||||
@@ -321,6 +423,7 @@ class OfflineDetector
|
|
||||||
** Calls |mUpdateOfflineStatusIndicatorDelayedRunnable| to update the connection state.
|
|
||||||
*/
|
|
||||||
private void updateState() {
|
|
||||||
+ checkLastNetworkId();
|
|
||||||
mHandler.removeCallbacks(mUpdateOfflineStatusIndicatorDelayedRunnable);
|
|
||||||
|
|
||||||
// Do not update state while the app is in background.
|
|
||||||
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;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
+import org.chromium.chrome.browser.layouts.LayoutManager;
|
|
||||||
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
|
||||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Class that controls visibility and content of {@link StatusIndicatorCoordinator} to relay
|
|
||||||
* connectivity information.
|
|
||||||
@@ -105,7 +109,10 @@ public class OfflineIndicatorControllerV2 {
|
|
||||||
Context context,
|
|
||||||
StatusIndicatorCoordinator statusIndicator,
|
|
||||||
NonNullObservableSupplier<Boolean> isUrlBarFocusedSupplier,
|
|
||||||
- Supplier<Boolean> canAnimateNativeBrowserControls) {
|
|
||||||
+ Supplier<Boolean> canAnimateNativeBrowserControls,
|
|
||||||
+ MonotonicObservableSupplier<TabModelSelector> tabModelSelectorSupplier,
|
|
||||||
+ MonotonicObservableSupplier<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 {
|
|
||||||
new OfflineDetector(
|
|
||||||
(Boolean offline) -> onConnectionStateChanged(offline),
|
|
||||||
(Boolean isForeground) -> onApplicationStateChanged(isForeground),
|
|
||||||
- mContext);
|
|
||||||
+ mContext,
|
|
||||||
+ tabModelSelectorSupplier,
|
|
||||||
+ layoutManager,
|
|
||||||
+ snackbarManagerSupplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initializes the application state.
|
|
||||||
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
|
|
||||||
@@ -1693,7 +1693,10 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
|
|
||||||
mActivity,
|
|
||||||
mStatusIndicatorCoordinator,
|
|
||||||
isUrlBarFocusedSupplier,
|
|
||||||
- mCanAnimateBrowserControls);
|
|
||||||
+ mCanAnimateBrowserControls,
|
|
||||||
+ mTabModelSelectorSupplier,
|
|
||||||
+ mLayoutManagerSupplier,
|
|
||||||
+ mSnackbarManagerSupplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mToolbarManager.getOmniboxStub() != null) {
|
|
||||||
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
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Override
|
|
||||||
+ public void setPagesFrozen(boolean frozen) {
|
|
||||||
+ for (int i = 0; i < getModels().size(); i++) {
|
|
||||||
+ TabModelUtils.setPagesFrozen(mTabModels.get(i), frozen);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public 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
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sAskForRestartOnConnectionChange.java
|
|
||||||
@@ -0,0 +1,32 @@
|
|
||||||
+/*
|
|
||||||
+ 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 sAskForRestartOnConnectionChange {
|
|
||||||
+ private static final CachedFlag sInstance =
|
|
||||||
+ new CachedFlag(ChromeFeatureMap.getInstance(), "AskForRestartOnConnectionChange", false);
|
|
||||||
+
|
|
||||||
+ private sAskForRestartOnConnectionChange() {}
|
|
||||||
+
|
|
||||||
+ public static CachedFlag getInstance() {
|
|
||||||
+ return sInstance;
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
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();
|
|
||||||
|
|
||||||
+ void setPagesFrozen(boolean frozen);
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Search all TabModels for a tab with the specified id.
|
|
||||||
*
|
|
||||||
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;
|
|
||||||
import org.chromium.chrome.browser.tab.Tab;
|
|
||||||
import org.chromium.chrome.browser.tab.TabSelectionType;
|
|
||||||
import org.chromium.content_public.browser.WebContents;
|
|
||||||
+import org.chromium.content_public.browser.Visibility;
|
|
||||||
import org.chromium.ui.base.WindowAndroid;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
@@ -22,6 +23,9 @@ 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 {
|
|
||||||
return TabModel.INVALID_TAB_INDEX;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public static void setPagesFrozen(TabList model, boolean frozen) {
|
|
||||||
+ List<Integer> loop = IntStream.range(0, model.getCount())
|
|
||||||
+ .boxed()
|
|
||||||
+ .collect(Collectors.toList());
|
|
||||||
+ Collections.shuffle(loop);
|
|
||||||
+ loop.forEach(tabId -> {
|
|
||||||
+ Tab tab = model.getTabAt(tabId);
|
|
||||||
+ WebContents webContents = tab.getWebContents();
|
|
||||||
+ if (webContents != null) {
|
|
||||||
+ webContents.setPageFrozen(frozen);
|
|
||||||
+ }
|
|
||||||
+ });
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* 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
|
|
||||||
@@ -154,6 +154,8 @@ public interface TabWindowManager {
|
|
||||||
/** Returns the total number of incognito tabs across all tab model selectors. */
|
|
||||||
int getIncognitoTabCount();
|
|
||||||
|
|
||||||
+ void setPagesFrozen(boolean frozen);
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* @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
|
|
||||||
@@ -551,6 +551,16 @@ public class TabWindowManagerImpl implements TabWindowManager {
|
|
||||||
return tabModelSelector.getModel(isIncognito).getTabsInGroup(tabGroupId);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Override
|
|
||||||
+ public void setPagesFrozen(boolean frozen) {
|
|
||||||
+ for (Map.Entry<@WindowId Integer, TabModelSelector> entry : mWindowIdToSelectors.entrySet()) {
|
|
||||||
+ TabModelSelector selector = entry.getValue();
|
|
||||||
+ if (selector != null) {
|
|
||||||
+ selector.setPagesFrozen(frozen);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public @Nullable TabModelSelector getTabModelSelectorById(@WindowId int windowId) {
|
|
||||||
return mWindowIdToSelectors.get(windowId);
|
|
||||||
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
|
|
||||||
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Ask-for-restart-on-connection-change.grdp
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
+<grit-part>
|
|
||||||
+ <message name="IDS_ASK_TO_RESTART_ON_CONNECTION_CHANGE_TITLE" desc="Text for 'Ask to restart on connection change' settings option.">
|
|
||||||
+ Ask to restart on connection change
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_ASK_TO_RESTART_ON_CONNECTION_CHANGE_SUMMARY" desc="Summary text for 'Ask to restart on connection change' settings option.">
|
|
||||||
+ If the IP of the connection changes, access to the network is blocked and a browser restart is requested
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_ASK_TO_RESTART_ON_CONNECTION_CHANGE_RESTART" desc="">
|
|
||||||
+ Connection to internet has changed, execution is paused. Restart Cromite?
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_ASK_TO_RESTART_ON_CONNECTION_CHANGE_CLOSE_NOTIFICATION" desc="">
|
|
||||||
+ 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" />
|
|
||||||
+
|
|
||||||
+ <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>
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -149,6 +149,8 @@ public class Snackbar {
|
|
||||||
private @Nullable String mTemplateText;
|
|
||||||
private @Nullable String mActionText;
|
|
||||||
private @Nullable Object mActionData;
|
|
||||||
+ private String mDismissActionText;
|
|
||||||
+ private Object mDismissActionData;
|
|
||||||
private int mBackgroundColor;
|
|
||||||
private int mTextAppearanceResId;
|
|
||||||
private boolean mDefaultLines = true;
|
|
||||||
@@ -255,6 +257,20 @@ public class Snackbar {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ public Snackbar setDismissAction(String actionText, Object actionData) {
|
|
||||||
+ mDismissActionText = actionText;
|
|
||||||
+ mDismissActionData = actionData;
|
|
||||||
+ return this;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public String getDismissActionText() {
|
|
||||||
+ return mDismissActionText;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ Object getDismissActionData() {
|
|
||||||
+ return mDismissActionData;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Sets the text appearance for the snackbar. If 0, the snackbar will use default text
|
|
||||||
* appearance.
|
|
||||||
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
|
|
||||||
@@ -464,6 +464,12 @@ public class SnackbarManager
|
|
||||||
new SnackbarView(
|
|
||||||
mActivity,
|
|
||||||
this,
|
|
||||||
+ new View.OnClickListener() {
|
|
||||||
+ @Override
|
|
||||||
+ public void onClick(View v) {
|
|
||||||
+ dismissSnackbars(currentSnackbar.getController());
|
|
||||||
+ }
|
|
||||||
+ },
|
|
||||||
currentSnackbar,
|
|
||||||
mOriginalParentView,
|
|
||||||
mWindowAndroid,
|
|
||||||
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
|
|
||||||
@@ -57,6 +57,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;
|
|
||||||
@@ -110,6 +111,7 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
|
|
||||||
public SnackbarView(
|
|
||||||
Activity activity,
|
|
||||||
SnackbarManager manager,
|
|
||||||
+ OnClickListener dismissListener,
|
|
||||||
Snackbar snackbar,
|
|
||||||
ViewGroup parentView,
|
|
||||||
@Nullable WindowAndroid windowAndroid,
|
|
||||||
@@ -171,6 +173,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);
|
|
||||||
+ 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
|
|
||||||
@@ -434,6 +438,12 @@ public class SnackbarView implements InsetObserver.WindowInsetObserver {
|
|
||||||
mActionButtonView.setVisibility(View.VISIBLE);
|
|
||||||
mActionButtonView.setContentDescription(snackbar.getActionText());
|
|
||||||
setViewText(mActionButtonView, snackbar.getActionText(), animate);
|
|
||||||
+ String dismissActionText = snackbar.getDismissActionText();
|
|
||||||
+ if (dismissActionText != null) {
|
|
||||||
+ mDismissButtonView.setVisibility(View.VISIBLE);
|
|
||||||
+ mDismissButtonView.setContentDescription(dismissActionText);
|
|
||||||
+ setViewText(mDismissButtonView, dismissActionText, animate);
|
|
||||||
+ }
|
|
||||||
// Set the end margin on the message view to 0 when there is action text.
|
|
||||||
if (mMessageView.getLayoutParams() instanceof LayoutParams) {
|
|
||||||
LayoutParams lp = (LayoutParams) mMessageView.getLayoutParams();
|
|
||||||
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) {
|
|
||||||
view->SetFocus(focused);
|
|
||||||
}
|
|
||||||
|
|
||||||
+void WebContentsAndroid::SetPageFrozen(JNIEnv* env, jboolean frozen) {
|
|
||||||
+ // shutdown service workers
|
|
||||||
+ BrowserContext* browser_context =
|
|
||||||
+ web_contents_->GetBrowserContext();
|
|
||||||
+ browser_context->ForEachLoadedStoragePartition(
|
|
||||||
+ [](StoragePartition* partition) {
|
|
||||||
+ scoped_refptr<ServiceWorkerContextWrapper> context =
|
|
||||||
+ static_cast<ServiceWorkerContextWrapper*>(
|
|
||||||
+ partition->GetServiceWorkerContext());
|
|
||||||
+ context->Shutdown();
|
|
||||||
+ });
|
|
||||||
+
|
|
||||||
+ SuspendAllMediaPlayers(env);
|
|
||||||
+ web_contents_->SetPageFrozen(frozen);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
bool WebContentsAndroid::IsBeingDestroyed(JNIEnv* env) {
|
|
||||||
return web_contents_->IsBeingDestroyed();
|
|
||||||
}
|
|
||||||
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 {
|
|
||||||
|
|
||||||
void OnScaleFactorChanged(JNIEnv* env);
|
|
||||||
void SetFocus(JNIEnv* env, bool focused);
|
|
||||||
+ void SetPageFrozen(JNIEnv* env, jboolean frozen);
|
|
||||||
bool IsBeingDestroyed(JNIEnv* env);
|
|
||||||
|
|
||||||
void SetDisplayCutoutSafeArea(JNIEnv* env,
|
|
||||||
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
|
|
||||||
@@ -4217,8 +4217,10 @@ void WebContentsImpl::Stop() {
|
|
||||||
void WebContentsImpl::SetPageFrozen(bool frozen) {
|
|
||||||
TRACE_EVENT1("content", "WebContentsImpl::SetPageFrozen", "frozen", frozen);
|
|
||||||
|
|
||||||
+#if !BUILDFLAG(IS_ANDROID)
|
|
||||||
// A visible page is never frozen.
|
|
||||||
DCHECK_NE(Visibility::VISIBLE, GetVisibility());
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
primary_frame_tree_.ForEachRenderViewHost(
|
|
||||||
[&frozen](RenderViewHostImpl* rvh) { rvh->SetIsFrozen(frozen); });
|
|
||||||
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
|
|
||||||
WebContentsImplJni.get().setFocus(mNativeWebContentsAndroid, hasFocus);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ @Override
|
|
||||||
+ public void setPageFrozen(boolean frozen) {
|
|
||||||
+ if (mNativeWebContentsAndroid == 0) return;
|
|
||||||
+ WebContentsImplJni.get().setPageFrozen(mNativeWebContentsAndroid, frozen);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public void setDisplayCutoutSafeArea(Rect insets) {
|
|
||||||
if (mNativeWebContentsAndroid == 0) return;
|
|
||||||
@@ -1519,6 +1525,8 @@ public class WebContentsImpl
|
|
||||||
|
|
||||||
void setFocus(long nativeWebContentsAndroid, boolean focused);
|
|
||||||
|
|
||||||
+ void setPageFrozen(long nativeWebContentsAndroid, boolean frozen);
|
|
||||||
+
|
|
||||||
void setDisplayCutoutSafeArea(
|
|
||||||
long nativeWebContentsAndroid, int top, int left, int bottom, int right);
|
|
||||||
|
|
||||||
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 {
|
|
||||||
*/
|
|
||||||
void setFocus(boolean hasFocus);
|
|
||||||
|
|
||||||
+ void setPageFrozen(boolean frozen);
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* @return true if the renderer is in fullscreen mode.
|
|
||||||
*/
|
|
||||||
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
|
|
||||||
@Override
|
|
||||||
public void setFocus(boolean hasFocus) {}
|
|
||||||
|
|
||||||
+ @Override
|
|
||||||
+ public void setPageFrozen(boolean frozen) {}
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
public boolean isFullscreenForCurrentTab() {
|
|
||||||
return false;
|
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Ask-for-restart-on-connection-change.inc b/cromite_flags/chrome/browser/about_flags_cc/Ask-for-restart-on-connection-change.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/about_flags_cc/Ask-for-restart-on-connection-change.inc
|
|
||||||
@@ -0,0 +1,13 @@
|
|
||||||
+#ifdef FLAG_SECTION
|
|
||||||
+
|
|
||||||
+#if BUILDFLAG(IS_ANDROID)
|
|
||||||
+
|
|
||||||
+ {"ask-for-restart-on-connection-change",
|
|
||||||
+ "Restart on connection change",
|
|
||||||
+ "Asks the user whether to restart the browser when the connection changes.",
|
|
||||||
+ kOsAndroid,
|
|
||||||
+ FEATURE_VALUE_TYPE(chrome::android::kAskForRestartOnConnectionChange)},
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Ask-for-restart-on-connection-change.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Ask-for-restart-on-connection-change.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Ask-for-restart-on-connection-change.inc
|
|
||||||
@@ -0,0 +1,3 @@
|
|
||||||
+CROMITE_FEATURE(kAskForRestartOnConnectionChange,
|
|
||||||
+ "AskForRestartOnConnectionChange",
|
|
||||||
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
||||||
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Ask-for-restart-on-connection-change.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Ask-for-restart-on-connection-change.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Ask-for-restart-on-connection-change.inc
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+BASE_DECLARE_FEATURE(kAskForRestartOnConnectionChange);
|
|
||||||
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
|
|
||||||
@@ -4626,6 +4626,7 @@ void Document::DispatchUnloadEvents(UnloadEventTimingInfo* unload_timing_info) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void Document::DispatchFreezeEvent() {
|
|
||||||
+ DLOG(INFO) << "---Document::DispatchFreezeEvent";
|
|
||||||
SetFreezingInProgress(true);
|
|
||||||
DispatchEvent(*Event::Create(event_type_names::kFreeze));
|
|
||||||
SetFreezingInProgress(false);
|
|
||||||
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
|
|
||||||
@@ -3325,6 +3325,7 @@ void LocalFrame::DidFreeze() {
|
|
||||||
LoaderFreezeMode freeze_mode = GetLoaderFreezeMode();
|
|
||||||
GetDocument()->Fetcher()->SetDefersLoading(freeze_mode);
|
|
||||||
Loader().SetDefersLoading(freeze_mode);
|
|
||||||
+ DLOG(INFO) << "---LocalFrame::DidFreeze end " << (int)freeze_mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LocalFrame::DidResume() {
|
|
||||||
@@ -3339,6 +3340,7 @@ void LocalFrame::DidResume() {
|
|
||||||
GetDocument()->Fetcher()->SetDefersLoading(LoaderFreezeMode::kNone);
|
|
||||||
Loader().SetDefersLoading(LoaderFreezeMode::kNone);
|
|
||||||
|
|
||||||
+ DLOG(INFO) << "---LocalFrame::DidResume";
|
|
||||||
GetDocument()->DispatchEvent(*Event::Create(event_type_names::kResume));
|
|
||||||
// TODO(fmeawad): Move the following logic to the page once we have a
|
|
||||||
// PageResourceCoordinator in Blink
|
|
||||||
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(
|
|
||||||
if (!parent_page_scheduler_)
|
|
||||||
return SchedulingLifecycleState::kNotThrottled;
|
|
||||||
if (parent_page_scheduler_->IsFrozen()) {
|
|
||||||
+#if !BUILDFLAG(IS_ANDROID)
|
|
||||||
DCHECK(!parent_page_scheduler_->IsPageVisible());
|
|
||||||
+#endif
|
|
||||||
return SchedulingLifecycleState::kStopped;
|
|
||||||
}
|
|
||||||
if (subresource_loading_paused_ && type == ObserverType::kLoader)
|
|
||||||
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) {
|
|
||||||
// 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.
|
|
||||||
+#if !BUILDFLAG(IS_ANDROID)
|
|
||||||
if (frozen && IsPageVisible()) {
|
|
||||||
DCHECK(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
PolicyUpdater policy_updater;
|
|
||||||
SetPageFrozenImpl(frozen, policy_updater);
|
|
||||||
}
|
|
||||||
@@ -803,7 +805,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.
|
|
||||||
- return !IsPageVisible() && !IsAudioPlaying() &&
|
|
||||||
+#if BUILDFLAG(IS_ANDROID)
|
|
||||||
+ bool page_visible = true;
|
|
||||||
+#else
|
|
||||||
+ bool page_visible = IsPageVisible();
|
|
||||||
+#endif
|
|
||||||
+ return !page_visible && !IsAudioPlaying() &&
|
|
||||||
!main_thread_scheduler_->IsVirtualTimeEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
@@ -15,9 +15,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
.../modules/webaudio/base_audio_context.cc | 12 ++++++++++++
|
.../modules/webaudio/base_audio_context.cc | 12 ++++++++++++
|
||||||
.../renderer/modules/webaudio/base_audio_context.h | 2 ++
|
.../renderer/modules/webaudio/base_audio_context.h | 2 ++
|
||||||
.../modules/webaudio/offline_audio_context.cc | 1 +
|
.../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 ++---
|
10 files changed, 54 insertions(+), 1 deletion(-)
|
||||||
11 files changed, 59 insertions(+), 7 deletions(-)
|
|
||||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc
|
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_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc
|
||||||
create mode 100644 cromite_flags/third_party/blink/common/features_h/AudioBuffer-AnalyserNode-fp-mitigations.inc
|
create mode 100644 cromite_flags/third_party/blink/common/features_h/AudioBuffer-AnalyserNode-fp-mitigations.inc
|
||||||
@@ -52,7 +51,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
|
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
|
--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc
|
||||||
+++ b/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)
|
@@ -196,6 +196,20 @@ AudioBuffer::AudioBuffer(AudioBus* bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +60,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc b/third
|
|||||||
+ if (NotShared<DOMFloat32Array> array = getChannelData(i)) {
|
+ if (NotShared<DOMFloat32Array> array = getChannelData(i)) {
|
||||||
+ size_t len = array->length();
|
+ size_t len = array->length();
|
||||||
+ if (len > 0) {
|
+ if (len > 0) {
|
||||||
+ base::span<float> destination = array->AsSpan();
|
+ float* destination = array->Data();
|
||||||
+ for (unsigned j = 0; j < len; ++j) {
|
+ for (unsigned j = 0; j < len; ++j) {
|
||||||
+ destination[j] = BaseAudioContext::ShuffleAudioData(destination[j], j);
|
+ destination[j] = BaseAudioContext::ShuffleAudioData(destination[j], j);
|
||||||
+ }
|
+ }
|
||||||
@@ -88,16 +87,16 @@ 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
|
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
|
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||||
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||||
@@ -22,6 +22,7 @@
|
@@ -12,6 +12,7 @@
|
||||||
|
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
|
||||||
|
#include "third_party/blink/public/common/features.h"
|
||||||
#include "third_party/blink/public/common/mediastream/media_devices.h"
|
#include "third_party/blink/public/common/mediastream/media_devices.h"
|
||||||
#include "third_party/blink/public/mojom/permissions/permission_status.mojom-blink.h"
|
|
||||||
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
|
|
||||||
+#include "third_party/blink/public/common/features.h"
|
+#include "third_party/blink/public/common/features.h"
|
||||||
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
|
#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/public/platform/web_audio_latency_hint.h"
|
||||||
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
|
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
|
||||||
@@ -1138,7 +1139,9 @@ double AudioContext::baseLatency() const {
|
@@ -582,7 +583,9 @@ double AudioContext::baseLatency() const {
|
||||||
DCHECK_CALLED_ON_VALID_SEQUENCE(main_thread_sequence_checker_);
|
DCHECK(IsMainThread());
|
||||||
DCHECK(destination());
|
DCHECK(destination());
|
||||||
|
|
||||||
- return base_latency_;
|
- return base_latency_;
|
||||||
@@ -110,15 +109,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
|
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
|
--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
|
||||||
+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
|
+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc
|
||||||
@@ -28,6 +28,7 @@
|
@@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "base/metrics/histogram_functions.h"
|
#include "base/metrics/histogram_functions.h"
|
||||||
#include "build/build_config.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/common/features.h"
|
||||||
#include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.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/mojom/frame/lifecycle.mojom-shared.h"
|
||||||
#include "third_party/blink/public/platform/platform.h"
|
#include "third_party/blink/public/platform/platform.h"
|
||||||
@@ -775,6 +776,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const {
|
@@ -721,6 +722,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const {
|
||||||
return To<LocalDOMWindow>(GetExecutionContext());
|
return To<LocalDOMWindow>(GetExecutionContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,19 +138,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
|
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
|
--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.h
|
||||||
+++ b/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
|
@@ -337,6 +337,8 @@ class MODULES_EXPORT BaseAudioContext
|
||||||
// if the execution context does not exist.
|
// if the execution context does not exist.
|
||||||
bool CheckExecutionContextAndThrowIfNecessary(ExceptionState&);
|
bool CheckExecutionContextAndThrowIfNecessary(ExceptionState&);
|
||||||
|
|
||||||
+ static float ShuffleAudioData(float data, unsigned index);
|
+ static float ShuffleAudioData(float data, unsigned index);
|
||||||
+
|
+
|
||||||
protected:
|
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
|
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
|
--- a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc
|
||||||
+++ b/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() {
|
@@ -368,6 +368,7 @@ void OfflineAudioContext::FireCompletionEvent() {
|
||||||
if (!rendered_buffer) {
|
if (!rendered_buffer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -162,30 +161,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
|
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
|
--- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
|
||||||
+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
|
+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
|
||||||
@@ -33,6 +33,7 @@
|
@@ -31,6 +31,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/modules/webaudio/base_audio_context.h"
|
||||||
#include "third_party/blink/renderer/platform/audio/audio_bus.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/audio_utilities.h"
|
||||||
#include "third_party/blink/renderer/platform/audio/vector_math.h"
|
#include "third_party/blink/renderer/platform/audio/vector_math.h"
|
||||||
@@ -117,7 +118,8 @@ void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array,
|
@@ -155,6 +156,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData(
|
||||||
for (unsigned i = 0; i < len; ++i) {
|
input_buffer[(i + write_index - fft_size + kInputBufferSize) %
|
||||||
const float linear_value = magnitude_buffer_[i];
|
kInputBufferSize];
|
||||||
const double db_mag = audio_utilities::LinearToDecibels(linear_value);
|
|
||||||
- destination[i] = static_cast<float>(db_mag);
|
+ value = BaseAudioContext::ShuffleAudioData(value, i);
|
||||||
+ auto v = static_cast<float>(db_mag);
|
destination[i] = value;
|
||||||
+ destination[i] = BaseAudioContext::ShuffleAudioData(v, i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
@@ -182,6 +184,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) {
|
||||||
@@ -153,9 +155,11 @@ void RealtimeAnalyser::GetByteFrequencyData(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
|
+ value = BaseAudioContext::ShuffleAudioData(value, i);
|
||||||
// from 0 to UCHAR_MAX.
|
+
|
||||||
- const double scaled_value =
|
// Scale from nominal -1 -> +1 to unsigned byte.
|
||||||
+ double scaled_value =
|
double scaled_value = 128 * (value + 1);
|
||||||
|
|
||||||
|
@@ -301,6 +305,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) {
|
||||||
|
double scaled_value =
|
||||||
UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor;
|
UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor;
|
||||||
|
|
||||||
+ scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i);
|
+ scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i);
|
||||||
@@ -193,41 +195,12 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/
|
|||||||
// Clip to valid range.
|
// Clip to valid range.
|
||||||
destination[i] =
|
destination[i] =
|
||||||
static_cast<unsigned char>(ClampTo(scaled_value, 0, UCHAR_MAX));
|
static_cast<unsigned char>(ClampTo(scaled_value, 0, UCHAR_MAX));
|
||||||
@@ -184,6 +188,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData(
|
@@ -320,6 +326,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) {
|
||||||
input_buffer_[(i + write_index - fft_size + kInputBufferSize) %
|
float linear_value = source[i];
|
||||||
kInputBufferSize];
|
double db_mag = audio_utilities::LinearToDecibels(linear_value);
|
||||||
|
destination[i] = static_cast<float>(db_mag);
|
||||||
+ value = BaseAudioContext::ShuffleAudioData(value, i);
|
+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i);
|
||||||
destination[i] = value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
|
||||||
@@ -719,9 +719,8 @@
|
|
||||||
{
|
|
||||||
// AudioContext.playoutStats interface.
|
|
||||||
// https://chromestatus.com/feature/5172818344148992
|
|
||||||
- name: "AudioContextPlayoutStats",
|
|
||||||
- origin_trial_feature_name: "AudioContextPlayoutStats",
|
|
||||||
- status: "experimental",
|
|
||||||
+ name: "AudioContextPlayoutStats", // keep AudioContextPlayoutStats
|
|
||||||
+ status: "experimental", // experimental
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "AudioContextSetSinkId",
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -7,26 +7,53 @@ This approach is not comprehensive, see also:
|
|||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
|
.../execution_context/execution_context.cc | 16 ++++++++++
|
||||||
.../execution_context/execution_context.h | 1 +
|
.../execution_context/execution_context.h | 1 +
|
||||||
.../renderer/core/loader/base_fetch_context.h | 1 +
|
.../renderer/core/loader/base_fetch_context.h | 1 +
|
||||||
.../core/loader/frame_fetch_context.cc | 20 ++++++++++++
|
.../core/loader/frame_fetch_context.cc | 20 ++++++++++++
|
||||||
.../core/loader/frame_fetch_context.h | 1 +
|
.../core/loader/frame_fetch_context.h | 1 +
|
||||||
.../core/loader/worker_fetch_context.cc | 21 +++++++++++++
|
.../core/loader/worker_fetch_context.cc | 21 +++++++++++++
|
||||||
.../core/loader/worker_fetch_context.h | 1 +
|
.../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 +++++++++++++++++++
|
.../background_fetch_manager.cc | 31 +++++++++++++++++++
|
||||||
.../websockets/websocket_channel_impl.cc | 5 +++
|
.../websockets/websocket_channel_impl.cc | 5 +++
|
||||||
.../modules/websockets/websocket_common.cc | 30 ++++++++++++++++++
|
.../modules/websockets/websocket_common.cc | 30 ++++++++++++++++++
|
||||||
.../modules/websockets/websocket_common.h | 4 +++
|
.../modules/websockets/websocket_common.h | 4 +++
|
||||||
11 files changed, 116 insertions(+), 1 deletion(-)
|
12 files changed, 133 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
|
||||||
|
@@ -701,6 +701,22 @@ 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();
|
||||||
|
+ return "public";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
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
|
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
|
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
|
||||||
+++ b/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>,
|
@@ -390,6 +390,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable<ExecutionContext>,
|
||||||
void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space);
|
void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space);
|
||||||
|
|
||||||
HeapObserverList<ContextLifecycleObserver>& ContextLifecycleObserverSet();
|
HeapObserverSet<ContextLifecycleObserver>& ContextLifecycleObserverSet();
|
||||||
+ String addressSpaceForBindings() const;
|
+ String addressSpaceForBindings() const;
|
||||||
unsigned ContextLifecycleStateObserverCountForTesting() const;
|
unsigned ContextLifecycleStateObserverCountForTesting() const;
|
||||||
|
|
||||||
@@ -45,7 +72,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
|
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
|
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
|
||||||
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
|
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
|
||||||
@@ -1134,6 +1134,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
|
@@ -590,6 +590,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const {
|
||||||
return should_block_request;
|
return should_block_request;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +85,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
|
|||||||
+ network::mojom::IPAddressSpace target_space =
|
+ network::mojom::IPAddressSpace target_space =
|
||||||
+ network::mojom::IPAddressSpace::kPublic;
|
+ network::mojom::IPAddressSpace::kPublic;
|
||||||
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
|
+ 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())
|
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
|
||||||
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
||||||
+
|
+
|
||||||
@@ -75,7 +102,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
|
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
|
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.h
|
||||||
+++ b/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,
|
@@ -166,6 +166,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
|
||||||
bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
|
bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
|
||||||
std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
|
std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
|
||||||
override;
|
override;
|
||||||
@@ -107,7 +134,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th
|
|||||||
+ network::mojom::IPAddressSpace target_space =
|
+ network::mojom::IPAddressSpace target_space =
|
||||||
+ network::mojom::IPAddressSpace::kPublic;
|
+ network::mojom::IPAddressSpace::kPublic;
|
||||||
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
|
+ 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())
|
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
|
||||||
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
||||||
+
|
+
|
||||||
@@ -135,9 +162,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
|
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
|
--- a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
|
||||||
+++ b/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()))
|
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())
|
if (SecurityOrigin::Create(script_url_)->IsLocalhost())
|
||||||
- response_address_space_ = network::mojom::IPAddressSpace::kLoopback;
|
- response_address_space_ = network::mojom::IPAddressSpace::kLoopback;
|
||||||
+ response_address_space_ = network::mojom::IPAddressSpace::kLocal;
|
+ response_address_space_ = network::mojom::IPAddressSpace::kLocal;
|
||||||
@@ -147,8 +177,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
|
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
|
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
|
||||||
+++ b/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) {
|
@@ -102,6 +102,30 @@ bool ShouldBlockDanglingMarkup(const KURL& request_url) {
|
||||||
request_url.ProtocolIsInHttpFamily();
|
request_url.ProtocolIsInHTTPFamily();
|
||||||
}
|
}
|
||||||
|
|
||||||
+bool ShouldBlockGateWayAttacks(ExecutionContext* execution_context,
|
+bool ShouldBlockGateWayAttacks(ExecutionContext* execution_context,
|
||||||
@@ -164,7 +194,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
|
|||||||
+ network::mojom::IPAddressSpace target_space =
|
+ network::mojom::IPAddressSpace target_space =
|
||||||
+ network::mojom::IPAddressSpace::kPublic;
|
+ network::mojom::IPAddressSpace::kPublic;
|
||||||
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
|
+ 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())
|
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
|
||||||
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
||||||
+
|
+
|
||||||
@@ -178,7 +208,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
|
|||||||
scoped_refptr<BlobDataHandle> ExtractBlobHandle(
|
scoped_refptr<BlobDataHandle> ExtractBlobHandle(
|
||||||
Request* request,
|
Request* request,
|
||||||
ExceptionState& exception_state) {
|
ExceptionState& exception_state) {
|
||||||
@@ -191,6 +215,13 @@ ScriptPromise<BackgroundFetchRegistration> BackgroundFetchManager::fetch(
|
@@ -189,6 +213,13 @@ ScriptPromise<BackgroundFetchRegistration> BackgroundFetchManager::fetch(
|
||||||
exception_state);
|
exception_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +225,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
|
|||||||
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
|
diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
|
||||||
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
|
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
|
||||||
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
|
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
|
||||||
@@ -288,6 +288,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
|
@@ -277,6 +277,11 @@ bool WebSocketChannelImpl::Connect(const KURL& url, const String& protocol) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,12 +235,12 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_imp
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if (auto* scheduler = execution_context_->GetScheduler()) {
|
if (auto* scheduler = execution_context_->GetScheduler()) {
|
||||||
if (!RuntimeEnabledFeatures::DisconnectWebSocketOnBFCacheEnabled()) {
|
// Two features are registered here:
|
||||||
// Two features are registered here:
|
// - `kWebSocket`: a non-sticky feature that will disable BFCache for any
|
||||||
diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b/third_party/blink/renderer/modules/websockets/websocket_common.cc
|
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
|
--- a/third_party/blink/renderer/modules/websockets/websocket_common.cc
|
||||||
+++ b/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(
|
@@ -136,9 +136,39 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect(
|
||||||
return ConnectResult::kException;
|
return ConnectResult::kException;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,7 +266,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
|
|||||||
+ network::mojom::IPAddressSpace target_space =
|
+ network::mojom::IPAddressSpace target_space =
|
||||||
+ network::mojom::IPAddressSpace::kPublic;
|
+ network::mojom::IPAddressSpace::kPublic;
|
||||||
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
|
+ 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())
|
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
|
||||||
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
+ target_space = network::mojom::IPAddressSpace::kLocal;
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -1,152 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Sat, 21 Sep 2024 14:36:25 +0000
|
|
||||||
Subject: Block leakage of urls in sandbox iframes
|
|
||||||
|
|
||||||
Preventing url base fallback leakage in cross orgin sandbox iframe.
|
|
||||||
Addition of the ""block-url-leakage-sandbox-iframe" flag disabled by default.
|
|
||||||
DO NOT ACTIVATE: the patch is a wip
|
|
||||||
The aim is to understand whether it is possible to disable the
|
|
||||||
leakage of certain information in sandbox iframes
|
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
|
||||||
.../renderer_host/render_frame_host_impl.cc | 12 +++++++++++-
|
|
||||||
.../Block-url-leakage-sandbox-iframe.inc | 8 ++++++++
|
|
||||||
.../Block-url-leakage-sandbox-iframe.inc | 3 +++
|
|
||||||
.../Block-url-leakage-sandbox-iframe.inc | 1 +
|
|
||||||
third_party/blink/renderer/core/frame/location.cc | 15 ++++++++++++++-
|
|
||||||
.../blink/renderer/core/loader/document_loader.cc | 12 ++++++++++++
|
|
||||||
.../blink/renderer/core/loader/document_loader.h | 2 +-
|
|
||||||
7 files changed, 50 insertions(+), 3 deletions(-)
|
|
||||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
create mode 100644 cromite_flags/third_party/blink/common/features_h/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -5426,7 +5426,17 @@ void RenderFrameHostImpl::SetLastCommittedOrigin(
|
|
||||||
}
|
|
||||||
|
|
||||||
void RenderFrameHostImpl::SetInheritedBaseUrl(const GURL& inherited_base_url) {
|
|
||||||
- inherited_base_url_ = inherited_base_url;
|
|
||||||
+ // we only inherit the base url if there's no sandbox,
|
|
||||||
+ // or if there is a sandbox but it has 'allow-same-origin'.
|
|
||||||
+ // See https://github.com/whatwg/html/issues/9025.
|
|
||||||
+ bool sandbox_flags_dont_exist_or_dont_include_allow_same_origin =
|
|
||||||
+ base::FeatureList::IsEnabled(blink::features::kBlockUrlLeakageSandboxIframe) &&
|
|
||||||
+ (!policy_container_host_ ||
|
|
||||||
+ (active_sandbox_flags() & network::mojom::WebSandboxFlags::kOrigin) ==
|
|
||||||
+ network::mojom::WebSandboxFlags::kNone);
|
|
||||||
+ if (sandbox_flags_dont_exist_or_dont_include_allow_same_origin) {
|
|
||||||
+ inherited_base_url_ = inherited_base_url;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
void RenderFrameHostImpl::SetLastCommittedOriginForTesting(
|
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Block-url-leakage-sandbox-iframe.inc b/cromite_flags/chrome/browser/about_flags_cc/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/about_flags_cc/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
@@ -0,0 +1,8 @@
|
|
||||||
+#ifdef FLAG_SECTION
|
|
||||||
+
|
|
||||||
+ {"block-url-leakage-sandbox-iframe",
|
|
||||||
+ "Block leakage of urls in sandbox iframes",
|
|
||||||
+ "Block leakage for referrer, base url and ancestorOrigins in iframe with sandbox.", kOsAll,
|
|
||||||
+ FEATURE_VALUE_TYPE(blink::features::kBlockUrlLeakageSandboxIframe)},
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
diff --git a/cromite_flags/third_party/blink/common/features_cc/Block-url-leakage-sandbox-iframe.inc b/cromite_flags/third_party/blink/common/features_cc/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/third_party/blink/common/features_cc/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
@@ -0,0 +1,3 @@
|
|
||||||
+CROMITE_FEATURE(kBlockUrlLeakageSandboxIframe,
|
|
||||||
+ "BlockUrlLeakageSandboxIframe",
|
|
||||||
+ base::FEATURE_DISABLED_BY_DEFAULT);
|
|
||||||
diff --git a/cromite_flags/third_party/blink/common/features_h/Block-url-leakage-sandbox-iframe.inc b/cromite_flags/third_party/blink/common/features_h/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/third_party/blink/common/features_h/Block-url-leakage-sandbox-iframe.inc
|
|
||||||
@@ -0,0 +1 @@
|
|
||||||
+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kBlockUrlLeakageSandboxIframe);
|
|
||||||
diff --git a/third_party/blink/renderer/core/frame/location.cc b/third_party/blink/renderer/core/frame/location.cc
|
|
||||||
--- a/third_party/blink/renderer/core/frame/location.cc
|
|
||||||
+++ b/third_party/blink/renderer/core/frame/location.cc
|
|
||||||
@@ -28,6 +28,7 @@
|
|
||||||
|
|
||||||
#include "third_party/blink/renderer/core/frame/location.h"
|
|
||||||
|
|
||||||
+#include "third_party/blink/public/common/features.h"
|
|
||||||
#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"
|
|
||||||
@@ -133,12 +134,24 @@ DOMStringList* Location::ancestorOrigins() {
|
|
||||||
}
|
|
||||||
return ancestor_origins_list_.Get();
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+ if (base::FeatureList::IsEnabled(blink::features::kBlockUrlLeakageSandboxIframe)
|
|
||||||
+ && dom_window_->GetFrame()->GetSecurityContext()->IsSandboxed(
|
|
||||||
+ network::mojom::WebSandboxFlags::kOrigin)) {
|
|
||||||
+ // not allow any value for sandboxed frames
|
|
||||||
+ auto* origins = MakeGarbageCollected<DOMStringList>();
|
|
||||||
+ return origins;
|
|
||||||
+ }
|
|
||||||
if (!ancestor_origins_list_ ||
|
|
||||||
!RuntimeEnabledFeatures::AncestorOriginsStoredOnDocumentEnabled()) {
|
|
||||||
ancestor_origins_list_ = MakeGarbageCollected<DOMStringList>();
|
|
||||||
for (Frame* frame = dom_window_->GetFrame()->Tree().Parent(); frame;
|
|
||||||
frame = frame->Tree().Parent()) {
|
|
||||||
+ if (base::FeatureList::IsEnabled(blink::features::kBlockUrlLeakageSandboxIframe)
|
|
||||||
+ && frame->GetSecurityContext()->IsSandboxed(
|
|
||||||
+ network::mojom::WebSandboxFlags::kOrigin)) {
|
|
||||||
+ // blocks at first sandbox frame
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
ancestor_origins_list_->Append(
|
|
||||||
frame->GetSecurityContext()->GetSecurityOrigin()->ToString());
|
|
||||||
}
|
|
||||||
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
|
|
||||||
@@ -851,6 +851,11 @@ WebString DocumentLoader::HttpMethod() const {
|
|
||||||
}
|
|
||||||
|
|
||||||
const AtomicString& DocumentLoader::GetReferrer() const {
|
|
||||||
+ if (base::FeatureList::IsEnabled(features::kBlockUrlLeakageSandboxIframe)
|
|
||||||
+ && frame_->DomWindow()->GetSecurityContext().IsSandboxed(
|
|
||||||
+ network::mojom::WebSandboxFlags::kOrigin)) {
|
|
||||||
+ return g_null_atom;
|
|
||||||
+ }
|
|
||||||
return referrer_;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2984,6 +2989,13 @@ void DocumentLoader::CommitNavigation() {
|
|
||||||
response_.HttpHeaderField(http_names::kDocumentPolicyReportOnly));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (base::FeatureList::IsEnabled(features::kBlockUrlLeakageSandboxIframe) &&
|
|
||||||
+ frame_->DomWindow()->GetSecurityContext().IsSandboxed(
|
|
||||||
+ network::mojom::WebSandboxFlags::kOrigin)) {
|
|
||||||
+ // If an frame is sandboxed don't give it an inherited base url.
|
|
||||||
+ fallback_base_url_ = KURL();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
navigation_scroll_allowed_ = !frame_->DomWindow()->IsFeatureEnabled(
|
|
||||||
mojom::blink::DocumentPolicyFeature::kForceLoadAtTop);
|
|
||||||
|
|
||||||
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>,
|
|
||||||
// |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;
|
|
||||||
- const KURL fallback_base_url_;
|
|
||||||
+ KURL fallback_base_url_; // Non-const for sandbox overrides.
|
|
||||||
const bool loading_url_as_empty_document_ = false;
|
|
||||||
const bool is_static_data_ = false;
|
|
||||||
CommitReason commit_reason_ = CommitReason::kRegular;
|
|
||||||
--
|
|
||||||
@@ -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
|
||||||
|
@@ -174,6 +174,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
|
||||||
|
@@ -90,10 +90,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);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -581,7 +586,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
|
||||||
|
@@ -576,6 +576,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
|
||||||
|
@@ -837,6 +837,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
|
||||||
|
@@ -1012,6 +1012,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
|
||||||
|
@@ -13,6 +13,7 @@
|
||||||
|
#include "base/metrics/histogram_macros.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/pass_key.h"
|
||||||
|
@@ -47,6 +48,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 {
|
||||||
|
|
||||||
|
@@ -591,6 +593,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
|
||||||
|
@@ -48,6 +48,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"
|
||||||
|
@@ -575,6 +576,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
|
||||||
|
@@ -31,6 +31,7 @@ inline constexpr char kDataScheme[] = "data";
|
||||||
|
inline constexpr char16_t kDataScheme16[] = u"data";
|
||||||
|
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
|
||||||
|
@@ -47,6 +47,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
|
||||||
|
@@ -92,6 +93,7 @@ struct SchemeRegistry {
|
||||||
|
kAboutScheme,
|
||||||
|
kJavaScriptScheme,
|
||||||
|
kDataScheme,
|
||||||
|
+ kTraceScheme,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Schemes that can be sent CORS requests.
|
||||||
|
--
|
||||||
@@ -2,15 +2,31 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|||||||
Date: Sat, 9 Apr 2022 23:01:55 +0200
|
Date: Sat, 9 Apr 2022 23:01:55 +0200
|
||||||
Subject: Bookmarks select all menu entry
|
Subject: Bookmarks select all menu entry
|
||||||
|
|
||||||
Requires: Restore-BookmarkToolbar-setCurrentFolder.patch
|
|
||||||
|
|
||||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../menu/bookmark_toolbar_menu_improved.xml | 7 +++++++
|
.../java/res/menu/bookmark_toolbar_menu.xml | 7 +++++++
|
||||||
.../browser/bookmarks/BookmarkToolbar.java | 18 ++++++++++++++++++
|
.../res/menu/bookmark_toolbar_menu_improved.xml | 7 +++++++
|
||||||
.../android/strings/android_chrome_strings.grd | 3 +++
|
.../chrome/browser/bookmarks/BookmarkToolbar.java | 15 +++++++++++++++
|
||||||
3 files changed, 28 insertions(+)
|
.../ui/android/strings/android_chrome_strings.grd | 3 +++
|
||||||
|
4 files changed, 32 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu.xml b/chrome/android/java/res/menu/bookmark_toolbar_menu.xml
|
||||||
|
--- a/chrome/android/java/res/menu/bookmark_toolbar_menu.xml
|
||||||
|
+++ b/chrome/android/java/res/menu/bookmark_toolbar_menu.xml
|
||||||
|
@@ -23,6 +23,13 @@ found in the LICENSE file.
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="ifRoom"
|
||||||
|
app:iconTint="@color/default_icon_color_secondary_tint_list" />
|
||||||
|
+ <item
|
||||||
|
+ android:id="@+id/select_all_menu_id"
|
||||||
|
+ android:icon="@drawable/ic_done_blue"
|
||||||
|
+ android:title="@string/select_all_bookmarks"
|
||||||
|
+ android:visible="true"
|
||||||
|
+ app:showAsAction="ifRoom"
|
||||||
|
+ app:iconTint="@color/default_icon_color_tint_list" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/import_menu_id"
|
||||||
|
android:icon="@drawable/ic_folder_blue_24dp"
|
||||||
diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml
|
diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml
|
||||||
--- a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml
|
--- a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml
|
||||||
+++ b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml
|
+++ b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml
|
||||||
@@ -28,59 +44,56 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c
|
|||||||
<item
|
<item
|
||||||
android:id="@+id/import_menu_id"
|
android:id="@+id/import_menu_id"
|
||||||
android:icon="@drawable/ic_folder_blue_24dp"
|
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
|
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/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||||
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||||
@@ -28,6 +28,7 @@ import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelega
|
@@ -28,6 +28,8 @@ import java.util.ArrayList;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Function;
|
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
|
* 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.
|
||||||
|
@@ -184,6 +186,7 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||||
|
|
||||||
void setCurrentFolder(BookmarkId folder) {
|
void setCurrentFolder(BookmarkId folder) {
|
||||||
mCurrentFolder = mBookmarkModel.getBookmarkById(folder);
|
mCurrentFolder = mBookmarkModel.getBookmarkById(folder);
|
||||||
enableImportExportMenu();
|
|
||||||
+ enableSelectAllMenu();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ void enableSelectAllMenu() {
|
|
||||||
+ getMenu().findItem(R.id.select_all_menu_id).setVisible(true);
|
+ getMenu().findItem(R.id.select_all_menu_id).setVisible(true);
|
||||||
|
getMenu().findItem(R.id.import_menu_id).setVisible(true);
|
||||||
|
getMenu().findItem(R.id.export_menu_id).setVisible(true);
|
||||||
}
|
}
|
||||||
|
@@ -212,6 +215,17 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||||
void enableImportExportMenu() {
|
|
||||||
@@ -233,6 +239,17 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
|
||||||
mExportBookmarkRunnable.run();
|
mExportBookmarkRunnable.run();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
+ if (menuItem.getItemId() == R.id.select_all_menu_id) {
|
+ if (menuItem.getItemId() == R.id.select_all_menu_id) {
|
||||||
+ if (mBookmarkModel.isBookmarkModelLoaded()) {
|
+ if (mBookmarkModel.isBookmarkModelLoaded()) {
|
||||||
+ List<BookmarkId> childs = mBookmarkModel.getChildIds(mCurrentFolder.getId());
|
+ List<BookmarkItem> items = mBookmarkModel.getBookmarksForFolder(mCurrentFolder.getId());
|
||||||
+ HashSet<BookmarkId> ids = new HashSet<>(childs.size());
|
+ HashSet<BookmarkId> ids = new HashSet<>(items.size());
|
||||||
+ for (BookmarkId item : childs) {
|
+ for (BookmarkItem item : items) {
|
||||||
+ ids.add(item);
|
+ ids.add(item.getId());
|
||||||
+ }
|
+ }
|
||||||
+ mSelectionDelegate.setSelectedItems(ids);
|
+ mSelectionDelegate.setSelectedItems(ids);
|
||||||
+ }
|
+ }
|
||||||
+ return true;
|
+ return true;
|
||||||
+ }
|
+ }
|
||||||
return assumeNonNull(mMenuIdClickedFunction).apply(menuItem.getItemId());
|
return mMenuIdClickedFunction.apply(menuItem.getItemId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,6 +272,7 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
@@ -234,6 +248,7 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||||
|
|
||||||
getMenu().findItem(R.id.import_menu_id).setVisible(mCurrentFolder != null);
|
getMenu().findItem(R.id.import_menu_id).setVisible(mCurrentFolder != null);
|
||||||
getMenu().findItem(R.id.export_menu_id).setVisible(mCurrentFolder != null);
|
getMenu().findItem(R.id.export_menu_id).setVisible(mCurrentFolder != null);
|
||||||
+ getMenu().findItem(R.id.select_all_menu_id).setVisible(mCurrentFolder != null);
|
+ getMenu().findItem(R.id.select_all_menu_id).setVisible(mCurrentFolder != null);
|
||||||
|
|
||||||
// SelectableListToolbar will show/hide the entire group.
|
// SelectableListToolbar will show/hide the entire group.
|
||||||
setEditButtonVisible(mEditButtonVisible);
|
setSearchButtonVisible(mSearchButtonVisible);
|
||||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -277,6 +277,9 @@ CHAR_LIMIT guidelines:
|
@@ -253,6 +253,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]">
|
<message name="IDS_NOTIFICATION_CATEGORY_SITES" desc="Label for notifications from websites, within a list of notification categories. [CHAR_LIMIT=32]">
|
||||||
Sites
|
Sites
|
||||||
</message>
|
</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
|
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
|
--- a/chrome/android/chrome_public_apk_tmpl.gni
|
||||||
+++ b/chrome/android/chrome_public_apk_tmpl.gni
|
+++ b/chrome/android/chrome_public_apk_tmpl.gni
|
||||||
@@ -23,7 +23,7 @@ declare_args() {
|
@@ -26,7 +26,7 @@ declare_args() {
|
||||||
# Android package name to use when compiling the public chrome targets
|
# WebView providers which declare one of a handful of package names. See
|
||||||
# (chrome_public_apk, trichrome_chrome_bundle, etc. as well as the
|
# https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/build-instructions.md#Changing-package-name
|
||||||
# *_bundle variants). This defaults to the Chromium browser package name.
|
# for details.
|
||||||
- chrome_public_manifest_package = "org.chromium.chrome"
|
- chrome_public_manifest_package = "org.chromium.chrome"
|
||||||
+ chrome_public_manifest_package = "org.bromite.bromite"
|
+ chrome_public_manifest_package = "org.bromite.bromite"
|
||||||
if (use_stable_package_name_for_trichrome) {
|
if (use_stable_package_name_for_trichrome) {
|
||||||
|
|||||||
@@ -21,36 +21,38 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
.../java/res/xml/adblock_preferences.xml | 25 ++
|
.../java/res/xml/adblock_preferences.xml | 25 ++
|
||||||
.../android/java/res/xml/main_preferences.xml | 5 +
|
.../android/java/res/xml/main_preferences.xml | 5 +
|
||||||
.../browser/settings/AdBlockEditor.java | 91 ++++++
|
.../browser/settings/AdBlockEditor.java | 91 ++++++
|
||||||
.../browser/settings/AdBlockPreferences.java | 76 +++++
|
.../browser/settings/AdBlockPreferences.java | 58 ++++
|
||||||
.../browser/settings/SettingsActivity.java | 3 +
|
.../chrome/browser/tabmodel/TabModelImpl.java | 2 +-
|
||||||
chrome/app/generated_resources.grd | 10 +
|
chrome/app/generated_resources.grd | 10 +
|
||||||
chrome/browser/after_startup_task_utils.cc | 5 +
|
chrome/browser/after_startup_task_utils.cc | 4 +
|
||||||
chrome/browser/browser_process.h | 5 +
|
chrome/browser/browser_process.h | 6 +
|
||||||
chrome/browser/browser_process_impl.cc | 30 ++
|
chrome/browser/browser_process_impl.cc | 21 ++
|
||||||
chrome/browser/browser_process_impl.h | 2 +
|
chrome/browser/browser_process_impl.h | 2 +
|
||||||
chrome/browser/chrome_browser_main.cc | 3 +
|
chrome/browser/chrome_browser_main.cc | 3 +
|
||||||
chrome/browser/flags/BUILD.gn | 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 ++
|
.../browser/flags/AdBlockNativeGateway.java | 30 ++
|
||||||
.../net/system_network_context_manager.cc | 4 +
|
.../net/system_network_context_manager.cc | 8 +
|
||||||
|
.../sessions/session_restore_android.cc | 6 +-
|
||||||
.../strings/android_chrome_strings.grd | 14 +
|
.../strings/android_chrome_strings.grd | 14 +
|
||||||
chrome/common/pref_names.h | 5 +
|
chrome/common/pref_names.h | 5 +
|
||||||
.../strings/android/site_settings.grdp | 3 +
|
.../strings/android/site_settings.grdp | 3 +
|
||||||
components/component_updater/BUILD.gn | 8 +
|
components/component_updater/BUILD.gn | 7 +
|
||||||
.../adblock_updater_service.cc | 281 ++++++++++++++++++
|
.../adblock_updater_service.cc | 281 ++++++++++++++++++
|
||||||
.../adblock_updater_service.h | 103 +++++++
|
.../adblock_updater_service.h | 103 +++++++
|
||||||
.../download_filters_task.cc | 250 ++++++++++++++++
|
.../download_filters_task.cc | 239 +++++++++++++++
|
||||||
.../component_updater/download_filters_task.h | 129 ++++++++
|
.../component_updater/download_filters_task.h | 129 ++++++++
|
||||||
...ent_subresource_filter_throttle_manager.cc | 15 +
|
...ent_subresource_filter_throttle_manager.cc | 15 +
|
||||||
...tent_subresource_filter_throttle_manager.h | 2 +
|
...tent_subresource_filter_throttle_manager.h | 2 +
|
||||||
.../content/browser/ruleset_service.cc | 44 ++-
|
.../content/shared/browser/ruleset_service.cc | 46 ++-
|
||||||
.../content/browser/ruleset_service.h | 8 +-
|
.../content/shared/browser/ruleset_service.h | 8 +-
|
||||||
.../unindexed_ruleset_stream_generator.cc | 3 +
|
.../unindexed_ruleset_stream_generator.cc | 3 +
|
||||||
.../core/browser/ruleset_version.h | 4 +
|
.../core/browser/ruleset_version.h | 4 +
|
||||||
.../browser/subresource_filter_features.cc | 118 +-------
|
.../browser/subresource_filter_features.cc | 116 +-------
|
||||||
.../core/browser/verified_ruleset_dealer.cc | 4 +
|
.../core/browser/verified_ruleset_dealer.cc | 3 +
|
||||||
.../core/common/indexed_ruleset.cc | 5 +-
|
.../core/common/indexed_ruleset.cc | 5 +-
|
||||||
38 files changed, 1288 insertions(+), 127 deletions(-)
|
.../Bromite-subresource-adblocker.inc | 3 +
|
||||||
|
40 files changed, 1259 insertions(+), 126 deletions(-)
|
||||||
create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
|
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/res/xml/adblock_preferences.xml
|
||||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
|
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
|
||||||
@@ -61,12 +63,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
|||||||
create mode 100644 components/component_updater/adblock_updater_service.h
|
create mode 100644 components/component_updater/adblock_updater_service.h
|
||||||
create mode 100644 components/component_updater/download_filters_task.cc
|
create mode 100644 components/component_updater/download_filters_task.cc
|
||||||
create mode 100644 components/component_updater/download_filters_task.h
|
create mode 100644 components/component_updater/download_filters_task.h
|
||||||
|
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Bromite-subresource-adblocker.inc
|
||||||
|
|
||||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||||
--- a/chrome/android/BUILD.gn
|
--- a/chrome/android/BUILD.gn
|
||||||
+++ b/chrome/android/BUILD.gn
|
+++ b/chrome/android/BUILD.gn
|
||||||
@@ -317,6 +317,7 @@ if (_is_default_toolchain) {
|
@@ -338,6 +338,7 @@ if (current_toolchain == default_toolchain) {
|
||||||
"//chrome/android/features/tab_ui/public:ui_java_resources",
|
"//chrome/android/modules/cablev2_authenticator/public:java",
|
||||||
"//chrome/android/modules/stack_unwinder/provider:java",
|
"//chrome/android/modules/stack_unwinder/provider:java",
|
||||||
"//chrome/android/webapk/libs/client:client_java",
|
"//chrome/android/webapk/libs/client:client_java",
|
||||||
+ "//chrome/browser/endpoint_fetcher:java",
|
+ "//chrome/browser/endpoint_fetcher:java",
|
||||||
@@ -76,27 +79,27 @@ 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
|
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
|
||||||
--- a/chrome/android/chrome_java_resources.gni
|
--- a/chrome/android/chrome_java_resources.gni
|
||||||
+++ b/chrome/android/chrome_java_resources.gni
|
+++ b/chrome/android/chrome_java_resources.gni
|
||||||
@@ -438,6 +438,7 @@ chrome_java_resources = [
|
@@ -427,6 +427,7 @@ chrome_java_resources = [
|
||||||
|
"java/res/layout/account_chooser_dialog_title.xml",
|
||||||
|
"java/res/layout/account_divider_preference.xml",
|
||||||
"java/res/layout/account_management_account_row.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/adblock_editor.xml",
|
||||||
"java/res/layout/auto_sign_in_first_run_dialog.xml",
|
"java/res/layout/auto_sign_in_first_run_dialog.xml",
|
||||||
"java/res/layout/autofill_billing_address_dropdown.xml",
|
"java/res/layout/autofill_billing_address_dropdown.xml",
|
||||||
"java/res/layout/autofill_card_name_and_number.xml",
|
"java/res/layout/autofill_card_name_and_number.xml",
|
||||||
@@ -650,6 +651,7 @@ chrome_java_resources = [
|
@@ -630,6 +631,7 @@ chrome_java_resources = [
|
||||||
|
"java/res/xml/about_chrome_preferences.xml",
|
||||||
"java/res/xml/account_management_preferences.xml",
|
"java/res/xml/account_management_preferences.xml",
|
||||||
"java/res/xml/ad_services_config.xml",
|
"java/res/xml/ad_services_config.xml",
|
||||||
"java/res/xml/appearance_preferences.xml",
|
|
||||||
+ "java/res/xml/adblock_preferences.xml",
|
+ "java/res/xml/adblock_preferences.xml",
|
||||||
"java/res/xml/bookmark_widget_info.xml",
|
"java/res/xml/bookmark_widget_info.xml",
|
||||||
"java/res/xml/clear_browsing_data_preferences.xml",
|
"java/res/xml/clear_browsing_data_preferences_tab.xml",
|
||||||
"java/res/xml/contextual_search_preferences.xml",
|
"java/res/xml/contextual_search_preferences.xml",
|
||||||
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
|
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
|
||||||
--- a/chrome/android/chrome_java_sources.gni
|
--- a/chrome/android/chrome_java_sources.gni
|
||||||
+++ b/chrome/android/chrome_java_sources.gni
|
+++ b/chrome/android/chrome_java_sources.gni
|
||||||
@@ -992,6 +992,8 @@ chrome_java_sources = [
|
@@ -973,6 +973,8 @@ chrome_java_sources = [
|
||||||
"java/src/org/chromium/chrome/browser/permissions/PermissionBlockedDialog.java",
|
"java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java",
|
||||||
"java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java",
|
"java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java",
|
||||||
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
|
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
|
||||||
+ "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
|
+ "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
|
||||||
@@ -179,7 +182,7 @@ new file mode 100644
|
|||||||
diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res/values/styles.xml
|
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
|
--- a/chrome/android/java/res/values/styles.xml
|
||||||
+++ b/chrome/android/java/res/values/styles.xml
|
+++ b/chrome/android/java/res/values/styles.xml
|
||||||
@@ -339,6 +339,24 @@ found in the LICENSE file.
|
@@ -245,6 +245,24 @@ found in the LICENSE file.
|
||||||
</item>
|
</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -207,13 +210,13 @@ diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res
|
|||||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||||
--- a/chrome/android/java/res/values/values.xml
|
--- a/chrome/android/java/res/values/values.xml
|
||||||
+++ b/chrome/android/java/res/values/values.xml
|
+++ b/chrome/android/java/res/values/values.xml
|
||||||
@@ -22,6 +22,10 @@ found in the LICENSE file.
|
@@ -19,6 +19,10 @@ found in the LICENSE file.
|
||||||
<!-- Compositor Tab Title Text -->
|
<!-- Compositor Tab Title Text -->
|
||||||
<bool name="compositor_tab_title_fake_bold_text">true</bool>
|
<bool name="compositor_tab_title_fake_bold_text">true</bool>
|
||||||
|
|
||||||
+ <string name="adblock_on">Autoupdate enabled</string>
|
+ <string name="adblock_on">Autoupdate enabled</string>
|
||||||
+ <string name="adblock_off">Autoupdate disabled</string>
|
+ <string name="adblock_off">Autoupdate disabled</string>
|
||||||
+ <string name="adblock_help_url">https://github.com/uazo/cromite/blob/master/docs/BROMITE_LEGACY_ADBLOCK.md</string>
|
+ <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
|
||||||
+
|
+
|
||||||
<string name="proxy_title">Proxy configuration</string>
|
<string name="proxy_title">Proxy configuration</string>
|
||||||
<string name="proxy_url">chrome://proxy</string>
|
<string name="proxy_url">chrome://proxy</string>
|
||||||
@@ -251,10 +254,10 @@ new file mode 100644
|
|||||||
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
|
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
|
--- a/chrome/android/java/res/xml/main_preferences.xml
|
||||||
+++ b/chrome/android/java/res/xml/main_preferences.xml
|
+++ b/chrome/android/java/res/xml/main_preferences.xml
|
||||||
@@ -119,6 +119,11 @@ found in the LICENSE file.
|
@@ -83,6 +83,11 @@ found in the LICENSE file.
|
||||||
android:key="toolbar_shortcut"
|
android:key="safety_hub"
|
||||||
android:order="22"
|
android:order="14"
|
||||||
android:title="@string/toolbar_shortcut"/>
|
android:title="@string/prefs_safety_check"/>
|
||||||
+ <Preference
|
+ <Preference
|
||||||
+ android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
|
+ android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
|
||||||
+ android:key="adblock"
|
+ android:key="adblock"
|
||||||
@@ -262,7 +265,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
|
|||||||
+ android:title="@string/prefs_adblock"/>
|
+ android:title="@string/prefs_adblock"/>
|
||||||
<Preference
|
<Preference
|
||||||
android:key="notifications"
|
android:key="notifications"
|
||||||
android:order="23"
|
android:order="15"
|
||||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -363,7 +366,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBloc
|
|||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
|
+++ 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.
|
+// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||||
+// Use of this source code is governed by a BSD-style license that can be
|
+// Use of this source code is governed by a BSD-style license that can be
|
||||||
+// found in the LICENSE file.
|
+// found in the LICENSE file.
|
||||||
@@ -373,48 +376,30 @@ new file mode 100644
|
|||||||
+import android.os.Bundle;
|
+import android.os.Bundle;
|
||||||
+import androidx.preference.Preference;
|
+import androidx.preference.Preference;
|
||||||
+import androidx.preference.PreferenceFragmentCompat;
|
+import androidx.preference.PreferenceFragmentCompat;
|
||||||
+
|
+import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
|
||||||
+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.content_public.browser.BrowserContextHandle;
|
+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.BaseSiteSettingsFragment;
|
||||||
+import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
|
+import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge;
|
||||||
+import org.chromium.components.content_settings.ContentSettingsType;
|
+import org.chromium.components.content_settings.ContentSettingsType;
|
||||||
+import org.chromium.components.browser_ui.settings.SettingsUtils;
|
+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.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.
|
+ * 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";
|
+ public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
|
||||||
+ private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
|
+ private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
|
||||||
+
|
+
|
||||||
+ private Preference mAdBlockEdit;
|
+ 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
|
+ @Override
|
||||||
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
+ 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);
|
+ SettingsUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
|
||||||
+
|
+
|
||||||
+ ChromeSwitchPreference mAdBlockSwitch =
|
+ ChromeSwitchPreference mAdBlockSwitch =
|
||||||
@@ -440,30 +425,22 @@ new file mode 100644
|
|||||||
+ updateCurrentAdBlockUrl();
|
+ 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
|
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/settings/SettingsActivity.java
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java
|
||||||
@@ -109,6 +109,8 @@ import java.util.List;
|
@@ -862,7 +862,7 @@ public class TabModelImpl extends TabModelJniBridge {
|
||||||
import java.util.Locale;
|
protected boolean createTabWithWebContents(
|
||||||
import java.util.Map;
|
Tab parent, Profile profile, WebContents webContents) {
|
||||||
|
return getTabCreator(profile.isOffTheRecord())
|
||||||
|
- .createTabWithWebContents(parent, webContents, TabLaunchType.FROM_RECENT_TABS);
|
||||||
|
+ .createTabWithWebContents(parent, webContents, TabLaunchType.FROM_LINK);
|
||||||
|
}
|
||||||
|
|
||||||
+import org.chromium.chrome.browser.settings.AdBlockEditor;
|
@Override
|
||||||
+
|
|
||||||
/**
|
|
||||||
* The Chrome settings activity.
|
|
||||||
*
|
|
||||||
@@ -1376,6 +1378,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(
|
|
||||||
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
|
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
|
||||||
--- a/chrome/app/generated_resources.grd
|
--- a/chrome/app/generated_resources.grd
|
||||||
+++ b/chrome/app/generated_resources.grd
|
+++ b/chrome/app/generated_resources.grd
|
||||||
@@ -17455,6 +17455,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
@@ -15173,6 +15173,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||||
Never show this again.
|
Never show this again.
|
||||||
</message>
|
</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
|
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
|
--- a/chrome/browser/after_startup_task_utils.cc
|
||||||
+++ b/chrome/browser/after_startup_task_utils.cc
|
+++ b/chrome/browser/after_startup_task_utils.cc
|
||||||
@@ -24,6 +24,9 @@
|
@@ -29,6 +29,8 @@
|
||||||
#include "chrome/browser/ui/ash/login/login_display_host.h"
|
#include "chromeos/startup/browser_params_proxy.h"
|
||||||
#endif
|
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||||
|
|
||||||
+#include "chrome/browser/browser_process.h"
|
+#include "chrome/browser/browser_process.h"
|
||||||
+#include "components/component_updater/adblock_updater_service.h"
|
|
||||||
+
|
+
|
||||||
using content::BrowserThread;
|
using content::BrowserThread;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@@ -129,6 +132,8 @@ void SetBrowserStartupIsComplete() {
|
@@ -132,6 +134,8 @@ void SetBrowserStartupIsComplete() {
|
||||||
}
|
}
|
||||||
GetAfterStartupTasks().clear();
|
GetAfterStartupTasks().clear();
|
||||||
GetAfterStartupTasks().shrink_to_fit();
|
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
|
diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
|
||||||
--- a/chrome/browser/browser_process.h
|
--- a/chrome/browser/browser_process.h
|
||||||
+++ b/chrome/browser/browser_process.h
|
+++ b/chrome/browser/browser_process.h
|
||||||
@@ -96,6 +96,10 @@ namespace component_updater {
|
@@ -21,6 +21,7 @@
|
||||||
|
#include "build/chromeos_buildflags.h"
|
||||||
|
#include "chrome/common/buildflags.h"
|
||||||
|
#include "media/media_buildflags.h"
|
||||||
|
+#include "components/component_updater/adblock_updater_service.h"
|
||||||
|
|
||||||
|
class BackgroundModeManager;
|
||||||
|
class BrowserProcessPlatformPart;
|
||||||
|
@@ -71,6 +72,10 @@ namespace component_updater {
|
||||||
class ComponentUpdateService;
|
class ComponentUpdateService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -513,30 +497,21 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
|
|||||||
+class AdBlockUpdaterService;
|
+class AdBlockUpdaterService;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
namespace gcm {
|
namespace extensions {
|
||||||
class GCMDriver;
|
class EventRouterForwarder;
|
||||||
}
|
}
|
||||||
@@ -294,6 +298,7 @@ class BrowserProcess {
|
@@ -253,6 +258,7 @@ class BrowserProcess {
|
||||||
virtual activity_reporter::ActivityReporter* activity_reporter() = 0;
|
#endif
|
||||||
|
|
||||||
virtual component_updater::ComponentUpdateService* component_updater() = 0;
|
virtual component_updater::ComponentUpdateService* component_updater() = 0;
|
||||||
+ virtual adblock_updater::AdBlockUpdaterService* adblock_updater() = 0;
|
+ virtual adblock_updater::AdBlockUpdaterService* adblock_updater() = 0;
|
||||||
|
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
|
||||||
virtual MediaFileSystemRegistry* media_file_system_registry() = 0;
|
virtual MediaFileSystemRegistry* media_file_system_registry() = 0;
|
||||||
|
|
||||||
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
|
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
|
||||||
--- a/chrome/browser/browser_process_impl.cc
|
--- a/chrome/browser/browser_process_impl.cc
|
||||||
+++ b/chrome/browser/browser_process_impl.cc
|
+++ b/chrome/browser/browser_process_impl.cc
|
||||||
@@ -187,6 +187,8 @@
|
@@ -1183,6 +1183,27 @@ BrowserProcessImpl::component_updater() {
|
||||||
#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"
|
|
||||||
@@ -1414,6 +1416,34 @@ BrowserProcessImpl::component_updater() {
|
|
||||||
return component_updater_.get();
|
return component_updater_.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,13 +526,6 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
|
|||||||
+ std::unique_ptr<component_updater::UpdateScheduler> scheduler =
|
+ std::unique_ptr<component_updater::UpdateScheduler> scheduler =
|
||||||
+ std::make_unique<component_updater::TimerUpdateScheduler>();
|
+ std::make_unique<component_updater::TimerUpdateScheduler>();
|
||||||
+
|
+
|
||||||
+ auto adblock_updater_url =
|
|
||||||
+ local_state()->GetString(prefs::kAdBlockFiltersURL);
|
|
||||||
+ if (base::StartsWith(adblock_updater_url,
|
|
||||||
+ "https://www.bromite.org", base::CompareCase::INSENSITIVE_ASCII)) {
|
|
||||||
+ local_state()->SetString(prefs::kAdBlockFiltersURL, "about:blank");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
|
+ adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
|
||||||
+ g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
|
+ g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
|
||||||
+ std::move(scheduler),
|
+ std::move(scheduler),
|
||||||
@@ -569,20 +537,20 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
void BrowserProcessImpl::OnKeepAliveStateChanged(bool is_keeping_alive) {
|
void BrowserProcessImpl::OnKeepAliveStateChanged(bool is_keeping_alive) {
|
||||||
if (is_keeping_alive) {
|
if (is_keeping_alive)
|
||||||
Pin();
|
Pin();
|
||||||
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
|
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
|
||||||
--- a/chrome/browser/browser_process_impl.h
|
--- a/chrome/browser/browser_process_impl.h
|
||||||
+++ b/chrome/browser/browser_process_impl.h
|
+++ b/chrome/browser/browser_process_impl.h
|
||||||
@@ -224,6 +224,7 @@ class BrowserProcessImpl : public BrowserProcess,
|
@@ -212,6 +212,7 @@ class BrowserProcessImpl : public BrowserProcess,
|
||||||
|
#endif
|
||||||
|
|
||||||
activity_reporter::ActivityReporter* activity_reporter() override;
|
|
||||||
component_updater::ComponentUpdateService* component_updater() override;
|
component_updater::ComponentUpdateService* component_updater() override;
|
||||||
+ adblock_updater::AdBlockUpdaterService* adblock_updater() override;
|
+ adblock_updater::AdBlockUpdaterService* adblock_updater() override;
|
||||||
#if BUILDFLAG(IS_CHROMEOS)
|
|
||||||
MediaFileSystemRegistry* media_file_system_registry() override;
|
MediaFileSystemRegistry* media_file_system_registry() override;
|
||||||
#endif
|
WebRtcLogUploader* webrtc_log_uploader() override;
|
||||||
@@ -449,6 +450,7 @@ class BrowserProcessImpl : public BrowserProcess,
|
network_time::NetworkTimeTracker* network_time_tracker() override;
|
||||||
|
@@ -413,6 +414,7 @@ class BrowserProcessImpl : public BrowserProcess,
|
||||||
// to concerns over integrity of data shared between profiles,
|
// to concerns over integrity of data shared between profiles,
|
||||||
// but some users of component updater only install per-user.
|
// but some users of component updater only install per-user.
|
||||||
std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
|
std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
|
||||||
@@ -593,7 +561,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
|
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc
|
||||||
--- a/chrome/browser/chrome_browser_main.cc
|
--- a/chrome/browser/chrome_browser_main.cc
|
||||||
+++ b/chrome/browser/chrome_browser_main.cc
|
+++ b/chrome/browser/chrome_browser_main.cc
|
||||||
@@ -449,6 +449,9 @@ StartupProfileInfo CreateInitialProfile(
|
@@ -455,6 +455,9 @@ StartupProfileInfo CreateInitialProfile(
|
||||||
// missing code in the above test.
|
// missing code in the above test.
|
||||||
CHECK(profile_info.profile) << "Cannot get default profile.";
|
CHECK(profile_info.profile) << "Cannot get default profile.";
|
||||||
|
|
||||||
@@ -601,12 +569,12 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows
|
|||||||
+ g_browser_process->adblock_updater();
|
+ g_browser_process->adblock_updater();
|
||||||
+
|
+
|
||||||
#else
|
#else
|
||||||
profile_info =
|
#if BUILDFLAG(IS_CHROMEOS_LACROS)
|
||||||
GetStartupProfile(/*cur_dir=*/base::FilePath(), parsed_command_line);
|
// 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
|
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
|
||||||
--- a/chrome/browser/flags/BUILD.gn
|
--- a/chrome/browser/flags/BUILD.gn
|
||||||
+++ b/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") {
|
android_library("java") {
|
||||||
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
|
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
|
||||||
sources += [
|
sources += [
|
||||||
@@ -614,7 +582,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/ChromeFeatureList.java",
|
||||||
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java",
|
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java",
|
||||||
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
|
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
|
||||||
@@ -49,6 +50,7 @@ java_bromite_impl("java_cromite_cached_flags") {
|
@@ -33,6 +34,7 @@ android_library("java") {
|
||||||
generate_jni("jni_headers") {
|
generate_jni("jni_headers") {
|
||||||
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
|
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
|
||||||
sources += [
|
sources += [
|
||||||
@@ -622,7 +590,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/ChromeFeatureMap.java",
|
||||||
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
|
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
|
||||||
]
|
]
|
||||||
@@ -62,6 +64,7 @@ static_library("flags_android") {
|
@@ -47,6 +49,7 @@ static_library("flags_android") {
|
||||||
"android/chrome_session_state.cc",
|
"android/chrome_session_state.cc",
|
||||||
"android/chrome_session_state.h",
|
"android/chrome_session_state.h",
|
||||||
]
|
]
|
||||||
@@ -634,7 +602,7 @@ diff --git a/chrome/browser/flags/android/adblock_native_gateway.cc b/chrome/bro
|
|||||||
new file mode 100755
|
new file mode 100755
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/chrome/browser/flags/android/adblock_native_gateway.cc
|
+++ 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 "chrome/browser/flags/jni_headers/AdBlockNativeGateway_jni.h"
|
||||||
+
|
+
|
||||||
+#include "base/android/jni_string.h"
|
+#include "base/android/jni_string.h"
|
||||||
@@ -643,7 +611,7 @@ new file mode 100755
|
|||||||
+#include "components/prefs/pref_service.h"
|
+#include "components/prefs/pref_service.h"
|
||||||
+
|
+
|
||||||
+using base::android::ScopedJavaLocalRef;
|
+using base::android::ScopedJavaLocalRef;
|
||||||
+using base::android::JavaRef;
|
+using base::android::JavaParamRef;
|
||||||
+
|
+
|
||||||
+static ScopedJavaLocalRef<jstring> JNI_AdBlockNativeGateway_GetAdBlockFiltersURL(
|
+static ScopedJavaLocalRef<jstring> JNI_AdBlockNativeGateway_GetAdBlockFiltersURL(
|
||||||
+ JNIEnv* env) {
|
+ JNIEnv* env) {
|
||||||
@@ -652,22 +620,20 @@ new file mode 100755
|
|||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void JNI_AdBlockNativeGateway_SetAdBlockFiltersURL(
|
+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,
|
+ g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL,
|
||||||
+ base::android::ConvertJavaStringToUTF8(env, url));
|
+ base::android::ConvertJavaStringToUTF8(env, url));
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static bool JNI_AdBlockNativeGateway_GetAdBlockEnabled(
|
+static jboolean JNI_AdBlockNativeGateway_GetAdBlockEnabled(
|
||||||
+ JNIEnv* env) {
|
+ JNIEnv* env) {
|
||||||
+ return g_browser_process->local_state()->GetBoolean(prefs::kAdBlockEnabled);
|
+ return g_browser_process->local_state()->GetBoolean(prefs::kAdBlockEnabled);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void JNI_AdBlockNativeGateway_SetAdBlockEnabled(
|
+static void JNI_AdBlockNativeGateway_SetAdBlockEnabled(
|
||||||
+ JNIEnv* env, bool enabled) {
|
+ JNIEnv* env, jboolean enabled) {
|
||||||
+ g_browser_process->local_state()->SetBoolean(prefs::kAdBlockEnabled, 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
|
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
|
new file mode 100755
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -696,7 +662,7 @@ new file mode 100755
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @NativeMethods
|
+ @NativeMethods
|
||||||
+ public interface Natives {
|
+ interface Natives {
|
||||||
+ void setAdBlockFiltersURL(String url);
|
+ void setAdBlockFiltersURL(String url);
|
||||||
+ String getAdBlockFiltersURL();
|
+ String getAdBlockFiltersURL();
|
||||||
+ void setAdBlockEnabled(boolean enabled);
|
+ void setAdBlockEnabled(boolean enabled);
|
||||||
@@ -706,22 +672,42 @@ new file mode 100755
|
|||||||
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
|
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
|
--- a/chrome/browser/net/system_network_context_manager.cc
|
||||||
+++ b/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,14 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
|
||||||
DefaultDnsOverHttpsConfigSource::RegisterPrefs(registry);
|
void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||||
NetworkProcessLaunchWatcher::RegisterPrefs(registry);
|
StubResolverConfigReader::RegisterPrefs(registry);
|
||||||
|
|
||||||
|
+#if BUILDFLAG(IS_ANDROID)
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kAdBlockEnabled, true);
|
||||||
|
+#else
|
||||||
+ registry->RegisterBooleanPref(prefs::kAdBlockEnabled, false);
|
+ registry->RegisterBooleanPref(prefs::kAdBlockEnabled, false);
|
||||||
|
+#endif
|
||||||
+ registry->RegisterStringPref(prefs::kAdBlockFiltersURL,
|
+ registry->RegisterStringPref(prefs::kAdBlockFiltersURL,
|
||||||
+ "about:blank");
|
+ "https://www.bromite.org/filters/filters.dat");
|
||||||
+
|
+
|
||||||
// Static auth params
|
// Static auth params
|
||||||
registry->RegisterStringPref(prefs::kAuthSchemes,
|
registry->RegisterStringPref(prefs::kAuthSchemes,
|
||||||
"basic,digest,ntlm,negotiate");
|
"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
|
||||||
|
@@ -56,8 +56,10 @@ 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());
|
||||||
|
+ 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
|
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
|
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||||
@@ -245,6 +245,20 @@ CHAR_LIMIT guidelines:
|
@@ -225,6 +225,20 @@ CHAR_LIMIT guidelines:
|
||||||
Delete
|
Control your data & accounts
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
+ <!-- AdBlock settings -->
|
+ <!-- AdBlock settings -->
|
||||||
@@ -744,7 +730,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
|
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||||
--- a/chrome/common/pref_names.h
|
--- a/chrome/common/pref_names.h
|
||||||
+++ b/chrome/common/pref_names.h
|
+++ b/chrome/common/pref_names.h
|
||||||
@@ -2416,6 +2416,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
|
@@ -2688,6 +2688,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
|
||||||
inline constexpr char kAudioCaptureAllowedUrls[] =
|
inline constexpr char kAudioCaptureAllowedUrls[] =
|
||||||
"hardware.audio_capture_allowed_urls";
|
"hardware.audio_capture_allowed_urls";
|
||||||
|
|
||||||
@@ -759,7 +745,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
|
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
|
--- a/components/browser_ui/strings/android/site_settings.grdp
|
||||||
+++ b/components/browser_ui/strings/android/site_settings.grdp
|
+++ b/components/browser_ui/strings/android/site_settings.grdp
|
||||||
@@ -421,6 +421,9 @@
|
@@ -368,6 +368,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">
|
<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
|
This site shows intrusive or misleading ads
|
||||||
</message>
|
</message>
|
||||||
@@ -772,7 +758,7 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen
|
|||||||
diff --git a/components/component_updater/BUILD.gn b/components/component_updater/BUILD.gn
|
diff --git a/components/component_updater/BUILD.gn b/components/component_updater/BUILD.gn
|
||||||
--- a/components/component_updater/BUILD.gn
|
--- a/components/component_updater/BUILD.gn
|
||||||
+++ b/components/component_updater/BUILD.gn
|
+++ b/components/component_updater/BUILD.gn
|
||||||
@@ -19,6 +19,12 @@ static_library("component_updater") {
|
@@ -16,6 +16,12 @@ static_library("component_updater") {
|
||||||
"component_installer.h",
|
"component_installer.h",
|
||||||
"component_updater_command_line_config_policy.cc",
|
"component_updater_command_line_config_policy.cc",
|
||||||
"component_updater_command_line_config_policy.h",
|
"component_updater_command_line_config_policy.h",
|
||||||
@@ -785,7 +771,7 @@ diff --git a/components/component_updater/BUILD.gn b/components/component_update
|
|||||||
"component_updater_service.cc",
|
"component_updater_service.cc",
|
||||||
"component_updater_service.h",
|
"component_updater_service.h",
|
||||||
"component_updater_service_internal.h",
|
"component_updater_service_internal.h",
|
||||||
@@ -49,9 +55,11 @@ static_library("component_updater") {
|
@@ -48,6 +54,7 @@ static_library("component_updater") {
|
||||||
"//components/update_client",
|
"//components/update_client",
|
||||||
"//components/version_info",
|
"//components/version_info",
|
||||||
"//net",
|
"//net",
|
||||||
@@ -793,10 +779,6 @@ diff --git a/components/component_updater/BUILD.gn b/components/component_update
|
|||||||
"//third_party/boringssl",
|
"//third_party/boringssl",
|
||||||
"//ui/base",
|
"//ui/base",
|
||||||
"//url",
|
"//url",
|
||||||
+ "//content/common:buildflags"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
|
diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -1121,7 +1103,7 @@ new file mode 100644
|
|||||||
+#include "components/component_updater/update_scheduler.h"
|
+#include "components/component_updater/update_scheduler.h"
|
||||||
+#include "url/gurl.h"
|
+#include "url/gurl.h"
|
||||||
+#include "components/component_updater/download_filters_task.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"
|
+#include "services/network/public/cpp/shared_url_loader_factory.h"
|
||||||
+
|
+
|
||||||
+namespace adblock_updater {
|
+namespace adblock_updater {
|
||||||
@@ -1195,7 +1177,7 @@ diff --git a/components/component_updater/download_filters_task.cc b/components/
|
|||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/components/component_updater/download_filters_task.cc
|
+++ b/components/component_updater/download_filters_task.cc
|
||||||
@@ -0,0 +1,250 @@
|
@@ -0,0 +1,239 @@
|
||||||
+/*
|
+/*
|
||||||
+ This file is part of Bromite.
|
+ This file is part of Bromite.
|
||||||
+
|
+
|
||||||
@@ -1365,21 +1347,10 @@ new file mode 100644
|
|||||||
+ final_url_ = final_url;
|
+ final_url_ = final_url;
|
||||||
+ response_code_ = response_head.headers ? response_head.headers->response_code() : -1;
|
+ response_code_ = response_head.headers ? response_head.headers->response_code() : -1;
|
||||||
+
|
+
|
||||||
+ std::optional<base::Time> last_modified_value =
|
+ if (!response_head.headers->GetLastModifiedValue(&last_modified_))
|
||||||
+ response_head.headers->GetLastModifiedValue();
|
+ LOG(WARNING) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD") << " (no Last-Modified header)";
|
||||||
+ if (last_modified_value) {
|
+ else
|
||||||
+ last_modified_ = last_modified_value.value();
|
+ LOG(INFO) << "DownloadFiltersTask: fetching URL '" << final_url.spec() << "' with method " << (min_last_modified_.is_null() ? "GET" : "HEAD");
|
||||||
+ LOG(INFO) << "DownloadFiltersTask: fetching URL '"
|
|
||||||
+ << final_url.spec()
|
|
||||||
+ << "' with method "
|
|
||||||
+ << (min_last_modified_.is_null() ? "GET" : "HEAD");
|
|
||||||
+ } else {
|
|
||||||
+ LOG(WARNING) << "DownloadFiltersTask: fetching URL '"
|
|
||||||
+ << final_url.spec()
|
|
||||||
+ << "' with method "
|
|
||||||
+ << (min_last_modified_.is_null() ? "GET" : "HEAD")
|
|
||||||
+ << " (no Last-Modified header)";
|
|
||||||
+ }
|
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void DownloadFiltersTask::OnDownloadComplete(base::FilePath file_path) {
|
+void DownloadFiltersTask::OnDownloadComplete(base::FilePath file_path) {
|
||||||
@@ -1583,18 +1554,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
|
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
|
--- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
|
||||||
+++ b/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 @@
|
@@ -15,6 +15,9 @@
|
||||||
|
#include "base/strings/stringprintf.h"
|
||||||
#include "base/trace_event/trace_event.h"
|
#include "base/trace_event/trace_event.h"
|
||||||
#include "base/trace_event/traced_value.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/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_content_settings_manager.h"
|
||||||
+#include "components/subresource_filter/content/browser/subresource_filter_profile_context.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/ad_tagging_utils.h"
|
||||||
#include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h"
|
#include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h"
|
||||||
#include "components/subresource_filter/content/browser/page_load_statistics.h"
|
#include "components/subresource_filter/content/browser/page_load_statistics.h"
|
||||||
@@ -113,6 +116,7 @@ ContentSubresourceFilterThrottleManager::
|
@@ -151,6 +154,7 @@ ContentSubresourceFilterThrottleManager::
|
||||||
profile_interaction_manager_(
|
profile_interaction_manager_(
|
||||||
std::make_unique<subresource_filter::ProfileInteractionManager>(
|
std::make_unique<subresource_filter::ProfileInteractionManager>(
|
||||||
profile_context)),
|
profile_context)),
|
||||||
@@ -1602,17 +1572,17 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
|
|||||||
web_contents_helper_(web_contents_helper) {}
|
web_contents_helper_(web_contents_helper) {}
|
||||||
|
|
||||||
ContentSubresourceFilterThrottleManager::
|
ContentSubresourceFilterThrottleManager::
|
||||||
@@ -658,6 +662,17 @@ ContentSubresourceFilterThrottleManager::
|
@@ -675,6 +679,17 @@ ContentSubresourceFilterThrottleManager::
|
||||||
throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
|
throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
|
||||||
ad_tagging_state);
|
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) {
|
+ if (profile_context_->settings_manager()->GetSitePermission(url) != CONTENT_SETTING_ALLOW) {
|
||||||
+ subresource_filter::ActivationDecision ignored_decision;
|
+ subresource_filter::ActivationDecision ignored_decision;
|
||||||
+ mojom::ActivationState ad_filtering_state;
|
+ mojom::ActivationState ad_filtering_state;
|
||||||
+ ad_filtering_state.activation_level = profile_interaction_manager_->OnPageActivationComputed(
|
+ 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(),
|
+ throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
|
||||||
+ ad_filtering_state);
|
+ ad_filtering_state);
|
||||||
+ }
|
+ }
|
||||||
@@ -1623,7 +1593,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
|
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
|
--- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h
|
||||||
+++ b/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
|
@@ -413,6 +413,8 @@ class ContentSubresourceFilterThrottleManager
|
||||||
|
|
||||||
std::unique_ptr<ProfileInteractionManager> profile_interaction_manager_;
|
std::unique_ptr<ProfileInteractionManager> profile_interaction_manager_;
|
||||||
|
|
||||||
@@ -1632,39 +1602,37 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
|
|||||||
// Unowned since the throttle manager cannot outlive the Page that owns it.
|
// Unowned since the throttle manager cannot outlive the Page that owns it.
|
||||||
// The throttle manager is held as user data first on NavigationHandle, then
|
// 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
|
// 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
|
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/browser/ruleset_service.cc
|
--- a/components/subresource_filter/content/shared/browser/ruleset_service.cc
|
||||||
+++ b/components/subresource_filter/content/browser/ruleset_service.cc
|
+++ b/components/subresource_filter/content/shared/browser/ruleset_service.cc
|
||||||
@@ -49,12 +49,7 @@ namespace {
|
@@ -47,9 +47,7 @@ namespace {
|
||||||
|
|
||||||
void RecordIndexAndWriteRulesetResult(
|
void RecordIndexAndWriteRulesetResult(
|
||||||
std::string_view uma_tag,
|
|
||||||
RulesetService::IndexAndWriteRulesetResult result) {
|
RulesetService::IndexAndWriteRulesetResult result) {
|
||||||
- base::UmaHistogramEnumeration(
|
- UMA_HISTOGRAM_ENUMERATION(
|
||||||
- base::StrCat({uma_tag, ".WriteRuleset.Result"}), result,
|
- "SubresourceFilter.WriteRuleset.Result", static_cast<int>(result),
|
||||||
- static_cast<RulesetService::IndexAndWriteRulesetResult>(
|
- static_cast<int>(RulesetService::IndexAndWriteRulesetResult::MAX));
|
||||||
- static_cast<int>(
|
|
||||||
- RulesetService::IndexAndWriteRulesetResult::kMaxValue) +
|
|
||||||
- 1));
|
|
||||||
+ VLOG(1) << "SubresourceFilter.WriteRuleset.Result: " << static_cast<int>(result);
|
+ VLOG(1) << "SubresourceFilter.WriteRuleset.Result: " << static_cast<int>(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implements operations on a `sentinel file`, which is used as a safeguard to
|
// Implements operations on a `sentinel file`, which is used as a safeguard to
|
||||||
@@ -236,11 +231,13 @@ RulesetService::RulesetService(
|
@@ -228,10 +226,13 @@ RulesetService::RulesetService(
|
||||||
RulesetService::~RulesetService() = default;
|
RulesetService::~RulesetService() {}
|
||||||
|
|
||||||
void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
|
void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
|
||||||
- const UnindexedRulesetInfo& unindexed_ruleset_info) {
|
- const UnindexedRulesetInfo& unindexed_ruleset_info) {
|
||||||
|
- if (unindexed_ruleset_info.content_version.empty())
|
||||||
+ const UnindexedRulesetInfo& unindexed_ruleset_info, bool ignore_recent_version) {
|
+ 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.";
|
+ LOG(INFO) << "RulesetService: ignoring update with empty version.";
|
||||||
return;
|
return;
|
||||||
}
|
+ }
|
||||||
|
|
||||||
+ if (!ignore_recent_version) {
|
+ if (!ignore_recent_version) {
|
||||||
// Trying to store a ruleset with the same version for a second time would
|
// 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
|
// 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
|
// Tunneling" as long as the previously stored copy of the rules is still
|
||||||
@@ -250,13 +247,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
|
@@ -241,13 +242,16 @@ void RulesetService::IndexAndStoreAndPublishRulesetIfNeeded(
|
||||||
if (most_recently_indexed_version.IsCurrentFormatVersion() &&
|
if (most_recently_indexed_version.IsCurrentFormatVersion() &&
|
||||||
most_recently_indexed_version.content_version ==
|
most_recently_indexed_version.content_version ==
|
||||||
unindexed_ruleset_info.content_version) {
|
unindexed_ruleset_info.content_version) {
|
||||||
@@ -1681,7 +1649,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,6 +276,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
@@ -267,6 +271,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
||||||
const RulesetConfig& config,
|
const RulesetConfig& config,
|
||||||
const base::FilePath& indexed_ruleset_base_dir,
|
const base::FilePath& indexed_ruleset_base_dir,
|
||||||
const UnindexedRulesetInfo& unindexed_ruleset_info) {
|
const UnindexedRulesetInfo& unindexed_ruleset_info) {
|
||||||
@@ -1705,29 +1673,28 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
|
|||||||
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
|
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
|
||||||
base::BlockingType::MAY_BLOCK);
|
base::BlockingType::MAY_BLOCK);
|
||||||
|
|
||||||
@@ -283,6 +300,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
@@ -274,6 +295,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
||||||
unindexed_ruleset_info);
|
unindexed_ruleset_info);
|
||||||
|
|
||||||
if (!unindexed_ruleset_stream_generator.ruleset_stream()) {
|
if (!unindexed_ruleset_stream_generator.ruleset_stream()) {
|
||||||
+ LOG(WARNING) << "RulesetService: failed to open: " << unindexed_ruleset_info.ruleset_path;
|
+ LOG(WARNING) << "RulesetService: failed to open: " << unindexed_ruleset_info.ruleset_path;
|
||||||
RecordIndexAndWriteRulesetResult(
|
RecordIndexAndWriteRulesetResult(
|
||||||
config.uma_tag,
|
IndexAndWriteRulesetResult::FAILED_OPENING_UNINDEXED_RULESET);
|
||||||
IndexAndWriteRulesetResult::kFailedOpeningUnindexedRuleset);
|
return IndexedRulesetVersion(config.filter_tag);
|
||||||
@@ -297,6 +315,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
@@ -287,6 +309,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
||||||
indexed_ruleset_base_dir, indexed_version);
|
indexed_ruleset_base_dir, indexed_version);
|
||||||
|
|
||||||
if (!base::CreateDirectory(indexed_ruleset_version_dir)) {
|
if (!base::CreateDirectory(indexed_ruleset_version_dir)) {
|
||||||
+ LOG(WARNING) << "RulesetService: failed to create version dir: " << indexed_ruleset_version_dir;
|
+ LOG(WARNING) << "RulesetService: failed to create version dir: " << indexed_ruleset_version_dir;
|
||||||
RecordIndexAndWriteRulesetResult(
|
RecordIndexAndWriteRulesetResult(
|
||||||
config.uma_tag, IndexAndWriteRulesetResult::kFailedCreatingVersionDir);
|
IndexAndWriteRulesetResult::FAILED_CREATING_VERSION_DIR);
|
||||||
return IndexedRulesetVersion(config.filter_tag);
|
return IndexedRulesetVersion(config.filter_tag);
|
||||||
@@ -304,13 +323,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
@@ -294,12 +317,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
||||||
|
|
||||||
SentinelFile sentinel_file(indexed_ruleset_version_dir);
|
SentinelFile sentinel_file(indexed_ruleset_version_dir);
|
||||||
if (sentinel_file.IsPresent()) {
|
if (sentinel_file.IsPresent()) {
|
||||||
- RecordIndexAndWriteRulesetResult(
|
- RecordIndexAndWriteRulesetResult(
|
||||||
- config.uma_tag,
|
- IndexAndWriteRulesetResult::ABORTED_BECAUSE_SENTINEL_FILE_PRESENT);
|
||||||
- IndexAndWriteRulesetResult::kAbortedBecauseSentinelFilePresent);
|
|
||||||
- return IndexedRulesetVersion(config.filter_tag);
|
- return IndexedRulesetVersion(config.filter_tag);
|
||||||
+ LOG(WARNING) << "RulesetService: sentinel file is present in " << indexed_ruleset_version_dir;
|
+ LOG(WARNING) << "RulesetService: sentinel file is present in " << indexed_ruleset_version_dir;
|
||||||
}
|
}
|
||||||
@@ -1735,41 +1702,42 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
|
|||||||
if (!sentinel_file.Create()) {
|
if (!sentinel_file.Create()) {
|
||||||
+ LOG(WARNING) << "RulesetService: cannot create sentinel file in " << indexed_ruleset_version_dir;
|
+ LOG(WARNING) << "RulesetService: cannot create sentinel file in " << indexed_ruleset_version_dir;
|
||||||
RecordIndexAndWriteRulesetResult(
|
RecordIndexAndWriteRulesetResult(
|
||||||
config.uma_tag,
|
IndexAndWriteRulesetResult::FAILED_CREATING_SENTINEL_FILE);
|
||||||
IndexAndWriteRulesetResult::kFailedCreatingSentinelFile);
|
return IndexedRulesetVersion(config.filter_tag);
|
||||||
@@ -325,6 +342,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
@@ -312,6 +334,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
||||||
|
|
||||||
RulesetIndexer indexer;
|
RulesetIndexer indexer;
|
||||||
if (!(*g_index_ruleset_func)(config, &unindexed_ruleset_stream_generator,
|
if (!(*g_index_ruleset_func)(&unindexed_ruleset_stream_generator, &indexer)) {
|
||||||
&indexer)) {
|
|
||||||
+ LOG(WARNING) << "RulesetService: failed parsing.";
|
+ LOG(WARNING) << "RulesetService: failed parsing.";
|
||||||
RecordIndexAndWriteRulesetResult(
|
RecordIndexAndWriteRulesetResult(
|
||||||
config.uma_tag,
|
IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET);
|
||||||
IndexAndWriteRulesetResult::kFailedParsingUnindexedRuleset);
|
return IndexedRulesetVersion(config.filter_tag);
|
||||||
@@ -345,9 +363,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
@@ -329,8 +352,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
|
||||||
|
WriteRuleset(indexed_ruleset_version_dir,
|
||||||
unindexed_ruleset_info.license_path, indexer.data());
|
unindexed_ruleset_info.license_path, indexer.data());
|
||||||
RecordIndexAndWriteRulesetResult(config.uma_tag, result);
|
RecordIndexAndWriteRulesetResult(result);
|
||||||
if (result != IndexAndWriteRulesetResult::kSuccess) {
|
- if (result != IndexAndWriteRulesetResult::SUCCESS)
|
||||||
|
+ if (result != IndexAndWriteRulesetResult::SUCCESS) {
|
||||||
+ LOG(INFO) << "RulesetService: failed to index.";
|
+ LOG(INFO) << "RulesetService: failed to index.";
|
||||||
return IndexedRulesetVersion(config.filter_tag);
|
return IndexedRulesetVersion(config.filter_tag);
|
||||||
}
|
+ }
|
||||||
|
|
||||||
+ LOG(INFO) << "RulesetService: successful parsing.";
|
|
||||||
+
|
+
|
||||||
CHECK(indexed_version.IsValid());
|
+ LOG(INFO) << "RulesetService: successful parsing.";
|
||||||
|
|
||||||
|
DCHECK(indexed_version.IsValid());
|
||||||
return indexed_version;
|
return indexed_version;
|
||||||
}
|
@@ -452,6 +479,7 @@ void RulesetService::IndexAndStoreRuleset(
|
||||||
@@ -471,6 +492,7 @@ void RulesetService::IndexAndStoreRuleset(
|
|
||||||
void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback,
|
void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback,
|
||||||
const IndexedRulesetVersion& version) {
|
const IndexedRulesetVersion& version) {
|
||||||
CHECK(!result_callback.is_null());
|
DCHECK(!result_callback.is_null());
|
||||||
+ LOG(INFO) << "RulesetService: valid version: " << version.IsValid();
|
+ LOG(INFO) << "RulesetService: valid version: " << version.IsValid();
|
||||||
if (!version.IsValid()) {
|
if (!version.IsValid())
|
||||||
return;
|
return;
|
||||||
}
|
version.SaveToPrefs(local_state_);
|
||||||
diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h
|
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/browser/ruleset_service.h
|
--- a/components/subresource_filter/content/shared/browser/ruleset_service.h
|
||||||
+++ b/components/subresource_filter/content/browser/ruleset_service.h
|
+++ b/components/subresource_filter/content/shared/browser/ruleset_service.h
|
||||||
@@ -183,7 +183,7 @@ class RulesetService {
|
@@ -185,7 +185,7 @@ class RulesetService {
|
||||||
//
|
//
|
||||||
// Virtual so that it can be mocked out in tests.
|
// Virtual so that it can be mocked out in tests.
|
||||||
virtual void IndexAndStoreAndPublishRulesetIfNeeded(
|
virtual void IndexAndStoreAndPublishRulesetIfNeeded(
|
||||||
@@ -1791,9 +1759,9 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c
|
|||||||
// Reads the rules via the |unindexed_ruleset_stream_generator|, and indexes
|
// Reads the rules via the |unindexed_ruleset_stream_generator|, and indexes
|
||||||
// them using |indexer|. Returns whether the entire ruleset could be parsed.
|
// them using |indexer|. Returns whether the entire ruleset could be parsed.
|
||||||
static bool IndexRuleset(
|
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
|
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/browser/unindexed_ruleset_stream_generator.cc
|
--- a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc
|
||||||
+++ b/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc
|
+++ b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc
|
||||||
@@ -12,6 +12,7 @@
|
@@ -12,6 +12,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.h"
|
||||||
#include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h"
|
#include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h"
|
||||||
@@ -1814,7 +1782,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
|
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
|
--- a/components/subresource_filter/core/browser/ruleset_version.h
|
||||||
+++ b/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
|
// can be indicated not only by setting |license_path| to empty, but also by
|
||||||
// setting it to any non existent path.
|
// setting it to any non existent path.
|
||||||
base::FilePath license_path;
|
base::FilePath license_path;
|
||||||
@@ -1828,7 +1796,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
|
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
|
--- a/components/subresource_filter/core/browser/subresource_filter_features.cc
|
||||||
+++ b/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,72 +55,7 @@ class CommaSeparatedStrings {
|
||||||
const std::vector<std::string_view> pieces_;
|
const std::vector<std::string_view> pieces_;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1836,33 +1804,31 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
|
|||||||
- std::map<std::string, std::string>* params,
|
- std::map<std::string, std::string>* params,
|
||||||
- const std::string& key) {
|
- const std::string& key) {
|
||||||
- auto it = params->find(key);
|
- auto it = params->find(key);
|
||||||
- if (it == params->end()) {
|
- if (it == params->end())
|
||||||
- return std::string();
|
- return std::string();
|
||||||
- }
|
|
||||||
- std::string value = std::move(it->second);
|
- std::string value = std::move(it->second);
|
||||||
- params->erase(it);
|
- params->erase(it);
|
||||||
- return value;
|
- return value;
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
-mojom::ActivationLevel ParseActivationLevel(std::string_view activation_level) {
|
-mojom::ActivationLevel ParseActivationLevel(
|
||||||
|
- const std::string_view activation_level) {
|
||||||
- if (base::EqualsCaseInsensitiveASCII(activation_level,
|
- if (base::EqualsCaseInsensitiveASCII(activation_level,
|
||||||
- kActivationLevelEnabled)) {
|
- kActivationLevelEnabled))
|
||||||
- return mojom::ActivationLevel::kEnabled;
|
- return mojom::ActivationLevel::kEnabled;
|
||||||
- } else if (base::EqualsCaseInsensitiveASCII(activation_level,
|
- else if (base::EqualsCaseInsensitiveASCII(activation_level,
|
||||||
- kActivationLevelDryRun)) {
|
- kActivationLevelDryRun))
|
||||||
- return mojom::ActivationLevel::kDryRun;
|
- return mojom::ActivationLevel::kDryRun;
|
||||||
- }
|
|
||||||
- return mojom::ActivationLevel::kDisabled;
|
- return mojom::ActivationLevel::kDisabled;
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
-ActivationScope ParseActivationScope(std::string_view activation_scope) {
|
-ActivationScope ParseActivationScope(const std::string_view activation_scope) {
|
||||||
- if (base::EqualsCaseInsensitiveASCII(activation_scope,
|
- if (base::EqualsCaseInsensitiveASCII(activation_scope,
|
||||||
- kActivationScopeAllSites)) {
|
- kActivationScopeAllSites))
|
||||||
- return ActivationScope::ALL_SITES;
|
- return ActivationScope::ALL_SITES;
|
||||||
- } else if (base::EqualsCaseInsensitiveASCII(activation_scope,
|
- else if (base::EqualsCaseInsensitiveASCII(activation_scope,
|
||||||
- kActivationScopeActivationList)) {
|
- kActivationScopeActivationList))
|
||||||
- return ActivationScope::ACTIVATION_LIST;
|
- return ActivationScope::ACTIVATION_LIST;
|
||||||
- }
|
|
||||||
- return ActivationScope::NO_SITES;
|
- return ActivationScope::NO_SITES;
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
@@ -1887,25 +1853,24 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
|
|||||||
-// Will return a value between 0 and 1 inclusive.
|
-// Will return a value between 0 and 1 inclusive.
|
||||||
-double ParsePerformanceMeasurementRate(const std::string& rate) {
|
-double ParsePerformanceMeasurementRate(const std::string& rate) {
|
||||||
- double value = 0.0;
|
- double value = 0.0;
|
||||||
- if (!base::StringToDouble(rate, &value) || value < 0) {
|
- if (!base::StringToDouble(rate, &value) || value < 0)
|
||||||
- return 0.0;
|
- return 0.0;
|
||||||
- }
|
|
||||||
- return value < 1 ? value : 1;
|
- return value < 1 ? value : 1;
|
||||||
-}
|
-}
|
||||||
-
|
-
|
||||||
-int ParseInt(std::string_view value) {
|
-int ParseInt(const std::string_view value) {
|
||||||
- int result = 0;
|
- int result = 0;
|
||||||
- base::StringToInt(value, &result);
|
- base::StringToInt(value, &result);
|
||||||
- return 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::map<std::string, std::string>* params*/) {
|
+std::vector<Configuration> FillEnabledPresetConfigurations() {
|
||||||
// If ad tagging is enabled, turn on the dryrun automatically.
|
// If ad tagging is enabled, turn on the dryrun automatically.
|
||||||
bool ad_tagging_enabled = base::FeatureList::IsEnabled(kAdTagging);
|
bool ad_tagging_enabled = base::FeatureList::IsEnabled(kAdTagging);
|
||||||
const struct {
|
const struct {
|
||||||
@@ -130,23 +63,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
|
@@ -128,23 +63,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
|
||||||
bool enabled_by_default;
|
bool enabled_by_default;
|
||||||
Configuration (*factory_method)();
|
Configuration (*factory_method)();
|
||||||
} kAvailablePresetConfigurations[] = {
|
} kAvailablePresetConfigurations[] = {
|
||||||
@@ -1931,7 +1896,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
|
|||||||
enabled_configurations.push_back(available_preset.factory_method());
|
enabled_configurations.push_back(available_preset.factory_method());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,48 +80,12 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
|
@@ -152,46 +80,10 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
|
||||||
return enabled_configurations;
|
return enabled_configurations;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1970,29 +1935,19 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
|
|||||||
- base::GetFieldTrialParamsByFeature(kSafeBrowsingSubresourceFilter, ¶ms);
|
- base::GetFieldTrialParamsByFeature(kSafeBrowsingSubresourceFilter, ¶ms);
|
||||||
-
|
-
|
||||||
std::vector<Configuration> configs;
|
std::vector<Configuration> configs;
|
||||||
if (base::FeatureList::IsEnabled(kSafeBrowsingSubresourceFilter)) {
|
if (base::FeatureList::IsEnabled(kSafeBrowsingSubresourceFilter))
|
||||||
- configs = FillEnabledPresetConfigurations(¶ms);
|
- configs = FillEnabledPresetConfigurations(¶ms);
|
||||||
+ configs = FillEnabledPresetConfigurations();
|
-
|
||||||
}
|
|
||||||
|
|
||||||
- Configuration experimental_config = ParseExperimentalConfiguration(¶ms);
|
- Configuration experimental_config = ParseExperimentalConfiguration(¶ms);
|
||||||
- configs.push_back(std::move(experimental_config));
|
- configs.push_back(std::move(experimental_config));
|
||||||
-
|
+ configs = FillEnabledPresetConfigurations();
|
||||||
|
|
||||||
return configs;
|
return configs;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/components/subresource_filter/core/browser/verified_ruleset_dealer.cc b/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
|
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
|
--- a/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
|
||||||
+++ b/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
|
+++ b/components/subresource_filter/core/browser/verified_ruleset_dealer.cc
|
||||||
@@ -11,6 +11,7 @@
|
@@ -38,6 +38,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile(
|
||||||
#include "base/functional/bind.h"
|
|
||||||
#include "base/functional/callback_helpers.h"
|
|
||||||
#include "base/location.h"
|
|
||||||
+#include "base/logging.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(
|
|
||||||
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
|
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
|
||||||
"VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",
|
"VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",
|
||||||
file->IsValid());
|
file->IsValid());
|
||||||
@@ -2005,15 +1960,15 @@ 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
|
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
|
--- a/components/subresource_filter/core/common/indexed_ruleset.cc
|
||||||
+++ b/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/check.h"
|
||||||
#include "base/functional/callback.h"
|
|
||||||
#include "base/hash/hash.h"
|
#include "base/hash/hash.h"
|
||||||
+#include "base/logging.h"
|
+#include "base/logging.h"
|
||||||
#include "base/metrics/histogram_functions.h"
|
#include "base/metrics/histogram_macros.h"
|
||||||
#include "base/strings/strcat.h"
|
|
||||||
#include "base/trace_event/trace_event.h"
|
#include "base/trace_event/trace_event.h"
|
||||||
@@ -38,7 +39,9 @@ VerifyStatus GetVerifyStatus(base::span<const uint8_t> buffer,
|
#include "components/subresource_filter/core/common/first_party_origin.h"
|
||||||
|
@@ -36,7 +37,9 @@ VerifyStatus GetVerifyStatus(base::span<const uint8_t> buffer,
|
||||||
// least once. The verifier detects a subset of the errors detected by the
|
// least once. The verifier detects a subset of the errors detected by the
|
||||||
// checksum, and is unneeded once expected_checksum is consistently nonzero.
|
// checksum, and is unneeded once expected_checksum is consistently nonzero.
|
||||||
flatbuffers::Verifier verifier(buffer.data(), buffer.size());
|
flatbuffers::Verifier verifier(buffer.data(), buffer.size());
|
||||||
@@ -2024,4 +1979,12 @@ diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/comp
|
|||||||
return flat::VerifyIndexedRulesetBuffer(verifier)
|
return flat::VerifyIndexedRulesetBuffer(verifier)
|
||||||
? VerifyStatus::kChecksumFailVerifierPass
|
? VerifyStatus::kChecksumFailVerifierPass
|
||||||
: VerifyStatus::kChecksumFailVerifierFail;
|
: VerifyStatus::kChecksumFailVerifierFail;
|
||||||
|
diff --git a/cromite_flags/third_party/blink/common/features_cc/Bromite-subresource-adblocker.inc b/cromite_flags/third_party/blink/common/features_cc/Bromite-subresource-adblocker.inc
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/cromite_flags/third_party/blink/common/features_cc/Bromite-subresource-adblocker.inc
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+SET_CROMITE_FEATURE_ENABLED(kAutomaticLazyFrameLoadingToAds);
|
||||||
|
+SET_CROMITE_FEATURE_DISABLED(kAutomaticLazyFrameLoadingToEmbeds);
|
||||||
|
+SET_CROMITE_FEATURE_DISABLED(kAutomaticLazyFrameLoadingToEmbedUrls);
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Tue, 30 Jul 2024 14:38:58 +0000
|
|
||||||
Subject: Bubble Locking on UI DevTools
|
|
||||||
|
|
||||||
Allows the use of ctrl+shift+click on the refresh button to
|
|
||||||
activate the Bubble Locking mode for the native dev-ui.
|
|
||||||
The current ctrl+shift+R is really inconvenient and often does not work.
|
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
|
||||||
.../browser/ui/views/toolbar/reload_button.cc | 8 ++++++
|
|
||||||
ui/views/widget/widget.h | 25 ++++++++++---------
|
|
||||||
2 files changed, 21 insertions(+), 12 deletions(-)
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -291,6 +291,14 @@ void ReloadButton::ButtonPressed(const ui::Event& event) {
|
|
||||||
command = IDC_RELOAD;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ views::Widget::SetDisableActivationChangeHandling(
|
|
||||||
+ views::Widget::DisableActivationChangeHandlingType::kNone);
|
|
||||||
+ if (event.IsShiftDown() && event.IsControlDown()) {
|
|
||||||
+ views::Widget::SetDisableActivationChangeHandling(
|
|
||||||
+ views::Widget::DisableActivationChangeHandlingType::kIgnoreDeactivationOnly);
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// Start a timer - while this timer is running, the reload button cannot be
|
|
||||||
// changed to a stop button. We do not set |intended_mode_| to Mode::kStop
|
|
||||||
// here as the browser will do that when it actually starts loading (which
|
|
||||||
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
|
|
||||||
@@ -1474,6 +1474,19 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
|
|
||||||
// initialized.
|
|
||||||
void SaveWindowPlacementIfNeeded();
|
|
||||||
|
|
||||||
+ // Type of ways to ignore activation changes.
|
|
||||||
+ enum class DisableActivationChangeHandlingType {
|
|
||||||
+ kNone = 0, // Don't ignore any activation changes.
|
|
||||||
+ kIgnore, // Ignore both activation and deactivation changes.
|
|
||||||
+ kIgnoreDeactivationOnly, // Ignore only deactivation changes.
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ // Sets/gets the type of disabling widget activation change handling.
|
|
||||||
+ static void SetDisableActivationChangeHandling(
|
|
||||||
+ DisableActivationChangeHandlingType new_type) {
|
|
||||||
+ g_disable_activation_change_handling_ = new_type;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
protected:
|
|
||||||
// Creates the RootView to be used within this Widget. Subclasses may override
|
|
||||||
// to create custom RootViews that do specialized event processing.
|
|
||||||
@@ -1516,13 +1529,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
|
|
||||||
void set_widget_closed() { widget_closed_ = true; }
|
|
||||||
|
|
||||||
private:
|
|
||||||
- // Type of ways to ignore activation changes.
|
|
||||||
- enum class DisableActivationChangeHandlingType {
|
|
||||||
- kNone = 0, // Don't ignore any activation changes.
|
|
||||||
- kIgnore, // Ignore both activation and deactivation changes.
|
|
||||||
- kIgnoreDeactivationOnly, // Ignore only deactivation changes.
|
|
||||||
- };
|
|
||||||
-
|
|
||||||
class PaintAsActiveLockImpl;
|
|
||||||
class ScopedCallStackLock;
|
|
||||||
|
|
||||||
@@ -1534,11 +1540,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
|
|
||||||
friend class ui_devtools::BubbleLocking;
|
|
||||||
friend void DisableActivationChangeHandlingForTests();
|
|
||||||
|
|
||||||
- // Sets/gets the type of disabling widget activation change handling.
|
|
||||||
- static void SetDisableActivationChangeHandling(
|
|
||||||
- DisableActivationChangeHandlingType new_type) {
|
|
||||||
- g_disable_activation_change_handling_ = new_type;
|
|
||||||
- }
|
|
||||||
static DisableActivationChangeHandlingType
|
|
||||||
GetDisableActivationChangeHandling() {
|
|
||||||
return g_disable_activation_change_handling_;
|
|
||||||
--
|
|
||||||
@@ -6,54 +6,19 @@ 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
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
---
|
---
|
||||||
.../settings/site_settings/popups_page.html | 2 +
|
.../android/popup_blocked_message_delegate.cc | 20 +++-
|
||||||
.../tab_under_navigation_throttle.cc | 11 +-
|
|
||||||
.../android/popup_blocked_message_delegate.cc | 20 ++-
|
|
||||||
.../android/popup_blocked_message_delegate.h | 1 +
|
.../android/popup_blocked_message_delegate.h | 1 +
|
||||||
components/blocked_content/popup_blocker.cc | 3 +
|
components/blocked_content/popup_blocker.cc | 3 +
|
||||||
components/blocked_content_strings.grdp | 3 +
|
components/blocked_content_strings.grdp | 3 +
|
||||||
.../impl/BromitePopupContentSetting.java | 115 ++++++++++++++++++
|
.../impl/BromitePopupContentSetting.java | 106 ++++++++++++++++++
|
||||||
.../bromite_content_settings/popups.grdp | 18 +++
|
.../bromite_content_settings/popups.grdp | 12 ++
|
||||||
.../bromite_content_settings/popups.inc | 13 ++
|
.../bromite_content_settings/popups.inc | 8 ++
|
||||||
.../core/browser/content_settings_registry.cc | 2 +-
|
.../core/browser/content_settings_registry.cc | 2 +-
|
||||||
10 files changed, 182 insertions(+), 6 deletions(-)
|
8 files changed, 152 insertions(+), 3 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/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/browser_ui/strings/bromite_content_settings/popups.grdp
|
||||||
create mode 100644 components/content_settings/core/browser/bromite_content_settings/popups.inc
|
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() {
|
|
||||||
|
|
||||||
LogTabUnderAttempt(navigation_handle());
|
|
||||||
|
|
||||||
- // We unconditionally proceed. There used to be a tab-under blocking
|
|
||||||
- // experiment, but it never launched.
|
|
||||||
- return content::NavigationThrottle::PROCEED;
|
|
||||||
+ content::WebContents* web_contents = navigation_handle()->GetWebContents();
|
|
||||||
+ const std::string error =
|
|
||||||
+ base::StringPrintf(kBlockTabUnderFormatMessage,
|
|
||||||
+ navigation_handle()->GetURL().spec().c_str());
|
|
||||||
+ web_contents->GetPrimaryMainFrame()->AddMessageToConsole(
|
|
||||||
+ blink::mojom::ConsoleMessageLevel::kError, error.c_str());
|
|
||||||
+ ShowUI();
|
|
||||||
+ return content::NavigationThrottle::CANCEL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TabUnderNavigationThrottle::ShowUI() {
|
|
||||||
diff --git a/components/blocked_content/android/popup_blocked_message_delegate.cc b/components/blocked_content/android/popup_blocked_message_delegate.cc
|
diff --git a/components/blocked_content/android/popup_blocked_message_delegate.cc b/components/blocked_content/android/popup_blocked_message_delegate.cc
|
||||||
--- a/components/blocked_content/android/popup_blocked_message_delegate.cc
|
--- a/components/blocked_content/android/popup_blocked_message_delegate.cc
|
||||||
+++ b/components/blocked_content/android/popup_blocked_message_delegate.cc
|
+++ b/components/blocked_content/android/popup_blocked_message_delegate.cc
|
||||||
@@ -146,7 +111,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
|
|||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
|
+++ 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.
|
+ This file is part of Bromite.
|
||||||
+
|
+
|
||||||
@@ -173,7 +138,7 @@ new file mode 100644
|
|||||||
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
|
+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.ContentSettingsResources;
|
||||||
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
|
+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.components.content_settings.ContentSettingsType;
|
||||||
+import org.chromium.content_public.browser.BrowserContextHandle;
|
+import org.chromium.content_public.browser.BrowserContextHandle;
|
||||||
+
|
+
|
||||||
@@ -186,8 +151,8 @@ new file mode 100644
|
|||||||
+public class BromitePopupContentSetting extends BromiteCustomContentSetting {
|
+public class BromitePopupContentSetting extends BromiteCustomContentSetting {
|
||||||
+ public BromitePopupContentSetting() {
|
+ public BromitePopupContentSetting() {
|
||||||
+ super(/*contentSettingsType*/ ContentSettingsType.POPUPS,
|
+ super(/*contentSettingsType*/ ContentSettingsType.POPUPS,
|
||||||
+ /*defaultEnabledValue*/ ContentSetting.ALLOW,
|
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
|
||||||
+ /*defaultDisabledValue*/ ContentSetting.BLOCK,
|
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
|
||||||
+ /*allowException*/ true,
|
+ /*allowException*/ true,
|
||||||
+ /*preferenceKey*/ "popups",
|
+ /*preferenceKey*/ "popups",
|
||||||
+ /*profilePrefKey*/ "popups");
|
+ /*profilePrefKey*/ "popups");
|
||||||
@@ -206,13 +171,13 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public int getCategorySummary(@Nullable @ContentSetting int value) {
|
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
|
||||||
+ switch (value) {
|
+ switch (value) {
|
||||||
+ case ContentSetting.ALLOW:
|
+ case ContentSettingValues.ALLOW:
|
||||||
+ return R.string.website_settings_category_popup_allowed;
|
+ return R.string.website_settings_category_popup_allowed;
|
||||||
+ case ContentSetting.BLOCK:
|
+ case ContentSettingValues.BLOCK:
|
||||||
+ return R.string.website_settings_category_popup_blocked;
|
+ return R.string.website_settings_category_popup_blocked;
|
||||||
+ case ContentSetting.ASK:
|
+ case ContentSettingValues.ASK:
|
||||||
+ return R.string.website_settings_category_popup_block_all;
|
+ return R.string.website_settings_category_popup_block_all;
|
||||||
+ default:
|
+ default:
|
||||||
+ return 0;
|
+ return 0;
|
||||||
@@ -239,15 +204,6 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public int[] getTriStateSettingIconIDs() {
|
|
||||||
+ return new int[] {
|
|
||||||
+ R.drawable.permission_popups,
|
|
||||||
+ R.drawable.permission_popups,
|
|
||||||
+ R.drawable.sensors_off_24px
|
|
||||||
+ };
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ @Override
|
|
||||||
+ public boolean showOnlyDescriptions() {
|
+ public boolean showOnlyDescriptions() {
|
||||||
+ return true;
|
+ return true;
|
||||||
+ }
|
+ }
|
||||||
@@ -258,23 +214,17 @@ new file mode 100644
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSetting int value) {
|
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
|
||||||
+ return ContentSetting.ALLOW != 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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/components/browser_ui/strings/bromite_content_settings/popups.grdp
|
+++ 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"?>
|
+<?xml version="1.0" encoding="utf-8"?>
|
||||||
+<grit-part>
|
+<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">
|
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL" desc="" formatter_data="android_java">
|
||||||
+ Block all popups
|
+ Block all popups
|
||||||
+ </message>
|
+ </message>
|
||||||
@@ -289,24 +239,19 @@ diff --git a/components/content_settings/core/browser/bromite_content_settings/p
|
|||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/components/content_settings/core/browser/bromite_content_settings/popups.inc
|
+++ b/components/content_settings/core/browser/bromite_content_settings/popups.inc
|
||||||
@@ -0,0 +1,13 @@
|
@@ -0,0 +1,8 @@
|
||||||
+ content_settings::WebsiteSettingsRegistry::GetInstance()
|
+ content_settings::WebsiteSettingsRegistry::GetInstance()
|
||||||
+ ->GetMutable(ContentSettingsType::POPUPS)
|
+ ->GetMutable(ContentSettingsType::POPUPS)
|
||||||
+ ->set_show_into_info_page()
|
+ ->set_show_into_info_page()
|
||||||
+ .set_desktop_ui()
|
+ .set_desktop_ui()
|
||||||
+ .set_is_renderer_content_setting()
|
+ .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_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_ALLOWED)
|
||||||
+ .set_ask_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL)
|
+ .set_ask_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL)
|
||||||
+ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED)
|
+ .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);
|
|
||||||
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
|
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
|
--- a/components/content_settings/core/browser/content_settings_registry.cc
|
||||||
+++ b/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,
|
WebsiteSettingsInfo::SYNCABLE,
|
||||||
/*allowlisted_primary_schemes=*/
|
/*allowlisted_primary_schemes=*/
|
||||||
{kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme},
|
{kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme},
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -9,13 +9,13 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|||||||
services/network/cors/preflight_controller.cc | 4 ++++
|
services/network/cors/preflight_controller.cc | 4 ++++
|
||||||
services/network/cors/preflight_controller.h | 2 ++
|
services/network/cors/preflight_controller.h | 2 ++
|
||||||
services/network/cors/preflight_result.cc | 2 +-
|
services/network/cors/preflight_result.cc | 2 +-
|
||||||
services/network/network_context.cc | 1 +
|
services/network/network_context.cc | 2 ++
|
||||||
6 files changed, 14 insertions(+), 1 deletion(-)
|
6 files changed, 15 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/services/network/cors/preflight_cache.cc b/services/network/cors/preflight_cache.cc
|
diff --git a/services/network/cors/preflight_cache.cc b/services/network/cors/preflight_cache.cc
|
||||||
--- a/services/network/cors/preflight_cache.cc
|
--- a/services/network/cors/preflight_cache.cc
|
||||||
+++ b/services/network/cors/preflight_cache.cc
|
+++ b/services/network/cors/preflight_cache.cc
|
||||||
@@ -198,6 +198,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);
|
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
|
diff --git a/services/network/cors/preflight_cache.h b/services/network/cors/preflight_cache.h
|
||||||
--- a/services/network/cors/preflight_cache.h
|
--- a/services/network/cors/preflight_cache.h
|
||||||
+++ b/services/network/cors/preflight_cache.h
|
+++ b/services/network/cors/preflight_cache.h
|
||||||
@@ -76,6 +76,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightCache final {
|
@@ -78,6 +78,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightCache final {
|
||||||
// `max_entries` for testing.
|
// `max_entries` for testing.
|
||||||
void MayPurgeForTesting(size_t max_entries, size_t purge_unit);
|
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
|
diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc
|
||||||
--- a/services/network/cors/preflight_controller.cc
|
--- a/services/network/cors/preflight_controller.cc
|
||||||
+++ b/services/network/cors/preflight_controller.cc
|
+++ b/services/network/cors/preflight_controller.cc
|
||||||
@@ -644,6 +644,10 @@ void PreflightController::ClearCorsPreflightCache(
|
@@ -811,6 +811,10 @@ void PreflightController::ClearCorsPreflightCache(
|
||||||
cache_.ClearCache(std::move(url_filter));
|
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) {
|
void PreflightController::RemoveLoader(PreflightLoader* loader) {
|
||||||
auto it = loaders_.find(loader);
|
auto it = loaders_.find(loader);
|
||||||
CHECK(it != loaders_.end());
|
DCHECK(it != loaders_.end());
|
||||||
diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h
|
diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h
|
||||||
--- a/services/network/cors/preflight_controller.h
|
--- a/services/network/cors/preflight_controller.h
|
||||||
+++ b/services/network/cors/preflight_controller.h
|
+++ b/services/network/cors/preflight_controller.h
|
||||||
@@ -117,6 +117,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final {
|
@@ -157,6 +157,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final {
|
||||||
mojo::PendingRemote<mojom::URLLoaderNetworkServiceObserver>
|
url_loader_network_service_observer,
|
||||||
url_loader_network_service_observer);
|
const PreflightMode& preflight_mode);
|
||||||
|
|
||||||
+ void ClearCache();
|
+ void ClearCache();
|
||||||
+
|
+
|
||||||
@@ -79,12 +79,13 @@ 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
|
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
|
||||||
--- a/services/network/network_context.cc
|
--- a/services/network/network_context.cc
|
||||||
+++ b/services/network/network_context.cc
|
+++ b/services/network/network_context.cc
|
||||||
@@ -1431,6 +1431,7 @@ void NetworkContext::ClearHttpCache(base::Time start_time,
|
@@ -1186,6 +1186,8 @@ void NetworkContext::ClearHttpCache(base::Time start_time,
|
||||||
base::Time end_time,
|
base::BindOnce(&NetworkContext::OnHttpCacheCleared,
|
||||||
mojom::ClearDataFilterPtr filter,
|
base::Unretained(this), std::move(callback))));
|
||||||
ClearHttpCacheCallback callback) {
|
|
||||||
+ cors_preflight_controller_.ClearCache();
|
+ cors_preflight_controller_.ClearCache();
|
||||||
if (base::FeatureList::IsEnabled(net::features::kLogicalClearHttpCache)) {
|
+
|
||||||
net::HttpCache* cache =
|
NetworkServiceMemoryCache* memory_cache = GetMemoryCache();
|
||||||
url_request_context_->http_transaction_factory()->GetCache();
|
if (memory_cache)
|
||||||
|
memory_cache->Clear();
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -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
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
.../SupportLibWebViewChromiumFactory.java | 2 +-
|
components/embedder_support/user_agent_utils.cc | 4 +---
|
||||||
components/client_hints/browser/client_hints.cc | 5 +++--
|
content/browser/client_hints/client_hints.cc | 17 +++++++++++------
|
||||||
components/embedder_support/user_agent_utils.cc | 5 ++---
|
.../loader/navigation_url_loader_impl.cc | 5 +++++
|
||||||
content/browser/client_hints/client_hints.cc | 17 +++++++++++++++--
|
|
||||||
.../about_flags_cc/Client-hints-overrides.inc | 9 +++++++++
|
.../about_flags_cc/Client-hints-overrides.inc | 9 +++++++++
|
||||||
.../features_cc/Client-hints-overrides.inc | 1 +
|
.../features_cc/Client-hints-overrides.inc | 1 +
|
||||||
.../cpp/features_cc/Client-hints-overrides.inc | 1 +
|
.../cpp/features_cc/Client-hints-overrides.inc | 1 +
|
||||||
net/http/http_network_transaction.cc | 1 +
|
net/http/http_network_transaction.cc | 1 +
|
||||||
services/network/public/cpp/client_hints.cc | 2 +-
|
services/network/public/cpp/client_hints.cc | 1 +
|
||||||
.../blink/common/client_hints/client_hints.cc | 6 ++++--
|
.../blink/common/client_hints/client_hints.cc | 6 ++++--
|
||||||
.../common/client_hints/enabled_client_hints.cc | 8 ++++++++
|
.../common/client_hints/enabled_client_hints.cc | 4 +++-
|
||||||
.../blink/renderer/core/frame/navigator_ua.idl | 4 +++-
|
.../blink/renderer/core/frame/navigator_ua.idl | 4 +++-
|
||||||
.../renderer/core/frame/navigator_ua_data.cc | 1 +
|
.../renderer/core/frame/navigator_ua_data.cc | 1 +
|
||||||
.../renderer/core/frame/navigator_ua_data.idl | 5 ++++-
|
.../renderer/core/frame/navigator_ua_data.idl | 5 ++++-
|
||||||
.../renderer/core/loader/frame_fetch_context.cc | 4 +++-
|
.../renderer/core/loader/base_fetch_context.cc | 6 ++++--
|
||||||
.../platform/runtime_enabled_features.json5 | 5 +++++
|
.../platform/runtime_enabled_features.json5 | 5 +++++
|
||||||
16 files changed, 62 insertions(+), 14 deletions(-)
|
15 files changed, 54 insertions(+), 16 deletions(-)
|
||||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Client-hints-overrides.inc
|
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/content/common/features_cc/Client-hints-overrides.inc
|
||||||
create mode 100644 cromite_flags/services/network/public/cpp/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
|
|
||||||
@@ -36,7 +36,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);
|
|
||||||
@@ -201,7 +201,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
|
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
|
--- a/components/embedder_support/user_agent_utils.cc
|
||||||
+++ b/components/embedder_support/user_agent_utils.cc
|
+++ b/components/embedder_support/user_agent_utils.cc
|
||||||
@@ -163,9 +163,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
|
@@ -187,9 +187,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
|
||||||
bool parse_result = base::StringToInt(major_version, &major_version_number);
|
bool parse_result = base::StringToInt(major_version, &major_version_number);
|
||||||
DCHECK(parse_result);
|
DCHECK(parse_result);
|
||||||
std::optional<std::string> brand;
|
std::optional<std::string> brand;
|
||||||
@@ -73,60 +38,72 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
|
|||||||
- brand = version_info::GetProductName();
|
- brand = version_info::GetProductName();
|
||||||
-#endif
|
-#endif
|
||||||
+ brand = "Google Chrome";
|
+ brand = "Google Chrome";
|
||||||
|
std::optional<std::string> maybe_brand_override =
|
||||||
std::string brand_version =
|
base::GetFieldTrialParamValueByFeature(features::kGreaseUACH,
|
||||||
output_version_type == blink::UserAgentBrandVersionType::kFullVersion
|
"brand_override");
|
||||||
@@ -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
|
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
|
--- a/content/browser/client_hints/client_hints.cc
|
||||||
+++ b/content/browser/client_hints/client_hints.cc
|
+++ b/content/browser/client_hints/client_hints.cc
|
||||||
@@ -57,6 +57,7 @@
|
@@ -55,6 +55,7 @@
|
||||||
#include "third_party/blink/public/common/features.h"
|
#include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h"
|
||||||
#include "third_party/blink/public/common/page/page_zoom.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/public/common/user_agent/user_agent_metadata.h"
|
||||||
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||||
#include "ui/display/display.h"
|
#include "ui/display/display.h"
|
||||||
#include "ui/display/screen.h"
|
#include "ui/display/screen.h"
|
||||||
#include "url/origin.h"
|
#include "url/origin.h"
|
||||||
@@ -601,10 +602,21 @@ bool IsClientHintEnabled(const ClientHintsExtendedData& data,
|
@@ -516,7 +517,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers,
|
||||||
|
: network::kPrefersReducedTransparencyNoPreference);
|
||||||
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;
|
|
||||||
}
|
|
||||||
- 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(
|
-bool IsValidURLForClientHints(const url::Origin& origin) {
|
||||||
ClientHintsExtendedData& data,
|
+bool IsValidURLForClientHints(const url::Origin& origin) { // disabled in Bromite
|
||||||
const network::ParsedPermissionsPolicy& container_policy) {
|
+ if ((true)) return false;
|
||||||
+ if ((true)) return;
|
return network::IsOriginPotentiallyTrustworthy(origin);
|
||||||
if (container_policy.empty()) {
|
}
|
||||||
|
|
||||||
|
@@ -718,7 +720,8 @@ void UpdateNavigationRequestClientUaHeadersImpl(
|
||||||
|
// value, disable them. This overwrites previous decision from UI.
|
||||||
|
disable_due_to_custom_ua = !ua_metadata.has_value();
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+ 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();
|
||||||
|
@@ -900,10 +903,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);
|
||||||
|
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
|
||||||
|
@@ -1185,6 +1185,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
|
||||||
return;
|
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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -146,17 +123,17 @@ new file mode 100644
|
|||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/cromite_flags/content/common/features_cc/Client-hints-overrides.inc
|
+++ b/cromite_flags/content/common/features_cc/Client-hints-overrides.inc
|
||||||
@@ -0,0 +1 @@
|
@@ -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
|
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
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/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
|
||||||
@@ -0,0 +1 @@
|
@@ -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
|
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
|
||||||
--- a/net/http/http_network_transaction.cc
|
--- a/net/http/http_network_transaction.cc
|
||||||
+++ b/net/http/http_network_transaction.cc
|
+++ b/net/http/http_network_transaction.cc
|
||||||
@@ -120,6 +120,7 @@ const size_t kMaxRestarts = 32;
|
@@ -102,6 +102,7 @@ const size_t kMaxRestarts = 32;
|
||||||
|
|
||||||
// Returns true when Early Hints are allowed on the given protocol.
|
// Returns true when Early Hints are allowed on the given protocol.
|
||||||
bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) {
|
bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) {
|
||||||
@@ -167,12 +144,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
|
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
|
--- a/services/network/public/cpp/client_hints.cc
|
||||||
+++ b/services/network/public/cpp/client_hints.cc
|
+++ b/services/network/public/cpp/client_hints.cc
|
||||||
@@ -111,7 +111,7 @@ const DecodeMap& GetDecodeMap() {
|
@@ -120,6 +120,7 @@ const DecodeMap& GetDecodeMap() {
|
||||||
} // namespace
|
|
||||||
|
|
||||||
std::optional<std::vector<network::mojom::WebClientHintsType>>
|
std::optional<std::vector<network::mojom::WebClientHintsType>>
|
||||||
-ParseClientHintsHeader(const std::string& header) {
|
ParseClientHintsHeader(const std::string& header) {
|
||||||
+ParseClientHintsHeader(const std::string& header) { // Parse Client Hints Header
|
+ if ((true)) return std::nullopt;
|
||||||
// Accept-CH is an sh-list of tokens; see:
|
// Accept-CH is an sh-list of tokens; see:
|
||||||
// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1
|
// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1
|
||||||
std::optional<net::structured_headers::List> maybe_list =
|
std::optional<net::structured_headers::List> maybe_list =
|
||||||
@@ -182,12 +158,12 @@ diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party
|
|||||||
@@ -14,6 +14,7 @@
|
@@ -14,6 +14,7 @@
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "services/network/public/cpp/client_hints.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.h"
|
||||||
|
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||||
|
#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
|
||||||
#include "url/origin.h"
|
#include "url/origin.h"
|
||||||
@@ -22,11 +23,12 @@ namespace blink {
|
|
||||||
|
@@ -106,11 +107,12 @@ const PolicyFeatureToClientHintMap& GetPolicyFeatureToClientHintMap() {
|
||||||
|
|
||||||
bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type) {
|
bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@@ -196,7 +172,7 @@ diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party
|
|||||||
case network::mojom::WebClientHintsType::kUAMobile:
|
case network::mojom::WebClientHintsType::kUAMobile:
|
||||||
case network::mojom::WebClientHintsType::kUAPlatform:
|
case network::mojom::WebClientHintsType::kUAPlatform:
|
||||||
- return true;
|
- return true;
|
||||||
+ return base::FeatureList::IsEnabled(blink::features::kUserAgentClientHint);
|
+ return RuntimeEnabledFeatures::UserAgentClientHintEnabled();
|
||||||
+ case network::mojom::WebClientHintsType::kSaveData:
|
+ case network::mojom::WebClientHintsType::kSaveData:
|
||||||
+ return false;
|
+ return false;
|
||||||
default:
|
default:
|
||||||
@@ -205,21 +181,31 @@ 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
|
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
|
--- a/third_party/blink/common/client_hints/enabled_client_hints.cc
|
||||||
+++ b/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,7 @@ namespace {
|
||||||
using ::network::mojom::WebClientHintsType;
|
using ::network::mojom::WebClientHintsType;
|
||||||
|
|
||||||
bool IsDisabledByFeature(const WebClientHintsType type) {
|
bool IsDisabledByFeature(const WebClientHintsType type) {
|
||||||
+ if (type == WebClientHintsType::kUA ||
|
|
||||||
+ type == WebClientHintsType::kUAMobile ||
|
|
||||||
+ type == WebClientHintsType::kUAPlatform ||
|
|
||||||
+ type == WebClientHintsType::kUAModel ||
|
|
||||||
+ type == WebClientHintsType::kUAPlatformVersion) {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+ if ((true)) return true;
|
+ if ((true)) return true;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case WebClientHintsType::kUA:
|
case WebClientHintsType::kUA:
|
||||||
case WebClientHintsType::kUAArch:
|
case WebClientHintsType::kUAArch:
|
||||||
|
@@ -96,7 +97,7 @@ bool IsDisabledByFeature(const WebClientHintsType type) {
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
bool EnabledClientHints::IsEnabled(const WebClientHintsType type) const {
|
||||||
|
- return enabled_types_[static_cast<int>(type)];
|
||||||
|
+ return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnabledClientHints::SetIsEnabled(const WebClientHintsType type,
|
||||||
|
@@ -107,6 +108,7 @@ void EnabledClientHints::SetIsEnabled(const WebClientHintsType type,
|
||||||
|
|
||||||
|
std::vector<WebClientHintsType> EnabledClientHints::GetEnabledHints() const {
|
||||||
|
std::vector<WebClientHintsType> hints;
|
||||||
|
+ if ((true)) return hints;
|
||||||
|
for (const auto& elem : network::GetClientHintToNameMap()) {
|
||||||
|
const auto& type = elem.first;
|
||||||
|
if (IsEnabled(type))
|
||||||
diff --git a/third_party/blink/renderer/core/frame/navigator_ua.idl b/third_party/blink/renderer/core/frame/navigator_ua.idl
|
diff --git a/third_party/blink/renderer/core/frame/navigator_ua.idl b/third_party/blink/renderer/core/frame/navigator_ua.idl
|
||||||
--- a/third_party/blink/renderer/core/frame/navigator_ua.idl
|
--- a/third_party/blink/renderer/core/frame/navigator_ua.idl
|
||||||
+++ b/third_party/blink/renderer/core/frame/navigator_ua.idl
|
+++ b/third_party/blink/renderer/core/frame/navigator_ua.idl
|
||||||
@@ -236,14 +222,14 @@ 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
|
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
|
--- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc
|
||||||
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc
|
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc
|
||||||
@@ -113,6 +113,7 @@ const String& NavigatorUAData::platform() const {
|
@@ -219,6 +219,7 @@ ScriptPromise<UADataValues> NavigatorUAData::getHighEntropyValues(
|
||||||
}
|
Dactyloscoper::RecordDirectSurface(
|
||||||
|
GetExecutionContext(), WebFeature::kNavigatorUAData_Platform, platform());
|
||||||
|
|
||||||
bool AllowedToCollectHighEntropyValues(ExecutionContext* execution_context) {
|
+ if ((false))
|
||||||
+ if ((true)) return false;
|
for (const String& hint : hints) {
|
||||||
// To determine whether a document is allowed to get high-entropy
|
if (hint == "platformVersion") {
|
||||||
// client hints returned by navigator.userAgentData.getHighEntropyValues(),
|
values->setPlatformVersion(platform_version_);
|
||||||
// we need to check the "ch-ua-high-entropy-values" policy:
|
|
||||||
diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third_party/blink/renderer/core/frame/navigator_ua_data.idl
|
diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third_party/blink/renderer/core/frame/navigator_ua_data.idl
|
||||||
--- a/third_party/blink/renderer/core/frame/navigator_ua_data.idl
|
--- a/third_party/blink/renderer/core/frame/navigator_ua_data.idl
|
||||||
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.idl
|
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.idl
|
||||||
@@ -256,36 +242,45 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third
|
|||||||
+ RuntimeEnabled=UserAgentClientHint,
|
+ RuntimeEnabled=UserAgentClientHint,
|
||||||
+ Exposed=(Window,Worker)
|
+ Exposed=(Window,Worker)
|
||||||
+] interface NavigatorUAData {
|
+] interface NavigatorUAData {
|
||||||
[MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray<NavigatorUABrandVersion> brands;
|
[HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray<NavigatorUABrandVersion> brands;
|
||||||
[MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile;
|
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile;
|
||||||
[MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform;
|
[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
|
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/third_party/blink/renderer/core/loader/base_fetch_context.cc
|
||||||
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc
|
--- a/third_party/blink/renderer/core/loader/base_fetch_context.cc
|
||||||
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc
|
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.cc
|
||||||
@@ -233,6 +233,8 @@ bool ShouldSendClientHint(const network::PermissionsPolicy& policy,
|
@@ -167,7 +167,7 @@ void BaseFetchContext::AddClientHintsIfNecessary(
|
||||||
bool is_1p_origin,
|
// specifying accomponying client hints, in which case we disable sending
|
||||||
network::mojom::blink::WebClientHintsType type,
|
// them.
|
||||||
const ClientHintsPreferences& hints_preferences) {
|
using network::mojom::blink::WebClientHintsType;
|
||||||
+ if (!RuntimeEnabledFeatures::UserAgentClientHintEnabled())
|
- if (ua) {
|
||||||
+ return false;
|
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
|
||||||
// For subresource requests, sending the hint in the fetch request based on
|
// ShouldSendClientHint is called to make sure UA is controlled by
|
||||||
// the permissions policy.
|
// Permissions Policy.
|
||||||
if (!policy.IsFeatureEnabledForOrigin(
|
if (ShouldSendClientHint(policy, resource_origin, is_1p_origin,
|
||||||
@@ -725,7 +727,7 @@ void FrameFetchContext::AddClientHintsIfNecessary(
|
@@ -329,7 +329,7 @@ void BaseFetchContext::AddClientHintsIfNecessary(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only send User Agent hints if the info is available
|
// Only send User Agent hints if the info is available
|
||||||
- if (ua) {
|
- if (ua) {
|
||||||
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
|
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
|
||||||
// ShouldSendClientHint is called to make sure UA is controlled by
|
if (ShouldSendClientHint(policy, resource_origin, is_1p_origin,
|
||||||
// Permissions Policy.
|
WebClientHintsType::kUAArch, hints_preferences)) {
|
||||||
if (ShouldSendClientHint(*policy, resource_origin, is_1p_origin,
|
SetHttpHeader(WebClientHintsType::kUAArch,
|
||||||
|
@@ -652,6 +652,8 @@ bool BaseFetchContext::ShouldSendClientHint(
|
||||||
|
bool is_1p_origin,
|
||||||
|
network::mojom::blink::WebClientHintsType type,
|
||||||
|
const ClientHintsPreferences& hints_preferences) const {
|
||||||
|
+ if (!RuntimeEnabledFeatures::UserAgentClientHintEnabled())
|
||||||
|
+ return false;
|
||||||
|
// For subresource requests, sending the hint in the fetch request based on
|
||||||
|
// the permissions policy.
|
||||||
|
if ((!policy ||
|
||||||
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
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
|
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||||
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||||
@@ -678,6 +678,11 @@
|
@@ -340,6 +340,11 @@
|
||||||
name: "AriaNotifyV2",
|
name: "AtomicMoveOverride",
|
||||||
status: {"Android": "test", "Win": "test", "Mac": "test", "Linux": "test"},
|
// No "status" field, so that this is not enabled on WPTs by default.
|
||||||
},
|
},
|
||||||
+ {
|
+ {
|
||||||
+ name: "UserAgentClientHint",
|
+ name: "UserAgentClientHint",
|
||||||
@@ -293,6 +288,6 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
|||||||
+ base_feature: "UserAgentClientHint",
|
+ base_feature: "UserAgentClientHint",
|
||||||
+ },
|
+ },
|
||||||
{
|
{
|
||||||
name: "AriaRowColIndexText",
|
name: "AttributionReporting",
|
||||||
status: "stable",
|
origin_trial_feature_name: "PrivacySandboxAdsAPIs",
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -1,100 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Tue, 18 Jun 2024 14:14:06 +0000
|
|
||||||
Subject: Close sessions on ip change
|
|
||||||
|
|
||||||
Exposed a flag to change the behaviour of the network stack with regard
|
|
||||||
to the automatic reconnection of quic connections when the connection changes.
|
|
||||||
By default changed from automatic reconnection to close connection on ip change.
|
|
||||||
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 ++++--------
|
|
||||||
.../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(-)
|
|
||||||
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
|
|
||||||
|
|
||||||
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(
|
|
||||||
|
|
||||||
bool ShouldQuicCloseSessionsOnIpChange(
|
|
||||||
const VariationParameters& quic_trial_params) {
|
|
||||||
- return base::EqualsCaseInsensitiveASCII(
|
|
||||||
- GetVariationParam(quic_trial_params, "close_sessions_on_ip_change"),
|
|
||||||
- "true");
|
|
||||||
+ return base::FeatureList::IsEnabled(
|
|
||||||
+ net::features::kCloseSessionsOnIpChange);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ShouldQuicGoAwaySessionsOnIpChange(
|
|
||||||
@@ -304,11 +303,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");
|
|
||||||
+ return base::FeatureList::IsEnabled(
|
|
||||||
+ net::features::kMigrateSessionsOnNetworkChangeV2);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ShouldQuicUseNewAlpsCodepoint(
|
|
||||||
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Close-Sessions-On-Ip-Change.inc b/cromite_flags/chrome/browser/about_flags_cc/Close-Sessions-On-Ip-Change.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/chrome/browser/about_flags_cc/Close-Sessions-On-Ip-Change.inc
|
|
||||||
@@ -0,0 +1,14 @@
|
|
||||||
+#ifdef FLAG_SECTION
|
|
||||||
+
|
|
||||||
+ {"close-sessions-on-ip-change",
|
|
||||||
+ "Close sessions on IP change",
|
|
||||||
+ "Option to close QUIC sessions on an IP address change, "
|
|
||||||
+ "when QUIC connection migration is not enabled.", kOsAll,
|
|
||||||
+ FEATURE_VALUE_TYPE(net::features::kCloseSessionsOnIpChange)},
|
|
||||||
+
|
|
||||||
+ {"migrate-sessions-on-network-change-v2",
|
|
||||||
+ "QUIC connection migration",
|
|
||||||
+ "Enable QUIC connection migration.", kOsAll,
|
|
||||||
+ FEATURE_VALUE_TYPE(net::features::kMigrateSessionsOnNetworkChangeV2)},
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
diff --git a/cromite_flags/net/base/features_cc/Close-Sessions-On-Ip-Change.inc b/cromite_flags/net/base/features_cc/Close-Sessions-On-Ip-Change.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/net/base/features_cc/Close-Sessions-On-Ip-Change.inc
|
|
||||||
@@ -0,0 +1,5 @@
|
|
||||||
+CROMITE_FEATURE(kCloseSessionsOnIpChange,
|
|
||||||
+ "CloseSessionsOnIpChange",
|
|
||||||
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
||||||
+
|
|
||||||
+SET_CROMITE_FEATURE_DISABLED(kMigrateSessionsOnNetworkChangeV2);
|
|
||||||
diff --git a/cromite_flags/net/base/features_h/Close-Sessions-On-Ip-Change.inc b/cromite_flags/net/base/features_h/Close-Sessions-On-Ip-Change.inc
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cromite_flags/net/base/features_h/Close-Sessions-On-Ip-Change.inc
|
|
||||||
@@ -0,0 +1,3 @@
|
|
||||||
+NET_EXPORT BASE_DECLARE_FEATURE(kCloseSessionsOnIpChange);
|
|
||||||
+
|
|
||||||
+NET_EXPORT BASE_DECLARE_FEATURE(kMigrateSessionsOnNetworkChangeV2);
|
|
||||||
diff --git a/net/base/features.cc b/net/base/features.cc
|
|
||||||
--- a/net/base/features.cc
|
|
||||||
+++ b/net/base/features.cc
|
|
||||||
@@ -300,7 +300,7 @@ BASE_FEATURE(kRelatedWebsitePartitionAPI, base::FEATURE_DISABLED_BY_DEFAULT);
|
|
||||||
// NetworkChangeNotifier::AreNetworkHandlesSupported).
|
|
||||||
#if BUILDFLAG(IS_ANDROID)
|
|
||||||
inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
|
|
||||||
- base::FEATURE_ENABLED_BY_DEFAULT;
|
|
||||||
+ base::FEATURE_DISABLED_BY_DEFAULT;
|
|
||||||
#else // !BUILDFLAG(IS_ANDROID)
|
|
||||||
inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
|
|
||||||
base::FEATURE_DISABLED_BY_DEFAULT;
|
|
||||||
--
|
|
||||||
@@ -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
|
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
|
--- a/chrome/android/chrome_public_apk_tmpl.gni
|
||||||
+++ b/chrome/android/chrome_public_apk_tmpl.gni
|
+++ b/chrome/android/chrome_public_apk_tmpl.gni
|
||||||
@@ -597,6 +597,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" ]
|
[ "//components/crash/core/app:chrome_crashpad_handler_named_as_so" ]
|
||||||
loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ]
|
loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ]
|
||||||
library_always_compress += [ "libchrome_crashpad_handler.so" ]
|
library_always_compress += [ "libchrome_crashpad_handler.so" ]
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,295 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Sat, 21 Sep 2024 15:32:02 +0000
|
|
||||||
Subject: Cromite Branding: improve settings ui
|
|
||||||
|
|
||||||
Modification to the settings ui with the aim of making it clearer.
|
|
||||||
|
|
||||||
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 | 196 ++++++++++++++++++
|
|
||||||
.../privacy/settings/PrivacySettings.java | 6 +-
|
|
||||||
.../Cromite-settings-ui.grdp | 15 ++
|
|
||||||
5 files changed, 218 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
|
|
||||||
@@ -675,7 +675,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",
|
|
||||||
- "java/res/xml/privacy_preferences.xml",
|
|
||||||
+ "java/res/xml/privacy_preferences.xml", "java/res/xml/privacy_preferences_cromite.xml",
|
|
||||||
"java/res/xml/referer_policy_preferences.xml",
|
|
||||||
"java/res/layout/radio_button_group_referer_policy_preference.xml",
|
|
||||||
"java/res/xml/search_widget_info.xml",
|
|
||||||
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" />
|
|
||||||
<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.
|
|
||||||
android:layout="@layout/account_management_account_row"
|
|
||||||
android:title="@string/sync_category_title"/>
|
|
||||||
<org.chromium.components.browser_ui.settings.ChromeBasePreference
|
|
||||||
- android:key="google_services"
|
|
||||||
+ android:key="google_services" app:isPreferenceVisible="false"
|
|
||||||
android:order="1004"
|
|
||||||
android:layout="@layout/account_management_account_row"
|
|
||||||
android:title="@string/prefs_google_services"
|
|
||||||
diff --git a/chrome/android/java/res/xml/privacy_preferences_cromite.xml b/chrome/android/java/res/xml/privacy_preferences_cromite.xml
|
|
||||||
new file mode 100644
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/chrome/android/java/res/xml/privacy_preferences_cromite.xml
|
|
||||||
@@ -0,0 +1,196 @@
|
|
||||||
+<?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
|
|
||||||
+found in the LICENSE file.
|
|
||||||
+-->
|
|
||||||
+
|
|
||||||
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
+ xmlns:app="http://schemas.android.com/apk/res-auto">
|
|
||||||
+
|
|
||||||
+ <PreferenceCategory
|
|
||||||
+ android:title="@string/browsing_data_section_title"/>
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="clear_browsing_data"
|
|
||||||
+ android:title="@string/clear_browsing_data_title"
|
|
||||||
+ android:summary="@string/clear_browsing_data_summary"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragment" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="clear_browsing_data_advanced"
|
|
||||||
+ android:title="@string/clear_browsing_data_at_start_title"
|
|
||||||
+ android:summary="@string/clear_browsing_data_at_start_summary"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragmentAtStart" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="close_tabs_on_exit"
|
|
||||||
+ android:title="@string/close_tabs_on_exit_title"
|
|
||||||
+ android:summary="@string/close_tabs_on_exit_summary"
|
|
||||||
+ android:defaultValue="false" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.SpinnerPreference
|
|
||||||
+ android:key="history_expire_days_threshold"
|
|
||||||
+ android:persistent="false"
|
|
||||||
+ android:title="@string/history_expire_days_threshold_title"
|
|
||||||
+ android:summary="@string/history_expire_days_threshold_summary"
|
|
||||||
+ app:singleLine="true" />
|
|
||||||
+
|
|
||||||
+ <PreferenceCategory
|
|
||||||
+ android:title="@string/data_exposed_to_website_section_title"/>
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeBasePreference
|
|
||||||
+ android:key="third_party_cookies"
|
|
||||||
+ android:title="@string/third_party_cookies_link_row_label"
|
|
||||||
+ android:fragment="org.chromium.components.browser_ui.site_settings.SingleCategorySettings" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="do_not_track"
|
|
||||||
+ android:title="@string/do_not_track_title"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy.settings.DoNotTrackSettings" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="gpc"
|
|
||||||
+ android:title="@string/gpc_title"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy.settings.GpcSettings" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="referers_policy"
|
|
||||||
+ android:title="@string/referers_policy_title"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy.settings.RefererSettingsFragment"/>
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ 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"/>
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="allow_custom_tab_intents"
|
|
||||||
+ android:title="@string/allow_custom_tab_intents_title"
|
|
||||||
+ android:summary="@string/allow_custom_tab_intents_summary"
|
|
||||||
+ android:defaultValue="false" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:title="@string/uses_separate_storagepartition_for_cct_title"
|
|
||||||
+ android:summary="@string/uses_separate_storagepartition_for_cct_summary"
|
|
||||||
+ app:featureName="maylaunchurl-uses-separate-storage-partition"
|
|
||||||
+ app:needRestart="true" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="allow_external_intent_requests"
|
|
||||||
+ android:title="@string/allow_external_intent_requests_title"
|
|
||||||
+ android:summary="@string/allow_external_intent_requests_summary"
|
|
||||||
+ app:featureName="AllowExternalIntentRequests"
|
|
||||||
+ app:needRestart="false" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="use_tab_switcher_list_mode"
|
|
||||||
+ android:title="@string/tab_switcher_list_mode_title"
|
|
||||||
+ android:summary="@string/tab_switcher_list_mode_summary"
|
|
||||||
+ app:featureName="TabSwitcherListMode"
|
|
||||||
+ app:needRestart="true" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="tabgrid_use_icons"
|
|
||||||
+ android:title="@string/tabgrid_use_icons_title"
|
|
||||||
+ android:summary="@string/tabgrid_use_icons_summary"
|
|
||||||
+ android:defaultValue="false" />
|
|
||||||
+
|
|
||||||
+ <PreferenceCategory
|
|
||||||
+ android:title="@string/incognito_related_section_title"/>
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="open_external_links_incognito"
|
|
||||||
+ android:title="@string/open_external_links_incognito_title"
|
|
||||||
+ android:summary="@string/open_external_links_incognito_summary"
|
|
||||||
+ android:defaultValue="false" />
|
|
||||||
+ <org.chromium.chrome.browser.incognito.reauth.IncognitoReauthSettingSwitchPreference
|
|
||||||
+ android:key="incognito_lock"
|
|
||||||
+ android:title="@string/settings_incognito_tab_lock_title"
|
|
||||||
+ android:summary="@string/settings_incognito_tab_lock_summary_android_setting_off"
|
|
||||||
+ android:persistent="false" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="incognito_settings"
|
|
||||||
+ android:title="@string/incognito_settings_title"
|
|
||||||
+ android:summary="@string/incognito_settings_summary"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy.settings.IncognitoSettings"/>
|
|
||||||
+
|
|
||||||
+ <PreferenceCategory
|
|
||||||
+ android:key="security_section"
|
|
||||||
+ android:title="@string/security_section_title"/>
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="https_first_mode_legacy"
|
|
||||||
+ android:title="@string/settings_https_first_mode_title"
|
|
||||||
+ android:summary="@string/settings_https_first_mode_summary" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="https_first_mode"
|
|
||||||
+ android:title="@string/settings_https_first_mode_title"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.ssl.HttpsFirstModeSettingsFragment" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeBasePreference
|
|
||||||
+ android:key="secure_dns"
|
|
||||||
+ android:title="@string/settings_secure_dns_title"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:title="@string/dangling_pointer_detector_title"
|
|
||||||
+ android:summary="@string/dangling_pointer_detector_summary"
|
|
||||||
+ app:featureName="enable-dangling-pointer-detector"
|
|
||||||
+ app:needRestart="true" />
|
|
||||||
+
|
|
||||||
+ <PreferenceCategory
|
|
||||||
+ android:title="@string/services_category_title"/>
|
|
||||||
+ <org.chromium.chrome.browser.about_settings.HyperlinkPreference
|
|
||||||
+ android:key="proxy"
|
|
||||||
+ android:title="@string/proxy_title"
|
|
||||||
+ app:url="@string/proxy_url" />
|
|
||||||
+ <org.chromium.chrome.browser.about_settings.HyperlinkPreference
|
|
||||||
+ android:key="cromite_flags"
|
|
||||||
+ android:title="@string/cromite_flags_title"
|
|
||||||
+ app:url="@string/cromite_flags_url" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
|
||||||
+ android:key="search_suggestions"
|
|
||||||
+ android:title="@string/improve_search_suggestions_title"
|
|
||||||
+ android:summary="@string/improve_search_suggestions_summary"
|
|
||||||
+ android:persistent="false"/>
|
|
||||||
+
|
|
||||||
+ <!--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"
|
|
||||||
+ android:summary="@string/prefs_safe_browsing_summary"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.safe_browsing.settings.SafeBrowsingSettingsFragment"
|
|
||||||
+ app:isPreferenceVisible="false" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeBasePreference
|
|
||||||
+ android:key="contextual_search"
|
|
||||||
+ android:title="@string/contextual_search_title"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.contextualsearch.ContextualSearchSettingsFragment"
|
|
||||||
+ app:isPreferenceVisible="false" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="privacy_guide"
|
|
||||||
+ app:isPreferenceVisible="false"
|
|
||||||
+ android:title="@string/privacy_guide_pref_title"
|
|
||||||
+ android:summary="@string/privacy_guide_pref_summary"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="tracking_protection"
|
|
||||||
+ android:title="@string/third_party_cookies_link_row_label"
|
|
||||||
+ android:fragment="org.chromium.components.privacy_sandbox.TrackingProtectionSettings"
|
|
||||||
+ 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"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsFragment" />
|
|
||||||
+ <Preference
|
|
||||||
+ android:key="preload_pages"
|
|
||||||
+ android:title="@string/preload_pages_title"
|
|
||||||
+ android:summary="@string/preload_pages_summary"
|
|
||||||
+ android:fragment="org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsFragment"
|
|
||||||
+ app:isPreferenceVisible="false" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.TextMessagePreference
|
|
||||||
+ android:key="sync_and_services_link"
|
|
||||||
+ android:summary="@string/privacy_sync_and_services_link_legacy"
|
|
||||||
+ app:allowDividerBelow="false"
|
|
||||||
+ app:isPreferenceVisible="false" />
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeBasePreference
|
|
||||||
+ android:key="javascript_optimizer"
|
|
||||||
+ android:title="@string/website_settings_privacy_and_security_javascript_optimizer_row_label"
|
|
||||||
+ 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
|
|
||||||
@@ -204,7 +204,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
|
||||||
public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable 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.
|
|
||||||
@@ -291,7 +291,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
|
|
||||||
|
|
||||||
ChromeSwitchPreference passwordLeakTogglePref =
|
|
||||||
(ChromeSwitchPreference) findPreference(PREF_PASSWORD_LEAK_DETECTION);
|
|
||||||
- passwordLeakTogglePref.setOnPreferenceChangeListener(this);
|
|
||||||
+ 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
|
|
||||||
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
+<grit-part>
|
|
||||||
+ <message name="IDS_BROWSING_DATA_SECTION_TITLE" desc="">
|
|
||||||
+ Browsing data
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_DATA_EXPOSED_TO_WEBSITE_SECTION_TITLE" desc="">
|
|
||||||
+ Data exposed to the websites
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_INCOGNITO_RELATED_SECTION_TITLE" desc="">
|
|
||||||
+ Incognito mode
|
|
||||||
+ </message>
|
|
||||||
+ <message name="IDS_DATA_EXPOSED_TO_DEVICE_SECTION_TITLE" desc="">
|
|
||||||
+ Data exposed in the device
|
|
||||||
+ </message>
|
|
||||||
+</grit-part>
|
|
||||||
--
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -7,71 +7,25 @@ Opens tabs in foreground, Move web search to the top of items,
|
|||||||
Web search in tab group and Enable smart text selection
|
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
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
---
|
---
|
||||||
.../SamsungSelectionActionMenuDelegate.java | 7 +-
|
.../browser/ChromeActionModeHandler.java | 4 +-
|
||||||
.../browser/ChromeActionModeHandler.java | 4 +-
|
.../chrome/browser/ChromeTabbedActivity.java | 15 +-
|
||||||
.../chrome/browser/ChromeTabbedActivity.java | 15 +++-
|
.../compositor/layouts/LayoutManagerImpl.java | 8 ++
|
||||||
...ActivityTabWebContentsDelegateAndroid.java | 10 ++-
|
.../chrome/browser/ui/RootUiCoordinator.java | 8 +-
|
||||||
.../compositor/layouts/LayoutManagerImpl.java | 9 ++-
|
.../Customize-selection-popup.grdp | 34 +++++
|
||||||
.../tab/TabContextMenuItemDelegate.java | 7 +-
|
.../res/xml/accessibility_preferences.xml | 24 ++++
|
||||||
.../chrome/browser/ui/RootUiCoordinator.java | 8 +-
|
.../selection/SelectActionMenuHelper.java | 131 ++++++++++++------
|
||||||
.../Customize-selection-popup.grdp | 34 +++++++++
|
.../selection/SmartSelectionClient.java | 4 +
|
||||||
.../AutofillSelectionMenuItemHelper.java | 4 +-
|
8 files changed, 178 insertions(+), 50 deletions(-)
|
||||||
.../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(-)
|
|
||||||
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp
|
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
|
||||||
+++ b/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 {
|
@@ -148,9 +148,7 @@ public class ChromeActionModeHandler {
|
||||||
| ActionModeCallbackHelper.MENU_ITEM_SHARE;
|
| ActionModeCallbackHelper.MENU_ITEM_SHARE;
|
||||||
// Disable options that expose additional Chrome functionality prior to the FRE being
|
// Disable options that expose additional Chrome functionality prior to the FRE being
|
||||||
// completed (i.e. creation of a new tab).
|
// completed (i.e. creation of a new tab).
|
||||||
- if (FirstRunStatus.getFirstRunFlowComplete() && mShowWebSearch) {
|
- if (FirstRunStatus.getFirstRunFlowComplete()) {
|
||||||
- allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
|
- allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
|
||||||
- }
|
- }
|
||||||
+ allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
|
+ allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
|
||||||
@@ -81,14 +35,14 @@ 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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||||
@@ -944,10 +944,17 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
@@ -754,10 +754,17 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||||
@TabLaunchType int type,
|
@TabLaunchType int type,
|
||||||
@TabCreationState int creationState,
|
@TabCreationState int creationState,
|
||||||
boolean markedForSelection) {
|
boolean markedForSelection) {
|
||||||
- if (type == TabLaunchType.FROM_LONGPRESS_BACKGROUND
|
- if (type == TabLaunchType.FROM_LONGPRESS_BACKGROUND
|
||||||
- || type == TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP
|
- || type == TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP
|
||||||
- || (type == TabLaunchType.FROM_RECENT_TABS
|
- || type == TabLaunchType.FROM_RECENT_TABS
|
||||||
- && !DeviceClassManager.enableAnimations())) {
|
- && !DeviceClassManager.enableAnimations()) {
|
||||||
+ boolean selectionPopupTabsForeground =
|
+ boolean selectionPopupTabsForeground =
|
||||||
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
||||||
+ "selection_popup_tabs_foreground", false);
|
+ "selection_popup_tabs_foreground", false);
|
||||||
@@ -103,110 +57,60 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
|||||||
Toast.makeText(
|
Toast.makeText(
|
||||||
ChromeTabbedActivity.this,
|
ChromeTabbedActivity.this,
|
||||||
R.string.open_in_new_tab_toast,
|
R.string.open_in_new_tab_toast,
|
||||||
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
|
|
||||||
// Skip opening a new Tab if it doesn't make sense.
|
|
||||||
if (mTab.isClosing()) return false;
|
|
||||||
|
|
||||||
+ int tabLaunchType = TabLaunchType.FROM_LONGPRESS_FOREGROUND;
|
|
||||||
+ boolean selectionPopupTabsForeground =
|
|
||||||
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
|
||||||
+ "selection_popup_tabs_foreground", false);
|
|
||||||
+ if (selectionPopupTabsForeground) {
|
|
||||||
+ 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;
|
|
||||||
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
|
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
|
--- 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
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl.java
|
||||||
@@ -20,6 +20,7 @@ import androidx.annotation.Px;
|
@@ -16,6 +16,7 @@ import android.view.ViewGroup;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import org.chromium.base.Callback;
|
|
||||||
+import org.chromium.base.ContextUtils;
|
+import org.chromium.base.ContextUtils;
|
||||||
import org.chromium.base.ObserverList;
|
import org.chromium.base.ObserverList;
|
||||||
import org.chromium.base.TraceEvent;
|
import org.chromium.base.TraceEvent;
|
||||||
import org.chromium.base.supplier.MonotonicObservableSupplier;
|
import org.chromium.base.supplier.ObservableSupplier;
|
||||||
@@ -243,11 +244,17 @@ public class LayoutManagerImpl
|
@@ -227,6 +228,13 @@ public class LayoutManagerImpl
|
||||||
boolean willBeSelected = willAddedTabBeSelected(launchType, incognito);
|
&& launchType != TabLaunchType.FROM_RECENT_TABS
|
||||||
float lastTapX = LocalizationUtils.isLayoutRtl() ? mHost.getWidth() * mPxToDp : 0.f;
|
&& launchType != TabLaunchType.FROM_RESTORE_TABS_UI
|
||||||
float lastTapY = 0.f;
|
|| (!getTabModelSelector().isIncognitoSelected() && incognito);
|
||||||
+ boolean selectionPopupTabsForeground =
|
+ boolean selectionPopupTabsForeground =
|
||||||
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
||||||
+ "selection_popup_tabs_foreground", false);
|
+ "selection_popup_tabs_foreground", false);
|
||||||
+ if (selectionPopupTabsForeground) {
|
+ if (selectionPopupTabsForeground) {
|
||||||
+ willBeSelected = launchType != TabLaunchType.FROM_RESTORE_TABS_UI
|
+ willBeSelected = launchType != TabLaunchType.FROM_RESTORE_TABS_UI
|
||||||
+ || (!getTabModelSelector().isIncognitoSelected() && incognito);
|
+ || (!getTabModelSelector().isIncognitoSelected() && incognito);
|
||||||
+ }
|
+ }
|
||||||
if (launchType != TabLaunchType.FROM_CHROME_UI) {
|
float lastTapX = LocalizationUtils.isLayoutRtl() ? mHost.getWidth() * mPxToDp : 0.f;
|
||||||
lastTapX = mPxToDp * mLastTapX;
|
float lastTapY = 0.f;
|
||||||
lastTapY = mPxToDp * mLastTapY;
|
if (launchType != TabLaunchType.FROM_CHROME_UI) {
|
||||||
}
|
|
||||||
-
|
|
||||||
tabCreated(
|
|
||||||
tabId,
|
|
||||||
getTabModelSelector().getCurrentTabId(),
|
|
||||||
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
|
|
||||||
@@ -404,8 +404,13 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
|
|
||||||
public void onOpenImageInNewTab(GURL url, @Nullable Referrer referrer) {
|
|
||||||
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
|
|
||||||
loadUrlParams.setReferrer(referrer);
|
|
||||||
+ @TabLaunchType int type = TabLaunchType.FROM_LONGPRESS_BACKGROUND;
|
|
||||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(
|
|
||||||
+ "selection_popup_tabs_foreground", false)) {
|
|
||||||
+ type = TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP;
|
|
||||||
+ }
|
|
||||||
mTabModelSelector.openNewTab(
|
|
||||||
- loadUrlParams, TabLaunchType.FROM_LONGPRESS_BACKGROUND, mTab, isIncognito());
|
|
||||||
+ loadUrlParams, type, mTab, isIncognito());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
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
|
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
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||||
+++ b/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;
|
@@ -27,6 +27,7 @@ import androidx.appcompat.content.res.AppCompatResources;
|
||||||
|
|
||||||
import org.chromium.base.Callback;
|
import org.chromium.base.Callback;
|
||||||
import org.chromium.base.CallbackController;
|
import org.chromium.base.CallbackController;
|
||||||
+import org.chromium.base.ContextUtils;
|
+import org.chromium.base.ContextUtils;
|
||||||
import org.chromium.base.DeviceInfo;
|
|
||||||
import org.chromium.base.TraceEvent;
|
import org.chromium.base.TraceEvent;
|
||||||
import org.chromium.base.lifetime.Destroyable;
|
import org.chromium.base.metrics.RecordUserAction;
|
||||||
@@ -1083,11 +1084,16 @@ public class RootUiCoordinator
|
import org.chromium.base.supplier.ObservableSupplier;
|
||||||
TrackerFactory.getTrackerForProfile(tab.getProfile())
|
@@ -841,11 +842,16 @@ public class RootUiCoordinator
|
||||||
.notifyEvent(EventConstants.WEB_SEARCH_PERFORMED);
|
TrackerFactory.getTrackerForProfile(tab.getProfile())
|
||||||
|
.notifyEvent(EventConstants.WEB_SEARCH_PERFORMED);
|
||||||
|
|
||||||
+ boolean selection_popup_web_search_to_group =
|
+ boolean selection_popup_web_search_to_group =
|
||||||
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
+ ContextUtils.getAppSharedPreferences().getBoolean(
|
||||||
+ "selection_popup_web_search_to_group", false);
|
+ "selection_popup_web_search_to_group", false);
|
||||||
+
|
+
|
||||||
mTabModelSelectorSupplier
|
mTabModelSelectorSupplier
|
||||||
.get()
|
.get()
|
||||||
.openNewTab(
|
.openNewTab(
|
||||||
generateUrlParamsForSearch(tab, query),
|
generateUrlParamsForSearch(tab, query),
|
||||||
- TabLaunchType.FROM_LONGPRESS_FOREGROUND,
|
- TabLaunchType.FROM_LONGPRESS_FOREGROUND,
|
||||||
+ selection_popup_web_search_to_group ? TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP
|
+ selection_popup_web_search_to_group ? TabLaunchType.FROM_LONGPRESS_BACKGROUND_IN_GROUP
|
||||||
+ : TabLaunchType.FROM_LONGPRESS_FOREGROUND,
|
+ : TabLaunchType.FROM_LONGPRESS_FOREGROUND,
|
||||||
tab,
|
tab,
|
||||||
tab.isIncognito());
|
tab.isIncognito());
|
||||||
},
|
},
|
||||||
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp
|
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
@@ -246,31 +150,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
|
+ 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>
|
+ </message>
|
||||||
+</grit-part>
|
+</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
|
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
|
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
|
||||||
+++ b/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:key="disable_toolbar_swipeup"
|
||||||
android:title="@string/disable_toolbar_swipe_up" />
|
android:title="@string/disable_toolbar_swipe_up" />
|
||||||
|
|
||||||
@@ -302,178 +185,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
|
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
|
--- 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
|
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
|
||||||
@@ -169,7 +169,7 @@ public class SelectActionMenuHelper {
|
@@ -26,6 +26,7 @@ import androidx.core.content.ContextCompat;
|
||||||
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(android.R.id.pasteAsPlainText)
|
|
||||||
.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
|
|
||||||
@@ -1149,7 +1149,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.Log;
|
||||||
+import org.chromium.base.ContextUtils;
|
+import org.chromium.base.ContextUtils;
|
||||||
import org.chromium.base.ObserverList;
|
import org.chromium.base.PackageManagerUtils;
|
||||||
import org.chromium.base.UserData;
|
import org.chromium.base.StrictModeContext;
|
||||||
import org.chromium.build.annotations.Initializer;
|
import org.chromium.content.R;
|
||||||
@@ -81,6 +82,9 @@ public class SmartSelectionClient implements SelectionClient, UserData {
|
@@ -51,38 +52,84 @@ import java.util.TreeSet;
|
||||||
return null;
|
public class SelectActionMenuHelper {
|
||||||
}
|
private static final String TAG = "SelectActionMenu"; // 20 char limit.
|
||||||
|
|
||||||
+ 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;
|
|
||||||
|
|
||||||
+import org.chromium.base.ContextUtils;
|
|
||||||
import org.chromium.build.annotations.NullMarked;
|
|
||||||
import org.chromium.build.annotations.Nullable;
|
|
||||||
|
|
||||||
@@ -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)
|
- @Retention(RetentionPolicy.SOURCE)
|
||||||
- @IntDef({
|
- @IntDef({
|
||||||
- ItemGroupOffset.ASSIST_ITEMS,
|
- GroupItemOrder.ASSIST_ITEMS,
|
||||||
- ItemGroupOffset.DEFAULT_ITEMS,
|
- GroupItemOrder.DEFAULT_ITEMS,
|
||||||
- ItemGroupOffset.SECONDARY_ASSIST_ITEMS,
|
- GroupItemOrder.SECONDARY_ASSIST_ITEMS,
|
||||||
- ItemGroupOffset.TEXT_PROCESSING_ITEMS
|
- GroupItemOrder.TEXT_PROCESSING_ITEMS
|
||||||
- })
|
- })
|
||||||
- public @interface ItemGroupOffset {
|
- public @interface GroupItemOrder {
|
||||||
- int ASSIST_ITEMS = 0;
|
- int ASSIST_ITEMS = 1;
|
||||||
- int DEFAULT_ITEMS = 10;
|
- int DEFAULT_ITEMS = 2;
|
||||||
- int SECONDARY_ASSIST_ITEMS = 20;
|
- int SECONDARY_ASSIST_ITEMS = 3;
|
||||||
- int TEXT_PROCESSING_ITEMS = 30;
|
- int TEXT_PROCESSING_ITEMS = 4;
|
||||||
+ public static class ItemGroupOffset {
|
+ private static class GroupItemOrderChromium {
|
||||||
+ static int CHROMIUM_ASSIST_ITEMS = 1;
|
+ static int CHROMIUM_ASSIST_ITEMS = 1;
|
||||||
+ static int CHROMIUM_DEFAULT_ITEMS = 2;
|
+ static int CHROMIUM_DEFAULT_ITEMS = 2;
|
||||||
+ static int CHROMIUM_SECONDARY_ASSIST_ITEMS = 3;
|
+ static int CHROMIUM_SECONDARY_ASSIST_ITEMS = 3;
|
||||||
@@ -507,93 +243,198 @@ diff --git a/content/public/android/java/src/org/chromium/content_public/browser
|
|||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
|
|
||||||
private final @AttrRes int mIconAttr;
|
- @Retention(RetentionPolicy.SOURCE)
|
||||||
@@ -210,25 +231,23 @@ public final class SelectionMenuItem implements Comparable<SelectionMenuItem> {
|
- @IntDef({
|
||||||
* @param order the order, must be >= 0.
|
- DefaultItemOrder.CUT,
|
||||||
* @param category the section of the menu in which this item should appear.
|
- DefaultItemOrder.COPY,
|
||||||
*/
|
- DefaultItemOrder.PASTE,
|
||||||
- public Builder setOrderAndCategory(int order, @ItemGroupOffset int category) {
|
- DefaultItemOrder.PASTE_AS_PLAIN_TEXT,
|
||||||
+ public Builder setOrderAndCategory(int order, int category) {
|
- DefaultItemOrder.SHARE,
|
||||||
if (order < 0) {
|
- DefaultItemOrder.SELECT_ALL,
|
||||||
throw new IllegalArgumentException("Invalid order. Must be >= 0");
|
- DefaultItemOrder.WEB_SEARCH
|
||||||
}
|
- })
|
||||||
// Make sure items don't spill over into the next category.
|
- public @interface DefaultItemOrder {
|
||||||
- mOrder =
|
- int CUT = 1;
|
||||||
- switch (category) {
|
- int COPY = 2;
|
||||||
- case ItemGroupOffset.ASSIST_ITEMS ->
|
- int PASTE = 3;
|
||||||
- Math.min(order + category, ItemGroupOffset.DEFAULT_ITEMS - 1);
|
- int PASTE_AS_PLAIN_TEXT = 4;
|
||||||
- case ItemGroupOffset.DEFAULT_ITEMS ->
|
- int SHARE = 5;
|
||||||
- Math.min(
|
- int SELECT_ALL = 6;
|
||||||
- order + category,
|
- int WEB_SEARCH = 7;
|
||||||
- ItemGroupOffset.SECONDARY_ASSIST_ITEMS - 1);
|
+ private static class DefaultItemOrderChromium {
|
||||||
- case ItemGroupOffset.SECONDARY_ASSIST_ITEMS ->
|
+ static int CHROMIUM_CUT = 1;
|
||||||
- Math.min(
|
+ static int CHROMIUM_COPY = 2;
|
||||||
- order + category,
|
+ static int CHROMIUM_PASTE = 3;
|
||||||
- ItemGroupOffset.TEXT_PROCESSING_ITEMS - 1);
|
+ static int CHROMIUM_SHARE = 4;
|
||||||
- default -> order + category;
|
+ static int CHROMIUM_SELECT_ALL = 5;
|
||||||
- };
|
+ static int CHROMIUM_PASTE_AS_PLAIN_TEXT = 6;
|
||||||
+ if (category == ItemGroupOffset.ASSIST_ITEMS())
|
+ static int CHROMIUM_WEB_SEARCH = 7;
|
||||||
+ mOrder = Math.min(order + category, ItemGroupOffset.DEFAULT_ITEMS() - 1);
|
+
|
||||||
+ else if (category == ItemGroupOffset.DEFAULT_ITEMS())
|
+ static int CROMITE_WEB_SEARCH = 1;
|
||||||
+ mOrder = Math.min(
|
+ static int CROMITE_CUT = 2;
|
||||||
+ order + category,
|
+ static int CROMITE_COPY = 3;
|
||||||
+ ItemGroupOffset.SECONDARY_ASSIST_ITEMS() - 1);
|
+ static int CROMITE_PASTE = 4;
|
||||||
+ else if (category == ItemGroupOffset.SECONDARY_ASSIST_ITEMS())
|
+ static int CROMITE_SHARE = 5;
|
||||||
+ mOrder = Math.min(
|
+ static int CROMITE_SELECT_ALL = 6;
|
||||||
+ order + category,
|
+ static int CROMITE_PASTE_AS_PLAIN_TEXT = 7;
|
||||||
+ ItemGroupOffset.TEXT_PROCESSING_ITEMS() - 1);
|
+
|
||||||
+ else
|
+ private static int GetValue(int a, int b) {
|
||||||
+ mOrder = order + category;
|
+ return !ContextUtils.getAppSharedPreferences().getBoolean(
|
||||||
return this;
|
+ "selection_popup_web_search_to_top", false)
|
||||||
}
|
+ ? a : b;
|
||||||
|
+ }
|
||||||
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
|
+ public static int CUT() {
|
||||||
+++ b/content/public/android/java/src/org/chromium/content_public/browser/selection/SelectionActionMenuDelegate.java
|
+ return GetValue(CHROMIUM_CUT, CROMITE_CUT);
|
||||||
@@ -7,6 +7,7 @@ package org.chromium.content_public.browser.selection;
|
+ }
|
||||||
import android.content.pm.ResolveInfo;
|
+ public static int COPY() {
|
||||||
import android.view.View;
|
+ return GetValue(CHROMIUM_COPY, CROMITE_COPY);
|
||||||
|
+ }
|
||||||
+import org.chromium.base.ContextUtils;
|
+ public static int PASTE() {
|
||||||
import org.chromium.base.SelectionActionMenuClientWrapper.DefaultItem;
|
+ return GetValue(CHROMIUM_PASTE, CROMITE_PASTE);
|
||||||
import org.chromium.base.SelectionActionMenuClientWrapper.MenuType;
|
+ }
|
||||||
import org.chromium.build.annotations.NullMarked;
|
+ public static int SHARE() {
|
||||||
@@ -23,15 +24,28 @@ import java.util.List;
|
+ return GetValue(CHROMIUM_SHARE, CROMITE_SHARE);
|
||||||
@NullMarked
|
+ }
|
||||||
public interface SelectionActionMenuDelegate {
|
+ public static int SELECT_ALL() {
|
||||||
static @DefaultItem int[] getDefaultMenuItemOrder() {
|
+ return GetValue(CHROMIUM_SELECT_ALL, CROMITE_SELECT_ALL);
|
||||||
- return new @DefaultItem int[] {
|
+ }
|
||||||
- DefaultItem.CUT,
|
+ public static int PASTE_AS_PLAIN_TEXT() {
|
||||||
- DefaultItem.COPY,
|
+ return GetValue(CHROMIUM_PASTE_AS_PLAIN_TEXT, CROMITE_PASTE_AS_PLAIN_TEXT);
|
||||||
- DefaultItem.PASTE,
|
+ }
|
||||||
- DefaultItem.PASTE_AS_PLAIN_TEXT,
|
+ public static int WEB_SEARCH() {
|
||||||
- DefaultItem.SHARE,
|
+ return GetValue(CHROMIUM_WEB_SEARCH, CROMITE_WEB_SEARCH);
|
||||||
- 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)
|
||||||
|
@@ -159,7 +206,7 @@ public class SelectActionMenuHelper {
|
||||||
|
if (!additionalMenuItems.isEmpty()) {
|
||||||
|
// Additional menu item group which comes after default menu items.
|
||||||
|
SelectionMenuGroup additionalItemGroup =
|
||||||
|
- new SelectionMenuGroup(Menu.NONE, GroupItemOrder.SECONDARY_ASSIST_ITEMS);
|
||||||
|
+ new SelectionMenuGroup(Menu.NONE, GroupItemOrderChromium.SECONDARY_ASSIST_ITEMS());
|
||||||
|
additionalItemGroup.addItems(additionalMenuItems);
|
||||||
|
pasteMenuItems.add(additionalItemGroup);
|
||||||
|
}
|
||||||
|
@@ -225,7 +272,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;
|
||||||
|
@@ -251,7 +298,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()));
|
||||||
|
@@ -302,7 +349,7 @@ public class SelectActionMenuHelper {
|
||||||
|
// these menu items.
|
||||||
|
SelectionMenuGroup secondaryAssistItems =
|
||||||
|
new SelectionMenuGroup(
|
||||||
|
- android.R.id.textAssist, GroupItemOrder.SECONDARY_ASSIST_ITEMS);
|
||||||
|
+ android.R.id.textAssist, GroupItemOrderChromium.SECONDARY_ASSIST_ITEMS());
|
||||||
|
|
||||||
|
// First action is reserved for primary action so start at index 1.
|
||||||
|
final int startIndex = 1;
|
||||||
|
@@ -335,7 +382,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;
|
||||||
|
@@ -432,7 +479,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)
|
||||||
|
@@ -444,7 +491,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)
|
||||||
|
@@ -456,7 +503,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)
|
||||||
|
@@ -470,7 +517,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)
|
||||||
|
@@ -482,7 +529,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)
|
||||||
|
@@ -495,7 +542,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);
|
||||||
|
@@ -515,7 +562,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
|
||||||
|
@@ -17,6 +17,7 @@ import org.jni_zero.CalledByNative;
|
||||||
|
import org.jni_zero.JNINamespace;
|
||||||
|
import org.jni_zero.NativeMethods;
|
||||||
|
|
||||||
|
+import org.chromium.base.ContextUtils;
|
||||||
|
import org.chromium.content_public.browser.SelectAroundCaretResult;
|
||||||
|
import org.chromium.content_public.browser.SelectionClient;
|
||||||
|
import org.chromium.content_public.browser.SelectionEventProcessor;
|
||||||
|
@@ -69,6 +70,9 @@ public class SmartSelectionClient implements SelectionClient {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(
|
||||||
|
+ "selection_popup_smart_text", false)) return null;
|
||||||
|
+
|
||||||
|
return new SmartSelectionClient(callback, webContents);
|
||||||
|
}
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
From: uazo <uazo@users.noreply.github.com>
|
||||||
|
Date: Mon, 5 Jun 2023 17:02:33 +0000
|
||||||
|
Subject: Deprecate Data URL in SVGUseElement
|
||||||
|
|
||||||
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
|
---
|
||||||
|
.../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
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
|
||||||
|
@@ -3205,8 +3205,8 @@
|
||||||
|
status: "stable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
- name: "RemoveDataUrlInSvgUse",
|
||||||
|
- status: "stable",
|
||||||
|
+ name: "RemoveDataUrlInSvgUse", // enabled
|
||||||
|
+ status: "stable", // by default
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "RemoveMobileViewportDoubleTap",
|
||||||
|
--
|
||||||
@@ -10,85 +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
|
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||||
---
|
---
|
||||||
chrome/android/java/res/layout/url_bar.xml | 1 +
|
chrome/android/java/res/layout/url_bar.xml | 1 +
|
||||||
.../browser/omnibox/LocationBarMediator.java | 21 ++++++++++++---
|
.../browser/omnibox/LocationBarMediator.java | 13 +++++++++--
|
||||||
.../chrome/browser/omnibox/UrlBar.java | 26 +++++++++++++++++++
|
.../chrome/browser/omnibox/UrlBar.java | 23 +++++++++++++++++++
|
||||||
.../browser/omnibox/UrlBarViewBinder.java | 1 +
|
3 files changed, 35 insertions(+), 2 deletions(-)
|
||||||
4 files changed, 45 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml
|
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
|
--- a/chrome/android/java/res/layout/url_bar.xml
|
||||||
+++ b/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:singleLine="true"
|
||||||
android:imeOptions="actionGo|flagNoExtractUi|flagNoFullscreen"
|
android:imeOptions="actionGo|flagNoExtractUi|flagNoFullscreen"
|
||||||
android:textAppearance="@style/TextAppearance.SearchBoxText"
|
android:textAppearance="@style/TextAppearance.SearchBoxText"
|
||||||
+ android:inputType="textUri"
|
+ android:inputType="textUri"
|
||||||
android:hint="@string/omnibox_empty_hint"
|
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
|
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
|
--- 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
|
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
|
||||||
@@ -1007,7 +1007,7 @@ class LocationBarMediator
|
@@ -291,8 +291,17 @@ class LocationBarMediator
|
||||||
// Existing text (e.g. if the user pasted via the fakebox) from the fake box
|
if (mNativeInitialized) RecordUserAction.record("FocusLocation");
|
||||||
// should be restored after toggling the focus.
|
// Don't clear Omnibox if the user just pasted text to NTP Omnibox.
|
||||||
if (mCurrentInput != null && !mCurrentInput.getUserText().isEmpty()) {
|
if (mShouldClearOmniboxOnFocus) {
|
||||||
- beginOrResumeInput(/* activateNewSession= */ false);
|
- setUrlBarText(
|
||||||
+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false);
|
- UrlBarData.EMPTY, UrlBar.ScrollType.NO_SCROLL, SelectionState.SELECT_END);
|
||||||
}
|
+ UrlBarData data = mLocationBarDataProvider.getUrlBarData();
|
||||||
}
|
+ @SelectionState int selectionState = SelectionState.SELECT_ALL;
|
||||||
|
+ GURL url = mLocationBarDataProvider.getUrlBarData().url;
|
||||||
@@ -1052,7 +1052,7 @@ class LocationBarMediator
|
+ if (url != null && mTemplateUrlServiceSupplier.hasValue()) {
|
||||||
*/
|
+ String searchParams =
|
||||||
@EnsuresNonNullIf("mCurrentInput")
|
+ mTemplateUrlServiceSupplier.get().getSearchQueryForUrl(url);
|
||||||
@VisibleForTesting
|
+ if (searchParams != null && !searchParams.isEmpty()) {
|
||||||
- void beginOrResumeInput(boolean activateNewSession) {
|
+ data = UrlBarData.forUrlAndText(data.url, data.displayText, searchParams);
|
||||||
+ 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);
|
|
||||||
|
|
||||||
@@ -1087,6 +1087,19 @@ class LocationBarMediator
|
|
||||||
mStatusCoordinator.setSiteSearchDataSupplier(mCurrentInput.getSiteSearchDataSupplier());
|
|
||||||
|
|
||||||
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);
|
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ setUrlBarText(data, UrlBar.ScrollType.NO_SCROLL, selectionState);
|
||||||
+ mCurrentInput.setSelection(0, Integer.MAX_VALUE);
|
}
|
||||||
+ }
|
|
||||||
mUrlCoordinator.setUrlBarData(
|
|
||||||
data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection());
|
|
||||||
|
|
||||||
@@ -1162,7 +1175,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 {
|
} else {
|
||||||
endInputInternal();
|
mUrlFocusedFromFakebox = false;
|
||||||
}
|
|
||||||
@@ -2065,7 +2078,7 @@ class LocationBarMediator
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait for the Url focus change before refreshing autocomplete.
|
|
||||||
- beginOrResumeInput(/* activateNewSession= */ true);
|
|
||||||
+ beginOrResumeInput(/* activateNewSession= */ true, /* wasFocus */ false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
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
|
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
|
--- 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
|
+++ 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.Paint;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -96,27 +58,18 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
|
|||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.InputType;
|
import android.text.InputType;
|
||||||
@@ -57,6 +58,7 @@ import org.chromium.components.browser_ui.util.FirstDrawDetector;
|
@@ -99,6 +100,7 @@ public abstract class UrlBar extends AutocompleteEditText {
|
||||||
import org.chromium.components.omnibox.OmniboxFeatures;
|
private boolean mFocused;
|
||||||
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;
|
|
||||||
|
|
||||||
@@ -112,6 +114,7 @@ public class UrlBar extends AutocompleteEditText {
|
|
||||||
private boolean mFocusEventEmitted;
|
|
||||||
private boolean mAllowFocus = true;
|
private boolean mAllowFocus = true;
|
||||||
private boolean mAllowMultilineInput;
|
|
||||||
+ private boolean mPendingSelectAll;
|
|
||||||
private boolean mCurrentInputCanBeWrapped;
|
|
||||||
|
|
||||||
|
+ private boolean mPendingSelectAll;
|
||||||
private boolean mPendingScroll;
|
private boolean mPendingScroll;
|
||||||
@@ -335,6 +338,29 @@ public class UrlBar extends AutocompleteEditText {
|
|
||||||
|
// Captures the current intended text scroll type.
|
||||||
|
@@ -294,6 +296,27 @@ public abstract class UrlBar extends AutocompleteEditText {
|
||||||
mPendingScroll = false;
|
mPendingScroll = false;
|
||||||
}
|
}
|
||||||
fixupTextDirection();
|
fixupTextDirection();
|
||||||
+
|
|
||||||
+ if (mPendingSelectAll) {
|
+ if (mPendingSelectAll) {
|
||||||
+ UrlBar sender = this;
|
+ UrlBar sender = this;
|
||||||
+ new Handler().post(new Runnable() {
|
+ new Handler().post(new Runnable() {
|
||||||
@@ -131,8 +84,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
|
|||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void selectAll() {
|
+ public void selectAll() {
|
||||||
+ if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(getContext()))
|
+ mPendingSelectAll = true;
|
||||||
+ mPendingSelectAll = true;
|
|
||||||
+ super.selectAll();
|
+ super.selectAll();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -142,15 +94,4 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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
|
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
|
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
|
||||||
+++ b/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.
|
@@ -7,6 +7,11 @@ found in the LICENSE file.
|
||||||
android:key="zoom_info"
|
|
||||||
android:title="@string/zoom_info_preference_title"/>
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
||||||
+ android:key="enable_accessibility"
|
+ android:key="enable_accessibility"
|
||||||
+ android:summary="@string/enable_accessibility_summary"
|
+ android:summary="@string/enable_accessibility_summary"
|
||||||
+ android:title="@string/enable_accessibility_title" />
|
+ android:title="@string/enable_accessibility_title" />
|
||||||
+
|
+
|
||||||
<org.chromium.components.browser_ui.settings.ChromeSwitchPreference
|
<org.chromium.chrome.browser.accessibility.settings.TextScalePreference
|
||||||
android:key="page_zoom_include_os_adjustment"
|
android:key="text_scale"
|
||||||
android:summary="@string/page_zoom_include_os_adjustment_summary"
|
android:title="@string/font_size"
|
||||||
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
|
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
|
--- 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
|
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
|
||||||
@@ -1380,6 +1380,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa
|
@@ -1039,6 +1039,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa
|
||||||
structure.setChildCount(0);
|
structure.setChildCount(0);
|
||||||
return;
|
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
|
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 +
|
chrome/browser/enterprise/util/BUILD.gn | 1 +
|
||||||
.../enterprise/util/EnterpriseInfoImpl.java | 5 +++
|
.../enterprise/util/EnterpriseInfoImpl.java | 5 +++
|
||||||
chrome/browser/flags/BUILD.gn | 1 +
|
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 +++++++
|
.../DisableAndroidAppRestriction.inc | 13 +++++++
|
||||||
.../disable-android-app-restriction.inc | 3 ++
|
.../disable-android-app-restriction.inc | 3 ++
|
||||||
.../disable-android-app-restriction.inc | 1 +
|
.../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 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/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_cc/disable-android-app-restriction.inc
|
||||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/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
|
diff --git a/chrome/browser/enterprise/util/BUILD.gn b/chrome/browser/enterprise/util/BUILD.gn
|
||||||
--- a/chrome/browser/enterprise/util/BUILD.gn
|
--- a/chrome/browser/enterprise/util/BUILD.gn
|
||||||
+++ b/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",
|
"//build/android:build_java",
|
||||||
"//chrome/browser/flags:java",
|
"//chrome/browser/flags:java",
|
||||||
"//chrome/browser/profiles/android:java",
|
"//chrome/browser/profiles/android:java",
|
||||||
+ "//components/policy/android:policy_java",
|
+ "//components/policy/android:policy_java",
|
||||||
"//content/public/android:content_java",
|
|
||||||
"//third_party/androidx:androidx_annotation_annotation_java",
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
||||||
"//third_party/jni_zero:jni_zero_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
|
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
|
--- 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
|
+++ 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;
|
@@ -23,6 +23,7 @@ import org.chromium.base.metrics.RecordHistogram;
|
||||||
import org.chromium.build.annotations.Nullable;
|
import org.chromium.base.task.AsyncTask;
|
||||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
import org.chromium.base.task.TaskTraits;
|
||||||
import org.chromium.chrome.browser.flags.ChromeSwitches;
|
import org.chromium.chrome.browser.flags.ChromeSwitches;
|
||||||
+import org.chromium.components.policy.AppRestrictionsProvider;
|
+import org.chromium.components.policy.AppRestrictionsProvider;
|
||||||
|
|
||||||
import java.util.ArrayDeque;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.Queue;
|
||||||
@@ -113,6 +114,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo {
|
@@ -76,6 +77,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo {
|
||||||
new AsyncTask<OwnedState>() {
|
new AsyncTask<OwnedState>() {
|
||||||
// TODO: Unit test this function. https://crbug.com/1099262
|
// TODO: Unit test this function. https://crbug.com/1099262
|
||||||
private OwnedState calculateIsRunningOnManagedProfile(Context context) {
|
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,
|
+ return new OwnedState(/*hasDeviceOwnerApp*/false,
|
||||||
+ /*hasProfileOwnerApp*/false);
|
+ /*hasProfileOwnerApp*/false);
|
||||||
+ }
|
+ }
|
||||||
long startTime = SystemClock.elapsedRealtime();
|
|
||||||
boolean hasProfileOwnerApp = false;
|
boolean hasProfileOwnerApp = false;
|
||||||
boolean hasDeviceOwnerApp = false;
|
boolean hasDeviceOwnerApp = false;
|
||||||
|
PackageManager packageManager = context.getPackageManager();
|
||||||
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
|
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
|
||||||
--- a/chrome/browser/flags/BUILD.gn
|
--- a/chrome/browser/flags/BUILD.gn
|
||||||
+++ b/chrome/browser/flags/BUILD.gn
|
+++ b/chrome/browser/flags/BUILD.gn
|
||||||
@@ -28,6 +28,7 @@ android_library("java") {
|
@@ -25,6 +25,7 @@ android_library("java") {
|
||||||
|
"//build:chromeos_buildflags",
|
||||||
"//build/android:build_java",
|
"//build/android:build_java",
|
||||||
"//chrome/browser/preferences:java",
|
"//chrome/browser/preferences:java",
|
||||||
"//content/public/android:content_main_dex_java",
|
|
||||||
+ "//components/policy/android:policy_java",
|
+ "//components/policy/android:policy_java",
|
||||||
"//third_party/android_deps:guava_android_java",
|
"//third_party/android_deps:guava_android_java",
|
||||||
"//third_party/androidx:androidx_annotation_annotation_java",
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
||||||
@@ -101,7 +86,7 @@ new file mode 100644
|
|||||||
+
|
+
|
||||||
+package org.chromium.chrome.browser.flags.cromite;
|
+package org.chromium.chrome.browser.flags.cromite;
|
||||||
+
|
+
|
||||||
+import org.chromium.components.cached_flags.CachedFlag;
|
+import org.chromium.base.cached_flags.CachedFlag;
|
||||||
+import org.chromium.chrome.browser.flags.ChromeFeatureMap;
|
+import org.chromium.chrome.browser.flags.ChromeFeatureMap;
|
||||||
+import org.chromium.components.policy.AppRestrictionsProvider;
|
+import org.chromium.components.policy.AppRestrictionsProvider;
|
||||||
+
|
+
|
||||||
@@ -124,8 +109,8 @@ new file mode 100644
|
|||||||
diff --git a/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java b/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
|
diff --git a/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java b/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
|
||||||
--- a/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
|
--- a/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
|
||||||
+++ b/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
|
+++ b/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
|
||||||
@@ -19,6 +19,15 @@ import org.chromium.build.annotations.NullMarked;
|
@@ -17,6 +17,15 @@ import org.chromium.base.Log;
|
||||||
@NullMarked
|
*/
|
||||||
public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
|
public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
|
||||||
private static final String TAG = "AppResProvider";
|
private static final String TAG = "AppResProvider";
|
||||||
+ private static boolean mEnabled = false;
|
+ private static boolean mEnabled = false;
|
||||||
@@ -140,7 +125,7 @@ diff --git a/components/policy/android/java/src/org/chromium/components/policy/A
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the app restriction information from provided user manager, and record some timing
|
* Get the app restriction information from provided user manager, and record some timing
|
||||||
@@ -30,6 +39,9 @@ public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
|
@@ -28,6 +37,9 @@ public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
|
||||||
*/
|
*/
|
||||||
public static Bundle getApplicationRestrictionsFromUserManager(
|
public static Bundle getApplicationRestrictionsFromUserManager(
|
||||||
UserManager userManager, String packageName) {
|
UserManager userManager, String packageName) {
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -104,7 +104,8 @@ found in the LICENSE file.
|
|
||||||
android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings"
|
|
||||||
android:key="tabs"
|
|
||||||
android:order="19"
|
|
||||||
- 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
|
|
||||||
--
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Mon, 18 May 2026 15:44:56 +0000
|
|
||||||
Subject: Disable AppRating
|
|
||||||
|
|
||||||
Chromium Android includes an AppRating promo path that can trigger user-facing
|
|
||||||
review prompts through the Android app-rating integration. The implementation
|
|
||||||
depends on Google Play Review APIs provided by Google Play Services. Those
|
|
||||||
dependencies are already excluded by default in this fork through a separate
|
|
||||||
patch, making the AppRating feature non-functional and unnecessary.
|
|
||||||
|
|
||||||
Change:
|
|
||||||
Remove AppRatingPromoController from the optional promo selection flow and
|
|
||||||
exclude the app_rating Java and junit targets from the Android build graph.
|
|
||||||
|
|
||||||
Privacy/Security Impact:
|
|
||||||
Removes an unused user-engagement surface and avoids invoking review-related
|
|
||||||
logic tied to Google Play Services. No browser engine, network, Blink, V8,
|
|
||||||
storage, or process-isolation behavior is changed.
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
AppRating depends on Google Play Review APIs from Google Play Services.
|
|
||||||
Since Google Play Services support is already excluded by default through a
|
|
||||||
separate patch, this change removes the now-unused integration and prevents
|
|
||||||
accidental reintroduction of the feature.
|
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
|
||||||
chrome/android/BUILD.gn | 4 ++--
|
|
||||||
.../chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java | 6 ------
|
|
||||||
chrome/browser/ui/android/app_rating/BUILD.gn | 2 ++
|
|
||||||
3 files changed, 4 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
|
||||||
--- a/chrome/android/BUILD.gn
|
|
||||||
+++ b/chrome/android/BUILD.gn
|
|
||||||
@@ -506,7 +506,7 @@ if (_is_default_toolchain) {
|
|
||||||
"//chrome/browser/touch_to_fill/common/android:java",
|
|
||||||
"//chrome/browser/translate/android:java",
|
|
||||||
"//chrome/browser/ui/android/actions:java",
|
|
||||||
- "//chrome/browser/ui/android/app_rating:java",
|
|
||||||
+ #"//chrome/browser/ui/android/app_rating:java",
|
|
||||||
"//chrome/browser/ui/android/appmenu:factory_java",
|
|
||||||
"//chrome/browser/ui/android/appmenu:java",
|
|
||||||
"//chrome/browser/ui/android/bottombar:java",
|
|
||||||
@@ -1189,7 +1189,7 @@ if (_is_default_toolchain) {
|
|
||||||
"//chrome/browser/touch_to_fill/password_manager/password_generation/android/internal:junit",
|
|
||||||
"//chrome/browser/translate/android:junit",
|
|
||||||
"//chrome/browser/ui/android/actions:junit",
|
|
||||||
- "//chrome/browser/ui/android/app_rating:junit",
|
|
||||||
+ #"//chrome/browser/ui/android/app_rating:junit",
|
|
||||||
"//chrome/browser/ui/android/appmenu/internal:junit",
|
|
||||||
"//chrome/browser/ui/android/autofill/internal:junit",
|
|
||||||
"//chrome/browser/ui/android/bottombar:junit",
|
|
||||||
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
|
|
||||||
@@ -201,7 +201,6 @@ import org.chromium.chrome.browser.toolbar.ToolbarFeatures;
|
|
||||||
import org.chromium.chrome.browser.toolbar.ToolbarIntentMetadata;
|
|
||||||
import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior;
|
|
||||||
import org.chromium.chrome.browser.ui.RootUiCoordinator;
|
|
||||||
-import org.chromium.chrome.browser.ui.app_rating.AppRatingPromoController;
|
|
||||||
import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker;
|
|
||||||
import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate;
|
|
||||||
import org.chromium.chrome.browser.ui.bottombar.BottomBarHostManager;
|
|
||||||
@@ -2237,11 +2236,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (AppRatingPromoController.maybeShowPromo(profile, mActivity)) {
|
|
||||||
- UserEducationUtils.recordOptionalPromoType(OptionalPromoType.APP_RATING_PROMPT);
|
|
||||||
- return true;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
UserEducationUtils.recordOptionalPromoType(OptionalPromoType.NONE_SHOWN);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
diff --git a/chrome/browser/ui/android/app_rating/BUILD.gn b/chrome/browser/ui/android/app_rating/BUILD.gn
|
|
||||||
--- a/chrome/browser/ui/android/app_rating/BUILD.gn
|
|
||||||
+++ b/chrome/browser/ui/android/app_rating/BUILD.gn
|
|
||||||
@@ -5,6 +5,8 @@
|
|
||||||
import("//build/config/android/config.gni")
|
|
||||||
import("//build/config/android/rules.gni")
|
|
||||||
|
|
||||||
+assert(false)
|
|
||||||
+
|
|
||||||
if (enable_chrome_android_internal) {
|
|
||||||
android_aar_prebuilt("play_review_aar_internal_java") {
|
|
||||||
aar_path = "//third_party/android_deps/autorolled/cipd/libs/com_google_android_play_review/review.aar"
|
|
||||||
--
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
From: uazo <uazo@users.noreply.github.com>
|
|
||||||
Date: Mon, 29 Jul 2024 06:48:25 +0000
|
|
||||||
Subject: Disable CSS blink-feature support
|
|
||||||
|
|
||||||
the function is not currently exposed to websites but is only allowed for testing.
|
|
||||||
disabled as it is an potentially advanced fingerprinting mechanism.
|
|
||||||
also fixed the possibility of using internal selectors for speculation rules.
|
|
||||||
see https://chromium-review.googlesource.com/c/chromium/src/+/5540782
|
|
||||||
|
|
||||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
||||||
---
|
|
||||||
.../blink/renderer/core/css/parser/css_supports_parser.cc | 2 +-
|
|
||||||
.../renderer/core/speculation_rules/document_rule_predicate.cc | 2 +-
|
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
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
|
|
||||||
@@ -302,7 +302,7 @@ bool CSSSupportsParser::ConsumeBlinkFeatureFn(CSSParserTokenStream& stream) {
|
|
||||||
feature_name.Value().Utf8()) &&
|
|
||||||
guard.Release()) {
|
|
||||||
stream.ConsumeWhitespace();
|
|
||||||
- return true;
|
|
||||||
+ return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
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(
|
|
||||||
HeapVector<CSSSelector> arena;
|
|
||||||
CSSPropertyValueSet* empty_properties =
|
|
||||||
ImmutableCSSPropertyValueSet::Create(base::span<CSSPropertyValue>(),
|
|
||||||
- kUASheetMode);
|
|
||||||
+ kHTMLStandardMode);
|
|
||||||
CSSParserContext* css_parser_context =
|
|
||||||
MakeGarbageCollected<CSSParserContext>(*execution_context);
|
|
||||||
for (auto* raw_selector : raw_selectors) {
|
|
||||||
--
|
|
||||||
@@ -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
|
|
||||||
@@ -1578,7 +1578,7 @@
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "CSSDynamicRangeLimit",
|
|
||||||
- status: "stable",
|
|
||||||
+ status: "experimental",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Include custom properties in CSSComputedStyleDeclaration::item/length.
|
|
||||||
--
|
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
From: uazo <uazo@users.noreply.github.com>
|
||||||
|
Date: Tue, 8 Nov 2022 12:41:22 +0000
|
||||||
|
Subject: Disable Component Updates
|
||||||
|
|
||||||
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||||
|
---
|
||||||
|
chrome/browser/component_updater/registration.cc | 1 +
|
||||||
|
components/component_updater/component_installer.cc | 1 +
|
||||||
|
components/component_updater/component_updater_service.cc | 2 +-
|
||||||
|
3 files changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/component_updater/registration.cc
|
||||||
|
--- a/chrome/browser/component_updater/registration.cc
|
||||||
|
+++ b/chrome/browser/component_updater/registration.cc
|
||||||
|
@@ -99,6 +99,7 @@
|
||||||
|
namespace component_updater {
|
||||||
|
|
||||||
|
void RegisterComponentsForUpdate() {
|
||||||
|
+ if ((true)) return;
|
||||||
|
auto* const cus = g_browser_process->component_updater();
|
||||||
|
|
||||||
|
#if BUILDFLAG(IS_WIN)
|
||||||
|
diff --git a/components/component_updater/component_installer.cc b/components/component_updater/component_installer.cc
|
||||||
|
--- a/components/component_updater/component_installer.cc
|
||||||
|
+++ b/components/component_updater/component_installer.cc
|
||||||
|
@@ -99,6 +99,7 @@ void ComponentInstaller::Register(
|
||||||
|
base::OnceClosure callback,
|
||||||
|
const base::Version& registered_version,
|
||||||
|
const base::Version& max_previous_product_version) {
|
||||||
|
+ if ((true)) return;
|
||||||
|
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||||
|
|
||||||
|
if (!installer_policy_) {
|
||||||
|
diff --git a/components/component_updater/component_updater_service.cc b/components/component_updater/component_updater_service.cc
|
||||||
|
--- a/components/component_updater/component_updater_service.cc
|
||||||
|
+++ b/components/component_updater/component_updater_service.cc
|
||||||
|
@@ -539,7 +539,7 @@ std::unique_ptr<ComponentUpdateService> ComponentUpdateServiceFactory(
|
||||||
|
// Register prefs required by the component update service.
|
||||||
|
void RegisterComponentUpdateServicePrefs(PrefRegistrySimple* registry) {
|
||||||
|
// The component updates are enabled by default, if the preference is not set.
|
||||||
|
- registry->RegisterBooleanPref(prefs::kComponentUpdatesEnabled, true);
|
||||||
|
+ registry->RegisterBooleanPref(prefs::kComponentUpdatesEnabled, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace component_updater
|
||||||
|
--
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user