Compare commits

...
Author SHA1 Message Date
uazo ac973e33e3 AUTOMATED - git apply results 2024-04-03 16:00:15 +00:00
uazo b8df90d728 AUTOMATED - git apply results 2024-04-03 15:57:51 +00:00
Carmelo Messina 0068783e64 Bump to 123.0.6312.105 2024-04-03 17:49:28 +02:00
Carmelo Messina d93475c418 Remove old version 2024-04-03 17:47:17 +02:00
uazo e6be41912c Merge pull request #948 from uazo/create-pull-request/patch-ffc5de1
New files under control 123.0.6312.105
2024-04-03 09:35:27 -06:00
uazo 231c7911e7 Merge pull request #935 from uazo/Embed-Noto-Color-Emoji-font
Embed Noto Color Emoji font
2024-04-03 09:33:59 -06:00
Carmelo Messina 798b247bd7 final version 2024-04-03 17:01:30 +02:00
uazo 96057162da AUTOMATED - new files under control 123.0.6312.105 2024-04-03 02:30:38 +00:00
Carmelo Messina 81414bf266 #544 Embed Noto Color Emoji font 2024-03-27 17:17:43 +01:00
uazo ffc5de1ec7 Merge pull request #932 from uazo/create-pull-request/patch-68cd9af
Generate patches doc for  branch
2024-03-27 16:58:36 +01:00
uazo 6cd2f7afee Merge pull request #929 from uazo/create-pull-request/patch-6989c57
New files under control 123.0.6312.86
2024-03-27 16:58:26 +01:00
uazo 372e4b43d0 Merge pull request #931 from uazo/create-pull-request/patch-9eb6780
Git apply result for master branch
2024-03-27 16:58:15 +01:00
uazo 6c99513344 AUTOMATED - update patch docs 2024-03-27 15:56:34 +00:00
uazo 68cd9afc6c AUTOMATED - git apply results 2024-03-27 15:56:10 +00:00
Carmelo Messina 9eb67807ec Bump to 123.0.6312.86 2024-03-27 16:49:35 +01:00
Carmelo Messina fdc60b34ba #465 Remove keepalive support 2024-03-27 16:49:03 +01:00
Carmelo Messina f0c8b7b98c solves the case where FRE is not visible 2024-03-27 16:47:24 +01:00
Carmelo Messina e16f7a5a77 #542 Fix web search item visibility 2024-03-27 16:46:17 +01:00
Carmelo Messina d3765627a1 #207 Allow worklet in blink and disallow fetch later manager and speculation rules 2024-03-27 16:43:45 +01:00
uazo 89c6812817 Request for confirmation added 2024-03-27 07:51:32 +01:00
uazo 73f0df3c90 AUTOMATED - new files under control 123.0.6312.86 2024-03-27 02:31:44 +00:00
uazo 6989c57e63 Merge pull request #923 from uazo/create-pull-request/patch-351c24b
New files under control 123.0.6312.59
2024-03-26 21:14:23 +09:00
uazo 7ff2d1ed14 AUTOMATED - new files under control 123.0.6312.59 2024-03-26 02:35:13 +00:00
Carmelo Messina 351c24b3dc Add help me section 2024-03-23 09:53:45 +01:00
uazo f5d7de125b Merge pull request #910 from uazo/create-pull-request/patch-16818b1
Generate patches docs
2024-03-20 18:36:06 +02:00
uazo f708a519b1 AUTOMATED - update patch docs 2024-03-20 16:34:12 +00:00
Carmelo Messina 16818b1d05 Bump to 123.0.6312.58 2024-03-20 17:32:39 +01:00
Carmelo Messina 69c048fcbc #876 Disable Paint Preview by default 2024-03-20 17:32:15 +01:00
Carmelo Messina aa3c3ad076 #898 fix crash on guest mode 2024-03-20 17:30:22 +01:00
Carmelo Messina 7bb7d7a856 Disable blink feature flag 2024-03-20 17:29:32 +01:00
Carmelo Messina 3276e0f1ec #906 inhibits the saving of certain third-party cookies 2024-03-20 08:44:23 +01:00
Carmelo Messina b49ba700a7 Remove Compose from build 2024-03-20 08:41:55 +01:00
Carmelo Messina a4aad222af Update for v123 2024-03-20 08:41:07 +01:00
Carmelo Messina 4d82c0beec change bromite.idx to cromite.idx 2024-03-20 07:48:13 +01:00
uazo 563e6f9a2d Merge pull request #907 from uazo/create-pull-request/patch-7c751ae
New files under control 123.0.6312.58
2024-03-19 23:44:17 -07:00
uazo f8cc243015 Merge pull request #894 from uazo/next-v123
Rebase to v123
2024-03-19 23:43:46 -07:00
uazo 41e6364c29 AUTOMATED - new files under control 123.0.6312.58 2024-03-20 02:29:08 +00:00
uazo 7c751aedb2 Update file_list.txt
see #903
2024-03-19 01:25:05 +11:00
uazo 5951e48f47 Merge pull request #901 from uazo/create-pull-request/patch-a8503d9
Generate patches doc for next 123 branch
2024-03-17 19:43:30 +01:00
uazo 8923ff2278 AUTOMATED - update patch docs 2024-03-17 18:42:43 +00:00
Carmelo Messina a8503d9689 v123 final 2024-03-17 19:41:20 +01:00
uazo f0c183a124 Add log 2024-03-16 02:56:35 +11:00
Carmelo Messina 2d54179bf9 Bump to 123.0.6312.46 2024-03-15 16:28:00 +01:00
Carmelo Messina b937cb60ec v123 patches 2024-03-15 16:24:42 +01:00
uazo 948232d7fc Update file_list.txt
add chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
2024-03-15 01:31:42 -11:00
uazo 9ceadc8787 #887 added note concerning the location of the data folder 2024-03-14 20:49:22 -11:00
uazo 98b696850a Merge pull request #888 from uazo/create-pull-request/patch-cd81f3a
New files under control 123.0.6312.46
2024-03-14 17:00:43 +09:00
uazo 6c0676eeb8 AUTOMATED - new files under control 123.0.6312.46 2024-03-14 02:28:35 +00:00
uazo cd81f3a4c7 Merge pull request #883 from uazo/create-pull-request/patch-477e0b5
Git apply result for master branch
2024-03-13 05:56:45 -03:00
uazo 443396cd8f AUTOMATED - git apply results 2024-03-13 08:53:40 +00:00
Carmelo Messina 477e0b596a Bump to 122.0.6261.128 2024-03-13 09:45:25 +01:00
uazo 685ae28e96 Merge pull request #880 from uazo/create-pull-request/patch-bbea4e6
New files under control 122.0.6261.128
2024-03-13 05:04:39 -03:00
uazo 97e13fb5c0 AUTOMATED - new files under control 122.0.6261.128 2024-03-13 02:38:57 +00:00
uazo bbea4e614b Update PRIVACY_POLICY.md 2024-03-12 15:15:42 +00:00
uazo 66b68c0008 Update PRIVACY_POLICY.md 2024-03-12 14:57:29 +00:00
uazo 67d7c47488 Update README.md 2024-03-12 14:43:44 +00:00
uazo 91f6cb6fbd Create PRIVACY_POLICY.md 2024-03-12 14:43:07 +00:00
uazo a598f0d3ff Update README.md 2024-03-11 08:04:44 -09:00
uazo 37371ede06 Update update-patches-doc.yaml 2024-03-11 08:03:31 -09:00
uazo d24b215d27 Merge pull request #877 from uazo/create-pull-request/patch-fe0c1cb
Generate patches doc
2024-03-11 08:02:58 -09:00
uazo 7d160b893f AUTOMATED - update patch docs 2024-03-11 17:02:13 +00:00
Carmelo Messina fe0c1cba97 Update patches doc 2024-03-11 17:58:53 +01:00
Carmelo Messina ab02385ba8 Update patches doc 2024-03-11 17:33:10 +01:00
Carmelo Messina 8e19cfd2e0 drop changelog and faq 2024-03-11 13:30:12 +01:00
Carmelo Messina 322478cc9c Update license section 2024-03-11 13:20:13 +01:00
Carmelo Messina a252cb7bc9 Move features.md under docs 2024-03-11 13:15:20 +01:00
Carmelo Messina 8df670e568 Add how to build 2024-03-11 13:12:01 +01:00
Carmelo Messina 6511f3ec2e fix release 2024-03-11 08:59:20 +01:00
Carmelo Messina e071e7efbc Add description 2024-03-11 08:59:02 +01:00
Carmelo Messina 9405d5e482 add editorconfig 2024-03-11 08:52:15 +01:00
Carmelo Messina a1d941a0b6 #474 Put some files under source control 2024-03-11 08:51:30 +01:00
Carmelo Messina 534ab1be85 Bump to 122.0.6261.112 2024-03-10 11:52:14 +01:00
uazo b228ed72c2 Merge pull request #856 from uazo/platform_aac_hevc
Enable platform aac hevc in windows and android
2024-03-10 01:45:24 -09:00
Carmelo Messina 8c6ecb46a7 #474 Put some files under source control 2024-03-10 11:40:18 +01:00
uazo 6348da2dc7 Merge pull request #869 from uazo/create-pull-request/patch-d62bb78
New files under control
2024-03-10 01:29:16 -09:00
uazo dbacbb5d25 AUTOMATED - new files under control 2024-03-10 10:27:59 +00:00
Carmelo Messina d62bb78c21 #474 Put some files under source control 2024-03-10 11:26:00 +01:00
Carmelo Messina 1cc6c158f9 #474 Put some files under source control 2024-03-10 11:22:13 +01:00
Carmelo Messina f0682a0a9d #474 Put some files under source control 2024-03-10 11:20:47 +01:00
Carmelo Messina bc584f8fcb #474 Put some files under source control 2024-03-10 11:02:58 +01:00
Carmelo Messina 1cce2f1434 #474 Put some files under source control 2024-03-09 15:32:52 +01:00
Carmelo Messina 30bcef4e01 #474 Put some files under source contro 2024-03-09 15:18:20 +01:00
Carmelo Messina 9acda3aed3 #474 Put some files under source control 2024-03-09 15:07:45 +01:00
Carmelo Messina e84f1330b4 #474 changed script 2024-03-09 12:06:09 +01:00
Carmelo Messina 6144adc652 Merge branch 'platform_aac_hevc' of https://github.com/uazo/bromite into platform_aac_hevc 2024-03-07 08:57:15 +01:00
Carmelo Messina 2fcd346d93 Enable platform aac audio and h264 video 2024-03-07 08:56:24 +01:00
Carmelo Messina aeb7dce1db Rename kAndroidVisibleUrlTruncation
see https://issues.chromium.org/issues/41492008
2024-03-07 08:50:48 +01:00
Carmelo Messina 5bc8c21500 Enable platform aac audio and h264 video 2024-03-06 21:10:45 +01:00
Carmelo Messina fac696b3a4 Patches for 122.0.6261.111 2024-03-06 20:39:28 +01:00
Carmelo Messina 8fc87b2af8 Bump to 122.0.6261.111 2024-03-06 14:16:21 +01:00
Carmelo Messina a99aff1188 #839 fix crash when switching to Chromite from another app 2024-03-06 14:15:49 +01:00
uazo f978f09587 Merge pull request #841 from uazo/create-pull-request/patch-0520926
Git apply result for master branch
2024-03-01 17:51:02 +01:00
uazo 4abd03221f AUTOMATED - git apply results 2024-03-01 16:50:34 +00:00
Carmelo Messina 0520926856 bump to 122.0.6261.95 2024-03-01 17:42:17 +01:00
Carmelo Messina 7c79ae4952 #839 fix crash in startup 2024-03-01 17:36:18 +01:00
Carmelo Messina 8998e3de4c #240 Fix text blurring with opacity close to 1.0 2024-03-01 17:34:44 +01:00
uazo 19099fbee4 Update FEATURES.md 2024-03-01 16:12:48 +01:00
uazo 6b446dcd3d Added instructions on how to enable AppContainer for the rendering process in Windows 2024-02-29 14:19:20 +00:00
uazo a35804c2ca Merge pull request #830 from uazo/create-pull-request/patch-15c609d
Git apply result for master branch
2024-02-29 13:17:23 +00:00
uazo 7b790f2856 AUTOMATED - git apply results 2024-02-29 13:10:03 +00:00
Carmelo Messina 15c609d676 Bump to 122.0.6261.94 2024-02-29 14:04:35 +01:00
Carmelo Messina 136f8e6b75 Restore windows network sandbox
partial pick of https://chromium-review.googlesource.com/c/chromium/src/+/5270572
2024-02-29 14:03:52 +01:00
Carmelo Messina b80b51ccd3 use uazo/github-runner:2.314.1 2024-02-29 08:49:55 +01:00
Carmelo Messina 4da02214e2 Drop Temp-fix-Content-settings-infrastructure.patch 2024-02-28 15:48:24 +01:00
uazo 4ca804577e Merge pull request #826 from uazo/create-pull-request/patch-a269481
Git apply result for master branch
2024-02-27 15:15:19 -02:00
uazo 66210f9ff6 AUTOMATED - git apply results 2024-02-27 17:14:56 +00:00
Carmelo Messina a269481b57 bump to 122.0.6261.70 2024-02-27 18:09:16 +01:00
Carmelo Messina b3258066f2 Update patch list 2024-02-27 18:08:51 +01:00
Carmelo Messina a42b1e7fc6 Show NTP at startup 2024-02-27 18:08:38 +01:00
Carmelo Messina dd4a5ee253 Disable Compose and Offline autofetch by default 2024-02-27 18:06:31 +01:00
Carmelo Messina d8e9716de3 #379 Enable percent based scrolling on Windows 2024-02-27 18:05:59 +01:00
Carmelo Messina 55b2ed5d13 #789 fix non-responsive buttons 2024-02-27 18:03:31 +01:00
Carmelo Messina 6ee953a844 Enable kCookieSameSiteConsidersRedirectChain, kSchemefulSameSite, kSameSiteDefaultChecksMethodRigorously, kTimeLimitedInsecureCookies by default 2024-02-27 18:02:31 +01:00
Carmelo Messina 69ef85908e restore old ui in NTP 2024-02-27 18:01:50 +01:00
Carmelo Messina 8c58bf81a3 Disable feature change 2024-02-27 18:01:16 +01:00
Carmelo Messina ad20a84ec4 Keep disabled kAttributionReportingCrossAppWebOverride
Enables exposure of the Cross App Web Attribution Reporting in the renderer
without an origin trial token.
2024-02-27 17:59:33 +01:00
Carmelo Messina dc9e3cfb2c Disable CWS Info Service by default
Allow periodic retrieval of extensions metadata from the Chrome Web Store
2024-02-27 17:57:53 +01:00
Carmelo Messina 89afe5e5ad fix crash when changing flag state in ui 2024-02-27 17:56:23 +01:00
Carmelo Messina 95a360e396 removed automatic durable storage for important sites 2024-02-27 17:55:41 +01:00
Carmelo Messina 5a93f72bda add support for HomepageSettings 2024-02-27 17:53:54 +01:00
Carmelo Messina f9a6b8febc #805 changed string to "This setting is enforced by Cromite" 2024-02-27 17:53:24 +01:00
uazo 26d88dcdf5 Merge pull request #806 from uazo/next-122
Patches for 122
2024-02-21 05:43:46 -11:00
uazo a3a3710fb9 Merge pull request #815 from uazo/create-pull-request/patch-37d1c12
Git apply result for next-122 branch
2024-02-21 05:43:23 -11:00
uazo 176624189c AUTOMATED - git apply results 2024-02-21 16:42:29 +00:00
Carmelo Messina 37d1c12747 bump to 122.0.6261.64 2024-02-21 17:36:33 +01:00
uazo 2a4e8bc8d0 Use clangd_17.0.3 2024-02-21 02:47:43 -11:00
uazo ac235cb95c Use clangd_indexing_tools-linux-17.0.3 2024-02-21 02:47:16 -11:00
Carmelo Messina a93df08853 update patch list
drop Enable-ECH-by-default.patch
drop Disable-SHA1-Server-Signature.patch
add Temp-disable-network-service-windows.patch
add Temp-fix-Content-settings-infrastructure.patch
2024-02-21 11:15:14 +01:00
Carmelo Messina a608bc0a78 v122 final patches 2024-02-21 11:13:53 +01:00
uazo 4959bf64ec Update whitelist 2024-02-18 16:57:37 +03:00
Carmelo Messina 2b1f1faa7c v122 wip 2024-02-18 14:35:58 +01:00
Carmelo Messina c3f33c02a7 v122 patches 2024-02-18 14:35:18 +01:00
uazo 0543a8a30b Merge pull request #787 from uazo/create-pull-request/patch-706aa53
Git apply result for master branch
2024-02-08 07:36:02 +00:00
uazo 30e471d6d5 AUTOMATED - git apply results 2024-02-08 07:34:45 +00:00
Carmelo Messina 706aa53fff Bump to 121.0.6167.164 2024-02-08 08:29:52 +01:00
uazo 0b445ac869 Merge pull request #786 from uazo/create-pull-request/patch-74cf1d1
Git apply result for master branch
2024-02-08 07:28:21 +00:00
uazo b65b503086 AUTOMATED - git apply results 2024-02-08 07:25:08 +00:00
Carmelo Messina 74cf1d1c0e temporary fix of a crash in windows 2024-02-08 08:22:12 +01:00
Carmelo Messina 3d9aa9e924 In site settings added ability to block all popups per site 2024-02-04 17:28:09 +01:00
Carmelo Messina 151a5479cd Show javascript site setting in page info also in desktop 2024-02-04 17:23:54 +01:00
Carmelo Messina c39e3f2300 Add support for ask ui 2024-02-04 17:22:57 +01:00
Carmelo Messina e0bd1dcad3 #404 completed support for three state site settings
and improve ui
2024-02-04 17:22:09 +01:00
Carmelo Messina f617340fcf #710 rollback drop support for proprietary_codecs 2024-02-02 19:42:06 +01:00
2486 changed files with 324359 additions and 117563 deletions
+5
View File
@@ -0,0 +1,5 @@
[*.{yaml,sh,gn_args}]
tab_width = 2
indent_size = 2
end_of_line = crlf
indent_style = space
+15
View File
@@ -46,6 +46,21 @@ body:
validations:
required: true
- type: dropdown
id: is_chromium2
attributes:
label: Are you sure?
description: |
Please check your answer above again, it is important information
If the bug is related to functionality that does not exist in Chromium then answer "No".
multiple: false
options:
- "Yes"
- "No"
validations:
required: true
- type: input
id: cromite_version
attributes:
+55 -5
View File
@@ -37,13 +37,13 @@ jobs:
- name: Reclaiming disk space on / by removing dotnet/android/ghc
#if: ${{ github.event.inputs.type == '' }}
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
sudo rm -rf /opt/hostedtoolcache/CodeQL
test -d /usr/share/dotnet && sudo rm -rf /usr/share/dotnet
test -d /usr/local/lib/android && sudo rm -rf /usr/local/lib/android
test -d /opt/ghc && sudo rm -rf /opt/ghc
test -d /opt/hostedtoolcache/CodeQL && sudo rm -rf /opt/hostedtoolcache/CodeQL
sudo apt-get remove google-cloud-cli azure-cli google-chrome-stable \
firefox mysql-server-core-8.0 mono-devel podman \
powershell
powershell || true
sudo apt-get autoremove
- name: Enable proxy on container
@@ -119,6 +119,56 @@ jobs:
fi
fi
- name: Update files under control
shell: bash
run: |
cd cromite
RELEASE=$(cat build/RELEASE | xargs)
cd tools/under-control
DO_UPDATE=0
if [ -n "$NEW_VERSION" ]; then
if [ "$RELEASE" != "$NEW_VERSION" ]; then
DO_UPDATE=1
fi
elif [ "$RELEASE" != "$(cat src/RELEASE | xargs)" ]; then
DO_UPDATE=1
NEW_VERSION=$RELEASE
fi
if [[ DO_UPDATE -eq 1 ]]; then
echo "Found new version $NEW_VERSION"
echo "Under control: $(cat src/RELEASE | xargs)"
echo "Current: $RELEASE"
test -d src && rm -rf src
docker build --progress=plain --build-arg "TAG=$NEW_VERSION" -o . .
echo $NEW_VERSION >src/RELEASE
fi
CHANGES=0 && git diff --quiet || CHANGES=1
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
if [[ CHANGES -eq 1 ]]; then
git add src
git diff --name-only --staged
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
if: env.CHANGES == '1'
with:
token: ${{ secrets.CROMITE_PULLS }}
path: cromite
add-paths: |
tools/under-control/*
commit-message: 'AUTOMATED - new files under control ${{ env.NEW_VERSION }}'
title: New files under control ${{ env.NEW_VERSION }}
body: ${{ env.MESSAGE }}
delete-branch: true
branch-suffix: short-commit-hash
- name: Create issue ${{ env.VERSION }}
if: "${{ env.NEW_VERSION != '' }}"
shell: bash
+82
View File
@@ -0,0 +1,82 @@
name: Update patches doc
permissions:
# actions: none
# checks: none
# contents: write
# deployments: none
# issues: none
# packages: none
pull-requests: write
# repository-projects: none
# security-events: none
# statuses: none
on:
push:
branches-ignore:
- 'ci'
paths:
- 'build/**'
workflow_dispatch:
inputs:
rtag:
description: 'uazo/cromite TAG or COMMIT'
required: true
default: ''
env:
RTAG: ${{ github.event.inputs.rtag }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: "Get value from dispatch"
run: |
if [ -z "${RTAG}" ]; then
echo "RTAG=$GITHUB_SHA" >> $GITHUB_ENV
echo "RTAG=$RTAG"
fi
- name: Checkout 'uazo/cromite' ${{ env.BRANCH }}
uses: actions/checkout@v2
with:
repository: 'uazo/cromite'
ref: ${{ github.event.inputs.rtag }}
path: 'cromite'
fetch-depth: 1
- name: Generate patches doc
run: |
export HOME=$GITHUB_WORKSPACE
bash ~/cromite/tools/extract-all-patch-data.sh ~/cromite/build/patches
- name: Check differences CHANGES=${{ env.CHANGES }}
run: |
export HOME=$GITHUB_WORKSPACE
cd ~/cromite
CHANGES=0 && git diff --quiet || CHANGES=1
echo "CHANGES=$CHANGES" >> $GITHUB_ENV
if [[ CHANGES -eq 1 ]]; then
git add docs/*.md
fi
- name: Create Pull Request
uses: peter-evans/create-pull-request@dcd5fd746d53dd8de555c0f10bca6c35628be47a #v3.12.0
if: env.CHANGES == '1'
with:
token: ${{ secrets.CROMITE_PULLS }}
path: cromite
base: ${{ env.BRANCH }}
add-paths: |
build/patches/*.patch
commit-message: 'AUTOMATED - update patch docs'
title: Generate patches doc for ${{ env.BRANCH }} branch
body: ${{ env.MESSAGE }}
delete-branch: true
branch-suffix: short-commit-hash
-1151
View File
File diff suppressed because it is too large Load Diff
-91
View File
@@ -1,91 +0,0 @@
# Frequently Asked Questions
## Does Google Sync/Translate/Data saver work?
No.
This is not a limitation of Bromite but of all Chromium-based projects in general, as general public is not allowed to use Google's APIs for free unless when using Chrome.
Additionally, these features would not be privacy-friendly.
## Does Bromite require root?
No.
## Is Bromite de-googled?
Yes, although this has not been verified (and hardly can be) under all situations; if you were to find connections to cloud-based services please report them via the issue tracker.
Bromite uses [ungoogled-chromium's python script](https://github.com/Eloston/ungoogled-chromium/blob/master/utils/domain_substitution.py) to disable URLs in the codebase since version `78.0.3904.93`.
Projects which follow a strict approach on this are [Iridium](https://iridiumbrowser.de/) and [Inox patchset](https://github.com/gcarq/inox-patchset).
## Does Bromite support DRM media?
Yes, in order to play protected/encrypted media content the browser will use Android's DRM media framework to automatically negotiate access (same as Chromium).
This means for example that requests to Android license servers will be performed (`www.googleapis.com`), see https://w3c.github.io/encrypted-media/#direct-individualization
To disable this functionality you should disable protected content playback from Site settings -> Protected Content.
## What is the SystemWebView?
It is the core component of Android for all web page visualizations. For example when you access a new wifi network and need to activate it, that is using the SystemWebView. If you do not know what it is then you do not need to install it.
See also [the wiki page](https://github.com/bromite/bromite/wiki/Installing-SystemWebView) for community-contributed installation instructions.
Ad-blocking was present and always enabled in the SystemWebView from version `72.0.3626.120` till version `77.0.3865.104`, when it stopped working due to [upstream NetworkService changes](https://docs.google.com/document/d/1TZEuPvr2KAbP4_TZpuuwtEEArQsyAkc2HDu68l66YwU/edit?ts=598244df#heading=h.ougoi5i6508y).
## How to enable DNS-over-HTTPS?
See [this page](https://www.bromite.org/doh).
## Can you add HTTPS everywhere?
No.
We cannot add add-ons to Bromite (merely some features).
## Is Bromite on Play Store?
No, and this is not going to change. Many limitations apply for submissions there, including which ads are allowed to be blocked.
Bromite favors user freedom in software choice: the device is yours so you get to choose which software to run on it, end of the story.
## Is Bromite on F-Droid?
It is not on the official F-Droid repository and there are no (more) plans to submit it.
You can use F-Droid client to install and receive updates via [the official Bromite F-Droid repository](https://www.bromite.org/fdroid).
## Does Bromite support WebRTC?
Partially, see https://github.com/bromite/bromite/wiki/WebRTC
## Using Bromite will favour the monopoly of the Chromium/Blink engine, why do you develop and maintain Bromite?
In short, to show what a Chromium-based engine could do **for the user** if the user experience and needs were the main focus of modern browser design.
For an Android browser using an alternative engine see [Fennec F-Droid](https://f-droid.org/en/packages/org.mozilla.fennec_fdroid/).
## Does Bromite support extensions?
No; Bromite will support extensions only if upstream (Chromium) does, or similarly another project maintains the patch and functionality.
## Why do push notifications not work on this website?
The [Chromium Blink engine](https://www.chromium.org/blink) uses [GCM](https://en.wikipedia.org/wiki/Google_Cloud_Messaging) to deliver messages
when websites use the [Push API](https://w3c.github.io/push-api/); this will not work in Bromite because cloud integrations are disabled (GCM in this case).
[ServiceWorker notifications](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification) do work instead since they use
[android.app.Notification](https://developer.android.com/guide/topics/ui/notifiers/notifications).
## Can PWAs be installed?
PWAs are only supported as home shortcuts; WebAPKs will not work because they are generated server-side on googleapis.com (which is not allowed in Bromite).
## Does Bromite support the Android autofill framework?
Yes, since version 94.0.4606.109 the native Android autofill can be used; this does not require accessibility services as a workaround.
## Does Bromite support casting media content?
No, this would require Play Store binary blobs.
## Can you add this search engine as default?
No.
Bromite does not make any choice related to default search engines, the Chromium default is used.
Various Android browsers get some fee to ship their apps with a specific default search engine, Bromite does not get any fee from anyone.
Changing the default search engine would lead to an endless series of requests to change it based on personal preferences, thus no change is made to the default.
See also: https://github.com/bromite/bromite/wiki/SearchEngines
## Some sites show ads, how can I fix this?
You can compare the blocked URLs with a desktop browser and Bromite (using [remote debugging](https://developer.chrome.com/docs/devtools/remote-debugging/)) and figure out some new filter rules to be added.
If the ads are blocked via cosmetic filtering then blocking them is not possible with Bromite's engine and you might need something like an [user script](https://github.com/bromite/bromite/wiki/UserScripts) instead.
See also: https://github.com/bromite/bromite/wiki/AdBlocking
+19 -45
View File
@@ -12,16 +12,10 @@
</a>
<br>
### **** the documentation is a Work in progress (not the browser :) ****
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, Nougat and above (Minimum v7.0, API level 24), Windows and Linux 64bit.
For the Frequently Asked Questions see [F.A.Q.](./FAQ.md).
For documentation see the [wiki](https://github.com/bromite/bromite/wiki).
# Goals
Cromite's goal is to
@@ -31,14 +25,17 @@ Cromite's goal is to
In addition, Cromite would like to promote greater integration with other non-profit, open source browsers, encouraging closer collaboration with others, and attempt to integrate them directly into Chromium once they have reached an appropriate level of maturity.
# Features
see [Features](https://github.com/uazo/cromite/blob/master/FEATURES.md)
# 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.
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
- [Privacy Policy](https://github.com/uazo/cromite/blob/master/docs/PRIVACY_POLICY.md)
- [Features](https://github.com/uazo/cromite/blob/master/docs/FEATURES.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)
# Releases
All built versions are available as [releases](https://github.com/uazo/cromite/releases).
@@ -66,7 +63,7 @@ ChromiumUpdateUrl=https://github.com/uazo/cromite/releases/latest/download/updat
# Command line for Chromium (string):
# note --user-data-dir= works better if path is absolute
# See here: http://peter.sh/experiments/chromium-command-line-switches/
ChromiumCommandLine=--user-data-dir=".\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)
# ChromiumCommandLine=--enable-logging --v=0 --log-file=C:\temp\log.txt --user-data-dir=".\User Data" --no-default-browser-check
@@ -78,6 +75,7 @@ ChromiumBinary=chrome.exe
# Relative (to chrlauncher directory) or full path (env. variables supported).
ChromiumDirectory=.\bin
```
To prevent deletion by Microsoft Defender each time the browser is updated, check the `user-data-dir` folder by modifying it accordingly.
### Enable network process sandbox in windows
I don't include any setups because I don't like the experience of not knowing what they do, so you must manually run this command on first installation:
@@ -87,42 +85,20 @@ icacls . /grant "*S-1-15-2-2:(OI)(CI)(RX)"
```
see https://github.com/uazo/bromite-buildtools/issues/51
## (TODO) Integrity and authenticity
You can verify the integrity of a downloaded APK file from this project with any `sha256sum`-compatible tool by downloading the corresponding `brm_X.Y.Z.sha256.txt` or `chr_X.Y.Z.sha256.txt` file, where X.Y.Z is the release version number. Example:
### Enable AppContainer for renderer process in windows
you can activate the 'RendererAppContainer' flag from the command line with
```
$ sha256sum --check brm_68.0.3440.54.sha256.txt
arm64_SystemWebView.apk: OK
arm64_ChromePublic.apk: OK
arm64_ChromeModernPublic.apk: OK
--enable-features=RendererAppContainer
```
You can verify authenticity, e.g. that the author ([csagan5](https://github.com/csagan5)) released the file, by using gpg2:
```
$ gpg2 --quiet --verify brm_68.0.3440.54.sha256.txt.asc
gpg: assuming signed data in 'brm_68.0.3440.54.sha256.txt'
gpg: Signature made Sun 08 Jul 2018 04:22:52 PM CEST using RSA key ID D85DC0C5
gpg: Good signature from "csagan5 <32685696+csagan5@users.noreply.github.com>"
```
You can download csagan5's public GnuPG key from here: [csagan5.asc](./csagan5.asc).
# (TODO) How to build
The [Bromite main repository](https://github.com/bromite/bromite) contains tags for each corresponding Chromium release (see https://chromium.googlesource.com/chromium/src.git).
Please refer to [official Chromium build documentation](https://www.chromium.org/developers/how-tos/get-the-code) to get started on how to build Chromium; if you can build Chromium for Android, you can build Bromite.
The Chromium version tag used as base for the patches is available here: [RELEASE](./build/RELEASE); this is always corresponding to the git tag for every release.
The GN args used to build Bromite are available here: [bromite.gn_args](./build/bromite.gn_args).
The patches are to be applied second the order specified in the `bromite_patches_list.txt` file (you can use `git am`).
# (TODO) Contributing
# Contributing
Please submit issues following the issue template; beware that GitHub does not display the templates from mobile.
Patches are welcome and accepted if they match the project goals.
If you want to help me, [here](https://github.com/uazo/cromite/blob/master/docs/HELP_ME_PLEASE.md) is the list of things I would need.
For any usage or development discussion please use GitHub Discussions: https://github.com/uazo/cromite/discussions
# Credits
@@ -136,11 +112,9 @@ For any usage or development discussion please use GitHub Discussions: https://g
* [Inox patchset](https://github.com/gcarq/inox-patchset) for some patches (via ungoogled-chromium)
* [Brave Browser](https://github.com/brave/brave-core) for some patches
# (TODO) License
# License
The patches published as part of the Bromite project are released under [GNU GPL v3](./LICENSE).
[version-image]: https://img.shields.io/github/release/bromite/bromite.svg?style=flat-square
[version-url]: https://github.com/bromite/bromite/releases/latest
[license-image]: https://img.shields.io/github/license/bromite/bromite.svg
[license-url]: https://github.com/bromite/bromite/blob/master/LICENSE
Cromite is published under [GNU GPL v3](./LICENSE).
The patches published as part of the Bromite project are released under GNU GPL v3 only.
Cromite specific patches are under the GNU GPL-2+ licence.
Each individual patch contains specific information on the licence used.
+1 -1
View File
@@ -1 +1 @@
121.0.6167.143
123.0.6312.105
+33 -3
View File
@@ -37,12 +37,42 @@ enable_feed_v2=false
enable_cardboard=false
is_high_end_android=true
# Do not compile with proprietary codecs
proprietary_codecs=false
ffmpeg_branding="Chromium"
# media section
proprietary_codecs=true
ffmpeg_branding="Chrome"
enable_av1_decoder=true
enable_dav1d_decoder=true
# disable cisco OpenH264
media_use_openh264 = false
# decoder flags
if (target_os == "android" || target_os == "win") {
# codec supported by default
# android: https://developer.android.com/media/platform/supported-formats
# windows: https://learn.microsoft.com/en-us/windows/win32/medfound/codecobjects
# enable aac and h264 hw decoder only
enable_platform_aac_audio = true
enable_platform_h264_video = true
# enable hw decoder for h265 (hevc)
enable_platform_hevc = true
# disable dolby vision
enable_platform_dolby_vision = false
enable_platform_encrypted_dolby_vision = false
if (target_os == "win") {
# enable ac3/eac codec
enable_platform_ac3_eac3_audio = true
}
}
# disable passthrough audio codecs
enable_platform_dts_audio = false
enable_passthrough_audio_codecs = false
# Do not compile libmonochrome.so with RELR relocations
# since supported only on API 28+
use_relr_relocations=false
+9 -5
View File
@@ -174,7 +174,6 @@ Partition-blobs-by-top-frame-URL.patch
Override-Navigator-Language.patch
Disable-add-to-home-screen-prompt.patch
Remove-HTTP-referrals-in-cross-origin-navigation.patch
Enable-ECH-by-default.patch
Disable-StartSurface-feature.patch
Enable-PermuteTLSExtensions-by-default.patch
Enable-third-party-storage-partitioning.patch
@@ -216,11 +215,9 @@ Remove-ChromiumNetworkAdapter.patch
Internal-firewall.patch
Disable-devtools-remote-and-custom-protocols.patch
Remove-detection-of-captive-portals.patch
Disable-SHA1-Server-Signature.patch
Remove-auth-header-upon-cross-origin-redirect.patch
Clear-CORS-Preflight-Cache-on-clearing-data.patch
Multi-Screen-Window-Placement-API-fix.patch
Remove-https-connection-from-chrome-discards.patch
Add-a-flag-to-disable-GamePad-API.patch
Disable-WebGPU.patch
Disable-FirstPartySets-and-StorageAccessAPI.patch
@@ -240,6 +237,7 @@ Add-webRTC-site-settings.patch
Show-site-settings-for-cookies-javascript-and-ads.patch
Viewport-Protection-flag.patch
Timezone-customization.patch
Change-popup-site-setting.patch
Disable-speechSynthesis-getVoices-API.patch
Remove-support-for-device-memory-and-cpu-recovery.patch
Log-dangling-attributes-in-some-html-elements.patch
@@ -280,6 +278,14 @@ Customize-selection-popup.patch
Enables-deactivation-of-the-js-debugger-statement.patch
Enable-gwp-asan-on-Android.patch
Disable-Read-Aloud-by-default.patch
Disable-Compose-feature.patch
Disable-offline-autofetch-flag.patch
Enable-percent-based-scrolling-on-Windows.patch
Show-NTP-at-startup.patch
Enable-platform-aac-audio-and-h264-video.patch
Disable-Paint-Preview-by-default.patch
Emoji-Fonts-fingerprinting-mitigation-02-02.patch
Emoji-Fonts-fingerprinting-mitigation-01-02.patch
Temp-PerformanceNavigationTiming-privacy-fix.patch
Temp-disable-predictive-back-gesture.patch
@@ -293,5 +299,3 @@ eyeo-beta-118.0.5993.48-android_api.patch
eyeo-beta-118.0.5993.48-android_settings.patch
eyeo-beta-118.0.5993.48-extension_api.patch
Eyeo-Adblock-Remove-Privacy-Issues.patch
AdblockPlus-add-blocking-in-service-workers.patch
AdblockPlus-connect-popup-blocker.patch
@@ -20,8 +20,8 @@ See discussions at:
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
base/android/android_image_reader_compat.cc | 8 +++++++-
base/android/android_image_reader_compat.h | 4 ++++
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 +
@@ -30,63 +30,67 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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 | 7 +++++++
gpu/ipc/service/gpu_init.cc | 8 ++++++++
gpu/ipc/service/stream_texture_android.cc | 11 ++++++++++-
12 files changed, 67 insertions(+), 5 deletions(-)
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
@@ -23,6 +23,8 @@
@@ -7,7 +7,23 @@
namespace base {
namespace android {
+bool AndroidImageReader::disable_support_ = false;
+AndroidImageReader& AndroidImageReader::GetInstance() {
+ // C++11 static local variable initialization is
+ // thread-safe.
+ static AndroidImageReader instance;
+ return instance;
+}
+
AndroidImageReader& AndroidImageReader::GetInstance() {
// C++11 static local variable initialization is
// thread-safe.
@@ -30,8 +32,12 @@ AndroidImageReader& AndroidImageReader::GetInstance() {
return instance;
}
+void AndroidImageReader::DisableSupport() {
+ disable_support_ = true;
+}
+
bool AndroidImageReader::IsSupported() {
- return is_supported_;
+ return !disable_support_ && is_supported_;
}
AndroidImageReader::AndroidImageReader() : is_supported_(LoadFunctions()) {}
+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
@@ -24,6 +24,9 @@ class BASE_EXPORT AndroidImageReader {
AndroidImageReader(const AndroidImageReader&) = delete;
AndroidImageReader& operator=(const AndroidImageReader&) = delete;
@@ -10,6 +10,20 @@
namespace base {
namespace android {
+ // Disable image reader support.
+ static void DisableSupport();
+class BASE_EXPORT AndroidImageReader {
+ public:
+ // Thread safe GetInstance.
+ static AndroidImageReader& GetInstance();
+
// Check if the image reader usage is supported. This function returns TRUE
// if android version is >=OREO, image reader support is not disabled and all
// the required functions are loaded.
@@ -61,6 +64,7 @@ class BASE_EXPORT AndroidImageReader {
jobject ANativeWindow_toSurface(JNIEnv* env, ANativeWindow* window);
+ 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();
private:
+ static bool disable_support_;
friend class base::NoDestructor<AndroidImageReader>;
AndroidImageReader();
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
@@ -2923,9 +2923,9 @@
@@ -3046,9 +3046,9 @@
"expiry_milestone": 125
},
{
@@ -143,8 +147,8 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis
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
@@ -71,6 +71,11 @@ BASE_FEATURE(kUseGles2ForOopR,
);
@@ -65,6 +65,11 @@ BASE_FEATURE(kUseGles2ForOopR,
base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_ANDROID)
+// Use android AImageReader when playing videos with MediaPlayer.
@@ -179,7 +183,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
if (!gpu_preferences.enable_android_surface_control)
return kGpuFeatureStatusDisabled;
@@ -355,6 +358,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
@@ -368,6 +371,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] =
kGpuFeatureStatusBlocklisted;
}
@@ -205,14 +209,22 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
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
@@ -675,6 +675,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
@@ -65,6 +65,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)
@@ -662,6 +663,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::DisableSupport();
+ base::android::AndroidImageReader::GetInstance().DisableSupport();
+ }
+#endif
+
@@ -1,731 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Thu, 7 Sep 2023 07:25:25 +0000
Subject: AdblockPlus add blocking in service workers
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../adblock/adblock_content_browser_client.cc | 184 ++++++++++++------
.../adblock/adblock_content_browser_client.h | 27 ++-
.../browser/chrome_content_browser_client.cc | 6 +-
.../browser/chrome_content_browser_client.h | 6 +-
.../browser/adblock_url_loader_factory.cc | 10 +-
.../browser/adblock_url_loader_factory.h | 3 +
.../browser/frame_hierarchy_builder.cc | 3 +-
.../browser/resource_classification_runner.h | 8 +
.../resource_classification_runner_impl.cc | 30 ++-
.../resource_classification_runner_impl.h | 8 +
.../websockets/websocket_connector_impl.cc | 6 +-
.../public/browser/content_browser_client.cc | 4 +-
.../public/browser/content_browser_client.h | 4 +-
13 files changed, 216 insertions(+), 83 deletions(-)
diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc
--- a/chrome/browser/adblock/adblock_content_browser_client.cc
+++ b/chrome/browser/adblock/adblock_content_browser_client.cc
@@ -43,6 +43,7 @@
#include "content/public/browser/web_contents.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/network/public/mojom/websocket.mojom.h"
+#include "services/network/public/mojom/web_transport.mojom.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "third_party/blink/public/common/loader/url_loader_throttle.h"
@@ -56,6 +57,29 @@
namespace {
+bool IsFilteringNeeded(Profile* profile, const GURL& embedder_url) {
+ DCHECK(profile);
+
+ if(embedder_url.is_empty()) {
+ // in android can be empty because it was created by
+ // RenderFrameHostImpl::CreateSubresourceLoaderFactoriesForInitialEmptyDocument
+ return true;
+ }
+
+ HostContentSettingsMap* settings_map = HostContentSettingsMapFactory::GetForProfile(profile);
+ if (settings_map && settings_map->GetContentSetting(embedder_url, GURL(), ContentSettingsType::ADS)
+ == CONTENT_SETTING_ALLOW) {
+ return false;
+ }
+ // Filtering may be needed if there's at least one enabled
+ // FilteringConfiguration.
+ bool ret = base::ranges::any_of(
+ adblock::SubscriptionServiceFactory::GetForBrowserContext(profile)
+ ->GetInstalledFilteringConfigurations(),
+ &adblock::FilteringConfiguration::IsEnabled);
+ return ret;
+}
+
bool IsFilteringNeeded(content::RenderFrameHost* frame) {
if (frame) {
auto* profile =
@@ -63,17 +87,7 @@ bool IsFilteringNeeded(content::RenderFrameHost* frame) {
if (profile) {
content::RenderFrameHost* embedder = frame->GetOutermostMainFrameOrEmbedder();
const auto& embedder_url = embedder->GetLastCommittedURL();
- HostContentSettingsMap* settings_map = HostContentSettingsMapFactory::GetForProfile(profile);
- if (settings_map && settings_map->GetContentSetting(embedder_url, GURL(), ContentSettingsType::ADS)
- == CONTENT_SETTING_ALLOW) {
- return false;
- }
- // Filtering may be needed if there's at least one enabled
- // FilteringConfiguration.
- return base::ranges::any_of(
- adblock::SubscriptionServiceFactory::GetForBrowserContext(profile)
- ->GetInstalledFilteringConfigurations(),
- &adblock::FilteringConfiguration::IsEnabled);
+ return IsFilteringNeeded(profile, embedder_url);
}
}
return false;
@@ -88,6 +102,8 @@ class AdblockContextData : public base::SupportsUserData::Data {
static void StartProxying(
Profile* profile,
+ content::BrowserContext* browser_context,
+ const url::Origin& request_initiator,
content::RenderFrameHost* frame,
int render_process_id,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
@@ -100,8 +116,6 @@ class AdblockContextData : public base::SupportsUserData::Data {
self = new AdblockContextData();
profile->SetUserData(kAdblockContextUserDataKey, base::WrapUnique(self));
}
- auto* browser_context =
- content::WebContents::FromRenderFrameHost(frame)->GetBrowserContext();
adblock::AdblockURLLoaderFactoryConfig config{
adblock::SubscriptionServiceFactory::GetForBrowserContext(
browser_context),
@@ -113,8 +127,9 @@ class AdblockContextData : public base::SupportsUserData::Data {
browser_context)};
auto proxy = std::make_unique<adblock::AdblockURLLoaderFactory>(
std::move(config),
+ request_initiator.GetURL(),
content::GlobalRenderFrameHostId(render_process_id,
- frame->GetRoutingID()),
+ frame ? frame->GetRoutingID() : MSG_ROUTING_NONE),
std::move(receiver), std::move(target_factory),
embedder_support::GetUserAgent(),
base::BindOnce(&AdblockContextData::RemoveProxy,
@@ -155,47 +170,50 @@ void AdblockContentBrowserClient::ForceAdblockProxyForTesting() {
#endif
bool AdblockContentBrowserClient::WillInterceptWebSocket(
- content::RenderFrameHost* frame) {
+ content::RenderFrameHost* frame,
+ content::RenderProcessHost* process,
+ const url::Origin& origin) {
if (IsFilteringNeeded(frame)) {
return true;
+ } else {
+ auto* browser_context = process->GetBrowserContext();
+ auto* profile = Profile::FromBrowserContext(browser_context);
+ if (IsFilteringNeeded(profile, origin.GetURL().GetAsReferrer())) {
+ return true;
+ }
}
- return ChromeContentBrowserClient::WillInterceptWebSocket(frame);
+ return ChromeContentBrowserClient::WillInterceptWebSocket(frame, process, origin);
}
void AdblockContentBrowserClient::CreateWebSocket(
+ content::RenderProcessHost* process,
content::RenderFrameHost* frame,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
handshake_client) {
- if (IsFilteringNeeded(frame)) {
- CreateWebSocketInternal(frame->GetGlobalId(), std::move(factory), url,
- site_for_cookies, user_agent,
- std::move(handshake_client));
- } else {
- DCHECK(ChromeContentBrowserClient::WillInterceptWebSocket(frame));
- ChromeContentBrowserClient::CreateWebSocket(frame, std::move(factory), url,
- site_for_cookies, user_agent,
- std::move(handshake_client));
- }
+ CreateWebSocketInternal(process,
+ frame ? frame->GetGlobalId() : content::GlobalRenderFrameHostId(),
+ std::move(factory), url, initiator_origin,
+ site_for_cookies, user_agent,
+ std::move(handshake_client));
}
void AdblockContentBrowserClient::CreateWebSocketInternal(
+ content::RenderProcessHost* process,
content::GlobalRenderFrameHostId render_frame_host_id,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
handshake_client) {
- auto* frame = content::RenderFrameHost::FromID(render_frame_host_id);
- if (!frame) {
- return;
- }
- auto* browser_context = frame->GetProcess()->GetBrowserContext();
+ auto* browser_context = process->GetBrowserContext();
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(
browser_context);
@@ -203,33 +221,33 @@ void AdblockContentBrowserClient::CreateWebSocketInternal(
adblock::ResourceClassificationRunnerFactory::GetForBrowserContext(
browser_context);
classification_runner->CheckRequestFilterMatchForWebSocket(
- subscription_service->GetCurrentSnapshot(), url, render_frame_host_id,
+ subscription_service->GetCurrentSnapshot(), url,
+ std::move(initiator_origin.GetURL().GetAsReferrer()), render_frame_host_id,
base::BindOnce(
&AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted,
- weak_factory_.GetWeakPtr(), render_frame_host_id, std::move(factory),
- url, site_for_cookies, user_agent, std::move(handshake_client)));
+ weak_factory_.GetWeakPtr(), process, render_frame_host_id, std::move(factory),
+ url, initiator_origin, site_for_cookies, user_agent, std::move(handshake_client)));
}
void AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted(
+ content::RenderProcessHost* process,
content::GlobalRenderFrameHostId render_frame_host_id,
ChromeContentBrowserClient::WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
handshake_client,
adblock::FilterMatchResult result) {
auto* frame = content::RenderFrameHost::FromID(render_frame_host_id);
- if (!frame) {
- return;
- }
const bool has_blocking_filter =
result == adblock::FilterMatchResult::kBlockRule;
if (!has_blocking_filter) {
VLOG(1) << "[eyeo] Web socket allowed for " << url;
- if (ChromeContentBrowserClient::WillInterceptWebSocket(frame)) {
+ if (ChromeContentBrowserClient::WillInterceptWebSocket(frame, process, initiator_origin)) {
ChromeContentBrowserClient::CreateWebSocket(
- frame, std::move(factory), url, site_for_cookies, user_agent,
+ process, frame, std::move(factory), url, initiator_origin, site_for_cookies, user_agent,
std::move(handshake_client));
return;
}
@@ -246,6 +264,72 @@ void AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted(
VLOG(1) << "[eyeo] Web socket blocked for " << url;
}
+void AdblockContentBrowserClient::WillCreateWebTransport(
+ int process_id,
+ int frame_routing_id,
+ const GURL& url,
+ const url::Origin& initiator_origin,
+ mojo::PendingRemote<network::mojom::WebTransportHandshakeClient>
+ handshake_client,
+ WillCreateWebTransportCallback callback) {
+ auto* process = content::RenderProcessHost::FromID(process_id);
+ DCHECK(process);
+
+ auto* browser_context = process->GetBrowserContext();
+ auto* profile = Profile::FromBrowserContext(browser_context);
+ if (IsFilteringNeeded(profile, initiator_origin.GetURL().GetAsReferrer())) {
+ auto* subscription_service =
+ adblock::SubscriptionServiceFactory::GetForBrowserContext(
+ browser_context);
+ auto* classification_runner =
+ adblock::ResourceClassificationRunnerFactory::GetForBrowserContext(
+ browser_context);
+
+ classification_runner->CheckRequestFilterMatchForWebTransport(
+ subscription_service->GetCurrentSnapshot(), url,
+ std::move(initiator_origin.GetURL().GetAsReferrer()),
+ content::GlobalRenderFrameHostId(),
+ base::BindOnce(
+ &AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted,
+ weak_factory_.GetWeakPtr(),
+ process_id, frame_routing_id, url,
+ std::move(initiator_origin), std::move(handshake_client),
+ std::move(callback)));
+ return;
+ }
+
+ ChromeContentBrowserClient::WillCreateWebTransport(
+ process_id, frame_routing_id,
+ url, std::move(initiator_origin),
+ std::move(handshake_client), std::move(callback));
+}
+
+void AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted(
+ int process_id,
+ int frame_routing_id,
+ const GURL& url,
+ const url::Origin& initiator_origin,
+ mojo::PendingRemote<network::mojom::WebTransportHandshakeClient>
+ handshake_client,
+ WillCreateWebTransportCallback callback,
+ adblock::FilterMatchResult result) {
+ const bool has_blocking_filter =
+ result == adblock::FilterMatchResult::kBlockRule;
+ if (!has_blocking_filter) {
+ VLOG(1) << "[eyeo] Web transport allowed for " << url;
+ ChromeContentBrowserClient::WillCreateWebTransport(
+ process_id, frame_routing_id,
+ url, std::move(initiator_origin),
+ std::move(handshake_client), std::move(callback));
+ return;
+ }
+ VLOG(1) << "[eyeo] Web transport blocked for " << url;
+ std::move(callback).Run(std::move(handshake_client),
+ network::mojom::WebTransportError::New(
+ net::ERR_BLOCKED_BY_ADMINISTRATOR, quic::QUIC_INTERNAL_ERROR,
+ "Blocked", false));
+}
+
bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
content::BrowserContext* browser_context,
content::RenderFrameHost* frame,
@@ -269,24 +353,12 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
navigation_id, ukm_source_id, factory_receiver, header_client,
bypass_redirect_checks, disable_secure_dns, factory_override,
navigation_response_task_runner);
- auto* profile = frame ? Profile::FromBrowserContext(
- frame->GetProcess()->GetBrowserContext())
- : nullptr;
-
-#if BUILDFLAG(ENABLE_EXTENSIONS)
- if (!force_adblock_proxy_for_testing_ &&
- request_initiator.scheme() == extensions::kExtensionScheme) {
- VLOG(1) << "[eyeo] Do not use adblock proxy for extensions requests "
- "[extension id:"
- << request_initiator.host() << "].";
- return use_chrome_proxy;
- }
-#endif
+ auto* profile = Profile::FromBrowserContext(browser_context);
bool use_adblock_proxy =
- (type == URLLoaderFactoryType::kDocumentSubResource ||
- type == URLLoaderFactoryType::kNavigation) &&
- IsFilteringNeeded(frame);
+ type != URLLoaderFactoryType::kDownload &&
+ (frame ? IsFilteringNeeded(frame)
+ : IsFilteringNeeded(profile, request_initiator.GetURL().GetAsReferrer()));
bool use_test_loader = false;
#ifdef EYEO_INTERCEPT_DEBUG_URL
@@ -305,7 +377,7 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory_remote;
*factory_receiver = target_factory_remote.InitWithNewPipeAndPassReceiver();
AdblockContextData::StartProxying(
- profile, frame, render_process_id, std::move(proxied_receiver),
+ profile, browser_context, request_initiator, frame, render_process_id, std::move(proxied_receiver),
std::move(target_factory_remote), use_test_loader);
}
return use_adblock_proxy || use_chrome_proxy;
diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/browser/adblock/adblock_content_browser_client.h
--- a/chrome/browser/adblock/adblock_content_browser_client.h
+++ b/chrome/browser/adblock/adblock_content_browser_client.h
@@ -44,16 +44,27 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient {
static void ForceAdblockProxyForTesting();
#endif
- bool WillInterceptWebSocket(content::RenderFrameHost* frame) override;
+ bool WillInterceptWebSocket(content::RenderFrameHost* frame, content::RenderProcessHost* process, const url::Origin& origin) override;
void CreateWebSocket(
+ content::RenderProcessHost* process,
content::RenderFrameHost* frame,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
handshake_client) override;
+ void WillCreateWebTransport(
+ int process_id,
+ int frame_routing_id,
+ const GURL& url,
+ const url::Origin& initiator_origin,
+ mojo::PendingRemote<network::mojom::WebTransportHandshakeClient>
+ handshake_client,
+ WillCreateWebTransportCallback callback) override;
+
bool WillCreateURLLoaderFactory(
content::BrowserContext* browser_context,
content::RenderFrameHost* frame,
@@ -73,23 +84,35 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient {
private:
void CreateWebSocketInternal(
+ content::RenderProcessHost* process,
content::GlobalRenderFrameHostId render_frame_host_id,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
handshake_client);
void OnWebSocketFilterCheckCompleted(
+ content::RenderProcessHost* process,
content::GlobalRenderFrameHostId render_frame_host_id,
ChromeContentBrowserClient::WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
handshake_client,
adblock::FilterMatchResult result);
-
+ void OnWebTransportFilterCheckCompleted(
+ int process_id,
+ int frame_routing_id,
+ const GURL& url,
+ const url::Origin& initiator_origin,
+ mojo::PendingRemote<network::mojom::WebTransportHandshakeClient>
+ handshake_client,
+ WillCreateWebTransportCallback callback,
+ adblock::FilterMatchResult result);
base::WeakPtrFactory<AdblockContentBrowserClient> weak_factory_{this};
#if BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -6305,7 +6305,9 @@ ChromeContentBrowserClient::
}
bool ChromeContentBrowserClient::WillInterceptWebSocket(
- content::RenderFrameHost* frame) {
+ content::RenderFrameHost* frame,
+ content::RenderProcessHost* process,
+ const url::Origin& origin) {
#if BUILDFLAG(ENABLE_EXTENSIONS)
if (!frame) {
return false;
@@ -6328,9 +6330,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket(
}
void ChromeContentBrowserClient::CreateWebSocket(
+ content::RenderProcessHost* process,
content::RenderFrameHost* frame,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -642,11 +642,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
CreateURLLoaderHandlerForServiceWorkerNavigationPreload(
int frame_tree_node_id,
const network::ResourceRequest& resource_request) override;
- bool WillInterceptWebSocket(content::RenderFrameHost* frame) override;
+ bool WillInterceptWebSocket(content::RenderFrameHost* frame,
+ content::RenderProcessHost* process,
+ const url::Origin& origin) override;
void CreateWebSocket(
+ content::RenderProcessHost* process,
content::RenderFrameHost* frame,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/components/adblock/content/browser/adblock_url_loader_factory.cc
--- a/components/adblock/content/browser/adblock_url_loader_factory.cc
+++ b/components/adblock/content/browser/adblock_url_loader_factory.cc
@@ -343,12 +343,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError(
void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
CheckFilterMatchCallback callback) {
- if (!factory_->CheckHostValid()) {
- PostFilterMatchCallbackToUI(std::move(callback),
- FilterMatchResult::kNoRule);
- return;
- }
-
auto subscription_service = factory_->config_.subscription_service;
if (is_document_request_) {
auto* host = content::RenderFrameHost::FromID(factory_->host_id_);
@@ -387,7 +381,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
} else {
factory_->config_.resource_classifier->CheckRequestFilterMatch(
subscription_service->GetCurrentSnapshot(), request_url_,
- adblock_resource_type_, factory_->host_id_,
+ factory_->request_initiator_, adblock_resource_type_, factory_->host_id_,
base::BindOnce(
&AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified,
weak_factory_.GetWeakPtr(),
@@ -676,12 +670,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult(
AdblockURLLoaderFactory::AdblockURLLoaderFactory(
AdblockURLLoaderFactoryConfig config,
+ GURL request_initiator,
content::GlobalRenderFrameHostId host_id,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory,
std::string user_agent_string,
DisconnectCallback on_disconnect)
: config_(std::move(config)),
+ request_initiator_(std::move(request_initiator)),
host_id_(host_id),
user_agent_string_(std::move(user_agent_string)),
on_disconnect_(std::move(on_disconnect)) {
diff --git a/components/adblock/content/browser/adblock_url_loader_factory.h b/components/adblock/content/browser/adblock_url_loader_factory.h
--- a/components/adblock/content/browser/adblock_url_loader_factory.h
+++ b/components/adblock/content/browser/adblock_url_loader_factory.h
@@ -25,6 +25,7 @@
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
+#include "url/gurl.h"
namespace adblock {
@@ -57,6 +58,7 @@ class AdblockURLLoaderFactory : public network::mojom::URLLoaderFactory {
AdblockURLLoaderFactory(
AdblockURLLoaderFactoryConfig config,
+ GURL request_initiator,
content::GlobalRenderFrameHostId host_id,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory,
@@ -86,6 +88,7 @@ class AdblockURLLoaderFactory : public network::mojom::URLLoaderFactory {
void MaybeDestroySelf();
AdblockURLLoaderFactoryConfig config_;
+ const GURL request_initiator_;
content::GlobalRenderFrameHostId host_id_;
mojo::ReceiverSet<network::mojom::URLLoaderFactory> proxy_receivers_;
std::set<std::unique_ptr<InProgressRequest>, base::UniquePtrComparator>
diff --git a/components/adblock/content/browser/frame_hierarchy_builder.cc b/components/adblock/content/browser/frame_hierarchy_builder.cc
--- a/components/adblock/content/browser/frame_hierarchy_builder.cc
+++ b/components/adblock/content/browser/frame_hierarchy_builder.cc
@@ -76,9 +76,8 @@ std::vector<GURL> FrameHierarchyBuilder::BuildFrameHierarchy(
content::RenderFrameHost* host) const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- DCHECK(host) << "RenderFrameHost is needed to build frame hierarchy";
-
std::vector<GURL> referrers_chain;
+ if (!host) return referrers_chain;
for (auto* iter = host; iter; iter = iter->GetParent()) {
auto last_commited_referrer = GetUrlAsReferrer(iter);
if (IsValidForFrameHierarchy(last_commited_referrer)) {
diff --git a/components/adblock/content/browser/resource_classification_runner.h b/components/adblock/content/browser/resource_classification_runner.h
--- a/components/adblock/content/browser/resource_classification_runner.h
+++ b/components/adblock/content/browser/resource_classification_runner.h
@@ -81,14 +81,22 @@ class ResourceClassificationRunner : public KeyedService {
virtual void CheckRequestFilterMatch(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
+ const GURL& request_initiator,
ContentType adblock_resource_type,
content::GlobalRenderFrameHostId render_frame_host_id,
CheckFilterMatchCallback callback) = 0;
virtual void CheckRequestFilterMatchForWebSocket(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
+ const GURL& request_initiator,
content::GlobalRenderFrameHostId render_frame_host_id,
CheckFilterMatchCallback callback) = 0;
+ virtual void CheckRequestFilterMatchForWebTransport(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const GURL& request_initiator,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback);
// No callback, just notify observers
virtual void CheckDocumentAllowlisted(
SubscriptionService::Snapshot subscription_collection,
diff --git a/components/adblock/content/browser/resource_classification_runner_impl.cc b/components/adblock/content/browser/resource_classification_runner_impl.cc
--- a/components/adblock/content/browser/resource_classification_runner_impl.cc
+++ b/components/adblock/content/browser/resource_classification_runner_impl.cc
@@ -169,15 +169,28 @@ void ResourceClassificationRunnerImpl::CheckPopupFilterMatch(
void ResourceClassificationRunnerImpl::CheckRequestFilterMatchForWebSocket(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
+ const GURL& request_initiator,
content::GlobalRenderFrameHostId render_frame_host_id,
CheckFilterMatchCallback callback) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(request_url.SchemeIsWSOrWSS());
- CheckRequestFilterMatch(std::move(subscription_collections), request_url,
+ CheckRequestFilterMatch(std::move(subscription_collections), request_url, request_initiator,
ContentType::Websocket, render_frame_host_id,
std::move(callback));
}
+void ResourceClassificationRunnerImpl::CheckRequestFilterMatchForWebTransport(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const GURL& request_initiator,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ CheckRequestFilterMatch(std::move(subscription_collections), request_url, request_initiator,
+ ContentType::Other, render_frame_host_id,
+ std::move(callback));
+}
+
void ResourceClassificationRunnerImpl::CheckDocumentAllowlisted(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
@@ -212,6 +225,7 @@ void ResourceClassificationRunnerImpl::ProcessDocumentAllowlistedResponse(
void ResourceClassificationRunnerImpl::CheckRequestFilterMatch(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
+ const GURL& request_initiator,
ContentType adblock_resource_type,
content::GlobalRenderFrameHostId frame_host_id,
CheckFilterMatchCallback callback) {
@@ -220,14 +234,10 @@ void ResourceClassificationRunnerImpl::CheckRequestFilterMatch(
DVLOG(1) << "[eyeo] CheckRequestFilterMatchImpl for " << request_url.spec();
auto* host = content::RenderFrameHost::FromID(frame_host_id);
- if (!host) {
- // Host has died, likely because this is a deferred execution. It does not
- // matter anymore whether the resource is blocked, the page is gone.
- std::move(callback).Run(FilterMatchResult::kNoRule);
- return;
- }
- const std::vector<GURL> frame_hierarchy_chain =
+ std::vector<GURL> frame_hierarchy_chain =
frame_hierarchy_builder_->BuildFrameHierarchy(host);
+ if (!host && frame_hierarchy_chain.size() == 0)
+ frame_hierarchy_chain.emplace_back(request_initiator.GetAsReferrer());
DVLOG(1) << "[eyeo] Got " << frame_hierarchy_chain.size()
<< " frame_hierarchy for " << request_url.spec();
@@ -275,7 +285,8 @@ ResourceClassificationRunnerImpl::CheckRequestFilterMatchInternal(
adblock_resource_type, sitekey);
if (classification_result.decision == ClassificationDecision::Allowed) {
- VLOG(1) << "[eyeo] Document allowed due to allowing filter " << request_url;
+ VLOG(1) << "[eyeo] Document allowed due to allowing filter " << request_url
+ << " " << classification_result.decisive_subscription.spec();
return CheckResourceFilterMatchResult{
FilterMatchResult::kAllowRule,
classification_result.decisive_subscription,
@@ -290,6 +301,7 @@ ResourceClassificationRunnerImpl::CheckRequestFilterMatchInternal(
classification_result.decisive_configuration_name};
}
+ VLOG(1) << "[eyeo] No Rule for " << request_url;
return CheckResourceFilterMatchResult{FilterMatchResult::kNoRule, {}, {}};
}
diff --git a/components/adblock/content/browser/resource_classification_runner_impl.h b/components/adblock/content/browser/resource_classification_runner_impl.h
--- a/components/adblock/content/browser/resource_classification_runner_impl.h
+++ b/components/adblock/content/browser/resource_classification_runner_impl.h
@@ -55,12 +55,14 @@ class ResourceClassificationRunnerImpl final
void CheckRequestFilterMatch(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
+ const GURL& request_initiator,
ContentType adblock_resource_type,
content::GlobalRenderFrameHostId render_frame_host_id,
CheckFilterMatchCallback callback) final;
void CheckRequestFilterMatchForWebSocket(
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
+ const GURL& request_initiator,
content::GlobalRenderFrameHostId render_frame_host_id,
CheckFilterMatchCallback callback) final;
// No callback, just notify observers
@@ -68,6 +70,12 @@ class ResourceClassificationRunnerImpl final
SubscriptionService::Snapshot subscription_collections,
const GURL& request_url,
content::GlobalRenderFrameHostId render_frame_host_id) final;
+ void CheckRequestFilterMatchForWebTransport(
+ SubscriptionService::Snapshot subscription_collections,
+ const GURL& request_url,
+ const GURL& request_initiator,
+ content::GlobalRenderFrameHostId render_frame_host_id,
+ CheckFilterMatchCallback callback) final;
void CheckResponseFilterMatch(
SubscriptionService::Snapshot subscription_collections,
const GURL& response_url,
diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/browser/websockets/websocket_connector_impl.cc
--- a/content/browser/websockets/websocket_connector_impl.cc
+++ b/content/browser/websockets/websocket_connector_impl.cc
@@ -88,14 +88,14 @@ void WebSocketConnectorImpl::Connect(
const uint32_t options =
GetContentClient()->browser()->GetWebSocketOptions(frame);
- if (GetContentClient()->browser()->WillInterceptWebSocket(frame)) {
+ if (GetContentClient()->browser()->WillInterceptWebSocket(frame, process, origin_)) {
GetContentClient()->browser()->CreateWebSocket(
- frame,
+ process, frame,
base::BindOnce(ConnectCalledByContentBrowserClient, requested_protocols,
site_for_cookies, has_storage_access, isolation_info_,
process_id_, frame_id_, origin_, options,
std::move(throttling_profile_id)),
- url, site_for_cookies, user_agent, std::move(handshake_client));
+ url, origin_, site_for_cookies, user_agent, std::move(handshake_client));
return;
}
std::vector<network::mojom::HttpHeaderPtr> headers;
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -1023,7 +1023,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory(
return false;
}
-bool ContentBrowserClient::WillInterceptWebSocket(RenderFrameHost*) {
+bool ContentBrowserClient::WillInterceptWebSocket(RenderFrameHost*, RenderProcessHost*, const url::Origin& origin) {
return false;
}
@@ -1032,9 +1032,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) {
}
void ContentBrowserClient::CreateWebSocket(
+ RenderProcessHost* process,
RenderFrameHost* frame,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -1859,7 +1859,7 @@ class CONTENT_EXPORT ContentBrowserClient {
scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner);
// Returns true when the embedder wants to intercept a websocket connection.
- virtual bool WillInterceptWebSocket(RenderFrameHost* frame);
+ virtual bool WillInterceptWebSocket(RenderFrameHost* frame, RenderProcessHost* process, const url::Origin& origin);
// Returns the WebSocket creation options.
virtual uint32_t GetWebSocketOptions(RenderFrameHost* frame);
@@ -1881,9 +1881,11 @@ class CONTENT_EXPORT ContentBrowserClient {
// Always called on the UI thread and only when the Network Service is
// enabled.
virtual void CreateWebSocket(
+ RenderProcessHost* process,
RenderFrameHost* frame,
WebSocketFactory factory,
const GURL& url,
+ const url::Origin& initiator_origin,
const net::SiteForCookies& site_for_cookies,
const absl::optional<std::string>& user_agent,
mojo::PendingRemote<network::mojom::WebSocketHandshakeClient>
--
@@ -1,169 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Tue, 9 Jan 2024 13:37:05 +0000
Subject: AdblockPlus connect popup blocker
activates the pop-up blocking management present in adblockplus
but not active in upstream.
added "enable-stricter-popup-blocker" flag for the global
deactivation of all pop-ups (default disabled)
---
.../adblock/adblock_content_browser_client.cc | 52 +++++++++++++++++++
.../adblock/adblock_content_browser_client.h | 14 +++++
components/blocked_content/popup_blocker.cc | 9 +++-
components/blocked_content/popup_blocker.h | 3 ++
.../about_flags_cc/Stricter-popup-blocker.inc | 14 +++++
5 files changed, 91 insertions(+), 1 deletion(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc
diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc
--- a/chrome/browser/adblock/adblock_content_browser_client.cc
+++ b/chrome/browser/adblock/adblock_content_browser_client.cc
@@ -330,6 +330,58 @@ void AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted(
"Blocked", false));
}
+bool AdblockContentBrowserClient::CanCreateWindow(
+ content::RenderFrameHost* opener,
+ const GURL& opener_url,
+ const GURL& opener_top_level_frame_url,
+ const url::Origin& source_origin,
+ content::mojom::WindowContainerType container_type,
+ const GURL& target_url,
+ const content::Referrer& referrer,
+ const std::string& frame_name,
+ WindowOpenDisposition disposition,
+ const blink::mojom::WindowFeatures& features,
+ bool user_gesture,
+ bool opener_suppressed,
+ bool* no_javascript_access) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ DCHECK(opener);
+
+ if (IsFilteringNeeded(opener)) {
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(opener);
+ auto* subscription_service =
+ adblock::SubscriptionServiceFactory::GetForBrowserContext(
+ web_contents->GetBrowserContext());
+
+ GURL popup_url(target_url);
+ web_contents->GetPrimaryMainFrame()->GetProcess()->FilterURL(false,
+ &popup_url);
+ auto* classification_runner =
+ adblock::ResourceClassificationRunnerFactory::GetForBrowserContext(
+ web_contents->GetBrowserContext());
+ const auto popup_blocking_decision =
+ classification_runner->ShouldBlockPopup(
+ subscription_service->GetCurrentSnapshot(), popup_url, opener);
+ if (popup_blocking_decision == adblock::FilterMatchResult::kAllowRule) {
+ return true;
+ }
+ if (popup_blocking_decision == adblock::FilterMatchResult::kBlockRule) {
+ return false;
+ }
+ // Otherwise, if eyeo adblocking is disabled or there is no rule that
+ // explicitly allows or blocks a popup, fall back on Chromium's built-in
+ // popup blocker.
+ DCHECK(popup_blocking_decision == adblock::FilterMatchResult::kDisabled ||
+ popup_blocking_decision == adblock::FilterMatchResult::kNoRule);
+ }
+
+ return ChromeContentBrowserClient::CanCreateWindow(
+ opener, opener_url, opener_top_level_frame_url, source_origin,
+ container_type, target_url, referrer, frame_name, disposition, features,
+ user_gesture, opener_suppressed, no_javascript_access);
+}
+
bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
content::BrowserContext* browser_context,
content::RenderFrameHost* frame,
diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/browser/adblock/adblock_content_browser_client.h
--- a/chrome/browser/adblock/adblock_content_browser_client.h
+++ b/chrome/browser/adblock/adblock_content_browser_client.h
@@ -82,6 +82,20 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient {
scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner)
override;
+ bool CanCreateWindow(content::RenderFrameHost* opener,
+ const GURL& opener_url,
+ const GURL& opener_top_level_frame_url,
+ const url::Origin& source_origin,
+ content::mojom::WindowContainerType container_type,
+ const GURL& target_url,
+ const content::Referrer& referrer,
+ const std::string& frame_name,
+ WindowOpenDisposition disposition,
+ const blink::mojom::WindowFeatures& features,
+ bool user_gesture,
+ bool opener_suppressed,
+ bool* no_javascript_access) override;
+
private:
void CreateWebSocketInternal(
content::RenderProcessHost* process,
diff --git a/components/blocked_content/popup_blocker.cc b/components/blocked_content/popup_blocker.cc
--- a/components/blocked_content/popup_blocker.cc
+++ b/components/blocked_content/popup_blocker.cc
@@ -20,6 +20,11 @@
#include "third_party/blink/public/mojom/frame/frame.mojom-shared.h"
namespace blocked_content {
+
+CROMITE_FEATURE(kStrictPopupBlocker,
+ "StrictPopupBlocker",
+ base::FEATURE_DISABLED_BY_DEFAULT);
+
namespace {
content::Page& GetSourcePageForPopup(
@@ -88,7 +93,9 @@ PopupBlockType ShouldBlockPopup(content::WebContents* web_contents,
GetSourcePageForPopup(open_url_params, web_contents))) {
return PopupBlockType::kAbusive;
}
- return PopupBlockType::kNotBlocked;
+ return base::FeatureList::IsEnabled(kStrictPopupBlocker)
+ ? PopupBlockType::kAbusive
+ : PopupBlockType::kNotBlocked;
}
} // namespace
diff --git a/components/blocked_content/popup_blocker.h b/components/blocked_content/popup_blocker.h
--- a/components/blocked_content/popup_blocker.h
+++ b/components/blocked_content/popup_blocker.h
@@ -5,6 +5,7 @@
#ifndef COMPONENTS_BLOCKED_CONTENT_POPUP_BLOCKER_H_
#define COMPONENTS_BLOCKED_CONTENT_POPUP_BLOCKER_H_
+#include "base/feature_list.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "third_party/blink/public/mojom/window_features/window_features.mojom-forward.h"
#include "ui/base/window_open_disposition.h"
@@ -18,6 +19,8 @@ struct OpenURLParams;
} // namespace content
namespace blocked_content {
+BASE_DECLARE_FEATURE(kStrictPopupBlocker);
+
class PopupNavigationDelegate;
// Classifies what caused a popup to be blocked.
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc b/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc
@@ -0,0 +1,14 @@
+#ifdef ABOUT_FLAG_INCLUDE_SECTION
+
+#include "components/blocked_content/popup_blocker.h"
+
+#endif
+
+#ifdef FLAG_SECTION
+
+ {"enable-stricter-popup-blocker",
+ "Enable Stricter popup blocker",
+ "Blocks all pop-ups, even those with user gestures.", kOsAll,
+ FEATURE_VALUE_TYPE(blocked_content::kStrictPopupBlocker)},
+
+#endif // ifdef FLAG_SECTION
--
@@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -228,6 +228,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
@@ -230,6 +230,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
import org.chromium.content_public.browser.SelectionPopupController;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.common.ContentSwitches;
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
import org.chromium.printing.PrintManagerDelegateImpl;
import org.chromium.printing.PrintingController;
import org.chromium.printing.PrintingControllerImpl;
@@ -1097,6 +1098,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -1064,6 +1065,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
super.onStartWithNative();
ChromeActivitySessionTracker.getInstance().onStartWithNative();
ChromeCachedFlags.getInstance().cacheNativeFlags();
@@ -40,42 +40,42 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -144,6 +144,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -136,6 +136,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&feed::kFeedShowSignInCommand,
&feed::kFeedSignedOutViewDemotion,
&feed::kFeedUserInteractionReliabilityReport,
+ &kAllowUserCertificates,
&feed::kInterestFeedV2,
&feed::kInterestFeedV2Autoplay,
&feed::kInterestFeedV2Hearts,
&feed::kWebFeed,
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
@@ -103,6 +103,7 @@ public abstract class ChromeFeatureList {
@@ -141,6 +141,7 @@ public abstract class ChromeFeatureList {
return ChromeFeatureMap.getInstance().mutableFlagWithSafeDefault(featureName, defaultValue);
}
/* Alphabetical: */
+ public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar";
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE =
"AdaptiveButtonInTopToolbarTranslate";
@@ -522,6 +523,8 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sAndroidAppIntegration =
new CachedFlag(ANDROID_APP_INTEGRATION, false);
public static final CachedFlag sAndroidHub = new CachedFlag(ANDROID_HUB, false);
public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS =
@@ -533,6 +534,8 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sAndroidHub = newCachedFlag(ANDROID_HUB, false);
public static final CachedFlag sAndroidTabGroupStableIds =
newCachedFlag(ANDROID_TAB_GROUP_STABLE_IDS, false);
+ public static final CachedFlag sAllowUserCertificates =
+ new CachedFlag(ALLOW_USER_CERTIFICATES, false);
public static final CachedFlag sAppMenuMobileSiteOption =
new CachedFlag(APP_MENU_MOBILE_SITE_OPTION, false);
public static final CachedFlag sArchiveTabService = new CachedFlag(ARCHIVE_TAB_SERVICE, false);
@@ -662,6 +665,7 @@ public abstract class ChromeFeatureList {
+ newCachedFlag(ALLOW_USER_CERTIFICATES, false);
public static final CachedFlag sArchiveTabService = newCachedFlag(ARCHIVE_TAB_SERVICE, false);
public static final CachedFlag sBackGestureActivityTabProvider =
newCachedFlag(BACK_GESTURE_ACTIVITY_TAB_PROVIDER, false);
@@ -679,6 +682,7 @@ public abstract class ChromeFeatureList {
public static final List<CachedFlag> sFlagsCachedFullBrowser =
List.of(
+ sAllowUserCertificates,
sAndroidAppIntegration,
sAndroidElegantTextHeight,
sAndroidHub,
sAppMenuMobileSiteOption,
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc
new file mode 100644
--- /dev/null
@@ -10,7 +10,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/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
@@ -198,6 +198,8 @@ public class KeyboardShortcuts {
@@ -204,6 +204,8 @@ public class KeyboardShortcuts {
R.string.keyboard_shortcut_address_bar,
KeyEvent.KEYCODE_L,
KeyEvent.META_CTRL_ON);
@@ -44,7 +44,7 @@ new file mode 100644
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -287,6 +287,11 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
@@ -300,6 +300,11 @@ std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
}
}
@@ -14,8 +14,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
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
@@ -7058,9 +7058,9 @@
"expiry_milestone": 123
@@ -7195,9 +7195,9 @@
"expiry_milestone": 125
},
{
- "name": "restrict-gamepad-access",
@@ -25,11 +25,11 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js
+ "expiry_milestone": -1
},
{
"name": "rounded-display",
"name": "revamp-page-info-ios",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -3078,7 +3078,7 @@ const char kResetShortcutCustomizationsDescription[] =
@@ -3089,7 +3089,7 @@ const char kResetShortcutCustomizationsDescription[] =
const char kRestrictGamepadAccessName[] = "Restrict gamepad access";
const char kRestrictGamepadAccessDescription[] =
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -301,6 +301,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
@@ -308,6 +308,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
builtins_to_provide.push_back(
base::ASCIIToUTF16(chrome::kChromeUISettingsURL));
#endif
@@ -100,8 +100,8 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -240,6 +240,9 @@
<include name="IDR_PREF_HASH_SEED_BIN" file="resources\settings_internal\pref_hash_seed.bin" type="BINDATA" />
@@ -237,6 +237,9 @@
<include name="IDR_PREF_HASH_SEED_BIN" file="resources\settings\internal\pref_hash_seed.bin" type="BINDATA" />
<include name="IDR_ADDITIONAL_MODULE_IDS" file="${additional_modules_list_file}" use_base_dir="false" type="BINDATA" />
</if>
+ <!-- Bromite Proxy Configuration UI -->
@@ -113,8 +113,8 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
@@ -388,7 +388,7 @@ absl::optional<base::Value::Dict> CreateProxyConfigDict(
return absl::nullopt;
@@ -387,7 +387,7 @@ std::optional<base::Value::Dict> CreateProxyConfigDict(
return std::nullopt;
}
return ProxyConfigDictionary::CreateFixedServers(proxy_rules_string,
- bypass_list);
@@ -198,15 +198,15 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -191,6 +191,8 @@
#include "printing/buildflags/buildflags.h"
#include "rlz/buildflags/buildflags.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
+#include "chrome/browser/net/proxy_service_factory.h"
+
#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
#include "chrome/browser/background/background_mode_manager.h"
#endif
@@ -1451,6 +1453,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
@@ -1447,6 +1449,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) {
component_updater::RegisterPrefs(registry);
domain_reliability::RegisterPrefs(registry);
embedder_support::OriginTrialPrefs::RegisterPrefs(registry);
@@ -673,15 +673,15 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
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_controller_factory.cc
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -56,6 +56,7 @@
@@ -52,6 +52,7 @@
#include "chrome/browser/ui/webui/ntp_tiles_internals_ui.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/predictors/predictors_ui.h"
#include "chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_ui.h"
#include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h"
#include "chrome/browser/ui/webui/signin_internals_ui.h"
@@ -489,6 +490,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
@@ -469,6 +470,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
return &NewWebUI<MetricsInternalsUI>;
if (url.host_piece() == chrome::kChromeUINetExportHost)
return &NewWebUI<NetExportUI>;
@@ -1127,7 +1127,7 @@ new file mode 100644
diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc
--- a/chrome/common/webui_url_constants.cc
+++ b/chrome/common/webui_url_constants.cc
@@ -51,6 +51,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
@@ -49,6 +49,8 @@ const char kChromeUICertificateViewerHost[] = "view-cert";
const char kChromeUICertificateViewerURL[] = "chrome://view-cert/";
const char kChromeUIChromeSigninHost[] = "chrome-signin";
const char kChromeUIChromeSigninURL[] = "chrome://chrome-signin/";
@@ -1136,7 +1136,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
const char kChromeUIChromeURLsHost[] = "chrome-urls";
const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/";
const char kChromeUIComponentsHost[] = "components";
@@ -454,6 +456,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
@@ -460,6 +462,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
kChromeUILockScreenNetworkHost,
kChromeUILockScreenStartReauthHost,
kChromeUIMobileSetupHost,
@@ -1144,7 +1144,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
kChromeUIMultiDeviceSetupHost,
kChromeUINetworkHost,
kChromeUINotificationTesterHost,
@@ -758,6 +761,7 @@ const char* const kChromeHostURLs[] = {
@@ -760,6 +763,7 @@ const char* const kChromeHostURLs[] = {
#if !BUILDFLAG(IS_ANDROID)
#if !BUILDFLAG(IS_CHROMEOS)
kChromeUIAppLauncherPageHost,
@@ -1155,7 +1155,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h
--- a/chrome/common/webui_url_constants.h
+++ b/chrome/common/webui_url_constants.h
@@ -137,6 +137,8 @@ extern const char kChromeUINTPTilesInternalsHost[];
@@ -134,6 +134,8 @@ extern const char kChromeUINTPTilesInternalsHost[];
extern const char kChromeUINaClHost[];
extern const char kChromeUINetExportHost[];
extern const char kChromeUINetExportURL[];
@@ -1321,7 +1321,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox
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
+++ b/components/proxy_config/proxy_policy_handler.cc
@@ -262,7 +262,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
@@ -376,7 +376,7 @@ void ProxyPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
set_proxy_pref_value(ProxyConfigDictionary::CreateFixedServers(
server->GetString(), bypass_list && bypass_list->is_string()
? bypass_list->GetString()
@@ -1333,7 +1333,7 @@ diff --git a/components/proxy_config/proxy_policy_handler.cc b/components/proxy_
diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_config.cc
--- a/net/proxy_resolution/proxy_config.cc
+++ b/net/proxy_resolution/proxy_config.cc
@@ -112,7 +112,7 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
@@ -109,7 +109,7 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
&single_proxies,
ProxyServer::SCHEME_HTTP);
type = Type::PROXY_LIST;
@@ -1342,7 +1342,7 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
}
// Trim whitespace off the url scheme.
@@ -143,6 +143,56 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
@@ -140,6 +140,56 @@ void ProxyConfig::ProxyRules::ParseFromString(const std::string& proxy_rules) {
}
}
@@ -1354,8 +1354,8 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
+ // special case: a single proxy servers list specified
+ if (type == Type::PROXY_LIST) {
+ std::string proxy_list;
+ for (const ProxyServer& proxy_server :
+ single_proxies.GetAll()) {
+ for (const auto& proxy_chain : single_proxies.AllChains()) {
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ proxy_list += ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ // remove last semicolon
@@ -1373,20 +1373,20 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
+
+ // start to build a per-scheme list
+ std::string list;
+ for (const ProxyServer& proxy_server :
+ proxies_for_http.GetAll()) {
+ for (const auto& proxy_chain : proxies_for_http.AllChains()) {
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ list += "http=" + ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ for (const ProxyServer& proxy_server :
+ proxies_for_https.GetAll()) {
+ for (const auto& proxy_chain : proxies_for_https.AllChains()) {
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ list += "https=" + ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ for (const ProxyServer& proxy_server :
+ proxies_for_ftp.GetAll()) {
+ for (const auto& proxy_chain : proxies_for_ftp.AllChains()) {
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ list += "ftp=" + ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ for (const ProxyServer& proxy_server :
+ fallback_proxies.GetAll()) {
+ for (const auto& proxy_chain : fallback_proxies.AllChains()) {
+ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0);
+ list += "socks=" + ProxyServerToProxyUri(proxy_server) + ";";
+ }
+ if (list.length() != 0 ) {
+110 -120
View File
@@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../CustomTabIntentDataProvider.java | 5 +-
.../browser/download/DownloadUtils.java | 16 +-
.../history/HistoryContentManager.java | 7 +-
.../browser/history/HistoryManager.java | 28 ++-
.../browser/history/HistoryManager.java | 26 ++-
.../chrome/browser/history/HistoryPage.java | 15 ++
.../native_page/NativePageFactory.java | 4 +-
.../chrome/browser/ntp/RecentTabsManager.java | 28 ++-
@@ -72,7 +72,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/ui/messages/android/BUILD.gn | 1 +
.../snackbar/INeedSnackbarManager.java | 27 +++
chrome/common/pref_names.h | 6 +
.../browser/content_settings_pref_provider.cc | 8 +-
.../browser/content_settings_pref_provider.cc | 6 +-
.../browser/content_settings_pref_provider.h | 2 +
.../core/browser/host_content_settings_map.cc | 4 +-
.../core/browser/host_content_settings_map.h | 3 +
@@ -85,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../add-an-always-incognito-mode.inc | 3 +
.../add-an-always-incognito-mode.inc | 1 +
net/base/file_stream_context.cc | 2 +-
66 files changed, 773 insertions(+), 103 deletions(-)
66 files changed, 770 insertions(+), 102 deletions(-)
create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java
@@ -98,7 +98,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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
@@ -649,6 +649,7 @@ chrome_java_resources = [
@@ -644,6 +644,7 @@ chrome_java_resources = [
"java/res/xml/main_preferences.xml",
"java/res/xml/manage_sync_preferences.xml",
"java/res/xml/phone_as_a_security_key_accessory_filter.xml",
@@ -117,7 +117,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
"java/src/org/chromium/chrome/browser/ActivityTabProvider.java",
"java/src/org/chromium/chrome/browser/ActivityUtils.java",
@@ -968,6 +969,7 @@ chrome_java_sources = [
@@ -979,6 +980,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java",
"java/src/org/chromium/chrome/browser/privacy_sandbox/ChromeTrackingProtectionDelegate.java",
"java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionNoticeController.java",
@@ -243,7 +243,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -63,6 +63,10 @@ import org.chromium.base.task.TaskTraits;
@@ -66,6 +66,10 @@ import org.chromium.base.task.TaskTraits;
import org.chromium.build.annotations.UsedByReflection;
import org.chromium.cc.input.BrowserControlsState;
import org.chromium.chrome.R;
@@ -254,7 +254,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.app.metrics.LaunchCauseMetrics;
@@ -632,9 +636,14 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -676,9 +680,14 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
mTabModelOrchestrator.onNativeLibraryReady(getTabContentManager());
// For saving non-incognito tab closures for Recent Tabs.
@@ -272,7 +272,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
// Defer initialization of this helper so it triggers after TabModelFilter
// observers.
UndoRefocusHelper.initialize(
@@ -2229,8 +2238,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -2405,8 +2414,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
// We determine the model as soon as possible so every systems get initialized coherently.
boolean startIncognito =
@@ -287,15 +287,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -95,6 +95,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
@@ -95,6 +95,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager.ContextualSearchTabPromotionDelegate;
import org.chromium.chrome.browser.customtabs.features.minimizedcustomtab.MinimizedFeatureUtils;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
import org.chromium.chrome.browser.dependency_injection.ModuleFactoryOverrides;
import org.chromium.chrome.browser.device.DeviceClassManager;
@@ -2005,6 +2006,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -1996,6 +1997,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
@@ -316,7 +316,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
import org.chromium.chrome.browser.bookmarks.BookmarkFeatures;
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils;
@@ -100,6 +101,10 @@ import java.lang.annotation.RetentionPolicy;
@@ -103,6 +104,10 @@ import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
@@ -327,7 +327,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
/**
* Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu
* items based on activity state.
@@ -597,6 +602,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
@@ -604,6 +609,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
}
private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) {
@@ -341,7 +341,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
// We have to iterate all menu items since same menu item ID may be associated with more
// than one menu items.
boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU;
@@ -659,7 +671,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
@@ -667,7 +679,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
}
if (item.getItemId() == R.id.recent_tabs_menu_id) {
@@ -358,7 +358,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
}
if (item.getItemId() == R.id.menu_select_tabs) {
item.setVisible(isMenuSelectTabsVisible);
@@ -865,8 +885,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
@@ -876,8 +896,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
&& !isChromeScheme
&& !isFileScheme
&& !isContentScheme
@@ -452,17 +452,17 @@ 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/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -21,6 +21,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.supplier.ObservableSupplier;
@@ -22,6 +22,7 @@ import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.DefaultBrowserInfo;
import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
import org.chromium.chrome.browser.app.appmenu.DividerLineMenuItemViewBinder;
@@ -195,6 +196,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
downloadItemVisible = false;
@@ -218,6 +219,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
openInChromeItemVisible = false;
tryAddingReadAloud = false;
}
+ if (AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) {
+ downloadItemVisible = true;
@@ -473,8 +473,8 @@ 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/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
@@ -83,6 +83,9 @@ import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.components.version_info.VersionInfo;
@@ -83,6 +83,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.device.mojom.ScreenOrientationLockType;
+import org.chromium.base.ContextUtils;
@@ -483,7 +483,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -1294,7 +1297,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
@@ -1291,7 +1294,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
@Override
public boolean isIncognito() {
@@ -502,7 +502,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.app.download.home.DownloadActivity;
import org.chromium.chrome.browser.app.download.home.DownloadActivityLauncher;
@@ -74,6 +75,10 @@ import org.chromium.url.GURL;
import java.io.File;
@@ -514,7 +514,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
/** A class containing some utility static methods. */
public class DownloadUtils {
private static final String TAG = "download";
@@ -311,7 +316,16 @@ public class DownloadUtils {
@@ -286,7 +291,16 @@ public class DownloadUtils {
// Offline pages isn't supported in Incognito. This should be checked before calling
// OfflinePageBridge.getForProfile because OfflinePageBridge instance will not be found
// for incognito profile.
@@ -535,7 +535,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryContentManager.java
@@ -243,7 +243,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
@@ -239,7 +239,9 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
mHistoryAdapter.generateFooterItems();
// Listen to changes in sign in state.
@@ -546,7 +546,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
// Create PrefChangeRegistrar to receive notifications on preference changes.
mPrefChangeRegistrar = new PrefChangeRegistrar();
@@ -278,7 +280,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
@@ -275,7 +277,8 @@ public class HistoryContentManager implements SignInStateObserver, PrefObserver
mHistoryAdapter.onDestroyed();
mLargeIconBridge.destroy();
mLargeIconBridge = null;
@@ -559,7 +559,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
@@ -35,6 +35,7 @@ import com.google.android.material.tabs.TabLayout.OnTabSelectedListener;
@@ -23,6 +23,7 @@ import com.google.android.material.tabs.TabLayout;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
@@ -567,9 +567,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
@@ -75,6 +76,12 @@ import java.io.Serializable;
@@ -49,6 +50,12 @@ import org.chromium.ui.base.Clipboard;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.base.ContextUtils;
@@ -580,7 +580,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
/** Combines and manages the different UI components of browsing history. */
public class HistoryManager
implements OnMenuItemClickListener,
@@ -164,7 +171,7 @@ public class HistoryManager
@@ -133,7 +140,7 @@ public class HistoryManager
recordUserAction("Show");
// If incognito placeholder is shown, we don't need to create History UI elements.
@@ -589,17 +589,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
mSelectableListLayout = null;
mRootView = getIncognitoHistoryPlaceholderView();
return;
@@ -672,7 +679,7 @@ public class HistoryManager
private void swapContentView() {
boolean toHistoryClusters;
- if (mIsIncognito) {
+ if (shouldShowIncognitoPlaceholder()) {
return;
} else if (isHistoryClustersUIShowing()) {
toHistoryClusters = false;
@@ -736,9 +743,22 @@ public class HistoryManager
&& mContentView == mHistoryClustersCoordinator.getActivityContentView();
@@ -339,9 +346,22 @@ public class HistoryManager
onBackPressStateChanged();
}
+ public boolean isIncognito() { return mIsIncognito; }
@@ -622,15 +613,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
// If Incognito placeholder is shown no need to call any destroy method.
return;
}
@@ -758,7 +778,7 @@ public class HistoryManager
@@ -397,7 +417,7 @@ public class HistoryManager
* @return True if manager handles this event, false if it decides to ignore.
*/
public boolean onBackPressed() {
private boolean onBackPressed() {
- if (mIsIncognito || mSelectableListLayout == null) {
+ if (shouldShowIncognitoPlaceholder() || mSelectableListLayout == null) {
// If Incognito placeholder is shown, the back press should handled by HistoryActivity.
return false;
} else if (isHistoryClustersUIShowing()) {
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryPage.java
@@ -639,10 +630,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.history_clusters.HistoryClustersConstants;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
@@ -17,6 +18,12 @@ import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -16,6 +17,12 @@ import org.chromium.chrome.browser.ui.native_page.BasicNativePage;
import org.chromium.chrome.browser.ui.native_page.NativePageHost;
import org.chromium.components.embedder_support.util.UrlConstants;
@@ -655,7 +646,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
/** Native page for managing browsing history. */
public class HistoryPage extends BasicNativePage {
private HistoryManager mHistoryManager;
@@ -42,6 +49,14 @@ public class HistoryPage extends BasicNativePage {
@@ -41,6 +48,14 @@ public class HistoryPage extends BasicNativePage {
String url) {
super(host);
@@ -673,15 +664,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -16,6 +16,7 @@ import org.chromium.base.jank_tracker.JankTracker;
import org.chromium.base.supplier.DestroyableObservableSupplier;
@@ -17,6 +17,7 @@ import org.chromium.base.supplier.DestroyableObservableSupplier;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.Supplier;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.app.download.home.DownloadPage;
import org.chromium.chrome.browser.bookmarks.BookmarkPage;
@@ -276,7 +277,8 @@ public class NativePageFactory {
@@ -297,7 +298,8 @@ public class NativePageFactory {
String url, NativePage candidatePage, Tab tab, boolean isIncognito) {
NativePage page;
@@ -720,7 +711,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
mActiveTab = tab;
mTabModelSelector = tabModelSelector;
mShowHistoryManager = showHistoryManager;
@@ -258,6 +268,22 @@ public class RecentTabsManager
@@ -263,6 +273,22 @@ public class RecentTabsManager
*/
public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) {
if (mIsDestroyed) return;
@@ -911,7 +902,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
@@ -74,6 +74,7 @@ import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl;
@@ -75,6 +75,7 @@ import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl;
import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate;
import org.chromium.chrome.browser.sync.SyncServiceFactory;
import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher;
@@ -919,7 +910,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable;
import org.chromium.components.browser_ui.accessibility.AccessibilitySettings;
@@ -359,6 +360,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
@@ -362,6 +363,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
((PrivacySandboxSettingsBaseFragment) fragment)
.setSnackbarManager(getSnackbarManager());
}
@@ -1044,16 +1035,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore
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
@@ -129,6 +129,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetController;
@@ -139,6 +139,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetController;
import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFactory;
import org.chromium.ui.base.ActivityWindowAndroid;
import org.chromium.ui.base.DeviceFormFactor;
+import org.chromium.base.ContextUtils;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.ui.base.IntentRequestTracker;
import org.chromium.ui.dragdrop.DragDropGlobalState;
import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -942,7 +944,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -1011,7 +1013,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
() -> {
mTabCreatorManagerSupplier
.get()
@@ -1107,16 +1098,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
@@ -51,6 +51,8 @@ import org.chromium.components.embedder_support.util.UrlUtilities;
@@ -49,6 +49,8 @@ import org.chromium.chrome.features.start_surface.StartSurfaceUserData;
import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.url.GURL;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
+
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -673,6 +675,13 @@ public class TabPersistentStore {
@@ -670,6 +672,13 @@ public class TabPersistentStore {
}
}
}
@@ -1133,7 +1124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -40,6 +40,7 @@ import org.chromium.base.supplier.OneshotSupplier;
@@ -41,6 +41,7 @@ import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
@@ -1141,15 +1132,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController;
import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
@@ -590,7 +591,7 @@ public class ToolbarManager
@@ -615,7 +616,7 @@ public class ToolbarManager
TraceEvent.end("isOfflinePage");
return ret;
}
- });
+ }, AlwaysIncognitoLinkInterceptor.isAlwaysIncognito());
mControlContainer = controlContainer;
mToolbarHairline = mControlContainer.findViewById(R.id.toolbar_hairline);
assert mControlContainer != null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java
@@ -1198,7 +1189,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI
diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/android/historical_tab_saver.cc
--- a/chrome/browser/android/historical_tab_saver.cc
+++ b/chrome/browser/android/historical_tab_saver.cc
@@ -26,6 +26,11 @@
@@ -27,6 +27,11 @@
#include "components/sessions/core/tab_restore_service.h"
#include "content/public/browser/web_contents.h"
@@ -1210,7 +1201,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
@@ -38,7 +43,8 @@ constexpr int kInvalidGroupId = -1;
@@ -39,7 +44,8 @@ constexpr int kInvalidGroupId = -1;
void CreateHistoricalTab(
TabAndroid* tab_android,
@@ -1220,7 +1211,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
if (!tab_android) {
return;
}
@@ -49,9 +55,14 @@ void CreateHistoricalTab(
@@ -50,9 +56,14 @@ void CreateHistoricalTab(
return;
}
@@ -1237,16 +1228,16 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
if (!service) {
return;
}
@@ -99,7 +110,7 @@ void CreateHistoricalBulkClosure(
@@ -100,7 +111,7 @@ void CreateHistoricalBulkClosure(
std::vector<int> per_tab_android_group_id,
std::vector<TabAndroid*> tabs,
std::vector<raw_ptr<TabAndroid, VectorExperimental>> tabs,
std::vector<WebContentsStateByteBuffer> web_contents_state) {
- DCHECK(model);
+ if (!model) return;
DCHECK_EQ(android_group_ids.size(), group_titles.size());
DCHECK_EQ(per_tab_android_group_id.size(), tabs.size());
@@ -234,11 +245,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab(
@@ -235,11 +246,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab(
JNIEnv* env,
const JavaParamRef<jobject>& jtab_android,
const JavaParamRef<jobject>& state,
@@ -1264,7 +1255,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -350,6 +350,15 @@ ChromeAutocompleteProviderClient::GetProviderStateService() const {
@@ -357,6 +357,15 @@ ChromeAutocompleteProviderClient::GetProviderStateService() const {
return ProviderStateServiceFactory::GetForProfile(profile_);
}
@@ -1317,17 +1308,17 @@ diff --git a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc b
diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.cc b/chrome/browser/content_settings/host_content_settings_map_factory.cc
--- a/chrome/browser/content_settings/host_content_settings_map_factory.cc
+++ b/chrome/browser/content_settings/host_content_settings_map_factory.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/profiles/profile.h"
@@ -16,6 +16,7 @@
#include "chrome/browser/profiles/profiles_state.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/common/buildflags.h"
+#include "chrome/common/pref_names.h"
#include "components/content_settings/core/browser/content_settings_pref_provider.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/permissions/features.h"
@@ -119,9 +120,25 @@ scoped_refptr<RefcountedKeyedService>
should_record_metrics && ash::ProfileHelper::IsUserProfile(profile);
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
@@ -105,9 +106,25 @@ scoped_refptr<RefcountedKeyedService>
if (profile->IsOffTheRecord() && !profile->IsGuestSession())
GetForProfile(original_profile);
+ bool always_incognito_enabled = false;
+ bool force_save_site_settings = false;
@@ -1350,9 +1341,9 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
+ !force_save_site_settings && (profile->IsOffTheRecord() || profile->IsGuestSession()),
+ force_save_site_settings,
/*store_last_modified=*/true, profile->ShouldRestoreOldSessionCookies(),
should_record_metrics));
profiles::IsRegularUserProfile(profile)));
@@ -131,6 +148,9 @@ scoped_refptr<RefcountedKeyedService>
@@ -117,6 +134,9 @@ scoped_refptr<RefcountedKeyedService>
HostContentSettingsMap::WEBUI_ALLOWLIST_PROVIDER,
std::move(allowlist_provider));
@@ -1365,17 +1356,17 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c
diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc
--- a/chrome/browser/history/history_tab_helper.cc
+++ b/chrome/browser/history/history_tab_helper.cc
@@ -38,6 +38,9 @@
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
@@ -41,6 +41,9 @@
#include "components/feed/core/v2/public/feed_api.h"
#include "components/feed/core/v2/public/feed_service.h"
#include "content/public/browser/web_contents.h"
+#include "chrome/common/pref_names.h"
+#include "components/prefs/pref_registry_simple.h"
+#include "components/prefs/pref_service.h"
#else
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
@@ -445,6 +448,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
@@ -448,6 +451,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) {
history::HistoryService* HistoryTabHelper::GetHistoryService() {
Profile* profile =
Profile::FromBrowserContext(web_contents()->GetBrowserContext());
@@ -1389,7 +1380,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
if (profile->IsOffTheRecord())
return nullptr;
@@ -452,6 +462,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
@@ -455,6 +465,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() {
profile, ServiceAccessType::IMPLICIT_ACCESS);
}
@@ -1409,18 +1400,18 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo
diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/history/history_tab_helper.h
--- a/chrome/browser/history/history_tab_helper.h
+++ b/chrome/browser/history/history_tab_helper.h
@@ -14,6 +14,8 @@
@@ -15,6 +15,8 @@
#include "components/translate/core/browser/translate_driver.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
+#include "components/prefs/pref_registry_simple.h"
+#include "components/prefs/pref_service.h"
namespace history {
struct HistoryAddPageArgs;
@@ -53,6 +55,11 @@ class HistoryTabHelper
force_eligible_tab_for_testing_ = force;
}
@@ -54,6 +56,11 @@ class HistoryTabHelper
void SetAppId(const std::string& app_id) { app_id_ = app_id; }
#endif
+ static void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
@@ -1430,7 +1421,7 @@ diff --git a/chrome/browser/history/history_tab_helper.h b/chrome/browser/histor
private:
explicit HistoryTabHelper(content::WebContents* web_contents);
friend class content::WebContentsUserData<HistoryTabHelper>;
@@ -83,9 +90,6 @@ class HistoryTabHelper
@@ -89,9 +96,6 @@ class HistoryTabHelper
void OnLanguageDetermined(
const translate::LanguageDetectionDetails& details) override;
@@ -1643,9 +1634,9 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
+ last_n_ongoing_snapshot_info_.get(),
+ /*user_requested*/ false));
IsSavingSamePageEnum saving_same_page_value = IsSavingSamePageEnum::kNewPage;
if (last_n_latest_saved_snapshot_info_) {
@@ -420,11 +434,12 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) {
last_n_latest_saved_snapshot_info_.reset();
}
@@ -403,11 +417,12 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) {
downloads_latest_saved_snapshot_info_->request_id,
downloads_latest_saved_snapshot_info_->origin);
std::vector<int64_t> ids{downloads_latest_saved_snapshot_info_->request_id};
@@ -1659,7 +1650,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
OfflinePageModel::DeletePageResult::SUCCESS);
}
}
@@ -441,6 +456,7 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) {
@@ -424,6 +439,7 @@ void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) {
// for early termination in case of errors.
void RecentTabHelper::ContinueSnapshotWithIdsToPurge(
SnapshotProgressInfo* snapshot_info,
@@ -1667,7 +1658,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
const std::vector<int64_t>& page_ids) {
DCHECK(snapshot_info);
@@ -450,13 +466,20 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge(
@@ -433,13 +449,20 @@ void RecentTabHelper::ContinueSnapshotWithIdsToPurge(
criteria.offline_ids = page_ids;
page_model_->DeletePagesWithCriteria(
criteria, base::BindOnce(&RecentTabHelper::ContinueSnapshotAfterPurge,
@@ -1693,7 +1684,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/
diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/offline_pages/recent_tab_helper.h
--- a/chrome/browser/offline_pages/recent_tab_helper.h
+++ b/chrome/browser/offline_pages/recent_tab_helper.h
@@ -123,8 +123,10 @@ class RecentTabHelper
@@ -106,8 +106,10 @@ class RecentTabHelper
bool EnsureInitialized();
void ContinueSnapshotWithIdsToPurge(SnapshotProgressInfo* snapshot_info,
@@ -1704,7 +1695,7 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.h b/chrome/browser/o
OfflinePageModel::DeletePageResult result);
void SavePageCallback(SnapshotProgressInfo* snapshot_info,
OfflinePageModel::SavePageResult result,
@@ -146,6 +148,9 @@ class RecentTabHelper
@@ -129,6 +131,9 @@ class RecentTabHelper
// Not page-specific.
bool snapshots_enabled_ = false;
@@ -1738,7 +1729,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -256,6 +256,7 @@
@@ -249,6 +249,7 @@
#if BUILDFLAG(IS_ANDROID)
#include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h"
@@ -1746,7 +1737,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
#include "chrome/browser/android/ntp/recent_tabs_page_prefs.h"
#include "chrome/browser/android/oom_intervention/oom_intervention_decider.h"
@@ -1857,6 +1858,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
@@ -1856,6 +1857,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry);
variations::VariationsService::RegisterProfilePrefs(registry);
webapps::InstallPromptPrefs::RegisterProfilePrefs(registry);
@@ -1790,10 +1781,10 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi
@@ -6,7 +6,7 @@
#define CHROME_BROWSER_PROFILES_PROFILE_SELECTIONS_H_
#include "base/feature_list.h"
#include <optional>
-
+#include "build/build_config.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "base/feature_list.h"
class Profile;
@@ -27,6 +27,11 @@ bool AreKeyedServicesDisabledForProfileByDefault(const Profile* profile);
@@ -1885,7 +1876,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1225,6 +1225,37 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1228,6 +1228,37 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_HISTORY_SUMMARY_SYNCED_NO_LINK" desc="A text for the basic tab explaining browsing history for users with history sync. This version is shown when the link to MyActivity is displayed separately.">
Clears history from all synced devices
</message>
@@ -1991,7 +1982,7 @@ new file mode 100644
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -3938,6 +3938,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] =
@@ -3957,6 +3957,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] =
"net.out_of_process_system_dns_resolution_enabled";
#endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
@@ -2007,7 +1998,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc
--- a/components/content_settings/core/browser/content_settings_pref_provider.cc
+++ b/components/content_settings/core/browser/content_settings_pref_provider.cc
@@ -91,10 +91,12 @@ void PrefProvider::RegisterProfilePrefs(
@@ -96,10 +96,12 @@ void PrefProvider::RegisterProfilePrefs(
PrefProvider::PrefProvider(PrefService* prefs,
bool off_the_record,
@@ -2020,26 +2011,25 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
store_last_modified_(store_last_modified),
clock_(base::DefaultClock::GetInstance()) {
TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider");
@@ -117,10 +119,14 @@ PrefProvider::PrefProvider(PrefService* prefs,
@@ -122,11 +124,13 @@ PrefProvider::PrefProvider(PrefService* prefs,
WebsiteSettingsRegistry* website_settings =
WebsiteSettingsRegistry::GetInstance();
for (const WebsiteSettingsInfo* info : *website_settings) {
+ bool save_site_settings = force_save_site_settings_ &&
+ info->incognito_behavior() == WebsiteSettingsInfo::INHERIT_IN_INCOGNITO;
content_settings_prefs_.insert(std::make_pair(
info->type(), std::make_unique<ContentSettingsPref>(
info->type(), prefs_, &pref_change_registrar_,
- info->pref_name(), off_the_record_, restore_session,
+ info->pref_name(),
+ off_the_record_ && !save_site_settings,
+ restore_session,
base::BindRepeating(&PrefProvider::Notify,
base::Unretained(this)))));
info->type(),
std::make_unique<ContentSettingsPref>(
info->type(), prefs_, &pref_change_registrar_, info->pref_name(),
- info->partitioned_pref_name(), off_the_record_, restore_session,
+ info->partitioned_pref_name(), off_the_record_ && !save_site_settings, restore_session,
base::BindRepeating(&PrefProvider::Notify,
base::Unretained(this)))));
}
diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h
--- a/components/content_settings/core/browser/content_settings_pref_provider.h
+++ b/components/content_settings/core/browser/content_settings_pref_provider.h
@@ -37,6 +37,7 @@ class PrefProvider : public UserModifiableProvider {
@@ -38,6 +38,7 @@ class PrefProvider : public UserModifiableProvider {
PrefProvider(PrefService* prefs,
bool off_the_record,
@@ -2047,7 +2037,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
bool store_last_modified,
bool restore_session);
@@ -116,6 +117,7 @@ class PrefProvider : public UserModifiableProvider {
@@ -127,6 +128,7 @@ class PrefProvider : public UserModifiableProvider {
raw_ptr<PrefService> prefs_;
const bool off_the_record_;
@@ -2058,7 +2048,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov
diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -288,6 +288,7 @@ struct ContentSettingEntry {
@@ -277,6 +277,7 @@ struct ContentSettingEntry {
HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
bool is_off_the_record,
@@ -2066,7 +2056,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
bool store_last_modified,
bool restore_session,
bool should_record_metrics)
@@ -297,6 +298,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
@@ -286,6 +287,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
#endif
prefs_(prefs),
is_off_the_record_(is_off_the_record),
@@ -2074,7 +2064,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
store_last_modified_(store_last_modified),
allow_invalid_secondary_pattern_for_testing_(false),
clock_(base::DefaultClock::GetInstance()) {
@@ -309,7 +311,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
@@ -298,7 +300,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
policy_provider->AddObserver(this);
auto pref_provider_ptr = std::make_unique<content_settings::PrefProvider>(
@@ -2082,7 +2072,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
+ prefs_, is_off_the_record_, force_save_site_settings_, store_last_modified_, restore_session);
pref_provider_ = pref_provider_ptr.get();
content_settings_providers_[PREF_PROVIDER] = std::move(pref_provider_ptr);
user_modifiable_providers_.push_back(pref_provider_);
user_modifiable_providers_.push_back(pref_provider_.get());
diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h
--- a/components/content_settings/core/browser/host_content_settings_map.h
+++ b/components/content_settings/core/browser/host_content_settings_map.h
@@ -2094,7 +2084,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
bool store_last_modified,
bool restore_session,
bool should_record_metrics);
@@ -531,6 +532,8 @@ class HostContentSettingsMap : public content_settings::Observer,
@@ -544,6 +545,8 @@ class HostContentSettingsMap : public content_settings::Observer,
// Whether this settings map is for an incognito or guest session.
bool is_off_the_record_;
@@ -2106,7 +2096,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map.
diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/components/omnibox/browser/autocomplete_provider_client.cc
--- a/components/omnibox/browser/autocomplete_provider_client.cc
+++ b/components/omnibox/browser/autocomplete_provider_client.cc
@@ -29,3 +29,7 @@ base::WeakPtr<AutocompleteProviderClient>
@@ -33,3 +33,7 @@ base::WeakPtr<AutocompleteProviderClient>
AutocompleteProviderClient::GetWeakPtr() {
return nullptr;
}
@@ -2117,7 +2107,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.cc b/compon
diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/components/omnibox/browser/autocomplete_provider_client.h
--- a/components/omnibox/browser/autocomplete_provider_client.h
+++ b/components/omnibox/browser/autocomplete_provider_client.h
@@ -138,6 +138,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client {
@@ -137,6 +137,7 @@ class AutocompleteProviderClient : public OmniboxAction::Client {
virtual bool IsOffTheRecord() const = 0;
virtual bool IsIncognitoProfile() const = 0;
virtual bool IsGuestSession() const = 0;
@@ -2128,7 +2118,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone
diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc
--- a/components/omnibox/browser/base_search_provider.cc
+++ b/components/omnibox/browser/base_search_provider.cc
@@ -349,7 +349,7 @@ bool BaseSearchProvider::CanSendZeroSuggestRequest(
@@ -350,7 +350,7 @@ bool BaseSearchProvider::CanSendSuggestRequestWithoutPageURL(
}
// Don't make a suggest request if in incognito mode.
@@ -2140,7 +2130,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
--- a/components/omnibox/browser/search_provider.cc
+++ b/components/omnibox/browser/search_provider.cc
@@ -767,7 +767,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const {
@@ -775,7 +775,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const {
// keyword input to a keyword suggest server, if any.)
const TemplateURL* default_url = providers_.GetDefaultProviderURL();
const TemplateURL* keyword_url = providers_.GetKeywordProviderURL();
@@ -279,7 +279,7 @@ new file mode 100644
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -250,7 +250,7 @@ void ContentSettingsRegistry::Init() {
@@ -255,7 +255,7 @@ void ContentSettingsRegistry::Init() {
ContentSettingsInfo::INHERIT_IN_INCOGNITO,
ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY);
@@ -299,7 +299,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi
#include "third_party/blink/public/platform/web_media_player.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_local_frame_client.h"
@@ -332,6 +333,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() {
@@ -330,6 +331,8 @@ void AutoplayPolicy::TryUnlockingUserGesture() {
}
bool AutoplayPolicy::IsGestureNeededForPlayback() const {
@@ -308,7 +308,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi
if (!IsLockedPendingUserGesture())
return false;
@@ -430,6 +433,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
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.h
+++ b/third_party/blink/renderer/core/html/media/autoplay_policy.h
@@ -137,6 +137,10 @@ class CORE_EXPORT AutoplayPolicy final
@@ -138,6 +138,10 @@ class CORE_EXPORT AutoplayPolicy final
// should use, if checking to see if an action is allowed.
bool IsLockedPendingUserGesture() const;
@@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../menu/bookmark_toolbar_menu_improved.xml | 14 +
.../browser/TabbedModeTabDelegateFactory.java | 5 +-
.../app/bookmarks/BookmarkActivity.java | 32 ++
.../browser/bookmarks/BookmarkBridge.java | 280 +++++++++++++++++
.../browser/bookmarks/BookmarkBridge.java | 285 +++++++++++++++++
.../browser/bookmarks/BookmarkDelegate.java | 10 +
.../bookmarks/BookmarkManagerCoordinator.java | 9 +
.../bookmarks/BookmarkManagerMediator.java | 23 ++
@@ -26,11 +26,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bookmarks/BookmarkToolbarViewBinder.java | 6 +
.../native_page/NativePageFactory.java | 11 +-
chrome/browser/BUILD.gn | 11 +-
.../bookmarks/android/bookmark_bridge.cc | 283 ++++++++++++++++++
.../bookmarks/android/bookmark_bridge.cc | 287 ++++++++++++++++++
.../bookmarks/android/bookmark_bridge.h | 30 +-
.../browser/bookmarks/bookmark_html_writer.cc | 11 +
.../dialogs/DownloadLocationCustomView.java | 8 +-
.../DownloadLocationDialogCoordinator.java | 8 +-
.../DownloadLocationDialogCoordinator.java | 10 +-
.../flags/android/chrome_feature_list.cc | 1 +
.../browser/flags/ChromeFeatureList.java | 1 +
chrome/browser/importer/profile_writer.cc | 10 +
@@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
ui/shell_dialogs/select_file_dialog_linux.cc | 4 +
ui/shell_dialogs/select_file_dialog_linux.h | 2 +
ui/shell_dialogs/select_file_dialog_win.cc | 5 +
43 files changed, 918 insertions(+), 29 deletions(-)
43 files changed, 928 insertions(+), 30 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc
@@ -120,15 +120,15 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java
@@ -11,6 +11,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.jank_tracker.JankTracker;
@@ -13,6 +13,7 @@ import org.chromium.base.jank_tracker.JankTracker;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.Supplier;
+import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid;
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
@@ -50,7 +51,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -53,7 +54,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
* {@link ChromeTabbedActivity}.
*/
public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
@@ -137,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate;
private final Supplier<ShareDelegate> mShareDelegateSupplier;
private final Supplier<EphemeralTabCoordinator> mEphemeralTabCoordinatorSupplier;
@@ -77,7 +78,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
@@ -82,7 +83,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
private NativePageFactory mNativePageFactory;
public TabbedModeTabDelegateFactory(
@@ -149,8 +149,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
@@ -21,6 +21,11 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.Profile;
@@ -21,6 +21,11 @@ import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.embedder_support.util.UrlConstants;
+import org.chromium.ui.base.ActivityWindowAndroid;
@@ -171,10 +171,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -66,8 +74,23 @@ public class BookmarkActivity extends SnackbarActivity {
mBookmarkManagerCoordinator::onBackPressed,
SecondaryActivity.BOOKMARK);
}
@@ -58,8 +66,23 @@ public class BookmarkActivity extends SnackbarActivity {
getOnBackPressedDispatcher(),
mBookmarkManagerCoordinator,
SecondaryActivity.BOOKMARK);
+
+ final boolean listenToActivityState = true;
+ mIntentRequestTracker = IntentRequestTracker.createFromActivity(this);
@@ -195,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
@Override
protected void onDestroy() {
super.onDestroy();
@@ -77,6 +100,7 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -69,6 +92,7 @@ public class BookmarkActivity extends SnackbarActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@@ -203,7 +203,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
BookmarkId bookmarkId =
BookmarkId.getBookmarkIdFromString(
@@ -85,6 +109,14 @@ public class BookmarkActivity extends SnackbarActivity {
@@ -77,6 +101,14 @@ public class BookmarkActivity extends SnackbarActivity {
}
}
@@ -221,62 +221,56 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -4,7 +4,20 @@
package org.chromium.chrome.browser.bookmarks;
@@ -33,6 +33,48 @@ import org.chromium.url.GURL;
import java.util.ArrayList;
import java.util.List;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.Uri;
+import android.content.res.Resources;
+import android.content.ContentResolver;
+import android.net.Uri;
+import android.provider.Browser;
+import android.provider.DocumentsContract;
+import android.Manifest.permission;
+import android.view.View;
+import android.view.LayoutInflater;
+
+import androidx.appcompat.app.AlertDialog;
import android.os.SystemClock;
+import android.os.Build;
import android.text.TextUtils;
import android.util.Pair;
@@ -36,6 +49,33 @@ import org.chromium.url.GURL;
import java.util.ArrayList;
import java.util.List;
+
+import java.io.File;
+
+import org.chromium.base.ContentUriUtils;
+import org.chromium.base.shared_preferences.SharedPreferencesManager;
+import org.chromium.base.task.AsyncTask;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
+import org.chromium.chrome.browser.IntentHandler;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.base.shared_preferences.SharedPreferencesManager;
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.ui.base.PageTransition;
+import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.modaldialog.ModalDialogManager;
+
+import android.view.View;
+import android.view.LayoutInflater;
+import org.chromium.ui.modelutil.PropertyModel;
+import org.chromium.ui.modaldialog.ModalDialogProperties;
+import org.chromium.ui.modaldialog.DialogDismissalCause;
+import org.chromium.chrome.browser.download.DownloadLocationDialogType;
+import org.chromium.chrome.browser.download.settings.DownloadLocationHelperImpl;
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogController;
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogCoordinator;
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationCustomView;
+import org.chromium.chrome.browser.download.DirectoryOption;
+import android.content.res.Resources;
+import org.chromium.base.task.AsyncTask;
+
+import java.io.File;
+import org.chromium.chrome.browser.profiles.ProfileManager;
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.ui.base.PageTransition;
+import org.chromium.ui.base.WindowAndroid;
+import org.chromium.ui.modelutil.PropertyModel;
+import org.chromium.ui.modaldialog.ModalDialogManager;
+import org.chromium.ui.modaldialog.ModalDialogProperties;
+import org.chromium.ui.modaldialog.DialogDismissalCause;
+
/**
* Provides the communication channel for Android to fetch and manipulate the bookmark model stored
* in native.
@@ -435,6 +475,209 @@ class BookmarkBridge {
@@ -483,6 +525,212 @@ class BookmarkBridge {
.getTotalBookmarkCount(mNativeBookmarkBridge, id.getId(), id.getType());
}
@@ -430,7 +424,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
+ // Actually show the dialog.
+ mCustomView = (DownloadLocationCustomView) LayoutInflater.from(context).inflate(
+ R.layout.download_location_dialog, null);
+ mCustomView.initialize(DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0);
+ mCustomView.initialize(DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0,
+ (isChecked) -> {},
+ new DownloadLocationHelperImpl(mProfile));
+ mCustomView.setTitle(context.getString(R.string.export_bookmarks_alert_title));
+ mCustomView.setFileName(standardBoorkmarkName);
+ mCustomView.mDontShowAgain.setVisibility(View.GONE);
@@ -480,13 +476,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
+ };
+ dialog.initialize(controller);
+ dialog.showDialog(context, modalDialogManager, /*totalBytes*/ 0,
+ DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "", /*isIncognito*/ false);
+ DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "",
+ ProfileManager.getLastUsedRegularProfile());
+ }
+
/**
* Synchronously gets a list of bookmarks that match the specified search query.
*
@@ -950,6 +1193,39 @@ class BookmarkBridge {
@@ -1036,6 +1284,39 @@ class BookmarkBridge {
depthList.add(depth);
}
@@ -526,7 +523,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
List<Pair<Integer, Integer>> pairList = new ArrayList<>();
for (int i = 0; i < left.length; i++) {
@@ -994,6 +1270,10 @@ class BookmarkBridge {
@@ -1094,6 +1375,10 @@ class BookmarkBridge {
void getChildIds(
long nativeBookmarkBridge, long id, int type, List<BookmarkId> bookmarksList);
@@ -560,7 +557,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java
@@ -47,6 +47,8 @@ import org.chromium.components.image_fetcher.ImageFetcher;
@@ -48,6 +48,8 @@ import org.chromium.components.image_fetcher.ImageFetcher;
import org.chromium.components.image_fetcher.ImageFetcherConfig;
import org.chromium.components.image_fetcher.ImageFetcherFactory;
import org.chromium.ui.KeyboardVisibilityDelegate;
@@ -569,7 +566,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType;
import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
@@ -320,6 +322,13 @@ public class BookmarkManagerCoordinator
@@ -326,6 +328,13 @@ public class BookmarkManagerCoordinator
// Public API implementation.
@@ -605,7 +602,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/** Keeps track of whether drag is enabled / active for bookmark lists. */
private class BookmarkDragStateDelegate implements DragStateDelegate {
private BookmarkDelegate mBookmarkDelegate;
@@ -551,6 +556,14 @@ class BookmarkManagerMediator
@@ -554,6 +559,14 @@ class BookmarkManagerMediator
mNativePage = nativePage;
}
@@ -620,7 +617,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/** See BookmarkManager(Coordinator)#updateForUrl */
void updateForUrl(String url) {
// Bookmark model is null if the manager has been destroyed.
@@ -727,6 +740,16 @@ class BookmarkManagerMediator
@@ -734,6 +747,16 @@ class BookmarkManagerMediator
}
}
@@ -653,14 +650,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
@@ -31,7 +34,7 @@ public class BookmarkPage extends BasicNativePage {
ComponentName componentName,
SnackbarManager snackbarManager,
boolean isIncognito,
Profile profile,
- NativePageHost host) {
+ NativePageHost host, ChromeActivity activity) {
super(host);
mBookmarkManagerCoordinator =
@@ -44,6 +47,9 @@ public class BookmarkPage extends BasicNativePage {
Profile.getLastUsedRegularProfile(),
@@ -43,6 +46,9 @@ public class BookmarkPage extends BasicNativePage {
profile,
new BookmarkUiPrefs(ChromeSharedPreferences.getInstance()));
mBookmarkManagerCoordinator.setBasicNativePage(this);
+ mBookmarkManagerCoordinator.setWindow(activity.getWindowAndroid(),
@@ -726,7 +723,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java
@@ -129,6 +129,10 @@ class BookmarkToolbarMediator
@@ -132,6 +132,10 @@ class BookmarkToolbarMediator
mBookmarkDelegate = bookmarkDelegate;
mModel.set(
BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE, this::onNavigateBack);
@@ -780,15 +777,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java
@@ -16,6 +16,7 @@ import org.chromium.base.jank_tracker.JankTracker;
import org.chromium.base.supplier.DestroyableObservableSupplier;
@@ -17,6 +17,7 @@ import org.chromium.base.supplier.DestroyableObservableSupplier;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.supplier.Supplier;
+import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.app.download.home.DownloadPage;
import org.chromium.chrome.browser.bookmarks.BookmarkPage;
import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier;
@@ -52,7 +53,7 @@ import org.chromium.ui.util.ColorUtils;
@@ -54,7 +55,7 @@ import org.chromium.ui.util.ColorUtils;
* Creates NativePage objects to show chrome-native:// URLs using the native Android view system.
*/
public class NativePageFactory {
@@ -797,7 +794,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
private final BottomSheetController mBottomSheetController;
private final BrowserControlsManager mBrowserControlsManager;
private final Supplier<Tab> mCurrentTabSupplier;
@@ -70,7 +71,7 @@ public class NativePageFactory {
@@ -74,7 +75,7 @@ public class NativePageFactory {
private NativePageBuilder mNativePageBuilder;
public NativePageFactory(
@@ -806,7 +803,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
@NonNull BottomSheetController sheetController,
@NonNull BrowserControlsManager browserControlsManager,
@NonNull Supplier<Tab> currentTabSupplier,
@@ -130,7 +131,7 @@ public class NativePageFactory {
@@ -140,7 +141,7 @@ public class NativePageFactory {
@VisibleForTesting
static class NativePageBuilder {
@@ -815,8 +812,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
private final BottomSheetController mBottomSheetController;
private final Supplier<NewTabPageUma> mUma;
private final BrowserControlsManager mBrowserControlsManager;
@@ -146,7 +147,7 @@ public class NativePageFactory {
private final ObservableSupplier<TabContentManager> mTabContentManagerSupplier;
@@ -158,7 +159,7 @@ public class NativePageFactory {
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
public NativePageBuilder(
- Activity activity,
@@ -824,10 +821,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
Supplier<NewTabPageUma> uma,
BottomSheetController sheetController,
BrowserControlsManager browserControlsManager,
@@ -208,7 +209,7 @@ public class NativePageFactory {
@@ -228,7 +229,7 @@ public class NativePageFactory {
mActivity.getComponentName(),
mSnackbarManagerSupplier.get(),
mTabModelSelector.isIncognitoSelected(),
tab.getProfile(),
- new TabShim(tab, mBrowserControlsManager, mTabModelSelector));
+ new TabShim(tab, mBrowserControlsManager, mTabModelSelector), mActivity);
}
@@ -836,7 +833,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -199,6 +199,8 @@ static_library("browser") {
@@ -201,6 +201,8 @@ static_library("browser") {
"bluetooth/chrome_bluetooth_delegate_impl_client.h",
"bookmarks/bookmark_model_factory.cc",
"bookmarks/bookmark_model_factory.h",
@@ -845,7 +842,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"bookmarks/chrome_bookmark_client.cc",
"bookmarks/chrome_bookmark_client.h",
"bookmarks/managed_bookmark_service_factory.cc",
@@ -1939,6 +1941,13 @@ static_library("browser") {
@@ -1935,6 +1937,13 @@ static_library("browser") {
]
}
@@ -859,7 +856,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
configs += [
"//build/config/compiler:wexit_time_destructors",
"//build/config:precompiled_headers",
@@ -3664,8 +3673,6 @@ static_library("browser") {
@@ -3649,8 +3658,6 @@ static_library("browser") {
"badging/badge_manager_factory.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
@@ -871,7 +868,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc
--- a/chrome/browser/bookmarks/android/bookmark_bridge.cc
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc
@@ -56,6 +56,25 @@
@@ -59,6 +59,28 @@
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
@@ -893,11 +890,14 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+#include "base/task/task_traits.h"
+#include "base/task/thread_pool.h"
+#include "content/public/browser/browser_task_traits.h"
+#include "base/files/file_path.h"
+#include "ui/shell_dialogs/selected_file_info.h"
+#include "ui/shell_dialogs/select_file_dialog.h"
+
using base::android::AttachCurrentThread;
using base::android::ConvertUTF16ToJavaString;
using base::android::ConvertUTF8ToJavaString;
@@ -73,12 +92,96 @@ using bookmarks::android::JavaBookmarkIdGetType;
@@ -76,12 +98,96 @@ using bookmarks::android::JavaBookmarkIdGetType;
using content::BrowserThread;
using power_bookmarks::PowerBookmarkMeta;
@@ -994,10 +994,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
class BookmarkTitleComparer {
public:
explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge,
@@ -199,6 +302,10 @@ BookmarkBridge::~BookmarkBridge() {
if (partner_bookmarks_shim_)
partner_bookmarks_shim_->RemoveObserver(this);
reading_list_manager_->RemoveObserver(this);
@@ -232,6 +338,10 @@ BookmarkBridge::~BookmarkBridge() {
partner_bookmarks_shim_observation_.Reset();
bookmark_model_observation_.Reset();
profile_observation_.Reset();
+ // There may be pending file dialogs, we need to tell them that we've gone
+ // away so they don't try and call back to us.
+ if (select_file_dialog_)
@@ -1005,7 +1005,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
}
void BookmarkBridge::Destroy(JNIEnv*) {
@@ -539,6 +646,182 @@ jint BookmarkBridge::GetTotalBookmarkCount(
@@ -668,6 +778,183 @@ jint BookmarkBridge::GetTotalBookmarkCount(
return count;
}
@@ -1087,8 +1087,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+ return std::make_unique<TemplateURL>(data);
+}
+
+void BookmarkBridge::FileSelected(const base::FilePath& path, int index,
+void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index,
+ void* params) {
+ base::FilePath path = file.path();
+ base::ThreadPool::PostTaskAndReplyWithResult(
+ FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()},
+ base::BindOnce(&BookmarkBridge::FileSelectedImpl,
@@ -1191,7 +1192,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser/bookmarks/android/bookmark_bridge.h
--- a/chrome/browser/bookmarks/android/bookmark_bridge.h
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.h
@@ -20,6 +20,7 @@
@@ -21,6 +21,7 @@
#include "base/supports_user_data.h"
#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
#include "chrome/browser/image_service/image_service_factory.h"
@@ -1199,7 +1200,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_observer.h"
#include "chrome/browser/reading_list/android/reading_list_manager.h"
@@ -31,6 +32,9 @@
@@ -33,6 +34,9 @@
#include "components/prefs/pref_change_registrar.h"
#include "url/android/gurl_android.h"
@@ -1209,22 +1210,22 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
class BookmarkBridgeTest;
// The delegate to fetch bookmarks information for the Android native
@@ -42,7 +46,8 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
@@ -44,7 +48,8 @@ class BookmarkBridge : public ProfileObserver,
public bookmarks::BaseBookmarkModelObserver,
public PartnerBookmarksShim::Observer,
public ReadingListManager::Observer,
public ProfileObserver,
- public base::SupportsUserData::Data {
+ public base::SupportsUserData::Data,
+ public ui::SelectFileDialog::Listener {
public:
BookmarkBridge(Profile* profile,
bookmarks::BookmarkModel* model,
@@ -69,6 +74,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
BookmarkBridge(
Profile* profile,
@@ -81,6 +86,12 @@ class BookmarkBridge : public ProfileObserver,
bool IsDoingExtensiveChanges(JNIEnv* env);
+ // SelectFileDialog::Listener implementation.
+ void FileSelected(const base::FilePath& path,
+ void FileSelected(const ui::SelectedFileInfo& file,
+ int index,
+ void* params) override;
+ void FileSelectionCanceled(void* params) override;
@@ -1232,7 +1233,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
jboolean IsEditBookmarksEnabled(JNIEnv* env);
void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env);
@@ -81,6 +92,15 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
@@ -93,6 +104,15 @@ class BookmarkBridge : public ProfileObserver,
jlong id,
jint type);
@@ -1248,10 +1249,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
void GetAllFoldersWithDepths(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& j_folders_obj,
@@ -310,12 +330,16 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
@@ -356,12 +376,16 @@ class BookmarkBridge : public ProfileObserver,
void DestroyJavaObject();
raw_ptr<Profile> profile_;
raw_ptr<Profile> profile_; // weak
+ base::FilePath export_path_;
+ raw_ptr<BookmarksExportObserver> observer_; // weak
+
@@ -1265,9 +1266,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
// Information about the Partner bookmarks (must check for IsLoaded()).
// This is owned by profile.
@@ -329,6 +353,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
// Observes the profile destruction and creation.
base::ScopedObservation<Profile, ProfileObserver> profile_observation_{this};
@@ -389,6 +413,10 @@ class BookmarkBridge : public ProfileObserver,
bool suppress_observer_notifications_ = false;
+ const std::string FileSelectedImpl(const base::FilePath& path);
+ void FileSelectedImplOnUIThread(const base::FilePath& path,
@@ -1289,7 +1290,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
#include "chrome/browser/profiles/profile.h"
@@ -229,7 +232,15 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
@@ -234,7 +237,15 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
// Opens the file, returning true on success.
bool OpenFile() {
int flags = base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_WRITE;
@@ -1316,17 +1317,17 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
+ public CheckBox mDontShowAgain;
private @DownloadLocationDialogType int mDialogType;
private long mTotalBytes;
@@ -70,7 +70,7 @@ public class DownloadLocationCustomView extends ScrollView
private Callback<Boolean> mOnClickedCallback;
@@ -72,7 +72,7 @@ public class DownloadLocationCustomView extends ScrollView
mDontShowAgain = findViewById(R.id.show_again_checkbox);
}
- void initialize(@DownloadLocationDialogType int dialogType, long totalBytes) {
+ public void initialize(@DownloadLocationDialogType int dialogType, long totalBytes) {
// TODO(xingliu): Remove this function, currently used by smart suggestion.
mDialogType = dialogType;
mTotalBytes = totalBytes;
@@ -123,7 +123,7 @@ public class DownloadLocationCustomView extends ScrollView
- void initialize(
+ public void initialize(
@DownloadLocationDialogType int dialogType,
long totalBytes,
Callback<Boolean> onClickedCallback,
@@ -130,7 +130,7 @@ public class DownloadLocationCustomView extends ScrollView
* @return The text that the user inputted as the name of the file.
*/
@Nullable
@@ -1335,7 +1336,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
if (mFileName == null || mFileName.getText() == null) return null;
return mFileName.getText().toString();
}
@@ -132,7 +132,7 @@ public class DownloadLocationCustomView extends ScrollView
@@ -139,7 +139,7 @@ public class DownloadLocationCustomView extends ScrollView
* @return The file path based on what the user selected as the location of the file.
*/
@Nullable
@@ -1347,7 +1348,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java
@@ -35,12 +35,12 @@ import java.util.ArrayList;
@@ -37,18 +37,18 @@ import java.util.ArrayList;
*/
public class DownloadLocationDialogCoordinator implements ModalDialogProperties.Controller {
@NonNull private DownloadLocationDialogController mController;
@@ -1363,7 +1364,14 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
private long mTotalBytes;
private @DownloadLocationDialogType int mDialogType;
private String mSuggestedPath;
@@ -137,7 +137,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties.
private Context mContext;
private boolean mHasMultipleDownloadLocations;
- private Profile mProfile;
+ protected Profile mProfile;
private boolean mLocationDialogManaged;
/**
@@ -140,7 +140,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties.
* Called after retrieved the download directory options.
* @param dirs An list of available download directories.
*/
@@ -1375,25 +1383,25 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
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
@@ -189,6 +189,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -176,6 +176,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kCacheActivityTaskID,
&kCastDeviceFilter,
&kClearOmniboxFocusAfterNavigation,
&kCloseTabSaveTabList,
+ &kBookmarksExportUseSaf,
&kCriticalPersistedTabData,
&kCreateNewTabInitializeRenderer,
&kCCTBottomBarSwipeUpGesture,
&kCCTBrandTransparencyMemoryImprovement,
&kCCTClientDataHeader,
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
@@ -494,6 +494,7 @@ public abstract class ChromeFeatureList {
@@ -502,6 +502,7 @@ public abstract class ChromeFeatureList {
public static final String USER_BYPASS_UI = "UserBypassUI";
public static final String VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR =
"VerticalAutomotiveBackButtonToolbar";
+ public static final String BOOKMARKS_EXPORT_USESAF = "BookmarksExportUseSaf";
public static final String VOICE_BUTTON_IN_TOP_TOOLBAR = "VoiceButtonInTopToolbar";
public static final String VOICE_SEARCH_AUDIO_CAPTURE_POLICY = "VoiceSearchAudioCapturePolicy";
public static final String WEBNOTES_STYLIZE = "WebNotesStylize";
public static final String WEB_APK_ALLOW_ICON_UPDATE = "WebApkAllowIconUpdate";
public static final String WEB_APK_BACKUP_AND_RESTORE_BACKEND = "WebApkBackupAndRestoreBackend";
diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc
--- a/chrome/browser/importer/profile_writer.cc
+++ b/chrome/browser/importer/profile_writer.cc
@@ -1449,7 +1457,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
/**
* Whether Chrome is set as the default browser.
@@ -938,6 +940,7 @@ public final class ChromePreferenceKeys {
@@ -894,6 +896,7 @@ public final class ChromePreferenceKeys {
AUTOFILL_ASSISTANT_PROACTIVE_HELP_ENABLED,
APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE,
APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO,
@@ -1488,7 +1496,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -403,6 +403,9 @@ static_library("common_lib") {
@@ -404,6 +404,9 @@ static_library("common_lib") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
@@ -1501,7 +1509,7 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
--- a/chrome/utility/BUILD.gn
+++ b/chrome/utility/BUILD.gn
@@ -85,8 +85,6 @@ static_library("utility") {
@@ -84,8 +84,6 @@ static_library("utility") {
if (!is_android) {
sources += [
@@ -1510,7 +1518,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
"importer/bookmarks_file_importer.cc",
"importer/bookmarks_file_importer.h",
"importer/external_process_importer_bridge.cc",
@@ -218,6 +216,11 @@ static_library("utility") {
@@ -220,6 +218,11 @@ static_library("utility") {
]
}
@@ -1735,7 +1743,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
return mimeTypes;
}
@@ -1032,6 +1040,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
@@ -1034,6 +1042,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
return countAcceptTypesFor(superType) == mFileTypes.size();
}
@@ -1762,7 +1770,7 @@ diff --git a/ui/android/java/strings/android_ui_strings.grd b/ui/android/java/st
diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_file_dialog.h
--- a/ui/shell_dialogs/select_file_dialog.h
+++ b/ui/shell_dialogs/select_file_dialog.h
@@ -213,6 +213,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
@@ -199,6 +199,8 @@ class SHELL_DIALOGS_EXPORT SelectFileDialog
const GURL* caller = nullptr);
bool HasMultipleFileTypeChoices();
@@ -1774,7 +1782,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog.h b/ui/shell_dialogs/select_fil
diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc
--- a/ui/shell_dialogs/select_file_dialog_android.cc
+++ b/ui/shell_dialogs/select_file_dialog_android.cc
@@ -142,6 +142,12 @@ void SelectFileDialogImpl::SelectFileImpl(
@@ -137,6 +137,12 @@ void SelectFileDialogImpl::SelectFileImpl(
owning_window->GetJavaObject());
}
@@ -1828,7 +1836,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog_linux.h b/ui/shell_dialogs/sele
diff --git a/ui/shell_dialogs/select_file_dialog_win.cc b/ui/shell_dialogs/select_file_dialog_win.cc
--- a/ui/shell_dialogs/select_file_dialog_win.cc
+++ b/ui/shell_dialogs/select_file_dialog_win.cc
@@ -193,6 +193,7 @@ class SelectFileDialogImpl : public ui::SelectFileDialog,
@@ -194,6 +194,7 @@ class SelectFileDialogImpl : public ui::SelectFileDialog,
int index);
bool HasMultipleFileTypeChoicesImpl() override;
@@ -1836,7 +1844,7 @@ diff --git a/ui/shell_dialogs/select_file_dialog_win.cc b/ui/shell_dialogs/selec
// Returns the filter to be used while displaying the open/save file dialog.
// This is computed from the extensions for the file types being opened.
@@ -271,6 +272,10 @@ bool SelectFileDialogImpl::HasMultipleFileTypeChoicesImpl() {
@@ -272,6 +273,10 @@ bool SelectFileDialogImpl::HasMultipleFileTypeChoicesImpl() {
return has_multiple_file_type_choices_;
}
+123 -100
View File
@@ -16,19 +16,20 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
base/BUILD.gn | 4 +-
base/android/feature_map.cc | 8 +-
base/feature_list.cc | 80 ++++++++++
.../base/cached_flags/CachedFlag.java | 8 +-
base/feature_list.cc | 78 +++++++++
base/feature_list.h | 72 ++++++++-
build/android/gyp/java_cpp_features.py | 17 ++
chrome/android/java/res/values/values.xml | 3 +
.../java/res/xml/privacy_preferences.xml | 4 +
.../homepage/settings/HomepageSettings.java | 2 +-
.../privacy/settings/PrivacySettings.java | 2 +-
.../browser/settings/SettingsActivity.java | 36 +++++
chrome/browser/about_flags.cc | 11 ++
chrome/browser/browser_features.cc | 1 +
chrome/browser/flags/BUILD.gn | 12 ++
chrome/browser/flags/BUILD.gn | 13 ++
.../flags/android/chrome_feature_list.cc | 1 +
.../flags/android/chrome_feature_list.h | 1 +
.../chrome/browser/flags/CachedFlag.java | 6 +
.../browser/flags/ChromeFeatureList.java | 13 +-
.../flags/cromite/include_all_directory.java | 1 +
.../java_template/CromiteCachedFlag.java.tmpl | 47 ++++++
@@ -87,7 +88,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
services/network/public/cpp/features.h | 1 +
third_party/blink/common/features.cc | 1 +
third_party/blink/public/common/features.h | 1 +
73 files changed, 737 insertions(+), 18 deletions(-)
74 files changed, 738 insertions(+), 20 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/placeholder.txt
@@ -119,7 +120,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/base/BUILD.gn b/base/BUILD.gn
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -206,6 +206,8 @@ buildflag_header("message_pump_buildflags") {
@@ -212,6 +212,8 @@ buildflag_header("message_pump_buildflags") {
# This does not include test code (test support and anything in the test
# directory) which should use source_set as is recommended for GN targets).
component("base") {
@@ -128,15 +129,15 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn
sources = [
"allocator/allocator_check.cc",
"allocator/allocator_check.h",
@@ -1030,7 +1032,7 @@ component("base") {
@@ -1055,7 +1057,7 @@ component("base") {
"//build/config/compiler:wglobal_constructors",
]
- deps = [
+ deps += [
":check_version_internal",
":message_pump_buildflags",
"//base/allocator:buildflags",
"//base/allocator/partition_allocator:raw_ptr",
diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc
--- a/base/android/feature_map.cc
+++ b/base/android/feature_map.cc
@@ -157,14 +158,38 @@ diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc
return base::FeatureList::IsEnabled(*feature);
}
diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java
--- a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java
+++ b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java
@@ -125,7 +125,7 @@ public class CachedFlag extends Flag {
.writeBoolean(getSharedPreferenceKey(), isEnabledInNative);
}
- String getSharedPreferenceKey() {
+ public String getSharedPreferenceKey() {
// Create the key only once to avoid String concatenation every flag check.
if (mPreferenceKey == null) {
mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName);
@@ -157,6 +157,12 @@ public class CachedFlag extends Flag {
.removeKeysWithPrefix(CachedFlagsSharedPreferences.FLAGS_CACHED);
}
+ public void setValueReturnedOverride(@Nullable Boolean value) {
+ synchronized (ValuesReturned.sBoolValues) {
+ ValuesReturned.sBoolValues.put(getSharedPreferenceKey(), value);
+ }
+ }
+
/** Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */
public static Map<String, CachedFlag> createCachedFlagMap(
List<List<CachedFlag>> allCachedFlagsLists) {
diff --git a/base/feature_list.cc b/base/feature_list.cc
--- a/base/feature_list.cc
+++ b/base/feature_list.cc
@@ -30,6 +30,33 @@
#include "base/strings/stringprintf.h"
#include "build/build_config.h"
@@ -37,6 +37,31 @@
namespace base {
+namespace base {
+namespace internal {
+
+using DefaultStateOverrides =
@@ -189,12 +214,11 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc
+}
+
+} // namespace internal
+} // namespace base
+
namespace base {
namespace {
@@ -441,6 +468,48 @@ bool FeatureList::IsEnabled(const Feature& feature) {
// Pointer to the FeatureList instance singleton that was set via
@@ -464,6 +489,48 @@ bool FeatureList::IsEnabled(const Feature& feature) {
return g_feature_list_instance->IsFeatureEnabled(feature);
}
@@ -243,7 +267,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc
// static
bool FeatureList::IsValidFeatureOrFieldTrialName(StringPiece name) {
return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos;
@@ -662,6 +731,17 @@ void FeatureList::AddEarlyAllowedFeatureForTesting(std::string feature_name) {
@@ -710,6 +777,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) {
void FeatureList::FinalizeInitialization() {
DCHECK(!initialized_);
@@ -264,7 +288,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc
diff --git a/base/feature_list.h b/base/feature_list.h
--- a/base/feature_list.h
+++ b/base/feature_list.h
@@ -94,8 +94,10 @@ enum FeatureState {
@@ -99,8 +99,10 @@ enum FeatureState {
// [1]:
// https://crsrc.org/c/docs/speed/binary_size/android_binary_size_trybot.md#Mutable-Constants
struct BASE_EXPORT LOGICALLY_CONST Feature {
@@ -277,7 +301,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
#if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX)
if (StringPiece(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == 0) {
LOG(FATAL) << "Invalid feature name " << name << " starts with "
@@ -121,6 +123,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature {
@@ -126,6 +128,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature {
// command line switch.
const FeatureState default_state;
@@ -287,7 +311,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
private:
friend class FeatureList;
@@ -396,6 +401,11 @@ class BASE_EXPORT FeatureList {
@@ -401,6 +406,11 @@ class BASE_EXPORT FeatureList {
// instance, which is checked in builds with DCHECKs enabled.
static bool IsEnabled(const Feature& feature);
@@ -299,7 +323,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
// Some characters are not allowed to appear in feature names or the
// associated field trial names, as they are used as special characters for
// command-line serialization. This function checks that the strings are ASCII
@@ -652,4 +662,62 @@ class BASE_EXPORT FeatureList {
@@ -665,4 +675,62 @@ class BASE_EXPORT FeatureList {
} // namespace base
@@ -321,7 +345,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h
+} // namespace base
+
+#define CROMITE_FEATURE(feature, name, default_state) \
+ CONSTINIT const base::Feature feature(name, default_state, true, true); \
+ constinit const base::Feature feature(name, default_state, true, true); \
+ _Pragma("clang diagnostic push") \
+ _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \
+ static const ::base::internal::FeatureDefaultStateOverrider \
@@ -409,7 +433,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
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
@@ -58,6 +58,10 @@ found in the LICENSE file.
@@ -59,6 +59,10 @@ found in the LICENSE file.
android:title="@string/tabgrid_use_icons_title"
android:summary="@string/tabgrid_use_icons_summary"
android:defaultValue="false" />
@@ -420,6 +444,18 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
<Preference
android:key="preload_pages"
android:title="@string/preload_pages_title"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java
@@ -37,7 +37,7 @@ public class HomepageSettings extends ChromeBaseSettingsFragment {
private RadioButtonGroupHomepagePreference mRadioButtons;
@Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ public void onCreatePreferencesCromite(Bundle savedInstanceState, String rootKey) {
mHomepageManager = HomepageManager.getInstance();
getActivity().setTitle(R.string.options_homepage_title);
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
@@ -451,7 +487,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
import org.chromium.components.browser_ui.accessibility.AccessibilitySettings;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory;
@@ -113,6 +115,36 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
@@ -114,6 +116,36 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
SnackbarManageable,
DisplayStyleObserver {
@@ -488,7 +524,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public static final String EXTRA_SHOW_FRAGMENT = "show_fragment";
@@ -365,6 +397,10 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
@@ -367,6 +399,10 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
((AccessibilitySettings) fragment)
.getDelegate()).setSnackbarManager(mSnackbarManager);
}
@@ -502,7 +538,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -369,6 +369,10 @@ using flags_ui::kOsLinux;
@@ -371,6 +371,10 @@ using flags_ui::kOsLinux;
using flags_ui::kOsMac;
using flags_ui::kOsWin;
@@ -513,9 +549,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
namespace about_flags {
namespace {
@@ -3947,6 +3951,10 @@ const flags_ui::FeatureEntry::FeatureVariation
std::size(kDesktopPWAsLinkCapturingDefaultOff), nullptr}};
#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
@@ -3710,6 +3714,10 @@ const FeatureEntry::Choice kAccountBookmarksAndReadingListBehindOptInChoices[] =
};
#endif // BUILDFLAG(IS_ANDROID)
+#define FEATURE_PARAM_SECTION
+#include "cromite_flags/chrome_browser_about_flags_cc.inc"
@@ -524,7 +560,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
// RECORDING USER METRICS FOR FLAGS:
// -----------------------------------------------------------------------------
// The first line of the entry is the internal name.
@@ -3973,6 +3981,9 @@ const flags_ui::FeatureEntry::FeatureVariation
@@ -3736,6 +3744,9 @@ const FeatureEntry::Choice kAccountBookmarksAndReadingListBehindOptInChoices[] =
const FeatureEntry kFeatureEntries[] = {
// Include generated flags for flag unexpiry; see //docs/flag_expiry.md and
// //tools/flags/generate_unexpire_flags.py.
@@ -537,8 +573,8 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc
--- a/chrome/browser/browser_features.cc
+++ b/chrome/browser/browser_features.cc
@@ -323,4 +323,5 @@ BASE_FEATURE(kPayloadTestComponent,
"PayloadTestComponent",
@@ -368,4 +368,5 @@ BASE_FEATURE(kNetworkAnnotationMonitoring,
"NetworkAnnotationMonitoring",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/chrome_browser_browser_features_cc.inc"
@@ -546,19 +582,22 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
--- a/chrome/browser/flags/BUILD.gn
+++ b/chrome/browser/flags/BUILD.gn
@@ -25,7 +25,11 @@ android_library("java") {
"android/java/src/org/chromium/chrome/browser/flags/ValuesReturned.java",
"android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java",
@@ -13,9 +13,14 @@ android_library("java") {
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java",
"android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java",
]
+ sources += [
+ "android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java",
+ ]
public_deps = [ "//base:base_cached_flags_java" ]
deps = [
+ ":java_cromite_cached_flags",
"//base:base_java",
+ "//base:base_cached_flags_java",
"//base/version_info/android:version_constants_java",
"//build:chromeos_buildflags",
"//build/android:build_java",
@@ -36,12 +40,20 @@ android_library("java") {
@@ -25,12 +30,20 @@ android_library("java") {
"//third_party/jni_zero:jni_zero_java",
]
srcjar_deps = [
@@ -582,8 +621,8 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
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
@@ -1216,5 +1216,6 @@ BASE_FEATURE(kWebApkInstallService,
"WebApkInstallService",
@@ -978,5 +978,6 @@ BASE_FEATURE(kWebApkIconUpdateThreshold,
"WebApkIconUpdateThreshold",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_cc.inc"
@@ -592,7 +631,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -230,6 +230,7 @@ constexpr base::FeatureParam<int> kAuxiliarySearchMaxTabsCountParam(
@@ -188,6 +188,7 @@ constexpr base::FeatureParam<int> kAuxiliarySearchMaxTabsCountParam(
"auxiliary_search_max_donation_tab",
100);
@@ -600,28 +639,12 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser
} // namespace android
} // namespace chrome
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFlag.java
@@ -149,6 +149,12 @@ public class CachedFlag extends Flag {
.removeKeysWithPrefix(ChromePreferenceKeys.FLAGS_CACHED);
}
+ public void setValueReturnedOverride(@Nullable Boolean value) {
+ synchronized (ValuesReturned.sBoolValues) {
+ ValuesReturned.sBoolValues.put(getSharedPreferenceKey(), value);
+ }
+ }
+
/** Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */
public static Map<String, CachedFlag> createCachedFlagMap(
List<List<CachedFlag>> allCachedFlagsLists) {
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
@@ -7,6 +7,10 @@ package org.chromium.chrome.browser.flags;
import org.chromium.base.FeatureMap;
import org.chromium.base.MutableFlagWithSafeDefault;
@@ -13,6 +13,10 @@ import org.chromium.base.cached_flags.DoubleCachedFieldTrialParameter;
import org.chromium.base.cached_flags.IntCachedFieldTrialParameter;
import org.chromium.base.cached_flags.StringCachedFieldTrialParameter;
+import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase;
+import java.util.Arrays;
@@ -630,16 +653,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
import java.util.List;
import java.util.Map;
@@ -673,7 +677,7 @@ public abstract class ChromeFeatureList {
@@ -691,7 +695,7 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sVerticalAutomotiveBackButtonToolbar =
new CachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, false);
newCachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, true);
- public static final List<CachedFlag> sFlagsCachedFullBrowser =
+ public static final List<CachedFlag> sFlagsCachedFullBrowserChromium =
List.of(
sAllowUserCertificates,
sAndroidAppIntegration,
@@ -755,6 +759,13 @@ public abstract class ChromeFeatureList {
@@ -779,6 +783,13 @@ public abstract class ChromeFeatureList {
sUseLibunwindstackNativeUnwinderAndroid,
sVerticalAutomotiveBackButtonToolbar);
@@ -689,7 +712,7 @@ new file mode 100644
+import java.util.ArrayList;
+import java.util.List;
+
+import org.chromium.chrome.browser.flags.CachedFlag;
+import org.chromium.base.cached_flags.CachedFlag;
+
+{IMPORT_CLAUSE}
+
@@ -806,7 +829,7 @@ new file mode 100644
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -429,4 +429,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow,
@@ -450,4 +450,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow,
"StopLoadingAnimationForHiddenWindow",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -815,7 +838,7 @@ diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -1751,4 +1751,5 @@ BASE_FEATURE(kSupportsRtcWakeOver24Hours,
@@ -1735,4 +1735,5 @@ BASE_FEATURE(kSupportsRtcWakeOver24Hours,
base::FEATURE_ENABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
@@ -882,7 +905,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium
diff --git a/components/components_strings.grd b/components/components_strings.grd
--- a/components/components_strings.grd
+++ b/components/components_strings.grd
@@ -339,6 +339,7 @@
@@ -338,6 +338,7 @@
<part file="version_ui_strings.grdp" />
<part file="webapps_strings.grdp" />
<part file="user_scripts/strings/userscripts_strings.grdp" />
@@ -893,9 +916,9 @@ diff --git a/components/components_strings.grd b/components/components_strings.g
diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc
--- a/components/content_settings/core/common/features.cc
+++ b/components/content_settings/core/common/features.cc
@@ -100,5 +100,6 @@ BASE_FEATURE(kHostIndexedMetadataGrants,
const base::FeatureParam<int> kMetadataGrantsThreshold{
&kHostIndexedMetadataGrants, kMetadataGrantsThresholdName, 1};
@@ -112,5 +112,6 @@ BASE_FEATURE(kIndexedHostContentSettingsMap,
"IndexedHostContentSettingsMap",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/components_content_settings_core_common_features_cc.inc"
} // namespace features
@@ -1068,7 +1091,7 @@ diff --git a/components/flags_ui/resources/app.html b/components/flags_ui/resour
diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resources/app.ts
--- a/components/flags_ui/resources/app.ts
+++ b/components/flags_ui/resources/app.ts
@@ -193,6 +193,7 @@ export class FlagsAppElement extends CustomElement {
@@ -194,6 +194,7 @@ export class FlagsAppElement extends CustomElement {
return getTemplate();
}
@@ -1076,7 +1099,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
private announceStatusDelayMs: number = 100;
private featuresResolver: PromiseResolver<void> = new PromiseResolver();
private flagSearch: FlagSearch = new FlagSearch(this);
@@ -204,6 +205,10 @@ export class FlagsAppElement extends CustomElement {
@@ -205,6 +206,10 @@ export class FlagsAppElement extends CustomElement {
// </if>
tabs: Tab[] = [
@@ -1087,7 +1110,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
{
tabEl: this.getRequiredElement('#tab-available'),
panelEl: this.getRequiredElement('#tab-content-available'),
@@ -217,6 +222,11 @@ export class FlagsAppElement extends CustomElement {
@@ -218,6 +223,11 @@ export class FlagsAppElement extends CustomElement {
];
connectedCallback() {
@@ -1099,7 +1122,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
// Get and display the data upon loading.
this.requestExperimentalFeaturesData();
// There is no restart button on iOS.
@@ -277,20 +287,29 @@ export class FlagsAppElement extends CustomElement {
@@ -278,20 +288,29 @@ export class FlagsAppElement extends CustomElement {
const defaultFeatures: Feature[] = [];
const nonDefaultFeatures: Feature[] = [];
@@ -1132,7 +1155,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
// </if>
this.showRestartToast(experimentalFeaturesData.needsRestart);
@@ -401,16 +420,23 @@ export class FlagsAppElement extends CustomElement {
@@ -402,16 +421,23 @@ export class FlagsAppElement extends CustomElement {
}
private renderExperiments(
@@ -1157,7 +1180,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource
if (select) {
experiment.addEventListener('select-change', e => {
e.preventDefault();
@@ -434,9 +460,14 @@ export class FlagsAppElement extends CustomElement {
@@ -435,9 +461,14 @@ export class FlagsAppElement extends CustomElement {
this.showRestartToast(true);
});
}
@@ -1207,7 +1230,7 @@ diff --git a/components/flags_ui/resources/experiment.html b/components/flags_ui
diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/resources/experiment.ts
--- a/components/flags_ui/resources/experiment.ts
+++ b/components/flags_ui/resources/experiment.ts
@@ -60,11 +60,16 @@ function resetHighlights(element: HTMLElement) {
@@ -61,11 +61,16 @@ function resetHighlights(element: HTMLElement) {
export class FlagsExperimentElement extends CustomElement {
private feature_: Feature|null = null;
@@ -1224,7 +1247,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r
set data(feature: Feature) {
this.feature_ = feature;
@@ -76,12 +81,18 @@ export class FlagsExperimentElement extends CustomElement {
@@ -77,12 +82,18 @@ export class FlagsExperimentElement extends CustomElement {
'experiment-default', feature.is_default);
experimentDefault.classList.toggle(
'experiment-switched', !feature.is_default);
@@ -1243,7 +1266,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r
const description = this.getRequiredElement('.description');
description.textContent = feature.description;
@@ -124,6 +135,7 @@ export class FlagsExperimentElement extends CustomElement {
@@ -125,6 +136,7 @@ export class FlagsExperimentElement extends CustomElement {
const permalink = this.getRequiredElement<HTMLAnchorElement>('.permalink');
permalink.href = `#${feature.internal_name}`;
permalink.textContent = `#${feature.internal_name}`;
@@ -1251,7 +1274,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r
const smallScreenCheck = window.matchMedia('(max-width: 480px)');
// Toggling of experiment description overflow content on smaller screens.
@@ -152,6 +164,10 @@ export class FlagsExperimentElement extends CustomElement {
@@ -153,6 +165,10 @@ export class FlagsExperimentElement extends CustomElement {
const optionEl = document.createElement('option');
optionEl.selected = option.selected;
optionEl.textContent = option.description;
@@ -1280,7 +1303,7 @@ diff --git a/components/flags_ui/resources/flags_browser_proxy.ts b/components/f
diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc
--- a/components/offline_pages/core/offline_page_feature.cc
+++ b/components/offline_pages/core/offline_page_feature.cc
@@ -82,4 +82,5 @@ bool IsOfflinePagesNetworkStateLikelyUnknown() {
@@ -55,4 +55,5 @@ bool IsOfflinePagesNetworkStateLikelyUnknown() {
return base::FeatureList::IsEnabled(kOfflinePagesNetworkStateLikelyUnknown);
}
@@ -1289,7 +1312,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/
diff --git a/components/offline_pages/core/offline_page_feature.h b/components/offline_pages/core/offline_page_feature.h
--- a/components/offline_pages/core/offline_page_feature.h
+++ b/components/offline_pages/core/offline_page_feature.h
@@ -64,6 +64,7 @@ bool IsOnTheFlyMhtmlHashComputationEnabled();
@@ -50,6 +50,7 @@ bool IsOnTheFlyMhtmlHashComputationEnabled();
// offline pages to avoid showing them even when the device is online.
bool IsOfflinePagesNetworkStateLikelyUnknown();
@@ -1300,8 +1323,8 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o
diff --git a/components/permissions/features.cc b/components/permissions/features.cc
--- a/components/permissions/features.cc
+++ b/components/permissions/features.cc
@@ -135,6 +135,7 @@ BASE_FEATURE(kShowRelatedWebsiteSetsPermissionGrants,
"ShowRelatedWebsiteSetsPermissionGrants",
@@ -139,6 +139,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate,
"CpssQuietChipTextUpdate",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/components_permissions_features_cc.inc"
@@ -1323,7 +1346,7 @@ diff --git a/components/version_ui/version_handler_helper.cc b/components/versio
diff --git a/content/common/features.cc b/content/common/features.cc
--- a/content/common/features.cc
+++ b/content/common/features.cc
@@ -586,4 +586,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix,
@@ -596,4 +596,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix,
// Please keep features in alphabetical order.
@@ -1332,7 +1355,7 @@ diff --git a/content/common/features.cc b/content/common/features.cc
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -1388,4 +1388,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() {
@@ -1389,4 +1389,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() {
VideoCaptureServiceConfiguration::kEnabledForBrowserProcess;
}
@@ -1341,7 +1364,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -338,6 +338,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer);
@@ -332,6 +332,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer);
CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess();
CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess();
@@ -1639,7 +1662,7 @@ new file mode 100755
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -1763,5 +1763,5 @@ uint32_t GetPassthroughAudioFormats() {
@@ -1860,5 +1860,5 @@ uint32_t GetPassthroughAudioFormats() {
return 0;
#endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS)
}
@@ -1649,7 +1672,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -519,5 +519,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled();
@@ -547,5 +547,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled();
MEDIA_EXPORT uint32_t GetPassthroughAudioFormats();
} // namespace media
@@ -1659,8 +1682,8 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h
diff --git a/net/base/features.cc b/net/base/features.cc
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -492,4 +492,5 @@ BASE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired,
"TreatHTTPExpiresHeaderValueZeroAsExpired",
@@ -535,4 +535,5 @@ BASE_FEATURE(kTruncateBodyToContentLength,
"TruncateBodyToContentLength",
base::FEATURE_ENABLED_BY_DEFAULT);
+#include "cromite_flags/net_base_features_cc.inc"
@@ -1668,9 +1691,9 @@ diff --git a/net/base/features.cc b/net/base/features.cc
diff --git a/net/base/features.h b/net/base/features.h
--- a/net/base/features.h
+++ b/net/base/features.h
@@ -487,6 +487,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kUseAlpsNewCodepoint);
// while on stable channels.
NET_EXPORT BASE_DECLARE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired);
@@ -523,6 +523,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired);
// Enables truncating the response body to the content length.
NET_EXPORT BASE_DECLARE_FEATURE(kTruncateBodyToContentLength);
+#include "cromite_flags/net_base_features_h.inc"
} // namespace net::features
@@ -1679,8 +1702,8 @@ diff --git a/net/base/features.h b/net/base/features.h
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
--- a/services/network/public/cpp/features.cc
+++ b/services/network/public/cpp/features.cc
@@ -454,4 +454,5 @@ const base::FeatureParam<bool> kSkipTpcdMitigationsForAdsSupport{
&kSkipTpcdMitigationsForAds, /*name=*/"SkipTpcdMitigationsForAdsSupport",
@@ -467,4 +467,5 @@ const base::FeatureParam<bool> kSkipTpcdMitigationsForAdsTopLevelTrial{
/*name=*/"SkipTpcdMitigationsForAdsTopLevelTrial",
/*default_value=*/false};
+#include "cromite_flags/services_network_public_cpp_features_cc.inc"
@@ -1688,9 +1711,9 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c
diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
--- a/services/network/public/cpp/features.h
+++ b/services/network/public/cpp/features.h
@@ -181,6 +181,7 @@ extern const base::FeatureParam<bool> kSkipTpcdMitigationsForAdsMetadata;
@@ -187,6 +187,7 @@ extern const base::FeatureParam<bool> kSkipTpcdMitigationsForAdsTrial;
COMPONENT_EXPORT(NETWORK_CPP)
extern const base::FeatureParam<bool> kSkipTpcdMitigationsForAdsSupport;
extern const base::FeatureParam<bool> kSkipTpcdMitigationsForAdsTopLevelTrial;
+#include "cromite_flags/services_network_public_cpp_features_h.inc"
} // namespace features
@@ -1699,9 +1722,9 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -2305,5 +2305,6 @@ BASE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpiredInBlink,
"TreatHTTPExpiresHeaderValueZeroAsExpiredInBlink",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -2546,5 +2546,6 @@ BASE_FEATURE(kSimplifyLoadingTransparentPlaceholderImage,
"SimplifyLoadingTransparentPlaceholderImage",
base::FEATURE_DISABLED_BY_DEFAULT);
+#include "cromite_flags/third_party_blink_common_features_cc.inc"
} // namespace features
@@ -1709,9 +1732,9 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h
--- a/third_party/blink/public/common/features.h
+++ b/third_party/blink/public/common/features.h
@@ -1507,6 +1507,7 @@ BLINK_COMMON_EXPORT extern const base::FeatureParam<int> kPixelDistanceToExpand;
@@ -1638,6 +1638,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kInteractiveDetectorIgnoreFcp);
BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(
kTreatHTTPExpiresHeaderValueZeroAsExpiredInBlink);
kSimplifyLoadingTransparentPlaceholderImage);
+#include "cromite_flags/third_party_blink_common_features_h.inc"
} // namespace features
@@ -13,13 +13,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../java/res/xml/privacy_preferences.xml | 10 ++++++++
.../browser/LaunchIntentDispatcher.java | 21 ++++++++++++++++
.../customtabs/CustomTabsConnection.java | 1 +
.../IncognitoCustomTabIntentDataProvider.java | 6 +++++
.../privacy/settings/PrivacySettings.java | 24 +++++++++++++++++++
.../chrome/browser/tab/TabAssociatedApp.java | 6 ++++-
.../strings/android_chrome_strings.grd | 14 +++++++++++
.../core/common/language_experiments.cc | 1 +
.../add-custom-tab-intents-privacy-option.inc | 2 ++
8 files changed, 83 insertions(+), 1 deletion(-)
.../add-custom-tab-intents-privacy-option.inc | 1 +
9 files changed, 83 insertions(+), 1 deletion(-)
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
@@ -45,7 +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
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -56,6 +56,9 @@ import java.lang.annotation.Retention;
@@ -55,6 +55,9 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Set;
@@ -55,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
* Intent fired.
@@ -247,6 +250,9 @@ public class LaunchIntentDispatcher {
@@ -244,6 +247,9 @@ public class LaunchIntentDispatcher {
*/
public static boolean isCustomTabIntent(Intent intent) {
if (intent == null) return false;
@@ -65,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
Log.w(
TAG,
"CustomTabsIntent#shouldAlwaysUseBrowserUI() = "
@@ -268,6 +274,10 @@ public class LaunchIntentDispatcher {
@@ -265,6 +271,10 @@ public class LaunchIntentDispatcher {
newIntent.setData(uri);
newIntent.setClassName(context, CustomTabActivity.class.getName());
@@ -76,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
// Since configureIntentForResizableCustomTab() might change the componenet/class
// associated with the passed intent, it needs to be called after #setClassName(context,
// CustomTabActivity.class.getName());
@@ -413,6 +423,17 @@ public class LaunchIntentDispatcher {
@@ -410,6 +420,17 @@ public class LaunchIntentDispatcher {
if (Intent.ACTION_VIEW.equals(newIntent.getAction())
&& !IntentHandler.wasIntentSenderChrome(newIntent)) {
@@ -94,6 +95,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
if (!chromeTabbedTaskExists()) {
newIntent.putExtra(IntentHandler.EXTRA_STARTED_TABBED_CHROME_TASK, true);
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -850,6 +850,7 @@ public class CustomTabsConnection {
PostTask.postTask(
TaskTraits.UI_DEFAULT,
() -> {
+ if ((true)) return; // Disable CCTPostMessageAPI
// Attempt to verify origin synchronously. If successful directly initialize
// postMessage channel for session.
Uri verifiedOrigin = verifyOriginForSession(session, uid, postMessageOrigin);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java
@@ -130,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getActivity().setTitle(R.string.prefs_privacy_security);
@@ -276,6 +279,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -274,6 +277,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
new SpanApplier.SpanInfo("<link2>", "</link2>", servicesLink));
}
@@ -140,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
@@ -292,6 +298,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -290,6 +296,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
UserPrefs.get(getProfile())
.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
@@ -155,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
}
return true;
}
@@ -314,6 +328,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -312,6 +326,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
}
@@ -175,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
@@ -85,7 +85,11 @@ public final class TabAssociatedApp extends TabWebContentsUserData implements Im
@@ -87,7 +87,11 @@ public final class TabAssociatedApp extends TabWebContentsUserData implements Im
public static boolean isOpenedFromExternalApp(Tab tab) {
TabAssociatedApp app = get(tab);
if (app == null) return false;
@@ -191,7 +203,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -5056,6 +5056,20 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -5152,6 +5152,20 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
<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.">
Resume
</message>
@@ -225,7 +237,6 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/a
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
@@ -0,0 +1,2 @@
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides);
+SET_CROMITE_FEATURE_DISABLED(kCCTPostMessageAPI);
--
+13 -13
View File
@@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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
@@ -163,6 +163,9 @@ found in the LICENSE file.
@@ -166,6 +166,9 @@ found in the LICENSE file.
<item android:id="@+id/managed_by_menu_id"
android:title="@string/managed_browser"
android:icon="@drawable/ic_business" />
@@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
</group>
<!-- Items shown only in the tab switcher -->
@@ -189,6 +192,9 @@ found in the LICENSE file.
@@ -192,6 +195,9 @@ found in the LICENSE file.
<item android:id="@id/preferences_id"
android:title="@string/menu_settings"
android:icon="@drawable/settings_cog" />
@@ -59,16 +59,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ApplicationLife
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -252,6 +252,8 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -267,6 +267,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BooleanSupplier;
import java.util.function.DoubleConsumer;
+import org.chromium.chrome.browser.ApplicationLifetime;
+
/**
* This is the main activity for ChromeMobile when not running in document mode. All the tabs
* are accessible via a chrome specific tab switching UI.
@@ -2762,6 +2764,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
* 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.
@@ -2925,6 +2927,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
} else if (id == R.id.close_tab) {
getCurrentTabModel().closeTab(currentTab, true, false, true);
RecordUserAction.record("MobileTabClosed");
@@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -61,6 +61,7 @@ import org.chromium.chrome.R;
@@ -62,6 +62,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.ActivityUtils;
import org.chromium.chrome.browser.AppHooks;
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
import org.chromium.chrome.browser.ChromeActivitySessionTracker;
import org.chromium.chrome.browser.ChromeApplicationImpl;
import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate;
@@ -2577,6 +2578,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -2576,6 +2577,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
return true;
}
@@ -98,8 +98,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
+ }
+
if (id == R.id.update_menu_id) {
UpdateMenuItemHelper.getInstance().onMenuItemClicked(this);
return true;
UpdateMenuItemHelper.getInstance(
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
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3659,6 +3659,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3745,6 +3745,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
<message name="IDS_MENU_AUTO_DARK_WEB_CONTENTS" desc="Menu item in Chrome's overflow/options menu. When Chrome's browser UI is set to dark theme and this option is checked, sites will have a dark theme automatically applied as well. [CHAR_LIMIT=24]">
Dark theme
</message>
@@ -18,15 +18,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
--- a/components/omnibox/browser/autocomplete_controller.cc
+++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -20,6 +20,7 @@
#include "base/barrier_callback.h"
@@ -22,6 +22,7 @@
#include "base/check_op.h"
#include "base/containers/contains.h"
+#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/format_macros.h"
#include "base/functional/bind.h"
@@ -336,6 +337,15 @@ AutocompleteController::AutocompleteController(
@@ -392,6 +393,15 @@ AutocompleteController::AutocompleteController(
provider_client_->GetOmniboxTriggeredFeatureService()),
steady_state_omnibox_position_(
metrics::OmniboxEventProto::UNKNOWN_POSITION) {
@@ -45,7 +45,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
--- a/components/omnibox/browser/history_url_provider.cc
+++ b/components/omnibox/browser/history_url_provider.cc
@@ -478,6 +478,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)
matches_.push_back(what_you_typed_match);
@@ -58,7 +58,7 @@ diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omn
diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc
--- a/components/omnibox/browser/search_provider.cc
+++ b/components/omnibox/browser/search_provider.cc
@@ -12,6 +12,7 @@
@@ -14,6 +14,7 @@
#include "base/base64.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
@@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/
#include "base/functional/callback.h"
#include "base/i18n/break_iterator.h"
#include "base/i18n/case_conversion.h"
@@ -636,6 +637,9 @@ void SearchProvider::Run(bool query_is_private) {
@@ -644,6 +645,9 @@ void SearchProvider::Run(bool query_is_private) {
}
void SearchProvider::DoHistoryQuery(bool minimal_changes) {
@@ -92,7 +92,7 @@ new file mode 100644
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -21,6 +21,10 @@
@@ -22,6 +22,10 @@
#include "net/socket/client_socket_handle.h"
#include "net/socket/client_socket_pool.h"
#include "net/socket/connect_job.h"
@@ -101,9 +101,9 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
+#include "base/command_line.h"
+#include "base/strings/string_number_conversions.h"
#include "net/ssl/ssl_config.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "url/gurl.h"
@@ -183,6 +187,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
#include "url/scheme_host_port.h"
@@ -168,6 +172,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
int ClientSocketPoolManager::max_sockets_per_group(
HttpNetworkSession::SocketPoolType pool_type) {
DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);
@@ -4,12 +4,12 @@ Subject: Add flag to disable IPv6 probes
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../add-flag-to-disable-IPv6-probes.inc | 8 ++++++++
.../features_cc/add-flag-to-disable-IPv6-probes.inc | 3 +++
.../features_h/add-flag-to-disable-IPv6-probes.inc | 2 ++
net/BUILD.gn | 1 +
net/dns/host_resolver_manager.cc | 11 +++++++++++
5 files changed, 25 insertions(+)
.../about_flags_cc/add-flag-to-disable-IPv6-probes.inc | 8 ++++++++
.../base/features_cc/add-flag-to-disable-IPv6-probes.inc | 3 +++
.../base/features_h/add-flag-to-disable-IPv6-probes.inc | 2 ++
net/BUILD.gn | 1 +
net/dns/host_resolver_manager.cc | 8 ++++++++
5 files changed, 22 insertions(+)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-flag-to-disable-IPv6-probes.inc
create mode 100644 cromite_flags/net/base/features_cc/add-flag-to-disable-IPv6-probes.inc
create mode 100644 cromite_flags/net/base/features_h/add-flag-to-disable-IPv6-probes.inc
@@ -45,7 +45,7 @@ new file mode 100644
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1033,6 +1033,7 @@ component("net") {
@@ -1030,6 +1030,7 @@ component("net") {
"//build:chromeos_buildflags",
"//components/miracle_parameter/common",
"//net/http:transport_security_state_generated_files",
@@ -56,7 +56,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
--- a/net/dns/host_resolver_manager.cc
+++ b/net/dns/host_resolver_manager.cc
@@ -109,6 +109,7 @@
@@ -113,6 +113,7 @@
#include "net/log/net_log_event_type.h"
#include "net/log/net_log_source.h"
#include "net/log/net_log_source_type.h"
@@ -64,17 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
#include "net/log/net_log_with_source.h"
#include "net/socket/client_socket_factory.h"
#include "net/url_request/url_request_context.h"
@@ -681,6 +682,9 @@ class HostResolverManager::RequestImpl
// request source is LOCAL_ONLY. This is due to LOCAL_ONLY requiring a
// synchronous response, so it cannot wait on an async probe result and
// cannot make assumptions about reachability.
+ if (!base::FeatureList::IsEnabled(features::kIPv6Probing)) {
+ return OK;
+ }
if (parameters_.source == HostResolverSource::LOCAL_ONLY) {
int rv = resolver_->StartIPv6ReachabilityCheck(
source_net_log_, GetClientSocketFactory(),
@@ -3899,6 +3903,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck(
@@ -1373,6 +1374,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck(
return OK;
}
@@ -70,7 +70,7 @@ diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_pa
diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.cc b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
--- a/third_party/blink/renderer/modules/vibration/vibration_controller.cc
+++ b/third_party/blink/renderer/modules/vibration/vibration_controller.cc
@@ -29,6 +29,7 @@
@@ -28,6 +28,7 @@
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/navigator.h"
#include "third_party/blink/renderer/core/page/page.h"
@@ -78,7 +78,7 @@ diff --git a/third_party/blink/renderer/modules/vibration/vibration_controller.c
// Maximum number of entries in a vibration pattern.
const unsigned kVibrationPatternLengthMax = 99;
@@ -152,6 +153,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.
if (!navigator.DomWindow())
return false;
@@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2621,6 +2621,10 @@
@@ -635,6 +635,10 @@
status: {"Android": "stable"},
base_feature: "none",
},
@@ -113,6 +113,6 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+ status: "stable",
+ },
{
name: "OriginIsolationHeader",
status: "stable",
name: "CompositionForegroundMarkers",
status: {
--
@@ -1,4 +1,4 @@
From: Your Name <you@example.com>
From: uazo <uazo@users.noreply.github.com>
Date: Thu, 20 Oct 2022 09:34:48 +0000
Subject: Add kill switch for unsupported clangd flags
@@ -7,30 +7,40 @@ Allows build with clangd by suppressing unsupported parameters
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
build/config/compiler/BUILD.gn | 6 ++++++
build_overrides/build.gni | 3 +++
2 files changed, 9 insertions(+)
build/config/compiler/BUILD.gn | 10 +++++++++-
build_overrides/build.gni | 3 +++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -1888,6 +1888,12 @@ config("default_warnings") {
# TODO(https://crbug.com/1490607): Fix and re-enable.
"-Wno-thread-safety-reference-return",
@@ -1889,13 +1889,21 @@ config("default_warnings") {
# TODO(https://crbug.com/1490607): Fix and re-enable.
"-Wno-thread-safety-reference-return",
]
-
if (!is_nacl) {
cflags_cc += [
# TODO(https://crbug.com/1513724): Fix and re-enable.
"-Wno-c++11-narrowing-const-reference",
]
+ if (skip_clangd_unsupported_options) {
+ cflags -= [
+ "-Wno-deprecated-builtins",
+ "-Wno-thread-safety-reference-return",
+ ]
+ }
}
+ if (skip_clangd_unsupported_options) {
+ cflags -= [
+ "-Wno-deprecated-builtins",
+ "-Wno-thread-safety-reference-return",
+ ]
+ cflags_cc -= [
+ "-Wno-c++11-narrowing-const-reference",
+ ]
+ }
}
# Some builders, such as Cronet, use a different version of Clang than
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
--- a/build_overrides/build.gni
+++ b/build_overrides/build.gni
@@ -57,6 +57,9 @@ declare_args() {
@@ -62,6 +62,9 @@ declare_args() {
# to lack of toolchain support.
gtest_enable_absl_printers = !is_nacl
@@ -58,15 +58,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../one_time_permissions_tracker_factory.cc | 2 +-
.../permissions/embedded_permission_prompt.cc | 2 +-
.../permission_prompt_bubble_base_view.cc | 2 +-
.../site_settings/PermissionInfo.java | 14 +++-
.../site_settings/SingleWebsiteSettings.java | 10 +++
.../WebsitePreferenceBridge.java | 6 +-
.../android/website_preference_bridge.cc | 7 +-
.../site_settings/PermissionInfo.java | 1 +
.../site_settings/SingleWebsiteSettings.java | 9 ++
.../android/website_preference_bridge.cc | 2 +-
.../strings/android/browser_ui_strings.grd | 5 ++
components/content_settings/android/BUILD.gn | 1 +
.../core/browser/content_settings_utils.cc | 36 ++++++++
.../core/browser/content_settings_utils.h | 6 ++
.../common/content_settings_constraints.h | 11 +++
.../common/content_settings_constraints.h | 9 ++
.../page_info/PageInfoController.java | 4 +-
.../PermissionParamsListBuilder.java | 13 ++-
.../android/page_info_controller_android.cc | 10 ++-
@@ -74,21 +72,21 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/page_info/page_info.h | 1 +
.../permissions/PermissionDialogDelegate.java | 13 +++
.../PermissionDialogModelFactory.java | 82 ++++++++++++++++++-
.../permission_dialog_delegate.cc | 19 +++++
.../permission_dialog_delegate.cc | 24 +++++-
.../permission_dialog_delegate.h | 1 +
.../permission_prompt_android.cc | 8 ++
.../permission_prompt_android.h | 2 +
.../permission_prompt_android.cc | 8 +-
.../permission_prompt_android.h | 3 +-
.../android/permissions_android_strings.grd | 17 ++++
.../geolocation_permission_context_android.cc | 35 ++++++--
.../geolocation_permission_context_android.h | 14 +++-
.../permissions/permission_context_base.cc | 51 ++++++++++--
.../geolocation_permission_context_android.cc | 34 ++++++--
.../geolocation_permission_context_android.h | 13 ++-
.../permissions/permission_context_base.cc | 52 ++++++++++--
.../permissions/permission_context_base.h | 23 +++++-
components/permissions/permission_prompt.h | 3 +-
components/permissions/permission_request.cc | 30 ++++++-
components/permissions/permission_request.h | 16 +++-
.../permissions/permission_request_manager.cc | 45 ++++++----
.../permissions/permission_request_manager.h | 11 ++-
36 files changed, 511 insertions(+), 61 deletions(-)
34 files changed, 488 insertions(+), 61 deletions(-)
diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc
--- a/chrome/browser/permissions/last_tab_standing_tracker.cc
@@ -176,18 +174,18 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.cc b/chrome
OneTimePermissionsTracker::~OneTimePermissionsTracker() = default;
OneTimePermissionsTracker::OriginTrackEntry::OriginTrackEntry() = default;
@@ -108,6 +134,11 @@ void OneTimePermissionsTracker::WebContentsUnloadedOrigin(
observer.OnLastPageFromOriginClosed(origin);
}
}
+ HostContentSettingsMap* content_settings =
+ permissions::PermissionsClient::Get()->GetSettingsMap(context_);
+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION);
+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC);
+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA);
@@ -258,6 +284,11 @@ void OneTimePermissionsTracker::NotifyLastPageFromOriginClosed(
for (auto& observer : observer_list_) {
observer.OnLastPageFromOriginClosed(origin);
}
+ HostContentSettingsMap* content_settings =
+ permissions::PermissionsClient::Get()->GetSettingsMap(context_);
+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::GEOLOCATION);
+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_MIC);
+ RemoveSessionSettings(content_settings, origin, ContentSettingsType::MEDIASTREAM_CAMERA);
}
bool OneTimePermissionsTracker::ShouldIgnoreOrigin(const url::Origin& origin) {
diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/browser/permissions/one_time_permissions_tracker.h
--- a/chrome/browser/permissions/one_time_permissions_tracker.h
+++ b/chrome/browser/permissions/one_time_permissions_tracker.h
@@ -208,7 +206,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker.h b/chrome/
~OneTimePermissionsTracker() override;
OneTimePermissionsTracker(const OneTimePermissionsTracker&) = delete;
@@ -136,7 +137,7 @@ class OneTimePermissionsTracker : public KeyedService {
@@ -139,7 +140,7 @@ class OneTimePermissionsTracker : public KeyedService {
base::ObserverList<OneTimePermissionsTrackerObserver> observer_list_;
std::map<url::Origin, OriginTrackEntry> origin_tracker_;
@@ -230,7 +228,7 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc
diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
--- a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
+++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
@@ -236,7 +236,7 @@ void EmbeddedPermissionPrompt::Allow() {
@@ -237,7 +237,7 @@ void EmbeddedPermissionPrompt::Allow() {
}
void EmbeddedPermissionPrompt::AllowThisTime() {
@@ -242,71 +240,34 @@ diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b
diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
--- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
+++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc
@@ -263,7 +263,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) {
@@ -267,7 +267,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) {
delegate_->Accept();
return;
case PermissionDialogButton::kAcceptOnce:
RecordDecision(permissions::PermissionAction::GRANTED_ONCE);
- delegate_->AcceptThisTime();
+ delegate_->AcceptThisTime(content_settings::LifetimeMode::OnlyThisTime);
return;
case PermissionDialogButton::kDeny:
RecordDecision(permissions::PermissionAction::DENIED);
delegate_->Deny();
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/PermissionInfo.java
@@ -9,6 +9,7 @@ import androidx.annotation.Nullable;
import org.chromium.components.content_settings.ContentSettingValues;
@@ -10,6 +10,7 @@ import org.chromium.components.content_settings.ContentSettingValues;
import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.components.content_settings.SessionModel;
import org.chromium.content_public.browser.BrowserContextHandle;
+import org.chromium.components.content_settings.SessionModel;
import java.io.Serializable;
@@ -18,9 +19,15 @@ public class PermissionInfo implements Serializable {
private final String mEmbedder;
private final String mOrigin;
private final @ContentSettingsType int mContentSettingsType;
+ private final @SessionModel int mSessionModel;
+
+ public PermissionInfo(@ContentSettingsType int type, String origin, String embedder, boolean isEmbargoed) {
+ this(type, origin, embedder, isEmbargoed, 0);
+ }
public PermissionInfo(
- @ContentSettingsType int type, String origin, String embedder, boolean isEmbargoed) {
+ @ContentSettingsType int type, String origin, String embedder, boolean isEmbargoed,
+ @SessionModel int sessionModel) {
assert WebsitePermissionsFetcher.getPermissionsType(type)
== WebsitePermissionsFetcher.WebsitePermissionsType.PERMISSION_INFO
: "invalid type: " + type;
@@ -28,6 +35,11 @@ public class PermissionInfo implements Serializable {
mEmbedder = embedder;
mContentSettingsType = type;
mIsEmbargoed = isEmbargoed;
+ mSessionModel = sessionModel;
+ }
+
+ public @SessionModel int getSessionModel() {
+ return mSessionModel;
}
public @ContentSettingsType int getContentSettingsType() {
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java
@@ -38,6 +38,7 @@ import org.chromium.components.browser_ui.settings.TextMessagePreference;
import org.chromium.components.browsing_data.DeleteBrowsingDataAction;
import org.chromium.components.content_settings.ContentSettingValues;
import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.components.content_settings.SessionModel;
import org.chromium.components.embedder_support.util.Origin;
import org.chromium.components.permissions.PermissionsAndroidFeatureList;
import org.chromium.components.permissions.PermissionsAndroidFeatureMap;
@@ -567,6 +568,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -559,6 +559,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
}
}
+ private boolean isSessionPermission(@ContentSettingsType int type) {
+ private boolean isSessionPermission(@ContentSettingsType.EnumType int type) {
+ return mSite.getPermissionInfo(type) != null &&
+ mSite.getPermissionInfo(type).getSessionModel() == SessionModel.USER_SESSION;
+ }
@@ -314,7 +275,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
private void setUpClearDataPreference() {
ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA);
long usage = mSite.getTotalUsage();
@@ -1094,6 +1100,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
@@ -1070,6 +1075,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment
if (contentType == mHighlightedPermission) {
switchPreference.setBackgroundColor(mHighlightColor);
}
@@ -325,63 +286,14 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
}
/**
diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java
@@ -10,6 +10,7 @@ import org.jni_zero.NativeMethods;
import org.chromium.base.Callback;
import org.chromium.components.content_settings.ContentSettingValues;
import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.components.content_settings.SessionModel;
import org.chromium.components.location.LocationUtils;
import org.chromium.content_public.browser.BrowserContextHandle;
import org.chromium.url.GURL;
@@ -54,7 +55,8 @@ public class WebsitePreferenceBridge {
ArrayList<PermissionInfo> list,
String origin,
String embedder,
- boolean isEmbargoed) {
+ boolean isEmbargoed,
+ @SessionModel int sessionModel) {
if (type == ContentSettingsType.MEDIASTREAM_CAMERA
|| type == ContentSettingsType.MEDIASTREAM_MIC) {
for (PermissionInfo info : list) {
@@ -63,7 +65,7 @@ public class WebsitePreferenceBridge {
}
}
}
- list.add(new PermissionInfo(type, origin, embedder, isEmbargoed));
+ list.add(new PermissionInfo(type, origin, embedder, isEmbargoed, sessionModel));
}
@CalledByNative
diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
--- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
+++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
@@ -131,7 +131,8 @@ typedef void (*InfoListInsertionFunction)(
const base::android::JavaRef<jobject>&,
const base::android::JavaRef<jstring>&,
const base::android::JavaRef<jstring>&,
- jboolean);
+ jboolean,
+ JniIntWrapper);
void GetOrigins(JNIEnv* env,
const JavaParamRef<jobject>& jbrowser_context_handle,
@@ -173,7 +174,7 @@ void GetOrigins(JNIEnv* env,
seen_origins.push_back(origin);
insertionFunc(env, static_cast<int>(content_type), list,
ConvertOriginToJavaString(env, origin), jembedder,
- /*is_embargoed=*/false);
+ /*is_embargoed=*/false, static_cast<int>(settings_it.metadata.session_model()));
}
// Add any origins which have a default content setting value (thus skipped
@@ -195,7 +196,7 @@ void GetOrigins(JNIEnv* env,
@@ -198,7 +198,7 @@ void GetOrigins(JNIEnv* env,
seen_origins.push_back(origin);
insertionFunc(env, static_cast<int>(content_type), list,
ConvertOriginToJavaString(env, origin), jembedder,
- /*is_embargoed=*/true);
- /*is_embargoed=*/true, /*is_one_time=*/false);
+ /*is_embargoed=*/true, 0);
}
}
@@ -389,7 +301,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid
diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd
--- a/components/browser_ui/strings/android/browser_ui_strings.grd
+++ b/components/browser_ui/strings/android/browser_ui_strings.grd
@@ -682,6 +682,11 @@
@@ -673,6 +673,11 @@
<message name="IDS_PAGE_INFO_URL_TRUNCATED" desc="Accessibility announcement when the URL in PageInfo switches from full to truncated display">
URL truncated
</message>
@@ -401,21 +313,10 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp
<message name="IDS_PAGE_INFO_AD_PRIVACY_HEADER" desc="A label that represents the new ad-related settings. 1) Navigate to any site. 2) Click the icon (often a lock) to the left of the URL in the address bar. Information about the page you're viewing appears. The 'Ad privacy' label will appear above the 'Site settings' button.">
Ad privacy
</message>
diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn
--- a/components/content_settings/android/BUILD.gn
+++ b/components/content_settings/android/BUILD.gn
@@ -61,6 +61,7 @@ java_cpp_enum("content_settings_enums_javagen") {
"../core/common/cookie_controls_breakage_confidence_level.h",
"../core/common/cookie_controls_enforcement.h",
"../core/common/cookie_controls_status.h",
+ "../core/common/content_settings_constraints.h",
]
visibility = [ ":*" ] # Depend on through :content_settings_enums_java
}
diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc
--- a/components/content_settings/core/browser/content_settings_utils.cc
+++ b/components/content_settings/core/browser/content_settings_utils.cc
@@ -173,6 +173,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) {
@@ -174,6 +174,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) {
return constraints.session_model() == SessionModel::Durable;
}
@@ -477,16 +378,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b
diff --git a/components/content_settings/core/common/content_settings_constraints.h b/components/content_settings/core/common/content_settings_constraints.h
--- a/components/content_settings/core/common/content_settings_constraints.h
+++ b/components/content_settings/core/common/content_settings_constraints.h
@@ -23,6 +23,8 @@ namespace content_settings {
// a crash or update related restart.
// OneTime: Settings will persist for the current "tab session", meaning
// until the last tab from the origin is closed.
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.content_settings
+// GENERATED_JAVA_CLASS_NAME_OVERRIDE: SessionModel
enum class SessionModel {
Durable = 0,
UserSession = 1,
@@ -31,6 +33,15 @@ enum class SessionModel {
@@ -33,6 +33,15 @@ enum class SessionModel : int32_t {
kMaxValue = OneTime,
};
@@ -604,7 +496,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp
diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc
--- a/components/page_info/page_info.cc
+++ b/components/page_info/page_info.cc
@@ -1187,6 +1187,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
@@ -1163,6 +1163,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info,
permission_info.source = info.source;
permission_info.is_one_time = (info.metadata.session_model() ==
content_settings::SessionModel::OneTime);
@@ -616,37 +508,37 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.
diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h
--- a/components/page_info/page_info.h
+++ b/components/page_info/page_info.h
@@ -200,6 +200,7 @@ class PageInfo : private content_settings::CookieControlsObserver,
@@ -199,6 +199,7 @@ class PageInfo : private content_settings::CookieControlsObserver {
content_settings::SETTING_SOURCE_NONE;
// Whether the permission is a one-time grant.
bool is_one_time = false;
+ bool is_user_session = false;
// Only set for settings that can have multiple permissions for different
// embedded origins.
absl::optional<url::Origin> requesting_origin;
std::optional<url::Origin> requesting_origin;
diff --git a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java
--- a/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java
+++ b/components/permissions/android/java/src/org/chromium/components/permissions/PermissionDialogDelegate.java
@@ -11,6 +11,7 @@ import org.jni_zero.JNINamespace;
@@ -13,6 +13,7 @@ import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
import org.chromium.ui.base.WindowAndroid;
+import org.chromium.components.content_settings.LifetimeMode;
/**
* Delegate class for modal permission dialogs. Contains all of the data displayed in a prompt,
@@ -46,6 +47,9 @@ public class PermissionDialogDelegate {
import java.util.ArrayList;
import java.util.List;
@@ -57,6 +58,9 @@ public class PermissionDialogDelegate {
/** The {@link ContentSettingsType}s requested in this dialog. */
private int[] mContentSettingsTypes;
+ /** Lifetime option selected by the user. */
+ private int mSelectedLifetimeOption = LifetimeMode.ALWAYS;
+
public WindowAndroid getWindow() {
return mWindow;
}
@@ -75,6 +79,15 @@ public class PermissionDialogDelegate {
PermissionDialogDelegateJni.get().accept(mNativeDelegatePtr, PermissionDialogDelegate.this);
/**
* Defines a (potentially empty) list of ranges represented as pairs of <startIndex, endIndex>,
* which shall be used by the UI to format the specified ranges as bold text.
@@ -110,6 +114,15 @@ public class PermissionDialogDelegate {
.acceptThisTime(mNativeDelegatePtr, PermissionDialogDelegate.this);
}
+ public void setSelectedLifetimeOption(int idx) {
@@ -683,20 +575,13 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per
/** This class creates the model for the permission dialog. */
class PermissionDialogModelFactory {
public static PropertyModel getModel(
@@ -25,7 +37,7 @@ class PermissionDialogModelFactory {
String messageText = delegate.getMessageText();
assert !TextUtils.isEmpty(messageText);
- return new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
+ PropertyModel pm = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
.with(ModalDialogProperties.CONTROLLER, controller)
.with(ModalDialogProperties.FOCUS_DIALOG, true)
.with(ModalDialogProperties.CUSTOM_VIEW, customView)
@@ -38,5 +50,73 @@ class PermissionDialogModelFactory {
ModalDialogProperties.BUTTON_TAP_PROTECTION_PERIOD_MS,
UiUtils.PROMPT_INPUT_PROTECTION_SHORT_DELAY_MS)
.build();
@@ -60,6 +72,74 @@ class PermissionDialogModelFactory {
ModalDialogProperties.NEGATIVE_BUTTON_TEXT,
delegate.getNegativeButtonText());
}
- return builder.build();
+
+ PropertyModel pm = builder.build();
+ int[] types = delegate.getContentSettingsTypes();
+ if (contains(types, ContentSettingsType.GEOLOCATION) ||
+ contains(types, ContentSettingsType.MEDIASTREAM_MIC) ||
@@ -769,7 +654,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per
diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
--- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
+++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
@@ -113,6 +113,11 @@ void PermissionDialogJavaDelegate::DismissDialog() {
@@ -144,6 +144,11 @@ void PermissionDialogJavaDelegate::DismissDialog() {
Java_PermissionDialogDelegate_dismissFromNative(env, j_delegate_);
}
@@ -781,10 +666,10 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
// static
void PermissionDialogDelegate::Create(
content::WebContents* web_contents,
@@ -141,12 +146,26 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting(
@@ -172,6 +177,13 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting(
void PermissionDialogDelegate::Accept(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
DCHECK(permission_prompt_);
CHECK(permission_prompt_);
+ content_settings::LifetimeMode lifetimeOption =
+ static_cast<content_settings::LifetimeMode>(
+ java_delegate_->GetSelectedLifetimeOption());
@@ -795,9 +680,20 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
permission_prompt_->Accept();
}
@@ -179,12 +191,22 @@ void PermissionDialogDelegate::AcceptThisTime(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
CHECK(permission_prompt_);
- permission_prompt_->AcceptThisTime();
+ content_settings::LifetimeMode lifetimeOption =
+ static_cast<content_settings::LifetimeMode>(
+ java_delegate_->GetSelectedLifetimeOption());
+ permission_prompt_->AcceptThisTime(lifetimeOption);
}
void PermissionDialogDelegate::Cancel(JNIEnv* env,
const JavaParamRef<jobject>& obj) {
DCHECK(permission_prompt_);
CHECK(permission_prompt_);
+ content_settings::LifetimeMode lifetimeOption =
+ static_cast<content_settings::LifetimeMode>(
+ java_delegate_->GetSelectedLifetimeOption());
@@ -822,28 +718,29 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_
diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc
--- a/components/permissions/android/permission_prompt/permission_prompt_android.cc
+++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc
@@ -52,6 +52,14 @@ void PermissionPromptAndroid::Accept() {
@@ -53,8 +53,12 @@ void PermissionPromptAndroid::Accept() {
delegate_->Accept();
}
-void PermissionPromptAndroid::AcceptThisTime() {
- delegate_->AcceptThisTime();
+void PermissionPromptAndroid::AcceptThisTime(content_settings::LifetimeMode lifetimeOption) {
+ delegate_->AcceptThisTime(lifetimeOption);
+}
+
+void PermissionPromptAndroid::DenyThisTime(content_settings::LifetimeMode lifetimeOption) {
+ delegate_->DenyThisTime(lifetimeOption);
+}
+
void PermissionPromptAndroid::Deny() {
delegate_->Deny();
}
void PermissionPromptAndroid::Deny() {
diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.h b/components/permissions/android/permission_prompt/permission_prompt_android.h
--- a/components/permissions/android/permission_prompt/permission_prompt_android.h
+++ b/components/permissions/android/permission_prompt/permission_prompt_android.h
@@ -47,7 +47,9 @@ class PermissionPromptAndroid : public PermissionPrompt {
@@ -44,8 +44,9 @@ class PermissionPromptAndroid : public PermissionPrompt {
void Closing();
void Accept();
- void AcceptThisTime();
+ void AcceptThisTime(content_settings::LifetimeMode lifetimeOption);
void Deny();
+ void DenyThisTime(content_settings::LifetimeMode lifetimeOption);
@@ -880,9 +777,9 @@ diff --git a/components/permissions/android/permissions_android_strings.grd b/co
diff --git a/components/permissions/contexts/geolocation_permission_context_android.cc b/components/permissions/contexts/geolocation_permission_context_android.cc
--- a/components/permissions/contexts/geolocation_permission_context_android.cc
+++ b/components/permissions/contexts/geolocation_permission_context_android.cc
@@ -163,7 +163,20 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -162,7 +162,20 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
bool is_one_time,
bool is_final_decision) {
DCHECK(!is_one_time);
DCHECK(is_final_decision);
+ NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin,
+ std::move(callback), persist, content_setting, is_one_time, is_final_decision,
@@ -901,71 +798,71 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
bool is_default_search = IsRequestingOriginDSE(requesting_origin);
if (content_setting == CONTENT_SETTING_ALLOW &&
!location_settings_->IsSystemLocationSettingEnabled()) {
@@ -176,7 +189,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -175,7 +188,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
if (IsInLocationSettingsBackOff(is_default_search)) {
FinishNotifyPermissionSet(id, requesting_origin, embedding_origin,
std::move(callback), false /* persist */,
- CONTENT_SETTING_BLOCK);
- CONTENT_SETTING_BLOCK, is_one_time);
+ CONTENT_SETTING_BLOCK,
+ is_one_time, lifetime_option);
return;
}
@@ -194,7 +208,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -193,7 +207,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
!location_settings_dialog_callback_.is_null()) {
FinishNotifyPermissionSet(id, requesting_origin, embedding_origin,
std::move(callback), false /* persist */,
- CONTENT_SETTING_BLOCK);
- CONTENT_SETTING_BLOCK, is_one_time);
+ CONTENT_SETTING_BLOCK,
+ is_one_time, lifetime_option);
return;
}
@@ -206,12 +221,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -205,13 +220,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
base::BindOnce(
&GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown,
weak_factory_.GetWeakPtr(), requesting_origin, embedding_origin,
- persist, content_setting));
- persist, content_setting, is_one_time));
+ persist, content_setting, is_one_time, lifetime_option));
return;
}
FinishNotifyPermissionSet(id, requesting_origin, embedding_origin,
- std::move(callback), persist, content_setting);
+ std::move(callback), persist, content_setting,
std::move(callback), persist, content_setting,
- is_one_time);
+ is_one_time, lifetime_option);
}
content::PermissionResult
@@ -377,6 +393,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
@@ -377,7 +392,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
const GURL& embedding_origin,
bool persist,
ContentSetting content_setting,
- bool is_one_time,
+ bool is_one_time, content_settings::LifetimeMode lifetime_option,
LocationSettingsDialogOutcome prompt_outcome) {
bool is_default_search = IsRequestingOriginDSE(requesting_origin);
if (prompt_outcome == GRANTED) {
@@ -394,7 +411,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
FinishNotifyPermissionSet(
location_settings_dialog_request_id_, requesting_origin, embedding_origin,
- std::move(location_settings_dialog_callback_), persist, content_setting);
+ std::move(location_settings_dialog_callback_), persist, content_setting,
+ is_one_time, lifetime_option);
@@ -396,7 +411,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown(
FinishNotifyPermissionSet(location_settings_dialog_request_id_,
requesting_origin, embedding_origin,
std::move(location_settings_dialog_callback_),
- persist, content_setting, is_one_time);
+ persist, content_setting, is_one_time,
+ lifetime_option);
location_settings_dialog_request_id_ =
PermissionRequestID(content::GlobalRenderFrameHostId(0, 0),
@@ -407,10 +425,11 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
const GURL& embedding_origin,
@@ -410,10 +426,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
BrowserPermissionCallback callback,
bool persist,
- ContentSetting content_setting) {
ContentSetting content_setting,
- bool is_one_time) {
- GeolocationPermissionContext::NotifyPermissionSet(
+ ContentSetting content_setting,
+ bool is_one_time, content_settings::LifetimeMode lifetime_option) {
+ GeolocationPermissionContext::NotifyPermissionSetWithLifetime(
id, requesting_origin, embedding_origin, std::move(callback), persist,
- content_setting, /*is_one_time=*/false, /*is_final_decision=*/true);
- content_setting, is_one_time, /*is_final_decision=*/true);
+ content_setting, is_one_time, /*is_final_decision=*/true, lifetime_option);
}
@@ -989,20 +886,19 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
content::PermissionResult UpdatePermissionStatusWithDeviceStatus(
content::PermissionResult result,
const GURL& requesting_origin,
@@ -131,6 +140,7 @@ class GeolocationPermissionContextAndroid
const GURL& embedding_origin,
@@ -132,6 +141,7 @@ class GeolocationPermissionContextAndroid
bool persist,
ContentSetting content_setting,
+ bool is_one_time, content_settings::LifetimeMode lifetime_option,
bool is_one_time,
+ content_settings::LifetimeMode lifetime_option,
LocationSettingsDialogOutcome prompt_outcome);
void FinishNotifyPermissionSet(const PermissionRequestID& id,
@@ -138,7 +148,9 @@ class GeolocationPermissionContextAndroid
const GURL& embedding_origin,
@@ -140,7 +150,8 @@ class GeolocationPermissionContextAndroid
BrowserPermissionCallback callback,
bool persist,
- ContentSetting content_setting);
+ ContentSetting content_setting,
ContentSetting content_setting,
- bool is_one_time);
+ bool is_one_time,
+ content_settings::LifetimeMode lifetime_option);
@@ -1011,11 +907,12 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc
--- a/components/permissions/permission_context_base.cc
+++ b/components/permissions/permission_context_base.cc
@@ -261,6 +261,16 @@ PermissionContextBase::CreatePermissionRequest(
std::move(delete_callback));
@@ -265,6 +265,17 @@ bool PermissionContextBase::UsesAutomaticEmbargo() const {
return true;
}
+std::unique_ptr<PermissionRequest> PermissionContextBase::CreatePermissionRequest(
+std::unique_ptr<PermissionRequest>
+PermissionContextBase::CreatePermissionRequest(
+ content::WebContents* web_contents,
+ PermissionRequestData request_data,
+ PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback,
@@ -1028,7 +925,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
content::PermissionResult PermissionContextBase::GetPermissionStatus(
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
@@ -505,7 +515,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id,
@@ -511,7 +522,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id,
const GURL& embedding_origin,
ContentSetting content_setting,
bool is_one_time,
@@ -1038,7 +935,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
content_setting == CONTENT_SETTING_BLOCK ||
content_setting == CONTENT_SETTING_DEFAULT);
@@ -520,13 +531,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id,
@@ -526,13 +538,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id,
// missing if a permission prompt was preignored and we already notified an
// origin about it.
if (request->second.second) {
@@ -1057,7 +954,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
}
}
@@ -572,11 +584,27 @@ void PermissionContextBase::NotifyPermissionSet(
@@ -578,11 +591,27 @@ void PermissionContextBase::NotifyPermissionSet(
ContentSetting content_setting,
bool is_one_time,
bool is_final_decision) {
@@ -1086,7 +983,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
}
if (is_final_decision) {
@@ -606,6 +634,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
@@ -612,6 +641,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
const GURL& embedding_origin,
ContentSetting content_setting,
bool is_one_time) {
@@ -1102,7 +999,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL());
DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL());
DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
@@ -615,6 +652,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
@@ -621,6 +659,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin,
constraints.set_session_model(is_one_time
? content_settings::SessionModel::OneTime
: content_settings::SessionModel::Durable);
@@ -1142,9 +1039,9 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
virtual void UpdateContentSetting(const GURL& requesting_origin,
const GURL& embedding_origin,
ContentSetting content_setting,
@@ -204,6 +218,12 @@ class PermissionContextBase : public content_settings::Observer {
PermissionRequest::PermissionDecidedCallback permission_decided_callback,
base::OnceClosure delete_callback) const;
@@ -207,6 +221,12 @@ class PermissionContextBase : public content_settings::Observer {
// Implementors can override this method to avoid using automatic embargo.
virtual bool UsesAutomaticEmbargo() const;
+ virtual std::unique_ptr<PermissionRequest> CreatePermissionRequest(
+ content::WebContents* web_contents,
@@ -1155,7 +1052,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
base::ObserverList<permissions::Observer> permission_observers_;
// Set by subclasses to inform the base class that they will handle adding
@@ -226,7 +246,8 @@ class PermissionContextBase : public content_settings::Observer {
@@ -229,7 +249,8 @@ class PermissionContextBase : public content_settings::Observer {
const GURL& embedding_origin,
ContentSetting content_setting,
bool is_one_time,
@@ -1168,7 +1065,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
diff --git a/components/permissions/permission_prompt.h b/components/permissions/permission_prompt.h
--- a/components/permissions/permission_prompt.h
+++ b/components/permissions/permission_prompt.h
@@ -65,8 +65,9 @@ class PermissionPrompt {
@@ -67,8 +67,9 @@ class PermissionPrompt {
virtual GURL GetEmbeddingOrigin() const = 0;
virtual void Accept() = 0;
@@ -1182,9 +1079,9 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions
diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc
--- a/components/permissions/permission_request.cc
+++ b/components/permissions/permission_request.cc
@@ -37,6 +37,14 @@ PermissionRequest::PermissionRequest(
permission_decided_callback_(std::move(permission_decided_callback)),
delete_callback_(std::move(delete_callback)) {}
@@ -43,6 +43,14 @@ PermissionRequest::PermissionRequest(
delete_callback_(std::move(delete_callback)),
uses_automatic_embargo_(uses_automatic_embargo) {}
+PermissionRequest::PermissionRequest(
+ PermissionRequestData request_data,
@@ -1197,7 +1094,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
PermissionRequest::~PermissionRequest() {
DCHECK(delete_callback_.is_null());
}
@@ -279,19 +287,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const {
@@ -357,19 +365,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const {
permissions::features::kPermissionStorageAccessAPI);
}
@@ -1240,7 +1137,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio
diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h
--- a/components/permissions/permission_request.h
+++ b/components/permissions/permission_request.h
@@ -44,6 +44,11 @@ class PermissionRequest {
@@ -43,6 +43,11 @@ class PermissionRequest {
bool /*is_one_time*/,
bool /*is_final_decision*/)>;
@@ -1253,8 +1150,8 @@ diff --git a/components/permissions/permission_request.h b/components/permission
// resolved by the user (see comment on PermissionDecidedCallback above).
// `delete_callback` is called when the permission request is no longer needed
@@ -63,6 +68,10 @@ class PermissionRequest {
PermissionDecidedCallback permission_decided_callback,
base::OnceClosure delete_callback);
base::OnceClosure delete_callback,
bool uses_automatic_embargo);
+ PermissionRequest(PermissionRequestData request_data,
+ PermissionDecidedCallbackWithLifetime permission_decided_callback,
@@ -1263,7 +1160,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission
PermissionRequest(const PermissionRequest&) = delete;
PermissionRequest& operator=(const PermissionRequest&) = delete;
@@ -128,10 +137,10 @@ class PermissionRequest {
@@ -159,10 +168,10 @@ class PermissionRequest {
// If |is_one_time| is true the permission will last until all tabs of
// |origin| are closed or navigated away from, and then the permission will
// automatically expire after 1 day.
@@ -1276,7 +1173,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission
// Called when the user has cancelled the permission request. This
// corresponds to a denial, but is segregated in case the context needs to
@@ -180,6 +189,9 @@ class PermissionRequest {
@@ -216,6 +225,9 @@ class PermissionRequest {
// Called once a decision is made about the permission.
PermissionDecidedCallback permission_decided_callback_;
@@ -1289,7 +1186,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission
diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc
--- a/components/permissions/permission_request_manager.cc
+++ b/components/permissions/permission_request_manager.cc
@@ -155,7 +155,7 @@ void PermissionRequestManager::AddRequest(
@@ -156,7 +156,7 @@ void PermissionRequestManager::AddRequest(
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDenyPermissionPrompts)) {
@@ -1298,7 +1195,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
request->RequestFinished();
return;
}
@@ -231,7 +231,7 @@ void PermissionRequestManager::AddRequest(
@@ -232,7 +232,7 @@ void PermissionRequestManager::AddRequest(
if (auto_approval_origin) {
if (url::Origin::Create(request->requesting_origin()) ==
auto_approval_origin.value()) {
@@ -1307,7 +1204,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
request->RequestFinished();
return;
@@ -574,7 +574,8 @@ void PermissionRequestManager::Accept() {
@@ -593,7 +593,8 @@ void PermissionRequestManager::Accept() {
(*requests_iter)->request_type(),
PermissionAction::GRANTED);
PermissionGrantedIncludingDuplicates(*requests_iter,
@@ -1316,8 +1213,8 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
+ content_settings::LifetimeMode::Always);
#if !BUILDFLAG(IS_ANDROID)
absl::optional<ContentSettingsType> content_settings_type =
@@ -592,7 +593,7 @@ void PermissionRequestManager::Accept() {
std::optional<ContentSettingsType> content_settings_type =
@@ -611,7 +612,7 @@ void PermissionRequestManager::Accept() {
CurrentRequestsDecided(PermissionAction::GRANTED);
}
@@ -1326,7 +1223,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
if (ignore_callbacks_from_prompt_)
return;
DCHECK(view_);
@@ -603,7 +604,8 @@ void PermissionRequestManager::AcceptThisTime() {
@@ -623,7 +624,8 @@ void PermissionRequestManager::AcceptThisTime() {
(*requests_iter)->request_type(),
PermissionAction::GRANTED_ONCE);
PermissionGrantedIncludingDuplicates(*requests_iter,
@@ -1336,7 +1233,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
NotifyRequestDecided(PermissionAction::GRANTED_ONCE);
@@ -611,6 +613,15 @@ void PermissionRequestManager::AcceptThisTime() {
@@ -631,6 +633,15 @@ void PermissionRequestManager::AcceptThisTime() {
}
void PermissionRequestManager::Deny() {
@@ -1352,7 +1249,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
if (ignore_callbacks_from_prompt_)
return;
DCHECK(view_);
@@ -633,7 +644,7 @@ void PermissionRequestManager::Deny() {
@@ -654,7 +665,7 @@ void PermissionRequestManager::Deny() {
StorePermissionActionForUMA((*requests_iter)->requesting_origin(),
(*requests_iter)->request_type(),
PermissionAction::DENIED);
@@ -1361,7 +1258,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
}
NotifyRequestDecided(PermissionAction::DENIED);
@@ -1190,32 +1201,32 @@ PermissionRequestManager::VisitDuplicateRequests(
@@ -1213,32 +1224,32 @@ PermissionRequestManager::VisitDuplicateRequests(
void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
PermissionRequest* request,
@@ -1404,8 +1301,8 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
request);
}
@@ -1467,7 +1478,7 @@ void PermissionRequestManager::LogWarningToConsole(const char* message) {
void PermissionRequestManager::DoAutoResponseForTesting() {
@@ -1495,7 +1506,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() {
}
switch (auto_response_for_test_) {
case ACCEPT_ONCE:
- AcceptThisTime();
@@ -1416,7 +1313,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p
diff --git a/components/permissions/permission_request_manager.h b/components/permissions/permission_request_manager.h
--- a/components/permissions/permission_request_manager.h
+++ b/components/permissions/permission_request_manager.h
@@ -159,8 +159,10 @@ class PermissionRequestManager
@@ -162,8 +162,10 @@ class PermissionRequestManager
GURL GetRequestingOrigin() const override;
GURL GetEmbeddingOrigin() const override;
void Accept() override;
@@ -1428,7 +1325,7 @@ diff --git a/components/permissions/permission_request_manager.h b/components/pe
void Dismiss() override;
void Ignore() override;
void FinalizeCurrentRequests() override;
@@ -365,9 +367,12 @@ class PermissionRequestManager
@@ -368,9 +370,12 @@ class PermissionRequestManager
// Calls PermissionGranted on a request and all its duplicates.
void PermissionGrantedIncludingDuplicates(PermissionRequest* request,
@@ -9,24 +9,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/bookmarks/BookmarkBridge.java | 67 +++++++++++++++++++
.../bookmarks/android/bookmark_bridge.cc | 44 ++++++++++++
.../bookmarks/android/bookmark_bridge.h | 8 +++
.../browser/bookmarks/bookmark_html_writer.cc | 8 ++-
.../browser/bookmarks/bookmark_html_writer.cc | 11 ++-
.../dialogs/DownloadLocationCustomView.java | 4 +-
.../strings/android_chrome_strings.grd | 3 +
components/bookmark_bar_strings.grdp | 6 ++
.../bookmarks/browser/bookmark_client.cc | 2 +
.../bookmarks/browser/bookmark_codec.cc | 22 ++++--
.../bookmarks/browser/bookmark_codec.cc | 20 +++++-
components/bookmarks/browser/bookmark_codec.h | 7 +-
.../browser/bookmark_load_details.cc | 4 ++
.../bookmarks/browser/bookmark_load_details.h | 3 +
.../browser/bookmark_load_details.cc | 8 ++-
.../bookmarks/browser/bookmark_load_details.h | 2 +
.../bookmarks/browser/bookmark_model.cc | 3 +-
components/bookmarks/browser/bookmark_model.h | 7 ++
components/bookmarks/browser/bookmark_node.cc | 11 +++
components/bookmarks/browser/bookmark_node.h | 4 ++
components/bookmarks/browser/bookmark_node.h | 3 +
.../bookmarks/browser/bookmark_storage.cc | 2 +
.../bookmarks/browser/bookmark_uuids.cc | 3 +
components/bookmarks/browser/bookmark_uuids.h | 1 +
components/bookmarks/browser/model_loader.cc | 3 +-
components/bookmarks/browser/model_loader.cc | 8 ++-
.../bookmark_specifics_conversions.cc | 1 +
22 files changed, 232 insertions(+), 10 deletions(-)
22 files changed, 236 insertions(+), 14 deletions(-)
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
@@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
<item android:id="@+id/recent_tabs_menu_id"
android:title="@string/menu_recent_tabs"
android:icon="@drawable/devices_black_24dp" />
@@ -183,6 +187,9 @@ found in the LICENSE file.
@@ -186,6 +190,9 @@ found in the LICENSE file.
<item android:id="@+id/close_all_incognito_tabs_menu_id"
android:title="@string/menu_close_all_incognito_tabs"
android:icon="@drawable/btn_close_white" />
@@ -55,7 +55,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -86,6 +86,7 @@ import org.chromium.chrome.browser.base.ColdStartTracker;
@@ -89,6 +89,7 @@ import org.chromium.chrome.browser.base.ColdStartTracker;
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
import org.chromium.chrome.browser.browserservices.intents.WebappConstants;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
@@ -63,7 +63,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.chrome.browser.compositor.layouts.Layout;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
@@ -2787,6 +2788,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -2950,6 +2951,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
getTabModelSelectorSupplier().get(),
() -> getTabModelSelector().closeAllTabs());
RecordUserAction.record("MobileMenuCloseAllTabs");
@@ -72,8 +72,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
} else if (id == R.id.close_all_incognito_tabs_menu_id) {
// Close only incognito tabs
CloseAllTabsDialog.show(
@@ -2858,6 +2861,27 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
mTabModalHandler.onOmniboxFocusChanged(hasFocus);
@@ -3021,6 +3024,27 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus);
}
+ private void bookmarkAllTabs() {
@@ -103,18 +103,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -32,6 +32,7 @@ import org.jni_zero.NativeMethods;
@@ -18,11 +18,17 @@ import org.jni_zero.NativeMethods;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
+import org.chromium.base.Log;
import org.chromium.base.ObserverList;
import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.RecordHistogram;
@@ -39,6 +40,11 @@ import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.read_later.ReadingListUtils;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -123,7 +121,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkItem;
import org.chromium.components.bookmarks.BookmarkType;
@@ -83,6 +89,8 @@ import java.io.File;
@@ -82,6 +88,8 @@ import org.chromium.ui.modaldialog.DialogDismissalCause;
class BookmarkBridge {
private final ObserverList<BookmarkModelObserver> mObservers = new ObserverList<>();
@@ -132,7 +130,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
private long mNativeBookmarkBridge;
private boolean mIsDestroyed;
private boolean mIsDoingExtensiveChanges;
@@ -374,6 +382,16 @@ class BookmarkBridge {
@@ -402,6 +410,16 @@ class BookmarkBridge {
return mMobileFolderId;
}
@@ -146,11 +144,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
+ mNativeBookmarkBridge, BookmarkBridge.this);
+ }
+
/**
* @return Id representing the special "other" folder from bookmark model.
*/
@@ -1018,6 +1036,50 @@ class BookmarkBridge {
return BookmarkBridgeJni.get().addToReadingList(mNativeBookmarkBridge, title, url);
/** Returns Id representing the special "other" folder from bookmark model. */
public BookmarkId getOtherFolderId() {
ThreadUtils.assertOnUiThread();
@@ -1092,6 +1110,50 @@ class BookmarkBridge {
.addToReadingList(mNativeBookmarkBridge, parentId, title, url);
}
+ // Used to bookmark all tabs in a specific folder, created if not existing
@@ -198,9 +196,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
+ }
+
/**
* Helper method to mark an article as read.
* Helper method to mark an item as read.
*
@@ -1243,6 +1305,9 @@ class BookmarkBridge {
@@ -1334,6 +1396,9 @@ class BookmarkBridge {
BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl(long nativeBookmarkBridge, GURL url);
@@ -209,8 +207,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
+
BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type);
void getTopLevelFolderIds(long nativeBookmarkBridge, List<BookmarkId> bookmarksList);
@@ -1254,6 +1319,8 @@ class BookmarkBridge {
void getTopLevelFolderIds(
@@ -1353,6 +1418,8 @@ class BookmarkBridge {
BookmarkId getRootFolderId(long nativeBookmarkBridge);
@@ -222,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc
--- a/chrome/browser/bookmarks/android/bookmark_bridge.cc
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc
@@ -331,6 +331,33 @@ void BookmarkBridge::GetImageUrlForBookmark(
@@ -367,6 +367,33 @@ void BookmarkBridge::GetImageUrlForBookmark(
base::BindOnce(&HandleImageUrlResponse, callback));
}
@@ -237,11 +235,11 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+ bookmarks::BookmarkModel* model =
+ BookmarkModelFactory::GetForBrowserContext(profile_);
+
+ std::vector<const bookmarks::BookmarkNode*> nodes =
+ std::vector<raw_ptr<const bookmarks::BookmarkNode, VectorExperimental>> nodes =
+ model->GetNodesByURL(gurl);
+ std::sort(nodes.begin(), nodes.end(), &bookmarks::MoreRecentlyAdded);
+
+ for (const auto* node : nodes) {
+ for (const BookmarkNode* node : nodes) {
+ for (const auto& child : model->tabs_collection_node()->children()) {
+ if (node->id() == child->id()) {
+ return JavaBookmarkIdCreateBookmarkId(env, node->id(),
@@ -256,7 +254,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
base::android::ScopedJavaLocalRef<jobject>
BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(
JNIEnv* env,
@@ -421,6 +448,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
@@ -482,6 +509,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
// Vector to temporarily contain all child bookmarks at same level for sorting
std::vector<const BookmarkNode*> bookmarks = {
bookmark_model_->mobile_node(),
@@ -264,7 +262,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
bookmark_model_->bookmark_bar_node(),
bookmark_model_->other_node(),
};
@@ -474,6 +502,11 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl() {
@@ -539,6 +567,11 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
top_level_folders.push_back(root_child.get());
}
@@ -273,10 +271,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+ top_level_folders.push_back(node.get());
+ }
+
if (reading_list_manager_->GetRoot()) {
top_level_folders.push_back(reading_list_manager_->GetRoot());
}
@@ -1027,6 +1060,17 @@ void BookmarkBridge::GetBookmarksOfType(
if (account_reading_list_manager_ &&
account_reading_list_manager_->GetRoot()) {
top_level_folders.push_back(account_reading_list_manager_->GetRoot());
@@ -1176,6 +1209,17 @@ void BookmarkBridge::GetBookmarksOfType(
AddBookmarkNodesToBookmarkIdList(env, j_list, results);
}
@@ -297,7 +295,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser/bookmarks/android/bookmark_bridge.h
--- a/chrome/browser/bookmarks/android/bookmark_bridge.h
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.h
@@ -67,6 +67,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
@@ -77,6 +77,10 @@ class BookmarkBridge : public ProfileObserver,
const base::android::JavaParamRef<jobject>& j_url,
const base::android::JavaParamRef<jobject>& j_callback);
@@ -308,7 +306,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
base::android::ScopedJavaLocalRef<jobject>
GetMostRecentlyAddedUserBookmarkIdForUrl(
JNIEnv* env,
@@ -197,6 +201,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
@@ -227,6 +231,10 @@ class BookmarkBridge : public ProfileObserver,
const base::android::JavaParamRef<jobject>& j_list,
jint type);
@@ -322,7 +320,17 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc
--- a/chrome/browser/bookmarks/bookmark_html_writer.cc
+++ b/chrome/browser/bookmarks/bookmark_html_writer.cc
@@ -190,15 +190,19 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
@@ -168,7 +168,8 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
BookmarkCodec codec;
bookmarks_ =
codec.Encode(model->bookmark_bar_node(), model->other_node(),
- model->mobile_node(), /*sync_metadata_str=*/std::string());
+ model->mobile_node(), model->tabs_collection_node(),
+ /*sync_metadata_str=*/std::string());
}
Writer(const Writer&) = delete;
@@ -195,15 +196,19 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
roots->FindDict(BookmarkCodec::kOtherBookmarkFolderNameKey);
base::Value::Dict* mobile_folder_value =
roots->FindDict(BookmarkCodec::kMobileBookmarkFolderNameKey);
@@ -343,7 +351,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
NotifyOnFinish(BookmarksExportObserver::Result::kCouldNotWriteNodes);
return;
}
@@ -465,6 +469,8 @@ void BookmarkFaviconFetcher::ExportBookmarks() {
@@ -467,6 +472,8 @@ void BookmarkFaviconFetcher::ExportBookmarks() {
BookmarkModelFactory::GetForBrowserContext(profile_)->other_node());
ExtractUrls(
BookmarkModelFactory::GetForBrowserContext(profile_)->mobile_node());
@@ -355,7 +363,7 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
@@ -77,7 +77,7 @@ public class DownloadLocationCustomView extends ScrollView
@@ -85,7 +85,7 @@ public class DownloadLocationCustomView extends ScrollView
mDirectoryAdapter.update();
}
@@ -364,7 +372,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
mTitle.setText(title);
}
@@ -85,7 +85,7 @@ public class DownloadLocationCustomView extends ScrollView
@@ -93,7 +93,7 @@ public class DownloadLocationCustomView extends ScrollView
mSubtitleView.setText(subtitle);
}
@@ -376,7 +384,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3789,6 +3789,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3875,6 +3875,9 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
<message name="IDS_MENU_SELECT_TABS" desc="Menu item for bulk editing tabs. [CHAR_LIMIT=27]">
Select tabs
</message>
@@ -409,22 +417,10 @@ diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_stri
<message name="IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME" desc="In Title Case: Name shown in the tree for the other bookmarks folder">
Other Bookmarks
</message>
diff --git a/components/bookmarks/browser/bookmark_client.cc b/components/bookmarks/browser/bookmark_client.cc
--- a/components/bookmarks/browser/bookmark_client.cc
+++ b/components/bookmarks/browser/bookmark_client.cc
@@ -55,6 +55,8 @@ bool BookmarkClient::IsPermanentNodeVisibleWhenEmpty(
case BookmarkNode::MOBILE:
// Either MOBILE or OTHER_NODE is visible when empty, but never both.
return !IsPermanentNodeVisibleWhenEmpty(BookmarkNode::OTHER_NODE);
+ case bookmarks::BookmarkNode::TABS_COLLECTION:
+ return !is_desktop;
}
NOTREACHED_NORETURN();
}
diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmarks/browser/bookmark_codec.cc
--- a/components/bookmarks/browser/bookmark_codec.cc
+++ b/components/bookmarks/browser/bookmark_codec.cc
@@ -36,6 +36,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar";
@@ -35,6 +35,7 @@ const char BookmarkCodec::kBookmarkBarFolderNameKey[] = "bookmark_bar";
const char BookmarkCodec::kOtherBookmarkFolderNameKey[] = "other";
// The value is left as 'synced' for historical reasons.
const char BookmarkCodec::kMobileBookmarkFolderNameKey[] = "synced";
@@ -432,41 +428,32 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
const char BookmarkCodec::kVersionKey[] = "version";
const char BookmarkCodec::kChecksumKey[] = "checksum";
const char BookmarkCodec::kIdKey[] = "id";
@@ -74,7 +75,8 @@ BookmarkCodec::~BookmarkCodec() = default;
base::Value::Dict BookmarkCodec::Encode(BookmarkModel* model,
std::string sync_metadata_str) {
return Encode(model->bookmark_bar_node(), model->other_node(),
- model->mobile_node(), model->root_node()->GetMetaInfoMap(),
+ model->mobile_node(), model->tabs_collection_node(),
+ model->root_node()->GetMetaInfoMap(),
std::move(sync_metadata_str));
}
@@ -82,6 +84,7 @@ base::Value::Dict BookmarkCodec::Encode(
@@ -72,6 +73,7 @@ base::Value::Dict BookmarkCodec::Encode(
const BookmarkNode* bookmark_bar_node,
const BookmarkNode* other_folder_node,
const BookmarkNode* mobile_folder_node,
+ const BookmarkNode* tabs_folder_node,
const BookmarkNode::MetaInfoMap* model_meta_info_map,
std::string sync_metadata_str) {
ids_reassigned_ = false;
@@ -102,6 +105,7 @@ base::Value::Dict BookmarkCodec::Encode(
uuids_reassigned_ = false;
@@ -91,6 +93,8 @@ base::Value::Dict BookmarkCodec::Encode(
roots.Set(kBookmarkBarFolderNameKey, EncodeNode(bookmark_bar_node));
roots.Set(kOtherBookmarkFolderNameKey, EncodeNode(other_folder_node));
roots.Set(kMobileBookmarkFolderNameKey, EncodeNode(mobile_folder_node));
+ roots.Set(kTabsBookmarkFolderNameKey, EncodeNode(tabs_folder_node));
if (model_meta_info_map)
roots.Set(kMetaInfo, EncodeMetaInfo(*model_meta_info_map));
+ if (tabs_folder_node)
+ roots.Set(kTabsBookmarkFolderNameKey, EncodeNode(tabs_folder_node));
@@ -119,6 +123,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
FinalizeChecksum();
// We are going to store the computed checksum. So set stored checksum to be
@@ -107,6 +111,7 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
+ BookmarkNode* tabs_folder_node,
int64_t* max_id,
std::string* sync_metadata_str) {
ids_.clear();
@@ -126,7 +131,8 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
const int64_t max_already_assigned_id =
@@ -117,7 +122,8 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
base::Uuid::ParseLowercase(kBookmarkBarNodeUuid),
base::Uuid::ParseLowercase(kOtherBookmarksNodeUuid),
base::Uuid::ParseLowercase(kMobileBookmarksNodeUuid),
@@ -476,7 +463,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
ids_reassigned_ = false;
uuids_reassigned_ = false;
ids_valid_ = true;
@@ -134,12 +140,13 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
@@ -125,13 +131,14 @@ bool BookmarkCodec::Decode(const base::Value::Dict& value,
stored_checksum_.clear();
InitializeChecksum();
bool success = DecodeHelper(bb_node, other_folder_node, mobile_folder_node,
@@ -485,21 +472,22 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
FinalizeChecksum();
// If either the checksums differ or some IDs were missing/not unique,
// reassign IDs.
if (!ids_valid_ || computed_checksum() != stored_checksum())
if (!ids_valid_ || computed_checksum_ != stored_checksum_) {
maximum_id_ = max_already_assigned_id;
- ReassignIDs(bb_node, other_folder_node, mobile_folder_node);
+ ReassignIDs(bb_node, other_folder_node, mobile_folder_node, tabs_folder_node);
}
*max_id = maximum_id_ + 1;
return success;
}
@@ -191,6 +198,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo(
@@ -189,6 +196,7 @@ base::Value::Dict BookmarkCodec::EncodeMetaInfo(
bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
+ BookmarkNode* tabs_folder_node,
const base::Value::Dict& value,
std::string* sync_metadata_str) {
absl::optional<int> version = value.FindInt(kVersionKey);
@@ -215,6 +223,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
std::optional<int> version = value.FindInt(kVersionKey);
@@ -213,6 +221,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
roots->FindDict(kOtherBookmarkFolderNameKey);
const base::Value::Dict* mobile_folder_value =
roots->FindDict(kMobileBookmarkFolderNameKey);
@@ -508,23 +496,23 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
if (!bb_value || !other_folder_value || !mobile_folder_value)
return false;
@@ -222,6 +232,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
@@ -220,6 +230,8 @@ bool BookmarkCodec::DecodeHelper(BookmarkNode* bb_node,
DecodeNode(*bb_value, nullptr, bb_node);
DecodeNode(*other_folder_value, nullptr, other_folder_node);
DecodeNode(*mobile_folder_value, nullptr, mobile_folder_node);
+ if (tabs_folder_value)
+ DecodeNode(*tabs_folder_value, nullptr, tabs_folder_node);
if (!DecodeMetaInfo(*roots, &model_meta_info_map_))
return false;
@@ -463,11 +475,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
if (sync_metadata_str) {
const std::string* sync_metadata_str_base64 =
@@ -459,11 +471,13 @@ void BookmarkCodec::DecodeMetaInfoHelper(
void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node,
BookmarkNode* other_node,
- BookmarkNode* mobile_node) {
+ BookmarkNode* mobile_node,
+ BookmarkNode* tabs_folder_node) {
maximum_id_ = 0;
ids_.clear();
ReassignIDsHelper(bb_node);
ReassignIDsHelper(other_node);
ReassignIDsHelper(mobile_node);
@@ -535,15 +523,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.cc b/components/bookmar
diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmarks/browser/bookmark_codec.h
--- a/components/bookmarks/browser/bookmark_codec.h
+++ b/components/bookmarks/browser/bookmark_codec.h
@@ -46,6 +46,7 @@ class BookmarkCodec {
@@ -39,6 +39,7 @@ class BookmarkCodec {
const BookmarkNode* bookmark_bar_node,
const BookmarkNode* other_folder_node,
const BookmarkNode* mobile_folder_node,
+ const BookmarkNode* tabs_folder_node,
const BookmarkNode::MetaInfoMap* model_meta_info_map,
std::string sync_metadata_str);
@@ -58,6 +59,7 @@ class BookmarkCodec {
// Decodes the previously encoded value to the specified nodes as well as
@@ -57,6 +58,7 @@ class BookmarkCodec {
BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
@@ -551,15 +539,15 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
int64_t* max_node_id,
std::string* sync_metadata_str);
@@ -103,6 +105,7 @@ class BookmarkCodec {
// Allows the BookmarkClient to read and a write a string blob from the JSON
// file. That string captures the bookmarks sync metadata.
static const char kSyncMetadata[];
@@ -82,6 +84,7 @@ class BookmarkCodec {
static const char kBookmarkBarFolderNameKey[];
static const char kOtherBookmarkFolderNameKey[];
static const char kMobileBookmarkFolderNameKey[];
+ static const char kTabsBookmarkFolderNameKey[];
static const char kDateLastUsed[];
// Possible values for kTypeKey.
@@ -121,6 +124,7 @@ class BookmarkCodec {
static const char kVersionKey[];
static const char kChecksumKey[];
static const char kIdKey[];
@@ -114,6 +117,7 @@ class BookmarkCodec {
bool DecodeHelper(BookmarkNode* bb_node,
BookmarkNode* other_folder_node,
BookmarkNode* mobile_folder_node,
@@ -567,7 +555,7 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
const base::Value::Dict& value,
std::string* sync_metadata_str);
@@ -132,7 +136,8 @@ class BookmarkCodec {
@@ -124,7 +128,8 @@ class BookmarkCodec {
// Reassigns bookmark IDs for all nodes.
void ReassignIDs(BookmarkNode* bb_node,
BookmarkNode* other_node,
@@ -580,41 +568,58 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark
diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc
--- a/components/bookmarks/browser/bookmark_load_details.cc
+++ b/components/bookmarks/browser/bookmark_load_details.cc
@@ -37,6 +37,10 @@ BookmarkLoadDetails::BookmarkLoadDetails(BookmarkClient* client)
root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(
max_id_++,
client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::MOBILE))));
+ tabs_collection_folder_node_ = static_cast<BookmarkPermanentNode*>(
+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(
+ max_id_++,
+ client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::TABS_COLLECTION))));
}
@@ -15,7 +15,7 @@ namespace {
BookmarkLoadDetails::~BookmarkLoadDetails() = default;
// Number of top-level permanent folders excluding the managed node and account
// bookmarks.
-constexpr size_t kNumDefaultTopLevelPermanentFolders = 3u;
+constexpr size_t kNumDefaultTopLevelPermanentFolders = 4u;
} // namespace
@@ -40,6 +40,8 @@ BookmarkLoadDetails::BookmarkLoadDetails()
root_node_->Add(BookmarkPermanentNode::CreateOtherBookmarks(/*id=*/0)));
mobile_folder_node_ = static_cast<BookmarkPermanentNode*>(
root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(/*id=*/0)));
+ tabs_collection_folder_node_ = static_cast<BookmarkPermanentNode*>(
+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(/*id=*/0)));
CHECK_EQ(kNumDefaultTopLevelPermanentFolders, root_node_->children().size());
}
@@ -105,8 +107,8 @@ void BookmarkLoadDetails::AddManagedNode(
void BookmarkLoadDetails::CreateIndices() {
local_or_syncable_uuid_index_.insert(root_node_.get());
- static_assert(kNumDefaultTopLevelPermanentFolders == 3u,
- "The code below assumes three permanent nodes");
+ static_assert(kNumDefaultTopLevelPermanentFolders == 4u,
+ "The code below assumes 4 permanent nodes");
for (const auto& child : root_node_->children()) {
if (child.get() == account_bb_node_ ||
child.get() == account_other_folder_node_ ||
diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/bookmarks/browser/bookmark_load_details.h
--- a/components/bookmarks/browser/bookmark_load_details.h
+++ b/components/bookmarks/browser/bookmark_load_details.h
@@ -47,6 +47,7 @@ class BookmarkLoadDetails {
@@ -39,6 +39,7 @@ class BookmarkLoadDetails {
BookmarkPermanentNode* bb_node() { return bb_node_; }
BookmarkPermanentNode* mobile_folder_node() { return mobile_folder_node_; }
BookmarkPermanentNode* other_folder_node() { return other_folder_node_; }
+ BookmarkPermanentNode* tabs_collection_folder_node() { return tabs_collection_folder_node_; }
std::unique_ptr<TitledUrlIndex> owned_titled_url_index() {
return std::move(titled_url_index_);
@@ -112,6 +113,8 @@ class BookmarkLoadDetails {
nullptr;
raw_ptr<BookmarkPermanentNode, DanglingUntriaged> mobile_folder_node_ =
nullptr;
+ raw_ptr<BookmarkPermanentNode, DanglingUntriaged> tabs_collection_folder_node_ =
+ nullptr;
LoadManagedNodeCallback load_managed_node_callback_;
std::unique_ptr<TitledUrlIndex> titled_url_index_;
UuidIndex uuid_index_;
// Account permanent nodes (null unless `AddAccountPermanentNodes()` is
// called).
@@ -138,6 +139,7 @@ class BookmarkLoadDetails {
raw_ptr<BookmarkPermanentNode> bb_node_;
raw_ptr<BookmarkPermanentNode> other_folder_node_;
raw_ptr<BookmarkPermanentNode> mobile_folder_node_;
+ raw_ptr<BookmarkPermanentNode> tabs_collection_folder_node_;
raw_ptr<BookmarkPermanentNode> account_bb_node_;
raw_ptr<BookmarkPermanentNode> account_other_folder_node_;
raw_ptr<BookmarkPermanentNode> account_mobile_folder_node_;
diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc
--- a/components/bookmarks/browser/bookmark_model.cc
+++ b/components/bookmarks/browser/bookmark_model.cc
@@ -829,7 +829,7 @@ bool BookmarkModel::HasBookmarks() const {
@@ -846,7 +846,7 @@ bool BookmarkModel::HasBookmarks() const {
bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return bookmark_bar_node_->children().empty() &&
@@ -623,14 +628,14 @@ diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmar
}
bool BookmarkModel::IsBookmarked(const GURL& url) const {
@@ -1166,6 +1166,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
@@ -1191,6 +1191,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
bookmark_bar_node_ = details->bb_node();
other_node_ = details->other_folder_node();
mobile_node_ = details->mobile_folder_node();
+ tabs_collection_node_ = details->tabs_collection_folder_node();
// TODO(crbug.com/1494120): Load nodes for account storage as well.
account_bookmark_bar_node_ = details->account_bb_node();
account_other_node_ = details->account_other_folder_node();
diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h
--- a/components/bookmarks/browser/bookmark_model.h
+++ b/components/bookmarks/browser/bookmark_model.h
@@ -647,7 +652,7 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark
bool is_root_node(const BookmarkNode* node) const {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
return node == root_;
@@ -528,6 +534,7 @@ class BookmarkModel final : public BookmarkUndoProvider,
@@ -619,6 +625,7 @@ class BookmarkModel final : public BookmarkUndoProvider,
raw_ptr<BookmarkPermanentNode> account_bookmark_bar_node_ = nullptr;
raw_ptr<BookmarkPermanentNode> account_other_node_ = nullptr;
raw_ptr<BookmarkPermanentNode> account_mobile_node_ = nullptr;
@@ -658,19 +663,26 @@ diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmark
diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmarks/browser/bookmark_node.cc
--- a/components/bookmarks/browser/bookmark_node.cc
+++ b/components/bookmarks/browser/bookmark_node.cc
@@ -189,6 +189,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id,
visible_when_empty));
@@ -161,6 +161,8 @@ bool BookmarkPermanentNode::IsTypeVisibleWhenEmpty(Type type) {
#endif
switch (type) {
+ case bookmarks::BookmarkNode::TABS_COLLECTION:
+ return !is_desktop;
case BookmarkNode::URL:
NOTREACHED_NORETURN();
case BookmarkNode::FOLDER:
@@ -211,6 +213,15 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id) {
l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME)));
}
+// static
+std::unique_ptr<BookmarkPermanentNode>
+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id,
+ bool visible_when_empty) {
+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id) {
+ // base::WrapUnique() used because the constructor is private.
+ return base::WrapUnique(new BookmarkPermanentNode(
+ id, TABS_COLLECTION, base::Uuid::ParseLowercase(kTabsCollectionBookmarksNodeUuid),
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME),
+ visible_when_empty));
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME)));
+}
+
BookmarkPermanentNode::BookmarkPermanentNode(int64_t id,
@@ -687,16 +699,34 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks
MOBILE
};
@@ -246,6 +247,9 @@ class BookmarkPermanentNode : public BookmarkNode {
@@ -231,6 +232,8 @@ class BookmarkPermanentNode : public BookmarkNode {
int64_t id);
static std::unique_ptr<BookmarkPermanentNode> CreateMobileBookmarks(
int64_t id,
bool visible_when_empty);
int64_t id);
+ static std::unique_ptr<BookmarkPermanentNode> CreateTabsCollectionBookmarks(
+ int64_t id,
+ bool visible_when_empty);
+ int64_t id);
// Returns whether the permanent node of type `type` should be visible even
// when it is empty (i.e. no children).
diff --git a/components/bookmarks/browser/bookmark_storage.cc b/components/bookmarks/browser/bookmark_storage.cc
--- a/components/bookmarks/browser/bookmark_storage.cc
+++ b/components/bookmarks/browser/bookmark_storage.cc
@@ -45,6 +45,7 @@ base::Value::Dict EncodeModelToDict(
case BookmarkStorage::kSelectLocalOrSyncableNodes:
return codec.Encode(
model->bookmark_bar_node(), model->other_node(), model->mobile_node(),
+ model->tabs_collection_node(),
model->client()->EncodeLocalOrSyncableBookmarkSyncMetadata());
case BookmarkStorage::kSelectAccountNodes:
if (!model->account_bookmark_bar_node()) {
@@ -59,6 +60,7 @@ base::Value::Dict EncodeModelToDict(
return codec.Encode(model->account_bookmark_bar_node(),
model->account_other_node(),
model->account_mobile_node(),
+ nullptr,
model->client()->EncodeAccountBookmarkSyncMetadata());
}
// Constructor is private to disallow the construction of permanent nodes
// other than the well-known ones, see factory methods.
diff --git a/components/bookmarks/browser/bookmark_uuids.cc b/components/bookmarks/browser/bookmark_uuids.cc
--- a/components/bookmarks/browser/bookmark_uuids.cc
+++ b/components/bookmarks/browser/bookmark_uuids.cc
@@ -724,16 +754,35 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark
diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc
--- a/components/bookmarks/browser/model_loader.cc
+++ b/components/bookmarks/browser/model_loader.cc
@@ -45,7 +45,8 @@ void LoadBookmarks(const base::FilePath& path,
std::string sync_metadata_str;
BookmarkCodec codec;
codec.Decode(*root_dict, details->bb_node(), details->other_folder_node(),
- details->mobile_folder_node(), &max_node_id,
+ details->mobile_folder_node(),
+ details->tabs_collection_folder_node(), &max_node_id,
&sync_metadata_str);
details->set_sync_metadata_str(std::move(sync_metadata_str));
details->set_max_id(std::max(max_node_id, details->max_id()));
@@ -71,6 +71,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
BookmarkPermanentNode::CreateOtherBookmarks(0);
std::unique_ptr<BookmarkPermanentNode> account_mobile_folder_node =
BookmarkPermanentNode::CreateMobileBookmarks(0);
+ std::unique_ptr<BookmarkPermanentNode> tabs_collection_folder_node =
+ BookmarkPermanentNode::CreateTabsCollectionBookmarks(0);
std::optional<base::Value::Dict> root_dict =
LoadFileToDict(account_file_path);
@@ -78,7 +80,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
if (root_dict.has_value() &&
codec.Decode(*root_dict, /*already_assigned_ids=*/{},
account_bb_node.get(), account_other_folder_node.get(),
- account_mobile_folder_node.get(), &max_node_id,
+ account_mobile_folder_node.get(),
+ tabs_collection_folder_node.get(), &max_node_id,
&sync_metadata_str)) {
ids_assigned_to_account_nodes = codec.release_assigned_ids();
@@ -110,7 +113,8 @@ std::unique_ptr<BookmarkLoadDetails> LoadBookmarks(
if (root_dict.has_value() &&
codec.Decode(*root_dict, std::move(ids_assigned_to_account_nodes),
details->bb_node(), details->other_folder_node(),
- details->mobile_folder_node(), &max_node_id,
+ details->mobile_folder_node(),
+ details->tabs_collection_folder_node(), &max_node_id,
&sync_metadata_str)) {
details->set_local_or_syncable_sync_metadata_str(
std::move(sync_metadata_str));
diff --git a/components/sync_bookmarks/bookmark_specifics_conversions.cc b/components/sync_bookmarks/bookmark_specifics_conversions.cc
--- a/components/sync_bookmarks/bookmark_specifics_conversions.cc
+++ b/components/sync_bookmarks/bookmark_specifics_conversions.cc
@@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -55,6 +55,9 @@ found in the LICENSE file.
@@ -62,6 +62,9 @@ found in the LICENSE file.
<item android:id="@+id/add_to_homescreen_id"
android:title="@string/menu_add_to_homescreen"
android:orderInCategory="2" />
@@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -2813,6 +2813,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -2976,6 +2976,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
}
RecordUserAction.record("MobileMenuDownloadManager");
@@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -2722,6 +2722,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -2729,6 +2729,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
return doOpenWebApk(currentTab);
}
@@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -578,6 +578,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
@@ -585,6 +585,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
isChromeScheme, isFileScheme, isContentScheme, isIncognito, url));
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme);
@@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
updateAutoDarkMenuItem(menu, currentTab, isChromeScheme);
@@ -1181,6 +1182,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
@@ -1236,6 +1237,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
}
}
@@ -104,7 +104,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -260,6 +260,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
@@ -295,6 +295,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
updateRequestDesktopSiteMenuItem(
menu, currentTab, requestDesktopSiteVisible, isChromeScheme);
@@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java
@@ -323,9 +323,12 @@ class TabGridViewBinder {
@@ -327,9 +327,12 @@ class TabGridViewBinder {
// Adjust bitmap to thumbnail.
TabUtils.setBitmapAndUpdateImageMatrix(thumbnail, result, thumbnailSize);
} else if (isMostRecentRequest) {
@@ -32,7 +32,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
}
};
if (sThumbnailFetcherForTesting != null) {
@@ -364,6 +367,7 @@ class TabGridViewBinder {
@@ -368,6 +371,7 @@ class TabGridViewBinder {
ViewLookupCachingFrameLayout rootView,
PropertyModel model,
TabListFaviconProvider.TabFavicon favicon) {
@@ -53,15 +53,15 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
/** Property for lazily fetching favicons when required by an item in a UI. */
public static final WritableObjectPropertyKey<TabListFaviconProvider.TabFaviconFetcher>
FAVICON_FETCHER = new WritableObjectPropertyKey<>();
@@ -157,6 +160,7 @@ public class TabProperties {
@@ -160,6 +163,7 @@ public class TabProperties {
CARD_TYPE,
CONTENT_DESCRIPTION_STRING,
CLOSE_BUTTON_DESCRIPTION_STRING,
+ FAVICON,
SHOPPING_PERSISTED_TAB_DATA_FETCHER,
SHOULD_SHOW_PRICE_DROP_TOOLTIP
};
@@ -168,6 +172,7 @@ public class TabProperties {
SHOULD_SHOW_PRICE_DROP_TOOLTIP,
QUICK_DELETE_ANIMATION_STATUS
@@ -172,6 +176,7 @@ public class TabProperties {
TAB_CLOSED_LISTENER,
FAVICON_FETCHED,
FAVICON_FETCHER,
@@ -72,7 +72,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -53,6 +53,11 @@ found in the LICENSE file.
@@ -54,6 +54,11 @@ found in the LICENSE file.
android:title="@string/open_external_links_incognito_title"
android:summary="@string/open_external_links_incognito_summary"
android:defaultValue="false" />
@@ -95,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.readaloud.ReadAloudController;
import org.chromium.chrome.browser.selection.SelectionPopupBackPressHandler;
@@ -736,7 +737,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -704,7 +705,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
new TabContentManager(
this,
mBrowserControlsManagerSupplier.get(),
@@ -107,7 +107,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java
@@ -325,11 +325,14 @@ public class TabContentManager {
@@ -326,11 +326,14 @@ public class TabContentManager {
*/
public void getTabThumbnailWithCallback(
@NonNull int tabId,
@@ -176,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE);
// Record the launch of PG from the S&P link-row entry point
privacyGuidePreference.setOnPreferenceClickListener(
@@ -323,6 +351,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -321,6 +349,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito";
@@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -348,6 +377,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -346,6 +375,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
sharedPreferencesEditor.apply();
@@ -198,7 +198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
}
return true;
}
@@ -388,6 +424,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -386,6 +422,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
: R.string.text_off);
}
@@ -212,7 +212,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -5275,6 +5275,14 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -5371,6 +5371,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.
</message>
@@ -52,7 +52,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
@@ -987,7 +987,9 @@ public final class ReturnToChromeUtil {
@@ -979,7 +979,9 @@ public final class ReturnToChromeUtil {
public static boolean isScrollableMvtEnabled(Context context) {
boolean isSurfacePolishEnabled = ChromeFeatureList.sSurfacePolish.isEnabled();
@@ -73,8 +73,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.quick_delete.QuickDeleteController;
@@ -1588,7 +1589,9 @@ public class RootUiCoordinator
import org.chromium.chrome.browser.profiles.ProfileManager;
@@ -1595,7 +1596,9 @@ public class RootUiCoordinator
if (!mSupportsFindInPageSupplier.getAsBoolean()) return;
int stubId = R.id.find_toolbar_stub;
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BUILD.gn
--- a/chrome/browser/preferences/BUILD.gn
+++ b/chrome/browser/preferences/BUILD.gn
@@ -25,6 +25,7 @@ android_library("java") {
@@ -26,6 +26,7 @@ android_library("java") {
"//components/browser_ui/site_settings/android:constants_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",
@@ -99,7 +99,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -310,6 +310,7 @@ public final class ChromePreferenceKeys {
@@ -270,6 +270,7 @@ public final class ChromePreferenceKeys {
AccessibilityConstants.FONT_USER_SET_FORCE_ENABLE_ZOOM;
public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info";
@@ -146,7 +146,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -777,7 +777,7 @@ public class LocationBarCoordinator
@@ -771,7 +771,7 @@ public class LocationBarCoordinator
}
private boolean isTabletWindow() {
@@ -158,7 +158,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1561,6 +1561,13 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1564,6 +1564,13 @@ Your Google account may have other forms of browsing history like searches and a
Manage third-party cookies and tracking protections
</message>
@@ -175,7 +175,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/components/BUILD.gn b/components/BUILD.gn
--- a/components/BUILD.gn
+++ b/components/BUILD.gn
@@ -68,7 +68,7 @@ if (is_ios) {
@@ -69,7 +69,7 @@ if (is_ios) {
# Omit Lacros because it allows //components to depend on //chrome, which in
# turn depends on //extensions.
@@ -184,7 +184,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
disallowed_extension_deps_ = [
# Components should largely not depend on //extensions. Since // extensions
# is not a component target and is linked with //chrome, depending on most
@@ -819,7 +819,7 @@ test("components_unittests") {
@@ -831,7 +831,7 @@ test("components_unittests") {
# On other platforms, no components should depend on Chrome.
# Since //chrome depends on //extensions, we also only assert_no_deps on
# extensions targets for non-lacros builds.
@@ -193,7 +193,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
assert_no_deps = [ "//chrome/*" ]
assert_no_deps += disallowed_extension_deps_
}
@@ -1107,7 +1107,7 @@ if (use_blink) {
@@ -1113,7 +1113,7 @@ if (use_blink) {
# dependency. On other platforms, no components should depend on Chrome.
# Since //chrome depends on //extensions, we also only assert_no_deps on
# extensions targets for non-lacros builds.
@@ -205,7 +205,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -35,6 +35,11 @@ found in the LICENSE file.
@@ -40,6 +40,11 @@ found in the LICENSE file.
android:summary="@string/reader_for_accessibility_summary"
android:title="@string/reader_for_accessibility_title" />
@@ -220,7 +220,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -31,6 +31,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
@@ -32,6 +32,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
public static final String PREF_CAPTIONS = "captions";
public static final String PREF_ZOOM_INFO = "zoom_info";
@@ -228,8 +228,8 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
+ static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
private TextScalePreference mTextScalePref;
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -123,6 +125,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
@@ -129,6 +131,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
getPreferenceScreen().removePreference(readerForAccessibilityPref);
}
@@ -242,7 +242,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -182,6 +190,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
@@ -190,6 +198,8 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
mFontSizePrefs.setUserFontScaleFactor((Float) newValue);
} else if (PREF_FORCE_ENABLE_ZOOM.equals(preference.getKey())) {
mFontSizePrefs.setForceEnableZoomFromUser((Boolean) newValue);
@@ -28,7 +28,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/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -40,6 +40,7 @@ import org.chromium.base.BuildInfo;
@@ -41,6 +41,7 @@ import org.chromium.base.BuildInfo;
import org.chromium.base.Callback;
import org.chromium.base.CallbackController;
import org.chromium.base.CommandLine;
@@ -36,7 +36,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
import org.chromium.base.IntentUtils;
import org.chromium.base.Log;
import org.chromium.base.MemoryPressureListener;
@@ -1484,8 +1485,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -1614,8 +1615,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
boolean hadCipherData =
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
@@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
private IncognitoLockSettings mIncognitoLockSettings;
@@ -273,7 +278,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -271,7 +276,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
@@ -90,7 +90,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
UserPrefs.get(getProfile())
.setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
} else if (PREF_HTTPS_FIRST_MODE.equals(key)) {
@@ -318,6 +327,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -316,6 +325,11 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
PreloadPagesSettingsFragment.getPreloadPagesSummaryString(getContext()));
}
@@ -105,7 +105,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -4697,6 +4697,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -4805,6 +4805,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
<message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
IMAGE
</message>
@@ -23,15 +23,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -18,6 +18,7 @@ import org.chromium.base.Callback;
import org.chromium.base.ResettersForTesting;
import org.chromium.base.metrics.RecordUserAction;
@@ -22,6 +22,7 @@ import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.Supplier;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits;
+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;
@@ -44,6 +45,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate;
@@ -47,6 +48,7 @@ import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.text.EmptyTextWatcher;
@@ -39,7 +39,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import java.util.ArrayList;
import java.util.List;
@@ -615,11 +617,16 @@ public class TabGridDialogMediator
@@ -636,11 +638,16 @@ public class TabGridDialogMediator
assert relatedTabs.size() > 0;
@@ -68,7 +68,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
import org.chromium.chrome.browser.layouts.LayoutStateProvider;
import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver;
import org.chromium.chrome.browser.layouts.LayoutType;
@@ -371,10 +372,15 @@ public class TabGroupUiMediator implements BackPressHandler {
@@ -375,10 +376,15 @@ public class TabGroupUiMediator implements BackPressHandler {
assert relatedTabs.size() > 0;
parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1);
@@ -201,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
--- 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
@@ -323,6 +323,7 @@ public final class ChromePreferenceKeys {
@@ -283,6 +283,7 @@ public final class ChromePreferenceKeys {
public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP";
public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
@@ -223,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
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1334,6 +1334,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1337,6 +1337,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
Last hour
</message>
@@ -236,19 +236,19 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -70,6 +70,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -73,6 +73,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
GetHomeButtonAndHomePageIsNewTabPageFlags());
registry->RegisterBooleanPref(prefs::kShowHomeButton, false,
GetHomeButtonAndHomePageIsNewTabPageFlags());
+ registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
+ GetHomeButtonAndHomePageIsNewTabPageFlags());
+ PrefRegistry::NO_REGISTRATION_FLAGS);
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
bool reset_check_default = false;
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -1311,6 +1311,10 @@ inline constexpr char kUsedPolicyCertificates[] =
@@ -1285,6 +1285,10 @@ inline constexpr char kUsedPolicyCertificates[] =
// visible on the toolbar.
inline constexpr char kShowHomeButton[] = "browser.show_home_button";
+16 -9
View File
@@ -9,9 +9,9 @@ Add DuckDuckGo Lite
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../search_engines/prepopulated_engines.json | 31 +++++++++++++++++++
.../search_engines/search_engine_type.h | 2 ++
.../search_engines/search_engine_type.h | 5 +++
.../template_url_prepopulate_data.cc | 3 ++
3 files changed, 36 insertions(+)
3 files changed, 39 insertions(+)
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
--- a/components/search_engines/prepopulated_engines.json
@@ -64,19 +64,26 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
--- a/components/search_engines/search_engine_type.h
+++ b/components/search_engines/search_engine_type.h
@@ -88,6 +88,8 @@ enum SearchEngineType {
SEARCH_ENGINE_QUENDU = 69,
SEARCH_ENGINE_BRAVE = 70,
@@ -90,10 +90,15 @@ enum SearchEngineType {
SEARCH_ENGINE_KARMA = 71,
+ SEARCH_ENGINE_GOOGLE_EN = 72,
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 73,
SEARCH_ENGINE_YOU = 72,
SEARCH_ENGINE_STARTER_PACK_ASK_GOOGLE = 73,
+ SEARCH_ENGINE_GOOGLE_EN = 74,
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT = 75,
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
};
+static_assert(SEARCH_ENGINE_DUCKDUCKGOLIGHT == (SEARCH_ENGINE_MAX - 1),
+ "Please check this patch");
+
// 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.
// 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
@@ -61,6 +61,7 @@ struct EngineAndTier {
@@ -63,6 +63,7 @@ struct EngineAndTier {
// Default (for countries with no better engine set)
constexpr EngineAndTier engines_default[] = {
@@ -84,7 +91,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
{SearchEngineTier::kTopEngines, &google},
{SearchEngineTier::kTopEngines, &bing},
{SearchEngineTier::kTopEngines, &yahoo},
@@ -1613,6 +1614,8 @@ const std::vector<EngineAndTier> GetPrepopulationSetFromCountryID(
@@ -1683,6 +1684,8 @@ const std::vector<EngineAndTier> GetPrepopulationSetFromCountryID(
for (size_t i = 0; i < num_engines; i++) {
t_url.push_back(engines[i]);
}
@@ -26,16 +26,16 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../core/browsing_data_policies_utils.h | 11 +++
.../browsing_data/core/browsing_data_utils.cc | 34 +++++++++
.../core/clear_browsing_data_tab.h | 2 +-
components/browsing_data/core/pref_names.cc | 27 +++++++
components/browsing_data/core/pref_names.h | 9 +++
components/browsing_data/core/pref_names.cc | 17 +++++
components/browsing_data/core/pref_names.h | 10 +++
content/browser/storage_partition_impl.cc | 1 +
25 files changed, 321 insertions(+), 17 deletions(-)
25 files changed, 312 insertions(+), 17 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -303,6 +303,7 @@ chrome_java_sources = [
@@ -307,6 +307,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAdvanced.java",
"java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentBasic.java",
"java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java",
@@ -46,15 +46,15 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_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
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -159,6 +159,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider;
@@ -169,6 +169,7 @@ import org.chromium.chrome.browser.profiles.ProfileProvider;
import org.chromium.chrome.browser.quick_delete.QuickDeleteController;
import org.chromium.chrome.browser.quick_delete.QuickDeleteDelegateImpl;
import org.chromium.chrome.browser.quick_delete.QuickDeleteMetricsDelegate;
+import org.chromium.chrome.browser.profiles.ProfileManagerUtils;
import org.chromium.chrome.browser.read_later.ReadingListBackPressHandler;
import org.chromium.chrome.browser.read_later.ReadingListUtils;
import org.chromium.chrome.browser.reengagement.ReengagementNotificationController;
@@ -1484,7 +1485,11 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
import org.chromium.chrome.browser.search_engines.SearchEngineChoiceNotification;
@@ -1614,7 +1615,11 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
Intent intent = getIntent();
boolean hadCipherData =
@@ -70,7 +70,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
@@ -433,6 +433,10 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
@@ -435,6 +435,10 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
/** Returns whether is a basic or advanced Clear Browsing Data tab. */
protected abstract @ClearBrowsingDataTab int getClearBrowsingDataTabType();
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
/**
* Decides whether a given dialog option should be selected when the dialog is initialized.
*
@@ -512,6 +516,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
@@ -514,6 +518,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
* options.
*/
private void onClearButtonClicked() {
@@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
if (shouldShowImportantSitesDialog()) {
showImportantDialogThenClear();
return;
@@ -544,6 +549,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
@@ -546,6 +551,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat
Button clearButton = (Button) getView().findViewById(R.id.clear_button);
boolean isEnabled = !getSelectedOptions().isEmpty();
clearButton.setEnabled(isEnabled);
@@ -179,16 +179,16 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataTabsFragment.java
@@ -27,7 +27,7 @@ import org.chromium.chrome.browser.settings.SettingsActivity;
@@ -29,7 +29,7 @@ import org.chromium.chrome.browser.settings.SettingsActivity;
* Fragment with a {@link TabLayout} containing a basic and an advanced version of the CBD dialog.
*/
public class ClearBrowsingDataTabsFragment extends Fragment {
public class ClearBrowsingDataTabsFragment extends Fragment implements ProfileDependentSetting {
- public static final int CBD_TAB_COUNT = 2;
+ public static final int CBD_TAB_COUNT = 3;
private Profile mProfile;
private ClearBrowsingDataFetcher mFetcher;
@@ -90,6 +90,8 @@ public class ClearBrowsingDataTabsFragment extends Fragment {
@@ -93,6 +93,8 @@ public class ClearBrowsingDataTabsFragment extends Fragment implements ProfileDe
return getActivity().getString(R.string.clear_browsing_data_basic_tab_title);
case 1:
return getActivity().getString(R.string.prefs_section_advanced);
@@ -197,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
default:
throw new RuntimeException("invalid position: " + position);
}
@@ -127,6 +129,9 @@ public class ClearBrowsingDataTabsFragment extends Fragment {
@@ -136,6 +138,9 @@ public class ClearBrowsingDataTabsFragment extends Fragment implements ProfileDe
case 1:
fragment = new ClearBrowsingDataFragmentAdvanced();
break;
@@ -210,7 +210,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -2257,6 +2257,16 @@
@@ -2244,6 +2244,16 @@
<message name="IDS_SETTINGS_CLEAR_BROWSING_DATA" desc="Text for clear browsing data button in Privacy options">
Clear browsing data
</message>
@@ -230,14 +230,14 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
--- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc
+++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
@@ -326,7 +326,7 @@ static void JNI_BrowsingDataBridge_SetLastClearBrowsingDataTab(
const JavaParamRef<jobject>& obj,
@@ -331,7 +331,7 @@ static void JNI_BrowsingDataBridge_SetLastClearBrowsingDataTab(
const JavaParamRef<jobject>& jprofile,
jint tab_index) {
DCHECK_GE(tab_index, 0);
- DCHECK_LT(tab_index, 2);
+ DCHECK_LT(tab_index, 3);
GetPrefService()->SetInteger(browsing_data::prefs::kLastClearBrowsingDataTab,
tab_index);
GetPrefService(jprofile)->SetInteger(
browsing_data::prefs::kLastClearBrowsingDataTab, tab_index);
}
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
@@ -281,8 +281,8 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -432,6 +432,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
delete_end_, CreateTaskCompletionClosure(TracingDataType::kHistory),
@@ -436,6 +436,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
CreateTaskCompletionClosure(TracingDataType::kHistory),
&history_task_tracker_);
}
+ }
@@ -291,7 +291,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
if (ClipboardRecentContent::GetInstance())
ClipboardRecentContent::GetInstance()->SuppressClipboardContent();
@@ -482,7 +485,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -486,7 +489,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
prerender::NoStatePrefetchManager::CLEAR_PRERENDER_CONTENTS |
prerender::NoStatePrefetchManager::CLEAR_PRERENDER_HISTORY);
}
@@ -301,7 +301,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
// The saved Autofill profiles and credit cards can include the origin from
// which these profiles and credit cards were learned. These are a form of
// history, so clear them as well.
@@ -503,7 +508,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -507,7 +512,9 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
if (data_manager)
data_manager->Refresh();
}
@@ -311,7 +311,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
base::ThreadPool::PostTaskAndReply(
FROM_HERE, {base::TaskPriority::USER_VISIBLE, base::MayBlock()},
base::BindOnce(
@@ -578,9 +585,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
@@ -582,9 +589,13 @@ void ChromeBrowsingDataRemoverDelegate::RemoveEmbedderData(
}
device_event_log::Clear(delete_begin_, delete_end_);
@@ -328,7 +328,7 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -506,6 +506,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
@@ -513,6 +513,23 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
(*s_allowlist)[browsing_data::prefs::kLastClearBrowsingDataTab] =
settings_api::PrefType::kNumber;
@@ -386,7 +386,7 @@ diff --git a/chrome/browser/profiles/android/profile_manager_utils.cc b/chrome/b
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -1495,6 +1495,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info,
@@ -1488,6 +1488,19 @@ void ProfileManager::DoFinalInit(ProfileInfo* profile_info,
}
}
@@ -406,10 +406,10 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
void ProfileManager::DoFinalInitForServices(Profile* profile,
bool go_off_the_record) {
if (!do_final_services_init_ ||
@@ -2166,7 +2179,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) {
@@ -2155,7 +2168,7 @@ void ProfileManager::OnBrowserClosed(Browser* browser) {
Profile* original_profile = profile->GetOriginalProfile();
// Do nothing if the closed window is not the last window of the same profile.
for (auto* browser_iter : *BrowserList::GetInstance()) {
for (Browser* browser_iter : *BrowserList::GetInstance()) {
- if (browser_iter->profile()->GetOriginalProfile() == original_profile)
+ if (browser_iter->profile() == profile)
return;
@@ -430,7 +430,7 @@ diff --git a/chrome/browser/profiles/profile_manager.h b/chrome/browser/profiles
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.html
@@ -306,6 +306,50 @@
@@ -305,6 +305,50 @@
disabled="[[clearingInProgress_]]" no-set-pref>
</settings-checkbox>
</div>
@@ -484,7 +484,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.ts
@@ -297,6 +297,7 @@ export class SettingsClearBrowsingDataDialogElement extends
@@ -302,6 +302,7 @@ export class SettingsClearBrowsingDataDialogElement extends
value: () =>
[loadTimeData.getString('basicPageTitle'),
loadTimeData.getString('advancedPageTitle'),
@@ -492,7 +492,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
],
},
@@ -417,6 +418,7 @@ export class SettingsClearBrowsingDataDialogElement extends
@@ -425,6 +426,7 @@ export class SettingsClearBrowsingDataDialogElement extends
}
this.clearButtonDisabled_ =
this.getSelectedDataTypes_(tab as HTMLElement).length === 0;
@@ -503,7 +503,7 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1429,6 +1429,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1432,6 +1432,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_DATA_BASIC_TAB_TITLE" desc="The title of the tab showing the basic clear browsing data options.">
Basic
</message>
@@ -516,7 +516,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1660,6 +1660,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
@@ -1674,6 +1674,7 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source,
{"clearedData", IDS_SETTINGS_CLEARED_DATA},
{"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA},
{"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION},
@@ -639,24 +639,7 @@ diff --git a/components/browsing_data/core/clear_browsing_data_tab.h b/component
diff --git a/components/browsing_data/core/pref_names.cc b/components/browsing_data/core/pref_names.cc
--- a/components/browsing_data/core/pref_names.cc
+++ b/components/browsing_data/core/pref_names.cc
@@ -26,6 +26,16 @@ const char kClearBrowsingDataOnExitDeletionPending[] =
// delete just before browser shutdown.
const char kClearBrowsingDataOnExitList[] = "browser.clear_data.clear_on_exit";
+// Clear Browsing Data dialog datatype preferences.
+const char kDeleteBrowsingHistoryAtStart[] = "browser.clear_data.browsing_history_at_start";
+const char kDeleteDownloadHistoryAtStart[] = "browser.clear_data.download_history_at_start";
+const char kDeleteCacheAtStart[] = "browser.clear_data.cache_at_start";
+const char kDeleteCookiesAtStart[] = "browser.clear_data.cookies_at_start";
+const char kDeletePasswordsAtStart[] = "browser.clear_data.passwords_at_start";
+const char kDeleteFormDataAtStart[] = "browser.clear_data.form_data_at_start";
+const char kDeleteHostedAppsDataAtStart[] = "browser.clear_data.hosted_apps_data_at_start";
+const char kDeleteSiteSettingsAtStart[] = "browser.clear_data.site_settings_at_start";
+
// Clear browsing data deletion time period.
const char kDeleteTimePeriod[] = "browser.clear_data.time_period";
const char kDeleteTimePeriodBasic[] = "browser.clear_data.time_period_basic";
@@ -99,6 +109,23 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -47,6 +47,23 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterIntegerPref(
kClearBrowsingDataHistoryNoticeShownTimes, 0);
@@ -683,26 +666,27 @@ diff --git a/components/browsing_data/core/pref_names.cc b/components/browsing_d
diff --git a/components/browsing_data/core/pref_names.h b/components/browsing_data/core/pref_names.h
--- a/components/browsing_data/core/pref_names.h
+++ b/components/browsing_data/core/pref_names.h
@@ -17,6 +17,15 @@ extern const char kBrowsingDataLifetime[];
extern const char kClearBrowsingDataOnExitDeletionPending[];
extern const char kClearBrowsingDataOnExitList[];
@@ -28,6 +28,16 @@ inline constexpr char kClearBrowsingDataOnExitDeletionPending[] =
inline constexpr char kClearBrowsingDataOnExitList[] =
"browser.clear_data.clear_on_exit";
+extern const char kDeleteBrowsingHistoryAtStart[];
+extern const char kDeleteDownloadHistoryAtStart[];
+extern const char kDeleteCacheAtStart[];
+extern const char kDeleteCookiesAtStart[];
+extern const char kDeletePasswordsAtStart[];
+extern const char kDeleteFormDataAtStart[];
+extern const char kDeleteHostedAppsDataAtStart[];
+extern const char kDeleteSiteSettingsAtStart[];
+// Clear Browsing Data dialog datatype preferences.
+inline constexpr char kDeleteBrowsingHistoryAtStart[] = "browser.clear_data.browsing_history_at_start";
+inline constexpr char kDeleteDownloadHistoryAtStart[] = "browser.clear_data.download_history_at_start";
+inline constexpr char kDeleteCacheAtStart[] = "browser.clear_data.cache_at_start";
+inline constexpr char kDeleteCookiesAtStart[] = "browser.clear_data.cookies_at_start";
+inline constexpr char kDeletePasswordsAtStart[] = "browser.clear_data.passwords_at_start";
+inline constexpr char kDeleteFormDataAtStart[] = "browser.clear_data.form_data_at_start";
+inline constexpr char kDeleteHostedAppsDataAtStart[] = "browser.clear_data.hosted_apps_data_at_start";
+inline constexpr char kDeleteSiteSettingsAtStart[] = "browser.clear_data.site_settings_at_start";
+
extern const char kDeleteTimePeriod[];
extern const char kDeleteTimePeriodBasic[];
// Clear browsing data deletion time period.
inline constexpr char kDeleteTimePeriod[] = "browser.clear_data.time_period";
inline constexpr char kDeleteTimePeriodBasic[] =
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -1571,6 +1571,7 @@ void StoragePartitionImpl::Initialize(
@@ -1488,6 +1488,7 @@ void StoragePartitionImpl::Initialize(
.AppendASCII("Code Cache");
}
DCHECK_GE(settings.size_in_bytes(), 0);
@@ -116,7 +116,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
if (FirstRunStatus.getFirstRunFlowComplete()
&& !isEmptyUrl(mParams.getUrl())
&& UrlUtilities.isAcceptedScheme(mParams.getUrl())) {
@@ -643,6 +646,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
@@ -631,6 +634,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
getProfile(),
false);
});
@@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
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
@@ -266,6 +266,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@@ -273,6 +273,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
mTab.loadUrl(loadUrlParams);
}
@@ -158,19 +158,19 @@ diff --git a/chrome/browser/contextmenu/java/src/org/chromium/chrome/browser/con
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
@@ -327,6 +327,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kTabDragDropAndroid,
&kTabAndLinkDragDropAndroid,
&kTabEngagementReportingAndroid,
@@ -280,6 +280,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kTabGroupParityAndroid,
&kTabletTabSwitcherLongPressMenu,
&kTabletToolbarIncognitoStatus,
+ &blink::features::kShowAlwaysContextMenuOnLinks,
&kTabletToolbarReordering,
&kTabResumptionModuleAndroid,
&kTabStateFlatBuffer,
&kTabStripStartupRefactoring,
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
@@ -327,6 +327,8 @@ public abstract class ChromeFeatureList {
public static final String NEW_TAB_SEARCH_ENGINE_URL_ANDROID = "NewTabSearchEngineUrlAndroid";
@@ -342,6 +342,8 @@ public abstract class ChromeFeatureList {
public static final String NOTIFICATION_ONE_TAP_UNSUBSCRIBE = "NotificationOneTapUnsubscribe";
public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM =
"MoveTopToolbarToBottom";
+ public static final String SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS =
@@ -178,17 +178,17 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant";
public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET =
"NotificationPermissionBottomSheet";
@@ -614,6 +616,8 @@ public abstract class ChromeFeatureList {
new CachedFlag(OMNIBOX_MATCH_TOOLBAR_AND_STATUS_BAR_COLOR, false);
@@ -619,6 +621,8 @@ public abstract class ChromeFeatureList {
newCachedFlag(OMNIBOX_MATCH_TOOLBAR_AND_STATUS_BAR_COLOR, false);
public static final CachedFlag sMoveTopToolbarToBottom =
new CachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false);
newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false);
+ public static final CachedFlag sShowAlwaysContextMenuOnLinks =
+ new CachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false);
+ newCachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false);
public static final CachedFlag sOmniboxModernizeVisualUpdate =
new CachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, true);
newCachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, true);
public static final CachedFlag sOptimizationGuidePushNotifications =
@@ -747,6 +751,7 @@ public abstract class ChromeFeatureList {
sTabToGTSAnimation,
@@ -771,6 +775,7 @@ public abstract class ChromeFeatureList {
sTabWindowManagerReportIndicesMismatch,
sToolbarUseHardwareBitmapDraw,
sUseChimeAndroidSdk,
+ sShowAlwaysContextMenuOnLinks,
@@ -198,7 +198,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1635,6 +1635,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1638,6 +1638,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_MOVE_TOOLBAR_BOTTOM_SUMMARY" desc="Summary of the preference that allows the user to move toolbar on bottom.">
Move toolbar to bottom
</message>
@@ -211,7 +211,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<!-- Safety check -->
<message name="IDS_PREFS_SAFETY_CHECK" desc="Title of the Safety check element in settings, allowing the user to check multiple areas of browser safety. [CHAR_LIMIT=32]">
@@ -2675,6 +2681,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -2779,6 +2785,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]">
Open in new Chrome tab
</message>
@@ -224,7 +224,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -30,6 +30,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:title="@string/page_zoom_always_show_preference_title" />
@@ -239,15 +239,15 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java
@@ -34,6 +34,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
@@ -35,6 +35,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
private BooleanPreferenceDelegate mForceTabletUIDelegate;
static final String PREF_FORCE_TABLET_UI = "force_tablet_ui";
static final String PREF_MOVE_TOOLBAR_TO_BOTTOM = "move_toolbar_bottom";
+ static final String PREF_ALWAYS_SHOW_CONTEXTMENU_ON_LINKS = "always_show_contextmenu_on_links";
private TextScalePreference mTextScalePref;
private PageZoomPreference mPageZoomDefaultZoomPref;
private ChromeSwitchPreference mPageZoomAlwaysShowPref;
@@ -43,6 +44,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
private ChromeSwitchPreference mPageZoomIncludeOSAdjustment;
@@ -45,6 +46,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
private BooleanPreferenceDelegate mReaderForAccessibilityDelegate;
private double mPageZoomLatestDefaultZoomPrefValue;
private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate;
@@ -255,7 +255,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
private FontSizePrefs mFontSizePrefs;
private FontSizePrefsObserver mFontSizePrefsObserver =
@@ -143,6 +145,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
@@ -149,6 +151,12 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
mMoveToolbarToBottomPref.setChecked(mMoveTopToolbarToBottomDelegate.isEnabled());
mMoveToolbarToBottomPref.setOnPreferenceChangeListener(this);
@@ -268,16 +268,16 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -218,6 +226,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
@@ -226,6 +234,9 @@ public class AccessibilitySettings extends PreferenceFragmentCompat
} else if (PREF_MOVE_TOOLBAR_TO_BOTTOM.equals(preference.getKey())) {
mMoveTopToolbarToBottomDelegate.setEnabled((Boolean) newValue);
mDelegate.requestRestart(getActivity());
+ } 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.
}
return true;
diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
--- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
+++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java
@@ -371,7 +371,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
event.SetDefaultHandled();
LocalDOMWindow* window = GetDocument().domWindow();
@@ -659,13 +680,12 @@ void HTMLAnchorElement::HandleClick(Event& event) {
@@ -656,13 +677,12 @@ void HTMLAnchorElement::HandleClick(Event& event) {
return;
}
@@ -389,7 +389,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third
// We distinguish single/double click with some modifiers.
// See the comment of `EventHandler.delayed_navigation_task_handle_`.
auto task_handle = PostDelayedCancellableTask(
@@ -675,7 +695,9 @@ void HTMLAnchorElement::HandleClick(Event& event) {
@@ -672,7 +692,9 @@ void HTMLAnchorElement::HandleClick(Event& event) {
frame->GetEventHandler().SetDelayedNavigationTaskHandle(
std::move(task_handle));
} else {
@@ -433,7 +433,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_
diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_party/blink/renderer/core/html/html_image_element.cc
--- a/third_party/blink/renderer/core/html/html_image_element.cc
+++ b/third_party/blink/renderer/core/html/html_image_element.cc
@@ -36,6 +36,7 @@
@@ -37,6 +37,7 @@
#include "third_party/blink/renderer/core/dom/events/event_dispatch_forbidden_scope.h"
#include "third_party/blink/renderer/core/dom/node_traversal.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
@@ -441,7 +441,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
#include "third_party/blink/renderer/core/frame/attribution_src_loader.h"
#include "third_party/blink/renderer/core/frame/deprecation/deprecation.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
@@ -63,6 +64,7 @@
@@ -65,6 +66,7 @@
#include "third_party/blink/renderer/core/media_type_names.h"
#include "third_party/blink/renderer/core/page/chrome_client.h"
#include "third_party/blink/renderer/core/page/page.h"
@@ -449,7 +449,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
#include "third_party/blink/renderer/core/paint/timing/paint_timing.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h"
@@ -794,6 +796,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate(
@@ -803,6 +805,21 @@ void HTMLImageElement::DidFinishLifecycleUpdate(
}
}
@@ -474,7 +474,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.cc b/third_
diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_party/blink/renderer/core/html/html_image_element.h
--- a/third_party/blink/renderer/core/html/html_image_element.h
+++ b/third_party/blink/renderer/core/html/html_image_element.h
@@ -232,6 +232,8 @@ class CORE_EXPORT HTMLImageElement final
@@ -236,6 +236,8 @@ class CORE_EXPORT HTMLImageElement final
void DidAddUserAgentShadowRoot(ShadowRoot&) override;
void AdjustStyle(ComputedStyleBuilder&) override;
@@ -486,7 +486,7 @@ diff --git a/third_party/blink/renderer/core/html/html_image_element.h b/third_p
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc
--- a/third_party/blink/renderer/core/page/context_menu_controller.cc
+++ b/third_party/blink/renderer/core/page/context_menu_controller.cc
@@ -234,14 +234,16 @@ void ContextMenuController::DocumentDetached(Document* document) {
@@ -225,14 +225,16 @@ void ContextMenuController::DocumentDetached(Document* document) {
}
}
@@ -506,7 +506,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
mouse_event->SetDefaultHandled();
}
@@ -459,7 +461,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch(
@@ -450,7 +452,8 @@ bool ContextMenuController::ShouldShowContextMenuFromTouch(
bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
const PhysicalOffset& point,
WebMenuSourceType source_type,
@@ -516,7 +516,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
// Displaying the context menu in this function is a big hack as we don't
// have context, i.e. whether this is being invoked via a script or in
// response to user input (Mouse event WM_RBUTTONDOWN,
@@ -482,6 +485,15 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
@@ -473,6 +476,15 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
if (!result.InnerNodeOrImageMapImage())
return false;
@@ -532,7 +532,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t
// Clear any previously set cached results if we are resetting the hit test
// result.
image_selection_cached_result_ = nullptr;
@@ -835,11 +847,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
@@ -831,11 +843,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame,
SetAutofillData(result.InnerNode(), data);
SetPasswordManagerData(result.InnerElement(), data);
+39 -5
View File
@@ -8,6 +8,7 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/about_flags.cc | 1 +
.../engagement/important_sites_util.cc | 9 +++++
.../internal/tracker_impl.cc | 3 ++
.../public/feature_configurations.cc | 7 ++++
.../content/site_engagement_score.cc | 5 +++
@@ -15,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/site_engagement/core/features.cc | 30 ++++++++++++++++
components/site_engagement/core/features.h | 34 +++++++++++++++++++
.../Add-site-engagement-flag.inc | 10 ++++++
8 files changed, 96 insertions(+)
9 files changed, 105 insertions(+)
create mode 100644 components/site_engagement/core/features.cc
create mode 100644 components/site_engagement/core/features.h
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-site-engagement-flag.inc
@@ -23,7 +24,7 @@ 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
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -152,6 +152,7 @@
@@ -153,6 +153,7 @@
#include "components/send_tab_to_self/features.h"
#include "components/services/heap_profiling/public/cpp/switches.h"
#include "components/services/storage/public/cpp/buckets/bucket_info.h"
@@ -31,10 +32,43 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
#include "components/shared_highlighting/core/common/shared_highlighting_features.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
--- a/chrome/browser/engagement/important_sites_util.cc
+++ b/chrome/browser/engagement/important_sites_util.cc
@@ -32,6 +32,7 @@
#include "components/prefs/scoped_user_pref_update.h"
#include "components/site_engagement/content/site_engagement_score.h"
#include "components/site_engagement/content/site_engagement_service.h"
+#include "components/site_engagement/core/features.h"
#include "components/site_engagement/core/mojom/site_engagement_details.mojom.h"
#include "components/webapps/browser/banners/app_banner_settings_helper.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
@@ -387,6 +388,10 @@ void ImportantSitesUtil::RegisterProfilePrefs(
// static
std::set<std::string> ImportantSitesUtil::GetInstalledRegisterableDomains(
Profile* profile) {
+ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement)) {
+ std::set<std::string> empty_list;
+ return empty_list;
+ }
std::set<GURL> installed_origins = GetOriginsWithInstalledWebApps(profile);
std::set<std::string> registerable_domains;
@@ -401,6 +406,10 @@ std::vector<ImportantDomainInfo>
ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile,
size_t max_results) {
SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime");
+ if (!base::FeatureList::IsEnabled(site_engagement::features::kSiteEngagement)) {
+ std::vector<ImportantDomainInfo> empty_list;
+ return empty_list;
+ }
std::map<std::string, ImportantDomainInfo> important_info;
std::map<GURL, double> engagement_map;
diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components/feature_engagement/internal/tracker_impl.cc
--- a/components/feature_engagement/internal/tracker_impl.cc
+++ b/components/feature_engagement/internal/tracker_impl.cc
@@ -22,6 +22,7 @@
@@ -23,6 +23,7 @@
#include "base/task/single_thread_task_runner.h"
#include "base/time/clock.h"
#include "build/build_config.h"
@@ -42,7 +76,7 @@ diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components
#include "components/feature_engagement/internal/availability_model_impl.h"
#include "components/feature_engagement/internal/blocked_iph_features.h"
#include "components/feature_engagement/internal/chrome_variations_configuration.h"
@@ -187,6 +188,8 @@ TrackerImpl::TrackerImpl(
@@ -211,6 +212,8 @@ TrackerImpl::TrackerImpl(
TrackerImpl::~TrackerImpl() = default;
void TrackerImpl::NotifyEvent(const std::string& event) {
@@ -62,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/event_constants.h"
#include "components/feature_engagement/public/feature_constants.h"
@@ -66,6 +67,12 @@ absl::optional<FeatureConfig> GetClientSideFeatureConfig(
@@ -111,6 +112,12 @@ std::optional<FeatureConfig> GetClientSideFeatureConfig(
}
#endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
@@ -12,7 +12,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/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java
@@ -85,6 +85,7 @@ import org.chromium.components.browser_ui.settings.CustomDividerFragment;
@@ -86,6 +86,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;
@@ -20,7 +20,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
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;
@@ -454,8 +455,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
@@ -457,8 +458,12 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity
finish();
return true;
} else if (item.getItemId() == R.id.menu_id_general_help) {
+35 -31
View File
@@ -56,8 +56,9 @@ Enabled by default
third_party/libjxl/OWNERS | 9 +
third_party/libjxl/README.chromium | 15 +
.../libjxl/gen_headers/jxl/jxl_export.h | 11 +
tools/metrics/histograms/enums.xml | 3 +-
52 files changed, 1995 insertions(+), 17 deletions(-)
tools/metrics/histograms/enums.xml | 1 +
.../histograms/metadata/blink/enums.xml | 2 +-
53 files changed, 1995 insertions(+), 17 deletions(-)
create mode 100644 build/linux/unbundle/libjxl.gn
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-support-to-jxl.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Add-support-to-jxl.inc
@@ -83,7 +84,7 @@ Enabled by default
diff --git a/DEPS b/DEPS
--- a/DEPS
+++ b/DEPS
@@ -485,6 +485,10 @@ vars = {
@@ -489,6 +489,10 @@ vars = {
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling feed
# and whatever else without interference from each other.
@@ -94,7 +95,7 @@ diff --git a/DEPS b/DEPS
'highway_revision': '8f20644eca693cfb74aa795b0006b6779c370e7a',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling ffmpeg
@@ -1103,6 +1107,9 @@ deps = {
@@ -1107,6 +1111,9 @@ deps = {
'src/third_party/dawn':
Var('dawn_git') + '/dawn.git' + '@' + Var('dawn_revision'),
@@ -315,7 +316,7 @@ diff --git a/media/BUILD.gn b/media/BUILD.gn
diff --git a/media/media_options.gni b/media/media_options.gni
--- a/media/media_options.gni
+++ b/media/media_options.gni
@@ -129,6 +129,9 @@ declare_args() {
@@ -132,6 +132,9 @@ declare_args() {
# `enable_libaom` should likely also be overriddent to false.
enable_av1_decoder = enable_dav1d_decoder
@@ -374,7 +375,7 @@ diff --git a/net/base/mime_util_unittest.cc b/net/base/mime_util_unittest.cc
diff --git a/third_party/.gitignore b/third_party/.gitignore
--- a/third_party/.gitignore
+++ b/third_party/.gitignore
@@ -97,6 +97,7 @@
@@ -90,6 +90,7 @@
/libgifcodec
/libjingle/source
/libupnp
@@ -393,7 +394,7 @@ diff --git a/third_party/blink/common/loader/network_utils.cc b/third_party/blin
namespace blink {
namespace network_utils {
@@ -33,7 +34,20 @@ bool AlwaysAccessNetwork(
@@ -34,7 +35,20 @@ bool AlwaysAccessNetwork(
}
const char* ImageAcceptHeader() {
@@ -466,7 +467,7 @@ diff --git a/third_party/blink/common/mime_util/mime_util_unittest.cc b/third_pa
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -4246,6 +4246,7 @@ domain Emulation
@@ -4294,6 +4294,7 @@ domain Emulation
experimental type DisabledImageType extends string
enum
avif
@@ -477,7 +478,7 @@ diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/t
diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc
--- a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc
@@ -495,10 +495,10 @@ AtomicString InspectorEmulationAgent::OverrideAcceptImageHeader(
@@ -502,10 +502,10 @@ AtomicString InspectorEmulationAgent::OverrideAcceptImageHeader(
String header(network_utils::ImageAcceptHeader());
for (String type : *disabled_image_types) {
// The header string is expected to be like
@@ -491,7 +492,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent
header.Replace(String(type + ","), "");
}
return AtomicString(header);
@@ -843,6 +843,7 @@ protocol::Response InspectorEmulationAgent::setDisabledImageTypes(
@@ -850,6 +850,7 @@ protocol::Response InspectorEmulationAgent::setDisabledImageTypes(
namespace DisabledImageTypeEnum = protocol::Emulation::DisabledImageTypeEnum;
for (protocol::Emulation::DisabledImageType type : *disabled_types) {
if (DisabledImageTypeEnum::Avif == type ||
@@ -607,7 +608,7 @@ diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_fuzzer.c
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -2264,6 +2264,10 @@ source_set("blink_platform_unittests_sources") {
@@ -2280,6 +2280,10 @@ source_set("blink_platform_unittests_sources") {
sources += [ "text/locale_icu_test.cc" ]
}
@@ -618,7 +619,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re
sources += [ "testing/run_all_tests.cc" ]
configs += [
@@ -2307,6 +2311,7 @@ source_set("blink_platform_unittests_sources") {
@@ -2323,6 +2327,7 @@ source_set("blink_platform_unittests_sources") {
"//third_party/blink/renderer/platform/scheduler:unit_tests",
"//third_party/blink/renderer/platform/wtf",
"//third_party/libavif:libavif",
@@ -676,7 +677,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/bitmap_image_metrics.h
diff --git a/third_party/blink/renderer/platform/image-decoders/BUILD.gn b/third_party/blink/renderer/platform/image-decoders/BUILD.gn
--- a/third_party/blink/renderer/platform/image-decoders/BUILD.gn
+++ b/third_party/blink/renderer/platform/image-decoders/BUILD.gn
@@ -70,6 +70,15 @@ component("image_decoders") {
@@ -72,6 +72,15 @@ component("image_decoders") {
"//third_party/libyuv",
]
@@ -2210,18 +2211,18 @@ new file mode 100644
diff --git a/third_party/blink/tools/commit_stats/git-dirs.txt b/third_party/blink/tools/commit_stats/git-dirs.txt
--- a/third_party/blink/tools/commit_stats/git-dirs.txt
+++ b/third_party/blink/tools/commit_stats/git-dirs.txt
@@ -75,6 +75,7 @@
@@ -34,6 +34,7 @@
./third_party/angle/third_party/rapidjson/src,ANGLE
./third_party/angle/third_party/VK-GL-CTS/src,ANGLE
./third_party/angle/third_party/glmark2/src,ANGLE
./third_party/openh264/src,OpenH264
./third_party/googletest/src,GoogleTest
+./third_party/libjxl/src,libjxl
./third_party/highway/src,highway
./third_party/wuffs/src,wuffs
./third_party/catapult,catapult
./third_party/libwebm/source,libwebm
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -4852,6 +4852,12 @@ crbug.com/1199522 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Fai
@@ -4559,6 +4559,12 @@ crbug.com/1199522 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Fai
# Started failing after rolling new version of check-layout-th.js
css3/flexbox/perpendicular-writing-modes-inside-flex-item.html [ Failure ]
@@ -2237,7 +2238,7 @@ diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/we
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -441,6 +441,15 @@
@@ -102,6 +102,15 @@
"--disable-threaded-compositing", "--disable-threaded-animation"],
"expires": "Jul 1, 2023"
},
@@ -2251,8 +2252,8 @@ diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/w
+ "expires": "Jul 1, 2023"
+ },
{
"prefix": "scalefactor150",
"platforms": ["Linux", "Win"],
"prefix": "unsafe_webgpu",
"platforms": ["Linux", "Mac", "Win"],
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/emulation/emulation-set-disabled-image-types-jxl-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/emulation/emulation-set-disabled-image-types-jxl-expected.txt
new file mode 100644
--- /dev/null
@@ -2652,16 +2653,7 @@ new file mode 100644
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -11344,7 +11344,7 @@ to ensure that the crash string is shown properly on the user-facing crash UI.
<int value="5" label="kImageICO"/>
<int value="6" label="kImageBMP"/>
<int value="7" label="kImageAVIF"/>
- <int value="8" label="(obsolete) kImageJXL"/>
+ <int value="8" label="kImageJXL"/>
</enum>
<enum name="DefaultAppName">
@@ -34310,6 +34310,7 @@ from previous Chrome versions.
@@ -21104,6 +21104,7 @@ from previous Chrome versions.
<int value="188610022" label="NewMessageListView:enabled"/>
<int value="189728101" label="FasterLocationReload:disabled"/>
<int value="189777537" label="DisableInitialMostVisitedFadeIn:enabled"/>
@@ -2669,4 +2661,16 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
<int value="190395448" label="SearchWebInSidePanel:enabled"/>
<int value="191737931" label="enable-mark-http-as"/>
<int value="191891628" label="AutocompleteExtendedSuggestions:enabled"/>
diff --git a/tools/metrics/histograms/metadata/blink/enums.xml b/tools/metrics/histograms/metadata/blink/enums.xml
--- a/tools/metrics/histograms/metadata/blink/enums.xml
+++ b/tools/metrics/histograms/metadata/blink/enums.xml
@@ -227,7 +227,7 @@ chromium-metrics-reviews@google.com.
<int value="5" label="kImageICO"/>
<int value="6" label="kImageBMP"/>
<int value="7" label="kImageAVIF"/>
- <int value="8" label="(obsolete) kImageJXL"/>
+ <int value="8" label="kImageJXL"/>
</enum>
<enum name="FedCmAccountsResponseInvalidReason">
--
+4 -4
View File
@@ -218,7 +218,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -309,6 +309,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
@@ -311,6 +311,13 @@ void WebGLRenderingContextBase::InitializeWebGLContextLimits(
}
}
@@ -232,7 +232,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
unsigned WebGLRenderingContextBase::CurrentMaxGLContexts() {
base::AutoLock locker(WebGLContextLimitLock());
DCHECK(webgl_context_limits_initialized_);
@@ -582,25 +589,6 @@ static String ExtractWebGLContextCreationError(
@@ -584,25 +591,6 @@ static String ExtractWebGLContextCreationError(
const Platform::GraphicsInfo& info) {
StringBuilder builder;
builder.Append("Could not create a WebGL context");
@@ -258,7 +258,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
FormatWebGLStatusString("ErrorMessage", info.error_message.Utf8().c_str(),
builder);
builder.Append('.');
@@ -660,6 +648,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
@@ -662,6 +650,12 @@ WebGLRenderingContextBase::CreateWebGraphicsContext3DProvider(
const CanvasContextCreationAttributesCore& attributes,
Platform::ContextType context_type,
Platform::GraphicsInfo* graphics_info) {
@@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
@@ -1952,6 +1952,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
@@ -1960,6 +1960,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext,
DOMArrayBufferView* pixels,
int64_t offset);
+5 -5
View File
@@ -187,15 +187,15 @@ new file mode 100644
diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
--- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
+++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc
@@ -37,6 +37,7 @@
#include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h"
@@ -41,6 +41,7 @@
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
+#include "third_party/blink/public/platform/web_content_settings_client.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/web_document.h"
@@ -774,6 +775,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
@@ -847,6 +848,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator(
// origin.
WebRTCIPHandlingPolicy policy =
GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy);
@@ -244,9 +244,9 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
+#include "third_party/blink/public/platform/web_content_settings_client.h"
+#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
@@ -1034,6 +1036,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
@@ -1062,6 +1064,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
--- a/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
+++ b/third_party/blink/renderer/modules/document_picture_in_picture/picture_in_picture_controller_impl.cc
@@ -376,6 +376,13 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow(
@@ -368,6 +368,13 @@ void PictureInPictureControllerImpl::CreateDocumentPictureInPictureWindow(
return;
}
@@ -41,7 +41,7 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -1326,6 +1326,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
@@ -1400,6 +1400,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) {
}
}
@@ -49,7 +49,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow
std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
std::vector<GURL> urls;
frame_host->ForEachRenderFrameHostWithAction(
@@ -1339,6 +1340,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
@@ -1413,6 +1414,7 @@ std::vector<GURL> ComputeReportingURLs(RenderFrameHostImpl* frame_host) {
});
return urls;
}
@@ -72,7 +72,7 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/
void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
std::initializer_list<std::pair<base::StringPiece, base::StringPiece>> body,
bool report_only) {
- const absl::optional<std::string>& endpoint =
- const std::optional<std::string>& endpoint =
- report_only ? report_only_endpoint_ : endpoint_;
const char* const disposition = report_only ? "reporting" : "enforce";
if (observer_) {
@@ -88,7 +88,7 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/
base::Value::Dict body_to_pass;
for (const auto& pair : body) {
@@ -125,6 +127,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify(
/*user_agent=*/absl::nullopt, std::move(body_to_pass));
/*user_agent=*/std::nullopt, std::move(body_to_pass));
}
}
+#endif
@@ -152,7 +152,7 @@ diff --git a/content/browser/network/cross_origin_opener_policy_reporter.cc b/co
@@ -280,12 +275,14 @@ void CrossOriginOpenerPolicyReporter::QueueAccessReport(
storage_partition_->GetNetworkContext()->QueueReport(
"coop", endpoint, context_url_, reporting_source_,
network_anonymization_key_, absl::nullopt, std::move(body));
network_anonymization_key_, std::nullopt, std::move(body));
+#endif
}
@@ -167,7 +167,7 @@ diff --git a/content/browser/network/cross_origin_opener_policy_reporter.cc b/co
@@ -294,6 +291,7 @@ void CrossOriginOpenerPolicyReporter::QueueNavigationReport(
"coop", endpoint, context_url_, reporting_source_,
network_anonymization_key_,
/*user_agent=*/absl::nullopt, std::move(body));
/*user_agent=*/std::nullopt, std::move(body));
+#endif
}
@@ -193,7 +193,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse
return;
rph->GetStoragePartition()->GetNetworkContext()->QueueReport(
type, group, url, reporting_source_, network_anonymization_key_,
/*user_agent=*/absl::nullopt, std::move(body));
/*user_agent=*/std::nullopt, std::move(body));
+#endif
}
@@ -201,7 +201,7 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -13593,12 +13593,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
@@ -13787,12 +13787,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport(
base::Value::Dict body;
if (!reason.empty())
body.Set("reason", reason);
@@ -210,7 +210,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b
- GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport(
- /*type=*/"crash", /*group=*/"default", last_committed_url_,
- GetReportingSource(), isolation_info_.network_anonymization_key(),
- absl::nullopt /* user_agent */, std::move(body));
- std::nullopt /* user_agent */, std::move(body));
}
void RenderFrameHostImpl::SendCommitNavigation(
@@ -254,7 +254,7 @@ new file mode 100644
diff --git a/net/base/features.cc b/net/base/features.cc
--- a/net/base/features.cc
+++ b/net/base/features.cc
@@ -227,6 +227,7 @@ extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
@@ -229,6 +229,7 @@ extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
base::Seconds(30));
#if BUILDFLAG(ENABLE_REPORTING)
@@ -265,7 +265,7 @@ diff --git a/net/base/features.cc b/net/base/features.cc
diff --git a/net/reporting/reporting_service.cc b/net/reporting/reporting_service.cc
--- a/net/reporting/reporting_service.cc
+++ b/net/reporting/reporting_service.cc
@@ -211,6 +211,12 @@ class ReportingServiceImpl : public ReportingService {
@@ -214,6 +214,12 @@ class ReportingServiceImpl : public ReportingService {
base::Value::Dict body,
int depth,
base::TimeTicks queued_ticks) {
@@ -281,10 +281,10 @@ 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
--- a/services/network/network_context.h
+++ b/services/network/network_context.h
@@ -472,10 +472,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
const absl::optional<base::UnguessableToken>& reporting_source,
@@ -464,10 +464,10 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
const std::optional<base::UnguessableToken>& reporting_source,
const net::NetworkAnonymizationKey& network_anonymization_key,
const absl::optional<std::string>& user_agent,
const std::optional<std::string>& user_agent,
- base::Value::Dict body) override;
+ base::Value::Dict body);
void QueueSignedExchangeReport(
@@ -297,7 +297,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
--- a/services/network/public/mojom/BUILD.gn
+++ b/services/network/public/mojom/BUILD.gn
@@ -1435,7 +1435,6 @@ mojom("mojom") {
@@ -1443,7 +1443,6 @@ mojom("mojom") {
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
if (enable_reporting) {
@@ -308,7 +308,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1197,6 +1197,7 @@ interface NetworkContext {
@@ -1206,6 +1206,7 @@ interface NetworkContext {
// provided |network_isolation_key|.
//
// Spec: https://w3c.github.io/reporting/#concept-reports
@@ -316,7 +316,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
QueueReport(string type,
string group,
url.mojom.Url url,
@@ -1210,6 +1211,7 @@ interface NetworkContext {
@@ -1219,6 +1220,7 @@ interface NetworkContext {
// Note that this queued report will never be delivered if no reporting
// endpoint matching is registered for with the provided
// |network_isolation_key|.
@@ -327,15 +327,15 @@ 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
--- a/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
+++ b/third_party/blink/renderer/core/frame/csp/content_security_policy.cc
@@ -28,6 +28,7 @@
#include <memory>
@@ -29,6 +29,7 @@
#include <optional>
#include <utility>
+#include "net/net_buildflags.h"
#include "base/containers/contains.h"
#include "base/debug/dump_without_crashing.h"
#include "services/network/public/cpp/web_sandbox_flags.h"
@@ -1169,6 +1170,7 @@ void ContentSecurityPolicy::ReportViolation(
#include "base/ranges/algorithm.h"
@@ -1167,6 +1168,7 @@ void ContentSecurityPolicy::ReportViolation(
return;
}
@@ -343,7 +343,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c
PostViolationReport(violation_data, context_frame, report_endpoints,
use_reporting_api);
@@ -1176,6 +1178,7 @@ void ContentSecurityPolicy::ReportViolation(
@@ -1174,6 +1176,7 @@ void ContentSecurityPolicy::ReportViolation(
// `context_frame` (i.e. we're not processing 'frame-ancestors').
if (delegate_ && !context_frame)
delegate_->DispatchViolationEvent(*violation_data, element);
@@ -362,7 +362,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
#include "services/network/public/cpp/features.h"
#include "services/network/public/mojom/content_security_policy.mojom-blink.h"
#include "services/network/public/mojom/source_location.mojom-blink.h"
@@ -2585,9 +2586,11 @@ void LocalFrame::MainFrameInteractive() {
@@ -2619,9 +2620,11 @@ void LocalFrame::MainFrameInteractive() {
v8_local_compile_hints_producer_->GenerateData();
}
@@ -372,19 +372,19 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
}
+#endif
device::mojom::blink::DevicePostureProvider*
LocalFrame::GetDevicePostureProvider() {
mojom::blink::DevicePostureProvider* LocalFrame::GetDevicePostureProvider() {
return mojo_handler_->DevicePostureProvider();
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -38,6 +38,7 @@
@@ -36,6 +36,7 @@
#include "base/time/time.h"
#include "base/unguessable_token.h"
#include "build/build_config.h"
+#include "net/net_buildflags.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "net/net_buildflags.h"
#include "services/device/public/mojom/device_posture_provider.mojom-blink-forward.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "services/network/public/mojom/fetch_api.mojom-blink-forward.h"
@@ -657,8 +658,9 @@ class CORE_EXPORT LocalFrame final
void FinishedScrollSequence();
@@ -393,7 +393,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b
+#if BUILDFLAG(ENABLE_REPORTING)
mojom::blink::ReportingServiceProxy* GetReportingService();
+#endif
device::mojom::blink::DevicePostureProvider* GetDevicePostureProvider();
mojom::blink::DevicePostureProvider* GetDevicePostureProvider();
// Returns the frame host ptr. The interface returned is backed by an
diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_party/blink/renderer/core/frame/reporting_context.cc
@@ -4,27 +4,27 @@ Subject: Allow building without supervised users
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/BUILD.gn | 1 -
chrome/android/chrome_java_sources.gni | 1 -
.../chrome/browser/feed/FeedSurfaceCoordinator.java | 5 +----
chrome/browser/BUILD.gn | 6 ------
.../extensions/api/settings_private/prefs_util.cc | 2 ++
chrome/browser/profiles/profile_impl.cc | 4 ++++
chrome/browser/profiles/profile_manager.cc | 4 ++++
chrome/browser/ui/webui/managed_ui_handler.cc | 2 ++
.../browser/ui/webui/management/management_ui_handler.cc | 2 ++
components/supervised_user/buildflags.gni | 6 +-----
.../core/browser/supervised_user_preferences.cc | 2 +-
components/supervised_user/core/common/features.cc | 1 +
components/supervised_user/core/common/pref_names.h | 4 ++++
.../core/common/supervised_user_constants.cc | 2 ++
.../supervised_user/core/common/supervised_user_utils.cc | 9 ++++++---
15 files changed, 30 insertions(+), 21 deletions(-)
chrome/android/BUILD.gn | 1 -
chrome/android/chrome_java_sources.gni | 1 -
.../chrome/browser/feed/FeedSurfaceCoordinator.java | 5 +----
chrome/browser/BUILD.gn | 6 ------
.../browser/extensions/api/settings_private/prefs_util.cc | 2 ++
chrome/browser/profiles/profile_impl.cc | 4 ++++
chrome/browser/profiles/profile_manager.cc | 4 ++++
chrome/browser/ui/webui/managed_ui_handler.cc | 2 ++
chrome/browser/ui/webui/management/management_ui_handler.cc | 2 ++
components/supervised_user/buildflags.gni | 6 +-----
.../core/browser/supervised_user_preferences.cc | 2 +-
.../supervised_user/core/browser/supervised_user_utils.cc | 4 ++++
components/supervised_user/core/common/features.cc | 1 +
components/supervised_user/core/common/pref_names.h | 4 ++++
.../core/common/supervised_user_constants.cc | 2 ++
15 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -3657,7 +3657,6 @@ generate_jni("chrome_jni_headers") {
@@ -3697,7 +3697,6 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java",
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java",
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java",
@@ -35,7 +35,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -1075,7 +1075,6 @@ chrome_java_sources = [
@@ -1085,7 +1085,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/suggestions/tile/TileGroupDelegateImpl.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/TopSitesTileView.java",
@@ -46,7 +46,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_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/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
@@ -69,7 +69,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
@@ -68,7 +68,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig;
import org.chromium.components.feature_engagement.EventConstants;
import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.prefs.PrefService;
@@ -54,7 +54,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.third_party.android.swiperefresh.SwipeRefreshLayout;
import org.chromium.ui.base.DeviceFormFactor;
@@ -848,9 +847,7 @@ public class FeedSurfaceCoordinator
@@ -775,9 +774,7 @@ public class FeedSurfaceCoordinator
* Returns true if the supervised user feed should be displayed.
*/
public boolean shouldDisplaySupervisedFeed() {
@@ -68,7 +68,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3161,8 +3161,6 @@ static_library("browser") {
@@ -3165,8 +3165,6 @@ static_library("browser") {
"feed/android/refresh_task_scheduler_impl.cc",
"feed/android/refresh_task_scheduler_impl.h",
"feed/android/web_feed_bridge.cc",
@@ -77,7 +77,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"file_select_helper_contacts_android.cc",
"file_select_helper_contacts_android.h",
"first_run/android/first_run_prefs.cc",
@@ -3381,10 +3379,6 @@ static_library("browser") {
@@ -3371,10 +3369,6 @@ static_library("browser") {
"ssl/chrome_security_state_model_delegate.h",
"ssl/known_interception_disclosure_infobar.cc",
"ssl/known_interception_disclosure_infobar.h",
@@ -91,7 +91,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc
--- a/chrome/browser/extensions/api/settings_private/prefs_util.cc
+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc
@@ -1001,9 +1001,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
@@ -1024,9 +1024,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() {
settings_api::PrefType::kBoolean;
#endif
@@ -106,7 +106,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -696,10 +696,12 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) {
@@ -689,10 +689,12 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) {
prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_);
pref_change_registrar_.Init(prefs);
@@ -119,7 +119,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
// Changes in the profile avatar.
pref_change_registrar_.Add(
@@ -1625,11 +1627,13 @@ GURL ProfileImpl::GetHomePage() {
@@ -1627,11 +1629,13 @@ GURL ProfileImpl::GetHomePage() {
}
void ProfileImpl::UpdateSupervisedUserIdInStorage() {
@@ -136,7 +136,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -1222,6 +1222,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
@@ -1215,6 +1215,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
profile->GetPrefs()->SetString(prefs::kProfileName, profile_name);
}
@@ -144,7 +144,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
bool force_supervised_user_id =
#if BUILDFLAG(IS_CHROMEOS_ASH)
@@ -1243,6 +1244,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
@@ -1236,6 +1237,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) {
profile->GetPrefs()->SetString(prefs::kSupervisedUserId,
supervised_user_id);
}
@@ -152,7 +152,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
#if !BUILDFLAG(IS_ANDROID)
if (profile->IsNewProfile()) {
profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false);
@@ -2046,8 +2048,10 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
@@ -2035,8 +2037,10 @@ void ProfileManager::AddProfileToStorage(Profile* profile) {
init_params.icon_index =
profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex);
@@ -181,7 +181,7 @@ diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/w
diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc
--- a/chrome/browser/ui/webui/management/management_ui_handler.cc
+++ b/chrome/browser/ui/webui/management/management_ui_handler.cc
@@ -1456,10 +1456,12 @@ void ManagementUIHandler::AddObservers() {
@@ -1507,10 +1507,12 @@ void ManagementUIHandler::AddObservers() {
pref_registrar_.Init(profile->GetPrefs());
@@ -220,10 +220,29 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences
}
bool IsSafeSitesEnabled(const PrefService& pref_service) {
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
@@ -81,11 +81,15 @@ GURL NormalizeUrl(const GURL& url) {
}
bool AreWebFilterPrefsDefault(const PrefService& pref_service) {
+#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
return pref_service
.FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior)
->IsDefaultValue() ||
pref_service.FindPreference(prefs::kSupervisedUserSafeSites)
->IsDefaultValue();
+#else
+ return true;
+#endif
}
bool EmitLogRecordHistograms(
diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc
--- a/components/supervised_user/core/common/features.cc
+++ b/components/supervised_user/core/common/features.cc
@@ -165,4 +165,5 @@ bool IsShadowKidsApiWithSafeSitesEnabled() {
@@ -163,4 +163,5 @@ bool IsShadowKidsApiWithSafeSitesEnabled() {
return base::FeatureList::IsEnabled(kShadowKidsApiWithSafeSites);
}
@@ -243,7 +262,7 @@ diff --git a/components/supervised_user/core/common/pref_names.h b/components/su
namespace prefs {
// A bool pref that keeps whether the child status for this profile was already
@@ -124,4 +126,6 @@ inline constexpr char kFirstTimeInterstitialBannerState[] =
@@ -132,4 +134,6 @@ inline constexpr char kFirstTimeInterstitialBannerState[] =
} // namespace prefs
@@ -253,7 +272,7 @@ diff --git a/components/supervised_user/core/common/pref_names.h b/components/su
diff --git a/components/supervised_user/core/common/supervised_user_constants.cc b/components/supervised_user/core/common/supervised_user_constants.cc
--- a/components/supervised_user/core/common/supervised_user_constants.cc
+++ b/components/supervised_user/core/common/supervised_user_constants.cc
@@ -68,6 +68,7 @@ const char kChromeOSAvatarIndex[] = "chromeos-avatar-index";
@@ -70,6 +70,7 @@ const char kChromeOSAvatarIndex[] = "chromeos-avatar-index";
const char kChromeOSPasswordData[] = "chromeos-password-data";
@@ -261,7 +280,7 @@ diff --git a/components/supervised_user/core/common/supervised_user_constants.cc
const char* const kCustodianInfoPrefs[] = {
prefs::kSupervisedUserCustodianName,
prefs::kSupervisedUserCustodianEmail,
@@ -80,6 +81,7 @@ const char* const kCustodianInfoPrefs[] = {
@@ -82,6 +83,7 @@ const char* const kCustodianInfoPrefs[] = {
prefs::kSupervisedUserSecondCustodianProfileURL,
prefs::kSupervisedUserSecondCustodianProfileImageURL,
};
@@ -269,25 +288,4 @@ diff --git a/components/supervised_user/core/common/supervised_user_constants.cc
const base::FilePath::CharType kSupervisedUserSettingsFilename[] =
FILE_PATH_LITERAL("Managed Mode Settings");
diff --git a/components/supervised_user/core/common/supervised_user_utils.cc b/components/supervised_user/core/common/supervised_user_utils.cc
--- a/components/supervised_user/core/common/supervised_user_utils.cc
+++ b/components/supervised_user/core/common/supervised_user_utils.cc
@@ -52,11 +52,14 @@ GURL NormalizeUrl(const GURL& url) {
}
bool AreWebFilterPrefsDefault(const PrefService& pref_service) {
+#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
return pref_service
.FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior)
- ->IsDefaultValue() ||
- pref_service.FindPreference(prefs::kSupervisedUserSafeSites)
- ->IsDefaultValue();
+ kChildAccountSUID &&
+ IsChildAccountSupervisionEnabled();
+#else
+ return false;
+#endif
}
absl::optional<LogSegment> SupervisionStatusForUser(
--
@@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
--- a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
+++ b/third_party/blink/renderer/platform/media/web_media_player_impl.cc
@@ -1177,6 +1177,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
@@ -1181,6 +1181,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
return pipeline_metadata_.has_audio;
}
@@ -24,7 +24,7 @@ diff --git a/third_party/blink/renderer/platform/media/web_media_player_impl.cc
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
const WebVector<WebMediaPlayer::TrackId>& enabledTrackIds) {
DCHECK(main_task_runner_->BelongsToCurrentThread());
@@ -3504,7 +3510,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
@@ -3524,7 +3530,10 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
: HasAudio();
// Audio only stream is allowed to play when in background.
@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.document.ChromeAsyncTabLauncher;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
@@ -212,6 +214,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@@ -219,6 +221,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
Referrer referrer,
boolean navigateToTab,
@Nullable AdditionalNavigationParams additionalNavigationParams) {
@@ -33,7 +33,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM
RecordUserAction.record("MobileNewTabOpened");
RecordUserAction.record("LinkOpenedInNewTab");
LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec());
@@ -228,6 +231,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@@ -235,6 +238,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate {
@Override
public void onOpenInNewTabInGroup(GURL url, Referrer referrer) {
@@ -54,7 +54,7 @@ diff --git a/components/search_engines/android/java/src/org/chromium/components/
diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc
--- a/components/search_engines/android/template_url_service_android.cc
+++ b/components/search_engines/android/template_url_service_android.cc
@@ -324,6 +324,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
@@ -330,6 +330,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine(
const base::android::JavaParamRef<jstring>&
jimage_translate_target_language_param_key,
jboolean set_as_default) {
@@ -161,15 +161,15 @@ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.c
diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
--- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc
@@ -29,6 +29,7 @@
#include <algorithm>
@@ -31,6 +31,7 @@
#include <bit>
#include <complex>
+#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h"
#include "third_party/blink/renderer/platform/audio/audio_bus.h"
#include "third_party/blink/renderer/platform/audio/audio_utilities.h"
#include "third_party/blink/renderer/platform/audio/vector_math.h"
@@ -154,6 +155,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData(
@@ -155,6 +156,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData(
input_buffer[(i + write_index - fft_size + kInputBufferSize) %
kInputBufferSize];
@@ -177,7 +177,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/
destination[i] = value;
}
}
@@ -181,6 +183,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) {
@@ -182,6 +184,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) {
input_buffer[(i + write_index - fft_size + kInputBufferSize) %
kInputBufferSize];
@@ -186,7 +186,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/
// Scale from nominal -1 -> +1 to unsigned byte.
double scaled_value = 128 * (value + 1);
@@ -300,6 +304,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) {
@@ -301,6 +305,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) {
double scaled_value =
UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor;
@@ -195,7 +195,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/
// Clip to valid range.
destination[i] =
static_cast<unsigned char>(ClampTo(scaled_value, 0, UCHAR_MAX));
@@ -319,6 +325,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) {
@@ -320,6 +326,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) {
float linear_value = source[i];
double db_mag = audio_utilities::LinearToDecibels(linear_value);
destination[i] = static_cast<float>(db_mag);
@@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/third_party/blink/renderer/modules/battery/battery_manager.cc
--- a/third_party/blink/renderer/modules/battery/battery_manager.cc
+++ b/third_party/blink/renderer/modules/battery/battery_manager.cc
@@ -78,46 +78,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
@@ -80,46 +80,28 @@ ScriptPromiseTyped<BatteryManager> BatteryManager::StartRequest(
}
bool BatteryManager::charging() {
@@ -50,7 +50,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
+++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -391,6 +391,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);
HeapObserverSet<ContextLifecycleObserver>& ContextLifecycleObserverSet();
@@ -61,7 +61,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third_party/blink/renderer/core/loader/base_fetch_context.h
--- a/third_party/blink/renderer/core/loader/base_fetch_context.h
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.h
@@ -85,6 +85,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
@@ -86,6 +86,7 @@ class CORE_EXPORT BaseFetchContext : public FetchContext {
virtual SubresourceFilter* GetSubresourceFilter() const = 0;
virtual bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const = 0;
@@ -102,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
--- a/third_party/blink/renderer/core/loader/frame_fetch_context.h
+++ b/third_party/blink/renderer/core/loader/frame_fetch_context.h
@@ -176,6 +176,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
@@ -177,6 +177,7 @@ class CORE_EXPORT FrameFetchContext final : public BaseFetchContext,
bool ShouldBlockWebSocketByMixedContentCheck(const KURL&) const override;
std::unique_ptr<WebSocketHandshakeThrottle> CreateWebSocketHandshakeThrottle()
override;
@@ -225,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
--- a/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
+++ b/third_party/blink/renderer/modules/websockets/websocket_channel_impl.cc
@@ -276,6 +276,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;
}
@@ -277,22 +277,22 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
+ return false;
+}
+
void WebSocketCommon::CloseInternal(int code,
void WebSocketCommon::CloseInternal(std::optional<uint16_t> code,
const String& reason,
WebSocketChannel* channel,
diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.h b/third_party/blink/renderer/modules/websockets/websocket_common.h
--- a/third_party/blink/renderer/modules/websockets/websocket_common.h
+++ b/third_party/blink/renderer/modules/websockets/websocket_common.h
@@ -7,6 +7,8 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_WEBSOCKETS_WEBSOCKET_COMMON_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_WEBSOCKETS_WEBSOCKET_COMMON_H_
@@ -11,6 +11,8 @@
#include <optional>
+#include "services/network/public/mojom/ip_address_space.mojom.h"
+#include "third_party/blink/renderer/platform/network/network_utils.h"
#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
@@ -54,6 +56,8 @@ class MODULES_EXPORT WebSocketCommon {
@@ -58,6 +60,8 @@ class MODULES_EXPORT WebSocketCommon {
void SetState(State state) { state_ = state; }
const KURL& Url() const { return url_; }
@@ -108,7 +108,7 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur
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
@@ -841,6 +841,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
@@ -849,6 +849,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl()
RegisterPseudoScheme(url::kJavaScriptScheme);
RegisterPseudoScheme(kViewSourceScheme);
RegisterPseudoScheme(kGoogleChromeScheme);
@@ -119,7 +119,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -995,6 +995,8 @@ component("net") {
@@ -997,6 +997,8 @@ component("net") {
"url_request/url_request_http_job.cc",
"url_request/url_request_http_job.h",
"url_request/url_request_interceptor.cc",
@@ -235,8 +235,8 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur
+#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 "net/url_request/url_request_throttler_manager.h"
@@ -574,6 +575,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
#include "url/url_constants.h"
@@ -559,6 +560,8 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
job_factory->SetProtocolHandler(scheme_handler.first,
std::move(scheme_handler.second));
}
@@ -270,7 +270,7 @@ diff --git a/url/url_constants.h b/url/url_constants.h
diff --git a/url/url_util.cc b/url/url_util.cc
--- a/url/url_util.cc
+++ b/url/url_util.cc
@@ -46,6 +46,7 @@ struct SchemeRegistry {
@@ -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},
@@ -278,7 +278,7 @@ diff --git a/url/url_util.cc b/url/url_util.cc
// 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
@@ -91,6 +92,7 @@ struct SchemeRegistry {
@@ -92,6 +93,7 @@ struct SchemeRegistry {
kAboutScheme,
kJavaScriptScheme,
kDataScheme,
+444 -120
View File
@@ -21,22 +21,32 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../inline/BromiteInlineUpdateController.java | 272 ++++++++++++++++++
.../omaha/inline/InlineUpdateController.java | 51 ++++
.../inline/InlineUpdateControllerFactory.java | 21 ++
chrome/browser/endpoint_fetcher/BUILD.gn | 2 +
.../endpoint_fetcher_android.cc | 50 ++++
.../endpoint_fetcher/EndpointFetcher.java | 27 ++
chrome/browser/BUILD.gn | 2 +
chrome/browser/endpoint_fetcher/BUILD.gn | 32 +++
chrome/browser/endpoint_fetcher/DEPS | 3 +
chrome/browser/endpoint_fetcher/OWNERS | 1 +
.../endpoint_fetcher_android.cc | 184 ++++++++++++
.../endpoint_fetcher/EndpointFetcher.java | 165 +++++++++++
.../EndpointHeaderResponse.java | 31 ++
.../endpoint_fetcher/EndpointResponse.java | 30 ++
.../flags/android/chrome_feature_list.cc | 1 +
.../browser/flags/ChromeFeatureList.java | 1 +
.../strings/android_chrome_strings.grd | 23 +-
.../endpoint_fetcher/endpoint_fetcher.cc | 103 ++++++-
.../endpoint_fetcher/endpoint_fetcher.cc | 101 ++++++-
.../endpoint_fetcher/endpoint_fetcher.h | 23 +-
.../Bromite-auto-updater.inc | 3 +
.../Bromite-auto-updater.inc | 1 +
24 files changed, 932 insertions(+), 52 deletions(-)
28 files changed, 1268 insertions(+), 52 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
create mode 100644 chrome/browser/endpoint_fetcher/BUILD.gn
create mode 100644 chrome/browser/endpoint_fetcher/DEPS
create mode 100644 chrome/browser/endpoint_fetcher/OWNERS
create mode 100644 chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc
create mode 100644 chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java
create mode 100644 chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java
create mode 100644 chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Bromite-auto-updater.inc
@@ -55,7 +65,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -1908,6 +1908,9 @@ if (enable_java_templates && is_android) {
@@ -1905,6 +1905,9 @@ if (enable_java_templates && is_android) {
sources = [ "//build/android/java/templates/BuildConfig.template" ]
defines = []
@@ -68,7 +78,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -872,6 +872,9 @@ chrome_java_sources = [
@@ -883,6 +883,9 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java",
"java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java",
"java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java",
@@ -76,8 +86,8 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
+ "java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java",
+ "java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java",
"java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java",
"java/src/org/chromium/chrome/browser/omaha/metrics/HistogramUtils.java",
"java/src/org/chromium/chrome/browser/omaha/metrics/TrackingProvider.java",
"java/src/org/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics.java",
diff --git a/chrome/android/java/res/xml/about_chrome_preferences.xml b/chrome/android/java/res/xml/about_chrome_preferences.xml
--- a/chrome/android/java/res/xml/about_chrome_preferences.xml
+++ b/chrome/android/java/res/xml/about_chrome_preferences.xml
@@ -318,7 +328,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen
import org.chromium.base.BuildInfo;
import org.chromium.base.Callback;
@@ -138,8 +139,21 @@ public class UpdateMenuItemHelper {
@@ -146,8 +147,21 @@ public class UpdateMenuItemHelper {
Log.e(TAG, "Failed to launch Activity for: %s", mStatus.updateUrl);
}
break;
@@ -340,7 +350,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen
default:
return;
}
@@ -188,7 +202,7 @@ public class UpdateMenuItemHelper {
@@ -196,7 +210,7 @@ public class UpdateMenuItemHelper {
mMenuUiState = new MenuUiState();
switch (mStatus.updateState) {
@@ -349,7 +359,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen
// The badge is hidden if the update menu item has been clicked until there is an
// even newer version of Chrome available.
showBadge |=
@@ -247,6 +261,72 @@ public class UpdateMenuItemHelper {
@@ -255,6 +269,72 @@ public class UpdateMenuItemHelper {
mMenuUiState.itemState.icon = R.drawable.ic_error_24dp_filled;
mMenuUiState.itemState.enabled = false;
break;
@@ -1100,39 +1110,115 @@ new file mode 100644
+ return new BromiteInlineUpdateController(callback);
+ }
+}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3112,6 +3112,7 @@ static_library("browser") {
"download/android/service/download_task_scheduler.h",
"download/android/string_utils.cc",
"download/download_crx_util_android.cc",
+ "endpoint_fetcher/endpoint_fetcher_android.cc",
"enterprise/reporting/browser_report_generator_android.cc",
"enterprise/reporting/browser_report_generator_android.h",
"enterprise/reporting/profile_report_generator_android.cc",
@@ -3451,6 +3452,7 @@ static_library("browser") {
"//chrome/browser/content_extraction/android:jni_headers",
"//chrome/browser/device_reauth/android:jni_headers",
"//chrome/browser/download/internal/android",
+ "//chrome/browser/endpoint_fetcher:jni_headers",
"//chrome/browser/feed/android:jni_headers",
"//chrome/browser/feedback/android",
"//chrome/browser/feedback/android:jni_headers",
diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn
--- a/chrome/browser/endpoint_fetcher/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/chrome/browser/endpoint_fetcher/BUILD.gn
@@ -19,6 +19,7 @@ android_library("java") {
sources = [
"java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java",
"java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java",
@@ -0,0 +1,32 @@
+# Copyright 2020 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/android/rules.gni")
+import("//third_party/jni_zero/jni_zero.gni")
+
+android_library("java") {
+ deps = [
+ ":jni_headers",
+ "//base:base_java",
+ "//build/android:build_java",
+ "//chrome/browser/profiles/android:java",
+ "//net/android:net_java",
+ "//third_party/androidx:androidx_annotation_annotation_java",
+ "//third_party/jni_zero:jni_zero_java",
+ ]
+ srcjar_deps = [ ":jni_headers" ]
+ sources = [
+ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java",
+ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java",
+ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java",
]
}
@@ -26,5 +27,6 @@ generate_jni("jni_headers") {
sources = [
"java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java",
"java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java",
+ ]
+}
+
+generate_jni("jni_headers") {
+ sources = [
+ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java",
+ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java",
+ "java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java",
]
}
+ ]
+}
diff --git a/chrome/browser/endpoint_fetcher/DEPS b/chrome/browser/endpoint_fetcher/DEPS
new file mode 100644
--- /dev/null
+++ b/chrome/browser/endpoint_fetcher/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+ "+components/endpoint_fetcher",
+]
diff --git a/chrome/browser/endpoint_fetcher/OWNERS b/chrome/browser/endpoint_fetcher/OWNERS
new file mode 100644
--- /dev/null
+++ b/chrome/browser/endpoint_fetcher/OWNERS
@@ -0,0 +1 @@
+file://chrome/browser/complex_tasks/OWNERS
diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc b/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc
--- a/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc
new file mode 100644
--- /dev/null
+++ b/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc
@@ -9,6 +9,7 @@
#include "base/android/jni_string.h"
#include "chrome/browser/endpoint_fetcher/jni_headers/EndpointFetcher_jni.h"
#include "chrome/browser/endpoint_fetcher/jni_headers/EndpointResponse_jni.h"
@@ -0,0 +1,184 @@
+// Copyright 2019 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/endpoint_fetcher/endpoint_fetcher.h"
+
+#include "base/android/callback_android.h"
+#include "base/android/jni_array.h"
+#include "base/android/jni_string.h"
+#include "chrome/browser/endpoint_fetcher/jni_headers/EndpointFetcher_jni.h"
+#include "chrome/browser/endpoint_fetcher/jni_headers/EndpointResponse_jni.h"
+#include "chrome/browser/endpoint_fetcher/jni_headers/EndpointHeaderResponse_jni.h"
#include "chrome/browser/profiles/profile_android.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/common/channel_info.h"
@@ -31,6 +32,24 @@ static void OnEndpointFetcherComplete(
base::android::AttachCurrentThread(),
std::move(endpoint_response->response))));
}
+#include "chrome/browser/profiles/profile_android.h"
+#include "chrome/browser/signin/identity_manager_factory.h"
+#include "chrome/common/channel_info.h"
+#include "components/signin/public/base/consent_level.h"
+#include "components/version_info/channel.h"
+#include "content/public/browser/storage_partition.h"
+
+namespace {
+static void OnEndpointFetcherComplete(
+ const base::android::JavaRef<jobject>& jcaller,
+ // Passing the endpoint_fetcher ensures the endpoint_fetcher's
+ // lifetime extends to the callback and is not destroyed
+ // prematurely (which would result in cancellation of the request).
+ std::unique_ptr<EndpointFetcher> endpoint_fetcher,
+ std::unique_ptr<EndpointResponse> endpoint_response) {
+ base::android::RunObjectCallbackAndroid(
+ jcaller, Java_EndpointResponse_createEndpointResponse(
+ base::android::AttachCurrentThread(),
+ base::android::ConvertUTF8ToJavaString(
+ base::android::AttachCurrentThread(),
+ std::move(endpoint_response->response))));
+}
+
+static void OnEndpointFetcherHeadComplete(
+ const base::android::JavaRef<jobject>& jcaller,
@@ -1151,31 +1237,111 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc b/chrom
+ base::android::AttachCurrentThread(),
+ std::move(endpoint_response->redirect_url))));
+}
} // namespace
// TODO(crbug.com/1077537) Create a KeyProvider so
@@ -113,6 +132,7 @@ static void JNI_EndpointFetcher_NativeFetchWithNoAuth(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jprofile,
const base::android::JavaParamRef<jstring>& jurl,
+} // namespace
+
+// TODO(crbug.com/1077537) Create a KeyProvider so
+// we can have one centralized API.
+
+static void JNI_EndpointFetcher_NativeFetchOAuth(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jprofile,
+ const base::android::JavaParamRef<jstring>& joauth_consumer_name,
+ const base::android::JavaParamRef<jstring>& jurl,
+ const base::android::JavaParamRef<jstring>& jhttps_method,
+ const base::android::JavaParamRef<jstring>& jcontent_type,
+ const base::android::JavaParamRef<jobjectArray>& jscopes,
+ const base::android::JavaParamRef<jstring>& jpost_data,
+ jlong jtimeout,
+ jint jannotation_hash_code,
+ const base::android::JavaParamRef<jobject>& jcallback) {
+ std::vector<std::string> scopes;
+ base::android::AppendJavaStringArrayToStringVector(env, jscopes, &scopes);
+ auto endpoint_fetcher = std::make_unique<EndpointFetcher>(
+ ProfileAndroid::FromProfileAndroid(jprofile)
+ ->GetDefaultStoragePartition()
+ ->GetURLLoaderFactoryForBrowserProcess(),
+ base::android::ConvertJavaStringToUTF8(env, joauth_consumer_name),
+ GURL(base::android::ConvertJavaStringToUTF8(env, jurl)),
+ base::android::ConvertJavaStringToUTF8(env, jhttps_method),
+ base::android::ConvertJavaStringToUTF8(env, jcontent_type), scopes,
+ base::Milliseconds(jtimeout), base::android::ConvertJavaStringToUTF8(env, jpost_data),
+ net::NetworkTrafficAnnotationTag::FromJavaAnnotation(
+ jannotation_hash_code),
+ IdentityManagerFactory::GetForProfile(
+ ProfileAndroid::FromProfileAndroid(jprofile)),
+ // TODO(crbug.com/1466445): ConsentLevel::kSync is deprecated and should
+ // be removed. See ConsentLevel::kSync documentation for details.
+ signin::ConsentLevel::kSync);
+ auto* const endpoint_fetcher_ptr = endpoint_fetcher.get();
+ endpoint_fetcher_ptr->Fetch(
+ base::BindOnce(&OnEndpointFetcherComplete,
+ base::android::ScopedJavaGlobalRef<jobject>(jcallback),
+ // unique_ptr endpoint_fetcher is passed until the callback
+ // to ensure its lifetime across the request.
+ std::move(endpoint_fetcher)));
+}
+
+static void JNI_EndpointFetcher_NativeFetchChromeAPIKey(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jprofile,
+ const base::android::JavaParamRef<jstring>& jurl,
+ const base::android::JavaParamRef<jstring>& jhttps_method,
+ const base::android::JavaParamRef<jstring>& jcontent_type,
+ const base::android::JavaParamRef<jstring>& jpost_data,
+ jlong jtimeout,
+ const base::android::JavaParamRef<jobjectArray>& jheaders,
+ jint jannotation_hash_code,
+ const base::android::JavaParamRef<jobject>& jcallback) {
+ std::vector<std::string> headers;
+ base::android::AppendJavaStringArrayToStringVector(env, jheaders, &headers);
+ auto endpoint_fetcher = std::make_unique<EndpointFetcher>(
+ ProfileAndroid::FromProfileAndroid(jprofile)
+ ->GetDefaultStoragePartition()
+ ->GetURLLoaderFactoryForBrowserProcess(),
+ GURL(base::android::ConvertJavaStringToUTF8(env, jurl)),
+ base::android::ConvertJavaStringToUTF8(env, jhttps_method),
+ base::android::ConvertJavaStringToUTF8(env, jcontent_type),
+ base::Milliseconds(jtimeout),
+ base::android::ConvertJavaStringToUTF8(env, jpost_data), headers,
+ net::NetworkTrafficAnnotationTag::FromJavaAnnotation(
+ jannotation_hash_code),
+ chrome::GetChannel() == version_info::Channel::STABLE);
+ auto* const endpoint_fetcher_ptr = endpoint_fetcher.get();
+ endpoint_fetcher_ptr->PerformRequest(
+ base::BindOnce(&OnEndpointFetcherComplete,
+ base::android::ScopedJavaGlobalRef<jobject>(jcallback),
+ // unique_ptr endpoint_fetcher is passed until the callback
+ // to ensure its lifetime across the request.
+ std::move(endpoint_fetcher)),
+ nullptr);
+}
+
+static void JNI_EndpointFetcher_NativeFetchWithNoAuth(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jprofile,
+ const base::android::JavaParamRef<jstring>& jurl,
+ jlong jtimeout, jboolean intercept_redirect,
jint jannotation_hash_code,
const base::android::JavaParamRef<jobject>& jcallback) {
auto endpoint_fetcher = std::make_unique<EndpointFetcher>(
@@ -120,6 +140,9 @@ static void JNI_EndpointFetcher_NativeFetchWithNoAuth(
->GetDefaultStoragePartition()
->GetURLLoaderFactoryForBrowserProcess(),
GURL(base::android::ConvertJavaStringToUTF8(env, jurl)),
+ jint jannotation_hash_code,
+ const base::android::JavaParamRef<jobject>& jcallback) {
+ auto endpoint_fetcher = std::make_unique<EndpointFetcher>(
+ ProfileAndroid::FromProfileAndroid(jprofile)
+ ->GetDefaultStoragePartition()
+ ->GetURLLoaderFactoryForBrowserProcess(),
+ GURL(base::android::ConvertJavaStringToUTF8(env, jurl)),
+ "GET",
+ jtimeout,
+ intercept_redirect,
net::NetworkTrafficAnnotationTag::FromJavaAnnotation(
jannotation_hash_code));
auto* const endpoint_fetcher_ptr = endpoint_fetcher.get();
@@ -131,3 +154,30 @@ static void JNI_EndpointFetcher_NativeFetchWithNoAuth(
std::move(endpoint_fetcher)),
nullptr);
}
+ net::NetworkTrafficAnnotationTag::FromJavaAnnotation(
+ jannotation_hash_code));
+ auto* const endpoint_fetcher_ptr = endpoint_fetcher.get();
+ endpoint_fetcher_ptr->PerformRequest(
+ base::BindOnce(&OnEndpointFetcherComplete,
+ base::android::ScopedJavaGlobalRef<jobject>(jcallback),
+ // unique_ptr endpoint_fetcher is passed until the callback
+ // to ensure its lifetime across the request.
+ std::move(endpoint_fetcher)),
+ nullptr);
+}
+
+static void JNI_EndpointFetcher_NativeHeadWithNoAuth(
+ JNIEnv* env,
@@ -1204,12 +1370,116 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc b/chrom
+ nullptr);
+}
diff --git a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java b/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java
--- a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java
@@ -104,6 +104,24 @@ public final class EndpointFetcher {
callback);
}
@@ -0,0 +1,165 @@
+// Copyright 2019 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.endpoint_fetcher;
+
+import androidx.annotation.MainThread;
+
+import org.jni_zero.NativeMethods;
+
+import org.chromium.base.Callback;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.net.NetworkTrafficAnnotationTag;
+
+/**
+ * EndpointFetcher uses native EndpointFetcher to call a HTTPS endpoint and return
+ * the response. The call to native EndpointFetcher is achieved over a static call
+ * over JNI. The native EndpointFetcher is created during the static call and
+ * destroyed in the callback function.
+ * EndpointFetcher currently doesn't support incognito mode.
+ * If the request times out an empty response will be returned. There will also
+ * be an error code indicating timeout once more detailed error messaging is added
+ * TODO(crbug.com/993393).
+ */
+public final class EndpointFetcher {
+ private EndpointFetcher() {}
+
+ /**
+ * Calls an endpoint using OAuth and returns the response via a callback
+ * @param callback callback function response is returned in
+ * @param profile profile via which the endpoint is called
+ * @param oathConsumerName consumer name for OAuth
+ * @param url endpoint URL called
+ * @param httpsMethod the HTTPS method used e.g. "GET" or "POST"
+ * @param contentType the content type e.g. "application/json"
+ * @param scopes scopes used as part of authentication
+ * @param postData data for a "POST" request
+ * @param timeout time after which the request will terminate in the event a response hasn't
+ * been received
+ */
+ @MainThread
+ public static void fetchUsingOAuth(
+ Callback<EndpointResponse> callback,
+ Profile profile,
+ String oathConsumerName,
+ String url,
+ String httpsMethod,
+ String contentType,
+ String[] scopes,
+ String postData,
+ long timeout,
+ NetworkTrafficAnnotationTag annotation) {
+ // EndpointFetcher currently does not support incognito mode
+ assert !profile.isOffTheRecord();
+ EndpointFetcherJni.get()
+ .nativeFetchOAuth(
+ profile,
+ oathConsumerName,
+ url,
+ httpsMethod,
+ contentType,
+ scopes,
+ postData,
+ timeout,
+ annotation.getHashCode(),
+ callback);
+ }
+
+ /**
+ * Calls an endpoint using Chrome API Key returns the response via a callback
+ * @param callback to pass the response back in
+ * @param profile via which the endpoint is called
+ * @param url endpoint URL called
+ * @param httpsMethod the HTTPS method used e.g. "GET" or "POST"
+ * @param contentType the content type e.g. "application/json"
+ * @param postData data for a "POST" request
+ * @param timeout time after which the request will terminate in the event a response hasn't
+ * been received
+ * @param headers headers for the request. Key/value pairs are stored sequentially in the array.
+ */
+ @MainThread
+ public static void fetchUsingChromeAPIKey(
+ Callback<EndpointResponse> callback,
+ Profile profile,
+ String url,
+ String httpsMethod,
+ String contentType,
+ String postData,
+ long timeout,
+ String[] headers,
+ NetworkTrafficAnnotationTag annotation) {
+ // EndpointFetcher currently does not support incognito mode
+ // assert !profile.isOffTheRecord();
+ EndpointFetcherJni.get()
+ .nativeFetchChromeAPIKey(
+ profile,
+ url,
+ httpsMethod,
+ contentType,
+ postData,
+ timeout,
+ headers,
+ annotation.getHashCode(),
+ callback);
+ }
+
+ @MainThread
+ public static void nativeHeadWithNoAuth(
+ Callback<EndpointHeaderResponse> callback, Profile profile,
@@ -1228,17 +1498,38 @@ diff --git a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browse
+ profile, url, timeout, allow_redirect, annotation.getHashCode(), callback);
+ }
+
@NativeMethods
public interface Natives {
void nativeFetchOAuth(
@@ -132,7 +150,16 @@ public final class EndpointFetcher {
void nativeFetchWithNoAuth(
Profile profile,
String url,
+ @NativeMethods
+ public interface Natives {
+ void nativeFetchOAuth(
+ Profile profile,
+ String oathConsumerName,
+ String url,
+ String httpsMethod,
+ String contentType,
+ String[] scopes,
+ String postData,
+ long timeout,
+ int annotationHashCode,
+ Callback<EndpointResponse> callback);
+
+ void nativeFetchChromeAPIKey(
+ Profile profile,
+ String url,
+ String httpsMethod,
+ String contentType,
+ String postData,
+ long timeout,
+ String[] headers,
+ int annotationHashCode,
+ Callback<EndpointResponse> callback);
+
+ void nativeFetchWithNoAuth(
+ Profile profile,
+ String url,
+ long timeout,
+ boolean allow_redirect,
int annotationHashCode,
Callback<EndpointResponse> callback);
+ int annotationHashCode,
+ Callback<EndpointResponse> callback);
+ void nativeHeadWithNoAuth(
+ Profile profile,
+ String url,
@@ -1246,8 +1537,8 @@ diff --git a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browse
+ boolean allow_redirect,
+ int annotationHashCode,
+ Callback<EndpointHeaderResponse> callback);
}
}
+ }
+}
diff --git a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java b/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java
new file mode 100644
--- /dev/null
@@ -1284,32 +1575,67 @@ new file mode 100644
+ return new EndpointHeaderResponse(response, redirectUrl);
+ }
+}
diff --git a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java b/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointResponse.java
@@ -0,0 +1,30 @@
+// Copyright 2019 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.endpoint_fetcher;
+
+import org.jni_zero.CalledByNative;
+
+/** Encapsulates the response from the {@Link EndpointFetcher} */
+public class EndpointResponse {
+ private final String mResponseString;
+
+ /**
+ * Create the EndpointResponse
+ * @param responseString the response string acquired from the endpoint
+ */
+ public EndpointResponse(String responseString) {
+ mResponseString = responseString;
+ }
+
+ /** Response string acquired from calling an endpoint */
+ public String getResponseString() {
+ return mResponseString;
+ }
+
+ @CalledByNative
+ private static EndpointResponse createEndpointResponse(String response) {
+ return new EndpointResponse(response);
+ }
+}
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
@@ -264,6 +264,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -235,6 +235,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kPreconnectOnTabCreation,
&kPriceChangeModule,
&kPwaRestoreUi,
+ &kInlineUpdateFlow,
&kBookmarksImprovedSaveFlow,
&kBookmarksRefresh,
&kPwaUniversalInstallUi,
&kOmahaMinSdkVersionAndroid,
&kShortCircuitUnfocusAnimation,
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
@@ -303,6 +303,7 @@ public abstract class ChromeFeatureList {
@@ -315,6 +315,7 @@ public abstract class ChromeFeatureList {
"IncognitoReauthenticationForAndroid";
public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot";
public static final String INFOBAR_SCROLL_OPTIMIZATION = "InfobarScrollOptimization";
+ public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow";
public static final String INSTALLABLE_AMBIENT_BADGE_MESSAGE = "InstallableAmbientBadgeMessage";
public static final String INSTANCE_SWITCHER = "InstanceSwitcher";
public static final String INSTANT_START = "InstantStart";
+ public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow";
public static final String INTEREST_FEED_V2_HEARTS = "InterestFeedV2Hearts";
public static final String KID_FRIENDLY_CONTENT_FEED = "KidFriendlyContentFeed";
public static final String LENS_CAMERA_ASSISTED_SEARCH = "LensCameraAssistedSearch";
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -2012,6 +2012,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -2050,6 +2050,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_DEPRECATION_WARNING" desc="Warning about Chrome updates no longer being supported">
Chrome updates are no longer supported for this version of Android
</message>
@@ -1322,7 +1648,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<!-- Account management UI strings. -->
<message name="IDS_ACCOUNT_MANAGEMENT_TITLE" desc="Header title for the account management screen. [CHAR_LIMIT=32]">
@@ -3640,7 +3646,10 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3732,7 +3738,10 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
<!-- Main menu items -->
<message name="IDS_MENU_UPDATE" desc="Menu item for updating chrome. [CHAR_LIMIT=24]">
@@ -1334,7 +1660,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
</message>
<message name="IDS_MENU_UPDATE_SUMMARY_DEFAULT" desc="Summary string for update menu item explaining that a newer version of Chrome is available. [CHAR_LIMIT=30]">
Newer version is available
@@ -3651,6 +3660,18 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3743,6 +3752,18 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>clear the Chrome da
<message name="IDS_MENU_UPDATE_UNSUPPORTED_SUMMARY_DEFAULT" desc="Summary string for update menu item explaining that the Android version on the device is unsupported. [CHAR_LIMIT=30]">
Android version is unsupported
</message>
@@ -1356,7 +1682,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoint_fetcher/endpoint_fetcher.cc
--- a/components/endpoint_fetcher/endpoint_fetcher.cc
+++ b/components/endpoint_fetcher/endpoint_fetcher.cc
@@ -18,6 +18,11 @@
@@ -19,6 +19,11 @@
#include "services/network/public/cpp/simple_url_loader.h"
#include "services/network/public/mojom/url_response_head.mojom.h"
@@ -1368,46 +1694,46 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
namespace {
const char kContentTypeKey[] = "Content-Type";
const char kDeveloperKey[] = "X-Developer-Key";
@@ -64,6 +69,7 @@ EndpointFetcher::EndpointFetcher(
@@ -65,6 +70,7 @@ EndpointFetcher::EndpointFetcher(
http_method_(http_method),
content_type_(content_type),
timeout_ms_(timeout_ms),
timeout_(timeout),
+ intercept_redirect_(false),
post_data_(post_data),
headers_(headers),
annotation_tag_(annotation_tag),
@@ -82,6 +88,7 @@ EndpointFetcher::EndpointFetcher(
@@ -83,6 +89,7 @@ EndpointFetcher::EndpointFetcher(
http_method_("GET"),
content_type_(std::string()),
timeout_ms_(0),
timeout_(base::Milliseconds(0)),
+ intercept_redirect_(false),
post_data_(std::string()),
annotation_tag_(annotation_tag),
url_loader_factory_(url_loader_factory),
@@ -107,6 +114,7 @@ EndpointFetcher::EndpointFetcher(
@@ -108,6 +115,7 @@ EndpointFetcher::EndpointFetcher(
http_method_(http_method),
content_type_(content_type),
timeout_ms_(timeout_ms),
timeout_(timeout),
+ intercept_redirect_(false),
post_data_(post_data),
annotation_tag_(annotation_tag),
url_loader_factory_(url_loader_factory),
@@ -134,6 +142,7 @@ EndpointFetcher::EndpointFetcher(
@@ -135,6 +143,7 @@ EndpointFetcher::EndpointFetcher(
http_method_(http_method),
content_type_(content_type),
timeout_ms_(timeout_ms),
timeout_(timeout),
+ intercept_redirect_(false),
post_data_(post_data),
headers_(headers),
cors_exempt_headers_(cors_exempt_headers),
@@ -146,11 +155,29 @@ EndpointFetcher::EndpointFetcher(
@@ -147,11 +156,29 @@ EndpointFetcher::EndpointFetcher(
EndpointFetcher::EndpointFetcher(
const net::NetworkTrafficAnnotationTag& annotation_tag)
: timeout_ms_(kDefaultTimeOutMs),
: timeout_(kDefaultTimeOut),
+ intercept_redirect_(false),
annotation_tag_(annotation_tag),
identity_manager_(nullptr),
consent_level_(absl::nullopt),
consent_level_(std::nullopt),
sanitize_response_(true) {}
+// constructor used by Bromite
@@ -1420,7 +1746,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
+ const net::NetworkTrafficAnnotationTag& annotation_tag)
+ : url_(url),
+ http_method_(http_method),
+ timeout_ms_(timeout_ms),
+ timeout_(base::Milliseconds(timeout_ms)),
+ intercept_redirect_(intercept_redirect),
+ annotation_tag_(annotation_tag),
+ url_loader_factory_(url_loader_factory),
@@ -1430,7 +1756,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
EndpointFetcher::~EndpointFetcher() = default;
void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) {
@@ -209,6 +236,8 @@ void EndpointFetcher::PerformRequest(
@@ -210,6 +237,8 @@ void EndpointFetcher::PerformRequest(
resource_request->method = http_method_;
resource_request->url = url_;
resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit;
@@ -1439,7 +1765,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
if (base::EqualsCaseInsensitiveASCII(http_method_, "POST")) {
resource_request->headers.SetHeader(kContentTypeKey, content_type_);
}
@@ -239,25 +268,52 @@ void EndpointFetcher::PerformRequest(
@@ -240,25 +269,50 @@ void EndpointFetcher::PerformRequest(
default:
break;
}
@@ -1453,13 +1779,12 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
// callback
simple_url_loader_ = network::SimpleURLLoader::Create(
std::move(resource_request), annotation_tag_);
+ simple_url_loader_->SetTimeoutDuration(base::Milliseconds(timeout_ms_));
+ simple_url_loader_->SetTimeoutDuration(timeout_);
+ simple_url_loader_->SetAllowHttpErrorResults(true);
+
+ if (!response_) {
+ //RFC: what is this for?
+ if (!response_)
+ response_ = std::make_unique<EndpointResponse>();
+ }
+
+ if (intercept_redirect_ == true) {
+ // use a callback to capture landing page URL
+ simple_url_loader_->SetOnRedirectCallback(base::BindRepeating(
@@ -1471,10 +1796,9 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
}
simple_url_loader_->SetRetryOptions(kNumRetries,
network::SimpleURLLoader::RETRY_ON_5XX);
- simple_url_loader_->SetTimeoutDuration(base::Milliseconds(timeout_ms_));
- simple_url_loader_->SetTimeoutDuration(timeout_);
- simple_url_loader_->SetAllowHttpErrorResults(true);
- network::SimpleURLLoader::BodyAsStringCallbackDeprecated
+
+ LOG(INFO) << "performing " << http_method_ << " request to " << url_;
+ if (base::EqualsCaseInsensitiveASCII(http_method_, "HEAD")) {
+ endpoint_fetcher_callback_ = std::move(endpoint_fetcher_callback);
@@ -1498,7 +1822,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
}
void EndpointFetcher::OnResponseFetched(
@@ -338,3 +394,38 @@ void EndpointFetcher::OnSanitizationResult(
@@ -339,3 +393,38 @@ void EndpointFetcher::OnSanitizationResult(
std::string EndpointFetcher::GetUrlForTesting() {
return url_.spec();
}
@@ -1509,7 +1833,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
+ const network::mojom::URLResponseHead& response_head,
+ std::vector<std::string>* removed_headers) {
+ url_ = redirect_info.new_url;
+ if (response_->redirect_url.empty()) {
+ if (response_ && response_->redirect_url.empty()) {
+ response_->redirect_url = url_.spec();
+ response_->response = std::to_string(redirect_info.status_code);
+ } else {
@@ -1534,31 +1858,31 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
+ }
+
+ std::string net_error = net::ErrorToString(simple_url_loader_->NetError());
+ response_->response = net_error;
+ response_->response = net_error;
+ std::move(endpoint_fetcher_callback_).Run(std::move(response_));
+}
diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoint_fetcher/endpoint_fetcher.h
--- a/components/endpoint_fetcher/endpoint_fetcher.h
+++ b/components/endpoint_fetcher/endpoint_fetcher.h
@@ -17,6 +17,8 @@
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/data_decoder/public/cpp/json_sanitizer.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
@@ -21,6 +21,8 @@
namespace base {
class TimeDelta;
} // namespace base
+#include "services/network/public/cpp/resource_request.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
namespace network {
struct ResourceRequest;
@@ -39,6 +41,8 @@ enum class FetchErrorType {
@@ -43,6 +45,8 @@ enum class FetchErrorType {
struct EndpointResponse {
std::string response;
+ long last_modified;
+ std::string redirect_url;
int http_status_code{-1};
absl::optional<FetchErrorType> error_type;
std::optional<FetchErrorType> error_type;
};
@@ -92,6 +96,14 @@ class EndpointFetcher {
@@ -96,6 +100,14 @@ class EndpointFetcher {
const GURL& url,
const net::NetworkTrafficAnnotationTag& annotation_tag);
@@ -1573,7 +1897,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
// Used for tests. Can be used if caller constructs their own
// url_loader_factory and identity_manager.
EndpointFetcher(
@@ -147,6 +159,11 @@ class EndpointFetcher {
@@ -151,6 +163,11 @@ class EndpointFetcher {
void OnSanitizationResult(std::unique_ptr<EndpointResponse> response,
EndpointFetcherCallback endpoint_fetcher_callback,
data_decoder::JsonSanitizer::Result result);
@@ -1585,7 +1909,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
enum AuthType { CHROME_API_KEY, OAUTH, NO_AUTH };
AuthType auth_type_;
@@ -154,10 +171,11 @@ class EndpointFetcher {
@@ -158,10 +175,11 @@ class EndpointFetcher {
// Members set in constructor to be passed to network::ResourceRequest or
// network::SimpleURLLoader.
const std::string oauth_consumer_name_;
@@ -1593,12 +1917,12 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
+ GURL url_;
const std::string http_method_;
const std::string content_type_;
int64_t timeout_ms_;
base::TimeDelta timeout_;
+ const bool intercept_redirect_;
const std::string post_data_;
const std::vector<std::string> headers_;
const std::vector<std::string> cors_exempt_headers_;
@@ -181,6 +199,9 @@ class EndpointFetcher {
@@ -185,6 +203,9 @@ class EndpointFetcher {
access_token_fetcher_;
std::unique_ptr<network::SimpleURLLoader> simple_url_loader_;
+1 -1
View File
@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -26,7 +26,7 @@ declare_args() {
@@ -25,7 +25,7 @@ declare_args() {
# WebView providers which declare one of a handful of package names. See
# https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/build-instructions.md#Changing-package-name
# for details.
@@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/browser_process_impl.cc | 21 ++
chrome/browser/browser_process_impl.h | 2 +
chrome/browser/chrome_browser_main.cc | 3 +
chrome/browser/flags/BUILD.gn | 3 +
chrome/browser/flags/BUILD.gn | 4 +
.../flags/android/adblock_native_gateway.cc | 31 ++
.../browser/flags/AdBlockNativeGateway.java | 30 ++
.../net/system_network_context_manager.cc | 8 +
@@ -48,7 +48,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../content/browser/ruleset_service.h | 7 +-
.../content/browser/ruleset_version.h | 4 +
.../unindexed_ruleset_stream_generator.cc | 3 +
.../browser/verified_ruleset_dealer.cc | 4 +
.../browser/verified_ruleset_dealer.cc | 3 +
.../browser/subresource_filter_features.cc | 116 +-------
.../core/common/indexed_ruleset.cc | 5 +-
.../Bromite-subresource-adblocker.inc | 3 +
@@ -68,8 +68,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -304,6 +304,7 @@ if (current_toolchain == default_toolchain) {
"//chrome/android/modules/image_editor/provider:java",
@@ -303,6 +303,7 @@ if (current_toolchain == default_toolchain) {
"//chrome/android/modules/cablev2_authenticator/public:java",
"//chrome/android/modules/stack_unwinder/provider:java",
"//chrome/android/webapk/libs/client:client_java",
+ "//chrome/browser/endpoint_fetcher:java",
@@ -79,7 +79,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -434,6 +434,7 @@ chrome_java_resources = [
@@ -430,6 +430,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",
@@ -87,7 +87,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
"java/res/layout/auto_sign_in_first_run_dialog.xml",
"java/res/layout/autofill_billing_address_dropdown.xml",
"java/res/layout/autofill_card_name_and_number.xml",
@@ -638,6 +639,7 @@ chrome_java_resources = [
@@ -633,6 +634,7 @@ chrome_java_resources = [
"java/res/xml/about_chrome_preferences.xml",
"java/res/xml/account_management_preferences.xml",
"java/res/xml/ad_services_config.xml",
@@ -98,7 +98,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -961,6 +961,8 @@ chrome_java_sources = [
@@ -972,6 +972,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java",
"java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java",
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java",
@@ -182,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
--- a/chrome/android/java/res/values/styles.xml
+++ b/chrome/android/java/res/values/styles.xml
@@ -232,6 +232,24 @@ found in the LICENSE file.
@@ -245,6 +245,24 @@ found in the LICENSE file.
</item>
</style>
@@ -254,9 +254,9 @@ new file mode 100644
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -72,6 +72,11 @@ found in the LICENSE file.
@@ -78,6 +78,11 @@ found in the LICENSE file.
android:key="safety_check"
android:order="12"
android:order="13"
android:title="@string/prefs_safety_check"/>
+ <Preference
+ android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
@@ -265,7 +265,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
+ android:title="@string/prefs_adblock"/>
<Preference
android:key="notifications"
android:order="13"
android:order="14"
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
--- /dev/null
@@ -440,7 +440,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -14908,6 +14908,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
@@ -15030,6 +15030,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
Never show this again.
</message>
@@ -460,7 +460,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
--- a/chrome/browser/after_startup_task_utils.cc
+++ b/chrome/browser/after_startup_task_utils.cc
@@ -28,6 +28,8 @@
@@ -29,6 +29,8 @@
#include "chromeos/startup/browser_params_proxy.h"
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
@@ -469,10 +469,10 @@ diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_s
using content::BrowserThread;
namespace {
@@ -123,6 +125,8 @@ void SetBrowserStartupIsComplete() {
ScheduleTask(base::WrapUnique(queued_task));
g_after_startup_tasks.Get().clear();
g_after_startup_tasks.Get().shrink_to_fit();
@@ -132,6 +134,8 @@ void SetBrowserStartupIsComplete() {
}
GetAfterStartupTasks().clear();
GetAfterStartupTasks().shrink_to_fit();
+ // initialize AdBlock engine scheduled updates
+ g_browser_process->adblock_updater()->Start();
}
@@ -511,7 +511,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -1138,6 +1138,27 @@ BrowserProcessImpl::component_updater() {
@@ -1168,6 +1168,27 @@ BrowserProcessImpl::component_updater() {
return component_updater_.get();
}
@@ -542,7 +542,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h
--- a/chrome/browser/browser_process_impl.h
+++ b/chrome/browser/browser_process_impl.h
@@ -210,6 +210,7 @@ class BrowserProcessImpl : public BrowserProcess,
@@ -209,6 +209,7 @@ class BrowserProcessImpl : public BrowserProcess,
#endif
component_updater::ComponentUpdateService* component_updater() override;
@@ -550,7 +550,7 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc
MediaFileSystemRegistry* media_file_system_registry() override;
WebRtcLogUploader* webrtc_log_uploader() override;
network_time::NetworkTimeTracker* network_time_tracker() override;
@@ -406,6 +407,7 @@ class BrowserProcessImpl : public BrowserProcess,
@@ -405,6 +406,7 @@ class BrowserProcessImpl : public BrowserProcess,
// to concerns over integrity of data shared between profiles,
// but some users of component updater only install per-user.
std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
@@ -561,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
--- a/chrome/browser/chrome_browser_main.cc
+++ b/chrome/browser/chrome_browser_main.cc
@@ -448,6 +448,9 @@ StartupProfileInfo CreateInitialProfile(
@@ -446,6 +446,9 @@ StartupProfileInfo CreateInitialProfile(
// missing code in the above test.
CHECK(profile_info.profile) << "Cannot get default profile.";
@@ -574,15 +574,15 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
--- a/chrome/browser/flags/BUILD.gn
+++ b/chrome/browser/flags/BUILD.gn
@@ -23,6 +23,7 @@ android_library("java") {
"android/java/src/org/chromium/chrome/browser/flags/StringCachedFieldTrialParameter.java",
"android/java/src/org/chromium/chrome/browser/flags/ValuesOverridden.java",
"android/java/src/org/chromium/chrome/browser/flags/ValuesReturned.java",
@@ -8,6 +8,7 @@ import("//third_party/jni_zero/jni_zero.gni")
android_library("java") {
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
sources += [
+ "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java",
]
deps = [
"//base:base_java",
@@ -44,6 +45,7 @@ android_library("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/ChromeSessionState.java",
@@ -33,6 +34,7 @@ android_library("java") {
generate_jni("jni_headers") {
sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ]
sources += [
@@ -590,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/ChromeSessionState.java",
]
@@ -58,6 +60,7 @@ static_library("flags_android") {
@@ -47,6 +49,7 @@ static_library("flags_android") {
"android/chrome_session_state.cc",
"android/chrome_session_state.h",
]
@@ -598,6 +598,14 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
deps = [
":jni_headers",
"//base",
@@ -71,6 +74,7 @@ robolectric_library("flags_junit_tests") {
"android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlagsAnnotationUnitTest.java",
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithProcessorUnitTest.java",
"android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithoutProcessorUnitTest.java",
+ "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java",
]
deps = [
":java",
diff --git a/chrome/browser/flags/android/adblock_native_gateway.cc b/chrome/browser/flags/android/adblock_native_gateway.cc
new file mode 100755
--- /dev/null
@@ -672,7 +680,7 @@ new file mode 100755
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -602,6 +602,14 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
@@ -640,6 +640,14 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
StubResolverConfigReader::RegisterPrefs(registry);
@@ -730,7 +738,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -2657,6 +2657,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
@@ -2653,6 +2653,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
inline constexpr char kAudioCaptureAllowedUrls[] =
"hardware.audio_capture_allowed_urls";
@@ -745,7 +753,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp
--- a/components/browser_ui/strings/android/site_settings.grdp
+++ b/components/browser_ui/strings/android/site_settings.grdp
@@ -371,6 +371,9 @@
@@ -359,6 +359,9 @@
<message name="IDS_INTRUSIVE_ADS_INFORMATION" desc="The extra information at the top of the Site Details page when the site tends to show intrusive ads">
This site shows intrusive or misleading ads
</message>
@@ -771,12 +779,12 @@ diff --git a/components/component_updater/BUILD.gn b/components/component_update
"component_updater_service.cc",
"component_updater_service.h",
"component_updater_service_internal.h",
@@ -47,6 +53,7 @@ static_library("component_updater") {
"//components/prefs",
@@ -48,6 +54,7 @@ static_library("component_updater") {
"//components/update_client",
"//components/version_info",
"//net",
+ "//services/network/public/mojom",
"//third_party/boringssl:boringssl",
"//third_party/boringssl",
"//ui/base",
"//url",
diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
@@ -1554,8 +1562,8 @@ new file mode 100644
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
--- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
+++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc
@@ -15,6 +15,9 @@
#include "base/trace_event/trace_conversion_helper.h"
@@ -14,6 +14,9 @@
#include "base/metrics/histogram_macros.h"
#include "base/trace_event/trace_event.h"
#include "base/trace_event/traced_value.h"
+#include "components/content_settings/core/common/content_settings_types.h"
@@ -1564,7 +1572,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
#include "components/subresource_filter/content/browser/activation_state_computing_navigation_throttle.h"
#include "components/subresource_filter/content/browser/async_document_subresource_filter.h"
#include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h"
@@ -149,6 +152,7 @@ ContentSubresourceFilterThrottleManager::
@@ -148,6 +151,7 @@ ContentSubresourceFilterThrottleManager::
profile_interaction_manager_(
std::make_unique<subresource_filter::ProfileInteractionManager>(
profile_context)),
@@ -1572,7 +1580,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f
web_contents_helper_(web_contents_helper) {}
ContentSubresourceFilterThrottleManager::
@@ -668,6 +672,17 @@ ContentSubresourceFilterThrottleManager::
@@ -667,6 +671,17 @@ ContentSubresourceFilterThrottleManager::
throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(),
ad_tagging_state);
}
@@ -1708,8 +1716,8 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET);
return IndexedRulesetVersion();
@@ -328,8 +346,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset(
indexed_ruleset_version_dir, unindexed_ruleset_info.license_path,
indexer.data(), indexer.size());
WriteRuleset(indexed_ruleset_version_dir,
unindexed_ruleset_info.license_path, indexer.data());
RecordIndexAndWriteRulesetResult(result);
- if (result != IndexAndWriteRulesetResult::SUCCESS)
+ if (result != IndexAndWriteRulesetResult::SUCCESS) {
@@ -1736,11 +1744,11 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/
-
publisher_->TryOpenAndSetRulesetFile(
file_path, version.checksum,
base::BindOnce(&RulesetService::OnRulesetSet, AsWeakPtr()));
base::BindOnce(&RulesetService::OnRulesetSet,
diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h
--- a/components/subresource_filter/content/browser/ruleset_service.h
+++ b/components/subresource_filter/content/browser/ruleset_service.h
@@ -182,7 +182,7 @@ class RulesetService : public base::SupportsWeakPtr<RulesetService> {
@@ -182,7 +182,7 @@ class RulesetService {
//
// Virtual so that it can be mocked out in tests.
virtual void IndexAndStoreAndPublishRulesetIfNeeded(
@@ -1749,7 +1757,7 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c
// Get the ruleset version associated with the current local_state_.
IndexedRulesetVersion GetMostRecentlyIndexedVersion() const;
@@ -215,6 +215,11 @@ class RulesetService : public base::SupportsWeakPtr<RulesetService> {
@@ -215,6 +215,11 @@ class RulesetService {
const base::FilePath& indexed_ruleset_base_dir,
const UnindexedRulesetInfo& unindexed_ruleset_info);
@@ -1798,15 +1806,7 @@ diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_str
diff --git a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
--- a/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
+++ b/components/subresource_filter/content/browser/verified_ruleset_dealer.cc
@@ -11,6 +11,7 @@
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
+#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
#include "base/notreached.h"
#include "base/task/sequenced_task_runner.h"
@@ -39,6 +40,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile(
@@ -38,6 +38,9 @@ RulesetFilePtr VerifiedRulesetDealer::OpenAndSetRulesetFile(
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("loading"),
"VerifiedRulesetDealer::OpenAndSetRulesetFile", "file_valid",
file->IsValid());
@@ -1819,8 +1819,8 @@ diff --git a/components/subresource_filter/content/browser/verified_ruleset_deal
diff --git a/components/subresource_filter/core/browser/subresource_filter_features.cc b/components/subresource_filter/core/browser/subresource_filter_features.cc
--- a/components/subresource_filter/core/browser/subresource_filter_features.cc
+++ b/components/subresource_filter/core/browser/subresource_filter_features.cc
@@ -54,72 +54,7 @@ class CommaSeparatedStrings {
const std::vector<base::StringPiece> pieces_;
@@ -55,72 +55,7 @@ class CommaSeparatedStrings {
const std::vector<std::string_view> pieces_;
};
-std::string TakeVariationParamOrReturnEmpty(
@@ -1835,7 +1835,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
-}
-
-mojom::ActivationLevel ParseActivationLevel(
- const base::StringPiece activation_level) {
- const std::string_view activation_level) {
- if (base::EqualsCaseInsensitiveASCII(activation_level,
- kActivationLevelEnabled))
- return mojom::ActivationLevel::kEnabled;
@@ -1845,7 +1845,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
- return mojom::ActivationLevel::kDisabled;
-}
-
-ActivationScope ParseActivationScope(const base::StringPiece activation_scope) {
-ActivationScope ParseActivationScope(const std::string_view activation_scope) {
- if (base::EqualsCaseInsensitiveASCII(activation_scope,
- kActivationScopeAllSites))
- return ActivationScope::ALL_SITES;
@@ -1881,7 +1881,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
- return value < 1 ? value : 1;
-}
-
-int ParseInt(const base::StringPiece value) {
-int ParseInt(const std::string_view value) {
- int result = 0;
- base::StringToInt(value, &result);
- return result;
@@ -1893,7 +1893,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
// If ad tagging is enabled, turn on the dryrun automatically.
bool ad_tagging_enabled = base::FeatureList::IsEnabled(kAdTagging);
const struct {
@@ -127,23 +62,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
@@ -128,23 +63,16 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
bool enabled_by_default;
Configuration (*factory_method)();
} kAvailablePresetConfigurations[] = {
@@ -1919,7 +1919,7 @@ diff --git a/components/subresource_filter/core/browser/subresource_filter_featu
enabled_configurations.push_back(available_preset.factory_method());
}
}
@@ -151,46 +79,10 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
@@ -152,46 +80,10 @@ std::vector<Configuration> FillEnabledPresetConfigurations(
return enabled_configurations;
}
@@ -1978,15 +1978,14 @@ diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/comp
#include "base/metrics/histogram_macros.h"
#include "base/trace_event/trace_event.h"
#include "components/subresource_filter/core/common/first_party_origin.h"
@@ -37,8 +38,10 @@ VerifyStatus GetVerifyStatus(const uint8_t* buffer,
@@ -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
// checksum, and is unneeded once expected_checksum is consistently nonzero.
flatbuffers::Verifier verifier(buffer, size);
+ int local_checksum = LocalGetChecksum(buffer, size);
flatbuffers::Verifier verifier(buffer.data(), buffer.size());
- if (expected_checksum != 0 && expected_checksum != LocalGetChecksum(buffer)) {
+ int local_checksum = LocalGetChecksum(buffer);
+ LOG(INFO) << "GetVerifyStatus: expected checksum = 0x" << std::hex << expected_checksum << ", local checksum = 0x" << std::hex << local_checksum;
if (expected_checksum != 0 &&
- expected_checksum != LocalGetChecksum(buffer, size)) {
+ expected_checksum != local_checksum) {
+ if (expected_checksum != 0 && expected_checksum != local_checksum) {
return flat::VerifyIndexedRulesetBuffer(verifier)
? VerifyStatus::kChecksumFailVerifierPass
: VerifyStatus::kChecksumFailVerifierFail;
@@ -0,0 +1,262 @@
From: uazo <uazo@users.noreply.github.com>
Date: Sun, 4 Feb 2024 16:02:48 +0000
Subject: Change popup site setting
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
---
.../android/popup_blocked_message_delegate.cc | 20 +++-
.../android/popup_blocked_message_delegate.h | 1 +
components/blocked_content/popup_blocker.cc | 3 +
components/blocked_content_strings.grdp | 3 +
.../impl/BromitePopupContentSetting.java | 106 ++++++++++++++++++
.../bromite_content_settings/popups.grdp | 12 ++
.../bromite_content_settings/popups.inc | 7 ++
.../core/browser/content_settings_registry.cc | 2 +-
8 files changed, 151 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/strings/bromite_content_settings/popups.grdp
create mode 100644 components/content_settings/core/browser/bromite_content_settings/popups.inc
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
+++ b/components/blocked_content/android/popup_blocked_message_delegate.cc
@@ -32,7 +32,7 @@ bool PopupBlockedMessageDelegate::ShowMessage(
// the callback.
auto message = std::make_unique<messages::MessageWrapper>(
messages::MessageIdentifier::POPUP_BLOCKED,
- base::BindOnce(&PopupBlockedMessageDelegate::HandleClick,
+ base::BindOnce(&PopupBlockedMessageDelegate::HandleOpenLink,
base::Unretained(this)),
base::BindOnce(&PopupBlockedMessageDelegate::HandleDismissCallback,
base::Unretained(this)));
@@ -46,7 +46,7 @@ bool PopupBlockedMessageDelegate::ShowMessage(
// Don't allow the user to configure the setting in the UI if the setting
// is managed by policy.
int button_text_id =
- allow_settings_changes_ ? IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW : IDS_OK;
+ allow_settings_changes_ ? IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW_THIS_TIME : IDS_OK;
message->SetPrimaryButtonText(l10n_util::GetStringUTF16(button_text_id));
messages::MessageDispatcherBridge* message_dispatcher_bridge =
messages::MessageDispatcherBridge::Get();
@@ -54,6 +54,14 @@ bool PopupBlockedMessageDelegate::ShowMessage(
message->SetIconResourceId(message_dispatcher_bridge->MapToJavaDrawableId(
IDR_ANDROID_INFOBAR_BLOCKED_POPUPS));
+ message->SetSecondaryIconResourceId(
+ message_dispatcher_bridge->MapToJavaDrawableId(
+ IDR_ANDROID_SETTINGS));
+ message->SetSecondaryButtonMenuText(
+ l10n_util::GetStringUTF16(IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW));
+ message->SetSecondaryActionCallback(
+ base::BindRepeating(&PopupBlockedMessageDelegate::HandleClick,
+ base::Unretained(this)));
// On rare occasions, such as the moment when activity is being recreated
// or destroyed, popup blocked message will not be displayed and the
// method will return false.
@@ -102,6 +110,14 @@ void PopupBlockedMessageDelegate::HandleClick() {
std::move(on_show_popups_callback_).Run();
}
+void PopupBlockedMessageDelegate::HandleOpenLink() {
+ // Launch popups.
+ ShowBlockedPopups(&GetWebContents());
+
+ if (on_show_popups_callback_)
+ std::move(on_show_popups_callback_).Run();
+}
+
WEB_CONTENTS_USER_DATA_KEY_IMPL(PopupBlockedMessageDelegate);
} // namespace blocked_content
diff --git a/components/blocked_content/android/popup_blocked_message_delegate.h b/components/blocked_content/android/popup_blocked_message_delegate.h
--- a/components/blocked_content/android/popup_blocked_message_delegate.h
+++ b/components/blocked_content/android/popup_blocked_message_delegate.h
@@ -41,6 +41,7 @@ class PopupBlockedMessageDelegate
explicit PopupBlockedMessageDelegate(content::WebContents* web_contents);
void HandleClick();
+ void HandleOpenLink();
void HandleDismissCallback(messages::DismissReason dismiss_reason);
raw_ptr<HostContentSettingsMap> map_ = nullptr;
diff --git a/components/blocked_content/popup_blocker.cc b/components/blocked_content/popup_blocker.cc
--- a/components/blocked_content/popup_blocker.cc
+++ b/components/blocked_content/popup_blocker.cc
@@ -70,6 +70,9 @@ PopupBlockType ShouldBlockPopup(content::WebContents* web_contents,
if (cs == CONTENT_SETTING_ALLOW)
return PopupBlockType::kNotBlocked;
+ if (cs == CONTENT_SETTING_ASK)
+ return PopupBlockType::kAbusive;
+
if (!user_gesture)
return PopupBlockType::kNoGesture;
diff --git a/components/blocked_content_strings.grdp b/components/blocked_content_strings.grdp
--- a/components/blocked_content_strings.grdp
+++ b/components/blocked_content_strings.grdp
@@ -4,6 +4,9 @@
<message name="IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW" desc="Pop-up Blocking Show Button [CHAR_LIMIT=32]">
Always show
</message>
+ <message name="IDS_POPUPS_BLOCKED_INFOBAR_BUTTON_SHOW_THIS_TIME" desc="Pop-up Blocking Show Button [CHAR_LIMIT=32]">
+ Open this time
+ </message>
<message name="IDS_POPUPS_BLOCKED_INFOBAR_TEXT" desc="Pop-up Blocking Title [CHAR_LIMIT=32] [ICU Syntax]">
{NUM_POPUPS,plural,=1{Pop-up blocked} other{# pop-ups blocked}}
</message>
diff --git a/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
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java
@@ -0,0 +1,106 @@
+/*
+ This file is part of Bromite.
+
+ Bromite 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.
+
+ Bromite 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 Bromite. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+package org.chromium.components.browser_ui.site_settings.impl;
+
+import android.content.Context;
+
+import org.chromium.components.browser_ui.site_settings.R;
+
+import org.chromium.components.browser_ui.site_settings.BromiteCustomContentSetting;
+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources;
+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
+import org.chromium.components.content_settings.ContentSettingValues;
+import org.chromium.components.content_settings.ContentSettingsType;
+import org.chromium.content_public.browser.BrowserContextHandle;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+import java.util.ArrayList;
+
+public class BromitePopupContentSetting extends BromiteCustomContentSetting {
+ public BromitePopupContentSetting() {
+ super(/*contentSettingsType*/ ContentSettingsType.POPUPS,
+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW,
+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK,
+ /*allowException*/ true,
+ /*preferenceKey*/ "popups",
+ /*profilePrefKey*/ "popups");
+ }
+
+ @Override
+ public ContentSettingsResources.ResourceItem getResourceItem() {
+ return new ContentSettingsResources.ResourceItem(
+ /*icon*/ R.drawable.permission_popups,
+ /*title*/ R.string.popup_permission_title,
+ /*defaultEnabledValue*/ getDefaultEnabledValue(),
+ /*defaultDisabledValue*/ getDefaultDisabledValue(),
+ /*enabledSummary*/ R.string.website_settings_category_popup_allowed,
+ /*disabledSummary*/ R.string.website_settings_category_popup_blocked,
+ /*summaryOverrideForScreenReader*/ 0);
+ }
+
+ @Override
+ public int getCategorySummary(@Nullable @ContentSettingValues int value) {
+ switch (value) {
+ case ContentSettingValues.ALLOW:
+ return R.string.website_settings_category_popup_allowed;
+ case ContentSettingValues.BLOCK:
+ return R.string.website_settings_category_popup_blocked;
+ case ContentSettingValues.ASK:
+ return R.string.website_settings_category_popup_block_all;
+ default:
+ return 0;
+ }
+ }
+
+ @Override
+ public int getCategoryDescription() {
+ return 0;
+ }
+
+ @Override
+ public boolean requiresTriStateContentSetting() {
+ return true;
+ }
+
+ @Override
+ public int[] getTriStateSettingDescriptionIDs() {
+ int[] descriptionIDs = {
+ R.string.website_settings_category_popup_allowed, // ALLOWED
+ R.string.website_settings_category_popup_block_all, // ASK
+ R.string.website_settings_category_popup_blocked}; // BLOCKED
+ return descriptionIDs;
+ }
+
+ @Override
+ public boolean showOnlyDescriptions() {
+ return true;
+ }
+
+ @Override
+ public int getAddExceptionDialogMessage() {
+ return R.string.website_settings_category_popup_allowed;
+ }
+
+ @Override
+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) {
+ return ContentSettingValues.ALLOW != value;
+ }
+}
diff --git a/components/browser_ui/strings/bromite_content_settings/popups.grdp b/components/browser_ui/strings/bromite_content_settings/popups.grdp
new file mode 100644
--- /dev/null
+++ b/components/browser_ui/strings/bromite_content_settings/popups.grdp
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL" desc="" formatter_data="android_java">
+ Block all popups
+ </message>
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_ALLOWED" desc="" formatter_data="android_java">
+ Allows popups
+ </message>
+ <message name="IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED" desc="" formatter_data="android_java">
+ Block some popups
+ </message>
+</grit-part>
diff --git a/components/content_settings/core/browser/bromite_content_settings/popups.inc b/components/content_settings/core/browser/bromite_content_settings/popups.inc
new file mode 100644
--- /dev/null
+++ b/components/content_settings/core/browser/bromite_content_settings/popups.inc
@@ -0,0 +1,7 @@
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::POPUPS)
+ ->set_show_into_info_page()
+ .set_desktop_ui()
+ .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_ALLOWED)
+ .set_ask_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL)
+ .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED);
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -131,7 +131,7 @@ void ContentSettingsRegistry::Init() {
WebsiteSettingsInfo::SYNCABLE,
/*allowlisted_primary_schemes=*/
{kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme},
- /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK},
+ /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK, CONTENT_SETTING_ASK},
WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
WebsiteSettingsRegistry::ALL_PLATFORMS,
ContentSettingsInfo::INHERIT_IN_INCOGNITO,
--
+83 -59
View File
@@ -16,7 +16,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/app/extensions_strings.grdp | 6 +++
.../developer_private_api.cc | 37 ++++++++++++-
.../developer_private/developer_private_api.h | 3 ++
.../webstore_private/webstore_private_api.cc | 12 ++++-
.../webstore_private/webstore_private_api.cc | 15 +++++-
chrome/browser/extensions/cws_info_service.cc | 1 +
.../extensions/extension_system_impl.cc | 2 +
.../chrome_extension_downloader_factory.cc | 1 -
.../extensions/updater/extension_updater.cc | 40 ++++++++------
@@ -30,7 +31,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../browser/resources/extensions/toolbar.ts | 20 +++++++
.../resources/webstore_app/manifest.json | 7 +--
.../ui/webui/extensions/extensions_ui.cc | 8 +++
.../chrome_update_query_params_delegate.cc | 8 +--
.../chrome_update_query_params_delegate.cc | 13 ++---
.../extensions/api/developer_private.idl | 2 +
.../update_client/update_query_params.cc | 7 ++-
.../about_flags_cc/Webstore-protection.inc | 19 +++++++
@@ -42,7 +43,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
extensions/common/extension_features.cc | 15 ++++++
extensions/common/extension_features.h | 4 ++
.../definitions/developer_private.d.ts | 4 +-
29 files changed, 249 insertions(+), 92 deletions(-)
30 files changed, 252 insertions(+), 98 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp
@@ -64,7 +65,7 @@ diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -125,6 +125,12 @@
@@ -127,6 +127,12 @@
#include "url/gurl.h"
#include "url/origin.h"
@@ -77,7 +78,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
#include "components/supervised_user/core/browser/supervised_user_preferences.h"
#endif // BUILDFLAG(ENABLE_SUPERVISED_USERS)
@@ -520,9 +526,32 @@ std::unique_ptr<developer::ProfileInfo> DeveloperPrivateAPI::CreateProfileInfo(
@@ -476,9 +482,32 @@ std::unique_ptr<developer::ProfileInfo> DeveloperPrivateAPI::CreateProfileInfo(
info->can_load_unpacked =
ExtensionManagementFactory::GetForBrowserContext(profile)
->HasAllowlistedExtension();
@@ -110,7 +111,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a
template <>
void BrowserContextKeyedAPIFactory<
DeveloperPrivateAPI>::DeclareFactoryDependencies() {
@@ -951,6 +980,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() {
@@ -908,6 +937,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() {
ExtensionUpdater::CheckParams params;
params.fetch_priority = DownloadFetchPriority::kForeground;
params.install_immediately = true;
@@ -118,7 +119,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a
params.callback =
base::BindOnce(&DeveloperPrivateAutoUpdateFunction::OnComplete, this);
updater->CheckNow(std::move(params));
@@ -1090,7 +1120,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() {
@@ -1048,7 +1078,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() {
const developer::ProfileConfigurationUpdate& update = params->update;
@@ -127,7 +128,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a
Profile* profile = Profile::FromBrowserContext(browser_context());
CHECK(profile);
#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
@@ -1102,6 +1132,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() {
@@ -1060,6 +1090,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() {
util::SetDeveloperModeForProfile(profile, *update.in_developer_mode);
}
@@ -199,15 +200,33 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api
}
WebstorePrivateIsPendingCustodianApprovalFunction::
@@ -1263,6 +1271,8 @@ WebstorePrivateGetReferrerChainFunction::Run() {
@@ -1262,11 +1270,14 @@ WebstorePrivateGetReferrerChainFunction::Run() {
request.mutable_referrer_chain_options()->set_recent_navigations_to_collect(
recent_navigations_to_collect);
std::string serialized_referrer_proto = request.SerializeAsString();
+ std::string serialized_referrer_proto = request.SerializeAsString();
+ if (!base::FeatureList::IsEnabled(extensions_features::kEnableExtensionManagementToChromeStore))
+ serialized_referrer_proto = "";
// Base64 encode the proto to avoid issues with base::Value rejecting strings
// which are not valid UTF8.
base::Base64Encode(serialized_referrer_proto, &serialized_referrer_proto);
// Base64 encode the request to avoid issues with base::Value rejecting
// strings which are not valid UTF8.
return RespondNow(
ArgumentList(api::webstore_private::GetReferrerChain::Results::Create(
- base::Base64Encode(request.SerializeAsString()))));
+ base::Base64Encode(serialized_referrer_proto))));
}
WebstorePrivateGetExtensionStatusFunction::
diff --git a/chrome/browser/extensions/cws_info_service.cc b/chrome/browser/extensions/cws_info_service.cc
--- a/chrome/browser/extensions/cws_info_service.cc
+++ b/chrome/browser/extensions/cws_info_service.cc
@@ -160,6 +160,7 @@ namespace extensions {
BASE_FEATURE(kCWSInfoService,
"CWSInfoService",
base::FEATURE_ENABLED_BY_DEFAULT);
+SET_CROMITE_FEATURE_DISABLED(kCWSInfoService);
// Increase the frequency of periodic retrieval of extensions metadata from
// CWS. This feature is used only for testing purposes.
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
--- a/chrome/browser/extensions/extension_system_impl.cc
+++ b/chrome/browser/extensions/extension_system_impl.cc
@@ -422,7 +441,7 @@ diff --git a/chrome/browser/extensions/webstore_install_helper.cc b/chrome/brows
diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc
--- a/chrome/browser/extensions/webstore_installer.cc
+++ b/chrome/browser/extensions/webstore_installer.cc
@@ -624,7 +624,7 @@ void WebstoreInstaller::StartDownload(const std::string& extension_id,
@@ -624,7 +624,7 @@ void WebstoreInstaller::StartDownload(
download_url_, render_process_host_id, render_frame_host->GetRoutingID(),
traffic_annotation));
params->set_file_path(file);
@@ -445,7 +464,7 @@ diff --git a/chrome/browser/resources/extensions/manager.html b/chrome/browser/r
diff --git a/chrome/browser/resources/extensions/manager.ts b/chrome/browser/resources/extensions/manager.ts
--- a/chrome/browser/resources/extensions/manager.ts
+++ b/chrome/browser/resources/extensions/manager.ts
@@ -121,6 +121,11 @@ export class ExtensionsManagerElement extends ExtensionsManagerElementBase {
@@ -122,6 +122,11 @@ export class ExtensionsManagerElement extends ExtensionsManagerElementBase {
value: () => loadTimeData.getBoolean('inDevMode'),
},
@@ -457,7 +476,7 @@ diff --git a/chrome/browser/resources/extensions/manager.ts b/chrome/browser/res
showActivityLog: {
type: Boolean,
value: () => loadTimeData.getBoolean('showActivityLog'),
@@ -222,6 +227,7 @@ export class ExtensionsManagerElement extends ExtensionsManagerElementBase {
@@ -223,6 +228,7 @@ export class ExtensionsManagerElement extends ExtensionsManagerElementBase {
canLoadUnpacked: boolean;
delegate: Service;
inDevMode: boolean;
@@ -465,7 +484,7 @@ diff --git a/chrome/browser/resources/extensions/manager.ts b/chrome/browser/res
showActivityLog: boolean;
enableEnhancedSiteControls: boolean;
devModeControlledByPolicy: boolean;
@@ -292,6 +298,7 @@ export class ExtensionsManagerElement extends ExtensionsManagerElementBase {
@@ -293,6 +299,7 @@ export class ExtensionsManagerElement extends ExtensionsManagerElementBase {
profileInfo.isDeveloperModeControlledByPolicy;
this.inDevMode = profileInfo.inDeveloperMode;
this.canLoadUnpacked = profileInfo.canLoadUnpacked;
@@ -503,7 +522,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.html b/chrome/browser/r
cr-toolbar {
--cr-toolbar-center-basis: 680px;
--cr-toolbar-field-max-width: var(--cr-toolbar-center-basis);
@@ -87,6 +92,13 @@
@@ -88,6 +93,13 @@
checked="[[inDevMode]]" aria-labelledby="devModeLabel">
</cr-toggle>
</div>
@@ -612,7 +631,7 @@ diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browse
{"toolbarLoadUnpacked", IDS_EXTENSIONS_TOOLBAR_LOAD_UNPACKED},
{"toolbarLoadUnpackedDone", IDS_EXTENSIONS_TOOLBAR_LOAD_UNPACKED_DONE},
{"toolbarPack", IDS_EXTENSIONS_TOOLBAR_PACK},
@@ -417,6 +421,10 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
@@ -420,6 +424,10 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile,
source->AddString("hostPermissionsLearnMoreLink",
chrome_extension_constants::kRuntimeHostPermissionsHelpURL);
source->AddBoolean(kInDevModeKey, in_dev_mode);
@@ -626,14 +645,19 @@ diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browse
diff --git a/chrome/browser/update_client/chrome_update_query_params_delegate.cc b/chrome/browser/update_client/chrome_update_query_params_delegate.cc
--- a/chrome/browser/update_client/chrome_update_query_params_delegate.cc
+++ b/chrome/browser/update_client/chrome_update_query_params_delegate.cc
@@ -30,10 +30,10 @@ ChromeUpdateQueryParamsDelegate::GetInstance() {
@@ -35,15 +35,10 @@ ChromeUpdateQueryParamsDelegate::GetInstance() {
}
std::string ChromeUpdateQueryParamsDelegate::GetExtraParams() {
- return base::StrCat({"&prodchannel=",
- chrome::GetChannelName(chrome::WithExtendedStable(true)),
- "&prodversion=", version_info::GetVersionNumber(),
- "&lang=", GetLang()});
- std::string channel_name;
-#if BUILDFLAG(ENABLE_EXTENSIONS)
- channel_name = extensions::GetChannelForExtensionUpdates();
-#else
- channel_name = chrome::GetChannelName(chrome::WithExtendedStable(true));
-#endif
-
- return base::StrCat({"&prodchannel=", channel_name, "&prodversion=",
- version_info::GetVersionNumber(), "&lang=", GetLang()});
+ return base::StrCat({
+ "&prodversion=",
+ version_info::GetMajorVersionNumber().c_str(),
@@ -727,9 +751,9 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
#include "extensions/common/extension.h"
+#include "extensions/common/extension_features.h"
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/extension_id.h"
#include "extensions/common/extension_urls.h"
#include "extensions/common/manifest.h"
@@ -88,6 +92,27 @@ std::vector<std::string> CreateWarningsList(const Extension* extension) {
@@ -90,6 +94,27 @@ std::vector<std::string> CreateWarningsList(const Extension* extension) {
return warnings_list;
}
@@ -757,7 +781,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
std::vector<management::LaunchType> GetAvailableLaunchTypes(
const Extension& extension,
const ManagementAPIDelegate* delegate) {
@@ -261,6 +286,8 @@ void AddExtensionInfo(const Extension* source_extension,
@@ -263,6 +288,8 @@ void AddExtensionInfo(const Extension* source_extension,
const ExtensionSet& extensions,
ExtensionInfoList* extension_list,
content::BrowserContext* context) {
@@ -766,7 +790,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
for (ExtensionSet::const_iterator iter = extensions.begin();
iter != extensions.end(); ++iter) {
const Extension& extension = **iter;
@@ -306,10 +333,9 @@ ExtensionFunction::ResponseAction ManagementGetFunction::Run() {
@@ -308,10 +335,9 @@ ExtensionFunction::ResponseAction ManagementGetFunction::Run() {
std::optional<management::Get::Params> params =
management::Get::Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params);
@@ -778,7 +802,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
if (!target_extension)
return RespondNow(Error(keys::kNoExtensionError, params->id));
@@ -329,8 +355,7 @@ ManagementGetPermissionWarningsByIdFunction::Run() {
@@ -331,8 +357,7 @@ ManagementGetPermissionWarningsByIdFunction::Run() {
EXTENSION_FUNCTION_VALIDATE(params);
const Extension* extension =
@@ -788,7 +812,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
if (!extension)
return RespondNow(Error(keys::kNoExtensionError, params->id));
@@ -396,8 +421,7 @@ ExtensionFunction::ResponseAction ManagementLaunchAppFunction::Run() {
@@ -398,8 +423,7 @@ ExtensionFunction::ResponseAction ManagementLaunchAppFunction::Run() {
return RespondNow(Error(keys::kNotAllowedInKioskError));
const Extension* extension =
@@ -798,7 +822,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
if (!extension)
return RespondNow(Error(keys::kNoExtensionError, params->id));
if (!extension->is_app())
@@ -432,7 +456,7 @@ ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() {
@@ -434,7 +458,7 @@ ExtensionFunction::ResponseAction ManagementSetEnabledFunction::Run() {
->GetDelegate();
const Extension* target_extension =
@@ -807,7 +831,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
if (!target_extension || !ShouldExposeViaManagementAPI(*target_extension)) {
return RespondNow(Error(keys::kNoExtensionError, extension_id_));
}
@@ -627,8 +651,7 @@ ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall(
@@ -629,8 +653,7 @@ ExtensionFunction::ResponseAction ManagementUninstallFunctionBase::Uninstall(
->GetDelegate();
target_extension_id_ = target_extension_id;
const Extension* target_extension =
@@ -817,7 +841,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
ExtensionRegistry::EVERYTHING);
if (!target_extension || !ShouldExposeViaManagementAPI(*target_extension)) {
return RespondNow(Error(keys::kNoExtensionError, target_extension_id_));
@@ -692,8 +715,7 @@ void ManagementUninstallFunctionBase::UninstallExtension() {
@@ -694,8 +717,7 @@ void ManagementUninstallFunctionBase::UninstallExtension() {
// The extension can be uninstalled in another window while the UI was
// showing. Do nothing in that case.
const Extension* target_extension =
@@ -827,7 +851,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
ExtensionRegistry::EVERYTHING);
std::string error;
bool success = false;
@@ -774,8 +796,7 @@ ExtensionFunction::ResponseAction ManagementCreateAppShortcutFunction::Run() {
@@ -776,8 +798,7 @@ ExtensionFunction::ResponseAction ManagementCreateAppShortcutFunction::Run() {
management::CreateAppShortcut::Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params);
const Extension* extension =
@@ -837,7 +861,7 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
if (!extension) {
return RespondNow(Error(
ErrorUtils::FormatErrorMessage(keys::kNoExtensionError, params->id)));
@@ -825,8 +846,7 @@ ExtensionFunction::ResponseAction ManagementSetLaunchTypeFunction::Run() {
@@ -827,8 +848,7 @@ ExtensionFunction::ResponseAction ManagementSetLaunchTypeFunction::Run() {
management::SetLaunchType::Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params);
const Extension* extension =
@@ -850,9 +874,9 @@ diff --git a/extensions/browser/api/management/management_api.cc b/extensions/br
diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/browser/updater/extension_downloader.cc
--- a/extensions/browser/updater/extension_downloader.cc
+++ b/extensions/browser/updater/extension_downloader.cc
@@ -491,8 +491,8 @@ void ExtensionDownloader::CreateManifestLoader() {
std::vector<base::StringPiece> id_vector(extension_ids.begin(),
extension_ids.end());
@@ -494,8 +494,8 @@ void ExtensionDownloader::CreateManifestLoader() {
std::vector<std::string_view> id_vector(extension_ids.begin(),
extension_ids.end());
std::string id_list = base::JoinString(id_vector, ",");
- VLOG(2) << "Fetching " << active_request->full_url() << " for " << id_list;
- VLOG(2) << "Update interactivity: "
@@ -861,7 +885,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
<< (active_request->foreground_check()
? kUpdateInteractivityForeground
: kUpdateInteractivityBackground);
@@ -517,7 +517,7 @@ void ExtensionDownloader::CreateManifestLoader() {
@@ -520,7 +520,7 @@ void ExtensionDownloader::CreateManifestLoader() {
destination: WEBSITE
}
policy {
@@ -870,7 +894,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
cookies_store: "user"
setting:
"This feature cannot be disabled. It is only enabled when the user "
@@ -534,6 +534,7 @@ void ExtensionDownloader::CreateManifestLoader() {
@@ -537,6 +537,7 @@ void ExtensionDownloader::CreateManifestLoader() {
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = active_request->full_url(),
resource_request->load_flags = net::LOAD_DISABLE_CACHE;
@@ -878,7 +902,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
if (active_request->fetch_priority() == DownloadFetchPriority::kForeground) {
resource_request->priority = net::MEDIUM;
@@ -542,10 +543,6 @@ void ExtensionDownloader::CreateManifestLoader() {
@@ -545,10 +546,6 @@ void ExtensionDownloader::CreateManifestLoader() {
// Send traffic-management headers to the webstore, and omit credentials.
// https://bugs.chromium.org/p/chromium/issues/detail?id=647516
if (extension_urls::IsWebstoreUpdateUrl(active_request->full_url())) {
@@ -889,7 +913,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
resource_request->headers.SetHeader(kUpdateAppIdHeader, id_list);
resource_request->headers.SetHeader(
kUpdateUpdaterHeader,
@@ -830,20 +827,6 @@ void ExtensionDownloader::HandleManifestResults(
@@ -833,20 +830,6 @@ void ExtensionDownloader::HandleManifestResults(
update.second->info);
}
@@ -910,7 +934,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
ExtensionIdSet extension_ids_with_errors;
for (const auto& failure : failures)
extension_ids_with_errors.insert(failure.first.id);
@@ -865,7 +848,7 @@ ExtensionDownloader::GetUpdateAvailability(
@@ -868,7 +851,7 @@ ExtensionDownloader::GetUpdateAvailability(
// extensions that have already existed in the system.
if (!delegate_->GetExtensionExistingVersion(extension_id,
&extension_version)) {
@@ -919,7 +943,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
return UpdateAvailability::kBadUpdateSpecification;
}
VLOG(2) << extension_id << " is at '" << extension_version << "'";
@@ -876,11 +859,11 @@ ExtensionDownloader::GetUpdateAvailability(
@@ -879,11 +862,11 @@ ExtensionDownloader::GetUpdateAvailability(
const std::string& update_version_str = update->version;
if (VLOG_IS_ON(2)) {
if (update_version_str.empty())
@@ -933,7 +957,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
<< " latest version is '" << update_version_str << "'";
}
@@ -890,21 +873,21 @@ ExtensionDownloader::GetUpdateAvailability(
@@ -893,21 +876,21 @@ ExtensionDownloader::GetUpdateAvailability(
// we don't want it.
if (update_version_str.empty()) {
// If update manifest doesn't have version number => no update.
@@ -956,9 +980,9 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
- VLOG(2) << extension_id << " version is not older than '"
+ LOG(INFO) << extension_id << " version is not older than '"
<< update_version_str << "'";
has_noupdate = true;
continue;
@@ -925,7 +908,9 @@ ExtensionDownloader::GetUpdateAvailability(
bool can_rollback =
update_version.CompareTo(existing_version) < 0 &&
@@ -934,7 +917,9 @@ ExtensionDownloader::GetUpdateAvailability(
}
// Stop checking as soon as an update for |extension_id| is found.
@@ -969,7 +993,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
*update_result_out = const_cast<UpdateManifestResult*>(update);
return UpdateAvailability::kAvailable;
}
@@ -1170,7 +1155,7 @@ void ExtensionDownloader::CreateExtensionLoader() {
@@ -1179,7 +1164,7 @@ void ExtensionDownloader::CreateExtensionLoader() {
int load_flags = net::LOAD_DISABLE_CACHE;
bool is_secure = fetch->url.SchemeIsCryptographic();
extension_loader_resource_request_->load_flags = load_flags;
@@ -978,7 +1002,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
extension_loader_resource_request_->credentials_mode =
network::mojom::CredentialsMode::kOmit;
} else {
@@ -1178,7 +1163,7 @@ void ExtensionDownloader::CreateExtensionLoader() {
@@ -1187,7 +1172,7 @@ void ExtensionDownloader::CreateExtensionLoader() {
net::SiteForCookies::FromUrl(fetch->url);
}
@@ -987,7 +1011,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
is_secure) {
if (access_token_.empty()) {
// We should try OAuth2, but we have no token cached. This
@@ -1203,7 +1188,7 @@ void ExtensionDownloader::CreateExtensionLoader() {
@@ -1212,7 +1197,7 @@ void ExtensionDownloader::CreateExtensionLoader() {
base::StringPrintf("Bearer %s", access_token_.c_str()));
}
@@ -996,7 +1020,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
StartExtensionLoader();
}
@@ -1225,7 +1210,7 @@ void ExtensionDownloader::StartExtensionLoader() {
@@ -1234,7 +1219,7 @@ void ExtensionDownloader::StartExtensionLoader() {
destination: WEBSITE
}
policy {
@@ -1005,7 +1029,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
cookies_store: "user"
setting:
"This feature cannot be disabled. It is only enabled when the user "
@@ -1296,6 +1281,7 @@ void ExtensionDownloader::OnExtensionLoadComplete(base::FilePath crx_path) {
@@ -1305,6 +1290,7 @@ void ExtensionDownloader::OnExtensionLoadComplete(base::FilePath crx_path) {
RETRY_HISTOGRAM("CrxFetchSuccess",
extensions_queue_.active_request_failure_count(),
url);
@@ -1013,7 +1037,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
std::unique_ptr<ExtensionFetch> fetch_data =
std::move(extensions_queue_.reset_active_request().fetch);
delegate_->OnExtensionDownloadStageChanged(
@@ -1316,7 +1302,7 @@ void ExtensionDownloader::OnExtensionLoadComplete(base::FilePath crx_path) {
@@ -1325,7 +1311,7 @@ void ExtensionDownloader::OnExtensionLoadComplete(base::FilePath crx_path) {
} else {
const std::set<int> request_ids = active_request.GetRequestIds();
const ExtensionDownloaderDelegate::PingResult& ping = ping_results_[id];
@@ -1022,7 +1046,7 @@ diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/bro
<< "' response code:" << response_code;
if (ShouldRetryRequest(extension_loader_.get()) &&
extensions_queue_.active_request_failure_count() < kMaxRetries) {
@@ -1410,6 +1396,7 @@ void ExtensionDownloader::NotifyExtensionsDownloadFailedWithList(
@@ -1419,6 +1405,7 @@ void ExtensionDownloader::NotifyExtensionsDownloadFailedWithList(
bool ExtensionDownloader::IterateFetchCredentialsAfterFailure(
ExtensionFetch* fetch,
int response_code) {
@@ -1044,7 +1068,7 @@ diff --git a/extensions/browser/updater/extension_downloader.h b/extensions/brow
diff --git a/extensions/browser/updater/manifest_fetch_data.cc b/extensions/browser/updater/manifest_fetch_data.cc
--- a/extensions/browser/updater/manifest_fetch_data.cc
+++ b/extensions/browser/updater/manifest_fetch_data.cc
@@ -106,7 +106,7 @@ ManifestFetchData::ManifestFetchData(const GURL& update_url,
@@ -107,7 +107,7 @@ ManifestFetchData::ManifestFetchData(const GURL& update_url,
: base_url_(update_url),
full_url_(update_url),
brand_code_(brand_code),
@@ -1053,7 +1077,7 @@ diff --git a/extensions/browser/updater/manifest_fetch_data.cc b/extensions/brow
fetch_priority_(fetch_priority) {
UpdateFullUrl(base_query_params);
request_ids_.insert(request_id);
@@ -160,18 +160,12 @@ bool ManifestFetchData::AddExtension(const std::string& id,
@@ -161,18 +161,12 @@ bool ManifestFetchData::AddExtension(const std::string& id,
// Compute the string we'd append onto the full_url_, and see if it fits.
std::vector<std::string> parts;
parts.push_back("id=" + id);
@@ -1086,7 +1110,7 @@ diff --git a/extensions/browser/updater/safe_manifest_parser.cc b/extensions/bro
diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc
--- a/extensions/common/extension_features.cc
+++ b/extensions/common/extension_features.cc
@@ -154,4 +154,19 @@ BASE_FEATURE(kDeclarativeNetRequestResponseHeaderMatching,
@@ -158,4 +158,19 @@ BASE_FEATURE(kDeclarativeNetRequestResponseHeaderMatching,
"DeclarativeNetRequestResponseHeaderMatching",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -1109,7 +1133,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi
diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h
--- a/extensions/common/extension_features.h
+++ b/extensions/common/extension_features.h
@@ -193,6 +193,10 @@ BASE_DECLARE_FEATURE(kDeclarativeNetRequestSafeRuleLimits);
@@ -200,6 +200,10 @@ BASE_DECLARE_FEATURE(kDeclarativeNetRequestSafeRuleLimits);
// matching condition.
BASE_DECLARE_FEATURE(kDeclarativeNetRequestResponseHeaderMatching);
@@ -41,7 +41,7 @@ diff --git a/services/network/cors/preflight_cache.h b/services/network/cors/pre
diff --git a/services/network/cors/preflight_controller.cc b/services/network/cors/preflight_controller.cc
--- a/services/network/cors/preflight_controller.cc
+++ b/services/network/cors/preflight_controller.cc
@@ -789,6 +789,10 @@ void PreflightController::ClearCorsPreflightCache(
@@ -811,6 +811,10 @@ void PreflightController::ClearCorsPreflightCache(
cache_.ClearCache(std::move(url_filter));
}
@@ -55,9 +55,9 @@ diff --git a/services/network/cors/preflight_controller.cc b/services/network/co
diff --git a/services/network/cors/preflight_controller.h b/services/network/cors/preflight_controller.h
--- a/services/network/cors/preflight_controller.h
+++ b/services/network/cors/preflight_controller.h
@@ -141,6 +141,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final {
mojo::PendingRemote<mojom::URLLoaderNetworkServiceObserver>
url_loader_network_service_observer);
@@ -157,6 +157,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) PreflightController final {
url_loader_network_service_observer,
const PreflightMode& preflight_mode);
+ void ClearCache();
+
@@ -79,7 +79,7 @@ diff --git a/services/network/cors/preflight_result.cc b/services/network/cors/p
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1136,6 +1136,8 @@ void NetworkContext::ClearHttpCache(base::Time start_time,
@@ -1179,6 +1179,8 @@ void NetworkContext::ClearHttpCache(base::Time start_time,
base::BindOnce(&NetworkContext::OnHttpCacheCleared,
base::Unretained(this), std::move(callback))));
+122 -26
View File
@@ -7,17 +7,20 @@ Use Google Chrome branding for client hints
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
components/embedder_support/user_agent_utils.cc | 4 +---
content/browser/client_hints/client_hints.cc | 3 ++-
content/browser/loader/navigation_url_loader_impl.cc | 5 +++++
.../content/common/features_cc/Client-hints-overrides.inc | 1 +
.../public/cpp/features_cc/Client-hints-overrides.inc | 1 +
net/http/http_network_transaction.cc | 1 +
services/network/public/cpp/client_hints.cc | 1 +
third_party/blink/common/client_hints/client_hints.cc | 1 +
.../blink/common/client_hints/enabled_client_hints.cc | 4 +++-
.../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++--
10 files changed, 18 insertions(+), 7 deletions(-)
components/embedder_support/user_agent_utils.cc | 4 +---
content/browser/client_hints/client_hints.cc | 17 +++++++++++------
.../loader/navigation_url_loader_impl.cc | 5 +++++
.../features_cc/Client-hints-overrides.inc | 1 +
.../cpp/features_cc/Client-hints-overrides.inc | 1 +
net/http/http_network_transaction.cc | 1 +
services/network/public/cpp/client_hints.cc | 1 +
.../blink/common/client_hints/client_hints.cc | 1 +
.../common/client_hints/enabled_client_hints.cc | 4 +++-
.../blink/renderer/core/frame/navigator_ua.idl | 4 +++-
.../renderer/core/frame/navigator_ua_data.idl | 5 ++++-
.../renderer/core/loader/base_fetch_context.cc | 6 ++++--
.../platform/runtime_enabled_features.json5 | 4 ++++
13 files changed, 40 insertions(+), 14 deletions(-)
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
@@ -27,18 +30,26 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd
@@ -187,9 +187,7 @@ const blink::UserAgentBrandList GetUserAgentBrandList(
bool parse_result = base::StringToInt(major_version, &major_version_number);
DCHECK(parse_result);
absl::optional<std::string> brand;
std::optional<std::string> brand;
-#if !BUILDFLAG(CHROMIUM_BRANDING)
- brand = version_info::GetProductName();
-#endif
+ brand = "Google Chrome";
absl::optional<std::string> maybe_brand_override =
std::optional<std::string> maybe_brand_override =
base::GetFieldTrialParamValueByFeature(features::kGreaseUACH,
"brand_override");
diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc
--- a/content/browser/client_hints/client_hints.cc
+++ b/content/browser/client_hints/client_hints.cc
@@ -516,7 +516,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers,
@@ -55,6 +55,7 @@
#include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h"
#include "third_party/blink/public/common/permissions_policy/permissions_policy.h"
#include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "url/origin.h"
@@ -516,7 +517,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers,
: network::kPrefersReducedTransparencyNoPreference);
}
@@ -48,10 +59,37 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie
return network::IsOriginPotentiallyTrustworthy(origin);
}
@@ -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
@@ -1064,6 +1064,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
@@ -1091,6 +1091,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived(
return;
}
@@ -91,12 +129,12 @@ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/publ
+++ b/services/network/public/cpp/client_hints.cc
@@ -120,6 +120,7 @@ const DecodeMap& GetDecodeMap() {
absl::optional<std::vector<network::mojom::WebClientHintsType>>
std::optional<std::vector<network::mojom::WebClientHintsType>>
ParseClientHintsHeader(const std::string& header) {
+ if ((true)) return absl::nullopt;
// Accept-CH is an sh-list of tokens; see:
// https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-header-structure-19#section-3.1
absl::optional<net::structured_headers::List> maybe_list =
std::optional<net::structured_headers::List> maybe_list =
diff --git a/third_party/blink/common/client_hints/client_hints.cc b/third_party/blink/common/client_hints/client_hints.cc
--- a/third_party/blink/common/client_hints/client_hints.cc
+++ b/third_party/blink/common/client_hints/client_hints.cc
@@ -119,7 +157,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
switch (type) {
case WebClientHintsType::kUA:
case WebClientHintsType::kUAArch:
@@ -99,7 +100,7 @@ bool IsDisabledByFeature(const WebClientHintsType type) {
@@ -96,7 +97,7 @@ bool IsDisabledByFeature(const WebClientHintsType type) {
} // namespace
bool EnabledClientHints::IsEnabled(const WebClientHintsType type) const {
@@ -128,7 +166,7 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
}
void EnabledClientHints::SetIsEnabled(const WebClientHintsType type,
@@ -110,6 +111,7 @@ 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;
@@ -136,18 +174,76 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi
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
--- a/third_party/blink/renderer/core/frame/navigator_ua.idl
+++ b/third_party/blink/renderer/core/frame/navigator_ua.idl
@@ -4,6 +4,8 @@
// https://github.com/WICG/ua-client-hints
-interface mixin NavigatorUA {
+[
+ RuntimeEnabled=UserAgentClientHint
+] interface mixin NavigatorUA {
[SecureContext] readonly attribute NavigatorUAData userAgentData;
};
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
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.idl
@@ -4,7 +4,10 @@
// https://github.com/WICG/ua-client-hints
-[Exposed=(Window,Worker)] interface NavigatorUAData {
+[
+ RuntimeEnabled=UserAgentClientHint,
+ Exposed=(Window,Worker)
+] interface NavigatorUAData {
[HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray<NavigatorUABrandVersion> brands;
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile;
[HighEntropy=Direct, MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform;
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/third_party/blink/renderer/core/loader/base_fetch_context.cc
--- a/third_party/blink/renderer/core/loader/base_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.cc
@@ -167,7 +167,7 @@ void BaseFetchContext::AddClientHintsIfNecessary(
// specifying accomponying client hints, in which case we disable sending
// them.
using network::mojom::blink::WebClientHintsType;
- if (ua) {
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
// ShouldSendClientHint is called to make sure UA is controlled by
// Permissions Policy.
if (ShouldSendClientHint(policy, resource_origin, is_1p_origin,
@@ -329,7 +329,7 @@ void BaseFetchContext::AddClientHintsIfNecessary(
}
// Only send User Agent hints if the info is available
- if (ua) {
+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled() && ua) {
if (ShouldSendClientHint(policy, resource_origin, is_1p_origin,
WebClientHintsType::kUAArch, hints_preferences)) {
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
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -3903,8 +3903,8 @@
public: true,
@@ -499,6 +499,10 @@
name: "ByobFetch",
status: "stable",
},
{
- name: "UserAgentClientHint",
- status: "stable",
+ {
+ name: "UserAgentClientHint", // always disabled
+ status: "experimental", // in bromite
},
+ },
{
// https://chromestatus.com/feature/5132477781245952
name: "CacheStorageCodeCacheHint",
origin_trial_feature_name: "CacheStorageCodeCacheHint",
--
@@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
--- a/chrome/android/chrome_public_apk_tmpl.gni
+++ b/chrome/android/chrome_public_apk_tmpl.gni
@@ -638,6 +638,7 @@ template("chrome_common_apk_or_module_tmpl") {
@@ -642,6 +642,7 @@ template("chrome_common_apk_or_module_tmpl") {
[ "//components/crash/core/app:chrome_crashpad_handler_named_as_so" ]
loadable_modules += [ "$root_out_dir/libchrome_crashpad_handler.so" ]
library_always_compress += [ "libchrome_crashpad_handler.so" ]
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -53,7 +53,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/build/BUILD.gn b/build/BUILD.gn
--- a/build/BUILD.gn
+++ b/build/BUILD.gn
@@ -51,6 +51,14 @@ buildflag_header("branding_buildflags") {
@@ -55,6 +55,14 @@ buildflag_header("branding_buildflags") {
}
}
@@ -13147,7 +13147,7 @@ e)fqMZZ`3a)Ds&5H<cfp<0000<MNUMnLSTYHt&Yn8
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2051,6 +2051,7 @@ static_library("browser") {
@@ -2050,6 +2050,7 @@ static_library("browser") {
"//build:chromeos_buildflags",
"//build/config/chromebox_for_meetings:buildflags",
"//build/config/compiler:compiler_buildflags",
@@ -13209,7 +13209,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -2086,7 +2086,7 @@ Your Google account may have other forms of browsing history like searches and a
@@ -2124,7 +2124,7 @@ Your Google account may have other forms of browsing history like searches and a
About Chrome
</message>
<message name="IDS_LEGAL_INFORMATION_SUMMARY" desc="Summary for legal information" meaning="Android">
@@ -13221,7 +13221,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
--- a/chrome/common/url_constants.h
+++ b/chrome/common/url_constants.h
@@ -114,7 +114,7 @@ inline constexpr char kChromeHelpViaMenuURL[] =
@@ -126,7 +126,7 @@ inline constexpr char kChromeHelpViaMenuURL[] =
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
inline constexpr char kChromeHelpViaWebUIURL[] =
@@ -13230,7 +13230,7 @@ diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
#if BUILDFLAG(IS_CHROMEOS_ASH)
inline constexpr char kChromeOsHelpViaWebUIURL[] =
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
@@ -180,7 +180,7 @@ inline constexpr char kChromeUIUntrustedNewTabPageUrl[] =
@@ -189,7 +189,7 @@ inline constexpr char kChromeUIUntrustedNewTabPageUrl[] =
"chrome-untrusted://new-tab-page/";
// The URL for the Chromium project used in the About dialog.
@@ -13242,7 +13242,7 @@ diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h
diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd
--- a/components/browser_ui/strings/android/browser_ui_strings.grd
+++ b/components/browser_ui/strings/android/browser_ui_strings.grd
@@ -1003,7 +1003,7 @@
@@ -994,7 +994,7 @@
<!-- Accessibility preferences -->
<message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR_LIMIT=32]">
@@ -18202,7 +18202,7 @@ diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py
diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc
--- a/ui/base/ui_base_features.cc
+++ b/ui/base/ui_base_features.cc
@@ -636,4 +636,6 @@ BASE_FEATURE(kUseGammaContrastRegistrySettings,
@@ -643,4 +643,6 @@ BASE_FEATURE(kUseGammaContrastRegistrySettings,
base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_WIN)
+36 -21
View File
@@ -7,6 +7,7 @@ Opens tabs in foreground, Move web search to the top of items,
Web search in tab group and Enable smart text selection
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../browser/ChromeActionModeHandler.java | 4 +-
.../chrome/browser/ChromeTabbedActivity.java | 15 +-
.../compositor/layouts/LayoutManagerImpl.java | 8 ++
.../chrome/browser/ui/RootUiCoordinator.java | 8 +-
@@ -14,13 +15,27 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../res/xml/accessibility_preferences.xml | 24 ++++
.../selection/SelectActionMenuHelper.java | 131 ++++++++++++------
.../selection/SmartSelectionClient.java | 4 +
7 files changed, 177 insertions(+), 47 deletions(-)
8 files changed, 178 insertions(+), 50 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Customize-selection-popup.grdp
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java
@@ -148,9 +148,7 @@ public class ChromeActionModeHandler {
| ActionModeCallbackHelper.MENU_ITEM_SHARE;
// Disable options that expose additional Chrome functionality prior to the FRE being
// completed (i.e. creation of a new tab).
- if (FirstRunStatus.getFirstRunFlowComplete()) {
- allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
- }
+ allowedActionModes |= ActionModeCallbackHelper.MENU_ITEM_WEB_SEARCH;
mHelper.setAllowedMenuItems(allowedActionModes);
mHelper.onCreateActionMode(mode, menu);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -693,10 +693,17 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@@ -737,10 +737,17 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
@TabLaunchType int type,
@TabCreationState int creationState,
boolean markedForSelection) {
@@ -78,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
import org.chromium.base.TraceEvent;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.supplier.ObservableSupplier;
@@ -785,11 +786,16 @@ public class RootUiCoordinator
@@ -814,11 +815,16 @@ public class RootUiCoordinator
TrackerFactory.getTrackerForProfile(tab.getProfile())
.notifyEvent(EventConstants.WEB_SEARCH_PERFORMED);
@@ -138,7 +153,7 @@ new file mode 100644
diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
--- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
+++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml
@@ -58,4 +58,28 @@ found in the LICENSE file.
@@ -63,4 +63,28 @@ found in the LICENSE file.
android:key="move_toolbar_bottom"
android:summary="@string/move_toolbar_bottom_summary"
android:title="@string/move_toolbar_bottom_title" />
@@ -170,15 +185,15 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectActionMenuHelper.java
@@ -25,6 +25,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.core.content.ContextCompat;
@@ -26,6 +26,7 @@ import androidx.core.content.ContextCompat;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
+import org.chromium.base.ContextUtils;
import org.chromium.base.PackageManagerUtils;
import org.chromium.base.StrictModeContext;
import org.chromium.content.R;
@@ -50,38 +51,84 @@ import java.util.TreeSet;
@@ -51,38 +52,84 @@ import java.util.TreeSet;
public class SelectActionMenuHelper {
private static final String TAG = "SelectActionMenu"; // 20 char limit.
@@ -293,7 +308,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
}
@Retention(RetentionPolicy.SOURCE)
@@ -158,7 +205,7 @@ public class SelectActionMenuHelper {
@@ -159,7 +206,7 @@ public class SelectActionMenuHelper {
if (!additionalMenuItems.isEmpty()) {
// Additional menu item group which comes after default menu items.
SelectionMenuGroup additionalItemGroup =
@@ -302,7 +317,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
additionalItemGroup.addItems(additionalMenuItems);
pasteMenuItems.add(additionalItemGroup);
}
@@ -224,7 +271,7 @@ public class SelectActionMenuHelper {
@@ -225,7 +272,7 @@ public class SelectActionMenuHelper {
}
SelectionMenuGroup primaryAssistGroup =
new SelectionMenuGroup(
@@ -311,7 +326,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
View.OnClickListener clickListener = null;
if (classificationResult.onClickListener != null) {
clickListener = classificationResult.onClickListener;
@@ -250,7 +297,7 @@ public class SelectActionMenuHelper {
@@ -251,7 +298,7 @@ public class SelectActionMenuHelper {
String selectedText) {
SelectionMenuGroup defaultGroup =
new SelectionMenuGroup(
@@ -320,7 +335,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
List<SelectionMenuItem.Builder> menuItemBuilders = new ArrayList<>();
menuItemBuilders.add(cut(delegate.canCut()));
menuItemBuilders.add(copy(delegate.canCopy()));
@@ -301,7 +348,7 @@ public class SelectActionMenuHelper {
@@ -302,7 +349,7 @@ public class SelectActionMenuHelper {
// these menu items.
SelectionMenuGroup secondaryAssistItems =
new SelectionMenuGroup(
@@ -329,7 +344,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
// First action is reserved for primary action so start at index 1.
final int startIndex = 1;
@@ -334,7 +381,7 @@ public class SelectActionMenuHelper {
@@ -335,7 +382,7 @@ public class SelectActionMenuHelper {
SelectionMenuGroup textProcessingItems =
new SelectionMenuGroup(
R.id.select_action_menu_text_processing_items,
@@ -338,7 +353,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
if (isSelectionPassword || intentHandler == null) {
addAdditionalTextProcessingItems(textProcessingItems, selectionActionMenuDelegate);
return textProcessingItems;
@@ -430,7 +477,7 @@ public class SelectActionMenuHelper {
@@ -431,7 +478,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_cut)
.setIconAttr(android.R.attr.actionModeCutDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.CUT)
@@ -347,7 +362,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -442,7 +489,7 @@ public class SelectActionMenuHelper {
@@ -443,7 +490,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_copy)
.setIconAttr(android.R.attr.actionModeCopyDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.COPY)
@@ -356,7 +371,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -454,7 +501,7 @@ public class SelectActionMenuHelper {
@@ -455,7 +502,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_paste)
.setIconAttr(android.R.attr.actionModePasteDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.PASTE)
@@ -365,8 +380,8 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -465,7 +512,7 @@ public class SelectActionMenuHelper {
return new SelectionMenuItem.Builder(R.string.actionbar_share)
@@ -469,7 +516,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)
@@ -374,7 +389,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -477,7 +524,7 @@ public class SelectActionMenuHelper {
@@ -481,7 +528,7 @@ public class SelectActionMenuHelper {
.setId(R.id.select_action_menu_select_all)
.setIconAttr(android.R.attr.actionModeSelectAllDrawable)
.setAlphabeticShortcut(ItemKeyShortcuts.SELECT_ALL)
@@ -383,7 +398,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled)
@@ -490,7 +537,7 @@ public class SelectActionMenuHelper {
@@ -494,7 +541,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)
@@ -392,8 +407,8 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select
.setShowAsActionFlags(
MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT)
.setIsEnabled(isEnabled);
@@ -506,7 +553,7 @@ public class SelectActionMenuHelper {
return new SelectionMenuItem.Builder(R.string.actionbar_web_search)
@@ -514,7 +561,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)
@@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
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
@@ -3129,8 +3129,8 @@
@@ -3110,8 +3110,8 @@
status: "stable",
},
{
@@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java
@@ -288,8 +288,17 @@ class LocationBarMediator
@@ -289,8 +289,17 @@ class LocationBarMediator
if (mNativeInitialized) RecordUserAction.record("FocusLocation");
// Don't clear Omnibox if the user just pasted text to NTP Omnibox.
if (mShouldClearOmniboxOnFocus) {
@@ -58,7 +58,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import android.os.SystemClock;
import android.text.Editable;
import android.text.InputType;
@@ -100,6 +101,7 @@ public abstract class UrlBar extends AutocompleteEditText {
@@ -99,6 +100,7 @@ public abstract class UrlBar extends AutocompleteEditText {
private boolean mFocused;
private boolean mAllowFocus = true;
@@ -66,7 +66,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
private boolean mPendingScroll;
// Captures the current intended text scroll type.
@@ -299,6 +301,27 @@ public abstract class UrlBar extends AutocompleteEditText {
@@ -294,6 +296,27 @@ public abstract class UrlBar extends AutocompleteEditText {
mPendingScroll = false;
}
fixupTextDirection();
@@ -42,7 +42,7 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
@@ -1044,6 +1044,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa
@@ -1112,6 +1112,11 @@ public class WebContentsAccessibilityImpl extends AccessibilityNodeProviderCompa
structure.setChildCount(0);
return;
}
@@ -4,34 +4,69 @@ Subject: Disable Android AppRestrictions
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/browser/enterprise/util/BUILD.gn | 1 +
.../enterprise/util/EnterpriseInfoImpl.java | 5 +++
chrome/browser/flags/BUILD.gn | 1 +
.../cromite/sEnableAndroidAppRestriction.java | 38 +++++++++++++++++++
.../policy/AppRestrictionsProvider.java | 8 ++++
.../cromite/sEnableAndroidAppRestriction.java | 39 +++++++++++++++++++
.../policy/AppRestrictionsProvider.java | 12 ++++++
.../DisableAndroidAppRestriction.inc | 13 +++++++
.../disable-android-app-restriction.inc | 3 ++
.../disable-android-app-restriction.inc | 1 +
6 files changed, 64 insertions(+)
8 files changed, 75 insertions(+)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/DisableAndroidAppRestriction.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/disable-android-app-restriction.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/disable-android-app-restriction.inc
diff --git a/chrome/browser/enterprise/util/BUILD.gn b/chrome/browser/enterprise/util/BUILD.gn
--- a/chrome/browser/enterprise/util/BUILD.gn
+++ b/chrome/browser/enterprise/util/BUILD.gn
@@ -20,6 +20,7 @@ android_library("java") {
"//build/android:build_java",
"//chrome/browser/flags:java",
"//chrome/browser/profiles/android:java",
+ "//components/policy/android:policy_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",
]
diff --git a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java
--- a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java
+++ b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl.java
@@ -23,6 +23,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.browser.flags.ChromeSwitches;
+import org.chromium.components.policy.AppRestrictionsProvider;
import java.util.LinkedList;
import java.util.Queue;
@@ -76,6 +77,10 @@ public class EnterpriseInfoImpl extends EnterpriseInfo {
new AsyncTask<OwnedState>() {
// TODO: Unit test this function. https://crbug.com/1099262
private OwnedState calculateIsRunningOnManagedProfile(Context context) {
+ if (!AppRestrictionsProvider.isEnabled()) {
+ return new OwnedState(/*hasDeviceOwnerApp*/false,
+ /*hasProfileOwnerApp*/false);
+ }
boolean hasProfileOwnerApp = false;
boolean hasDeviceOwnerApp = false;
PackageManager packageManager = context.getPackageManager();
diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn
--- a/chrome/browser/flags/BUILD.gn
+++ b/chrome/browser/flags/BUILD.gn
@@ -34,6 +34,7 @@ android_library("java") {
@@ -25,6 +25,7 @@ android_library("java") {
"//build:chromeos_buildflags",
"//build/android:build_java",
"//chrome/browser/preferences:java",
+ "//components/policy/android:policy_java",
"//components/version_info/android:version_constants_java",
"//third_party/android_deps:guava_android_java",
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/jni_zero:jni_zero_java",
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java
@@ -0,0 +1,38 @@
@@ -0,0 +1,39 @@
+/*
+ This file is part of Cromite.
+
@@ -51,14 +86,15 @@ new file mode 100644
+
+package org.chromium.chrome.browser.flags.cromite;
+
+import org.chromium.chrome.browser.flags.CachedFlag;
+import org.chromium.base.cached_flags.CachedFlag;
+import org.chromium.chrome.browser.flags.ChromeFeatureMap;
+import org.chromium.components.policy.AppRestrictionsProvider;
+
+public class sEnableAndroidAppRestriction {
+ private static boolean initialized_ = false;
+
+ private static final CachedFlag sInstance =
+ new CachedFlag("EnableAndroidAppRestriction", false);
+ new CachedFlag(ChromeFeatureMap.getInstance(), "EnableAndroidAppRestriction", false);
+
+ private sEnableAndroidAppRestriction() {}
+
@@ -73,7 +109,7 @@ 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
--- a/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
+++ b/components/policy/android/java/src/org/chromium/components/policy/AppRestrictionsProvider.java
@@ -17,6 +17,11 @@ import org.chromium.base.Log;
@@ -17,6 +17,15 @@ import org.chromium.base.Log;
*/
public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
private static final String TAG = "AppResProvider";
@@ -81,11 +117,15 @@ diff --git a/components/policy/android/java/src/org/chromium/components/policy/A
+
+ public static void setEnabled(boolean value) {
+ mEnabled = value;
+ }
+
+ public static boolean isEnabled() {
+ return mEnabled;
+ }
/**
* Get the app restriction information from provided user manager, and record some timing
@@ -28,6 +33,9 @@ public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
@@ -28,6 +37,9 @@ public class AppRestrictionsProvider extends AbstractAppRestrictionsProvider {
*/
public static Bundle getApplicationRestrictionsFromUserManager(
UserManager userManager, String packageName) {
@@ -7,14 +7,14 @@ This feature is detrimental to privacy, see also:
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../common/chrome_features_cc/Disable-AsyncDNS-by-default.inc | 1 +
.../net/base/features_cc/Disable-AsyncDNS-by-default.inc | 1 +
1 file changed, 1 insertion(+)
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc
create mode 100644 cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc
diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc b/cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc
diff --git a/cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc b/cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-AsyncDNS-by-default.inc
+++ b/cromite_flags/net/base/features_cc/Disable-AsyncDNS-by-default.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kAsyncDns);
--
@@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/browser/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
@@ -102,6 +102,7 @@
@@ -99,6 +99,7 @@
namespace component_updater {
void RegisterComponentsForUpdate() {
@@ -23,18 +23,18 @@ diff --git a/chrome/browser/component_updater/registration.cc b/chrome/browser/c
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
@@ -92,6 +92,7 @@ void ComponentInstaller::Register(RegisterCallback register_callback,
base::OnceClosure callback,
base::TaskPriority task_priority,
const base::Version& registered_version) {
@@ -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_);
task_runner_ = base::ThreadPool::CreateSequencedTaskRunner(
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
@@ -535,7 +535,7 @@ std::unique_ptr<ComponentUpdateService> ComponentUpdateServiceFactory(
@@ -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.
@@ -0,0 +1,32 @@
From: uazo <uazo@users.noreply.github.com>
Date: Mon, 26 Feb 2024 16:35:16 +0000
Subject: Disable Compose feature
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
components/compose/core/browser/compose_features.cc | 3 +++
components/compose/features.gni | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/components/compose/core/browser/compose_features.cc b/components/compose/core/browser/compose_features.cc
--- a/components/compose/core/browser/compose_features.cc
+++ b/components/compose/core/browser/compose_features.cc
@@ -56,4 +56,7 @@ BASE_FEATURE(kComposeTextOutputAnimation,
BASE_FEATURE(kComposeTextSelection,
"ComposeTextSelection",
base::FEATURE_DISABLED_BY_DEFAULT);
+
+SET_CROMITE_FEATURE_DISABLED(kEnableCompose);
+SET_CROMITE_FEATURE_DISABLED(kComposeEligible);
} // namespace compose::features
diff --git a/components/compose/features.gni b/components/compose/features.gni
--- a/components/compose/features.gni
+++ b/components/compose/features.gni
@@ -4,5 +4,5 @@
declare_args() {
# Whether Compose is enabled in the build.
- enable_compose = is_mac || is_win || is_linux
+ enable_compose = false
}
--
@@ -10,14 +10,14 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
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
@@ -721,16 +721,18 @@
status: "stable",
@@ -651,16 +651,18 @@
}
},
{
- name: "CompressionDictionaryTransport",
+ name: "CompressionDictionaryTransport", // need to be disabled
base_feature: "none",
origin_trial_feature_name: "CompressionDictionaryTransport",
origin_trial_feature_name: "CompressionDictionaryTransportV2",
origin_trial_allows_third_party: true,
public: true,
+ status: "experimental",
@@ -12,20 +12,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/chrome_content_browser_client.cc | 3 +++
.../privacy_sandbox_settings_delegate.cc | 1 +
.../privacy_sandbox/privacy_sandbox_prompt.cc | 1 +
.../history/core/browser/history_backend.cc | 13 +---------
.../history/core/browser/history_backend.cc | 13 +------------
.../privacy_sandbox_attestations.cc | 2 --
.../privacy_sandbox_features.cc | 6 ++++-
.../privacy_sandbox_features.cc | 4 ++++
.../privacy_sandbox/privacy_sandbox_prefs.cc | 4 ++--
.../privacy_sandbox_settings_impl.cc | 24 +++++++++++++------
.../privacy_sandbox_settings_impl.cc | 19 ++++++++++++++-----
.../Disable-FLoC-and-privacy-sandbox.inc | 1 +
third_party/blink/common/features.cc | 1 +
10 files changed, 32 insertions(+), 24 deletions(-)
10 files changed, 28 insertions(+), 21 deletions(-)
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-FLoC-and-privacy-sandbox.inc
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -3381,6 +3381,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed(
@@ -3239,6 +3239,9 @@ bool ChromeContentBrowserClient::IsAttributionReportingOperationAllowed(
const url::Origin* destination_origin,
const url::Origin* reporting_origin,
bool* can_bypass) {
@@ -59,7 +59,7 @@ diff --git a/chrome/browser/ui/privacy_sandbox/privacy_sandbox_prompt.cc b/chrom
diff --git a/components/history/core/browser/history_backend.cc b/components/history/core/browser/history_backend.cc
--- a/components/history/core/browser/history_backend.cc
+++ b/components/history/core/browser/history_backend.cc
@@ -655,18 +655,7 @@ void HistoryBackend::SetBrowsingTopicsAllowed(ContextID context_id,
@@ -656,18 +656,7 @@ void HistoryBackend::SetBrowsingTopicsAllowed(ContextID context_id,
if (!visit_id)
return;
@@ -82,7 +82,7 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his
diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc b/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc
--- a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc
+++ b/components/privacy_sandbox/privacy_sandbox_attestations/privacy_sandbox_attestations.cc
@@ -405,8 +405,6 @@ void PrivacySandboxAttestations::OnAttestationsParsed(
@@ -478,8 +478,6 @@ void PrivacySandboxAttestations::OnAttestationsParsed(
if (attestations_map.has_value() &&
(!file_version_.IsValid() || file_version_.CompareTo(version) < 0)) {
// Parsing succeeded and the attestations file has newer version.
@@ -94,15 +94,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_san
diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc
--- a/components/privacy_sandbox/privacy_sandbox_features.cc
+++ b/components/privacy_sandbox/privacy_sandbox_features.cc
@@ -145,11 +145,15 @@ BASE_FEATURE(kAttributionDebugReportingCookieDeprecationTesting,
BASE_FEATURE(kPrivateAggregationDebugReportingCookieDeprecationTesting,
"PrivateAggregationDebugReportingCookieDeprecationTesting",
base::FEATURE_DISABLED_BY_DEFAULT);
-
+
#if BUILDFLAG(IS_ANDROID)
BASE_FEATURE(kTrackingProtectionNoticeRequestTracking,
"TrackingProtectionNoticeRequestTracking",
@@ -167,4 +167,8 @@ BASE_FEATURE(kTrackingProtectionNoticeRequestTracking,
base::FEATURE_DISABLED_BY_DEFAULT);
#endif // BUILDFLAG(IS_ANDROID)
@@ -121,21 +113,21 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/pr
- prefs::kPrivacySandboxApisEnabled, true,
+ prefs::kPrivacySandboxApisEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(prefs::kPrivacySandboxApisEnabledV2, false);
registry->RegisterBooleanPref(prefs::kPrivacySandboxM1ConsentDecisionMade,
@@ -28,7 +28,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
false);
@@ -27,7 +27,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kPrivacySandboxM1FledgeEnabled, false);
registry->RegisterBooleanPref(prefs::kPrivacySandboxM1AdMeasurementEnabled,
false);
- registry->RegisterBooleanPref(prefs::kPrivacySandboxM1Restricted, false);
+ registry->RegisterBooleanPref(prefs::kPrivacySandboxM1Restricted, true);
registry->RegisterBooleanPref(prefs::kPrivacySandboxManuallyControlledV2,
false);
registry->RegisterTimePref(prefs::kPrivacySandboxTopicsDataAccessibleSince,
base::Time());
diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/components/privacy_sandbox/privacy_sandbox_settings_impl.cc
--- a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc
+++ b/components/privacy_sandbox/privacy_sandbox_settings_impl.cc
@@ -121,7 +121,7 @@ std::set<browsing_topics::Topic> GetTopicsSetFromString(
@@ -123,7 +123,7 @@ std::set<browsing_topics::Topic> GetTopicsSetFromString(
// static
bool PrivacySandboxSettingsImpl::IsAllowed(Status status) {
@@ -144,7 +136,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
}
// static
@@ -230,7 +230,8 @@ PrivacySandboxSettingsImpl::GetFinchPrioritizedTopics() {
@@ -232,7 +232,8 @@ PrivacySandboxSettingsImpl::GetFinchPrioritizedTopics() {
return finch_prioritized_topics_;
}
@@ -154,7 +146,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
Status status = GetM1TopicAllowedStatus();
JoinHistogram(kIsTopicsAllowedHistogram, status);
return IsAllowed(status);
@@ -262,7 +263,8 @@ bool PrivacySandboxSettingsImpl::IsTopicsAllowedForContext(
@@ -264,7 +265,8 @@ bool PrivacySandboxSettingsImpl::IsTopicsAllowedForContext(
return IsAllowed(status);
}
@@ -164,7 +156,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
const auto& blocked_topics =
pref_service_->GetList(prefs::kPrivacySandboxBlockedTopics);
@@ -464,6 +466,7 @@ bool PrivacySandboxSettingsImpl::
@@ -466,6 +468,7 @@ bool PrivacySandboxSettingsImpl::
void PrivacySandboxSettingsImpl::SetFledgeJoiningAllowed(
const std::string& top_frame_etld_plus1,
bool allowed) {
@@ -172,7 +164,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
ScopedDictPrefUpdate scoped_pref_update(
pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked);
@@ -534,7 +537,8 @@ void PrivacySandboxSettingsImpl::ClearFledgeJoiningAllowedSettings(
@@ -536,7 +539,8 @@ void PrivacySandboxSettingsImpl::ClearFledgeJoiningAllowedSettings(
}
bool PrivacySandboxSettingsImpl::IsFledgeJoiningAllowed(
@@ -182,27 +174,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
ScopedDictPrefUpdate scoped_pref_update(
pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked);
auto& pref_data = scoped_pref_update.Get();
@@ -693,7 +697,8 @@ bool PrivacySandboxSettingsImpl::IsPrivateAggregationDebugModeAllowed(
delegate_->AreThirdPartyCookiesBlockedByCookieDeprecationExperiment();
}
-bool PrivacySandboxSettingsImpl::IsPrivacySandboxEnabled() const {
+bool PrivacySandboxSettingsImpl::IsPrivacySandboxEnabled() const { // disabled in Bromite
+ if ((true)) return false;
PrivacySandboxSettingsImpl::Status status = GetPrivacySandboxAllowedStatus();
if (!IsAllowed(status)) {
return false;
@@ -720,7 +725,8 @@ void PrivacySandboxSettingsImpl::SetTopicsBlockedForTesting() {
pref_service_->SetBoolean(prefs::kPrivacySandboxM1TopicsEnabled, false);
}
-void PrivacySandboxSettingsImpl::SetPrivacySandboxEnabled(bool enabled) {
+void PrivacySandboxSettingsImpl::SetPrivacySandboxEnabled(bool enabled) { // disabled in Bromite
+ enabled = false;
pref_service_->SetBoolean(prefs::kPrivacySandboxApisEnabledV2, enabled);
}
@@ -767,7 +773,10 @@ void PrivacySandboxSettingsImpl::SetDelegateForTesting(
@@ -782,7 +786,10 @@ void PrivacySandboxSettingsImpl::SetDelegateForTesting(
delegate_ = std::move(delegate);
}
@@ -214,7 +186,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
pref_service_->SetTime(prefs::kPrivacySandboxTopicsDataAccessibleSince,
base::Time::Now());
@@ -780,6 +789,7 @@ PrivacySandboxSettingsImpl::Status
@@ -795,6 +802,7 @@ PrivacySandboxSettingsImpl::Status
PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus(
const url::Origin& top_frame_origin,
const GURL& url) const {
@@ -222,6 +194,14 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo
// Relying on |host_content_settings_map_| instead of |cookie_settings_|
// allows to query whether the site associated with the |url| is allowed to
// access Site data (aka ContentSettingsType::COOKIES) without considering any
@@ -809,6 +817,7 @@ PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus(
PrivacySandboxSettingsImpl::Status
PrivacySandboxSettingsImpl::GetPrivacySandboxAllowedStatus(
bool should_ignore_restriction /*=false*/) const {
+ if ((true)) return Status::kRestricted;
if (delegate_->IsIncognitoProfile()) {
return Status::kIncognitoProfile;
}
diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-FLoC-and-privacy-sandbox.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-FLoC-and-privacy-sandbox.inc
new file mode 100644
--- /dev/null
@@ -231,7 +211,7 @@ new file mode 100644
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -2239,6 +2239,7 @@ bool IsAllowPageWithIDBConnectionAndTransactionInBFCacheEnabled() {
@@ -2462,6 +2462,7 @@ bool IsAllowPageWithIDBConnectionAndTransactionInBFCacheEnabled() {
}
bool IsAllowURNsInIframeEnabled() {
+1 -1
View File
@@ -18,7 +18,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1591,7 +1591,7 @@
@@ -1570,7 +1570,7 @@
{
name: "FedCm",
public: true,
@@ -4,21 +4,66 @@ Subject: Disable FirstPartySets and StorageAccessAPI
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../first_party_sets/first_party_sets_navigation_throttle.cc | 2 +-
.../first_party_sets/first_party_sets_policy_service.cc | 3 ++-
.../browser/privacy_sandbox/privacy_sandbox_service_impl.cc | 2 +-
components/privacy_sandbox/privacy_sandbox_prefs.cc | 2 +-
components/privacy_sandbox/tracking_protection_prefs.cc | 4 ++--
.../Disable-FirstPartySets-and-StorageAccessAPI.inc | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc
5 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc b/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc
--- a/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc
+++ b/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc
@@ -77,7 +77,7 @@ FirstPartySetsNavigationThrottle::MaybeCreateNavigationThrottle(
// The `service` might be null for some irregular profiles.
// TODO(https://crbug.com/1348572): regular profiles and guest sessions
// aren't mutually exclusive on ChromeOS.
- if (!profile->IsRegularProfile() || profile->IsGuestSession())
+ if (((true)) || !profile->IsRegularProfile() || profile->IsGuestSession())
return nullptr;
FirstPartySetsPolicyService* service =
diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
--- a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
+++ b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc
@@ -58,6 +58,7 @@ const base::Value::Dict* GetOverridesPolicyForProfile(
}
ServiceState GetServiceState(Profile* profile, bool pref_enabled) {
+ if ((true)) return ServiceState::kPermanentlyDisabled;
if (profile->IsSystemProfile() || profile->IsGuestSession() ||
profile->IsOffTheRecord()) {
return ServiceState::kPermanentlyDisabled;
@@ -107,7 +108,7 @@ void FirstPartySetsPolicyService::Init() {
profile, profile->GetPrefs() &&
profile->GetPrefs()->GetBoolean(
prefs::kPrivacySandboxRelatedWebsiteSetsEnabled));
-
+ service_state_ = ServiceState::kPermanentlyDisabled;
if (service_state_ == ServiceState::kPermanentlyDisabled) {
OnReadyToNotifyDelegates(net::FirstPartySetsContextConfig(),
net::FirstPartySetsCacheFilter());
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc
--- a/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc
+++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc
@@ -418,7 +418,7 @@ bool PrivacySandboxServiceImpl::IsRestrictedNoticeEnabled() {
void PrivacySandboxServiceImpl::SetFirstPartySetsDataAccessEnabled(
bool enabled) {
pref_service_->SetBoolean(prefs::kPrivacySandboxRelatedWebsiteSetsEnabled,
- enabled);
+ false);
}
bool PrivacySandboxServiceImpl::IsFirstPartySetsDataAccessEnabled() const {
diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/privacy_sandbox/privacy_sandbox_prefs.cc
--- a/components/privacy_sandbox/privacy_sandbox_prefs.cc
+++ b/components/privacy_sandbox/privacy_sandbox_prefs.cc
@@ -55,7 +55,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -51,7 +51,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kPrivacySandboxFirstPartySetsDataAccessAllowedInitialized, false);
registry->RegisterBooleanPref(
- prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, true,
+ prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, false,
+ prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, false, // must be disabled
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(prefs::kPrivacySandboxTopicsConsentGiven,
@@ -39,12 +84,6 @@ diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/component
- registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false);
+ registry->RegisterBooleanPref(prefs::kTrackingProtection3pcdEnabled, false); // with true enables FPS
registry->RegisterBooleanPref(
prefs::kEnableDoNotTrack, false,
prefs::kIpProtectionEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
diff --git a/cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc b/cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kFirstPartySets);
--
+24 -20
View File
@@ -4,11 +4,11 @@ Subject: Disable GSA by default
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../org/chromium/chrome/browser/IntentHandler.java | 5 -----
.../org/chromium/chrome/browser/share/LensUtils.java | 12 +-----------
.../org/chromium/chrome/browser/gsa/GSAState.java | 11 +++++------
.../Disable-GSA-by-default.inc | 2 ++
4 files changed, 8 insertions(+), 22 deletions(-)
.../org/chromium/chrome/browser/IntentHandler.java | 5 -----
.../chromium/chrome/browser/share/LensUtils.java | 14 ++------------
.../org/chromium/chrome/browser/gsa/GSAState.java | 11 +++++------
.../Disable-GSA-by-default.inc | 1 +
4 files changed, 8 insertions(+), 23 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
@@ -21,8 +21,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j
-import org.chromium.chrome.browser.gsa.GSAState;
import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteControllerProvider;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.renderer_host.ChromeNavigationUIData;
@@ -239,8 +238,6 @@ public class IntentHandler {
import org.chromium.chrome.browser.profiles.ProfileManager;
@@ -244,8 +243,6 @@ public class IntentHandler {
private static int sReferrerId;
private static String sPendingIncognitoUrl;
@@ -31,7 +31,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j
private static final String PACKAGE_GMAIL = "com.google.android.gm";
private static final String PACKAGE_PLUS = "com.google.android.apps.plus";
private static final String PACKAGE_HANGOUTS = "com.google.android.talk";
@@ -456,8 +453,6 @@ public class IntentHandler {
@@ -461,8 +458,6 @@ public class IntentHandler {
return ExternalAppId.LINE;
} else if (packageName.equals(PACKAGE_WHATSAPP)) {
return ExternalAppId.WHATSAPP;
@@ -43,7 +43,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils.java
@@ -11,7 +11,6 @@ import android.text.TextUtils;
@@ -10,7 +10,6 @@ import android.os.Build;
import org.chromium.base.ResettersForTesting;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
@@ -51,7 +51,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils
import org.chromium.components.externalauth.ExternalAuthUtils;
/** This class provides utilities for intenting into Google Lens. */
@@ -55,12 +54,7 @@ public class LensUtils {
@@ -54,12 +53,7 @@ public class LensUtils {
if (context == null) {
return "";
}
@@ -64,7 +64,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils
}
}
@@ -112,11 +106,7 @@ public class LensUtils {
@@ -98,15 +92,11 @@ public class LensUtils {
* @return Whether the package is valid.
*/
public static boolean isValidAgsaPackage(final ExternalAuthUtils externalAuthUtils) {
@@ -77,10 +77,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils
}
public static boolean isGoogleLensFeatureEnabled(boolean isIncognito) {
- return !isIncognito;
+ return false;
}
public static boolean shouldLogUkmForLensContextMenuFeatures() {
diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java
--- a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java
+++ b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java
@@ -32,8 +32,6 @@ import java.util.regex.Pattern;
@@ -31,8 +31,6 @@ import java.util.regex.Pattern;
/** A class responsible for representing the current state of Chrome's integration with GSA. */
public class GSAState {
@@ -89,7 +94,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAStat
/** Used to observe state changes in the class. */
public interface Observer {
/** Called when the GSA account name is set. */
@@ -71,7 +69,7 @@ public class GSAState {
@@ -70,7 +68,7 @@ public class GSAState {
private final ObserverList<Observer> mObserverList = new ObserverList<>();
/** Caches the result of a computation on whether GSA is available. */
@@ -98,7 +103,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAStat
/**
* The Google account email address being used by GSA according to the latest update we have
@@ -153,7 +151,7 @@ public class GSAState {
@@ -152,7 +150,7 @@ public class GSAState {
/** Returns whether the GSA package is installed on device. */
public boolean isGsaInstalled() {
@@ -107,15 +112,15 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAStat
}
/**
@@ -176,6 +174,7 @@ public class GSAState {
@@ -175,6 +173,7 @@ public class GSAState {
*/
public boolean isAgsaVersionBelowMinimum(
String installedVersionName, String minimumVersionName) {
+ if ((true)) return true;
+ if ((true)) return false;
if (TextUtils.isEmpty(installedVersionName) || TextUtils.isEmpty(minimumVersionName)) {
return true;
}
@@ -207,7 +206,7 @@ public class GSAState {
@@ -206,7 +205,7 @@ public class GSAState {
* @return Whether the given intent can be handled by Agsa.
*/
public boolean canAgsaHandleIntent(@NonNull Intent intent) {
@@ -124,7 +129,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAStat
ComponentName activity =
intent.resolveActivity(ContextUtils.getApplicationContext().getPackageManager());
@@ -221,7 +220,7 @@ public class GSAState {
@@ -220,7 +219,7 @@ public class GSAState {
* @return The version name of the Agsa package or null if it can't be found.
*/
public @Nullable String getAgsaVersionName() {
@@ -137,7 +142,6 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/D
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc
@@ -0,0 +1,2 @@
+SET_CROMITE_FEATURE_DISABLED(kContextMenuSearchWithGoogleLens);
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kExperimentsForAgsa);
--
@@ -43,7 +43,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2133,9 +2133,9 @@
@@ -2114,9 +2114,9 @@
status: {"Android": "test", "default": "stable"},
},
{
@@ -0,0 +1,22 @@
From: uazo <uazo@users.noreply.github.com>
Date: Wed, 20 Mar 2024 16:26:23 +0000
Subject: Disable Paint Preview by default
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../chrome/browser/paint_preview/StartupPaintPreviewHelper.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper.java
@@ -112,7 +112,7 @@ public class StartupPaintPreviewHelper {
* feature is not enabled this is effectively a no-op.
*/
public static void setShouldShowOnRestore(boolean shouldShowOnRestore) {
- sShouldShowOnRestore = shouldShowOnRestore;
+ sShouldShowOnRestore = false;
}
/** Attempts to display the Paint Preview representation for the given Tab. */
--
+17 -6
View File
@@ -4,15 +4,27 @@ Subject: Disable PrivacyGuide
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/ui/webui/settings/settings_ui.cc | 2 +-
.../common/chrome_features_cc/Disable-PrivacyGuide.inc | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
chrome/android/java/res/xml/privacy_preferences.xml | 1 +
chrome/browser/ui/webui/settings/settings_ui.cc | 2 +-
.../common/chrome_features_cc/Disable-PrivacyGuide.inc | 9 +++++++++
3 files changed, 11 insertions(+), 1 deletion(-)
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.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
@@ -21,6 +21,7 @@ found in the LICENSE file.
android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
<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" />
diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc
--- a/chrome/browser/ui/webui/settings/settings_ui.cc
+++ b/chrome/browser/ui/webui/settings/settings_ui.cc
@@ -351,7 +351,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
@@ -357,7 +357,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui)
#endif // !BUILDFLAG(IS_CHROMEOS_LACROS)
bool show_privacy_guide =
@@ -25,7 +37,7 @@ diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc
@@ -0,0 +1,10 @@
@@ -0,0 +1,9 @@
+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuide3);
+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreload);
+
@@ -33,7 +45,6 @@ new file mode 100644
+
+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid3);
+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreloadAndroid);
+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid);
+
+#endif
--
+33 -18
View File
@@ -4,29 +4,55 @@ Subject: Disable Real Box
Real-box is search box in ntp
---
chrome/browser/resources/new_tab_page/app.html | 5 -----
components/search/ntp_features.cc | 10 +++++-----
2 files changed, 5 insertions(+), 10 deletions(-)
chrome/browser/prefs/browser_prefs.cc | 2 +-
chrome/browser/resources/new_tab_page/app.html | 5 -----
chrome/browser/ui/webui/realbox/realbox_handler.cc | 2 +-
components/search/ntp_features.cc | 6 +++---
4 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -2072,7 +2072,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
registry->RegisterBooleanPref(
prefs::kLensRegionSearchEnabled, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
- registry->RegisterBooleanPref(prefs::kLensDesktopNTPSearchEnabled, true);
+ registry->RegisterBooleanPref(prefs::kLensDesktopNTPSearchEnabled, false);
#endif
#if !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html
--- a/chrome/browser/resources/new_tab_page/app.html
+++ b/chrome/browser/resources/new_tab_page/app.html
@@ -403,11 +403,6 @@
@@ -504,11 +504,6 @@
hidden$="[[!logoEnabled_]]">
</ntp-logo>
<div id="realboxContainer">
- <ntp-realbox id="realbox" is-dark="[[theme_.isDark]]"
- single-colored-icons="[[theme_.themeRealboxIcons]]"
- color-source-is-baseline="[[colorSourceIsBaseline]]"
- on-open-lens-search="onOpenLensSearch_"
- on-open-voice-search="onOpenVoiceSearch_" shown$="[[realboxShown_]]">
- </ntp-realbox>
<template is="dom-if" if="[[showLensUploadDialog_]]" restamp>
<ntp-lens-upload-dialog id="lensUploadDialog"
on-close-lens-search="onCloseLensSearch_">
diff --git a/chrome/browser/ui/webui/realbox/realbox_handler.cc b/chrome/browser/ui/webui/realbox/realbox_handler.cc
--- a/chrome/browser/ui/webui/realbox/realbox_handler.cc
+++ b/chrome/browser/ui/webui/realbox/realbox_handler.cc
@@ -672,7 +672,7 @@ void RealboxHandler::SetupWebUIDataSource(content::WebUIDataSource* source,
source->AddBoolean(
"realboxLensSearch",
- profile->GetPrefs()->GetBoolean(prefs::kLensDesktopNTPSearchEnabled));
+ false);
source->AddString("realboxLensVariations", GetBase64UrlVariations(profile));
source->AddBoolean(
"realboxLensDirectUpload",
diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc
--- a/components/search/ntp_features.cc
+++ b/components/search/ntp_features.cc
@@ -166,7 +166,7 @@ BASE_FEATURE(kNtpHandleMostVisitedNavigationExplicitly,
@@ -171,7 +171,7 @@ BASE_FEATURE(kNtpHandleMostVisitedNavigationExplicitly,
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, logo will be shown.
@@ -35,7 +61,7 @@ diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.
// If enabled, logo will fill up less vertical space.
BASE_FEATURE(kNtpReducedLogoSpace,
@@ -243,8 +243,8 @@ BASE_FEATURE(kNtpMostVisitedReflowOnOverflow,
@@ -248,8 +248,8 @@ BASE_FEATURE(kNtpMostVisitedReflowOnOverflow,
// If enabled, OneGoogleBar will be shown.
BASE_FEATURE(kNtpOneGoogleBar,
@@ -46,15 +72,4 @@ diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.
// If enabled, Google Photos module will be shown.
BASE_FEATURE(kNtpPhotosModule,
@@ -279,8 +279,8 @@ BASE_FEATURE(kNtpFeedModule,
// If enabled, Google Lens image search will be shown in the NTP Realbox.
BASE_FEATURE(kNtpRealboxLensSearch,
- "NtpRealboxLensSearch",
- base::FEATURE_ENABLED_BY_DEFAULT);
+ "NtpRealboxLensSearch", // disabled
+ base::FEATURE_DISABLED_BY_DEFAULT); // by default
// If enabled, Google Lens image search will call Lens v3 direct upload
// endpoint instead of uploading to Scotty.
--
@@ -1,17 +0,0 @@
From: uazo <uazo@users.noreply.github.com>
Date: Tue, 18 Apr 2023 14:17:19 +0000
Subject: Disable SHA1 Server Signature
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../net/base/features_cc/Disable-SHA1-Server-Signature.inc | 1 +
1 file changed, 1 insertion(+)
create mode 100644 cromite_flags/net/base/features_cc/Disable-SHA1-Server-Signature.inc
diff --git a/cromite_flags/net/base/features_cc/Disable-SHA1-Server-Signature.inc b/cromite_flags/net/base/features_cc/Disable-SHA1-Server-Signature.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/net/base/features_cc/Disable-SHA1-Server-Signature.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kSHA1ServerSignature);
--
@@ -75,7 +75,7 @@ diff --git a/components/embedder_support/content_settings_utils.cc b/components/
return content::AllowServiceWorkerResult::FromPolicy(!allow_javascript,
!allow_cookies);
@@ -142,17 +124,16 @@ bool AllowSharedWorker(
@@ -143,17 +125,16 @@ bool AllowSharedWorker(
worker_url, site_for_cookies, top_frame_origin,
cookie_settings->SettingOverridesForStorage(), &cookie_settings_metadata);
@@ -14,15 +14,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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
@@ -631,7 +631,7 @@ public abstract class ChromeFeatureList {
new CachedFlag(SHOW_NTP_AT_STARTUP_ANDROID, false);
public static final CachedFlag sSpareTab = new CachedFlag(SPARE_TAB, false);
@@ -634,7 +634,7 @@ public abstract class ChromeFeatureList {
public static final CachedFlag sSmallerTabStripTitleLimit =
newCachedFlag(SMALLER_TAB_STRIP_TITLE_LIMIT, false);
public static final CachedFlag sStartSurfaceAndroid =
- new CachedFlag(START_SURFACE_ANDROID, true);
+ new CachedFlag(START_SURFACE_ANDROID, false);
public static final CachedFlag sStartSurfaceDisabledFeedImprovement =
new CachedFlag(START_SURFACE_DISABLED_FEED_IMPROVEMENT, false);
- newCachedFlag(START_SURFACE_ANDROID, true);
+ newCachedFlag(START_SURFACE_ANDROID, false);
public static final CachedFlag sStartSurfaceOnTablet =
newCachedFlag(START_SURFACE_ON_TABLET, true);
public static final CachedFlag sStartSurfaceRefactor =
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-StartSurface-feature.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-StartSurface-feature.inc
new file mode 100644
--- /dev/null
+15 -15
View File
@@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../features_cc/Disable-TLS-resumption.inc | 7 +++
.../features_h/Disable-TLS-resumption.inc | 5 ++
net/http/http_network_session.cc | 1 +
net/quic/quic_stream_factory.cc | 35 ++++++++++-
net/quic/quic_session_pool.cc | 35 ++++++++++-
net/socket/ssl_client_socket_impl.cc | 59 +++++++++++++++++++
net/socket/ssl_client_socket_impl.h | 2 +
7 files changed, 120 insertions(+), 1 deletion(-)
@@ -87,18 +87,18 @@ diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc
http_server_properties_->SetMaxServerConfigsStoredInProperties(
context.quic_context->params()->max_server_configs_stored_in_properties);
http_server_properties_->SetBrokenAlternativeServicesDelayParams(
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc
--- a/net/quic/quic_session_pool.cc
+++ b/net/quic/quic_session_pool.cc
@@ -69,6 +69,7 @@
#include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h"
#include "net/third_party/quiche/src/quiche/quic/platform/api/quic_flags.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "third_party/boringssl/src/include/openssl/aead.h"
+#include "third_party/boringssl/src/include/openssl/ssl.h"
#include "url/gurl.h"
#include "url/scheme_host_port.h"
#include "url/url_constants.h"
@@ -194,6 +195,38 @@ std::set<std::string> HostsFromOrigins(std::set<HostPortPair> origins) {
@@ -156,6 +157,38 @@ std::set<std::string> HostsFromOrigins(std::set<HostPortPair> origins) {
} // namespace
@@ -134,11 +134,11 @@ diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
+ }
+};
+
// Refcounted class that owns quic::QuicCryptoClientConfig and tracks how many
// consumers are using it currently. When the last reference is freed, the
// QuicCryptoClientConfigHandle informs the owning QuicStreamFactory, moves it
@@ -2368,7 +2401,7 @@ QuicStreamFactory::CreateCryptoConfigHandle(
sct_auditing_delegate_,
QuicSessionRequest::QuicSessionRequest(QuicSessionPool* pool) : pool_(pool) {}
QuicSessionRequest::~QuicSessionRequest() {
@@ -1716,7 +1749,7 @@ QuicSessionPool::CreateCryptoConfigHandle(
cert_verifier_, transport_security_state_, sct_auditing_delegate_,
HostsFromOrigins(params_.origins_to_force_quic_on),
actual_network_anonymization_key),
- std::make_unique<quic::QuicClientSessionCache>(), this);
@@ -149,7 +149,7 @@ diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc
--- a/net/socket/ssl_client_socket_impl.cc
+++ b/net/socket/ssl_client_socket_impl.cc
@@ -387,7 +387,33 @@ SSLClientSocketImpl::SSLClientSocketImpl(
@@ -380,7 +380,33 @@ SSLClientSocketImpl::SSLClientSocketImpl(
CHECK(context_);
}
@@ -183,7 +183,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
Disconnect();
}
@@ -772,6 +798,8 @@ int SSLClientSocketImpl::Init() {
@@ -764,6 +790,8 @@ int SSLClientSocketImpl::Init() {
}
if (session)
SSL_set_session(ssl_.get(), session.get());
@@ -192,7 +192,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
}
const int kBufferSize = GetDefaultOpenSSLBufferSize();
@@ -1066,6 +1094,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) {
@@ -1062,6 +1090,35 @@ int SSLClientSocketImpl::DoHandshakeComplete(int result) {
: SSLHandshakeDetails::kTLS13Full;
}
}
@@ -228,7 +228,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket
UMA_HISTOGRAM_ENUMERATION("Net.SSLHandshakeDetails", details);
// Measure TLS connections that implement the renegotiation_info extension.
@@ -1718,6 +1775,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const {
@@ -1699,6 +1756,8 @@ bool SSLClientSocketImpl::IsRenegotiationAllowed() const {
}
bool SSLClientSocketImpl::IsCachingEnabled() const {
+16 -3
View File
@@ -4,14 +4,27 @@ Subject: Disable WebGPU
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
content/child/runtime_features.cc | 2 ++
gpu/config/gpu_finch_features.cc | 2 +-
third_party/blink/renderer/modules/webgpu/gpu.cc | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -586,6 +586,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
WebRuntimeFeatures::EnableV8IdleTasks(true);
}
+ WebRuntimeFeatures::EnableFeatureFromString("WebGpu", false);
+
WebRuntimeFeatures::EnableBackForwardCache(
content::IsBackForwardCacheEnabled());
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
@@ -300,7 +300,7 @@ BASE_FEATURE(kForceGpuMainThreadToNormalPriorityDrDc,
@@ -266,7 +266,7 @@ BASE_FEATURE(kEnableDrDc,
// enabled by default on supported platforms.
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || \
BUILDFLAG(IS_ANDROID)
@@ -23,7 +36,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
diff --git a/third_party/blink/renderer/modules/webgpu/gpu.cc b/third_party/blink/renderer/modules/webgpu/gpu.cc
--- a/third_party/blink/renderer/modules/webgpu/gpu.cc
+++ b/third_party/blink/renderer/modules/webgpu/gpu.cc
@@ -369,6 +369,7 @@ ScriptPromise GPU::requestAdapter(ScriptState* script_state,
@@ -376,6 +376,7 @@ ScriptPromise GPU::requestAdapter(ScriptState* script_state,
"WebGPU is experimental on this platform. See "
"https://github.com/gpuweb/gpuweb/wiki/"
"Implementation-Status#implementation-status"));
+127 -71
View File
@@ -9,28 +9,30 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../preloading_model_keyed_service.cc | 1 +
.../preloading_model_keyed_service_factory.cc | 4 +--
.../chrome_hints_manager.cc | 1 +
.../model_validator_keyed_service.cc | 7 +++++-
.../optimization_guide_keyed_service.cc | 1 -
.../browser/predictors/loading_predictor.cc | 4 +--
.../predictors/loading_predictor_config.cc | 4 +--
.../browser/predictors/predictors_features.cc | 11 ++-----
.../browser/predictors/predictors_features.cc | 11 ++------
chrome/browser/ui/tab_helpers.cc | 1 -
.../ui/webui/omnibox/omnibox_page_handler.cc | 14 +++++++++
.../ui/webui/omnibox/omnibox_page_handler.cc | 14 +++++++++++
.../browser/autofill_optimization_guide.cc | 5 ++--
.../metrics/shadow_prediction_metrics.cc | 2 +-
.../browser/autocomplete_controller.cc | 2 ++
.../optimization_guide/core/hints_fetcher.cc | 1 +
.../optimization_guide/core/hints_manager.cc | 5 ++++
.../core/optimization_guide_features.cc | 29 ++++++++++---------
.../core/prediction_model_download_manager.cc | 6 ++--
.../core/optimization_guide_features.cc | 25 +++++++++++--------
.../core/prediction_model_download_manager.cc | 6 +++--
.../core/prediction_model_fetcher_impl.cc | 1 +
components/optimization_guide/features.gni | 3 +-
components/search/ntp_features.cc | 3 ++
components/optimization_guide/features.gni | 3 +--
.../phishing_classifier.cc | 2 +-
components/search/ntp_features.cc | 3 +++
.../Disable-all-predictors-code.inc | 4 +++
.../Disable-all-predictors-code.inc | 7 +++++
.../Disable-all-predictors-code.inc | 7 ++++++
.../Disable-all-predictors-code.inc | 4 +++
.../Disable-all-predictors-code.inc | 2 ++
.../document_speculation_rules.cc | 1 +
.../platform/runtime_enabled_features.json5 | 2 +-
25 files changed, 77 insertions(+), 41 deletions(-)
27 files changed, 83 insertions(+), 38 deletions(-)
create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc
create mode 100644 cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc
@@ -39,7 +41,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -840,8 +840,6 @@ static_library("browser") {
@@ -851,8 +851,6 @@ static_library("browser") {
"navigation_predictor/navigation_predictor_keyed_service_factory.h",
"navigation_predictor/navigation_predictor_metrics_document_data.cc",
"navigation_predictor/navigation_predictor_metrics_document_data.h",
@@ -75,17 +77,75 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/
--- a/chrome/browser/optimization_guide/chrome_hints_manager.cc
+++ b/chrome/browser/optimization_guide/chrome_hints_manager.cc
@@ -27,6 +27,7 @@ bool IsAllowedToFetchForNavigationPrediction(
const absl::optional<NavigationPredictorKeyedService::Prediction>
const std::optional<NavigationPredictorKeyedService::Prediction>
prediction) {
DCHECK(prediction);
+ if ((true)) return false;
if (prediction->prediction_source() !=
NavigationPredictorKeyedService::PredictionSource::
diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc b/chrome/browser/optimization_guide/model_validator_keyed_service.cc
--- a/chrome/browser/optimization_guide/model_validator_keyed_service.cc
+++ b/chrome/browser/optimization_guide/model_validator_keyed_service.cc
@@ -8,6 +8,7 @@
#include "base/files/file_util.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/task_traits.h"
+#include "base/task/thread_pool.h"
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/identity_manager_factory.h"
@@ -55,13 +56,13 @@ namespace optimization_guide {
ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile)
: profile_(profile) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
DCHECK(ShouldStartModelValidator());
auto* opt_guide_service =
OptimizationGuideKeyedServiceFactory::GetForProfile(profile);
if (!opt_guide_service) {
return;
}
-#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
if (switches::ShouldValidateModel()) {
// Create the validator object which will get destroyed when the model
// load is complete.
@@ -122,6 +123,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged(
void ModelValidatorKeyedService::StartModelExecutionValidation() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
auto* opt_guide_service =
OptimizationGuideKeyedServiceFactory::GetForProfile(profile_);
if (!opt_guide_service) {
@@ -139,6 +141,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() {
proto::ModelExecutionFeature::MODEL_EXECUTION_FEATURE_TEST, request,
base::BindOnce(&ModelValidatorKeyedService::OnModelExecuteResponse,
weak_ptr_factory_.GetWeakPtr()));
+#endif
}
void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation(
@@ -156,6 +159,7 @@ void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation(
void ModelValidatorKeyedService::PerformOnDeviceModelExecutionValidation(
std::unique_ptr<optimization_guide::proto::ComposeRequest> request) {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
auto* opt_guide_service =
OptimizationGuideKeyedServiceFactory::GetForProfile(profile_);
@@ -168,6 +172,7 @@ void ModelValidatorKeyedService::PerformOnDeviceModelExecutionValidation(
*request, base::RepeatingCallback(base::BindRepeating(
&ModelValidatorKeyedService::OnDeviceModelExecuteResponse,
weak_ptr_factory_.GetWeakPtr())));
+#endif
}
void ModelValidatorKeyedService::OnDeviceModelExecuteResponse(
diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc
--- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc
+++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc
@@ -520,7 +520,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel(
@@ -528,7 +528,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel(
void OptimizationGuideKeyedService::RegisterOptimizationTypes(
const std::vector<optimization_guide::proto::OptimizationType>&
optimization_types) {
@@ -93,27 +153,6 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.
}
optimization_guide::OptimizationGuideDecision
diff --git a/chrome/browser/predictors/loading_predictor.cc b/chrome/browser/predictors/loading_predictor.cc
--- a/chrome/browser/predictors/loading_predictor.cc
+++ b/chrome/browser/predictors/loading_predictor.cc
@@ -212,7 +212,7 @@ ResourcePrefetchPredictor* LoadingPredictor::resource_prefetch_predictor() {
}
PreconnectManager* LoadingPredictor::preconnect_manager() {
- if (shutdown_) {
+ if ((true)) {
return nullptr;
}
@@ -228,7 +228,7 @@ PrefetchManager* LoadingPredictor::prefetch_manager() {
if (!base::FeatureList::IsEnabled(features::kLoadingPredictorPrefetch))
return nullptr;
- if (shutdown_) {
+ if ((true)) {
return nullptr;
}
diff --git a/chrome/browser/predictors/loading_predictor_config.cc b/chrome/browser/predictors/loading_predictor_config.cc
--- a/chrome/browser/predictors/loading_predictor_config.cc
+++ b/chrome/browser/predictors/loading_predictor_config.cc
@@ -165,7 +204,7 @@ diff --git a/chrome/browser/predictors/predictors_features.cc b/chrome/browser/p
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -404,7 +404,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
@@ -414,7 +414,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) {
}
MixedContentSettingsTabHelper::CreateForWebContents(web_contents);
NavigationMetricsRecorder::CreateForWebContents(web_contents);
@@ -186,7 +225,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br
#include "components/omnibox/browser/omnibox_field_trial.h"
#include "components/search_engines/template_url.h"
#include "content/public/browser/web_ui.h"
@@ -500,6 +502,7 @@ void OmniboxPageHandler::StartOmniboxQuery(const std::string& input_string,
@@ -498,6 +500,7 @@ void OmniboxPageHandler::StartOmniboxQuery(const std::string& input_string,
}
void OmniboxPageHandler::GetMlModelVersion(GetMlModelVersionCallback callback) {
@@ -194,7 +233,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br
if (auto* service = GetMlService()) {
auto version = service->GetModelVersion();
if (version == -1) {
@@ -512,10 +515,14 @@ void OmniboxPageHandler::GetMlModelVersion(GetMlModelVersionCallback callback) {
@@ -510,10 +513,14 @@ void OmniboxPageHandler::GetMlModelVersion(GetMlModelVersionCallback callback) {
} else {
std::move(callback).Run(-1);
}
@@ -209,7 +248,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br
if (auto* service = GetMlService()) {
AutocompleteMatch::ScoringSignals signals =
mojo::ConvertTo<AutocompleteMatch::ScoringSignals>(mojom_signals);
@@ -526,6 +533,9 @@ void OmniboxPageHandler::StartMl(mojom::SignalsPtr mojom_signals,
@@ -523,6 +530,9 @@ void OmniboxPageHandler::StartMl(mojom::SignalsPtr mojom_signals,
} else {
std::move(callback).Run(-1);
}
@@ -219,12 +258,12 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br
}
std::unique_ptr<AutocompleteController> OmniboxPageHandler::CreateController(
@@ -550,8 +560,12 @@ OmniboxPageHandler::GetAutocompleteControllerType(
@@ -547,8 +557,12 @@ OmniboxPageHandler::GetAutocompleteControllerType(
}
AutocompleteScoringModelService* OmniboxPageHandler::GetMlService() {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
return OmniboxFieldTrial::IsMlSyncBatchUrlScoringEnabled()
return OmniboxFieldTrial::IsMlUrlScoringEnabled()
? AutocompleteScoringModelServiceFactory::GetInstance()
->GetForProfile(profile_)
: nullptr;
@@ -235,7 +274,7 @@ diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/br
diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/components/autofill/core/browser/autofill_optimization_guide.cc
--- a/components/autofill/core/browser/autofill_optimization_guide.cc
+++ b/components/autofill/core/browser/autofill_optimization_guide.cc
@@ -94,6 +94,7 @@ void AutofillOptimizationGuide::OnDidParseForm(
@@ -163,6 +163,7 @@ void AutofillOptimizationGuide::OnDidParseForm(
// If we do not have any optimization types to register, do not do anything.
if (!optimization_types.empty()) {
// Register all optimization types that we need based on `form_structure`.
@@ -243,7 +282,7 @@ diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/c
decider_->RegisterOptimizationTypes(
std::vector<optimization_guide::proto::OptimizationType>(
std::move(optimization_types).extract()));
@@ -105,7 +106,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions(
@@ -214,7 +215,7 @@ bool AutofillOptimizationGuide::ShouldBlockSingleFieldSuggestions(
AutofillField* field) const {
// If the field's storable type is `IBAN_VALUE`, check whether IBAN
// suggestions should be blocked based on `url`.
@@ -252,22 +291,34 @@ diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/c
optimization_guide::OptimizationGuideDecision decision =
decider_->CanApplyOptimization(
url, optimization_guide::proto::IBAN_AUTOFILL_BLOCKED,
@@ -136,7 +137,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion(
@@ -240,7 +241,7 @@ bool AutofillOptimizationGuide::ShouldBlockFormFieldSuggestion(
const CreditCard* card) const {
if (auto optimization_type =
GetVcnMerchantOptOutOptimizationTypeForCard(card);
GetVcnMerchantOptOutOptimizationTypeForCard(*card);
- optimization_type != optimization_guide::proto::TYPE_UNSPECIFIED) {
+ decider_ && optimization_type != optimization_guide::proto::TYPE_UNSPECIFIED) {
optimization_guide::OptimizationGuideDecision decision =
decider_->CanApplyOptimization(url, optimization_type,
/*optimization_metadata=*/nullptr);
diff --git a/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc b/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc
--- a/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc
+++ b/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc
@@ -74,7 +74,7 @@ void LogRegexShadowPredictions(const AutofillField& field) {
void LogMlShadowPredictions(const AutofillField& field) {
#if !BUILDFLAG(BUILD_WITH_TFLITE_LIB)
- return;
+ if ((true)) return;
#endif
if (!base::FeatureList::IsEnabled(features::kAutofillModelPredictions)) {
return;
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc
--- a/components/omnibox/browser/autocomplete_controller.cc
+++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -46,7 +46,9 @@
#include "components/omnibox/browser/autocomplete_input.h"
@@ -47,7 +47,9 @@
#include "components/omnibox/browser/autocomplete_match_type.h"
#include "components/omnibox/browser/autocomplete_provider.h"
#include "components/omnibox/browser/autocomplete_provider_client.h"
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
#include "components/omnibox/browser/autocomplete_scoring_model_service.h"
+#endif
@@ -277,10 +328,10 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/
diff --git a/components/optimization_guide/core/hints_fetcher.cc b/components/optimization_guide/core/hints_fetcher.cc
--- a/components/optimization_guide/core/hints_fetcher.cc
+++ b/components/optimization_guide/core/hints_fetcher.cc
@@ -182,6 +182,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints(
const std::string& access_token,
@@ -183,6 +183,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints(
bool skip_cache,
HintsFetchedCallback hints_fetched_callback) {
HintsFetchedCallback hints_fetched_callback,
proto::RequestContextMetadata* request_context_metadata) {
+ if ((true)) return false;
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK_GT(optimization_types.size(), 0u);
@@ -288,7 +339,7 @@ diff --git a/components/optimization_guide/core/hints_fetcher.cc b/components/op
diff --git a/components/optimization_guide/core/hints_manager.cc b/components/optimization_guide/core/hints_manager.cc
--- a/components/optimization_guide/core/hints_manager.cc
+++ b/components/optimization_guide/core/hints_manager.cc
@@ -388,6 +388,7 @@ void HintsManager::Shutdown() {
@@ -390,6 +390,7 @@ void HintsManager::Shutdown() {
OptimizationGuideDecision
HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision(
OptimizationTypeDecision optimization_type_decision) {
@@ -296,15 +347,15 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op
switch (optimization_type_decision) {
case OptimizationTypeDecision::kAllowedByOptimizationFilter:
case OptimizationTypeDecision::kAllowedByHint:
@@ -1096,6 +1097,7 @@ void HintsManager::CanApplyOptimizationOnDemand(
proto::RequestContext request_context,
OnDemandOptimizationGuideDecisionRepeatingCallback callback) {
@@ -1110,6 +1111,7 @@ void HintsManager::CanApplyOptimizationOnDemand(
OnDemandOptimizationGuideDecisionRepeatingCallback callback,
proto::RequestContextMetadata* request_context_metadata) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ if ((true)) return; // no consent on bromite
InsertionOrderedSet<GURL> urls_to_fetch;
InsertionOrderedSet<std::string> hosts_to_fetch;
@@ -1392,6 +1394,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization(
@@ -1416,6 +1418,9 @@ OptimizationTypeDecision HintsManager::CanApplyOptimization(
bool skip_cache,
OptimizationMetadata* optimization_metadata) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -317,7 +368,7 @@ diff --git a/components/optimization_guide/core/hints_manager.cc b/components/op
diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc
--- a/components/optimization_guide/core/optimization_guide_features.cc
+++ b/components/optimization_guide/core/optimization_guide_features.cc
@@ -35,25 +35,13 @@ namespace features {
@@ -37,18 +37,10 @@ namespace features {
namespace {
constexpr auto enabled_by_default_desktop_only =
@@ -329,13 +380,6 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
constexpr auto enabled_by_default_mobile_only =
-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
- true;
-#else
false;
-#endif
constexpr auto enabled_by_default_ios_only =
-#if BUILDFLAG(IS_IOS)
- base::FEATURE_ENABLED_BY_DEFAULT;
-#else
base::FEATURE_DISABLED_BY_DEFAULT;
@@ -343,7 +387,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
// Returns whether |locale| is a supported locale for |feature|.
//
@@ -587,8 +575,7 @@ size_t MaxURLKeyedHintCacheSize() {
@@ -575,8 +567,7 @@ size_t MaxURLKeyedHintCacheSize() {
}
bool ShouldPersistHintsToDisk() {
@@ -352,9 +396,9 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
+ return false;
}
bool ShouldEnablePersonalizedMetadata(proto::RequestContext request_context) {
@@ -1007,5 +994,19 @@ bool CanLaunchOnDeviceModelService() {
base::FeatureList::IsEnabled(kLogOnDeviceMetricsOnStartup);
RequestContextSet GetAllowedContextsForPersonalizedMetadata() {
@@ -1080,5 +1071,19 @@ bool GetOnDeviceModelRetractRepeats() {
return kOnDeviceModelRetractRepeats.Get();
}
+SET_CROMITE_FEATURE_DISABLED(kOptimizationHints);
@@ -434,10 +478,22 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio
}
declare_args() {
diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc
--- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc
+++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc
@@ -234,7 +234,7 @@ void PhishingClassifier::VisualExtractionFinished(bool success) {
*bitmap_, base::BindOnce(&PhishingClassifier::OnVisualTfLiteModelDone,
weak_factory_.GetWeakPtr(), std::move(verdict)));
#else
- RunCallback(*verdict);
+ //RunCallback(*verdict);
#endif
}
diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc
--- a/components/search/ntp_features.cc
+++ b/components/search/ntp_features.cc
@@ -501,4 +501,7 @@ std::vector<std::string> GetModulesOrder() {
@@ -544,4 +544,7 @@ std::vector<std::string> GetModulesOrder() {
base::SplitResult::SPLIT_WANT_NONEMPTY);
}
@@ -485,7 +541,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc
--- a/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc
+++ b/third_party/blink/renderer/core/speculation_rules/document_speculation_rules.cc
@@ -584,6 +584,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() {
@@ -599,6 +599,7 @@ void DocumentSpeculationRules::UpdateSpeculationCandidates() {
return;
}
@@ -496,9 +552,9 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat
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
@@ -2969,7 +2969,7 @@
{
// https://crbug.com/1126305
@@ -2961,7 +2961,7 @@
//
// It also has some feature params defined throughout the codebase.
name: "Prerender2",
- status: "stable",
+ status: "test",
@@ -17,7 +17,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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
@@ -1143,6 +1143,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
@@ -1243,6 +1243,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
}
private boolean maybeShowPromo(Profile profile) {
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -143,7 +143,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
@@ -138,7 +138,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(prefs::kEnterpriseHardwarePlatformAPIEnabled,
false);
@@ -40,18 +40,18 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
diff --git a/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc b/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc
--- a/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc
+++ b/chrome/browser/ui/views/user_education/browser_feature_promo_controller.cc
@@ -129,6 +129,7 @@ ui::ElementContext BrowserFeaturePromoController::GetAnchorContext() const {
@@ -132,6 +132,7 @@ ui::ElementContext BrowserFeaturePromoController::GetAnchorContext() const {
bool BrowserFeaturePromoController::CanShowPromoForElement(
ui::TrackedElement* anchor_element) const {
+ if ((true)) return false;
auto* const profile = browser_view_->GetProfile();
// Verify that there are no required notices pending.
// Turn off IPH while a required privacy interstitial is visible or pending.
diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java
--- a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java
+++ b/chrome/browser/user_education/java/src/org/chromium/chrome/browser/user_education/UserEducationHelper.java
@@ -73,6 +73,7 @@ public class UserEducationHelper {
@@ -74,6 +74,7 @@ public class UserEducationHelper {
}
private void showIPH(Tracker tracker, IPHCommand iphCommand) {
@@ -62,7 +62,7 @@ diff --git a/chrome/browser/user_education/java/src/org/chromium/chrome/browser/
diff --git a/components/user_education/common/feature_promo_controller.cc b/components/user_education/common/feature_promo_controller.cc
--- a/components/user_education/common/feature_promo_controller.cc
+++ b/components/user_education/common/feature_promo_controller.cc
@@ -433,6 +433,7 @@ FeaturePromoResult FeaturePromoControllerCommon::CanShowPromoCommon(
@@ -589,6 +589,7 @@ FeaturePromoResult FeaturePromoControllerCommon::CanShowPromoCommon(
const FeaturePromoSpecification** spec_out,
std::unique_ptr<FeaturePromoLifecycle>* lifecycle_out,
ui::TrackedElement** anchor_element_out) const {
@@ -11,7 +11,8 @@ being sent and being saved to disk, although it is currently in uncalled code.
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
---
.../browser/aw_content_browser_client.cc | 1 +
.../browser/aw_content_browser_client.cc | 3 +
.../chromium/android_webview/AwSettings.java | 4 +-
chrome/android/java/AndroidManifest.xml | 4 -
components/attribution_reporting/features.cc | 2 +
.../origin_trials/features.cc | 2 +
@@ -25,17 +26,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../attribution_storage_sql.cc | 8 +-
content/browser/storage_partition_impl.cc | 9 -
content/public/android/BUILD.gn | 2 -
.../browser/AttributionOsLevelManager.java | 296 +-----------------
.../browser/AttributionOsLevelManager.java | 312 +-----------------
.../public/browser/content_browser_client.cc | 7 +-
.../public/browser/navigation_controller.cc | 1 -
.../Disable-conversion-measurement-api.inc | 1 +
.../Disable-conversion-measurement-api.inc | 1 +
.../Disable-conversion-measurement-api.inc | 1 +
.../Disable-conversion-measurement-api.inc | 9 +
.../attribution/request_headers_internal.cc | 1 +
.../network/public/cpp/attribution_utils.cc | 2 +
third_party/blink/renderer/core/page/page.cc | 2 +-
ui/events/android/motion_event_android.cc | 6 +-
24 files changed, 64 insertions(+), 323 deletions(-)
26 files changed, 72 insertions(+), 338 deletions(-)
create mode 100644 cromite_flags/content/common/features_cc/Disable-conversion-measurement-api.inc
create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-conversion-measurement-api.inc
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
@@ -43,7 +46,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -1216,6 +1216,7 @@ network::mojom::AttributionSupport
@@ -1163,6 +1163,7 @@ network::mojom::AttributionSupport
AwContentBrowserClient::GetAttributionSupport(
AttributionReportingOsApiState state,
content::WebContents* web_contents) {
@@ -51,6 +54,36 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv
AwSettings* aw_settings = AwSettings::FromWebContents(web_contents);
if (aw_settings && aw_settings->GetAttributionBehavior() ==
AwSettings::AttributionBehavior::DISABLED) {
@@ -1187,6 +1188,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed(
const url::Origin* destination_origin,
const url::Origin* reporting_origin,
bool* can_bypass) {
+ if ((true))
+ return false;
// Check if attribution reporting has been disabled.
// This method should not be called at all if the configured behavior is
// DISABLED.
diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java
--- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java
@@ -162,7 +162,7 @@ public class AwSettings {
private boolean mSpatialNavigationEnabled; // Default depends on device features.
private boolean mEnableSupportedHardwareAcceleratedFeatures;
private int mMixedContentMode = WebSettings.MIXED_CONTENT_NEVER_ALLOW;
- private int mAttributionBehavior = AttributionBehavior.APP_SOURCE_AND_WEB_TRIGGER;
+ private int mAttributionBehavior = AttributionBehavior.DISABLED;
private boolean mCSSHexAlphaColorEnabled;
private boolean mScrollTopLeftInteropEnabled;
private boolean mWillSuppressErrorPage;
@@ -1689,7 +1689,7 @@ public class AwSettings {
public void setAttributionBehavior(@AttributionBehavior int behavior) {
synchronized (mAwSettingsLock) {
if (mAttributionBehavior != behavior) {
- mAttributionBehavior = behavior;
+ mAttributionBehavior = AttributionBehavior.DISABLED;
mEventHandler.updateWebkitPreferencesLocked();
}
}
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -62,7 +95,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30"/>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_CONNECT"/>
<!--
@@ -1166,9 +1165,6 @@ by a child template that "extends" this file.
@@ -1165,9 +1164,6 @@ by a child template that "extends" this file.
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" >
</activity>
@@ -75,7 +108,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
diff --git a/components/attribution_reporting/features.cc b/components/attribution_reporting/features.cc
--- a/components/attribution_reporting/features.cc
+++ b/components/attribution_reporting/features.cc
@@ -21,4 +21,6 @@ BASE_FEATURE(kAttributionReportingTriggerContextId,
@@ -17,4 +17,6 @@ BASE_FEATURE(kAttributionReportingTriggerContextId,
"AttributionReportingTriggerContextId",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -95,7 +128,7 @@ diff --git a/components/embedder_support/origin_trials/features.cc b/components/
diff --git a/components/renderer_context_menu/render_view_context_menu_base.cc b/components/renderer_context_menu/render_view_context_menu_base.cc
--- a/components/renderer_context_menu/render_view_context_menu_base.cc
+++ b/components/renderer_context_menu/render_view_context_menu_base.cc
@@ -510,9 +510,6 @@ RenderViewContextMenuBase::GetOpenURLParamsWithExtraHeaders(
@@ -502,9 +502,6 @@ RenderViewContextMenuBase::GetOpenURLParamsWithExtraHeaders(
open_url_params.source_site_instance = site_instance_;
@@ -147,7 +180,7 @@ diff --git a/content/browser/aggregation_service/aggregation_service_features.cc
diff --git a/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc b/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc
--- a/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc
+++ b/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc
@@ -833,6 +833,7 @@ void AttributionDataHostManagerImpl::ParseHeader(
@@ -924,6 +924,7 @@ void AttributionDataHostManagerImpl::ParseHeader(
HeaderPendingDecode pending_decode,
Registrar registrar) {
DCHECK(it != registrations_.end());
@@ -158,18 +191,18 @@ diff --git a/content/browser/attribution_reporting/attribution_data_host_manager
diff --git a/content/browser/attribution_reporting/attribution_host.cc b/content/browser/attribution_reporting/attribution_host.cc
--- a/content/browser/attribution_reporting/attribution_host.cc
+++ b/content/browser/attribution_reporting/attribution_host.cc
@@ -361,6 +361,7 @@ void AttributionHost::RegisterNavigationDataHost(
@@ -257,6 +257,7 @@ void AttributionHost::NotifyNavigationRegistrationData(
return;
}
+ if ((true)) return;
AttributionManager* attribution_manager =
auto* attribution_manager =
AttributionManager::FromWebContents(web_contents());
DCHECK(attribution_manager);
diff --git a/content/browser/attribution_reporting/attribution_os_level_manager.cc b/content/browser/attribution_reporting/attribution_os_level_manager.cc
--- a/content/browser/attribution_reporting/attribution_os_level_manager.cc
+++ b/content/browser/attribution_reporting/attribution_os_level_manager.cc
@@ -46,6 +46,7 @@ absl::optional<ApiState> g_state GUARDED_BY_CONTEXT(GetSequenceChecker());
@@ -47,6 +47,7 @@ std::optional<ApiState> g_state GUARDED_BY_CONTEXT(GetSequenceChecker());
// static
bool AttributionOsLevelManager::ShouldUseOsWebSource(
GlobalRenderFrameHostId render_frame_id) {
@@ -177,7 +210,7 @@ diff --git a/content/browser/attribution_reporting/attribution_os_level_manager.
return GetContentClient()
->browser()
->ShouldUseOsWebSourceAttributionReporting(
@@ -74,7 +75,7 @@ bool AttributionOsLevelManager::ShouldInitializeApiState() {
@@ -75,7 +76,7 @@ bool AttributionOsLevelManager::ShouldInitializeApiState() {
// static
ApiState AttributionOsLevelManager::GetApiState() {
DCHECK_CALLED_ON_VALID_SEQUENCE(GetSequenceChecker());
@@ -215,7 +248,7 @@ diff --git a/content/browser/attribution_reporting/attribution_report_network_se
diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/content/browser/attribution_reporting/attribution_storage_sql.cc
--- a/content/browser/attribution_reporting/attribution_storage_sql.cc
+++ b/content/browser/attribution_reporting/attribution_storage_sql.cc
@@ -398,14 +398,16 @@ base::FilePath DatabasePath(const base::FilePath& user_data_directory) {
@@ -459,14 +459,16 @@ base::FilePath DatabasePath(const base::FilePath& user_data_directory) {
return user_data_directory.Append(kDatabasePath);
}
@@ -232,13 +265,13 @@ diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/
+ : path_to_database_(user_data_directory.empty() || g_run_in_memory
+ ? base::FilePath()
+ : DatabasePath(user_data_directory)),
db_(sql::DatabaseOptions{.exclusive_locking = true,
.page_size = 4096,
.cache_size = 32}),
db_(sql::DatabaseOptions{.page_size = 4096, .cache_size = 32}),
delegate_(std::move(delegate)),
rate_limit_table_(delegate_.get()) {
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc
--- a/content/browser/storage_partition_impl.cc
+++ b/content/browser/storage_partition_impl.cc
@@ -1526,15 +1526,6 @@ void StoragePartitionImpl::Initialize(
@@ -1443,15 +1443,6 @@ void StoragePartitionImpl::Initialize(
bucket_manager_ = std::make_unique<BucketManager>(this);
@@ -257,24 +290,25 @@ diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
--- a/content/public/android/BUILD.gn
+++ b/content/public/android/BUILD.gn
@@ -180,8 +180,6 @@ android_library("content_full_java") {
@@ -181,8 +181,6 @@ android_library("content_full_java") {
"//third_party/androidx:androidx_appcompat_appcompat_resources_java",
"//third_party/androidx:androidx_collection_collection_java",
"//third_party/androidx:androidx_core_core_java",
- "//third_party/androidx:androidx_privacysandbox_ads_ads_adservices_java",
- "//third_party/androidx:androidx_privacysandbox_ads_ads_adservices_java_java",
"//third_party/androidx/local_modifications/window:window_util_java",
"//third_party/blink/public:blink_headers_java",
"//third_party/blink/public/common:common_java",
"//third_party/blink/public/mojom:android_mojo_bindings_java",
diff --git a/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java b/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java
--- a/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java
+++ b/content/public/android/java/src/org/chromium/content/browser/AttributionOsLevelManager.java
@@ -12,17 +12,6 @@ import android.os.Process;
import android.view.MotionEvent;
@@ -13,18 +13,6 @@ import android.view.MotionEvent;
import androidx.annotation.IntDef;
import androidx.annotation.OptIn;
-import androidx.privacysandbox.ads.adservices.java.measurement.MeasurementManagerFutures;
-import androidx.privacysandbox.ads.adservices.measurement.DeletionRequest;
-import androidx.privacysandbox.ads.adservices.measurement.SourceRegistrationRequest;
-import androidx.privacysandbox.ads.adservices.measurement.WebSourceParams;
-import androidx.privacysandbox.ads.adservices.measurement.WebSourceRegistrationRequest;
-import androidx.privacysandbox.ads.adservices.measurement.WebTriggerParams;
@@ -287,16 +321,18 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
import org.jni_zero.CalledByNative;
import org.jni_zero.JNINamespace;
@@ -52,6 +41,8 @@ import java.util.concurrent.TimeoutException;
@@ -54,6 +42,10 @@ import java.util.concurrent.TimeoutException;
*/
@JNINamespace("content")
public class AttributionOsLevelManager {
+ private class MeasurementManagerFutures {}
+ private class WebTriggerParams {}
+ private class WebSourceParams {}
+
private static final String TAG = "AttributionManager";
// TODO: replace with constant in android.Manifest.permission once it becomes available in U.
private static final String PERMISSION_ACCESS_ADSERVICES_ATTRIBUTION =
@@ -116,62 +107,11 @@ public class AttributionOsLevelManager {
@@ -118,63 +110,11 @@ public class AttributionOsLevelManager {
}
private static boolean supportsAttribution() {
@@ -311,7 +347,8 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
- } else if (thrown instanceof IllegalStateException) {
- // The Android API doesn't break out this error as a separate exception so we
- // are forced to inspect the message for now.
- if (thrown.getMessage().toLowerCase(Locale.US).contains("background")) {
- if (thrown.getMessage() != null
- && thrown.getMessage().toLowerCase(Locale.US).contains("background")) {
- return OperationResult.ERROR_BACKGROUND_CALLER;
- } else {
- return OperationResult.ERROR_ILLEGAL_STATE;
@@ -360,7 +397,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
}
@CalledByNative
@@ -180,22 +120,7 @@ public class AttributionOsLevelManager {
@@ -183,22 +123,7 @@ public class AttributionOsLevelManager {
}
private MeasurementManagerFutures getManager() {
@@ -384,7 +421,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
}
private void onRegistrationCompleted(
@@ -209,28 +134,6 @@ public class AttributionOsLevelManager {
@@ -212,28 +137,6 @@ public class AttributionOsLevelManager {
}
}
@@ -410,10 +447,18 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
- ContextUtils.getApplicationContext().getMainExecutor());
- }
-
@CalledByNative
private static List<WebSourceParams> createWebSourceParamsList(int size) {
if (!supportsAttribution()) {
@@ -248,7 +151,6 @@ public class AttributionOsLevelManager {
if (!supportsAttribution()) {
return;
}
- list.add(new WebSourceParams(Uri.parse(registrationUrl.getSpec()), isDebugKeyAllowed));
}
/**
* Registers a web attribution source with native, see `registerWebSourceAsync()`:
* https://developer.android.com/reference/androidx/privacysandbox/ads/adservices/java/measurement/MeasurementManagerFutures.
@@ -249,25 +152,6 @@ public class AttributionOsLevelManager {
@@ -265,32 +167,12 @@ public class AttributionOsLevelManager {
OperationResult.ERROR_VERSION_UNSUPPORTED);
return;
}
@@ -426,10 +471,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
- ListenableFuture<?> future =
- mm.registerWebSourceAsync(
- new WebSourceRegistrationRequest(
- Arrays.asList(
- new WebSourceParams(
- Uri.parse(registrationUrl.getSpec()),
- isDebugKeyAllowed)),
- sources,
- Uri.parse(topLevelOrigin.getSpec()),
- /* inputEvent= */ event,
- /* appDestination= */ null,
@@ -439,7 +481,17 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
}
/**
@@ -283,15 +167,6 @@ public class AttributionOsLevelManager {
* Registers an attribution source with native, see `registerSourceAsync()`:
* https://developer.android.com/reference/androidx/privacysandbox/ads/adservices/java/measurement/MeasurementManagerFutures.
*/
- @OptIn(
- markerClass =
- androidx.privacysandbox.ads.adservices.common.ExperimentalFeatures
- .RegisterSourceOptIn.class)
@CalledByNative
private void registerAttributionSource(
int requestId, GURL[] registrationUrls, MotionEvent event) {
@@ -301,37 +183,16 @@ public class AttributionOsLevelManager {
OperationResult.ERROR_VERSION_UNSUPPORTED);
return;
}
@@ -449,13 +501,36 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
- requestId, OperationType.REGISTER_SOURCE, OperationResult.ERROR_INTERNAL);
- return;
- }
-
- ArrayList<Uri> registrationUris = new ArrayList<Uri>(registrationUrls.length);
- for (GURL registrationUrl : registrationUrls) {
- registrationUris.add(Uri.parse(registrationUrl.getSpec()));
- }
- ListenableFuture<?> future =
- mm.registerSourceAsync(Uri.parse(registrationUrl.getSpec()), event);
- mm.registerSourceAsync(new SourceRegistrationRequest(registrationUris, event));
- addRegistrationFutureCallback(requestId, OperationType.REGISTER_SOURCE, future);
}
@CalledByNative
private static List<WebTriggerParams> createWebTriggerParamsList(int size) {
- if (!supportsAttribution()) {
- return null;
- }
- return new ArrayList<WebTriggerParams>(size);
+ return null;
}
@CalledByNative
private static void addWebTriggerParams(
List<WebTriggerParams> list, GURL registrationUrl, boolean isDebugKeyAllowed) {
- if (!supportsAttribution()) {
- return;
- }
- list.add(new WebTriggerParams(Uri.parse(registrationUrl.getSpec()), isDebugKeyAllowed));
}
/**
@@ -308,22 +183,6 @@ public class AttributionOsLevelManager {
@@ -348,18 +209,6 @@ public class AttributionOsLevelManager {
OperationResult.ERROR_VERSION_UNSUPPORTED);
return;
}
@@ -469,16 +544,12 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
- ListenableFuture<?> future =
- mm.registerWebTriggerAsync(
- new WebTriggerRegistrationRequest(
- Arrays.asList(
- new WebTriggerParams(
- Uri.parse(registrationUrl.getSpec()),
- isDebugKeyAllowed)),
- Uri.parse(topLevelOrigin.getSpec())));
- triggers, Uri.parse(topLevelOrigin.getSpec())));
- addRegistrationFutureCallback(requestId, OperationType.REGISTER_WEB_TRIGGER, future);
}
/**
@@ -339,15 +198,6 @@ public class AttributionOsLevelManager {
@@ -375,15 +224,6 @@ public class AttributionOsLevelManager {
OperationResult.ERROR_VERSION_UNSUPPORTED);
return;
}
@@ -494,7 +565,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
}
private void onDataDeletionCompleted(int requestId) {
@@ -382,96 +232,7 @@ public class AttributionOsLevelManager {
@@ -418,96 +258,7 @@ public class AttributionOsLevelManager {
onDataDeletionCompleted(requestId);
return;
}
@@ -592,7 +663,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
}
private static void onMeasurementStateReturned(int status, @OperationResult int result) {
@@ -487,6 +248,10 @@ public class AttributionOsLevelManager {
@@ -523,6 +274,10 @@ public class AttributionOsLevelManager {
private static void getMeasurementApiStatus() {
ThreadUtils.assertOnBackgroundThread();
@@ -603,7 +674,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
if (sManagerForTesting != null) {
AttributionOsLevelManagerJni.get().onMeasurementStateReturned(1);
return;
@@ -506,49 +271,6 @@ public class AttributionOsLevelManager {
@@ -542,49 +297,6 @@ public class AttributionOsLevelManager {
onMeasurementStateReturned(/* status= */ 0, OperationResult.ERROR_PERMISSION_UNGRANTED);
return;
}
@@ -656,7 +727,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Attrib
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -554,6 +554,7 @@ void ContentBrowserClient::OnAuctionComplete(
@@ -543,6 +543,7 @@ void ContentBrowserClient::OnAuctionComplete(
network::mojom::AttributionSupport ContentBrowserClient::GetAttributionSupport(
AttributionReportingOsApiState state,
content::WebContents* web_contents) {
@@ -664,7 +735,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b
switch (state) {
case AttributionReportingOsApiState::kDisabled:
return network::mojom::AttributionSupport::kWeb;
@@ -570,17 +571,17 @@ bool ContentBrowserClient::IsAttributionReportingOperationAllowed(
@@ -559,17 +560,17 @@ bool ContentBrowserClient::IsAttributionReportingOperationAllowed(
const url::Origin* destination_origin,
const url::Origin* reporting_origin,
bool* can_bypass) {
@@ -696,6 +767,12 @@ diff --git a/content/public/browser/navigation_controller.cc b/content/public/br
is_pdf(input.is_pdf) {
#if DCHECK_IS_ON()
DCHECK(input.Valid());
diff --git a/cromite_flags/content/common/features_cc/Disable-conversion-measurement-api.inc b/cromite_flags/content/common/features_cc/Disable-conversion-measurement-api.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/common/features_cc/Disable-conversion-measurement-api.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kAttributionReportingCrossAppWebOverride);
diff --git a/cromite_flags/content/public/common/content_features_cc/Disable-conversion-measurement-api.inc b/cromite_flags/content/public/common/content_features_cc/Disable-conversion-measurement-api.inc
new file mode 100644
--- /dev/null
@@ -755,7 +832,7 @@ diff --git a/services/network/public/cpp/attribution_utils.cc b/services/network
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -1303,7 +1303,7 @@ void Page::UpdateBrowsingContextGroup(
@@ -1352,7 +1352,7 @@ void Page::UpdateBrowsingContextGroup(
void Page::SetAttributionSupport(
network::mojom::AttributionSupport attribution_support) {
+16 -8
View File
@@ -3,22 +3,30 @@ Date: Sat, 9 Apr 2022 21:43:35 +0200
Subject: Disable crash reporting
---
chrome/browser/chrome_content_browser_client.cc | 1 +
.../common/content_features_cc/Disable-crash-reporting.inc | 1 +
2 files changed, 2 insertions(+)
chrome/browser/chrome_content_browser_client.cc | 9 ---------
.../content_features_cc/Disable-crash-reporting.inc | 1 +
2 files changed, 1 insertion(+), 9 deletions(-)
create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-crash-reporting.inc
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2622,6 +2622,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
@@ -2509,15 +2509,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
base::NumberToString(pid));
}
#endif
+ enable_crash_reporter = false;
if (enable_crash_reporter) {
std::string switch_value;
std::unique_ptr<metrics::ClientInfo> client_info =
- std::string switch_value;
- std::unique_ptr<metrics::ClientInfo> client_info =
- GoogleUpdateSettings::LoadMetricsClientInfo();
- if (client_info) {
- switch_value = client_info->client_id;
- }
- switch_value.push_back(',');
- switch_value.append(chrome::GetChannelName(chrome::WithExtendedStable(true)));
- command_line->AppendSwitchASCII(switches::kEnableCrashReporter, switch_value);
#endif
if (logging::DialogsAreSuppressed())
diff --git a/cromite_flags/content/public/common/content_features_cc/Disable-crash-reporting.inc b/cromite_flags/content/public/common/content_features_cc/Disable-crash-reporting.inc
new file mode 100644
--- /dev/null
@@ -64,7 +64,7 @@ diff --git a/components/feed/core/shared_prefs/pref_names.cc b/components/feed/c
diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc
--- a/components/feed/feed_feature_list.cc
+++ b/components/feed/feed_feature_list.cc
@@ -169,4 +169,6 @@ BASE_FEATURE(kRefreshFeedOnRestart,
@@ -164,4 +164,6 @@ BASE_FEATURE(kRefreshFeedOnRestart,
"RefreshFeedOnRestart",
base::FEATURE_DISABLED_BY_DEFAULT);
@@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/android_webview/common/aw_features.cc b/android_webview/common/aw_features.cc
--- a/android_webview/common/aw_features.cc
+++ b/android_webview/common/aw_features.cc
@@ -107,8 +107,8 @@ BASE_FEATURE(kWebViewMetricsFiltering,
@@ -113,8 +113,8 @@ BASE_FEATURE(kWebViewJavaJsBridgeMojo,
// Field trial feature for controlling support of Origin Trials on WebView.
BASE_FEATURE(kWebViewOriginTrials,
@@ -131,7 +131,7 @@ diff --git a/chrome/browser/metrics/chrome_browser_sampling_trials.cc b/chrome/b
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -815,7 +815,6 @@ void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams(
@@ -856,7 +856,6 @@ void SystemNetworkContextManager::AddSSLConfigToNetworkContextParams(
void SystemNetworkContextManager::ConfigureDefaultNetworkContextParams(
network::mojom::NetworkContextParams* network_context_params) {
@@ -142,7 +142,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
diff --git a/components/ukm/ukm_recorder_impl.cc b/components/ukm/ukm_recorder_impl.cc
--- a/components/ukm/ukm_recorder_impl.cc
+++ b/components/ukm/ukm_recorder_impl.cc
@@ -166,6 +166,9 @@ bool HasUnknownMetrics(const builders::DecodeMap& decode_map,
@@ -164,6 +164,9 @@ bool HasUnknownMetrics(const builders::DecodeMap& decode_map,
UkmRecorderImpl::UkmRecorderImpl()
: sampling_seed_(static_cast<uint32_t>(base::RandUint64())) {
@@ -262,7 +262,7 @@ diff --git a/components/variations/net/variations_http_headers.cc b/components/v
diff --git a/components/variations/service/variations_field_trial_creator_base.cc b/components/variations/service/variations_field_trial_creator_base.cc
--- a/components/variations/service/variations_field_trial_creator_base.cc
+++ b/components/variations/service/variations_field_trial_creator_base.cc
@@ -118,6 +118,7 @@ Study::CpuArchitecture GetCurrentCpuArchitecture() {
@@ -125,6 +125,7 @@ Study::CpuArchitecture GetCurrentCpuArchitecture() {
}
#if BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
@@ -270,8 +270,8 @@ diff --git a/components/variations/service/variations_field_trial_creator_base.c
// Determines whether the field trial testing config defined in
// testing/variations/fieldtrial_testing_config.json should be applied. If the
// "disable_fieldtrial_testing_config" GN flag is set to true, then the testing
@@ -300,11 +301,6 @@ bool VariationsFieldTrialCreatorBase::SetUpFieldTrials(
safe_seed_manager);
@@ -330,11 +331,6 @@ bool VariationsFieldTrialCreatorBase::SetUpFieldTrials(
safe_seed_manager, synthetic_trial_registry);
}
- platform_field_trials->SetUpClientSideFieldTrials(
@@ -282,15 +282,15 @@ diff --git a/components/variations/service/variations_field_trial_creator_base.c
base::FeatureList::SetInstance(std::move(feature_list));
// For testing Variations Safe Mode, maybe crash here.
@@ -581,6 +577,7 @@ bool VariationsFieldTrialCreatorBase::CreateTrialsFromSeed(
const EntropyProviders& entropy_providers,
@@ -629,6 +625,7 @@ bool VariationsFieldTrialCreatorBase::CreateTrialsFromSeed(
base::FeatureList* feature_list,
SafeSeedManagerBase* safe_seed_manager) {
SafeSeedManagerBase* safe_seed_manager,
SyntheticTrialRegistry* synthetic_trial_registry) {
+ if ((true)) return false;
// This histogram name uses "VariationsFieldTrialCreator" rather than
// "VariationsFieldTrialCreatorBase" for consistency with historical data
TRACE_EVENT0("startup", "VariationsFieldTrialCreator::CreateTrialsFromSeed");
@@ -674,6 +671,7 @@ bool VariationsFieldTrialCreatorBase::CreateTrialsFromSeed(
@@ -744,6 +741,7 @@ bool VariationsFieldTrialCreatorBase::CreateTrialsFromSeed(
void VariationsFieldTrialCreatorBase::LoadSeedFromJsonFile(
const base::FilePath& json_seed_path) {
@@ -301,7 +301,7 @@ diff --git a/components/variations/service/variations_field_trial_creator_base.c
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -221,17 +221,8 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
@@ -224,17 +224,8 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
// Variations seed fetching is only enabled in official Chrome builds, if a URL
// is specified on the command line, and for testing.
bool IsFetchingEnabled() {
@@ -321,7 +321,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
}
// Returns the already downloaded first run seed, and clear the seed from the
@@ -601,7 +592,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
@@ -612,7 +603,7 @@ bool VariationsService::DoFetchFromURL(const GURL& url, bool is_http_retry) {
// debugger or if the machine was suspended) and OnURLFetchComplete() hasn't
// had a chance to run yet from the previous request. In this case, don't
// start a new request and just let the previous one finish.
@@ -333,7 +333,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
diff --git a/content/browser/loader/url_loader_throttles.cc b/content/browser/loader/url_loader_throttles.cc
--- a/content/browser/loader/url_loader_throttles.cc
+++ b/content/browser/loader/url_loader_throttles.cc
@@ -50,8 +50,6 @@ CreateContentBrowserURLLoaderThrottles(
@@ -52,8 +52,6 @@ CreateContentBrowserURLLoaderThrottles(
// TODO(crbug.com/1094303): Consider whether we want to use the WebContents to
// determine the value for variations::Owner. Alternatively, this is the
// browser side, and we might be fine with Owner::kUnknown.
@@ -342,7 +342,7 @@ diff --git a/content/browser/loader/url_loader_throttles.cc b/content/browser/lo
ClientHintsControllerDelegate* client_hint_delegate =
browser_context->GetClientHintsControllerDelegate();
@@ -130,11 +128,6 @@ CreateContentBrowserURLLoaderThrottlesForKeepAlive(
@@ -132,11 +130,6 @@ CreateContentBrowserURLLoaderThrottlesForKeepAlive(
GetContentClient()->browser()->CreateURLLoaderThrottlesForKeepAlive(
request, browser_context, wc_getter, frame_tree_node_id);
variations::OmniboxURLLoaderThrottle::AppendThrottleIfNeeded(&throttles);
@@ -394,7 +394,7 @@ new file mode 100644
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
@@ -194,13 +194,6 @@ WebVector<int> CopyInitiatorOriginTrials(
@@ -197,13 +197,6 @@ WebVector<int> CopyInitiatorOriginTrials(
const Vector<mojom::blink::OriginTrialFeature>&
initiator_origin_trial_features) {
WebVector<int> result;
+2 -2
View File
@@ -31,7 +31,7 @@ new file mode 100644
diff --git a/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5 b/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5
--- a/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5
+++ b/third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5
@@ -275,6 +275,7 @@
@@ -280,6 +280,7 @@
{
name: "IdleDetection",
permissions_policy_name: "idle-detection",
@@ -55,7 +55,7 @@ diff --git a/third_party/blink/renderer/modules/idle/idle_detector.idl b/third_p
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
@@ -2068,6 +2068,11 @@
@@ -2054,6 +2054,11 @@
name: "HTMLUnsafeMethods",
status: "experimental",
},
@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc
--- a/components/omnibox/common/omnibox_features.cc
+++ b/components/omnibox/common/omnibox_features.cc
@@ -448,8 +448,8 @@ BASE_FEATURE(kOmniboxModernizeVisualUpdate,
@@ -434,8 +434,8 @@ BASE_FEATURE(kOmniboxModernizeVisualUpdate,
// used, on non-Android platforms this is controlled through the
// ChromeRefresh2023 flag.
BASE_FEATURE(kUpdatedConnectionSecurityIndicators,
@@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
--- a/chrome/browser/media/router/media_router_feature.cc
+++ b/chrome/browser/media/router/media_router_feature.cc
@@ -105,6 +105,7 @@ void ClearMediaRouterStoredPrefsForTesting() {
@@ -106,6 +106,7 @@ void ClearMediaRouterStoredPrefsForTesting() {
}
bool MediaRouterEnabled(content::BrowserContext* context) {
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
#if !BUILDFLAG(IS_ANDROID)
if (!base::FeatureList::IsEnabled(kMediaRouter))
return false;
@@ -146,7 +147,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -147,7 +148,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterStringPref(prefs::kMediaRouterReceiverIdHashToken, "",
PrefRegistry::PUBLIC);
registry->RegisterBooleanPref(
@@ -32,7 +32,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
registry->RegisterBooleanPref(
media_router::prefs::kMediaRouterShowCastSessionsStartedByOtherDevices,
true);
@@ -217,4 +218,7 @@ absl::optional<base::TimeDelta> GetCastMirroringPlayoutDelay() {
@@ -218,4 +219,7 @@ std::optional<base::TimeDelta> GetCastMirroringPlayoutDelay() {
#endif // !BUILDFLAG(IS_ANDROID)
@@ -43,7 +43,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -418,7 +418,7 @@ void ProfileImpl::RegisterProfilePrefs(
@@ -425,7 +425,7 @@ void ProfileImpl::RegisterProfilePrefs(
#endif
registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);
@@ -55,7 +55,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -558,6 +558,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
@@ -586,6 +586,8 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
WebRuntimeFeatures::EnableBackForwardCache(
content::IsBackForwardCacheEnabled());
@@ -79,7 +79,7 @@ diff --git a/third_party/blink/renderer/modules/remoteplayback/remote_playback.c
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -3109,14 +3109,10 @@
@@ -3086,14 +3086,10 @@
base_feature: "none",
},
{
@@ -11,7 +11,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoint_fetcher/endpoint_fetcher.cc
--- a/components/endpoint_fetcher/endpoint_fetcher.cc
+++ b/components/endpoint_fetcher/endpoint_fetcher.cc
@@ -368,7 +368,7 @@ void EndpointFetcher::OnResponseFetched(
@@ -367,7 +367,7 @@ void EndpointFetcher::OnResponseFetched(
}
} else {
std::string net_error = net::ErrorToString(net_error_code);
@@ -0,0 +1,23 @@
From: uazo <uazo@users.noreply.github.com>
Date: Tue, 27 Feb 2024 08:51:40 +0000
Subject: Disable offline autofetch flag
Disable auto fetch of content when browser is online
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../common/chrome_features_cc/Disable-offline-autofetch.inc | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-offline-autofetch.inc
diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-offline-autofetch.inc b/cromite_flags/chrome/common/chrome_features_cc/Disable-offline-autofetch.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-offline-autofetch.inc
@@ -0,0 +1,5 @@
+#if BUILDFLAG(IS_ANDROID)
+
+SET_CROMITE_FEATURE_DISABLED(kOfflineAutoFetch);
+
+#endif
--
@@ -16,7 +16,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
--- a/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
+++ b/chrome/browser/ui/toolbar/chrome_location_bar_model_delegate.cc
@@ -289,5 +289,5 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
@@ -266,5 +266,5 @@ TemplateURLService* ChromeLocationBarModelDelegate::GetTemplateURLService() {
// static
void ChromeLocationBarModelDelegate::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
@@ -52,5 +52,5 @@ new file mode 100755
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/disable-omission-of-URL-elements-in-Omnibox.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kAndroidVisibleUrlTruncation);
+SET_CROMITE_FEATURE_DISABLED(kAndroidVisibleUrlTruncationV2);
--
@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
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
@@ -2113,9 +2113,7 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
@@ -2147,9 +2147,7 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
}
PluginData* LocalFrame::GetPluginData() const {
@@ -4,21 +4,64 @@ Subject: Disable prefers-reduced-transparency media query
This feature can be used for fingerprinting as it exposes a user preference
---
.../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
third_party/blink/renderer/core/css/media_query_exp.cc | 3 ++-
.../blink/renderer/core/css/parser/media_query_parser.cc | 4 ++--
.../blink/renderer/core/preferences/preference_manager.idl | 2 +-
.../blink/renderer/platform/runtime_enabled_features.json5 | 6 +++++-
4 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/third_party/blink/renderer/core/css/media_query_exp.cc b/third_party/blink/renderer/core/css/media_query_exp.cc
--- a/third_party/blink/renderer/core/css/media_query_exp.cc
+++ b/third_party/blink/renderer/core/css/media_query_exp.cc
@@ -114,7 +114,8 @@ static inline bool FeatureWithValidIdent(const String& media_feature,
ident == CSSValueID::kLess || ident == CSSValueID::kCustom;
}
- if (media_feature == media_feature_names::kPrefersReducedMotionMediaFeature) {
+ if (RuntimeEnabledFeatures::PrefersReducedTransparencyEnabled() &&
+ media_feature == media_feature_names::kPrefersReducedMotionMediaFeature) {
return ident == CSSValueID::kNoPreference || ident == CSSValueID::kReduce;
}
diff --git a/third_party/blink/renderer/core/css/parser/media_query_parser.cc b/third_party/blink/renderer/core/css/parser/media_query_parser.cc
--- a/third_party/blink/renderer/core/css/parser/media_query_parser.cc
+++ b/third_party/blink/renderer/core/css/parser/media_query_parser.cc
@@ -79,8 +79,8 @@ class MediaQueryFeatureSet : public MediaQueryParser::FeatureSet {
RuntimeEnabledFeatures::CSSUpdateMediaFeatureEnabled()) ||
(feature == media_feature_names::kPrefersReducedDataMediaFeature &&
RuntimeEnabledFeatures::PrefersReducedDataEnabled()) ||
- feature ==
- media_feature_names::kPrefersReducedTransparencyMediaFeature ||
+ (feature == media_feature_names::kPrefersReducedTransparencyMediaFeature &&
+ RuntimeEnabledFeatures::PrefersReducedTransparencyEnabled()) ||
(feature == media_feature_names::kForcedColorsMediaFeature &&
RuntimeEnabledFeatures::ForcedColorsEnabled()) ||
(feature == media_feature_names::kNavigationControlsMediaFeature &&
diff --git a/third_party/blink/renderer/core/preferences/preference_manager.idl b/third_party/blink/renderer/core/preferences/preference_manager.idl
--- a/third_party/blink/renderer/core/preferences/preference_manager.idl
+++ b/third_party/blink/renderer/core/preferences/preference_manager.idl
@@ -12,6 +12,6 @@ interface PreferenceManager {
readonly attribute PreferenceObject colorScheme;
readonly attribute PreferenceObject contrast;
readonly attribute PreferenceObject reducedMotion;
- readonly attribute PreferenceObject reducedTransparency;
+ [RuntimeEnabled=PrefersReducedTransparency] readonly attribute PreferenceObject reducedTransparency;
[RuntimeEnabled=PrefersReducedData] readonly attribute PreferenceObject reducedData;
};
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
@@ -2957,8 +2957,8 @@
base_feature: "none",
@@ -2945,7 +2945,11 @@
settable_from_internals: true,
},
{
- name: "PrefersReducedTransparency",
- status: "stable",
+ name: "PrefersReducedTransparency", // disabled by default
+ status: "experimental", // see https://bugs.chromium.org/p/chromium/issues/detail?id=1424879
- name: "PrefersReducedData",
+ name: "PrefersReducedData", // must be
+ status: "experimental", // disabled
+ },
+ {
+ name: "PrefersReducedTransparency",
status: "experimental",
},
// This feature is deprecated and we are evangelizing affected sites.
// See https://crbug.com/346236 for current status.
--

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