Compare commits
62
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52202a3ffb | ||
|
|
4e5c7c36a1 | ||
|
|
d1fb4d4974 | ||
|
|
edaf4c0f17 | ||
|
|
4a9cbe673d | ||
|
|
6340bb4398 | ||
|
|
ba0e1dc920 | ||
|
|
c8e8919714 | ||
|
|
4902cfb5d5 | ||
|
|
bc3ef3746a | ||
|
|
c941fcf137 | ||
|
|
86f3e97b6b | ||
|
|
f62bd97771 | ||
|
|
11ec80bed4 | ||
|
|
b52188adfa | ||
|
|
290ac541a5 | ||
|
|
a237a5ce1b | ||
|
|
764cf585dd | ||
|
|
bbaf497fc7 | ||
|
|
2a03789061 | ||
|
|
c2ab0f4667 | ||
|
|
b692f721a3 | ||
|
|
28e950d9be | ||
|
|
6a9e562dde | ||
|
|
158d782db4 | ||
|
|
8d494540e2 | ||
|
|
74cb09ea83 | ||
|
|
3f19511574 | ||
|
|
e866631846 | ||
|
|
00c28793f4 | ||
|
|
932d5c680f | ||
|
|
aa408e6d21 | ||
|
|
5330cb879f | ||
|
|
d86fcd1c5f | ||
|
|
ec98e6e11c | ||
|
|
528c999cbb | ||
|
|
65c5722a09 | ||
|
|
35f447cf0c | ||
|
|
a5b818c8ab | ||
|
|
21ef4d1c37 | ||
|
|
b05d50bcad | ||
|
|
07985cf503 | ||
|
|
323864669b | ||
|
|
50b0961a8d | ||
|
|
8eb36db315 | ||
|
|
a2efd643de | ||
|
|
c611bc0855 | ||
|
|
028c1567bd | ||
|
|
bd0b93cb3e | ||
|
|
84d6403e06 | ||
|
|
73b524f627 | ||
|
|
232dd7f970 | ||
|
|
ca366d39b9 | ||
|
|
5cf852d97d | ||
|
|
f2977bac96 | ||
|
|
a162d5820e | ||
|
|
95c717eb59 | ||
|
|
873c245f6e | ||
|
|
56fa92cbff | ||
|
|
acc8cbb1e9 | ||
|
|
c4bce0f449 | ||
|
|
cf3313d156 |
@@ -0,0 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
liberapay: csagan5
|
||||
custom: https://www.bromite.org/#donate
|
||||
@@ -4,34 +4,47 @@ about: Create a Bromite bug report
|
||||
|
||||
---
|
||||
|
||||
**Bromite version**
|
||||
### Bromite version
|
||||
|
||||
Version: `69.0...`
|
||||
Version: `76.0...`
|
||||
Arch: `arm` or `arm64` or `x86`
|
||||
Android version: ... (example: `lollipop`)
|
||||
Android version: (example: `9.0`)
|
||||
Device model: (example: `SM-G960UZKABST`)
|
||||
|
||||
**Is the bug reproducible with latest version?**
|
||||
`Bug must be reproducible with latest version`
|
||||
### Is this bug about the SystemWebView?
|
||||
Yes/No
|
||||
|
||||
**Can the bug be reproduced with corresponding [Chromium](https://github.com/bromite/chromium/releases) version?**
|
||||
`Bug must NOT be reproducible with Chromium to be qualified as a Bromite bug`
|
||||
If yes then report it upstream on [Chromium issue tracker](https://bugs.chromium.org/p/chromium/issues/list) and do not forget to read [Chromium project bug reporting guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines) first; all Chromium issues reported here will be closed as `invalid`.
|
||||
No support for SystemWebView installations is provided.
|
||||
|
||||
### Is the bug reproducible with latest version?
|
||||
|
||||
Do not report bugs which are not reproducible with latest version
|
||||
|
||||
### Can the bug be reproduced with corresponding Chromium version?
|
||||
|
||||
Please pick the same version of Chromium as Bromite from here: https://github.com/bromite/chromium/releases
|
||||
If the bug is reproducible then it might be a configuration issue or an upstream bug. Upstream bugs can be reported on the [Chromium issue tracker](https://bugs.chromium.org/p/chromium/issues/list) and do not forget to read [Chromium project bug reporting guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines) first.
|
||||
|
||||
### Is the bug a crash?
|
||||
|
||||
**Is the bug a crash?**
|
||||
If yes then individuate and post the logcat dump (remove privacy sensitive information, if any), otherwise remove this section.
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
### Describe the bug
|
||||
|
||||
Write here a clear and concise description of the bug.
|
||||
|
||||
### Steps to reproduce the bug
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
### Expected behavior
|
||||
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
### Screenshots
|
||||
|
||||
If applicable, add screenshots to help explain your problem. Otherwise remove this section.
|
||||
|
||||
@@ -4,14 +4,20 @@ about: Suggest a privacy-related idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to privacy?**
|
||||
### Is your feature request related to privacy?
|
||||
|
||||
Features that are not related to privacy are unlikely to be considered.
|
||||
|
||||
**Is there a patch available for this feature somewhere?**
|
||||
...
|
||||
### Is there a patch available for this feature somewhere?
|
||||
|
||||
If yes then provide URL and license information.
|
||||
|
||||
### Describe the solution you would like
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
Do not ask "I would like feature X which is available in browser Y"; such issues are closed immediately.
|
||||
|
||||
### Describe alternatives you have considered
|
||||
|
||||
A clear and concise description of any alternative solutions or features you have considered.
|
||||
|
||||
+144
@@ -1,3 +1,147 @@
|
||||
# 79.0.3945.100
|
||||
* log timeout values for DoH
|
||||
* enable DFM (fixes https://github.com/bromite/bromite/issues/441)
|
||||
* updated User-agent version
|
||||
|
||||
# 79.0.3945.94
|
||||
* removed patches which do not apply anymore (Widevine version punting, always show homepage settings, network errors UMA recording)
|
||||
* removed split APKs support (Play integration)
|
||||
* disabled password reuse functionality (Play integration)
|
||||
* re-introduced minimal headers for DoH
|
||||
* removed Startpage
|
||||
* disable feed support
|
||||
* updated User-agent version
|
||||
|
||||
# 78.0.3904.130
|
||||
* support user-specified subresources filter URL (fixes https://github.com/bromite/bromite/issues/2)
|
||||
* revert removal of flag for disabling pull-to-refresh effect
|
||||
* fix crash when entering no DoH URL (fixes https://github.com/bromite/bromite/issues/430)
|
||||
* added Peter Lowe's Ad and tracking server list (fixes https://github.com/bromite/bromite/issues/423)
|
||||
* enabled dav1d_decoder
|
||||
|
||||
# 78.0.3904.119
|
||||
* replace fixed DNS-over-HTTPS feature flag with user-customizable option
|
||||
* fix background playback issue (fixes https://github.com/bromite/bromite/issues/424)
|
||||
|
||||
# 78.0.3904.105
|
||||
* add flag to disable WebGL (fixes https://github.com/bromite/bromite/issues/411)
|
||||
* more selective AMP sanitization (fixes https://github.com/bromite/bromite/issues/410)
|
||||
* build optimizations to disable debug information
|
||||
|
||||
# 78.0.3904.93
|
||||
* introduce flags to disable browser fingerprinting capabilities (fixes https://github.com/bromite/bromite/issues/402)
|
||||
* major enhancements to AMP sanitization for news/images
|
||||
* remove duplicate network predictions privacy setting
|
||||
* disable some signed exchanges features
|
||||
* ungoogled-chromium-android: patches to block all GCM/GMS/PlayServices integrations
|
||||
* ungoogled-chromium: block all connection requests to substituted domains
|
||||
* disable GVR services build flag
|
||||
* disable HEAD requests for single words typed and clicked in Omnibar
|
||||
* increase number of autocomplete matches from 5 to 10
|
||||
* replace DoH probe domain with RIPE domain
|
||||
* merged fixes for adblock/javascript menu text (https://github.com/bromite/bromite/pull/398)
|
||||
* updated User-agent phone model and version
|
||||
|
||||
# 78.0.3904.72
|
||||
* updated User-agent phone model and version
|
||||
* fix network predictions bug (fixes https://github.com/bromite/bromite/issues/387)
|
||||
* fix crash in settings (fixes https://github.com/bromite/bromite/issues/388)
|
||||
|
||||
# 78.0.3904.63
|
||||
* replace Beta DoH service URL for Google (https://developers.google.com/speed/public-dns/docs/doh/migration)
|
||||
* disable AImageReaderMediaPlayer until upstream bug is fixed (https://bugs.chromium.org/p/chromium/issues/detail?id=977583)
|
||||
* disabled face detection provider
|
||||
* removed non-working SystemWebView adblock patch (not working since v77)
|
||||
* bring back some privacy options which upstream moved to Sync settings (fixes https://github.com/bromite/bromite/issues/383)
|
||||
|
||||
# 77.0.3865.104
|
||||
* revert upstream commit for search privacy options and related translations removal (fixes https://github.com/bromite/bromite/issues/375)
|
||||
* remove unused patch for enabling subresource filter on all sites
|
||||
|
||||
# 77.0.3865.95
|
||||
|
||||
# 77.0.3865.81
|
||||
* use native subresource filtering instead of Bromite engine
|
||||
* introduce Bromite AdBlockUpdate service
|
||||
* keep using Bromite engine for SystemWebView
|
||||
* enable subresource filter for all sites
|
||||
* disable subresource filter popup
|
||||
* enable IPv6 probing by default
|
||||
* drop DnsTransaction default security level patch
|
||||
* drop patch to visualize all type of extensions
|
||||
* drop patches for Network Service
|
||||
* enable CFI for all architectures except x86
|
||||
|
||||
# 76.0.3809.129
|
||||
* disable CFI to fix x86 crashes (fixes https://github.com/bromite/bromite/issues/357)
|
||||
|
||||
# 76.0.3809.115
|
||||
* disable search-ready omnibox by default
|
||||
* disable unified consent
|
||||
|
||||
# 76.0.3809.100
|
||||
* use default feature flags for autofill (fixes https://github.com/bromite/bromite/issues/348)
|
||||
|
||||
# 76.0.3809.91
|
||||
|
||||
# 76.0.3809.85
|
||||
* add flag to toggle Network Service
|
||||
* disable Network Service by default
|
||||
* do not record UMA for network errors
|
||||
* use fixed User Agent and Android OS version
|
||||
* dropped patch for history requirement of user gesture
|
||||
|
||||
# 75.0.3770.139
|
||||
* disable media router and remoting by default (fixes https://github.com/bromite/bromite/issues/281)
|
||||
* enable CFI in GN build flags
|
||||
|
||||
# 75.0.3770.132
|
||||
|
||||
# 75.0.3770.109
|
||||
* disable payment support by default
|
||||
* disable background sync by default
|
||||
* better patch from GrapheneOS/Vanadium for disabling sensors access (fixes https://github.com/bromite/bromite/issues/319)
|
||||
* use new patch for content settings sensors allow/block (fixes https://github.com/bromite/bromite/issues/319)
|
||||
* fix impossible values in Battery Status API (fixes https://github.com/bromite/bromite/issues/322)
|
||||
|
||||
# 75.0.3770.86
|
||||
|
||||
# 75.0.3770.82
|
||||
|
||||
# 75.0.3770.70
|
||||
* enable changing default downloads storage location by default
|
||||
* enable download rename option by default
|
||||
* disable offline pages in the downloads home to be opened in CCT by default
|
||||
* increase minimum SDK from 17 to 19 (fixes https://github.com/bromite/bromite/issues/310)
|
||||
* prefs: disable SigninAllowed by default
|
||||
* prefs: always prompt for download directory by default
|
||||
* build: remove calling untrusted hooks
|
||||
|
||||
# 75.0.3770.53
|
||||
* fix crash when downloading or from browser-initiated requests (fixes https://github.com/bromite/bromite/issues/309)
|
||||
|
||||
# 75.0.3770.50
|
||||
* disable dynamic module loading
|
||||
* more fixes to allow building for SDK 17
|
||||
|
||||
# 74.0.3729.162
|
||||
* remove recent tabs signin
|
||||
|
||||
# 74.0.3729.154
|
||||
|
||||
# 74.0.3729.141
|
||||
|
||||
# 74.0.3729.122
|
||||
* remove more unnecessary permissions
|
||||
|
||||
# 74.0.3729.106
|
||||
* remove account/sync menu entries (fixes https://github.com/bromite/bromite/issues/285)
|
||||
* fix failed debug builds
|
||||
|
||||
# 74.0.3729.86
|
||||
* enable dark mode settings entry by default
|
||||
* fix permission request for Play services on reboot (fixes https://github.com/bromite/bromite/issues/281)
|
||||
|
||||
# 74.0.3729.80
|
||||
* increase minimum SDK version to 17 (Jelly Bean 4.2)
|
||||
* dropped obsolete patch for hyperlink auditing disable
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
Bromite is [Chromium](https://www.chromium.org/Home) plus some patches for ad blocking and enhanced privacy.
|
||||
|
||||
Bromite is only available for Android v4.1 and above.
|
||||
Bromite is only available for Android v4.4 and above.
|
||||
|
||||
<img src="https://www.bromite.org/bromite_bromite_gh_downloads.svg" alt="downloads on Github" title="downloads on Github" />
|
||||
|
||||
@@ -19,9 +19,7 @@ Minimal UI changes are applied to help curbing the idea of "browser as an advert
|
||||
|
||||
Please donate to support development of Bromite and the costs for the build system.
|
||||
|
||||
Support development with a donation of 3 EUR: [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2)
|
||||
|
||||
Support development with a free amount donation: [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=LC7Q6A3UAQPY8)
|
||||
[→ Support development with a donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2): [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2)
|
||||
|
||||
<a href="bitcoin:3MkC3idL61npQSCxL1gceksmRTkNkiCPcG">BTC donations address</a>: `3MkC3idL61npQSCxL1gceksmRTkNkiCPcG`
|
||||
|
||||
@@ -52,10 +50,6 @@ See also [the wiki page](https://github.com/bromite/bromite/wiki/Installing-Syst
|
||||
|
||||
See [this wiki page](https://github.com/bromite/bromite/wiki/Enabling-DNS-over-HTTPS).
|
||||
|
||||
## Can you add dark mode/some cool themes?
|
||||
No.
|
||||
Bromite is about privacy and adblocking.
|
||||
|
||||
## Can you add HTTPS everywhere?
|
||||
No.
|
||||
We cannot add add-ons to Bromite (merely some features).
|
||||
@@ -75,7 +69,7 @@ Yes, since version 69. While the desktop version of Chromium has an option to di
|
||||
|
||||
# Features
|
||||
|
||||
* baked-in adblock engine
|
||||
* native adblock engine
|
||||
* remove click-tracking and AMP from search results
|
||||
* DNS-over-HTTPS support via Google, Cloudflare, Quad9 and AdGuard servers
|
||||
* [proxy configuration page](https://github.com/bromite/bromite/wiki/ProxyConfiguration) with PAC and custom proxy lists support
|
||||
@@ -86,7 +80,7 @@ Yes, since version 69. While the desktop version of Chromium has an option to di
|
||||
* anti-fingerprinting mitigations for canvas, audio, client rects, webGL and sensor APIs
|
||||
* use fixed User-Agent to conceal real model and browser version
|
||||
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
|
||||
* security enhancement patches from [AndroidHardening](https://github.com/AndroidHardening) project
|
||||
* security enhancement patches from [GrapheneOS](https://github.com/GrapheneOS) project
|
||||
|
||||
## Features not related to privacy
|
||||
* import/export bookmarks
|
||||
@@ -107,7 +101,7 @@ All built versions are available as [releases](https://github.com/bromite/bromit
|
||||
|
||||
Each tag corresponds to a Chromium Stable release tag.
|
||||
|
||||
Bromite is currently built for ARM, ARM64 and x86 and for the Android SDK versions 16 and 21; [Bromite SystemWebView](https://www.bromite.org/system_web_view) is provided as well (SDK21+).
|
||||
Bromite is currently built for ARM, ARM64 and x86 and for the Android SDK versions 19 and 21; [Bromite SystemWebView](https://www.bromite.org/system_web_view) is provided as well (SDK21+).
|
||||
For every Bromite build you can always find a matching [vanilla Chromium](https://www.bromite.org/chromium) build which is used for example to verify which issues are specific to Bromite or not.
|
||||
|
||||
All official releases are also available through the [official third-party F-Droid repository](https://www.bromite.org/fdroid).
|
||||
@@ -143,24 +137,30 @@ The [Bromite main repository](https://github.com/bromite/bromite) contains tags
|
||||
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 GN args used to build Bromite are available here: [GN_ARGS](./build/GN_ARGS).
|
||||
The patches are to be applied second the order specified in the `patches_list.txt` file (you can use `git am`); the big file `adblock_entries.h` (containing all the AdBlock filters) needs to be copied under `src/net/url_request/`.
|
||||
The patches are to be applied second the order specified in the `bromite_patches_list.txt` file (you can use `git am`).
|
||||
|
||||
## How to build the filters
|
||||
|
||||
See upstream documentation: https://github.com/chromium/chromium/blob/master/components/subresource_filter/FILTER_LIST_GENERATION.md
|
||||
|
||||
Bromite uses an unindexed filter file, which is periodically published at https://github.com/bromite/filters
|
||||
|
||||
# Credits
|
||||
|
||||
* [Chromium project](https://www.chromium.org/Home) and developers
|
||||
* [Iridium project](https://github.com/iridium-browser) for some patches
|
||||
* [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) for some patches
|
||||
* [AndroidHardening](https://github.com/AndroidHardening) for some patches
|
||||
* [ungoogled-chromium-android](https://github.com/ungoogled-software/ungoogled-chromium-android) for some patches
|
||||
* [GrapheneOS](https://github.com/GrapheneOS) for some security patches
|
||||
* [Inox patchset](https://github.com/gcarq/inox-patchset) for some patches (via ungoogled-chromium)
|
||||
* [Brave Browser](https://github.com/brave/browser-android-tabs) for some patches
|
||||
* nochromo for the original adblock patch
|
||||
* [Vadim Pleshkov](http://vadimpleshkov.me/) for Bromite's logo
|
||||
|
||||
# Filters credits
|
||||
* [EasyList](https://easylist.to/#easylist)
|
||||
* [EasyPrivacy](https://easylist.to/#easyprivacy)
|
||||
* [uBlock Origin](https://github.com/uBlockOrigin)
|
||||
|
||||
* [Peter Lowe's Ad and tracking server list](https://pgl.yoyo.org/adservers/)
|
||||
# License
|
||||
|
||||
The patches published as part of the Bromite project are released under [GNU GPL v3](./LICENSE).
|
||||
|
||||
+11
-3
@@ -2,9 +2,16 @@ android_channel="stable"
|
||||
blink_symbol_level=1
|
||||
dcheck_always_on=false
|
||||
debuggable_apks=false
|
||||
enable_ac3_eac3_audio_demuxing=true enable_hevc_demuxing=true enable_iterator_debugging=false
|
||||
dfmify_dev_ui=false
|
||||
disable_android_lint=true
|
||||
disable_autofill_assistant_dfm=true
|
||||
disable_tab_ui_dfm=true
|
||||
enable_av1_decoder=true
|
||||
enable_dav1d_decoder=true
|
||||
enable_feed_in_chrome=false
|
||||
enable_gvr_services=false
|
||||
enable_hangout_services_extension=false
|
||||
enable_iterator_debugging=false
|
||||
enable_mdns=false
|
||||
enable_mse_mpeg2ts_stream_parser=true ffmpeg_branding="Chrome" proprietary_codecs=true
|
||||
enable_nacl=false
|
||||
@@ -14,13 +21,14 @@ enable_reporting=false
|
||||
enable_resource_whitelist_generation=false
|
||||
enable_vr=false
|
||||
fieldtrial_testing_like_official_build=true
|
||||
icu_use_data_file=true
|
||||
is_cfi=true
|
||||
is_component_build=false
|
||||
is_debug=false
|
||||
is_official_build=true
|
||||
jumbo_file_merge_limit=60
|
||||
rtc_build_examples=false
|
||||
safe_browsing_mode=0
|
||||
strip_absolute_paths_from_debug_symbols=true
|
||||
strip_debug_info=false
|
||||
symbol_level=1
|
||||
target_os="android"
|
||||
use_debug_fission=true
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
Disable-third-party-cookies-by-default.patch
|
||||
Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
|
||||
Disable-unified-consent-on-Android.patch
|
||||
Unified-consent-miscellanous-backport-fixes.patch
|
||||
Restore-classic-new-tab-page.patch
|
||||
Always-use-new-tab-page-for-default-home-page.patch
|
||||
Always-allow-partner-customisation.patch
|
||||
battery_status_service-disable-more-privacy-nightmares.patch
|
||||
Battery-API-return-nothing.patch
|
||||
google-cloud-messaging-disable-experiment-status-check.patch
|
||||
updater-disable-updater-pings.patch
|
||||
prefs-only-keep-cookies-until-exit.patch
|
||||
Remove-EV-certificates.patch
|
||||
promo-disable-Google-promotion-fetching.patch
|
||||
Disable-omission-of-URL-elements-in-Omnibox.patch
|
||||
Modify-default-preferences.patch
|
||||
Disable-contextual-search-by-default.patch
|
||||
Do-not-store-passwords-by-default.patch
|
||||
Disable-NTP-remote-suggestions-by-default.patch
|
||||
Disable-references-to-fonts.googleapis.com.patch
|
||||
Disable-WebRTC-by-default.patch
|
||||
Never-send-any-crash-upload-data.patch
|
||||
Hide-send-reports-checkbox.patch
|
||||
Never-fetch-popular-sites.patch
|
||||
ungoogled-chromium-Disable-webRTC-log-uploader.patch
|
||||
ungoogled-chromium-Disable-untraceable-URLs.patch
|
||||
ungoogled-chromium-Disable-translate-integration.patch
|
||||
ungoogled-chromium-Disable-profile-avatar-downloading.patch
|
||||
ungoogled-chromium-Disable-intranet-redirect-detector.patch
|
||||
ungoogled-chromium-Disable-Google-host-detection.patch
|
||||
ungoogled-chromium-Disable-GCM.patch
|
||||
ungoogled-chromium-Disable-Gaia.patch
|
||||
ungoogled-chromium-Disable-domain-reliability.patch
|
||||
ungoogled-chromium-Disable-Network-Time-Tracker.patch
|
||||
ungoogled-chromium-Always-use-local-DevTools-files-instead-of-remote-files-from-Google.patch
|
||||
safe_browsing-disable-incident-reporting.patch
|
||||
safe_browsing-disable-reporting-of-safebrowsing-override.patch
|
||||
safe_browsing-disable-cookie-transmission.patch
|
||||
Disable-safe-browsing.patch
|
||||
Skip-the-first-run-and-metrics.patch
|
||||
Disable-all-promo-dialogs.patch
|
||||
Disable-sync-services-menu-entry.patch
|
||||
Remove-signin-and-data-saver-integrations.patch
|
||||
Remove-background-sync-and-translate-menu-options.patch
|
||||
Hide-passwords-manager-link.patch
|
||||
Disable-Omaha-update-checks.patch
|
||||
Disable-update-scheduler.patch
|
||||
Add-English-only-search-engine.patch
|
||||
Add-DuckDuckGo-Lite-search-engine.patch
|
||||
Add-Qwant-search-engine.patch
|
||||
Fix-crash-when-accessing-page-info-site-settings.patch
|
||||
openH264-enable-ARM-ARM64-optimizations.patch
|
||||
Switch-to-fstack-protector-strong.patch
|
||||
Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
|
||||
build-remove-calling-untrusted-hooks.patch
|
||||
AV1-codec-support.patch
|
||||
Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
|
||||
Allow-playing-audio-in-background.patch
|
||||
Add-flag-to-control-video-playback-resume-feature.patch
|
||||
Open-YouTube-links-in-Bromite.patch
|
||||
Add-exit-menu-item.patch
|
||||
Remove-help-menu-item.patch
|
||||
Add-menu-option-to-toggle-global-Javascript-preference.patch
|
||||
Add-menu-option-to-toggle-ad-blocker.patch
|
||||
User-Agent-anonymize.patch
|
||||
AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch
|
||||
Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
|
||||
Add-flags-to-disable-device-motion-and-orientation-APIs.patch
|
||||
Disable-metrics-on-all-I-O-threads.patch
|
||||
Always-respect-async-dns-flag-regardless-of-SDK-version.patch
|
||||
Add-flag-to-configure-maximum-connections-per-host.patch
|
||||
Add-site-settings-option-for-session-only-cookies.patch
|
||||
Add-bookmark-import-export-actions.patch
|
||||
Disable-promos-displayed-in-bookmarks-manager.patch
|
||||
Add-an-always-incognito-mode.patch
|
||||
Add-custom-tab-intents-privacy-option.patch
|
||||
Add-option-to-not-persist-tabs-across-sessions.patch
|
||||
Disable-fetching-of-all-field-trials.patch
|
||||
Disable-seed-based-field-trials.patch
|
||||
Disable-plugins-enumeration.patch
|
||||
net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch
|
||||
dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
|
||||
profile-resetter-do-not-tick-send-settings-by-default.patch
|
||||
browser-ui-disable-warning-about-missing-API-keys.patch
|
||||
autofill-disable-autofill-download-manager.patch
|
||||
first_run-deactivate-autoupdate-globally.patch
|
||||
translate-disable-fetching-of-translate-languages-from-server.patch
|
||||
kill-TOS-and-metrics-opt-out.patch
|
||||
kill-Translate.patch
|
||||
kill-Vision.patch
|
||||
kill-Location-fall-back-to-system.patch
|
||||
kill-Auth.patch
|
||||
Remove-dependency-on-com.google.android.gms.auth.patch
|
||||
kill-GCM.patch
|
||||
Remove-dependency-on-com.google.android.gcm.patch
|
||||
Remove-dependency-on-com.google.android.gms.gcm.patch
|
||||
Remove-dependency-on-com.google.android.play.patch
|
||||
Remove-dependency-on-com.google.android.gms.vision-com.google.android.gms.clearcut-com.google.android.gms.phenotype.patch
|
||||
Remove-dependency-on-com.google.android.gms.flags-com.google.android.gms.location.places-com.google.android.gms.stats.patch
|
||||
Remove-dependency-on-com.google.android.gms.fido-com.google.android.gms.iid-com.google.android.gms.instantapps-com.google.android.gms.location.patch
|
||||
Remove-dependency-on-com.google.android.gms.cast.patch
|
||||
Remove-dependency-on-com.google.android.gms.common-auth-signin-dynamic-com.google.android.gms.tasks.patch
|
||||
Remove-SMS-integration.patch
|
||||
Allow-website-sign-in-without-account-sign-in.patch
|
||||
Offer-builtin-autocomplete-for-chrome-flags.patch
|
||||
Do-not-grant-notifications-to-default-search-engine.patch
|
||||
Add-flag-to-disable-IPv6-probes.patch
|
||||
Add-a-proxy-configuration-page.patch
|
||||
Do-not-ignore-download-location-prompt-setting.patch
|
||||
Disable-previews-by-default.patch
|
||||
Use-4-tile-rows-never-show-logo.patch
|
||||
Disable-metrics-collection-for-NTP-tiles.patch
|
||||
Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
|
||||
Use-64-bit-WebView-processes.patch
|
||||
Add-option-to-use-home-page-as-NTP.patch
|
||||
Enable-night-mode-menu-entry-by-default.patch
|
||||
Disable-dynamic-module-loading.patch
|
||||
prefs-disable-signinallowed-by-default.patch
|
||||
prefs-always-prompt-for-download-directory-by-default.patch
|
||||
Disable-offline-pages-in-the-downloads-home-to-be-opened-in-CCT-by-default.patch
|
||||
Enable-changing-default-downloads-storage-location-by-default.patch
|
||||
Enable-download-rename-option-by-default.patch
|
||||
disable-payment-support-by-default.patch
|
||||
disable-background-sync-by-default.patch
|
||||
disable-sensors-access-site-setting-by-default.patch
|
||||
Disable-media-router-and-remoting-by-default.patch
|
||||
Revert-Cleanup-Search-Ready-Omnibox-flag-since-it-has-launched.patch
|
||||
Disable-search-ready-omnibox-by-default.patch
|
||||
disable-AdsBlockedInfoBar.patch
|
||||
Bromite-AdBlockUpdaterService.patch
|
||||
Add-option-to-configure-the-ad-blocker-filters-URL.patch
|
||||
Revert-Merge-to-M78-Enable-AImageReader-by-default.patch
|
||||
Replace-DoH-probe-domain-with-RIPE-domain.patch
|
||||
Increase-number-of-autocomplete-matches-from-5-to-10.patch
|
||||
Disable-HEAD-requests-for-single-word-Omnibar-searches.patch
|
||||
Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
|
||||
Disable-some-signed-exchange-features.patch
|
||||
Add-flag-to-disable-WebGL.patch
|
||||
Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
|
||||
Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
|
||||
Revert-flags-remove-disable-pull-to-refresh-effect.patch
|
||||
Use-dummy-DFM-installer.patch
|
||||
Disable-password-reuse-detection-on-android.patch
|
||||
Allow-building-without-feed-support.patch
|
||||
Disable-addresses-autofill-by-default.patch
|
||||
Log-DoH-timeout.patch
|
||||
@@ -0,0 +1,8 @@
|
||||
Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
|
||||
Disable-unified-consent-on-Android.patch
|
||||
Unified-consent-miscellanous-backport-fixes.patch
|
||||
AV1-codec-support.patch
|
||||
Switch-to-fstack-protector-strong.patch
|
||||
Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
|
||||
Disable-password-reuse-detection-on-android.patch
|
||||
Allow-building-without-feed-support.patch
|
||||
File diff suppressed because one or more lines are too long
@@ -5,27 +5,27 @@ Subject: AV1 codec support
|
||||
libaom build fixes (requires -fPIC)
|
||||
Report AV1 as playable on Android
|
||||
---
|
||||
media/base/mime_util_internal.cc | 6 +++++-
|
||||
third_party/libaom/BUILD.gn | 6 ++++--
|
||||
third_party/libaom/libaom_srcs.gni | 5 +++++
|
||||
.../source/config/linux/arm-neon-cpu-detect/config/aom_config.asm | 2 +-
|
||||
.../source/config/linux/arm-neon-cpu-detect/config/aom_config.h | 2 +-
|
||||
.../libaom/source/config/linux/arm-neon/config/aom_config.asm | 2 +-
|
||||
third_party/libaom/source/config/linux/arm-neon/config/aom_config.h | 2 +-
|
||||
third_party/libaom/source/config/linux/arm/config/aom_config.asm | 2 +-
|
||||
third_party/libaom/source/config/linux/arm/config/aom_config.h | 2 +-
|
||||
third_party/libaom/source/config/linux/arm64/config/aom_config.asm | 2 +-
|
||||
third_party/libaom/source/config/linux/arm64/config/aom_config.h | 2 +-
|
||||
.../libaom/source/config/linux/generic/config/aom_config.asm | 2 +-
|
||||
third_party/libaom/source/config/linux/generic/config/aom_config.h | 2 +-
|
||||
third_party/libaom/source/config/linux/x64/config/aom_config.asm | 2 +-
|
||||
third_party/libaom/source/config/linux/x64/config/aom_config.h | 2 +-
|
||||
media/base/mime_util_internal.cc | 6 +++++-
|
||||
third_party/libaom/BUILD.gn | 6 ++++--
|
||||
third_party/libaom/libaom_srcs.gni | 5 +++++
|
||||
.../config/linux/arm-neon-cpu-detect/config/aom_config.asm | 2 +-
|
||||
.../config/linux/arm-neon-cpu-detect/config/aom_config.h | 2 +-
|
||||
.../source/config/linux/arm-neon/config/aom_config.asm | 2 +-
|
||||
.../libaom/source/config/linux/arm-neon/config/aom_config.h | 2 +-
|
||||
.../libaom/source/config/linux/arm/config/aom_config.asm | 2 +-
|
||||
.../libaom/source/config/linux/arm/config/aom_config.h | 2 +-
|
||||
.../libaom/source/config/linux/arm64/config/aom_config.asm | 2 +-
|
||||
.../libaom/source/config/linux/arm64/config/aom_config.h | 2 +-
|
||||
.../source/config/linux/generic/config/aom_config.asm | 2 +-
|
||||
.../libaom/source/config/linux/generic/config/aom_config.h | 2 +-
|
||||
.../libaom/source/config/linux/x64/config/aom_config.asm | 2 +-
|
||||
.../libaom/source/config/linux/x64/config/aom_config.h | 2 +-
|
||||
15 files changed, 26 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
|
||||
--- a/media/base/mime_util_internal.cc
|
||||
+++ b/media/base/mime_util_internal.cc
|
||||
@@ -539,9 +539,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
|
||||
@@ -564,9 +564,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
|
||||
case THEORA:
|
||||
return false;
|
||||
|
||||
@@ -69,7 +69,7 @@ diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
|
||||
+ sources += aom_ports_arm_sources
|
||||
}
|
||||
if (is_android) {
|
||||
deps += [ "//third_party/android_tools:cpu_features" ]
|
||||
deps += [ "//third_party/android_ndk:cpu_features" ]
|
||||
diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
|
||||
--- a/third_party/libaom/libaom_srcs.gni
|
||||
+++ b/third_party/libaom/libaom_srcs.gni
|
||||
@@ -230,5 +230,5 @@ diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/th
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 1
|
||||
#define CONFIG_SHARED 0
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,15 +3,15 @@ Date: Thu, 12 Oct 2017 11:06:18 +0200
|
||||
Subject: Add DuckDuckGo Lite search engine
|
||||
|
||||
---
|
||||
.../search_engines/prepopulated_engines.json | 10 ++
|
||||
components/search_engines/search_engine_type.h | 1 +
|
||||
.../template_url_prepopulate_data.cc | 129 +++++++++++----------
|
||||
3 files changed, 76 insertions(+), 64 deletions(-)
|
||||
.../search_engines/prepopulated_engines.json | 10 ++
|
||||
.../search_engines/search_engine_type.h | 1 +
|
||||
.../template_url_prepopulate_data.cc | 122 +++++++++---------
|
||||
3 files changed, 75 insertions(+), 58 deletions(-)
|
||||
|
||||
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||
--- a/components/search_engines/prepopulated_engines.json
|
||||
+++ b/components/search_engines/prepopulated_engines.json
|
||||
@@ -95,6 +95,16 @@
|
||||
@@ -91,6 +91,16 @@
|
||||
"id": 68
|
||||
},
|
||||
|
||||
@@ -38,12 +38,12 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
|
||||
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||
SEARCH_ENGINE_PARSIJOO,
|
||||
SEARCH_ENGINE_QWANT,
|
||||
SEARCH_ENGINE_STARTPAGE,
|
||||
|
||||
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
|
||||
@@ -35,6 +35,7 @@ const PrepopulatedEngine* const engines_default[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
@@ -51,7 +51,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Note, the below entries are sorted by country code, not the name in comment.
|
||||
@@ -44,7 +45,7 @@ const PrepopulatedEngine* const engines_AE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -60,7 +60,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Albania
|
||||
@@ -60,7 +61,7 @@ const PrepopulatedEngine* const engines_AR[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_ar,
|
||||
- &duckduckgo,
|
||||
@@ -69,7 +69,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Austria
|
||||
@@ -68,7 +69,7 @@ const PrepopulatedEngine* const engines_AT[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_at,
|
||||
- &duckduckgo,
|
||||
@@ -78,7 +78,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Australia
|
||||
@@ -76,7 +77,7 @@ const PrepopulatedEngine* const engines_AU[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_au,
|
||||
- &duckduckgo,
|
||||
@@ -87,7 +87,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Bosnia and Herzegovina
|
||||
@@ -92,7 +93,7 @@ const PrepopulatedEngine* const engines_BE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -96,7 +96,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Bulgaria
|
||||
@@ -124,7 +125,7 @@ const PrepopulatedEngine* const engines_BN[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -105,7 +105,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Bolivia
|
||||
@@ -132,7 +133,7 @@ const PrepopulatedEngine* const engines_BO[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -114,7 +114,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
|
||||
// Brazil
|
||||
@@ -140,7 +141,7 @@ const PrepopulatedEngine* const engines_BR[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_br,
|
||||
- &duckduckgo,
|
||||
@@ -122,31 +122,30 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Belarus
|
||||
@@ -156,19 +157,19 @@ const PrepopulatedEngine* const engines_BZ[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -157,11 +158,12 @@ const PrepopulatedEngine* const engines_BZ[] = {
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&duckduckgo,
|
||||
+ &duckduckgo_light,
|
||||
};
|
||||
|
||||
// Canada
|
||||
const PrepopulatedEngine* const engines_CA[] = {
|
||||
- &googleen, &google, &startpage, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo,
|
||||
+ &googleen, &google, &startpage, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo, &duckduckgo_light,
|
||||
- &googleen, &google, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo,
|
||||
+ &googleen, &google, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo, &duckduckgo_light,
|
||||
};
|
||||
|
||||
// Switzerland
|
||||
const PrepopulatedEngine* const engines_CH[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -169,6 +171,7 @@ const PrepopulatedEngine* const engines_CH[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&duckduckgo,
|
||||
+ &duckduckgo_light,
|
||||
&yahoo_ch,
|
||||
};
|
||||
|
||||
@@ -177,7 +178,7 @@ const PrepopulatedEngine* const engines_CL[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -177,7 +180,7 @@ const PrepopulatedEngine* const engines_CL[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_cl,
|
||||
- &duckduckgo,
|
||||
@@ -154,8 +153,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// China
|
||||
@@ -190,7 +191,7 @@ const PrepopulatedEngine* const engines_CO[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -190,7 +193,7 @@ const PrepopulatedEngine* const engines_CO[] = {
|
||||
&googleen, &google,
|
||||
&yahoo_co,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -163,8 +162,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Costa Rica
|
||||
@@ -198,7 +199,7 @@ const PrepopulatedEngine* const engines_CR[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -198,7 +201,7 @@ const PrepopulatedEngine* const engines_CR[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -172,8 +171,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Czech Republic
|
||||
@@ -214,7 +215,7 @@ const PrepopulatedEngine* const engines_DE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -214,7 +217,7 @@ const PrepopulatedEngine* const engines_DE[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_de,
|
||||
- &duckduckgo,
|
||||
@@ -181,8 +180,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Denmark
|
||||
@@ -222,7 +223,7 @@ const PrepopulatedEngine* const engines_DK[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -222,7 +225,7 @@ const PrepopulatedEngine* const engines_DK[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_dk,
|
||||
- &duckduckgo,
|
||||
@@ -190,8 +189,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Dominican Republic
|
||||
@@ -230,7 +231,7 @@ const PrepopulatedEngine* const engines_DO[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -230,7 +233,7 @@ const PrepopulatedEngine* const engines_DO[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -199,8 +198,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Algeria
|
||||
@@ -246,7 +247,7 @@ const PrepopulatedEngine* const engines_EC[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -246,7 +249,7 @@ const PrepopulatedEngine* const engines_EC[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -208,8 +207,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Estonia
|
||||
@@ -270,7 +271,7 @@ const PrepopulatedEngine* const engines_ES[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -270,7 +273,7 @@ const PrepopulatedEngine* const engines_ES[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_es,
|
||||
- &duckduckgo,
|
||||
@@ -217,8 +216,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Finland
|
||||
@@ -278,7 +279,7 @@ const PrepopulatedEngine* const engines_FI[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -278,7 +281,7 @@ const PrepopulatedEngine* const engines_FI[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_fi,
|
||||
- &duckduckgo,
|
||||
@@ -226,8 +225,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Faroe Islands
|
||||
@@ -286,7 +287,7 @@ const PrepopulatedEngine* const engines_FO[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -286,7 +289,7 @@ const PrepopulatedEngine* const engines_FO[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -235,8 +234,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// France
|
||||
@@ -302,7 +303,7 @@ const PrepopulatedEngine* const engines_GB[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -302,7 +305,7 @@ const PrepopulatedEngine* const engines_GB[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_uk,
|
||||
- &duckduckgo,
|
||||
@@ -244,8 +243,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Greece
|
||||
@@ -310,7 +311,7 @@ const PrepopulatedEngine* const engines_GR[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -310,7 +313,7 @@ const PrepopulatedEngine* const engines_GR[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -253,8 +252,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Guatemala
|
||||
@@ -318,7 +319,7 @@ const PrepopulatedEngine* const engines_GT[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -318,7 +321,7 @@ const PrepopulatedEngine* const engines_GT[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -262,8 +261,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Hong Kong
|
||||
@@ -334,7 +335,7 @@ const PrepopulatedEngine* const engines_HN[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -334,7 +337,7 @@ const PrepopulatedEngine* const engines_HN[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -271,8 +270,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Croatia
|
||||
@@ -342,7 +343,7 @@ const PrepopulatedEngine* const engines_HR[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -342,7 +345,7 @@ const PrepopulatedEngine* const engines_HR[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -280,8 +279,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Hungary
|
||||
@@ -350,7 +351,7 @@ const PrepopulatedEngine* const engines_HU[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -350,7 +353,7 @@ const PrepopulatedEngine* const engines_HU[] = {
|
||||
&googleen, &google,
|
||||
&yahoo,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -289,8 +288,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Indonesia
|
||||
@@ -358,7 +359,7 @@ const PrepopulatedEngine* const engines_ID[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -358,7 +361,7 @@ const PrepopulatedEngine* const engines_ID[] = {
|
||||
&googleen, &google,
|
||||
&yahoo_id,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -298,8 +297,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Ireland
|
||||
@@ -366,7 +367,7 @@ const PrepopulatedEngine* const engines_IE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -366,7 +369,7 @@ const PrepopulatedEngine* const engines_IE[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -307,8 +306,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Israel
|
||||
@@ -382,7 +383,7 @@ const PrepopulatedEngine* const engines_IN[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -382,7 +385,7 @@ const PrepopulatedEngine* const engines_IN[] = {
|
||||
&googleen, &google,
|
||||
&yahoo_in,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -316,8 +315,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Iraq
|
||||
@@ -406,7 +407,7 @@ const PrepopulatedEngine* const engines_IS[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -405,7 +408,7 @@ const PrepopulatedEngine* const engines_IS[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -325,8 +324,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Italy
|
||||
@@ -414,7 +415,7 @@ const PrepopulatedEngine* const engines_IT[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -413,7 +416,7 @@ const PrepopulatedEngine* const engines_IT[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -334,8 +333,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Jamaica
|
||||
@@ -422,7 +423,7 @@ const PrepopulatedEngine* const engines_JM[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -421,7 +424,7 @@ const PrepopulatedEngine* const engines_JM[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -343,8 +342,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Jordan
|
||||
@@ -446,7 +447,7 @@ const PrepopulatedEngine* const engines_KE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -445,7 +448,7 @@ const PrepopulatedEngine* const engines_KE[] = {
|
||||
&googleen, &google,
|
||||
&yahoo,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -352,34 +351,33 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// South Korea
|
||||
@@ -478,14 +479,14 @@ const PrepopulatedEngine* const engines_LB[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -478,6 +481,7 @@ const PrepopulatedEngine* const engines_LB[] = {
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&duckduckgo,
|
||||
+ &duckduckgo_light,
|
||||
};
|
||||
|
||||
// Liechtenstein
|
||||
const PrepopulatedEngine* const engines_LI[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -485,6 +489,7 @@ const PrepopulatedEngine* const engines_LI[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&duckduckgo,
|
||||
+ &duckduckgo_light,
|
||||
&yahoo,
|
||||
};
|
||||
|
||||
@@ -501,7 +502,7 @@ const PrepopulatedEngine* const engines_LT[] = {
|
||||
@@ -500,7 +505,7 @@ const PrepopulatedEngine* const engines_LT[] = {
|
||||
const PrepopulatedEngine* const engines_LU[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&yahoo,
|
||||
};
|
||||
|
||||
@@ -534,7 +535,7 @@ const PrepopulatedEngine* const engines_MC[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -533,7 +538,7 @@ const PrepopulatedEngine* const engines_MC[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -387,8 +385,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Moldova
|
||||
@@ -542,7 +543,7 @@ const PrepopulatedEngine* const engines_MD[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -541,7 +546,7 @@ const PrepopulatedEngine* const engines_MD[] = {
|
||||
&googleen, &google,
|
||||
&yandex_ru,
|
||||
&mail_ru,
|
||||
- &duckduckgo,
|
||||
@@ -396,8 +394,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Montenegro
|
||||
@@ -558,7 +559,7 @@ const PrepopulatedEngine* const engines_MK[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -557,7 +562,7 @@ const PrepopulatedEngine* const engines_MK[] = {
|
||||
&googleen, &google,
|
||||
&yahoo,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -405,8 +403,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Mexico
|
||||
@@ -566,7 +567,7 @@ const PrepopulatedEngine* const engines_MX[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -565,7 +570,7 @@ const PrepopulatedEngine* const engines_MX[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_mx,
|
||||
- &duckduckgo,
|
||||
@@ -414,8 +412,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Malaysia
|
||||
@@ -582,7 +583,7 @@ const PrepopulatedEngine* const engines_NI[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -581,7 +586,7 @@ const PrepopulatedEngine* const engines_NI[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -423,8 +421,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Netherlands
|
||||
@@ -590,7 +591,7 @@ const PrepopulatedEngine* const engines_NL[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -589,7 +594,7 @@ const PrepopulatedEngine* const engines_NL[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_nl,
|
||||
- &duckduckgo,
|
||||
@@ -432,25 +430,24 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Norway
|
||||
@@ -598,14 +599,14 @@ const PrepopulatedEngine* const engines_NO[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -598,13 +603,14 @@ const PrepopulatedEngine* const engines_NO[] = {
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&duckduckgo,
|
||||
+ &duckduckgo_light,
|
||||
};
|
||||
|
||||
// New Zealand
|
||||
const PrepopulatedEngine* const engines_NZ[] = {
|
||||
&googleen, &google, &startpage,
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&yahoo_nz,
|
||||
};
|
||||
|
||||
@@ -622,7 +623,7 @@ const PrepopulatedEngine* const engines_PA[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -621,7 +627,7 @@ const PrepopulatedEngine* const engines_PA[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -458,8 +455,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Peru
|
||||
@@ -630,7 +631,7 @@ const PrepopulatedEngine* const engines_PE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -629,7 +635,7 @@ const PrepopulatedEngine* const engines_PE[] = {
|
||||
&googleen, &google,
|
||||
&yahoo_pe,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -467,8 +464,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Philippines
|
||||
@@ -638,7 +639,7 @@ const PrepopulatedEngine* const engines_PH[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -637,7 +643,7 @@ const PrepopulatedEngine* const engines_PH[] = {
|
||||
&googleen, &google,
|
||||
&yahoo_ph,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -476,8 +473,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Pakistan
|
||||
@@ -654,7 +655,7 @@ const PrepopulatedEngine* const engines_PL[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -653,7 +659,7 @@ const PrepopulatedEngine* const engines_PL[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -485,8 +482,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Puerto Rico
|
||||
@@ -662,7 +663,7 @@ const PrepopulatedEngine* const engines_PR[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -661,7 +667,7 @@ const PrepopulatedEngine* const engines_PR[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -494,8 +491,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Portugal
|
||||
@@ -670,7 +671,7 @@ const PrepopulatedEngine* const engines_PT[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -669,7 +675,7 @@ const PrepopulatedEngine* const engines_PT[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -503,8 +500,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Paraguay
|
||||
@@ -678,7 +679,7 @@ const PrepopulatedEngine* const engines_PY[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -677,7 +683,7 @@ const PrepopulatedEngine* const engines_PY[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -512,8 +509,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Qatar
|
||||
@@ -694,7 +695,7 @@ const PrepopulatedEngine* const engines_RO[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -693,7 +699,7 @@ const PrepopulatedEngine* const engines_RO[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -521,8 +518,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Serbia
|
||||
@@ -702,7 +703,7 @@ const PrepopulatedEngine* const engines_RS[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -701,7 +707,7 @@ const PrepopulatedEngine* const engines_RS[] = {
|
||||
&googleen, &google,
|
||||
&yahoo,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -530,8 +527,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Russia
|
||||
@@ -734,7 +735,7 @@ const PrepopulatedEngine* const engines_SE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -733,7 +739,7 @@ const PrepopulatedEngine* const engines_SE[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo_se,
|
||||
- &duckduckgo,
|
||||
@@ -539,8 +536,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Singapore
|
||||
@@ -750,7 +751,7 @@ const PrepopulatedEngine* const engines_SI[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -749,7 +755,7 @@ const PrepopulatedEngine* const engines_SI[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -548,8 +545,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Slovakia
|
||||
@@ -758,7 +759,7 @@ const PrepopulatedEngine* const engines_SK[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -757,7 +763,7 @@ const PrepopulatedEngine* const engines_SK[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -557,8 +554,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// El Salvador
|
||||
@@ -766,7 +767,7 @@ const PrepopulatedEngine* const engines_SV[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -765,7 +771,7 @@ const PrepopulatedEngine* const engines_SV[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -566,8 +563,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Syria
|
||||
@@ -806,7 +807,7 @@ const PrepopulatedEngine* const engines_TT[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -805,7 +811,7 @@ const PrepopulatedEngine* const engines_TT[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -575,8 +572,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Taiwan
|
||||
@@ -838,7 +839,7 @@ const PrepopulatedEngine* const engines_US[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -837,7 +843,7 @@ const PrepopulatedEngine* const engines_US[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -584,8 +581,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Uruguay
|
||||
@@ -846,7 +847,7 @@ const PrepopulatedEngine* const engines_UY[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -845,7 +851,7 @@ const PrepopulatedEngine* const engines_UY[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -593,8 +590,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Venezuela
|
||||
@@ -854,7 +855,7 @@ const PrepopulatedEngine* const engines_VE[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -853,7 +859,7 @@ const PrepopulatedEngine* const engines_VE[] = {
|
||||
&googleen, &google,
|
||||
&yahoo_ve,
|
||||
&bing,
|
||||
- &duckduckgo,
|
||||
@@ -602,8 +599,8 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Vietnam
|
||||
@@ -878,7 +879,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
|
||||
&googleen, &google, &startpage,
|
||||
@@ -877,7 +883,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
|
||||
&googleen, &google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
- &duckduckgo,
|
||||
@@ -611,15 +608,6 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
|
||||
};
|
||||
|
||||
// Zimbabwe
|
||||
@@ -898,7 +899,7 @@ const PrepopulatedEngine* const kAllEngines[] = {
|
||||
&bing,
|
||||
&coccoc,
|
||||
&daum,
|
||||
- &duckduckgo,
|
||||
+ &duckduckgo, &duckduckgo_light,
|
||||
&googleen, &google, &startpage,
|
||||
&mail_ru,
|
||||
&naver,
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,290 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 28 Apr 2018 08:30:26 +0200
|
||||
Subject: Add a flag for DNS-over-HTTPS
|
||||
|
||||
Allow selection between Google and Cloudflare endpoints.
|
||||
Serve DoH requests with maximum priority, remove traffic annotation.
|
||||
Reduce HTTP headers in DoH requests to bare minimum.
|
||||
Add AdGuard (default) endpoint
|
||||
Do not fallback to UDP when using DoH
|
||||
|
||||
See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-14.txt
|
||||
---
|
||||
chrome/browser/about_flags.cc | 11 +++++++++
|
||||
chrome/browser/flag_descriptions.cc | 3 +++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../browser/net/system_network_context_manager.cc | 17 +++++++------
|
||||
.../common/network_features.cc | 7 ++++--
|
||||
.../common/network_features.h | 5 +++-
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
net/base/load_flags_list.h | 6 +++++
|
||||
net/dns/dns_transaction.cc | 27 +++------------------
|
||||
net/url_request/url_request_http_job.cc | 28 +++++++++++++---------
|
||||
10 files changed, 64 insertions(+), 47 deletions(-)
|
||||
|
||||
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
|
||||
@@ -398,6 +398,14 @@ const FeatureEntry::FeatureVariation kCCTModuleCacheVariations[] = {
|
||||
base::size(kCCTModuleCache_ThirtyMinutes), nullptr},
|
||||
};
|
||||
|
||||
+const FeatureEntry::Choice kDnsOverHttpsChoices[] = {
|
||||
+ {features::kDnsOverHttpsChoiceDefault, "", ""},
|
||||
+ {features::kDnsOverHttpsChoiceGoogle, switches::kDnsOverHttpsServer, "https://dns.google.com/experimental"},
|
||||
+ {features::kDnsOverHttpsChoiceCloudflare, switches::kDnsOverHttpsServer, "https://1.1.1.1/dns-query"},
|
||||
+ {features::kDnsOverHttpsChoiceQuad9, switches::kDnsOverHttpsServer, "https://9.9.9.9/dns-query"},
|
||||
+ {features::kDnsOverHttpsChoiceAdGuard, switches::kDnsOverHttpsServer, "https://dns.adguard.com/dns-query"}
|
||||
+};
|
||||
+
|
||||
#endif // OS_ANDROID
|
||||
|
||||
const FeatureEntry::Choice kEnableGpuRasterizationChoices[] = {
|
||||
@@ -3400,6 +3408,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_WITH_PARAMS_VALUE_TYPE(chrome::android::kTabSwitcherOnReturn,
|
||||
kTabSwitcherOnReturnVariations,
|
||||
"TabSwitcherOnReturn")},
|
||||
+ {"enable-dns-over-https", flag_descriptions::kDnsOverHttpsName,
|
||||
+ flag_descriptions::kDnsOverHttpsDescription, kOsAndroid,
|
||||
+ MULTI_VALUE_TYPE(kDnsOverHttpsChoices)},
|
||||
#endif
|
||||
|
||||
{"enable-built-in-module-all", flag_descriptions::kBuiltInModuleAllName,
|
||||
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
|
||||
@@ -2209,6 +2209,9 @@ const char kAutoFetchOnNetErrorPageDescription[] =
|
||||
"When enabled, and navigation fails with an offline error, schedule a "
|
||||
"fetch of the page when online again.";
|
||||
|
||||
+const char kDnsOverHttpsName[] = "DNS over HTTPS";
|
||||
+const char kDnsOverHttpsDescription[] = "Enables DNS-over-HTTPS (experimental).";
|
||||
+
|
||||
const char kAutofillAccessoryViewName[] =
|
||||
"Autofill suggestions as keyboard accessory view";
|
||||
const char kAutofillAccessoryViewDescription[] =
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -1306,6 +1306,9 @@ extern const char kAsyncDnsDescription[];
|
||||
extern const char kAutoFetchOnNetErrorPageName[];
|
||||
extern const char kAutoFetchOnNetErrorPageDescription[];
|
||||
|
||||
+extern const char kDnsOverHttpsName[];
|
||||
+extern const char kDnsOverHttpsDescription[];
|
||||
+
|
||||
extern const char kAutofillAccessoryViewName[];
|
||||
extern const char kAutofillAccessoryViewDescription[];
|
||||
|
||||
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
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "chrome/browser/component_updater/sth_set_component_installer.h"
|
||||
#include "chrome/browser/io_thread.h"
|
||||
#include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
|
||||
+#include "components/network_session_configurator/common/network_switches.h"
|
||||
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
||||
#include "chrome/browser/ssl/ssl_config_service_manager.h"
|
||||
#include "chrome/common/channel_info.h"
|
||||
@@ -122,6 +123,7 @@ void GetStubResolverConfig(
|
||||
if (!net::dns_util::IsValidDoHTemplate(
|
||||
doh_server_list[i].GetString(),
|
||||
doh_server_method_list[i].GetString())) {
|
||||
+ LOG(ERROR) << "Invalid DoH template: " << doh_server_list[i].GetString() << " with method " << doh_server_method_list[i].GetString();
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -401,15 +403,12 @@ SystemNetworkContextManager::SystemNetworkContextManager(
|
||||
base::Value(ShouldEnableAsyncDns()));
|
||||
base::ListValue default_doh_servers;
|
||||
base::ListValue default_doh_server_methods;
|
||||
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
|
||||
- std::string server(variations::GetVariationParamValueByFeature(
|
||||
- features::kDnsOverHttps, "server"));
|
||||
- std::string method(variations::GetVariationParamValueByFeature(
|
||||
- features::kDnsOverHttps, "method"));
|
||||
- if (!server.empty()) {
|
||||
- default_doh_servers.AppendString(server);
|
||||
- default_doh_server_methods.AppendString(method);
|
||||
- }
|
||||
+ std::string server =
|
||||
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
||||
+ switches::kDnsOverHttpsServer);
|
||||
+ if (!server.empty()) {
|
||||
+ default_doh_servers.AppendString(server);
|
||||
+ default_doh_server_methods.AppendString("POST");
|
||||
}
|
||||
local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsServers,
|
||||
std::move(default_doh_servers));
|
||||
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
|
||||
--- a/components/network_session_configurator/common/network_features.cc
|
||||
+++ b/components/network_session_configurator/common/network_features.cc
|
||||
@@ -8,7 +8,10 @@
|
||||
|
||||
namespace features {
|
||||
|
||||
-const base::Feature kDnsOverHttps{"dns-over-https",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+const char kDnsOverHttpsChoiceDefault[] = "Disabled",
|
||||
+ kDnsOverHttpsChoiceGoogle[] = "Google",
|
||||
+ kDnsOverHttpsChoiceCloudflare[] = "Cloudflare",
|
||||
+ kDnsOverHttpsChoiceQuad9[] = "Quad9",
|
||||
+ kDnsOverHttpsChoiceAdGuard[] = "AdGuard";
|
||||
|
||||
} // namespace features
|
||||
diff --git a/components/network_session_configurator/common/network_features.h b/components/network_session_configurator/common/network_features.h
|
||||
--- a/components/network_session_configurator/common/network_features.h
|
||||
+++ b/components/network_session_configurator/common/network_features.h
|
||||
@@ -10,9 +10,12 @@
|
||||
|
||||
namespace features {
|
||||
|
||||
-// Enabled DNS over HTTPS
|
||||
+// DNS over HTTPS server endpoint choices
|
||||
// (https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-12.txt).
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kDnsOverHttps;
|
||||
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kDnsOverHttpsChoiceDefault[],
|
||||
+ kDnsOverHttpsChoiceGoogle[], kDnsOverHttpsChoiceCloudflare[], kDnsOverHttpsChoiceQuad9[],
|
||||
+ kDnsOverHttpsChoiceAdGuard[];
|
||||
|
||||
} // namespace features
|
||||
|
||||
diff --git a/components/network_session_configurator/common/network_switch_list.h b/components/network_session_configurator/common/network_switch_list.h
|
||||
--- a/components/network_session_configurator/common/network_switch_list.h
|
||||
+++ b/components/network_session_configurator/common/network_switch_list.h
|
||||
@@ -32,6 +32,10 @@ NETWORK_SWITCH(kOriginToForceQuicOn, "origin-to-force-quic-on")
|
||||
// the server.
|
||||
NETWORK_SWITCH(kQuicConnectionOptions, "quic-connection-options")
|
||||
|
||||
+// Specifies an IETF DNS-over-HTTPS server endpoint
|
||||
+// (https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-02.txt).
|
||||
+NETWORK_SWITCH(kDnsOverHttpsServer, "dns-over-https-server")
|
||||
+
|
||||
// Specifies the maximum length for a QUIC packet.
|
||||
NETWORK_SWITCH(kQuicMaxPacketLength, "quic-max-packet-length")
|
||||
|
||||
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
|
||||
--- a/net/base/load_flags_list.h
|
||||
+++ b/net/base/load_flags_list.h
|
||||
@@ -105,3 +105,9 @@ LOAD_FLAG(SKIP_VARY_CHECK, 1 << 16)
|
||||
// does not complete in 60 seconds, the cache treat the stale resource as
|
||||
// invalid, as it did not specify stale-while-revalidate.
|
||||
LOAD_FLAG(SUPPORT_ASYNC_REVALIDATION, 1 << 17)
|
||||
+
|
||||
+// This load will not send Accept-Language or User-Agent headers, and not
|
||||
+// advertise brotli encoding.
|
||||
+// Used to comply with IETF (draft) DNS-over-HTTPS:
|
||||
+// "Implementors SHOULD NOT set non-essential HTTP headers in DoH client requests."
|
||||
+LOAD_FLAG(MINIMAL_HEADERS, 1 << 18)
|
||||
diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
|
||||
--- a/net/dns/dns_transaction.cc
|
||||
+++ b/net/dns/dns_transaction.cc
|
||||
@@ -358,29 +358,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
|
||||
extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
|
||||
|
||||
DCHECK(url_request_context);
|
||||
- request_ = url_request_context->CreateRequest(
|
||||
- url, request_priority_, this,
|
||||
- net::DefineNetworkTrafficAnnotation("dns_over_https", R"(
|
||||
- semantics {
|
||||
- sender: "DNS over HTTPS"
|
||||
- description: "Domain name resolution over HTTPS"
|
||||
- trigger: "User enters a navigates to a domain or Chrome otherwise "
|
||||
- "makes a connection to a domain whose IP address isn't cached"
|
||||
- data: "The domain name that is being requested"
|
||||
- destination: OTHER
|
||||
- destination_other: "The user configured DNS over HTTPS server, which"
|
||||
- "may be dns.google.com"
|
||||
- }
|
||||
- policy {
|
||||
- cookies_allowed: NO
|
||||
- setting:
|
||||
- "You can configure this feature via that 'dns_over_https_servers' and"
|
||||
- "'dns_over_https.method' prefs. Empty lists imply this feature is"
|
||||
- "disabled"
|
||||
- policy_exception_justification: "Experimental feature that"
|
||||
- "is disabled by default"
|
||||
- }
|
||||
- )"));
|
||||
+ request_ = url_request_context->CreateRequest(url, request_priority_, this);
|
||||
net_log_ = request_->net_log();
|
||||
|
||||
if (use_post) {
|
||||
@@ -396,6 +374,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
|
||||
|
||||
request_->SetExtraRequestHeaders(extra_request_headers);
|
||||
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
|
||||
+ LOAD_IGNORE_LIMITS | LOAD_MINIMAL_HEADERS |
|
||||
LOAD_BYPASS_PROXY);
|
||||
request_->set_allow_credentials(false);
|
||||
}
|
||||
@@ -815,7 +794,7 @@ class DnsTransactionImpl : public DnsTransaction,
|
||||
had_tcp_attempt_(false),
|
||||
doh_attempt_(false),
|
||||
first_server_index_(0),
|
||||
- request_priority_(DEFAULT_PRIORITY) {
|
||||
+ request_priority_(MAXIMUM_PRIORITY) {
|
||||
DCHECK(session_.get());
|
||||
DCHECK(!hostname_.empty());
|
||||
DCHECK(!callback_.is_null());
|
||||
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
|
||||
@@ -425,17 +425,21 @@ void URLRequestHttpJob::Start() {
|
||||
// plugin could set a referrer although sending the referrer is inhibited.
|
||||
request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
|
||||
|
||||
- // Our consumer should have made sure that this is a safe referrer. See for
|
||||
- // instance WebCore::FrameLoader::HideReferrer.
|
||||
- if (referrer.is_valid()) {
|
||||
- request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
|
||||
- referrer.spec());
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
|
||||
+ // Our consumer should have made sure that this is a safe referrer. See for
|
||||
+ // instance WebCore::FrameLoader::HideReferrer.
|
||||
+ if (referrer.is_valid()) {
|
||||
+ request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
|
||||
+ referrer.spec());
|
||||
+ }
|
||||
}
|
||||
|
||||
- request_info_.extra_headers.SetHeaderIfMissing(
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
|
||||
+ request_info_.extra_headers.SetHeaderIfMissing(
|
||||
HttpRequestHeaders::kUserAgent,
|
||||
http_user_agent_settings_ ?
|
||||
http_user_agent_settings_->GetUserAgent() : std::string());
|
||||
+ }
|
||||
|
||||
AddExtraHeaders();
|
||||
AddCookieHeaderAndStart();
|
||||
@@ -659,10 +663,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
|
||||
} else {
|
||||
// Advertise "br" encoding only if transferred data is opaque to proxy.
|
||||
bool advertise_brotli = false;
|
||||
- if (request()->context()->enable_brotli()) {
|
||||
- if (request()->url().SchemeIsCryptographic() ||
|
||||
- IsLocalhost(request()->url())) {
|
||||
- advertise_brotli = true;
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
|
||||
+ if (request()->context()->enable_brotli()) {
|
||||
+ if (request()->url().SchemeIsCryptographic() ||
|
||||
+ IsLocalhost(request()->url())) {
|
||||
+ advertise_brotli = true;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -680,7 +686,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
|
||||
}
|
||||
}
|
||||
|
||||
- if (http_user_agent_settings_) {
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS) && http_user_agent_settings_) {
|
||||
// Only add default Accept-Language if the request didn't have it
|
||||
// specified.
|
||||
std::string accept_language =
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -7,26 +7,26 @@ Allows to use a PAC script URL, automatic configuration and explicit proxy
|
||||
settings.
|
||||
Offer auto-complete for the proxy page URL.
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +
|
||||
.../android/java/res/xml/privacy_preferences.xml | 5 +
|
||||
.../chrome_autocomplete_provider_client.cc | 2 +
|
||||
chrome/browser/browser_resources.grd | 2 +
|
||||
.../prefs/chrome_command_line_pref_store.cc | 2 +-
|
||||
chrome/browser/resources/proxy_config.css | 61 ++++
|
||||
chrome/browser/resources/proxy_config.html | 78 ++++
|
||||
chrome/browser/resources/proxy_config.js | 252 +++++++++++++
|
||||
chrome/browser/ui/BUILD.gn | 2 +
|
||||
.../ui/webui/chrome_web_ui_controller_factory.cc | 3 +
|
||||
chrome/browser/ui/webui/proxy_config_ui.cc | 399 +++++++++++++++++++++
|
||||
chrome/browser/ui/webui/proxy_config_ui.h | 33 ++
|
||||
chrome/common/webui_url_constants.cc | 4 +
|
||||
chrome/common/webui_url_constants.h | 2 +
|
||||
.../policy/core/browser/proxy_policy_handler.cc | 2 +-
|
||||
components/proxy_config/proxy_config_dictionary.cc | 22 +-
|
||||
components/proxy_config/proxy_config_dictionary.h | 6 +-
|
||||
net/proxy_resolution/proxy_config.cc | 45 +++
|
||||
net/proxy_resolution/proxy_config.h | 3 +
|
||||
19 files changed, 914 insertions(+), 12 deletions(-)
|
||||
chrome/android/java/res/values/values.xml | 3 +
|
||||
.../java/res/xml/privacy_preferences.xml | 4 +
|
||||
.../chrome_autocomplete_provider_client.cc | 2 +
|
||||
chrome/browser/browser_resources.grd | 6 +
|
||||
.../prefs/chrome_command_line_pref_store.cc | 2 +-
|
||||
chrome/browser/resources/proxy_config.css | 61 +++
|
||||
chrome/browser/resources/proxy_config.html | 78 ++++
|
||||
chrome/browser/resources/proxy_config.js | 252 +++++++++++
|
||||
chrome/browser/ui/BUILD.gn | 2 +
|
||||
.../webui/chrome_web_ui_controller_factory.cc | 3 +
|
||||
chrome/browser/ui/webui/proxy_config_ui.cc | 395 ++++++++++++++++++
|
||||
chrome/browser/ui/webui/proxy_config_ui.h | 33 ++
|
||||
chrome/common/webui_url_constants.cc | 4 +
|
||||
chrome/common/webui_url_constants.h | 2 +
|
||||
.../core/browser/proxy_policy_handler.cc | 2 +-
|
||||
.../proxy_config/proxy_config_dictionary.cc | 22 +-
|
||||
.../proxy_config/proxy_config_dictionary.h | 6 +-
|
||||
net/proxy_resolution/proxy_config.cc | 45 ++
|
||||
net/proxy_resolution/proxy_config.h | 3 +
|
||||
19 files changed, 913 insertions(+), 12 deletions(-)
|
||||
create mode 100644 chrome/browser/resources/proxy_config.css
|
||||
create mode 100644 chrome/browser/resources/proxy_config.html
|
||||
create mode 100644 chrome/browser/resources/proxy_config.js
|
||||
@@ -36,7 +36,7 @@ Offer auto-complete for the proxy page URL.
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -81,6 +81,9 @@
|
||||
@@ -78,6 +78,9 @@
|
||||
<integer name="list_item_level_selected">1</integer>
|
||||
<integer name="list_item_level_incognito">2</integer>
|
||||
|
||||
@@ -49,48 +49,49 @@ 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
|
||||
@@ -5,8 +5,13 @@
|
||||
|
||||
<PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
@@ -6,6 +6,10 @@
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
+ <org.chromium.chrome.browser.preferences.HyperlinkPreference
|
||||
+ android:key="proxy"
|
||||
+ android:title="@string/proxy_title"
|
||||
+ app:url="@string/proxy_url" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="navigation_error"
|
||||
android:title="@string/navigation_error_title"
|
||||
android:key="search_suggestions"
|
||||
android:title="@string/search_suggestions_title"
|
||||
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
|
||||
@@ -236,6 +236,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
|
||||
@@ -256,6 +256,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
|
||||
std::vector<base::string16> builtins_to_provide;
|
||||
builtins_to_provide.push_back(
|
||||
base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
|
||||
builtins_to_provide.push_back(
|
||||
+ base::ASCIIToUTF16(chrome::kChromeUIProxyConfigURL));
|
||||
+ builtins_to_provide.push_back(
|
||||
+ base::ASCIIToUTF16(chrome::kChromeUIProxyConfigURL));
|
||||
builtins_to_provide.push_back(
|
||||
base::ASCIIToUTF16(chrome::kChromeUIChromeURLsURL));
|
||||
#if !defined(OS_ANDROID)
|
||||
builtins_to_provide.push_back(
|
||||
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
|
||||
@@ -213,6 +213,8 @@
|
||||
<include name="IDR_SNIPPETS_INTERNALS_CSS" file="resources\snippets_internals\snippets_internals.css" compress="gzip" type="BINDATA" />
|
||||
<include name="IDR_SNIPPETS_INTERNALS_JS" file="resources\snippets_internals\snippets_internals.js" compress="gzip" type="BINDATA" />
|
||||
<include name="IDR_SNIPPETS_INTERNALS_MOJO_JS" file="${root_gen_dir}\chrome\browser\ui\webui\snippets_internals\snippets_internals.mojom.js" use_base_dir="false" type="BINDATA" compress="gzip" />
|
||||
@@ -202,6 +202,12 @@
|
||||
<include name="IDR_HANGOUT_SERVICES_MANIFEST" file="resources\hangout_services\manifest.json" type="BINDATA" />
|
||||
</if>
|
||||
|
||||
+ <!-- Bromite Proxy Configuration UI. -->
|
||||
+ <if expr="is_android">
|
||||
+ <include name="IDR_PROXY_CONFIG_HTML" file="resources\proxy_config.html" flattenhtml="true" type="BINDATA" compress="gzip" />
|
||||
+ <include name="IDR_PROXY_CONFIG_JS" file="resources\proxy_config.js" type="BINDATA" compress="gzip" />
|
||||
</if>
|
||||
<include name="IDR_SUPERVISED_USER_INTERNALS_HTML" file="resources\supervised_user_internals.html" allowexternalscript="true" compress="gzip" type="BINDATA" />
|
||||
<include name="IDR_SUPERVISED_USER_INTERNALS_CSS" file="resources\supervised_user_internals.css" compress="gzip" type="BINDATA" />
|
||||
+ </if>
|
||||
+
|
||||
<!-- App Management. -->
|
||||
<if expr="not is_android">
|
||||
<include name="IDR_APP_MANAGEMENT_BITMAP_MOJO_LITE_JS" file="${root_gen_dir}\skia\public\mojom\bitmap.mojom-lite.js" use_base_dir="false" type="BINDATA" />
|
||||
diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc
|
||||
--- a/chrome/browser/prefs/chrome_command_line_pref_store.cc
|
||||
+++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc
|
||||
@@ -161,7 +161,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
|
||||
@@ -152,7 +152,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() {
|
||||
SetValue(
|
||||
proxy_config::prefs::kProxy,
|
||||
std::make_unique<base::Value>(ProxyConfigDictionary::CreateFixedServers(
|
||||
@@ -508,7 +509,7 @@ new file mode 100644
|
||||
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
||||
--- a/chrome/browser/ui/BUILD.gn
|
||||
+++ b/chrome/browser/ui/BUILD.gn
|
||||
@@ -271,6 +271,8 @@ jumbo_split_static_library("ui") {
|
||||
@@ -263,6 +263,8 @@ jumbo_static_library("ui") {
|
||||
"webui/metrics_handler.h",
|
||||
"webui/net_export_ui.cc",
|
||||
"webui/net_export_ui.h",
|
||||
@@ -516,19 +517,19 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
||||
+ "webui/proxy_config_ui.h",
|
||||
"webui/net_internals/net_internals_ui.cc",
|
||||
"webui/net_internals/net_internals_ui.h",
|
||||
"webui/ntp_tiles_internals_ui.cc",
|
||||
"webui/notifications_internals/notifications_internals_ui.cc",
|
||||
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
||||
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
||||
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "chrome/browser/ui/webui/password_manager_internals/password_manager_internals_ui.h"
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "chrome/browser/ui/webui/omnibox/omnibox_ui.h"
|
||||
#include "chrome/browser/ui/webui/policy_ui.h"
|
||||
#include "chrome/browser/ui/webui/predictors/predictors_ui.h"
|
||||
+#include "chrome/browser/ui/webui/proxy_config_ui.h"
|
||||
#include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h"
|
||||
#include "chrome/browser/ui/webui/settings/md_settings_ui.h"
|
||||
#include "chrome/browser/ui/webui/settings/settings_ui.h"
|
||||
#include "chrome/browser/ui/webui/settings_utils.h"
|
||||
@@ -386,6 +387,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
|
||||
@@ -376,6 +377,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
|
||||
return &NewWebUI<MemoryInternalsUI>;
|
||||
if (url.host_piece() == chrome::kChromeUINetExportHost)
|
||||
return &NewWebUI<NetExportUI>;
|
||||
@@ -536,12 +537,12 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom
|
||||
+ return &NewWebUI<ProxyConfigUI>;
|
||||
if (url.host_piece() == chrome::kChromeUINetInternalsHost)
|
||||
return &NewWebUI<NetInternalsUI>;
|
||||
if (url.host_piece() == chrome::kChromeUINTPTilesInternalsHost)
|
||||
if (url.host_piece() == chrome::kChromeUINotificationsInternalsHost)
|
||||
diff --git a/chrome/browser/ui/webui/proxy_config_ui.cc b/chrome/browser/ui/webui/proxy_config_ui.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/browser/ui/webui/proxy_config_ui.cc
|
||||
@@ -0,0 +1,399 @@
|
||||
@@ -0,0 +1,395 @@
|
||||
+/*
|
||||
+ This file is part of Bromite.
|
||||
+
|
||||
@@ -577,7 +578,6 @@ new file mode 100644
|
||||
+#include "base/strings/utf_string_conversions.h"
|
||||
+#include "base/values.h"
|
||||
+#include "chrome/browser/browser_process.h"
|
||||
+#include "chrome/browser/io_thread.h"
|
||||
+#include "chrome/browser/net/proxy_service_factory.h"
|
||||
+#include "chrome/browser/platform_util.h"
|
||||
+#include "chrome/browser/profiles/profile.h"
|
||||
@@ -606,10 +606,9 @@ new file mode 100644
|
||||
+ content::WebUIDataSource* source =
|
||||
+ content::WebUIDataSource::Create(chrome::kChromeUIProxyConfigHost);
|
||||
+
|
||||
+ source->SetJsonPath("strings.js");
|
||||
+ source->UseStringsJs();
|
||||
+ source->AddResourcePath("proxy_config.js", IDR_PROXY_CONFIG_JS);
|
||||
+ source->SetDefaultResource(IDR_PROXY_CONFIG_HTML);
|
||||
+ source->UseGzip();
|
||||
+ return source;
|
||||
+}
|
||||
+
|
||||
@@ -812,9 +811,7 @@ new file mode 100644
|
||||
+void ProxyConfigMessageHandler::OnApply(const base::ListValue* list) {
|
||||
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
+
|
||||
+ const base::Value::ListStorage& params = list->GetList();
|
||||
+
|
||||
+ if ((params.size() != 1) || !params[0].is_dict()) {
|
||||
+ if ((list->GetList().size() != 1) || !list->GetList()[0].is_dict()) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
@@ -982,7 +979,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
|
||||
@@ -177,6 +177,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
|
||||
@@ -182,6 +182,8 @@ const char kChromeUINativePhysicalWebDiagnosticsURL[] =
|
||||
const char kChromeUINativeScheme[] = "chrome-native";
|
||||
const char kChromeUIOfflineInternalsHost[] = "offline-internals";
|
||||
const char kChromeUIPhysicalWebDiagnosticsHost[] = "physical-web-diagnostics";
|
||||
@@ -991,15 +988,15 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons
|
||||
const char kChromeUISnippetsInternalsHost[] = "snippets-internals";
|
||||
const char kChromeUIWebApksHost[] = "webapks";
|
||||
#endif
|
||||
@@ -354,6 +356,7 @@ const char* const kChromeHostURLs[] = {
|
||||
kChromeUIPasswordManagerInternalsHost,
|
||||
kChromeUIPolicyHost,
|
||||
kChromeUIPredictorsHost,
|
||||
+ kChromeUIProxyConfigHost,
|
||||
kChromeUIQuotaInternalsHost,
|
||||
kChromeUISignInInternalsHost,
|
||||
kChromeUISiteEngagementHost,
|
||||
@@ -388,6 +391,7 @@ const char* const kChromeHostURLs[] = {
|
||||
@@ -461,6 +463,7 @@ bool IsOSSettingsSubPage(const std::string& sub_page) {
|
||||
kResetSubPage,
|
||||
kSmartLockSettingsSubPage,
|
||||
kSmbSharesSubPage,
|
||||
+ kChromeUIProxyConfigHost,
|
||||
kStorageSubPage,
|
||||
kStylusSubPage,
|
||||
kSwitchAccessSubPage,
|
||||
@@ -561,6 +564,7 @@ const char* const kChromeHostURLs[] = {
|
||||
#if !defined(OS_ANDROID)
|
||||
#if !defined(OS_CHROMEOS)
|
||||
kChromeUIAppLauncherPageHost,
|
||||
@@ -1010,7 +1007,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
|
||||
@@ -102,6 +102,8 @@ extern const char kChromeUIMemoryInternalsHost[];
|
||||
@@ -105,6 +105,8 @@ extern const char kChromeUIMemoryInternalsHost[];
|
||||
extern const char kChromeUINTPTilesInternalsHost[];
|
||||
extern const char kChromeUINaClHost[];
|
||||
extern const char kChromeUINetExportHost[];
|
||||
@@ -1191,7 +1188,7 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c
|
||||
diff --git a/net/proxy_resolution/proxy_config.h b/net/proxy_resolution/proxy_config.h
|
||||
--- a/net/proxy_resolution/proxy_config.h
|
||||
+++ b/net/proxy_resolution/proxy_config.h
|
||||
@@ -104,6 +104,9 @@ class NET_EXPORT ProxyConfig {
|
||||
@@ -103,6 +103,9 @@ class NET_EXPORT ProxyConfig {
|
||||
// and use socks4://foopy2 for all other
|
||||
// URLs.
|
||||
void ParseFromString(const std::string& proxy_rules);
|
||||
@@ -1202,5 +1199,5 @@ diff --git a/net/proxy_resolution/proxy_config.h b/net/proxy_resolution/proxy_co
|
||||
// Returns one of {&proxies_for_http, &proxies_for_https, &proxies_for_ftp,
|
||||
// &fallback_proxies}, or NULL if there is no proxy to use.
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -5,24 +5,35 @@ Subject: Add an always-incognito mode
|
||||
More specifically, add a preference that causes all new tabs and all
|
||||
clicked links to launch as incognito.
|
||||
---
|
||||
.../android/java/res/xml/privacy_preferences.xml | 5 ++
|
||||
.../browser/AlwaysIncognitoLinkInterceptor.java | 73 ++++++++++++++++++++++
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 4 ++
|
||||
.../chrome/browser/appmenu/AppMenuHandler.java | 12 ++++
|
||||
.../contextmenu/ChromeContextMenuPopulator.java | 9 ++-
|
||||
.../chrome/browser/tabmodel/ChromeTabCreator.java | 24 ++++++-
|
||||
.../java/strings/android_chrome_strings.grd | 6 ++
|
||||
chrome/android/java_sources.gni | 1 +
|
||||
8 files changed, 132 insertions(+), 2 deletions(-)
|
||||
chrome/android/chrome_java_sources.gni | 1 +
|
||||
.../java/res/xml/privacy_preferences.xml | 5 ++
|
||||
.../AlwaysIncognitoLinkInterceptor.java | 73 +++++++++++++++++++
|
||||
.../chrome/browser/ChromeActivity.java | 5 ++
|
||||
.../browser/appmenu/AppMenuHandlerImpl.java | 10 +++
|
||||
.../ChromeContextMenuPopulator.java | 9 ++-
|
||||
.../browser/tabmodel/ChromeTabCreator.java | 20 ++++-
|
||||
.../java/strings/android_chrome_strings.grd | 8 ++
|
||||
8 files changed, 129 insertions(+), 2 deletions(-)
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.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
|
||||
@@ -3,6 +3,7 @@
|
||||
# found in the LICENSE file.
|
||||
|
||||
chrome_java_sources = [
|
||||
+ "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.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/AfterStartupTaskUtils.java",
|
||||
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
|
||||
@@ -39,6 +39,11 @@
|
||||
android:key="usage_and_crash_reports"
|
||||
android:title="@string/usage_and_crash_reports_title_legacy"
|
||||
android:fragment="org.chromium.chrome.browser.preferences.privacy.UsageAndCrashReportsPreferenceFragment" />
|
||||
@@ -20,6 +20,11 @@
|
||||
android:title="@string/preload_pages_title"
|
||||
android:summary="@string/preload_pages_summary"
|
||||
android:persistent="false" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="always_incognito"
|
||||
+ android:title="@string/always_incognito_title"
|
||||
@@ -112,15 +123,16 @@ new file mode 100644
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
@@ -260,6 +260,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
|
||||
@@ -228,6 +228,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
|
||||
private static final int RECORD_MULTI_WINDOW_SCREEN_WIDTH_DELAY_MS = 5000;
|
||||
|
||||
// Observes when sync becomes ready to create the mContextReporter.
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
|
||||
|
||||
@Nullable
|
||||
@@ -1731,6 +1732,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
+
|
||||
/**
|
||||
* Timeout in ms for reading PartnerBrowserCustomizations provider.
|
||||
*/
|
||||
@@ -1706,6 +1708,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
throw new IllegalStateException(
|
||||
"Attempting to access TabCreator before initialization");
|
||||
}
|
||||
@@ -130,37 +142,35 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
|
||||
return incognito ? mIncognitoTabCreator : mRegularTabCreator;
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
|
||||
@@ -17,6 +17,7 @@ import android.view.View;
|
||||
import android.widget.PopupMenu;
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
|
||||
@@ -20,6 +20,7 @@ import android.widget.PopupMenu;
|
||||
|
||||
import org.chromium.base.metrics.RecordUserAction;
|
||||
import org.chromium.base.Callback;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.metrics.RecordUserAction;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
|
||||
@@ -58,6 +59,8 @@ class AppMenuHandlerImpl
|
||||
*/
|
||||
private Integer mHighlightMenuId;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -26,6 +27,9 @@ import java.util.ArrayList;
|
||||
* AppMenuObservers about these actions.
|
||||
*/
|
||||
public class AppMenuHandler {
|
||||
+
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
+
|
||||
private AppMenu mAppMenu;
|
||||
private AppMenuDragHelper mAppMenuDragHelper;
|
||||
private Menu mMenu;
|
||||
@@ -182,6 +186,14 @@ public class AppMenuHandler {
|
||||
/**
|
||||
* Whether the highlighted item should use a circle highlight or not.
|
||||
*/
|
||||
@@ -208,6 +211,13 @@ class AppMenuHandlerImpl
|
||||
if (mDelegate.shouldShowHeader(appRect.height())) {
|
||||
headerResourceId = mDelegate.getHeaderResourceId();
|
||||
}
|
||||
+
|
||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
|
||||
+ final MenuItem newTabOption = mAppMenu.getMenu().findItem(R.id.new_tab_menu_id);
|
||||
+ if (newTabOption != null) {
|
||||
+ if (newTabOption != null)
|
||||
+ newTabOption.setVisible(false);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
|
||||
@@ -169,7 +179,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
@@ -14,6 +14,7 @@ import android.webkit.MimeTypeMap;
|
||||
@@ -16,6 +16,7 @@ import androidx.annotation.IntDef;
|
||||
|
||||
import org.chromium.base.library_loader.LibraryProcessType;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
@@ -177,15 +187,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabPanel;
|
||||
@@ -44,6 +45,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||
@@ -47,6 +48,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||
private static final String TAG = "CCMenuPopulator";
|
||||
private final ContextMenuItemDelegate mDelegate;
|
||||
private final @ContextMenuMode int mMode;
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
private boolean mEnableLensWithSearchByImageText;
|
||||
|
||||
/**
|
||||
* Defines the Groups of each Context Menu Item
|
||||
@@ -252,7 +254,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||
@@ -301,7 +303,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||
if (FirstRunStatus.getFirstRunFlowComplete() && mMode == ContextMenuMode.NORMAL
|
||||
&& !isEmptyUrl(params.getUrl())
|
||||
&& UrlUtilities.isAcceptedScheme(params.getUrl())) {
|
||||
@@ -193,18 +203,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
|
||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)
|
||||
+ && !mDelegate.isIncognito()) {
|
||||
+ // disallow open in new tab
|
||||
+ } else {
|
||||
+ } else
|
||||
+ linkTab.add(new ChromeContextMenuItem(Item.OPEN_IN_NEW_TAB));
|
||||
+ }
|
||||
+
|
||||
if (!mDelegate.isIncognito() && mDelegate.isIncognitoSupported()) {
|
||||
linkTab.add(new ChromeContextMenuItem(Item.OPEN_IN_INCOGNITO_TAB));
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||
@@ -7,8 +7,10 @@ package org.chromium.chrome.browser.tabmodel;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
@@ -9,8 +9,10 @@ import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.SysUtils;
|
||||
@@ -213,58 +223,55 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
|
||||
import org.chromium.chrome.browser.ChromeActivity;
|
||||
import org.chromium.chrome.browser.IntentHandler;
|
||||
import org.chromium.chrome.browser.ServiceTabLauncher;
|
||||
@@ -16,6 +18,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
|
||||
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
@@ -19,6 +21,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tab.TabAssociatedApp;
|
||||
import org.chromium.chrome.browser.tab.TabBuilder;
|
||||
+import org.chromium.chrome.browser.tab.TabObserver;
|
||||
import org.chromium.chrome.browser.tab.TabDelegateFactory;
|
||||
import org.chromium.chrome.browser.tab.TabParentIntent;
|
||||
import org.chromium.chrome.browser.tab.TabRedirectHandler;
|
||||
@@ -35,6 +38,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
|
||||
@@ -40,6 +43,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
private final ChromeActivity mActivity;
|
||||
private final StartupTabPreloader mStartupTabPreloader;
|
||||
private final boolean mIncognito;
|
||||
+ private final TabObserver mExtraLogic;
|
||||
|
||||
private WindowAndroid mNativeWindow;
|
||||
private TabModel mTabModel;
|
||||
@@ -46,6 +50,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
mActivity = activity;
|
||||
@@ -51,6 +55,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
mStartupTabPreloader = startupTabPreloader;
|
||||
mNativeWindow = nativeWindow;
|
||||
mIncognito = incognito;
|
||||
+ if (!mIncognito) {
|
||||
+ if (!mIncognito)
|
||||
+ mExtraLogic = new AlwaysIncognitoLinkInterceptor(ContextUtils.getAppSharedPreferences());
|
||||
+ } else {
|
||||
+ else
|
||||
+ mExtraLogic = null;
|
||||
+ }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -170,6 +179,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
@@ -186,6 +194,9 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
tab.getWebContents());
|
||||
}
|
||||
|
||||
+ if (mExtraLogic != null) {
|
||||
+ if (mExtraLogic != null)
|
||||
+ tab.addObserver(mExtraLogic);
|
||||
+ }
|
||||
+
|
||||
mTabModel.addTab(tab, position, type);
|
||||
return tab;
|
||||
} finally {
|
||||
@@ -198,6 +211,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
.setLaunchType(type)
|
||||
@@ -217,6 +228,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
.setDelegateFactory(delegateFactory)
|
||||
.setInitiallyHidden(!openInForeground)
|
||||
.build();
|
||||
tab.initialize(webContents, mTabContentManager, delegateFactory, !openInForeground, false);
|
||||
+
|
||||
+ if (mExtraLogic != null) {
|
||||
+ if (mExtraLogic != null)
|
||||
+ tab.addObserver(mExtraLogic);
|
||||
+ }
|
||||
+
|
||||
mTabModel.addTab(tab, position, type);
|
||||
return true;
|
||||
}
|
||||
@@ -240,7 +258,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
@@ -259,7 +274,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
*/
|
||||
public Tab launchUrlFromExternalApp(String url, String referer, String headers,
|
||||
String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
|
||||
@@ -272,14 +279,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
|
||||
boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
|
||||
|
||||
// If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
|
||||
@@ -304,6 +321,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
tab.initialize(
|
||||
null, mTabContentManager, createDefaultTabDelegateFactory(), !selectTab, false);
|
||||
@@ -326,6 +340,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
.setTabState(state)
|
||||
.build();
|
||||
assert state.isIncognito() == mIncognito;
|
||||
+
|
||||
+ if (mExtraLogic != null) {
|
||||
+ if (mExtraLogic != null)
|
||||
+ tab.addObserver(mExtraLogic);
|
||||
+ }
|
||||
+
|
||||
mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
|
||||
return tab;
|
||||
@@ -287,30 +293,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -722,6 +722,12 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Body text for Chrome setting under 'Help Improve Safe Browsing'. This feature sends small amounts of data to Google about potentially-dangerous pages to help Safe Browsing improve Chrome's protection against malware and phishing.">
|
||||
Sends some system information and page content to Google
|
||||
@@ -669,6 +669,14 @@ CHAR-LIMIT guidelines:
|
||||
Search and site suggestions disabled
|
||||
</message>
|
||||
|
||||
+ <!-- always incognito -->
|
||||
+ <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
|
||||
+ Open links in incognito tabs always
|
||||
+ </message>
|
||||
+ <message name="IDS_ALWAYS_INCOGNITO_SUMMARY" desc="Summary for always incognito mode">
|
||||
+ Opens links in incognito tabs when you click on new tab or on a link
|
||||
+ </message>
|
||||
<message name="IDS_SAFE_BROWSING_TITLE" desc="Title for safe browsing.">
|
||||
Safe Browsing
|
||||
</message>
|
||||
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
|
||||
--- a/chrome/android/java_sources.gni
|
||||
+++ b/chrome/android/java_sources.gni
|
||||
@@ -10,6 +10,7 @@ import("//components/offline_pages/buildflags/features.gni")
|
||||
import("//device/vr/buildflags/buildflags.gni")
|
||||
|
||||
chrome_java_sources = [
|
||||
+ "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.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/ActivityTabTaskDescriptionHelper.java",
|
||||
+
|
||||
<!-- Themes preferences -->
|
||||
<message name="IDS_PREFS_THEMES" desc="Title for the Themes preferences. [CHAR-LIMIT=32]">
|
||||
Themes
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -6,34 +6,34 @@ Add bookmark import/export actions in bookmarks activity and page
|
||||
Reduce permissions needed for bookmarks import/export
|
||||
Completely remove contacts picker permission from the file dialog
|
||||
---
|
||||
chrome/android/java/AndroidManifest.xml | 1 -
|
||||
.../java/res/menu/bookmark_action_bar_menu.xml | 14 ++
|
||||
.../browser/bookmarks/BookmarkActionBar.java | 12 ++
|
||||
.../chrome/browser/bookmarks/BookmarkActivity.java | 15 ++
|
||||
.../chrome/browser/bookmarks/BookmarkBridge.java | 46 +++++
|
||||
.../chrome/browser/bookmarks/BookmarkDelegate.java | 10 +
|
||||
.../chrome/browser/bookmarks/BookmarkManager.java | 20 ++
|
||||
.../chrome/browser/bookmarks/BookmarkPage.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 6 +
|
||||
chrome/browser/BUILD.gn | 8 +-
|
||||
.../browser/android/bookmarks/bookmark_bridge.cc | 215 +++++++++++++++++++++
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.h | 20 +-
|
||||
chrome/browser/importer/profile_writer.cc | 12 ++
|
||||
chrome/browser/importer/profile_writer.h | 6 +
|
||||
chrome/common/BUILD.gn | 3 +
|
||||
chrome/utility/BUILD.gn | 7 +-
|
||||
chrome/utility/importer/bookmark_html_reader.cc | 27 ++-
|
||||
chrome/utility/importer/bookmark_html_reader.h | 9 +
|
||||
.../src/org/chromium/ui/base/SelectFileDialog.java | 18 +-
|
||||
ui/shell_dialogs/select_file_dialog.h | 2 +
|
||||
ui/shell_dialogs/select_file_dialog_android.cc | 6 +
|
||||
ui/shell_dialogs/select_file_dialog_android.h | 2 +
|
||||
22 files changed, 445 insertions(+), 15 deletions(-)
|
||||
chrome/android/java/AndroidManifest.xml | 1 -
|
||||
.../res/menu/bookmark_action_bar_menu.xml | 14 ++
|
||||
.../browser/bookmarks/BookmarkActionBar.java | 12 +
|
||||
.../browser/bookmarks/BookmarkActivity.java | 15 ++
|
||||
.../browser/bookmarks/BookmarkBridge.java | 47 ++++
|
||||
.../browser/bookmarks/BookmarkDelegate.java | 10 +
|
||||
.../browser/bookmarks/BookmarkManager.java | 20 ++
|
||||
.../browser/bookmarks/BookmarkPage.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 6 +
|
||||
chrome/browser/BUILD.gn | 8 +-
|
||||
.../android/bookmarks/bookmark_bridge.cc | 215 ++++++++++++++++++
|
||||
.../android/bookmarks/bookmark_bridge.h | 20 +-
|
||||
chrome/browser/importer/profile_writer.cc | 12 +
|
||||
chrome/browser/importer/profile_writer.h | 6 +
|
||||
chrome/common/BUILD.gn | 3 +
|
||||
chrome/utility/BUILD.gn | 7 +-
|
||||
.../utility/importer/bookmark_html_reader.cc | 27 ++-
|
||||
.../utility/importer/bookmark_html_reader.h | 9 +
|
||||
.../chromium/ui/base/SelectFileDialog.java | 18 +-
|
||||
ui/shell_dialogs/select_file_dialog.h | 2 +
|
||||
.../select_file_dialog_android.cc | 6 +
|
||||
ui/shell_dialogs/select_file_dialog_android.h | 2 +
|
||||
22 files changed, 447 insertions(+), 14 deletions(-)
|
||||
|
||||
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
|
||||
@@ -35,7 +35,6 @@ by a child template that "extends" this file.
|
||||
@@ -34,7 +34,6 @@ by a child template that "extends" this file.
|
||||
{% endif %}
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
@@ -44,10 +44,11 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
|
||||
diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
--- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
+++ b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
@@ -22,6 +22,20 @@
|
||||
@@ -21,6 +21,20 @@
|
||||
android:visible="false"
|
||||
app:showAsAction="ifRoom"
|
||||
app:iconTint="@color/standard_mode_tint" />
|
||||
<item
|
||||
+ <item
|
||||
+ android:id="@+id/import_menu_id"
|
||||
+ android:icon="@drawable/ic_folder_blue_24dp"
|
||||
+ android:title="@string/import_bookmarks"
|
||||
@@ -61,14 +62,13 @@ diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/
|
||||
+ android:visible="true"
|
||||
+ app:showAsAction="ifRoom"
|
||||
+ app:iconTint="@color/standard_mode_tint" />
|
||||
+ <item
|
||||
<item
|
||||
android:id="@+id/close_menu_id"
|
||||
android:icon="@drawable/btn_close"
|
||||
android:title="@string/bookmark_action_bar_close"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
|
||||
@@ -89,6 +89,12 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -82,6 +82,12 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
} else if (menuItem.getItemId() == R.id.search_menu_id) {
|
||||
mDelegate.openSearchUI();
|
||||
return true;
|
||||
@@ -81,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
}
|
||||
|
||||
SelectionDelegate<BookmarkId> selectionDelegate = mDelegate.getSelectionDelegate();
|
||||
@@ -132,6 +138,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -133,6 +139,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
void showLoadingUi() {
|
||||
setTitle(null);
|
||||
setNavigationButton(NAVIGATION_BUTTON_NONE);
|
||||
@@ -90,7 +90,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
getMenu().findItem(R.id.search_menu_id).setVisible(false);
|
||||
getMenu().findItem(R.id.edit_menu_id).setVisible(false);
|
||||
}
|
||||
@@ -141,6 +149,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -142,6 +150,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
super.showNormalView();
|
||||
|
||||
if (mDelegate == null) {
|
||||
@@ -99,7 +99,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
getMenu().findItem(R.id.search_menu_id).setVisible(false);
|
||||
getMenu().findItem(R.id.edit_menu_id).setVisible(false);
|
||||
}
|
||||
@@ -173,6 +183,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -172,6 +182,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
public void onFolderStateSet(BookmarkId folder) {
|
||||
mCurrentFolder = mDelegate.getModel().getBookmarkById(folder);
|
||||
|
||||
@@ -113,7 +113,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
|
||||
@@ -12,6 +12,7 @@ import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.chrome.browser.SnackbarActivity;
|
||||
import org.chromium.chrome.browser.UrlConstants;
|
||||
import org.chromium.chrome.browser.util.UrlConstants;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
+import org.chromium.ui.base.ActivityWindowAndroid;
|
||||
|
||||
@@ -166,35 +166,32 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
+import android.net.Uri;
|
||||
import android.os.SystemClock;
|
||||
+import android.provider.Browser;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Pair;
|
||||
@@ -23,6 +27,11 @@ import org.chromium.components.bookmarks.BookmarkType;
|
||||
import org.chromium.components.url_formatter.UrlFormatter;
|
||||
import org.chromium.content_public.browser.WebContents;
|
||||
|
||||
@@ -13,11 +17,15 @@ import org.chromium.base.ObserverList;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
|
||||
+import org.chromium.chrome.browser.IntentHandler;
|
||||
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
import org.chromium.components.bookmarks.BookmarkType;
|
||||
import org.chromium.components.url_formatter.UrlFormatter;
|
||||
+import org.chromium.ui.base.PageTransition;
|
||||
+import org.chromium.ui.base.WindowAndroid;
|
||||
|
||||
+
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -507,6 +515,24 @@ public class BookmarkBridge {
|
||||
|
||||
@@ -553,6 +562,24 @@ public class BookmarkBridge {
|
||||
mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType());
|
||||
}
|
||||
|
||||
/**
|
||||
+ /**
|
||||
+ * Import bookmarks from a selected file.
|
||||
+ * @param window The current window of the bookmarks activity or page.
|
||||
+ */
|
||||
+ public void importBookmarks(WindowAndroid window) {
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ nativeImportBookmarks(mNativeBookmarkBridge, window);
|
||||
+ BookmarkBridgeJni.get().importBookmarks(mNativeBookmarkBridge, BookmarkBridge.this, window);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
@@ -203,14 +200,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
+ */
|
||||
+ public void exportBookmarks() {
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ nativeExportBookmarks(mNativeBookmarkBridge);
|
||||
+ BookmarkBridgeJni.get().exportBookmarks(mNativeBookmarkBridge, BookmarkBridge.this);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
/**
|
||||
* Synchronously gets a list of bookmarks that match the specified search query.
|
||||
* @param query Keyword used for searching bookmarks.
|
||||
* @param maxNumberOfResult Maximum number of result to fetch.
|
||||
@@ -839,6 +865,24 @@ public class BookmarkBridge {
|
||||
@@ -914,6 +941,24 @@ public class BookmarkBridge {
|
||||
depthList.add(depth);
|
||||
}
|
||||
|
||||
@@ -235,22 +231,23 @@ 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<Pair<Integer, Integer>>();
|
||||
for (int i = 0; i < left.length; i++) {
|
||||
@@ -905,6 +949,8 @@ public class BookmarkBridge {
|
||||
boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
|
||||
private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type,
|
||||
int index);
|
||||
+ private native void nativeImportBookmarks(long nativeBookmarkBridge, WindowAndroid window);
|
||||
+ private native void nativeExportBookmarks(long nativeBookmarkBridge);
|
||||
private native int nativeGetTotalBookmarkCount(long nativeBookmarkBridge, long id, int type);
|
||||
private native void nativeSetBookmarkTitle(long nativeBookmarkBridge, long id, int type,
|
||||
String title);
|
||||
@@ -982,6 +1027,8 @@ public class BookmarkBridge {
|
||||
int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type);
|
||||
void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type,
|
||||
boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
|
||||
+ void importBookmarks(long nativeBookmarkBridge, BookmarkBridge caller, WindowAndroid window);
|
||||
+ void exportBookmarks(long nativeBookmarkBridge, BookmarkBridge caller);
|
||||
BookmarkId getChildAt(
|
||||
long nativeBookmarkBridge, BookmarkBridge caller, long id, int type, int index);
|
||||
int getTotalBookmarkCount(
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
|
||||
@@ -69,6 +69,16 @@ interface BookmarkDelegate {
|
||||
*/
|
||||
void openSearchUI();
|
||||
|
||||
/**
|
||||
+ /**
|
||||
+ * Imports bookmarks from user-selected file.
|
||||
+ */
|
||||
+ void importBookmarks();
|
||||
@@ -260,22 +257,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
+ */
|
||||
+ void exportBookmarks();
|
||||
+
|
||||
+ /**
|
||||
/**
|
||||
* Dismisses the search UI.
|
||||
*/
|
||||
void closeSearchUI();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
|
||||
@@ -21,6 +21,7 @@ import org.chromium.base.metrics.RecordUserAction;
|
||||
import org.chromium.chrome.R;
|
||||
@@ -23,6 +23,7 @@ import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
|
||||
+import org.chromium.chrome.browser.ChromeActivity;
|
||||
import org.chromium.chrome.browser.favicon.LargeIconBridge;
|
||||
import org.chromium.chrome.browser.gesturenav.HistoryNavigationDelegate;
|
||||
import org.chromium.chrome.browser.native_page.BasicNativePage;
|
||||
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
|
||||
@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
|
||||
@@ -35,6 +36,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
|
||||
import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
|
||||
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
@@ -283,7 +279,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
@@ -55,6 +57,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
@@ -59,6 +61,7 @@ public class BookmarkManager
|
||||
private Activity mActivity;
|
||||
private ViewGroup mMainView;
|
||||
private BookmarkModel mBookmarkModel;
|
||||
@@ -291,24 +287,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
private BookmarkUndoController mUndoController;
|
||||
private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
|
||||
private BasicNativePage mNativePage;
|
||||
@@ -266,6 +269,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
@@ -374,6 +377,13 @@ public class BookmarkManager
|
||||
mSelectableListLayout.setHistoryNavigationDelegate(delegate);
|
||||
}
|
||||
|
||||
/**
|
||||
+ /**
|
||||
+ * Sets the Android window that is used by further intents created by the bookmark activity.
|
||||
+ */
|
||||
+ public void setWindow(ActivityWindowAndroid window) {
|
||||
+ mWindowAndroid = window;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
/**
|
||||
* @return Current URL representing the UI state of bookmark manager. If no state has been shown
|
||||
* yet in this session, on phone return last used state stored in preference; on tablet
|
||||
* return the url previously set by {@link #updateForUrl(String)}.
|
||||
@@ -413,6 +423,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
@@ -547,6 +557,16 @@ public class BookmarkManager
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
+ @Override
|
||||
+ public void importBookmarks() {
|
||||
+ mBookmarkModel.importBookmarks(mWindowAndroid);
|
||||
+ }
|
||||
@@ -318,10 +315,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
+ mBookmarkModel.exportBookmarks();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
@Override
|
||||
public void openSearchUI() {
|
||||
setState(BookmarkUIState.createSearchState());
|
||||
mSelectableListLayout.onStartSearch();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
|
||||
@@ -329,14 +325,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
mManager = new BookmarkManager(
|
||||
activity, false, ((SnackbarManageable) activity).getSnackbarManager());
|
||||
mManager.setBasicNativePage(this);
|
||||
+ mManager.setWindow(activity.getWindowAndroid());
|
||||
+ mManager.setWindow(activity.getWindowAndroid());
|
||||
mManager.setHistoryNavigationDelegate(host.createHistoryNavigationDelegate());
|
||||
mTitle = activity.getString(R.string.bookmarks);
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -233,6 +233,12 @@ CHAR-LIMIT guidelines:
|
||||
@@ -230,6 +230,12 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_SEARCH" desc="The label for a search button.">
|
||||
Search
|
||||
</message>
|
||||
@@ -352,7 +348,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
|
||||
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
--- a/chrome/browser/BUILD.gn
|
||||
+++ b/chrome/browser/BUILD.gn
|
||||
@@ -163,6 +163,10 @@ jumbo_split_static_library("browser") {
|
||||
@@ -163,6 +163,10 @@ jumbo_static_library("browser") {
|
||||
"bitmap_fetcher/bitmap_fetcher_service.h",
|
||||
"bitmap_fetcher/bitmap_fetcher_service_factory.cc",
|
||||
"bitmap_fetcher/bitmap_fetcher_service_factory.h",
|
||||
@@ -362,9 +358,9 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
+ "bookmarks/bookmark_html_writer.h",
|
||||
"bookmarks/bookmark_model_factory.cc",
|
||||
"bookmarks/bookmark_model_factory.h",
|
||||
"bookmarks/bookmark_stats.cc",
|
||||
@@ -2769,8 +2773,6 @@ jumbo_split_static_library("browser") {
|
||||
"banners/app_banner_infobar_delegate_desktop.h",
|
||||
"bookmarks/chrome_bookmark_client.cc",
|
||||
@@ -2953,8 +2957,6 @@ jumbo_static_library("browser") {
|
||||
"badging/badge_manager_factory.h",
|
||||
"banners/app_banner_manager_desktop.cc",
|
||||
"banners/app_banner_manager_desktop.h",
|
||||
- "bookmarks/bookmark_html_writer.cc",
|
||||
@@ -372,7 +368,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
"certificate_viewer.h",
|
||||
"chrome_browser_field_trials_desktop.cc",
|
||||
"chrome_browser_field_trials_desktop.h",
|
||||
@@ -2859,8 +2861,6 @@ jumbo_split_static_library("browser") {
|
||||
@@ -3059,8 +3061,6 @@ jumbo_static_library("browser") {
|
||||
"importer/importer_uma.h",
|
||||
"importer/in_process_importer_bridge.cc",
|
||||
"importer/in_process_importer_bridge.h",
|
||||
@@ -384,52 +380,29 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
@@ -9,19 +9,30 @@
|
||||
|
||||
#include <memory>
|
||||
@@ -43,6 +43,21 @@
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
|
||||
+#include "base/android/content_uri_utils.h"
|
||||
#include "base/android/jni_array.h"
|
||||
#include "base/android/jni_string.h"
|
||||
#include "base/bind.h"
|
||||
+#include "base/android/path_utils.h"
|
||||
#include "base/containers/stack.h"
|
||||
#include "base/containers/stack_container.h"
|
||||
#include "base/i18n/string_compare.h"
|
||||
+#include "base/strings/utf_string_conversions.h"
|
||||
+#include "chrome/utility/importer/bookmark_html_reader.h"
|
||||
+#include "chrome/browser/bookmarks/bookmark_html_writer.h"
|
||||
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
|
||||
#include "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
|
||||
+#include "chrome/browser/importer/profile_writer.h"
|
||||
+#include "chrome/browser/platform_util.h"
|
||||
+#include "chrome/browser/ui/chrome_select_file_policy.h"
|
||||
#include "chrome/browser/profiles/incognito_helpers.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_android.h"
|
||||
#include "chrome/browser/signin/identity_manager_factory.h"
|
||||
#include "chrome/browser/undo/bookmark_undo_service_factory.h"
|
||||
+#include "chrome/common/importer/imported_bookmark_entry.h"
|
||||
+#include "chrome/common/importer/importer_data_types.h"
|
||||
+#include "chrome/common/url_constants.h"
|
||||
#include "components/bookmarks/browser/bookmark_model.h"
|
||||
#include "components/bookmarks/browser/bookmark_utils.h"
|
||||
#include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
|
||||
@@ -31,10 +42,13 @@
|
||||
#include "components/bookmarks/managed/managed_bookmark_service.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/query_parser/query_parser.h"
|
||||
+#include "components/search_engines/template_url.h"
|
||||
#include "components/undo/bookmark_undo_service.h"
|
||||
#include "components/undo/undo_manager.h"
|
||||
+#include "components/url_formatter/url_fixer.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "jni/BookmarkBridge_jni.h"
|
||||
+#include "ui/android/window_android.h"
|
||||
#include "services/identity/public/cpp/identity_manager.h"
|
||||
|
||||
+
|
||||
using base::android::AttachCurrentThread;
|
||||
@@ -54,6 +68,57 @@ using bookmarks::BookmarkPermanentNode;
|
||||
using base::android::ConvertUTF8ToJavaString;
|
||||
using base::android::ConvertUTF16ToJavaString;
|
||||
@@ -60,6 +75,56 @@ using bookmarks::BookmarkPermanentNode;
|
||||
using bookmarks::BookmarkType;
|
||||
using content::BrowserThread;
|
||||
|
||||
@@ -457,8 +430,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ // that we support.
|
||||
+ if (url.SchemeIs(content::kChromeUIScheme) ||
|
||||
+ url.SchemeIs(url::kAboutScheme)) {
|
||||
+ if (url.host_piece() == chrome::kChromeUIUberHost ||
|
||||
+ url.host_piece() == chrome::kChromeUIAboutHost)
|
||||
+ if (url.host_piece() == chrome::kChromeUIAboutHost)
|
||||
+ return true;
|
||||
+
|
||||
+ GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string()));
|
||||
@@ -486,8 +458,8 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+
|
||||
namespace {
|
||||
|
||||
class BookmarkTitleComparer {
|
||||
@@ -130,6 +195,10 @@ BookmarkBridge::~BookmarkBridge() {
|
||||
const int kInvalidId = -1;
|
||||
@@ -138,6 +203,10 @@ BookmarkBridge::~BookmarkBridge() {
|
||||
bookmark_model_->RemoveObserver(this);
|
||||
if (partner_bookmarks_shim_)
|
||||
partner_bookmarks_shim_->RemoveObserver(this);
|
||||
@@ -498,7 +470,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
}
|
||||
|
||||
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
|
||||
@@ -475,6 +544,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
|
||||
@@ -524,6 +593,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -654,7 +626,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h
|
||||
--- a/chrome/browser/android/bookmarks/bookmark_bridge.h
|
||||
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
|
||||
@@ -13,6 +13,8 @@
|
||||
@@ -16,6 +16,8 @@
|
||||
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
|
||||
#include "components/bookmarks/common/android/bookmark_id.h"
|
||||
#include "components/prefs/pref_change_registrar.h"
|
||||
@@ -663,7 +635,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
|
||||
namespace bookmarks {
|
||||
class BookmarkModel;
|
||||
@@ -26,7 +28,8 @@ class Profile;
|
||||
@@ -29,7 +31,8 @@ class Profile;
|
||||
// bookmark page. This fetches the bookmarks, title, urls, folder
|
||||
// hierarchy.
|
||||
class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
@@ -673,7 +645,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
public:
|
||||
BookmarkBridge(JNIEnv* env,
|
||||
const base::android::JavaRef<jobject>& obj,
|
||||
@@ -36,6 +39,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
@@ -39,6 +42,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
bool IsDoingExtensiveChanges(JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj);
|
||||
|
||||
@@ -683,10 +655,10 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
+ void* params) override;
|
||||
+ void FileSelectionCanceled(void* params) override;
|
||||
+
|
||||
jboolean IsEditBookmarksEnabled(
|
||||
JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj);
|
||||
@@ -116,6 +125,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
jboolean IsEditBookmarksEnabled(JNIEnv* env);
|
||||
|
||||
void LoadEmptyPartnerBookmarkShimForTesting(
|
||||
@@ -133,6 +142,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
jlong id,
|
||||
jint type);
|
||||
|
||||
@@ -700,7 +672,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
void SetBookmarkTitle(JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj,
|
||||
jlong id,
|
||||
@@ -261,12 +277,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
@@ -278,12 +294,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
void ShimBeingDeleted(PartnerBookmarksShim* shim) override;
|
||||
|
||||
Profile* profile_;
|
||||
@@ -718,7 +690,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
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
|
||||
@@ -97,12 +97,14 @@ void ProfileWriter::AddHistoryPage(const history::URLRows& page,
|
||||
@@ -96,12 +96,14 @@ void ProfileWriter::AddHistoryPage(const history::URLRows& page,
|
||||
HistoryServiceFactory::GetForProfile(profile_,
|
||||
ServiceAccessType::EXPLICIT_ACCESS)
|
||||
->AddPagesWithDetails(page, visit_source);
|
||||
@@ -733,7 +705,7 @@ diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer
|
||||
}
|
||||
|
||||
void ProfileWriter::AddHomepage(const GURL& home_page) {
|
||||
@@ -123,6 +125,16 @@ void ProfileWriter::AddBookmarks(
|
||||
@@ -122,6 +124,16 @@ void ProfileWriter::AddBookmarks(
|
||||
return;
|
||||
|
||||
BookmarkModel* model = BookmarkModelFactory::GetForBrowserContext(profile_);
|
||||
@@ -776,7 +748,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/
|
||||
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
|
||||
--- a/chrome/common/BUILD.gn
|
||||
+++ b/chrome/common/BUILD.gn
|
||||
@@ -438,6 +438,9 @@ static_library("common") {
|
||||
@@ -445,6 +445,9 @@ static_library("common") {
|
||||
sources += [
|
||||
"media/chrome_media_drm_bridge_client.cc",
|
||||
"media/chrome_media_drm_bridge_client.h",
|
||||
@@ -789,7 +761,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
|
||||
@@ -60,8 +60,6 @@ static_library("utility") {
|
||||
@@ -66,8 +66,6 @@ static_library("utility") {
|
||||
|
||||
if (!is_android) {
|
||||
sources += [
|
||||
@@ -798,7 +770,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
|
||||
"importer/bookmarks_file_importer.cc",
|
||||
"importer/bookmarks_file_importer.h",
|
||||
"importer/edge_database_reader_win.cc",
|
||||
@@ -170,6 +168,11 @@ static_library("utility") {
|
||||
@@ -164,6 +162,11 @@ static_library("utility") {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -919,15 +891,15 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp
|
||||
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
@@ -34,6 +34,7 @@ import org.chromium.base.task.TaskTraits;
|
||||
import org.chromium.ui.ContactsPickerListener;
|
||||
@@ -34,6 +34,7 @@ import org.chromium.base.task.PostTask;
|
||||
import org.chromium.base.task.TaskTraits;
|
||||
import org.chromium.ui.PhotoPickerListener;
|
||||
import org.chromium.ui.R;
|
||||
+import org.chromium.ui.widget.Toast;
|
||||
import org.chromium.ui.UiUtils;
|
||||
|
||||
import java.io.File;
|
||||
@@ -54,6 +55,7 @@ public class SelectFileDialog
|
||||
@@ -53,6 +54,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
private static final String IMAGE_TYPE = "image/";
|
||||
private static final String VIDEO_TYPE = "video/";
|
||||
private static final String AUDIO_TYPE = "audio/";
|
||||
@@ -935,7 +907,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
|
||||
private static final String ALL_IMAGE_TYPES = IMAGE_TYPE + "*";
|
||||
private static final String ALL_VIDEO_TYPES = VIDEO_TYPE + "*";
|
||||
private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
|
||||
@@ -132,6 +134,11 @@ public class SelectFileDialog
|
||||
@@ -131,6 +133,11 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
mFileTypes = fileTypes;
|
||||
}
|
||||
|
||||
@@ -947,27 +919,34 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
|
||||
/**
|
||||
* Creates and starts an intent based on the passed fileTypes and capture value.
|
||||
* @param fileTypes MIME types requested (i.e. "image/*")
|
||||
@@ -161,7 +168,7 @@ public class SelectFileDialog
|
||||
if (!window.hasPermission(Manifest.permission.READ_CONTACTS)) {
|
||||
missingPermissions.add(Manifest.permission.READ_CONTACTS);
|
||||
}
|
||||
- } else if (shouldUsePhotoPicker()) {
|
||||
+ } else if (shouldUsePhotoPicker() || shouldShowHtmlTypes()) {
|
||||
if (BuildInfo.isAtLeastQ()) {
|
||||
String newImagePermission = "android.permission.READ_MEDIA_IMAGES";
|
||||
if (!window.hasPermission(newImagePermission)) {
|
||||
@@ -333,9 +340,7 @@ public class SelectFileDialog
|
||||
* 3.) There is a valid Android Activity associated with the file request.
|
||||
*/
|
||||
private boolean shouldUseContactsPicker() {
|
||||
- if (mFileTypes.size() != 1) return false;
|
||||
- if (!mFileTypes.get(0).equals("text/json+contacts")) return false;
|
||||
- return UiUtils.shouldShowContactsPicker() && mWindowAndroid.getActivity().get() != null;
|
||||
+ return false;
|
||||
}
|
||||
@@ -158,7 +165,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
List<String> missingPermissions = new ArrayList<>();
|
||||
String storagePermission = Manifest.permission.READ_EXTERNAL_STORAGE;
|
||||
boolean shouldUsePhotoPicker = shouldUsePhotoPicker();
|
||||
- if (shouldUsePhotoPicker) {
|
||||
+ if (shouldUsePhotoPicker || shouldShowHtmlTypes()) {
|
||||
if (!window.hasPermission(storagePermission)) missingPermissions.add(storagePermission);
|
||||
} else {
|
||||
if (((mSupportsImageCapture && shouldShowImageTypes())
|
||||
@@ -186,7 +193,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -356,6 +361,7 @@ public class SelectFileDialog
|
||||
// TODO(finnur): Remove once we figure out the cause of crbug.com/950024.
|
||||
- if (shouldUsePhotoPicker) {
|
||||
+ if (shouldUsePhotoPicker || shouldShowHtmlTypes()) {
|
||||
if (permissions.length != requestPermissions.length) {
|
||||
throw new RuntimeException(
|
||||
String.format("Permissions arrays misaligned: %d != %d",
|
||||
@@ -200,7 +207,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
}
|
||||
}
|
||||
|
||||
- if (shouldUsePhotoPicker && permissions[i].equals(storagePermission)) {
|
||||
+ if ((shouldUsePhotoPicker || shouldShowHtmlTypes()) && permissions[i].equals(storagePermission)) {
|
||||
onFileNotSelected();
|
||||
return;
|
||||
}
|
||||
@@ -349,6 +356,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
}
|
||||
if (!mimeTypes.contains(mimeType)) mimeTypes.add(mimeType);
|
||||
}
|
||||
@@ -975,7 +954,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui
|
||||
return mimeTypes;
|
||||
}
|
||||
|
||||
@@ -646,6 +652,10 @@ public class SelectFileDialog
|
||||
@@ -626,6 +634,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick
|
||||
return countAcceptTypesFor(specificType) > 0;
|
||||
}
|
||||
|
||||
@@ -1027,5 +1006,5 @@ diff --git a/ui/shell_dialogs/select_file_dialog_android.h b/ui/shell_dialogs/se
|
||||
~SelectFileDialogImpl() override;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,17 +3,17 @@ Date: Wed, 29 Aug 2018 11:03:44 +0200
|
||||
Subject: Add custom tab intents privacy option
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||
.../org/chromium/chrome/browser/LaunchIntentDispatcher.java | 2 ++
|
||||
.../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 7 +++++++
|
||||
5 files changed, 27 insertions(+)
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||
.../chrome/browser/LaunchIntentDispatcher.java | 3 +++
|
||||
.../preferences/privacy/PrivacyPreferences.java | 11 +++++++++++
|
||||
.../android/java/strings/android_chrome_strings.grd | 7 +++++++
|
||||
5 files changed, 29 insertions(+)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -18,6 +18,9 @@
|
||||
@@ -14,6 +14,9 @@
|
||||
<item name="top_controls_show_threshold" format="float" type="dimen">0.5</item>
|
||||
<item name="top_controls_hide_threshold" format="float" type="dimen">0.5</item>
|
||||
|
||||
@@ -26,88 +26,90 @@ 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
|
||||
@@ -47,6 +47,11 @@
|
||||
android:title="@string/clear_browsing_data_title"
|
||||
android:summary="@string/clear_browsing_data_summary"
|
||||
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
|
||||
@@ -29,6 +29,11 @@
|
||||
android:fragment="org.chromium.chrome.browser.preferences.privacy.DoNotTrackPreference"
|
||||
android:key="do_not_track"
|
||||
android:title="@string/do_not_track_title" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="allow_custom_tab_intents"
|
||||
+ android:title="@string/allow_custom_tab_intents_title"
|
||||
+ android:summary="@string/allow_custom_tab_intents_summary"
|
||||
+ android:defaultValue="false" />
|
||||
<Preference
|
||||
android:key="sync_and_services_link_divider"
|
||||
android:layout="@layout/divider_preference"
|
||||
<android.support.v7.preference.Preference
|
||||
android:key="contextual_search"
|
||||
android:title="@string/contextual_search_title"
|
||||
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
|
||||
@@ -41,6 +41,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
||||
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
|
||||
@@ -43,6 +43,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
|
||||
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
|
||||
import org.chromium.chrome.browser.searchwidget.SearchActivity;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
|
||||
@@ -271,6 +272,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
|
||||
import org.chromium.chrome.browser.util.IntentUtils;
|
||||
import org.chromium.chrome.browser.util.UrlConstants;
|
||||
import org.chromium.chrome.browser.vr.VrModuleProvider;
|
||||
@@ -251,6 +252,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
*/
|
||||
public static boolean isCustomTabIntent(Intent intent) {
|
||||
if (intent == null) return false;
|
||||
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) return false;
|
||||
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false))
|
||||
+ return false;
|
||||
if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
|
||||
|| !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
|
||||
return false;
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
@@ -40,6 +40,7 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
implements OnPreferenceChangeListener {
|
||||
private static final String PREF_NAVIGATION_ERROR = "navigation_error";
|
||||
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
|
||||
@@ -42,6 +42,8 @@ public class PrivacyPreferences
|
||||
|
||||
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
|
||||
|
||||
+ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
|
||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
||||
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
||||
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
|
||||
@@ -117,6 +118,11 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
navigationErrorPref.setOnPreferenceChangeListener(this);
|
||||
navigationErrorPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
+
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
PreferenceUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
|
||||
@@ -76,6 +78,10 @@ public class PrivacyPreferences
|
||||
PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
|
||||
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
|
||||
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
|
||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
|
||||
+ sharedPreferencesEditor.apply();
|
||||
} else if (PREF_CONTEXTUAL_SEARCH.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setContextualSearchPreference(((boolean) newValue) ? "true" : "false");
|
||||
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
|
||||
@@ -114,6 +120,11 @@ public class PrivacyPreferences
|
||||
prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
|
||||
}
|
||||
|
||||
+ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
|
||||
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
|
||||
+ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
|
||||
+ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
+
|
||||
ChromeBaseCheckBoxPreference searchSuggestionsPref =
|
||||
(ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
|
||||
searchSuggestionsPref.setOnPreferenceChangeListener(this);
|
||||
@@ -139,6 +145,10 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
recordNetworkPredictionEnablingUMA((boolean) newValue);
|
||||
} else if (PREF_NAVIGATION_ERROR.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
|
||||
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
|
||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
|
||||
+ sharedPreferencesEditor.apply();
|
||||
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setBoolean(
|
||||
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
|
||||
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
|
||||
if (doNotTrackPref != null) {
|
||||
doNotTrackPref.setSummary(
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -4004,6 +4004,13 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
Browse
|
||||
@@ -3987,6 +3987,13 @@ The site does NOT gain access to the camera. The camera images are only visible
|
||||
'Installing Extra ICU for Chrome…').">
|
||||
Extra ICU
|
||||
</message>
|
||||
|
||||
+ <!-- Allow custom tab intents -->
|
||||
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
|
||||
+ Allow custom tab intents
|
||||
+ </message>
|
||||
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
|
||||
+ Allow applications to open custom tab intents, similar to webview.
|
||||
+ </message>
|
||||
+
|
||||
<!-- Migration strings -->
|
||||
<message name="IDS_UPDATING_CHROME" desc="String that indicates that Chrome is updating">
|
||||
Updating Chrome...
|
||||
|
||||
</messages>
|
||||
</release>
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@ Subject: Add exit menu item
|
||||
|
||||
Corrected Exit functionality
|
||||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 2 ++
|
||||
.../java/src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
|
||||
.../org/chromium/chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
|
||||
chrome/android/java/res/menu/main_menu.xml | 2 ++
|
||||
.../src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
|
||||
.../chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
|
||||
4 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
|
||||
@@ -25,15 +25,15 @@ 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/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
@@ -2150,6 +2150,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
RecordUserAction.record("MobileMenuSettings");
|
||||
} else if (id == R.id.show_menu) {
|
||||
showAppMenuForKeyboardEvent();
|
||||
@@ -2204,6 +2204,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
new AddToHomescreenManager(this, currentTab);
|
||||
addToHomescreenManager.start();
|
||||
RecordUserAction.record("MobileMenuAddToHomescreen");
|
||||
+ } else if (id == R.id.exit_id) {
|
||||
+ ApplicationLifetime.terminate(false);
|
||||
} else if (id == R.id.find_in_page_id) {
|
||||
if (mFindToolbarManager == null) return false;
|
||||
|
||||
} else if (id == R.id.open_webapk_id) {
|
||||
Context context = ContextUtils.getApplicationContext();
|
||||
String packageName =
|
||||
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
|
||||
@@ -53,7 +53,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -3081,6 +3081,9 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
@@ -2860,6 +2860,9 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
<message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
|
||||
Settings
|
||||
</message>
|
||||
@@ -64,5 +64,5 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
|
||||
Close all tabs
|
||||
</message>
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -6,19 +6,20 @@ With the introduction of this flag it is possible to increase the maximum
|
||||
allowed connections per host; this can however be detrimental to devices
|
||||
with limited CPU/memory resources and it is disabled by default.
|
||||
---
|
||||
chrome/browser/about_flags.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../common/network_features.cc | 3 +++
|
||||
.../common/network_features.h | 4 ++++
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
|
||||
7 files changed, 43 insertions(+)
|
||||
chrome/browser/about_flags.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../common/network_features.cc | 3 +++
|
||||
.../common/network_features.h | 4 ++++
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
.../spoof_checks/top_domains/BUILD.gn | 1 +
|
||||
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
|
||||
8 files changed, 44 insertions(+)
|
||||
|
||||
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
|
||||
@@ -740,6 +740,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
|
||||
@@ -668,6 +668,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
|
||||
net::kEffectiveConnectionType4G},
|
||||
};
|
||||
|
||||
@@ -30,20 +31,20 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
// Ensure that all effective connection types returned by Network Quality
|
||||
// Estimator (NQE) are also exposed via flags.
|
||||
static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
|
||||
@@ -2292,6 +2297,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kWebrtcH264WithOpenh264FfmpegDescription, kOsDesktop,
|
||||
FEATURE_VALUE_TYPE(content::kWebRtcH264WithOpenH264FFmpeg)},
|
||||
#endif // BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
|
||||
@@ -2596,6 +2601,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kPassiveDocumentEventListenersName,
|
||||
flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
|
||||
+ {"max-connections-per-host", flag_descriptions::kMaxConnectionsPerHostName,
|
||||
+ flag_descriptions::kMaxConnectionsPerHostDescription, kOsAll,
|
||||
+ MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
|
||||
#if defined(OS_ANDROID)
|
||||
{"offlining-recent-pages", flag_descriptions::kOffliningRecentPagesName,
|
||||
flag_descriptions::kOffliningRecentPagesDescription, kOsAndroid,
|
||||
{"document-passive-wheel-event-listeners",
|
||||
flag_descriptions::kPassiveDocumentWheelEventListenersName,
|
||||
flag_descriptions::kPassiveDocumentWheelEventListenersDescription, kOsAll,
|
||||
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
|
||||
@@ -1245,6 +1245,10 @@ const char kLookalikeUrlNavigationSuggestionsDescription[] =
|
||||
@@ -1275,6 +1275,10 @@ const char kLookalikeUrlNavigationSuggestionsDescription[] =
|
||||
const char kMarkHttpAsName[] = "Mark non-secure origins as non-secure";
|
||||
const char kMarkHttpAsDescription[] = "Change the UI treatment for HTTP pages";
|
||||
|
||||
@@ -57,7 +58,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -748,6 +748,9 @@ extern const char kMarkHttpAsWarning[];
|
||||
@@ -776,6 +776,9 @@ extern const char kMarkHttpAsWarning[];
|
||||
extern const char kMarkHttpAsWarningAndDangerousOnFormEdits[];
|
||||
extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
|
||||
|
||||
@@ -70,16 +71,14 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
|
||||
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
|
||||
--- a/components/network_session_configurator/common/network_features.cc
|
||||
+++ b/components/network_session_configurator/common/network_features.cc
|
||||
@@ -8,6 +8,9 @@
|
||||
@@ -8,4 +8,7 @@
|
||||
|
||||
namespace features {
|
||||
|
||||
+const char kMaxConnectionsPerHostChoiceDefault[] = "6",
|
||||
+ kMaxConnectionsPerHostChoice15[] = "15";
|
||||
+
|
||||
const char kDnsOverHttpsChoiceDefault[] = "Disabled",
|
||||
kDnsOverHttpsChoiceGoogle[] = "Google",
|
||||
kDnsOverHttpsChoiceCloudflare[] = "Cloudflare",
|
||||
} // namespace features
|
||||
diff --git a/components/network_session_configurator/common/network_features.h b/components/network_session_configurator/common/network_features.h
|
||||
--- a/components/network_session_configurator/common/network_features.h
|
||||
+++ b/components/network_session_configurator/common/network_features.h
|
||||
@@ -91,29 +90,40 @@ diff --git a/components/network_session_configurator/common/network_features.h b
|
||||
+ kMaxConnectionsPerHostChoice6[],
|
||||
+ kMaxConnectionsPerHostChoice15[];
|
||||
+
|
||||
// DNS over HTTPS server endpoint choices
|
||||
// (https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-12.txt).
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kDnsOverHttps;
|
||||
} // namespace features
|
||||
|
||||
#endif // COMPONENTS_NETWORK_SESSION_CONFIGURATOR_COMMON_NETWORK_FEATURES_H_
|
||||
diff --git a/components/network_session_configurator/common/network_switch_list.h b/components/network_session_configurator/common/network_switch_list.h
|
||||
--- a/components/network_session_configurator/common/network_switch_list.h
|
||||
+++ b/components/network_session_configurator/common/network_switch_list.h
|
||||
@@ -21,6 +21,10 @@ NETWORK_SWITCH(kEnableUserAlternateProtocolPorts,
|
||||
|
||||
@@ -22,6 +22,10 @@ NETWORK_SWITCH(kEnableUserAlternateProtocolPorts,
|
||||
// Enables the QUIC protocol. This is a temporary testing flag.
|
||||
NETWORK_SWITCH(kEnableQuic, "enable-quic")
|
||||
|
||||
+// Allows specifying a higher number of maximum connections per host
|
||||
+// (15 instead of 6, mirroring the value Mozilla uses).
|
||||
+NETWORK_SWITCH(kMaxConnectionsPerHost, "max-connections-per-host")
|
||||
+
|
||||
|
||||
// Ignores certificate-related errors.
|
||||
NETWORK_SWITCH(kIgnoreCertificateErrors, "ignore-certificate-errors")
|
||||
|
||||
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||
--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||
@@ -78,6 +78,7 @@ executable("make_top_domain_list_variables") {
|
||||
"//base",
|
||||
"//base:i18n",
|
||||
"//third_party/icu",
|
||||
+ "//components/network_session_configurator/common"
|
||||
]
|
||||
if (is_ios) {
|
||||
libs = [ "UIKit.framework" ]
|
||||
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
|
||||
@@ -22,6 +22,10 @@
|
||||
#include "net/socket/transport_client_socket_pool.h"
|
||||
#include "net/socket/transport_connect_job.h"
|
||||
@@ -20,6 +20,10 @@
|
||||
#include "net/socket/client_socket_pool.h"
|
||||
#include "net/socket/connect_job.h"
|
||||
#include "net/ssl/ssl_config.h"
|
||||
+#include "components/network_session_configurator/common/network_switches.h"
|
||||
+
|
||||
@@ -122,7 +132,7 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
|
||||
|
||||
namespace net {
|
||||
|
||||
@@ -285,6 +289,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
|
||||
@@ -187,6 +191,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);
|
||||
@@ -143,5 +153,5 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -13,23 +13,23 @@ Disable it by default on Android as it is everywhere else
|
||||
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
|
||||
@@ -1407,6 +1407,10 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kVideoPlayerChromecastSupportDescription, kOsCrOS,
|
||||
SINGLE_VALUE_TYPE(
|
||||
chromeos::switches::kEnableVideoPlayerChromecastSupport)},
|
||||
@@ -1633,6 +1633,10 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
|
||||
flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
|
||||
+ {"resume-background-video",
|
||||
+ flag_descriptions::kResumeBackgroundVideoName,
|
||||
+ flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
|
||||
{"list-all-display-modes", flag_descriptions::kListAllDisplayModesName,
|
||||
flag_descriptions::kListAllDisplayModesDescription, kOsCrOS,
|
||||
FEATURE_VALUE_TYPE(display::features::kListAllDisplayModes)},
|
||||
{"shared-array-buffer", flag_descriptions::kEnableSharedArrayBufferName,
|
||||
flag_descriptions::kEnableSharedArrayBufferDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kSharedArrayBuffer)},
|
||||
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
|
||||
@@ -840,6 +840,11 @@ const char kEnablePictureInPictureDescription[] =
|
||||
"controls. The #enable-surfaces-for-videos flag must be enabled as well "
|
||||
"to use it.";
|
||||
@@ -904,6 +904,11 @@ const char kMemlogStackModeNative[] = "Native";
|
||||
const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
|
||||
const char kMemlogStackModePseudo[] = "Trace events";
|
||||
|
||||
+const char kResumeBackgroundVideoName[] = "Resume background video.";
|
||||
+const char kResumeBackgroundVideoDescription[] =
|
||||
@@ -42,7 +42,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -495,6 +495,9 @@ extern const char kEnableNewDownloadBackendDescription[];
|
||||
@@ -532,6 +532,9 @@ extern const char kEnablePortalsDescription[];
|
||||
extern const char kEnablePictureInPictureName[];
|
||||
extern const char kEnablePictureInPictureDescription[];
|
||||
|
||||
@@ -55,7 +55,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
|
||||
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
|
||||
@@ -205,11 +205,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
|
||||
@@ -216,11 +216,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
|
||||
// when in background.
|
||||
const base::Feature kResumeBackgroundVideo {
|
||||
"resume-background-video",
|
||||
@@ -69,5 +69,5 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
|
||||
|
||||
// Enable Media Capabilities with finch-parameters.
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,20 +3,22 @@ Date: Sun, 18 Nov 2018 13:06:49 +0100
|
||||
Subject: Add flag to disable IPv6 probes
|
||||
|
||||
---
|
||||
chrome/browser/about_flags.cc | 5 +++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
net/dns/host_resolver_impl.cc | 10 ++++++++--
|
||||
services/network/public/cpp/features.cc | 3 +++
|
||||
services/network/public/cpp/features.h | 2 ++
|
||||
6 files changed, 25 insertions(+), 2 deletions(-)
|
||||
chrome/browser/about_flags.cc | 5 +++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
components/subresource_filter/tools/BUILD.gn | 6 ++++++
|
||||
.../url_formatter/spoof_checks/top_domains/BUILD.gn | 3 ++-
|
||||
net/dns/host_resolver_manager.cc | 10 ++++++++--
|
||||
services/network/public/cpp/features.cc | 4 ++++
|
||||
services/network/public/cpp/features.h | 2 ++
|
||||
8 files changed, 34 insertions(+), 3 deletions(-)
|
||||
|
||||
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
|
||||
@@ -2975,6 +2975,11 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(features::kHandwritingGesture)},
|
||||
#endif // OS_CHROMEOS
|
||||
@@ -3244,6 +3244,11 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
kMarkHttpAsFeatureVariations,
|
||||
"HTTPReallyBadFinal")},
|
||||
|
||||
+ {"ipv6-probing",
|
||||
+ flag_descriptions::kIPv6ProbingName,
|
||||
@@ -24,28 +26,28 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
+ FEATURE_VALUE_TYPE(network::features::kIPv6Probing)},
|
||||
+
|
||||
#if !defined(OS_ANDROID)
|
||||
{"enable-picture-in-picture",
|
||||
flag_descriptions::kEnablePictureInPictureName,
|
||||
{"enable-web-authentication-testing-api",
|
||||
flag_descriptions::kEnableWebAuthenticationTestingAPIName,
|
||||
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
|
||||
@@ -842,6 +842,10 @@ const char kOOPHPStackModeNative[] = "Native";
|
||||
const char kOOPHPStackModeNativeWithThreadNames[] = "Native with thread names";
|
||||
const char kOOPHPStackModePseudo[] = "Trace events";
|
||||
@@ -2512,6 +2512,10 @@ const char kContextualSearchSimplifiedServerDescription[] =
|
||||
|
||||
const char kContextualSearchSecondTapName[] =
|
||||
"Contextual Search second tap triggering";
|
||||
+const char kIPv6ProbingName[] = "Enable IPv6 probing.";
|
||||
+const char kIPv6ProbingDescription[] =
|
||||
+ "Send IPv6 probes to a RIPE DNS address to verify IPv6 connectivity.";
|
||||
+
|
||||
const char kEnablePictureInPictureName[] = "Enable Picture-in-Picture.";
|
||||
const char kEnablePictureInPictureDescription[] =
|
||||
"Show Picture-in-Picture in browser context menu and video native "
|
||||
const char kContextualSearchSecondTapDescription[] =
|
||||
"Enables triggering on a second tap gesture even when Ranker would "
|
||||
"normally suppress that tap.";
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -498,6 +498,9 @@ extern const char kDownloadAutoResumptionNativeDescription[];
|
||||
extern const char kEnableNewDownloadBackendName[];
|
||||
extern const char kEnableNewDownloadBackendDescription[];
|
||||
@@ -535,6 +535,9 @@ extern const char kEnableNewDownloadBackendDescription[];
|
||||
extern const char kEnablePortalsName[];
|
||||
extern const char kEnablePortalsDescription[];
|
||||
|
||||
+extern const char kIPv6ProbingName[];
|
||||
+extern const char kIPv6ProbingDescription[];
|
||||
@@ -53,18 +55,61 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
|
||||
extern const char kEnablePictureInPictureName[];
|
||||
extern const char kEnablePictureInPictureDescription[];
|
||||
|
||||
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
|
||||
--- a/net/dns/host_resolver_impl.cc
|
||||
+++ b/net/dns/host_resolver_impl.cc
|
||||
@@ -81,6 +81,7 @@
|
||||
#include "net/log/net_log_with_source.h"
|
||||
diff --git a/components/subresource_filter/tools/BUILD.gn b/components/subresource_filter/tools/BUILD.gn
|
||||
--- a/components/subresource_filter/tools/BUILD.gn
|
||||
+++ b/components/subresource_filter/tools/BUILD.gn
|
||||
@@ -52,6 +52,8 @@ if (!is_ios) {
|
||||
deps = [
|
||||
":tools_lib",
|
||||
"//base",
|
||||
+ "//components/network_session_configurator/common",
|
||||
+ "//services/network/public/cpp"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -65,6 +67,8 @@ if (!is_ios) {
|
||||
":tools_lib",
|
||||
"../core/common",
|
||||
"//base",
|
||||
+ "//components/network_session_configurator/common",
|
||||
+ "//services/network/public/cpp",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -76,6 +80,8 @@ if (!is_ios) {
|
||||
"ruleset_converter:support",
|
||||
"//base",
|
||||
"//third_party/protobuf:protobuf_lite",
|
||||
+ "//components/network_session_configurator/common",
|
||||
+ "//services/network/public/cpp"
|
||||
]
|
||||
}
|
||||
|
||||
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||
--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
|
||||
@@ -78,7 +78,8 @@ executable("make_top_domain_list_variables") {
|
||||
"//base",
|
||||
"//base:i18n",
|
||||
"//third_party/icu",
|
||||
- "//components/network_session_configurator/common"
|
||||
+ "//components/network_session_configurator/common",
|
||||
+ "//services/network/public/cpp",
|
||||
]
|
||||
if (is_ios) {
|
||||
libs = [ "UIKit.framework" ]
|
||||
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
|
||||
@@ -87,6 +87,7 @@
|
||||
#include "net/socket/client_socket_factory.h"
|
||||
#include "net/socket/datagram_client_socket.h"
|
||||
#include "net/url_request/url_request_context.h"
|
||||
+#include "services/network/public/cpp/features.h"
|
||||
#include "url/url_canon_ip.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_MDNS)
|
||||
@@ -2751,8 +2752,13 @@ bool HostResolverImpl::IsIPv6Reachable(const NetLogWithSource& net_log) {
|
||||
@@ -3269,8 +3270,13 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
|
||||
bool cached = true;
|
||||
if ((tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
|
||||
kIPv6ProbePeriodMs) {
|
||||
@@ -83,20 +128,21 @@ diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
|
||||
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
|
||||
@@ -16,6 +16,9 @@ const base::Feature kExpectCTReporting{"ExpectCTReporting",
|
||||
@@ -51,6 +51,10 @@ const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
const base::Feature kThrottleDelayable{"ThrottleDelayable",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kNetworkErrorLogging{"NetworkErrorLogging",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+
|
||||
+// Enable IPv6 ping probes to RIPE DNS.
|
||||
+const base::Feature kIPv6Probing{"IPv6Probing",
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
// Enables the network service.
|
||||
const base::Feature kNetworkService {
|
||||
"NetworkService",
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+
|
||||
// When kPriorityRequestsDelayableOnSlowConnections is enabled, HTTP
|
||||
// requests fetched from a SPDY/QUIC/H2 proxies can be delayed by the
|
||||
// ResourceScheduler just as HTTP/1.1 resources are. However, requests from such
|
||||
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
|
||||
@@ -18,6 +18,8 @@ extern const base::Feature kNetworkErrorLogging;
|
||||
@@ -21,6 +21,8 @@ extern const base::Feature kNetworkErrorLogging;
|
||||
COMPONENT_EXPORT(NETWORK_CPP)
|
||||
extern const base::Feature kNetworkService;
|
||||
COMPONENT_EXPORT(NETWORK_CPP)
|
||||
@@ -106,5 +152,5 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp
|
||||
COMPONENT_EXPORT(NETWORK_CPP)
|
||||
extern const base::Feature kReporting;
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 16 Nov 2019 11:18:09 +0100
|
||||
Subject: Add flag to disable WebGL
|
||||
|
||||
---
|
||||
chrome/browser/about_flags.cc | 3 +++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
3 files changed, 10 insertions(+)
|
||||
|
||||
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
|
||||
@@ -1425,6 +1425,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kAccelerated2dCanvasName,
|
||||
flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
|
||||
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
|
||||
+ {switches::kDisableWebGL, flag_descriptions::kDisableWebGLName,
|
||||
+ flag_descriptions::kDisableWebGLDescription, kOsAll,
|
||||
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebGL)},
|
||||
{"composited-layer-borders", flag_descriptions::kCompositedLayerBordersName,
|
||||
flag_descriptions::kCompositedLayerBordersDescription, kOsAll,
|
||||
SINGLE_VALUE_TYPE(cc::switches::kShowCompositedLayerBorders)},
|
||||
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
|
||||
@@ -426,6 +426,10 @@ const char kDisableAudioForDesktopShareDescription[] =
|
||||
"With this flag on, desktop share picker window will not let the user "
|
||||
"choose whether to share audio.";
|
||||
|
||||
+const char kDisableWebGLName[] = "Disable all versions of WebGL";
|
||||
+
|
||||
+const char kDisableWebGLDescription[] = "Disable all versions of WebGL";
|
||||
+
|
||||
const char kDisableBestEffortTasksName[] = "Skip best effort tasks";
|
||||
const char kDisableBestEffortTasksDescription[] =
|
||||
"With this flag on, tasks of the lowest priority will not be executed "
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -274,6 +274,9 @@ extern const char kDevtoolsExperimentsDescription[];
|
||||
extern const char kDisableAudioForDesktopShareName[];
|
||||
extern const char kDisableAudioForDesktopShareDescription[];
|
||||
|
||||
+extern const char kDisableWebGLName[];
|
||||
+extern const char kDisableWebGLDescription[];
|
||||
+
|
||||
extern const char kDisableBestEffortTasksName[];
|
||||
extern const char kDisableBestEffortTasksDescription[];
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -5,40 +5,40 @@ Subject: Add flags to disable device motion and orientation APIs
|
||||
Both flags will be disabled by default and prevent usage of gyroscope and
|
||||
legacy acceleration events.
|
||||
---
|
||||
chrome/browser/about_flags.cc | 6 ++++++
|
||||
chrome/browser/flag_descriptions.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.h | 6 ++++++
|
||||
content/child/runtime_features.cc | 3 +++
|
||||
content/public/common/content_features.cc | 10 ++++++++++
|
||||
content/public/common/content_features.h | 2 ++
|
||||
third_party/blink/public/platform/web_runtime_features.h | 2 ++
|
||||
third_party/blink/renderer/modules/modules_initializer.cc | 9 ++++++---
|
||||
.../blink/renderer/platform/exported/web_runtime_features.cc | 8 ++++++++
|
||||
.../blink/renderer/platform/runtime_enabled_features.json5 | 8 ++++++++
|
||||
chrome/browser/about_flags.cc | 6 ++++++
|
||||
chrome/browser/flag_descriptions.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.h | 6 ++++++
|
||||
content/child/runtime_features.cc | 3 +++
|
||||
content/public/common/content_features.cc | 10 ++++++++++
|
||||
content/public/common/content_features.h | 2 ++
|
||||
.../blink/public/platform/web_runtime_features.h | 2 ++
|
||||
.../blink/renderer/modules/modules_initializer.cc | 9 ++++++---
|
||||
.../renderer/platform/exported/web_runtime_features.cc | 8 ++++++++
|
||||
.../renderer/platform/runtime_enabled_features.json5 | 8 ++++++++
|
||||
10 files changed, 59 insertions(+), 3 deletions(-)
|
||||
|
||||
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
|
||||
@@ -2473,6 +2473,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-generic-sensor", flag_descriptions::kEnableGenericSensorName,
|
||||
flag_descriptions::kEnableGenericSensorDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kGenericSensor)},
|
||||
@@ -1659,6 +1659,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
|
||||
flag_descriptions::kGpuRasterizationDescription, kOsAll,
|
||||
MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
|
||||
+ {"enable-device-motion", flag_descriptions::kEnableDeviceMotionName,
|
||||
+ flag_descriptions::kEnableDeviceMotionDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(features::kDeviceMotion)},
|
||||
+ {"enable-device-orientation", flag_descriptions::kEnableDeviceOrientationName,
|
||||
+ flag_descriptions::kEnableDeviceOrientationDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(features::kDeviceOrientation)},
|
||||
{"enable-generic-sensor-extra-classes",
|
||||
flag_descriptions::kEnableGenericSensorExtraClassesName,
|
||||
flag_descriptions::kEnableGenericSensorExtraClassesDescription, kOsAll,
|
||||
{"enable-oop-rasterization", flag_descriptions::kOopRasterizationName,
|
||||
flag_descriptions::kOopRasterizationDescription, kOsAll,
|
||||
MULTI_VALUE_TYPE(kEnableOopRasterizationChoices)},
|
||||
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
|
||||
@@ -600,6 +600,14 @@ const char kEnableGenericSensorDescription[] =
|
||||
"Accelerometer, LinearAccelerationSensor, Gyroscope, "
|
||||
"AbsoluteOrientationSensor and RelativeOrientationSensor interfaces.";
|
||||
@@ -674,6 +674,14 @@ const char kWinrtSensorsImplementationDescription[] =
|
||||
"Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
|
||||
"sensors";
|
||||
|
||||
+const char kEnableDeviceMotionName[] = "Enable device motion";
|
||||
+const char kEnableDeviceMotionDescription[] =
|
||||
@@ -54,9 +54,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -382,6 +382,12 @@ extern const char kEnforceTLS13DowngradeDescription[];
|
||||
extern const char kEnableGenericSensorName[];
|
||||
extern const char kEnableGenericSensorDescription[];
|
||||
@@ -410,6 +410,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
|
||||
extern const char kWinrtSensorsImplementationName[];
|
||||
extern const char kWinrtSensorsImplementationDescription[];
|
||||
|
||||
+extern const char kEnableDeviceMotionName[];
|
||||
+extern const char kEnableDeviceMotionDescription[];
|
||||
@@ -70,20 +70,20 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
|
||||
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
|
||||
@@ -93,6 +93,9 @@ void SetIndividualRuntimeFeatures(
|
||||
base::FeatureList::IsEnabled(features::kSharedArrayBuffer) ||
|
||||
base::FeatureList::IsEnabled(features::kWebAssemblyThreads));
|
||||
|
||||
@@ -85,6 +85,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
|
||||
command_line.HasSwitch(
|
||||
switches::kEnableGpuMemoryBufferCompositorResources) &&
|
||||
!command_line.HasSwitch(switches::kDisableWebGLImageChromium) &&
|
||||
+ WebRuntimeFeatures::EnableDeviceMotion(base::FeatureList::IsEnabled(features::kDeviceMotion));
|
||||
+ WebRuntimeFeatures::EnableDeviceOrientation(base::FeatureList::IsEnabled(features::kDeviceOrientation));
|
||||
+
|
||||
if (command_line.HasSwitch(switches::kDisableSharedWorkers))
|
||||
WebRuntimeFeatures::EnableSharedWorker(false);
|
||||
|
||||
!command_line.HasSwitch(switches::kDisableGpu) &&
|
||||
base::FeatureList::IsEnabled(features::kWebGLImageChromium);
|
||||
#else
|
||||
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
|
||||
@@ -596,6 +596,16 @@ const base::Feature kExperimentalProductivityFeatures{
|
||||
@@ -688,6 +688,16 @@ const base::Feature kExperimentalProductivityFeatures{
|
||||
// TODO(rouslan): Remove this.
|
||||
const base::Feature kWebPayments{"WebPayments",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
@@ -103,31 +103,31 @@ 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
|
||||
@@ -158,6 +158,8 @@ CONTENT_EXPORT extern const base::Feature kWarmUpNetworkProcess;
|
||||
CONTENT_EXPORT extern const base::Feature kWebNfc;
|
||||
#endif // defined(OS_ANDROID)
|
||||
@@ -156,6 +156,8 @@ CONTENT_EXPORT extern const base::Feature kScriptStreamingOnPreload;
|
||||
CONTENT_EXPORT extern const base::Feature kTrustedDOMTypes;
|
||||
CONTENT_EXPORT extern const base::Feature kBrowserUseDisplayThreadPriority;
|
||||
|
||||
+CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
|
||||
+
|
||||
#if !defined(OS_ANDROID)
|
||||
CONTENT_EXPORT extern const base::Feature kWebUIPolymer2;
|
||||
#endif // !defined(OS_ANDROID)
|
||||
#if defined(OS_ANDROID)
|
||||
CONTENT_EXPORT extern const base::Feature kAndroidAutofillAccessibility;
|
||||
CONTENT_EXPORT extern const base::Feature
|
||||
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
|
||||
--- a/third_party/blink/public/platform/web_runtime_features.h
|
||||
+++ b/third_party/blink/public/platform/web_runtime_features.h
|
||||
@@ -97,6 +97,8 @@ class WebRuntimeFeatures {
|
||||
@@ -96,6 +96,8 @@ class WebRuntimeFeatures {
|
||||
BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableDeviceMotion(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDecodeToYUV(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutAPI(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableFallbackCursorMode(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDecodeJpeg420ImagesToYUV(bool);
|
||||
diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
--- a/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
+++ b/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
@@ -233,9 +233,12 @@ void ModulesInitializer::InitInspectorAgentSession(
|
||||
@@ -235,9 +235,12 @@ void ModulesInitializer::InitInspectorAgentSession(
|
||||
void ModulesInitializer::OnClearWindowObjectInMainWorld(
|
||||
Document& document,
|
||||
const Settings& settings) const {
|
||||
@@ -146,8 +146,8 @@ diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_p
|
||||
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
@@ -165,6 +165,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
|
||||
RuntimeEnabledFeatures::SetDatabaseEnabled(enable);
|
||||
@@ -172,6 +172,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
|
||||
RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
|
||||
}
|
||||
|
||||
+void WebRuntimeFeatures::EnableDeviceMotion(bool enable) {
|
||||
@@ -158,16 +158,17 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c
|
||||
+ RuntimeEnabledFeatures::SetDeviceOrientationEnabled(enable);
|
||||
+}
|
||||
+
|
||||
void WebRuntimeFeatures::EnableDecodeToYUV(bool enable) {
|
||||
RuntimeEnabledFeatures::SetDecodeToYUVEnabled(enable);
|
||||
void WebRuntimeFeatures::EnableKeyboardFocusableScrollers(bool enable) {
|
||||
RuntimeEnabledFeatures::SetKeyboardFocusableScrollersEnabled(enable);
|
||||
}
|
||||
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
|
||||
@@ -409,6 +409,14 @@
|
||||
status: "stable",
|
||||
@@ -1132,6 +1132,14 @@
|
||||
name: "OffscreenCanvasCommit",
|
||||
status: "experimental",
|
||||
},
|
||||
{
|
||||
+ {
|
||||
+ name: "DeviceMotion",
|
||||
+ status: "stable",
|
||||
+ },
|
||||
@@ -175,10 +176,9 @@ diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
+ name: "DeviceOrientation",
|
||||
+ status: "stable",
|
||||
+ },
|
||||
+ {
|
||||
name: "DecodeToYUV",
|
||||
status: "experimental",
|
||||
},
|
||||
{
|
||||
name: "OnDeviceChange",
|
||||
// Android does not yet support SystemMonitor.
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 14 Sep 2019 10:19:07 +0200
|
||||
Subject: Add menu option to toggle ad blocker
|
||||
|
||||
---
|
||||
.../java/res/menu/custom_tabs_menu.xml | 12 ++++++
|
||||
chrome/android/java/res/menu/main_menu.xml | 11 +++++
|
||||
.../chrome/browser/ChromeActivity.java | 8 ++++
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 8 ++++
|
||||
.../AppMenuPropertiesDelegateImpl.java | 40 +++++++++++++++++++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +++++
|
||||
7 files changed, 92 insertions(+)
|
||||
|
||||
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
|
||||
@@ -75,6 +75,18 @@
|
||||
android:checkable="true" />
|
||||
</menu>
|
||||
</item>
|
||||
+ <item android:id="@+id/enable_adblock_row_menu_id"
|
||||
+ android:title="@null"
|
||||
+ android:orderInCategory="2">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_adblock_id"
|
||||
+ android:title="@string/menu_enable_adblock" />
|
||||
+ <item android:id="@+id/enable_adblock_check_id"
|
||||
+ android:title="@null"
|
||||
+ android:checkable="true" />
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<!-- Title is intentionally left blank in xml and will be set in java. -->
|
||||
<item android:id="@+id/open_in_browser_id"
|
||||
android:title=""
|
||||
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
|
||||
@@ -84,6 +84,17 @@
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
+ <item android:id="@+id/enable_adblock_row_menu_id"
|
||||
+ android:title="@null">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_adblock_id"
|
||||
+ android:title="@string/menu_enable_adblock" />
|
||||
+ <item android:id="@+id/enable_adblock_check_id"
|
||||
+ android:title="@null"
|
||||
+ android:checkable="true" />
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<item android:id="@+id/reader_mode_prefs_id"
|
||||
android:title="@string/menu_reader_mode_prefs"
|
||||
android:icon="@drawable/reader_mode_prefs_icon" />
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
@@ -2226,6 +2226,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
RecordUserAction.record("MobileMenuRequestEnableJavascript");
|
||||
} else if (id == R.id.reader_mode_prefs_id) {
|
||||
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
|
||||
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
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
|
||||
@@ -1767,6 +1767,14 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
|
||||
reportNewTabShortcutUsed(true);
|
||||
getTabCreator(true).launchNTP();
|
||||
}
|
||||
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else if (id == R.id.all_bookmarks_menu_id) {
|
||||
if (currentTab != null) {
|
||||
getCompositorViewHolder().hideKeyboard(() -> {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||
@@ -27,6 +27,7 @@ import org.chromium.base.metrics.RecordHistogram;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ActivityTabProvider;
|
||||
import org.chromium.chrome.browser.ChromeSwitches;
|
||||
+import org.chromium.chrome.browser.ContentSettingsType;
|
||||
import org.chromium.chrome.browser.ShortcutHelper;
|
||||
import org.chromium.chrome.browser.banners.AppBannerManager;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
|
||||
@@ -235,6 +236,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
|
||||
// Prepare translate menu button.
|
||||
prepareTranslateMenuItem(menu, currentTab);
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
// Hide 'Add to homescreen' for the following:
|
||||
// * chrome:// pages - Android doesn't know how to direct those URLs.
|
||||
// * incognito pages - To avoid problems where users create shortcuts in incognito
|
||||
@@ -310,6 +313,43 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
|
||||
PrefServiceBridge.getInstance().isIncognitoModeManaged());
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Updates the ad blocker item's state.
|
||||
+ *
|
||||
+ * @param menu {@link Menu} to enable ad blocker
|
||||
+ * @param currentTab Current tab being displayed.
|
||||
+ */
|
||||
+ protected void updateEnableAdBlockMenuItem(
|
||||
+ Menu menu, Tab currentTab) {
|
||||
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_adblock_row_menu_id);
|
||||
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_adblock_id);
|
||||
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_adblock_check_id);
|
||||
+
|
||||
+
|
||||
+ // Hide Block ads on all chrome:// pages except for the NTP.
|
||||
+ String url = currentTab.getUrl();
|
||||
+ boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
|
||||
+ || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
|
||||
+ // Also hide enable javascsript on Reader Mode.
|
||||
+ boolean isDistilledPage = DomDistillerUrlUtils.isDistilledPage(url);
|
||||
+
|
||||
+ boolean itemVisible = (!isChromeScheme || currentTab.isNativePage()) && !isDistilledPage;
|
||||
+ enableMenuRow.setVisible(itemVisible);
|
||||
+ if (!itemVisible) return;
|
||||
+
|
||||
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+
|
||||
+ // Mark the checkbox if ad blocker is globally activated.
|
||||
+ enableMenuCheck.setChecked(adBlockEnabled);
|
||||
+
|
||||
+ // This title doesn't seem to be displayed by Android, but it is used to set up
|
||||
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
|
||||
+ enableMenuLabel.setTitleCondensed(adBlockEnabled
|
||||
+ ? mContext.getString(R.string.menu_enable_adblock_on)
|
||||
+ : mContext.getString(R.string.menu_enable_adblock_off));
|
||||
+ }
|
||||
+
|
||||
+
|
||||
/**
|
||||
* Sets the visibility and labels of the "Add to Home screen" and "Open WebAPK" menu items.
|
||||
*/
|
||||
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
|
||||
@@ -205,6 +205,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
||||
}
|
||||
}
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
|
||||
updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -2865,6 +2865,17 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
<message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
|
||||
Turn on Request desktop site
|
||||
</message>
|
||||
+
|
||||
+ <message name="IDS_MENU_ENABLE_ADBLOCK" desc="Menu item in Chrome's overflow/options menu. If this menu item is unselected, Bromite will disable ad blocker engine for the page. [CHAR-LIMIT=27]">
|
||||
+ Block ads
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_ADBLOCK_ON" desc="Accessibility description for when Block ads is selected.">
|
||||
+ Turn off ad blocking
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_ADBLOCK_OFF" desc="Accessibility description for when Block ads is unselected.">
|
||||
+ Turn on ad blocking
|
||||
+ </message>
|
||||
+
|
||||
<message name="IDS_MENU_READER_MODE_PREFS" desc="Menu item to show reader mode preferences pane, which allows users to change the appearance (font size, theme, etc.) of the page. [CHAR-LIMIT=27]">
|
||||
Appearance
|
||||
</message>
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -3,13 +3,13 @@ Date: Wed, 18 Oct 2017 21:26:53 +0200
|
||||
Subject: Add menu option to toggle global Javascript preference
|
||||
|
||||
---
|
||||
chrome/android/java/res/menu/custom_tabs_menu.xml | 13 ++++++++
|
||||
chrome/android/java/res/menu/main_menu.xml | 13 ++++++++
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 8 +++++
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 8 +++++
|
||||
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 ++++++++++++++++++++++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +++++++
|
||||
.../java/res/menu/custom_tabs_menu.xml | 12 ++++++
|
||||
chrome/android/java/res/menu/main_menu.xml | 13 +++++++
|
||||
.../chrome/browser/ChromeActivity.java | 8 ++++
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 8 ++++
|
||||
.../AppMenuPropertiesDelegateImpl.java | 39 +++++++++++++++++++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 ++++++
|
||||
7 files changed, 92 insertions(+)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
|
||||
@@ -23,10 +23,10 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
|
||||
<item android:id="@+id/request_desktop_site_row_menu_id"
|
||||
android:title="@null"
|
||||
android:orderInCategory="2">
|
||||
@@ -61,6 +62,18 @@
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
@@ -63,6 +64,17 @@
|
||||
<item android:id="@+id/translate_id"
|
||||
android:title="@string/menu_translate"
|
||||
android:orderInCategory="2"/>
|
||||
+ <item android:id="@+id/enable_javascript_row_menu_id"
|
||||
+ android:title="@null"
|
||||
+ android:orderInCategory="2">
|
||||
@@ -38,7 +38,6 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
|
||||
+ android:checkable="true" />
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<!-- Title is intentionally left blank in xml and will be set in java. -->
|
||||
<item android:id="@+id/open_in_browser_id"
|
||||
android:title=""
|
||||
@@ -75,7 +74,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/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
@@ -2253,6 +2253,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
@@ -2216,6 +2216,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
currentTab.getWebContents().getNavigationController().setUseDesktopUserAgent(
|
||||
!usingDesktopUserAgent, reloadOnChange);
|
||||
RecordUserAction.record("MobileMenuRequestDesktopSite");
|
||||
@@ -93,7 +92,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
|
||||
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
|
||||
@@ -1857,6 +1857,14 @@ public class ChromeTabbedActivity
|
||||
@@ -1813,6 +1813,14 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
|
||||
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
||||
}
|
||||
RecordUserAction.record("MobileMenuDownloadManager");
|
||||
@@ -108,18 +107,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
} else if (id == R.id.open_recently_closed_tab) {
|
||||
TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
|
||||
if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
@@ -25,6 +25,7 @@ import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeActivity;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.ChromeSwitches;
|
||||
+import org.chromium.chrome.browser.ContentSettingsType;
|
||||
import org.chromium.chrome.browser.ShortcutHelper;
|
||||
import org.chromium.chrome.browser.UrlConstants;
|
||||
import org.chromium.chrome.browser.banners.AppBannerManager;
|
||||
@@ -196,6 +197,8 @@ public class AppMenuPropertiesDelegate {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
|
||||
@@ -252,6 +252,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
|
||||
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
@@ -128,10 +119,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
|
||||
// Only display reader mode settings menu option if the current page is in reader mode.
|
||||
menu.findItem(R.id.reader_mode_prefs_id)
|
||||
.setVisible(DomDistillerUrlUtils.isDistilledPage(currentTab.getUrl()));
|
||||
@@ -450,6 +453,41 @@ public class AppMenuPropertiesDelegate {
|
||||
@@ -438,6 +440,43 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
+ /**
|
||||
+ * Updates the enable JavaScript item's state.
|
||||
+ *
|
||||
+ * @param menu {@link Menu} for enable javascript
|
||||
@@ -162,18 +154,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
|
||||
+ // This title doesn't seem to be displayed by Android, but it is used to set up
|
||||
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
|
||||
+ enableMenuLabel.setTitleCondensed(jsEnabled
|
||||
+ ? mActivity.getString(R.string.menu_enable_javascript_on)
|
||||
+ : mActivity.getString(R.string.menu_enable_javascript_off));
|
||||
+ ? mContext.getString(R.string.menu_enable_javascript_on)
|
||||
+ : mContext.getString(R.string.menu_enable_javascript_off));
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* A notification that the header view has finished inflating.
|
||||
* @param view The view that was inflated.
|
||||
* @param appMenu The menu the view is inside of.
|
||||
+
|
||||
+
|
||||
/**
|
||||
* Updates the request desktop site item's state.
|
||||
*
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
@@ -182,6 +182,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
||||
@@ -206,6 +206,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
||||
}
|
||||
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
|
||||
@@ -184,13 +177,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -3066,6 +3066,17 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
@@ -2845,6 +2845,17 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
<message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR-LIMIT=27]">
|
||||
Find in page
|
||||
</message>
|
||||
+
|
||||
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT" desc="Menu item in Chrome's overflow/options menu. If this menu item is unselected, Bromite will disable JavaScript support for the page. [CHAR-LIMIT=27]">
|
||||
+ Enable JavaScript
|
||||
+ JavaScript
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT_ON" desc="Accessibility description for when Enable JavaScript is selected.">
|
||||
+ Turn off JavaScript
|
||||
@@ -203,5 +196,5 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
|
||||
Desktop site
|
||||
</message>
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,491 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 5 Dec 2019 22:41:25 +0100
|
||||
Subject: Add option to configure the ad blocker filters URL
|
||||
|
||||
---
|
||||
chrome/android/chrome_java_sources.gni | 2 +
|
||||
.../java/res/layout/adblock_editor.xml | 65 +++++++++++++
|
||||
chrome/android/java/res/values/values.xml | 2 +
|
||||
.../java/res/xml/adblock_preferences.xml | 25 +++++
|
||||
.../android/java/res/xml/main_preferences.xml | 11 ++-
|
||||
.../browser/preferences/AdBlockEditor.java | 91 +++++++++++++++++++
|
||||
.../preferences/AdBlockPreferences.java | 53 +++++++++++
|
||||
.../java/strings/android_chrome_strings.grd | 14 +++
|
||||
chrome/app/generated_resources.grd | 10 ++
|
||||
chrome/browser/android/feature_utilities.cc | 8 ++
|
||||
chrome/browser/browser_process_impl.cc | 3 +-
|
||||
.../net/system_network_context_manager.cc | 3 +
|
||||
chrome/common/pref_names.cc | 3 +
|
||||
chrome/common/pref_names.h | 1 +
|
||||
.../adblock_updater_service.cc | 6 +-
|
||||
.../adblock_updater_service.h | 3 +-
|
||||
16 files changed, 292 insertions(+), 8 deletions(-)
|
||||
create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
|
||||
create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.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
|
||||
@@ -1277,6 +1277,8 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/preferences/PreferenceUtils.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/Preferences.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/PreferencesLauncher.java",
|
||||
+ "java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java",
|
||||
+ "java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/SearchEngineAdapter.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/SearchEnginePreference.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/SearchUtils.java",
|
||||
diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/layout/adblock_editor.xml
|
||||
@@ -0,0 +1,65 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+ Use of this source code is governed by a BSD-style license that can be
|
||||
+ found in the LICENSE file. -->
|
||||
+
|
||||
+<FrameLayout
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
+ xmlns:tools="http://schemas.android.com/tools"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="match_parent" >
|
||||
+
|
||||
+ <ScrollView
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="match_parent"
|
||||
+ android:id="@+id/scroll_view"
|
||||
+ android:fillViewport="true" >
|
||||
+
|
||||
+ <LinearLayout
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content"
|
||||
+ android:orientation="vertical"
|
||||
+ android:focusableInTouchMode="true" >
|
||||
+
|
||||
+ <org.chromium.chrome.browser.widget.ChromeTextInputLayout
|
||||
+ android:id="@+id/adblock_url"
|
||||
+ style="@style/PreferenceScreenLayout"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content" >
|
||||
+ <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
|
||||
+ <EditText
|
||||
+ tools:ignore="Autofill"
|
||||
+ android:id="@+id/adblock_url_edit"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content"
|
||||
+ android:inputType="textUri"
|
||||
+ android:singleLine="true"
|
||||
+ android:hint="@string/options_adblock_edit_label" />
|
||||
+ </org.chromium.chrome.browser.widget.ChromeTextInputLayout>
|
||||
+
|
||||
+ <Space style="@style/ButtonBarTopSpacer" />
|
||||
+ <View style="@style/ButtonBarTopDivider" />
|
||||
+
|
||||
+ <LinearLayout style="@style/ButtonBar" >
|
||||
+ <org.chromium.ui.widget.ButtonCompat
|
||||
+ android:id="@+id/adblock_reset"
|
||||
+ style="@style/ButtonBarButton"
|
||||
+ android:text="@string/reset" />
|
||||
+
|
||||
+ <org.chromium.ui.widget.ButtonCompat
|
||||
+ android:id="@+id/adblock_cancel"
|
||||
+ style="@style/ButtonBarButton"
|
||||
+ android:text="@string/cancel" />
|
||||
+
|
||||
+ <org.chromium.ui.widget.ButtonCompat
|
||||
+ android:id="@+id/adblock_save"
|
||||
+ style="@style/ButtonBarButton"
|
||||
+ android:text="@string/save" />
|
||||
+ </LinearLayout>
|
||||
+ </LinearLayout>
|
||||
+ </ScrollView>
|
||||
+
|
||||
+ <include layout="@layout/preferences_action_bar_shadow"/>
|
||||
+
|
||||
+</FrameLayout>
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -70,6 +70,8 @@
|
||||
<!-- Our manage space activity. Default pre-KitKat to be nothing. -->
|
||||
<string name="manage_space_activity"></string>
|
||||
|
||||
+ <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
|
||||
+
|
||||
<!-- Value for scaleX to mirror drawables correctly for LTR / RTL layouts. -->
|
||||
<integer name="automirror_scale_x_reverse">-1</integer>
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/xml/adblock_preferences.xml
|
||||
@@ -0,0 +1,25 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+ Use of this source code is governed by a BSD-style license that can be
|
||||
+ found in the LICENSE file. -->
|
||||
+
|
||||
+<PreferenceScreen
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
+
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
|
||||
+ android:key="adblock_switch"
|
||||
+ android:summaryOn="@string/text_on"
|
||||
+ android:summaryOff="@string/text_off" />
|
||||
+
|
||||
+ <org.chromium.chrome.browser.preferences.HyperlinkPreference
|
||||
+ android:key="adblock_help"
|
||||
+ android:title="@string/adblock_help"
|
||||
+ app:url="@string/adblock_help_url" />
|
||||
+
|
||||
+ <Preference
|
||||
+ android:key="adblock_edit"
|
||||
+ android:title="@string/options_adblock_edit_label"
|
||||
+ android:fragment="org.chromium.chrome.browser.preferences.AdBlockEditor" />
|
||||
+
|
||||
+</PreferenceScreen>
|
||||
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
|
||||
@@ -60,20 +60,25 @@
|
||||
android:key="privacy"
|
||||
android:order="13"
|
||||
android:title="@string/prefs_privacy"/>
|
||||
+ <Preference
|
||||
+ android:fragment="org.chromium.chrome.browser.preferences.AdBlockPreferences"
|
||||
+ android:key="adblock"
|
||||
+ android:order="14"
|
||||
+ android:title="@string/prefs_adblock"/>
|
||||
<Preference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.AccessibilityPreferences"
|
||||
android:key="accessibility"
|
||||
- android:order="14"
|
||||
+ android:order="15"
|
||||
android:title="@string/prefs_accessibility"/>
|
||||
<Preference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SiteSettingsPreferences"
|
||||
android:key="content_settings"
|
||||
- android:order="15"
|
||||
+ android:order="16"
|
||||
android:title="@string/prefs_site_settings"/>
|
||||
<Preference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.languages.LanguagesPreferences"
|
||||
android:key="languages"
|
||||
- android:order="16"
|
||||
+ android:order="17"
|
||||
android:title="@string/prefs_languages"/>
|
||||
<org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.download.DownloadPreferences"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockEditor.java
|
||||
@@ -0,0 +1,91 @@
|
||||
+// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+package org.chromium.chrome.browser.preferences;
|
||||
+
|
||||
+import android.os.Bundle;
|
||||
+import android.support.v4.app.Fragment;
|
||||
+import android.text.Editable;
|
||||
+import android.text.TextWatcher;
|
||||
+import android.view.LayoutInflater;
|
||||
+import android.view.View;
|
||||
+import android.view.ViewGroup;
|
||||
+import android.widget.Button;
|
||||
+import android.widget.EditText;
|
||||
+
|
||||
+import org.chromium.chrome.browser.util.FeatureUtilities;
|
||||
+import org.chromium.chrome.R;
|
||||
+import org.chromium.components.url_formatter.UrlFormatter;
|
||||
+
|
||||
+/**
|
||||
+ * Provides the Java-UI for editing the DNS-over-HTTPS (AdBlock) preference.
|
||||
+ */
|
||||
+public class AdBlockEditor extends Fragment implements TextWatcher {
|
||||
+ private EditText mAdBlockFiltersUrlEdit;
|
||||
+ private Button mSaveButton;
|
||||
+ private Button mResetButton;
|
||||
+
|
||||
+ @Override
|
||||
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
+ Bundle savedInstanceState) {
|
||||
+ super.onCreate(savedInstanceState);
|
||||
+ getActivity().setTitle(R.string.options_adblock_edit_title);
|
||||
+
|
||||
+ View v = inflater.inflate(R.layout.adblock_editor, container, false);
|
||||
+ View scrollView = v.findViewById(R.id.scroll_view);
|
||||
+ scrollView.getViewTreeObserver().addOnScrollChangedListener(
|
||||
+ PreferenceUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
|
||||
+ mAdBlockFiltersUrlEdit = (EditText) v.findViewById(R.id.adblock_url_edit);
|
||||
+ mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
|
||||
+ mAdBlockFiltersUrlEdit.addTextChangedListener(this);
|
||||
+ mAdBlockFiltersUrlEdit.requestFocus();
|
||||
+
|
||||
+ initializeSaveCancelResetButtons(v);
|
||||
+ return v;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
+ mSaveButton.setEnabled(s.length() != 0);
|
||||
+ mResetButton.setEnabled(true);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void afterTextChanged(Editable s) {
|
||||
+ }
|
||||
+
|
||||
+ private void initializeSaveCancelResetButtons(View v) {
|
||||
+ mResetButton = (Button) v.findViewById(R.id.adblock_reset);
|
||||
+ mResetButton.setOnClickListener(new View.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(View v) {
|
||||
+ mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
|
||||
+ getActivity().finish();
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ mSaveButton = (Button) v.findViewById(R.id.adblock_save);
|
||||
+ mSaveButton.setEnabled(false);
|
||||
+ mSaveButton.setOnClickListener(new View.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(View v) {
|
||||
+ FeatureUtilities.setAdBlockFiltersURL(
|
||||
+ UrlFormatter.fixupUrl(mAdBlockFiltersUrlEdit.getText().toString()));
|
||||
+ getActivity().finish();
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ Button button = (Button) v.findViewById(R.id.adblock_cancel);
|
||||
+ button.setOnClickListener(new View.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(View v) {
|
||||
+ getActivity().finish();
|
||||
+ }
|
||||
+ });
|
||||
+ }
|
||||
+}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/AdBlockPreferences.java
|
||||
@@ -0,0 +1,53 @@
|
||||
+// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+package org.chromium.chrome.browser.preferences;
|
||||
+
|
||||
+import android.os.Bundle;
|
||||
+import android.support.v7.preference.Preference;
|
||||
+import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
+
|
||||
+import org.chromium.chrome.browser.ContentSettingsType;
|
||||
+import org.chromium.chrome.browser.util.FeatureUtilities;
|
||||
+import org.chromium.base.VisibleForTesting;
|
||||
+import org.chromium.chrome.R;
|
||||
+
|
||||
+/**
|
||||
+ * Fragment that allows the user to configure AdBlock related preferences.
|
||||
+ */
|
||||
+public class AdBlockPreferences extends PreferenceFragmentCompat {
|
||||
+ @VisibleForTesting
|
||||
+ public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
|
||||
+ private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
|
||||
+
|
||||
+ private Preference mAdBlockEdit;
|
||||
+
|
||||
+ @Override
|
||||
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
+ getActivity().setTitle(R.string.options_adblock_title);
|
||||
+ PreferenceUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
|
||||
+
|
||||
+ ChromeSwitchPreference mAdBlockSwitch =
|
||||
+ (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
|
||||
+ boolean isAdBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ mAdBlockSwitch.setChecked(isAdBlockEnabled);
|
||||
+ mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, !(boolean) newValue);
|
||||
+ return true;
|
||||
+ });
|
||||
+
|
||||
+ mAdBlockEdit = findPreference(PREF_ADBLOCK_EDIT);
|
||||
+ updateCurrentAdBlockUrl();
|
||||
+ }
|
||||
+
|
||||
+ private void updateCurrentAdBlockUrl() {
|
||||
+ mAdBlockEdit.setSummary(FeatureUtilities.getAdBlockFiltersURL());
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onResume() {
|
||||
+ super.onResume();
|
||||
+ updateCurrentAdBlockUrl();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -870,6 +870,20 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
Captions
|
||||
</message>
|
||||
|
||||
+ <!-- AdBlock settings -->
|
||||
+ <message name="IDS_PREFS_ADBLOCK" desc="Title of the AdBlock Settings screen. [CHAR-LIMIT=32]">
|
||||
+ AdBlock settings
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTIONS_ADBLOCK_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used to fetch the ad blocker filters.">
|
||||
+ Edit filters URL
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTIONS_ADBLOCK_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used to fetch the ad blocker filters.">
|
||||
+ Filters URL
|
||||
+ </message>
|
||||
+ <message name="IDS_ADBLOCK_HELP" desc="The title of the hyperlink that allows users to visit the web page with instructions for custom ad blocker filters.">
|
||||
+ Visit help page
|
||||
+ </message>
|
||||
+
|
||||
<!-- Site settings -->
|
||||
<message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
|
||||
Site settings
|
||||
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
|
||||
@@ -9603,6 +9603,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
Never show this again.
|
||||
</message>
|
||||
|
||||
+ <!-- Ad Blocking preferences -->
|
||||
+ <if expr="is_android">
|
||||
+ <message name="IDS_OPTIONS_ADBLOCK_TITLE" desc="The title of the Ad Blocking option on Android" formatter_data="android_java">
|
||||
+ Ad Blocking
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTIONS_ADBLOCK_SUMMARY" desc="The title of the Ad Blocking summary on Android" formatter_data="android_java">
|
||||
+ Configure Ad Blocking and filters URL
|
||||
+ </message>
|
||||
+ </if>
|
||||
+
|
||||
<!-- Ad Blocking UI strings. -->
|
||||
<message name="IDS_ALWAYS_ALLOW_ADS" desc="Explanation associated with a toggle to allow ads after ads have been blocked on the page. To be used on pages where the ad blocking UI is governed by a persistent permissions-based whitelist.">
|
||||
Always allow ads on this site
|
||||
diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
|
||||
--- a/chrome/browser/android/feature_utilities.cc
|
||||
+++ b/chrome/browser/android/feature_utilities.cc
|
||||
@@ -50,6 +50,14 @@ std::string GetReachedCodeProfilerTrialGroup() {
|
||||
} // namespace android
|
||||
} // namespace chrome
|
||||
|
||||
+static ScopedJavaLocalRef<jstring> JNI_FeatureUtilities_GetAdBlockFiltersURL(JNIEnv* env) {
|
||||
+ return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL));
|
||||
+}
|
||||
+
|
||||
+static void JNI_FeatureUtilities_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef<jstring>& url) {
|
||||
+ g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url));
|
||||
+}
|
||||
+
|
||||
static void JNI_FeatureUtilities_SetCustomTabVisible(
|
||||
JNIEnv* env,
|
||||
jboolean visible) {
|
||||
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
|
||||
@@ -1028,7 +1028,8 @@ BrowserProcessImpl::adblock_updater() {
|
||||
adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
|
||||
g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
|
||||
std::move(scheduler),
|
||||
- g_browser_process->subresource_filter_ruleset_service());
|
||||
+ g_browser_process->subresource_filter_ruleset_service(),
|
||||
+ local_state()->GetString(prefs::kAdBlockFiltersURL));
|
||||
|
||||
return adblock_updater_.get();
|
||||
}
|
||||
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
|
||||
@@ -405,6 +405,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
|
||||
ssl_config_service_manager_(
|
||||
SSLConfigServiceManager::CreateDefaultManager(local_state_)),
|
||||
proxy_config_monitor_(local_state_) {
|
||||
+ local_state_->SetDefaultPrefValue(prefs::kAdBlockFiltersURL,
|
||||
+ base::Value("https://www.bromite.org/filters/filters.dat"));
|
||||
#if !defined(OS_ANDROID)
|
||||
// QuicAllowed was not part of Android policy.
|
||||
const base::Value* value =
|
||||
@@ -508,6 +510,7 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
|
||||
}
|
||||
|
||||
void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
+ registry->RegisterStringPref(prefs::kAdBlockFiltersURL, std::string());
|
||||
// Register the DnsClient and DoH preferences. The feature list has not been
|
||||
// initialized yet, so setting the preference defaults here to reflect the
|
||||
// corresponding features will only cause the preference defaults to reflect
|
||||
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
||||
--- a/chrome/common/pref_names.cc
|
||||
+++ b/chrome/common/pref_names.cc
|
||||
@@ -1925,6 +1925,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
|
||||
// capture devices without prompt.
|
||||
const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
|
||||
|
||||
+// Holds the URL to an indexed subresource filters file.
|
||||
+const char kAdBlockFiltersURL[] = "adblock.filters_url";
|
||||
+
|
||||
// A pref holding the value of the policy used to explicitly allow or deny
|
||||
// access to video capture devices. When enabled or not set, the user is
|
||||
// prompted for device access. When disabled, access to video capture devices
|
||||
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
|
||||
@@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[];
|
||||
extern const char kForceEphemeralProfiles[];
|
||||
extern const char kHomePageIsNewTabPage[];
|
||||
extern const char kHomePage[];
|
||||
+extern const char kAdBlockFiltersURL[];
|
||||
extern const char kImportantSitesDialogHistory[];
|
||||
#if defined(OS_WIN)
|
||||
extern const char kLastProfileResetTimestamp[];
|
||||
diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
|
||||
--- a/components/component_updater/adblock_updater_service.cc
|
||||
+++ b/components/component_updater/adblock_updater_service.cc
|
||||
@@ -46,12 +46,12 @@ const int initial_check_delay = 5,
|
||||
next_check_delay = 60*60*24*7, // 1 week
|
||||
on_demand_check_delay = 60; // minimum 1 minute between each on-demand check
|
||||
|
||||
-AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service)
|
||||
+AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
|
||||
+ subresource_filter::RulesetService* ruleset_service, std::string filters_url)
|
||||
: ruleset_service_(ruleset_service), shared_url_network_factory_(shared_url_network_factory), scheduler_(std::move(scheduler)) {
|
||||
DCHECK(ruleset_service);
|
||||
|
||||
- //TODO: retrieve filters URL from config/prefs
|
||||
- filters_url_ = "https://www.bromite.org/filters/filters.dat";
|
||||
+ filters_url_ = filters_url;
|
||||
}
|
||||
|
||||
AdBlockUpdaterService::~AdBlockUpdaterService() {
|
||||
diff --git a/components/component_updater/adblock_updater_service.h b/components/component_updater/adblock_updater_service.h
|
||||
--- a/components/component_updater/adblock_updater_service.h
|
||||
+++ b/components/component_updater/adblock_updater_service.h
|
||||
@@ -54,7 +54,8 @@ class Observer {
|
||||
// All methods are safe to call ONLY from the browser's main thread.
|
||||
class AdBlockUpdaterService {
|
||||
public:
|
||||
- AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service);
|
||||
+ AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
|
||||
+ subresource_filter::RulesetService* ruleset_service, std::string filters_url);
|
||||
~AdBlockUpdaterService();
|
||||
|
||||
// Adds an observer for this class. An observer should not be added more
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
From: samartnik <artem@brave.com>
|
||||
Date: Tue, 17 Apr 2018 17:14:00 +0300
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 7 Sep 2019 15:07:42 +0200
|
||||
Subject: Add option to not persist tabs across sessions
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
|
||||
.../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
5 files changed, 31 insertions(+), 1 deletion(-)
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||
.../chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
|
||||
.../preferences/privacy/PrivacyPreferences.java | 11 +++++++++++
|
||||
.../android/java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
5 files changed, 28 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -67,6 +67,9 @@
|
||||
@@ -64,6 +64,9 @@
|
||||
<!-- TODO(peconn): Add help section. -->
|
||||
<!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
|
||||
|
||||
@@ -26,22 +26,22 @@ 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
|
||||
@@ -13,6 +13,11 @@
|
||||
android:summary="@string/navigation_error_summary"
|
||||
android:defaultValue="true" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
@@ -38,6 +38,11 @@
|
||||
android:key="contextual_search"
|
||||
android:title="@string/contextual_search_title"
|
||||
android:fragment="org.chromium.chrome.browser.preferences.privacy.ContextualSearchPreferenceFragment" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="close_tabs_on_exit"
|
||||
+ android:title="@string/close_tabs_on_exit_title"
|
||||
+ android:summary="@string/close_tabs_on_exit_summary"
|
||||
+ android:defaultValue="false" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="search_suggestions"
|
||||
android:title="@string/search_suggestions_title"
|
||||
android:summary="@string/search_suggestions_summary"
|
||||
<Preference
|
||||
android:key="clear_browsing_data"
|
||||
android:title="@string/clear_browsing_data_title"
|
||||
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
|
||||
@@ -1138,8 +1138,10 @@ public class ChromeTabbedActivity
|
||||
@@ -1173,8 +1173,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
|
||||
boolean hadCipherData =
|
||||
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
|
||||
|
||||
@@ -62,53 +62,50 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
|
||||
|
||||
+import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.Preference;
|
||||
@@ -15,6 +16,7 @@ import android.view.Menu;
|
||||
import android.support.graphics.drawable.VectorDrawableCompat;
|
||||
import android.support.v7.preference.CheckBoxPreference;
|
||||
@@ -13,6 +14,7 @@ import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.BuildInfo;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
import org.chromium.chrome.R;
|
||||
@@ -44,6 +46,7 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
@@ -37,6 +39,7 @@ public class PrivacyPreferences
|
||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
||||
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
||||
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
|
||||
private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
|
||||
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
||||
private static final String PREF_DO_NOT_TRACK = "do_not_track";
|
||||
private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
|
||||
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
|
||||
@@ -71,6 +74,11 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
(ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
|
||||
canMakePaymentPref.setOnPreferenceChangeListener(this);
|
||||
|
||||
@@ -87,6 +90,10 @@ public class PrivacyPreferences
|
||||
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setBoolean(
|
||||
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
|
||||
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
|
||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
|
||||
+ sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -137,6 +144,10 @@ public class PrivacyPreferences
|
||||
contextualPref.setSummary(isContextualSearchEnabled ? textOn : textOff);
|
||||
}
|
||||
|
||||
+ ChromeBaseCheckBoxPreference closeTabsOnExitPref =
|
||||
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
|
||||
+ closeTabsOnExitPref.setOnPreferenceChangeListener(this);
|
||||
+ closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
+
|
||||
ChromeBaseCheckBoxPreference networkPredictionPref =
|
||||
(ChromeBaseCheckBoxPreference) findPreference(PREF_NETWORK_PREDICTIONS);
|
||||
networkPredictionPref.setChecked(prefServiceBridge.getNetworkPredictionEnabled());
|
||||
@@ -143,6 +151,12 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
|
||||
recordNetworkPredictionEnablingUMA((boolean) newValue);
|
||||
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
|
||||
+// PrefServiceBridge.getInstance().setBoolean(
|
||||
+// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue);
|
||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
|
||||
+ sharedPreferencesEditor.apply();
|
||||
} else if (PREF_NAVIGATION_ERROR.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
|
||||
} else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
|
||||
}
|
||||
|
||||
private ManagedPreferenceDelegate createManagedPreferenceDelegate() {
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -3880,6 +3880,12 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
@@ -3699,6 +3699,12 @@ The site does NOT gain access to the camera. The camera images are only visible
|
||||
<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>
|
||||
@@ -122,5 +119,5 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
|
||||
LINK
|
||||
</message>
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -4,33 +4,35 @@ Subject: Add option to use home page as NTP
|
||||
|
||||
Use about:blank as default homepage
|
||||
---
|
||||
.../android/java/res/xml/homepage_preferences.xml | 5 +++++
|
||||
.../partnercustomizations/HomepageManager.java | 24 ++++++++++++++++++++--
|
||||
.../browser/preferences/HomepagePreferences.java | 14 ++++++++++++-
|
||||
.../chrome/browser/tabmodel/TabCreatorManager.java | 11 ++++++++--
|
||||
.../java/strings/android_chrome_strings.grd | 3 +++
|
||||
chrome/browser/ui/browser_ui_prefs.cc | 2 ++
|
||||
chrome/common/pref_names.cc | 4 ++++
|
||||
chrome/common/pref_names.h | 1 +
|
||||
8 files changed, 59 insertions(+), 5 deletions(-)
|
||||
.../java/res/xml/homepage_preferences.xml | 5 ++++
|
||||
.../HomepageManager.java | 24 +++++++++++++++++--
|
||||
.../preferences/HomepagePreferences.java | 10 ++++++++
|
||||
.../browser/tabmodel/TabCreatorManager.java | 11 +++++++--
|
||||
.../java/strings/android_chrome_strings.grd | 3 +++
|
||||
chrome/browser/ui/browser_ui_prefs.cc | 2 ++
|
||||
chrome/common/pref_names.cc | 4 ++++
|
||||
chrome/common/pref_names.h | 1 +
|
||||
8 files changed, 56 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/homepage_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/homepage_preferences.xml
|
||||
@@ -16,4 +16,9 @@
|
||||
android:title="@string/options_homepage_edit_label"
|
||||
android:fragment="org.chromium.chrome.browser.preferences.HomepageEditor" />
|
||||
@@ -6,6 +6,11 @@
|
||||
<PreferenceScreen
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
|
||||
+ android:key="ntp_is_homepage_switch"
|
||||
+ android:summaryOn="@string/options_ntp_is_homepage_label"
|
||||
+ android:summaryOff="@string/options_ntp_is_homepage_label" />
|
||||
+
|
||||
</PreferenceScreen>
|
||||
<org.chromium.chrome.browser.preferences.ChromeSwitchPreference
|
||||
android:key="homepage_switch"
|
||||
android:summaryOn="@string/text_on"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
@@ -32,6 +32,7 @@ public class HomepageManager {
|
||||
@@ -31,6 +31,7 @@ public class HomepageManager {
|
||||
}
|
||||
|
||||
private static final String PREF_HOMEPAGE_ENABLED = "homepage";
|
||||
@@ -38,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
private static final String PREF_HOMEPAGE_CUSTOM_URI = "homepage_custom_uri";
|
||||
private static final String PREF_HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
|
||||
|
||||
@@ -91,7 +92,8 @@ public class HomepageManager {
|
||||
@@ -90,7 +91,8 @@ public class HomepageManager {
|
||||
*/
|
||||
public static boolean shouldCloseAppWithZeroTabs() {
|
||||
return HomepageManager.isHomepageEnabled()
|
||||
@@ -49,7 +51,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
|
||||
/**
|
||||
@@ -111,7 +113,7 @@ public class HomepageManager {
|
||||
* @return The default homepage URI.
|
||||
* if the homepage button is force enabled via flag.
|
||||
*/
|
||||
public static String getDefaultHomepageUri() {
|
||||
- return UrlConstants.NTP_NON_NATIVE_URL;
|
||||
@@ -57,10 +59,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,6 +127,14 @@ public class HomepageManager {
|
||||
@@ -124,6 +126,14 @@ public class HomepageManager {
|
||||
return mSharedPreferences.getBoolean(PREF_HOMEPAGE_ENABLED, true);
|
||||
}
|
||||
|
||||
/**
|
||||
+ /**
|
||||
+ * Returns the user preference for whether the New Tab Page is the homepage or not.
|
||||
+ *
|
||||
+ */
|
||||
@@ -68,14 +71,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
+ return mSharedPreferences.getBoolean(PREF_NTP_IS_HOMEPAGE, false);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
/**
|
||||
* Sets the user preference for whether the homepage is enabled.
|
||||
*/
|
||||
public void setPrefHomepageEnabled(boolean enabled) {
|
||||
@@ -138,6 +148,16 @@ public class HomepageManager {
|
||||
@@ -137,6 +147,16 @@ public class HomepageManager {
|
||||
notifyHomepageUpdated();
|
||||
}
|
||||
|
||||
/**
|
||||
+ /**
|
||||
+ * Sets the user preference for whether the new tab page is the homepage or not.
|
||||
+ */
|
||||
+ public void setPrefNTPIsHomepageEnabled(boolean enabled) {
|
||||
@@ -85,38 +88,31 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
+ notifyHomepageUpdated();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
/**
|
||||
* @return User specified homepage custom URI string.
|
||||
*/
|
||||
public String getPrefHomepageCustomUri() {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java
|
||||
@@ -19,9 +19,10 @@ import org.chromium.chrome.browser.util.FeatureUtilities;
|
||||
public class HomepagePreferences extends PreferenceFragment {
|
||||
private static final String PREF_HOMEPAGE_SWITCH = "homepage_switch";
|
||||
@@ -19,6 +19,7 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
|
||||
@VisibleForTesting
|
||||
public static final String PREF_HOMEPAGE_SWITCH = "homepage_switch";
|
||||
private static final String PREF_HOMEPAGE_EDIT = "homepage_edit";
|
||||
+ private static final String PREF_NTP_HOMEPAGE_SWITCH = "ntp_is_homepage_switch";
|
||||
|
||||
private HomepageManager mHomepageManager;
|
||||
- private ChromeSwitchPreference mHomepageSwitch;
|
||||
+ private ChromeSwitchPreference mHomepageSwitch, mNTPIsHomepageSwitch;
|
||||
private Preference mHomepageEdit;
|
||||
|
||||
@Override
|
||||
@@ -47,6 +48,17 @@ public class HomepagePreferences extends PreferenceFragment {
|
||||
}
|
||||
@@ -39,6 +40,15 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
|
||||
return true;
|
||||
});
|
||||
|
||||
+ mNTPIsHomepageSwitch = (ChromeSwitchPreference) findPreference(PREF_NTP_HOMEPAGE_SWITCH);
|
||||
+ ChromeSwitchPreference mNTPIsHomepageSwitch =
|
||||
+ (ChromeSwitchPreference) findPreference(PREF_NTP_HOMEPAGE_SWITCH);
|
||||
+ boolean isHomepageNTPEnabled = mHomepageManager.getPrefNTPIsHomepageEnabled();
|
||||
+ mNTPIsHomepageSwitch.setChecked(isHomepageNTPEnabled);
|
||||
+ mNTPIsHomepageSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
||||
+ @Override
|
||||
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
+ mHomepageManager.setPrefNTPIsHomepageEnabled((boolean) newValue);
|
||||
+ return true;
|
||||
+ }
|
||||
+ mNTPIsHomepageSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
+ mHomepageManager.setPrefNTPIsHomepageEnabled((boolean) newValue);
|
||||
+ return true;
|
||||
+ });
|
||||
+
|
||||
mHomepageEdit = findPreference(PREF_HOMEPAGE_EDIT);
|
||||
@@ -125,15 +121,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Hom
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
|
||||
@@ -10,6 +10,7 @@ import org.chromium.base.TraceEvent;
|
||||
import org.chromium.chrome.browser.UrlConstants;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tab.TabState;
|
||||
+import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
|
||||
@@ -12,6 +12,7 @@ import org.chromium.chrome.browser.tab.TabState;
|
||||
import org.chromium.chrome.browser.util.UrlConstants;
|
||||
import org.chromium.content_public.browser.LoadUrlParams;
|
||||
import org.chromium.content_public.browser.WebContents;
|
||||
+import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
|
||||
|
||||
@@ -88,12 +89,18 @@ public interface TabCreatorManager {
|
||||
/**
|
||||
* An interface to return a {@link TabCreator} either for regular or incognito tabs.
|
||||
@@ -85,12 +86,18 @@ public interface TabCreatorManager {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -157,21 +153,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCre
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -674,6 +674,9 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_OPTIONS_HOMEPAGE_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is opened when they tap on the home page button in the omnibox.">
|
||||
Open this page
|
||||
@@ -668,6 +668,9 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_NOTIFICATIONS_CONTENT_SUGGESTIONS_SUMMARY_DISABLED" desc="Summary for the disabled preference to turn on/off content suggestions notifications when search and site suggestions are disabled.">
|
||||
Search and site suggestions disabled
|
||||
</message>
|
||||
+ <message name="IDS_OPTIONS_NTP_IS_HOMEPAGE_LABEL" desc="The label for switch that allows the user to toggle whether opening a new tab leads to the new tab page or the home page.">
|
||||
+ Use for new tabs
|
||||
+ </message>
|
||||
|
||||
<!-- Startup page preferences -->
|
||||
<message name="IDS_OPTIONS_STARTUP_PAGE_TITLE" desc="The title of the setting that allows users to manage the page that opens when they start Chrome.">
|
||||
<!-- always incognito -->
|
||||
<message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
|
||||
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
|
||||
@@ -56,6 +56,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
GetHomeButtonAndHomePageIsNewTabPageFlags());
|
||||
@@ -55,6 +55,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
GetHomeButtonAndHomePageIsNewTabPageFlags());
|
||||
registry->RegisterBooleanPref(prefs::kShowHomeButton, false,
|
||||
GetHomeButtonAndHomePageIsNewTabPageFlags());
|
||||
+ registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
|
||||
@@ -182,7 +178,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
|
||||
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
||||
--- a/chrome/common/pref_names.cc
|
||||
+++ b/chrome/common/pref_names.cc
|
||||
@@ -58,6 +58,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
|
||||
@@ -59,6 +59,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
|
||||
// A boolean specifying whether the New Tab page is the home page or not.
|
||||
const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage";
|
||||
|
||||
@@ -196,8 +192,8 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
||||
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
|
||||
@@ -293,6 +293,7 @@ extern const char kParentAccessCodeConfig[];
|
||||
extern const char kDeviceWallpaperImageFilePath[];
|
||||
@@ -322,6 +322,7 @@ extern const char kSettingsShowOSBanner[];
|
||||
extern const char kDeviceLoginScreenWebUsbAllowDevicesForUrls[];
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
extern const char kShowHomeButton[];
|
||||
+extern const char kNewTabPageIsHomePage[];
|
||||
@@ -205,5 +201,5 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||
extern const char kAllowDeletingBrowserHistory[];
|
||||
#if !defined(OS_ANDROID)
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,18 +3,18 @@ Date: Tue, 28 Aug 2018 23:27:23 +0200
|
||||
Subject: Add site settings option for session-only cookies
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
.../android/java/res/xml/website_preferences.xml | 7 ++++++
|
||||
.../browser/preferences/PrefServiceBridge.java | 10 +++++++++
|
||||
.../website/SingleCategoryPreferences.java | 21 +++++++++++++++++-
|
||||
.../java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
.../android/preferences/pref_service_bridge.cc | 25 ++++++++++++++++++++++
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
.../java/res/xml/website_preferences.xml | 7 ++++++
|
||||
.../preferences/PrefServiceBridge.java | 10 ++++++++
|
||||
.../website/SingleCategoryPreferences.java | 21 +++++++++++++++-
|
||||
.../java/strings/android_chrome_strings.grd | 6 +++++
|
||||
.../preferences/pref_service_bridge.cc | 25 +++++++++++++++++++
|
||||
6 files changed, 71 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -39,6 +39,9 @@
|
||||
@@ -32,6 +32,9 @@
|
||||
<integer name="reload_button_level_reload">0</integer>
|
||||
<integer name="reload_button_level_stop">1</integer>
|
||||
|
||||
@@ -44,48 +44,41 @@ diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/androi
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
@@ -240,6 +240,10 @@ public class PrefServiceBridge {
|
||||
return nativeGetBlockThirdPartyCookiesEnabled();
|
||||
@@ -265,6 +265,10 @@ public class PrefServiceBridge {
|
||||
return PrefServiceBridgeJni.get().getBlockThirdPartyCookiesEnabled(PrefServiceBridge.this);
|
||||
}
|
||||
|
||||
+ public boolean isCookiesSessionOnlyEnabled() {
|
||||
+ return nativeGetCookiesSessionOnlyEnabled();
|
||||
+ return PrefServiceBridgeJni.get().getCookiesSessionOnlyEnabled(PrefServiceBridge.this);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* @return Whether third-party cookie blocking is configured by policy
|
||||
*/
|
||||
@@ -626,6 +630,10 @@ public class PrefServiceBridge {
|
||||
nativeSetBlockThirdPartyCookiesEnabled(enabled);
|
||||
@@ -668,6 +672,10 @@ public class PrefServiceBridge {
|
||||
PrefServiceBridge.this, enabled);
|
||||
}
|
||||
|
||||
+ public void setCookiesSessionOnlyEnabled(boolean enabled) {
|
||||
+ nativeSetCookiesSessionOnlyEnabled(enabled);
|
||||
+ PrefServiceBridgeJni.get().setCookiesSessionOnlyEnabled(PrefServiceBridge.this, enabled);
|
||||
+ }
|
||||
+
|
||||
public void setDoNotTrackEnabled(boolean enabled) {
|
||||
nativeSetDoNotTrackEnabled(enabled);
|
||||
PrefServiceBridgeJni.get().setDoNotTrackEnabled(PrefServiceBridge.this, enabled);
|
||||
}
|
||||
@@ -1074,6 +1082,7 @@ public class PrefServiceBridge {
|
||||
private native boolean nativeGetAutoplayEnabled();
|
||||
private native boolean nativeGetBackgroundSyncEnabled();
|
||||
private native boolean nativeGetBlockThirdPartyCookiesEnabled();
|
||||
+ private native boolean nativeGetCookiesSessionOnlyEnabled();
|
||||
private native boolean nativeGetBlockThirdPartyCookiesManaged();
|
||||
private native boolean nativeGetRememberPasswordsEnabled();
|
||||
private native boolean nativeGetPasswordManagerAutoSigninEnabled();
|
||||
@@ -1120,6 +1129,7 @@ public class PrefServiceBridge {
|
||||
private native void nativeSetAutoplayEnabled(boolean enabled);
|
||||
private native void nativeSetAllowCookiesEnabled(boolean enabled);
|
||||
private native void nativeSetBackgroundSyncEnabled(boolean enabled);
|
||||
+ private native void nativeSetCookiesSessionOnlyEnabled(boolean enabled);
|
||||
private native void nativeSetBlockThirdPartyCookiesEnabled(boolean enabled);
|
||||
private native void nativeSetClipboardEnabled(boolean enabled);
|
||||
private native void nativeSetDoNotTrackEnabled(boolean enabled);
|
||||
@@ -1138,6 +1146,8 @@ public class PrefServiceBridge {
|
||||
|
||||
@NativeMethods
|
||||
public interface Natives {
|
||||
+ boolean getCookiesSessionOnlyEnabled(PrefServiceBridge caller);
|
||||
+ void setCookiesSessionOnlyEnabled(PrefServiceBridge caller, boolean enabled);
|
||||
boolean isContentSettingEnabled(PrefServiceBridge caller, int contentSettingType);
|
||||
boolean isContentSettingManaged(PrefServiceBridge caller, int contentSettingType);
|
||||
void setContentSettingEnabled(
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
|
||||
@@ -121,6 +121,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -127,6 +127,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
|
||||
// Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
|
||||
public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
|
||||
@@ -93,7 +86,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
|
||||
public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
|
||||
private static final String ADD_EXCEPTION_KEY = "add_exception";
|
||||
@@ -441,6 +442,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -477,6 +478,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
|
||||
if (type == SiteSettingsCategory.Type.COOKIES) {
|
||||
updateThirdPartyCookiesCheckBox();
|
||||
@@ -101,7 +94,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
} else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
|
||||
updateNotificationsVibrateCheckBox();
|
||||
}
|
||||
@@ -479,6 +481,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -516,6 +518,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
int setting = (int) newValue;
|
||||
prefServiceBridge.setContentSetting(mCategory.getContentSettingsType(), setting);
|
||||
getInfoForOrigins();
|
||||
@@ -110,7 +103,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
} else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
|
||||
prefServiceBridge.setBlockThirdPartyCookiesEnabled(((boolean) newValue));
|
||||
} else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
|
||||
@@ -769,6 +773,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -833,6 +837,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
TriStateSiteSettingsPreference triStateToggle =
|
||||
(TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
|
||||
Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
|
||||
@@ -119,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
|
||||
Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
|
||||
PreferenceGroup allowedGroup = (PreferenceGroup) screen.findPreference(ALLOWED_GROUP);
|
||||
@@ -799,6 +805,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -864,6 +870,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
|
||||
if (hideSecondaryToggles) {
|
||||
screen.removePreference(thirdPartyCookies);
|
||||
@@ -127,12 +120,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
screen.removePreference(notificationsVibrate);
|
||||
screen.removePreference(explainProtectedMediaKey);
|
||||
screen.removePreference(allowedGroup);
|
||||
@@ -808,12 +815,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -874,12 +881,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
return;
|
||||
}
|
||||
|
||||
- // Configure/hide the third-party cookie toggle, as needed.
|
||||
+ // Configure/hide the third-party cookie toggle and session-only cookie toggle, as needed.
|
||||
- // Configure/hide the third-party cookies toggle, as needed.
|
||||
+ // Configure/hide the third-party cookies toggle and session-only cookie toggle, as needed.
|
||||
if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
|
||||
thirdPartyCookies.setOnPreferenceChangeListener(this);
|
||||
updateThirdPartyCookiesCheckBox();
|
||||
@@ -144,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
}
|
||||
|
||||
// Configure/hide the notifications vibrate toggle, as needed.
|
||||
@@ -918,6 +928,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -994,6 +1004,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
|
||||
preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
|
||||
}
|
||||
|
||||
@@ -163,7 +156,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -913,6 +913,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
@@ -878,6 +878,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
<message name="IDS_BLOCK_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Block Third Party Cookies preference">
|
||||
Prevent third-party websites from saving and reading cookie data
|
||||
</message>
|
||||
@@ -179,7 +172,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
|
||||
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
@@ -311,6 +311,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
|
||||
@@ -330,6 +330,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
|
||||
return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
|
||||
}
|
||||
|
||||
@@ -197,7 +190,7 @@ diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/
|
||||
static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj) {
|
||||
@@ -768,6 +779,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
|
||||
@@ -801,6 +812,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
|
||||
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
|
||||
}
|
||||
|
||||
@@ -219,5 +212,5 @@ diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj,
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,518 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 23 Nov 2019 10:55:16 +0100
|
||||
Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
|
||||
|
||||
---
|
||||
chrome/android/chrome_java_sources.gni | 2 +
|
||||
chrome/android/java/res/layout/doh_editor.xml | 65 +++++++++++++
|
||||
chrome/android/java/res/values/values.xml | 2 +
|
||||
.../android/java/res/xml/doh_preferences.xml | 25 +++++
|
||||
.../java/res/xml/privacy_preferences.xml | 5 +
|
||||
.../chrome/browser/preferences/DoHEditor.java | 91 +++++++++++++++++++
|
||||
.../browser/preferences/DoHPreferences.java | 52 +++++++++++
|
||||
.../chrome/browser/util/FeatureUtilities.java | 24 +++++
|
||||
.../java/strings/android_chrome_strings.grd | 11 +++
|
||||
chrome/app/generated_resources.grd | 6 ++
|
||||
chrome/browser/android/feature_utilities.cc | 23 +++++
|
||||
.../net/system_network_context_manager.cc | 46 +++-------
|
||||
chrome/common/chrome_features.cc | 4 +-
|
||||
13 files changed, 319 insertions(+), 37 deletions(-)
|
||||
create mode 100644 chrome/android/java/res/layout/doh_editor.xml
|
||||
create mode 100644 chrome/android/java/res/xml/doh_preferences.xml
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.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
|
||||
@@ -1263,7 +1263,9 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/preferences/ClearBrowsingDataCheckBoxPreference.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/ExpandablePreferenceGroup.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/HomepageEditor.java",
|
||||
+ "java/src/org/chromium/chrome/browser/preferences/DoHEditor.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/HomepagePreferences.java",
|
||||
+ "java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/HyperlinkPreference.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/LearnMorePreference.java",
|
||||
"java/src/org/chromium/chrome/browser/preferences/LegalInformationPreferences.java",
|
||||
diff --git a/chrome/android/java/res/layout/doh_editor.xml b/chrome/android/java/res/layout/doh_editor.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/layout/doh_editor.xml
|
||||
@@ -0,0 +1,65 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+ Use of this source code is governed by a BSD-style license that can be
|
||||
+ found in the LICENSE file. -->
|
||||
+
|
||||
+<FrameLayout
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
+ xmlns:tools="http://schemas.android.com/tools"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="match_parent" >
|
||||
+
|
||||
+ <ScrollView
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="match_parent"
|
||||
+ android:id="@+id/scroll_view"
|
||||
+ android:fillViewport="true" >
|
||||
+
|
||||
+ <LinearLayout
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content"
|
||||
+ android:orientation="vertical"
|
||||
+ android:focusableInTouchMode="true" >
|
||||
+
|
||||
+ <org.chromium.chrome.browser.widget.ChromeTextInputLayout
|
||||
+ android:id="@+id/doh_url"
|
||||
+ style="@style/PreferenceScreenLayout"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content" >
|
||||
+ <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
|
||||
+ <EditText
|
||||
+ tools:ignore="Autofill"
|
||||
+ android:id="@+id/doh_url_edit"
|
||||
+ android:layout_width="match_parent"
|
||||
+ android:layout_height="wrap_content"
|
||||
+ android:inputType="textUri"
|
||||
+ android:singleLine="true"
|
||||
+ android:hint="@string/options_doh_edit_label" />
|
||||
+ </org.chromium.chrome.browser.widget.ChromeTextInputLayout>
|
||||
+
|
||||
+ <Space style="@style/ButtonBarTopSpacer" />
|
||||
+ <View style="@style/ButtonBarTopDivider" />
|
||||
+
|
||||
+ <LinearLayout style="@style/ButtonBar" >
|
||||
+ <org.chromium.ui.widget.ButtonCompat
|
||||
+ android:id="@+id/doh_reset"
|
||||
+ style="@style/ButtonBarButton"
|
||||
+ android:text="@string/reset" />
|
||||
+
|
||||
+ <org.chromium.ui.widget.ButtonCompat
|
||||
+ android:id="@+id/doh_cancel"
|
||||
+ style="@style/ButtonBarButton"
|
||||
+ android:text="@string/cancel" />
|
||||
+
|
||||
+ <org.chromium.ui.widget.ButtonCompat
|
||||
+ android:id="@+id/doh_save"
|
||||
+ style="@style/ButtonBarButton"
|
||||
+ android:text="@string/save" />
|
||||
+ </LinearLayout>
|
||||
+ </LinearLayout>
|
||||
+ </ScrollView>
|
||||
+
|
||||
+ <include layout="@layout/preferences_action_bar_shadow"/>
|
||||
+
|
||||
+</FrameLayout>
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -92,6 +92,8 @@
|
||||
<integer name="download_infobar_bar_fill_in_delay">400</integer>
|
||||
<integer name="download_infobar_bar_fill_out_delay">200</integer>
|
||||
|
||||
+ <string name="doh_help_url">https://www.bromite.org/doh</string>
|
||||
+
|
||||
<!-- Bottom navigation bar styling. -->
|
||||
<bool name="window_light_navigation_bar">true</bool>
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/doh_preferences.xml b/chrome/android/java/res/xml/doh_preferences.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/res/xml/doh_preferences.xml
|
||||
@@ -0,0 +1,25 @@
|
||||
+<?xml version="1.0" encoding="utf-8"?>
|
||||
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+ Use of this source code is governed by a BSD-style license that can be
|
||||
+ found in the LICENSE file. -->
|
||||
+
|
||||
+<PreferenceScreen
|
||||
+ xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
+ xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
+
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeSwitchPreference
|
||||
+ android:key="doh_switch"
|
||||
+ android:summaryOn="@string/text_on"
|
||||
+ android:summaryOff="@string/text_off" />
|
||||
+
|
||||
+ <org.chromium.chrome.browser.preferences.HyperlinkPreference
|
||||
+ android:key="doh_help"
|
||||
+ android:title="@string/doh_help"
|
||||
+ app:url="@string/doh_help_url" />
|
||||
+
|
||||
+ <Preference
|
||||
+ android:key="doh_edit"
|
||||
+ android:title="@string/options_doh_edit_label"
|
||||
+ android:fragment="org.chromium.chrome.browser.preferences.DoHEditor" />
|
||||
+
|
||||
+</PreferenceScreen>
|
||||
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
|
||||
@@ -19,6 +19,11 @@
|
||||
android:key="can_make_payment"
|
||||
android:title="@string/can_make_payment_title"
|
||||
android:summary="@string/settings_can_make_payment_toggle_label" />
|
||||
+ <Preference
|
||||
+ android:fragment="org.chromium.chrome.browser.preferences.DoHPreferences"
|
||||
+ android:key="doh"
|
||||
+ android:title="@string/options_doh_title"
|
||||
+ android:summary="@string/options_doh_summary" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="preload_pages"
|
||||
android:title="@string/preload_pages_title"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHEditor.java
|
||||
@@ -0,0 +1,91 @@
|
||||
+// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+package org.chromium.chrome.browser.preferences;
|
||||
+
|
||||
+import android.os.Bundle;
|
||||
+import android.support.v4.app.Fragment;
|
||||
+import android.text.Editable;
|
||||
+import android.text.TextWatcher;
|
||||
+import android.view.LayoutInflater;
|
||||
+import android.view.View;
|
||||
+import android.view.ViewGroup;
|
||||
+import android.widget.Button;
|
||||
+import android.widget.EditText;
|
||||
+
|
||||
+import org.chromium.chrome.browser.util.FeatureUtilities;
|
||||
+import org.chromium.chrome.R;
|
||||
+import org.chromium.components.url_formatter.UrlFormatter;
|
||||
+
|
||||
+/**
|
||||
+ * Provides the Java-UI for editing the DNS-over-HTTPS (DoH) preference.
|
||||
+ */
|
||||
+public class DoHEditor extends Fragment implements TextWatcher {
|
||||
+ private EditText mDoHUrlEdit;
|
||||
+ private Button mSaveButton;
|
||||
+ private Button mResetButton;
|
||||
+
|
||||
+ @Override
|
||||
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
+ Bundle savedInstanceState) {
|
||||
+ super.onCreate(savedInstanceState);
|
||||
+ getActivity().setTitle(R.string.options_doh_edit_title);
|
||||
+
|
||||
+ View v = inflater.inflate(R.layout.doh_editor, container, false);
|
||||
+ View scrollView = v.findViewById(R.id.scroll_view);
|
||||
+ scrollView.getViewTreeObserver().addOnScrollChangedListener(
|
||||
+ PreferenceUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
|
||||
+ mDoHUrlEdit = (EditText) v.findViewById(R.id.doh_url_edit);
|
||||
+ mDoHUrlEdit.setText(FeatureUtilities.getDoHTemplates());
|
||||
+ mDoHUrlEdit.addTextChangedListener(this);
|
||||
+ mDoHUrlEdit.requestFocus();
|
||||
+
|
||||
+ initializeSaveCancelResetButtons(v);
|
||||
+ return v;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
+ mSaveButton.setEnabled(s.length() != 0);
|
||||
+ mResetButton.setEnabled(true);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void afterTextChanged(Editable s) {
|
||||
+ }
|
||||
+
|
||||
+ private void initializeSaveCancelResetButtons(View v) {
|
||||
+ mResetButton = (Button) v.findViewById(R.id.doh_reset);
|
||||
+ mResetButton.setOnClickListener(new View.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(View v) {
|
||||
+ mDoHUrlEdit.setText(FeatureUtilities.getDoHTemplates());
|
||||
+ getActivity().finish();
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ mSaveButton = (Button) v.findViewById(R.id.doh_save);
|
||||
+ mSaveButton.setEnabled(false);
|
||||
+ mSaveButton.setOnClickListener(new View.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(View v) {
|
||||
+ FeatureUtilities.setDoHTemplates(
|
||||
+ mDoHUrlEdit.getText().toString());
|
||||
+ getActivity().finish();
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ Button button = (Button) v.findViewById(R.id.doh_cancel);
|
||||
+ button.setOnClickListener(new View.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(View v) {
|
||||
+ getActivity().finish();
|
||||
+ }
|
||||
+ });
|
||||
+ }
|
||||
+}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/DoHPreferences.java
|
||||
@@ -0,0 +1,52 @@
|
||||
+// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+package org.chromium.chrome.browser.preferences;
|
||||
+
|
||||
+import android.os.Bundle;
|
||||
+import android.support.v7.preference.Preference;
|
||||
+import android.support.v7.preference.PreferenceFragmentCompat;
|
||||
+
|
||||
+import org.chromium.chrome.browser.util.FeatureUtilities;
|
||||
+import org.chromium.base.VisibleForTesting;
|
||||
+import org.chromium.chrome.R;
|
||||
+
|
||||
+/**
|
||||
+ * Fragment that allows the user to configure DoH related preferences.
|
||||
+ */
|
||||
+public class DoHPreferences extends PreferenceFragmentCompat {
|
||||
+ @VisibleForTesting
|
||||
+ public static final String PREF_DOH_SWITCH = "doh_switch";
|
||||
+ private static final String PREF_DOH_EDIT = "doh_edit";
|
||||
+
|
||||
+ private Preference mDoHEdit;
|
||||
+
|
||||
+ @Override
|
||||
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
+ getActivity().setTitle(R.string.options_doh_title);
|
||||
+ PreferenceUtils.addPreferencesFromResource(this, R.xml.doh_preferences);
|
||||
+
|
||||
+ ChromeSwitchPreference mDoHSwitch =
|
||||
+ (ChromeSwitchPreference) findPreference(PREF_DOH_SWITCH);
|
||||
+ boolean isDoHEnabled = FeatureUtilities.getDoHEnabled();
|
||||
+ mDoHSwitch.setChecked(isDoHEnabled);
|
||||
+ mDoHSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
+ FeatureUtilities.setDoHEnabled((boolean) newValue);
|
||||
+ return true;
|
||||
+ });
|
||||
+
|
||||
+ mDoHEdit = findPreference(PREF_DOH_EDIT);
|
||||
+ updateCurrentDoHUrl();
|
||||
+ }
|
||||
+
|
||||
+ private void updateCurrentDoHUrl() {
|
||||
+ mDoHEdit.setSummary(FeatureUtilities.getDoHTemplates());
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onResume() {
|
||||
+ super.onResume();
|
||||
+ updateCurrentDoHUrl();
|
||||
+ }
|
||||
+}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
|
||||
@@ -223,6 +223,26 @@ public class FeatureUtilities {
|
||||
FeatureUtilitiesJni.get().setCustomTabVisible(visible);
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Records whether custom URL for DoH is enabled with native-side feature utilities.
|
||||
+ * @param url Whether custom URL is enabled or not.
|
||||
+ */
|
||||
+ public static void setDoHEnabled(boolean enabled) {
|
||||
+ FeatureUtilitiesJni.get().setDoHEnabled(enabled);
|
||||
+ }
|
||||
+
|
||||
+ public static boolean getDoHEnabled() {
|
||||
+ return FeatureUtilitiesJni.get().getDoHEnabled();
|
||||
+ }
|
||||
+
|
||||
+ public static void setDoHTemplates(String t) {
|
||||
+ FeatureUtilitiesJni.get().setDoHTemplates(t);
|
||||
+ }
|
||||
+
|
||||
+ public static String getDoHTemplates() {
|
||||
+ return FeatureUtilitiesJni.get().getDoHTemplates();
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Records whether the activity is in multi-window mode with native-side feature utilities.
|
||||
* @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
|
||||
@@ -852,6 +872,10 @@ public class FeatureUtilities {
|
||||
interface Natives {
|
||||
void setCustomTabVisible(boolean visible);
|
||||
void setIsInMultiWindowMode(boolean isInMultiWindowMode);
|
||||
+ void setDoHEnabled(boolean enabled);
|
||||
+ boolean getDoHEnabled();
|
||||
+ void setDoHTemplates(String templates);
|
||||
+ String getDoHTemplates();
|
||||
boolean isNetworkServiceWarmUpEnabled();
|
||||
void setAdBlockFiltersURL(String url);
|
||||
String getAdBlockFiltersURL();
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -644,6 +644,17 @@ CHAR-LIMIT guidelines:
|
||||
Chrome Passwords
|
||||
</message>
|
||||
|
||||
+ <!-- DoH preferences -->
|
||||
+ <message name="IDS_OPTIONS_DOH_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used for DNS-over-HTTPS queries.">
|
||||
+ Edit DoH template URLs
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTIONS_DOH_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used for DNS-over-HTTPS queries.">
|
||||
+ DoH template URLs
|
||||
+ </message>
|
||||
+ <message name="IDS_DOH_HELP" desc="The title of the hyperlink that allows users to visit the wiki page with instructions for DNS-over-HTTPS configuration.">
|
||||
+ Visit help page
|
||||
+ </message>
|
||||
+
|
||||
<!-- Homepage preferences -->
|
||||
<message name="IDS_OPTIONS_HOMEPAGE_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that opens when they tap on the home page button in the omnibox.">
|
||||
Edit home page
|
||||
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
|
||||
@@ -6558,6 +6558,12 @@ the Bookmarks menu.">
|
||||
<message name="IDS_OPTIONS_HOMEPAGE_TITLE" desc="The title of the home page overlay on Android" formatter_data="android_java">
|
||||
Home page
|
||||
</message>
|
||||
+ <message name="IDS_OPTIONS_DOH_TITLE" desc="The title of the DNS-over-HTTPS option on Android" formatter_data="android_java">
|
||||
+ Secure DNS
|
||||
+ </message>
|
||||
+ <message name="IDS_OPTIONS_DOH_SUMMARY" desc="The title of the DNS-over-HTTPS summary on Android" formatter_data="android_java">
|
||||
+ Configure DNS-over-HTTPS (DoH) secure DNS
|
||||
+ </message>
|
||||
</if>
|
||||
|
||||
<!-- Autofill dialog: field labels. -->
|
||||
diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
|
||||
--- a/chrome/browser/android/feature_utilities.cc
|
||||
+++ b/chrome/browser/android/feature_utilities.cc
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "chrome/android/chrome_jni_headers/FeatureUtilities_jni.h"
|
||||
|
||||
#include "base/android/jni_string.h"
|
||||
+#include "chrome/browser/browser_process.h"
|
||||
+#include "components/prefs/pref_service.h"
|
||||
+#include "chrome/common/pref_names.h"
|
||||
#include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h"
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
#include "components/ntp_snippets/content_suggestions_service.h"
|
||||
@@ -76,3 +79,23 @@ static jboolean JNI_FeatureUtilities_IsNetworkServiceWarmUpEnabled(
|
||||
return content::IsOutOfProcessNetworkService() &&
|
||||
base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
|
||||
}
|
||||
+
|
||||
+static jboolean JNI_FeatureUtilities_GetDoHEnabled(JNIEnv* env) {
|
||||
+ std::string doh_mode = g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsMode);
|
||||
+ return ((doh_mode == "secure") || (doh_mode == "auto"));
|
||||
+}
|
||||
+
|
||||
+static void JNI_FeatureUtilities_SetDoHEnabled(JNIEnv* env, jboolean enabled) {
|
||||
+ if (enabled)
|
||||
+ g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsMode, "secure");
|
||||
+ else
|
||||
+ g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsMode, "off");
|
||||
+}
|
||||
+
|
||||
+static ScopedJavaLocalRef<jstring> JNI_FeatureUtilities_GetDoHTemplates(JNIEnv* env) {
|
||||
+ return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsTemplates));
|
||||
+}
|
||||
+
|
||||
+static void JNI_FeatureUtilities_SetDoHTemplates(JNIEnv* env, const JavaParamRef<jstring>& templates) {
|
||||
+ g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsTemplates, base::android::ConvertJavaStringToUTF8(env, templates));
|
||||
+}
|
||||
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
|
||||
@@ -137,9 +137,14 @@ void GetStubResolverConfig(
|
||||
|
||||
std::string doh_templates =
|
||||
local_state->GetString(prefs::kDnsOverHttpsTemplates);
|
||||
- std::string server_method;
|
||||
- if (!doh_templates.empty() &&
|
||||
- *secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
|
||||
+ if (doh_templates.empty()) {
|
||||
+ *secure_dns_mode = net::DnsConfig::SecureDnsMode::OFF;
|
||||
+ doh_mode = chrome_browser_net::kDnsOverHttpsModeOff;
|
||||
+ }
|
||||
+
|
||||
+ LOG(INFO) << "DoH templates: '" << doh_templates << "' with mode " << doh_mode;
|
||||
+ if (*secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
|
||||
+ std::string server_method;
|
||||
for (const std::string& server_template :
|
||||
SplitString(doh_templates, " ", base::TRIM_WHITESPACE,
|
||||
base::SPLIT_WANT_NONEMPTY)) {
|
||||
@@ -425,40 +430,11 @@ SystemNetworkContextManager::SystemNetworkContextManager(
|
||||
// features before registering change callbacks for these preferences.
|
||||
local_state_->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled,
|
||||
base::Value(ShouldEnableAsyncDns()));
|
||||
- std::string default_doh_mode = chrome_browser_net::kDnsOverHttpsModeOff;
|
||||
- std::string default_doh_templates = "";
|
||||
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
|
||||
- if (features::kDnsOverHttpsFallbackParam.Get()) {
|
||||
- default_doh_mode = chrome_browser_net::kDnsOverHttpsModeAutomatic;
|
||||
- } else {
|
||||
- default_doh_mode = chrome_browser_net::kDnsOverHttpsModeSecure;
|
||||
- }
|
||||
- default_doh_templates = features::kDnsOverHttpsTemplatesParam.Get();
|
||||
- }
|
||||
+ //NOTE: DoH fallback feature to insecure mode is not evaluated
|
||||
local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsMode,
|
||||
- base::Value(default_doh_mode));
|
||||
+ base::Value(chrome_browser_net::kDnsOverHttpsModeOff));
|
||||
local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsTemplates,
|
||||
- base::Value(default_doh_templates));
|
||||
-
|
||||
- // If the user has explicitly enabled or disabled the DoH experiment in
|
||||
- // chrome://flags, store that choice in the user prefs so that it can be
|
||||
- // persisted after the experiment ends. Also make sure to remove the stored
|
||||
- // prefs value if the user has changed their chrome://flags selection to the
|
||||
- // default.
|
||||
- flags_ui::PrefServiceFlagsStorage flags_storage(local_state_);
|
||||
- std::set<std::string> entries = flags_storage.GetFlags();
|
||||
- if (entries.count("dns-over-https@1")) {
|
||||
- // The user has "Enabled" selected.
|
||||
- local_state_->SetString(prefs::kDnsOverHttpsMode,
|
||||
- chrome_browser_net::kDnsOverHttpsModeAutomatic);
|
||||
- } else if (entries.count("dns-over-https@2")) {
|
||||
- // The user has "Disabled" selected.
|
||||
- local_state_->SetString(prefs::kDnsOverHttpsMode,
|
||||
- chrome_browser_net::kDnsOverHttpsModeOff);
|
||||
- } else {
|
||||
- // The user has "Default" selected.
|
||||
- local_state_->ClearPref(prefs::kDnsOverHttpsMode);
|
||||
- }
|
||||
+ base::Value(features::kDnsOverHttpsTemplatesParam.Get()));
|
||||
|
||||
PrefChangeRegistrar::NamedChangeCallback dns_pref_callback =
|
||||
base::BindRepeating(&OnStubResolverConfigChanged,
|
||||
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
|
||||
@@ -294,12 +294,12 @@ const char kDisallowUnsafeHttpDownloadsParamName[] = "MimeTypeList";
|
||||
|
||||
// Enable DNS over HTTPS (DoH).
|
||||
const base::Feature kDnsOverHttps{"DnsOverHttps",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
// Set whether fallback to insecure DNS is allowed by default. This setting may
|
||||
// be overridden for individual transactions.
|
||||
const base::FeatureParam<bool> kDnsOverHttpsFallbackParam{&kDnsOverHttps,
|
||||
- "Fallback", true};
|
||||
+ "Fallback", false};
|
||||
|
||||
// Supply one or more space-separated DoH server URI templates to use when this
|
||||
// feature is enabled. If no templates are specified, then a hardcoded mapping
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 19 Dec 2019 22:52:53 +0100
|
||||
Subject: Allow building without feed support
|
||||
|
||||
---
|
||||
.../start_surface/StartSurfaceCoordinator.java | 5 -----
|
||||
.../start_surface/StartSurfaceMediator.java | 16 ----------------
|
||||
.../browser/ntp/cards/ExploreOfflineCard.java | 5 +----
|
||||
3 files changed, 1 insertion(+), 25 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
|
||||
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
|
||||
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
|
||||
@@ -198,11 +198,6 @@ public class StartSurfaceCoordinator implements StartSurface {
|
||||
mBottomBarCoordinator = new BottomBarCoordinator(
|
||||
mActivity, mActivity.getCompositorViewHolder(), mPropertyModel);
|
||||
}
|
||||
-
|
||||
- mExploreSurfaceCoordinator = new ExploreSurfaceCoordinator(mActivity,
|
||||
- mSurfaceMode == SurfaceMode.SINGLE_PANE ? mTasksSurface.getBodyViewContainer()
|
||||
- : mActivity.getCompositorViewHolder(),
|
||||
- mPropertyModel, mSurfaceMode == SurfaceMode.SINGLE_PANE);
|
||||
}
|
||||
|
||||
private TabSwitcher.Controller initializeSecondaryTasksSurface() {
|
||||
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
|
||||
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
|
||||
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
|
||||
@@ -253,15 +253,6 @@ class StartSurfaceMediator
|
||||
RecordUserAction.record("StartSurface.TasksOnly");
|
||||
}
|
||||
|
||||
- // Make sure FeedSurfaceCoordinator is built before the explore surface is showing by
|
||||
- // default.
|
||||
- if (mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)
|
||||
- && mPropertyModel.get(FEED_SURFACE_COORDINATOR) == null) {
|
||||
- mPropertyModel.set(FEED_SURFACE_COORDINATOR,
|
||||
- mFeedSurfaceCreator.createFeedSurfaceCoordinator(
|
||||
- mNightModeStateProvider.isInNightMode()));
|
||||
- }
|
||||
-
|
||||
mPropertyModel.set(IS_SHOWING_OVERVIEW, true);
|
||||
mFakeboxDelegate.addUrlFocusChangeListener(mUrlFocusChangeListener);
|
||||
}
|
||||
@@ -361,13 +352,6 @@ class StartSurfaceMediator
|
||||
private void setExploreSurfaceVisibility(boolean isVisible) {
|
||||
if (isVisible == mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)) return;
|
||||
|
||||
- if (isVisible && mPropertyModel.get(IS_SHOWING_OVERVIEW)
|
||||
- && mPropertyModel.get(FEED_SURFACE_COORDINATOR) == null) {
|
||||
- mPropertyModel.set(FEED_SURFACE_COORDINATOR,
|
||||
- mFeedSurfaceCreator.createFeedSurfaceCoordinator(
|
||||
- mNightModeStateProvider.isInNightMode()));
|
||||
- }
|
||||
-
|
||||
mPropertyModel.set(IS_EXPLORE_SURFACE_VISIBLE, isVisible);
|
||||
|
||||
if (mSurfaceMode == SurfaceMode.TWO_PANES) {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ExploreOfflineCard.java
|
||||
@@ -13,7 +13,6 @@ import org.chromium.base.ApiCompatibilityUtils;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.download.DownloadUtils;
|
||||
-import org.chromium.chrome.browser.feed.FeedConfiguration;
|
||||
import org.chromium.net.NetworkChangeNotifier;
|
||||
import org.chromium.ui.text.SpanApplier;
|
||||
|
||||
@@ -73,9 +72,7 @@ public class ExploreOfflineCard {
|
||||
|
||||
View imageView = cardView.findViewById(R.id.explore_offline_image);
|
||||
imageView.setBackground(imageView.getContext().getResources().getDrawable(
|
||||
- FeedConfiguration.getFeedUiEnabled()
|
||||
- ? R.drawable.card_background_rounded_right_half_with_border
|
||||
- : R.drawable.card_background_rounded_right_half_no_border));
|
||||
+ R.drawable.card_background_rounded_right_half_no_border));
|
||||
|
||||
cardView.setOnClickListener(v -> mOpenDownloadHomeCallback.run());
|
||||
return cardView;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,769 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 18 Sep 2018 08:06:14 +0200
|
||||
Subject: Allow building without safebrowsing for Android
|
||||
|
||||
Fix build from scratch (issue found by nikolowry)
|
||||
---
|
||||
.../android/java/res/xml/privacy_preferences.xml | 8 -----
|
||||
.../preferences/privacy/PrivacyPreferences.java | 40 ----------------------
|
||||
.../chrome_browsing_data_remover_delegate.cc | 10 ------
|
||||
chrome/browser/chrome_content_browser_client.cc | 20 +----------
|
||||
.../file_type_policies_component_installer.cc | 2 ++
|
||||
.../download/chrome_download_manager_delegate.cc | 14 ++++++--
|
||||
.../download/chrome_download_manager_delegate.h | 6 ++++
|
||||
chrome/browser/download/download_item_model.cc | 10 ++++++
|
||||
chrome/browser/download/download_item_model.h | 4 +++
|
||||
chrome/browser/download/download_prefs.cc | 4 +++
|
||||
.../browser/download/download_target_determiner.cc | 22 ++++++++++++
|
||||
.../browser/download/download_target_determiner.h | 6 ++++
|
||||
chrome/browser/download/download_target_info.cc | 4 +++
|
||||
chrome/browser/download/download_target_info.h | 4 +++
|
||||
chrome/browser/download/download_ui_model.cc | 4 +++
|
||||
chrome/browser/download/download_ui_model.h | 4 +++
|
||||
.../chrome_resource_dispatcher_host_delegate.cc | 2 ++
|
||||
chrome/browser/net/chrome_network_delegate.cc | 35 ++-----------------
|
||||
18 files changed, 87 insertions(+), 112 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -18,14 +18,6 @@
|
||||
android:summary="@string/search_suggestions_summary"
|
||||
android:defaultValue="true" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
- android:key="safe_browsing_scout_reporting"
|
||||
- android:title="@string/safe_browsing_scout_reporting_title"
|
||||
- android:summary="@string/safe_browsing_scout_reporting_summary" />
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
- android:key="safe_browsing"
|
||||
- android:title="@string/safe_browsing_title"
|
||||
- android:summary="@string/safe_browsing_summary" />
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="network_predictions"
|
||||
android:title="@string/network_predictions_title"
|
||||
android:summary="@string/network_predictions_summary"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
@@ -40,9 +40,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
implements OnPreferenceChangeListener {
|
||||
private static final String PREF_NAVIGATION_ERROR = "navigation_error";
|
||||
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
|
||||
- private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
|
||||
- "safe_browsing_scout_reporting";
|
||||
- private static final String PREF_SAFE_BROWSING = "safe_browsing";
|
||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
||||
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
||||
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
|
||||
@@ -83,8 +80,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
// Remove preferences that were migrated to SyncAndServicesPreferences.
|
||||
preferenceScreen.removePreference(findPreference(PREF_NAVIGATION_ERROR));
|
||||
preferenceScreen.removePreference(findPreference(PREF_SEARCH_SUGGESTIONS));
|
||||
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING));
|
||||
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING));
|
||||
preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
|
||||
preferenceScreen.removePreference(findPreference(PREF_USAGE_AND_CRASH_REPORTING));
|
||||
|
||||
@@ -131,17 +126,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
|
||||
}
|
||||
|
||||
- // Listen to changes to the Extended Reporting pref.
|
||||
- ChromeBaseCheckBoxPreference scoutReportingPref =
|
||||
- (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING);
|
||||
- scoutReportingPref.setOnPreferenceChangeListener(this);
|
||||
- scoutReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
-
|
||||
- ChromeBaseCheckBoxPreference safeBrowsingPref =
|
||||
- (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
|
||||
- safeBrowsingPref.setOnPreferenceChangeListener(this);
|
||||
- safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
-
|
||||
updateSummaries();
|
||||
}
|
||||
|
||||
@@ -150,11 +134,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
String key = preference.getKey();
|
||||
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
|
||||
- } else if (PREF_SAFE_BROWSING.equals(key)) {
|
||||
- PrefServiceBridge.getInstance().setSafeBrowsingEnabled((boolean) newValue);
|
||||
- } else if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
|
||||
- PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
|
||||
- (boolean) newValue);
|
||||
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
|
||||
recordNetworkPredictionEnablingUMA((boolean) newValue);
|
||||
@@ -206,19 +185,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
searchSuggestionsPref.setChecked(prefServiceBridge.isSearchSuggestEnabled());
|
||||
}
|
||||
|
||||
- CheckBoxPreference extendedReportingPref =
|
||||
- (CheckBoxPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING);
|
||||
- if (extendedReportingPref != null) {
|
||||
- extendedReportingPref.setChecked(
|
||||
- prefServiceBridge.isSafeBrowsingExtendedReportingEnabled());
|
||||
- }
|
||||
-
|
||||
- CheckBoxPreference safeBrowsingPref =
|
||||
- (CheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
|
||||
- if (safeBrowsingPref != null) {
|
||||
- safeBrowsingPref.setChecked(prefServiceBridge.isSafeBrowsingEnabled());
|
||||
- }
|
||||
-
|
||||
CheckBoxPreference canMakePaymentPref =
|
||||
(CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
|
||||
if (canMakePaymentPref != null) {
|
||||
@@ -267,12 +233,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
||||
return prefs.isSearchSuggestManaged();
|
||||
}
|
||||
- if (PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
|
||||
- return prefs.isSafeBrowsingExtendedReportingManaged();
|
||||
- }
|
||||
- if (PREF_SAFE_BROWSING.equals(key)) {
|
||||
- return prefs.isSafeBrowsingManaged();
|
||||
- }
|
||||
if (PREF_NETWORK_PREDICTIONS.equals(key)) {
|
||||
return prefs.isNetworkPredictionManaged();
|
||||
}
|
||||
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
|
||||
@@ -250,16 +250,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
|
||||
return false;
|
||||
}
|
||||
|
||||
-// Callback for when cookies have been deleted. Invokes NotifyIfDone.
|
||||
-// Receiving |cookie_manager| as a parameter so that the receive pipe is
|
||||
-// not deleted before the response is received.
|
||||
-void OnClearedCookies(base::OnceClosure done,
|
||||
- network::mojom::CookieManagerPtr cookie_manager,
|
||||
- uint32_t num_deleted) {
|
||||
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
- std::move(done).Run();
|
||||
-}
|
||||
-
|
||||
} // namespace
|
||||
|
||||
ChromeBrowsingDataRemoverDelegate::ChromeBrowsingDataRemoverDelegate(
|
||||
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
|
||||
@@ -115,7 +115,6 @@
|
||||
#include "chrome/browser/safe_browsing/certificate_reporting_service.h"
|
||||
#include "chrome/browser/safe_browsing/certificate_reporting_service_factory.h"
|
||||
#include "chrome/browser/safe_browsing/chrome_password_protection_service.h"
|
||||
-#include "chrome/browser/safe_browsing/safe_browsing_navigation_throttle.h"
|
||||
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
||||
#include "chrome/browser/safe_browsing/ui_manager.h"
|
||||
#include "chrome/browser/safe_browsing/url_checker_delegate_impl.h"
|
||||
@@ -4248,11 +4247,6 @@ ChromeContentBrowserClient::CreateThrottlesForNavigation(
|
||||
PreviewsLitePageDecider::MaybeCreateThrottleFor(handle);
|
||||
if (previews_lite_page_throttle)
|
||||
throttles.push_back(std::move(previews_lite_page_throttle));
|
||||
- if (base::FeatureList::IsEnabled(safe_browsing::kCommittedSBInterstitials)) {
|
||||
- throttles.push_back(
|
||||
- std::make_unique<safe_browsing::SafeBrowsingNavigationThrottle>(
|
||||
- handle));
|
||||
- }
|
||||
|
||||
#if defined(OS_WIN) || defined(OS_MACOSX) || \
|
||||
(defined(OS_LINUX) && !defined(OS_CHROMEOS))
|
||||
@@ -5192,19 +5186,7 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
|
||||
content::ResourceContext* resource_context) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
||||
|
||||
- ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
|
||||
- if (!io_data->safe_browsing_enabled()->GetValue())
|
||||
- return nullptr;
|
||||
-
|
||||
- // |safe_browsing_service_| may be unavailable in tests.
|
||||
- if (safe_browsing_service_ && !safe_browsing_url_checker_delegate_) {
|
||||
- safe_browsing_url_checker_delegate_ =
|
||||
- base::MakeRefCounted<safe_browsing::UrlCheckerDelegateImpl>(
|
||||
- safe_browsing_service_->database_manager(),
|
||||
- safe_browsing_service_->ui_manager());
|
||||
- }
|
||||
-
|
||||
- return safe_browsing_url_checker_delegate_.get();
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
base::Optional<std::string>
|
||||
diff --git a/chrome/browser/component_updater/file_type_policies_component_installer.cc b/chrome/browser/component_updater/file_type_policies_component_installer.cc
|
||||
--- a/chrome/browser/component_updater/file_type_policies_component_installer.cc
|
||||
+++ b/chrome/browser/component_updater/file_type_policies_component_installer.cc
|
||||
@@ -18,7 +18,9 @@
|
||||
#include "base/stl_util.h"
|
||||
#include "base/task/post_task.h"
|
||||
#include "base/version.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
+#endif
|
||||
#include "components/component_updater/component_updater_paths.h"
|
||||
|
||||
using component_updater::ComponentUpdateService;
|
||||
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
|
||||
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
|
||||
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
|
||||
@@ -39,8 +39,10 @@
|
||||
#include "chrome/browser/download/save_package_file_picker.h"
|
||||
#include "chrome/browser/platform_util.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/browser/safe_browsing/download_protection/download_protection_util.h"
|
||||
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
||||
+#endif
|
||||
#include "chrome/browser/ui/browser.h"
|
||||
#include "chrome/browser/ui/browser_finder.h"
|
||||
#include "chrome/browser/ui/chrome_pages.h"
|
||||
@@ -51,7 +53,9 @@
|
||||
#include "chrome/common/chrome_paths.h"
|
||||
#include "chrome/common/pdf_util.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
+#endif
|
||||
#include "chrome/grit/generated_resources.h"
|
||||
#include "components/download/public/common/download_interrupt_reasons.h"
|
||||
#include "components/download/public/common/download_item.h"
|
||||
@@ -106,8 +110,10 @@ using content::DownloadManager;
|
||||
using download::DownloadItem;
|
||||
using download::DownloadPathReservationTracker;
|
||||
using download::PathValidationResult;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
using safe_browsing::DownloadFileType;
|
||||
using safe_browsing::DownloadProtectionService;
|
||||
+#endif
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -768,19 +774,19 @@ ChromeDownloadManagerDelegate::ApplicationClientIdForFileScanning() const {
|
||||
return std::string(chrome::kApplicationClientIDStringForAVScanning);
|
||||
}
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
DownloadProtectionService*
|
||||
ChromeDownloadManagerDelegate::GetDownloadProtectionService() {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
-#if defined(FULL_SAFE_BROWSING)
|
||||
safe_browsing::SafeBrowsingService* sb_service =
|
||||
g_browser_process->safe_browsing_service();
|
||||
if (sb_service && sb_service->download_protection_service() &&
|
||||
profile_->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled)) {
|
||||
return sb_service->download_protection_service();
|
||||
}
|
||||
-#endif
|
||||
return NULL;
|
||||
}
|
||||
+#endif
|
||||
|
||||
void ChromeDownloadManagerDelegate::NotifyExtensions(
|
||||
DownloadItem* download,
|
||||
@@ -1222,13 +1228,17 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDetermined(
|
||||
DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
|
||||
#endif
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
DownloadItemModel(item).SetDangerLevel(target_info->danger_level);
|
||||
+#endif
|
||||
}
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
if (ShouldBlockFile(target_info->danger_type, item)) {
|
||||
target_info->result = download::DOWNLOAD_INTERRUPT_REASON_FILE_BLOCKED;
|
||||
// A dangerous type would take precendence over the blocking of the file.
|
||||
target_info->danger_type = download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS;
|
||||
}
|
||||
+#endif
|
||||
|
||||
callback.Run(target_info->target_path, target_info->target_disposition,
|
||||
target_info->danger_type, target_info->intermediate_path,
|
||||
diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome/browser/download/chrome_download_manager_delegate.h
|
||||
--- a/chrome/browser/download/chrome_download_manager_delegate.h
|
||||
+++ b/chrome/browser/download/chrome_download_manager_delegate.h
|
||||
@@ -21,8 +21,10 @@
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/download/download_target_determiner_delegate.h"
|
||||
#include "chrome/browser/download/download_target_info.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/browser/safe_browsing/download_protection/download_protection_service.h"
|
||||
#include "chrome/browser/safe_browsing/download_protection/download_protection_util.h"
|
||||
+#endif
|
||||
#include "components/download/public/common/download_danger_type.h"
|
||||
#include "components/download/public/common/download_item.h"
|
||||
#include "components/download/public/common/download_path_reservation_tracker.h"
|
||||
@@ -134,8 +136,10 @@ class ChromeDownloadManagerDelegate
|
||||
DownloadPrefs* download_prefs() { return download_prefs_.get(); }
|
||||
|
||||
protected:
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
virtual safe_browsing::DownloadProtectionService*
|
||||
GetDownloadProtectionService();
|
||||
+#endif
|
||||
|
||||
// Show file picker for |download|.
|
||||
virtual void ShowFilePickerForDownload(
|
||||
@@ -201,9 +205,11 @@ class ChromeDownloadManagerDelegate
|
||||
const content::NotificationSource& source,
|
||||
const content::NotificationDetails& details) override;
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// Callback function after the DownloadProtectionService completes.
|
||||
void CheckClientDownloadDone(uint32_t download_id,
|
||||
safe_browsing::DownloadCheckResult result);
|
||||
+#endif
|
||||
|
||||
// Internal gateways for ShouldCompleteDownload().
|
||||
bool IsDownloadReadyForCompletion(
|
||||
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc
|
||||
--- a/chrome/browser/download/download_item_model.cc
|
||||
+++ b/chrome/browser/download/download_item_model.cc
|
||||
@@ -22,9 +22,11 @@
|
||||
#include "chrome/browser/download/download_stats.h"
|
||||
#include "chrome/browser/download/offline_item_utils.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/browser/safe_browsing/download_protection/download_feedback_service.h"
|
||||
#include "chrome/common/safe_browsing/download_file_types.pb.h"
|
||||
#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
+#endif
|
||||
#include "chrome/grit/chromium_strings.h"
|
||||
#include "chrome/grit/generated_resources.h"
|
||||
#include "components/download/public/common/download_danger_type.h"
|
||||
@@ -37,7 +39,9 @@
|
||||
|
||||
using base::TimeDelta;
|
||||
using download::DownloadItem;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
using safe_browsing::DownloadFileType;
|
||||
+#endif
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -67,9 +71,11 @@ class DownloadItemModelData : public base::SupportsUserData::Data {
|
||||
// for the file type.
|
||||
bool should_prefer_opening_in_browser_;
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// Danger level of the file determined based on the file type and whether
|
||||
// there was a user action associated with the download.
|
||||
DownloadFileType::DangerLevel danger_level_;
|
||||
+#endif
|
||||
|
||||
// Whether the download is currently being revived.
|
||||
bool is_being_revived_;
|
||||
@@ -106,7 +112,9 @@ DownloadItemModelData::DownloadItemModelData()
|
||||
: should_show_in_shelf_(true),
|
||||
was_ui_notified_(false),
|
||||
should_prefer_opening_in_browser_(false),
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
danger_level_(DownloadFileType::NOT_DANGEROUS),
|
||||
+#endif
|
||||
is_being_revived_(false) {}
|
||||
|
||||
} // namespace
|
||||
@@ -368,6 +376,7 @@ void DownloadItemModel::SetShouldPreferOpeningInBrowser(bool preference) {
|
||||
data->should_prefer_opening_in_browser_ = preference;
|
||||
}
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
DownloadFileType::DangerLevel DownloadItemModel::GetDangerLevel() const {
|
||||
const DownloadItemModelData* data = DownloadItemModelData::Get(download_);
|
||||
return data ? data->danger_level_ : DownloadFileType::NOT_DANGEROUS;
|
||||
@@ -378,6 +387,7 @@ void DownloadItemModel::SetDangerLevel(
|
||||
DownloadItemModelData* data = DownloadItemModelData::GetOrCreate(download_);
|
||||
data->danger_level_ = danger_level;
|
||||
}
|
||||
+#endif
|
||||
|
||||
bool DownloadItemModel::IsBeingRevived() const {
|
||||
const DownloadItemModelData* data = DownloadItemModelData::Get(download_);
|
||||
diff --git a/chrome/browser/download/download_item_model.h b/chrome/browser/download/download_item_model.h
|
||||
--- a/chrome/browser/download/download_item_model.h
|
||||
+++ b/chrome/browser/download/download_item_model.h
|
||||
@@ -11,7 +11,9 @@
|
||||
#include "base/macros.h"
|
||||
#include "base/strings/string16.h"
|
||||
#include "chrome/browser/download/download_ui_model.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/download_file_types.pb.h"
|
||||
+#endif
|
||||
#include "components/download/public/common/download_item.h"
|
||||
|
||||
// Implementation of DownloadUIModel that wrappers around a |DownloadItem*|. As
|
||||
@@ -48,9 +50,11 @@ class DownloadItemModel : public DownloadUIModel,
|
||||
void SetWasUINotified(bool should_notify) override;
|
||||
bool ShouldPreferOpeningInBrowser() const override;
|
||||
void SetShouldPreferOpeningInBrowser(bool preference) override;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
safe_browsing::DownloadFileType::DangerLevel GetDangerLevel() const override;
|
||||
void SetDangerLevel(
|
||||
safe_browsing::DownloadFileType::DangerLevel danger_level) override;
|
||||
+#endif
|
||||
void OpenUsingPlatformHandler() override;
|
||||
bool IsBeingRevived() const override;
|
||||
void SetIsBeingRevived(bool is_being_revived) override;
|
||||
diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc
|
||||
--- a/chrome/browser/download/download_prefs.cc
|
||||
+++ b/chrome/browser/download/download_prefs.cc
|
||||
@@ -33,7 +33,9 @@
|
||||
#include "chrome/common/chrome_features.h"
|
||||
#include "chrome/common/chrome_paths.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
+#endif
|
||||
#include "components/download/public/common/download_item.h"
|
||||
#include "components/pref_registry/pref_registry_syncable.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
@@ -55,7 +57,9 @@
|
||||
using content::BrowserContext;
|
||||
using content::BrowserThread;
|
||||
using content::DownloadManager;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
using safe_browsing::FileTypePolicies;
|
||||
+#endif
|
||||
|
||||
namespace {
|
||||
|
||||
diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc
|
||||
--- a/chrome/browser/download/download_target_determiner.cc
|
||||
+++ b/chrome/browser/download/download_target_determiner.cc
|
||||
@@ -23,7 +23,9 @@
|
||||
#include "chrome/browser/history/history_service_factory.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
+#endif
|
||||
#include "chrome/grit/generated_resources.h"
|
||||
#include "components/download/public/common/download_interrupt_reasons.h"
|
||||
#include "components/history/core/browser/history_service.h"
|
||||
@@ -59,13 +61,16 @@
|
||||
using content::BrowserThread;
|
||||
using download::DownloadItem;
|
||||
using download::DownloadPathReservationTracker;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
using safe_browsing::DownloadFileType;
|
||||
+#endif
|
||||
|
||||
namespace {
|
||||
|
||||
const base::FilePath::CharType kCrdownloadSuffix[] =
|
||||
FILE_PATH_LITERAL(".crdownload");
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// Condenses the results from HistoryService::GetVisibleVisitCountToHost() to a
|
||||
// single bool. A host is considered visited before if prior visible visits were
|
||||
// found in history and the first such visit was earlier than the most recent
|
||||
@@ -79,6 +84,7 @@ void VisitCountsToVisitedBefore(
|
||||
found_visits && count > 0 &&
|
||||
(first_visit.LocalMidnight() < base::Time::Now().LocalMidnight()));
|
||||
}
|
||||
+#endif
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// Keeps track of whether Adobe Reader is up to date.
|
||||
@@ -103,7 +109,9 @@ DownloadTargetDeterminer::DownloadTargetDeterminer(
|
||||
create_target_directory_(false),
|
||||
conflict_action_(conflict_action),
|
||||
danger_type_(download->GetDangerType()),
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
danger_level_(DownloadFileType::NOT_DANGEROUS),
|
||||
+#endif
|
||||
virtual_path_(initial_virtual_path),
|
||||
is_filetype_handled_safely_(false),
|
||||
#if defined(OS_ANDROID)
|
||||
@@ -259,8 +267,12 @@ DownloadTargetDeterminer::Result
|
||||
// |suggested_filename| and Content-Disposition header have higher priority
|
||||
// than the URL.
|
||||
bool safe_file_ext =
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
!safe_browsing::FileTypePolicies::GetInstance()->IsCheckedBinaryFile(
|
||||
generated_filename);
|
||||
+#else
|
||||
+ true;
|
||||
+#endif
|
||||
net::HttpContentDisposition content_disposition_header(
|
||||
download_->GetContentDisposition(), referrer_charset);
|
||||
bool should_replace_extension =
|
||||
@@ -749,6 +761,7 @@ DownloadTargetDeterminer::Result
|
||||
return CONTINUE;
|
||||
}
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// First determine the danger level assuming that the user doesn't have any
|
||||
// prior visits to the referrer recoreded in history. The resulting danger
|
||||
// level would be ALLOW_ON_USER_GESTURE if the level depends on the visit
|
||||
@@ -785,6 +798,7 @@ DownloadTargetDeterminer::Result
|
||||
// invalid, then assume the referrer has not been visited before.
|
||||
if (danger_type_ == download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS)
|
||||
danger_type_ = download::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE;
|
||||
+#endif
|
||||
return CONTINUE;
|
||||
}
|
||||
|
||||
@@ -792,11 +806,13 @@ void DownloadTargetDeterminer::CheckVisitedReferrerBeforeDone(
|
||||
bool visited_referrer_before) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
DCHECK_EQ(STATE_DETERMINE_INTERMEDIATE_PATH, next_state_);
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
danger_level_ = GetDangerLevel(
|
||||
visited_referrer_before ? VISITED_REFERRER : NO_VISITS_TO_REFERRER);
|
||||
if (danger_level_ != DownloadFileType::NOT_DANGEROUS &&
|
||||
danger_type_ == download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS)
|
||||
danger_type_ = download::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE;
|
||||
+#endif
|
||||
DoLoop();
|
||||
}
|
||||
|
||||
@@ -901,7 +917,9 @@ void DownloadTargetDeterminer::ScheduleCallbackAndDeleteSelf(
|
||||
<< " Intermediate:" << intermediate_path_.AsUTF8Unsafe()
|
||||
<< " Confirmation reason:" << static_cast<int>(confirmation_reason_)
|
||||
<< " Danger type:" << danger_type_
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
<< " Danger level:" << danger_level_
|
||||
+#endif
|
||||
<< " Result:" << static_cast<int>(result);
|
||||
std::unique_ptr<DownloadTargetInfo> target_info(new DownloadTargetInfo);
|
||||
|
||||
@@ -913,7 +931,9 @@ void DownloadTargetDeterminer::ScheduleCallbackAndDeleteSelf(
|
||||
? DownloadItem::TARGET_DISPOSITION_PROMPT
|
||||
: DownloadItem::TARGET_DISPOSITION_OVERWRITE);
|
||||
target_info->danger_type = danger_type_;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
target_info->danger_level = danger_level_;
|
||||
+#endif
|
||||
target_info->intermediate_path = intermediate_path_;
|
||||
target_info->mime_type = mime_type_;
|
||||
target_info->is_filetype_handled_safely = is_filetype_handled_safely_;
|
||||
@@ -999,6 +1019,7 @@ bool DownloadTargetDeterminer::HasPromptedForPath() const {
|
||||
DownloadItem::TARGET_DISPOSITION_PROMPT);
|
||||
}
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
||||
PriorVisitsToReferrer visits) const {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
@@ -1030,6 +1051,7 @@ DownloadFileType::DangerLevel DownloadTargetDeterminer::GetDangerLevel(
|
||||
|
||||
return DownloadFileType::NOT_DANGEROUS;
|
||||
}
|
||||
+#endif
|
||||
|
||||
void DownloadTargetDeterminer::OnDownloadDestroyed(
|
||||
DownloadItem* download) {
|
||||
diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/browser/download/download_target_determiner.h
|
||||
--- a/chrome/browser/download/download_target_determiner.h
|
||||
+++ b/chrome/browser/download/download_target_determiner.h
|
||||
@@ -16,7 +16,9 @@
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/download/download_target_determiner_delegate.h"
|
||||
#include "chrome/browser/download/download_target_info.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/download_file_types.pb.h"
|
||||
+#endif
|
||||
#include "components/download/public/common/download_danger_type.h"
|
||||
#include "components/download/public/common/download_item.h"
|
||||
#include "components/download/public/common/download_path_reservation_tracker.h"
|
||||
@@ -300,6 +302,7 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
|
||||
// operation.
|
||||
bool HasPromptedForPath() const;
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// Returns true if this download should show the "dangerous file" warning.
|
||||
// Various factors are considered, such as the type of the file, whether a
|
||||
// user action initiated the download, and whether the user has explicitly
|
||||
@@ -309,6 +312,7 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
|
||||
// to true if the download requires explicit user consent.
|
||||
safe_browsing::DownloadFileType::DangerLevel GetDangerLevel(
|
||||
PriorVisitsToReferrer visits) const;
|
||||
+#endif
|
||||
|
||||
// download::DownloadItem::Observer
|
||||
void OnDownloadDestroyed(download::DownloadItem* download) override;
|
||||
@@ -321,7 +325,9 @@ class DownloadTargetDeterminer : public download::DownloadItem::Observer {
|
||||
download::DownloadPathReservationTracker::FilenameConflictAction
|
||||
conflict_action_;
|
||||
download::DownloadDangerType danger_type_;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
safe_browsing::DownloadFileType::DangerLevel danger_level_;
|
||||
+#endif
|
||||
base::FilePath virtual_path_;
|
||||
base::FilePath local_path_;
|
||||
base::FilePath intermediate_path_;
|
||||
diff --git a/chrome/browser/download/download_target_info.cc b/chrome/browser/download/download_target_info.cc
|
||||
--- a/chrome/browser/download/download_target_info.cc
|
||||
+++ b/chrome/browser/download/download_target_info.cc
|
||||
@@ -4,12 +4,16 @@
|
||||
|
||||
#include "chrome/browser/download/download_target_info.h"
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/file_type_policies.h"
|
||||
+#endif
|
||||
|
||||
DownloadTargetInfo::DownloadTargetInfo()
|
||||
: target_disposition(download::DownloadItem::TARGET_DISPOSITION_OVERWRITE),
|
||||
danger_type(download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS),
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
danger_level(safe_browsing::DownloadFileType::NOT_DANGEROUS),
|
||||
+#endif
|
||||
is_filetype_handled_safely(false),
|
||||
result(download::DOWNLOAD_INTERRUPT_REASON_NONE) {}
|
||||
|
||||
diff --git a/chrome/browser/download/download_target_info.h b/chrome/browser/download/download_target_info.h
|
||||
--- a/chrome/browser/download/download_target_info.h
|
||||
+++ b/chrome/browser/download/download_target_info.h
|
||||
@@ -8,7 +8,9 @@
|
||||
#include <string>
|
||||
|
||||
#include "base/files/file_path.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/download_file_types.pb.h"
|
||||
+#endif
|
||||
#include "components/download/public/common/download_danger_type.h"
|
||||
#include "components/download/public/common/download_interrupt_reasons.h"
|
||||
#include "components/download/public/common/download_item.h"
|
||||
@@ -32,6 +34,7 @@ struct DownloadTargetInfo {
|
||||
// Danger type of the download.
|
||||
download::DownloadDangerType danger_type;
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// The danger type of the download could be set to MAYBE_DANGEROUS_CONTENT if
|
||||
// the file type is handled by SafeBrowsing. However, if the SafeBrowsing
|
||||
// service is unable to verify whether the file is safe or not, we are on our
|
||||
@@ -57,6 +60,7 @@ struct DownloadTargetInfo {
|
||||
// SafeBrowsing may flag the file as being malicious, in which case the
|
||||
// malicious classification should take precedence.
|
||||
safe_browsing::DownloadFileType::DangerLevel danger_level;
|
||||
+#endif
|
||||
|
||||
// Suggested intermediate path. The downloaded bytes should be written to this
|
||||
// path until all the bytes are available and the user has accepted a
|
||||
diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc
|
||||
--- a/chrome/browser/download/download_ui_model.cc
|
||||
+++ b/chrome/browser/download/download_ui_model.cc
|
||||
@@ -23,7 +23,9 @@
|
||||
|
||||
using base::TimeDelta;
|
||||
using download::DownloadItem;
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
using safe_browsing::DownloadFileType;
|
||||
+#endif
|
||||
using offline_items_collection::FailState;
|
||||
|
||||
namespace {
|
||||
@@ -368,12 +370,14 @@ bool DownloadUIModel::ShouldPreferOpeningInBrowser() const {
|
||||
|
||||
void DownloadUIModel::SetShouldPreferOpeningInBrowser(bool preference) {}
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
DownloadFileType::DangerLevel DownloadUIModel::GetDangerLevel() const {
|
||||
return DownloadFileType::NOT_DANGEROUS;
|
||||
}
|
||||
|
||||
void DownloadUIModel::SetDangerLevel(
|
||||
DownloadFileType::DangerLevel danger_level) {}
|
||||
+#endif
|
||||
|
||||
void DownloadUIModel::OpenUsingPlatformHandler() {}
|
||||
|
||||
diff --git a/chrome/browser/download/download_ui_model.h b/chrome/browser/download/download_ui_model.h
|
||||
--- a/chrome/browser/download/download_ui_model.h
|
||||
+++ b/chrome/browser/download/download_ui_model.h
|
||||
@@ -14,7 +14,9 @@
|
||||
#include "base/strings/string16.h"
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
#include "chrome/common/safe_browsing/download_file_types.pb.h"
|
||||
+#endif
|
||||
#include "components/download/public/common/download_item.h"
|
||||
#include "components/offline_items_collection/core/offline_item.h"
|
||||
|
||||
@@ -172,6 +174,7 @@ class DownloadUIModel {
|
||||
// Change what's returned by ShouldPreferOpeningInBrowser to |preference|.
|
||||
virtual void SetShouldPreferOpeningInBrowser(bool preference);
|
||||
|
||||
+#if defined(FULL_SAFE_BROWSING)
|
||||
// Return the danger level determined during download target determination.
|
||||
// The value returned here is independent of the danger level as determined by
|
||||
// the Safe Browsing.
|
||||
@@ -180,6 +183,7 @@ class DownloadUIModel {
|
||||
// Change what's returned by GetDangerLevel().
|
||||
virtual void SetDangerLevel(
|
||||
safe_browsing::DownloadFileType::DangerLevel danger_level);
|
||||
+#endif
|
||||
|
||||
// Open the download using the platform handler for the download. The behavior
|
||||
// of this method will be different from DownloadItem::OpenDownload() if
|
||||
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
@@ -399,7 +399,9 @@ void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles(
|
||||
content::ResourceContext* resource_context,
|
||||
ResourceType resource_type,
|
||||
std::vector<std::unique_ptr<content::ResourceThrottle>>* throttles) {
|
||||
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
|
||||
ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
|
||||
+#endif // defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
|
||||
|
||||
// Insert safe browsing to decide if the resource is safe.
|
||||
content::ResourceThrottle* first_throttle = NULL;
|
||||
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
|
||||
--- a/chrome/browser/net/chrome_network_delegate.cc
|
||||
+++ b/chrome/browser/net/chrome_network_delegate.cc
|
||||
@@ -78,19 +78,6 @@ namespace {
|
||||
|
||||
bool g_access_to_all_files_enabled = false;
|
||||
|
||||
-// Gets called when the extensions finish work on the URL. If the extensions
|
||||
-// did not do a redirect (so |new_url| is empty) then we enforce the
|
||||
-// SafeSearch parameters. Otherwise we will get called again after the
|
||||
-// redirect and we enforce SafeSearch then.
|
||||
-void ForceGoogleSafeSearchCallbackWrapper(net::CompletionOnceCallback callback,
|
||||
- net::URLRequest* request,
|
||||
- GURL* new_url,
|
||||
- int rv) {
|
||||
- if (rv == net::OK && new_url->is_empty())
|
||||
- safe_search_util::ForceGoogleSafeSearch(request->url(), new_url);
|
||||
- std::move(callback).Run(rv);
|
||||
-}
|
||||
-
|
||||
bool IsAccessAllowedInternal(const base::FilePath& path,
|
||||
const base::FilePath& profile_path) {
|
||||
if (g_access_to_all_files_enabled)
|
||||
@@ -212,26 +199,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
|
||||
GURL* new_url) {
|
||||
extensions_delegate_->ForwardStartRequestStatus(request);
|
||||
|
||||
- // The non-redirect case is handled in GoogleURLLoaderThrottle.
|
||||
- bool force_safe_search =
|
||||
- (force_google_safe_search_ && force_google_safe_search_->GetValue() &&
|
||||
- request->is_redirecting());
|
||||
-
|
||||
- net::CompletionOnceCallback wrapped_callback = std::move(callback);
|
||||
-
|
||||
- if (force_safe_search) {
|
||||
- wrapped_callback = base::BindOnce(
|
||||
- &ForceGoogleSafeSearchCallbackWrapper, std::move(wrapped_callback),
|
||||
- base::Unretained(request), base::Unretained(new_url));
|
||||
- }
|
||||
-
|
||||
- int rv = extensions_delegate_->NotifyBeforeURLRequest(
|
||||
- request, std::move(wrapped_callback), new_url);
|
||||
-
|
||||
- if (force_safe_search && rv == net::OK && new_url->is_empty())
|
||||
- safe_search_util::ForceGoogleSafeSearch(request->url(), new_url);
|
||||
-
|
||||
- return rv;
|
||||
+ return extensions_delegate_->NotifyBeforeURLRequest(
|
||||
+ request, std::move(callback), new_url);
|
||||
}
|
||||
|
||||
int ChromeNetworkDelegate::OnBeforeStartTransaction(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -3,14 +3,14 @@ Date: Thu, 2 Nov 2017 18:21:16 +0200
|
||||
Subject: Allow playing audio in background
|
||||
|
||||
---
|
||||
media/blink/webmediaplayer_impl.cc | 11 ++++++++++-
|
||||
media/blink/webmediaplayer_impl.cc | 12 +++++++++++-
|
||||
media/blink/webmediaplayer_impl.h | 2 ++
|
||||
2 files changed, 12 insertions(+), 1 deletion(-)
|
||||
2 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
|
||||
--- a/media/blink/webmediaplayer_impl.cc
|
||||
+++ b/media/blink/webmediaplayer_impl.cc
|
||||
@@ -948,6 +948,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
|
||||
@@ -989,6 +989,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
|
||||
return pipeline_metadata_.has_audio;
|
||||
}
|
||||
|
||||
@@ -23,22 +23,23 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
|
||||
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
|
||||
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
|
||||
DCHECK(main_task_runner_->BelongsToCurrentThread());
|
||||
@@ -3113,7 +3119,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
|
||||
// If suspending background video, pause any video that's not remoted or
|
||||
// not unlocked to play in the background.
|
||||
if (IsBackgroundSuspendEnabled(this)) {
|
||||
- if (!HasVideo())
|
||||
+ //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
|
||||
+ //see media/base/pipeline_metadata.h. This is a workaround to allow audio
|
||||
+ //streams be played in background.
|
||||
+ if (!HasVideoNonEmptySize())
|
||||
return false;
|
||||
@@ -3298,7 +3304,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
|
||||
// Audio only stream is allowed to play when in background.
|
||||
// TODO: We should check IsBackgroundOptimizationCandidate here. But we need
|
||||
// to move the logic of checking video frames out of that function.
|
||||
- if (!HasVideo())
|
||||
+
|
||||
+ //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
|
||||
+ //see media/base/pipeline_metadata.h. This is a workaround to allow audio
|
||||
+ //streams be played in background.
|
||||
+ if (!HasVideoNonEmptySize())
|
||||
return false;
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
if (!is_background_video_playback_enabled_)
|
||||
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
|
||||
--- a/media/blink/webmediaplayer_impl.h
|
||||
+++ b/media/blink/webmediaplayer_impl.h
|
||||
@@ -141,6 +141,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
|
||||
@@ -143,6 +143,8 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl
|
||||
// True if the loaded media has a playable video/audio track.
|
||||
bool HasVideo() const override;
|
||||
bool HasAudio() const override;
|
||||
@@ -48,5 +49,5 @@ diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl
|
||||
void EnabledAudioTracksChanged(
|
||||
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds)
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Disable prefs::kSigninAllowedOnNextStartup by default. The setting can be found
|
||||
diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc
|
||||
--- a/chrome/browser/signin/account_consistency_mode_manager.cc
|
||||
+++ b/chrome/browser/signin/account_consistency_mode_manager.cc
|
||||
@@ -126,7 +126,7 @@ void AccountConsistencyModeManager::RegisterProfilePrefs(
|
||||
@@ -152,7 +152,7 @@ void AccountConsistencyModeManager::RegisterProfilePrefs(
|
||||
registry->RegisterBooleanPref(prefs::kAccountConsistencyMirrorRequired,
|
||||
false);
|
||||
#endif
|
||||
@@ -20,5 +20,5 @@ diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/
|
||||
|
||||
// static
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ Date: Thu, 14 Dec 2017 16:19:50 +0200
|
||||
Subject: Always allow partner customisation
|
||||
|
||||
---
|
||||
.../PartnerBrowserCustomizations.java | 16 ++++++++--------
|
||||
.../PartnerBrowserCustomizations.java | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||
@@ -33,5 +33,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
if (isCancelled()) return null;
|
||||
refreshIncognitoModeDisabled();
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Do not read experiment value for cronet async DNS configuration
|
||||
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
|
||||
@@ -226,7 +226,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
|
||||
@@ -245,7 +245,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
|
||||
// Android this includes checking the Android version in the field trial.
|
||||
bool ShouldEnableAsyncDns() {
|
||||
bool feature_can_be_enabled = true;
|
||||
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
|
||||
diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
|
||||
--- a/components/cronet/url_request_context_config.cc
|
||||
+++ b/components/cronet/url_request_context_config.cc
|
||||
@@ -544,7 +544,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
|
||||
@@ -573,7 +573,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
|
||||
effective_experimental_options->Remove(it.key(), nullptr);
|
||||
continue;
|
||||
}
|
||||
@@ -34,5 +34,5 @@ diff --git a/components/cronet/url_request_context_config.cc b/components/cronet
|
||||
const base::DictionaryValue* stale_dns_args = nullptr;
|
||||
if (!it.value().GetAsDictionary(&stale_dns_args)) {
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -1,234 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 17 Mar 2019 20:51:11 +0100
|
||||
Subject: Always show home page settings
|
||||
|
||||
Remove the "Force Enable Home Page Button" flag, which was bugged, and always
|
||||
display home page settings.
|
||||
This allows removing the home page button and restoring it from settings.
|
||||
---
|
||||
.../browser/init/ProcessInitializationHandler.java | 12 --------
|
||||
.../partnercustomizations/HomepageManager.java | 17 ++---------
|
||||
.../preferences/ChromePreferenceManager.java | 7 -----
|
||||
.../browser/preferences/MainPreferences.java | 12 +++-----
|
||||
.../chrome/browser/util/FeatureUtilities.java | 34 ----------------------
|
||||
chrome/browser/about_flags.cc | 3 --
|
||||
chrome/browser/android/chrome_feature_list.cc | 4 ---
|
||||
chrome/browser/android/chrome_feature_list.h | 1 -
|
||||
8 files changed, 7 insertions(+), 83 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
|
||||
@@ -338,18 +338,6 @@ public class ProcessInitializationHandler {
|
||||
deferredStartupHandler.addDeferredTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
- if (HomepageManager.shouldShowHomepageSetting()) {
|
||||
- RecordHistogram.recordBooleanHistogram("Settings.ShowHomeButtonPreferenceState",
|
||||
- HomepageManager.isHomepageEnabled());
|
||||
- RecordHistogram.recordBooleanHistogram("Settings.HomePageIsCustomized",
|
||||
- !HomepageManager.getInstance().getPrefHomepageUseDefaultUri());
|
||||
- }
|
||||
- }
|
||||
- });
|
||||
-
|
||||
- deferredStartupHandler.addDeferredTask(new Runnable() {
|
||||
- @Override
|
||||
- public void run() {
|
||||
// Starts syncing with GSA.
|
||||
AppHooks.get().createGsaHelper().startSync();
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
@@ -83,10 +83,7 @@ public class HomepageManager {
|
||||
* @return Whether or not homepage is enabled.
|
||||
*/
|
||||
public static boolean isHomepageEnabled() {
|
||||
- if (FeatureUtilities.isHomePageButtonForceEnabled()) {
|
||||
- return getInstance().getPrefHomepageEnabled();
|
||||
- }
|
||||
- return false;
|
||||
+ return getInstance().getPrefHomepageEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -98,13 +95,6 @@ public class HomepageManager {
|
||||
}
|
||||
|
||||
/**
|
||||
- * @return Whether or not homepage setting should be shown.
|
||||
- */
|
||||
- public static boolean shouldShowHomepageSetting() {
|
||||
- return FeatureUtilities.isHomePageButtonForceEnabled();
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
* @return Homepage URI string, if it's enabled. Null otherwise or uninitialized.
|
||||
*/
|
||||
public static String getHomepageUri() {
|
||||
@@ -118,8 +108,7 @@ public class HomepageManager {
|
||||
}
|
||||
|
||||
/**
|
||||
- * @return The default homepage URI if the homepage is partner provided or the new tab page
|
||||
- * if the homepage button is force enabled via flag.
|
||||
+ * @return The default homepage URI.
|
||||
*/
|
||||
public static String getDefaultHomepageUri() {
|
||||
return UrlConstants.NTP_NON_NATIVE_URL;
|
||||
@@ -132,7 +121,7 @@ public class HomepageManager {
|
||||
* @see #isHomepageEnabled
|
||||
*/
|
||||
public boolean getPrefHomepageEnabled() {
|
||||
- return mSharedPreferences.getBoolean(PREF_HOMEPAGE_ENABLED, true);
|
||||
+ return mSharedPreferences.getBoolean(PREF_HOMEPAGE_ENABLED, false);
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
|
||||
@@ -147,13 +147,6 @@ public class ChromePreferenceManager {
|
||||
private static final String CHROME_MODERN_DESIGN_ENABLED_KEY = "chrome_modern_design_enabled";
|
||||
|
||||
/**
|
||||
- * Whether or not the home page button is force enabled.
|
||||
- * Default value is false.
|
||||
- */
|
||||
- public static final String HOME_PAGE_BUTTON_FORCE_ENABLED_KEY =
|
||||
- "home_page_button_force_enabled";
|
||||
-
|
||||
- /**
|
||||
* Whether or not the homepage tile will be shown.
|
||||
* Default value is false.
|
||||
*/
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
|
||||
@@ -207,15 +207,11 @@ public class MainPreferences extends PreferenceFragment
|
||||
updateSyncAndServicesPreference();
|
||||
updateSearchEnginePreference();
|
||||
|
||||
- if (HomepageManager.shouldShowHomepageSetting()) {
|
||||
- Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
|
||||
- if (FeatureUtilities.isNewTabPageButtonEnabled()) {
|
||||
- homepagePref.setTitle(R.string.options_startup_page_title);
|
||||
- }
|
||||
- setOnOffSummary(homepagePref, HomepageManager.getInstance().getPrefHomepageEnabled());
|
||||
- } else {
|
||||
- removePreferenceIfPresent(PREF_HOMEPAGE);
|
||||
+ Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
|
||||
+ if (FeatureUtilities.isNewTabPageButtonEnabled()) {
|
||||
+ homepagePref.setTitle(R.string.options_startup_page_title);
|
||||
}
|
||||
+ setOnOffSummary(homepagePref, HomepageManager.getInstance().getPrefHomepageEnabled());
|
||||
|
||||
if (!ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)
|
||||
&& FeatureUtilities.areContextualSuggestionsEnabled(getActivity())
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
|
||||
@@ -73,7 +73,6 @@ public class FeatureUtilities {
|
||||
private static Boolean sHasRecognitionIntentHandler;
|
||||
|
||||
private static Boolean sIsSoleEnabled;
|
||||
- private static Boolean sIsHomePageButtonForceEnabled;
|
||||
private static Boolean sIsHomepageTileEnabled;
|
||||
private static Boolean sIsNewTabPageButtonEnabled;
|
||||
private static Boolean sIsBottomToolbarEnabled;
|
||||
@@ -194,7 +193,6 @@ public class FeatureUtilities {
|
||||
cacheSoleEnabled();
|
||||
cacheCommandLineOnNonRootedEnabled();
|
||||
FirstRunUtils.cacheFirstRunPrefs();
|
||||
- cacheHomePageButtonForceEnabled();
|
||||
cacheHomepageTileEnabled();
|
||||
cacheNewTabPageButtonEnabled();
|
||||
cacheBottomToolbarEnabled();
|
||||
@@ -229,38 +227,6 @@ public class FeatureUtilities {
|
||||
}
|
||||
|
||||
/**
|
||||
- * Cache whether or not the home page button is force enabled so on next startup, the value can
|
||||
- * be made available immediately.
|
||||
- */
|
||||
- public static void cacheHomePageButtonForceEnabled() {
|
||||
- if (PartnerBrowserCustomizations.isHomepageProviderAvailableAndEnabled()) return;
|
||||
- ChromePreferenceManager.getInstance().writeBoolean(
|
||||
- ChromePreferenceManager.HOME_PAGE_BUTTON_FORCE_ENABLED_KEY,
|
||||
- ChromeFeatureList.isEnabled(ChromeFeatureList.HOME_PAGE_BUTTON_FORCE_ENABLED));
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * @return Whether or not the home page button is force enabled.
|
||||
- */
|
||||
- public static boolean isHomePageButtonForceEnabled() {
|
||||
- if (sIsHomePageButtonForceEnabled == null) {
|
||||
- ChromePreferenceManager prefManager = ChromePreferenceManager.getInstance();
|
||||
-
|
||||
- sIsHomePageButtonForceEnabled = prefManager.readBoolean(
|
||||
- ChromePreferenceManager.HOME_PAGE_BUTTON_FORCE_ENABLED_KEY, false);
|
||||
- }
|
||||
- return sIsHomePageButtonForceEnabled;
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Resets whether the home page button is enabled for tests. After this is called, the next
|
||||
- * call to #isHomePageButtonForceEnabled() will retrieve the value from shared preferences.
|
||||
- */
|
||||
- public static void resetHomePageButtonForceEnabledForTests() {
|
||||
- sIsHomePageButtonForceEnabled = null;
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
* Cache whether or not the toolbar should be inflated on a background thread so on next
|
||||
* startup, the value can be made available immediately.
|
||||
*/
|
||||
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
|
||||
@@ -1710,9 +1710,6 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-chrome-duet", flag_descriptions::kChromeDuetName,
|
||||
flag_descriptions::kChromeDuetDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(chrome::android::kChromeDuetFeature)},
|
||||
- {"force-enable-home-page-button", flag_descriptions::kHomePageButtonName,
|
||||
- flag_descriptions::kHomePageButtonDescription, kOsAndroid,
|
||||
- FEATURE_VALUE_TYPE(chrome::android::kHomePageButtonForceEnabled)},
|
||||
{"enable-ntp-button", flag_descriptions::kNtpButtonName,
|
||||
flag_descriptions::kNtpButtonDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(chrome::android::kNTPButton)},
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -133,7 +133,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
|
||||
&kExploreSites,
|
||||
&kHandleMediaIntents,
|
||||
&kHideUserDataFromIncognitoNotifications,
|
||||
- &kHomePageButtonForceEnabled,
|
||||
&kHomepageTile,
|
||||
&kHorizontalTabSwitcherAndroid,
|
||||
&kImprovedA2HS,
|
||||
@@ -377,9 +376,6 @@ const base::Feature kHandleMediaIntents{"HandleMediaIntents",
|
||||
const base::Feature kHideUserDataFromIncognitoNotifications{
|
||||
"HideUserDataFromIncognitoNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
-const base::Feature kHomePageButtonForceEnabled{
|
||||
- "HomePageButtonForceEnabled", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
-
|
||||
const base::Feature kHomepageTile{"HomepageTile",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.h b/chrome/browser/android/chrome_feature_list.h
|
||||
--- a/chrome/browser/android/chrome_feature_list.h
|
||||
+++ b/chrome/browser/android/chrome_feature_list.h
|
||||
@@ -63,7 +63,6 @@ extern const base::Feature kExploreSites;
|
||||
extern const base::Feature kForegroundNotificationManager;
|
||||
extern const base::Feature kHandleMediaIntents;
|
||||
extern const base::Feature kHideUserDataFromIncognitoNotifications;
|
||||
-extern const base::Feature kHomePageButtonForceEnabled;
|
||||
extern const base::Feature kHomepageTile;
|
||||
extern const base::Feature kHorizontalTabSwitcherAndroid;
|
||||
extern const base::Feature kImprovedA2HS;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -4,33 +4,13 @@ Subject: Always use new tab page for default home page
|
||||
|
||||
Ignore any partner-provided home page.
|
||||
---
|
||||
.../chrome/browser/partnercustomizations/HomepageManager.java | 10 +++-------
|
||||
1 file changed, 3 insertions(+), 7 deletions(-)
|
||||
.../chrome/browser/partnercustomizations/HomepageManager.java | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
|
||||
@@ -83,8 +83,7 @@ public class HomepageManager {
|
||||
* @return Whether or not homepage is enabled.
|
||||
*/
|
||||
public static boolean isHomepageEnabled() {
|
||||
- if (PartnerBrowserCustomizations.isHomepageProviderAvailableAndEnabled()
|
||||
- || FeatureUtilities.isHomePageButtonForceEnabled()) {
|
||||
+ if (FeatureUtilities.isHomePageButtonForceEnabled()) {
|
||||
return getInstance().getPrefHomepageEnabled();
|
||||
}
|
||||
return false;
|
||||
@@ -102,8 +101,7 @@ public class HomepageManager {
|
||||
* @return Whether or not homepage setting should be shown.
|
||||
*/
|
||||
public static boolean shouldShowHomepageSetting() {
|
||||
- return PartnerBrowserCustomizations.isHomepageProviderAvailableAndEnabled()
|
||||
- || FeatureUtilities.isHomePageButtonForceEnabled();
|
||||
+ return FeatureUtilities.isHomePageButtonForceEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -124,9 +122,7 @@ public class HomepageManager {
|
||||
@@ -111,9 +111,7 @@ public class HomepageManager {
|
||||
* if the homepage button is force enabled via flag.
|
||||
*/
|
||||
public static String getDefaultHomepageUri() {
|
||||
@@ -42,5 +22,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
|
||||
|
||||
/**
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -2,17 +2,17 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 25 Mar 2018 21:49:37 +0200
|
||||
Subject: AudioBuffer, AnalyserNode: fingerprinting mitigations via IDL
|
||||
|
||||
Return fixed base latency
|
||||
Truncate base latency precision to two digits
|
||||
---
|
||||
third_party/blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
|
||||
third_party/blink/renderer/modules/webaudio/audio_buffer.idl | 4 ++--
|
||||
third_party/blink/renderer/modules/webaudio/audio_context.cc | 1 +
|
||||
3 files changed, 7 insertions(+), 6 deletions(-)
|
||||
.../blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
|
||||
.../blink/renderer/modules/webaudio/audio_buffer.idl | 4 ++--
|
||||
.../blink/renderer/modules/webaudio/audio_context.cc | 4 +++-
|
||||
3 files changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
|
||||
--- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
|
||||
+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
|
||||
@@ -42,10 +42,10 @@ interface AnalyserNode : AudioNode {
|
||||
@@ -43,10 +43,10 @@ interface AnalyserNode : AudioNode {
|
||||
|
||||
// Copies the current frequency data into the passed array.
|
||||
// If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
|
||||
@@ -30,27 +30,30 @@ diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/thi
|
||||
diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
|
||||
--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
|
||||
+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
|
||||
@@ -38,7 +38,7 @@
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
// Channel access
|
||||
readonly attribute unsigned long numberOfChannels;
|
||||
- [HighEntropy, Measure, RaisesException] Float32Array getChannelData(unsigned long channelIndex);
|
||||
- [HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long startInChannel = 0);
|
||||
- [HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long bufferOffset = 0);
|
||||
+ //[HighEntropy, Measure, RaisesException] Float32Array getChannelData(unsigned long channelIndex);
|
||||
+ //[HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long startInChannel = 0);
|
||||
[RaisesException] void copyToChannel(Float32Array source, long channelNumber, optional unsigned long startInChannel = 0);
|
||||
+ //[HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long bufferOffset = 0);
|
||||
[RaisesException] void copyToChannel(Float32Array source, long channelNumber, optional unsigned long bufferOffset = 0);
|
||||
};
|
||||
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||
@@ -324,6 +324,7 @@ void AudioContext::StopRendering() {
|
||||
double AudioContext::baseLatency() const {
|
||||
@@ -373,7 +373,9 @@ double AudioContext::baseLatency() const {
|
||||
DCHECK(IsMainThread());
|
||||
DCHECK(destination());
|
||||
+ return 0.04;
|
||||
|
||||
// TODO(hongchan): Due to the incompatible constructor between
|
||||
// AudioDestinationNode and RealtimeAudioDestinationNode, casting directly
|
||||
- return base_latency_;
|
||||
+ // remove precision past two decimal digits
|
||||
+ int l = base_latency_ * 100;
|
||||
+ return double(l)/100;
|
||||
}
|
||||
|
||||
MediaElementAudioSourceNode* AudioContext::createMediaElementSource(
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -2,34 +2,35 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 22 Mar 2018 22:11:57 +0100
|
||||
Subject: Battery API: return nothing
|
||||
|
||||
Include @thestinger's fix for correct charging/unknown values
|
||||
---
|
||||
.../renderer/modules/battery/battery_manager.cc | 25 ++++------------------
|
||||
.../modules/battery/battery_manager.cc | 25 +++----------------
|
||||
1 file changed, 4 insertions(+), 21 deletions(-)
|
||||
|
||||
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
|
||||
@@ -44,45 +44,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
|
||||
@@ -45,45 +45,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
|
||||
}
|
||||
|
||||
bool BatteryManager::charging() {
|
||||
- return battery_status_.Charging();
|
||||
+ return false;
|
||||
+ return true;
|
||||
}
|
||||
|
||||
double BatteryManager::chargingTime() {
|
||||
- return battery_status_.charging_time();
|
||||
+ return 0;
|
||||
+ return 0.0;
|
||||
}
|
||||
|
||||
double BatteryManager::dischargingTime() {
|
||||
- return battery_status_.discharging_time();
|
||||
+ return 0;
|
||||
+ return std::numeric_limits<double>::infinity();
|
||||
}
|
||||
|
||||
double BatteryManager::level() {
|
||||
- return battery_status_.Level();
|
||||
+ return 1;
|
||||
+ return 1.0;
|
||||
}
|
||||
|
||||
void BatteryManager::DidUpdateData() {
|
||||
@@ -60,5 +61,5 @@ diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/thi
|
||||
|
||||
void BatteryManager::RegisterWithDispatcher() {
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
+319
@@ -0,0 +1,319 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 30 Oct 2019 11:50:13 +0100
|
||||
Subject: Block all connection requests with 'qjz9zk' in the domain name or
|
||||
with a 'trk:' scheme.
|
||||
|
||||
An info bar is displayed unless the --disable-trkbar command-line flag or the chrome://flag option is used.
|
||||
This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs being retrieved'
|
||||
---
|
||||
.../chrome_autocomplete_scheme_classifier.cc | 1 +
|
||||
chrome/browser/history/history_utils.cc | 1 +
|
||||
chrome/browser/ui/singleton_tabs.cc | 3 +-
|
||||
.../browser/url_request_context_factory.cc | 7 +++-
|
||||
.../omnibox/browser/autocomplete_input.cc | 7 ++--
|
||||
components/url_formatter/url_fixer.cc | 4 +++
|
||||
.../child_process_security_policy_impl.cc | 1 +
|
||||
net/BUILD.gn | 2 ++
|
||||
net/url_request/trk_protocol_handler.cc | 26 +++++++++++++++
|
||||
net/url_request/trk_protocol_handler.h | 33 +++++++++++++++++++
|
||||
net/url_request/url_request.cc | 8 +++++
|
||||
.../url_request_context_builder.cc | 4 +++
|
||||
url/url_constants.cc | 1 +
|
||||
url/url_constants.h | 1 +
|
||||
url/url_util.cc | 2 ++
|
||||
15 files changed, 97 insertions(+), 4 deletions(-)
|
||||
create mode 100644 net/url_request/trk_protocol_handler.cc
|
||||
create mode 100644 net/url_request/trk_protocol_handler.h
|
||||
|
||||
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
|
||||
--- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
|
||||
+++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
|
||||
@@ -28,6 +28,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme(
|
||||
if (base::IsStringASCII(scheme) &&
|
||||
(ProfileIOData::IsHandledProtocol(scheme) ||
|
||||
base::LowerCaseEqualsASCII(scheme, content::kViewSourceScheme) ||
|
||||
+ base::LowerCaseEqualsASCII(scheme, url::kTraceScheme) ||
|
||||
base::LowerCaseEqualsASCII(scheme, url::kJavaScriptScheme) ||
|
||||
base::LowerCaseEqualsASCII(scheme, url::kDataScheme))) {
|
||||
return metrics::OmniboxInputType::URL;
|
||||
diff --git a/chrome/browser/history/history_utils.cc b/chrome/browser/history/history_utils.cc
|
||||
--- a/chrome/browser/history/history_utils.cc
|
||||
+++ b/chrome/browser/history/history_utils.cc
|
||||
@@ -22,6 +22,7 @@ bool CanAddURLToHistory(const GURL& url) {
|
||||
url.SchemeIs(content::kChromeDevToolsScheme) ||
|
||||
url.SchemeIs(content::kChromeUIScheme) ||
|
||||
url.SchemeIs(content::kViewSourceScheme) ||
|
||||
+ url.SchemeIs(url::kTraceScheme) ||
|
||||
url.SchemeIs(chrome::kChromeNativeScheme) ||
|
||||
url.SchemeIs(chrome::kChromeSearchScheme) ||
|
||||
url.SchemeIs(dom_distiller::kDomDistillerScheme) ||
|
||||
diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_tabs.cc
|
||||
--- a/chrome/browser/ui/singleton_tabs.cc
|
||||
+++ b/chrome/browser/ui/singleton_tabs.cc
|
||||
@@ -100,7 +100,8 @@ int GetIndexOfExistingTab(Browser* browser, const NavigateParams& params) {
|
||||
|
||||
// Skip view-source tabs. This is needed because RewriteURLIfNecessary
|
||||
// removes the "view-source:" scheme which leads to incorrect matching.
|
||||
- if (tab_url.SchemeIs(content::kViewSourceScheme))
|
||||
+ if (tab_url.SchemeIs(content::kViewSourceScheme) ||
|
||||
+ tab_url.SchemeIs(url::kTraceScheme))
|
||||
continue;
|
||||
|
||||
GURL rewritten_tab_url = tab_url;
|
||||
diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc
|
||||
--- a/chromecast/browser/url_request_context_factory.cc
|
||||
+++ b/chromecast/browser/url_request_context_factory.cc
|
||||
@@ -39,6 +39,7 @@
|
||||
#include "net/http/http_stream_factory.h"
|
||||
#include "net/proxy_resolution/proxy_resolution_service.h"
|
||||
#include "net/ssl/ssl_config_service_defaults.h"
|
||||
+#include "net/url_request/trk_protocol_handler.h"
|
||||
#include "net/url_request/url_request_context.h"
|
||||
#include "net/url_request/url_request_context_builder.h"
|
||||
#include "net/url_request/url_request_context_getter.h"
|
||||
@@ -245,13 +246,17 @@ void URLRequestContextFactory::InitializeMainContextDependencies(
|
||||
new net::URLRequestJobFactoryImpl());
|
||||
// Keep ProtocolHandlers added in sync with
|
||||
// CastContentBrowserClient::IsHandledURL().
|
||||
+ bool set_protocol = false;
|
||||
for (content::ProtocolHandlerMap::iterator it = protocol_handlers->begin();
|
||||
it != protocol_handlers->end();
|
||||
++it) {
|
||||
- bool set_protocol =
|
||||
+ set_protocol =
|
||||
job_factory->SetProtocolHandler(it->first, std::move(it->second));
|
||||
DCHECK(set_protocol);
|
||||
}
|
||||
+ set_protocol = job_factory->SetProtocolHandler(
|
||||
+ url::kTraceScheme, base::WrapUnique(new net::TrkProtocolHandler));
|
||||
+ DCHECK(set_protocol);
|
||||
|
||||
// Set up interceptors in the reverse order.
|
||||
std::unique_ptr<net::URLRequestJobFactory> top_job_factory =
|
||||
diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
|
||||
--- a/components/omnibox/browser/autocomplete_input.cc
|
||||
+++ b/components/omnibox/browser/autocomplete_input.cc
|
||||
@@ -496,7 +496,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
|
||||
// For the view-source and blob schemes, we should emphasize the host of the
|
||||
// URL qualified by the view-source or blob prefix.
|
||||
if ((base::LowerCaseEqualsASCII(scheme_str, kViewSourceScheme) ||
|
||||
- base::LowerCaseEqualsASCII(scheme_str, url::kBlobScheme)) &&
|
||||
+ base::LowerCaseEqualsASCII(scheme_str, url::kBlobScheme) ||
|
||||
+ base::LowerCaseEqualsASCII(scheme_str, url::kTraceScheme)) &&
|
||||
(static_cast<int>(text.length()) > after_scheme_and_colon)) {
|
||||
// Obtain the URL prefixed by view-source or blob and parse it.
|
||||
base::string16 real_url(text.substr(after_scheme_and_colon));
|
||||
@@ -569,7 +570,9 @@ int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) {
|
||||
bool AutocompleteInput::HasHTTPScheme(const base::string16& input) {
|
||||
std::string utf8_input(base::UTF16ToUTF8(input));
|
||||
url::Component scheme;
|
||||
- if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme, &scheme)) {
|
||||
+ if (url::FindAndCompareScheme(utf8_input, url::kTraceScheme, &scheme)) {
|
||||
+ return false;
|
||||
+ } else if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme, &scheme)) {
|
||||
utf8_input.erase(0, scheme.end() + 1);
|
||||
}
|
||||
return url::FindAndCompareScheme(utf8_input, url::kHttpScheme, nullptr);
|
||||
diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
|
||||
--- a/components/url_formatter/url_fixer.cc
|
||||
+++ b/components/url_formatter/url_fixer.cc
|
||||
@@ -552,6 +552,10 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
|
||||
}
|
||||
}
|
||||
|
||||
+ if (scheme == url::kTraceScheme) {
|
||||
+ return GURL();
|
||||
+ }
|
||||
+
|
||||
// We handle the file scheme separately.
|
||||
if (scheme == url::kFileScheme)
|
||||
return GURL(parts.scheme.is_valid() ? text : FixupPath(text));
|
||||
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
|
||||
--- a/content/browser/child_process_security_policy_impl.cc
|
||||
+++ b/content/browser/child_process_security_policy_impl.cc
|
||||
@@ -513,6 +513,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
|
||||
RegisterWebSafeScheme(url::kHttpsScheme);
|
||||
RegisterWebSafeScheme(url::kFtpScheme);
|
||||
RegisterWebSafeScheme(url::kDataScheme);
|
||||
+ RegisterWebSafeScheme(url::kTraceScheme);
|
||||
RegisterWebSafeScheme("feed");
|
||||
|
||||
// TODO(nick): https://crbug.com/651534 blob: and filesystem: schemes embed
|
||||
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -1801,6 +1801,8 @@ component("net") {
|
||||
"url_request/report_sender.h",
|
||||
"url_request/static_http_user_agent_settings.cc",
|
||||
"url_request/static_http_user_agent_settings.h",
|
||||
+ "url_request/trk_protocol_handler.cc",
|
||||
+ "url_request/trk_protocol_handler.h",
|
||||
"url_request/url_fetcher.cc",
|
||||
"url_request/url_fetcher.h",
|
||||
"url_request/url_fetcher_core.cc",
|
||||
diff --git a/net/url_request/trk_protocol_handler.cc b/net/url_request/trk_protocol_handler.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/trk_protocol_handler.cc
|
||||
@@ -0,0 +1,26 @@
|
||||
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+#include "net/url_request/trk_protocol_handler.h"
|
||||
+
|
||||
+#include "base/logging.h"
|
||||
+#include "net/base/net_errors.h"
|
||||
+#include "net/url_request/url_request_error_job.h"
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+TrkProtocolHandler::TrkProtocolHandler() = default;
|
||||
+
|
||||
+URLRequestJob* TrkProtocolHandler::MaybeCreateJob(
|
||||
+ URLRequest* request, NetworkDelegate* network_delegate) const {
|
||||
+ LOG(ERROR) << "Blocked URL in TrkProtocolHandler: " << request->original_url();
|
||||
+ return new URLRequestErrorJob(
|
||||
+ request, network_delegate, ERR_BLOCKED_BY_CLIENT);
|
||||
+}
|
||||
+
|
||||
+bool TrkProtocolHandler::IsSafeRedirectTarget(const GURL& location) const {
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+} // namespace net
|
||||
diff --git a/net/url_request/trk_protocol_handler.h b/net/url_request/trk_protocol_handler.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/trk_protocol_handler.h
|
||||
@@ -0,0 +1,33 @@
|
||||
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+#ifndef NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
|
||||
+#define NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
|
||||
+
|
||||
+#include "base/compiler_specific.h"
|
||||
+#include "base/macros.h"
|
||||
+#include "net/base/net_export.h"
|
||||
+#include "net/url_request/url_request_job_factory.h"
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+class URLRequestJob;
|
||||
+
|
||||
+// Implements a ProtocolHandler for Trk jobs.
|
||||
+class NET_EXPORT TrkProtocolHandler
|
||||
+ : public URLRequestJobFactory::ProtocolHandler {
|
||||
+ public:
|
||||
+ TrkProtocolHandler();
|
||||
+ URLRequestJob* MaybeCreateJob(
|
||||
+ URLRequest* request,
|
||||
+ NetworkDelegate* network_delegate) const override;
|
||||
+ bool IsSafeRedirectTarget(const GURL& location) const override;
|
||||
+
|
||||
+ private:
|
||||
+ DISALLOW_COPY_AND_ASSIGN(TrkProtocolHandler);
|
||||
+};
|
||||
+
|
||||
+} // namespace net
|
||||
+
|
||||
+#endif // NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
|
||||
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
|
||||
--- a/net/url_request/url_request.cc
|
||||
+++ b/net/url_request/url_request.cc
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "base/metrics/histogram_macros.h"
|
||||
#include "base/rand_util.h"
|
||||
#include "base/stl_util.h"
|
||||
+#include "base/strings/string_util.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "base/synchronization/lock.h"
|
||||
#include "base/threading/thread_task_runner_handle.h"
|
||||
@@ -40,6 +41,7 @@
|
||||
#include "net/url_request/url_request_redirect_job.h"
|
||||
#include "url/gurl.h"
|
||||
#include "url/origin.h"
|
||||
+#include "url/url_constants.h"
|
||||
|
||||
using base::Time;
|
||||
using std::string;
|
||||
@@ -592,6 +594,12 @@ URLRequest::URLRequest(const GURL& url,
|
||||
// Sanity check out environment.
|
||||
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
|
||||
|
||||
+ if (!url.SchemeIs(url::kTraceScheme) &&
|
||||
+ base::EndsWith(url.host(), "qjz9zk", base::CompareCase::INSENSITIVE_ASCII)) {
|
||||
+ LOG(ERROR) << "Block URL in URLRequest: " << url;
|
||||
+ url_chain_[0] = GURL(url::kTraceScheme + (":" + url.possibly_invalid_spec()));
|
||||
+ }
|
||||
+
|
||||
context->url_requests()->insert(this);
|
||||
net_log_.BeginEvent(NetLogEventType::REQUEST_ALIVE, [&] {
|
||||
return NetLogURLRequestConstructorParams(url, priority_,
|
||||
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
|
||||
--- a/net/url_request/url_request_context_builder.cc
|
||||
+++ b/net/url_request/url_request_context_builder.cc
|
||||
@@ -40,6 +40,7 @@
|
||||
#include "net/ssl/ssl_config_service_defaults.h"
|
||||
#include "net/url_request/data_protocol_handler.h"
|
||||
#include "net/url_request/static_http_user_agent_settings.h"
|
||||
+#include "net/url_request/trk_protocol_handler.h"
|
||||
#include "net/url_request/url_request_context.h"
|
||||
#include "net/url_request/url_request_context_storage.h"
|
||||
#include "net/url_request/url_request_intercepting_job_factory.h"
|
||||
@@ -641,6 +642,9 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
|
||||
}
|
||||
url_request_interceptors_.clear();
|
||||
}
|
||||
+ job_factory->SetProtocolHandler(url::kTraceScheme,
|
||||
+ std::make_unique<TrkProtocolHandler>());
|
||||
+
|
||||
if (create_intercepting_job_factory_) {
|
||||
top_job_factory = std::move(create_intercepting_job_factory_)
|
||||
.Run(std::move(top_job_factory));
|
||||
diff --git a/url/url_constants.cc b/url/url_constants.cc
|
||||
--- a/url/url_constants.cc
|
||||
+++ b/url/url_constants.cc
|
||||
@@ -26,6 +26,7 @@ const char kHttpsScheme[] = "https";
|
||||
const char kJavaScriptScheme[] = "javascript";
|
||||
const char kMailToScheme[] = "mailto";
|
||||
const char kTelScheme[] = "tel";
|
||||
+const char kTraceScheme[] = "trk";
|
||||
const char kWsScheme[] = "ws";
|
||||
const char kWssScheme[] = "wss";
|
||||
|
||||
diff --git a/url/url_constants.h b/url/url_constants.h
|
||||
--- a/url/url_constants.h
|
||||
+++ b/url/url_constants.h
|
||||
@@ -32,6 +32,7 @@ COMPONENT_EXPORT(URL) extern const char kHttpsScheme[];
|
||||
COMPONENT_EXPORT(URL) extern const char kJavaScriptScheme[];
|
||||
COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
|
||||
COMPONENT_EXPORT(URL) extern const char kTelScheme[];
|
||||
+COMPONENT_EXPORT(URL) extern const char kTraceScheme[];
|
||||
COMPONENT_EXPORT(URL) extern const char kWsScheme[];
|
||||
COMPONENT_EXPORT(URL) extern const char kWssScheme[];
|
||||
|
||||
diff --git a/url/url_util.cc b/url/url_util.cc
|
||||
--- a/url/url_util.cc
|
||||
+++ b/url/url_util.cc
|
||||
@@ -52,6 +52,7 @@ struct SchemeRegistry {
|
||||
kHttpsScheme,
|
||||
kAboutScheme,
|
||||
kDataScheme,
|
||||
+ kTraceScheme,
|
||||
kWssScheme,
|
||||
};
|
||||
|
||||
@@ -67,6 +68,7 @@ struct SchemeRegistry {
|
||||
kAboutScheme,
|
||||
kJavaScriptScheme,
|
||||
kDataScheme,
|
||||
+ kTraceScheme,
|
||||
};
|
||||
|
||||
// Schemes that can be sent CORS requests.
|
||||
--
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,876 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 23 Aug 2018 19:30:15 +0200
|
||||
Subject: Bromite adblock engine
|
||||
|
||||
Original adblock engine ported from NoChromo patch
|
||||
Make interception testable
|
||||
Add domain support
|
||||
Re-land: third-party filters support
|
||||
Add menu option to toggle global Adblock preference
|
||||
Allow toggling Chromium's "ads enabled" content settings option together with Bromite adblock engine.
|
||||
Perform adblock interception in StartJob to address lagging issues
|
||||
New mechanism for adblocking based on Brave's adblocking hook
|
||||
Add support for Webview content blocking
|
||||
---
|
||||
android_webview/browser/net/aw_network_delegate.cc | 68 ++++
|
||||
android_webview/browser/net/aw_network_delegate.h | 3 +
|
||||
chrome/android/java/res/menu/custom_tabs_menu.xml | 12 +
|
||||
chrome/android/java/res/menu/main_menu.xml | 11 +
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 8 +
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 8 +
|
||||
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 ++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +
|
||||
chrome/browser/net/chrome_network_delegate.cc | 83 +++++
|
||||
.../subresource_filter_content_settings_manager.cc | 1 +
|
||||
net/BUILD.gn | 7 +
|
||||
net/url_request/adblock_intercept.cc | 389 +++++++++++++++++++++
|
||||
net/url_request/adblock_intercept.h | 35 ++
|
||||
14 files changed, 676 insertions(+)
|
||||
create mode 100644 net/url_request/adblock_intercept.cc
|
||||
create mode 100644 net/url_request/adblock_intercept.h
|
||||
|
||||
diff --git a/android_webview/browser/net/aw_network_delegate.cc b/android_webview/browser/net/aw_network_delegate.cc
|
||||
--- a/android_webview/browser/net/aw_network_delegate.cc
|
||||
+++ b/android_webview/browser/net/aw_network_delegate.cc
|
||||
@@ -20,9 +20,11 @@
|
||||
#include "net/base/proxy_server.h"
|
||||
#include "net/http/http_response_headers.h"
|
||||
#include "net/proxy_resolution/proxy_info.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
#include "net/url_request/url_request.h"
|
||||
|
||||
using content::BrowserThread;
|
||||
+using content::ResourceRequestInfo;
|
||||
|
||||
namespace android_webview {
|
||||
|
||||
@@ -49,6 +51,72 @@ AwNetworkDelegate::AwNetworkDelegate() {}
|
||||
AwNetworkDelegate::~AwNetworkDelegate() {
|
||||
}
|
||||
|
||||
+#define TRANSPARENT1PXGIF "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
|
||||
+#define EMPTYJS "data:text/javascript;base64,Cg=="
|
||||
+#define EMPTYCSS "data:text/css;base64,Cg=="
|
||||
+
|
||||
+static bool requestIntercepted(net::URLRequest* request, GURL* new_url) {
|
||||
+ bool block = false, isValidUrl;
|
||||
+
|
||||
+ isValidUrl = request->url().is_valid();
|
||||
+ std::string scheme = request->url().scheme();
|
||||
+ if (isValidUrl && scheme.length()) {
|
||||
+ std::transform(scheme.begin(), scheme.end(), scheme.begin(), ::tolower);
|
||||
+ if ("http" != scheme && "https" != scheme) {
|
||||
+ isValidUrl = false;
|
||||
+ }
|
||||
+ }
|
||||
+ ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
|
||||
+
|
||||
+ // there are no per-site nor global ad/content settings when using the SystemWebView
|
||||
+ bool adblock_enabled = true;
|
||||
+ if (isValidUrl && info) {
|
||||
+ auto resource_type = info->GetResourceType();
|
||||
+
|
||||
+ if (adblock_enabled
|
||||
+ && content::RESOURCE_TYPE_MAIN_FRAME != resource_type
|
||||
+ && net::adblock_intercept(request->url(),
|
||||
+ request->initiator()->host(),
|
||||
+ resource_type)) {
|
||||
+ block = true;
|
||||
+ }
|
||||
+
|
||||
+ if (block) {
|
||||
+ switch (resource_type) {
|
||||
+ case content::RESOURCE_TYPE_IMAGE:
|
||||
+ case content::RESOURCE_TYPE_FAVICON:
|
||||
+ *new_url = GURL(TRANSPARENT1PXGIF);
|
||||
+ break;
|
||||
+ case content::RESOURCE_TYPE_SCRIPT:
|
||||
+ *new_url = GURL(EMPTYJS);
|
||||
+ break;
|
||||
+ case content::RESOURCE_TYPE_STYLESHEET:
|
||||
+ *new_url = GURL(EMPTYCSS);
|
||||
+ break;
|
||||
+ default:
|
||||
+ *new_url = GURL("");
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ } // valid URL and info
|
||||
+ return false;
|
||||
+}
|
||||
+#undef TRANSPARENT1PXGIF
|
||||
+#undef EMPTYJS
|
||||
+#undef EMPTYCSS
|
||||
+
|
||||
+int AwNetworkDelegate::OnBeforeURLRequest(net::URLRequest* request,
|
||||
+ net::CompletionOnceCallback callback,
|
||||
+ GURL* new_url) {
|
||||
+ if (request) {
|
||||
+ // most requests will be modified rather than intercepted
|
||||
+ if (requestIntercepted(request, new_url))
|
||||
+ return net::ERR_BLOCKED_BY_ADMINISTRATOR;
|
||||
+ } // request
|
||||
+
|
||||
+ return net::OK;
|
||||
+}
|
||||
+
|
||||
int AwNetworkDelegate::OnBeforeStartTransaction(
|
||||
net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
diff --git a/android_webview/browser/net/aw_network_delegate.h b/android_webview/browser/net/aw_network_delegate.h
|
||||
--- a/android_webview/browser/net/aw_network_delegate.h
|
||||
+++ b/android_webview/browser/net/aw_network_delegate.h
|
||||
@@ -22,6 +22,9 @@ class AwNetworkDelegate : public net::NetworkDelegateImpl {
|
||||
|
||||
private:
|
||||
// NetworkDelegate implementation.
|
||||
+ int OnBeforeURLRequest(net::URLRequest* request,
|
||||
+ net::CompletionOnceCallback callback,
|
||||
+ GURL* new_url) override;
|
||||
int OnBeforeStartTransaction(net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
net::HttpRequestHeaders* headers) override;
|
||||
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
|
||||
@@ -74,6 +74,18 @@
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
+ <item android:id="@+id/enable_adblock_row_menu_id"
|
||||
+ android:title="@null"
|
||||
+ android:orderInCategory="2">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_adblock_id"
|
||||
+ android:title="@string/menu_enable_adblock" />
|
||||
+ <item android:id="@+id/enable_adblock_check_id"
|
||||
+ android:title="@null"
|
||||
+ android:checkable="true" />
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<!-- Title is intentionally left blank in xml and will be set in java. -->
|
||||
<item android:id="@+id/open_in_browser_id"
|
||||
android:title=""
|
||||
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
|
||||
@@ -84,6 +84,17 @@
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
+ <item android:id="@+id/enable_adblock_row_menu_id"
|
||||
+ android:title="@null">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_adblock_id"
|
||||
+ android:title="@string/menu_enable_adblock" />
|
||||
+ <item android:id="@+id/enable_adblock_check_id"
|
||||
+ android:title="@null"
|
||||
+ android:checkable="true" />
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<item android:id="@+id/reader_mode_prefs_id"
|
||||
android:title="@string/menu_reader_mode_prefs"
|
||||
android:icon="@drawable/reader_mode_prefs_icon" />
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
|
||||
@@ -2263,6 +2263,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
RecordUserAction.record("MobileMenuRequestEnableJavascript");
|
||||
} else if (id == R.id.reader_mode_prefs_id) {
|
||||
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
|
||||
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
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
|
||||
@@ -1815,6 +1815,14 @@ public class ChromeTabbedActivity
|
||||
reportNewTabShortcutUsed(true);
|
||||
getTabCreator(true).launchNTP();
|
||||
}
|
||||
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else if (id == R.id.all_bookmarks_menu_id) {
|
||||
if (currentTab != null) {
|
||||
getCompositorViewHolder().hideKeyboard(() -> {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
@@ -195,6 +195,8 @@ public class AppMenuPropertiesDelegate {
|
||||
&& !TextUtils.isEmpty(url);
|
||||
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
@@ -488,6 +490,42 @@ public class AppMenuPropertiesDelegate {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Updates the enable AdBlock item's state.
|
||||
+ *
|
||||
+ * @param menu {@link Menu} for enable adblock
|
||||
+ * @param currentTab Current tab being displayed.
|
||||
+ */
|
||||
+ protected void updateEnableAdBlockMenuItem(
|
||||
+ Menu menu, Tab currentTab) {
|
||||
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_adblock_row_menu_id);
|
||||
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_adblock_id);
|
||||
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_adblock_check_id);
|
||||
+
|
||||
+
|
||||
+ // Hide enable adblock on all chrome:// pages except for the NTP.
|
||||
+ String url = currentTab.getUrl();
|
||||
+ boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
|
||||
+ || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
|
||||
+ // Also hide enable javascsript on Reader Mode.
|
||||
+ boolean isDistilledPage = DomDistillerUrlUtils.isDistilledPage(url);
|
||||
+
|
||||
+ boolean itemVisible = (!isChromeScheme || currentTab.isNativePage()) && !isDistilledPage;
|
||||
+ enableMenuRow.setVisible(itemVisible);
|
||||
+ if (!itemVisible) return;
|
||||
+
|
||||
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+
|
||||
+ // Mark the checkbox if adblock is globally activate.
|
||||
+ enableMenuCheck.setChecked(adBlockEnabled);
|
||||
+
|
||||
+ // This title doesn't seem to be displayed by Android, but it is used to set up
|
||||
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
|
||||
+ enableMenuLabel.setTitleCondensed(adBlockEnabled
|
||||
+ ? mActivity.getString(R.string.menu_enable_adblock_on)
|
||||
+ : mActivity.getString(R.string.menu_enable_adblock_off));
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* A notification that the header view has finished inflating.
|
||||
* @param view The view that was inflated.
|
||||
* @param appMenu The menu the view is inside of.
|
||||
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
|
||||
@@ -181,6 +181,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
||||
}
|
||||
}
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
|
||||
updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -3086,6 +3086,17 @@ To change this setting, <ph name="BEGIN_LINK"><resetlink></ph>reset sync<p
|
||||
<message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
|
||||
Turn on Request desktop site
|
||||
</message>
|
||||
+
|
||||
+ <message name="IDS_MENU_ENABLE_ADBLOCK" desc="Menu item in Chrome's overflow/options menu. If this menu item is unselected, Bromite will disable AdBlock engine for the page. [CHAR-LIMIT=27]">
|
||||
+ Enable AdBlock
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_ADBLOCK_ON" desc="Accessibility description for when Enable AdBlock is selected.">
|
||||
+ Turn off AdBlock
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_ADBLOCK_OFF" desc="Accessibility description for when Enable AdBlock is unselected.">
|
||||
+ Turn on AdBlock
|
||||
+ </message>
|
||||
+
|
||||
<message name="IDS_MENU_READER_MODE_PREFS" desc="Menu item to show reader mode preferences pane, which allows users to change the appearance (font size, theme, etc.) of the page. [CHAR-LIMIT=27]">
|
||||
Appearance
|
||||
</message>
|
||||
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
|
||||
--- a/chrome/browser/net/chrome_network_delegate.cc
|
||||
+++ b/chrome/browser/net/chrome_network_delegate.cc
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/content_settings/cookie_settings_factory.h"
|
||||
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
||||
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
|
||||
#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
|
||||
#include "chrome/browser/net/chrome_extensions_network_delegate.h"
|
||||
@@ -59,6 +60,7 @@
|
||||
#if defined(OS_ANDROID)
|
||||
#include "base/android/path_utils.h"
|
||||
#include "chrome/browser/io_thread.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
#endif
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
@@ -193,10 +195,91 @@ void ChromeNetworkDelegate::set_cookie_settings(
|
||||
cookie_settings_ = cookie_settings;
|
||||
}
|
||||
|
||||
+#define TRANSPARENT1PXGIF "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
|
||||
+#define EMPTYJS "data:text/javascript;base64,Cg=="
|
||||
+#define EMPTYCSS "data:text/css;base64,Cg=="
|
||||
+
|
||||
+static bool requestIntercepted(net::URLRequest* request, GURL* new_url) {
|
||||
+ bool block = false, isValidUrl;
|
||||
+
|
||||
+ isValidUrl = request->url().is_valid();
|
||||
+ std::string scheme = request->url().scheme();
|
||||
+ if (isValidUrl && scheme.length()) {
|
||||
+ std::transform(scheme.begin(), scheme.end(), scheme.begin(), ::tolower);
|
||||
+ if ("http" != scheme && "https" != scheme) {
|
||||
+ isValidUrl = false;
|
||||
+ }
|
||||
+ }
|
||||
+ ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
|
||||
+
|
||||
+ bool adblock_enabled = false;
|
||||
+ if (isValidUrl && info) {
|
||||
+ const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter = info->GetWebContentsGetterForRequest();
|
||||
+ content::WebContents* web_contents = web_contents_getter.Run();
|
||||
+ if (web_contents) {
|
||||
+ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
||||
+ //FIXME: this should not be called from the IO thread
|
||||
+ const HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(profile);
|
||||
+
|
||||
+ if (content_settings) {
|
||||
+ // check global value first
|
||||
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetDefaultContentSetting(ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS, NULL);
|
||||
+
|
||||
+ if (!adblock_enabled) {
|
||||
+ // check per-site value
|
||||
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetContentSetting(request->url(), GURL(), ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS,
|
||||
+ std::string());
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ auto resource_type = info->GetResourceType();
|
||||
+
|
||||
+ if (adblock_enabled
|
||||
+ && content::RESOURCE_TYPE_MAIN_FRAME != resource_type
|
||||
+ && net::adblock_intercept(request->url(),
|
||||
+ request->initiator()->host(),
|
||||
+ resource_type)) {
|
||||
+ block = true;
|
||||
+ }
|
||||
+
|
||||
+ if (block) {
|
||||
+ switch (resource_type) {
|
||||
+ case content::RESOURCE_TYPE_IMAGE:
|
||||
+ case content::RESOURCE_TYPE_FAVICON:
|
||||
+ *new_url = GURL(TRANSPARENT1PXGIF);
|
||||
+ break;
|
||||
+ case content::RESOURCE_TYPE_SCRIPT:
|
||||
+ *new_url = GURL(EMPTYJS);
|
||||
+ break;
|
||||
+ case content::RESOURCE_TYPE_STYLESHEET:
|
||||
+ *new_url = GURL(EMPTYCSS);
|
||||
+ break;
|
||||
+ default:
|
||||
+ *new_url = GURL("");
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ } // valid URL and info
|
||||
+ return false;
|
||||
+}
|
||||
+#undef TRANSPARENT1PXGIF
|
||||
+#undef EMPTYJS
|
||||
+#undef EMPTYCSS
|
||||
+
|
||||
int ChromeNetworkDelegate::OnBeforeURLRequest(
|
||||
net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
GURL* new_url) {
|
||||
+
|
||||
+#if defined(OS_ANDROID)
|
||||
+ if (request) {
|
||||
+ // most requests will be modified rather than intercepted
|
||||
+ if (requestIntercepted(request, new_url))
|
||||
+ return net::ERR_BLOCKED_BY_ADMINISTRATOR;
|
||||
+ } // request
|
||||
+#endif // OS_ANDROID
|
||||
+
|
||||
extensions_delegate_->ForwardStartRequestStatus(request);
|
||||
|
||||
return extensions_delegate_->NotifyBeforeURLRequest(
|
||||
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
|
||||
--- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
|
||||
+++ b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "components/history/core/browser/history_service.h"
|
||||
#include "components/keyed_service/core/service_access_type.h"
|
||||
#include "url/gurl.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
|
||||
namespace {
|
||||
|
||||
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -1794,6 +1794,13 @@ component("net") {
|
||||
"url_request/websocket_handshake_userdata_key.h",
|
||||
]
|
||||
|
||||
+ if (is_android) {
|
||||
+ sources += [
|
||||
+ "url_request/adblock_intercept.cc",
|
||||
+ "url_request/adblock_intercept.h"
|
||||
+ ]
|
||||
+ }
|
||||
+
|
||||
if (enable_reporting) {
|
||||
sources += [
|
||||
"network_error_logging/network_error_logging_delegate.cc",
|
||||
diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_intercept.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/adblock_intercept.cc
|
||||
@@ -0,0 +1,389 @@
|
||||
+/*
|
||||
+ 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/>.
|
||||
+*/
|
||||
+#include "adblock_intercept.h"
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+#include <cstddef>
|
||||
+#include <cstdlib>
|
||||
+#include <string.h>
|
||||
+
|
||||
+#include "log.h"
|
||||
+#include <tld.h>
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
||||
+#include <android/log.h>
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+#include "net/url_request/adblock_entries.h"
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+const char *LOG_TAG = "Bromite";
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+int adblock_rules_count() { return ADBLOCK_ENTRY_COUNT; }
|
||||
+#endif
|
||||
+
|
||||
+// True if the given canonical |host| is "[www.]<domain_in_lower_case>.<TLD>"
|
||||
+// with a valid TLD. If |subdomain_permission| is ALLOW_SUBDOMAIN, we check
|
||||
+// against host "*.<domain_in_lower_case>.<TLD>" instead. Will return the TLD
|
||||
+// string in |tld|, if specified and the |host| can be parsed.
|
||||
+static bool is_first_party(const char *l_host, int len, const char *l_url_host,
|
||||
+ int b_len) {
|
||||
+ size_t tld_length;
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+ char *found_tld;
|
||||
+
|
||||
+ if (TLD_SUCCESS != tld_get_z(l_host, &found_tld))
|
||||
+ return false;
|
||||
+ tld_length = strlen(found_tld);
|
||||
+ if (tld_length == 0)
|
||||
+ return false;
|
||||
+#else
|
||||
+ tld_length = net::registry_controlled_domains::GetCanonicalHostRegistryLength(
|
||||
+ l_host, net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
|
||||
+ net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
|
||||
+ if ((tld_length == 0) || (tld_length == std::string::npos))
|
||||
+ return false;
|
||||
+#endif
|
||||
+
|
||||
+ const char *tld = l_host + len - tld_length;
|
||||
+
|
||||
+ // Removes any subdomain from origin host.
|
||||
+ int i = len - tld_length - 2, top_i = i;
|
||||
+ if (i < 0) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ const char *domain = l_host;
|
||||
+ for (; i >= 0; i--) {
|
||||
+ if (l_host[i] == '.') {
|
||||
+ int p_len = top_i - i;
|
||||
+ // skip "co" in "co.uk", "org" in "org.uk"
|
||||
+ if (p_len <= 3) {
|
||||
+ tld -= p_len + 1;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // segment is long enough, accept it at as a domain
|
||||
+ domain = l_host + i;
|
||||
+ len -= i;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
|
||||
+ "%s: extracted domain suffix: \"%s\" (TLD=\"%s\")",
|
||||
+ l_host, domain, tld);
|
||||
+#endif
|
||||
+
|
||||
+ // Check if supplied URL host matches, including the dot.
|
||||
+ if (b_len < len) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (int i = 0; i < len; i++) {
|
||||
+ if (l_url_host[b_len - 1 - i] != domain[len - 1 - i])
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ // pass with flying colors
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+static char *strtolower(const char *str, int len, bool &should_free) {
|
||||
+ char *ret = NULL;
|
||||
+ for (int i = 0; i < len; i++) {
|
||||
+ if ((65 <= str[i]) && (str[i] <= 90)) {
|
||||
+ // first time a difference is found, allocate buffer and copy previous
|
||||
+ // characters (if any)
|
||||
+ if (ret == NULL) {
|
||||
+ ret = (char *)malloc(len + 1);
|
||||
+ if (i != 0)
|
||||
+ memcpy(ret, str, i);
|
||||
+ }
|
||||
+ // convert character to lower case
|
||||
+ ret[i] = str[i] + 32;
|
||||
+ } else {
|
||||
+ if (ret != NULL)
|
||||
+ ret[i] = str[i];
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (ret != NULL) {
|
||||
+ ret[len] = '\0';
|
||||
+ should_free = true;
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ // return source, unchanged
|
||||
+ return (char *)str;
|
||||
+}
|
||||
+
|
||||
+static char *strtosep(const char *str, int len) {
|
||||
+ char *ret = (char *)malloc(len + 3);
|
||||
+ ret[0] = '^';
|
||||
+ for (int i = 0; i < len; i++) {
|
||||
+ if ((str[i] == ':') || (str[i] == '/') || (str[i] == '?') ||
|
||||
+ (str[i] == '&') || (str[i] == '=')) {
|
||||
+ ret[i + 1] = '^';
|
||||
+ } else {
|
||||
+ ret[i + 1] = str[i];
|
||||
+ }
|
||||
+ }
|
||||
+ // the index 'len' character is set by the previous loop
|
||||
+ ret[len + 1] = '^';
|
||||
+ ret[len + 2] = '\0';
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static bool url_matches(const char *c_url, char *c_url_sep, char *c_url_lower,
|
||||
+ char *c_url_lower_sep, adblock_entry *entry) {
|
||||
+ bool match = false;
|
||||
+ // select comparison string based on case and separator presence (separator
|
||||
+ // takes some shortcuts)
|
||||
+ bool match_case = ((entry->flags & ADBLOCK_FLAG_MATCH_CASE) != 0);
|
||||
+ bool match_separator = ((entry->flags & ADBLOCK_FLAG_HAS_SEPARATOR) != 0);
|
||||
+ const char *match_url =
|
||||
+ match_case ? (match_separator ? c_url_sep : c_url)
|
||||
+ : (match_separator ? c_url_lower_sep : c_url_lower);
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG_MORE
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[case:%d][sep:%d][%s]",
|
||||
+ match_case, match_separator, match_url);
|
||||
+#endif
|
||||
+ // check for all match parts at >= position of last match
|
||||
+ const char *last = match_url;
|
||||
+ for (int m = 0; const char *url_match = entry->matches[m]; m++) {
|
||||
+ bool is_last_match = entry->matches[m + 1] == NULL;
|
||||
+ const char *pos = strstr(last, url_match);
|
||||
+ match = (pos != NULL);
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG_MORE
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[%s][found:%d][match:%d]",
|
||||
+ entry->matches[m], pos == NULL ? 0 : 1, match ? 1 : 0);
|
||||
+#endif
|
||||
+ // check if the url starts with the first match part
|
||||
+ if (match && (m == 0) && ((entry->flags & ADBLOCK_FLAG_MATCH_BEGIN) != 0) &&
|
||||
+ (pos != match_url))
|
||||
+ match = false;
|
||||
+
|
||||
+ // check if the url ends with the last match part
|
||||
+ if (match && is_last_match &&
|
||||
+ ((entry->flags & ADBLOCK_FLAG_MATCH_END) != 0) &&
|
||||
+ (pos != &match_url[strlen(match_url) - strlen(entry->matches[m])]))
|
||||
+ match = false;
|
||||
+
|
||||
+ // check domain match
|
||||
+ if (match && (m == 0) &&
|
||||
+ ((entry->flags & ADBLOCK_FLAG_MATCH_DOMAIN) != 0) &&
|
||||
+ (pos != match_url) && (pos[-1] != '^') && (pos[-1] != '.') &&
|
||||
+ (pos[-1] != '/'))
|
||||
+ match = false;
|
||||
+
|
||||
+ // short circuit
|
||||
+ if (!match)
|
||||
+ break;
|
||||
+ }
|
||||
+ return match;
|
||||
+}
|
||||
+
|
||||
+bool url_match_domain(adblock_entry *entry, const std::string &origin_host) {
|
||||
+ bool match_domain = true;
|
||||
+ // check for a negative domain match
|
||||
+ if (entry->domains_skip) {
|
||||
+ if (origin_host.empty()) {
|
||||
+ // skip this rule, cannot match on domain
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (int d = 0; const char *domain = entry->domains_skip[d]; d++) {
|
||||
+ if (domain == origin_host) {
|
||||
+ match_domain = false;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // check for a required positive domain match
|
||||
+ if (entry->domains) {
|
||||
+ if (origin_host.empty()) {
|
||||
+ // skip this rule, cannot match on domain
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (int d = 0; const char *domain = entry->domains[d]; d++) {
|
||||
+ if (domain != origin_host) {
|
||||
+ match_domain = false;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return match_domain;
|
||||
+}
|
||||
+
|
||||
+static bool url_match_party(adblock_entry *entry, const char *l_origin_host,
|
||||
+ int origin_host_len, const char *l_url_host,
|
||||
+ int url_host_len, bool &checked_fp, bool &fp) {
|
||||
+ bool wanted_fp;
|
||||
+ if ((entry->flags & ADBLOCK_FLAG_THIRD_PARTY) != 0) {
|
||||
+ wanted_fp = false;
|
||||
+ } else if ((entry->flags & ADBLOCK_FLAG_FIRST_PARTY) != 0) {
|
||||
+ wanted_fp = true;
|
||||
+ } else {
|
||||
+ // no-op
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ if (origin_host_len == 0) {
|
||||
+ // cannot match this rule, no origin host to determine first/third party
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ if (!checked_fp) {
|
||||
+ // is the URL a first-party to the current page's host?
|
||||
+ fp = is_first_party(l_origin_host, origin_host_len, l_url_host,
|
||||
+ url_host_len);
|
||||
+
|
||||
+ checked_fp = true;
|
||||
+#ifdef ADB_TESTER
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
|
||||
+ "is_first_party(\"%s\", \"%s\") = %s", l_origin_host,
|
||||
+ l_url_host, fp ? "true" : "false");
|
||||
+#endif
|
||||
+ }
|
||||
+
|
||||
+ return fp == wanted_fp;
|
||||
+}
|
||||
+
|
||||
+static bool resource_type_match(adblock_entry *entry,
|
||||
+ content::ResourceType resource_type) {
|
||||
+ bool exclude;
|
||||
+ if ((entry->flags & ADBLOCK_FLAG_RESOURCE_TYPE_IN) != 0) {
|
||||
+ exclude = false;
|
||||
+ } else if ((entry->flags & ADBLOCK_FLAG_RESOURCE_TYPE_NOT_IN) != 0) {
|
||||
+ exclude = true;
|
||||
+ } else {
|
||||
+ // no resource type matching
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ // use a bitwise trick to test for the current resource type
|
||||
+ bool found = (entry->flags & (resource_type << 16));
|
||||
+ if (!exclude)
|
||||
+ return found;
|
||||
+ return !found;
|
||||
+}
|
||||
+
|
||||
+int adblock_intercept(const GURL &url, const std::string &origin_host,
|
||||
+ content::ResourceType resource_type) {
|
||||
+ // these are verified on caller when not testing
|
||||
+#ifdef ADB_TESTER
|
||||
+ if (!url.is_valid() || !url.SchemeIsHTTPOrHTTPS()) {
|
||||
+ return 0;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
+ bool free1 = false, free2 = false, free3 = false, free4 = false;
|
||||
+ int url_len = url.spec().size();
|
||||
+ const char *c_url = url.spec().c_str();
|
||||
+ char *c_url_lower = strtolower(c_url, url_len, free1);
|
||||
+ char *c_url_sep = strtosep(c_url, url_len);
|
||||
+ char *c_url_lower_sep = strtolower(c_url_sep, url_len + 2, free4);
|
||||
+
|
||||
+ // might be empty in case of no host
|
||||
+ const char *origin_host_cstr = origin_host.c_str();
|
||||
+ int origin_host_len = origin_host.size(), url_host_len = url.host().size();
|
||||
+
|
||||
+ // lower-case version of origin and url hosts
|
||||
+ const char *c_origin_host_lower =
|
||||
+ strtolower(origin_host_cstr, origin_host_len, free2),
|
||||
+ *c_url_host_lower =
|
||||
+ strtolower(url.host().c_str(), url_host_len, free3);
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[%s with host '%s'] [%s]",
|
||||
+ c_url, url.host().c_str(), origin_host_cstr);
|
||||
+#endif
|
||||
+
|
||||
+ bool checked_fp = false, fp = false;
|
||||
+
|
||||
+ bool intercept = false;
|
||||
+ for (int i = 0; i < ADBLOCK_ENTRY_COUNT; i++) {
|
||||
+ adblock_entry *entry = &ADBLOCK_ENTRIES[i];
|
||||
+
|
||||
+ // no use checking rules when we're intercepting, or exceptions when not
|
||||
+ bool check =
|
||||
+ (!intercept && ((entry->flags & ADBLOCK_FLAG_EXCEPTION) == 0)) ||
|
||||
+ (intercept && ((entry->flags & ADBLOCK_FLAG_EXCEPTION) != 0));
|
||||
+ if (!check)
|
||||
+ continue;
|
||||
+
|
||||
+ // check for resource type
|
||||
+ if (!resource_type_match(entry, resource_type))
|
||||
+ continue;
|
||||
+
|
||||
+ // check for domain matches, a quick branch out if not matching
|
||||
+ if (!url_match_domain(entry, origin_host))
|
||||
+ continue;
|
||||
+
|
||||
+ // check on the URL matcher
|
||||
+ if (!url_matches(c_url, c_url_sep, c_url_lower, c_url_lower_sep, entry))
|
||||
+ continue;
|
||||
+
|
||||
+ // finally check first/third-party
|
||||
+ if (!url_match_party(entry, c_origin_host_lower, origin_host_len,
|
||||
+ c_url_host_lower, url_host_len, checked_fp, fp))
|
||||
+ continue;
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ if (!intercept) {
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
|
||||
+ "--> intercept (#%d: \"%s\") (%x)", i,
|
||||
+ entry->matches[0], entry->flags);
|
||||
+ } else {
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "--> pass (%d) (#%d)", i,
|
||||
+ entry->flags);
|
||||
+ }
|
||||
+#endif
|
||||
+ intercept = !intercept;
|
||||
+ } // for each entry
|
||||
+
|
||||
+ if (free3)
|
||||
+ free((void *)c_url_host_lower);
|
||||
+ if (free2)
|
||||
+ free((void *)c_origin_host_lower);
|
||||
+ free(c_url_sep);
|
||||
+ if (free1)
|
||||
+ free(c_url_lower);
|
||||
+ if (free4)
|
||||
+ free(c_url_lower_sep);
|
||||
+
|
||||
+ if (intercept) {
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "blocked");
|
||||
+#endif
|
||||
+ return 1;
|
||||
+ }
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "pass");
|
||||
+#endif
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+} // namespace net
|
||||
diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_intercept.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/adblock_intercept.h
|
||||
@@ -0,0 +1,35 @@
|
||||
+/*
|
||||
+ 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/>.
|
||||
+*/
|
||||
+
|
||||
+#ifndef NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
+#define NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
+
|
||||
+#include "content/public/common/resource_type.h"
|
||||
+#include "url/gurl.h"
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+int adblock_rules_count();
|
||||
+#endif
|
||||
+
|
||||
+int adblock_intercept(const GURL &url, const std::string &origin_host,
|
||||
+ content::ResourceType resource_type);
|
||||
+
|
||||
+} // namespace net
|
||||
+
|
||||
+#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1,293 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 24 Mar 2018 05:18:03 +0100
|
||||
Subject: Canvas: fingerprinting mitigations for image data and webGL
|
||||
|
||||
Disable webGL renderer info and modify the color data returned by ToBlob,
|
||||
ToDataURL and getImageData so that it will contain randomly manipulated
|
||||
pixels (maximum 20) that slightly change the color of the R,G,B components
|
||||
without a visible effect.
|
||||
|
||||
Credits to Slaviro (https://github.com/Slaviro) for coming up with a better
|
||||
approach to change color components.
|
||||
---
|
||||
.../canvas/canvas2d/canvas_rendering_context_2d.cc | 4 +-
|
||||
.../modules/webgl/webgl_debug_renderer_info.cc | 4 +-
|
||||
third_party/blink/renderer/platform/BUILD.gn | 4 +-
|
||||
.../platform/graphics/image_data_buffer.cc | 5 +
|
||||
.../platform/graphics/static_bitmap_image.cc | 156 +++++++++++++++++++++
|
||||
.../platform/graphics/static_bitmap_image.h | 2 +
|
||||
6 files changed, 169 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
@@ -33,8 +33,6 @@
|
||||
|
||||
#include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h"
|
||||
|
||||
-#include "base/rand_util.h"
|
||||
-
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/platform/platform.h"
|
||||
#include "third_party/blink/public/platform/task_type.h"
|
||||
@@ -799,7 +797,7 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
|
||||
GetState().GetTextAlign(), text);
|
||||
|
||||
// scale text metrics by 3/1000000th
|
||||
- auto shuffleFactor = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleFactor = 1 + (canvas()->GetDocument().GetShuffleFactorX() - 0.5) * 0.000003;
|
||||
textMetrics->Shuffle(shuffleFactor);
|
||||
|
||||
return textMetrics;
|
||||
diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
--- a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
+++ b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
@@ -37,11 +37,11 @@ WebGLExtensionName WebGLDebugRendererInfo::GetName() const {
|
||||
|
||||
WebGLDebugRendererInfo* WebGLDebugRendererInfo::Create(
|
||||
WebGLRenderingContextBase* context) {
|
||||
- return MakeGarbageCollected<WebGLDebugRendererInfo>(context);
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
bool WebGLDebugRendererInfo::Supported(WebGLRenderingContextBase*) {
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
const char* WebGLDebugRendererInfo::ExtensionName() {
|
||||
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
|
||||
@@ -1423,7 +1423,9 @@ jumbo_component("platform") {
|
||||
"//third_party/blink/renderer:non_test_config",
|
||||
]
|
||||
|
||||
- include_dirs = []
|
||||
+ include_dirs = [
|
||||
+ "//third_party/skia/include/private", # For shuffler in graphics/static_bitmap_image.cc
|
||||
+ ]
|
||||
|
||||
public_deps = [
|
||||
":blink_platform_public_deps",
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
--- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
+++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
@@ -35,6 +35,8 @@
|
||||
#include <memory>
|
||||
|
||||
#include "base/memory/ptr_util.h"
|
||||
+#include "base/rand_util.h"
|
||||
+#include "base/logging.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
|
||||
#include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
|
||||
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||
@@ -127,6 +129,9 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
|
||||
const SkPixmap& pixmap) const {
|
||||
DCHECK(is_valid_);
|
||||
|
||||
+ // shuffle subchannel color data within the pixmap
|
||||
+ StaticBitmapImage::ShuffleSubchannelColorData(pixmap_.writable_addr(), pixmap_.info(), 0, 0);
|
||||
+
|
||||
if (mime_type == kMimeTypeJpeg) {
|
||||
SkJpegEncoder::Options options;
|
||||
options.fQuality = ImageEncoder::ComputeJpegQuality(quality);
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+#include "base/logging.h"
|
||||
#include "base/numerics/checked_math.h"
|
||||
#include "gpu/command_buffer/client/gles2_interface.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
|
||||
@@ -15,6 +17,7 @@
|
||||
#include "third_party/skia/include/core/SkCanvas.h"
|
||||
#include "third_party/skia/include/core/SkImage.h"
|
||||
#include "third_party/skia/include/core/SkPaint.h"
|
||||
+#include "third_party/skia/include/private/SkColorData.h"
|
||||
#include "third_party/skia/include/core/SkSurface.h"
|
||||
#include "third_party/skia/include/gpu/GrContext.h"
|
||||
|
||||
@@ -151,10 +154,163 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
|
||||
DCHECK(read_pixels_successful ||
|
||||
!sk_image->bounds().intersect(SkIRect::MakeXYWH(
|
||||
rect.X(), rect.Y(), info.width(), info.height())));
|
||||
+
|
||||
+ ShuffleSubchannelColorData(result.Data(), info, rect.X(), rect.Y());
|
||||
+
|
||||
result.Transfer(dest_contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
+// set the component to maximum-delta if it is >= maximum, or add to existing color component (color + delta)
|
||||
+#define shuffleComponent(color, max, delta) ( (color) >= (max) ? ((max)-(delta)) : ((color)+(delta)) )
|
||||
+
|
||||
+#define writable_addr(T, p, stride, x, y) (T*)((const char *)p + y * stride + x * sizeof(T))
|
||||
+
|
||||
+void StaticBitmapImage::ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY) {
|
||||
+ auto w = info.width() - srcX, h = info.height() - srcY;
|
||||
+
|
||||
+ // skip tiny images; info.width()/height() can also be 0
|
||||
+ if ((w < 8) || (h < 8)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // generate the first random number here
|
||||
+ double shuffleX = base::RandDouble();
|
||||
+
|
||||
+ // cap maximum pixels to change
|
||||
+ auto pixels = (w + h) / 128;
|
||||
+ if (pixels > 20) {
|
||||
+ pixels = 20;
|
||||
+ } else if (pixels < 2) {
|
||||
+ pixels = 2;
|
||||
+ }
|
||||
+
|
||||
+ auto colorType = info.colorType();
|
||||
+ auto fRowBytes = info.minRowBytes(); // stride
|
||||
+
|
||||
+ DLOG(INFO) << "BRM: ShuffleSubchannelColorData() w=" << w << " h=" << h << " colorType=" << colorType << " fRowBytes=" << fRowBytes;
|
||||
+
|
||||
+ // second random number (for y/height)
|
||||
+ double shuffleY = base::RandDouble();
|
||||
+
|
||||
+ // calculate random coordinates using bisection
|
||||
+ auto currentW = w, currentH = h;
|
||||
+ for(;pixels >= 0; pixels--) {
|
||||
+ int x = currentW * shuffleX, y = currentH * shuffleY;
|
||||
+
|
||||
+ // calculate randomisation amounts for each RGB component
|
||||
+ uint8_t shuffleR = base::RandInt(0, 4);
|
||||
+ uint8_t shuffleG = (shuffleR + x) % 4;
|
||||
+ uint8_t shuffleB = (shuffleG + y) % 4;
|
||||
+
|
||||
+ // manipulate pixel data to slightly change the R, G, B components
|
||||
+ switch (colorType) {
|
||||
+ case kAlpha_8_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint8_t, addr, fRowBytes, x, y);
|
||||
+ auto r = SkColorGetR(*pixel), g = SkColorGetG(*pixel), b = SkColorGetB(*pixel), a = SkColorGetA(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = SkColorSetARGB(a, r, g, b);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kGray_8_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint8_t, addr, fRowBytes, x, y);
|
||||
+ *pixel = shuffleComponent(*pixel, UINT8_MAX-1, shuffleB);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kRGB_565_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint16_t, addr, fRowBytes, x, y);
|
||||
+ unsigned r = SkPacked16ToR32(*pixel);
|
||||
+ unsigned g = SkPacked16ToG32(*pixel);
|
||||
+ unsigned b = SkPacked16ToB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, 31, shuffleR);
|
||||
+ g = shuffleComponent(g, 63, shuffleG);
|
||||
+ b = shuffleComponent(b, 31, shuffleB);
|
||||
+
|
||||
+ unsigned r16 = (r & SK_R16_MASK) << SK_R16_SHIFT;
|
||||
+ unsigned g16 = (g & SK_G16_MASK) << SK_G16_SHIFT;
|
||||
+ unsigned b16 = (b & SK_B16_MASK) << SK_B16_SHIFT;
|
||||
+
|
||||
+ *pixel = r16 | g16 | b16;
|
||||
+ }
|
||||
+ break;
|
||||
+ case kARGB_4444_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint16_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA4444(*pixel), r = SkGetPackedR4444(*pixel), g = SkGetPackedG4444(*pixel), b = SkGetPackedB4444(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, 15, shuffleR);
|
||||
+ g = shuffleComponent(g, 15, shuffleG);
|
||||
+ b = shuffleComponent(b, 15, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ unsigned a4 = (a & 0xF) << SK_A4444_SHIFT;
|
||||
+ unsigned r4 = (r & 0xF) << SK_R4444_SHIFT;
|
||||
+ unsigned g4 = (g & 0xF) << SK_G4444_SHIFT;
|
||||
+ unsigned b4 = (b & 0xF) << SK_B4444_SHIFT;
|
||||
+
|
||||
+ *pixel = r4 | b4 | g4 | a4;
|
||||
+ }
|
||||
+ break;
|
||||
+ case kRGBA_8888_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint32_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA32(*pixel), r = SkGetPackedR32(*pixel), g = SkGetPackedG32(*pixel), b = SkGetPackedB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = (a << SK_A32_SHIFT) | (r << SK_R32_SHIFT) |
|
||||
+ (g << SK_G32_SHIFT) | (b << SK_B32_SHIFT);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kBGRA_8888_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint32_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA32(*pixel), b = SkGetPackedR32(*pixel), g = SkGetPackedG32(*pixel), r = SkGetPackedB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = (a << SK_BGRA_A32_SHIFT) | (r << SK_BGRA_R32_SHIFT) |
|
||||
+ (g << SK_BGRA_G32_SHIFT) | (b << SK_BGRA_B32_SHIFT);
|
||||
+ }
|
||||
+ break;
|
||||
+ default:
|
||||
+ // the remaining formats are not expected to be used in Chromium
|
||||
+ LOG(WARNING) << "BRM: ShuffleSubchannelColorData(): Ignoring pixel format";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // keep bisecting or reset current width/height as needed
|
||||
+ if (x == 0) {
|
||||
+ currentW = w;
|
||||
+ } else {
|
||||
+ currentW = x;
|
||||
+ }
|
||||
+ if (y == 0) {
|
||||
+ currentH = h;
|
||||
+ } else {
|
||||
+ currentH = y;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#undef writable_addr
|
||||
+#undef shuffleComponent
|
||||
+
|
||||
const gpu::SyncToken& StaticBitmapImage::GetSyncToken() const {
|
||||
static const gpu::SyncToken sync_token;
|
||||
return sync_token;
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
@@ -46,6 +46,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
|
||||
static scoped_refptr<StaticBitmapImage> Create(WTF::ArrayBufferContents&,
|
||||
const SkImageInfo&);
|
||||
|
||||
+ static void ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY);
|
||||
+
|
||||
bool IsStaticBitmapImage() const override { return true; }
|
||||
|
||||
// Methods overridden by all sub-classes
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 27 Oct 2019 10:21:19 +0100
|
||||
Subject: Disable HEAD requests for single-word Omnibar searches
|
||||
|
||||
Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment-526873727
|
||||
---
|
||||
.../ui/omnibox/chrome_omnibox_navigation_observer.cc | 8 ++++----
|
||||
.../ui/omnibox/chrome_omnibox_navigation_observer.h | 2 +-
|
||||
2 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
|
||||
--- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
|
||||
+++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
|
||||
@@ -86,8 +86,8 @@ ChromeOmniboxNavigationObserver::ChromeOmniboxNavigationObserver(
|
||||
shortcuts_backend_(ShortcutsBackendFactory::GetForProfile(profile)),
|
||||
load_state_(LOAD_NOT_SEEN),
|
||||
fetch_state_(FETCH_NOT_COMPLETE) {
|
||||
- if (alternate_nav_match_.destination_url.is_valid())
|
||||
- CreateLoader(alternate_nav_match_.destination_url);
|
||||
+// if (alternate_nav_match_.destination_url.is_valid())
|
||||
+// CreateLoader(alternate_nav_match_.destination_url);
|
||||
|
||||
// We need to start by listening to AllSources, since we don't know which tab
|
||||
// the navigation might occur in.
|
||||
@@ -287,7 +287,7 @@ void ChromeOmniboxNavigationObserver::OnAllLoadingFinished() {
|
||||
delete this;
|
||||
}
|
||||
|
||||
-void ChromeOmniboxNavigationObserver::CreateLoader(
|
||||
+/*void ChromeOmniboxNavigationObserver::CreateLoader(
|
||||
const GURL& destination_url) {
|
||||
net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||
net::DefineNetworkTrafficAnnotation("omnibox_navigation_observer", R"(
|
||||
@@ -328,4 +328,4 @@ void ChromeOmniboxNavigationObserver::CreateLoader(
|
||||
loader_->SetAllowHttpErrorResults(true);
|
||||
loader_->SetOnRedirectCallback(base::BindRepeating(
|
||||
&ChromeOmniboxNavigationObserver::OnURLRedirect, base::Unretained(this)));
|
||||
-}
|
||||
+}*/
|
||||
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
|
||||
--- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
|
||||
+++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
|
||||
@@ -127,7 +127,7 @@ class ChromeOmniboxNavigationObserver : public OmniboxNavigationObserver,
|
||||
|
||||
// Creates a URL loader for |destination_url| and stores it in |loader_|.
|
||||
// Does not start the loader.
|
||||
- void CreateLoader(const GURL& destination_url);
|
||||
+ //void CreateLoader(const GURL& destination_url);
|
||||
|
||||
const base::string16 text_;
|
||||
const AutocompleteMatch match_;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -3,29 +3,45 @@ Date: Thu, 12 Oct 2017 08:15:17 +0200
|
||||
Subject: Disable NTP remote suggestions by default
|
||||
|
||||
---
|
||||
components/ntp_snippets/features.cc | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
components/ntp_snippets/features.cc | 4 ++--
|
||||
.../remote/remote_suggestions_status_service_impl.cc | 4 ++--
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
|
||||
--- a/components/ntp_snippets/features.cc
|
||||
+++ b/components/ntp_snippets/features.cc
|
||||
@@ -34,13 +34,13 @@ const base::Feature* const kAllFeatures[] = {
|
||||
&kRemoteSuggestionsBackendFeature};
|
||||
@@ -39,7 +39,7 @@ const base::Feature* const kAllFeatures[] = {
|
||||
&kOptionalImagesEnabledFeature};
|
||||
|
||||
const base::Feature kArticleSuggestionsFeature{
|
||||
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "NTPArticleSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kBookmarkSuggestionsFeature{
|
||||
- "NTPBookmarkSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "NTPBookmarkSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
const base::Feature kRemoteSuggestionsEmulateM58FetchingSchedule{
|
||||
"RemoteSuggestionsEmulateM58FetchingSchedule",
|
||||
@@ -69,7 +69,7 @@ const char kNotificationsDailyLimit[] = "daily_limit";
|
||||
const char kNotificationsIgnoredLimitParam[] = "ignored_limit";
|
||||
|
||||
const base::Feature kIncreasedVisibility{"NTPSnippetsIncreasedVisibility",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
const base::Feature kKeepPrefetchedContentSuggestions{
|
||||
- "KeepPrefetchedContentSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "KeepPrefetchedContentSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kBreakingNewsPushFeature{"BreakingNewsPush",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
const base::Feature kOptionalImagesEnabledFeature{
|
||||
"NTPRemoteSuggestionsOptionalImages", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
diff --git a/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc b/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc
|
||||
--- a/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc
|
||||
+++ b/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc
|
||||
@@ -36,8 +36,8 @@ RemoteSuggestionsStatusServiceImpl::~RemoteSuggestionsStatusServiceImpl() =
|
||||
// static
|
||||
void RemoteSuggestionsStatusServiceImpl::RegisterProfilePrefs(
|
||||
PrefRegistrySimple* registry) {
|
||||
- registry->RegisterBooleanPref(prefs::kEnableSnippets, true);
|
||||
- registry->RegisterBooleanPref(prefs::kArticlesListVisible, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kEnableSnippets, false);
|
||||
+ registry->RegisterBooleanPref(prefs::kArticlesListVisible, false);
|
||||
}
|
||||
|
||||
void RemoteSuggestionsStatusServiceImpl::Init(
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -4,15 +4,15 @@ Subject: Disable Omaha update checks
|
||||
|
||||
Do not consider Jelly Bean unsupported
|
||||
---
|
||||
.../android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java | 2 +-
|
||||
.../java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java | 2 +-
|
||||
chrome/browser/android/chrome_feature_list.cc | 2 +-
|
||||
.../java/src/org/chromium/chrome/browser/omaha/OmahaBase.java | 2 +-
|
||||
.../org/chromium/chrome/browser/omaha/VersionNumberGetter.java | 2 +-
|
||||
chrome/browser/android/chrome_feature_list.cc | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||
@@ -134,7 +134,7 @@ public class OmahaBase {
|
||||
@@ -136,7 +136,7 @@ public class OmahaBase {
|
||||
|
||||
/** See {@link #sIsDisabled}. */
|
||||
static boolean isDisabled() {
|
||||
@@ -36,15 +36,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNu
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -400,7 +400,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
|
||||
@@ -458,7 +458,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kJellyBeanSupported{"JellyBeanSupported",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kLanguagesPreference{"LanguagesPreference",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
const base::Feature kSearchEnginePromoExistingDevice{
|
||||
"SearchEnginePromo.ExistingDevice", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: Disable WebRTC by default
|
||||
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
|
||||
@@ -85,10 +85,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -83,10 +83,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
false);
|
||||
#endif
|
||||
// TODO(guoweis): Remove next 2 options at M50.
|
||||
@@ -18,11 +18,11 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
|
||||
+ registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, false);
|
||||
+ registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, false);
|
||||
registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy,
|
||||
- content::kWebRTCIPHandlingDefault);
|
||||
+ content::kWebRTCIPHandlingDisableNonProxiedUdp);
|
||||
- blink::kWebRTCIPHandlingDefault);
|
||||
+ blink::kWebRTCIPHandlingDisableNonProxiedUdp);
|
||||
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
|
||||
registry->RegisterBooleanPref(prefs::kWebRtcEventLogCollectionAllowed, false);
|
||||
|
||||
registry->RegisterListPref(prefs::kWebRtcLocalIpsAllowedUrls);
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 19 Dec 2019 21:46:10 +0100
|
||||
Subject: Disable addresses autofill by default
|
||||
|
||||
---
|
||||
.../autofill_assistant/AutofillAssistantPreferencesUtil.java | 2 +-
|
||||
.../autofill_assistant/AutofillAssistantPreferences.java | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
|
||||
--- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
|
||||
+++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
|
||||
@@ -25,7 +25,7 @@ class AutofillAssistantPreferencesUtil {
|
||||
/** Checks whether the Autofill Assistant switch preference in settings is on. */
|
||||
static boolean isAutofillAssistantSwitchOn() {
|
||||
return ContextUtils.getAppSharedPreferences().getBoolean(
|
||||
- AutofillAssistantPreferences.PREF_AUTOFILL_ASSISTANT_SWITCH, true);
|
||||
+ AutofillAssistantPreferences.PREF_AUTOFILL_ASSISTANT_SWITCH, false);
|
||||
}
|
||||
|
||||
/** Checks whether the Autofill Assistant onboarding has been accepted. */
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/autofill_assistant/AutofillAssistantPreferences.java
|
||||
@@ -48,7 +48,7 @@ public class AutofillAssistantPreferences extends PreferenceFragmentCompat {
|
||||
// (e.g. the switch will say "On" when it is really turned off), so .setChecked() should be
|
||||
// called after .addPreference()
|
||||
autofillAssistantSwitch.setChecked(ContextUtils.getAppSharedPreferences().getBoolean(
|
||||
- PREF_AUTOFILL_ASSISTANT_SWITCH, true));
|
||||
+ PREF_AUTOFILL_ASSISTANT_SWITCH, false));
|
||||
}
|
||||
|
||||
private Context getStyledContext() {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
+17
-17
@@ -1,17 +1,17 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 12 Jun 2018 15:09:26 +0200
|
||||
Subject: Disable signin/data reduction promos
|
||||
Subject: Disable all promo dialogs
|
||||
|
||||
---
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 28 ++--------------------
|
||||
1 file changed, 2 insertions(+), 26 deletions(-)
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 30 +------------------
|
||||
1 file changed, 1 insertion(+), 29 deletions(-)
|
||||
|
||||
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
|
||||
@@ -695,34 +695,10 @@ public class ChromeTabbedActivity
|
||||
}
|
||||
|
||||
@@ -801,35 +801,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
|
||||
try (TraceEvent e = TraceEvent.scoped(
|
||||
"ChromeTabbedActivity.createToolbarButtonInProductHelpController")) {
|
||||
ChromePreferenceManager preferenceManager = ChromePreferenceManager.getInstance();
|
||||
- // Promos can only be shown when we start with ACTION_MAIN intent and
|
||||
- // after FRE is complete. Native initialization can finish before the FRE flow is
|
||||
@@ -23,29 +23,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
- // might not have completed at this point and we could show multiple
|
||||
- // promos.
|
||||
- boolean isShowingPromo = mLocaleManager.hasShownSearchEnginePromoThisSession();
|
||||
- // Promo dialogs in multiwindow mode are broken on some devices: http://crbug.com/354696
|
||||
- // Promo dialogs in multiwindow mode are broken on some devices:
|
||||
- // http://crbug.com/354696
|
||||
- boolean isLegacyMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(this);
|
||||
- if (!isShowingPromo && !mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete()
|
||||
- && preferenceManager.readBoolean(
|
||||
- ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, false)
|
||||
- ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, false)
|
||||
- && !VrModuleProvider.getDelegate().isInVr()
|
||||
- // VrModuleProvider.getDelegate().isInVr may not return true at this point even
|
||||
- // though Chrome is about to enter VR, so we need to also check whether we're
|
||||
- // launching into VR.
|
||||
- // VrModuleProvider.getDelegate().isInVr may not return true at this point
|
||||
- // even though Chrome is about to enter VR, so we need to also check whether
|
||||
- // we're launching into VR.
|
||||
- && !VrModuleProvider.getIntentDelegate().isLaunchingIntoVr(this, getIntent())
|
||||
- && !isLegacyMultiWindow) {
|
||||
- isShowingPromo = maybeShowPromo();
|
||||
- } else {
|
||||
- preferenceManager.writeBoolean(
|
||||
+ preferenceManager.writeBoolean(
|
||||
ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, true);
|
||||
- ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, true);
|
||||
- }
|
||||
|
||||
-
|
||||
- ToolbarButtonInProductHelpController.create(this, isShowingPromo);
|
||||
+ ToolbarButtonInProductHelpController.create(this, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (ChromeFeatureList.isEnabled(ChromeFeatureList.INTEREST_FEED_CONTENT_SUGGESTIONS)) {
|
||||
// We call getFeedAppLifecycle() here to ensure the app lifecycle is created so that
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
@@ -2,14 +2,28 @@ From: Daniel Micay <danielmicay@gmail.com>
|
||||
Date: Wed, 23 Nov 2016 09:26:51 -0500
|
||||
Subject: Disable contextual search by default
|
||||
|
||||
Disable contextual search in preference by default
|
||||
---
|
||||
chrome/browser/profiles/profile.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
.../chromium/chrome/browser/preferences/PrefServiceBridge.java | 2 +-
|
||||
chrome/browser/profiles/profile.cc | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
@@ -449,7 +449,7 @@ public class PrefServiceBridge {
|
||||
* @return Whether the Contextual Search feature was disabled by the user explicitly.
|
||||
*/
|
||||
public boolean isContextualSearchDisabled() {
|
||||
- return getContextualSearchPreference().equals(CONTEXTUAL_SEARCH_DISABLED);
|
||||
+ return !getContextualSearchPreference().equals(CONTEXTUAL_SEARCH_ENABLED);
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
|
||||
--- a/chrome/browser/profiles/profile.cc
|
||||
+++ b/chrome/browser/profiles/profile.cc
|
||||
@@ -144,7 +144,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -154,7 +154,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
#if defined(OS_ANDROID)
|
||||
registry->RegisterStringPref(
|
||||
prefs::kContextualSearchEnabled,
|
||||
@@ -19,5 +33,5 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
|
||||
#endif // defined(OS_ANDROID)
|
||||
registry->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 27 Oct 2017 15:53:37 +0200
|
||||
Subject: Disable data saver
|
||||
|
||||
---
|
||||
.../java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 1 -
|
||||
.../chrome/browser/net/spdyproxy/DataReductionProxySettings.java | 2 ++
|
||||
.../browser/preferences/datareduction/DataReductionPromoUtils.java | 2 +-
|
||||
3 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||
@@ -141,7 +141,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
|
||||
boolean notifyAdapter = false;
|
||||
// An optional Data Saver page.
|
||||
if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) {
|
||||
- mPages.add(new DataReductionProxyFirstRunFragment.Page());
|
||||
mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN);
|
||||
notifyAdapter = true;
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||
@@ -126,6 +126,7 @@ public class DataReductionProxySettings {
|
||||
// DataReductionProxySettings is a singleton that lives forever and there's no clean
|
||||
// shutdown of Chrome on Android
|
||||
mNativeDataReductionProxySettings = nativeInit();
|
||||
+ nativeSetDataReductionProxyEnabled(mNativeDataReductionProxySettings, false);
|
||||
}
|
||||
|
||||
/** Returns true if the SPDY proxy promo is allowed to be shown. */
|
||||
@@ -148,6 +149,7 @@ public class DataReductionProxySettings {
|
||||
* data reduction statistics if this is the first time the SPDY proxy has been enabled.
|
||||
*/
|
||||
public void setDataReductionProxyEnabled(Context context, boolean enabled) {
|
||||
+ enabled = false;
|
||||
if (enabled
|
||||
&& ContextUtils.getAppSharedPreferences().getLong(
|
||||
DATA_REDUCTION_FIRST_ENABLED_TIME, 0)
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||
@@ -70,7 +70,7 @@ public class DataReductionPromoUtils {
|
||||
}
|
||||
if (DataReductionProxySettings.getInstance().isDataReductionProxyManaged()) return false;
|
||||
if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()) return false;
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,210 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 20 May 2019 23:14:36 +0200
|
||||
Subject: Disable dynamic module loading
|
||||
|
||||
---
|
||||
chrome/android/chrome_java_sources.gni | 13 --------
|
||||
.../browser/customtabs/CustomTabActivity.java | 18 -----------
|
||||
.../CustomTabIntentDataProvider.java | 17 ++---------
|
||||
.../customtabs/CustomTabsConnection.java | 30 -------------------
|
||||
.../CustomTabActivityComponent.java | 4 ---
|
||||
5 files changed, 2 insertions(+), 80 deletions(-)
|
||||
|
||||
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
|
||||
@@ -426,19 +426,6 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/customtabs/content/TabCreationMode.java",
|
||||
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java",
|
||||
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityModule.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegatePostMessageBackend.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityHostImpl.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleConstants.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleCoordinator.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModulePageLoadObserver.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleToolbarController.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleHostImpl.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleLoader.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleMetrics.java",
|
||||
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ObjectWrapper.java",
|
||||
"java/src/org/chromium/chrome/browser/customtabs/features/CustomTabNavigationBarController.java",
|
||||
"java/src/org/chromium/chrome/browser/customtabs/features/ImmersiveModeController.java",
|
||||
"java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabBrowserControlsVisibilityDelegate.java",
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
|
||||
@@ -51,7 +51,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.Int
|
||||
import org.chromium.chrome.browser.customtabs.content.TabCreationMode;
|
||||
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
|
||||
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
|
||||
-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
|
||||
import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController;
|
||||
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
|
||||
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
|
||||
@@ -94,9 +93,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
|
||||
|
||||
private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance();
|
||||
|
||||
- @Nullable
|
||||
- private DynamicModuleCoordinator mDynamicModuleCoordinator;
|
||||
-
|
||||
private CustomTabTaskDescriptionHelper mTaskDescriptionHelper;
|
||||
|
||||
private CustomTabNightModeStateController mNightModeStateController;
|
||||
@@ -233,12 +229,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
|
||||
public void finishNativeInitialization() {
|
||||
if (!mIntentDataProvider.isInfoPage()) FirstRunSignInProcessor.start(this);
|
||||
|
||||
- // Try to initialize dynamic module early to enqueue navigation events
|
||||
- // @see DynamicModuleNavigationEventObserver
|
||||
- if (mIntentDataProvider.isDynamicModuleEnabled()) {
|
||||
- mDynamicModuleCoordinator = getComponent().resolveDynamicModuleCoordinator();
|
||||
- }
|
||||
-
|
||||
mConnection.showSignInToastIfNecessary(mSession, getIntent());
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && useSeparateTask()) {
|
||||
@@ -280,10 +270,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
|
||||
WebContents webContents = tab == null ? null : tab.getWebContents();
|
||||
mConnection.resetPostMessageHandlerForSession(
|
||||
mIntentDataProvider.getSession(), webContents);
|
||||
-
|
||||
- if (mDynamicModuleCoordinator != null) {
|
||||
- mDynamicModuleCoordinator.resetPostMessageHandlersForCurrentSession(null);
|
||||
- }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -595,10 +581,6 @@ public class CustomTabActivity extends ChromeActivity<CustomTabActivityComponent
|
||||
if (mIntentDataProvider.isTrustedWebActivity()) {
|
||||
component.resolveTrustedWebActivityCoordinator();
|
||||
}
|
||||
- if (mConnection.shouldHideTopBarOnModuleManagedUrlsForSession(
|
||||
- mIntentDataProvider.getSession())) {
|
||||
- component.resolveDynamicModuleToolbarController();
|
||||
- }
|
||||
|
||||
return component;
|
||||
}
|
||||
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
|
||||
@@ -44,7 +44,6 @@ import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.ChromeVersionInfo;
|
||||
import org.chromium.chrome.browser.IntentHandler;
|
||||
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
|
||||
-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
|
||||
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
|
||||
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
import org.chromium.chrome.browser.ui.widget.TintedDrawable;
|
||||
@@ -459,20 +458,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
|
||||
// even receive the extras for using the feature.
|
||||
if (componentName == null) return false;
|
||||
|
||||
- if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE)) {
|
||||
- Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
|
||||
- ModuleMetrics.recordLoadResult(ModuleMetrics.LoadResult.FEATURE_DISABLED);
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- ExternalAuthUtils authUtils = ChromeApplication.getComponent().resolveExternalAuthUtils();
|
||||
- if (!authUtils.isGoogleSigned(componentName.getPackageName())) {
|
||||
- Log.w(TAG, "The %s package is not Google-signed.", componentName.getPackageName());
|
||||
- ModuleMetrics.recordLoadResult(ModuleMetrics.LoadResult.NOT_GOOGLE_SIGNED);
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- return true;
|
||||
+ Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
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
|
||||
@@ -58,8 +58,6 @@ import org.chromium.chrome.browser.browserservices.Origin;
|
||||
import org.chromium.chrome.browser.browserservices.PostMessageHandler;
|
||||
import org.chromium.chrome.browser.browserservices.SessionDataHolder;
|
||||
import org.chromium.chrome.browser.browserservices.SessionHandler;
|
||||
-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleLoader;
|
||||
-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
|
||||
import org.chromium.chrome.browser.device.DeviceClassManager;
|
||||
import org.chromium.chrome.browser.init.ChainedTasks;
|
||||
import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
|
||||
@@ -218,7 +216,6 @@ public class CustomTabsConnection {
|
||||
|
||||
private volatile ChainedTasks mWarmupTasks;
|
||||
|
||||
- private @Nullable ModuleLoader mModuleLoader;
|
||||
/**
|
||||
* <strong>DO NOT CALL</strong>
|
||||
* Public to be instanciable from {@link ChromeApplication}. This is however
|
||||
@@ -1382,7 +1379,6 @@ public class CustomTabsConnection {
|
||||
if (ChromeApplication.isSevereMemorySignal(level)) {
|
||||
getInstance().mClientManager.cleanupUnusedSessions();
|
||||
}
|
||||
- if (getInstance().mModuleLoader != null) getInstance().mModuleLoader.onTrimMemory(level);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -1519,32 +1515,6 @@ public class CustomTabsConnection {
|
||||
recordSpeculationStatusOnSwap(SPECULATION_STATUS_ON_SWAP_BACKGROUND_TAB_NOT_MATCHED);
|
||||
}
|
||||
|
||||
- public ModuleLoader getModuleLoader(ComponentName componentName, @Nullable String assetName) {
|
||||
- if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE_DEX_LOADING)) {
|
||||
- assetName = null;
|
||||
- }
|
||||
-
|
||||
- if (mModuleLoader != null) {
|
||||
- boolean isComponentNameChanged =
|
||||
- !componentName.equals(mModuleLoader.getComponentName());
|
||||
- boolean isAssetNameChanged =
|
||||
- !TextUtils.equals(assetName, mModuleLoader.getDexAssetName());
|
||||
- ModuleLoader.ModuleApkVersion newModuleApkVersion =
|
||||
- ModuleLoader.ModuleApkVersion.getModuleVersion(componentName.getPackageName());
|
||||
- boolean isModuleVersionChanged =
|
||||
- !mModuleLoader.getModuleApkVersion().equals(newModuleApkVersion);
|
||||
-
|
||||
- if (isComponentNameChanged || isAssetNameChanged || isModuleVersionChanged) {
|
||||
- mModuleLoader.destroyModule(ModuleMetrics.DestructionReason.MODULE_LOADER_CHANGED);
|
||||
- mModuleLoader = null;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (mModuleLoader == null) mModuleLoader = new ModuleLoader(componentName, assetName);
|
||||
-
|
||||
- return mModuleLoader;
|
||||
- }
|
||||
-
|
||||
@CalledByNative
|
||||
public static void notifyClientOfDetachedRequestCompletion(
|
||||
CustomTabsSessionToken session, String url, int status) {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
|
||||
@@ -18,8 +18,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabContro
|
||||
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
|
||||
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvider;
|
||||
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler;
|
||||
-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
|
||||
-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleToolbarController;
|
||||
import org.chromium.chrome.browser.customtabs.features.ImmersiveModeController;
|
||||
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarCoordinator;
|
||||
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
|
||||
@@ -36,8 +34,6 @@ import dagger.Subcomponent;
|
||||
@ActivityScope
|
||||
public interface CustomTabActivityComponent extends ChromeActivityComponent {
|
||||
TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
|
||||
- DynamicModuleToolbarController resolveDynamicModuleToolbarController();
|
||||
- DynamicModuleCoordinator resolveDynamicModuleCoordinator();
|
||||
|
||||
CustomTabBottomBarDelegate resolveBottomBarDelegate();
|
||||
CustomTabActivityTabController resolveTabController();
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -3,42 +3,45 @@ Date: Sun, 8 Jul 2018 18:16:34 +0200
|
||||
Subject: Disable fetching of all field trials
|
||||
|
||||
---
|
||||
.../src/org/chromium/chrome/browser/ChromeFeatureList.java | 12 +++---------
|
||||
components/variations/service/variations_service.cc | 12 +-----------
|
||||
2 files changed, 4 insertions(+), 20 deletions(-)
|
||||
.../chrome/browser/ChromeFeatureList.java | 15 +++------------
|
||||
.../variations/service/variations_service.cc | 12 +-----------
|
||||
2 files changed, 4 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
@@ -106,9 +106,7 @@ public abstract class ChromeFeatureList {
|
||||
@@ -107,10 +107,7 @@ public abstract class ChromeFeatureList {
|
||||
*/
|
||||
public static int getFieldTrialParamByFeatureAsInt(
|
||||
String featureName, String paramName, int defaultValue) {
|
||||
- if (sTestFeatures != null) return defaultValue;
|
||||
- assert isInitialized();
|
||||
- return nativeGetFieldTrialParamByFeatureAsInt(featureName, paramName, defaultValue);
|
||||
- return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsInt(
|
||||
- featureName, paramName, defaultValue);
|
||||
+ return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,9 +123,7 @@ public abstract class ChromeFeatureList {
|
||||
@@ -127,10 +124,7 @@ public abstract class ChromeFeatureList {
|
||||
*/
|
||||
public static double getFieldTrialParamByFeatureAsDouble(
|
||||
String featureName, String paramName, double defaultValue) {
|
||||
- if (sTestFeatures != null) return defaultValue;
|
||||
- assert isInitialized();
|
||||
- return nativeGetFieldTrialParamByFeatureAsDouble(featureName, paramName, defaultValue);
|
||||
- return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsDouble(
|
||||
- featureName, paramName, defaultValue);
|
||||
+ return defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,9 +140,7 @@ public abstract class ChromeFeatureList {
|
||||
@@ -147,10 +141,7 @@ public abstract class ChromeFeatureList {
|
||||
*/
|
||||
public static boolean getFieldTrialParamByFeatureAsBoolean(
|
||||
String featureName, String paramName, boolean defaultValue) {
|
||||
- if (sTestFeatures != null) return defaultValue;
|
||||
- assert isInitialized();
|
||||
- return nativeGetFieldTrialParamByFeatureAsBoolean(featureName, paramName, defaultValue);
|
||||
- return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsBoolean(
|
||||
- featureName, paramName, defaultValue);
|
||||
+ return defaultValue;
|
||||
}
|
||||
|
||||
@@ -46,11 +49,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
|
||||
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
|
||||
@@ -240,17 +240,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
|
||||
@@ -241,17 +241,7 @@ 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() {
|
||||
-#if !defined(GOOGLE_CHROME_BUILD)
|
||||
-#if !BUILDFLAG(GOOGLE_CHROME_BRANDING)
|
||||
- if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
- switches::kVariationsServerURL) &&
|
||||
- !g_should_fetch_for_testing) {
|
||||
@@ -66,5 +69,5 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
|
||||
|
||||
std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 22 Oct 2018 21:14:57 +0200
|
||||
Subject: Disable generic sensor API by default
|
||||
|
||||
---
|
||||
services/device/public/cpp/device_features.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/device/public/cpp/device_features.cc b/services/device/public/cpp/device_features.cc
|
||||
--- a/services/device/public/cpp/device_features.cc
|
||||
+++ b/services/device/public/cpp/device_features.cc
|
||||
@@ -9,7 +9,7 @@ namespace features {
|
||||
// Enables sensors based on Generic Sensor API:
|
||||
// https://w3c.github.io/sensors/
|
||||
const base::Feature kGenericSensor{"GenericSensor",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
// Enables an extra set of concrete sensors classes based on Generic Sensor API,
|
||||
// which expose previously unexposed platform features, e.g. ALS or Magnetometer
|
||||
const base::Feature kGenericSensorExtraClasses{
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
From: Daniel Micay <danielmicay@gmail.com>
|
||||
Date: Thu, 4 Jul 2019 19:08:52 -0400
|
||||
Subject: Disable media router and remoting by default
|
||||
|
||||
---
|
||||
.../media/router/media_router_feature.cc | 17 ++++++++---------
|
||||
chrome/browser/profiles/profile.cc | 2 +-
|
||||
chrome/browser/profiles/profile_impl.cc | 2 +-
|
||||
3 files changed, 10 insertions(+), 11 deletions(-)
|
||||
|
||||
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
|
||||
@@ -57,17 +57,16 @@ const PrefService::Preference* GetMediaRouterPref(
|
||||
|
||||
bool MediaRouterEnabled(content::BrowserContext* context) {
|
||||
#if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
- const PrefService::Preference* pref = GetMediaRouterPref(context);
|
||||
- // Only use the pref value if it set from a mandatory policy.
|
||||
- if (pref->IsManaged() && !pref->IsDefaultValue()) {
|
||||
- bool allowed = false;
|
||||
- CHECK(pref->GetValue()->GetAsBoolean(&allowed));
|
||||
- return allowed;
|
||||
- }
|
||||
-
|
||||
// The component extension cannot be loaded in guest sessions.
|
||||
// TODO(crbug.com/756243): Figure out why.
|
||||
- return !Profile::FromBrowserContext(context)->IsGuestSession();
|
||||
+ if (Profile::FromBrowserContext(context)->IsGuestSession()) {
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ const PrefService::Preference* pref = GetMediaRouterPref(context);
|
||||
+ bool allowed = false;
|
||||
+ pref->GetValue()->GetAsBoolean(&allowed);
|
||||
+ return allowed;
|
||||
#else // !(defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS))
|
||||
return false;
|
||||
#endif // defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
|
||||
--- a/chrome/browser/profiles/profile.cc
|
||||
+++ b/chrome/browser/profiles/profile.cc
|
||||
@@ -232,7 +232,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
prefs::kMediaRouterFirstRunFlowAcknowledged,
|
||||
false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
- registry->RegisterBooleanPref(prefs::kMediaRouterMediaRemotingEnabled, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kMediaRouterMediaRemotingEnabled, false);
|
||||
registry->RegisterListPref(prefs::kMediaRouterTabMirroringSources);
|
||||
|
||||
registry->RegisterDictionaryPref(prefs::kWebShareVisitedTargets);
|
||||
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
|
||||
@@ -422,7 +422,7 @@ void ProfileImpl::RegisterProfilePrefs(
|
||||
registry->RegisterStringPref(
|
||||
prefs::kPrintPreviewDefaultDestinationSelectionRules, std::string());
|
||||
registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);
|
||||
- registry->RegisterBooleanPref(prefs::kEnableMediaRouter, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kEnableMediaRouter, false);
|
||||
#if defined(OS_CHROMEOS)
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kOobeMarketingOptInScreenFinished, false,
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -3,14 +3,14 @@ Date: Wed, 20 Feb 2019 21:41:26 +0100
|
||||
Subject: Disable metrics collection for NTP tiles
|
||||
|
||||
---
|
||||
.../android/ntp/most_visited_sites_bridge.cc | 21 ---------------------
|
||||
components/ntp_tiles/BUILD.gn | 3 ---
|
||||
.../android/ntp/most_visited_sites_bridge.cc | 21 -------------------
|
||||
components/ntp_tiles/BUILD.gn | 3 ---
|
||||
2 files changed, 24 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
|
||||
--- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
|
||||
+++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
|
||||
@@ -23,7 +23,6 @@
|
||||
@@ -25,7 +25,6 @@
|
||||
#include "chrome/browser/profiles/profile_android.h"
|
||||
#include "components/favicon_base/favicon_types.h"
|
||||
#include "components/history/core/browser/history_service.h"
|
||||
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -240,7 +238,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
|
||||
@@ -236,7 +234,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj,
|
||||
jint jtiles_count) {
|
||||
@@ -34,7 +34,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
|
||||
}
|
||||
|
||||
void MostVisitedSitesBridge::RecordTileImpression(
|
||||
@@ -253,18 +250,6 @@ void MostVisitedSitesBridge::RecordTileImpression(
|
||||
@@ -249,18 +246,6 @@ void MostVisitedSitesBridge::RecordTileImpression(
|
||||
jint jsource,
|
||||
jlong jdata_generation_time_ms,
|
||||
const JavaParamRef<jstring>& jurl) {
|
||||
@@ -53,7 +53,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
|
||||
}
|
||||
|
||||
void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
|
||||
@@ -275,12 +260,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
|
||||
@@ -271,12 +256,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
|
||||
jint title_source,
|
||||
jint source,
|
||||
jlong jdata_generation_time_ms) {
|
||||
@@ -69,7 +69,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
|
||||
diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn
|
||||
--- a/components/ntp_tiles/BUILD.gn
|
||||
+++ b/components/ntp_tiles/BUILD.gn
|
||||
@@ -20,8 +20,6 @@ static_library("ntp_tiles") {
|
||||
@@ -22,8 +22,6 @@ static_library("ntp_tiles") {
|
||||
"icon_cacher.h",
|
||||
"icon_cacher_impl.cc",
|
||||
"icon_cacher_impl.h",
|
||||
@@ -78,7 +78,7 @@ diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn
|
||||
"most_visited_sites.cc",
|
||||
"most_visited_sites.h",
|
||||
"ntp_tile.cc",
|
||||
@@ -91,7 +89,6 @@ source_set("unit_tests") {
|
||||
@@ -78,7 +76,6 @@ source_set("unit_tests") {
|
||||
"custom_links_manager_impl_unittest.cc",
|
||||
"custom_links_store_unittest.cc",
|
||||
"icon_cacher_impl_unittest.cc",
|
||||
@@ -87,5 +87,5 @@ diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn
|
||||
"popular_sites_impl_unittest.cc",
|
||||
]
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Subject: Disable metrics on all I/O threads
|
||||
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
|
||||
@@ -947,7 +947,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
@@ -905,7 +905,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
|
||||
@@ -22,15 +22,15 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro
|
||||
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
|
||||
--- a/chrome/browser/profiles/profile_io_data.cc
|
||||
+++ b/chrome/browser/profiles/profile_io_data.cc
|
||||
@@ -55,8 +55,6 @@
|
||||
@@ -47,8 +47,6 @@
|
||||
#include "components/content_settings/core/browser/host_content_settings_map.h"
|
||||
#include "components/cookie_config/cookie_store_util.h"
|
||||
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h"
|
||||
#include "components/dom_distiller/core/url_constants.h"
|
||||
-#include "components/metrics/metrics_pref_names.h"
|
||||
-#include "components/metrics/metrics_service.h"
|
||||
#include "components/net_log/chrome_net_log.h"
|
||||
#include "components/policy/core/common/cloud/policy_header_service.h"
|
||||
#include "components/policy/core/common/cloud/user_cloud_policy_manager.h"
|
||||
#include "components/signin/public/base/signin_pref_names.h"
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 30 May 2019 03:37:45 +0200
|
||||
Subject: Disable offline pages in the downloads home to be opened in CCT by
|
||||
default
|
||||
|
||||
---
|
||||
components/offline_pages/core/offline_page_feature.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -51,7 +51,7 @@ const base::Feature kOfflinePagesDescriptivePendingStatusFeature{
|
||||
"OfflinePagesDescriptivePendingStatus", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kOfflinePagesInDownloadHomeOpenInCctFeature{
|
||||
- "OfflinePagesInDownloadHomeOpenInCct", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "OfflinePagesInDownloadHomeOpenInCct", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kOfflinePagesCTSuppressNotificationsFeature{
|
||||
"OfflinePagesCTSuppressNotifications", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -11,7 +11,7 @@ a corresponding user option to individually disable their usage.
|
||||
diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatter/url_formatter.cc
|
||||
--- a/components/url_formatter/url_formatter.cc
|
||||
+++ b/components/url_formatter/url_formatter.cc
|
||||
@@ -410,13 +410,13 @@ IDNConversionStatus IDNToUnicodeOneComponent(const base::char16* comp,
|
||||
@@ -433,13 +433,13 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
|
||||
} // namespace
|
||||
|
||||
const FormatUrlType kFormatUrlOmitNothing = 0;
|
||||
@@ -33,5 +33,5 @@ diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatte
|
||||
|
||||
const FormatUrlType kFormatUrlOmitDefaults =
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 15 Dec 2019 22:39:56 +0100
|
||||
Subject: Disable password reuse detection on android
|
||||
|
||||
---
|
||||
components/password_manager/core/browser/BUILD.gn | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn
|
||||
--- a/components/password_manager/core/browser/BUILD.gn
|
||||
+++ b/components/password_manager/core/browser/BUILD.gn
|
||||
@@ -12,9 +12,9 @@ if (is_android) {
|
||||
|
||||
# TODO(crbug.com/1006430): Fix password reuse detection not fully functional on
|
||||
# Android.
|
||||
-password_reuse_detection_support = !is_ios
|
||||
+password_reuse_detection_support = !is_ios && !is_android
|
||||
password_reuse_warning_support = !is_android && !is_ios
|
||||
-password_on_focus_ping_support = !is_ios
|
||||
+password_on_focus_ping_support = !is_android && !is_ios
|
||||
|
||||
config("password_reuse_detection_config") {
|
||||
defines = []
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: Disable plugins enumeration
|
||||
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
|
||||
@@ -1357,10 +1357,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
|
||||
@@ -1169,10 +1169,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
|
||||
}
|
||||
|
||||
PluginData* LocalFrame::GetPluginData() const {
|
||||
@@ -23,5 +23,5 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
|
||||
|
||||
void LocalFrame::SetAdTrackerForTesting(AdTracker* ad_tracker) {
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -24,5 +24,5 @@ diff --git a/components/previews/core/previews_features.cc b/components/previews
|
||||
|
||||
// Enables the Offline previews on android slow connections.
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -5,11 +5,12 @@ Subject: Disable promos displayed in bookmarks manager
|
||||
Remove personalized signin promo view from
|
||||
bookmarks, never reach signin thresholds.
|
||||
---
|
||||
.../personalized_signin_promo_view_bookmarks.xml | 30 ----------------------
|
||||
.../browser/bookmarks/BookmarkItemsAdapter.java | 23 ++---------------
|
||||
.../browser/signin/SigninPromoController.java | 19 ++------------
|
||||
chrome/android/java_sources.gni | 1 -
|
||||
4 files changed, 4 insertions(+), 69 deletions(-)
|
||||
...rsonalized_signin_promo_view_bookmarks.xml | 30 -----------
|
||||
.../bookmarks/BookmarkItemsAdapter.java | 23 +-------
|
||||
.../bookmarks/BookmarkPromoHeader.java | 54 +------------------
|
||||
.../ReorderBookmarkItemsAdapter.java | 19 +------
|
||||
.../browser/signin/SigninPromoController.java | 19 +------
|
||||
5 files changed, 7 insertions(+), 138 deletions(-)
|
||||
delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
|
||||
|
||||
diff --git a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml b/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
|
||||
@@ -51,7 +52,7 @@ deleted file mode 100644
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
|
||||
@@ -57,7 +57,6 @@ class BookmarkItemsAdapter
|
||||
@@ -60,7 +60,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
|
||||
private BookmarkDelegate mDelegate;
|
||||
private Context mContext;
|
||||
@@ -59,7 +60,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
private String mSearchText;
|
||||
private BookmarkId mCurrentFolder;
|
||||
|
||||
@@ -211,9 +210,9 @@ class BookmarkItemsAdapter
|
||||
@@ -219,9 +218,9 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
|
||||
switch (viewType) {
|
||||
case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
@@ -71,7 +72,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
case ViewType.FOLDER:
|
||||
BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from(
|
||||
parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false);
|
||||
@@ -234,8 +233,6 @@ class BookmarkItemsAdapter
|
||||
@@ -242,8 +241,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
switch (holder.getItemViewType()) {
|
||||
case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
@@ -80,7 +81,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
break;
|
||||
case ViewType.SYNC_PROMO:
|
||||
break;
|
||||
@@ -254,7 +251,6 @@ class BookmarkItemsAdapter
|
||||
@@ -262,7 +259,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
public void onViewRecycled(ViewHolder holder) {
|
||||
switch (holder.getItemViewType()) {
|
||||
case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
@@ -88,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
break;
|
||||
default:
|
||||
// Other view holders don't have special recycling code.
|
||||
@@ -289,7 +285,6 @@ class BookmarkItemsAdapter
|
||||
@@ -298,7 +294,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
}
|
||||
};
|
||||
|
||||
@@ -96,7 +97,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
populateTopLevelFoldersList();
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
@@ -300,7 +295,6 @@ class BookmarkItemsAdapter
|
||||
@@ -309,7 +304,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
mDelegate.removeUIObserver(this);
|
||||
mDelegate.getModel().removeObserver(mBookmarkModelObserver);
|
||||
mDelegate = null;
|
||||
@@ -104,7 +105,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -367,19 +361,6 @@ class BookmarkItemsAdapter
|
||||
@@ -389,19 +383,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||
if (currentUIState == BookmarkUIState.STATE_SEARCHING) return;
|
||||
|
||||
assert currentUIState == BookmarkUIState.STATE_FOLDER : "Unexpected UI state";
|
||||
@@ -124,10 +125,157 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
}
|
||||
|
||||
private void populateTopLevelFoldersList() {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
|
||||
@@ -19,7 +19,6 @@ import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.signin.IdentityServicesProvider;
|
||||
-import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
|
||||
import org.chromium.chrome.browser.signin.ProfileDataCache;
|
||||
import org.chromium.chrome.browser.signin.SigninManager;
|
||||
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
|
||||
@@ -132,19 +131,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
|
||||
return mPromoState;
|
||||
}
|
||||
|
||||
- /**
|
||||
- * @return Personalized signin promo header {@link ViewHolder} instance that can be used with
|
||||
- * {@link RecyclerView}.
|
||||
- */
|
||||
- // TODO(crbug.com/160194): Clean up after bookmark reordering launches.
|
||||
- ViewHolder createPersonalizedSigninPromoHolder(ViewGroup parent) {
|
||||
- View view = LayoutInflater.from(mContext).inflate(
|
||||
- R.layout.personalized_signin_promo_view_bookmarks, parent, false);
|
||||
-
|
||||
- // ViewHolder is abstract and it cannot be instantiated directly.
|
||||
- return new ViewHolder(view) {};
|
||||
- }
|
||||
-
|
||||
/**
|
||||
* @return Sync promo header {@link ViewHolder} instance that can be used with
|
||||
* {@link RecyclerView}.
|
||||
@@ -157,42 +143,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
|
||||
return new ViewHolder(view) {};
|
||||
}
|
||||
|
||||
- /**
|
||||
- * Configures the personalized signin promo and records promo impressions.
|
||||
- * @param view The view to be configured.
|
||||
- */
|
||||
- void setupPersonalizedSigninPromo(PersonalizedSigninPromoView view) {
|
||||
- SigninPromoUtil.setupPromoViewFromCache(mSigninPromoController, mProfileDataCache, view,
|
||||
- this::setPersonalizedSigninPromoDeclined);
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Detaches the previously configured {@link PersonalizedSigninPromoView}.
|
||||
- */
|
||||
- void detachPersonalizePromoView() {
|
||||
- if (mSigninPromoController != null) mSigninPromoController.detach();
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Saves that the personalized signin promo was declined and updates the UI.
|
||||
- */
|
||||
- private void setPersonalizedSigninPromoDeclined() {
|
||||
- SharedPreferences.Editor sharedPreferencesEditor =
|
||||
- ContextUtils.getAppSharedPreferences().edit();
|
||||
- sharedPreferencesEditor.putBoolean(PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, true);
|
||||
- sharedPreferencesEditor.apply();
|
||||
- mPromoState = calculatePromoState();
|
||||
- triggerPromoUpdate();
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * @return Whether the user declined the personalized signin promo.
|
||||
- */
|
||||
- private boolean wasPersonalizedSigninPromoDeclined() {
|
||||
- return ContextUtils.getAppSharedPreferences().getBoolean(
|
||||
- PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, false);
|
||||
- }
|
||||
-
|
||||
private @PromoState int calculatePromoState() {
|
||||
if (sPromoStateForTests != null) {
|
||||
return sPromoStateForTests;
|
||||
@@ -205,8 +155,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
|
||||
if (!ChromeSigninController.get().isSignedIn()) {
|
||||
boolean impressionLimitReached = !SigninPromoController.hasNotReachedImpressionLimit(
|
||||
SigninAccessPoint.BOOKMARK_MANAGER);
|
||||
- if (!mSignInManager.isSignInAllowed() || impressionLimitReached
|
||||
- || wasPersonalizedSigninPromoDeclined()) {
|
||||
+ if (!mSignInManager.isSignInAllowed() || impressionLimitReached) {
|
||||
return PromoState.PROMO_NONE;
|
||||
}
|
||||
return PromoState.PROMO_SIGNIN_PERSONALIZED;
|
||||
@@ -254,7 +203,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
|
||||
}
|
||||
|
||||
private void triggerPromoUpdate() {
|
||||
- detachPersonalizePromoView();
|
||||
mPromoHeaderChangeAction.run();
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
|
||||
@@ -188,8 +188,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
|
||||
assert mDelegate != null;
|
||||
|
||||
switch (viewType) {
|
||||
- case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
- return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent);
|
||||
case ViewType.SYNC_PROMO:
|
||||
return mPromoHeaderManager.createSyncPromoHolder(parent);
|
||||
case ViewType.FOLDER:
|
||||
@@ -204,10 +202,7 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
- if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) {
|
||||
- PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
|
||||
- mPromoHeaderManager.setupPersonalizedSigninPromo(view);
|
||||
- } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
|
||||
+ if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
|
||||
BookmarkRow row = ((BookmarkRow) holder.itemView);
|
||||
BookmarkId id = getIdByPosition(position);
|
||||
row.setBookmarkId(id, getLocationFromPosition(position));
|
||||
@@ -231,13 +226,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
|
||||
|
||||
@Override
|
||||
public void onViewRecycled(ViewHolder holder) {
|
||||
- switch (holder.getItemViewType()) {
|
||||
- case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
- mPromoHeaderManager.detachPersonalizePromoView();
|
||||
- break;
|
||||
- default:
|
||||
- // Other view holders don't have special recycling code.
|
||||
- }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -406,9 +394,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
|
||||
case BookmarkPromoHeader.PromoState.PROMO_NONE:
|
||||
mPromoHeaderType = ViewType.INVALID_PROMO;
|
||||
break;
|
||||
- case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
|
||||
- mPromoHeaderType = ViewType.PERSONALIZED_SIGNIN_PROMO;
|
||||
- break;
|
||||
case BookmarkPromoHeader.PromoState.PROMO_SYNC:
|
||||
mPromoHeaderType = ViewType.SYNC_PROMO;
|
||||
break;
|
||||
@@ -573,4 +558,4 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
|
||||
private void clearHighlight() {
|
||||
mHighlightedBookmark = null;
|
||||
}
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
|
||||
@@ -77,23 +77,8 @@ public class SigninPromoController {
|
||||
@@ -75,23 +75,8 @@ public class SigninPromoController {
|
||||
*/
|
||||
public static boolean hasNotReachedImpressionLimit(@AccessPoint int accessPoint) {
|
||||
SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences();
|
||||
@@ -153,17 +301,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPr
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
|
||||
--- a/chrome/android/java_sources.gni
|
||||
+++ b/chrome/android/java_sources.gni
|
||||
@@ -166,7 +166,6 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java",
|
||||
- "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIObserver.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java",
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,24 +3,24 @@ Date: Sun, 15 Oct 2017 21:45:46 +0200
|
||||
Subject: Disable references to fonts.googleapis.com
|
||||
|
||||
---
|
||||
.../dom_distiller/content/browser/dom_distiller_viewer_source.cc | 2 +-
|
||||
components/dom_distiller/core/html/preview.html | 2 +-
|
||||
components/dom_distiller/core/javascript/dom_distiller_viewer.js | 2 +-
|
||||
third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css | 3 +--
|
||||
.../content/browser/dom_distiller_viewer_source.cc | 2 +-
|
||||
components/dom_distiller/core/html/preview.html | 2 +-
|
||||
.../dom_distiller/core/javascript/dom_distiller_viewer.js | 2 +-
|
||||
third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css | 3 +--
|
||||
4 files changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
--- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
+++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
@@ -309,7 +309,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
|
||||
@@ -317,7 +317,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
|
||||
}
|
||||
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() const {
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() {
|
||||
- return "style-src 'self' https://fonts.googleapis.com;";
|
||||
+ return "style-src 'self';";
|
||||
}
|
||||
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() const {
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() {
|
||||
diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_distiller/core/html/preview.html
|
||||
--- a/components/dom_distiller/core/html/preview.html
|
||||
+++ b/components/dom_distiller/core/html/preview.html
|
||||
@@ -36,8 +36,8 @@ diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_di
|
||||
diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
--- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
+++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
@@ -120,7 +120,7 @@ function maybeSetWebFont() {
|
||||
if (distiller_on_ios) return;
|
||||
@@ -130,7 +130,7 @@ function maybeSetWebFont() {
|
||||
return;
|
||||
|
||||
var e = document.createElement('link');
|
||||
- e.href = 'https://fonts.googleapis.com/css?family=Roboto';
|
||||
@@ -59,5 +59,5 @@ diff --git a/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css b/th
|
||||
body,
|
||||
table,
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Aug 2019 08:47:04 +0200
|
||||
Subject: Disable search-ready omnibox by default
|
||||
|
||||
---
|
||||
chrome/browser/android/chrome_feature_list.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -518,7 +518,7 @@ const base::Feature kScrollToExpandPaymentHandler{
|
||||
"ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kSearchReadyOmniboxFeature{
|
||||
- "SearchReadyOmnibox", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "SearchReadyOmnibox", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kServiceManagerForBackgroundPrefetch{
|
||||
"ServiceManagerForBackgroundPrefetch", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: Disable seed-based field trials
|
||||
diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
|
||||
--- a/components/variations/service/variations_field_trial_creator.cc
|
||||
+++ b/components/variations/service/variations_field_trial_creator.cc
|
||||
@@ -514,8 +514,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
|
||||
@@ -538,8 +538,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
|
||||
#endif // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
|
||||
bool used_seed = false;
|
||||
if (!used_testing_config) {
|
||||
@@ -21,5 +21,5 @@ diff --git a/components/variations/service/variations_field_trial_creator.cc b/c
|
||||
|
||||
platform_field_trials->SetupFeatureControllingFieldTrials(used_seed,
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -1,245 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 12 Jun 2018 14:23:07 +0200
|
||||
Subject: Disable signin and data saver preferences
|
||||
|
||||
Never show the data saver promo snackbar
|
||||
---
|
||||
chrome/android/java/res/xml/main_preferences.xml | 9 ---
|
||||
.../browser/preferences/MainPreferences.java | 91 +---------------------
|
||||
2 files changed, 2 insertions(+), 98 deletions(-)
|
||||
|
||||
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
|
||||
@@ -10,10 +10,6 @@
|
||||
android:key="account_section"
|
||||
android:order="0"
|
||||
android:title="@string/prefs_section_account"/>
|
||||
- <org.chromium.chrome.browser.preferences.SignInPreference
|
||||
- android:key="sign_in"
|
||||
- android:order="1"
|
||||
- android:title="@string/sign_in_to_chrome"/>
|
||||
<org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
android:key="sync_and_services"
|
||||
android:order="2"
|
||||
@@ -96,11 +92,6 @@
|
||||
android:key="languages"
|
||||
android:order="17"
|
||||
android:title="@string/prefs_languages"/>
|
||||
- <org.chromium.chrome.browser.preferences.datareduction.DataReductionPreference
|
||||
- android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferenceFragment"
|
||||
- android:key="data_reduction"
|
||||
- android:order="18"
|
||||
- android:title="@string/data_reduction_title"/>
|
||||
<org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.download.DownloadPreferences"
|
||||
android:key="downloads"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
|
||||
@@ -17,16 +17,12 @@ import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.contextual_suggestions.ContextualSuggestionsEnabledStateUtils;
|
||||
-import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
|
||||
import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
|
||||
import org.chromium.chrome.browser.preferences.autofill_assistant.AutofillAssistantPreferences;
|
||||
-import org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferenceFragment;
|
||||
import org.chromium.chrome.browser.preferences.developer.DeveloperPreferences;
|
||||
import org.chromium.chrome.browser.search_engines.TemplateUrl;
|
||||
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
||||
-import org.chromium.chrome.browser.signin.SigninManager;
|
||||
-import org.chromium.chrome.browser.sync.ProfileSyncService;
|
||||
import org.chromium.chrome.browser.util.FeatureUtilities;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -36,11 +32,8 @@ import java.util.Map;
|
||||
* The main settings screen, shown when the user first opens Settings.
|
||||
*/
|
||||
public class MainPreferences extends PreferenceFragment
|
||||
- implements TemplateUrlService.LoadListener, ProfileSyncService.SyncStateChangedListener,
|
||||
- SigninManager.SignInStateObserver {
|
||||
+ implements TemplateUrlService.LoadListener {
|
||||
public static final String PREF_ACCOUNT_SECTION = "account_section";
|
||||
- public static final String PREF_SIGN_IN = "sign_in";
|
||||
- public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
|
||||
public static final String PREF_SEARCH_ENGINE = "search_engine";
|
||||
public static final String PREF_SAVED_PASSWORDS = "saved_passwords";
|
||||
public static final String PREF_CONTEXTUAL_SUGGESTIONS = "contextual_suggestions";
|
||||
@@ -60,7 +53,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
|
||||
private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
|
||||
private final Map<String, Preference> mAllPreferences = new HashMap<>();
|
||||
- private SignInPreference mSignInPreference;
|
||||
|
||||
public MainPreferences() {
|
||||
setHasOptionsMenu(true);
|
||||
@@ -76,33 +68,16 @@ public class MainPreferences extends PreferenceFragment
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
- mSignInPreference.onPreferenceFragmentDestroyed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
- if (SigninManager.get().isSigninSupported()) {
|
||||
- SigninManager.get().addSignInStateObserver(this);
|
||||
- mSignInPreference.registerForUpdates();
|
||||
- }
|
||||
- ProfileSyncService syncService = ProfileSyncService.get();
|
||||
- if (syncService != null) {
|
||||
- syncService.addSyncStateChangedListener(this);
|
||||
- }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
- if (SigninManager.get().isSigninSupported()) {
|
||||
- SigninManager.get().removeSignInStateObserver(this);
|
||||
- mSignInPreference.unregisterForUpdates();
|
||||
- }
|
||||
- ProfileSyncService syncService = ProfileSyncService.get();
|
||||
- if (syncService != null) {
|
||||
- syncService.removeSyncStateChangedListener(this);
|
||||
- }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,17 +90,11 @@ public class MainPreferences extends PreferenceFragment
|
||||
PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
|
||||
cachePreferences();
|
||||
|
||||
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
|
||||
- mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
|
||||
- } else {
|
||||
- getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
|
||||
- getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
|
||||
- }
|
||||
+ getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
|
||||
|
||||
updatePasswordsPreference();
|
||||
|
||||
setManagedPreferenceDelegateForPreference(PREF_SEARCH_ENGINE);
|
||||
- setManagedPreferenceDelegateForPreference(PREF_DATA_REDUCTION);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
// If we are on Android O+ the Notifications preference should lead to the Android
|
||||
@@ -189,7 +158,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
Preference preference = getPreferenceScreen().getPreference(index);
|
||||
mAllPreferences.put(preference.getKey(), preference);
|
||||
}
|
||||
- mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
|
||||
}
|
||||
|
||||
private void setManagedPreferenceDelegateForPreference(String key) {
|
||||
@@ -198,13 +166,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
}
|
||||
|
||||
private void updatePreferences() {
|
||||
- if (SigninManager.get().isSigninSupported()) {
|
||||
- addPreferenceIfAbsent(PREF_SIGN_IN);
|
||||
- } else {
|
||||
- removePreferenceIfPresent(PREF_SIGN_IN);
|
||||
- }
|
||||
-
|
||||
- updateSyncAndServicesPreference();
|
||||
updateSearchEnginePreference();
|
||||
|
||||
Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
|
||||
@@ -234,10 +195,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
} else {
|
||||
removePreferenceIfPresent(PREF_DEVELOPER);
|
||||
}
|
||||
-
|
||||
- ChromeBasePreference dataReduction =
|
||||
- (ChromeBasePreference) findPreference(PREF_DATA_REDUCTION);
|
||||
- dataReduction.setSummary(DataReductionPreferenceFragment.generateSummary(getResources()));
|
||||
}
|
||||
|
||||
private Preference addPreferenceIfAbsent(String key) {
|
||||
@@ -251,15 +208,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
if (preference != null) getPreferenceScreen().removePreference(preference);
|
||||
}
|
||||
|
||||
- private void updateSyncAndServicesPreference() {
|
||||
- if (!ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) return;
|
||||
-
|
||||
- ChromeBasePreference syncAndServices =
|
||||
- (ChromeBasePreference) findPreference(PREF_SYNC_AND_SERVICES);
|
||||
- syncAndServices.setIcon(SyncPreferenceUtils.getSyncStatusIcon(getActivity()));
|
||||
- syncAndServices.setSummary(SyncPreferenceUtils.getSyncStatusSummary(getActivity()));
|
||||
- }
|
||||
-
|
||||
private void updateSearchEnginePreference() {
|
||||
if (!TemplateUrlService.getInstance().isLoaded()) {
|
||||
ChromeBasePreference searchEnginePref =
|
||||
@@ -291,28 +239,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
pref.setSummary(getResources().getString(isOn ? R.string.text_on : R.string.text_off));
|
||||
}
|
||||
|
||||
- // SigninManager.SignInStateObserver implementation.
|
||||
- @Override
|
||||
- public void onSignedIn() {
|
||||
- // After signing in or out of a managed account, preferences may change or become enabled
|
||||
- // or disabled.
|
||||
- new Handler().post(() -> updatePreferences());
|
||||
- }
|
||||
-
|
||||
- @Override
|
||||
- public void onSignedOut() {
|
||||
- updatePreferences();
|
||||
- }
|
||||
-
|
||||
- private void onSignInPreferenceStateChanged() {
|
||||
- // Remove "Account" section header if the personalized sign-in promo is shown.
|
||||
- if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
|
||||
- removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
|
||||
- } else {
|
||||
- addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
// TemplateUrlService.LoadListener implementation.
|
||||
@Override
|
||||
public void onTemplateUrlServiceLoaded() {
|
||||
@@ -320,11 +246,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
updateSearchEnginePreference();
|
||||
}
|
||||
|
||||
- @Override
|
||||
- public void syncStateChanged() {
|
||||
- updateSyncAndServicesPreference();
|
||||
- }
|
||||
-
|
||||
@VisibleForTesting
|
||||
ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
|
||||
return mManagedPreferenceDelegate;
|
||||
@@ -334,9 +255,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
return new ManagedPreferenceDelegate() {
|
||||
@Override
|
||||
public boolean isPreferenceControlledByPolicy(Preference preference) {
|
||||
- if (PREF_DATA_REDUCTION.equals(preference.getKey())) {
|
||||
- return DataReductionProxySettings.getInstance().isDataReductionProxyManaged();
|
||||
- }
|
||||
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
|
||||
return TemplateUrlService.getInstance().isDefaultSearchManaged();
|
||||
}
|
||||
@@ -345,11 +263,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
|
||||
@Override
|
||||
public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
|
||||
- if (PREF_DATA_REDUCTION.equals(preference.getKey())) {
|
||||
- DataReductionProxySettings settings = DataReductionProxySettings.getInstance();
|
||||
- return settings.isDataReductionProxyManaged()
|
||||
- && !settings.isDataReductionProxyEnabled();
|
||||
- }
|
||||
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
|
||||
return TemplateUrlService.getInstance().isDefaultSearchManaged();
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 2 Nov 2019 16:22:56 +0100
|
||||
Subject: Disable some signed exchange features
|
||||
|
||||
---
|
||||
content/public/common/content_features.cc | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
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
|
||||
@@ -507,7 +507,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
|
||||
// Signed Exchange Reporting for distributors
|
||||
// https://www.chromestatus.com/features/5687904902840320
|
||||
const base::Feature kSignedExchangeReportingForDistributors{
|
||||
- "SignedExchangeReportingForDistributors", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "SignedExchangeReportingForDistributors", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
// Subresource prefetching+loading via Signed HTTP Exchange
|
||||
// https://www.chromestatus.com/features/5126805474246656
|
||||
@@ -517,7 +517,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
|
||||
// Origin-Signed HTTP Exchanges (for WebPackage Loading)
|
||||
// https://www.chromestatus.com/features/5745285984681984
|
||||
const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
// Whether to send a ping to the inner URL upon navigation or not.
|
||||
const base::Feature kSignedHTTPExchangePingValidity{
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 11 Nov 2019 23:09:48 +0100
|
||||
Subject: Disable sync services menu entry
|
||||
|
||||
---
|
||||
chrome/android/java/res/xml/main_preferences.xml | 6 ------
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 7 -------
|
||||
2 files changed, 13 deletions(-)
|
||||
|
||||
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
|
||||
@@ -14,12 +14,6 @@
|
||||
android:key="sign_in"
|
||||
android:order="1"
|
||||
android:title="@string/sign_in_to_chrome"/>
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
- android:key="sync_and_services"
|
||||
- android:order="2"
|
||||
- android:layout="@layout/account_management_account_row"
|
||||
- android:title="@string/prefs_sync_and_services"
|
||||
- android:fragment="org.chromium.chrome.browser.preferences.sync.SyncAndServicesPreferences"/>
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="basics_section"
|
||||
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
|
||||
@@ -33,12 +33,5 @@
|
||||
android:title="@string/clear_browsing_data_title"
|
||||
android:summary="@string/clear_browsing_data_summary"
|
||||
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
|
||||
- <android.support.v7.preference.Preference
|
||||
- android:key="sync_and_services_link_divider"
|
||||
- android:layout="@layout/divider_preference"
|
||||
- android:selectable="false"/>
|
||||
- <org.chromium.chrome.browser.preferences.TextMessagePreference
|
||||
- android:key="sync_and_services_link"
|
||||
- android:summary="@string/privacy_sync_and_services_link"
|
||||
app:allowDividerBelow="false" />
|
||||
</PreferenceScreen>
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -10,15 +10,15 @@ author: Chad Miller <chad.miller@canonical.com>
|
||||
diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
|
||||
--- a/components/content_settings/core/browser/cookie_settings.cc
|
||||
+++ b/components/content_settings/core/browser/cookie_settings.cc
|
||||
@@ -50,7 +50,7 @@ void CookieSettings::GetCookieSettings(
|
||||
@@ -58,7 +58,7 @@ void CookieSettings::GetCookieSettings(
|
||||
void CookieSettings::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kBlockThirdPartyCookies, false,
|
||||
+ prefs::kBlockThirdPartyCookies, true,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kCookieControlsMode,
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Aug 2019 08:45:43 +0200
|
||||
Subject: Disable unified consent on Android
|
||||
|
||||
---
|
||||
components/unified_consent/feature.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/components/unified_consent/feature.cc b/components/unified_consent/feature.cc
|
||||
--- a/components/unified_consent/feature.cc
|
||||
+++ b/components/unified_consent/feature.cc
|
||||
@@ -11,7 +11,7 @@ namespace unified_consent {
|
||||
// base::Feature definition.
|
||||
const base::Feature kUnifiedConsent {
|
||||
"UnifiedConsent",
|
||||
-#if defined(OS_CHROMEOS)
|
||||
+#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
|
||||
base::FEATURE_DISABLED_BY_DEFAULT
|
||||
#else
|
||||
base::FEATURE_ENABLED_BY_DEFAULT
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -3,13 +3,13 @@ Date: Sat, 27 Oct 2018 17:54:01 +0200
|
||||
Subject: Disable update scheduler
|
||||
|
||||
---
|
||||
.../chromium/chrome/browser/component_updater/UpdateScheduler.java | 7 ++-----
|
||||
.../chrome/browser/component_updater/UpdateScheduler.java | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
@@ -35,10 +35,7 @@ public class UpdateScheduler {
|
||||
@@ -36,10 +36,7 @@ public class UpdateScheduler {
|
||||
|
||||
@CalledByNative
|
||||
/* package */ static boolean isAvailable() {
|
||||
@@ -21,13 +21,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updat
|
||||
}
|
||||
|
||||
/* package */ void onStartTaskBeforeNativeLoaded(TaskFinishedCallback callback) {
|
||||
@@ -108,4 +105,4 @@ public class UpdateScheduler {
|
||||
|
||||
private native void nativeOnStartTask(long nativeBackgroundTaskUpdateScheduler);
|
||||
private native void nativeOnStopTask(long nativeBackgroundTaskUpdateScheduler);
|
||||
@@ -112,4 +109,4 @@ public class UpdateScheduler {
|
||||
void onStartTask(long nativeBackgroundTaskUpdateScheduler, UpdateScheduler caller);
|
||||
void onStopTask(long nativeBackgroundTaskUpdateScheduler, UpdateScheduler caller);
|
||||
}
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -4,14 +4,23 @@ Subject: Do not grant notifications to default search engine
|
||||
|
||||
Block gelocation by default instead of granting it for non-enterprise use cases (almost the totality of users)
|
||||
---
|
||||
.../search_permissions/search_permissions_service.cc | 18 +++++-------------
|
||||
chrome/common/chrome_features.cc | 2 +-
|
||||
2 files changed, 6 insertions(+), 14 deletions(-)
|
||||
.../search_permissions_service.cc | 20 ++++++-------------
|
||||
chrome/common/chrome_features.cc | 2 +-
|
||||
2 files changed, 7 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
|
||||
--- a/chrome/browser/android/search_permissions/search_permissions_service.cc
|
||||
+++ b/chrome/browser/android/search_permissions/search_permissions_service.cc
|
||||
@@ -344,11 +344,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
|
||||
@@ -190,7 +190,7 @@ void SearchPermissionsService::ResetDSEPermission(ContentSettingsType type) {
|
||||
DCHECK(dse_url.is_empty() || IsPermissionControlledByDSE(type, dse_origin));
|
||||
|
||||
if (!dse_url.is_empty())
|
||||
- SetContentSetting(dse_url, type, CONTENT_SETTING_ALLOW);
|
||||
+ SetContentSetting(dse_url, type, CONTENT_SETTING_BLOCK);
|
||||
}
|
||||
|
||||
void SearchPermissionsService::ResetDSEPermissions() {
|
||||
@@ -333,11 +333,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -20,11 +29,11 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
|
||||
- // we don't know what the user's setting was previously.
|
||||
- bool was_enterprise_controlled =
|
||||
- pref_service_->GetBoolean(prefs::kDSEWasDisabledByPolicy);
|
||||
+ // If we get to here, the DSE is not disabled by enterprise policy.
|
||||
+ // If this line is reached then DSE is not disabled by enterprise policy.
|
||||
pref_service_->ClearPref(prefs::kDSEWasDisabledByPolicy);
|
||||
|
||||
// Initialize the pref for geolocation if it hasn't been initialized yet.
|
||||
@@ -381,10 +377,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
|
||||
@@ -370,10 +366,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
|
||||
pref_service_->ClearPref(prefs::kDSEGeolocationSettingDeprecated);
|
||||
} else if (dse_geolocation_setting == CONTENT_SETTING_ASK) {
|
||||
// If the user hasn't explicitly allowed or blocked geolocation for the
|
||||
@@ -32,17 +41,17 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
|
||||
- dse_geolocation_setting = was_enterprise_controlled
|
||||
- ? CONTENT_SETTING_BLOCK
|
||||
- : CONTENT_SETTING_ALLOW;
|
||||
+ // DSE, initialize it to disallowed.
|
||||
+ // DSE, initialize it to blocked.
|
||||
+ dse_geolocation_setting = CONTENT_SETTING_BLOCK;
|
||||
}
|
||||
|
||||
// Update the content setting with the auto-grants for the DSE.
|
||||
@@ -410,11 +404,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
|
||||
@@ -398,11 +392,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
|
||||
GetContentSetting(dse_origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
|
||||
ContentSetting dse_notifications_setting = notifications_setting_to_restore;
|
||||
// If the user hasn't explicitly allowed or blocked notifications for the
|
||||
- // DSE, initialize it to allowed.
|
||||
+ // DSE, initialize it to disallowed.
|
||||
+ // DSE, initialize it to blocked.
|
||||
if (dse_notifications_setting == CONTENT_SETTING_ASK) {
|
||||
- dse_notifications_setting = was_enterprise_controlled
|
||||
- ? CONTENT_SETTING_BLOCK
|
||||
@@ -54,15 +63,15 @@ diff --git a/chrome/browser/android/search_permissions/search_permissions_servic
|
||||
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
|
||||
@@ -322,7 +322,7 @@ const base::Feature kGoogleBrandedContextMenu{
|
||||
|
||||
@@ -311,7 +311,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
|
||||
#if defined(OS_ANDROID)
|
||||
const base::Feature kGrantNotificationsToDSE{"GrantNotificationsToDSE",
|
||||
// Enable changing default downloads storage location on Android.
|
||||
const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
#endif // defined(OS_ANDROID)
|
||||
#endif
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
// If enabled, Drive will use FCM for its invalidations.
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@ Upstream has decided that it works as intended (https://bugs.chromium.org/p/chro
|
||||
but users would like to decide where to save a file even when there is no SD card available;
|
||||
do not skip the prompt in such cases.
|
||||
---
|
||||
.../download/DownloadLocationDialogBridge.java | 71 +++++++---------------
|
||||
1 file changed, 21 insertions(+), 50 deletions(-)
|
||||
.../DownloadLocationDialogBridge.java | 73 ++++++-------------
|
||||
1 file changed, 21 insertions(+), 52 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
|
||||
@@ -31,9 +31,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
|
||||
@@ -32,9 +32,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
|
||||
private PropertyModel mDialogModel;
|
||||
private DownloadLocationCustomView mCustomView;
|
||||
private ModalDialogManager mModalDialogManager;
|
||||
@@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
|
||||
private Context mContext;
|
||||
|
||||
private DownloadLocationDialogBridge(long nativeDownloadLocationDialogBridge) {
|
||||
@@ -66,12 +63,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
|
||||
@@ -67,12 +64,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
|
||||
|
||||
mModalDialogManager = activity.getModalDialogManager();
|
||||
mContext = activity;
|
||||
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -104,48 +117,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
|
||||
@@ -105,50 +118,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
|
||||
mCustomView = null;
|
||||
}
|
||||
|
||||
@@ -74,7 +74,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
|
||||
- assert(!TextUtils.isEmpty(dir.location));
|
||||
- PrefServiceBridge.getInstance().setDownloadAndSaveFileDefaultDirectory(
|
||||
- dir.location);
|
||||
- nativeOnComplete(mNativeDownloadLocationDialogBridge, mSuggestedPath);
|
||||
- DownloadLocationDialogBridgeJni.get().onComplete(
|
||||
- mNativeDownloadLocationDialogBridge, DownloadLocationDialogBridge.this,
|
||||
- mSuggestedPath);
|
||||
- }
|
||||
- return;
|
||||
- }
|
||||
@@ -106,5 +108,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo
|
||||
switch (dialogType) {
|
||||
case DownloadLocationDialogType.LOCATION_FULL:
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@ Subject: Do not store passwords by default
|
||||
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
|
||||
--- a/components/password_manager/core/browser/password_manager.cc
|
||||
+++ b/components/password_manager/core/browser/password_manager.cc
|
||||
@@ -333,10 +333,10 @@ void RecordParsingOnSavingDifference(
|
||||
void PasswordManager::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -155,10 +155,10 @@ void PasswordManager::RegisterProfilePrefs(
|
||||
registry->RegisterBooleanPref(prefs::kBlacklistedCredentialsNormalized,
|
||||
false);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kCredentialsEnableService, true,
|
||||
+ prefs::kCredentialsEnableService, false,
|
||||
@@ -23,5 +23,5 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp
|
||||
registry->RegisterStringPref(prefs::kSyncPasswordHash, std::string(),
|
||||
PrefRegistry::NO_REGISTRATION_FLAGS);
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 30 May 2019 03:42:06 +0200
|
||||
Subject: Enable changing default downloads storage location by default
|
||||
|
||||
---
|
||||
chrome/common/chrome_features.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -311,7 +311,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
|
||||
#if defined(OS_ANDROID)
|
||||
// Enable changing default downloads storage location on Android.
|
||||
const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
#endif
|
||||
|
||||
// If enabled, Drive will use FCM for its invalidations.
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 30 May 2019 03:44:07 +0200
|
||||
Subject: Enable download rename option by default
|
||||
|
||||
---
|
||||
chrome/browser/android/chrome_feature_list.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -414,7 +414,7 @@ const base::Feature kDownloadNotificationBadge{
|
||||
"DownloadNotificationBadge", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kDownloadRename{"DownloadRename",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kDownloadTabManagementModule{
|
||||
"DownloadTabManagementModule", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -42,7 +42,7 @@ Excerpt from https://github.com/bromite/bromite/issues/226
|
||||
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
|
||||
@@ -272,6 +272,10 @@ config("compiler") {
|
||||
@@ -297,6 +297,10 @@ config("compiler") {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
||||
+
|
||||
# Linker warnings.
|
||||
if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
|
||||
!(is_android && use_order_profiling) && !is_mac && !is_ios &&
|
||||
!is_mac && !is_ios && current_os != "aix") {
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 2 Nov 2018 14:06:17 +0100
|
||||
Subject: Enable history requirement of user gesture
|
||||
|
||||
Set #enable-history-entry-requires-user-gesture to enabled by default
|
||||
---
|
||||
chrome/browser/about_flags.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -1199,7 +1199,7 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-history-entry-requires-user-gesture",
|
||||
flag_descriptions::kHistoryRequiresUserGestureName,
|
||||
flag_descriptions::kHistoryRequiresUserGestureDescription, kOsAll,
|
||||
- SINGLE_VALUE_TYPE(switches::kHistoryEntryRequiresUserGesture)},
|
||||
+ SINGLE_DISABLE_VALUE_TYPE(switches::kHistoryEntryRequiresUserGesture)},
|
||||
{"enable-history-manipulation-intervention",
|
||||
flag_descriptions::kHistoryManipulationIntervention,
|
||||
flag_descriptions::kHistoryManipulationInterventionDescription, kOsAll,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 14 Apr 2019 12:02:57 +0200
|
||||
Subject: Enable night mode menu entry by default
|
||||
|
||||
---
|
||||
chrome/browser/android/chrome_feature_list.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -246,7 +246,7 @@ const base::Feature kAdjustWebApkInstallationSpace = {
|
||||
"AdjustWebApkInstallationSpace", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kAndroidNightMode{"AndroidNightMode",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kAndroidNightModeCCT{"AndroidNightModeCCT",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 15 Mar 2019 10:05:14 +0100
|
||||
Subject: Enable secure DNS mode by default in DnsTransaction.
|
||||
|
||||
---
|
||||
net/dns/host_resolver_impl.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
|
||||
--- a/net/dns/host_resolver_impl.cc
|
||||
+++ b/net/dns/host_resolver_impl.cc
|
||||
@@ -984,7 +984,7 @@ class HostResolverImpl::DnsTask : public base::SupportsWeakPtr<DnsTask> {
|
||||
base::BindOnce(&DnsTask::OnTransactionComplete,
|
||||
base::Unretained(this), tick_clock_->NowTicks(),
|
||||
dns_query_type),
|
||||
- net_log_, SecureDnsMode::AUTOMATIC);
|
||||
+ net_log_, SecureDnsMode::SECURE);
|
||||
trans->SetRequestContext(delegate_->url_request_context());
|
||||
trans->SetRequestPriority(delegate_->priority());
|
||||
return trans;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+3
-3
@@ -9,7 +9,7 @@ Subject: Enable site per process isolation for devices with enough memory
|
||||
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
|
||||
@@ -552,11 +552,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
|
||||
@@ -651,11 +651,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
|
||||
// browser_features, as they are only used on the browser side.
|
||||
const base::Feature kSitePerProcess {
|
||||
"site-per-process",
|
||||
@@ -21,7 +21,7 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
|
||||
};
|
||||
|
||||
// Controls a mode for dynamically process-isolating sites where the user has
|
||||
@@ -578,7 +574,7 @@ const base::Feature kSiteIsolationForPasswordSites{
|
||||
@@ -685,7 +681,7 @@ const base::Feature kSiteIsolationForPasswordSites{
|
||||
// base::SysInfo::AmountOfPhysicalMemoryMB().
|
||||
const base::Feature kSitePerProcessOnlyForHighMemoryClients{
|
||||
"site-per-process-only-for-high-memory-clients",
|
||||
@@ -31,5 +31,5 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
|
||||
"site-per-process-low-memory-cutoff-mb";
|
||||
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: Fix crash when accessing page info / site settings
|
||||
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
|
||||
--- a/chrome/browser/permissions/permission_manager.cc
|
||||
+++ b/chrome/browser/permissions/permission_manager.cc
|
||||
@@ -695,6 +695,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
|
||||
@@ -761,6 +761,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
|
||||
if (status != CONTENT_SETTING_DEFAULT)
|
||||
return PermissionResult(status, PermissionStatusSource::UNSPECIFIED);
|
||||
PermissionContextBase* context = GetPermissionContext(permission);
|
||||
@@ -20,5 +20,5 @@ diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/p
|
||||
render_frame_host, canonical_requesting_origin.GetOrigin(),
|
||||
embedding_origin.GetOrigin());
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,13 +3,13 @@ Date: Sun, 13 Aug 2017 19:33:04 -0400
|
||||
Subject: Hide passwords manager link
|
||||
|
||||
---
|
||||
.../chrome/browser/preferences/password/SavePasswordsPreferences.java | 4 ++--
|
||||
.../preferences/password/SavePasswordsPreferences.java | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
|
||||
@@ -249,7 +249,7 @@ public class SavePasswordsPreferences
|
||||
@@ -251,7 +251,7 @@ public class SavePasswordsPreferences
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -18,15 +18,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pas
|
||||
|
||||
PreferenceGroup passwordParent;
|
||||
if (mSearchQuery == null) {
|
||||
@@ -324,7 +324,7 @@ public class SavePasswordsPreferences
|
||||
@@ -326,7 +326,7 @@ public class SavePasswordsPreferences
|
||||
return;
|
||||
}
|
||||
|
||||
- displayManageAccountLink();
|
||||
+ //displayManageAccountLink();
|
||||
|
||||
PreferenceCategory profileCategory = new PreferenceCategory(getActivity());
|
||||
PreferenceCategory profileCategory = new PreferenceCategory(getStyledContext());
|
||||
profileCategory.setKey(PREF_KEY_CATEGORY_EXCEPTIONS);
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -19,5 +19,5 @@ diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/j
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 27 Oct 2019 10:18:39 +0100
|
||||
Subject: Increase number of autocomplete matches from 5 to 10
|
||||
|
||||
Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment-526874703
|
||||
---
|
||||
components/omnibox/browser/autocomplete_result.cc | 3 ++-
|
||||
components/omnibox/browser/omnibox_field_trial.cc | 3 ++-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
|
||||
--- a/components/omnibox/browser/autocomplete_result.cc
|
||||
+++ b/components/omnibox/browser/autocomplete_result.cc
|
||||
@@ -74,7 +74,8 @@ struct MatchGURLHash {
|
||||
// static
|
||||
size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
|
||||
#if (defined(OS_ANDROID))
|
||||
- constexpr size_t kDefaultMaxAutocompleteMatches = 5;
|
||||
+ // changed from 6, this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc
|
||||
+ constexpr size_t kDefaultMaxAutocompleteMatches = 10;
|
||||
if (is_zero_suggest)
|
||||
return kDefaultMaxAutocompleteMatches;
|
||||
#else
|
||||
diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc
|
||||
--- a/components/omnibox/browser/omnibox_field_trial.cc
|
||||
+++ b/components/omnibox/browser/omnibox_field_trial.cc
|
||||
@@ -329,7 +329,8 @@ void OmniboxFieldTrial::GetDemotionsByType(
|
||||
|
||||
size_t OmniboxFieldTrial::GetProviderMaxMatches(
|
||||
AutocompleteProvider::Type provider) {
|
||||
- size_t default_max_matches_per_provider = 3;
|
||||
+ size_t default_max_matches_per_provider = 5; // was 3; this needs to be half the value of kDefaultMaxAutocompleteMatches from components/omnibox/browser/autocomplete_result.cc
|
||||
+ return default_max_matches_per_provider;
|
||||
|
||||
std::string param_value = base::GetFieldTrialParamValueByFeature(
|
||||
omnibox::kUIExperimentMaxAutocompleteMatches,
|
||||
--
|
||||
2.17.1
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,27 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 15 Dec 2019 17:59:04 +0100
|
||||
Subject: Log DoH timeout
|
||||
|
||||
---
|
||||
net/dns/dns_session.cc | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/dns/dns_session.cc b/net/dns/dns_session.cc
|
||||
--- a/net/dns/dns_session.cc
|
||||
+++ b/net/dns/dns_session.cc
|
||||
@@ -325,9 +325,11 @@ base::TimeDelta DnsSession::NextTimeout(unsigned server_index, int attempt) {
|
||||
}
|
||||
|
||||
base::TimeDelta DnsSession::NextDohTimeout(unsigned doh_server_index) {
|
||||
- return NextTimeoutHelper(
|
||||
+ base::TimeDelta delta = NextTimeoutHelper(
|
||||
GetServerStats(doh_server_index, true /* is _doh_server */),
|
||||
0 /* num_backoffs */);
|
||||
+ LOG(INFO) << "DoH: using timeout: " << delta;
|
||||
+ return delta;
|
||||
}
|
||||
|
||||
base::TimeDelta DnsSession::NextTimeoutHelper(ServerStats* server_stats,
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -2,29 +2,29 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 12 Oct 2017 08:09:24 +0200
|
||||
Subject: Modify default preferences
|
||||
|
||||
Do not hide component extensions
|
||||
---
|
||||
chrome/browser/background/background_mode_manager.cc | 2 +-
|
||||
chrome/browser/chrome_content_browser_client.cc | 2 +-
|
||||
chrome/browser/net/prediction_options.cc | 2 +-
|
||||
chrome/browser/net/prediction_options.h | 2 +-
|
||||
chrome/browser/profiles/profile.cc | 2 +-
|
||||
.../settings/reset_page/reset_profile_dialog.html | 2 +-
|
||||
chrome/browser/signin/signin_promo.cc | 2 +-
|
||||
chrome/browser/ui/browser_ui_prefs.cc | 4 ++--
|
||||
chrome/browser/ui/navigation_correction_tab_observer.cc | 2 +-
|
||||
.../browser/ui/webui/local_discovery/local_discovery_ui.cc | 4 ----
|
||||
chrome/service/cloud_print/connector_settings.cc | 2 +-
|
||||
components/autofill/core/browser/autofill_manager.cc | 14 ++++----------
|
||||
components/autofill/core/common/autofill_prefs.cc | 6 +++---
|
||||
components/bookmarks/browser/bookmark_utils.cc | 4 ++--
|
||||
components/safe_browsing/common/safe_browsing_prefs.cc | 4 ++--
|
||||
extensions/common/extension.cc | 8 --------
|
||||
16 files changed, 22 insertions(+), 40 deletions(-)
|
||||
.../browser/background/background_mode_manager.cc | 2 +-
|
||||
chrome/browser/chrome_content_browser_client.cc | 2 +-
|
||||
chrome/browser/net/prediction_options.cc | 2 +-
|
||||
chrome/browser/net/prediction_options.h | 2 +-
|
||||
chrome/browser/profiles/profile.cc | 2 +-
|
||||
.../settings/reset_page/reset_profile_dialog.html | 2 +-
|
||||
chrome/browser/ui/browser_ui_prefs.cc | 4 ++--
|
||||
.../ui/navigation_correction_tab_observer.cc | 2 +-
|
||||
.../ui/webui/local_discovery/local_discovery_ui.cc | 4 ----
|
||||
chrome/service/cloud_print/connector_settings.cc | 2 +-
|
||||
.../autofill/core/browser/autofill_manager.cc | 14 ++++----------
|
||||
components/autofill/core/common/autofill_prefs.cc | 2 +-
|
||||
components/bookmarks/browser/bookmark_utils.cc | 4 ++--
|
||||
.../safe_browsing/common/safe_browsing_prefs.cc | 4 ++--
|
||||
extensions/common/extension.cc | 8 --------
|
||||
15 files changed, 19 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
|
||||
--- a/chrome/browser/background/background_mode_manager.cc
|
||||
+++ b/chrome/browser/background/background_mode_manager.cc
|
||||
@@ -352,7 +352,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
@@ -302,7 +302,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
|
||||
registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
|
||||
#endif
|
||||
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
|
||||
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
|
||||
@@ -1121,7 +1121,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
|
||||
@@ -1141,7 +1141,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
|
||||
void ChromeContentBrowserClient::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
|
||||
@@ -48,7 +48,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
|
||||
diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
|
||||
--- a/chrome/browser/net/prediction_options.cc
|
||||
+++ b/chrome/browser/net/prediction_options.cc
|
||||
@@ -32,7 +32,7 @@ NetworkPredictionStatus CanPrefetchAndPrerender(
|
||||
@@ -31,7 +31,7 @@ NetworkPredictionStatus CanPrefetchAndPrerender(
|
||||
}
|
||||
return NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK;
|
||||
default:
|
||||
@@ -60,7 +60,7 @@ diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/predi
|
||||
diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/prediction_options.h
|
||||
--- a/chrome/browser/net/prediction_options.h
|
||||
+++ b/chrome/browser/net/prediction_options.h
|
||||
@@ -23,7 +23,7 @@ enum NetworkPredictionOptions {
|
||||
@@ -22,7 +22,7 @@ enum NetworkPredictionOptions {
|
||||
NETWORK_PREDICTION_ALWAYS,
|
||||
NETWORK_PREDICTION_WIFI_ONLY,
|
||||
NETWORK_PREDICTION_NEVER,
|
||||
@@ -72,7 +72,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
|
||||
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
|
||||
--- a/chrome/browser/profiles/profile.cc
|
||||
+++ b/chrome/browser/profiles/profile.cc
|
||||
@@ -139,7 +139,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
|
||||
@@ -149,7 +149,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
|
||||
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSearchSuggestEnabled,
|
||||
@@ -84,8 +84,8 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
|
||||
diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
--- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
@@ -52,7 +52,7 @@
|
||||
</paper-button>
|
||||
@@ -50,7 +50,7 @@
|
||||
</cr-button>
|
||||
</div>
|
||||
<div slot="footer">
|
||||
- <cr-checkbox id="sendSettings" checked>
|
||||
@@ -93,22 +93,10 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h
|
||||
$i18nRaw{resetPageFeedback}</cr-checkbox>
|
||||
</div>
|
||||
</cr-dialog>
|
||||
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
|
||||
--- a/chrome/browser/signin/signin_promo.cc
|
||||
+++ b/chrome/browser/signin/signin_promo.cc
|
||||
@@ -172,7 +172,7 @@ bool IsAutoCloseEnabledInEmbeddedURL(const GURL& url) {
|
||||
|
||||
void RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
- registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, false);
|
||||
registry->RegisterBooleanPref(prefs::kSignInPromoShowNTPBubble, false);
|
||||
registry->RegisterIntegerPref(prefs::kDiceSigninUserMenuPromoCount, 0);
|
||||
}
|
||||
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
|
||||
@@ -68,11 +68,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -67,11 +67,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
|
||||
registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -125,19 +113,19 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
|
||||
diff --git a/chrome/browser/ui/navigation_correction_tab_observer.cc b/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
--- a/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
+++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
@@ -57,7 +57,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
|
||||
@@ -43,7 +43,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {}
|
||||
// static
|
||||
void NavigationCorrectionTabObserver::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* prefs) {
|
||||
prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
|
||||
- true,
|
||||
+ false,
|
||||
- prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, true,
|
||||
+ prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
|
||||
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
@@ -127,10 +127,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
|
||||
@@ -107,10 +107,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kLocalDiscoveryNotificationsEnabled,
|
||||
@@ -163,7 +151,7 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
|
||||
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
|
||||
--- a/components/autofill/core/browser/autofill_manager.cc
|
||||
+++ b/components/autofill/core/browser/autofill_manager.cc
|
||||
@@ -359,10 +359,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
|
||||
@@ -529,10 +529,7 @@ bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
|
||||
bool enabled = IsAutofillEnabled();
|
||||
sync_state_ = personal_data_ ? personal_data_->GetSyncSigninState()
|
||||
: AutofillSyncSigninState::kNumSyncStates;
|
||||
@@ -175,7 +163,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
|
||||
|
||||
return enabled;
|
||||
}
|
||||
@@ -625,10 +622,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
|
||||
@@ -818,10 +815,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
|
||||
// suggestions available.
|
||||
// TODO(mathp): Differentiate between number of suggestions available
|
||||
// (current metric) and number shown to the user.
|
||||
@@ -187,7 +175,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1234,8 +1228,8 @@ void AutofillManager::Reset() {
|
||||
@@ -1450,8 +1444,8 @@ void AutofillManager::Reset() {
|
||||
#if defined(OS_ANDROID) || defined(OS_IOS)
|
||||
autofill_assistant_.Reset();
|
||||
#endif
|
||||
@@ -201,20 +189,7 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
|
||||
diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
|
||||
--- a/components/autofill/core/common/autofill_prefs.cc
|
||||
+++ b/components/autofill/core/common/autofill_prefs.cc
|
||||
@@ -137,10 +137,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
prefs::kAutofillBillingCustomerNumber, 0.0,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillEnabledDeprecated, true,
|
||||
+ prefs::kAutofillEnabledDeprecated, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillProfileEnabled, true,
|
||||
+ prefs::kAutofillProfileEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kAutofillLastVersionDeduped, 0,
|
||||
@@ -153,7 +153,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -152,7 +152,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -226,7 +201,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto
|
||||
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
|
||||
--- a/components/bookmarks/browser/bookmark_utils.cc
|
||||
+++ b/components/bookmarks/browser/bookmark_utils.cc
|
||||
@@ -440,12 +440,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
|
||||
@@ -439,12 +439,12 @@ bool DoesBookmarkContainWords(const base::string16& title,
|
||||
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kShowBookmarkBar,
|
||||
@@ -244,7 +219,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
|
||||
diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
@@ -149,9 +149,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
@@ -169,9 +169,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -259,7 +234,7 @@ diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components
|
||||
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
|
||||
--- a/extensions/common/extension.cc
|
||||
+++ b/extensions/common/extension.cc
|
||||
@@ -367,14 +367,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
@@ -365,14 +365,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
if (is_theme())
|
||||
return false;
|
||||
|
||||
@@ -275,5 +250,5 @@ diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
|
||||
// show packaged apps and platform apps because there are some pieces of
|
||||
// functionality that are only available in chrome://extensions/ but which
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
+725
@@ -0,0 +1,725 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 30 Mar 2018 10:09:03 +0200
|
||||
Subject: Multiple fingerprinting mitigations for canvas, text and client
|
||||
rectangles
|
||||
|
||||
1. getClientRects, getBoundingClientRect, measureText: add fingerprinting mitigation
|
||||
|
||||
Scale the result of Range::getClientRects, Element::getBoundingClientRect and
|
||||
Canvas::measureText by a random +/-3/1000000th of the original value for each
|
||||
float in the returned Rect/Quad.
|
||||
|
||||
It contains improvements from ungoogled-chromium which add two flags:
|
||||
1. --fingerprinting-client-rects-noise to enable fingerprinting deception for Range::getClientRects and Element::getBoundingClientRect
|
||||
2. --fingerprinting-canvas-measuretext-noise to enable fingerprinting deception for Canvas::measureText
|
||||
|
||||
2. Canvas: fingerprinting mitigations for image data and webGL
|
||||
|
||||
Disable webGL renderer info and modify the color data returned by ToBlob,
|
||||
ToDataURL and getImageData so that it will contain randomly manipulated
|
||||
pixels (maximum 20) that slightly change the color of the R,G,B components
|
||||
without a visible effect.
|
||||
|
||||
Credits to Slaviro (https://github.com/Slaviro) for coming up with a better
|
||||
approach to change color components.
|
||||
|
||||
Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data fingerprinting deception
|
||||
---
|
||||
chrome/browser/BUILD.gn | 1 +
|
||||
chrome/browser/about_flags.cc | 13 ++
|
||||
content/browser/BUILD.gn | 1 +
|
||||
.../renderer_host/render_process_host_impl.cc | 4 +
|
||||
content/child/BUILD.gn | 1 +
|
||||
content/child/runtime_features.cc | 8 +
|
||||
.../public/platform/web_runtime_features.h | 3 +
|
||||
.../blink/renderer/core/dom/document.cc | 18 ++
|
||||
.../blink/renderer/core/dom/document.h | 7 +
|
||||
.../blink/renderer/core/dom/element.cc | 8 +
|
||||
third_party/blink/renderer/core/dom/range.cc | 12 +-
|
||||
.../renderer/core/html/canvas/text_metrics.cc | 18 ++
|
||||
.../renderer/core/html/canvas/text_metrics.h | 2 +
|
||||
.../canvas2d/canvas_rendering_context_2d.cc | 8 +-
|
||||
.../webgl/webgl_debug_renderer_info.cc | 4 +-
|
||||
third_party/blink/renderer/platform/BUILD.gn | 5 +-
|
||||
.../platform/exported/web_runtime_features.cc | 12 ++
|
||||
.../platform/graphics/image_data_buffer.cc | 7 +
|
||||
.../platform/graphics/static_bitmap_image.cc | 159 ++++++++++++++++++
|
||||
.../platform/graphics/static_bitmap_image.h | 2 +
|
||||
.../platform/runtime_enabled_features.json5 | 9 +
|
||||
third_party/ungoogled/BUILD.gn | 10 ++
|
||||
third_party/ungoogled/ungoogled_switches.cc | 18 ++
|
||||
third_party/ungoogled/ungoogled_switches.h | 18 ++
|
||||
24 files changed, 343 insertions(+), 5 deletions(-)
|
||||
create mode 100644 third_party/ungoogled/BUILD.gn
|
||||
create mode 100644 third_party/ungoogled/ungoogled_switches.cc
|
||||
create mode 100644 third_party/ungoogled/ungoogled_switches.h
|
||||
|
||||
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
--- a/chrome/browser/BUILD.gn
|
||||
+++ b/chrome/browser/BUILD.gn
|
||||
@@ -2144,6 +2144,7 @@ jumbo_static_library("browser") {
|
||||
"//third_party/metrics_proto",
|
||||
"//third_party/re2",
|
||||
"//third_party/smhasher:cityhash",
|
||||
+ "//third_party/ungoogled:switches",
|
||||
"//third_party/webrtc_overrides",
|
||||
"//third_party/webrtc_overrides:init_webrtc",
|
||||
"//third_party/widevine/cdm:buildflags",
|
||||
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
|
||||
@@ -147,6 +147,7 @@
|
||||
#include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/forcedark/forcedark_switches.h"
|
||||
+#include "third_party/ungoogled/ungoogled_switches.h"
|
||||
#include "third_party/leveldatabase/leveldb_features.h"
|
||||
#include "ui/accessibility/accessibility_features.h"
|
||||
#include "ui/accessibility/accessibility_switches.h"
|
||||
@@ -1466,12 +1467,24 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
|
||||
flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
|
||||
SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
|
||||
+ {"fingerprinting-canvas-image-data-noise",
|
||||
+ "Disable Canvas image data fingerprint deception",
|
||||
+ "Slightly modifies at most 20 pixels in Canvas image data extracted via JS APIs",
|
||||
+ kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kFingerprintingCanvasImageDataNoise)},
|
||||
{"enable-webrtc-stun-origin", flag_descriptions::kWebrtcStunOriginName,
|
||||
flag_descriptions::kWebrtcStunOriginDescription, kOsAll,
|
||||
SINGLE_VALUE_TYPE(switches::kEnableWebRtcStunOrigin)},
|
||||
{"enable-webrtc-hybrid-agc", flag_descriptions::kWebrtcHybridAgcName,
|
||||
flag_descriptions::kWebrtcHybridAgcDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kWebRtcHybridAgc)},
|
||||
+ {"fingerprinting-client-rects-noise",
|
||||
+ "Disable get*ClientRects() fingerprint deception",
|
||||
+ "Scale the output values of Range::getClientRects() and Element::getBoundingClientRect() with a randomly selected factor in the range -0.0003% to 0.0003%, which are recomputed on every document initialization.",
|
||||
+ kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kFingerprintingClientRectsNoise)},
|
||||
+ {"fingerprinting-canvas-measuretext-noise",
|
||||
+ "Disable Canvas::measureText() fingerprint deception",
|
||||
+ "Scale the output values of Canvas::measureText() with a randomly selected factor in the range -0.0003% to 0.0003%, which are recomputed on every document initialization.",
|
||||
+ kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kFingerprintingCanvasMeasureTextNoise)},
|
||||
{"enable-webrtc-new-encode-cpu-load-estimator",
|
||||
flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorName,
|
||||
flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorDescription, kOsAll,
|
||||
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
|
||||
--- a/content/browser/BUILD.gn
|
||||
+++ b/content/browser/BUILD.gn
|
||||
@@ -206,6 +206,7 @@ jumbo_source_set("browser") {
|
||||
"//third_party/libyuv",
|
||||
"//third_party/re2",
|
||||
"//third_party/sqlite",
|
||||
+ "//third_party/ungoogled:switches",
|
||||
"//third_party/webrtc/modules/desktop_capture:primitives",
|
||||
"//third_party/webrtc/rtc_base:rtc_base",
|
||||
"//third_party/zlib",
|
||||
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
|
||||
--- a/content/browser/renderer_host/render_process_host_impl.cc
|
||||
+++ b/content/browser/renderer_host/render_process_host_impl.cc
|
||||
@@ -220,6 +220,7 @@
|
||||
#include "third_party/blink/public/common/page/launching_process_state.h"
|
||||
#include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
|
||||
#include "third_party/blink/public/public_buildflags.h"
|
||||
+#include "third_party/ungoogled/ungoogled_switches.h"
|
||||
#include "third_party/skia/include/core/SkBitmap.h"
|
||||
#include "ui/accessibility/accessibility_switches.h"
|
||||
#include "ui/base/ui_base_switches.h"
|
||||
@@ -2977,6 +2978,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
|
||||
switches::kDisablePreferCompositingToLCDText,
|
||||
switches::kDisableDatabases,
|
||||
switches::kDisableFileSystem,
|
||||
+ switches::kFingerprintingClientRectsNoise,
|
||||
+ switches::kFingerprintingCanvasMeasureTextNoise,
|
||||
+ switches::kFingerprintingCanvasImageDataNoise,
|
||||
switches::kDisableFrameRateLimit,
|
||||
switches::kDisableGpuMemoryBufferVideoFrames,
|
||||
switches::kDisableImageAnimationResync,
|
||||
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
|
||||
--- a/content/child/BUILD.gn
|
||||
+++ b/content/child/BUILD.gn
|
||||
@@ -123,6 +123,7 @@ target(link_target_type, "child") {
|
||||
"//third_party/blink/public/common",
|
||||
"//third_party/blink/public/strings",
|
||||
"//third_party/ced",
|
||||
+ "//third_party/ungoogled:switches",
|
||||
"//third_party/zlib/google:compression_utils",
|
||||
"//ui/base",
|
||||
"//ui/events/blink",
|
||||
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
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "services/network/public/cpp/features.h"
|
||||
#include "services/network/public/cpp/network_switches.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
+#include "third_party/ungoogled/ungoogled_switches.h"
|
||||
#include "third_party/blink/public/platform/web_runtime_features.h"
|
||||
#include "ui/accessibility/accessibility_features.h"
|
||||
#include "ui/base/ui_base_features.h"
|
||||
@@ -513,6 +514,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
|
||||
if (ui::IsOverlayScrollbarEnabled())
|
||||
WebRuntimeFeatures::EnableOverlayScrollbars(true);
|
||||
|
||||
+ WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(
|
||||
+ !command_line.HasSwitch(switches::kFingerprintingClientRectsNoise));
|
||||
+ WebRuntimeFeatures::EnableFingerprintingCanvasMeasureTextNoise(
|
||||
+ !command_line.HasSwitch(switches::kFingerprintingCanvasMeasureTextNoise));
|
||||
+ WebRuntimeFeatures::EnableFingerprintingCanvasImageDataNoise(
|
||||
+ !command_line.HasSwitch(switches::kFingerprintingCanvasImageDataNoise));
|
||||
+
|
||||
WebRuntimeFeatures::EnableFormControlsRefresh(
|
||||
features::IsFormControlsRefreshEnabled());
|
||||
|
||||
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
|
||||
--- a/third_party/blink/public/platform/web_runtime_features.h
|
||||
+++ b/third_party/blink/public/platform/web_runtime_features.h
|
||||
@@ -229,6 +229,9 @@ class WebRuntimeFeatures {
|
||||
BLINK_PLATFORM_EXPORT static void EnableMergeBlockingNonBlockingPools(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableFingerprintingClientRectsNoise(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasMeasureTextNoise(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasImageDataNoise(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableShadowDOMV0(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableCustomElementsV0(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableHTMLImports(bool);
|
||||
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
|
||||
--- a/third_party/blink/renderer/core/dom/document.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/document.cc
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "base/auto_reset.h"
|
||||
#include "base/macros.h"
|
||||
#include "base/optional.h"
|
||||
+#include "base/rand_util.h"
|
||||
#include "base/time/time.h"
|
||||
#include "cc/input/overscroll_behavior.h"
|
||||
#include "cc/input/scroll_snap_data.h"
|
||||
@@ -2794,6 +2795,23 @@ void Document::UpdateStyleAndLayoutTree() {
|
||||
#if DCHECK_IS_ON()
|
||||
AssertLayoutTreeUpdated(*this);
|
||||
#endif
|
||||
+
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
|
||||
+ // Precompute -0.0003% to 0.0003% noise factor for get*ClientRect*() fingerprinting
|
||||
+ noise_factor_x_ = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ noise_factor_y_ = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ } else {
|
||||
+ noise_factor_x_ = 1;
|
||||
+ noise_factor_y_ = 1;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+double Document::GetNoiseFactorX() {
|
||||
+ return noise_factor_x_;
|
||||
+}
|
||||
+
|
||||
+double Document::GetNoiseFactorY() {
|
||||
+ return noise_factor_y_;
|
||||
}
|
||||
|
||||
void Document::UpdateActiveStyle() {
|
||||
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
|
||||
--- a/third_party/blink/renderer/core/dom/document.h
|
||||
+++ b/third_party/blink/renderer/core/dom/document.h
|
||||
@@ -414,6 +414,10 @@ class CORE_EXPORT Document : public ContainerNode,
|
||||
has_xml_declaration_ = has_xml_declaration ? 1 : 0;
|
||||
}
|
||||
|
||||
+ // Values for get*ClientRect fingerprint deception
|
||||
+ double GetNoiseFactorX();
|
||||
+ double GetNoiseFactorY();
|
||||
+
|
||||
String visibilityState() const;
|
||||
bool IsPageVisible() const;
|
||||
bool hidden() const;
|
||||
@@ -1936,6 +1940,9 @@ class CORE_EXPORT Document : public ContainerNode,
|
||||
|
||||
base::ElapsedTimer start_time_;
|
||||
|
||||
+ double noise_factor_x_;
|
||||
+ double noise_factor_y_;
|
||||
+
|
||||
Member<ScriptRunner> script_runner_;
|
||||
|
||||
HeapVector<Member<ScriptElementBase>> current_script_stack_;
|
||||
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
|
||||
--- a/third_party/blink/renderer/core/dom/element.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/element.cc
|
||||
@@ -1877,6 +1877,11 @@ DOMRectList* Element::getClientRects() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
|
||||
quads, *element_layout_object);
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(GetDocument().GetNoiseFactorX(), GetDocument().GetNoiseFactorY());
|
||||
+ }
|
||||
+ }
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
@@ -1894,6 +1899,9 @@ DOMRect* Element::getBoundingClientRect() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
|
||||
*element_layout_object);
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
|
||||
+ result.Scale(GetDocument().GetNoiseFactorX(), GetDocument().GetNoiseFactorY());
|
||||
+ }
|
||||
return DOMRect::FromFloatRect(result);
|
||||
}
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
|
||||
--- a/third_party/blink/renderer/core/dom/range.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/range.cc
|
||||
@@ -1631,11 +1631,21 @@ DOMRectList* Range::getClientRects() const {
|
||||
Vector<FloatQuad> quads;
|
||||
GetBorderAndTextQuads(quads);
|
||||
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(owner_document_->GetNoiseFactorX(), owner_document_->GetNoiseFactorY());
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
DOMRect* Range::getBoundingClientRect() const {
|
||||
- return DOMRect::FromFloatRect(BoundingRect());
|
||||
+ auto rect = BoundingRect();
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
|
||||
+ rect.Scale(owner_document_->GetNoiseFactorX(), owner_document_->GetNoiseFactorY());
|
||||
+ }
|
||||
+ return DOMRect::FromFloatRect(rect);
|
||||
}
|
||||
|
||||
// TODO(editing-dev): We should make
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
|
||||
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
|
||||
@@ -54,6 +54,24 @@ TextMetrics::TextMetrics(const Font& font,
|
||||
Update(font, direction, baseline, align, text);
|
||||
}
|
||||
|
||||
+void TextMetrics::Shuffle(const double factor) {
|
||||
+ // x-direction
|
||||
+ width_ *= factor;
|
||||
+ actual_bounding_box_left_ *= factor;
|
||||
+ actual_bounding_box_right_ *= factor;
|
||||
+
|
||||
+ // y-direction
|
||||
+ font_bounding_box_ascent_ *= factor;
|
||||
+ font_bounding_box_descent_ *= factor;
|
||||
+ actual_bounding_box_ascent_ *= factor;
|
||||
+ actual_bounding_box_descent_ *= factor;
|
||||
+ em_height_ascent_ *= factor;
|
||||
+ em_height_descent_ *= factor;
|
||||
+ baselines_->setAlphabetic(baselines_->alphabetic() * factor);
|
||||
+ baselines_->setHanging(baselines_->hanging() * factor);
|
||||
+ baselines_->setIdeographic(baselines_->ideographic() * factor);
|
||||
+}
|
||||
+
|
||||
void TextMetrics::Update(const Font& font,
|
||||
const TextDirection& direction,
|
||||
const TextBaseline& baseline,
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_party/blink/renderer/core/html/canvas/text_metrics.h
|
||||
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.h
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
|
||||
@@ -64,6 +64,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
|
||||
|
||||
void Trace(Visitor*) override;
|
||||
|
||||
+ void Shuffle(const double factor);
|
||||
+
|
||||
private:
|
||||
void Update(const Font&,
|
||||
const TextDirection&,
|
||||
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
@@ -818,9 +818,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
|
||||
else
|
||||
direction = ToTextDirection(GetState().GetDirection(), canvas());
|
||||
|
||||
- return MakeGarbageCollected<TextMetrics>(font, direction,
|
||||
+ TextMetrics* text_metrics = MakeGarbageCollected<TextMetrics>(font, direction,
|
||||
GetState().GetTextBaseline(),
|
||||
GetState().GetTextAlign(), text);
|
||||
+
|
||||
+ // Scale text metrics if enabled
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingCanvasMeasureTextNoiseEnabled()) {
|
||||
+ text_metrics->Shuffle(canvas()->GetDocument().GetNoiseFactorX());
|
||||
+ }
|
||||
+ return text_metrics;
|
||||
}
|
||||
|
||||
void CanvasRenderingContext2D::DrawTextInternal(
|
||||
diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
--- a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
+++ b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
@@ -37,11 +37,11 @@ WebGLExtensionName WebGLDebugRendererInfo::GetName() const {
|
||||
|
||||
WebGLDebugRendererInfo* WebGLDebugRendererInfo::Create(
|
||||
WebGLRenderingContextBase* context) {
|
||||
- return MakeGarbageCollected<WebGLDebugRendererInfo>(context);
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
bool WebGLDebugRendererInfo::Supported(WebGLRenderingContextBase*) {
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
const char* WebGLDebugRendererInfo::ExtensionName() {
|
||||
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
|
||||
@@ -1454,7 +1454,9 @@ jumbo_component("platform") {
|
||||
"//third_party/blink/renderer:non_test_config",
|
||||
]
|
||||
|
||||
- include_dirs = []
|
||||
+ include_dirs = [
|
||||
+ "//third_party/skia/include/private", # For shuffler in graphics/static_bitmap_image.cc
|
||||
+ ]
|
||||
|
||||
public_deps = [
|
||||
":blink_platform_public_deps",
|
||||
@@ -1487,6 +1489,7 @@ jumbo_component("platform") {
|
||||
"//third_party/blink/public/common",
|
||||
"//third_party/blink/public/mojom:embedded_frame_sink_mojo_bindings_blink",
|
||||
"//third_party/ced",
|
||||
+ "//third_party/ungoogled:switches",
|
||||
"//third_party/emoji-segmenter",
|
||||
"//third_party/icu",
|
||||
"//third_party/libyuv",
|
||||
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
@@ -704,4 +704,16 @@ void WebRuntimeFeatures::EnableAcceleratedSmallCanvases(bool enable) {
|
||||
RuntimeEnabledFeatures::SetAcceleratedSmallCanvasesEnabled(enable);
|
||||
}
|
||||
|
||||
+void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetFingerprintingClientRectsNoiseEnabled(enable);
|
||||
+}
|
||||
+
|
||||
+void WebRuntimeFeatures::EnableFingerprintingCanvasMeasureTextNoise(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetFingerprintingCanvasMeasureTextNoiseEnabled(enable);
|
||||
+}
|
||||
+
|
||||
+void WebRuntimeFeatures::EnableFingerprintingCanvasImageDataNoise(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetFingerprintingCanvasImageDataNoiseEnabled(enable);
|
||||
+}
|
||||
+
|
||||
} // namespace blink
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
--- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
+++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
@@ -35,6 +35,8 @@
|
||||
#include <memory>
|
||||
|
||||
#include "base/memory/ptr_util.h"
|
||||
+#include "base/rand_util.h"
|
||||
+#include "base/logging.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
|
||||
#include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
|
||||
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||
@@ -127,6 +129,11 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
|
||||
const SkPixmap& pixmap) const {
|
||||
DCHECK(is_valid_);
|
||||
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
|
||||
+ // shuffle subchannel color data within the pixmap
|
||||
+ StaticBitmapImage::ShuffleSubchannelColorData(pixmap_.writable_addr(), pixmap_.info(), 0, 0);
|
||||
+ }
|
||||
+
|
||||
if (mime_type == kMimeTypeJpeg) {
|
||||
SkJpegEncoder::Options options;
|
||||
options.fQuality = ImageEncoder::ComputeJpegQuality(quality);
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+#include "base/logging.h"
|
||||
#include "base/numerics/checked_math.h"
|
||||
#include "gpu/command_buffer/client/gles2_interface.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
|
||||
@@ -11,12 +13,14 @@
|
||||
#include "third_party/blink/renderer/platform/graphics/image_observer.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/paint/paint_image.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/unaccelerated_static_bitmap_image.h"
|
||||
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||
#include "third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_contents.h"
|
||||
#include "third_party/skia/include/core/SkCanvas.h"
|
||||
#include "third_party/skia/include/core/SkImage.h"
|
||||
#include "third_party/skia/include/core/SkPaint.h"
|
||||
#include "third_party/skia/include/core/SkSurface.h"
|
||||
#include "third_party/skia/include/gpu/GrContext.h"
|
||||
+#include "third_party/skia/include/private/SkColorData.h"
|
||||
#include "v8/include/v8.h"
|
||||
|
||||
namespace blink {
|
||||
@@ -141,10 +145,165 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
|
||||
DCHECK(read_pixels_successful ||
|
||||
!sk_image->bounds().intersect(SkIRect::MakeXYWH(
|
||||
rect.X(), rect.Y(), info.width(), info.height())));
|
||||
+
|
||||
+ if (RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
|
||||
+ ShuffleSubchannelColorData(result.Data(), info, rect.X(), rect.Y());
|
||||
+ }
|
||||
+
|
||||
result.Transfer(dest_contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
+// set the component to maximum-delta if it is >= maximum, or add to existing color component (color + delta)
|
||||
+#define shuffleComponent(color, max, delta) ( (color) >= (max) ? ((max)-(delta)) : ((color)+(delta)) )
|
||||
+
|
||||
+#define writable_addr(T, p, stride, x, y) (T*)((const char *)p + y * stride + x * sizeof(T))
|
||||
+
|
||||
+void StaticBitmapImage::ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY) {
|
||||
+ auto w = info.width() - srcX, h = info.height() - srcY;
|
||||
+
|
||||
+ // skip tiny images; info.width()/height() can also be 0
|
||||
+ if ((w < 8) || (h < 8)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // generate the first random number here
|
||||
+ double shuffleX = base::RandDouble();
|
||||
+
|
||||
+ // cap maximum pixels to change
|
||||
+ auto pixels = (w + h) / 128;
|
||||
+ if (pixels > 20) {
|
||||
+ pixels = 20;
|
||||
+ } else if (pixels < 2) {
|
||||
+ pixels = 2;
|
||||
+ }
|
||||
+
|
||||
+ auto colorType = info.colorType();
|
||||
+ auto fRowBytes = info.minRowBytes(); // stride
|
||||
+
|
||||
+ DLOG(INFO) << "BRM: ShuffleSubchannelColorData() w=" << w << " h=" << h << " colorType=" << colorType << " fRowBytes=" << fRowBytes;
|
||||
+
|
||||
+ // second random number (for y/height)
|
||||
+ double shuffleY = base::RandDouble();
|
||||
+
|
||||
+ // calculate random coordinates using bisection
|
||||
+ auto currentW = w, currentH = h;
|
||||
+ for(;pixels >= 0; pixels--) {
|
||||
+ int x = currentW * shuffleX, y = currentH * shuffleY;
|
||||
+
|
||||
+ // calculate randomisation amounts for each RGB component
|
||||
+ uint8_t shuffleR = base::RandInt(0, 4);
|
||||
+ uint8_t shuffleG = (shuffleR + x) % 4;
|
||||
+ uint8_t shuffleB = (shuffleG + y) % 4;
|
||||
+
|
||||
+ // manipulate pixel data to slightly change the R, G, B components
|
||||
+ switch (colorType) {
|
||||
+ case kAlpha_8_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint8_t, addr, fRowBytes, x, y);
|
||||
+ auto r = SkColorGetR(*pixel), g = SkColorGetG(*pixel), b = SkColorGetB(*pixel), a = SkColorGetA(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = SkColorSetARGB(a, r, g, b);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kGray_8_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint8_t, addr, fRowBytes, x, y);
|
||||
+ *pixel = shuffleComponent(*pixel, UINT8_MAX-1, shuffleB);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kRGB_565_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint16_t, addr, fRowBytes, x, y);
|
||||
+ unsigned r = SkPacked16ToR32(*pixel);
|
||||
+ unsigned g = SkPacked16ToG32(*pixel);
|
||||
+ unsigned b = SkPacked16ToB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, 31, shuffleR);
|
||||
+ g = shuffleComponent(g, 63, shuffleG);
|
||||
+ b = shuffleComponent(b, 31, shuffleB);
|
||||
+
|
||||
+ unsigned r16 = (r & SK_R16_MASK) << SK_R16_SHIFT;
|
||||
+ unsigned g16 = (g & SK_G16_MASK) << SK_G16_SHIFT;
|
||||
+ unsigned b16 = (b & SK_B16_MASK) << SK_B16_SHIFT;
|
||||
+
|
||||
+ *pixel = r16 | g16 | b16;
|
||||
+ }
|
||||
+ break;
|
||||
+ case kARGB_4444_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint16_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA4444(*pixel), r = SkGetPackedR4444(*pixel), g = SkGetPackedG4444(*pixel), b = SkGetPackedB4444(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, 15, shuffleR);
|
||||
+ g = shuffleComponent(g, 15, shuffleG);
|
||||
+ b = shuffleComponent(b, 15, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ unsigned a4 = (a & 0xF) << SK_A4444_SHIFT;
|
||||
+ unsigned r4 = (r & 0xF) << SK_R4444_SHIFT;
|
||||
+ unsigned g4 = (g & 0xF) << SK_G4444_SHIFT;
|
||||
+ unsigned b4 = (b & 0xF) << SK_B4444_SHIFT;
|
||||
+
|
||||
+ *pixel = r4 | b4 | g4 | a4;
|
||||
+ }
|
||||
+ break;
|
||||
+ case kRGBA_8888_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint32_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA32(*pixel), r = SkGetPackedR32(*pixel), g = SkGetPackedG32(*pixel), b = SkGetPackedB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = (a << SK_A32_SHIFT) | (r << SK_R32_SHIFT) |
|
||||
+ (g << SK_G32_SHIFT) | (b << SK_B32_SHIFT);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kBGRA_8888_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint32_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA32(*pixel), b = SkGetPackedR32(*pixel), g = SkGetPackedG32(*pixel), r = SkGetPackedB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = (a << SK_BGRA_A32_SHIFT) | (r << SK_BGRA_R32_SHIFT) |
|
||||
+ (g << SK_BGRA_G32_SHIFT) | (b << SK_BGRA_B32_SHIFT);
|
||||
+ }
|
||||
+ break;
|
||||
+ default:
|
||||
+ // the remaining formats are not expected to be used in Chromium
|
||||
+ LOG(WARNING) << "BRM: ShuffleSubchannelColorData(): Ignoring pixel format";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // keep bisecting or reset current width/height as needed
|
||||
+ if (x == 0) {
|
||||
+ currentW = w;
|
||||
+ } else {
|
||||
+ currentW = x;
|
||||
+ }
|
||||
+ if (y == 0) {
|
||||
+ currentH = h;
|
||||
+ } else {
|
||||
+ currentH = y;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#undef writable_addr
|
||||
+#undef shuffleComponent
|
||||
+
|
||||
const gpu::SyncToken& StaticBitmapImage::GetSyncToken() const {
|
||||
static const gpu::SyncToken sync_token;
|
||||
return sync_token;
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
@@ -44,6 +44,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
|
||||
static scoped_refptr<StaticBitmapImage> Create(sk_sp<SkData> data,
|
||||
const SkImageInfo&);
|
||||
|
||||
+ static void ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY);
|
||||
+
|
||||
bool IsStaticBitmapImage() const override { return true; }
|
||||
|
||||
// Methods overridden by all sub-classes
|
||||
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
|
||||
@@ -683,6 +683,15 @@
|
||||
name: "FetchMetadataDestination",
|
||||
status: "experimental"
|
||||
},
|
||||
+ {
|
||||
+ name: "FingerprintingClientRectsNoise",
|
||||
+ },
|
||||
+ {
|
||||
+ name: "FingerprintingCanvasMeasureTextNoise",
|
||||
+ },
|
||||
+ {
|
||||
+ name: "FingerprintingCanvasImageDataNoise",
|
||||
+ },
|
||||
{
|
||||
name: "FileHandling",
|
||||
// NativeFileSystem is in Origin Trial, which doesn't support having
|
||||
diff --git a/third_party/ungoogled/BUILD.gn b/third_party/ungoogled/BUILD.gn
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/ungoogled/BUILD.gn
|
||||
@@ -0,0 +1,10 @@
|
||||
+# Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
|
||||
+# Use of this source code is governed by a BSD-style license that can be
|
||||
+# found in the LICENSE file.
|
||||
+
|
||||
+component("switches") {
|
||||
+ sources = [
|
||||
+ "ungoogled_switches.h",
|
||||
+ "ungoogled_switches.cc",
|
||||
+ ]
|
||||
+}
|
||||
diff --git a/third_party/ungoogled/ungoogled_switches.cc b/third_party/ungoogled/ungoogled_switches.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/ungoogled/ungoogled_switches.cc
|
||||
@@ -0,0 +1,18 @@
|
||||
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+#include "third_party/ungoogled/ungoogled_switches.h"
|
||||
+
|
||||
+namespace switches {
|
||||
+
|
||||
+// Enable fingerprinting deception for getClientRects and getBoundingClientRect
|
||||
+const char kFingerprintingClientRectsNoise[] = "fingerprinting-client-rects-noise";
|
||||
+
|
||||
+// Enable fingerprinting deception for measureText
|
||||
+const char kFingerprintingCanvasMeasureTextNoise[] = "fingerprinting-canvas-measuretext-noise";
|
||||
+
|
||||
+// Enable fingerprinting deception for Canvas image data
|
||||
+const char kFingerprintingCanvasImageDataNoise[] = "fingerprinting-canvas-image-data-noise";
|
||||
+
|
||||
+} // namespace switches
|
||||
diff --git a/third_party/ungoogled/ungoogled_switches.h b/third_party/ungoogled/ungoogled_switches.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/ungoogled/ungoogled_switches.h
|
||||
@@ -0,0 +1,18 @@
|
||||
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
|
||||
+// Use of this source code is governed by a BSD-style license that can be
|
||||
+// found in the LICENSE file.
|
||||
+
|
||||
+// Defines all the fingerprinting command-line switches.
|
||||
+
|
||||
+#ifndef THIRD_PARTY_UNGOOGLED_FINGERPRINTING_SWITCHES_H_
|
||||
+#define THIRD_PARTY_UNGOOGLED_FINGERPRINTING_SWITCHES_H_
|
||||
+
|
||||
+namespace switches {
|
||||
+
|
||||
+extern const char kFingerprintingClientRectsNoise[];
|
||||
+extern const char kFingerprintingCanvasMeasureTextNoise[];
|
||||
+extern const char kFingerprintingCanvasImageDataNoise[];
|
||||
+
|
||||
+}
|
||||
+
|
||||
+#endif // THIRD_PARTY_UNGOOGLED_FINGERPRINTING_SWITCHES_H_
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: Never fetch popular sites
|
||||
diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/popular_sites_impl.cc
|
||||
--- a/components/ntp_tiles/popular_sites_impl.cc
|
||||
+++ b/components/ntp_tiles/popular_sites_impl.cc
|
||||
@@ -287,6 +287,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
|
||||
@@ -283,6 +283,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
|
||||
DCHECK(!callback_);
|
||||
callback_ = callback;
|
||||
|
||||
@@ -23,5 +23,5 @@ diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/p
|
||||
prefs_->GetInt64(prefs::kPopularSitesLastDownloadPref));
|
||||
const base::TimeDelta time_since_last_download =
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: Never send any crash upload data
|
||||
diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc
|
||||
--- a/chrome/browser/tracing/crash_service_uploader.cc
|
||||
+++ b/chrome/browser/tracing/crash_service_uploader.cc
|
||||
@@ -127,6 +127,9 @@ void TraceCrashServiceUploader::DoUpload(
|
||||
@@ -125,6 +125,9 @@ void TraceCrashServiceUploader::DoUpload(
|
||||
std::unique_ptr<const base::DictionaryValue> metadata,
|
||||
const UploadProgressCallback& progress_callback,
|
||||
UploadDoneCallback done_callback) {
|
||||
@@ -20,5 +20,5 @@ diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/t
|
||||
|
||||
progress_callback_ = progress_callback;
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,21 +3,21 @@ Date: Sun, 28 Oct 2018 14:11:50 +0100
|
||||
Subject: Offer builtin autocomplete for chrome://flags
|
||||
|
||||
---
|
||||
chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc | 2 ++
|
||||
.../browser/autocomplete/chrome_autocomplete_provider_client.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
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
|
||||
@@ -234,6 +234,8 @@ std::vector<base::string16>
|
||||
@@ -254,6 +254,8 @@ std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
|
||||
std::vector<base::string16>
|
||||
ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
|
||||
std::vector<base::string16> builtins_to_provide;
|
||||
builtins_to_provide.push_back(
|
||||
+ base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
|
||||
+ builtins_to_provide.push_back(
|
||||
+ base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
|
||||
builtins_to_provide.push_back(
|
||||
base::ASCIIToUTF16(chrome::kChromeUIChromeURLsURL));
|
||||
#if !defined(OS_ANDROID)
|
||||
builtins_to_provide.push_back(
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -3,26 +3,34 @@ Date: Thu, 11 Jan 2018 13:27:34 +0200
|
||||
Subject: Open YouTube links in Bromite
|
||||
|
||||
---
|
||||
.../chrome/browser/externalnav/ExternalNavigationHandler.java | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
.../browser/externalnav/ExternalNavigationHandler.java | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
|
||||
@@ -400,6 +400,13 @@ public class ExternalNavigationHandler {
|
||||
return OverrideUrlLoadingResult.NO_OVERRIDE;
|
||||
@@ -402,6 +402,7 @@ public class ExternalNavigationHandler {
|
||||
Uri.parse(WebView.SCHEME_TEL
|
||||
+ params.getUrl().substring(WTAI_MC_URL_PREFIX.length()))),
|
||||
false);
|
||||
+
|
||||
if (DEBUG) Log.i(TAG, "wtai:// link handled");
|
||||
RecordUserAction.record("Android.PhoneIntent");
|
||||
return true;
|
||||
@@ -745,6 +746,13 @@ public class ExternalNavigationHandler {
|
||||
return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
|
||||
}
|
||||
|
||||
+ // Force to open YouTube urls in Bromite
|
||||
+ String intentPackageName = intent.getPackage();
|
||||
+ // force to open YouTube urls in Bromite
|
||||
+ String intentPackageName = targetIntent.getPackage();
|
||||
+ if (intentPackageName != null && intentPackageName.equals("com.google.android.youtube")) {
|
||||
+ if (DEBUG) Log.i(TAG, "NO_OVERRIDE: YouTube URL for YouTube app");
|
||||
+ return OverrideUrlLoadingResult.NO_OVERRIDE;
|
||||
+ }
|
||||
+
|
||||
// Sanitize the Intent, ensuring web pages can not bypass browser
|
||||
// security (only access to BROWSABLE activities).
|
||||
intent.addCategory(Intent.CATEGORY_BROWSABLE);
|
||||
// This should come after file intents, but before any returns of
|
||||
// OVERRIDE_WITH_EXTERNAL_INTENT.
|
||||
if (externalIntentRequestsDisabled()) return OverrideUrlLoadingResult.NO_OVERRIDE;
|
||||
--
|
||||
2.11.0
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 2 Apr 2018 11:36:02 +0200
|
||||
Subject: Punt the Widevine version string
|
||||
|
||||
Originally from http://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromium-browser.wily.beta/view/head:/debian/patches/fix_building_widevinecdm_with_chromium.patch
|
||||
---
|
||||
chrome/common/chrome_content_client.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
|
||||
--- a/chrome/common/chrome_content_client.cc
|
||||
+++ b/chrome/common/chrome_content_client.cc
|
||||
@@ -521,7 +521,7 @@ void ChromeContentClient::AddContentDecryptionModules(
|
||||
base::FilePath cdm_path;
|
||||
content::CdmCapability capability;
|
||||
if (IsWidevineAvailable(&cdm_path, &capability)) {
|
||||
- const base::Version version(WIDEVINE_CDM_VERSION_STRING);
|
||||
+ const base::Version version("1.0.123.456");
|
||||
DCHECK(version.IsValid());
|
||||
|
||||
cdms->push_back(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 28 Apr 2018 08:30:26 +0200
|
||||
Subject: Reduce HTTP headers in DoH requests to bare minimum
|
||||
|
||||
Serve DoH requests with maximum priority.
|
||||
---
|
||||
net/base/load_flags_list.h | 6 ++++++
|
||||
net/dns/dns_transaction.cc | 3 ++-
|
||||
net/url_request/url_request_http_job.cc | 16 +++++++++++-----
|
||||
3 files changed, 19 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
|
||||
--- a/net/base/load_flags_list.h
|
||||
+++ b/net/base/load_flags_list.h
|
||||
@@ -106,6 +106,12 @@ LOAD_FLAG(SUPPORT_ASYNC_REVALIDATION, 1 << 16)
|
||||
// the LOAD_CAN_USE_RESTRICTED_PREFETCH load flag.
|
||||
LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 17)
|
||||
|
||||
+// This load will not send Accept-Language or User-Agent headers, and not
|
||||
+// advertise brotli encoding.
|
||||
+// Used to comply with IETF (draft) DNS-over-HTTPS:
|
||||
+// "Implementors SHOULD NOT set non-essential HTTP headers in DoH client requests."
|
||||
+LOAD_FLAG(MINIMAL_HEADERS, 1 << 18)
|
||||
+
|
||||
// This flag must be set on requests that are allowed to reuse cache entries
|
||||
// that are marked as RESTRICTED_PREFETCH. Requests without this flag cannot
|
||||
// reuse restricted prefetch responses in the cache. Restricted response reuse
|
||||
diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
|
||||
--- a/net/dns/dns_transaction.cc
|
||||
+++ b/net/dns/dns_transaction.cc
|
||||
@@ -403,6 +403,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
|
||||
// perspective to prevent the client from sending AIA requests).
|
||||
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
|
||||
LOAD_BYPASS_PROXY |
|
||||
+ LOAD_IGNORE_LIMITS | LOAD_MINIMAL_HEADERS |
|
||||
LOAD_DISABLE_CERT_NETWORK_FETCHES);
|
||||
request_->set_allow_credentials(false);
|
||||
}
|
||||
@@ -1004,7 +1005,7 @@ class DnsTransactionImpl : public DnsTransaction,
|
||||
had_tcp_attempt_(false),
|
||||
first_server_index_(0),
|
||||
url_request_context_(url_request_context),
|
||||
- request_priority_(DEFAULT_PRIORITY) {
|
||||
+ request_priority_(MAXIMUM_PRIORITY) {
|
||||
DCHECK(session_.get());
|
||||
DCHECK(!hostname_.empty());
|
||||
DCHECK(!callback_.is_null());
|
||||
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
|
||||
@@ -354,6 +354,7 @@ void URLRequestHttpJob::Start() {
|
||||
// plugin could set a referrer although sending the referrer is inhibited.
|
||||
request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
|
||||
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
|
||||
// Our consumer should have made sure that this is a safe referrer. See for
|
||||
// instance WebCore::FrameLoader::HideReferrer.
|
||||
if (referrer.is_valid()) {
|
||||
@@ -369,11 +370,14 @@ void URLRequestHttpJob::Start() {
|
||||
request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
|
||||
referer_value);
|
||||
}
|
||||
+ }
|
||||
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
|
||||
request_info_.extra_headers.SetHeaderIfMissing(
|
||||
HttpRequestHeaders::kUserAgent,
|
||||
http_user_agent_settings_ ?
|
||||
http_user_agent_settings_->GetUserAgent() : std::string());
|
||||
+ }
|
||||
|
||||
AddExtraHeaders();
|
||||
AddCookieHeaderAndStart();
|
||||
@@ -588,10 +592,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
|
||||
} else {
|
||||
// Advertise "br" encoding only if transferred data is opaque to proxy.
|
||||
bool advertise_brotli = false;
|
||||
- if (request()->context()->enable_brotli()) {
|
||||
- if (request()->url().SchemeIsCryptographic() ||
|
||||
- IsLocalhost(request()->url())) {
|
||||
- advertise_brotli = true;
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
|
||||
+ if (request()->context()->enable_brotli()) {
|
||||
+ if (request()->url().SchemeIsCryptographic() ||
|
||||
+ IsLocalhost(request()->url())) {
|
||||
+ advertise_brotli = true;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -609,7 +615,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
|
||||
}
|
||||
}
|
||||
|
||||
- if (http_user_agent_settings_) {
|
||||
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS) && http_user_agent_settings_) {
|
||||
// Only add default Accept-Language if the request didn't have it
|
||||
// specified.
|
||||
std::string accept_language =
|
||||
--
|
||||
2.17.1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user