Compare commits
38
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3cf1a58964 | ||
|
|
ef1fa37452 | ||
|
|
7cb31f2c7a | ||
|
|
252be1a850 | ||
|
|
4cef551b01 | ||
|
|
dbc43b5c36 | ||
|
|
92aba62fdf | ||
|
|
d8db805929 | ||
|
|
9ea0219fce | ||
|
|
776d4f859e | ||
|
|
7b7a1a4c75 | ||
|
|
ac218f929b | ||
|
|
efe90584df | ||
|
|
1917072116 | ||
|
|
980053e78f | ||
|
|
ffa2849e2f | ||
|
|
0e797ac643 | ||
|
|
fc14caf48a | ||
|
|
494b396f9e | ||
|
|
f007778846 | ||
|
|
b37f2f7b85 | ||
|
|
10661f0b36 | ||
|
|
ff372ffe53 | ||
|
|
c33f289a21 | ||
|
|
d9a4d2dc88 | ||
|
|
6e86d3db21 | ||
|
|
b11d180a37 | ||
|
|
032d2ef9f2 | ||
|
|
1951b38c64 | ||
|
|
41c5c0f0cf | ||
|
|
d0bab4a8da | ||
|
|
ef0cca39ce | ||
|
|
d94f36a0f7 | ||
|
|
3b1875efed | ||
|
|
acba336f2e | ||
|
|
61b6f9ee1d | ||
|
|
210a14d7ed | ||
|
|
91cc88eb37 |
@@ -0,0 +1,35 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a Bromite bug report
|
||||
|
||||
---
|
||||
|
||||
**Version**
|
||||
|
||||
Version: `v67...`
|
||||
Arch: `arm` or `arm64` or `x86`
|
||||
|
||||
**Is the bug reproducible with latest version?**
|
||||
`Bug must be reproducible with latest version`
|
||||
|
||||
**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`
|
||||
|
||||
**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.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest a privacy-related idea for this project
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to privacy?**
|
||||
Only privacy-related feature requests are considered.
|
||||
|
||||
**Is there a patch available for this feature somewhere?**
|
||||
...
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
+61
-26
@@ -1,79 +1,122 @@
|
||||
# 68.0.3440.87
|
||||
* add export button to Bookmarks activity page
|
||||
|
||||
# 68.0.3440.81
|
||||
* fix issue with filters with an excluded domain option
|
||||
|
||||
# 68.0.3440.72
|
||||
* fix crash during some canvas rendering (fixes https://github.com/bromite/bromite/issues/95)
|
||||
* new approach to adblock filtering (fixes https://github.com/bromite/bromite/issues/90)
|
||||
* add a flag to enable higher maximum connections per host limit (fixes https://github.com/bromite/bromite/issues/61)
|
||||
* add a flag to disable custom tab intents (fixes https://github.com/bromite/bromite/issues/81)
|
||||
* add a flag to have an always-empty new tab page (fixes https://github.com/bromite/bromite/issues/82)
|
||||
* reduced randomization of TextMetrics and ClientRects results
|
||||
* disable ads metrics by default
|
||||
* disable all field trials (fixes https://github.com/bromite/bromite/issues/83)
|
||||
* re-introduced own battery API patch (fixes https://github.com/bromite/bromite/issues/80)
|
||||
|
||||
# 67.0.3396.107
|
||||
* removed patch to use Android Media Player for URLs (fixes https://github.com/bromite/bromite/issues/71)
|
||||
|
||||
# 67.0.3396.101
|
||||
* set home page to new tab page
|
||||
* adjust order of new menu entries, remove help menu item (fixes https://github.com/bromite/bromite/issues/76)
|
||||
* remove some Play Services integrations: Auth, Vision, GCM
|
||||
* remove TOS/metrics and translate
|
||||
* net/cert: increase default key length for newly-generated RSA keys
|
||||
* dns: send IPv6 connectivity probes to RIPE DNS rather than Google
|
||||
* profile-resetter: do not tick send-settings by default
|
||||
* autofill: disable autofill download manager
|
||||
* first_run: deactivate autoupdate globally
|
||||
* safe_browsing: disable incident reporting
|
||||
* safe_browsing: disable reporting of safebrowsing override
|
||||
* safe_browsing: disable cookie transmission
|
||||
* extensions: always show component extensions in the ext list
|
||||
* translate: disable fetching of translate languages from server
|
||||
|
||||
# 67.0.3396.95
|
||||
* reduce headers sent in DoH requests (fixes https://github.com/bromite/bromite/issues/70)
|
||||
* serve DoH requests with maximum priority
|
||||
* `CloudFlare` -> `Cloudflare` (fixes https://github.com/bromite/bromite/issues/73)
|
||||
* fingerprint mitigations: cover also `ConvertToArrayBufferContents`
|
||||
* removed redundant own patch for battery API
|
||||
|
||||
# 67.0.3396.92
|
||||
* improve randomization for each retrieved Canvas data (fixes https://github.com/bromite/bromite/issues/69)
|
||||
|
||||
# 67.0.3396.88
|
||||
* add flag for DNS-over-HTTPS (Google experimental DNS) (fixes https://github.com/bromite/bromite/issues/68)
|
||||
* disable signin, translate and data saver UI/internal components (fixes https://github.com/bromite/bromite/issues/67)
|
||||
* rename `GoogleEN` -> `Google In English` (fixes https://github.com/bromite/bromite/issues/66)
|
||||
* re-enabled text metrics and ToDataURL, ToBlob with randomization of color data (fixes https://github.com/bromite/bromite/issues/52)
|
||||
* open YouTube links in Bromite
|
||||
* use Android Media Player for URLs
|
||||
* add exit menu item
|
||||
* hide "send reports to Google" menu item
|
||||
|
||||
# 67.0.3396.82
|
||||
|
||||
# 67.0.3396.76
|
||||
|
||||
# 67.0.3396.72
|
||||
* add global toggle for adblock engine (https://github.com/bromite/bromite/issues/53)
|
||||
* updated AdBlock filters
|
||||
|
||||
# 67.0.3396.67
|
||||
* updated AdBlock filters
|
||||
|
||||
# 66.0.3359.202
|
||||
* fix DevTools integration (https://github.com/bromite/bromite/issues/23)
|
||||
* allow toggling of Javascript from New Tab Page (fixes https://github.com/bromite/bromite/issues/60)
|
||||
* updated AdBlock filters
|
||||
|
||||
# 66.0.3359.200
|
||||
* updated AdBlock filters
|
||||
|
||||
# 66.0.3359.196
|
||||
* updated AdBlock filters
|
||||
|
||||
# 66.0.3359.188
|
||||
* updated AdBlock filters
|
||||
* increase max (persistent) connections per server from 6 to 15
|
||||
* preliminary work for better canvas fingerprinting mitigations
|
||||
|
||||
# 66.0.3359.161
|
||||
* updated AdBlock filters
|
||||
|
||||
# 66.0.3359.148
|
||||
* disable permanently all custom tab intents (https://github.com/bromite/bromite/issues/17)
|
||||
* updated AdBlock filters
|
||||
* reduce randomisation for client rects from 5% to 3%
|
||||
* reduce randomization for client rects from 5% to 3%
|
||||
|
||||
# 65.0.3325.230
|
||||
* fixed permission to access Google account issue (https://github.com/bromite/bromite/issues/11)
|
||||
* updated AdBlock filters
|
||||
|
||||
# 65.0.3325.218
|
||||
* always set WideVine version
|
||||
* updated AdBlock filters
|
||||
|
||||
# 65.0.3325.204
|
||||
* add menu option to toggle global Javascript preferences setting (https://github.com/bromite/bromite/issues/37)
|
||||
* add fingeprinting mitigation for getClientRects, getBoundingClientRect
|
||||
* set audio latency to fixed number
|
||||
* updated AdBlock filters
|
||||
|
||||
# 65.0.3325.198
|
||||
* re-landed support for third-party AdBlock filters
|
||||
* completed patches cleanup
|
||||
* updated AdBlock filters
|
||||
|
||||
# 65.0.3325.190
|
||||
* block some Canvas and AudioBuffer APIs mostly used for fingerprinting (https://github.com/bromite/bromite/issues/15)
|
||||
* updated AdBlock filters
|
||||
|
||||
# 65.0.3325.176
|
||||
* block plugins enumeration API
|
||||
* block battery API
|
||||
* remove device name and build id from User Agent
|
||||
* added Qwant search engine
|
||||
* updated AdBlock filters
|
||||
* disable non-working 3rd-party filters support
|
||||
|
||||
# 64.0.3282.204
|
||||
* use H264 NEON optimizations also for arm64
|
||||
* fix build of Stable channel
|
||||
* updated AdBlock filters
|
||||
* started building vanilla Chromium releases as well
|
||||
|
||||
# 64.0.3282.193
|
||||
* updated AdBlock filters
|
||||
* disable reporting
|
||||
|
||||
# 64.0.3282.182
|
||||
* add support for domain-based adblock filters
|
||||
* optimized memory allocation for filters
|
||||
* updated AdBlock filters
|
||||
|
||||
# 64.0.3282.168
|
||||
* extension: allow playing youtube/vimeo videos in background (https://github.com/bromite/bromite/issues/16)
|
||||
@@ -90,20 +133,16 @@
|
||||
* disabled plugin untraceable URLs (ungoogled-chromium)
|
||||
|
||||
# 64.0.3282.149
|
||||
* updated AdBlock filters
|
||||
|
||||
# 63.0.3239.150
|
||||
* fixed crash when clicking on address bar lock (page info) or opening site settings (https://github.com/bromite/bromite/issues/28)
|
||||
* build H264 with NEON optimizations for ARMv7
|
||||
* updated AdBlock filters
|
||||
* more builds for arm64 architecture
|
||||
|
||||
# 63.0.3239.144
|
||||
* fixed invalid AdBlock filter rule blocking all connections (https://github.com/bromite/bromite/issues/26)
|
||||
* updated AdBlock filters
|
||||
|
||||
# 63.0.3239.129
|
||||
* updated AdBlock filters
|
||||
|
||||
# 63.0.3239.122
|
||||
* disable webRTC completely (https://github.com/bromite/bromite/issues/9)
|
||||
@@ -116,23 +155,19 @@
|
||||
* revert /deep/ and ::shadow feature drop to attempt fixing DevTools support (https://github.com/bromite/bromite/issues/23)
|
||||
* remove also ads from search results
|
||||
* add Google search engine with English-only results, no RLZ and field trials
|
||||
* updated adBlock filters
|
||||
* fix build of x86 version (was broken in previous version)
|
||||
|
||||
# 63.0.3239.85
|
||||
* no suggest URL for DuckDuckGo (https://github.com/bromite/bromite/issues/19)
|
||||
* fixed 4chan blocking rule
|
||||
* limit AMP links cleanup to search results only (fixes broken images/news result tabs)
|
||||
* updated adBlock filters
|
||||
|
||||
# 63.0.3239.78
|
||||
* correctly set version and build numbers
|
||||
* updated adBlock filters
|
||||
|
||||
# 63.0.3239.73
|
||||
|
||||
# 63.0.3239.64
|
||||
* updated adblock filters
|
||||
* fixed an issue with incognito new tab
|
||||
* permanent disable for ToS/metrics and unused auto-updates check
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Bromite - Take back your browser
|
||||
|
||||
<img src="https://www.bromite.org/release.svg" alt="current Bromite release" title="current Bromite release" /> [![license][license-image]][license-url]
|
||||
<img src="https://www.bromite.org/release.svg" alt="current Bromite release" title="current Bromite release" /> <img src="https://www.bromite.org/license.svg" alt="GNU GPL v3" title="GNU VPL v3" />
|
||||
|
||||
<img title="Bromite - take back your browser!" src="https://www.bromite.org/android-icon-192x192.png" width="96" alt="Bromite" />
|
||||
|
||||
@@ -21,13 +21,11 @@ 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.
|
||||
|
||||
[Become a patron on Patreon](https://www.patreon.com/bePatron?c=1807244)
|
||||
|
||||
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)
|
||||
|
||||
BTC donations address: `3MkC3idL61npQSCxL1gceksmRTkNkiCPcG`
|
||||
<a href="bitcoin:3MkC3idL61npQSCxL1gceksmRTkNkiCPcG">BTC donations address</a>: `3MkC3idL61npQSCxL1gceksmRTkNkiCPcG`
|
||||
|
||||
ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
|
||||
|
||||
@@ -37,11 +35,15 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
|
||||
No.
|
||||
This is not a limitation of Bromite but of all Chromium-based projects in general, as general public is not allowed to use Google's APIs for free unless when using Chrome.
|
||||
|
||||
## Does Bromite require root?
|
||||
No.
|
||||
|
||||
## What is the SystemWebView?
|
||||
It is the core component of Android for all web page visualizations. For example when you access a new wifi network and need to activate it, that is using the SystemWebView. If you do not know what it is then you do not need to install it.
|
||||
|
||||
## Does Bromite require root?
|
||||
No.
|
||||
## How to enable DNS-over-HTTPS?
|
||||
|
||||
See [this wiki page](https://github.com/bromite/bromite/wiki/Enabling-DNS-over-HTTPS).
|
||||
|
||||
## Can you add dark mode/some cool themes?
|
||||
No.
|
||||
@@ -51,28 +53,70 @@ Bromite is about adblocking and privacy.
|
||||
No.
|
||||
We cannot add add-ons to Bromite (merely some features) and anyway HTTPS everywhere in particular is too invasive to be easily maintained across new releases.
|
||||
|
||||
## Is Bromite on Play Store?
|
||||
No, and this is unlikely to change. The Play Store would not allow total freedom on the adblocking choice, amongst other limitations.
|
||||
|
||||
## Is Bromite on F-Droid?
|
||||
It is not on the official F-Droid repository and there are no (more) plans to submit it.
|
||||
|
||||
You can use F-Droid client to install and receive updates via [the official Bromite F-Droid repository](https://www.bromite.org/fdroid).
|
||||
|
||||
## Does Bromite support WebRTC?
|
||||
No, it is not built-in.
|
||||
|
||||
# Features
|
||||
|
||||
* baked-in adblock engine with filters from EasyList, EasyPrivacy and others
|
||||
* remove click-tracking and AMP from Google search results
|
||||
* allow videos to play in background
|
||||
* [StartPage](https://startpage.com/) search engine
|
||||
* [DuckDuckGo](https://duckduckgo.com/) search engine
|
||||
* [Qwant](https://www.qwant.com/) search engine
|
||||
* Google search engine English-only with reduced tracking
|
||||
* privacy enhancement patches from Inox patchset, ungoogled-chromium and Iridium projects
|
||||
* remove click-tracking and AMP from search results
|
||||
* DNS-over-HTTPS support via Google/CloudFlare servers
|
||||
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines
|
||||
* chrome flag to hide NTP tiles and to disable custom intents
|
||||
* 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
|
||||
* webRTC, canvas, audio and other anti-fingerprinting mitigations
|
||||
|
||||
## Features not related to privacy
|
||||
* export bookmarks
|
||||
* allow playing videos in background
|
||||
* all codecs included (proprietary, open H.264 etc.)
|
||||
* built with official optimizations
|
||||
* built with official speed optimizations
|
||||
|
||||
You can inspect all functionality/privacy changes by reading the patches: https://github.com/bromite/bromite/tree/master/patches
|
||||
|
||||
# Releases
|
||||
|
||||
All built versions are available as [releases](https://github.com/bromite/bromite/releases).
|
||||
All built versions are available as [releases](https://github.com/bromite/bromite/releases); the [official website](https://www.bromite.org/) points to those releases and - when browsing via Android - it will automatically select the one apt for your device.
|
||||
|
||||
Each tag corresponds to a Chromium release tag.
|
||||
Each tag corresponds to a Chromium Stable release tag.
|
||||
|
||||
Bromite is currently built for ARM, ARM64 and x86 and for the Android SDKs versions 16 and 21
|
||||
Additionally, SystemWebView, Monochrome and the vanilla Chromium builds are provided.
|
||||
Additionally, [SystemWebView](https://www.bromite.org/system_web_view) and the [vanilla Chromium](https://www.bromite.org/chromium) builds are provided.
|
||||
|
||||
The official releases are also available through the [official third-party F-Droid repository](https://www.bromite.org/fdroid).
|
||||
|
||||
## Integrity and authenticity
|
||||
|
||||
You can verify the integrity of a downloaded APK file from this project with any `sha256sum`-compatible tool by downloading the corresponding `brm_X.Y.Z.sha256.txt` or `chr_X.Y.Z.sha256.txt` file, where X.Y.Z is the release version number. Example:
|
||||
```
|
||||
$ sha256sum --check brm_68.0.3440.54.sha256.txt
|
||||
arm64_SystemWebView.apk: OK
|
||||
arm64_ChromePublic.apk: OK
|
||||
arm64_ChromeModernPublic.apk: OK
|
||||
arm64_MonochromePublic.apk: OK
|
||||
```
|
||||
|
||||
If you prefer an UI-based tool, you might want to look into [GtkHash](https://github.com/tristanheaven/gtkhash).
|
||||
|
||||
You can verify authenticity, e.g. that the author ([csagan5](https://github.com/csagan5)) released the file, by using gpg2:
|
||||
```
|
||||
$ gpg2 --quiet --verify brm_68.0.3440.54.sha256.txt.asc
|
||||
gpg: assuming signed data in 'brm_68.0.3440.54.sha256.txt'
|
||||
gpg: Signature made Sun 08 Jul 2018 04:22:52 PM CEST using RSA key ID D85DC0C5
|
||||
gpg: Good signature from "csagan5 <32685696+csagan5@users.noreply.github.com>"
|
||||
```
|
||||
|
||||
You can download csagan5's public GnuPG key from here: [csagan5.asc](./csagan5.asc).
|
||||
|
||||
**NOTE:** releases before v68 did not have published signed hashes files.
|
||||
|
||||
# How to build
|
||||
|
||||
@@ -83,11 +127,12 @@ Please refer to [official Chromium build documentation](https://www.chromium.org
|
||||
# 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
|
||||
* [Iridium project](https://github.com/iridium-browser) for some patches (taken from above ungoogled-chromium)
|
||||
* [Inox patchset](https://github.com/gcarq/inox-patchset) for some patches (taken from above ungoogled-chromium)
|
||||
* [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
|
||||
* AdBlock Plus, uBlock, EasyList and EasyPrivacy for the filters included
|
||||
* [AdBlock Plus](https://adblockplus.org/), [uBlock Origin](https://github.com/uBlockOrigin), [Peter Lowe's adservers list](https://pgl.yoyo.org/adservers/), [EasyList and EasyPrivacy](https://easylist.to/) for the filters included
|
||||
|
||||
# License
|
||||
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2
|
||||
|
||||
mQENBFphnJwBCAC1qSMaPR5Nq9sEHa9ZePwoGLFafjOBcApz7IYW7dIsQYXVUHlo
|
||||
lbBwwfFUjnnIf/wzZ42ck/QGRKJ18qA9VybWyT8as0Sz26Tmxah31vI7kzlBZCYY
|
||||
/ZER5N3onQFVVVoynYxmep5HdK7enAXOtLBOogbJ/x2Q9ITPuJ+Pv3b4R5E2ui/i
|
||||
hFAruUh+oifPBzh3fjBTTr0uvDqbsnsczQptFghKxYyJiPTblCD51Ou11a3uNt1y
|
||||
PuG1bR5jImgt33T6zjdFac6kQ2Zalxa/URU/FQPiYJ1X2J1jCgdEgRKlK70ha+oN
|
||||
mnVWhFzjecuCw180HCZh1OQho+LPWbtMFyvtABEBAAG0M2NzYWdhbjUgPDMyNjg1
|
||||
Njk2K2NzYWdhbjVAdXNlcnMubm9yZXBseS5naXRodWIuY29tPokBIgQTAQgAFgUC
|
||||
WmGcnAkQZBkKUdhdwMUCGwsCGQEAADpDB/4zlnDg1gToKqtz994jLzUM7PJOPTWa
|
||||
c8xGCj7l8BpGcCOK0fk7fOQ+bDYT0OSHZ1OCR7Gbm6ENu03wNLQ7W9Tr0uf/yDIP
|
||||
mItcFk6nYmMKPnK6bd7QWLMsT9mK6mYb02zt6Ql8D7EsWGxifQVQG85ETObhoSqw
|
||||
EH6zqZvflxJLmN+vh/Orm1ipzEvw7cjvpSloDwypjY6x9MGEE9utFcGySx726gKu
|
||||
Wmz417QZc/TpylCd1p72G9pCqv1Si+y+P9tSEdjWSM6EqEwMr5W+IJ1O6BZQ7A9p
|
||||
0l2FZqYC2WkRDJZqWiYoYltP6z1SEbbVI5rQaaVAesS1Ae8OOR9EmlK8
|
||||
=6Hsd
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
+3392
-863
File diff suppressed because one or more lines are too long
@@ -1,32 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 18 May 2018 10:10:00 +0200
|
||||
Subject: Increase maximum connections per host from 6 to 15
|
||||
|
||||
---
|
||||
net/socket/client_socket_pool_manager.cc | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
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
|
||||
@@ -34,7 +34,7 @@ static_assert(arraysize(g_max_sockets_per_pool) ==
|
||||
HttpNetworkSession::NUM_SOCKET_POOL_TYPES,
|
||||
"max sockets per pool length mismatch");
|
||||
|
||||
-// Default to allow up to 6 connections per host. Experiment and tuning may
|
||||
+// Default to allow up to 15 connections per host. Experiment and tuning may
|
||||
// try other values (greater than 0). Too large may cause many problems, such
|
||||
// as home routers blocking the connections!?!? See http://crbug.com/12066.
|
||||
//
|
||||
@@ -43,7 +43,7 @@ static_assert(arraysize(g_max_sockets_per_pool) ==
|
||||
// be the same as the limit for ws. Also note that Firefox uses a limit of 200.
|
||||
// See http://crbug.com/486800
|
||||
int g_max_sockets_per_group[] = {
|
||||
- 6, // NORMAL_SOCKET_POOL
|
||||
+ 15, // NORMAL_SOCKET_POOL
|
||||
255 // WEBSOCKET_SOCKET_POOL
|
||||
};
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Tue, 4 Aug 2015 15:15:53 +0200
|
||||
Subject: battery_status_service: disable more privacy nightmares
|
||||
|
||||
The W3C Battery Status API[1] has quite a laughable statement:
|
||||
|
||||
"The information disclosed has minimal impact on privacy or
|
||||
fingerprinting, and therefore is exposed without permission grants".
|
||||
|
||||
Along comes a paper "The leaking battery, A privacy analysis of the
|
||||
HTML5 Battery Status API."
|
||||
|
||||
Clean up after the W3C and disable the battery status updater which
|
||||
could be used to identity users[2].
|
||||
|
||||
[1] http://www.w3.org/TR/battery-status/
|
||||
[2] https://eprint.iacr.org/2015/616.pdf
|
||||
|
||||
References: https://github.com/iridium-browser/iridium-browser/issues/40
|
||||
---
|
||||
services/device/battery/battery_status_service.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/services/device/battery/battery_status_service.cc b/services/device/battery/battery_status_service.cc
|
||||
--- a/services/device/battery/battery_status_service.cc
|
||||
+++ b/services/device/battery/battery_status_service.cc
|
||||
@@ -41,6 +41,7 @@ BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
|
||||
if (!battery_fetcher_)
|
||||
battery_fetcher_ = BatteryStatusManager::Create(update_callback_);
|
||||
|
||||
+#if 0
|
||||
if (callback_list_.empty()) {
|
||||
bool success = battery_fetcher_->StartListeningBatteryChange();
|
||||
// On failure pass the default values back.
|
||||
@@ -52,6 +53,7 @@ BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
|
||||
// Send recent status to the new callback if already available.
|
||||
callback.Run(status_);
|
||||
}
|
||||
+#endif
|
||||
|
||||
return callback_list_.Add(callback);
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 11 Oct 2017 22:57:29 +0200
|
||||
Subject: Disable battery status service
|
||||
|
||||
---
|
||||
services/device/battery/battery_status_service.cc | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/services/device/battery/battery_status_service.cc b/services/device/battery/battery_status_service.cc
|
||||
--- a/services/device/battery/battery_status_service.cc
|
||||
+++ b/services/device/battery/battery_status_service.cc
|
||||
@@ -41,6 +41,7 @@ BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
|
||||
if (!battery_fetcher_)
|
||||
battery_fetcher_ = BatteryStatusManager::Create(update_callback_);
|
||||
|
||||
+#if 0
|
||||
if (callback_list_.empty()) {
|
||||
bool success = battery_fetcher_->StartListeningBatteryChange();
|
||||
// On failure pass the default values back.
|
||||
@@ -52,6 +53,10 @@ BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
|
||||
// Send recent status to the new callback if already available.
|
||||
callback.Run(status_);
|
||||
}
|
||||
+#else
|
||||
+ // Always pass the default values.
|
||||
+ callback.Run(BatteryStatus());
|
||||
+#endif
|
||||
|
||||
return callback_list_.Add(callback);
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+5
-4
@@ -1,7 +1,8 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 11 Oct 2017 22:58:52 +0200
|
||||
Subject: Disable GCM status check
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Mon, 1 Jun 2015 17:14:34 +0200
|
||||
Subject: google-cloud-messaging: disable experiment status check
|
||||
|
||||
This avoids trk:263 from triggering.
|
||||
---
|
||||
components/gcm_driver/gcm_channel_status_request.cc | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
@@ -25,7 +26,7 @@ diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gc
|
||||
|
||||
void GCMChannelStatusRequest::Start() {
|
||||
+#if 0
|
||||
DCHECK(!url_fetcher_.get());
|
||||
DCHECK(!url_fetcher_);
|
||||
|
||||
GURL request_url(channel_status_request_url_);
|
||||
@@ -112,6 +115,9 @@ void GCMChannelStatusRequest::Start() {
|
||||
@@ -1,70 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 12 Oct 2017 01:35:53 +0200
|
||||
Subject: Disable updater pings
|
||||
|
||||
---
|
||||
components/component_updater/configurator_impl.cc | 21 +++------------------
|
||||
components/component_updater/configurator_impl.h | 1 -
|
||||
2 files changed, 3 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc
|
||||
--- a/components/component_updater/configurator_impl.cc
|
||||
+++ b/components/component_updater/configurator_impl.cc
|
||||
@@ -56,8 +56,10 @@ const char kSwitchDisableDeltaUpdates[] = "disable-delta-updates";
|
||||
const char kSwitchDisableBackgroundDownloads[] = "disable-background-downloads";
|
||||
#endif // defined(OS_WIN)
|
||||
|
||||
+#if 0
|
||||
const base::Feature kAlternateComponentUrls{"AlternateComponentUrls",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+#endif
|
||||
|
||||
// If there is an element of |vec| of the form |test|=.*, returns the right-
|
||||
// hand side of that assignment. Otherwise, returns an empty string.
|
||||
@@ -86,8 +88,7 @@ ConfiguratorImpl::ConfiguratorImpl(const base::CommandLine* cmdline,
|
||||
: fast_update_(false),
|
||||
pings_enabled_(false),
|
||||
deltas_enabled_(false),
|
||||
- background_downloads_enabled_(false),
|
||||
- require_encryption_(require_encryption) {
|
||||
+ background_downloads_enabled_(false) {
|
||||
// Parse comma-delimited debug flags.
|
||||
std::vector<std::string> switch_values = base::SplitString(
|
||||
cmdline->GetSwitchValueASCII(switches::kComponentUpdater), ",",
|
||||
@@ -135,22 +136,6 @@ int ConfiguratorImpl::UpdateDelay() const {
|
||||
|
||||
std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
|
||||
std::vector<GURL> urls;
|
||||
- if (url_source_override_.is_valid()) {
|
||||
- urls.push_back(GURL(url_source_override_));
|
||||
- return urls;
|
||||
- }
|
||||
-
|
||||
- if (base::FeatureList::IsEnabled(kAlternateComponentUrls)) {
|
||||
- urls.push_back(GURL(kUpdaterDefaultUrlAlt));
|
||||
- urls.push_back(GURL(kUpdaterFallbackUrlAlt));
|
||||
- } else {
|
||||
- urls.push_back(GURL(kUpdaterDefaultUrl));
|
||||
- urls.push_back(GURL(kUpdaterFallbackUrl));
|
||||
- }
|
||||
-
|
||||
- if (require_encryption_)
|
||||
- update_client::RemoveUnsecureUrls(&urls);
|
||||
-
|
||||
return urls;
|
||||
}
|
||||
|
||||
diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
|
||||
--- a/components/component_updater/configurator_impl.h
|
||||
+++ b/components/component_updater/configurator_impl.h
|
||||
@@ -89,7 +89,6 @@ class ConfiguratorImpl {
|
||||
bool pings_enabled_;
|
||||
bool deltas_enabled_;
|
||||
bool background_downloads_enabled_;
|
||||
- bool require_encryption_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
|
||||
};
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Tue, 2 Jun 2015 11:01:50 +0200
|
||||
Subject: updater: disable updater pings
|
||||
|
||||
Despite auto-updater being arguably disabled (see previous commit),
|
||||
Chromium would still send background requests. Kill it.
|
||||
(trk:170, trk:171)
|
||||
---
|
||||
components/component_updater/component_updater_url_constants.cc | 4 ++--
|
||||
components/component_updater/configurator_impl.cc | 5 +----
|
||||
components/component_updater/configurator_impl.h | 1 -
|
||||
3 files changed, 3 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/components/component_updater/component_updater_url_constants.cc b/components/component_updater/component_updater_url_constants.cc
|
||||
--- a/components/component_updater/component_updater_url_constants.cc
|
||||
+++ b/components/component_updater/component_updater_url_constants.cc
|
||||
@@ -15,9 +15,9 @@ namespace component_updater {
|
||||
// The value of |kDefaultUrlSource| can be overridden with
|
||||
// --component-updater=url-source=someurl.
|
||||
const char kUpdaterDefaultUrl[] =
|
||||
- "https://update.googleapis.com/service/update2";
|
||||
+ "about:blank";
|
||||
|
||||
const char kUpdaterFallbackUrl[] =
|
||||
- "http://update.googleapis.com/service/update2";
|
||||
+ "about:blank";
|
||||
|
||||
} // namespace component_updater
|
||||
diff --git a/components/component_updater/configurator_impl.cc b/components/component_updater/configurator_impl.cc
|
||||
--- a/components/component_updater/configurator_impl.cc
|
||||
+++ b/components/component_updater/configurator_impl.cc
|
||||
@@ -39,8 +39,7 @@ ConfiguratorImpl::ConfiguratorImpl(
|
||||
: background_downloads_enabled_(config_policy.BackgroundDownloadsEnabled()),
|
||||
deltas_enabled_(config_policy.DeltaUpdatesEnabled()),
|
||||
fast_update_(config_policy.FastUpdate()),
|
||||
- pings_enabled_(config_policy.PingsEnabled()),
|
||||
- require_encryption_(require_encryption),
|
||||
+ pings_enabled_(false),
|
||||
url_source_override_(config_policy.UrlSourceOverride()) {
|
||||
if (config_policy.TestRequest())
|
||||
extra_info_ += "testrequest=\"1\"";
|
||||
@@ -70,8 +69,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
|
||||
}
|
||||
|
||||
std::vector<GURL> urls{GURL(kUpdaterDefaultUrl), GURL(kUpdaterFallbackUrl)};
|
||||
- if (require_encryption_)
|
||||
- update_client::RemoveUnsecureUrls(&urls);
|
||||
|
||||
return urls;
|
||||
}
|
||||
diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
|
||||
--- a/components/component_updater/configurator_impl.h
|
||||
+++ b/components/component_updater/configurator_impl.h
|
||||
@@ -91,7 +91,6 @@ class ConfiguratorImpl {
|
||||
bool deltas_enabled_;
|
||||
bool fast_update_;
|
||||
bool pings_enabled_;
|
||||
- bool require_encryption_;
|
||||
GURL url_source_override_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Sat, 13 Sep 2014 17:25:47 +0200
|
||||
Subject: prefs: only keep cookies until exit
|
||||
|
||||
Out with all those tracking cookies!
|
||||
|
||||
author: Jan Engelhardt <jengelh@inai.de>
|
||||
---
|
||||
components/content_settings/core/browser/content_settings_registry.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Thu, 2 Apr 2015 12:44:23 +0200
|
||||
Subject: Remove EV certificates
|
||||
|
||||
@@ -6,8 +6,6 @@ The team chose to let EV certificates appear just like normal
|
||||
certificates. The web of trust is considered a failure in itself, so
|
||||
do not give users a false sense of extra security with EV certs.
|
||||
Instead, let them appear just like regular ones.
|
||||
|
||||
author: Jan Engelhardt <jengelh@inai.de>
|
||||
---
|
||||
net/cert/ev_root_ca_metadata.cc | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
@@ -16,9 +14,9 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
|
||||
--- a/net/cert/ev_root_ca_metadata.cc
|
||||
+++ b/net/cert/ev_root_ca_metadata.cc
|
||||
@@ -46,6 +46,16 @@ struct EVMetadata {
|
||||
base::StringPiece policy_oids[kMaxOIDsPerCA];
|
||||
};
|
||||
|
||||
// These certificates may be found in net/data/ssl/ev_roots.
|
||||
static const EVMetadata ev_root_ca_metadata[] = {
|
||||
+ // need some dummy thing to make compiler happy, because
|
||||
+ // arraysize() is implemented as a convoluted template rather than
|
||||
+ // the traditional sizeof(x)/sizeof(*x)
|
||||
@@ -29,10 +27,10 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
|
||||
+ }
|
||||
+ },
|
||||
+#if 0
|
||||
// These certificates may be found in net/data/ssl/ev_roots.
|
||||
static const EVMetadata kEvRootCaMetadata[] = {
|
||||
// AC Camerfirma S.A. Chambers of Commerce Root - 2008
|
||||
// https://www.camerfirma.com
|
||||
{
|
||||
@@ -748,7 +758,9 @@ static const EVMetadata ev_root_ca_metadata[] = {
|
||||
@@ -750,7 +760,9 @@ static const EVMetadata kEvRootCaMetadata[] = {
|
||||
0xd2, 0x09, 0xb7, 0x37, 0xcb, 0xe2, 0xc1, 0x8c, 0xfb, 0x2c, 0x10,
|
||||
0xc0, 0xff, 0x0b, 0xcf, 0x0d, 0x32, 0x86, 0xfc, 0x1a, 0xa2}},
|
||||
{"2.16.840.1.114404.1.1.2.4.1", ""},
|
||||
@@ -42,7 +40,7 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
|
||||
+};
|
||||
|
||||
#endif // defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
|
||||
|
||||
} // namespace
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Disable all omissions (already shadowed by first flag)
|
||||
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
|
||||
@@ -402,12 +402,12 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
|
||||
@@ -407,12 +407,12 @@ bool IDNToUnicodeOneComponent(const base::char16* comp,
|
||||
} // namespace
|
||||
|
||||
const FormatUrlType kFormatUrlOmitNothing = 0;
|
||||
@@ -26,9 +26,9 @@ diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatte
|
||||
+const FormatUrlType kFormatUrlOmitHTTPS = 0 << 3;
|
||||
+const FormatUrlType kFormatUrlExperimentalElideAfterHost = 0 << 4;
|
||||
+const FormatUrlType kFormatUrlOmitTrivialSubdomains = 0 << 5;
|
||||
const FormatUrlType kFormatUrlTrimAfterHost = 1 << 6;
|
||||
|
||||
const FormatUrlType kFormatUrlOmitDefaults =
|
||||
kFormatUrlOmitUsernamePassword | kFormatUrlOmitHTTP |
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -990,7 +990,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
|
||||
@@ -1015,7 +1015,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/io_thread.cc b/chrome/browser/io_thread.cc
|
||||
--- a/chrome/browser/io_thread.cc
|
||||
+++ b/chrome/browser/io_thread.cc
|
||||
@@ -615,7 +615,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
@@ -569,7 +569,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
std::string());
|
||||
registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
|
||||
data_reduction_proxy::RegisterPrefs(registry);
|
||||
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
|
||||
+ registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, false);
|
||||
registry->RegisterListPref(prefs::kDnsOverHttpsServers);
|
||||
registry->RegisterListPref(prefs::kDnsOverHttpsServerMethods);
|
||||
registry->RegisterBooleanPref(prefs::kQuickCheckEnabled, true);
|
||||
#if defined(OS_POSIX)
|
||||
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
|
||||
@@ -84,7 +84,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
|
||||
@@ -138,7 +138,7 @@ const char Profile::kNoHostedDomainFound[] = "NO_HOSTED_DOMAIN";
|
||||
@@ -137,7 +137,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
|
||||
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSearchSuggestEnabled,
|
||||
@@ -100,9 +100,9 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h
|
||||
</paper-button>
|
||||
</div>
|
||||
<div slot="footer">
|
||||
- <paper-checkbox id="sendSettings" checked>
|
||||
+ <paper-checkbox id="sendSettings">
|
||||
$i18nRaw{resetPageFeedback}</paper-checkbox>
|
||||
- <cr-checkbox id="sendSettings" checked>
|
||||
+ <cr-checkbox id="sendSettings">
|
||||
$i18nRaw{resetPageFeedback}</cr-checkbox>
|
||||
</div>
|
||||
</cr-dialog>
|
||||
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
|
||||
@@ -133,9 +133,9 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
|
||||
registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, true);
|
||||
- registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, false);
|
||||
registry->RegisterBooleanPref(prefs::kDevToolsDisabled, false);
|
||||
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
|
||||
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
|
||||
registry->RegisterDictionaryPref(prefs::kAppWindowPlacement);
|
||||
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
|
||||
@@ -177,15 +177,15 @@ 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
|
||||
@@ -227,7 +227,7 @@ void AutofillManager::RegisterProfilePrefs(
|
||||
@@ -210,7 +210,7 @@ void AutofillManager::RegisterProfilePrefs(
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillEnabled, true,
|
||||
+ prefs::kAutofillEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kAutofillProfileUseDatesFixed, false,
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kAutofillLastVersionDeduped, 0,
|
||||
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
|
||||
@@ -207,7 +207,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
|
||||
@@ -374,9 +374,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
@@ -370,9 +370,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -222,7 +222,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
|
||||
@@ -368,14 +368,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
@@ -365,14 +365,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
if (is_theme())
|
||||
return false;
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 11 Jul 2018 11:17:53 +0200
|
||||
Subject: Disable ads metrics 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
|
||||
@@ -15,7 +15,7 @@ namespace features {
|
||||
// All features in alphabetical order.
|
||||
|
||||
// Enables Ads Metrics.
|
||||
-const base::Feature kAdsFeature{"AdsMetrics", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+const base::Feature kAdsFeature{"AdsMetrics", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
const base::Feature kAllowAutoplayUnmutedInWebappManifestScope{
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ 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
|
||||
@@ -244,10 +244,10 @@ PasswordFormManager* FindMatchedManager(
|
||||
@@ -228,10 +228,10 @@ PasswordFormManager* FindMatchedManager(
|
||||
void PasswordManager::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
+3
-6
@@ -9,7 +9,7 @@ Subject: Disable NTP remote suggestions by default
|
||||
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
|
||||
@@ -41,16 +41,16 @@ const base::Feature kArticleSuggestionsExpandableHeader{
|
||||
@@ -38,13 +38,13 @@ const base::Feature kArticleSuggestionsExpandableHeader{
|
||||
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kArticleSuggestionsFeature{
|
||||
@@ -20,15 +20,12 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu
|
||||
- "NTPBookmarkSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ "NTPBookmarkSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kRecentOfflineTabSuggestionsFeature{
|
||||
"NTPOfflinePageSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kIncreasedVisibility{"NTPSnippetsIncreasedVisibility",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kPhysicalWebPageSuggestionsFeature{
|
||||
"NTPPhysicalWebPageSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
const base::Feature kForeignSessionsSuggestionsFeature{
|
||||
"NTPForeignSessionsSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+3
-3
@@ -9,9 +9,9 @@ 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
|
||||
@@ -89,10 +89,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -87,10 +87,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
false);
|
||||
#endif
|
||||
#if BUILDFLAG(ENABLE_WEBRTC)
|
||||
// TODO(guoweis): Remove next 2 options at M50.
|
||||
- registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, true);
|
||||
- registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, true);
|
||||
@@ -21,8 +21,8 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
|
||||
- content::kWebRTCIPHandlingDefault);
|
||||
+ content::kWebRTCIPHandlingDisableNonProxiedUdp);
|
||||
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
|
||||
#endif
|
||||
|
||||
// Dictionaries to keep track of default tasks in the file browser.
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -11,7 +11,7 @@ Subject: Disable data saver
|
||||
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
|
||||
@@ -140,7 +140,6 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
|
||||
@@ -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)) {
|
||||
@@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
|
||||
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
|
||||
@@ -149,6 +149,7 @@ public class DataReductionProxySettings {
|
||||
@@ -150,6 +150,7 @@ public class DataReductionProxySettings {
|
||||
// DataReductionProxySettings is a singleton that lives forever and there's no clean
|
||||
// shutdown of Chrome on Android
|
||||
mNativeDataReductionProxySettings = nativeInit();
|
||||
@@ -30,7 +30,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/D
|
||||
}
|
||||
|
||||
/** Returns true if the SPDY proxy promo is allowed to be shown. */
|
||||
@@ -171,6 +172,7 @@ public class DataReductionProxySettings {
|
||||
@@ -172,6 +173,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) {
|
||||
+1
-1
@@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd
|
||||
+
|
||||
mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan() {
|
||||
NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan((view1) -> {
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
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 | 8 +++---
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 6 ++--
|
||||
.../browser/preferences/MainPreferences.java | 32 ++++++++++++----------
|
||||
3 files changed, 26 insertions(+), 20 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
|
||||
@@ -6,10 +6,10 @@
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orderingFromXml="false">
|
||||
|
||||
- <org.chromium.chrome.browser.preferences.SignInPreference
|
||||
+ <!-- org.chromium.chrome.browser.preferences.SignInPreference
|
||||
android:key="sign_in"
|
||||
android:order="0"
|
||||
- android:title="@string/sign_in_to_chrome"/>
|
||||
+ android:title="@string/sign_in_to_chrome"/-->
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="basics_section"
|
||||
@@ -70,11 +70,11 @@
|
||||
android:key="languages"
|
||||
android:order="12"
|
||||
android:title="@string/prefs_languages"/>
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
+ <!-- org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences"
|
||||
android:key="data_reduction"
|
||||
android:order="13"
|
||||
- android:title="@string/data_reduction_title"/>
|
||||
+ 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/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
|
||||
@@ -115,7 +115,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.chrome.browser.share.ShareMenuActionHandler;
|
||||
import org.chromium.chrome.browser.snackbar.BottomContainer;
|
||||
-import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
|
||||
+//import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
|
||||
import org.chromium.chrome.browser.snackbar.DataUseSnackbarController;
|
||||
import org.chromium.chrome.browser.snackbar.SnackbarManager;
|
||||
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
|
||||
@@ -258,7 +258,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
private SnackbarManager mSnackbarManager;
|
||||
private ModalDialogManager mModalDialogManager;
|
||||
private DataUseSnackbarController mDataUseSnackbarController;
|
||||
- private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
|
||||
+ //private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
|
||||
private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
|
||||
private AppMenuHandler mAppMenuHandler;
|
||||
private ToolbarManager mToolbarManager;
|
||||
@@ -577,6 +577,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
mDataUseSnackbarController.showDataUseTrackingEndedBar();
|
||||
}
|
||||
|
||||
+/*
|
||||
// Only alert about data savings once the first paint has happened. It doesn't make
|
||||
// sense to show a snackbar about savings when nothing has been displayed yet.
|
||||
if (DataReductionProxySettings.getInstance().isSnackbarPromoAllowed(tab.getUrl())) {
|
||||
@@ -589,6 +590,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
DataReductionProxySettings.getInstance()
|
||||
.getTotalHttpContentLengthSaved());
|
||||
}
|
||||
+*/
|
||||
}
|
||||
|
||||
@Override
|
||||
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
|
||||
@@ -18,9 +18,9 @@ import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.autofill.PersonalDataManager;
|
||||
import org.chromium.chrome.browser.contextual_suggestions.EnabledStateMonitor;
|
||||
-import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
+//import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
|
||||
-import org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences;
|
||||
+//import org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences;
|
||||
import org.chromium.chrome.browser.search_engines.TemplateUrl;
|
||||
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
||||
import org.chromium.chrome.browser.signin.SigninManager;
|
||||
@@ -35,20 +35,20 @@ import java.util.Map;
|
||||
*/
|
||||
public class MainPreferences extends PreferenceFragment
|
||||
implements SigninManager.SignInStateObserver, TemplateUrlService.LoadListener {
|
||||
- public static final String PREF_SIGN_IN = "sign_in";
|
||||
+ //public static final String PREF_SIGN_IN = "sign_in";
|
||||
public static final String PREF_AUTOFILL_SETTINGS = "autofill_settings";
|
||||
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";
|
||||
public static final String PREF_HOMEPAGE = "homepage";
|
||||
- public static final String PREF_DATA_REDUCTION = "data_reduction";
|
||||
+ //public static final String PREF_DATA_REDUCTION = "data_reduction";
|
||||
public static final String PREF_NOTIFICATIONS = "notifications";
|
||||
public static final String PREF_LANGUAGES = "languages";
|
||||
public static final String PREF_DOWNLOADS = "downloads";
|
||||
|
||||
private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
|
||||
private final Map<String, Preference> mAllPreferences = new HashMap<>();
|
||||
- private SignInPreference mSignInPreference;
|
||||
+ //private SignInPreference mSignInPreference;
|
||||
|
||||
public MainPreferences() {
|
||||
setHasOptionsMenu(true);
|
||||
@@ -64,25 +64,29 @@ public class MainPreferences extends PreferenceFragment
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
- mSignInPreference.onPreferenceFragmentDestroyed();
|
||||
+ //mSignInPreference.onPreferenceFragmentDestroyed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
+/*
|
||||
if (SigninManager.get().isSigninSupported()) {
|
||||
SigninManager.get().addSignInStateObserver(this);
|
||||
mSignInPreference.registerForUpdates();
|
||||
}
|
||||
+*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
+/*
|
||||
if (SigninManager.get().isSigninSupported()) {
|
||||
SigninManager.get().removeSignInStateObserver(this);
|
||||
mSignInPreference.unregisterForUpdates();
|
||||
}
|
||||
+*/
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,7 +102,7 @@ public class MainPreferences extends PreferenceFragment
|
||||
setManagedPreferenceDelegateForPreference(PREF_SEARCH_ENGINE);
|
||||
setManagedPreferenceDelegateForPreference(PREF_AUTOFILL_SETTINGS);
|
||||
setManagedPreferenceDelegateForPreference(PREF_SAVED_PASSWORDS);
|
||||
- setManagedPreferenceDelegateForPreference(PREF_DATA_REDUCTION);
|
||||
+ //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
|
||||
@@ -154,7 +158,7 @@ public class MainPreferences extends PreferenceFragment
|
||||
Preference preference = getPreferenceScreen().getPreference(index);
|
||||
mAllPreferences.put(preference.getKey(), preference);
|
||||
}
|
||||
- mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
|
||||
+ //mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
|
||||
}
|
||||
|
||||
private void setManagedPreferenceDelegateForPreference(String key) {
|
||||
@@ -163,12 +167,6 @@ public class MainPreferences extends PreferenceFragment
|
||||
}
|
||||
|
||||
private void updatePreferences() {
|
||||
- if (SigninManager.get().isSigninSupported()) {
|
||||
- addPreferenceIfAbsent(PREF_SIGN_IN);
|
||||
- } else {
|
||||
- removePreferenceIfPresent(PREF_SIGN_IN);
|
||||
- }
|
||||
-
|
||||
updateSearchEnginePreference();
|
||||
|
||||
if (HomepageManager.shouldShowHomepageSetting()) {
|
||||
@@ -190,9 +188,11 @@ public class MainPreferences extends PreferenceFragment
|
||||
removePreferenceIfPresent(PREF_CONTEXTUAL_SUGGESTIONS);
|
||||
}
|
||||
|
||||
+/*
|
||||
ChromeBasePreference dataReduction =
|
||||
(ChromeBasePreference) findPreference(PREF_DATA_REDUCTION);
|
||||
dataReduction.setSummary(DataReductionPreferences.generateSummary(getResources()));
|
||||
+*/
|
||||
}
|
||||
|
||||
private Preference addPreferenceIfAbsent(String key) {
|
||||
@@ -263,9 +263,11 @@ public class MainPreferences extends PreferenceFragment
|
||||
if (PREF_SAVED_PASSWORDS.equals(preference.getKey())) {
|
||||
return PrefServiceBridge.getInstance().isRememberPasswordsManaged();
|
||||
}
|
||||
+/*
|
||||
if (PREF_DATA_REDUCTION.equals(preference.getKey())) {
|
||||
return DataReductionProxySettings.getInstance().isDataReductionProxyManaged();
|
||||
}
|
||||
+*/
|
||||
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
|
||||
return TemplateUrlService.getInstance().isDefaultSearchManaged();
|
||||
}
|
||||
@@ -283,11 +285,13 @@ public class MainPreferences extends PreferenceFragment
|
||||
return prefs.isRememberPasswordsManaged()
|
||||
&& !prefs.isRememberPasswordsEnabled();
|
||||
}
|
||||
+/*
|
||||
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.7.4
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 12 Jun 2018 15:09:26 +0200
|
||||
Subject: Disable signin/data reduction promos
|
||||
|
||||
---
|
||||
.../java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 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
|
||||
@@ -554,7 +554,7 @@ public class ChromeTabbedActivity
|
||||
// TODO(tedchoc): Unify promo dialog logic as the search engine promo dialog checks
|
||||
// might not have completed at this point and we could show multiple
|
||||
// promos.
|
||||
- boolean isShowingPromo = mLocaleManager.hasShownSearchEnginePromoThisSession();
|
||||
+ /*boolean isShowingPromo = mLocaleManager.hasShownSearchEnginePromoThisSession();
|
||||
// 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()
|
||||
@@ -574,7 +574,7 @@ public class ChromeTabbedActivity
|
||||
preferenceManager.setPromosSkippedOnFirstStart(true);
|
||||
}
|
||||
|
||||
- if (!isShowingPromo) {
|
||||
+ if (!isShowingPromo) */ {
|
||||
ToolbarButtonInProductHelpController.maybeShowColdStartIPH(this);
|
||||
}
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
From: Serg <serg.zhukovsky@gmail.com>
|
||||
Date: Wed, 22 Mar 2017 19:10:30 -0400
|
||||
Subject: Removed Sync and Translate menu
|
||||
|
||||
---
|
||||
.../java/res/drawable-hdpi/settings_translate.png | Bin 399 -> 0 bytes
|
||||
.../java/res/drawable-mdpi/settings_translate.png | Bin 284 -> 0 bytes
|
||||
.../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
|
||||
.../res/drawable-xxhdpi/settings_translate.png | Bin 793 -> 0 bytes
|
||||
.../res/drawable-xxxhdpi/settings_translate.png | Bin 1038 -> 0 bytes
|
||||
.../java/res/xml/site_settings_preferences.xml | 8 +++----
|
||||
.../website/SiteSettingsPreferences.java | 26 ++++++++++-----------
|
||||
headless/lib/browser/protocol/browser_handler.cc | 2 +-
|
||||
8 files changed, 18 insertions(+), 18 deletions(-)
|
||||
delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
|
||||
delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
|
||||
delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
|
||||
delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
|
||||
delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
|
||||
|
||||
diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
|
||||
deleted file mode 100644
|
||||
index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
|
||||
diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
|
||||
deleted file mode 100644
|
||||
index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
|
||||
diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
|
||||
deleted file mode 100644
|
||||
index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
|
||||
diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
|
||||
deleted file mode 100644
|
||||
index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
|
||||
diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
|
||||
deleted file mode 100644
|
||||
index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
|
||||
diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
index 1159fd1..4a13a36 100644
|
||||
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
@@ -44,9 +44,9 @@
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
android:key="ads" />
|
||||
<!-- Background sync -->
|
||||
- <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
+ <!--<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
- android:key="background_sync" />
|
||||
+ android:key="background_sync" />-->
|
||||
<!-- Protected content -->
|
||||
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
@@ -66,11 +66,11 @@
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
android:key="sound" />
|
||||
<!-- Google Translate -->
|
||||
- <Preference
|
||||
+ <!-- <Preference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
|
||||
android:key="translate"
|
||||
android:title="@string/google_translate"
|
||||
- android:icon="@drawable/settings_translate" />
|
||||
+ android:icon="@drawable/settings_translate" />-->
|
||||
<!-- Storage -->
|
||||
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
|
||||
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
|
||||
index 2da84aa9..f3ee0d2 100644
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
|
||||
@@ -39,7 +39,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
static final String ALL_SITES_KEY = "all_sites";
|
||||
static final String ADS_KEY = "ads";
|
||||
static final String AUTOPLAY_KEY = "autoplay";
|
||||
- static final String BACKGROUND_SYNC_KEY = "background_sync";
|
||||
+ //static final String BACKGROUND_SYNC_KEY = "background_sync";
|
||||
static final String CAMERA_KEY = "camera";
|
||||
static final String CLIPBOARD_KEY = "clipboard";
|
||||
static final String COOKIES_KEY = "cookies";
|
||||
@@ -52,7 +52,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
static final String PROTECTED_CONTENT_KEY = "protected_content";
|
||||
static final String SOUND_KEY = "sound";
|
||||
static final String STORAGE_KEY = "use_storage";
|
||||
- static final String TRANSLATE_KEY = "translate";
|
||||
+ //static final String TRANSLATE_KEY = "translate";
|
||||
static final String USB_KEY = "usb";
|
||||
|
||||
// Whether the Protected Content menu is available for display.
|
||||
@@ -87,8 +87,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
return ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS;
|
||||
} else if (AUTOPLAY_KEY.equals(key)) {
|
||||
return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY;
|
||||
- } else if (BACKGROUND_SYNC_KEY.equals(key)) {
|
||||
- return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;
|
||||
+ /*} else if (BACKGROUND_SYNC_KEY.equals(key)) {
|
||||
+ return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;*/
|
||||
} else if (CAMERA_KEY.equals(key)) {
|
||||
return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
|
||||
} else if (CLIPBOARD_KEY.equals(key)) {
|
||||
@@ -127,7 +127,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
// menus.
|
||||
getPreferenceScreen().removePreference(findPreference(ALL_SITES_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(ADS_KEY));
|
||||
- getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
|
||||
+ //getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(CAMERA_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(CLIPBOARD_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(COOKIES_KEY));
|
||||
@@ -139,7 +139,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
getPreferenceScreen().removePreference(findPreference(POPUPS_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(SOUND_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(STORAGE_KEY));
|
||||
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
|
||||
+ //getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
|
||||
getPreferenceScreen().removePreference(findPreference(USB_KEY));
|
||||
} else {
|
||||
// If both Autoplay and Protected Content menus are available, they'll be tucked under
|
||||
@@ -165,9 +165,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
}
|
||||
// The new Languages Preference *feature* is an advanced version of this translate
|
||||
// preference. Once Languages Preference is enabled, remove this setting.
|
||||
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
|
||||
+ /*if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
|
||||
getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
|
||||
- }
|
||||
+ }*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,10 +175,10 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
|
||||
|
||||
// Translate preference.
|
||||
- Preference translatePref = findPreference(TRANSLATE_KEY);
|
||||
+ /*Preference translatePref = findPreference(TRANSLATE_KEY);
|
||||
if (translatePref != null) {
|
||||
setTranslateStateSummary(translatePref);
|
||||
- }
|
||||
+ }*/
|
||||
|
||||
// Preferences that navigate to Website Settings.
|
||||
List<String> websitePrefs = new ArrayList<String>();
|
||||
@@ -192,7 +192,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
// When showing the main menu, if Protected Content is not available, only Autoplay
|
||||
// will be visible.
|
||||
if (!mProtectedContentMenuAvailable) websitePrefs.add(AUTOPLAY_KEY);
|
||||
- websitePrefs.add(BACKGROUND_SYNC_KEY);
|
||||
+ //websitePrefs.add(BACKGROUND_SYNC_KEY);
|
||||
websitePrefs.add(CAMERA_KEY);
|
||||
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
|
||||
websitePrefs.add(CLIPBOARD_KEY);
|
||||
@@ -218,8 +218,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
checked = PrefServiceBridge.getInstance().adsEnabled();
|
||||
} else if (AUTOPLAY_KEY.equals(prefName)) {
|
||||
checked = PrefServiceBridge.getInstance().isAutoplayEnabled();
|
||||
- } else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
|
||||
- checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();
|
||||
+ /*} else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
|
||||
+ checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();*/
|
||||
} else if (CAMERA_KEY.equals(prefName)) {
|
||||
checked = PrefServiceBridge.getInstance().isCameraEnabled();
|
||||
} else if (CLIPBOARD_KEY.equals(prefName)) {
|
||||
diff --git a/headless/lib/browser/protocol/browser_handler.cc b/headless/lib/browser/protocol/browser_handler.cc
|
||||
index 97ec5f5..955b233 100644
|
||||
--- a/headless/lib/browser/protocol/browser_handler.cc
|
||||
+++ b/headless/lib/browser/protocol/browser_handler.cc
|
||||
@@ -71,7 +71,7 @@ Response BrowserHandler::Close() {
|
||||
Response BrowserHandler::SetWindowBounds(
|
||||
int window_id,
|
||||
std::unique_ptr<Browser::Bounds> window_bounds) {
|
||||
- HeadlessWebContentsImpl* web_contents = web_contents =
|
||||
+ HeadlessWebContentsImpl* web_contents =
|
||||
browser()->GetWebContentsForWindowId(window_id);
|
||||
if (!web_contents)
|
||||
return Response::Error("Browser window not found");
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/t
|
||||
@@ -122,6 +122,9 @@ void TraceCrashServiceUploader::DoUpload(
|
||||
std::unique_ptr<const base::DictionaryValue> metadata,
|
||||
const UploadProgressCallback& progress_callback,
|
||||
const UploadDoneCallback& done_callback) {
|
||||
UploadDoneCallback done_callback) {
|
||||
+
|
||||
+ return;
|
||||
+
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 12 Jun 2018 15:03:29 +0200
|
||||
Subject: Hide "Send reports to Google"
|
||||
|
||||
---
|
||||
chrome/android/java/res/layout/fre_tosanduma.xml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
|
||||
--- a/chrome/android/java/res/layout/fre_tosanduma.xml
|
||||
+++ b/chrome/android/java/res/layout/fre_tosanduma.xml
|
||||
@@ -70,7 +70,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:lineSpacingMultiplier="1.4"
|
||||
android:text="@string/fre_send_report_check"
|
||||
- android:textAppearance="@style/BlackBodyDefault" />
|
||||
+ android:textAppearance="@style/BlackBodyDefault" android:visibility = "gone" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+1
-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
|
||||
@@ -289,6 +289,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
|
||||
@@ -291,6 +291,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
|
||||
DCHECK(!callback_);
|
||||
callback_ = callback;
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 28 Oct 2017 10:09:41 +0200
|
||||
Subject: Cure AMP and tracking from search results
|
||||
|
||||
---
|
||||
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
|
||||
third_party/blink/renderer/core/dom/document.cc | 20 +++++++++++++++++++-
|
||||
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 ++++++
|
||||
3 files changed, 26 insertions(+), 1 deletion(-)
|
||||
create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
--- a/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
@@ -147,6 +147,7 @@ blink_core_sources("dom") {
|
||||
"events/tree_scope_event_context.h",
|
||||
"events/window_event_context.cc",
|
||||
"events/window_event_context.h",
|
||||
+ "extensions/dont-track-me.h",
|
||||
"exception_code.h",
|
||||
"first_letter_pseudo_element.cc",
|
||||
"first_letter_pseudo_element.h",
|
||||
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
|
||||
@@ -276,6 +276,8 @@
|
||||
#include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
|
||||
#include "third_party/blink/renderer/platform/wtf/time.h"
|
||||
|
||||
+#include "extensions/anti_amp_cure.h"
|
||||
+
|
||||
#ifndef NDEBUG
|
||||
using WeakDocumentSet =
|
||||
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
|
||||
@@ -5839,8 +5841,24 @@ void Document::FinishedParsing() {
|
||||
fetcher_->ClearResourcesFromPreviousFetcher();
|
||||
}
|
||||
|
||||
- if (IsPrefetchOnly())
|
||||
+ if (IsPrefetchOnly()) {
|
||||
WebPrerenderingSupport::Current()->PrefetchFinished();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // determine whether this is a Google search results page
|
||||
+ const SecurityOrigin *origin = GetSecurityOrigin();
|
||||
+ if (origin) {
|
||||
+ WTF::String domain = origin->Domain();
|
||||
+ size_t pos = domain.Find(".google.");
|
||||
+ auto* bodyElement = body();
|
||||
+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
|
||||
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
|
||||
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||
+ e->setText(ANTI_AMP_CURE_JS);
|
||||
+ bodyElement->AppendChild(e);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
void Document::ElementDataCacheClearTimerFired(TimerBase*) {
|
||||
diff --git a/third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h b/third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
|
||||
@@ -0,0 +1,6 @@
|
||||
+#ifndef anti_amp_cure_h
|
||||
+#define anti_amp_cure_h
|
||||
+
|
||||
+#define ANTI_AMP_CURE_JS "/* Bromite click-tracking and AMP removal v0.3.5 */\n\nfunction recreateHyperlink(a) {\n // skip already-sanitized hyperlinks\n if (a.sane) return false;\n\n // create new A element - old one has event listeners attached\n var newA = document.createElement('a');\n newA.referrerPolicy = 'origin';\n // property set when hyperlink has been created by this script\n newA.sane = 1;\n\n // remove AMP class, get actual page URL\n var ampCur = a.getAttribute('data-amp-cur');\n if (ampCur) {\n newA.href = ampCur;\n a.classList.remove('amp_r');\n } else {\n var realLink = getRealLinkFromGoogleUrl(a);\n if (realLink) {\n newA.href = realLink;\n } else {\n // might not be an actual hyperlink, ignore it\n if (!a.href) {\n return false;\n }\n // leave original href unchanged\n newA.href = a.href;\n }\n }\n // copy CSS classes\n newA.className = a.className;\n\n // copy nodes inside the hyperlink\n while (a.firstChild) {\n newA.appendChild(a.lastChild);\n }\n // replace hyperlink\n a.parentNode.replaceChild(newA, a);\n return true;\n}\n\nfunction isResult(a) {\n if (a.getAttribute('data-amp-cur'))\n return true;\n var inlineMousedown = a.getAttribute('onmousedown');\n if (!inlineMousedown)\n\treturn false;\n // return rwt(....); // E.g Google search results.\n // return google.rwt(...); // E.g. sponsored search results\n // return google.arwt(this); // E.g. sponsored search results (dec 2016).\n return /\\ba?rwt\\(/.test(inlineMousedown) || /\\bctpacw\\b/.test(inlineMousedown);\n}\n\n/**\n * @returns {String} the real URL if the given link is a Google redirect URL.\n */\nfunction getRealLinkFromGoogleUrl(a) {\n if ((a.hostname === location.hostname || a.hostname.indexOf('www.google.') == 0) &&\n /^\\/(local_)?url$/.test(a.pathname)) {\n // Google Maps / Dito (/local_url?q=<url>)\n // Mobile (/url?q=<url>)\n var url = /[?&](?:q|url)=((?:https?|ftp)[%:][^&]+)/.exec(a.search);\n if (url) {\n return decodeURIComponent(url[1]);\n }\n // Help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...)\n url = /[?&](?:q|url)=((?:%2[Ff]|\\/)[^&]+)/.exec(a.search);\n if (url) {\n return a.origin + decodeURIComponent(url[1]);\n }\n }\n}\n\nfunction sanitizeAds() {\n // scan all divs\n var div = document.getElementById('tads');\n if (div) {\n div.style.display = 'none';\n\treturn true;\n }\n return false;\n}\n\nfunction sanitizeAll() {\n console.log(\"ads removed: \", sanitizeAds());\n console.log(\"hyperlinks sanitized: \", sanitizeAllHyperlinks(document));\n}\n\nfunction hookMoreResults() {\n var extrares = document.getElementById('extrares');\n if (!extrares) {\n console.log(\"could not hook more results\");\n return;\n }\n // mutation observers are great but they don't work\n extrares.addEventListener(\"DOMNodeInserted\", function(e) {\n var node = e.target;\n if (node.id && node.id.startsWith(\"arc-srp\"))\n console.log(\"hyperlinks sanitized on new result node: \", sanitizeAllHyperlinks(node));\n });\n}\n\nfunction setMlogoClick() {\n var mlogo = document.getElementById('qslc');\n if (mlogo && mlogo.children[0]) {\n mlogo = mlogo.children[0];\n mlogo.removeAttribute(\"href\");\n mlogo.setAttribute(\"onclick\", \"sanitizeAll()\");\n console.log(\"logo link replaced\");\n } else {\n console.log(\"could not replace logo link\");\n }\n}\n\nfunction sanitizeAllHyperlinks(rootNode) {\n var saned = 0, total = 0;\n rootNode.querySelectorAll('div[data-hveid]:not([data-hveid=\"\"]) a').forEach(function(a) {\n\ttotal++;\n\tvar res = recreateHyperlink(a);\n\tif (res) saned++;\n });\n console.log(\"sanitized \", saned, \"/\", total, \" hyperlinks\");\n\n return saned;\n}\n\n// avoid running cleanup on non-search pages\nif ((document.location.host.indexOf(\"images.google.\") == -1) && (document.location.host.indexOf(\"news.google.\") == -1)) {\n sanitizeAll();\n}\nsetMlogoClick();\n\nhookMoreResults();\n"
|
||||
+
|
||||
+#endif // anti_amp_cure_h
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+7
-7
@@ -10,20 +10,20 @@ Subject: ungoogled-chromium: Disable signin
|
||||
diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc
|
||||
--- a/chrome/browser/ui/chrome_pages.cc
|
||||
+++ b/chrome/browser/ui/chrome_pages.cc
|
||||
@@ -77,12 +77,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
|
||||
ShowSingletonTabOverwritingNTP(browser, params);
|
||||
@@ -76,12 +76,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
|
||||
ShowSingletonTabOverwritingNTP(browser, std::move(params));
|
||||
}
|
||||
|
||||
-void NavigateToSingletonTab(Browser* browser, const GURL& url) {
|
||||
- NavigateParams params(GetSingletonTabNavigateParams(browser, url));
|
||||
- params.path_behavior = NavigateParams::IGNORE_AND_NAVIGATE;
|
||||
- ShowSingletonTabOverwritingNTP(browser, params);
|
||||
- ShowSingletonTabOverwritingNTP(browser, std::move(params));
|
||||
-}
|
||||
-
|
||||
// Shows either the help app or the appropriate help page for |source|. If
|
||||
// |browser| is NULL and the help page is used (vs the app), the help page is
|
||||
// shown in the last active browser. If there is no such browser, a new browser
|
||||
@@ -397,6 +391,7 @@ void ShowSearchEngineSettings(Browser* browser) {
|
||||
@@ -396,6 +390,7 @@ void ShowSearchEngineSettings(Browser* browser) {
|
||||
#if !defined(OS_ANDROID)
|
||||
void ShowBrowserSignin(Browser* browser,
|
||||
signin_metrics::AccessPoint access_point) {
|
||||
@@ -31,9 +31,9 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
|
||||
Profile* original_profile = browser->profile()->GetOriginalProfile();
|
||||
SigninManagerBase* manager =
|
||||
SigninManagerFactory::GetForProfile(original_profile);
|
||||
@@ -442,6 +437,7 @@ void ShowBrowserSignin(Browser* browser,
|
||||
BrowserWindow::AVATAR_BUBBLE_MODE_SIGNIN,
|
||||
signin::ManageAccountsParams(), access_point, false);
|
||||
@@ -444,6 +439,7 @@ void ShowBrowserSignin(Browser* browser,
|
||||
profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN, browser, access_point);
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
+4
-4
@@ -9,7 +9,7 @@ Subject: ungoogled-chromium: Disable webRTC log uploader
|
||||
diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||
--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||
+++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
|
||||
@@ -115,30 +115,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
|
||||
@@ -114,30 +114,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
|
||||
DCHECK(meta_data.get());
|
||||
DCHECK(!upload_done_data.log_path.empty());
|
||||
|
||||
@@ -41,7 +41,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
|
||||
}
|
||||
|
||||
void WebRtcLogUploader::PrepareMultipartPostData(
|
||||
@@ -149,6 +126,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
|
||||
@@ -148,6 +125,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
|
||||
DCHECK(!compressed_log.empty());
|
||||
DCHECK(meta_data.get());
|
||||
|
||||
@@ -49,8 +49,8 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
|
||||
+ return;
|
||||
+
|
||||
std::unique_ptr<std::string> post_data(new std::string());
|
||||
SetupMultipart(post_data.get(),
|
||||
compressed_log,
|
||||
SetupMultipart(post_data.get(), compressed_log,
|
||||
upload_done_data.incoming_rtp_dump,
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+3
-3
@@ -16,7 +16,7 @@ Disable additional URLs that are not caught by the "trk" scheme
|
||||
diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/android/rlz/rlz_ping_handler.cc
|
||||
--- a/chrome/browser/android/rlz/rlz_ping_handler.cc
|
||||
+++ b/chrome/browser/android/rlz/rlz_ping_handler.cc
|
||||
@@ -66,7 +66,7 @@ void RlzPingHandler::Ping(
|
||||
@@ -73,7 +73,7 @@ void RlzPingHandler::Ping(
|
||||
DCHECK_EQ(id.length(), 50u);
|
||||
|
||||
GURL request_url(base::StringPrintf(
|
||||
@@ -91,7 +91,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_model_loader.h b/chrome/br
|
||||
diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc
|
||||
--- a/rlz/lib/financial_ping.cc
|
||||
+++ b/rlz/lib/financial_ping.cc
|
||||
@@ -351,7 +351,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request,
|
||||
@@ -350,7 +350,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request,
|
||||
|
||||
// Open network connection.
|
||||
InternetHandle connection_handle = InternetConnectA(inet_handle,
|
||||
@@ -100,7 +100,7 @@ diff --git a/rlz/lib/financial_ping.cc b/rlz/lib/financial_ping.cc
|
||||
INTERNET_FLAG_NO_CACHE_WRITE, 0);
|
||||
if (!connection_handle)
|
||||
return PING_FAILURE;
|
||||
@@ -395,7 +395,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request,
|
||||
@@ -394,7 +394,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request,
|
||||
return PING_SUCCESSFUL;
|
||||
#else
|
||||
std::string url =
|
||||
+1
-1
@@ -25,7 +25,7 @@ diff --git a/components/translate/content/renderer/translate_helper.cc b/compone
|
||||
diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
|
||||
--- a/components/translate/core/browser/translate_manager.cc
|
||||
+++ b/components/translate/core/browser/translate_manager.cc
|
||||
@@ -102,7 +102,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
||||
@@ -131,7 +131,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
||||
if (net::NetworkChangeNotifier::IsOffline())
|
||||
return;
|
||||
|
||||
+64
-79
@@ -5,11 +5,11 @@ Subject: ungoogled-chromium: Disable Google host detection
|
||||
Disables various detections of Google hosts and functionality specific to them
|
||||
---
|
||||
.../page_load_metrics/page_load_metrics_util.cc | 4 +-
|
||||
.../page_load_metrics/page_load_metrics_util.cc | 33 +---
|
||||
components/google/core/browser/google_util.cc | 193 ++-------------------
|
||||
.../page_load_metrics/page_load_metrics_util.cc | 33 +----
|
||||
components/google/core/browser/google_util.cc | 138 +++++----------------
|
||||
components/search_engines/template_url.cc | 6 +-
|
||||
net/base/url_util.cc | 22 ---
|
||||
5 files changed, 14 insertions(+), 244 deletions(-)
|
||||
net/base/url_util.cc | 22 ----
|
||||
5 files changed, 31 insertions(+), 172 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_util.cc b/chrome/browser/page_load_metrics/page_load_metrics_util.cc
|
||||
--- a/chrome/browser/page_load_metrics/page_load_metrics_util.cc
|
||||
@@ -191,7 +191,7 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
|
||||
}
|
||||
|
||||
void SetMockLinkDoctorBaseURLForTesting() {
|
||||
@@ -166,119 +64,50 @@ std::string GetGoogleLocale(const std::string& application_locale) {
|
||||
@@ -166,11 +64,11 @@ std::string GetGoogleLocale(const std::string& application_locale) {
|
||||
|
||||
GURL AppendGoogleLocaleParam(const GURL& url,
|
||||
const std::string& application_locale) {
|
||||
@@ -201,61 +201,52 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
|
||||
}
|
||||
|
||||
std::string GetGoogleCountryCode(const GURL& google_homepage_url) {
|
||||
- base::StringPiece google_hostname = google_homepage_url.host_piece();
|
||||
- // TODO(igorcov): This needs a fix for case when the host has a trailing dot,
|
||||
- // like "google.com./". https://crbug.com/720295.
|
||||
- const size_t last_dot = google_hostname.find_last_of('.');
|
||||
- DCHECK_NE(std::string::npos, last_dot);
|
||||
- base::StringPiece country_code = google_hostname.substr(last_dot + 1);
|
||||
- // Assume the com TLD implies the US.
|
||||
- if (country_code == "com")
|
||||
- return "us";
|
||||
- // Google uses the Unicode Common Locale Data Repository (CLDR), and the CLDR
|
||||
- // code for the UK is "gb".
|
||||
- if (country_code == "uk")
|
||||
- return "gb";
|
||||
- // Catalonia does not have a CLDR country code, since it's a region in Spain,
|
||||
- // so use Spain instead.
|
||||
- if (country_code == "cat")
|
||||
- return "es";
|
||||
- return country_code.as_string();
|
||||
+#if 0
|
||||
base::StringPiece google_hostname = google_homepage_url.host_piece();
|
||||
// TODO(igorcov): This needs a fix for case when the host has a trailing dot,
|
||||
// like "google.com./". https://crbug.com/720295.
|
||||
@@ -190,18 +88,24 @@ std::string GetGoogleCountryCode(const GURL& google_homepage_url) {
|
||||
if (country_code == "cat")
|
||||
return "es";
|
||||
return country_code.as_string();
|
||||
+#endif
|
||||
+ return "nolocale";
|
||||
}
|
||||
|
||||
GURL GetGoogleSearchURL(const GURL& google_homepage_url) {
|
||||
- // To transform the homepage URL into the corresponding search URL, add the
|
||||
- // "search" and the "q=" query string.
|
||||
- GURL::Replacements replacements;
|
||||
- replacements.SetPathStr("search");
|
||||
- replacements.SetQueryStr("q=");
|
||||
- return google_homepage_url.ReplaceComponents(replacements);
|
||||
+#if 0
|
||||
// To transform the homepage URL into the corresponding search URL, add the
|
||||
// "search" and the "q=" query string.
|
||||
GURL::Replacements replacements;
|
||||
replacements.SetPathStr("search");
|
||||
replacements.SetQueryStr("q=");
|
||||
return google_homepage_url.ReplaceComponents(replacements);
|
||||
+#endif
|
||||
+ return google_homepage_url;
|
||||
}
|
||||
|
||||
const GURL& CommandLineGoogleBaseURL() {
|
||||
- // Unit tests may add command-line flags after the first call to this
|
||||
- // function, so we don't simply initialize a static |base_url| directly and
|
||||
- // then unconditionally return it.
|
||||
- CR_DEFINE_STATIC_LOCAL(std::string, switch_value, ());
|
||||
CR_DEFINE_STATIC_LOCAL(GURL, base_url, ());
|
||||
- std::string current_switch_value(
|
||||
- base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
||||
- switches::kGoogleBaseURL));
|
||||
- if (current_switch_value != switch_value) {
|
||||
- switch_value = current_switch_value;
|
||||
- base_url = url_formatter::FixupURL(switch_value, std::string());
|
||||
- if (!base_url.is_valid() || base_url.has_query() || base_url.has_ref())
|
||||
- base_url = GURL();
|
||||
- }
|
||||
+#if 0
|
||||
// Unit tests may add command-line flags after the first call to this
|
||||
// function, so we don't simply initialize a static |base_url| directly and
|
||||
// then unconditionally return it.
|
||||
@@ -216,31 +120,35 @@ const GURL& CommandLineGoogleBaseURL() {
|
||||
if (!base_url.is_valid() || base_url.has_query() || base_url.has_ref())
|
||||
base_url = GURL();
|
||||
}
|
||||
+#endif
|
||||
+ CR_DEFINE_STATIC_LOCAL(GURL, base_url, ());
|
||||
+ base_url = GURL();
|
||||
return base_url;
|
||||
}
|
||||
|
||||
bool StartsWithCommandLineGoogleBaseURL(const GURL& url) {
|
||||
- const GURL& base_url(CommandLineGoogleBaseURL());
|
||||
- return base_url.is_valid() &&
|
||||
- base::StartsWith(url.possibly_invalid_spec(), base_url.spec(),
|
||||
- base::CompareCase::SENSITIVE);
|
||||
+#if 0
|
||||
const GURL& base_url(CommandLineGoogleBaseURL());
|
||||
return base_url.is_valid() &&
|
||||
base::StartsWith(url.possibly_invalid_spec(), base_url.spec(),
|
||||
base::CompareCase::SENSITIVE);
|
||||
+#endif
|
||||
+ return false;
|
||||
}
|
||||
|
||||
@@ -276,47 +267,41 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
|
||||
}
|
||||
|
||||
bool IsGoogleHomePageUrl(const GURL& url) {
|
||||
- // First check to see if this has a Google domain.
|
||||
- if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN,
|
||||
- DISALLOW_NON_STANDARD_PORTS) &&
|
||||
- !IsGoogleSearchSubdomainUrl(url)) {
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- // Make sure the path is a known home page path.
|
||||
- base::StringPiece path(url.path_piece());
|
||||
- return IsPathHomePageBase(path) ||
|
||||
- base::StartsWith(path, "/ig", base::CompareCase::INSENSITIVE_ASCII);
|
||||
+#if 0
|
||||
// First check to see if this has a Google domain.
|
||||
if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN,
|
||||
DISALLOW_NON_STANDARD_PORTS) &&
|
||||
@@ -252,9 +160,13 @@ bool IsGoogleHomePageUrl(const GURL& url) {
|
||||
base::StringPiece path(url.path_piece());
|
||||
return IsPathHomePageBase(path) ||
|
||||
base::StartsWith(path, "/ig", base::CompareCase::INSENSITIVE_ASCII);
|
||||
+#else
|
||||
+ return false;
|
||||
+#endif
|
||||
}
|
||||
|
||||
bool IsGoogleSearchUrl(const GURL& url) {
|
||||
- // First check to see if this has a Google domain.
|
||||
- if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN,
|
||||
- DISALLOW_NON_STANDARD_PORTS) &&
|
||||
- !IsGoogleSearchSubdomainUrl(url)) {
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- // Make sure the path is a known search path.
|
||||
- base::StringPiece path(url.path_piece());
|
||||
- bool is_home_page_base = IsPathHomePageBase(path);
|
||||
- if (!is_home_page_base && (path != "/search"))
|
||||
- return false;
|
||||
-
|
||||
- // Check for query parameter in URL parameter and hash fragment, depending on
|
||||
- // the path type.
|
||||
- return HasGoogleSearchQueryParam(url.ref_piece()) ||
|
||||
- (!is_home_page_base && HasGoogleSearchQueryParam(url.query_piece()));
|
||||
+#if 0
|
||||
// First check to see if this has a Google domain.
|
||||
if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN,
|
||||
DISALLOW_NON_STANDARD_PORTS) &&
|
||||
@@ -272,14 +184,20 @@ bool IsGoogleSearchUrl(const GURL& url) {
|
||||
// the path type.
|
||||
return HasGoogleSearchQueryParam(url.ref_piece()) ||
|
||||
(!is_home_page_base && HasGoogleSearchQueryParam(url.query_piece()));
|
||||
+#else
|
||||
+ return false;
|
||||
+#endif
|
||||
}
|
||||
|
||||
bool IsYoutubeDomainUrl(const GURL& url,
|
||||
SubdomainPermission subdomain_permission,
|
||||
PortPermission port_permission) {
|
||||
- return IsValidURL(url, port_permission) &&
|
||||
- IsValidHostName(url.host_piece(), "youtube", subdomain_permission,
|
||||
- nullptr);
|
||||
+#if 0
|
||||
return IsValidURL(url, port_permission) &&
|
||||
IsValidHostName(url.host_piece(), "youtube", subdomain_permission,
|
||||
nullptr);
|
||||
+#endif
|
||||
+ return false;
|
||||
}
|
||||
|
||||
@@ -324,7 +309,7 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
|
||||
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
|
||||
--- a/components/search_engines/template_url.cc
|
||||
+++ b/components/search_engines/template_url.cc
|
||||
@@ -510,11 +510,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
|
||||
@@ -498,11 +498,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
|
||||
bool TemplateURLRef::HasGoogleBaseURLs(
|
||||
const SearchTermsData& search_terms_data) const {
|
||||
ParseIfNecessary(search_terms_data);
|
||||
+1
-1
@@ -24,7 +24,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
|
||||
void GCMClientImpl::StartCheckin() {
|
||||
+ return;
|
||||
// Make sure no checkin is in progress.
|
||||
if (checkin_request_.get())
|
||||
if (checkin_request_)
|
||||
return;
|
||||
@@ -777,6 +779,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
|
||||
}
|
||||
+5
-5
@@ -18,7 +18,7 @@ See also: https://github.com/Eloston/ungoogled-chromium/issues/104
|
||||
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
|
||||
@@ -301,7 +301,6 @@
|
||||
@@ -296,7 +296,6 @@
|
||||
<include name="IDR_INLINE_LOGIN_HTML" file="resources\inline_login\inline_login.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
|
||||
<include name="IDR_INLINE_LOGIN_CSS" file="resources\inline_login\inline_login.css" flattenhtml="true" type="BINDATA" />
|
||||
<include name="IDR_INLINE_LOGIN_JS" file="resources\inline_login\inline_login.js" flattenhtml="true" type="BINDATA" />
|
||||
@@ -26,8 +26,8 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
|
||||
<include name="IDR_INSPECT_CSS" file="resources\inspect\inspect.css" flattenhtml="true" type="BINDATA" />
|
||||
<include name="IDR_INSPECT_HTML" file="resources\inspect\inspect.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
|
||||
<include name="IDR_INSPECT_JS" file="resources\inspect\inspect.js" flattenhtml="true" type="BINDATA" />
|
||||
@@ -436,7 +435,6 @@
|
||||
</if>
|
||||
@@ -431,7 +430,6 @@
|
||||
<include name="IDR_WEBRTC_LOGS_JS" file="resources\media\webrtc_logs.js" type="BINDATA" />
|
||||
<include name="IDR_WEBSTORE_MANIFEST" file="resources\webstore_app\manifest.json" type="BINDATA" />
|
||||
<include name="IDR_CRYPTOTOKEN_MANIFEST" file="resources\cryptotoken\manifest.json" type="BINDATA" />
|
||||
- <include name="IDR_GAIA_AUTH_MANIFEST" file="resources\gaia_auth\manifest.json" type="BINDATA" />
|
||||
@@ -70,8 +70,8 @@ diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/ch
|
||||
diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome/browser/resources/component_extension_resources.grd
|
||||
--- a/chrome/browser/resources/component_extension_resources.grd
|
||||
+++ b/chrome/browser/resources/component_extension_resources.grd
|
||||
@@ -40,8 +40,6 @@
|
||||
<include name="IDR_BOOKMARK_MANAGER_BOOKMARK_BMM_JS" file="bookmark_manager/js/bmm.js" type="BINDATA" />
|
||||
@@ -32,8 +32,6 @@
|
||||
|
||||
<!-- Material Design Bookmarks -->
|
||||
<include name="IDR_COMPONENT_MD_BOOKMARKS_BOOKMARKS_HTML" file="md_bookmarks/bookmarks.html" type="BINDATA" />
|
||||
- <!-- Gaia auth extension -->
|
||||
+15
-31
@@ -10,11 +10,10 @@ Adds a menu item under "More tools" to clear the HTTP authentication cache on de
|
||||
chrome/browser/ui/toolbar/app_menu_model.cc | 8 ++++++++
|
||||
chrome/browser/ui/toolbar/app_menu_model.h | 1 +
|
||||
chrome/browser/ui/views/frame/global_menu_bar_x11.cc | 1 +
|
||||
net/http/http_auth_cache.cc | 4 ++++
|
||||
net/http/http_auth_cache.h | 2 ++
|
||||
net/http/http_auth_cache.cc | 1 +
|
||||
tools/metrics/histograms/enums.xml | 1 +
|
||||
tools/metrics/histograms/histograms.xml | 1 +
|
||||
10 files changed, 32 insertions(+)
|
||||
9 files changed, 27 insertions(+)
|
||||
|
||||
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
|
||||
--- a/chrome/app/chrome_command_ids.h
|
||||
@@ -30,7 +29,7 @@ diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
|
||||
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
|
||||
@@ -1053,6 +1053,9 @@ are declared in build/common.gypi.
|
||||
@@ -1058,6 +1058,9 @@ are declared in build/common.gypi.
|
||||
<message name="IDS_CLEAR_BROWSING_DATA" desc="The text label for the menu item for clearing of browsing data">
|
||||
&Clear browsing data...
|
||||
</message>
|
||||
@@ -40,7 +39,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
||||
<message name="IDS_SHOW_DOWNLOADS" desc="The show downloads menu in the app menu">
|
||||
&Downloads
|
||||
</message>
|
||||
@@ -1091,6 +1094,9 @@ are declared in build/common.gypi.
|
||||
@@ -1096,6 +1099,9 @@ are declared in build/common.gypi.
|
||||
<message name="IDS_CLEAR_BROWSING_DATA" desc="In Title Case: The text label for the menu item for clearing of browsing data">
|
||||
&Clear Browsing Data...
|
||||
</message>
|
||||
@@ -53,7 +52,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
||||
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
|
||||
--- a/chrome/browser/ui/browser_command_controller.cc
|
||||
+++ b/chrome/browser/ui/browser_command_controller.cc
|
||||
@@ -60,6 +60,9 @@
|
||||
@@ -61,6 +61,9 @@
|
||||
#include "extensions/browser/extension_system.h"
|
||||
#include "printing/buildflags/buildflags.h"
|
||||
#include "ui/events/keycodes/keyboard_codes.h"
|
||||
@@ -63,17 +62,17 @@ diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
#include "chrome/browser/ui/browser_commands_mac.h"
|
||||
@@ -629,6 +632,9 @@ bool BrowserCommandController::ExecuteCommandWithDisposition(
|
||||
@@ -630,6 +633,9 @@ bool BrowserCommandController::ExecuteCommandWithDisposition(
|
||||
case IDC_CLEAR_BROWSING_DATA:
|
||||
ShowClearBrowsingDataDialog(browser_);
|
||||
break;
|
||||
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
|
||||
+ profile()->GetRequestContext()->GetURLRequestContext()->http_transaction_factory()->GetSession()->http_auth_cache()->Clear();
|
||||
+ profile()->GetRequestContext()->GetURLRequestContext()->http_transaction_factory()->GetSession()->http_auth_cache()->ClearAllEntries();
|
||||
+ break;
|
||||
case IDC_IMPORT_SETTINGS:
|
||||
ShowImportDialog(browser_);
|
||||
break;
|
||||
@@ -871,6 +877,7 @@ void BrowserCommandController::InitCommandState() {
|
||||
@@ -874,6 +880,7 @@ void BrowserCommandController::InitCommandState() {
|
||||
!profile()->IsOffTheRecord());
|
||||
command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA,
|
||||
!guest_session);
|
||||
@@ -131,33 +130,18 @@ diff --git a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc b/chrome/brows
|
||||
diff --git a/net/http/http_auth_cache.cc b/net/http/http_auth_cache.cc
|
||||
--- a/net/http/http_auth_cache.cc
|
||||
+++ b/net/http/http_auth_cache.cc
|
||||
@@ -250,6 +250,10 @@ bool HttpAuthCache::Remove(const GURL& origin,
|
||||
@@ -250,6 +250,7 @@ bool HttpAuthCache::Remove(const GURL& origin,
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+
|
||||
return false;
|
||||
}
|
||||
|
||||
+void HttpAuthCache::Clear() {
|
||||
+ entries_.clear();
|
||||
+}
|
||||
+
|
||||
void HttpAuthCache::ClearEntriesAddedWithin(base::TimeDelta duration) {
|
||||
base::TimeTicks begin_time = base::TimeTicks::Now() - duration;
|
||||
base::EraseIf(entries_, [begin_time](const Entry& entry) {
|
||||
diff --git a/net/http/http_auth_cache.h b/net/http/http_auth_cache.h
|
||||
--- a/net/http/http_auth_cache.h
|
||||
+++ b/net/http/http_auth_cache.h
|
||||
@@ -166,6 +166,8 @@ class NET_EXPORT HttpAuthCache {
|
||||
HttpAuth::Scheme scheme,
|
||||
const AuthCredentials& credentials);
|
||||
|
||||
+ void Clear();
|
||||
+
|
||||
// Clears cache entries created within |duration| of base::TimeTicks::Now().
|
||||
void ClearEntriesAddedWithin(base::TimeDelta duration);
|
||||
|
||||
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
|
||||
--- a/tools/metrics/histograms/enums.xml
|
||||
+++ b/tools/metrics/histograms/enums.xml
|
||||
@@ -48309,6 +48309,7 @@ Full version information for the fingerprint enum values:
|
||||
@@ -49525,6 +49525,7 @@ Full version information for the fingerprint enum values:
|
||||
<int value="48" label="Open in Chrome"/>
|
||||
<int value="49" label="Site Settings"/>
|
||||
<int value="50" label="App Info"/>
|
||||
@@ -168,7 +152,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
|
||||
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
|
||||
--- a/tools/metrics/histograms/histograms.xml
|
||||
+++ b/tools/metrics/histograms/histograms.xml
|
||||
@@ -107908,6 +107908,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
|
||||
@@ -111339,6 +111339,7 @@ uploading your change for review.
|
||||
<suffix name="Overestimate"
|
||||
label="Tracks when the compositor's estimates were too high and by how
|
||||
much."/>
|
||||
+2
-2
@@ -15,8 +15,8 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 100
|
||||
+ "kCurrentDataVersion": 101
|
||||
- "kCurrentDataVersion": 102
|
||||
+ "kCurrentDataVersion": 103
|
||||
},
|
||||
|
||||
// The following engines are included in country lists and are added to the
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 11 Dec 2017 22:42:11 +0100
|
||||
Subject: Added Google English-only engine
|
||||
Subject: Add Google English-only engine
|
||||
|
||||
Add a Google search engine that forces languages to English,
|
||||
disable from all its searches RLZ and field experiments querystring parameters.
|
||||
@@ -17,8 +17,8 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 101
|
||||
+ "kCurrentDataVersion": 102
|
||||
- "kCurrentDataVersion": 103
|
||||
+ "kCurrentDataVersion": 104
|
||||
},
|
||||
|
||||
// The following engines are included in country lists and are added to the
|
||||
@@ -27,8 +27,8 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
|
||||
},
|
||||
|
||||
+ "googleen": {
|
||||
+ "name": "GoogleEN",
|
||||
+ "keyword": "google.co.uk",
|
||||
+ "name": "Google in English",
|
||||
+ "keyword": "googleen",
|
||||
+ "favicon_url": "https://www.google.com/favicon.ico",
|
||||
+ "search_url": "{google:baseURL}search?q={searchTerms}&{google:originalQueryForSuggestion}{google:iOSSearchLanguage}{google:searchClient}{google:contextualSearchVersion}ie={inputEncoding}&hl=en",
|
||||
+ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&gs_ri={google:suggestRid}&xssi=t&q={searchTerms}&{google:inputType}{google:pageClassification}{google:searchVersion}{google:prefetchQuery}sugkey={google:suggestAPIKeyParameter}&hl=en",
|
||||
+2
-2
@@ -15,8 +15,8 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 102
|
||||
+ "kCurrentDataVersion": 103
|
||||
- "kCurrentDataVersion": 104
|
||||
+ "kCurrentDataVersion": 105
|
||||
},
|
||||
|
||||
// The following engines are included in country lists and are added to the
|
||||
@@ -0,0 +1,61 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 28 Oct 2017 10:09:41 +0200
|
||||
Subject: Cure AMP and tracking from search results
|
||||
|
||||
---
|
||||
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
|
||||
third_party/blink/renderer/core/dom/document.cc | 20 +++++++++++++++++++-
|
||||
2 files changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
--- a/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
@@ -147,6 +147,7 @@ blink_core_sources("dom") {
|
||||
"events/tree_scope_event_context.h",
|
||||
"events/window_event_context.cc",
|
||||
"events/window_event_context.h",
|
||||
+ "extensions/dont-track-me.h",
|
||||
"exception_code.h",
|
||||
"first_letter_pseudo_element.cc",
|
||||
"first_letter_pseudo_element.h",
|
||||
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
|
||||
@@ -277,6 +277,8 @@
|
||||
#include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
|
||||
#include "third_party/blink/renderer/platform/wtf/time.h"
|
||||
|
||||
+#include "extensions/anti_amp_cure.h"
|
||||
+
|
||||
#ifndef NDEBUG
|
||||
using WeakDocumentSet =
|
||||
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
|
||||
@@ -5882,8 +5884,24 @@ void Document::FinishedParsing() {
|
||||
fetcher_->ClearResourcesFromPreviousFetcher();
|
||||
}
|
||||
|
||||
- if (IsPrefetchOnly())
|
||||
+ if (IsPrefetchOnly()) {
|
||||
WebPrerenderingSupport::Current()->PrefetchFinished();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // determine whether this is a Google search results page
|
||||
+ const SecurityOrigin *origin = GetSecurityOrigin();
|
||||
+ if (origin) {
|
||||
+ WTF::String domain = origin->Domain();
|
||||
+ size_t pos = domain.Find(".google.");
|
||||
+ auto* bodyElement = body();
|
||||
+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
|
||||
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
|
||||
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||
+ e->setText(ANTI_AMP_CURE_JS);
|
||||
+ bodyElement->AppendChild(e);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+8
-21
@@ -5,11 +5,9 @@ Subject: Play videos in background
|
||||
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com
|
||||
Original Javascript code by timdream
|
||||
---
|
||||
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
|
||||
third_party/blink/renderer/core/dom/document.cc | 17 +++++++++++++----
|
||||
.../blink/renderer/core/dom/extensions/video_bg_play.h | 6 ++++++
|
||||
3 files changed, 20 insertions(+), 4 deletions(-)
|
||||
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h
|
||||
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
|
||||
third_party/blink/renderer/core/dom/document.cc | 17 +++++++++++++----
|
||||
2 files changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
--- a/third_party/blink/renderer/core/dom/BUILD.gn
|
||||
@@ -25,15 +23,15 @@ diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/re
|
||||
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
|
||||
@@ -221,6 +221,7 @@
|
||||
@@ -222,6 +222,7 @@
|
||||
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
|
||||
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
|
||||
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
|
||||
+#include "extensions/video_bg_play.h"
|
||||
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
|
||||
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
|
||||
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
|
||||
#include "third_party/blink/renderer/core/policy/document_policy.h"
|
||||
@@ -5848,17 +5849,25 @@ void Document::FinishedParsing() {
|
||||
@@ -5891,17 +5892,25 @@ void Document::FinishedParsing() {
|
||||
|
||||
// determine whether this is a Google search results page
|
||||
const SecurityOrigin *origin = GetSecurityOrigin();
|
||||
@@ -60,20 +58,9 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
|
||||
+ bodyElement->AppendChild(e);
|
||||
+ }
|
||||
+ } // has origin and body element
|
||||
}
|
||||
|
||||
void Document::ElementDataCacheClearTimerFired(TimerBase*) {
|
||||
diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
|
||||
@@ -0,0 +1,6 @@
|
||||
+#ifndef video_bg_play_h
|
||||
+#define video_bg_play_h
|
||||
+
|
||||
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
|
||||
+
|
||||
+#endif // video_bg_play_h
|
||||
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
From: AlexeyBarabash <alexey@brave.com>
|
||||
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.h | 2 ++
|
||||
2 files changed, 12 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
|
||||
@@ -871,6 +871,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
|
||||
return pipeline_metadata_.has_audio;
|
||||
}
|
||||
|
||||
+bool WebMediaPlayerImpl::HasVideoNonEmptySize() const {
|
||||
+ DCHECK(main_task_runner_->BelongsToCurrentThread());
|
||||
+
|
||||
+ return pipeline_metadata_.has_video && pipeline_metadata_.natural_size.width() != 0 && pipeline_metadata_.natural_size.height() != 0;
|
||||
+}
|
||||
+
|
||||
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
|
||||
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
|
||||
DCHECK(main_task_runner_->BelongsToCurrentThread());
|
||||
@@ -2940,7 +2946,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 (IsBackgroundedSuspendEnabled()) {
|
||||
- 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)
|
||||
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
|
||||
@@ -159,6 +159,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;
|
||||
+ // True is has video and it's frame size is not zero
|
||||
+ bool HasVideoNonEmptySize() const;
|
||||
|
||||
void EnabledAudioTracksChanged(
|
||||
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds)
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From: AlexeyBarabash <alexey@brave.com>
|
||||
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(+)
|
||||
|
||||
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
|
||||
@@ -363,6 +363,13 @@ public class ExternalNavigationHandler {
|
||||
return OverrideUrlLoadingResult.NO_OVERRIDE;
|
||||
}
|
||||
|
||||
+ // Force to open YouTube urls in Bromite
|
||||
+ String intentPackageName = intent.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);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
From: Serg <serg.zhukovsky@gmail.com>
|
||||
Date: Tue, 31 Jan 2017 22:12:27 -0500
|
||||
Subject: Add exit menu item
|
||||
|
||||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 2 ++
|
||||
.../android/java/src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
|
||||
3 files changed, 7 insertions(+)
|
||||
|
||||
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
|
||||
@@ -78,6 +78,8 @@
|
||||
android:title="@string/menu_help" />
|
||||
<item android:id="@+id/enter_vr_id"
|
||||
android:title="@string/enter_vr" />
|
||||
+ <item android:id="@+id/exit_id"
|
||||
+ android:title="@string/menu_exit" />
|
||||
</group>
|
||||
|
||||
<!-- Items shown only in the tab switcher -->
|
||||
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
|
||||
@@ -1986,6 +1986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
RecordUserAction.record("MobileMenuSettings");
|
||||
} else if (id == R.id.show_menu) {
|
||||
showAppMenuForKeyboardEvent();
|
||||
+ } else if (id == R.id.exit_id) {
|
||||
+ ApplicationLifetime.terminate(false);
|
||||
} else if (id == R.id.find_in_page_id) {
|
||||
if (mFindToolbarManager == null) return false;
|
||||
|
||||
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
|
||||
@@ -2678,6 +2678,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
|
||||
<message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
|
||||
Settings
|
||||
</message>
|
||||
+ <message name="IDS_MENU_EXIT" desc="Menu item for exit browser. [CHAR-LIMIT=27]">
|
||||
+ Exit
|
||||
+ </message>
|
||||
<message name="IDS_MENU_CLOSE_ALL_TABS" desc="Menu item for closing all open tabs. [CHAR-LIMIT=27]">
|
||||
Close all tabs
|
||||
</message>
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 27 Jun 2018 01:32:28 +0200
|
||||
Subject: Remove help menu item
|
||||
|
||||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 2 --
|
||||
.../java/src/org/chromium/chrome/browser/ChromeActivity.java | 9 ---------
|
||||
.../java/src/org/chromium/chrome/browser/KeyboardShortcuts.java | 3 ---
|
||||
.../chromium/chrome/browser/customtabs/CustomTabActivity.java | 2 +-
|
||||
4 files changed, 1 insertion(+), 15 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
|
||||
--- a/chrome/android/java/res/menu/main_menu.xml
|
||||
+++ b/chrome/android/java/res/menu/main_menu.xml
|
||||
@@ -74,8 +74,6 @@
|
||||
android:icon="@drawable/reader_mode_prefs_icon" />
|
||||
<item android:id="@+id/preferences_id"
|
||||
android:title="@string/menu_preferences" />
|
||||
- <item android:id="@+id/help_id"
|
||||
- android:title="@string/menu_help" />
|
||||
<item android:id="@+id/enter_vr_id"
|
||||
android:title="@string/enter_vr" />
|
||||
<item android:id="@+id/exit_id"
|
||||
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
|
||||
@@ -2010,15 +2010,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
|
||||
final Tab currentTab = getActivityTab();
|
||||
|
||||
- if (id == R.id.help_id) {
|
||||
- String url = currentTab != null ? currentTab.getUrl() : "";
|
||||
- Profile profile = mTabModelSelector.isIncognitoSelected()
|
||||
- ? Profile.getLastUsedProfile().getOffTheRecordProfile()
|
||||
- : Profile.getLastUsedProfile().getOriginalProfile();
|
||||
- startHelpAndFeedback(url, "MobileMenuFeedback", profile);
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
// All the code below assumes currentTab is not null, so return early if it is null.
|
||||
if (currentTab == null) {
|
||||
return false;
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
|
||||
@@ -338,9 +338,6 @@ public class KeyboardShortcuts {
|
||||
tab = activity.getActivityTab();
|
||||
if (tab != null && tab.canGoForward()) tab.goForward();
|
||||
return true;
|
||||
- case CTRL | SHIFT | KeyEvent.KEYCODE_SLASH: // i.e. Ctrl+?
|
||||
- activity.onMenuOrKeyboardAction(R.id.help_id, false);
|
||||
- return true;
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
@@ -1038,7 +1038,7 @@ public class CustomTabActivity extends ChromeActivity {
|
||||
public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
|
||||
// Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
|
||||
if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id
|
||||
- || id == R.id.help_id || id == R.id.recent_tabs_menu_id
|
||||
+ || id == R.id.recent_tabs_menu_id
|
||||
|| id == R.id.new_incognito_tab_menu_id || id == R.id.new_tab_menu_id
|
||||
|| id == R.id.open_history_menu_id) {
|
||||
return true;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+31
-17
@@ -15,11 +15,18 @@ Subject: Add menu option to toggle global Javascript preference
|
||||
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
|
||||
@@ -49,6 +49,19 @@
|
||||
@@ -49,6 +49,7 @@
|
||||
<item android:id="@+id/open_webapk_id"
|
||||
android:title="@string/menu_open_webapk"
|
||||
android:orderInCategory="2" />
|
||||
+
|
||||
<item android:id="@+id/request_desktop_site_row_menu_id"
|
||||
android:title="@null"
|
||||
android:orderInCategory="2">
|
||||
@@ -61,6 +62,18 @@
|
||||
</menu>
|
||||
</item>
|
||||
|
||||
+ <item android:id="@+id/enable_javascript_row_menu_id"
|
||||
+ android:title="@null"
|
||||
+ android:orderInCategory="2">
|
||||
@@ -32,20 +39,27 @@ diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<item android:id="@+id/request_desktop_site_row_menu_id"
|
||||
android:title="@null"
|
||||
android:orderInCategory="2">
|
||||
<!-- 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
|
||||
@@ -59,6 +59,19 @@
|
||||
@@ -59,6 +59,7 @@
|
||||
android:title="@string/menu_add_to_homescreen" />
|
||||
<item android:id="@+id/open_webapk_id"
|
||||
android:title="@string/menu_open_webapk" />
|
||||
+
|
||||
<item android:id="@+id/request_desktop_site_row_menu_id"
|
||||
android:title="@null">
|
||||
<menu>
|
||||
@@ -69,6 +70,18 @@
|
||||
android:checkable="true" />
|
||||
</menu>
|
||||
</item>
|
||||
+
|
||||
+ <item android:id="@+id/enable_javascript_row_menu_id"
|
||||
+ android:title="@null"
|
||||
+ android:orderInCategory="2">
|
||||
+ android:title="@null">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_javascript_id"
|
||||
+ android:title="@string/menu_enable_javascript" />
|
||||
@@ -55,13 +69,13 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
|
||||
+ </menu>
|
||||
+ </item>
|
||||
+
|
||||
<item android:id="@+id/request_desktop_site_row_menu_id"
|
||||
android:title="@null">
|
||||
<menu>
|
||||
<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
|
||||
@@ -2050,6 +2050,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
@@ -2079,6 +2079,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
|
||||
currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnChange);
|
||||
RecordUserAction.record("MobileMenuRequestDesktopSite");
|
||||
@@ -79,7 +93,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
|
||||
@@ -1710,6 +1710,14 @@ public class ChromeTabbedActivity
|
||||
@@ -1644,6 +1644,14 @@ public class ChromeTabbedActivity
|
||||
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
||||
}
|
||||
RecordUserAction.record("MobileMenuDownloadManager");
|
||||
@@ -97,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
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
|
||||
@@ -214,6 +214,8 @@ public class AppMenuPropertiesDelegate {
|
||||
@@ -192,6 +192,8 @@ public class AppMenuPropertiesDelegate {
|
||||
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
@@ -106,9 +120,9 @@ 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()));
|
||||
@@ -469,4 +471,39 @@ public class AppMenuPropertiesDelegate {
|
||||
|
||||
return chromeHomeMenuItemFlagEnabled && !sHideChromeHomeMenuItems;
|
||||
@@ -412,4 +414,39 @@ public class AppMenuPropertiesDelegate {
|
||||
? mActivity.getString(R.string.menu_request_desktop_site_on)
|
||||
: mActivity.getString(R.string.menu_request_desktop_site_off));
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
@@ -160,7 +174,7 @@ 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
|
||||
@@ -2548,6 +2548,17 @@ Google may use your browsing activity, content on some sites you visit, and othe
|
||||
@@ -2663,6 +2663,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
|
||||
<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>
|
||||
@@ -1,22 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 28 Apr 2018 08:30:26 +0200
|
||||
Subject: Enable DNS-over-HTTPS by default
|
||||
|
||||
---
|
||||
components/network_session_configurator/common/network_features.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -10,6 +10,6 @@ const base::Feature kTokenBinding{"token-binding",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kDnsOverHttps{"dns-over-https",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
} // namespace features
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ Subject: url_request: hooks and ad url data
|
||||
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -1756,6 +1756,8 @@ component("net") {
|
||||
@@ -1734,6 +1734,8 @@ component("net") {
|
||||
"url_request/url_fetcher_response_writer.h",
|
||||
"url_request/url_range_request_job.cc",
|
||||
"url_request/url_range_request_job.h",
|
||||
-130
@@ -1,130 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 30 Mar 2018 10:09:03 +0200
|
||||
Subject: Add fingerprinting mitigation for getClientRects,
|
||||
getBoundingClientRect
|
||||
|
||||
Scale the result of Range::getClientRects and Element::getBoundingClientRect
|
||||
by a random +/-3% of the original value for each float in the Rect/Quad.
|
||||
The random value is generated once for each Document and re-used for all the
|
||||
attached elements.
|
||||
The rationale is that such value, albeit constant within the rendered Document,
|
||||
is within the same order of magniture of the floating point precision being
|
||||
used for fingerprinting and sufficient to poison the well.
|
||||
|
||||
See also: http://www.gsd.inesc-id.pt/~mpc/pubs/fingerprinting-trustcom2016.pdf
|
||||
---
|
||||
third_party/blink/renderer/core/dom/document.cc | 14 ++++++++++++++
|
||||
third_party/blink/renderer/core/dom/document.h | 5 +++++
|
||||
third_party/blink/renderer/core/dom/element.cc | 7 +++++++
|
||||
third_party/blink/renderer/core/dom/range.cc | 8 +++++++-
|
||||
4 files changed, 33 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -279,6 +279,8 @@
|
||||
|
||||
#include "extensions/anti_amp_cure.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+
|
||||
#ifndef NDEBUG
|
||||
using WeakDocumentSet =
|
||||
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
|
||||
@@ -740,6 +742,10 @@ Document::Document(const DocumentInit& initializer,
|
||||
#ifndef NDEBUG
|
||||
liveDocumentSet().insert(this);
|
||||
#endif
|
||||
+
|
||||
+ // add +/- 3% noise against fingerprinting
|
||||
+ shuffleFactorX_ = 1 + (base::RandDouble() - 0.5) * 0.03;
|
||||
+ shuffleFactorY_ = 1 + (base::RandDouble() - 0.5) * 0.03;
|
||||
}
|
||||
|
||||
Document::~Document() {
|
||||
@@ -766,6 +772,14 @@ Range* Document::CreateRangeAdjustedToTreeScope(const TreeScope& tree_scope,
|
||||
Position::BeforeNode(*shadow_host));
|
||||
}
|
||||
|
||||
+double Document::GetShuffleFactorX() {
|
||||
+ return shuffleFactorX_;
|
||||
+}
|
||||
+
|
||||
+double Document::GetShuffleFactorY() {
|
||||
+ return shuffleFactorY_;
|
||||
+}
|
||||
+
|
||||
SelectorQueryCache& Document::GetSelectorQueryCache() {
|
||||
if (!selector_query_cache_)
|
||||
selector_query_cache_ = std::make_unique<SelectorQueryCache>();
|
||||
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
|
||||
@@ -408,6 +408,9 @@ class CORE_EXPORT Document : public ContainerNode,
|
||||
|
||||
String origin() const;
|
||||
|
||||
+ double GetShuffleFactorX();
|
||||
+ double GetShuffleFactorY();
|
||||
+
|
||||
String visibilityState() const;
|
||||
mojom::PageVisibilityState GetPageVisibilityState() const;
|
||||
bool hidden() const;
|
||||
@@ -1670,6 +1673,8 @@ class CORE_EXPORT Document : public ContainerNode,
|
||||
|
||||
double start_time_;
|
||||
|
||||
+ double shuffleFactorX_, shuffleFactorY_;
|
||||
+
|
||||
TraceWrapperMember<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
|
||||
@@ -1348,6 +1348,11 @@ DOMRectList* Element::getClientRects() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
|
||||
quads, *element_layout_object);
|
||||
+
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(GetDocument().GetShuffleFactorX(), GetDocument().GetShuffleFactorY());
|
||||
+ }
|
||||
+
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
@@ -1365,6 +1370,8 @@ DOMRect* Element::getBoundingClientRect() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
|
||||
*element_layout_object);
|
||||
+ result.Scale(GetDocument().GetShuffleFactorX(), GetDocument().GetShuffleFactorY());
|
||||
+
|
||||
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
|
||||
@@ -1575,11 +1575,17 @@ DOMRectList* Range::getClientRects() const {
|
||||
Vector<FloatQuad> quads;
|
||||
GetBorderAndTextQuads(quads);
|
||||
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(owner_document_->GetShuffleFactorX(), owner_document_->GetShuffleFactorY());
|
||||
+ }
|
||||
+
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
DOMRect* Range::getBoundingClientRect() const {
|
||||
- return DOMRect::FromFloatRect(BoundingRect());
|
||||
+ auto rect = BoundingRect();
|
||||
+ rect.Scale(owner_document_->GetShuffleFactorX(), owner_document_->GetShuffleFactorY());
|
||||
+ return DOMRect::FromFloatRect(rect);
|
||||
}
|
||||
|
||||
// TODO(editing-dev): We should make
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+259
-37
@@ -6,23 +6,225 @@ 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
|
||||
---
|
||||
net/BUILD.gn | 9 +-
|
||||
net/url_request/adblock_intercept.cc | 324 ++++++++++++++++++++++++++++++++++
|
||||
net/url_request/adblock_intercept.h | 16 ++
|
||||
net/url_request/nochromo_intercept.cc | 116 ------------
|
||||
net/url_request/nochromo_intercept.h | 13 --
|
||||
net/url_request/url_request.cc | 19 +-
|
||||
6 files changed, 364 insertions(+), 133 deletions(-)
|
||||
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 +
|
||||
.../subresource_filter_content_settings_manager.cc | 3 +
|
||||
net/BUILD.gn | 9 +-
|
||||
net/url_request/adblock_intercept.cc | 326 +++++++++++++++++++++
|
||||
net/url_request/adblock_intercept.h | 18 ++
|
||||
net/url_request/nochromo_intercept.cc | 116 --------
|
||||
net/url_request/nochromo_intercept.h | 13 -
|
||||
net/url_request/url_request.cc | 36 ++-
|
||||
14 files changed, 477 insertions(+), 134 deletions(-)
|
||||
create mode 100644 net/url_request/adblock_intercept.cc
|
||||
create mode 100644 net/url_request/adblock_intercept.h
|
||||
delete mode 100644 net/url_request/nochromo_intercept.cc
|
||||
delete mode 100644 net/url_request/nochromo_intercept.h
|
||||
|
||||
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
|
||||
@@ -82,6 +82,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
|
||||
@@ -2089,6 +2089,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
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().adsEnabled();
|
||||
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(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
|
||||
@@ -1658,6 +1658,14 @@ public class ChromeTabbedActivity
|
||||
RecordUserAction.record("MobileTabClosedUndoShortCut");
|
||||
} else if (id == R.id.enter_vr_id) {
|
||||
VrShellDelegate.enterVrIfNecessary();
|
||||
+ } 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().adsEnabled();
|
||||
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else {
|
||||
return super.onMenuOrKeyboardAction(id, fromMenu);
|
||||
}
|
||||
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
|
||||
@@ -190,6 +190,8 @@ public class AppMenuPropertiesDelegate {
|
||||
&& !TextUtils.isEmpty(url);
|
||||
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
@@ -449,4 +451,40 @@ public class AppMenuPropertiesDelegate {
|
||||
? mActivity.getString(R.string.menu_enable_javascript_on)
|
||||
: mActivity.getString(R.string.menu_enable_javascript_off));
|
||||
}
|
||||
+
|
||||
+ /**
|
||||
+ * 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().adsEnabled();
|
||||
+
|
||||
+ // 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));
|
||||
+ }
|
||||
}
|
||||
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
|
||||
@@ -170,6 +170,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
|
||||
@@ -2683,6 +2683,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
|
||||
<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/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
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "components/keyed_service/core/service_access_type.h"
|
||||
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
|
||||
#include "url/gurl.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -160,9 +161,11 @@ void SubresourceFilterContentSettingsManager::OnContentSettingChanged(
|
||||
if (global_setting == CONTENT_SETTING_ALLOW) {
|
||||
ChromeSubresourceFilterClient::LogAction(
|
||||
kActionContentSettingsAllowedGlobal);
|
||||
+ net::adblock_enabled = false;
|
||||
} else if (global_setting == CONTENT_SETTING_BLOCK) {
|
||||
ChromeSubresourceFilterClient::LogAction(
|
||||
kActionContentSettingsBlockedGlobal);
|
||||
+ net::adblock_enabled = true;
|
||||
} else {
|
||||
NOTREACHED();
|
||||
}
|
||||
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -1756,8 +1756,6 @@ component("net") {
|
||||
@@ -1734,8 +1734,6 @@ component("net") {
|
||||
"url_request/url_fetcher_response_writer.h",
|
||||
"url_request/url_range_request_job.cc",
|
||||
"url_request/url_range_request_job.h",
|
||||
@@ -31,7 +233,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||
"url_request/url_request.cc",
|
||||
"url_request/url_request.h",
|
||||
"url_request/url_request_context.cc",
|
||||
@@ -1815,6 +1813,13 @@ component("net") {
|
||||
@@ -1793,6 +1791,13 @@ component("net") {
|
||||
"//third_party/zlib",
|
||||
]
|
||||
|
||||
@@ -49,7 +251,7 @@ diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_inte
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/adblock_intercept.cc
|
||||
@@ -0,0 +1,324 @@
|
||||
@@ -0,0 +1,326 @@
|
||||
+#include "url/gurl.h"
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
@@ -71,6 +273,8 @@ new file mode 100644
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+bool adblock_enabled = true;
|
||||
+
|
||||
+const char *LOG_TAG = "Bromite";
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
@@ -230,12 +434,12 @@ new file mode 100644
|
||||
+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_neg) {
|
||||
+ 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_neg[d]; d++) {
|
||||
+ for (int d = 0; const char *domain = entry->domains_skip[d]; d++) {
|
||||
+ if (domain == origin_host) {
|
||||
+ match_domain = false;
|
||||
+ break;
|
||||
@@ -378,7 +582,7 @@ diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_inter
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/adblock_intercept.h
|
||||
@@ -0,0 +1,16 @@
|
||||
@@ -0,0 +1,18 @@
|
||||
+#ifndef NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
+#define NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
+
|
||||
@@ -392,6 +596,8 @@ new file mode 100644
|
||||
+
|
||||
+int adblock_intercept(const GURL &url, const std::string &origin_host);
|
||||
+
|
||||
+extern bool adblock_enabled;
|
||||
+
|
||||
+} // namespace net
|
||||
+
|
||||
+#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
@@ -549,36 +755,52 @@ diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
|
||||
|
||||
#if BUILDFLAG(ENABLE_REPORTING)
|
||||
#include "net/network_error_logging/network_error_logging_service.h"
|
||||
@@ -559,7 +561,9 @@ URLRequest::URLRequest(const GURL& url,
|
||||
: context->network_delegate()),
|
||||
net_log_(NetLogWithSource::Make(context->net_log(),
|
||||
NetLogSourceType::URL_REQUEST)),
|
||||
+#if !defined(OS_ANDROID)
|
||||
url_chain_(1, url),
|
||||
+#endif
|
||||
attach_same_site_cookies_(false),
|
||||
method_("GET"),
|
||||
referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE),
|
||||
@@ -585,7 +589,18 @@ URLRequest::URLRequest(const GURL& url,
|
||||
@@ -585,8 +587,6 @@ URLRequest::URLRequest(const GURL& url,
|
||||
// Sanity check out environment.
|
||||
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
|
||||
|
||||
- if (nochromo_intercept(url)) url_chain_.push_back(nochromo_intercepted);
|
||||
+#if defined(OS_ANDROID)
|
||||
+ std::string initiatorHost;
|
||||
+ if (initiator_.has_value()) {
|
||||
+ initiatorHost = initiator_.value().host();
|
||||
+ }
|
||||
+
|
||||
+ if (adblock_intercept(url, initiatorHost)) {
|
||||
+ url_chain_ = { url, GURL("http://127.0.0.1") };
|
||||
+ } else {
|
||||
+ url_chain_ = { url };
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
-
|
||||
context->url_requests()->insert(this);
|
||||
net_log_.BeginEvent(
|
||||
NetLogEventType::REQUEST_ALIVE,
|
||||
@@ -665,6 +665,36 @@ void URLRequest::StartJob(URLRequestJob* job) {
|
||||
}
|
||||
}
|
||||
|
||||
+#if defined(OS_ANDROID)
|
||||
+ if (net::adblock_enabled) {
|
||||
+ std::string initiatorHost;
|
||||
+ if (initiator_.has_value()) {
|
||||
+ initiatorHost = initiator_.value().host();
|
||||
+ }
|
||||
+
|
||||
+ if (adblock_intercept(url(), initiatorHost)) {
|
||||
+ std::string source("delegate");
|
||||
+ net_log_.AddEvent(NetLogEventType::CANCELLED,
|
||||
+ NetLog::StringCallback("source", &source));
|
||||
+
|
||||
+ job_.reset(new URLRequestErrorJob(
|
||||
+ this, network_delegate_, ERR_BLOCKED_BY_CLIENT));
|
||||
+
|
||||
+ job_->SetExtraRequestHeaders(extra_request_headers_);
|
||||
+ job_->SetPriority(priority_);
|
||||
+ job_->SetRequestHeadersCallback(request_headers_callback_);
|
||||
+ job_->SetResponseHeadersCallback(response_headers_callback_);
|
||||
+
|
||||
+ if (upload_data_stream_.get())
|
||||
+ job_->SetUpload(upload_data_stream_.get());
|
||||
+
|
||||
+ // on fallthrough the initial status will be ERR_IO_PENDING,
|
||||
+ // but the URLRequestErrorJob will then call NotifyResponseStarted
|
||||
+ // with the correct ERR_BLOCKED_BYCLIENT status
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
// Start() always completes asynchronously.
|
||||
//
|
||||
// Status is generally set by URLRequestJob itself, but Start() calls
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 2 May 2018 01:04:07 +0200
|
||||
Subject: Disable custom tab activities permanently
|
||||
|
||||
---
|
||||
.../src/org/chromium/chrome/browser/LaunchIntentDispatcher.java | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
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
|
||||
@@ -149,9 +149,10 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
recordIntentMetrics();
|
||||
|
||||
mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
|
||||
- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|
||||
- || (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
|
||||
- mIsCustomTabIntent = isCustomTabIntent;
|
||||
+ //boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|
||||
+ // || (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
|
||||
+ //mIsCustomTabIntent = isCustomTabIntent;
|
||||
+ mIsCustomTabIntent = false;
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+10
-10
@@ -10,9 +10,9 @@ Remove device name and build id
|
||||
diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
|
||||
--- a/content/common/user_agent.cc
|
||||
+++ b/content/common/user_agent.cc
|
||||
@@ -79,26 +79,6 @@ std::string BuildOSCpuInfo() {
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
@@ -60,26 +60,6 @@ std::string BuildOSCpuInfo() {
|
||||
}
|
||||
#elif defined(OS_ANDROID)
|
||||
std::string android_version_str = base::SysInfo::OperatingSystemVersion();
|
||||
-
|
||||
- std::string android_info_str;
|
||||
@@ -34,10 +34,10 @@ diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
|
||||
- }
|
||||
- android_info_str += " Build/" + android_build_id;
|
||||
- }
|
||||
#endif
|
||||
|
||||
base::StringAppendF(
|
||||
@@ -121,9 +101,8 @@ std::string BuildOSCpuInfo() {
|
||||
#elif (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(OS_FUCHSIA)
|
||||
// Should work on any Posix system.
|
||||
struct utsname unixinfo;
|
||||
@@ -115,9 +95,8 @@ std::string BuildOSCpuInfo() {
|
||||
os_minor_version,
|
||||
os_bugfix_version
|
||||
#elif defined(OS_ANDROID)
|
||||
@@ -46,9 +46,9 @@ diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
|
||||
- android_info_str.c_str()
|
||||
+ "Android %s",
|
||||
+ android_version_str.c_str()
|
||||
#else
|
||||
"%s %s",
|
||||
unixinfo.sysname, // e.g. Linux
|
||||
#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
|
||||
"%s %s",
|
||||
unixinfo.sysname, // e.g. Linux
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/thir
|
||||
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
|
||||
@@ -261,7 +261,7 @@ void AudioContext::StopRendering() {
|
||||
@@ -271,7 +271,7 @@ void AudioContext::StopRendering() {
|
||||
}
|
||||
|
||||
double AudioContext::baseLatency() const {
|
||||
@@ -1,67 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 24 Mar 2018 05:18:03 +0100
|
||||
Subject: Canvas: fingerprinting mitigations via IDL
|
||||
|
||||
Disable toDataURL, toBlob, getImageData and webGL renderering info
|
||||
---
|
||||
third_party/blink/renderer/core/html/canvas/html_canvas_element.idl | 4 ++--
|
||||
.../renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl | 4 ++--
|
||||
third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc | 4 ++--
|
||||
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl b/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl
|
||||
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.idl
|
||||
@@ -37,9 +37,9 @@ interface HTMLCanvasElement : HTMLElement
|
||||
// Note: The arguments argument is variadic in the spec, but not here as
|
||||
// only one extra argument is actually used.
|
||||
// FIXME: type should not have a default value.
|
||||
- [MeasureAs=CanvasToDataURL, RaisesException] DOMString toDataURL(optional DOMString type = null, optional any arguments);
|
||||
+ //[MeasureAs=CanvasToDataURL, RaisesException] DOMString toDataURL(optional DOMString type = null, optional any arguments);
|
||||
|
||||
- [MeasureAs=CanvasToBlob, RaisesException] void toBlob(BlobCallback _callback, optional DOMString type = null, optional any arguments);
|
||||
+ //[MeasureAs=CanvasToBlob, RaisesException] void toBlob(BlobCallback _callback, optional DOMString type = null, optional any arguments);
|
||||
};
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/canvas.html#blobcallback
|
||||
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
|
||||
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
|
||||
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.idl
|
||||
@@ -110,7 +110,7 @@ interface CanvasRenderingContext2D {
|
||||
// text (see also the CanvasDrawingStyles interface)
|
||||
void fillText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
|
||||
void strokeText(DOMString text, unrestricted double x, unrestricted double y, optional unrestricted double maxWidth);
|
||||
- TextMetrics measureText(DOMString text);
|
||||
+ //TextMetrics measureText(DOMString text);
|
||||
|
||||
// drawing images
|
||||
[CallWith=ScriptState, RaisesException] void drawImage(CanvasImageSource image, unrestricted double x, unrestricted double y);
|
||||
@@ -125,7 +125,7 @@ interface CanvasRenderingContext2D {
|
||||
// pixel manipulation
|
||||
[RaisesException] ImageData createImageData(ImageData imagedata);
|
||||
[RaisesException] ImageData createImageData(long sw, long sh);
|
||||
- [RaisesException] ImageData getImageData(long sx, long sy, long sw, long sh);
|
||||
+ //[RaisesException] ImageData getImageData(long sx, long sy, long sw, long sh);
|
||||
[RaisesException] void putImageData(ImageData imagedata, long dx, long dy);
|
||||
[RaisesException] void putImageData(ImageData imagedata, long dx, long dy, long dirtyX, long dirtyY, long dirtyWidth, long dirtyHeight);
|
||||
|
||||
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 new WebGLDebugRendererInfo(context);
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
bool WebGLDebugRendererInfo::Supported(WebGLRenderingContextBase*) {
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
const char* WebGLDebugRendererInfo::ExtensionName() {
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
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 10) 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.
|
||||
---
|
||||
.../modules/webgl/webgl_debug_renderer_info.cc | 4 +-
|
||||
.../platform/graphics/image_data_buffer.cc | 5 +
|
||||
.../platform/graphics/static_bitmap_image.cc | 154 +++++++++++++++++++++
|
||||
.../platform/graphics/static_bitmap_image.h | 2 +
|
||||
4 files changed, 163 insertions(+), 2 deletions(-)
|
||||
|
||||
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 new WebGLDebugRendererInfo(context);
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
bool WebGLDebugRendererInfo::Supported(WebGLRenderingContextBase*) {
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
const char* WebGLDebugRendererInfo::ExtensionName() {
|
||||
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/network/mime/mime_type_registry.h"
|
||||
@@ -129,6 +131,9 @@ bool ImageDataBuffer::EncodeImageInternal(const String& 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 == "image/jpeg") {
|
||||
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 "gpu/command_buffer/client/gles2_interface.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/graphics_context.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/src/core/SkColorData.h"
|
||||
#include "third_party/skia/include/gpu/GrContext.h"
|
||||
|
||||
namespace blink {
|
||||
@@ -161,10 +164,161 @@ 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 > 10) {
|
||||
+ pixels = 10;
|
||||
+ } 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
|
||||
+ auto shuffleR = (uint8_t)base::RandInt(0, 4), shuffleG = (uint8_t)base::RandInt(0, 4), shuffleB = (uint8_t)base::RandInt(0, 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.7.4
|
||||
|
||||
@@ -1,273 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 30 Apr 2018 15:39:58 +0200
|
||||
Subject: Started work on canvas randomisation
|
||||
|
||||
Add shuffling for TextMetrics
|
||||
---
|
||||
.../renderer/core/html/canvas/canvas_async_blob_creator.cc | 14 +++++++-------
|
||||
.../renderer/core/html/canvas/canvas_async_blob_creator.h | 6 +++---
|
||||
.../blink/renderer/core/html/canvas/html_canvas_element.cc | 4 ++--
|
||||
.../blink/renderer/core/html/canvas/text_metrics.cc | 4 ++++
|
||||
third_party/blink/renderer/core/html/canvas/text_metrics.h | 2 ++
|
||||
.../blink/renderer/core/inspector/InspectorAuditsAgent.cpp | 2 +-
|
||||
.../renderer/core/offscreencanvas/offscreen_canvas.cc | 6 +++++-
|
||||
.../renderer/modules/accessibility/ax_layout_object.cc | 2 +-
|
||||
.../modules/canvas/canvas2d/base_rendering_context_2d.cc | 3 +++
|
||||
.../modules/canvas/canvas2d/canvas_rendering_context_2d.cc | 6 +++++-
|
||||
.../blink/renderer/platform/graphics/image_data_buffer.cc | 6 ++++--
|
||||
.../blink/renderer/platform/graphics/image_data_buffer.h | 3 ++-
|
||||
12 files changed, 39 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
|
||||
--- a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
|
||||
@@ -218,14 +218,14 @@ void CanvasAsyncBlobCreator::Dispose() {
|
||||
image_ = nullptr;
|
||||
}
|
||||
|
||||
-bool CanvasAsyncBlobCreator::EncodeImage(const double& quality) {
|
||||
+bool CanvasAsyncBlobCreator::EncodeImage(const double& quality, const double shuffleAmt) {
|
||||
std::unique_ptr<ImageDataBuffer> buffer = ImageDataBuffer::Create(src_data_);
|
||||
if (!buffer)
|
||||
return false;
|
||||
- return buffer->EncodeImage("image/webp", quality, &encoded_image_);
|
||||
+ return buffer->EncodeImage("image/webp", quality, shuffleAmt, &encoded_image_);
|
||||
}
|
||||
|
||||
-void CanvasAsyncBlobCreator::ScheduleAsyncBlobCreation(const double& quality) {
|
||||
+void CanvasAsyncBlobCreator::ScheduleAsyncBlobCreation(const double& quality, const double shuffleAmt) {
|
||||
if (!static_bitmap_image_loaded_) {
|
||||
context_->GetTaskRunner(TaskType::kCanvasBlobSerialization)
|
||||
->PostTask(FROM_HERE,
|
||||
@@ -239,7 +239,7 @@ void CanvasAsyncBlobCreator::ScheduleAsyncBlobCreation(const double& quality) {
|
||||
// When OffscreenCanvas.convertToBlob() occurs on worker thread,
|
||||
// we do not need to use background task runner to reduce load on main.
|
||||
// So we just directly encode images on the worker thread.
|
||||
- if (!EncodeImage(quality)) {
|
||||
+ if (!EncodeImage(quality, shuffleAmt)) {
|
||||
context_->GetTaskRunner(TaskType::kCanvasBlobSerialization)
|
||||
->PostTask(
|
||||
FROM_HERE,
|
||||
@@ -258,7 +258,7 @@ void CanvasAsyncBlobCreator::ScheduleAsyncBlobCreation(const double& quality) {
|
||||
BackgroundTaskRunner::PostOnBackgroundThread(
|
||||
FROM_HERE,
|
||||
CrossThreadBind(&CanvasAsyncBlobCreator::EncodeImageOnEncoderThread,
|
||||
- WrapCrossThreadPersistent(this), quality));
|
||||
+ WrapCrossThreadPersistent(this), quality, shuffleAmt));
|
||||
}
|
||||
} else {
|
||||
idle_task_status_ = kIdleTaskNotStarted;
|
||||
@@ -430,11 +430,11 @@ void CanvasAsyncBlobCreator::CreateNullAndReturnResult() {
|
||||
Dispose();
|
||||
}
|
||||
|
||||
-void CanvasAsyncBlobCreator::EncodeImageOnEncoderThread(double quality) {
|
||||
+void CanvasAsyncBlobCreator::EncodeImageOnEncoderThread(double quality, double shuffleAmt) {
|
||||
DCHECK(!IsMainThread());
|
||||
DCHECK(mime_type_ == kMimeTypeWebp);
|
||||
|
||||
- if (!EncodeImage(quality)) {
|
||||
+ if (!EncodeImage(quality, shuffleAmt)) {
|
||||
PostCrossThreadTask(
|
||||
*parent_frame_task_runner_, FROM_HERE,
|
||||
CrossThreadBind(&CanvasAsyncBlobCreator::CreateNullAndReturnResult,
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.h b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.h
|
||||
--- a/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.h
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.h
|
||||
@@ -38,7 +38,7 @@ class CORE_EXPORT CanvasAsyncBlobCreator
|
||||
ExecutionContext*,
|
||||
ScriptPromiseResolver*);
|
||||
|
||||
- void ScheduleAsyncBlobCreation(const double& quality);
|
||||
+ void ScheduleAsyncBlobCreation(const double& quality, const double shuffleAmt);
|
||||
virtual ~CanvasAsyncBlobCreator();
|
||||
enum MimeType {
|
||||
kMimeTypePng,
|
||||
@@ -130,7 +130,7 @@ class CORE_EXPORT CanvasAsyncBlobCreator
|
||||
Member<ScriptPromiseResolver> script_promise_resolver_;
|
||||
|
||||
void LoadStaticBitmapImage();
|
||||
- bool EncodeImage(const double&);
|
||||
+ bool EncodeImage(const double&, const double);
|
||||
|
||||
// PNG, JPEG
|
||||
bool InitializeEncoder(double quality);
|
||||
@@ -138,7 +138,7 @@ class CORE_EXPORT CanvasAsyncBlobCreator
|
||||
// without deadline
|
||||
|
||||
// WEBP
|
||||
- void EncodeImageOnEncoderThread(double quality);
|
||||
+ void EncodeImageOnEncoderThread(double quality, double shuffleAmt);
|
||||
|
||||
void IdleTaskStartTimeoutEvent(double quality);
|
||||
void IdleTaskCompleteTimeoutEvent();
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
|
||||
--- a/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/html_canvas_element.cc
|
||||
@@ -850,7 +850,7 @@ String HTMLCanvasElement::ToDataURLInternal(
|
||||
std::unique_ptr<ImageDataBuffer> data_buffer =
|
||||
ImageDataBuffer::Create(image_bitmap);
|
||||
if (data_buffer)
|
||||
- return data_buffer->ToDataURL(encoding_mime_type, quality);
|
||||
+ return data_buffer->ToDataURL(encoding_mime_type, quality, GetDocument().GetShuffleFactorX());
|
||||
}
|
||||
return String("data:,");
|
||||
}
|
||||
@@ -916,7 +916,7 @@ void HTMLCanvasElement::toBlob(V8BlobCallback* callback,
|
||||
}
|
||||
|
||||
if (async_creator) {
|
||||
- async_creator->ScheduleAsyncBlobCreation(quality);
|
||||
+ async_creator->ScheduleAsyncBlobCreation(quality, GetDocument().GetShuffleFactorX());
|
||||
} else {
|
||||
GetDocument()
|
||||
.GetTaskRunner(TaskType::kCanvasBlobSerialization)
|
||||
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
|
||||
@@ -47,6 +47,10 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+void TextMetrics::Shuffle(const double amt) {
|
||||
+ //TODO: shuffle here
|
||||
+}
|
||||
+
|
||||
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
|
||||
@@ -67,6 +67,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
|
||||
|
||||
static float GetFontBaseline(const TextBaseline&, const FontMetrics&);
|
||||
|
||||
+ void Shuffle(const double amt);
|
||||
+
|
||||
private:
|
||||
void Update(const Font&,
|
||||
const TextDirection&,
|
||||
diff --git a/third_party/blink/renderer/core/inspector/InspectorAuditsAgent.cpp b/third_party/blink/renderer/core/inspector/InspectorAuditsAgent.cpp
|
||||
--- a/third_party/blink/renderer/core/inspector/InspectorAuditsAgent.cpp
|
||||
+++ b/third_party/blink/renderer/core/inspector/InspectorAuditsAgent.cpp
|
||||
@@ -56,7 +56,7 @@ bool EncodeAsImage(char* body,
|
||||
|
||||
String mime_type = "image/";
|
||||
mime_type.append(encoding);
|
||||
- return image_to_encode->EncodeImage(mime_type, quality, output);
|
||||
+ return image_to_encode->EncodeImage(mime_type, quality, 0, output);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
|
||||
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
|
||||
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.cc
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h"
|
||||
|
||||
#include <memory>
|
||||
+#include "base/rand_util.h"
|
||||
#include <utility>
|
||||
|
||||
#include "gpu/config/gpu_feature_info.h"
|
||||
@@ -403,7 +404,10 @@ ScriptPromise OffscreenCanvas::convertToBlob(ScriptState* script_state,
|
||||
CanvasAsyncBlobCreator* async_creator = CanvasAsyncBlobCreator::Create(
|
||||
snapshot, encoding_mime_type, start_time,
|
||||
ExecutionContext::From(script_state), resolver);
|
||||
- async_creator->ScheduleAsyncBlobCreation(options.quality());
|
||||
+
|
||||
+ // add +/- 3% noise against fingerprinting
|
||||
+ double shuffleAmt = (base::RandDouble() - 0.5) * 0.03;
|
||||
+ async_creator->ScheduleAsyncBlobCreation(options.quality(), shuffleAmt);
|
||||
return resolver->Promise();
|
||||
} else {
|
||||
exception_state.ThrowDOMException(
|
||||
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
|
||||
--- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
|
||||
+++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
|
||||
@@ -1009,7 +1009,7 @@ String AXLayoutObject::ImageDataUrl(const IntSize& max_size) const {
|
||||
if (!buffer)
|
||||
return String();
|
||||
|
||||
- return buffer->ToDataURL("image/png", 1.0);
|
||||
+ return buffer->ToDataURL("image/png", 1.0, document->GetShuffleFactorX());
|
||||
}
|
||||
|
||||
String AXLayoutObject::GetText() const {
|
||||
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
|
||||
--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
|
||||
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
|
||||
@@ -1620,6 +1620,9 @@ ImageData* BaseRenderingContext2D::getImageData(
|
||||
const CanvasColorParams& color_params = ColorParams();
|
||||
scoped_refptr<StaticBitmapImage> snapshot = GetImage(kPreferNoAcceleration);
|
||||
|
||||
+ //TODO: calculate some random value and use it to shuffle pixel data in 'snapshot'
|
||||
+ // it should StaticBitmapImage somehow
|
||||
+
|
||||
if (!StaticBitmapImage::ConvertToArrayBufferContents(
|
||||
snapshot, contents, image_data_rect, color_params, IsAccelerated())) {
|
||||
exception_state.ThrowRangeError("Out of memory at ImageData creation");
|
||||
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
|
||||
@@ -773,8 +773,12 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
|
||||
else
|
||||
direction = ToTextDirection(GetState().GetDirection(), canvas());
|
||||
|
||||
- return TextMetrics::Create(font, direction, GetState().GetTextBaseline(),
|
||||
+ TextMetrics* textMetrics = TextMetrics::Create(font, direction, GetState().GetTextBaseline(),
|
||||
GetState().GetTextAlign(), text);
|
||||
+
|
||||
+ textMetrics->Shuffle(canvas()->GetDocument().GetShuffleFactorX());
|
||||
+
|
||||
+ return textMetrics;
|
||||
}
|
||||
|
||||
void CanvasRenderingContext2D::DrawTextInternal(
|
||||
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
|
||||
@@ -118,7 +118,9 @@ const unsigned char* ImageDataBuffer::Pixels() const {
|
||||
|
||||
bool ImageDataBuffer::EncodeImage(const String& mime_type,
|
||||
const double& quality,
|
||||
+ const double shuffleAmt,
|
||||
Vector<unsigned char>* encoded_image) const {
|
||||
+ //TODO: this is the only place where shuffleAmt should be used
|
||||
DCHECK(is_valid_);
|
||||
|
||||
if (mime_type == "image/jpeg") {
|
||||
@@ -154,12 +156,12 @@ bool ImageDataBuffer::EncodeImage(const String& mime_type,
|
||||
}
|
||||
|
||||
String ImageDataBuffer::ToDataURL(const String& mime_type,
|
||||
- const double& quality) const {
|
||||
+ const double& quality, const double shuffleAmt) const {
|
||||
DCHECK(is_valid_);
|
||||
DCHECK(MIMETypeRegistry::IsSupportedImageMIMETypeForEncoding(mime_type));
|
||||
|
||||
Vector<unsigned char> result;
|
||||
- if (!EncodeImage(mime_type, quality, &result))
|
||||
+ if (!EncodeImage(mime_type, quality, shuffleAmt, &result))
|
||||
return "data:,";
|
||||
|
||||
return "data:" + mime_type + ";base64," + Base64Encode(result);
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.h b/third_party/blink/renderer/platform/graphics/image_data_buffer.h
|
||||
--- a/third_party/blink/renderer/platform/graphics/image_data_buffer.h
|
||||
+++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.h
|
||||
@@ -47,9 +47,10 @@ class PLATFORM_EXPORT ImageDataBuffer {
|
||||
scoped_refptr<StaticBitmapImage>);
|
||||
static std::unique_ptr<ImageDataBuffer> Create(const SkPixmap&);
|
||||
|
||||
- String ToDataURL(const String& mime_type, const double& quality) const;
|
||||
+ String ToDataURL(const String& mime_type, const double& quality, const double shuffleAmt) const;
|
||||
bool EncodeImage(const String& mime_type,
|
||||
const double& quality,
|
||||
+ double shuffleAmt,
|
||||
Vector<unsigned char>* encoded_image) const;
|
||||
const unsigned char* Pixels() const;
|
||||
const IntSize& size() const { return size_; }
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,259 +0,0 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 26 Apr 2018 10:37:05 +0200
|
||||
Subject: Add menu option to toggle global Adblock preference
|
||||
|
||||
Allow toggling Chromium's "ads enabled" content settings option together with Bromite adblock engine.
|
||||
---
|
||||
chrome/android/java/res/menu/custom_tabs_menu.xml | 12 +++++++
|
||||
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 | 2 ++
|
||||
.../java/strings/android_chrome_strings.grd | 11 +++++++
|
||||
.../subresource_filter_content_settings_manager.cc | 3 ++
|
||||
net/url_request/adblock_intercept.cc | 2 ++
|
||||
net/url_request/adblock_intercept.h | 2 ++
|
||||
net/url_request/url_request.cc | 4 +++
|
||||
11 files changed, 103 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
|
||||
@@ -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
|
||||
@@ -82,6 +82,19 @@
|
||||
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>
|
||||
+
|
||||
<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
|
||||
@@ -2060,6 +2060,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
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().adsEnabled();
|
||||
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(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
|
||||
@@ -1724,6 +1724,14 @@ public class ChromeTabbedActivity
|
||||
RecordUserAction.record("MobileTabClosedUndoShortCut");
|
||||
} else if (id == R.id.enter_vr_id) {
|
||||
VrShellDelegate.enterVrIfNecessary();
|
||||
+ } 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().adsEnabled();
|
||||
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else {
|
||||
return super.onMenuOrKeyboardAction(id, fromMenu);
|
||||
}
|
||||
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
|
||||
@@ -212,6 +212,8 @@ public class AppMenuPropertiesDelegate {
|
||||
&& !TextUtils.isEmpty(url);
|
||||
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
@@ -445,6 +447,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().adsEnabled();
|
||||
+
|
||||
+ // 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));
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* @return Whether bookmarks, downloads, and history should be shown in the menu.
|
||||
*/
|
||||
public static boolean shouldShowNavMenuItems() {
|
||||
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
|
||||
@@ -170,6 +170,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
|
||||
@@ -2568,6 +2568,17 @@ Google may use your browsing activity, content on some sites you visit, and othe
|
||||
<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/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
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "components/keyed_service/core/service_access_type.h"
|
||||
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
|
||||
#include "url/gurl.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -160,9 +161,11 @@ void SubresourceFilterContentSettingsManager::OnContentSettingChanged(
|
||||
if (global_setting == CONTENT_SETTING_ALLOW) {
|
||||
ChromeSubresourceFilterClient::LogAction(
|
||||
kActionContentSettingsAllowedGlobal);
|
||||
+ net::adblock_enabled = false;
|
||||
} else if (global_setting == CONTENT_SETTING_BLOCK) {
|
||||
ChromeSubresourceFilterClient::LogAction(
|
||||
kActionContentSettingsBlockedGlobal);
|
||||
+ net::adblock_enabled = true;
|
||||
} else {
|
||||
NOTREACHED();
|
||||
}
|
||||
diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_intercept.cc
|
||||
--- a/net/url_request/adblock_intercept.cc
|
||||
+++ b/net/url_request/adblock_intercept.cc
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
namespace net {
|
||||
|
||||
+bool adblock_enabled = true;
|
||||
+
|
||||
const char *LOG_TAG = "Bromite";
|
||||
|
||||
#ifdef ADB_TESTER
|
||||
diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_intercept.h
|
||||
--- a/net/url_request/adblock_intercept.h
|
||||
+++ b/net/url_request/adblock_intercept.h
|
||||
@@ -11,6 +11,8 @@ int adblock_rules_count();
|
||||
|
||||
int adblock_intercept(const GURL &url, const std::string &origin_host);
|
||||
|
||||
+extern bool adblock_enabled;
|
||||
+
|
||||
} // namespace net
|
||||
|
||||
#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_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
|
||||
@@ -590,6 +590,7 @@ URLRequest::URLRequest(const GURL& url,
|
||||
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
+ if (net::adblock_enabled) {
|
||||
std::string initiatorHost;
|
||||
if (initiator_.has_value()) {
|
||||
initiatorHost = initiator_.value().host();
|
||||
@@ -600,6 +601,9 @@ URLRequest::URLRequest(const GURL& url,
|
||||
} else {
|
||||
url_chain_ = { url };
|
||||
}
|
||||
+ } else {
|
||||
+ url_chain_ = { url };
|
||||
+ }
|
||||
#endif
|
||||
|
||||
context->url_requests()->insert(this);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 30 Mar 2018 10:09:03 +0200
|
||||
Subject: getClientRects, getBoundingClientRect, measureText: add
|
||||
fingerprinting mitigation
|
||||
|
||||
Scale the result of Range::getClientRects, Element::getBoundingClientRect and
|
||||
Canvas::measureText by a random +/-3/10000th of the original value for each
|
||||
float in the returned Rect/Quad.
|
||||
|
||||
Rationale is that the returned values are within the same order of magnitude
|
||||
of the floating point precision being used for fingerprinting and sufficient
|
||||
to poison the well.
|
||||
|
||||
See also: http://www.gsd.inesc-id.pt/~mpc/pubs/fingerprinting-trustcom2016.pdf
|
||||
---
|
||||
third_party/blink/renderer/core/dom/element.cc | 17 +++++++++++++++++
|
||||
third_party/blink/renderer/core/dom/range.cc | 20 +++++++++++++++++++-
|
||||
.../blink/renderer/core/html/canvas/text_metrics.cc | 18 ++++++++++++++++++
|
||||
.../blink/renderer/core/html/canvas/text_metrics.h | 2 ++
|
||||
.../canvas/canvas2d/canvas_rendering_context_2d.cc | 10 +++++++++-
|
||||
5 files changed, 65 insertions(+), 2 deletions(-)
|
||||
|
||||
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
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "third_party/blink/renderer/core/dom/element.h"
|
||||
|
||||
#include <memory>
|
||||
+#include "base/rand_util.h"
|
||||
|
||||
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
|
||||
#include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
|
||||
@@ -1356,6 +1357,15 @@ DOMRectList* Element::getClientRects() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
|
||||
quads, *element_layout_object);
|
||||
+
|
||||
+ // scale all quads by 3/10000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(shuffleX, shuffleY);
|
||||
+ }
|
||||
+
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
@@ -1373,6 +1383,13 @@ DOMRect* Element::getBoundingClientRect() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
|
||||
*element_layout_object);
|
||||
+
|
||||
+ // scale rect by 3/10000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+
|
||||
+ result.Scale(shuffleX, shuffleY);
|
||||
+
|
||||
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
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
#include "third_party/blink/renderer/core/dom/range.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+
|
||||
#include "third_party/blink/renderer/bindings/core/v8/exception_state.h"
|
||||
#include "third_party/blink/renderer/core/dom/character_data.h"
|
||||
#include "third_party/blink/renderer/core/dom/container_node.h"
|
||||
@@ -1575,11 +1577,27 @@ DOMRectList* Range::getClientRects() const {
|
||||
Vector<FloatQuad> quads;
|
||||
GetBorderAndTextQuads(quads);
|
||||
|
||||
+ // scale all quads by 3/10000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(shuffleX, shuffleY);
|
||||
+ }
|
||||
+
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
DOMRect* Range::getBoundingClientRect() const {
|
||||
- return DOMRect::FromFloatRect(BoundingRect());
|
||||
+ auto rect = BoundingRect();
|
||||
+
|
||||
+ // scale rect by 3/10000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+
|
||||
+ rect.Scale(shuffleX, shuffleY);
|
||||
+
|
||||
+ 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
|
||||
@@ -47,6 +47,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+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;
|
||||
+ hanging_baseline_ *= factor;
|
||||
+ alphabetic_baseline_ *= factor;
|
||||
+ ideographic_baseline_ *= 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
|
||||
@@ -67,6 +67,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
|
||||
|
||||
static float GetFontBaseline(const TextBaseline&, const FontMetrics&);
|
||||
|
||||
+ 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
|
||||
@@ -33,6 +33,8 @@
|
||||
|
||||
#include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+
|
||||
#include "third_party/blink/public/platform/platform.h"
|
||||
#include "third_party/blink/public/platform/task_type.h"
|
||||
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
|
||||
@@ -776,8 +778,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
|
||||
else
|
||||
direction = ToTextDirection(GetState().GetDirection(), canvas());
|
||||
|
||||
- return TextMetrics::Create(font, direction, GetState().GetTextBaseline(),
|
||||
+ TextMetrics* textMetrics = TextMetrics::Create(font, direction, GetState().GetTextBaseline(),
|
||||
GetState().GetTextAlign(), text);
|
||||
+
|
||||
+ // scale text metrics by 3/10000th
|
||||
+ auto shuffleFactor = 1 + (base::RandDouble() - 0.5) * 0.0003;
|
||||
+ textMetrics->Shuffle(shuffleFactor);
|
||||
+
|
||||
+ return textMetrics;
|
||||
}
|
||||
|
||||
void CanvasRenderingContext2D::DrawTextInternal(
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+3
-3
@@ -10,10 +10,10 @@ Originally from http://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromi
|
||||
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
|
||||
@@ -526,7 +526,7 @@ void ChromeContentClient::AddContentDecryptionModules(
|
||||
bool supports_persistent_license = false;
|
||||
@@ -536,7 +536,7 @@ void ChromeContentClient::AddContentDecryptionModules(
|
||||
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
|
||||
&supports_persistent_license)) {
|
||||
&supports_persistent_license,
|
||||
&encryption_modes_supported)) {
|
||||
- const base::Version version(WIDEVINE_CDM_VERSION_STRING);
|
||||
+ const base::Version version("1.0.123.456");
|
||||
DCHECK(version.IsValid());
|
||||
+1
-1
@@ -9,7 +9,7 @@ Subject: Disable metrics on all I/O threads
|
||||
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
|
||||
@@ -964,7 +964,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
|
||||
@@ -949,7 +949,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
|
||||
|
||||
bool ProfileIOData::GetMetricsEnabledStateOnIOThread() const {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
||||
@@ -0,0 +1,282 @@
|
||||
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.
|
||||
|
||||
See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-02.txt
|
||||
---
|
||||
chrome/browser/about_flags.cc | 12 +++++++++
|
||||
chrome/browser/flag_descriptions.cc | 3 +++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
chrome/browser/io_thread.cc | 14 +++++++----
|
||||
.../common/network_features.cc | 5 ++--
|
||||
.../common/network_features.h | 5 ++--
|
||||
.../common/network_switch_list.h | 4 +++
|
||||
net/base/load_flags_list.h | 6 +++++
|
||||
net/dns/dns_transaction.cc | 29 +++-------------------
|
||||
net/url_request/url_request_http_job.cc | 28 +++++++++++++--------
|
||||
10 files changed, 64 insertions(+), 45 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
|
||||
@@ -400,6 +400,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
|
||||
switches::kChromeHomeSwipeLogicType, "velocity"},
|
||||
};
|
||||
|
||||
+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"},
|
||||
+};
|
||||
+
|
||||
#endif // OS_ANDROID
|
||||
|
||||
const FeatureEntry::Choice kNumRasterThreadsChoices[] = {
|
||||
@@ -3489,6 +3495,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(features::kAsyncDns)},
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
+#if defined(OS_ANDROID)
|
||||
+ {"enable-dns-over-https", flag_descriptions::kDnsOverHttpsName,
|
||||
+ flag_descriptions::kDnsOverHttpsDescription, kOsAndroid,
|
||||
+ MULTI_VALUE_TYPE(kDnsOverHttpsChoices)},
|
||||
+#endif // defined(OS_ANDROID)
|
||||
+
|
||||
{"enable-overflow-icons-for-media-controls",
|
||||
flag_descriptions::kOverflowIconsForMediaControlsName,
|
||||
flag_descriptions::kOverflowIconsForMediaControlsDescription, 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
|
||||
@@ -1952,6 +1952,9 @@ const char kAndroidPaymentAppsDescription[] =
|
||||
const char kAsyncDnsName[] = "Async DNS resolver";
|
||||
const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver.";
|
||||
|
||||
+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
|
||||
@@ -1188,6 +1188,9 @@ extern const char kAndroidPaymentAppsDescription[];
|
||||
extern const char kAsyncDnsName[];
|
||||
extern const char kAsyncDnsDescription[];
|
||||
|
||||
+extern const char kDnsOverHttpsName[];
|
||||
+extern const char kDnsOverHttpsDescription[];
|
||||
+
|
||||
extern const char kAutofillAccessoryViewName[];
|
||||
extern const char kAutofillAccessoryViewDescription[];
|
||||
|
||||
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
|
||||
--- a/chrome/browser/io_thread.cc
|
||||
+++ b/chrome/browser/io_thread.cc
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "components/metrics/metrics_service.h"
|
||||
#include "components/net_log/chrome_net_log.h"
|
||||
#include "components/network_session_configurator/common/network_features.h"
|
||||
+#include "components/network_session_configurator/common/network_switches.h"
|
||||
#include "components/policy/core/common/policy_service.h"
|
||||
#include "components/policy/policy_constants.h"
|
||||
#include "components/prefs/pref_registry_simple.h"
|
||||
@@ -373,13 +374,16 @@ IOThread::IOThread(
|
||||
base::Unretained(this)));
|
||||
dns_client_enabled_.MoveToThread(io_thread_proxy);
|
||||
|
||||
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
|
||||
+ std::string dnsOverHttpsServer =
|
||||
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
||||
+ switches::kDnsOverHttpsServer);
|
||||
+ if (!dnsOverHttpsServer.empty()) {
|
||||
base::Value specs(base::Value::Type::LIST);
|
||||
base::Value methods(base::Value::Type::LIST);
|
||||
- base::Value spec(variations::GetVariationParamValueByFeature(
|
||||
- features::kDnsOverHttps, "server"));
|
||||
- base::Value method(variations::GetVariationParamValueByFeature(
|
||||
- features::kDnsOverHttps, "method"));
|
||||
+
|
||||
+ base::Value spec(dnsOverHttpsServer);
|
||||
+ base::Value method("POST");
|
||||
+
|
||||
if (spec.GetString().size() > 0) {
|
||||
specs.GetList().push_back(std::move(spec));
|
||||
methods.GetList().push_back(std::move(method));
|
||||
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
|
||||
@@ -14,7 +14,8 @@ const base::Feature kTokenBinding{"token-binding",
|
||||
// TODO(nharper): Disable kChannelID on all platforms in M69.
|
||||
const base::Feature kChannelID{"channel-id", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
-const base::Feature kDnsOverHttps{"dns-over-https",
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+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
|
||||
@@ -17,9 +17,10 @@ NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kTokenBinding;
|
||||
// Enables Channel ID.
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kChannelID;
|
||||
|
||||
-// Enabled DNS over HTTPS
|
||||
+// DNS over HTTPS server endpoint choices
|
||||
// (https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-02.txt).
|
||||
-NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kDnsOverHttps;
|
||||
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kDnsOverHttpsChoiceDefault[],
|
||||
+ kDnsOverHttpsChoiceGoogle[], kDnsOverHttpsChoiceCloudflare[];
|
||||
|
||||
} // 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
|
||||
@@ -35,6 +35,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
|
||||
@@ -92,3 +92,9 @@ LOAD_FLAG(DISABLE_CONNECTION_MIGRATION, 1 << 16)
|
||||
// Indicates that the cache should not check that the request matches the
|
||||
// response's vary header.
|
||||
LOAD_FLAG(SKIP_VARY_CHECK, 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
|
||||
@@ -390,30 +390,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
|
||||
|
||||
HttpRequestHeaders extra_request_headers;
|
||||
extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
|
||||
-
|
||||
- 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"
|
||||
- }
|
||||
- )"));
|
||||
+ //extra_request_headers.SetHeader(HttpRequestHeaders::kUserAgent, "DoH client");
|
||||
+ request_ = url_request_context->CreateRequest(url, request_priority_, this);
|
||||
net_log_ = request_->net_log();
|
||||
|
||||
if (use_post) {
|
||||
@@ -431,6 +409,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
|
||||
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
|
||||
LOAD_BYPASS_PROXY | LOAD_DO_NOT_SEND_COOKIES |
|
||||
LOAD_DO_NOT_SAVE_COOKIES |
|
||||
+ LOAD_IGNORE_LIMITS | LOAD_MINIMAL_HEADERS |
|
||||
LOAD_DO_NOT_SEND_AUTH_DATA);
|
||||
}
|
||||
|
||||
@@ -850,7 +829,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
|
||||
@@ -434,19 +434,23 @@ 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_.token_binding_referrer = request_->token_binding_referrer();
|
||||
|
||||
- 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();
|
||||
@@ -663,10 +667,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
|
||||
HttpRequestHeaders::kAcceptEncoding)) {
|
||||
// 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;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -683,7 +689,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
|
||||
advertised_encodings);
|
||||
}
|
||||
|
||||
- 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.7.4
|
||||
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 5 Jun 2018 13:46:40 +0200
|
||||
Subject: Always respect async dns flag (regardless of SDK version), do not
|
||||
read experiment value for cronet async DNS configuration
|
||||
Subject: Always respect async dns flag (regardless of SDK version)
|
||||
|
||||
Do not read experiment value for cronet async DNS configuration
|
||||
---
|
||||
chrome/browser/io_thread.cc | 10 +---------
|
||||
components/cronet/url_request_context_config.cc | 3 ++-
|
||||
@@ -11,7 +11,7 @@ Subject: Always respect async dns flag (regardless of SDK version), do not
|
||||
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
|
||||
--- a/chrome/browser/io_thread.cc
|
||||
+++ b/chrome/browser/io_thread.cc
|
||||
@@ -257,15 +257,7 @@ void UpdateMetricsUsagePrefsOnUIThread(const std::string& service_name,
|
||||
@@ -252,15 +252,7 @@ void UpdateMetricsUsagePrefsOnUIThread(const std::string& service_name,
|
||||
// Check the AsyncDns field trial and return true if it should be enabled. On
|
||||
// Android this includes checking the Android version in the field trial.
|
||||
bool ShouldEnableAsyncDns() {
|
||||
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
|
||||
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
|
||||
@@ -398,7 +398,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
|
||||
@@ -366,7 +366,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
|
||||
effective_experimental_options->Remove(it.key(), nullptr);
|
||||
continue;
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 8 Jul 2018 22:42:04 +0200
|
||||
Subject: Add flag to configure maximum connections per host
|
||||
|
||||
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 | 9 +++++++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../common/network_features.cc | 4 ++++
|
||||
.../common/network_features.h | 4 ++++
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
|
||||
7 files changed, 45 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
|
||||
@@ -798,6 +798,12 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
|
||||
net::kEffectiveConnectionType4G},
|
||||
};
|
||||
|
||||
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
|
||||
+ {features::kMaxConnectionsPerHostChoiceDefault, "", "0"},
|
||||
+ {features::kMaxConnectionsPerHostChoice6, switches::kMaxConnectionsPerHost, "6"},
|
||||
+ {features::kMaxConnectionsPerHostChoice15, switches::kMaxConnectionsPerHost, "15"},
|
||||
+};
|
||||
+
|
||||
// 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 ==
|
||||
@@ -2398,6 +2404,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kMaterialDesignIncognitoNTPName,
|
||||
flag_descriptions::kMaterialDesignIncognitoNTPDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(features::kMaterialDesignIncognitoNTP)},
|
||||
+ {"max-connections-per-host", flag_descriptions::kMaxConnectionsPerHostName,
|
||||
+ flag_descriptions::kMaxConnectionsPerHostDescription, kOsAll,
|
||||
+ MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
|
||||
{"safe-search-url-reporting",
|
||||
flag_descriptions::kSafeSearchUrlReportingName,
|
||||
flag_descriptions::kSafeSearchUrlReportingDescription, 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
|
||||
@@ -975,6 +975,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
|
||||
"If enabled, the Incognito New Tab page uses the new material design with "
|
||||
"a better readable text.";
|
||||
|
||||
+const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
|
||||
+const char kMaxConnectionsPerHostDescription[] =
|
||||
+ "Customize maximum allowed connections per host (experimental).";
|
||||
+
|
||||
const char kMediaRouterCastAllowAllIPsName[] =
|
||||
"Connect to Cast devices on all IP addresses";
|
||||
const char kMediaRouterCastAllowAllIPsDescription[] =
|
||||
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
|
||||
@@ -613,6 +613,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
|
||||
extern const char kMaterialDesignIncognitoNTPName[];
|
||||
extern const char kMaterialDesignIncognitoNTPDescription[];
|
||||
|
||||
+extern const char kMaxConnectionsPerHostName[];
|
||||
+extern const char kMaxConnectionsPerHostDescription[];
|
||||
+
|
||||
extern const char kMediaRouterCastAllowAllIPsName[];
|
||||
extern const char kMediaRouterCastAllowAllIPsDescription[];
|
||||
|
||||
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,10 @@
|
||||
|
||||
namespace features {
|
||||
|
||||
+const char kMaxConnectionsPerHostChoiceDefault[] = "Default",
|
||||
+ kMaxConnectionsPerHostChoice6[] = "6",
|
||||
+ kMaxConnectionsPerHostChoice15[] = "15";
|
||||
+
|
||||
const base::Feature kTokenBinding{"token-binding",
|
||||
base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
|
||||
diff --git a/components/network_session_configurator/common/network_features.h b/components/network_session_configurator/common/network_features.h
|
||||
--- a/components/network_session_configurator/common/network_features.h
|
||||
+++ b/components/network_session_configurator/common/network_features.h
|
||||
@@ -10,6 +10,10 @@
|
||||
|
||||
namespace features {
|
||||
|
||||
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kMaxConnectionsPerHostChoiceDefault[],
|
||||
+ kMaxConnectionsPerHostChoice6[],
|
||||
+ kMaxConnectionsPerHostChoice15[];
|
||||
+
|
||||
// Enables token binding
|
||||
// (https://www.ietf.org/id/draft-ietf-tokbind-protocol-04.txt).
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kTokenBinding;
|
||||
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,
|
||||
// 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")
|
||||
+
|
||||
// Enable use of experimental TCP sockets API for sending data in the
|
||||
// SYN packet.
|
||||
NETWORK_SWITCH(kEnableTcpFastOpen, "enable-tcp-fastopen")
|
||||
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
|
||||
@@ -6,8 +6,10 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
+#include "base/command_line.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/strings/stringprintf.h"
|
||||
+#include "base/strings/string_number_conversions.h"
|
||||
#include "net/base/load_flags.h"
|
||||
#include "net/http/http_proxy_client_socket_pool.h"
|
||||
#include "net/http/http_request_info.h"
|
||||
@@ -19,6 +21,7 @@
|
||||
#include "net/socket/ssl_client_socket_pool.h"
|
||||
#include "net/socket/transport_client_socket_pool.h"
|
||||
#include "net/ssl/ssl_config.h"
|
||||
+#include "components/network_session_configurator/common/network_switches.h"
|
||||
|
||||
namespace net {
|
||||
|
||||
@@ -316,6 +319,20 @@ 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);
|
||||
+
|
||||
+ if (pool_type == HttpNetworkSession::NORMAL_SOCKET_POOL) {
|
||||
+ int maxConnectionsPerHost;
|
||||
+ if (!base::StringToInt(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost),
|
||||
+ &maxConnectionsPerHost)) {
|
||||
+ LOG(DFATAL) << "--" << switches::kMaxConnectionsPerHost << " only accepts integers as arguments";
|
||||
+ maxConnectionsPerHost = 0;
|
||||
+ }
|
||||
+ if (maxConnectionsPerHost != 0) {
|
||||
+ return maxConnectionsPerHost;
|
||||
+ }
|
||||
+ // fallthrough for default value
|
||||
+ }
|
||||
+
|
||||
return g_max_sockets_per_group[pool_type];
|
||||
}
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 9 Jul 2018 20:12:19 +0200
|
||||
Subject: Add flag to show/hide NTP tiles
|
||||
|
||||
---
|
||||
chrome/browser/about_flags.cc | 4 ++++
|
||||
chrome/browser/android/ntp/most_visited_sites_bridge.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
chrome/common/chrome_switches.cc | 3 +++
|
||||
chrome/common/chrome_switches.h | 1 +
|
||||
6 files changed, 23 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
|
||||
@@ -1916,6 +1916,10 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kChromeModernAlternateCardLayoutName,
|
||||
flag_descriptions::kChromeModernAlternateCardLayoutDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(chrome::android::kChromeModernAlternateCardLayout)},
|
||||
+ {"hide-ntp-tiles",
|
||||
+ flag_descriptions::kHideNTPTilesName,
|
||||
+ flag_descriptions::kHideNTPTilesDescription, kOsAndroid,
|
||||
+ SINGLE_VALUE_TYPE(switches::kHideNTPTiles)},
|
||||
{"force-enable-home-page-button", flag_descriptions::kHomePageButtonName,
|
||||
flag_descriptions::kHomePageButtonDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(chrome::android::kHomePageButtonForceEnabled)},
|
||||
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
|
||||
@@ -13,9 +13,11 @@
|
||||
#include "base/android/jni_array.h"
|
||||
#include "base/android/jni_string.h"
|
||||
#include "base/android/scoped_java_ref.h"
|
||||
+#include "base/command_line.h"
|
||||
#include "base/strings/string16.h"
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
+#include "chrome/common/chrome_switches.h"
|
||||
#include "chrome/browser/history/history_service_factory.h"
|
||||
#include "chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
@@ -167,6 +169,10 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
|
||||
std::vector<int> sources;
|
||||
std::vector<int> section_types;
|
||||
std::vector<int64_t> data_generation_times;
|
||||
+
|
||||
+ // do not source any tile if NTP is disabled
|
||||
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
+ switches::kHideNTPTiles)) {
|
||||
for (const auto& section : sections) {
|
||||
const NTPTilesVector& tiles = section.second;
|
||||
section_types.resize(section_types.size() + tiles.size(),
|
||||
@@ -181,6 +187,8 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
|
||||
tile.data_generation_time.ToJavaTime());
|
||||
}
|
||||
}
|
||||
+ }
|
||||
+
|
||||
Java_MostVisitedSitesBridge_onURLsAvailable(
|
||||
env, observer_, ToJavaArrayOfStrings(env, titles),
|
||||
ToJavaArrayOfStrings(env, urls), ToJavaIntArray(env, section_types),
|
||||
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
|
||||
@@ -106,6 +106,10 @@ const char kBackgroundVideoTrackOptimizationDescription[] =
|
||||
"Disable video tracks when the video is played in the background to "
|
||||
"optimize performance.";
|
||||
|
||||
+const char kHideNTPTilesName[] = "Hide NTP tiles";
|
||||
+const char kHideNTPTilesDescription[] =
|
||||
+ "Hide all tiles on the New Tab Page, making it effectively empty all the time.";
|
||||
+
|
||||
const char kBleAdvertisingInExtensionsName[] = "BLE Advertising in Chrome Apps";
|
||||
const char kBleAdvertisingInExtensionsDescription[] =
|
||||
"Enables BLE Advertising in Chrome Apps. BLE Advertising might interfere "
|
||||
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
|
||||
@@ -92,6 +92,9 @@ extern const char kAv1DecoderDescription[];
|
||||
extern const char kBackgroundVideoTrackOptimizationName[];
|
||||
extern const char kBackgroundVideoTrackOptimizationDescription[];
|
||||
|
||||
+extern const char kHideNTPTilesName[];
|
||||
+extern const char kHideNTPTilesDescription[];
|
||||
+
|
||||
extern const char kBleAdvertisingInExtensionsName[];
|
||||
extern const char kBleAdvertisingInExtensionsDescription[];
|
||||
|
||||
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
|
||||
--- a/chrome/common/chrome_switches.cc
|
||||
+++ b/chrome/common/chrome_switches.cc
|
||||
@@ -88,6 +88,9 @@ const char kAutoSelectDesktopCaptureSource[] =
|
||||
const char kBypassAppBannerEngagementChecks[] =
|
||||
"bypass-app-banner-engagement-checks";
|
||||
|
||||
+// Hide all New Tab Page tiles, making it effectively empty all the time.
|
||||
+const char kHideNTPTiles[] = "hide-ntp-tiles";
|
||||
+
|
||||
// How often (in seconds) to check for updates. Should only be used for testing
|
||||
// purposes.
|
||||
const char kCheckForUpdateIntervalSec[] = "check-for-update-interval";
|
||||
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
|
||||
--- a/chrome/common/chrome_switches.h
|
||||
+++ b/chrome/common/chrome_switches.h
|
||||
@@ -46,6 +46,7 @@ extern const char kAuthServerWhitelist[];
|
||||
extern const char kAutoOpenDevToolsForTabs[];
|
||||
extern const char kAutoSelectDesktopCaptureSource[];
|
||||
extern const char kBypassAppBannerEngagementChecks[];
|
||||
+extern const char kHideNTPTiles[];
|
||||
extern const char kCheckForUpdateIntervalSec[];
|
||||
extern const char kCipherSuiteBlacklist[];
|
||||
extern const char kCloudPrintFile[];
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 8 Jul 2018 23:06:52 +0200
|
||||
Subject: Add flag to disable custom tab intents
|
||||
|
||||
Custom tab intents allow apps to open URLs with a minimal browser UI;
|
||||
this flag allows disabling this functionality altogether and all custom tab
|
||||
intents will instead open as regular URLs.
|
||||
---
|
||||
.../java/src/org/chromium/chrome/browser/ChromeSwitches.java | 3 +++
|
||||
.../src/org/chromium/chrome/browser/LaunchIntentDispatcher.java | 8 ++++++--
|
||||
chrome/browser/about_flags.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
chrome/common/chrome_switches.cc | 3 +++
|
||||
chrome/common/chrome_switches.h | 1 +
|
||||
7 files changed, 24 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
|
||||
@@ -177,6 +177,9 @@ public abstract class ChromeSwitches {
|
||||
/** Open all custom tabs in a new task. Used only for experimental purposes. */
|
||||
public static final String OPEN_CUSTOM_TABS_IN_NEW_TASK = "open-custom-tabs-in-new-task";
|
||||
|
||||
+ /** Disallow custom tab intents. */
|
||||
+ public static final String DISALLOW_CUSTOM_TAB_INTENT = "disallow-custom-tab-intent";
|
||||
+
|
||||
/**
|
||||
* Don't crash on undispatched VIEW intents sent to .Main.
|
||||
* See ChromeTabbedActivity.maybeDispatchExplicitMainViewIntent() for more info.
|
||||
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
|
||||
@@ -149,9 +149,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
recordIntentMetrics();
|
||||
|
||||
mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
|
||||
- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|
||||
+
|
||||
+ if (!CommandLine.getInstance().hasSwitch(ChromeSwitches.DISALLOW_CUSTOM_TAB_INTENT)) {
|
||||
+ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|
||||
|| (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
|
||||
- mIsCustomTabIntent = isCustomTabIntent;
|
||||
+ } else {
|
||||
+ mIsCustomTabIntent = false;
|
||||
+ }
|
||||
}
|
||||
|
||||
/**
|
||||
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
|
||||
@@ -1298,6 +1298,10 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kMediaScreenCaptureName,
|
||||
flag_descriptions::kMediaScreenCaptureDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(chrome::android::kUserMediaScreenCapturing)},
|
||||
+ {"disallow-custom-tab-intent",
|
||||
+ flag_descriptions::kDisallowCustomTabIntentName,
|
||||
+ flag_descriptions::kDisallowCustomTabIntentDescription, kOsAndroid,
|
||||
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisallowCustomTabIntent)},
|
||||
#endif // OS_ANDROID
|
||||
// Native client is compiled out if ENABLE_NACL is not set.
|
||||
#if BUILDFLAG(ENABLE_NACL)
|
||||
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
|
||||
@@ -2043,6 +2043,10 @@ const char kContextualSearchSecondTapDescription[] =
|
||||
"Enables triggering on a second tap gesture even when Ranker would "
|
||||
"normally suppress that tap.";
|
||||
|
||||
+const char kDisallowCustomTabIntentName[] = "Disallow custom tab intent";
|
||||
+const char kDisallowCustomTabIntentDescription[] =
|
||||
+ "Do not allow apps to open custom tab intents and use a regular browsing interaction instead.";
|
||||
+
|
||||
const char kDontPrefetchLibrariesName[] = "Don't Prefetch Libraries";
|
||||
const char kDontPrefetchLibrariesDescription[] =
|
||||
"Don't prefetch libraries after loading.";
|
||||
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
|
||||
@@ -1244,6 +1244,9 @@ extern const char kContextualSearchRankerQueryDescription[];
|
||||
extern const char kContextualSearchSecondTapName[];
|
||||
extern const char kContextualSearchSecondTapDescription[];
|
||||
|
||||
+extern const char kDisallowCustomTabIntentName[];
|
||||
+extern const char kDisallowCustomTabIntentDescription[];
|
||||
+
|
||||
extern const char kDontPrefetchLibrariesName[];
|
||||
extern const char kDontPrefetchLibrariesDescription[];
|
||||
|
||||
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
|
||||
--- a/chrome/common/chrome_switches.cc
|
||||
+++ b/chrome/common/chrome_switches.cc
|
||||
@@ -218,6 +218,9 @@ const char kDisableExtensions[] = "disable-extensions";
|
||||
// Disable extensions except those specified in a comma-separated list.
|
||||
const char kDisableExtensionsExcept[] = "disable-extensions-except";
|
||||
|
||||
+// Disallow apps to use custom tab intents and use a regular URL open intent instead.
|
||||
+const char kDisallowCustomTabIntent[] = "disallow-custom-tab-intent";
|
||||
+
|
||||
// Disable checking for user opt-in for extensions that want to inject script
|
||||
// into file URLs (ie, always allow it). This is used during automated testing.
|
||||
const char kDisableExtensionsFileAccessCheck[] =
|
||||
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
|
||||
--- a/chrome/common/chrome_switches.h
|
||||
+++ b/chrome/common/chrome_switches.h
|
||||
@@ -72,6 +72,7 @@ extern const char kDisableCastStreamingHWEncoding[];
|
||||
extern const char kDisableClientSidePhishingDetection[];
|
||||
extern const char kDisableComponentExtensionsWithBackgroundPages[];
|
||||
extern const char kDisableComponentUpdate[];
|
||||
+extern const char kDisallowCustomTabIntent[];
|
||||
extern const char kDisableDefaultApps[];
|
||||
extern const char kDisableDeviceDiscoveryNotifications[];
|
||||
extern const char kDisableDomainReliability[];
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From: samartnik <artem@brave.com>
|
||||
Date: Thu, 14 Dec 2017 16:19:50 +0200
|
||||
Subject: Always allow partner customisation
|
||||
|
||||
---
|
||||
.../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
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||
@@ -243,14 +243,14 @@ public class PartnerBrowserCustomizations {
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
try {
|
||||
- boolean systemOrPreStable =
|
||||
- (context.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) == 1
|
||||
- || !ChromeVersionInfo.isStableBuild();
|
||||
- if (!systemOrPreStable) {
|
||||
- // Only allow partner customization if this browser is a system package, or
|
||||
- // is in pre-stable channels.
|
||||
- return null;
|
||||
- }
|
||||
+ //boolean systemOrPreStable =
|
||||
+ // (context.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM) == 1
|
||||
+ // || !ChromeVersionInfo.isStableBuild();
|
||||
+ //if (!systemOrPreStable) {
|
||||
+ // // Only allow partner customization if this browser is a system package, or
|
||||
+ // // is in pre-stable channels.
|
||||
+ // return null;
|
||||
+ //}
|
||||
|
||||
if (isCancelled()) return null;
|
||||
refreshIncognitoModeDisabled();
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 27 Jun 2018 11:02:38 +0200
|
||||
Subject: Change default homepage to new tab page
|
||||
|
||||
Disable any partner-provided home page.
|
||||
---
|
||||
.../chrome/browser/partnercustomizations/HomepageManager.java | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 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
|
||||
@@ -102,8 +102,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 +123,7 @@ public class HomepageManager {
|
||||
* if the homepage button is force enabled via flag.
|
||||
*/
|
||||
public static String getDefaultHomepageUri() {
|
||||
- return PartnerBrowserCustomizations.isHomepageProviderAvailableAndEnabled()
|
||||
- ? PartnerBrowserCustomizations.getHomePageUrl()
|
||||
- : UrlConstants.NTP_NON_NATIVE_URL;
|
||||
+ return UrlConstants.NTP_NON_NATIVE_URL;
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 1 Aug 2018 09:19:40 +0200
|
||||
Subject: Add export button to Bookmarks activity page
|
||||
|
||||
---
|
||||
chrome/android/java/res/menu/bookmark_action_bar_menu.xml | 7 +++++++
|
||||
.../chrome/browser/bookmarks/BookmarkActionBar.java | 6 ++++++
|
||||
.../chromium/chrome/browser/bookmarks/BookmarkBridge.java | 10 ++++++++++
|
||||
.../chromium/chrome/browser/bookmarks/BookmarkDelegate.java | 5 +++++
|
||||
.../chromium/chrome/browser/bookmarks/BookmarkManager.java | 5 +++++
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
|
||||
chrome/browser/BUILD.gn | 4 ++--
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.cc | 13 +++++++++++++
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.h | 3 +++
|
||||
chrome/utility/BUILD.gn | 7 +++++--
|
||||
10 files changed, 59 insertions(+), 4 deletions(-)
|
||||
|
||||
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
|
||||
@@ -15,6 +15,13 @@
|
||||
app:showAsAction="ifRoom"
|
||||
app:iconTint="@color/dark_mode_tint" />
|
||||
<item
|
||||
+ android:id="@+id/export_menu_id"
|
||||
+ android:icon="@drawable/ic_file_download_white_24dp"
|
||||
+ android:title="@string/export"
|
||||
+ android:visible="true"
|
||||
+ app:showAsAction="ifRoom"
|
||||
+ app:iconTint="@color/dark_mode_tint" />
|
||||
+ <item
|
||||
android:id="@+id/search_menu_id"
|
||||
android:icon="@drawable/ic_search"
|
||||
android:title="@string/search"
|
||||
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
|
||||
@@ -82,6 +82,9 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
} else if (menuItem.getItemId() == R.id.search_menu_id) {
|
||||
mDelegate.openSearchUI();
|
||||
return true;
|
||||
+ } else if (menuItem.getItemId() == R.id.export_menu_id) {
|
||||
+ mDelegate.exportBookmarks();
|
||||
+ return true;
|
||||
}
|
||||
|
||||
SelectionDelegate<BookmarkId> selectionDelegate = mDelegate.getSelectionDelegate();
|
||||
@@ -125,6 +128,7 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
void showLoadingUi() {
|
||||
setTitle(null);
|
||||
setNavigationButton(NAVIGATION_BUTTON_NONE);
|
||||
+ getMenu().findItem(R.id.export_menu_id).setVisible(false);
|
||||
getMenu().findItem(R.id.search_menu_id).setVisible(false);
|
||||
getMenu().findItem(R.id.edit_menu_id).setVisible(false);
|
||||
}
|
||||
@@ -134,6 +138,7 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
super.showNormalView();
|
||||
|
||||
if (mDelegate == null) {
|
||||
+ getMenu().findItem(R.id.export_menu_id).setVisible(false);
|
||||
getMenu().findItem(R.id.search_menu_id).setVisible(false);
|
||||
getMenu().findItem(R.id.edit_menu_id).setVisible(false);
|
||||
}
|
||||
@@ -166,6 +171,7 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
public void onFolderStateSet(BookmarkId folder) {
|
||||
mCurrentFolder = mDelegate.getModel().getBookmarkById(folder);
|
||||
|
||||
+ getMenu().findItem(R.id.export_menu_id).setVisible(true);
|
||||
getMenu().findItem(R.id.search_menu_id).setVisible(true);
|
||||
getMenu().findItem(R.id.edit_menu_id).setVisible(mCurrentFolder.isEditable());
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
@@ -508,6 +508,15 @@ public class BookmarkBridge {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Export bookmarks to the specified path.
|
||||
+ * @param path The path of the bookmarks HTML export.
|
||||
+ */
|
||||
+ public void exportBookmarks() {
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ nativeExportBookmarks(mNativeBookmarkBridge);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* 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.
|
||||
@@ -906,6 +915,7 @@ 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 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);
|
||||
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,11 @@ interface BookmarkDelegate {
|
||||
void openSearchUI();
|
||||
|
||||
/**
|
||||
+ * Exports the bookmarks.
|
||||
+ */
|
||||
+ 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
|
||||
@@ -416,6 +416,11 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
}
|
||||
|
||||
@Override
|
||||
+ public void exportBookmarks() {
|
||||
+ mBookmarkModel.exportBookmarks();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
public void openSearchUI() {
|
||||
setState(BookmarkUIState.createSearchState());
|
||||
mSelectableListLayout.onStartSearch();
|
||||
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
|
||||
@@ -209,6 +209,9 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_SEARCH" desc="The label for a search button.">
|
||||
Search
|
||||
</message>
|
||||
+ <message name="IDS_EXPORT" desc="The label for an export button.">
|
||||
+ Export
|
||||
+ </message>
|
||||
<message name="IDS_SHOW_INFO" desc="The label for a info button to show info.">
|
||||
Show Info
|
||||
</message>
|
||||
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
--- a/chrome/browser/BUILD.gn
|
||||
+++ b/chrome/browser/BUILD.gn
|
||||
@@ -135,6 +135,8 @@ jumbo_split_static_library("browser") {
|
||||
"bitmap_fetcher/bitmap_fetcher_service.h",
|
||||
"bitmap_fetcher/bitmap_fetcher_service_factory.cc",
|
||||
"bitmap_fetcher/bitmap_fetcher_service_factory.h",
|
||||
+ "bookmarks/bookmark_html_writer.cc",
|
||||
+ "bookmarks/bookmark_html_writer.h",
|
||||
"bookmarks/bookmark_model_factory.cc",
|
||||
"bookmarks/bookmark_model_factory.h",
|
||||
"bookmarks/bookmark_stats.cc",
|
||||
@@ -2422,8 +2424,6 @@ jumbo_split_static_library("browser") {
|
||||
"banners/app_banner_infobar_delegate_desktop.h",
|
||||
"banners/app_banner_manager_desktop.cc",
|
||||
"banners/app_banner_manager_desktop.h",
|
||||
- "bookmarks/bookmark_html_writer.cc",
|
||||
- "bookmarks/bookmark_html_writer.h",
|
||||
"certificate_viewer.h",
|
||||
"chrome_browser_field_trials_desktop.cc",
|
||||
"chrome_browser_field_trials_desktop.h",
|
||||
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
|
||||
@@ -11,9 +11,11 @@
|
||||
|
||||
#include "base/android/jni_array.h"
|
||||
#include "base/android/jni_string.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 "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/profiles/incognito_helpers.h"
|
||||
@@ -470,6 +472,17 @@ jint BookmarkBridge::GetTotalBookmarkCount(
|
||||
return count;
|
||||
}
|
||||
|
||||
+void BookmarkBridge::ExportBookmarks(JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj) {
|
||||
+ DCHECK(IsLoaded());
|
||||
+ base::FilePath path;
|
||||
+ if (!base::android::GetDownloadsDirectory(&path)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ bookmark_html_writer::WriteBookmarks(profile_, path.Append(FILE_PATH_LITERAL("bookmarks.html")), NULL);
|
||||
+}
|
||||
+
|
||||
void BookmarkBridge::SetBookmarkTitle(JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj,
|
||||
jlong id,
|
||||
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
|
||||
@@ -116,6 +116,9 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
jlong id,
|
||||
jint type);
|
||||
|
||||
+ void ExportBookmarks(JNIEnv* env,
|
||||
+ const base::android::JavaParamRef<jobject>& obj);
|
||||
+
|
||||
void SetBookmarkTitle(JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj,
|
||||
jlong id,
|
||||
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
|
||||
--- a/chrome/utility/BUILD.gn
|
||||
+++ b/chrome/utility/BUILD.gn
|
||||
@@ -55,8 +55,6 @@ static_library("utility") {
|
||||
|
||||
if (!is_android) {
|
||||
sources += [
|
||||
- "importer/bookmark_html_reader.cc",
|
||||
- "importer/bookmark_html_reader.h",
|
||||
"importer/bookmarks_file_importer.cc",
|
||||
"importer/bookmarks_file_importer.h",
|
||||
"importer/edge_database_reader_win.cc",
|
||||
@@ -160,6 +158,11 @@ static_library("utility") {
|
||||
]
|
||||
}
|
||||
|
||||
+ sources += [
|
||||
+ "importer/bookmark_html_reader.cc",
|
||||
+ "importer/bookmark_html_reader.h",
|
||||
+ ]
|
||||
+
|
||||
if (use_nss_certs) {
|
||||
sources += [
|
||||
"importer/nss_decryptor_system_nss.cc",
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
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 | 4 ++++
|
||||
2 files changed, 7 insertions(+), 9 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
|
||||
@@ -103,9 +103,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 defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -122,9 +120,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 defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,9 +137,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 defaultValue;
|
||||
}
|
||||
|
||||
// Alphabetical:
|
||||
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
|
||||
@@ -224,6 +224,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 0
|
||||
#if !defined(GOOGLE_CHROME_BUILD)
|
||||
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
switches::kVariationsServerURL) &&
|
||||
@@ -235,6 +236,9 @@ bool IsFetchingEnabled() {
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
+#else
|
||||
+ return false;
|
||||
+#endif
|
||||
}
|
||||
|
||||
std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Mon, 24 Apr 2017 16:11:53 +0200
|
||||
Subject: Disable smooth scrolling on Linux
|
||||
|
||||
Smooth scrolling (while using mousewheel or arrow keys) is a really
|
||||
dumb idea. Text naturally appears as a blur while it moves, and the
|
||||
animation takes that-many milliseconds to finish, so it's a time
|
||||
waster too.
|
||||
|
||||
Only the fallback setting, which is used on Linux, is changed; on
|
||||
Windows/MacOS, smooth scrolling remains controlled by a system
|
||||
setting.
|
||||
---
|
||||
ui/gfx/animation/animation.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ui/gfx/animation/animation.cc b/ui/gfx/animation/animation.cc
|
||||
--- a/ui/gfx/animation/animation.cc
|
||||
+++ b/ui/gfx/animation/animation.cc
|
||||
@@ -111,7 +111,7 @@ bool Animation::ShouldRenderRichAnimationImpl() {
|
||||
// static
|
||||
bool Animation::ScrollAnimationsEnabledBySystem() {
|
||||
// Defined in platform specific files for Windows and OSX.
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
+1
-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
|
||||
@@ -1175,10 +1175,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
|
||||
@@ -1239,10 +1239,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
|
||||
}
|
||||
|
||||
PluginData* LocalFrame::GetPluginData() const {
|
||||
+2
-2
@@ -10,7 +10,7 @@ Subject: Remove google account access permission on reboot
|
||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
--- a/chrome/android/BUILD.gn
|
||||
+++ b/chrome/android/BUILD.gn
|
||||
@@ -784,8 +784,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
|
||||
@@ -790,8 +790,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
|
||||
resources = [
|
||||
"java/res_template/xml/file_paths.xml",
|
||||
"java/res_template/xml/launchershortcuts.xml",
|
||||
@@ -23,7 +23,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
|
||||
--- a/chrome/android/java/AndroidManifest.xml
|
||||
+++ b/chrome/android/java/AndroidManifest.xml
|
||||
@@ -804,14 +804,14 @@ by a child template that "extends" this file.
|
||||
@@ -831,14 +831,14 @@ by a child template that "extends" this file.
|
||||
</provider>
|
||||
|
||||
<!-- Sync adapter for browser invalidation. -->
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Mon, 15 Sep 2014 10:52:32 +0200
|
||||
Subject: net/cert: increase default key length for newly-generated RSA keys
|
||||
|
||||
Should we add something for chrome://settings, or just leave
|
||||
it as hidden as it was before?
|
||||
---
|
||||
net/cert/x509_util.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/cert/x509_util.cc b/net/cert/x509_util.cc
|
||||
--- a/net/cert/x509_util.cc
|
||||
+++ b/net/cert/x509_util.cc
|
||||
@@ -191,7 +191,7 @@ bool GetTLSServerEndPointChannelBinding(const X509Certificate& certificate,
|
||||
}
|
||||
|
||||
// RSA keys created by CreateKeyAndSelfSignedCert will be of this length.
|
||||
-static const uint16_t kRSAKeyLength = 1024;
|
||||
+static const uint16_t kRSAKeyLength = 2048;
|
||||
|
||||
// Certificates made by CreateKeyAndSelfSignedCert will be signed using this
|
||||
// digest algorithm.
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Mon, 15 Sep 2014 10:58:42 +0200
|
||||
Subject: dns: send IPv6 connectivity probes to RIPE DNS rather than Google
|
||||
|
||||
Short of disabling the code (we may do that in a subsequent patch
|
||||
anyway), avoid sending to Google.
|
||||
---
|
||||
net/dns/host_resolver_impl.cc | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
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
|
||||
@@ -107,10 +107,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
|
||||
// cached.
|
||||
const int kIPv6ProbePeriodMs = 1000;
|
||||
|
||||
-// Google DNS address used for IPv6 probes.
|
||||
+/* RIPE NCC k.root-servers.net. 2001:7fd::1 (anycasted) */
|
||||
const uint8_t kIPv6ProbeAddress[] =
|
||||
- { 0x20, 0x01, 0x48, 0x60, 0x48, 0x60, 0x00, 0x00,
|
||||
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88 };
|
||||
+ { 0x20, 0x01, 0x07, 0xfd, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
|
||||
|
||||
// We use a separate histogram name for each platform to facilitate the
|
||||
// display of error codes by their symbolic name (since each platform has
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Tue, 28 Oct 2014 18:45:19 +0100
|
||||
Subject: profile-resetter: do not tick send-settings by default
|
||||
|
||||
When the user wishes to reset his preferences, Chromium would suggest
|
||||
to send over the old settings to Google. I presume that this is for
|
||||
Google to investigate into the setting combinations that led the user
|
||||
to issue a rest.
|
||||
|
||||
Of course, we cannot let that happen by default. Google is not to get
|
||||
any information.
|
||||
---
|
||||
chrome/browser/profile_resetter/reset_report_uploader.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/browser/profile_resetter/reset_report_uploader.cc b/chrome/browser/profile_resetter/reset_report_uploader.cc
|
||||
--- a/chrome/browser/profile_resetter/reset_report_uploader.cc
|
||||
+++ b/chrome/browser/profile_resetter/reset_report_uploader.cc
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
namespace {
|
||||
const char kResetReportUrl[] =
|
||||
- "https://sb-ssl.google.com/safebrowsing/clientreport/chrome-reset";
|
||||
+ "about:blank"; //https://sb-ssl.google.com/safebrowsing/clientreport/chrome-reset";
|
||||
|
||||
GURL GetClientReportUrl(const std::string& report_url) {
|
||||
GURL url(report_url);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: Joachim Bauch <bauch@struktur.de>
|
||||
Date: Tue, 9 Dec 2014 17:19:41 +0100
|
||||
Subject: browser-ui: disable warning about missing API keys
|
||||
|
||||
We do not want to use the services anyway ;)
|
||||
---
|
||||
chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc b/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc
|
||||
--- a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc
|
||||
+++ b/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
// static
|
||||
void GoogleApiKeysInfoBarDelegate::Create(InfoBarService* infobar_service) {
|
||||
+ return;
|
||||
infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar(
|
||||
std::unique_ptr<ConfirmInfoBarDelegate>(
|
||||
new GoogleApiKeysInfoBarDelegate())));
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Thu, 11 Sep 2014 16:37:32 +0200
|
||||
Subject: autofill: disable autofill download manager
|
||||
|
||||
Disables the autofill download manager (trk:158).
|
||||
---
|
||||
components/autofill/core/browser/autofill_download_manager.cc | 9 +++++++--
|
||||
components/autofill/core/browser/autofill_manager.cc | 2 ++
|
||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
|
||||
--- a/components/autofill/core/browser/autofill_download_manager.cc
|
||||
+++ b/components/autofill/core/browser/autofill_download_manager.cc
|
||||
@@ -39,7 +39,6 @@ namespace autofill {
|
||||
|
||||
namespace {
|
||||
|
||||
-const size_t kMaxQueryGetSize = 1400; // 1.25KB
|
||||
const size_t kMaxFormCacheSize = 16;
|
||||
const size_t kMaxFieldsPerQueryRequest = 100;
|
||||
|
||||
@@ -69,11 +68,13 @@ const net::BackoffEntry::Policy kAutofillBackoffPolicy = {
|
||||
false,
|
||||
};
|
||||
|
||||
+#if 0
|
||||
#if defined(GOOGLE_CHROME_BUILD)
|
||||
const char kClientName[] = "Google+Chrome";
|
||||
#else
|
||||
const char kClientName[] = "Chromium";
|
||||
#endif // defined(GOOGLE_CHROME_BUILD)
|
||||
+#endif
|
||||
|
||||
const char kDefaultAutofillServerURL[] =
|
||||
"https://clients1.google.com/tbproxy/af/";
|
||||
@@ -371,7 +372,7 @@ bool AutofillDownloadManager::StartUploadRequest(
|
||||
std::tuple<GURL, net::URLFetcher::RequestType>
|
||||
AutofillDownloadManager::GetRequestURLAndMethod(
|
||||
const FormRequestData& request_data) const {
|
||||
- net::URLFetcher::RequestType method = net::URLFetcher::POST;
|
||||
+#if 0
|
||||
std::string query_str(base::StrCat({"client=", kClientName}));
|
||||
|
||||
if (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY) {
|
||||
@@ -394,6 +395,10 @@ AutofillDownloadManager::GetRequestURLAndMethod(
|
||||
GURL url = autofill_server_url_
|
||||
.Resolve(RequestTypeToString(request_data.request_type))
|
||||
.ReplaceComponents(replacements);
|
||||
+#else
|
||||
+ net::URLFetcher::RequestType method = net::URLFetcher::GET;
|
||||
+ GURL url = GURL("about:blank");
|
||||
+#endif
|
||||
|
||||
return std::make_tuple(std::move(url), method);
|
||||
}
|
||||
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
|
||||
@@ -1264,9 +1264,11 @@ AutofillManager::AutofillManager(
|
||||
weak_ptr_factory_(this) {
|
||||
DCHECK(driver);
|
||||
DCHECK(client_);
|
||||
+#if 0
|
||||
if (enable_download_manager == ENABLE_AUTOFILL_DOWNLOAD_MANAGER) {
|
||||
download_manager_.reset(new AutofillDownloadManager(driver, this));
|
||||
}
|
||||
+#endif
|
||||
CountryNames::SetLocaleString(app_locale_);
|
||||
if (personal_data_ && client_)
|
||||
personal_data_->OnSyncServiceInitialized(client_->GetSyncService());
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Sat, 13 Sep 2014 17:12:43 +0200
|
||||
Subject: first_run: deactivate autoupdate globally
|
||||
|
||||
We currently do not have any update service infrastructure in place
|
||||
(i.e. on our webserver), and sending update requests to Google also
|
||||
sounds meh (wrong provider, after all).
|
||||
|
||||
Also, there is no tunable in chrome://settings (or similar) yet to
|
||||
turn it back on.
|
||||
---
|
||||
chrome/browser/extensions/extension_system_impl.cc | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
|
||||
--- a/chrome/browser/extensions/extension_system_impl.cc
|
||||
+++ b/chrome/browser/extensions/extension_system_impl.cc
|
||||
@@ -206,8 +206,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
|
||||
// ExtensionService depends on RuntimeData.
|
||||
runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_)));
|
||||
|
||||
- bool autoupdate_enabled = !profile_->IsGuestSession() &&
|
||||
- !profile_->IsSystemProfile();
|
||||
+ bool autoupdate_enabled = false;
|
||||
#if defined(OS_CHROMEOS)
|
||||
if (!extensions_enabled ||
|
||||
chromeos::ProfileHelper::IsLockScreenAppProfile(profile_)) {
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Tue, 7 Jul 2015 17:02:09 +0200
|
||||
Subject: safe_browsing: disable incident reporting
|
||||
|
||||
Disables the safebrowsing incident reporting where you could upload
|
||||
information about a blocked URL to Google (also added a trk prefix to
|
||||
the URL so we get notified if this happens again in the future).
|
||||
---
|
||||
.../safe_browsing/incident_reporting/incident_report_uploader_impl.cc | 2 +-
|
||||
.../safe_browsing/incident_reporting/incident_reporting_service.cc | 3 +++
|
||||
chrome/browser/safe_browsing/safe_browsing_blocking_page.cc | 3 +--
|
||||
chrome/browser/safe_browsing/safe_browsing_service.cc | 2 ++
|
||||
components/security_interstitials/core/safe_browsing_loud_error_ui.cc | 1 +
|
||||
5 files changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc b/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
|
||||
--- a/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
|
||||
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_report_uploader_impl.cc
|
||||
@@ -22,7 +22,7 @@ namespace safe_browsing {
|
||||
namespace {
|
||||
|
||||
const char kSbIncidentReportUrl[] =
|
||||
- "https://sb-ssl.google.com/safebrowsing/clientreport/incident";
|
||||
+ "about:blank";
|
||||
|
||||
constexpr net::NetworkTrafficAnnotationTag
|
||||
kSafeBrowsingIncidentTrafficAnnotation =
|
||||
diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
||||
--- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
||||
@@ -310,11 +310,14 @@ IncidentReportingService::UploadContext::~UploadContext() {
|
||||
|
||||
// static
|
||||
bool IncidentReportingService::IsEnabledForProfile(Profile* profile) {
|
||||
+ return false;
|
||||
+#if 0
|
||||
if (profile->IsOffTheRecord())
|
||||
return false;
|
||||
if (!profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled))
|
||||
return false;
|
||||
return IsExtendedReportingEnabled(*profile->GetPrefs());
|
||||
+#endif
|
||||
}
|
||||
|
||||
IncidentReportingService::IncidentReportingService(
|
||||
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
||||
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
||||
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
|
||||
@@ -59,8 +59,7 @@ class SafeBrowsingBlockingPageFactoryImpl
|
||||
PrefService* prefs =
|
||||
Profile::FromBrowserContext(web_contents->GetBrowserContext())
|
||||
->GetPrefs();
|
||||
- bool is_extended_reporting_opt_in_allowed =
|
||||
- IsExtendedReportingOptInAllowed(*prefs);
|
||||
+ bool is_extended_reporting_opt_in_allowed = false;
|
||||
bool is_proceed_anyway_disabled =
|
||||
prefs->GetBoolean(prefs::kSafeBrowsingProceedAnywayDisabled);
|
||||
|
||||
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc
|
||||
--- a/chrome/browser/safe_browsing/safe_browsing_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/safe_browsing_service.cc
|
||||
@@ -371,8 +371,10 @@ SafeBrowsingDatabaseManager* SafeBrowsingService::CreateDatabaseManager() {
|
||||
|
||||
void SafeBrowsingService::RegisterAllDelayedAnalysis() {
|
||||
#if defined(FULL_SAFE_BROWSING)
|
||||
+#if 0
|
||||
RegisterBinaryIntegrityAnalysis();
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
SafeBrowsingProtocolConfig SafeBrowsingService::GetProtocolConfig() const {
|
||||
diff --git a/components/security_interstitials/core/safe_browsing_loud_error_ui.cc b/components/security_interstitials/core/safe_browsing_loud_error_ui.cc
|
||||
--- a/components/security_interstitials/core/safe_browsing_loud_error_ui.cc
|
||||
+++ b/components/security_interstitials/core/safe_browsing_loud_error_ui.cc
|
||||
@@ -23,6 +23,7 @@ namespace {
|
||||
// For malware interstitial pages, we link the problematic URL to Google's
|
||||
// diagnostic page.
|
||||
const char kSbDiagnosticUrl[] =
|
||||
+/* trk:227 */
|
||||
"https://transparencyreport.google.com/safe-browsing/search?url=%s";
|
||||
|
||||
// Constants for the V4 phishing string upgrades.
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Tue, 7 Jul 2015 18:28:46 +0200
|
||||
Subject: safe_browsing: disable reporting of safebrowsing override
|
||||
|
||||
Disables reporting of the safebrowsing override, i.e. the report sent
|
||||
if a user decides to visit a page that was flagged as "insecure".
|
||||
This prevents trk:148 (phishing) and trk:149 (malware).
|
||||
---
|
||||
.../browser/safe_browsing/client_side_detection_service.cc | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
--- a/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
@@ -64,11 +64,13 @@ enum MalwareReportTypes {
|
||||
REPORT_RESULT_MAX
|
||||
};
|
||||
|
||||
+#if 0
|
||||
void UpdateEnumUMAHistogram(MalwareReportTypes report_type) {
|
||||
DCHECK(report_type >= 0 && report_type < REPORT_RESULT_MAX);
|
||||
UMA_HISTOGRAM_ENUMERATION("SBClientMalware.SentReports", report_type,
|
||||
REPORT_RESULT_MAX);
|
||||
}
|
||||
+#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -285,6 +287,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
|
||||
return;
|
||||
}
|
||||
|
||||
+#if 1
|
||||
+ if (!callback.is_null())
|
||||
+ callback.Run(GURL(request->url()), false);
|
||||
+#else
|
||||
// Fill in metadata about which model we used.
|
||||
if (is_extended_reporting) {
|
||||
request->set_model_filename(model_loader_extended_->name());
|
||||
@@ -367,6 +373,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
|
||||
|
||||
// Record that we made a request
|
||||
phishing_report_times_.push(base::Time::Now());
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
@@ -381,6 +388,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
return;
|
||||
}
|
||||
|
||||
+#if 1
|
||||
+ if (!callback.is_null())
|
||||
+ callback.Run(GURL(request->url()), GURL(request->url()), false);
|
||||
+#else
|
||||
std::string request_data;
|
||||
if (!request->SerializeToString(&request_data)) {
|
||||
UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION);
|
||||
@@ -450,6 +461,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
|
||||
// Record that we made a malware request
|
||||
malware_report_times_.push(base::Time::Now());
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ClientSideDetectionService::HandlePhishingVerdict(
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Wed, 22 Jul 2015 12:24:15 +0200
|
||||
Subject: safe_browsing: disable cookie transmission
|
||||
|
||||
Disables sending/setting cookies for Safebrowsing requests. This
|
||||
prevents the long-living tracking cookie from being set.
|
||||
|
||||
References: https://github.com/iridium-browser/iridium-browser/issues/37
|
||||
---
|
||||
chrome/browser/safe_browsing/client_side_detection_service.cc | 4 ++--
|
||||
.../download_protection/check_client_download_request.cc | 2 +-
|
||||
.../safe_browsing/download_protection/ppapi_download_request.cc | 2 +-
|
||||
chrome/browser/safe_browsing/protocol_manager.cc | 8 ++++----
|
||||
components/safe_browsing/browser/threat_details_cache.cc | 1 +
|
||||
5 files changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
--- a/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
+++ b/chrome/browser/safe_browsing/client_side_detection_service.cc
|
||||
@@ -354,7 +354,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = GetClientReportUrl(kClientReportPhishingUrl);
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
loader->AttachStringForUpload(request_data, "application/octet-stream");
|
||||
@@ -436,7 +436,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = GetClientReportUrl(kClientReportMalwareUrl);
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
loader->AttachStringForUpload(request_data, "application/octet-stream");
|
||||
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
|
||||
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
|
||||
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
|
||||
@@ -1022,7 +1022,7 @@ void CheckClientDownloadRequest::SendRequest() {
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = PPAPIDownloadRequest::GetDownloadRequestUrl();
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
loader_ = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
loader_->AttachStringForUpload(client_download_request_data_,
|
||||
diff --git a/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc b/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc
|
||||
--- a/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc
|
||||
+++ b/chrome/browser/safe_browsing/download_protection/ppapi_download_request.cc
|
||||
@@ -248,7 +248,7 @@ void PPAPIDownloadRequest::SendRequest() {
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = GetDownloadRequestUrl();
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
loader_ = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
loader_->AttachStringForUpload(client_download_request_data_,
|
||||
diff --git a/chrome/browser/safe_browsing/protocol_manager.cc b/chrome/browser/safe_browsing/protocol_manager.cc
|
||||
--- a/chrome/browser/safe_browsing/protocol_manager.cc
|
||||
+++ b/chrome/browser/safe_browsing/protocol_manager.cc
|
||||
@@ -282,7 +282,7 @@ void SafeBrowsingProtocolManager::GetFullHash(
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = gethash_url;
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
auto loader_ptr = network::SimpleURLLoader::Create(
|
||||
std::move(resource_request), traffic_annotation);
|
||||
loader_ptr->AttachStringForUpload(FormatGetHash(prefixes), "text/plain");
|
||||
@@ -688,7 +688,7 @@ bool SafeBrowsingProtocolManager::IssueBackupUpdateRequest(
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = backup_update_url;
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
request_ = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
request_->AttachStringForUpload(update_list_data_, "text/plain");
|
||||
@@ -719,7 +719,7 @@ void SafeBrowsingProtocolManager::IssueChunkRequest() {
|
||||
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = chunk_url;
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
request_ = network::SimpleURLLoader::Create(
|
||||
std::move(resource_request), kChunkBackupRequestTrafficAnnotation);
|
||||
request_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
@@ -777,7 +777,7 @@ void SafeBrowsingProtocolManager::OnGetChunksComplete(
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = update_url;
|
||||
resource_request->method = "POST";
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
request_ = network::SimpleURLLoader::Create(
|
||||
std::move(resource_request), kChunkBackupRequestTrafficAnnotation);
|
||||
request_->AttachStringForUpload(update_list_data_, "text/plain");
|
||||
diff --git a/components/safe_browsing/browser/threat_details_cache.cc b/components/safe_browsing/browser/threat_details_cache.cc
|
||||
--- a/components/safe_browsing/browser/threat_details_cache.cc
|
||||
+++ b/components/safe_browsing/browser/threat_details_cache.cc
|
||||
@@ -113,6 +113,7 @@ void ThreatDetailsCacheCollector::OpenEntry() {
|
||||
// Only from cache, and don't save cookies.
|
||||
resource_request->load_flags = net::LOAD_ONLY_FROM_CACHE |
|
||||
net::LOAD_SKIP_CACHE_VALIDATION |
|
||||
+ net::LOAD_DO_NOT_SEND_COOKIES |
|
||||
net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
current_load_ = network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
From: Joachim Bauch <jojo@struktur.de>
|
||||
Date: Thu, 25 Jun 2015 15:34:10 +0200
|
||||
Subject: extensions: always show component extensions in the ext list
|
||||
|
||||
The attached patch makes sure that component extensions are always
|
||||
shown in "chrome://extensions".
|
||||
|
||||
Currently these are
|
||||
- Bookmark Manager
|
||||
- Chromium PDF Viewer
|
||||
- CryptoTokenExtension
|
||||
|
||||
References: https://github.com/iridium-browser/iridium-browser/issues/28
|
||||
---
|
||||
extensions/common/extension.cc | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
|
||||
--- a/extensions/common/extension.cc
|
||||
+++ b/extensions/common/extension.cc
|
||||
@@ -377,9 +377,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
}
|
||||
|
||||
bool Extension::ShouldExposeViaManagementAPI() const {
|
||||
+#if 0
|
||||
// Hide component extensions because they are only extensions as an
|
||||
// implementation detail of Chrome.
|
||||
return !extensions::Manifest::IsComponentLocation(location());
|
||||
+#endif
|
||||
+ return false;
|
||||
}
|
||||
|
||||
Extension::ManifestData* Extension::GetManifestData(const std::string& key)
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
From: Simon Eisenmann <simon@struktur.de>
|
||||
Date: Mon, 26 Oct 2015 14:18:05 +0100
|
||||
Subject: translate: disable fetching of translate languages from server
|
||||
|
||||
GH issue #18.
|
||||
---
|
||||
components/translate/core/browser/translate_language_list.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/components/translate/core/browser/translate_language_list.cc b/components/translate/core/browser/translate_language_list.cc
|
||||
--- a/components/translate/core/browser/translate_language_list.cc
|
||||
+++ b/components/translate/core/browser/translate_language_list.cc
|
||||
@@ -207,6 +207,7 @@ GURL TranslateLanguageList::TranslateLanguageUrl() {
|
||||
}
|
||||
|
||||
void TranslateLanguageList::RequestLanguageList() {
|
||||
+#if 0
|
||||
// If resource requests are not allowed, we'll get a callback when they are.
|
||||
if (!resource_requests_allowed_) {
|
||||
request_pending_ = true;
|
||||
@@ -233,6 +234,7 @@ void TranslateLanguageList::RequestLanguageList() {
|
||||
if (!result)
|
||||
NotifyEvent(__LINE__, "Request is omitted due to retry limit");
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
void TranslateLanguageList::SetResourceRequestsAllowed(bool allowed) {
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 24 Jun 2018 01:51:49 +0200
|
||||
Subject: lint: suppress hardcoded text warnings
|
||||
|
||||
---
|
||||
build/android/lint/suppressions.xml | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml
|
||||
--- a/build/android/lint/suppressions.xml
|
||||
+++ b/build/android/lint/suppressions.xml
|
||||
@@ -94,10 +94,8 @@ Still reading?
|
||||
<ignore regexp="chromecast/internal" />
|
||||
<ignore regexp="remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java" />
|
||||
</issue>
|
||||
- <issue id="HardcodedDebugMode" severity="Fatal">
|
||||
- <ignore path="AndroidManifest.xml"/>
|
||||
- </issue>
|
||||
- <issue id="HardcodedText" severity="Error">
|
||||
+ <issue id="HardcodedDebugMode" severity="Fatal" />
|
||||
+ <issue id="HardcodedText" severity="ignore">
|
||||
<ignore regexp="chromecast/internal"/>
|
||||
<ignore regexp="remoting/android/host/res/layout/main.xml"/>
|
||||
</issue>
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:04:43 +0200
|
||||
Subject: kill Vision
|
||||
|
||||
---
|
||||
services/shape_detection/BUILD.gn | 3 ---
|
||||
.../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------
|
||||
.../chromium/shape_detection/FaceDetectionProviderImpl.java | 2 +-
|
||||
.../src/org/chromium/shape_detection/InterfaceRegistrar.java | 2 --
|
||||
4 files changed, 1 insertion(+), 18 deletions(-)
|
||||
|
||||
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
|
||||
--- a/services/shape_detection/BUILD.gn
|
||||
+++ b/services/shape_detection/BUILD.gn
|
||||
@@ -79,13 +79,10 @@ if (is_android) {
|
||||
|
||||
android_library("shape_detection_java") {
|
||||
java_files = [
|
||||
- "android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java",
|
||||
"android/java/src/org/chromium/shape_detection/FaceDetectionImpl.java",
|
||||
- "android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java",
|
||||
"android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java",
|
||||
"android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java",
|
||||
"android/java/src/org/chromium/shape_detection/BitmapUtils.java",
|
||||
- "android/java/src/org/chromium/shape_detection/TextDetectionImpl.java",
|
||||
]
|
||||
|
||||
deps = [
|
||||
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
|
||||
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
|
||||
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
|
||||
@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
-import com.google.android.gms.vision.Frame;
|
||||
-
|
||||
import org.chromium.mojo_base.BigBufferUtil;
|
||||
import org.chromium.skia.mojom.ColorType;
|
||||
|
||||
@@ -44,14 +42,4 @@ public class BitmapUtils {
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
-
|
||||
- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
|
||||
- Bitmap bitmap = convertToBitmap(bitmapData);
|
||||
- if (bitmap == null) {
|
||||
- return null;
|
||||
- }
|
||||
-
|
||||
- // This constructor implies a pixel format conversion to YUV.
|
||||
- return new Frame.Builder().setBitmap(bitmap).build();
|
||||
- }
|
||||
}
|
||||
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
|
||||
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
|
||||
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
|
||||
@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
|
||||
== ConnectionResult.SUCCESS;
|
||||
|
||||
if (isGmsCoreSupported) {
|
||||
- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
|
||||
+ //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
|
||||
} else {
|
||||
FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
|
||||
}
|
||||
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
|
||||
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
|
||||
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
|
||||
@@ -20,9 +20,7 @@ class InterfaceRegistrar {
|
||||
// is not necessary to hold on to a reference to it explicitly.
|
||||
InterfaceRegistry registry = InterfaceRegistry.create(
|
||||
CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
|
||||
- registry.addInterface(BarcodeDetection.MANAGER, new BarcodeDetectionImpl.Factory());
|
||||
registry.addInterface(
|
||||
FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
|
||||
- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
|
||||
}
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,800 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:11:38 +0200
|
||||
Subject: kill GCM
|
||||
|
||||
---
|
||||
build/secondary/third_party/android_tools/BUILD.gn | 2 -
|
||||
.../third_party/android_tools/support/BUILD.gn | 5 --
|
||||
chrome/android/BUILD.gn | 1 -
|
||||
chrome/android/java/AndroidManifest.xml | 62 ----------------------
|
||||
.../chrome/browser/BackgroundSyncLauncher.java | 16 +++---
|
||||
.../invalidation/InvalidationController.java | 13 +----
|
||||
.../browser/ntp/snippets/SnippetsLauncher.java | 44 ---------------
|
||||
.../browser/services/gcm/GCMBackgroundTask.java | 2 -
|
||||
.../gcm/InvalidationGcmUpstreamSender.java | 3 +-
|
||||
chrome/android/java_sources.gni | 2 -
|
||||
components/background_task_scheduler/BUILD.gn | 1 -
|
||||
.../BackgroundTaskSchedulerGcmNetworkManager.java | 30 ++++-------
|
||||
components/gcm_driver/android/BUILD.gn | 1 -
|
||||
components/gcm_driver/instance_id/android/BUILD.gn | 1 -
|
||||
.../gcm_driver/instance_id/InstanceIDBridge.java | 29 ++--------
|
||||
components/sync/android/BUILD.gn | 1 -
|
||||
third_party/cacheinvalidation/BUILD.gn | 6 ---
|
||||
.../client/contrib/MultiplexingGcmListener.java | 49 ++---------------
|
||||
.../android2/channel/AndroidNetworkChannel.java | 18 +++----
|
||||
19 files changed, 34 insertions(+), 252 deletions(-)
|
||||
|
||||
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
|
||||
--- a/build/secondary/third_party/android_tools/BUILD.gn
|
||||
+++ b/build/secondary/third_party/android_tools/BUILD.gn
|
||||
@@ -43,8 +43,6 @@ if (enable_java_templates) {
|
||||
support_lib_alias("android_support_chromium_java") {
|
||||
testonly = true
|
||||
}
|
||||
- support_lib_alias("android_gcm_java") {
|
||||
- }
|
||||
support_lib_alias("emma_device_java") {
|
||||
}
|
||||
prebuilt_wrapper("android_arch_lifecycle_common_java") {
|
||||
diff --git a/build/secondary/third_party/android_tools/support/BUILD.gn b/build/secondary/third_party/android_tools/support/BUILD.gn
|
||||
--- a/build/secondary/third_party/android_tools/support/BUILD.gn
|
||||
+++ b/build/secondary/third_party/android_tools/support/BUILD.gn
|
||||
@@ -21,11 +21,6 @@ android_library("android_support_chromium_java") {
|
||||
visibility += [ "//third_party/android_tools:*" ]
|
||||
}
|
||||
|
||||
-android_java_prebuilt("android_gcm_java") {
|
||||
- jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar"
|
||||
- visibility += [ "//third_party/android_tools:*" ]
|
||||
-}
|
||||
-
|
||||
android_java_prebuilt("emma_device_java") {
|
||||
jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar"
|
||||
include_java_resources = true
|
||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
--- a/chrome/android/BUILD.gn
|
||||
+++ b/chrome/android/BUILD.gn
|
||||
@@ -260,7 +260,6 @@ android_library("chrome_java") {
|
||||
"//third_party/android_swipe_refresh:android_swipe_refresh_java",
|
||||
"//third_party/android_tools:android_arch_lifecycle_common_java",
|
||||
"//third_party/android_tools:android_arch_lifecycle_runtime_java",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
"//third_party/android_tools:android_support_annotations_java",
|
||||
"//third_party/android_tools:android_support_compat_java",
|
||||
"//third_party/android_tools:android_support_design_java",
|
||||
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
|
||||
@@ -74,22 +74,17 @@ by a child template that "extends" this file.
|
||||
<permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
|
||||
<permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
|
||||
<permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
|
||||
- <!-- Only chrome can receive the messages and registration result -->
|
||||
- <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
|
||||
- android:protectionLevel="signature" />
|
||||
<permission android:name="{{ manifest_package }}.permission.DEBUG"
|
||||
android:label="Debug web pages"
|
||||
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
- <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
|
||||
<uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
|
||||
<uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
|
||||
|
||||
<uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
|
||||
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
|
||||
<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
|
||||
- <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
||||
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
|
||||
|
||||
<uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
|
||||
@@ -913,43 +908,6 @@ by a child template that "extends" this file.
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
|
||||
android:hardwareAccelerated="false" />
|
||||
|
||||
- <!-- Receiver for GCM messages. -->
|
||||
- <receiver android:name="com.google.android.gms.gcm.GcmReceiver"
|
||||
- android:exported="true"
|
||||
- android:permission="com.google.android.c2dm.permission.SEND">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
- <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
|
||||
- <category android:name="{{ manifest_package }}"/>
|
||||
- </intent-filter>
|
||||
- </receiver>
|
||||
- <!-- GcmTaskService for registration for Invalidations. -->
|
||||
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService"
|
||||
- android:exported="true"
|
||||
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
- <!-- InstanceIDListenerService for token refresh events from GCM. -->
|
||||
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidInstanceIDListenerService"
|
||||
- android:exported="false">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.iid.InstanceID"/>
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
- <!-- GcmListenerService for messages from GCM. -->
|
||||
- <service android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"
|
||||
- android:exported="false" >
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
- <meta-data android:name="ipc.invalidation.ticl.gcm_upstream_service_class"
|
||||
- android:value="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" />
|
||||
- <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
|
||||
- android:exported="false"/>
|
||||
-
|
||||
<!-- Notification service for sync. -->
|
||||
<meta-data android:name="ipc.invalidation.ticl.listener_service_class"
|
||||
android:value="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService"/>
|
||||
@@ -961,8 +919,6 @@ by a child template that "extends" this file.
|
||||
</service>
|
||||
<service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
|
||||
android:exported="false"/>
|
||||
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
|
||||
- android:exported="false"/>
|
||||
<receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
|
||||
android:exported="false"/>
|
||||
<receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
|
||||
@@ -989,24 +945,6 @@ by a child template that "extends" this file.
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"/>
|
||||
|
||||
- <!-- Background Task Scheduler GCM task service -->
|
||||
- <service android:name="org.chromium.components.background_task_scheduler.BackgroundTaskGcmTaskService"
|
||||
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
|
||||
- android:exported="true">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
-
|
||||
- <!-- GcmTaskService implementation to wake Chrome on scheduled events -->
|
||||
- <service android:name="org.chromium.chrome.browser.ChromeBackgroundService"
|
||||
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
|
||||
- android:exported="true">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
-
|
||||
<service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
|
||||
android:exported="true"
|
||||
tools:ignore="ExportedService" />
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
|
||||
@@ -9,10 +9,6 @@ import android.content.SharedPreferences;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.StrictMode;
|
||||
|
||||
-import com.google.android.gms.gcm.GcmNetworkManager;
|
||||
-import com.google.android.gms.gcm.OneoffTask;
|
||||
-import com.google.android.gms.gcm.Task;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
@@ -37,8 +33,6 @@ public class BackgroundSyncLauncher {
|
||||
// BackgroundSyncLauncherAndroid, if any. If it is non-null then the browser is running.
|
||||
private static BackgroundSyncLauncher sInstance;
|
||||
|
||||
- private GcmNetworkManager mScheduler;
|
||||
-
|
||||
/**
|
||||
* Disables the automatic use of the GCMNetworkManager. When disabled, the methods which
|
||||
* interact with GCM can still be used, but will not be called automatically on creation, or by
|
||||
@@ -123,6 +117,7 @@ public class BackgroundSyncLauncher {
|
||||
@VisibleForTesting
|
||||
@CalledByNative
|
||||
protected void launchBrowserIfStopped(final boolean shouldLaunch, final long minDelayMs) {
|
||||
+ /*
|
||||
mLaunchBrowserIfStoppedTask = new AsyncTask<Void, Void, Void>() {
|
||||
@Override
|
||||
protected Void doInBackground(Void... params) {
|
||||
@@ -147,6 +142,7 @@ public class BackgroundSyncLauncher {
|
||||
}
|
||||
}
|
||||
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
+ */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -158,7 +154,6 @@ public class BackgroundSyncLauncher {
|
||||
}
|
||||
|
||||
protected BackgroundSyncLauncher() {
|
||||
- mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationContext());
|
||||
launchBrowserIfStopped(false, 0);
|
||||
}
|
||||
|
||||
@@ -186,7 +181,7 @@ public class BackgroundSyncLauncher {
|
||||
}
|
||||
return !sGCMEnabled;
|
||||
}
|
||||
-
|
||||
+ /*
|
||||
private static boolean scheduleLaunchTask(GcmNetworkManager scheduler, long minDelayMs) {
|
||||
// Google Play Services may not be up to date, if the application was not installed through
|
||||
// the Play Store. In this case, scheduling the task will fail silently.
|
||||
@@ -229,7 +224,7 @@ public class BackgroundSyncLauncher {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
-
|
||||
+ */
|
||||
/**
|
||||
* Reschedule any required background sync tasks, if they have been removed due to an
|
||||
* application upgrade.
|
||||
@@ -239,6 +234,7 @@ public class BackgroundSyncLauncher {
|
||||
* This method is static so that it can be run without actually instantiating a
|
||||
* BackgroundSyncLauncher.
|
||||
*/
|
||||
+ /*
|
||||
protected static void rescheduleTasksOnUpgrade(final Context context) {
|
||||
final GcmNetworkManager scheduler = GcmNetworkManager.getInstance(context);
|
||||
BackgroundSyncLauncher.ShouldLaunchCallback callback = shouldLaunch -> {
|
||||
@@ -252,7 +248,7 @@ public class BackgroundSyncLauncher {
|
||||
};
|
||||
BackgroundSyncLauncher.shouldLaunchBrowserIfStopped(callback);
|
||||
}
|
||||
-
|
||||
+ */
|
||||
@VisibleForTesting
|
||||
static void setGCMEnabled(boolean enabled) {
|
||||
sGCMEnabled = enabled;
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
|
||||
@@ -12,8 +12,6 @@ import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
|
||||
-import com.google.ipc.invalidation.ticl.android2.channel.AndroidGcmController;
|
||||
-
|
||||
import org.chromium.base.ApplicationState;
|
||||
import org.chromium.base.ApplicationStatus;
|
||||
import org.chromium.base.Log;
|
||||
@@ -200,16 +198,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
|
||||
* Registers for Google Cloud Messaging (GCM) for Invalidations.
|
||||
*/
|
||||
private void ensureGcmIsInitialized() {
|
||||
- if (mGcmInitialized) return;
|
||||
- mGcmInitialized = true;
|
||||
- new AsyncTask<Void, Void, Void>() {
|
||||
- @Override
|
||||
- protected Void doInBackground(Void... arg0) {
|
||||
- boolean useGcmUpstream = true;
|
||||
- AndroidGcmController.get(mContext).initializeGcm(useGcmUpstream);
|
||||
- return null;
|
||||
- }
|
||||
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
+ mGcmInitialized = false;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
|
||||
@@ -7,15 +7,10 @@ package org.chromium.chrome.browser.ntp.snippets;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
|
||||
-import com.google.android.gms.gcm.GcmNetworkManager;
|
||||
-import com.google.android.gms.gcm.PeriodicTask;
|
||||
-import com.google.android.gms.gcm.Task;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
-import org.chromium.chrome.browser.ChromeBackgroundService;
|
||||
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
|
||||
|
||||
/**
|
||||
@@ -40,8 +35,6 @@ public class SnippetsLauncher {
|
||||
// If it is non-null then the browser is running.
|
||||
private static SnippetsLauncher sInstance;
|
||||
|
||||
- private GcmNetworkManager mScheduler;
|
||||
-
|
||||
private boolean mGCMEnabled = true;
|
||||
|
||||
/**
|
||||
@@ -78,7 +71,6 @@ public class SnippetsLauncher {
|
||||
|
||||
protected SnippetsLauncher() {
|
||||
checkGCM();
|
||||
- mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationContext());
|
||||
}
|
||||
|
||||
private void checkGCM() {
|
||||
@@ -89,32 +81,7 @@ public class SnippetsLauncher {
|
||||
}
|
||||
}
|
||||
|
||||
- private static PeriodicTask buildFetchTask(
|
||||
- String tag, long periodSeconds, int requiredNetwork) {
|
||||
- // Add a bit of "flex" around the target period. This achieves the following:
|
||||
- // - It makes sure the task doesn't run (significantly) before its initial period has
|
||||
- // elapsed. In practice, the scheduler seems to behave like that anyway, but it doesn't
|
||||
- // guarantee that, so we shouldn't rely on it.
|
||||
- // - It gives the scheduler a bit of room to optimize for battery life.
|
||||
- long effectivePeriodSeconds = (long) (periodSeconds * (1.0 + FLEX_FACTOR));
|
||||
- long flexSeconds = (long) (periodSeconds * (2.0 * FLEX_FACTOR));
|
||||
- return new PeriodicTask.Builder()
|
||||
- .setService(ChromeBackgroundService.class)
|
||||
- .setTag(tag)
|
||||
- .setPeriod(effectivePeriodSeconds)
|
||||
- .setFlex(flexSeconds)
|
||||
- .setRequiredNetwork(requiredNetwork)
|
||||
- .setPersisted(true)
|
||||
- .setUpdateCurrent(true)
|
||||
- .build();
|
||||
- }
|
||||
-
|
||||
private void scheduleOrCancelFetchTask(String taskTag, long period, int requiredNetwork) {
|
||||
- if (period > 0) {
|
||||
- mScheduler.schedule(buildFetchTask(taskTag, period, requiredNetwork));
|
||||
- } else {
|
||||
- mScheduler.cancelTask(taskTag, ChromeBackgroundService.class);
|
||||
- }
|
||||
}
|
||||
|
||||
@CalledByNative
|
||||
@@ -127,23 +94,12 @@ public class SnippetsLauncher {
|
||||
.edit()
|
||||
.putBoolean(PREF_IS_SCHEDULED, isScheduled)
|
||||
.apply();
|
||||
-
|
||||
- // Google Play Services may not be up to date, if the application was not installed through
|
||||
- // the Play Store. In this case, scheduling the task will fail silently.
|
||||
- try {
|
||||
- scheduleOrCancelFetchTask(
|
||||
- TASK_TAG_WIFI, periodWifiSeconds, Task.NETWORK_STATE_UNMETERED);
|
||||
- scheduleOrCancelFetchTask(
|
||||
- TASK_TAG_FALLBACK, periodFallbackSeconds, Task.NETWORK_STATE_CONNECTED);
|
||||
- } catch (IllegalArgumentException e) {
|
||||
// Disable GCM for the remainder of this session.
|
||||
mGCMEnabled = false;
|
||||
|
||||
ContextUtils.getAppSharedPreferences().edit().remove(PREF_IS_SCHEDULED).apply();
|
||||
// Return false so that the failure will be logged.
|
||||
return false;
|
||||
- }
|
||||
- return true;
|
||||
}
|
||||
|
||||
@CalledByNative
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
||||
@@ -39,8 +39,6 @@ public class GCMBackgroundTask implements BackgroundTask {
|
||||
Log.e(TAG, "The received bundle containing message data could not be validated.");
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- ChromeGcmListenerService.dispatchMessageToDriver(context, new GCMMessage(extras));
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
|
||||
@@ -13,7 +13,6 @@ import android.os.Parcel;
|
||||
import android.support.annotation.MainThread;
|
||||
import android.util.Log;
|
||||
|
||||
-import com.google.android.gms.gcm.GoogleCloudMessaging;
|
||||
import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
|
||||
|
||||
import org.chromium.base.ThreadUtils;
|
||||
@@ -92,6 +91,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
|
||||
* This function runs on a thread from the AsyncTask.THREAD_POOL_EXECUTOR.
|
||||
*/
|
||||
private void sendUpstreamMessage(String to, Bundle data, String token, Context context) {
|
||||
+ /*
|
||||
// Add the OAuth2 token to the bundle. The token should have the prefix Bearer added to it.
|
||||
data.putString("Authorization", "Bearer " + token);
|
||||
if (!isMessageWithinLimit(data)) {
|
||||
@@ -105,6 +105,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
|
||||
Log.w(TAG, "Send message failed");
|
||||
GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SEND_FAILED);
|
||||
}
|
||||
+ */
|
||||
}
|
||||
|
||||
private boolean isMessageWithinLimit(Bundle data) {
|
||||
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
|
||||
@@ -24,7 +24,6 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/ChromeActivity.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeApplication.java",
|
||||
- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
|
||||
@@ -1159,7 +1158,6 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
|
||||
"java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
|
||||
"java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
|
||||
- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
|
||||
"java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java",
|
||||
"java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
|
||||
"java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
|
||||
diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
|
||||
--- a/components/background_task_scheduler/BUILD.gn
|
||||
+++ b/components/background_task_scheduler/BUILD.gn
|
||||
@@ -23,7 +23,6 @@ if (is_android) {
|
||||
android_library("background_task_scheduler_java") {
|
||||
java_files = [
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTask.java",
|
||||
- "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java",
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskJobService.java",
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskReflection.java",
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java",
|
||||
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
|
||||
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
|
||||
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
|
||||
@@ -8,14 +8,6 @@ import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-import com.google.android.gms.gcm.GcmNetworkManager;
|
||||
-import com.google.android.gms.gcm.OneoffTask;
|
||||
-import com.google.android.gms.gcm.PeriodicTask;
|
||||
-import com.google.android.gms.gcm.Task;
|
||||
-import com.google.android.gms.gcm.TaskParams;
|
||||
-
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
@@ -33,7 +25,7 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
static final String BACKGROUND_TASK_CLASS_KEY = "_background_task_class";
|
||||
@VisibleForTesting
|
||||
static final String BACKGROUND_TASK_EXTRAS_KEY = "_background_task_extras";
|
||||
-
|
||||
+ /*
|
||||
static BackgroundTask getBackgroundTaskFromTaskParams(@NonNull TaskParams taskParams) {
|
||||
String backgroundTaskClassName = getBackgroundTaskClassFromTaskParams(taskParams);
|
||||
return BackgroundTaskReflection.getBackgroundTaskFromClassName(backgroundTaskClassName);
|
||||
@@ -44,7 +36,7 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
if (extras == null) return null;
|
||||
return extras.getString(BACKGROUND_TASK_CLASS_KEY);
|
||||
}
|
||||
-
|
||||
+ */
|
||||
/**
|
||||
* Retrieves the {@link TaskParameters} from the {@link TaskParams}, which are passed as
|
||||
* one of the keys. Only values valid for {@link android.os.BaseBundle} are supported, and other
|
||||
@@ -53,6 +45,8 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
* @param taskParams the {@link TaskParams} to extract the {@link TaskParameters} from.
|
||||
* @return the {@link TaskParameters} for the current job.
|
||||
*/
|
||||
+
|
||||
+ /*
|
||||
static TaskParameters getTaskParametersFromTaskParams(@NonNull TaskParams taskParams) {
|
||||
int taskId;
|
||||
try {
|
||||
@@ -132,6 +126,7 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
return Task.NETWORK_STATE_ANY;
|
||||
}
|
||||
|
||||
+ */
|
||||
@Override
|
||||
public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
@@ -142,6 +137,7 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
+ " has no parameterless public constructor.");
|
||||
return false;
|
||||
}
|
||||
+ /*
|
||||
|
||||
GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
|
||||
if (gcmNetworkManager == null) {
|
||||
@@ -158,14 +154,15 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
"GcmNetworkManager failed to schedule task, gcm message: " + gcmErrorMessage);
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- return true;
|
||||
+ */
|
||||
+ return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(Context context, int taskId) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
|
||||
+ /*
|
||||
GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
|
||||
if (gcmNetworkManager == null) {
|
||||
Log.e(TAG, "GcmNetworkManager is not available.");
|
||||
@@ -178,14 +175,7 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
} catch (IllegalArgumentException e) {
|
||||
Log.e(TAG, "GcmNetworkManager failed to cancel task.");
|
||||
}
|
||||
- }
|
||||
-
|
||||
- private GcmNetworkManager getGcmNetworkManager(Context context) {
|
||||
- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
|
||||
- == ConnectionResult.SUCCESS) {
|
||||
- return GcmNetworkManager.getInstance(context);
|
||||
- }
|
||||
- return null;
|
||||
+ */
|
||||
}
|
||||
|
||||
private static String taskIdToTaskTag(int taskId) {
|
||||
diff --git a/components/gcm_driver/android/BUILD.gn b/components/gcm_driver/android/BUILD.gn
|
||||
--- a/components/gcm_driver/android/BUILD.gn
|
||||
+++ b/components/gcm_driver/android/BUILD.gn
|
||||
@@ -15,7 +15,6 @@ android_library("gcm_driver_java") {
|
||||
deps = [
|
||||
"//base:base_java",
|
||||
"//content/public/android:content_java",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
"//third_party/jsr-305:jsr_305_javalib",
|
||||
]
|
||||
|
||||
diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
|
||||
--- a/components/gcm_driver/instance_id/android/BUILD.gn
|
||||
+++ b/components/gcm_driver/instance_id/android/BUILD.gn
|
||||
@@ -26,7 +26,6 @@ android_library("instance_id_driver_java") {
|
||||
|
||||
java_files = [
|
||||
"java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java",
|
||||
- "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java",
|
||||
]
|
||||
}
|
||||
|
||||
diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
|
||||
--- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
|
||||
+++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
|
||||
@@ -26,7 +26,6 @@ public class InstanceIDBridge {
|
||||
* Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
|
||||
* initialized on a background thread.
|
||||
*/
|
||||
- private InstanceIDWithSubtype mInstanceID;
|
||||
|
||||
private static boolean sBlockOnAsyncTasksForTesting;
|
||||
|
||||
@@ -71,7 +70,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<String>() {
|
||||
@Override
|
||||
protected String doBackgroundWork() {
|
||||
- return mInstanceID.getId();
|
||||
+ return "";
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(String id) {
|
||||
@@ -86,7 +85,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<Long>() {
|
||||
@Override
|
||||
protected Long doBackgroundWork() {
|
||||
- return mInstanceID.getCreationTime();
|
||||
+ return 0L;
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(Long creationTime) {
|
||||
@@ -107,11 +106,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<String>() {
|
||||
@Override
|
||||
protected String doBackgroundWork() {
|
||||
- try {
|
||||
- return mInstanceID.getToken(authorizedEntity, scope, extras);
|
||||
- } catch (IOException ex) {
|
||||
- return "";
|
||||
- }
|
||||
+ return "";
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(String token) {
|
||||
@@ -127,12 +122,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<Boolean>() {
|
||||
@Override
|
||||
protected Boolean doBackgroundWork() {
|
||||
- try {
|
||||
- mInstanceID.deleteToken(authorizedEntity, scope);
|
||||
- return true;
|
||||
- } catch (IOException ex) {
|
||||
- return false;
|
||||
- }
|
||||
+ return true;
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(Boolean success) {
|
||||
@@ -147,12 +137,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<Boolean>() {
|
||||
@Override
|
||||
protected Boolean doBackgroundWork() {
|
||||
- try {
|
||||
- mInstanceID.deleteInstanceID();
|
||||
- return true;
|
||||
- } catch (IOException ex) {
|
||||
- return false;
|
||||
- }
|
||||
+ return true;
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(Boolean success) {
|
||||
@@ -192,10 +177,6 @@ public class InstanceIDBridge {
|
||||
@SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
|
||||
protected Result doInBackground(Void... params) {
|
||||
synchronized (InstanceIDBridge.this) {
|
||||
- if (mInstanceID == null) {
|
||||
- mInstanceID = InstanceIDWithSubtype.getInstance(
|
||||
- ContextUtils.getApplicationContext(), mSubtype);
|
||||
- }
|
||||
}
|
||||
return doBackgroundWork();
|
||||
}
|
||||
diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
|
||||
--- a/components/sync/android/BUILD.gn
|
||||
+++ b/components/sync/android/BUILD.gn
|
||||
@@ -10,7 +10,6 @@ android_library("sync_java") {
|
||||
"//base:base_java",
|
||||
"//components/signin/core/browser/android:java",
|
||||
"//net/android:net_java",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
"//third_party/android_tools:android_support_annotations_java",
|
||||
"//third_party/cacheinvalidation:cacheinvalidation_javalib",
|
||||
"//third_party/cacheinvalidation:cacheinvalidation_proto_java",
|
||||
diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
|
||||
--- a/third_party/cacheinvalidation/BUILD.gn
|
||||
+++ b/third_party/cacheinvalidation/BUILD.gn
|
||||
@@ -141,7 +141,6 @@ if (is_android) {
|
||||
"$google_play_services_package:google_play_services_iid_java",
|
||||
"$google_play_services_package:google_play_services_tasks_java",
|
||||
"//third_party/android_protobuf:protobuf_nano_javalib",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
]
|
||||
|
||||
java_files = [
|
||||
@@ -207,13 +206,8 @@ if (is_android) {
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/WakeLockManager.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelConstants.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelPreferences.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/CommonUtils.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmUpstreamSenderService.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/proto/AndroidChannel.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/proto/AndroidListenerProtocol.java",
|
||||
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java
|
||||
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java
|
||||
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java
|
||||
@@ -16,9 +16,6 @@
|
||||
|
||||
package com.google.ipc.invalidation.external.client.contrib;
|
||||
|
||||
-import com.google.android.gcm.GCMBaseIntentService;
|
||||
-import com.google.android.gcm.GCMBroadcastReceiver;
|
||||
-import com.google.android.gcm.GCMRegistrar;
|
||||
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
|
||||
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
|
||||
import com.google.ipc.invalidation.ticl.android2.WakeLockManager;
|
||||
@@ -69,7 +66,7 @@ import android.content.pm.ServiceInfo;
|
||||
* there is nothing to do except log an error (which this class does).
|
||||
*
|
||||
*/
|
||||
-public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
+public class MultiplexingGcmListener {
|
||||
/* This class is public so that it can be instantiated by the Android runtime. */
|
||||
|
||||
/** Constants used in broadcast Intents. */
|
||||
@@ -106,18 +103,6 @@ public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
}
|
||||
|
||||
/**
|
||||
- * {@link GCMBroadcastReceiver} that forwards GCM intents to the {@code MultiplexingGcmListener}
|
||||
- * class.
|
||||
- */
|
||||
- public static class GCMReceiver extends GCMBroadcastReceiver {
|
||||
- /* This class is public so that it can be instantiated by the Android runtime. */
|
||||
- @Override
|
||||
- protected String getGCMIntentServiceClassName(Context context) {
|
||||
- return MultiplexingGcmListener.class.getName();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
* Convenience base class for client implementations. It provides base classes for a broadcast
|
||||
* receiver and an intent service that work together to handle events from the
|
||||
* {@code MultiplexingGcmListener} while holding a wake lock.
|
||||
@@ -261,7 +246,7 @@ public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
private static final Logger logger = AndroidLogger.forTag("MplexGcmListener");
|
||||
|
||||
// All onYYY methods work by constructing an appropriate Intent and broadcasting it.
|
||||
-
|
||||
+ /*
|
||||
@Override
|
||||
protected void onMessage(Context context, Intent intent) {
|
||||
Intent newIntent = new Intent();
|
||||
@@ -304,35 +289,7 @@ public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
protected String[] getSenderIds(Context context) {
|
||||
return readSenderIdsFromManifestOrDie(this);
|
||||
}
|
||||
-
|
||||
- /**
|
||||
- * Broadcasts {@code intent} with the action set to {@link Intents#ACTION} and the package name
|
||||
- * set to the package name of this service.
|
||||
- */
|
||||
- private void rebroadcast(Intent intent) {
|
||||
- intent.setAction(Intents.ACTION);
|
||||
- intent.setPackage(getPackageName());
|
||||
- sendBroadcast(intent);
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Registers with GCM if not already registered. Also verifies that the device supports GCM
|
||||
- * and that the manifest is correctly configured. Returns the existing registration id, if one
|
||||
- * exists, or the empty string if one does not.
|
||||
- *
|
||||
- * @throws UnsupportedOperationException if the device does not have all GCM dependencies
|
||||
- * @throws IllegalStateException if the manifest is not correctly configured
|
||||
- */
|
||||
- public static String initializeGcm(Context context) {
|
||||
- AndroidChannelPreferences.setGcmChannelType(context, GcmChannelType.DEFAULT);
|
||||
- GCMRegistrar.checkDevice(context);
|
||||
- GCMRegistrar.checkManifest(context);
|
||||
- final String regId = GCMRegistrar.getRegistrationId(context);
|
||||
- if (regId.isEmpty()) {
|
||||
- GCMRegistrar.register(context, readSenderIdsFromManifestOrDie(context));
|
||||
- }
|
||||
- return regId;
|
||||
- }
|
||||
+ */
|
||||
|
||||
/**
|
||||
* Returns the GCM sender ids from {@link #GCM_SENDER_IDS_METADATA_KEY} or throws a
|
||||
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java
|
||||
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java
|
||||
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java
|
||||
@@ -48,16 +48,12 @@ public class AndroidNetworkChannel implements TestableNetworkChannel {
|
||||
Intent intent = ProtocolIntents.newOutboundMessageIntent(outgoingMessage);
|
||||
|
||||
// Select the sender service to use for upstream message.
|
||||
- if (AndroidChannelPreferences.getGcmChannelType(context) == GcmChannelType.GCM_UPSTREAM){
|
||||
- String upstreamServiceClass = new AndroidTiclManifest(context).getGcmUpstreamServiceClass();
|
||||
- if (upstreamServiceClass == null || upstreamServiceClass.isEmpty()) {
|
||||
- logger.warning("GcmUpstreamSenderService class not found.");
|
||||
- return;
|
||||
- }
|
||||
- intent.setClassName(context, upstreamServiceClass);
|
||||
- } else {
|
||||
- intent.setClassName(context, AndroidMessageSenderService.class.getName());
|
||||
- }
|
||||
+ String upstreamServiceClass = new AndroidTiclManifest(context).getGcmUpstreamServiceClass();
|
||||
+ if (upstreamServiceClass == null || upstreamServiceClass.isEmpty()) {
|
||||
+ logger.warning("GcmUpstreamSenderService class not found.");
|
||||
+ return;
|
||||
+ }
|
||||
+ intent.setClassName(context, upstreamServiceClass);
|
||||
try {
|
||||
context.startService(intent);
|
||||
} catch (IllegalStateException exception) {
|
||||
@@ -77,6 +73,6 @@ public class AndroidNetworkChannel implements TestableNetworkChannel {
|
||||
|
||||
@Override
|
||||
public NetworkEndpointId getNetworkIdForTest() {
|
||||
- return AndroidMessageSenderService.getNetworkEndpointId(context, resources.getLogger());
|
||||
+ return null;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:06:15 +0200
|
||||
Subject: kill Auth
|
||||
|
||||
---
|
||||
.../org/chromium/chrome/browser/signin/SigninHelper.java | 6 ++----
|
||||
.../org/chromium/components/signin/AccountIdProvider.java | 9 +--------
|
||||
.../components/signin/SystemAccountManagerDelegate.java | 15 +++++++++------
|
||||
3 files changed, 12 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
|
||||
@@ -9,10 +9,6 @@ import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
|
||||
-import com.google.android.gms.auth.AccountChangeEvent;
|
||||
-import com.google.android.gms.auth.GoogleAuthException;
|
||||
-import com.google.android.gms.auth.GoogleAuthUtil;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
@@ -71,6 +67,7 @@ public class SigninHelper {
|
||||
@Override
|
||||
public List<String> getAccountChangeEvents(
|
||||
Context context, int index, String accountName) {
|
||||
+ /*
|
||||
try {
|
||||
List<AccountChangeEvent> list = GoogleAuthUtil.getAccountChangeEvents(
|
||||
context, index, accountName);
|
||||
@@ -88,6 +85,7 @@ public class SigninHelper {
|
||||
} catch (GoogleAuthException e) {
|
||||
Log.w(TAG, "Failed to get change events", e);
|
||||
}
|
||||
+ */
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
}
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
package org.chromium.components.signin;
|
||||
|
||||
-import com.google.android.gms.auth.GoogleAuthException;
|
||||
-import com.google.android.gms.auth.GoogleAuthUtil;
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.GoogleApiAvailability;
|
||||
|
||||
@@ -40,12 +38,7 @@ public class AccountIdProvider {
|
||||
* @param accountName The email address of a Google account.
|
||||
*/
|
||||
public String getAccountId(String accountName) {
|
||||
- try {
|
||||
- return GoogleAuthUtil.getAccountId(ContextUtils.getApplicationContext(), accountName);
|
||||
- } catch (IOException | GoogleAuthException ex) {
|
||||
- Log.e("cr.AccountIdProvider", "AccountIdProvider.getAccountId", ex);
|
||||
- return null;
|
||||
- }
|
||||
+ return null;
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
@@ -23,9 +23,6 @@ import android.os.PatternMatcher;
|
||||
import android.os.Process;
|
||||
import android.os.SystemClock;
|
||||
|
||||
-import com.google.android.gms.auth.GoogleAuthException;
|
||||
-import com.google.android.gms.auth.GoogleAuthUtil;
|
||||
-import com.google.android.gms.auth.GooglePlayServicesAvailabilityException;
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.GoogleApiAvailability;
|
||||
|
||||
@@ -116,9 +113,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
// so don't report any accounts if Google Play Services are out of date.
|
||||
checkCanUseGooglePlayServices();
|
||||
|
||||
- if (!hasGetAccountsPermission()) {
|
||||
- return new Account[] {};
|
||||
- }
|
||||
+ return new Account[] {};
|
||||
+
|
||||
+ /*
|
||||
long now = SystemClock.elapsedRealtime();
|
||||
Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
|
||||
long elapsed = SystemClock.elapsedRealtime() - now;
|
||||
@@ -128,12 +125,15 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
"Signin.AndroidGetAccountsTimeUiThread_AccountManager", elapsed);
|
||||
}
|
||||
return accounts;
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthToken(Account account, String authTokenScope) throws AuthException {
|
||||
assert !ThreadUtils.runningOnUiThread();
|
||||
assert AccountManagerFacade.GOOGLE_ACCOUNT_TYPE.equals(account.type);
|
||||
+ return null;
|
||||
+ /*
|
||||
try {
|
||||
return GoogleAuthUtil.getTokenWithNotification(
|
||||
ContextUtils.getApplicationContext(), account, authTokenScope, null);
|
||||
@@ -145,10 +145,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
} catch (IOException ex) {
|
||||
throw new AuthException(AuthException.TRANSIENT, ex);
|
||||
}
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateAuthToken(String authToken) throws AuthException {
|
||||
+ /*
|
||||
try {
|
||||
GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken);
|
||||
} catch (GooglePlayServicesAvailabilityException ex) {
|
||||
@@ -158,6 +160,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
} catch (IOException ex) {
|
||||
throw new AuthException(AuthException.TRANSIENT, ex);
|
||||
}
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,329 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:13:38 +0200
|
||||
Subject: kill remaining Play Services checks
|
||||
|
||||
---
|
||||
.../chromium/chrome/browser/ChromeVersionInfo.java | 10 +-----
|
||||
.../browser/externalauth/ExternalAuthUtils.java | 41 ++--------------------
|
||||
.../externalauth/UserRecoverableErrorHandler.java | 10 ------
|
||||
.../chrome/browser/omaha/UpdateMenuItemHelper.java | 10 +-----
|
||||
chrome/android/java_sources.gni | 3 --
|
||||
.../components/signin/AccountIdProvider.java | 10 +-----
|
||||
.../signin/GmsAvailabilityException.java | 4 +--
|
||||
.../signin/SystemAccountManagerDelegate.java | 18 ++--------
|
||||
.../shape_detection/FaceDetectionProviderImpl.java | 8 +----
|
||||
9 files changed, 11 insertions(+), 103 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
|
||||
@@ -7,8 +7,6 @@ package org.chromium.chrome.browser;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
|
||||
@@ -88,7 +86,7 @@ public class ChromeVersionInfo {
|
||||
public static String getGmsInfo() {
|
||||
Context context = ContextUtils.getApplicationContext();
|
||||
|
||||
- final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
|
||||
+ final long sdkVersion = 0L;
|
||||
final long installedGmsVersion = getPlayServicesApkVersionNumber(context);
|
||||
|
||||
final String accessType;
|
||||
@@ -105,12 +103,6 @@ public class ChromeVersionInfo {
|
||||
}
|
||||
|
||||
private static long getPlayServicesApkVersionNumber(Context context) {
|
||||
- try {
|
||||
- return context.getPackageManager()
|
||||
- .getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
|
||||
- .versionCode;
|
||||
- } catch (PackageManager.NameNotFoundException e) {
|
||||
return 0;
|
||||
- }
|
||||
}
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
|
||||
@@ -15,9 +15,6 @@ import android.os.SystemClock;
|
||||
import android.support.annotation.WorkerThread;
|
||||
import android.text.TextUtils;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
@@ -164,12 +161,7 @@ public class ExternalAuthUtils {
|
||||
* when it is updating.
|
||||
*/
|
||||
public boolean isGooglePlayServicesMissing(final Context context) {
|
||||
- final int resultCode = checkGooglePlayServicesAvailable(context);
|
||||
- if (resultCode == ConnectionResult.SERVICE_MISSING
|
||||
- || resultCode == ConnectionResult.SERVICE_INVALID) {
|
||||
return true;
|
||||
- }
|
||||
- return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,23 +176,6 @@ public class ExternalAuthUtils {
|
||||
* @return true if and only if Google Play Services can be used
|
||||
*/
|
||||
public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
|
||||
- Context context = ContextUtils.getApplicationContext();
|
||||
- final int resultCode = checkGooglePlayServicesAvailable(context);
|
||||
- recordConnectionResult(resultCode);
|
||||
- if (resultCode == ConnectionResult.SUCCESS) {
|
||||
- return true;
|
||||
- }
|
||||
- // resultCode is some kind of error.
|
||||
- Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
|
||||
- if (isUserRecoverableError(resultCode)) {
|
||||
- Runnable errorHandlerTask = new Runnable() {
|
||||
- @Override
|
||||
- public void run() {
|
||||
- errorHandler.handleError(context, resultCode);
|
||||
- }
|
||||
- };
|
||||
- ThreadUtils.runOnUiThread(errorHandlerTask);
|
||||
- }
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -262,17 +237,7 @@ public class ExternalAuthUtils {
|
||||
* @return The code produced by calling the external code
|
||||
*/
|
||||
protected int checkGooglePlayServicesAvailable(final Context context) {
|
||||
- // Temporarily allowing disk access. TODO: Fix. See http://crbug.com/577190
|
||||
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
|
||||
- try {
|
||||
- long time = SystemClock.elapsedRealtime();
|
||||
- int isAvailable =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
|
||||
- mRegistrationTimeHistogramSample.record(SystemClock.elapsedRealtime() - time);
|
||||
- return isAvailable;
|
||||
- } finally {
|
||||
- StrictMode.setThreadPolicy(oldPolicy);
|
||||
- }
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -283,7 +248,7 @@ public class ExternalAuthUtils {
|
||||
* @return true If the code represents a user-recoverable error
|
||||
*/
|
||||
protected boolean isUserRecoverableError(final int errorCode) {
|
||||
- return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -293,6 +258,6 @@ public class ExternalAuthUtils {
|
||||
* @return a textual description of the error code
|
||||
*/
|
||||
protected String describeError(final int errorCode) {
|
||||
- return GoogleApiAvailability.getInstance().getErrorString(errorCode);
|
||||
+ return "";
|
||||
}
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
|
||||
@@ -9,8 +9,6 @@ import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ThreadUtils;
|
||||
import org.chromium.base.metrics.CachedMetrics.ActionEvent;
|
||||
import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
|
||||
@@ -113,7 +111,6 @@ public abstract class UserRecoverableErrorHandler {
|
||||
.record(ERROR_HANDLER_ACTION_IGNORED_AS_REDUNDANT);
|
||||
return;
|
||||
}
|
||||
- GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
|
||||
sErrorHandlerActionHistogramSample.record(ERROR_HANDLER_ACTION_SYSTEM_NOTIFICATION);
|
||||
}
|
||||
}
|
||||
@@ -206,13 +203,6 @@ public abstract class UserRecoverableErrorHandler {
|
||||
if (mErrorCode != errorCode) {
|
||||
cancelDialog();
|
||||
}
|
||||
- if (mDialog == null) {
|
||||
- mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
|
||||
- mActivity, errorCode, NO_RESPONSE_REQUIRED);
|
||||
- mErrorCode = errorCode;
|
||||
-
|
||||
- DialogUserActionRecorder.createAndAttachToDialog(mDialog);
|
||||
- }
|
||||
// This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
|
||||
if (mDialog != null && !mDialog.isShowing()) {
|
||||
mDialog.setCancelable(mCancelable);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
|
||||
@@ -22,8 +22,6 @@ import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
|
||||
-import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||
-
|
||||
import org.chromium.base.CommandLine;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
@@ -161,13 +159,7 @@ public class UpdateMenuItemHelper {
|
||||
}
|
||||
|
||||
private static boolean isGooglePlayStoreAvailable(Context context) {
|
||||
- try {
|
||||
- context.getPackageManager().getPackageInfo(
|
||||
- GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
|
||||
- } catch (PackageManager.NameNotFoundException e) {
|
||||
- return false;
|
||||
- }
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
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
|
||||
@@ -540,10 +540,7 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java",
|
||||
"java/src/org/chromium/chrome/browser/fullscreen/FullscreenOptions.java",
|
||||
"java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClient.java",
|
||||
- "java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java",
|
||||
"java/src/org/chromium/chrome/browser/gcore/ConnectedTask.java",
|
||||
- "java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java",
|
||||
- "java/src/org/chromium/chrome/browser/gcore/LifecycleHook.java",
|
||||
"java/src/org/chromium/chrome/browser/gsa/ContextReporter.java",
|
||||
"java/src/org/chromium/chrome/browser/gsa/GSAAccountChangeListener.java",
|
||||
"java/src/org/chromium/chrome/browser/gsa/GSAContextDisplaySelection.java",
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
@@ -4,9 +4,6 @@
|
||||
|
||||
package org.chromium.components.signin;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.StrictModeContext;
|
||||
@@ -47,12 +44,7 @@ public class AccountIdProvider {
|
||||
* Google Play services is available.
|
||||
*/
|
||||
public boolean canBeUsed() {
|
||||
- // TODO(http://crbug.com/577190): Remove StrictMode override.
|
||||
- try (StrictModeContext unused = StrictModeContext.allowDiskWrites()) {
|
||||
- int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext());
|
||||
- return resultCode == ConnectionResult.SUCCESS;
|
||||
- }
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
package org.chromium.components.signin;
|
||||
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
/**
|
||||
* This class encapsulates return code if GMSCore package is not available.
|
||||
*/
|
||||
@@ -27,6 +25,6 @@ public class GmsAvailabilityException extends AccountManagerDelegateException {
|
||||
}
|
||||
|
||||
public boolean isUserResolvableError() {
|
||||
- return GoogleApiAvailability.getInstance().isUserResolvableError(mResultCode);
|
||||
+ return false;
|
||||
}
|
||||
}
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
@@ -23,9 +23,6 @@ import android.os.PatternMatcher;
|
||||
import android.os.Process;
|
||||
import android.os.SystemClock;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ApiCompatibilityUtils;
|
||||
import org.chromium.base.Callback;
|
||||
import org.chromium.base.ContextUtils;
|
||||
@@ -82,17 +79,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
}
|
||||
|
||||
protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException {
|
||||
- Context context = ContextUtils.getApplicationContext();
|
||||
- final int resultCode =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
|
||||
- if (resultCode == ConnectionResult.SUCCESS) {
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- throw new GmsAvailabilityException(
|
||||
- String.format("Can't use Google Play Services: %s",
|
||||
- GoogleApiAvailability.getInstance().getErrorString(resultCode)),
|
||||
- resultCode);
|
||||
+ throw new GmsAvailabilityException("Can't use Google Play Services: CFOSS",0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -207,8 +194,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
callback.onResult(null);
|
||||
}
|
||||
};
|
||||
- mAccountManager.addAccount(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, null, null, null, null,
|
||||
+ /*mAccountManager.addAccount(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, null, null, null, null,
|
||||
accountManagerCallback, null);
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
|
||||
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
|
||||
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
|
||||
@@ -4,9 +4,6 @@
|
||||
|
||||
package org.chromium.shape_detection;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.mojo.bindings.InterfaceRequest;
|
||||
import org.chromium.mojo.system.MojoException;
|
||||
@@ -24,10 +21,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
|
||||
@Override
|
||||
public void createFaceDetection(
|
||||
InterfaceRequest<FaceDetection> request, FaceDetectorOptions options) {
|
||||
- final boolean isGmsCoreSupported =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext())
|
||||
- == ConnectionResult.SUCCESS;
|
||||
+ final boolean isGmsCoreSupported = false;
|
||||
|
||||
if (isGmsCoreSupported) {
|
||||
//FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:16:07 +0200
|
||||
Subject: kill TOS and metrics opt-out
|
||||
|
||||
---
|
||||
chrome/android/java/res/layout/fre_tosanduma.xml | 3 ++-
|
||||
.../src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java | 2 +-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
|
||||
--- a/chrome/android/java/res/layout/fre_tosanduma.xml
|
||||
+++ b/chrome/android/java/res/layout/fre_tosanduma.xml
|
||||
@@ -62,7 +62,8 @@
|
||||
android:layout_marginBottom="@dimen/fre_vertical_spacing"
|
||||
android:gravity="center"
|
||||
android:lineSpacingMultiplier="1.4"
|
||||
- android:textAppearance="@style/BlackBodyDefault" />
|
||||
+ android:textAppearance="@style/BlackBodyDefault"
|
||||
+ android:visibility="gone" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/send_report_checkbox"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
|
||||
@@ -36,7 +36,7 @@ public abstract class FirstRunActivityBase extends AsyncInitializationActivity {
|
||||
public static final String EXTRA_FIRST_RUN_ACTIVITY_RESULT = "Extra.FreActivityResult";
|
||||
public static final String EXTRA_FIRST_RUN_COMPLETE = "Extra.FreComplete";
|
||||
|
||||
- public static final boolean DEFAULT_METRICS_AND_CRASH_REPORTING = true;
|
||||
+ public static final boolean DEFAULT_METRICS_AND_CRASH_REPORTING = false;
|
||||
|
||||
private boolean mNativeInitialized;
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user