Compare commits
123
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
628ddf9b60 | ||
|
|
8c3fcd08de | ||
|
|
375ac9bf8b | ||
|
|
e1b9f9d68a | ||
|
|
7f7fc80c7a | ||
|
|
aa96e7ce43 | ||
|
|
5c9d69ebcc | ||
|
|
7469dbed21 | ||
|
|
bc1f0b79f5 | ||
|
|
4c2225259f | ||
|
|
2ba0013cc6 | ||
|
|
b92ce6a3a2 | ||
|
|
de80f36496 | ||
|
|
ae8dce366b | ||
|
|
750cafb50c | ||
|
|
5cd90e8326 | ||
|
|
664cd20825 | ||
|
|
aeb31bb4c5 | ||
|
|
87eb08c088 | ||
|
|
e64cbbd005 | ||
|
|
4829eef707 | ||
|
|
32978e4658 | ||
|
|
f109246e47 | ||
|
|
b1bc96bbd9 | ||
|
|
e3176b1868 | ||
|
|
22dae5bff8 | ||
|
|
f21bb8a1d4 | ||
|
|
3624b67e98 | ||
|
|
eb4cbebe2a | ||
|
|
3de200030f | ||
|
|
b35c5b2f0d | ||
|
|
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 | ||
|
|
4fc10e560b | ||
|
|
01ecc5d52f | ||
|
|
7edcab0232 | ||
|
|
b4ada5bd99 | ||
|
|
cfa7aca62a | ||
|
|
9eca1ff0b3 | ||
|
|
aac51e0a5a | ||
|
|
ea53ed1889 | ||
|
|
780bb60137 | ||
|
|
0fd859a0a6 | ||
|
|
03645239a9 | ||
|
|
ec5be6c048 | ||
|
|
67651fbd75 | ||
|
|
6b758bfe0c | ||
|
|
49ae827092 | ||
|
|
01ad976b53 | ||
|
|
38a672a1ca | ||
|
|
a723e0e77d | ||
|
|
3abb1ad2a3 | ||
|
|
d7e8ac9d86 | ||
|
|
284c419d01 | ||
|
|
2dca759091 | ||
|
|
11cebfadc5 | ||
|
|
e4e56ed69c | ||
|
|
7dcc27cb5e | ||
|
|
8b494263c3 | ||
|
|
4029e8843d | ||
|
|
85a9737c16 | ||
|
|
247247a8ae | ||
|
|
4bfb168982 | ||
|
|
1652ef39b1 | ||
|
|
190ee08724 | ||
|
|
367a2521a0 | ||
|
|
6b1cbc612a | ||
|
|
d0f89298b8 | ||
|
|
9adbcaf262 | ||
|
|
ef067cd35d | ||
|
|
e08ef39d4e | ||
|
|
33f1df4d26 | ||
|
|
29e6c35657 | ||
|
|
148f920a06 | ||
|
|
c5e38e8077 | ||
|
|
94a0637fb1 | ||
|
|
db00f3e4f4 | ||
|
|
e664528479 | ||
|
|
83a16596e6 | ||
|
|
7c6a4374f5 | ||
|
|
5b2034ff45 | ||
|
|
6807e7b388 | ||
|
|
71b5dc1b0b | ||
|
|
2bda9e45f6 | ||
|
|
530626fd21 | ||
|
|
4e8b70cb64 | ||
|
|
f4b6592dbc |
@@ -0,0 +1,37 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a Bromite bug report
|
||||
|
||||
---
|
||||
|
||||
**Bromite version**
|
||||
|
||||
Version: `69.0...`
|
||||
Arch: `arm` or `arm64` or `x86`
|
||||
Android version: ... (example: `lollipop`)
|
||||
|
||||
**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`
|
||||
If yes then report it upstream on [Chromium issue tracker](https://bugs.chromium.org/p/chromium/issues/list) and do not forget to read [Chromium project bug reporting guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines) first; all Chromium issues reported here will be closed as `invalid`.
|
||||
|
||||
**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.
|
||||
+220
-7
@@ -1,15 +1,232 @@
|
||||
# 70.0.3538.102
|
||||
* do not grant notifications to default search engine
|
||||
* remove all promos from bookmark manager page
|
||||
* re-introduced various patches to eradicate binary blob dependencies (only Cast left)
|
||||
|
||||
# 70.0.3538.95
|
||||
* fix crash on bookmark edit activity (fixes https://github.com/bromite/bromite/issues/172)
|
||||
* fix slow chrome://flags (fixes https://github.com/bromite/bromite/issues/173)
|
||||
* enable TLS 1.3 final support by default (fixes https://github.com/bromite/bromite/issues/174)
|
||||
* dropped some patches related to GCM/GMS on suspicion of being related to random crashes
|
||||
|
||||
# 70.0.3538.87
|
||||
* enable history requirement of user gesture (fixes https://github.com/bromite/bromite/issues/171)
|
||||
* enable serialization of scroll position changes while loading (fixes https://github.com/bromite/bromite/issues/171)
|
||||
* remove passwords keyboard accessory option (fixes https://github.com/bromite/bromite/issues/171)
|
||||
* some improvements to bookmark import/export interaction
|
||||
* add flag to disable orientation API, disabled by default
|
||||
* disable device motion API by default (fixes https://github.com/bromite/bromite/issues/171)
|
||||
|
||||
# 70.0.3538.83
|
||||
* fix keep session cookies option showing on all site settings views
|
||||
* fix blank site settings entry showing (fixes https://github.com/bromite/bromite/issues/166)
|
||||
* offer builtin autocomplete for chrome://flags quick access
|
||||
|
||||
# 70.0.3538.80
|
||||
* add flag to disable video resume functionality, allowing to not pause video playback on tab switch (fixes https://github.com/bromite/bromite/issues/108)
|
||||
* prevent "are you there" prompts from appearing when playing videos
|
||||
* completely disable update scheduler checks to fix a related crash
|
||||
|
||||
# 70.0.3538.77
|
||||
* disable generic sensor APIs by default (fixes https://github.com/bromite/bromite/issues/160)
|
||||
* introduce flag to disable device motion API (fixes https://github.com/bromite/bromite/issues/160)
|
||||
* add Quad9 as a DNS-over-HTTPS (DoH) option (fixes https://github.com/bromite/bromite/issues/140)
|
||||
|
||||
# 70.0.3538.71
|
||||
* fix bug with canvas fingerprinting (fixes https://github.com/bromite/bromite/issues/154)
|
||||
|
||||
# 70.0.3538.67
|
||||
* re-enabled DNS-over-HTTPS (DoH) flag (fixes https://github.com/bromite/bromite/issues/139)
|
||||
* dropped GCM removal patch
|
||||
* disable kSigninAllowedOnNextStartup by default
|
||||
* permanently disable query-in-omnibox (fixes https://github.com/bromite/bromite/issues/143)
|
||||
|
||||
# 69.0.3497.113
|
||||
* disabled DNS-over-HTTPS (DoH) flag, not working since 69.0.3497.73 (see https://github.com/bromite/bromite/issues/139)
|
||||
|
||||
# 69.0.3497.109
|
||||
|
||||
# 69.0.3497.102
|
||||
* ungoogled-chromium: disable network time tracker
|
||||
* ungoogled-chromium: remove third-party/analytics
|
||||
* ungoogled-chromium: always use local Devtools instead of remote files
|
||||
* build without safebrowsing
|
||||
* drop "Hide NTP tiles" flag
|
||||
|
||||
# 69.0.3497.91
|
||||
* fixed crash when accessing site settings media preferences (fixes https://github.com/bromite/bromite/issues/122)
|
||||
|
||||
# 69.0.3497.73
|
||||
* enabled WebRTC
|
||||
* drop clear HTTP cache patch
|
||||
|
||||
# 68.0.3440.126
|
||||
* add option to disallow custom tab intents (fixes https://github.com/bromite/bromite/issues/117)
|
||||
* add option to keep local data until browser exit (fixes https://github.com/bromite/bromite/issues/56)
|
||||
* remember preference for tabs persistence option
|
||||
* extend anti-AMP to all search results
|
||||
|
||||
# 68.0.3440.121
|
||||
* add option to not persist tabs across sessions (fixes https://github.com/bromite/bromite/issues/106)
|
||||
* always incognito mode (fixes https://github.com/bromite/bromite/issues/18)
|
||||
* disable domain reliability (ungoogled-chromium)
|
||||
* more efficient adblock interception by using proper handler
|
||||
* fix log message about default maximum connections
|
||||
* improvement for exit menu patch
|
||||
|
||||
# 68.0.3440.110
|
||||
* add import action to Bookmarks activity page
|
||||
* use different user-agent version based on Android OS version
|
||||
|
||||
# 68.0.3440.90
|
||||
* reduce rects randomisation by factor of 100
|
||||
* use a fixed user-agent (fixes https://github.com/bromite/bromite/issues/103)
|
||||
|
||||
# 68.0.3440.87
|
||||
* add export action 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)
|
||||
|
||||
# 67.0.3396.67
|
||||
|
||||
# 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)
|
||||
|
||||
# 66.0.3359.200
|
||||
|
||||
# 66.0.3359.196
|
||||
|
||||
# 66.0.3359.188
|
||||
* increase max (persistent) connections per server from 6 to 15
|
||||
* preliminary work for better canvas fingerprinting mitigations
|
||||
|
||||
# 66.0.3359.161
|
||||
|
||||
# 66.0.3359.148
|
||||
* disable permanently all custom tab intents (https://github.com/bromite/bromite/issues/17)
|
||||
* 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)
|
||||
|
||||
# 65.0.3325.218
|
||||
* always set WideVine version
|
||||
|
||||
# 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
|
||||
|
||||
# 65.0.3325.198
|
||||
* re-landed support for third-party AdBlock filters
|
||||
* completed patches cleanup
|
||||
|
||||
# 65.0.3325.190
|
||||
* block some Canvas and AudioBuffer APIs mostly used for fingerprinting (https://github.com/bromite/bromite/issues/15)
|
||||
|
||||
# 65.0.3325.176
|
||||
* block plugins enumeration API
|
||||
* block battery API
|
||||
* remove device name and build id from User Agent
|
||||
* added Qwant search engine
|
||||
* disable non-working 3rd-party filters support
|
||||
|
||||
# 64.0.3282.204
|
||||
* use H264 NEON optimizations also for arm64
|
||||
* fix build of Stable channel
|
||||
* started building vanilla Chromium releases as well
|
||||
|
||||
# 64.0.3282.193
|
||||
* disable reporting
|
||||
|
||||
# 64.0.3282.182
|
||||
* add support for domain-based adblock filters
|
||||
* optimized memory allocation for filters
|
||||
|
||||
# 64.0.3282.168
|
||||
* extension: allow playing youtube/vimeo videos in background (https://github.com/bromite/bromite/issues/16)
|
||||
* never fetch most popular sites for new tab initialization, disable logo on new tab page
|
||||
* some improvements to adblock filters
|
||||
* disabled signin (ungoogled-chromium) (https://github.com/bromite/bromite/issues/31 and https://github.com/bromite/bromite/issues/11)
|
||||
* disabled webRTC and crash uploaders (ungoogled-chromium)
|
||||
* disabled translate (ungoogled-chromium)
|
||||
* disabled Gaia & GCM (ungoogled-chromium)
|
||||
* added clear HTTP cache menu item (ungoogled-chromium)
|
||||
* disabled Google host detection (ungoogled-chromium)
|
||||
* disabled profile avatar downloading (ungoogled-chromium)
|
||||
* disabled intranet redirect detector (ungoogled-chromium)
|
||||
* disabled plugin untraceable URLs (ungoogled-chromium)
|
||||
|
||||
# 64.0.3282.149
|
||||
|
||||
# 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)
|
||||
@@ -22,23 +239,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
|
||||
|
||||
[![GitHub release][version-image]][version-url] [![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" />
|
||||
|
||||
@@ -8,7 +8,12 @@ Bromite is [Chromium](https://www.chromium.org/Home) plus some patches for ad bl
|
||||
|
||||
Bromite is only available for Android v4.1 and above.
|
||||
|
||||
See [open issues](https://github.com/bromite/bromite/issues) for the development in progress.
|
||||
<img src="https://www.bromite.org/bromite_bromite_gh_downloads.svg" alt="downloads on Github" title="downloads on Github" />
|
||||
|
||||
# Goals
|
||||
|
||||
Bromite aims at providing a no-clutter browsing experience without privacy-invasive features and with the addition of a fast ad-blocking engine.
|
||||
Minimal UI changes are applied to help curbing the idea of "browser as an advertisement platform".
|
||||
|
||||
# Donate
|
||||
|
||||
@@ -18,46 +23,126 @@ Support development with a donation of 3 EUR: [](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`
|
||||
|
||||
# Features
|
||||
|
||||
* adblocking (currently baked-in, no configuration options available)
|
||||
* remove click-tracking and AMP from Google search results
|
||||
* [StartPage](https://startpage.com/) search engine (select it from search engines under settings)
|
||||
* [DuckDuckGo](https://duckduckgo.com/) search engine (select it from search engines under settings)
|
||||
* privacy enhancement patches from Inox patchset, ungoogled-chromium and Iridium projects
|
||||
* all codecs included (proprietary, open H.264 etc.)
|
||||
* built with official Chrome optimizations
|
||||
|
||||
# F.A.Q.
|
||||
|
||||
## Does Google Sync work?
|
||||
## Does Google Sync/Translate/Data saver work?
|
||||
No.
|
||||
This is not a limitation of Bromite but of all Chromium-based projects in general, as general public is not allowed to use Google's APIs for free unless when using Chrome.
|
||||
|
||||
Additionally, these features would not be privacy-friendly.
|
||||
|
||||
## Does Bromite require root?
|
||||
No.
|
||||
|
||||
## Is Bromite de-googled?
|
||||
|
||||
Yes, although this has not been verified (and hardly can be) under all situations; if you were to find connections to cloud-based services please report them via the issue tracker.
|
||||
Projects which follow a strict approach on this are [Iridium](https://iridiumbrowser.de/) and [Inox patchset](https://github.com/gcarq/inox-patchset).
|
||||
|
||||
## 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.
|
||||
|
||||
## 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.
|
||||
Bromite is about privacy and adblocking.
|
||||
|
||||
## Can you add HTTPS everywhere?
|
||||
No.
|
||||
We cannot add add-ons to Bromite (merely some features).
|
||||
|
||||
## Is Bromite on Play Store?
|
||||
No, and this is unlikely to change. Many limitations apply for submissions there, including which ads are allowed to be blocked.
|
||||
|
||||
Bromite favors user freedom in software choice: the device is yours so you get to choose which software to run on it, end of the story.
|
||||
|
||||
## Is Bromite on F-Droid?
|
||||
It is not on the official F-Droid repository and there are no (more) plans to submit it.
|
||||
|
||||
You can use F-Droid client to install and receive updates via [the official Bromite F-Droid repository](https://www.bromite.org/fdroid).
|
||||
|
||||
## Does Bromite support WebRTC?
|
||||
Yes, since version 69. While the desktop version of Chromium has an option to disable it (video/audio site settings), the Android version cannot.
|
||||
|
||||
# Features
|
||||
|
||||
* baked-in adblock engine with filters from EasyList, EasyPrivacy and others
|
||||
* remove click-tracking and AMP from search results
|
||||
* DNS-over-HTTPS support via Google, Cloudflare and Quad9 servers
|
||||
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines
|
||||
* chrome flags to disable custom intents and clear session on exit
|
||||
* always-incognito mode
|
||||
* completely removed safe browsing and other privacy-unfriendly features
|
||||
* anti-fingerprinting mitigations for canvas, audio, client rects, webGL and sensor APIs
|
||||
* use fixed User-Agent to conceal real model and browser version
|
||||
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
|
||||
|
||||
## Features not related to privacy
|
||||
* import/export bookmarks
|
||||
* allow playing videos in background tabs and disable pause on switching tabs
|
||||
* all codecs included (proprietary, open H.264 etc.)
|
||||
* 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
|
||||
|
||||
A build server goes through the very lengthy build operation and then new versions are available in this project 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 (or none otherwise).
|
||||
|
||||
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 SDK versions 16 and 21; [Bromite SystemWebView](https://www.bromite.org/system_web_view) is provided as well (SDK21+).
|
||||
For every Bromite build you can always find a matching [vanilla Chromium](https://www.bromite.org/chromium) build which is used for example to verify which issues are specific to Bromite or not.
|
||||
|
||||
All official releases are also available through the [official third-party F-Droid repository](https://www.bromite.org/fdroid).
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
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
|
||||
|
||||
The [bromite main repository](https://github.com/bromite/bromite) contains tags for each corresponding Chromium release (see https://chromium.googlesource.com/chromium/src.git).
|
||||
The [Bromite main repository](https://github.com/bromite/bromite) contains tags for each corresponding Chromium release (see https://chromium.googlesource.com/chromium/src.git).
|
||||
|
||||
Please refer to [official Chromium build documentation](https://www.chromium.org/developers/how-tos/get-the-code) to get started on how to build Chromium; if you can build Chromium for Android, you can build Bromite.
|
||||
|
||||
# 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 compilation of original adblock patch
|
||||
* [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
|
||||
* [Vadim Pleshkov](http://vadimpleshkov.me/) for Bromite's logo
|
||||
|
||||
# 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-----
|
||||
@@ -1,27 +0,0 @@
|
||||
|
||||
## is_official_build enables some optimizations
|
||||
target_os="android" symbol_level=1 remove_webcore_debug_symbols=true is_debug=false is_official_build=true use_errorprone_java_compiler=false
|
||||
|
||||
## codec settings
|
||||
enable_ac3_eac3_audio_demuxing=true enable_hevc_demuxing=true enable_iterator_debugging=false
|
||||
enable_mse_mpeg2ts_stream_parser=true ffmpeg_branding="Chrome" proprietary_codecs=true enable_widevine=true
|
||||
use_openh264=true chrome_pgo_phase=0 full_wpo_on_official=true
|
||||
|
||||
## disable some features that don't work anymore/undesired
|
||||
enable_google_now=false
|
||||
enable_webrtc=false
|
||||
use_official_google_api_keys=false
|
||||
enable_nacl=false
|
||||
|
||||
android_channel="stable"
|
||||
|
||||
enable_resource_whitelist_generation=false
|
||||
use_sysroot=false
|
||||
|
||||
## reduce from the default of 50 since the build box has limited resources
|
||||
jumbo_file_merge_limit=30
|
||||
|
||||
## signing is deletegated to F-Droid
|
||||
#android_keystore_path="//build/android/bromite.keystore"
|
||||
#android_keystore_name = "bromitekey"
|
||||
#android_keystore_password = "bromite"
|
||||
@@ -1,63 +0,0 @@
|
||||
#!/bin/bash
|
||||
## build.sh
|
||||
##
|
||||
## @author csagan5
|
||||
##
|
||||
## Bromite build script for F-Droid
|
||||
## https://www.bromite.org/
|
||||
##
|
||||
#
|
||||
|
||||
if [ ! $# -eq 5 ]; then
|
||||
echo "Usage: build.sh release version-code arch ninja-target" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RELEASE="$1"
|
||||
VER_CODE="$2"
|
||||
ARCH="$3"
|
||||
NINJA_TARGET="$4"
|
||||
|
||||
OUTPUT="out/Release_${RELEASE}_${ARCH}"
|
||||
|
||||
set -e
|
||||
|
||||
## build= commands run in fdroiddata/build/$PKG
|
||||
|
||||
. common
|
||||
|
||||
cd ../..
|
||||
|
||||
## create output directory - preserve if exists but make sure it's a symlink within srclibs/src
|
||||
mkdir -p "$OUTPUT"
|
||||
if [ -e srclib/src/out ]; then
|
||||
unlink srclib/src/out
|
||||
fi
|
||||
ln -s "$PWD/out" srclib/src/out
|
||||
|
||||
## from base/build_time.cc
|
||||
# BUILD_DATE is exactly "Mmm DD YYYY HH:MM:SS".
|
||||
# See //build/write_build_date_header.py. "HH:MM:SS" is normally expected to
|
||||
# be "05:00:00"
|
||||
BDATE="$(date +'%b %d %Y') 05:00:00"
|
||||
|
||||
## read all arguments from file, skip comments
|
||||
GN_ARGS="$(sed 's~ *#.*$~~' $PKG/fdroid/GN_ARGS | grep -v ^$ | tr '\n' ' ')"
|
||||
|
||||
cd srclib/src
|
||||
|
||||
gn gen "--args=android_default_version_code=\"${VER_CODE}\" android_default_version_name=\"$RELEASE\" override_build_date=\"$BDATE\" target_cpu=\"$ARCH\" $GN_ARGS" "$OUTPUT"
|
||||
|
||||
## concurrency level for ninja
|
||||
CONC=$(nproc)
|
||||
let CONC+=1
|
||||
|
||||
PREFIX=""
|
||||
## detect running buildserver
|
||||
## if running locally, then reduce build process priority
|
||||
if [ ! -e $HOME/buildserverid ]; then
|
||||
PREFIX="ionice --class 3 nice --adjustment=5"
|
||||
fi
|
||||
|
||||
##NOTE: can't use exit code to identify interrupts until https://github.com/ninja-build/ninja/issues/430 is addressed
|
||||
NINJA_STATUS="%f/%t (%p) %es | " $PREFIX ninja -j$CONC -C "$OUTPUT" ${NINJA_TARGET}
|
||||
@@ -1,12 +0,0 @@
|
||||
###
|
||||
### common include script for sync and build
|
||||
###
|
||||
|
||||
## rename main repo & restore it on exit
|
||||
mv ../../srclib/chromium ../../srclib/src
|
||||
trap "mv '$PWD/../../srclib/src' '$PWD/../../srclib/chromium'" EXIT
|
||||
|
||||
export DEPOT_TOOLS="$PWD/../../srclib/DepotTools"
|
||||
export PATH="$DEPOT_TOOLS:$PATH"
|
||||
|
||||
PKG=org.bromite.bromite
|
||||
@@ -1,738 +0,0 @@
|
||||
#!/bin/bash
|
||||
## gclient-prepare.sh
|
||||
##
|
||||
## @author csagan5
|
||||
##
|
||||
## Bromite srclibs setup script for F-Droid build
|
||||
## this script is auto-generated based on gclient_entries
|
||||
## DO NOT edit manually
|
||||
##
|
||||
## https://www.bromite.org/
|
||||
##
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
## setup chromium-py into src/third_party/webdriver/pylib
|
||||
mkdir -p "src/third_party/webdriver"
|
||||
if [ -e "src/third_party/webdriver/pylib" ]; then
|
||||
rm -rfv "src/third_party/webdriver/pylib"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-py" "src/third_party/webdriver/pylib"
|
||||
|
||||
## setup chromium-v8 into src/v8
|
||||
mkdir -p "src"
|
||||
if [ -e "src/v8" ]; then
|
||||
rm -rfv "src/v8"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-v8" "src/v8"
|
||||
|
||||
## setup chromium-aom into src/third_party/libaom/source/libaom
|
||||
mkdir -p "src/third_party/libaom/source"
|
||||
if [ -e "src/third_party/libaom/source/libaom" ]; then
|
||||
rm -rfv "src/third_party/libaom/source/libaom"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-aom" "src/third_party/libaom/source/libaom"
|
||||
|
||||
## setup chromium-cdm into src/media/cdm/api
|
||||
mkdir -p "src/media/cdm"
|
||||
if [ -e "src/media/cdm/api" ]; then
|
||||
rm -rfv "src/media/cdm/api"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-cdm" "src/media/cdm/api"
|
||||
|
||||
## setup chromium-gyp into src/tools/gyp
|
||||
mkdir -p "src/tools"
|
||||
if [ -e "src/tools/gyp" ]; then
|
||||
rm -rfv "src/tools/gyp"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-gyp" "src/tools/gyp"
|
||||
|
||||
## setup chromium-icu into src/third_party/icu
|
||||
mkdir -p "src/third_party"
|
||||
if [ -e "src/third_party/icu" ]; then
|
||||
rm -rfv "src/third_party/icu"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-icu" "src/third_party/icu"
|
||||
|
||||
## setup chromium-lib into src/third_party/bidichecker
|
||||
if [ -e "src/third_party/bidichecker" ]; then
|
||||
rm -rfv "src/third_party/bidichecker"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-lib" "src/third_party/bidichecker"
|
||||
|
||||
## setup chromium-re2 into src/third_party/re2/src
|
||||
mkdir -p "src/third_party/re2"
|
||||
if [ -e "src/third_party/re2/src" ]; then
|
||||
rm -rfv "src/third_party/re2/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-re2" "src/third_party/re2/src"
|
||||
|
||||
## setup chromium-wds into src/third_party/wds/src
|
||||
mkdir -p "src/third_party/wds"
|
||||
if [ -e "src/third_party/wds/src" ]; then
|
||||
rm -rfv "src/third_party/wds/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-wds" "src/third_party/wds/src"
|
||||
|
||||
## setup chromium-auto into src/third_party/auto/src
|
||||
mkdir -p "src/third_party/auto"
|
||||
if [ -e "src/third_party/auto/src" ]; then
|
||||
rm -rfv "src/third_party/auto/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-auto" "src/third_party/auto/src"
|
||||
|
||||
## setup chromium-deqp into src/third_party/deqp/src
|
||||
mkdir -p "src/third_party/deqp"
|
||||
if [ -e "src/third_party/deqp/src" ]; then
|
||||
rm -rfv "src/third_party/deqp/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-deqp" "src/third_party/deqp/src"
|
||||
|
||||
## setup chromium-dist into src/third_party/dom_distiller_js/dist
|
||||
mkdir -p "src/third_party/dom_distiller_js"
|
||||
if [ -e "src/third_party/dom_distiller_js/dist" ]; then
|
||||
rm -rfv "src/third_party/dom_distiller_js/dist"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-dist" "src/third_party/dom_distiller_js/dist"
|
||||
|
||||
## setup chromium-flac into src/third_party/flac
|
||||
if [ -e "src/third_party/flac" ]; then
|
||||
rm -rfv "src/third_party/flac"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-flac" "src/third_party/flac"
|
||||
|
||||
## setup chromium-mesa into src/third_party/mesa/src
|
||||
mkdir -p "src/third_party/mesa"
|
||||
if [ -e "src/third_party/mesa/src" ]; then
|
||||
rm -rfv "src/third_party/mesa/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-mesa" "src/third_party/mesa/src"
|
||||
|
||||
## setup chromium-skia into src/third_party/skia
|
||||
if [ -e "src/third_party/skia" ]; then
|
||||
rm -rfv "src/third_party/skia"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-skia" "src/third_party/skia"
|
||||
|
||||
## setup chromium-acid3 into src/tools/page_cycler/acid3
|
||||
mkdir -p "src/tools/page_cycler"
|
||||
if [ -e "src/tools/page_cycler/acid3" ]; then
|
||||
rm -rfv "src/tools/page_cycler/acid3"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-acid3" "src/tools/page_cycler/acid3"
|
||||
|
||||
## setup chromium-angle into src/third_party/angle
|
||||
if [ -e "src/third_party/angle" ]; then
|
||||
rm -rfv "src/third_party/angle"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-angle" "src/third_party/angle"
|
||||
|
||||
## setup chromium-cld_3 into src/third_party/cld_3/src
|
||||
mkdir -p "src/third_party/cld_3"
|
||||
if [ -e "src/third_party/cld_3/src" ]; then
|
||||
rm -rfv "src/third_party/cld_3/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-cld_3" "src/third_party/cld_3/src"
|
||||
|
||||
## setup chromium-junit into src/third_party/junit/src
|
||||
mkdir -p "src/third_party/junit"
|
||||
if [ -e "src/third_party/junit/src" ]; then
|
||||
rm -rfv "src/third_party/junit/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-junit" "src/third_party/junit/src"
|
||||
|
||||
## setup chromium-webgl into src/third_party/webgl/src
|
||||
mkdir -p "src/third_party/webgl"
|
||||
if [ -e "src/third_party/webgl/src" ]; then
|
||||
rm -rfv "src/third_party/webgl/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-webgl" "src/third_party/webgl/src"
|
||||
|
||||
## setup chromium-crc32c into src/third_party/crc32c/src
|
||||
mkdir -p "src/third_party/crc32c"
|
||||
if [ -e "src/third_party/crc32c/src" ]; then
|
||||
rm -rfv "src/third_party/crc32c/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-crc32c" "src/third_party/crc32c/src"
|
||||
|
||||
## setup chromium-ffmpeg into src/third_party/ffmpeg
|
||||
if [ -e "src/third_party/ffmpeg" ]; then
|
||||
rm -rfv "src/third_party/ffmpeg"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-ffmpeg" "src/third_party/ffmpeg"
|
||||
|
||||
## setup chromium-fuzzer into src/third_party/libFuzzer/src
|
||||
mkdir -p "src/third_party/libFuzzer"
|
||||
if [ -e "src/third_party/libFuzzer/src" ]; then
|
||||
rm -rfv "src/third_party/libFuzzer/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-fuzzer" "src/third_party/libFuzzer/src"
|
||||
|
||||
## setup chromium-libcxx into src/buildtools/third_party/libc++/trunk
|
||||
mkdir -p "src/buildtools/third_party/libc++"
|
||||
if [ -e "src/buildtools/third_party/libc++/trunk" ]; then
|
||||
rm -rfv "src/buildtools/third_party/libc++/trunk"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libcxx" "src/buildtools/third_party/libc++/trunk"
|
||||
|
||||
## setup chromium-libdrm into src/third_party/libdrm/src
|
||||
mkdir -p "src/third_party/libdrm"
|
||||
if [ -e "src/third_party/libdrm/src" ]; then
|
||||
rm -rfv "src/third_party/libdrm/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libdrm" "src/third_party/libdrm/src"
|
||||
|
||||
## setup chromium-libvpx into src/third_party/libvpx/source/libvpx
|
||||
mkdir -p "src/third_party/libvpx/source"
|
||||
if [ -e "src/third_party/libvpx/source/libvpx" ]; then
|
||||
rm -rfv "src/third_party/libvpx/source/libvpx"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libvpx" "src/third_party/libvpx/source/libvpx"
|
||||
|
||||
## setup chromium-libyuv into src/third_party/libyuv
|
||||
if [ -e "src/third_party/libyuv" ]; then
|
||||
rm -rfv "src/third_party/libyuv"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libyuv" "src/third_party/libyuv"
|
||||
|
||||
## setup chromium-netty4 into src/third_party/netty4/src
|
||||
mkdir -p "src/third_party/netty4"
|
||||
if [ -e "src/third_party/netty4/src" ]; then
|
||||
rm -rfv "src/third_party/netty4/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-netty4" "src/third_party/netty4/src"
|
||||
|
||||
## setup chromium-pdfium into src/third_party/pdfium
|
||||
if [ -e "src/third_party/pdfium" ]; then
|
||||
rm -rfv "src/third_party/pdfium"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-pdfium" "src/third_party/pdfium"
|
||||
|
||||
## setup chromium-sfntly into src/third_party/sfntly/src
|
||||
mkdir -p "src/third_party/sfntly"
|
||||
if [ -e "src/third_party/sfntly/src" ]; then
|
||||
rm -rfv "src/third_party/sfntly/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-sfntly" "src/third_party/sfntly/src"
|
||||
|
||||
## setup chromium-snappy into src/third_party/snappy/src
|
||||
mkdir -p "src/third_party/snappy"
|
||||
if [ -e "src/third_party/snappy/src" ]; then
|
||||
rm -rfv "src/third_party/snappy/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-snappy" "src/third_party/snappy/src"
|
||||
|
||||
## setup chromium-webrtc into src/third_party/webrtc
|
||||
if [ -e "src/third_party/webrtc" ]; then
|
||||
rm -rfv "src/third_party/webrtc"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-webrtc" "src/third_party/webrtc"
|
||||
|
||||
## setup chromium-content into src/chrome/test/data/perf/frame_rate/content
|
||||
mkdir -p "src/chrome/test/data/perf/frame_rate"
|
||||
if [ -e "src/chrome/test/data/perf/frame_rate/content" ]; then
|
||||
rm -rfv "src/chrome/test/data/perf/frame_rate/content"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-content" "src/chrome/test/data/perf/frame_rate/content"
|
||||
|
||||
## setup chromium-glslang into src/third_party/glslang/src
|
||||
mkdir -p "src/third_party/glslang"
|
||||
if [ -e "src/third_party/glslang/src" ]; then
|
||||
rm -rfv "src/third_party/glslang/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-glslang" "src/third_party/glslang/src"
|
||||
|
||||
## setup chromium-jsoncpp into src/third_party/jsoncpp/source
|
||||
mkdir -p "src/third_party/jsoncpp"
|
||||
if [ -e "src/third_party/jsoncpp/source" ]; then
|
||||
rm -rfv "src/third_party/jsoncpp/source"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-jsoncpp" "src/third_party/jsoncpp/source"
|
||||
|
||||
## setup chromium-jsr-305 into src/third_party/jsr-305/src
|
||||
mkdir -p "src/third_party/jsr-305"
|
||||
if [ -e "src/third_party/jsr-305/src" ]; then
|
||||
rm -rfv "src/third_party/jsr-305/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-jsr-305" "src/third_party/jsr-305/src"
|
||||
|
||||
## setup chromium-leveldb into src/third_party/leveldatabase/src
|
||||
mkdir -p "src/third_party/leveldatabase"
|
||||
if [ -e "src/third_party/leveldatabase/src" ]; then
|
||||
rm -rfv "src/third_party/leveldatabase/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-leveldb" "src/third_party/leveldatabase/src"
|
||||
|
||||
## setup chromium-libsrtp into src/third_party/libsrtp
|
||||
if [ -e "src/third_party/libsrtp" ]; then
|
||||
rm -rfv "src/third_party/libsrtp"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libsrtp" "src/third_party/libsrtp"
|
||||
|
||||
## setup chromium-libsync into src/third_party/libsync/src
|
||||
mkdir -p "src/third_party/libsync"
|
||||
if [ -e "src/third_party/libsync/src" ]; then
|
||||
rm -rfv "src/third_party/libsync/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libsync" "src/third_party/libsync/src"
|
||||
|
||||
## setup chromium-libwebm into src/third_party/libwebm/source
|
||||
mkdir -p "src/third_party/libwebm"
|
||||
if [ -e "src/third_party/libwebm/source" ]; then
|
||||
rm -rfv "src/third_party/libwebm/source"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libwebm" "src/third_party/libwebm/source"
|
||||
|
||||
## setup chromium-minigbm into src/third_party/minigbm/src
|
||||
mkdir -p "src/third_party/minigbm"
|
||||
if [ -e "src/third_party/minigbm/src" ]; then
|
||||
rm -rfv "src/third_party/minigbm/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-minigbm" "src/third_party/minigbm/src"
|
||||
|
||||
## setup chromium-minizip into src/third_party/minizip/src
|
||||
mkdir -p "src/third_party/minizip"
|
||||
if [ -e "src/third_party/minizip/src" ]; then
|
||||
rm -rfv "src/third_party/minizip/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-minizip" "src/third_party/minizip/src"
|
||||
|
||||
## setup chromium-mockito into src/third_party/mockito/src
|
||||
mkdir -p "src/third_party/mockito"
|
||||
if [ -e "src/third_party/mockito/src" ]; then
|
||||
rm -rfv "src/third_party/mockito/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-mockito" "src/third_party/mockito/src"
|
||||
|
||||
## setup chromium-openmax into src/third_party/openmax_dl
|
||||
if [ -e "src/third_party/openmax_dl" ]; then
|
||||
rm -rfv "src/third_party/openmax_dl"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-openmax" "src/third_party/openmax_dl"
|
||||
|
||||
## setup chromium-shaderc into src/third_party/shaderc/src
|
||||
mkdir -p "src/third_party/shaderc"
|
||||
if [ -e "src/third_party/shaderc/src" ]; then
|
||||
rm -rfv "src/third_party/shaderc/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-shaderc" "src/third_party/shaderc/src"
|
||||
|
||||
## setup chromium-usrsctp into src/third_party/usrsctp/usrsctplib
|
||||
mkdir -p "src/third_party/usrsctp"
|
||||
if [ -e "src/third_party/usrsctp/usrsctplib" ]; then
|
||||
rm -rfv "src/third_party/usrsctp/usrsctplib"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-usrsctp" "src/third_party/usrsctp/usrsctplib"
|
||||
|
||||
## setup chromium-wayland into src/third_party/wayland/src
|
||||
mkdir -p "src/third_party/wayland"
|
||||
if [ -e "src/third_party/wayland/src" ]; then
|
||||
rm -rfv "src/third_party/wayland/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-wayland" "src/third_party/wayland/src"
|
||||
|
||||
## setup chromium-breakpad into src/third_party/breakpad/breakpad
|
||||
mkdir -p "src/third_party/breakpad"
|
||||
if [ -e "src/third_party/breakpad/breakpad" ]; then
|
||||
rm -rfv "src/third_party/breakpad/breakpad"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-breakpad" "src/third_party/breakpad/breakpad"
|
||||
|
||||
## setup chromium-catapult into src/third_party/catapult
|
||||
if [ -e "src/third_party/catapult" ]; then
|
||||
rm -rfv "src/third_party/catapult"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-catapult" "src/third_party/catapult"
|
||||
|
||||
## setup chromium-chromite into src/third_party/chromite
|
||||
if [ -e "src/third_party/chromite" ]; then
|
||||
rm -rfv "src/third_party/chromite"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-chromite" "src/third_party/chromite"
|
||||
|
||||
## setup chromium-colorama into src/third_party/colorama/src
|
||||
mkdir -p "src/third_party/colorama"
|
||||
if [ -e "src/third_party/colorama/src" ]; then
|
||||
rm -rfv "src/third_party/colorama/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-colorama" "src/third_party/colorama/src"
|
||||
|
||||
## setup chromium-elfutils into src/third_party/elfutils/src
|
||||
mkdir -p "src/third_party/elfutils"
|
||||
if [ -e "src/third_party/elfutils/src" ]; then
|
||||
rm -rfv "src/third_party/elfutils/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-elfutils" "src/third_party/elfutils/src"
|
||||
|
||||
## setup chromium-findbugs into src/third_party/findbugs
|
||||
if [ -e "src/third_party/findbugs" ]; then
|
||||
rm -rfv "src/third_party/findbugs"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-findbugs" "src/third_party/findbugs"
|
||||
|
||||
## setup chromium-gestures into src/third_party/gestures/gestures
|
||||
mkdir -p "src/third_party/gestures"
|
||||
if [ -e "src/third_party/gestures/gestures" ]; then
|
||||
rm -rfv "src/third_party/gestures/gestures"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-gestures" "src/third_party/gestures/gestures"
|
||||
|
||||
## setup chromium-libevdev into src/third_party/libevdev/src
|
||||
mkdir -p "src/third_party/libevdev"
|
||||
if [ -e "src/third_party/libevdev/src" ]; then
|
||||
rm -rfv "src/third_party/libevdev/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libevdev" "src/third_party/libevdev/src"
|
||||
|
||||
## setup chromium-openh264 into src/third_party/openh264/src
|
||||
mkdir -p "src/third_party/openh264"
|
||||
if [ -e "src/third_party/openh264/src" ]; then
|
||||
rm -rfv "src/third_party/openh264/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-openh264" "src/third_party/openh264/src"
|
||||
|
||||
## setup chromium-perfetto into src/third_party/perfetto
|
||||
if [ -e "src/third_party/perfetto" ]; then
|
||||
rm -rfv "src/third_party/perfetto"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-perfetto" "src/third_party/perfetto"
|
||||
|
||||
## setup chromium-requests into src/third_party/requests/src
|
||||
mkdir -p "src/third_party/requests"
|
||||
if [ -e "src/third_party/requests/src" ]; then
|
||||
rm -rfv "src/third_party/requests/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-requests" "src/third_party/requests/src"
|
||||
|
||||
## setup chromium-smhasher into src/third_party/smhasher/src
|
||||
mkdir -p "src/third_party/smhasher"
|
||||
if [ -e "src/third_party/smhasher/src" ]; then
|
||||
rm -rfv "src/third_party/smhasher/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-smhasher" "src/third_party/smhasher/src"
|
||||
|
||||
## setup chromium-boringssl into src/third_party/boringssl/src
|
||||
mkdir -p "src/third_party/boringssl"
|
||||
if [ -e "src/third_party/boringssl/src" ]; then
|
||||
rm -rfv "src/third_party/boringssl/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-boringssl" "src/third_party/boringssl/src"
|
||||
|
||||
## setup chromium-client-py into src/tools/swarming_client
|
||||
if [ -e "src/tools/swarming_client" ]; then
|
||||
rm -rfv "src/tools/swarming_client"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-client-py" "src/tools/swarming_client"
|
||||
|
||||
## setup chromium-freetype2 into src/third_party/freetype/src
|
||||
mkdir -p "src/third_party/freetype"
|
||||
if [ -e "src/third_party/freetype/src" ]; then
|
||||
rm -rfv "src/third_party/freetype/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-freetype2" "src/third_party/freetype/src"
|
||||
|
||||
## setup chromium-libcxxabi into src/buildtools/third_party/libc++abi/trunk
|
||||
mkdir -p "src/buildtools/third_party/libc++abi"
|
||||
if [ -e "src/buildtools/third_party/libc++abi/trunk" ]; then
|
||||
rm -rfv "src/buildtools/third_party/libc++abi/trunk"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libcxxabi" "src/buildtools/third_party/libc++abi/trunk"
|
||||
|
||||
## setup chromium-libunwind into src/buildtools/third_party/libunwind/trunk
|
||||
mkdir -p "src/buildtools/third_party/libunwind"
|
||||
if [ -e "src/buildtools/third_party/libunwind/trunk" ]; then
|
||||
rm -rfv "src/buildtools/third_party/libunwind/trunk"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libunwind" "src/buildtools/third_party/libunwind/trunk"
|
||||
|
||||
## setup chromium-pyftpdlib into src/third_party/pyftpdlib/src
|
||||
mkdir -p "src/third_party/pyftpdlib"
|
||||
if [ -e "src/third_party/pyftpdlib/src" ]; then
|
||||
rm -rfv "src/third_party/pyftpdlib/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-pyftpdlib" "src/third_party/pyftpdlib/src"
|
||||
|
||||
## setup chromium-xdg-utils into src/third_party/xdg-utils
|
||||
if [ -e "src/third_party/xdg-utils" ]; then
|
||||
rm -rfv "src/third_party/xdg-utils"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-xdg-utils" "src/third_party/xdg-utils"
|
||||
|
||||
## setup chromium-buildtools into src/buildtools
|
||||
if [ -e "src/buildtools" ]; then
|
||||
rm -rfv "src/buildtools"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-buildtools" "src/buildtools"
|
||||
|
||||
## setup chromium-errorprone into src/third_party/errorprone/lib
|
||||
mkdir -p "src/third_party/errorprone"
|
||||
if [ -e "src/third_party/errorprone/lib" ]; then
|
||||
rm -rfv "src/third_party/errorprone/lib"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-errorprone" "src/third_party/errorprone/lib"
|
||||
|
||||
## setup chromium-fontconfig into src/third_party/fontconfig/src
|
||||
mkdir -p "src/third_party/fontconfig"
|
||||
if [ -e "src/third_party/fontconfig/src" ]; then
|
||||
rm -rfv "src/third_party/fontconfig/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-fontconfig" "src/third_party/fontconfig/src"
|
||||
|
||||
## setup chromium-googletest into src/third_party/googletest/src
|
||||
mkdir -p "src/third_party/googletest"
|
||||
if [ -e "src/third_party/googletest/src" ]; then
|
||||
rm -rfv "src/third_party/googletest/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-googletest" "src/third_party/googletest/src"
|
||||
|
||||
## setup chromium-leakcanary into src/third_party/leakcanary/src
|
||||
mkdir -p "src/third_party/leakcanary"
|
||||
if [ -e "src/third_party/leakcanary/src" ]; then
|
||||
rm -rfv "src/third_party/leakcanary/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-leakcanary" "src/third_party/leakcanary/src"
|
||||
|
||||
## setup chromium-pyelftools into src/third_party/pyelftools
|
||||
if [ -e "src/third_party/pyelftools" ]; then
|
||||
rm -rfv "src/third_party/pyelftools"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-pyelftools" "src/third_party/pyelftools"
|
||||
|
||||
## setup chromium-system_api into src/third_party/cros_system_api
|
||||
if [ -e "src/third_party/cros_system_api" ]; then
|
||||
rm -rfv "src/third_party/cros_system_api"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-system_api" "src/third_party/cros_system_api"
|
||||
|
||||
## setup chromium-webvr.info into src/chrome/test/data/vr/webvr_info
|
||||
mkdir -p "src/chrome/test/data/vr"
|
||||
if [ -e "src/chrome/test/data/vr/webvr_info" ]; then
|
||||
rm -rfv "src/chrome/test/data/vr/webvr_info"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-webvr.info" "src/chrome/test/data/vr/webvr_info"
|
||||
|
||||
## setup chromium-SPIRV-Tools into src/third_party/SPIRV-Tools/src
|
||||
mkdir -p "src/third_party/SPIRV-Tools"
|
||||
if [ -e "src/third_party/SPIRV-Tools/src" ]; then
|
||||
rm -rfv "src/third_party/SPIRV-Tools/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-SPIRV-Tools" "src/third_party/SPIRV-Tools/src"
|
||||
|
||||
## setup chromium-SwiftShader into src/third_party/swiftshader
|
||||
if [ -e "src/third_party/swiftshader" ]; then
|
||||
rm -rfv "src/third_party/swiftshader"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-SwiftShader" "src/third_party/swiftshader"
|
||||
|
||||
## setup chromium-android_ndk into src/third_party/android_ndk
|
||||
if [ -e "src/third_party/android_ndk" ]; then
|
||||
rm -rfv "src/third_party/android_ndk"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-android_ndk" "src/third_party/android_ndk"
|
||||
|
||||
## setup chromium-android_ndk into src/third_party/android_tools/ndk
|
||||
mkdir -p "src/third_party/android_tools"
|
||||
if [ -e "src/third_party/android_tools/ndk" ]; then
|
||||
rm -rfv "src/third_party/android_tools/ndk"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-android_ndk" "src/third_party/android_tools/ndk"
|
||||
|
||||
## setup DepotTools into src/third_party/depot_tools
|
||||
if [ -e "src/third_party/depot_tools" ]; then
|
||||
rm -rfv "src/third_party/depot_tools"
|
||||
fi
|
||||
ln -v -s "$PWD/DepotTools" "src/third_party/depot_tools"
|
||||
|
||||
## setup chromium-flatbuffers into src/third_party/flatbuffers/src
|
||||
mkdir -p "src/third_party/flatbuffers"
|
||||
if [ -e "src/third_party/flatbuffers/src" ]; then
|
||||
rm -rfv "src/third_party/flatbuffers/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-flatbuffers" "src/third_party/flatbuffers/src"
|
||||
|
||||
## setup chromium-pywebsocket into src/third_party/pywebsocket/src
|
||||
mkdir -p "src/third_party/pywebsocket"
|
||||
if [ -e "src/third_party/pywebsocket/src" ]; then
|
||||
rm -rfv "src/third_party/pywebsocket/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-pywebsocket" "src/third_party/pywebsocket/src"
|
||||
|
||||
## setup chromium-robolectric into src/third_party/robolectric/robolectric
|
||||
mkdir -p "src/third_party/robolectric"
|
||||
if [ -e "src/third_party/robolectric/robolectric" ]; then
|
||||
rm -rfv "src/third_party/robolectric/robolectric"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-robolectric" "src/third_party/robolectric/robolectric"
|
||||
|
||||
## setup chromium-spirv-tools into src/third_party/spirv-tools-angle/src
|
||||
mkdir -p "src/third_party/spirv-tools-angle"
|
||||
if [ -e "src/third_party/spirv-tools-angle/src" ]; then
|
||||
rm -rfv "src/third_party/spirv-tools-angle/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-spirv-tools" "src/third_party/spirv-tools-angle/src"
|
||||
|
||||
## setup chromium-canvas_bench into src/chrome/test/data/perf/canvas_bench
|
||||
mkdir -p "src/chrome/test/data/perf"
|
||||
if [ -e "src/chrome/test/data/perf/canvas_bench" ]; then
|
||||
rm -rfv "src/chrome/test/data/perf/canvas_bench"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-canvas_bench" "src/chrome/test/data/perf/canvas_bench"
|
||||
|
||||
## setup chromium-clang-format into src/buildtools/clang_format/script
|
||||
mkdir -p "src/buildtools/clang_format"
|
||||
if [ -e "src/buildtools/clang_format/script" ]; then
|
||||
rm -rfv "src/buildtools/clang_format/script"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-clang-format" "src/buildtools/clang_format/script"
|
||||
|
||||
## setup chromium-patched-yasm into src/third_party/yasm/source/patched-yasm
|
||||
mkdir -p "src/third_party/yasm/source"
|
||||
if [ -e "src/third_party/yasm/source/patched-yasm" ]; then
|
||||
rm -rfv "src/third_party/yasm/source/patched-yasm"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-patched-yasm" "src/third_party/yasm/source/patched-yasm"
|
||||
|
||||
## setup chromium-android_tools into src/third_party/android_tools
|
||||
if [ -e "src/third_party/android_tools" ]; then
|
||||
rm -rfv "src/third_party/android_tools"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-android_tools" "src/third_party/android_tools"
|
||||
|
||||
## setup chromium-glslang-angle into src/third_party/glslang-angle/src
|
||||
mkdir -p "src/third_party/glslang-angle"
|
||||
if [ -e "src/third_party/glslang-angle/src" ]; then
|
||||
rm -rfv "src/third_party/glslang-angle/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-glslang-angle" "src/third_party/glslang-angle/src"
|
||||
|
||||
## setup chromium-libjpeg_turbo into src/third_party/libjpeg_turbo
|
||||
if [ -e "src/third_party/libjpeg_turbo" ]; then
|
||||
rm -rfv "src/third_party/libjpeg_turbo"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libjpeg_turbo" "src/third_party/libjpeg_turbo"
|
||||
|
||||
## setup chromium-spirv-headers into src/third_party/spirv-headers/src
|
||||
mkdir -p "src/third_party/spirv-headers"
|
||||
if [ -e "src/third_party/spirv-headers/src" ]; then
|
||||
rm -rfv "src/third_party/spirv-headers/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-spirv-headers" "src/third_party/spirv-headers/src"
|
||||
|
||||
## setup chromium-visualmetrics into src/third_party/visualmetrics/src
|
||||
mkdir -p "src/third_party/visualmetrics"
|
||||
if [ -e "src/third_party/visualmetrics/src" ]; then
|
||||
rm -rfv "src/third_party/visualmetrics/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-visualmetrics" "src/third_party/visualmetrics/src"
|
||||
|
||||
## setup chromium-libphonenumber into src/third_party/libphonenumber/dist
|
||||
mkdir -p "src/third_party/libphonenumber"
|
||||
if [ -e "src/third_party/libphonenumber/dist" ]; then
|
||||
rm -rfv "src/third_party/libphonenumber/dist"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libphonenumber" "src/third_party/libphonenumber/dist"
|
||||
|
||||
## setup chromium-netty-tcnative into src/third_party/netty-tcnative/src
|
||||
mkdir -p "src/third_party/netty-tcnative"
|
||||
if [ -e "src/third_party/netty-tcnative/src" ]; then
|
||||
rm -rfv "src/third_party/netty-tcnative/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-netty-tcnative" "src/third_party/netty-tcnative/src"
|
||||
|
||||
## setup chromium-ub-uiautomator into src/third_party/ub-uiautomator/lib
|
||||
mkdir -p "src/third_party/ub-uiautomator"
|
||||
if [ -e "src/third_party/ub-uiautomator/lib" ]; then
|
||||
rm -rfv "src/third_party/ub-uiautomator/lib"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-ub-uiautomator" "src/third_party/ub-uiautomator/lib"
|
||||
|
||||
## setup chromium-compact_enc_det into src/third_party/ced/src
|
||||
mkdir -p "src/third_party/ced"
|
||||
if [ -e "src/third_party/ced/src" ]; then
|
||||
rm -rfv "src/third_party/ced/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-compact_enc_det" "src/third_party/ced/src"
|
||||
|
||||
## setup chromium-gvr-android-sdk into src/third_party/gvr-android-sdk/src
|
||||
mkdir -p "src/third_party/gvr-android-sdk"
|
||||
if [ -e "src/third_party/gvr-android-sdk/src" ]; then
|
||||
rm -rfv "src/third_party/gvr-android-sdk/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-gvr-android-sdk" "src/third_party/gvr-android-sdk/src"
|
||||
|
||||
## setup chromium-libaddressinput into src/third_party/libaddressinput/src
|
||||
mkdir -p "src/third_party/libaddressinput"
|
||||
if [ -e "src/third_party/libaddressinput/src" ]; then
|
||||
rm -rfv "src/third_party/libaddressinput/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libaddressinput" "src/third_party/libaddressinput/src"
|
||||
|
||||
## setup chromium-liblouis-github into src/third_party/liblouis/src
|
||||
mkdir -p "src/third_party/liblouis"
|
||||
if [ -e "src/third_party/liblouis/src" ]; then
|
||||
rm -rfv "src/third_party/liblouis/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-liblouis-github" "src/third_party/liblouis/src"
|
||||
|
||||
## setup chromium-android_protobuf into src/third_party/android_protobuf/src
|
||||
mkdir -p "src/third_party/android_protobuf"
|
||||
if [ -e "src/third_party/android_protobuf/src" ]; then
|
||||
rm -rfv "src/third_party/android_protobuf/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-android_protobuf" "src/third_party/android_protobuf/src"
|
||||
|
||||
## setup chromium-wayland-protocols into src/third_party/wayland-protocols/src
|
||||
mkdir -p "src/third_party/wayland-protocols"
|
||||
if [ -e "src/third_party/wayland-protocols/src" ]; then
|
||||
rm -rfv "src/third_party/wayland-protocols/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-wayland-protocols" "src/third_party/wayland-protocols/src"
|
||||
|
||||
## setup chromium-custom-tabs-client into src/third_party/custom_tabs_client/src
|
||||
mkdir -p "src/third_party/custom_tabs_client"
|
||||
if [ -e "src/third_party/custom_tabs_client/src" ]; then
|
||||
rm -rfv "src/third_party/custom_tabs_client/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-custom-tabs-client" "src/third_party/custom_tabs_client/src"
|
||||
|
||||
## setup chromium-libprotobuf-mutator into src/third_party/libprotobuf-mutator/src
|
||||
mkdir -p "src/third_party/libprotobuf-mutator"
|
||||
if [ -e "src/third_party/libprotobuf-mutator/src" ]; then
|
||||
rm -rfv "src/third_party/libprotobuf-mutator/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-libprotobuf-mutator" "src/third_party/libprotobuf-mutator/src"
|
||||
|
||||
## setup chromium-devtools-node-modules into src/third_party/devtools-node-modules
|
||||
if [ -e "src/third_party/devtools-node-modules" ]; then
|
||||
rm -rfv "src/third_party/devtools-node-modules"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-devtools-node-modules" "src/third_party/devtools-node-modules"
|
||||
|
||||
## setup chromium-hunspell_dictionaries into src/third_party/hunspell_dictionaries
|
||||
if [ -e "src/third_party/hunspell_dictionaries" ]; then
|
||||
rm -rfv "src/third_party/hunspell_dictionaries"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-hunspell_dictionaries" "src/third_party/hunspell_dictionaries"
|
||||
|
||||
## setup chromium-linux-syscall-support into src/third_party/lss
|
||||
if [ -e "src/third_party/lss" ]; then
|
||||
rm -rfv "src/third_party/lss"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-linux-syscall-support" "src/third_party/lss"
|
||||
|
||||
## setup chromium-apache-portable-runtime into src/third_party/apache-portable-runtime/src
|
||||
mkdir -p "src/third_party/apache-portable-runtime"
|
||||
if [ -e "src/third_party/apache-portable-runtime/src" ]; then
|
||||
rm -rfv "src/third_party/apache-portable-runtime/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-apache-portable-runtime" "src/third_party/apache-portable-runtime/src"
|
||||
|
||||
## setup chromium-vulkan-validation-layers into src/third_party/vulkan-validation-layers/src
|
||||
mkdir -p "src/third_party/vulkan-validation-layers"
|
||||
if [ -e "src/third_party/vulkan-validation-layers/src" ]; then
|
||||
rm -rfv "src/third_party/vulkan-validation-layers/src"
|
||||
fi
|
||||
ln -v -s "$PWD/chromium-vulkan-validation-layers" "src/third_party/vulkan-validation-layers/src"
|
||||
|
||||
echo 'All srclibs ready for gclient sync'
|
||||
@@ -1,14 +0,0 @@
|
||||
solutions = [
|
||||
{ "name" : "src",
|
||||
"url" : "https://chromium.googlesource.com/chromium/src.git",
|
||||
"deps_file" : "DEPS",
|
||||
"managed" : True,
|
||||
"custom_deps" : {
|
||||
},
|
||||
"custom_vars": {
|
||||
'checkout_nacl': False
|
||||
},
|
||||
},
|
||||
]
|
||||
cache_dir = None
|
||||
target_os = ["android"];
|
||||
@@ -1,110 +0,0 @@
|
||||
entries = {
|
||||
'src': 'https://chromium.googlesource.com/chromium/src.git',
|
||||
'src/buildtools': 'https://chromium.googlesource.com/chromium/buildtools.git@f115f4786771afdfacb18a2299541b23e21f4792',
|
||||
'src/chrome/test/data/perf/canvas_bench': 'https://chromium.googlesource.com/chromium/canvas_bench.git@a7b40ea5ae0239517d78845a5fc9b12976bfc732',
|
||||
'src/chrome/test/data/perf/frame_rate/content': 'https://chromium.googlesource.com/chromium/frame_rate/content.git@c10272c88463efeef6bb19c9ec07c42bc8fe22b9',
|
||||
'src/chrome/test/data/vr/webvr_info': 'https://chromium.googlesource.com/external/github.com/toji/webvr.info.git@c58ae99b9ff9e2aa4c524633519570bf33536248',
|
||||
'src/media/cdm/api': 'https://chromium.googlesource.com/chromium/cdm.git@ca7130aa8fe6dd6c0664b52768d1957af31ae91b',
|
||||
'src/third_party/SPIRV-Tools/src': 'https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git@9166854ac93ef81b026e943ccd230fed6c8b8d3c',
|
||||
'src/third_party/android_ndk': 'https://chromium.googlesource.com/android_ndk.git@e951c37287c7d8cd915bf8d4149fd4a06d808b55',
|
||||
'src/third_party/android_protobuf/src': 'https://chromium.googlesource.com/external/android_protobuf.git@7fca48d8ce97f7ba3ab8eea5c472f1ad3711762f',
|
||||
'src/third_party/android_tools': 'https://chromium.googlesource.com/android_tools.git@c9f9bbf0a6c862fbef6115e80e8617093cd58e6b',
|
||||
'src/third_party/angle': 'https://chromium.googlesource.com/angle/angle.git@e4741fd0f2bce711a90bdebe2ac8e83cf944b8e8',
|
||||
'src/third_party/apache-portable-runtime/src': 'https://chromium.googlesource.com/external/apache-portable-runtime.git@c3f11fcd86b42922834cae91103cf068246c6bb6',
|
||||
'src/third_party/auto/src': 'https://chromium.googlesource.com/external/github.com/google/auto.git@8a81a858ae7b78a1aef71ac3905fade0bbd64e82',
|
||||
'src/third_party/bidichecker': 'https://chromium.googlesource.com/external/bidichecker/lib.git@97f2aa645b74c28c57eca56992235c79850fa9e0',
|
||||
'src/third_party/boringssl/src': 'https://boringssl.googlesource.com/boringssl.git@94cd196a80252c98e329e979870f2a462cc4f402',
|
||||
'src/third_party/breakpad/breakpad': 'https://chromium.googlesource.com/breakpad/breakpad.git@4a02ec03038d9d6f870f42d5070591512f488db0',
|
||||
'src/third_party/catapult': 'https://chromium.googlesource.com/catapult.git@69f2184e9c4351f5216d1ebe52bfd4c37ea79081',
|
||||
'src/third_party/ced/src': 'https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git@94c367a1fe3a13207f4b22604fcfd1d9f9ddf6d9',
|
||||
'src/third_party/chromite': 'https://chromium.googlesource.com/chromiumos/chromite.git@5b16d08cfaf8b1fc689a9c68258c258f4ad0fff8',
|
||||
'src/third_party/cld_3/src': 'https://chromium.googlesource.com/external/github.com/google/cld_3.git@ae02d6b8a2af41e87c956c7c7d3f651a8b7b9e79',
|
||||
'src/third_party/colorama/src': 'https://chromium.googlesource.com/external/colorama.git@799604a1041e9b3bc5d2789ecbd7e8db2e18e6b8',
|
||||
'src/third_party/crc32c/src': 'https://chromium.googlesource.com/external/github.com/google/crc32c.git@0f771ed5ef83556451e1736f22b1a11054dc81c3',
|
||||
'src/third_party/cros_system_api': 'https://chromium.googlesource.com/chromiumos/platform/system_api.git@55af1ecf95886bd60661dd7c62a9e32ec364afc1',
|
||||
'src/third_party/custom_tabs_client/src': 'https://chromium.googlesource.com/custom-tabs-client.git@a0b6c6f7db4127c191ebb9ef008609224658edb2',
|
||||
'src/third_party/depot_tools': 'https://chromium.googlesource.com/chromium/tools/depot_tools.git@7a4ced2773b2173c8ddc17c4895514706eb8df46',
|
||||
'src/third_party/devtools-node-modules': 'https://chromium.googlesource.com/external/github.com/ChromeDevTools/devtools-node-modules@5f7cd2497d7a643125c3b6eb910d99ba28be6899',
|
||||
'src/third_party/dom_distiller_js/dist': 'https://chromium.googlesource.com/chromium/dom-distiller/dist.git@60b46718e28f553ab57e3d2bbda5b3b41456f417',
|
||||
'src/third_party/elfutils/src': 'https://chromium.googlesource.com/external/elfutils.git@249673729a7e5dbd5de4f3760bdcaa3d23d154d7',
|
||||
'src/third_party/errorprone/lib': 'https://chromium.googlesource.com/chromium/third_party/errorprone.git@ecc57c2b00627667874744b9ad8efe10734d97a8',
|
||||
'src/third_party/ffmpeg': 'https://chromium.googlesource.com/chromium/third_party/ffmpeg.git@3e444ad8860b5d90d40a5c6e19947aba376a976b',
|
||||
'src/third_party/findbugs': 'https://chromium.googlesource.com/chromium/deps/findbugs.git@4275d9ac8610db6b1bc9a5e887f97e41b33fac67',
|
||||
'src/third_party/flac': 'https://chromium.googlesource.com/chromium/deps/flac.git@7d0f5b3a173ffe98db08057d1f52b7787569e0a6',
|
||||
'src/third_party/flatbuffers/src': 'https://chromium.googlesource.com/external/github.com/google/flatbuffers.git@01c50d57a67a52ee3cddd81b54d4647e9123a290',
|
||||
'src/third_party/fontconfig/src': 'https://chromium.googlesource.com/external/fontconfig.git@b546940435ebfb0df575bc7a2350d1e913919c34',
|
||||
'src/third_party/freetype/src': 'https://chromium.googlesource.com/chromium/src/third_party/freetype2.git@994eb2b34934bc5face9f83b2d3b12cf7a9262ab',
|
||||
'src/third_party/gestures/gestures': 'https://chromium.googlesource.com/chromiumos/platform/gestures.git@74f55100df966280d305d5d5ada824605f875839',
|
||||
'src/third_party/glslang/src': 'https://chromium.googlesource.com/external/github.com/google/glslang.git@210c6bf4d8119dc5f8ac21da2d4c87184f7015e0',
|
||||
'src/third_party/googletest/src': 'https://chromium.googlesource.com/external/github.com/google/googletest.git@0062e4869f07a3ef235703ddf63af604b712446c',
|
||||
'src/third_party/gvr-android-sdk/src': 'https://chromium.googlesource.com/external/github.com/googlevr/gvr-android-sdk.git@6aef4ab34276aac81ee38f1cb1d034de7fc4a4eb',
|
||||
'src/third_party/hunspell_dictionaries': 'https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git@a9bac57ce6c9d390a52ebaad3259f5fdb871210e',
|
||||
'src/third_party/icu': 'https://chromium.googlesource.com/chromium/deps/icu.git@c8ca2962b46670ec89071ffd1291688983cd319c',
|
||||
'src/third_party/jsoncpp/source': 'https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git@f572e8e42e22cfcf5ab0aea26574f408943edfa4',
|
||||
'src/third_party/jsr-305/src': 'https://chromium.googlesource.com/external/jsr-305.git@642c508235471f7220af6d5df2d3210e3bfc0919',
|
||||
'src/third_party/junit/src': 'https://chromium.googlesource.com/external/junit.git@64155f8a9babcfcf4263cf4d08253a1556e75481',
|
||||
'src/third_party/leakcanary/src': 'https://chromium.googlesource.com/external/github.com/square/leakcanary.git@608ded739e036a3aa69db47ac43777dcee506f8e',
|
||||
'src/third_party/leveldatabase/src': 'https://chromium.googlesource.com/external/leveldb.git@ca216e493f32278f50a823811ab95f64cf0f839b',
|
||||
'src/third_party/libFuzzer/src': 'https://chromium.googlesource.com/chromium/llvm-project/compiler-rt/lib/fuzzer.git@ba2c1cd6f87accb32b5dbce297387c56a2e53a2f',
|
||||
'src/third_party/libaddressinput/src': 'https://chromium.googlesource.com/external/libaddressinput.git@a575c63de328d0c72237c55d1a05e191c245122a',
|
||||
'src/third_party/libaom/source/libaom': 'https://aomedia.googlesource.com/aom.git@cc92258a08d98f469dff1be288acbc322632377b',
|
||||
'src/third_party/libdrm/src': 'https://chromium.googlesource.com/chromiumos/third_party/libdrm.git@16ffb1e6fce0fbd57f7a1e76021c575a40f6dc7a',
|
||||
'src/third_party/libevdev/src': 'https://chromium.googlesource.com/chromiumos/platform/libevdev.git@9f7a1961eb4726211e18abd147d5a11a4ea86744',
|
||||
'src/third_party/libjpeg_turbo': 'https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@a1750dbc79a8792dde3d3f7d7d8ac28ba01ac9dd',
|
||||
'src/third_party/liblouis/src': 'https://chromium.googlesource.com/external/liblouis-github.git@5f9c03f2a3478561deb6ae4798175094be8a26c2',
|
||||
'src/third_party/libphonenumber/dist': 'https://chromium.googlesource.com/external/libphonenumber.git@a4da30df63a097d67e3c429ead6790ad91d36cf4',
|
||||
'src/third_party/libprotobuf-mutator/src': 'https://chromium.googlesource.com/external/github.com/google/libprotobuf-mutator.git@3fc43a01d721ef1bacfefed170bc22abf1b8b051',
|
||||
'src/third_party/libsrtp': 'https://chromium.googlesource.com/chromium/deps/libsrtp.git@1d45b8e599dc2db6ea3ae22dbc94a8c504652423',
|
||||
'src/third_party/libsync/src': 'https://chromium.googlesource.com/aosp/platform/system/core/libsync.git@f4f4387b6bf2387efbcfd1453af4892e8982faf6',
|
||||
'src/third_party/libvpx/source/libvpx': 'https://chromium.googlesource.com/webm/libvpx.git@742ae4b24d28342a1642c9749826ee8428b20d6e',
|
||||
'src/third_party/libwebm/source': 'https://chromium.googlesource.com/webm/libwebm.git@b03c65468b06d097f27235d93d76bfc45f490ede',
|
||||
'src/third_party/libyuv': 'https://chromium.googlesource.com/libyuv/libyuv.git@92e22cf5b66173d5d5056751ca62bc2254e4ff86',
|
||||
'src/third_party/lss': 'https://chromium.googlesource.com/linux-syscall-support.git@e6527b0cd469e3ff5764785dadcb39bf7d787154',
|
||||
'src/third_party/mesa/src': 'https://chromium.googlesource.com/chromium/deps/mesa.git@ef811c6bd4de74e13e7035ca882cc77f85793fef',
|
||||
'src/third_party/minigbm/src': 'https://chromium.googlesource.com/chromiumos/platform/minigbm.git@27a7e6a24709564e18c3382d0aeda0b40c7ae03b',
|
||||
'src/third_party/minizip/src': 'https://chromium.googlesource.com/external/github.com/nmoinvaz/minizip@53a657318af1fccc4bac7ed230729302b2391d1d',
|
||||
'src/third_party/mockito/src': 'https://chromium.googlesource.com/external/mockito/mockito.git@de83ad4598ad4cf5ea53c69a8a8053780b04b850',
|
||||
'src/third_party/netty-tcnative/src': 'https://chromium.googlesource.com/external/netty-tcnative.git@5b46a8ef4a39c39c576fcdaaf718b585d75df463',
|
||||
'src/third_party/netty4/src': 'https://chromium.googlesource.com/external/netty4.git@cc4420b13bb4eeea5b1cf4f93b2755644cd3b120',
|
||||
'src/third_party/openh264/src': 'https://chromium.googlesource.com/external/github.com/cisco/openh264@2e96d62426547ac4fb5cbcd122e5f6eb68d66ee6',
|
||||
'src/third_party/openmax_dl': 'https://webrtc.googlesource.com/deps/third_party/openmax.git@b611996df3b8f6b151339d22c12c21f167009cb6',
|
||||
'src/third_party/pdfium': 'https://pdfium.googlesource.com/pdfium.git@bc4869293d7869c06e3f8c18241447ec5b701b58',
|
||||
'src/third_party/perfetto': 'https://android.googlesource.com/platform/external/perfetto.git@135841c8077f13f14c6b80e32d391da84d2ee131',
|
||||
'src/third_party/pyelftools': 'https://chromium.googlesource.com/chromiumos/third_party/pyelftools.git@19b3e610c86fcadb837d252c794cb5e8008826ae',
|
||||
'src/third_party/pyftpdlib/src': 'https://chromium.googlesource.com/external/pyftpdlib.git@2be6d65e31c7ee6320d059f581f05ae8d89d7e45',
|
||||
'src/third_party/pywebsocket/src': 'https://chromium.googlesource.com/external/github.com/google/pywebsocket.git@2d7b73c3acbd0f41dcab487ae5c97c6feae06ce2',
|
||||
'src/third_party/re2/src': 'https://chromium.googlesource.com/external/github.com/google/re2.git@5185d85264d23cfae4b38e2703703e9a4c8e974c',
|
||||
'src/third_party/requests/src': 'https://chromium.googlesource.com/external/github.com/kennethreitz/requests.git@f172b30356d821d180fa4ecfa3e71c7274a32de4',
|
||||
'src/third_party/robolectric/robolectric': 'https://chromium.googlesource.com/external/robolectric.git@7e067f1112e1502caa742f7be72d37b5678d3403',
|
||||
'src/third_party/sfntly/src': 'https://chromium.googlesource.com/external/github.com/googlei18n/sfntly.git@16f3404e41edc9708a51fbce481f22e46b809686',
|
||||
'src/third_party/shaderc/src': 'https://chromium.googlesource.com/external/github.com/google/shaderc.git@cd8793c34907073025af2622c28bcee64e9879a4',
|
||||
'src/third_party/skia': 'https://skia.googlesource.com/skia.git@caaf211e8dd094db6b7408cecdf531ce7d91382c',
|
||||
'src/third_party/smhasher/src': 'https://chromium.googlesource.com/external/smhasher.git@e87738e57558e0ec472b2fc3a643b838e5b6e88f',
|
||||
'src/third_party/snappy/src': 'https://chromium.googlesource.com/external/github.com/google/snappy.git@b02bfa754ebf27921d8da3bd2517eab445b84ff9',
|
||||
'src/third_party/swiftshader': 'https://swiftshader.googlesource.com/SwiftShader.git@b1d452eaeeb8272e37b87446511f2e0e95d27e6f',
|
||||
'src/third_party/ub-uiautomator/lib': 'https://chromium.googlesource.com/chromium/third_party/ub-uiautomator.git@00270549ce3161ae72ceb24712618ea28b4f9434',
|
||||
'src/third_party/usrsctp/usrsctplib': 'https://chromium.googlesource.com/external/github.com/sctplab/usrsctp@0e076261b832121cf120ddc04aaff87ac3a34d30',
|
||||
'src/third_party/visualmetrics/src': 'https://chromium.googlesource.com/external/github.com/WPO-Foundation/visualmetrics.git@1edde9d2fe203229c895b648fdec355917200ad6',
|
||||
'src/third_party/wayland-protocols/src': 'https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git@4f789286e4ab7f6fecc2ccb895d79362a9b2382a',
|
||||
'src/third_party/wayland/src': 'https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland.git@1361da9cd5a719b32d978485a29920429a31ed25',
|
||||
'src/third_party/wds/src': 'https://chromium.googlesource.com/external/github.com/01org/wds@ac3d8210d95f3000bf5c8e16a79dbbbf22d554a5',
|
||||
'src/third_party/webdriver/pylib': 'https://chromium.googlesource.com/external/selenium/py.git@5fd78261a75fe08d27ca4835fb6c5ce4b42275bd',
|
||||
'src/third_party/webgl/src': 'https://chromium.googlesource.com/external/khronosgroup/webgl.git@d458ada06171a85af00367251a4ed55db7fe2018',
|
||||
'src/third_party/webrtc': 'https://webrtc.googlesource.com/src.git@22da89f502ab7ed618b7099f5010da021333bf71',
|
||||
'src/third_party/xdg-utils': 'https://chromium.googlesource.com/chromium/deps/xdg-utils.git@d80274d5869b17b8c9067a1022e4416ee7ed5e0d',
|
||||
'src/third_party/yasm/source/patched-yasm': 'https://chromium.googlesource.com/chromium/deps/yasm/patched-yasm.git@b98114e18d8b9b84586b10d24353ab8616d4c5fc',
|
||||
'src/tools/gyp': 'https://chromium.googlesource.com/external/gyp.git@d61a9397e668fa9843c4aa7da9e79460fe590bfb',
|
||||
'src/tools/page_cycler/acid3': 'https://chromium.googlesource.com/chromium/deps/acid3.git@6be0a66a1ebd7ebc5abc1b2f405a945f6d871521',
|
||||
'src/tools/swarming_client': 'https://chromium.googlesource.com/infra/luci/client-py.git@88229872dd17e71658fe96763feaa77915d8cbd6',
|
||||
'src/v8': 'https://chromium.googlesource.com/v8/v8.git@787ecbb389741d2b76131f9fa526374a0dbfcff6',
|
||||
'src/buildtools/clang_format/script': 'https://chromium.googlesource.com/chromium/llvm-project/cfe/tools/clang-format.git@0653eee0c81ea04715c635dd0885e8096ff6ba6d',
|
||||
'src/buildtools/third_party/libc++/trunk': 'https://chromium.googlesource.com/chromium/llvm-project/libcxx.git@27c341db41bc9df5c6f19cde65f002d6f1c2eb3c',
|
||||
'src/buildtools/third_party/libc++abi/trunk': 'https://chromium.googlesource.com/chromium/llvm-project/libcxxabi.git@e1601db2504857d44db88a5d4e2ca50b32bbb7d9',
|
||||
'src/buildtools/third_party/libunwind/trunk': 'https://chromium.googlesource.com/external/llvm.org/libunwind.git@86ab23972978242b6f9e27cebc239f3e8428b1af',
|
||||
'src/third_party/android_tools/ndk': 'https://chromium.googlesource.com/android_ndk.git@e951c37287c7d8cd915bf8d4149fd4a06d808b55',
|
||||
'src/third_party/deqp/src': 'https://android.googlesource.com/platform/external/deqp@455d82c60b096e7bd83b6a2f5ed70c61e4bfa759',
|
||||
'src/third_party/glslang-angle/src': 'https://android.googlesource.com/platform/external/shaderc/glslang@2edde6665d9a56ead5ea0e55b4e64d9a803e6164',
|
||||
'src/third_party/spirv-headers/src': 'https://android.googlesource.com/platform/external/shaderc/spirv-headers@98b01515724c428d0f0a5d01deffcce0f5f5e61c',
|
||||
'src/third_party/spirv-tools-angle/src': 'https://android.googlesource.com/platform/external/shaderc/spirv-tools@9996173f363729b3a97309685dbd4d78547a63a7',
|
||||
'src/third_party/vulkan-validation-layers/src': 'https://android.googlesource.com/platform/external/vulkan-validation-layers@d5c8ed406ab2399a80e2847c03aa80b09b269b53',
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
#!/bin/bash
|
||||
## install-deps.sh
|
||||
##
|
||||
## @author csagan5
|
||||
##
|
||||
## Bromite dependencies setup script for F-Droid
|
||||
## https://www.bromite.org/
|
||||
##
|
||||
#
|
||||
|
||||
if [ ! $# -eq 1 ]; then
|
||||
echo "Usage: install-deps.sh release" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
RELEASE="$1"
|
||||
|
||||
## sudo= commands run in fdroiddata/
|
||||
|
||||
set -e
|
||||
|
||||
## the main srclib must already be present
|
||||
cd build/srclib/chromium
|
||||
|
||||
git checkout "$RELEASE"
|
||||
|
||||
## remove some deps that fail due to jessie-backports
|
||||
#for DEP in libcups2-dev libdrm-dev libgl1-mesa-dev libgles2-mesa-dev libglib2.0-dev libpulse-dev libssl-dev libudev-dev; do
|
||||
# sed -i "s~^ $DEP\$~~" build/install-build-deps.sh
|
||||
#done
|
||||
|
||||
## to fix the "E: no packages found" error
|
||||
apt-get update
|
||||
|
||||
## accept the license for the MS core fonts - installed by Chromium's install deps script
|
||||
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
|
||||
## do not ask questions during installations - always assume yes
|
||||
echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
|
||||
exec build/install-build-deps-android.sh
|
||||
@@ -1,41 +0,0 @@
|
||||
#!/bin/bash
|
||||
## sync.sh
|
||||
##
|
||||
## @author csagan5
|
||||
##
|
||||
## Bromite 'gclient sync' script for F-Droid
|
||||
## https://www.bromite.org/
|
||||
##
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
## sync= commands run in fdroiddata/build/$PKG
|
||||
|
||||
. common
|
||||
|
||||
## install gclient configuration files
|
||||
cp gclient_android.default ../../srclib/.gclient
|
||||
cp gclient_entries ../../srclib/.gclient_entries
|
||||
|
||||
## create all necessary srclib symlinks so that gclient does not fetch them again
|
||||
cd ../../srclib
|
||||
../$PKG/fdroid/gclient-prepare.sh
|
||||
|
||||
## gclient must run in the chromium directory and it cannot be a symlink
|
||||
cd src
|
||||
|
||||
set +e
|
||||
#gclient sync --with_branch_heads --delete_unversioned_trees
|
||||
echo y | gclient sync --reset
|
||||
RV=$?
|
||||
|
||||
|
||||
if [ $RV -eq 0 ]; then
|
||||
cd ..
|
||||
## success, copy the new gclient_entries
|
||||
cp .gclient_entries ../$PKG/fdroid/gclient_entries
|
||||
exit 0
|
||||
fi
|
||||
|
||||
exit $RV
|
||||
+109960
File diff suppressed because one or more lines are too long
+11
-7
@@ -1,15 +1,16 @@
|
||||
commit 0a3880671af60180c72cdaf18e24f699db87ae23
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed Oct 11 22:50:10 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 11 Oct 2017 22:50:10 +0200
|
||||
Subject: Disable third-party cookies by default
|
||||
|
||||
Disable third-party cookies by default
|
||||
author: Chad Miller <chad.miller@canonical.com>
|
||||
author: Chad Miller <chad.miller@canonical.com>
|
||||
---
|
||||
components/content_settings/core/browser/cookie_settings.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
|
||||
index 6dbac81..26a9c23 100644
|
||||
--- a/components/content_settings/core/browser/cookie_settings.cc
|
||||
+++ b/components/content_settings/core/browser/cookie_settings.cc
|
||||
@@ -80,7 +80,7 @@ void CookieSettings::GetCookieSettings(
|
||||
@@ -50,7 +50,7 @@ void CookieSettings::GetCookieSettings(
|
||||
void CookieSettings::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -18,3 +19,6 @@ index 6dbac81..26a9c23 100644
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 26 Nov 2017 11:40:05 +0100
|
||||
Subject: Restore classic new tab page
|
||||
|
||||
---
|
||||
chrome/browser/search/search.cc | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
|
||||
--- a/chrome/browser/search/search.cc
|
||||
+++ b/chrome/browser/search/search.cc
|
||||
@@ -155,10 +155,7 @@ bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) {
|
||||
}
|
||||
|
||||
bool ShouldShowLocalNewTab(Profile* profile) {
|
||||
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
||||
- return command_line->HasSwitch(switches::kForceLocalNtp) ||
|
||||
- (base::FeatureList::IsEnabled(features::kUseGoogleLocalNtp) &&
|
||||
- profile && DefaultSearchProviderIsGoogle(profile));
|
||||
+ return true;
|
||||
}
|
||||
|
||||
bool ShouldDelayRemoteNTP(const GURL& search_provider_url, Profile* profile) {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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.11.0
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 22 Mar 2018 22:11:57 +0100
|
||||
Subject: Battery API: return nothing
|
||||
|
||||
---
|
||||
.../renderer/modules/battery/battery_manager.cc | 25 ++++------------------
|
||||
1 file changed, 4 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/third_party/blink/renderer/modules/battery/battery_manager.cc
|
||||
--- a/third_party/blink/renderer/modules/battery/battery_manager.cc
|
||||
+++ b/third_party/blink/renderer/modules/battery/battery_manager.cc
|
||||
@@ -42,45 +42,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
|
||||
}
|
||||
|
||||
bool BatteryManager::charging() {
|
||||
- return battery_status_.Charging();
|
||||
+ return false;
|
||||
}
|
||||
|
||||
double BatteryManager::chargingTime() {
|
||||
- return battery_status_.charging_time();
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
double BatteryManager::dischargingTime() {
|
||||
- return battery_status_.discharging_time();
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
double BatteryManager::level() {
|
||||
- return battery_status_.Level();
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
void BatteryManager::DidUpdateData() {
|
||||
DCHECK(battery_property_);
|
||||
|
||||
- BatteryStatus old_status = battery_status_;
|
||||
- battery_status_ = *BatteryDispatcher::Instance().LatestData();
|
||||
-
|
||||
if (battery_property_->GetState() == ScriptPromisePropertyBase::kPending) {
|
||||
battery_property_->Resolve(this);
|
||||
return;
|
||||
}
|
||||
-
|
||||
- Document* document = ToDocument(GetExecutionContext());
|
||||
- DCHECK(document);
|
||||
- if (document->IsContextPaused() || document->IsContextDestroyed())
|
||||
- return;
|
||||
-
|
||||
- if (battery_status_.Charging() != old_status.Charging())
|
||||
- DispatchEvent(*Event::Create(EventTypeNames::chargingchange));
|
||||
- if (battery_status_.charging_time() != old_status.charging_time())
|
||||
- DispatchEvent(*Event::Create(EventTypeNames::chargingtimechange));
|
||||
- if (battery_status_.discharging_time() != old_status.discharging_time())
|
||||
- DispatchEvent(*Event::Create(EventTypeNames::dischargingtimechange));
|
||||
- if (battery_status_.Level() != old_status.Level())
|
||||
- DispatchEvent(*Event::Create(EventTypeNames::levelchange));
|
||||
}
|
||||
|
||||
void BatteryManager::RegisterWithDispatcher() {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
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(+)
|
||||
|
||||
diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gcm_driver/gcm_channel_status_request.cc
|
||||
--- a/components/gcm_driver/gcm_channel_status_request.cc
|
||||
+++ b/components/gcm_driver/gcm_channel_status_request.cc
|
||||
@@ -24,8 +24,10 @@ namespace gcm {
|
||||
|
||||
namespace {
|
||||
|
||||
+#if 0
|
||||
const char kRequestContentType[] = "application/octet-stream";
|
||||
const char kGCMChannelTag[] = "gcm_channel";
|
||||
+#endif
|
||||
const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes.
|
||||
const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes.
|
||||
|
||||
@@ -58,6 +60,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
|
||||
|
||||
void GCMChannelStatusRequest::Start() {
|
||||
// url_loader_factory_ can be null for tests.
|
||||
+#if 0
|
||||
if (!url_loader_factory_)
|
||||
return;
|
||||
|
||||
@@ -113,6 +116,9 @@ void GCMChannelStatusRequest::Start() {
|
||||
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
resource_request->method = "POST";
|
||||
resource_request->headers.SetHeader(net::HttpRequestHeaders::kUserAgent,
|
||||
+#endif
|
||||
+ // Simulate an empty response and disable GCM.
|
||||
+ callback_.Run(false, false, 0);
|
||||
user_agent_);
|
||||
// TODO(https://crbug.com/808498): Re-add data use measurement once
|
||||
// SimpleURLLoader supports it.
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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()),
|
||||
initial_delay_(config_policy.InitialDelay()) {
|
||||
if (config_policy.TestRequest())
|
||||
@@ -73,8 +72,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
|
||||
@@ -95,7 +95,6 @@ class ConfiguratorImpl {
|
||||
const bool deltas_enabled_;
|
||||
const bool fast_update_;
|
||||
const bool pings_enabled_;
|
||||
- const bool require_encryption_;
|
||||
const GURL url_source_override_;
|
||||
const int initial_delay_;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+11
-10
@@ -1,18 +1,16 @@
|
||||
commit 099b041051cd3ea166c38269aa584bee7962d816
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed Oct 11 23:19:25 2017 +0200
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Sat, 13 Sep 2014 17:25:47 +0200
|
||||
Subject: prefs: only keep cookies until exit
|
||||
|
||||
Subject: [PATCH 21/60] prefs: only keep cookies until exit
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Sat, 13 Sep 2014 17:25:47 +0200
|
||||
|
||||
Out with all those tracking cookies!
|
||||
Out with all those tracking cookies!
|
||||
---
|
||||
components/content_settings/core/browser/content_settings_registry.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
|
||||
index fe84151..f303447 100644
|
||||
--- a/components/content_settings/core/browser/content_settings_registry.cc
|
||||
+++ b/components/content_settings/core/browser/content_settings_registry.cc
|
||||
@@ -118,7 +118,7 @@ void ContentSettingsRegistry::Init() {
|
||||
@@ -119,7 +119,7 @@ void ContentSettingsRegistry::Init() {
|
||||
// WARNING: The string names of the permissions passed in below are used to
|
||||
// generate preference names and should never be changed!
|
||||
|
||||
@@ -21,3 +19,6 @@ index fe84151..f303447 100644
|
||||
WebsiteSettingsInfo::SYNCABLE,
|
||||
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
|
||||
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+20
-19
@@ -1,24 +1,22 @@
|
||||
commit 6eaea225c3e5ceaba5a2753248c770b218bdc4f4
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed Oct 11 23:12:18 2017 +0200
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Thu, 2 Apr 2015 12:44:23 +0200
|
||||
Subject: Remove EV certificates
|
||||
|
||||
[PATCH 35/60] Remove EV certificates
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Thu, 2 Apr 2015 12:44:23 +0200
|
||||
|
||||
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.
|
||||
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.
|
||||
---
|
||||
net/cert/ev_root_ca_metadata.cc | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
|
||||
index 3e89bb3..9bb411b 100644
|
||||
--- 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 @@ index 3e89bb3..9bb411b 100644
|
||||
+ }
|
||||
+ },
|
||||
+#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
|
||||
{
|
||||
@@ -708,7 +718,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", ""},
|
||||
@@ -41,5 +39,8 @@ index 3e89bb3..9bb411b 100644
|
||||
+#endif
|
||||
+};
|
||||
|
||||
#endif // defined(USE_NSS_CERTS) || defined(OS_IOS) || defined(OS_WIN)
|
||||
|
||||
#endif // defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
|
||||
} // namespace
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: Sun, 9 Nov 2014 01:54:27 +0100
|
||||
Subject: promo: disable Google promotion fetching
|
||||
|
||||
Documentation is scarce, and sprinkled with misleading acronyms.
|
||||
NTP is not NTP, for example. FWIW:
|
||||
|
||||
// A PromoResourceService fetches data from a web resource server to
|
||||
// be used to dynamically change the appearance of the New Tab Page.
|
||||
// For example, it has been used to fetch "tips" to be displayed on
|
||||
// the NTP, or to display promotional messages to certain groups of
|
||||
// Chrome users.
|
||||
|
||||
Whatever it is that it downloads, deactivate the one that leads to
|
||||
Google.
|
||||
|
||||
References: https://github.com/iridium-browser/iridium-browser/issues/33
|
||||
---
|
||||
chrome/browser/signin/signin_promo.cc | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
|
||||
--- a/chrome/browser/signin/signin_promo.cc
|
||||
+++ b/chrome/browser/signin/signin_promo.cc
|
||||
@@ -140,6 +140,7 @@ const char kSigninPromoLandingURLSuccessPage[] = "success.html";
|
||||
|
||||
bool ShouldShowPromoAtStartup(Profile* profile, bool is_new_profile) {
|
||||
DCHECK(profile);
|
||||
+ return false;
|
||||
|
||||
// Don't show if the profile is an incognito.
|
||||
if (profile->IsOffTheRecord())
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 11 Oct 2017 23:24:58 +0200
|
||||
Subject: Disables omission of URL elements in Omnibox
|
||||
|
||||
Disable all omissions (already shadowed by first flag)
|
||||
---
|
||||
components/url_formatter/url_formatter.cc | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
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
|
||||
@@ -412,12 +412,12 @@ IDNConversionStatus IDNToUnicodeOneComponent(const base::char16* comp,
|
||||
} // namespace
|
||||
|
||||
const FormatUrlType kFormatUrlOmitNothing = 0;
|
||||
-const FormatUrlType kFormatUrlOmitUsernamePassword = 1 << 0;
|
||||
-const FormatUrlType kFormatUrlOmitHTTP = 1 << 1;
|
||||
-const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 1 << 2;
|
||||
-const FormatUrlType kFormatUrlOmitHTTPS = 1 << 3;
|
||||
-const FormatUrlType kFormatUrlExperimentalElideAfterHost = 1 << 4;
|
||||
-const FormatUrlType kFormatUrlOmitTrivialSubdomains = 1 << 5;
|
||||
+const FormatUrlType kFormatUrlOmitUsernamePassword = 0 << 0;
|
||||
+const FormatUrlType kFormatUrlOmitHTTP = 0 << 1;
|
||||
+const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 0 << 2;
|
||||
+const FormatUrlType kFormatUrlOmitHTTPS = 0 << 3;
|
||||
+const FormatUrlType kFormatUrlExperimentalElideAfterHost = 0 << 4;
|
||||
+const FormatUrlType kFormatUrlOmitTrivialSubdomains = 0 << 5;
|
||||
const FormatUrlType kFormatUrlTrimAfterHost = 1 << 6;
|
||||
|
||||
const FormatUrlType kFormatUrlOmitDefaults =
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+75
-55
@@ -1,14 +1,30 @@
|
||||
commit 3075d5cc23f69b42c80690162426ae2501cd2b5b
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu Oct 12 08:09:24 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 12 Oct 2017 08:09:24 +0200
|
||||
Subject: Modify default preferences
|
||||
|
||||
Modify default preferences
|
||||
---
|
||||
chrome/browser/background/background_mode_manager.cc | 2 +-
|
||||
chrome/browser/chrome_content_browser_client.cc | 2 +-
|
||||
chrome/browser/net/prediction_options.cc | 2 +-
|
||||
chrome/browser/net/prediction_options.h | 2 +-
|
||||
chrome/browser/profiles/profile.cc | 2 +-
|
||||
.../resources/settings/reset_page/reset_profile_dialog.html | 2 +-
|
||||
chrome/browser/signin/signin_promo.cc | 4 ++--
|
||||
chrome/browser/ui/browser_ui_prefs.cc | 4 ++--
|
||||
chrome/browser/ui/navigation_correction_tab_observer.cc | 2 +-
|
||||
chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc | 4 ----
|
||||
chrome/service/cloud_print/connector_settings.cc | 2 +-
|
||||
components/autofill/core/browser/autofill_manager.cc | 5 +----
|
||||
components/autofill/core/common/autofill_prefs.cc | 6 +++---
|
||||
components/bookmarks/browser/bookmark_utils.cc | 4 ++--
|
||||
components/safe_browsing/common/safe_browsing_prefs.cc | 4 ++--
|
||||
extensions/common/extension.cc | 8 --------
|
||||
16 files changed, 20 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
|
||||
index 6b66f9e..ac44881 100644
|
||||
--- a/chrome/browser/background/background_mode_manager.cc
|
||||
+++ b/chrome/browser/background/background_mode_manager.cc
|
||||
@@ -363,7 +363,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
@@ -351,7 +351,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
|
||||
registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
|
||||
#endif
|
||||
@@ -18,33 +34,18 @@ index 6b66f9e..ac44881 100644
|
||||
|
||||
void BackgroundModeManager::RegisterProfile(Profile* profile) {
|
||||
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
||||
index a96f159e..7f7e9cf 100644
|
||||
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -877,7 +877,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
|
||||
@@ -1041,7 +1041,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
|
||||
void ChromeContentBrowserClient::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
|
||||
- registry->RegisterBooleanPref(prefs::kEnableHyperlinkAuditing, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kEnableHyperlinkAuditing, false);
|
||||
registry->RegisterListPref(prefs::kEnableDeprecatedWebPlatformFeatures);
|
||||
}
|
||||
|
||||
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
|
||||
index e6ccce4..1e37c2b 100644
|
||||
--- a/chrome/browser/io_thread.cc
|
||||
+++ b/chrome/browser/io_thread.cc
|
||||
@@ -612,7 +612,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
|
||||
std::string());
|
||||
registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
|
||||
data_reduction_proxy::RegisterPrefs(registry);
|
||||
- registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, false);
|
||||
registry->RegisterBooleanPref(prefs::kQuickCheckEnabled, true);
|
||||
registry->RegisterBooleanPref(prefs::kPacHttpsUrlStrippingEnabled, true);
|
||||
#if defined(OS_POSIX)
|
||||
// Register user prefs for mapping SitePerProcess and IsolateOrigins in
|
||||
// user policy in addition to the same named ones in Local State (which are
|
||||
diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
|
||||
index 8ab8a07..967bf2f 100644
|
||||
--- a/chrome/browser/net/prediction_options.cc
|
||||
+++ b/chrome/browser/net/prediction_options.cc
|
||||
@@ -30,7 +30,7 @@ NetworkPredictionStatus CanPrefetchAndPrerender(
|
||||
@@ -57,7 +58,6 @@ index 8ab8a07..967bf2f 100644
|
||||
}
|
||||
}
|
||||
diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/prediction_options.h
|
||||
index 6512483..4c55a19 100644
|
||||
--- a/chrome/browser/net/prediction_options.h
|
||||
+++ b/chrome/browser/net/prediction_options.h
|
||||
@@ -23,7 +23,7 @@ enum NetworkPredictionOptions {
|
||||
@@ -70,10 +70,9 @@ index 6512483..4c55a19 100644
|
||||
|
||||
enum class NetworkPredictionStatus {
|
||||
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
|
||||
index 52042ee..b1acb4a 100644
|
||||
--- a/chrome/browser/profiles/profile.cc
|
||||
+++ b/chrome/browser/profiles/profile.cc
|
||||
@@ -136,7 +136,7 @@ const char Profile::kNoHostedDomainFound[] = "NO_HOSTED_DOMAIN";
|
||||
@@ -138,7 +138,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
|
||||
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSearchSuggestEnabled,
|
||||
@@ -83,23 +82,21 @@ index 52042ee..b1acb4a 100644
|
||||
#if defined(OS_ANDROID)
|
||||
registry->RegisterStringPref(
|
||||
diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
index b46a992..9d353d9 100644
|
||||
--- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
|
||||
@@ -45,7 +45,7 @@
|
||||
</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>
|
||||
</dialog>
|
||||
</cr-dialog>
|
||||
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
|
||||
index 0f4bdb3..77e4810 100644
|
||||
--- a/chrome/browser/signin/signin_promo.cc
|
||||
+++ b/chrome/browser/signin/signin_promo.cc
|
||||
@@ -371,8 +371,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
|
||||
@@ -385,8 +385,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
|
||||
void RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
|
||||
@@ -108,13 +105,12 @@ index 0f4bdb3..77e4810 100644
|
||||
+ registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, true);
|
||||
+ registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, false);
|
||||
registry->RegisterBooleanPref(prefs::kSignInPromoShowNTPBubble, false);
|
||||
registry->RegisterIntegerPref(prefs::kDiceSigninUserMenuPromoCount, 0);
|
||||
}
|
||||
|
||||
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
|
||||
index bcd4d0e..2302f0f 100644
|
||||
--- a/chrome/browser/ui/browser_ui_prefs.cc
|
||||
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
||||
@@ -59,11 +59,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -68,11 +68,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
|
||||
registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -125,14 +121,13 @@ index bcd4d0e..2302f0f 100644
|
||||
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
|
||||
index 887d681..60eea93 100644
|
||||
--- a/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
+++ b/chrome/browser/ui/navigation_correction_tab_observer.cc
|
||||
@@ -58,7 +58,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
|
||||
@@ -56,7 +56,7 @@ NavigationCorrectionTabObserver::~NavigationCorrectionTabObserver() {
|
||||
void NavigationCorrectionTabObserver::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* prefs) {
|
||||
prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
|
||||
@@ -142,7 +137,6 @@ index 887d681..60eea93 100644
|
||||
}
|
||||
|
||||
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
index 8d043bd..69aa9f4 100644
|
||||
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
|
||||
@@ -143,10 +143,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
|
||||
@@ -157,7 +151,6 @@ index 8d043bd..69aa9f4 100644
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
}
|
||||
diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/cloud_print/connector_settings.cc
|
||||
index 83a4617..4b8511c 100644
|
||||
--- a/chrome/service/cloud_print/connector_settings.cc
|
||||
+++ b/chrome/service/cloud_print/connector_settings.cc
|
||||
@@ -60,7 +60,7 @@ void ConnectorSettings::InitFrom(ServiceProcessPrefs* prefs) {
|
||||
@@ -170,23 +163,49 @@ index 83a4617..4b8511c 100644
|
||||
xmpp_ping_enabled_ = prefs->GetBoolean(
|
||||
prefs::kCloudPrintXmppPingEnabled, false);
|
||||
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
|
||||
index 9468cf2..86366ca 100644
|
||||
--- a/components/autofill/core/browser/autofill_manager.cc
|
||||
+++ b/components/autofill/core/browser/autofill_manager.cc
|
||||
@@ -211,7 +211,7 @@ void AutofillManager::RegisterProfilePrefs(
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
|
||||
@@ -288,10 +288,7 @@ bool AutofillManager::ShouldShowCreditCardSigninPromo(
|
||||
bool AutofillManager::ShouldParseForms(const std::vector<FormData>& forms,
|
||||
const base::TimeTicks timestamp) {
|
||||
bool enabled = IsAutofillEnabled();
|
||||
- if (!has_logged_autofill_enabled_) {
|
||||
- AutofillMetrics::LogIsAutofillEnabledAtPageLoad(enabled);
|
||||
- has_logged_autofill_enabled_ = true;
|
||||
- }
|
||||
+ has_logged_autofill_enabled_ = true;
|
||||
|
||||
return enabled;
|
||||
}
|
||||
diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc
|
||||
--- a/components/autofill/core/common/autofill_prefs.cc
|
||||
+++ b/components/autofill/core/common/autofill_prefs.cc
|
||||
@@ -75,10 +75,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
prefs::kAutofillBillingCustomerNumber, 0.0,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillEnabled, true,
|
||||
+ prefs::kAutofillEnabled, false,
|
||||
- prefs::kAutofillEnabledDeprecated, true,
|
||||
+ prefs::kAutofillEnabledDeprecated, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kAutofillProfileUseDatesFixed, false,
|
||||
- prefs::kAutofillProfileEnabled, true,
|
||||
+ prefs::kAutofillProfileEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterIntegerPref(
|
||||
prefs::kAutofillLastVersionDeduped, 0,
|
||||
@@ -87,7 +87,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterBooleanPref(
|
||||
- prefs::kAutofillCreditCardEnabled, true,
|
||||
+ prefs::kAutofillCreditCardEnabled, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
|
||||
registry->RegisterStringPref(
|
||||
prefs::kAutofillProfileValidity, "",
|
||||
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
|
||||
index 8455e49..c7e70c0 100644
|
||||
--- a/components/bookmarks/browser/bookmark_utils.cc
|
||||
+++ b/components/bookmarks/browser/bookmark_utils.cc
|
||||
@@ -442,12 +442,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
|
||||
@@ -443,12 +443,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
|
||||
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kShowBookmarkBar,
|
||||
@@ -202,10 +221,9 @@ index 8455e49..c7e70c0 100644
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kShowManagedBookmarksInBookmarkBar,
|
||||
diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
index a05123f..4b8b05cb 100644
|
||||
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
|
||||
@@ -343,9 +343,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
@@ -282,9 +282,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -218,10 +236,9 @@ index a05123f..4b8b05cb 100644
|
||||
registry->RegisterBooleanPref(prefs::kSafeBrowsingProceedAnywayDisabled,
|
||||
false);
|
||||
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
|
||||
index b8da726..b9ca9b0 100644
|
||||
--- a/extensions/common/extension.cc
|
||||
+++ b/extensions/common/extension.cc
|
||||
@@ -344,14 +344,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
@@ -366,14 +366,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
|
||||
if (is_theme())
|
||||
return false;
|
||||
|
||||
@@ -236,3 +253,6 @@ index b8da726..b9ca9b0 100644
|
||||
// Unless they are unpacked, never show hosted apps. Note: We intentionally
|
||||
// show packaged apps and platform apps because there are some pieces of
|
||||
// functionality that are only available in chrome://extensions/ but which
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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.11.0
|
||||
|
||||
+11
-7
@@ -1,14 +1,15 @@
|
||||
commit 5927635bd17374da897e3d49264c536c68a09868
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed Oct 11 23:17:17 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 11 Oct 2017 23:17:17 +0200
|
||||
Subject: Do not store passwords by default
|
||||
|
||||
Do not store passwords by default
|
||||
---
|
||||
components/password_manager/core/browser/password_manager.cc | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
|
||||
index bbb0c20..cf171c0 100644
|
||||
--- a/components/password_manager/core/browser/password_manager.cc
|
||||
+++ b/components/password_manager/core/browser/password_manager.cc
|
||||
@@ -207,10 +207,10 @@ PasswordFormManager* FindMatchedManager(
|
||||
@@ -266,10 +266,10 @@ bool IsThereVisiblePasswordField(const FormData& form) {
|
||||
void PasswordManager::RegisterProfilePrefs(
|
||||
user_prefs::PrefRegistrySyncable* registry) {
|
||||
registry->RegisterBooleanPref(
|
||||
@@ -19,5 +20,8 @@ index bbb0c20..cf171c0 100644
|
||||
- prefs::kCredentialsEnableAutosignin, true,
|
||||
+ prefs::kCredentialsEnableAutosignin, false,
|
||||
user_prefs::PrefRegistrySyncable::SYNCABLE_PRIORITY_PREF);
|
||||
registry->RegisterBooleanPref(prefs::kWasObsoleteHttpDataCleaned, false);
|
||||
registry->RegisterStringPref(prefs::kSyncPasswordHash, std::string(),
|
||||
PrefRegistry::NO_REGISTRATION_FLAGS);
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+13
-12
@@ -1,15 +1,16 @@
|
||||
commit e1675be76a5ab56335b878dcef50043159efae7a
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu Oct 12 08:15:17 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 12 Oct 2017 08:15:17 +0200
|
||||
Subject: Disable NTP remote suggestions by default
|
||||
|
||||
Disable NTP remote suggestions by default
|
||||
---
|
||||
components/ntp_snippets/features.cc | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
|
||||
index 31823bbc..82eefe3 100644
|
||||
--- a/components/ntp_snippets/features.cc
|
||||
+++ b/components/ntp_snippets/features.cc
|
||||
@@ -38,16 +38,16 @@ const base::Feature* const kAllFeatures[] = {
|
||||
nullptr};
|
||||
@@ -39,13 +39,13 @@ const base::Feature kArticleSuggestionsExpandableHeader{
|
||||
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kArticleSuggestionsFeature{
|
||||
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
@@ -19,12 +20,12 @@ index 31823bbc..82eefe3 100644
|
||||
- "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.11.0
|
||||
|
||||
+13
-9
@@ -1,14 +1,18 @@
|
||||
commit a06e62ec32a189b8cd16266e47b386ebe00cc04c
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu Oct 12 07:41:20 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 15 Oct 2017 21:45:46 +0200
|
||||
Subject: Disable references to fonts.googleapis.com
|
||||
|
||||
Disables references to fonts.googleapis.com
|
||||
---
|
||||
.../dom_distiller/content/browser/dom_distiller_viewer_source.cc | 2 +-
|
||||
components/dom_distiller/core/html/preview.html | 2 +-
|
||||
components/dom_distiller/core/javascript/dom_distiller_viewer.js | 2 +-
|
||||
third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css | 3 +--
|
||||
4 files changed, 4 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
index bed7d31..cb8971f 100644
|
||||
--- a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
+++ b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
|
||||
@@ -309,7 +309,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
|
||||
@@ -310,7 +310,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
|
||||
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc()
|
||||
const {
|
||||
@@ -18,7 +22,6 @@ index bed7d31..cb8971f 100644
|
||||
|
||||
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() const {
|
||||
diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_distiller/core/html/preview.html
|
||||
index a4c07c5..894eb7f 100644
|
||||
--- a/components/dom_distiller/core/html/preview.html
|
||||
+++ b/components/dom_distiller/core/html/preview.html
|
||||
@@ -11,7 +11,7 @@ found in the LICENSE file.
|
||||
@@ -31,7 +34,6 @@ index a4c07c5..894eb7f 100644
|
||||
.english :lang(th) {display: none}
|
||||
.english :lang(zh) {display: none}
|
||||
diff --git a/components/dom_distiller/core/javascript/dom_distiller_viewer.js b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
index 61ef521..2640e3a 100644
|
||||
--- a/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
+++ b/components/dom_distiller/core/javascript/dom_distiller_viewer.js
|
||||
@@ -120,7 +120,7 @@ function maybeSetWebFont() {
|
||||
@@ -44,7 +46,6 @@ index 61ef521..2640e3a 100644
|
||||
e.type = 'text/css';
|
||||
document.head.appendChild(e);
|
||||
diff --git a/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css b/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css
|
||||
index f21cfe9..b7a5d7a 100644
|
||||
--- a/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css
|
||||
+++ b/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css
|
||||
@@ -12,8 +12,7 @@
|
||||
@@ -57,3 +58,6 @@ index f21cfe9..b7a5d7a 100644
|
||||
|
||||
body,
|
||||
table,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+12
-8
@@ -1,16 +1,17 @@
|
||||
commit aff93733a4c414f9182103b7384c23e6fa450a6a
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu Oct 26 16:59:03 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 26 Oct 2017 16:59:03 +0200
|
||||
Subject: Disable WebRTC by default
|
||||
|
||||
Disable WebRTC by default
|
||||
---
|
||||
chrome/browser/ui/browser_ui_prefs.cc | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
|
||||
index 946f7cd..96b79b1 100644
|
||||
--- a/chrome/browser/ui/browser_ui_prefs.cc
|
||||
+++ b/chrome/browser/ui/browser_ui_prefs.cc
|
||||
@@ -81,10 +81,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
|
||||
@@ -85,10 +85,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);
|
||||
@@ -20,5 +21,8 @@ index 946f7cd..96b79b1 100644
|
||||
- content::kWebRTCIPHandlingDefault);
|
||||
+ content::kWebRTCIPHandlingDisableNonProxiedUdp);
|
||||
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
|
||||
#endif
|
||||
registry->RegisterBooleanPref(prefs::kWebRtcEventLogCollectionAllowed, false);
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+15
-12
@@ -1,27 +1,28 @@
|
||||
commit 6a6024067d27a53fb58af282580da68f6cea8809
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri Oct 27 15:53:37 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 27 Oct 2017 15:53:37 +0200
|
||||
Subject: Disable data saver
|
||||
|
||||
Ported data reduction disable patch
|
||||
---
|
||||
.../java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 1 -
|
||||
.../chrome/browser/net/spdyproxy/DataReductionProxySettings.java | 2 ++
|
||||
.../browser/preferences/datareduction/DataReductionPromoUtils.java | 2 +-
|
||||
3 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||
index ccc8517..5c69672 100644
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
||||
@@ -144,7 +144,7 @@ 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)) {
|
||||
- mPages.add(pageOf(DataReductionProxyFirstRunFragment.class));
|
||||
+ //mPages.add(pageOf(DataReductionProxyFirstRunFragment.class));
|
||||
- mPages.add(new DataReductionProxyFirstRunFragment.Page());
|
||||
mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN);
|
||||
notifyAdapter = true;
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/net/spdyproxy/DataReductionProxySettings.java
|
||||
index 822f642..06e91a5 100644
|
||||
--- 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
|
||||
@@ -156,6 +156,7 @@ public class DataReductionProxySettings {
|
||||
@@ -153,6 +153,7 @@ public class DataReductionProxySettings {
|
||||
// DataReductionProxySettings is a singleton that lives forever and there's no clean
|
||||
// shutdown of Chrome on Android
|
||||
mNativeDataReductionProxySettings = nativeInit();
|
||||
@@ -29,7 +30,7 @@ index 822f642..06e91a5 100644
|
||||
}
|
||||
|
||||
/** Returns true if the SPDY proxy promo is allowed to be shown. */
|
||||
@@ -178,6 +179,7 @@ public class DataReductionProxySettings {
|
||||
@@ -175,6 +176,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) {
|
||||
@@ -38,7 +39,6 @@ index 822f642..06e91a5 100644
|
||||
&& ContextUtils.getAppSharedPreferences().getLong(
|
||||
DATA_REDUCTION_FIRST_ENABLED_TIME, 0)
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||
index bd42c89..b147765 100644
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPromoUtils.java
|
||||
@@ -68,7 +68,7 @@ public class DataReductionPromoUtils {
|
||||
@@ -50,3 +50,6 @@ index bd42c89..b147765 100644
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 26 Nov 2017 22:51:43 +0100
|
||||
Subject: Skip the first run and metrics
|
||||
|
||||
---
|
||||
.../chromium/chrome/browser/firstrun/FirstRunStatus.java | 8 ++++----
|
||||
.../chromium/chrome/browser/firstrun/FirstRunUtils.java | 16 ++++++----------
|
||||
.../browser/firstrun/ToSAndUMAFirstRunFragment.java | 6 ++++--
|
||||
3 files changed, 14 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
|
||||
@@ -36,11 +36,11 @@ public class FirstRunStatus {
|
||||
* includes ToS and Sign In pages if necessary.
|
||||
*/
|
||||
public static boolean getFirstRunFlowComplete() {
|
||||
- if (ContextUtils.getAppSharedPreferences().getBoolean(FIRST_RUN_FLOW_COMPLETE, false)) {
|
||||
- return true;
|
||||
+ boolean complete = ContextUtils.getAppSharedPreferences().getBoolean(FIRST_RUN_FLOW_COMPLETE, false);
|
||||
+ if (!complete) {
|
||||
+ setFirstRunFlowComplete(true);
|
||||
}
|
||||
- return CommandLine.getInstance().hasSwitch(
|
||||
- ChromeSwitches.FORCE_FIRST_RUN_FLOW_COMPLETE_FOR_TESTING);
|
||||
+ return true;
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunUtils.java
|
||||
@@ -30,16 +30,12 @@ public class FirstRunUtils {
|
||||
// - checkAnyUserHasSeenToS() may be true which needs to sync its state to the prefs.
|
||||
boolean javaPrefValue = javaPrefs.getBoolean(CACHED_TOS_ACCEPTED_PREF, false);
|
||||
boolean nativePrefValue = prefsBridge.isFirstRunEulaAccepted();
|
||||
- boolean userHasSeenTos =
|
||||
- ToSAckedReceiver.checkAnyUserHasSeenToS();
|
||||
- boolean isFirstRunComplete = FirstRunStatus.getFirstRunFlowComplete();
|
||||
- if (javaPrefValue || nativePrefValue || userHasSeenTos || isFirstRunComplete) {
|
||||
- if (!javaPrefValue) {
|
||||
- javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
|
||||
- }
|
||||
- if (!nativePrefValue) {
|
||||
- prefsBridge.setEulaAccepted();
|
||||
- }
|
||||
+
|
||||
+ if (!javaPrefValue) {
|
||||
+ javaPrefs.edit().putBoolean(CACHED_TOS_ACCEPTED_PREF, true).apply();
|
||||
+ }
|
||||
+ if (!nativePrefValue) {
|
||||
+ prefsBridge.setEulaAccepted();
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
|
||||
@@ -74,7 +74,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
|
||||
}
|
||||
});
|
||||
|
||||
- if (ChromeVersionInfo.isOfficialBuild()) {
|
||||
+/* if (ChromeVersionInfo.isOfficialBuild()) {
|
||||
int paddingStart = getResources().getDimensionPixelSize(
|
||||
R.dimen.fre_tos_checkbox_padding);
|
||||
ViewCompat.setPaddingRelative(mSendReportCheckBox,
|
||||
@@ -86,8 +86,10 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
|
||||
mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
|
||||
} else {
|
||||
mSendReportCheckBox.setVisibility(View.GONE);
|
||||
- }
|
||||
+ }*/
|
||||
|
||||
+ mSendReportCheckBox.setChecked(false);
|
||||
+ mSendReportCheckBox.setVisibility(View.GONE);
|
||||
mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan((view1) -> {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,248 @@
|
||||
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 | 42 ++++++++++++----------
|
||||
3 files changed, 31 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/main_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/main_preferences.xml
|
||||
@@ -10,10 +10,10 @@
|
||||
android:key="account_section"
|
||||
android:order="0"
|
||||
android:title="@string/prefs_section_account"/>
|
||||
- <org.chromium.chrome.browser.preferences.SignInPreference
|
||||
+ <!-- org.chromium.chrome.browser.preferences.SignInPreference
|
||||
android:key="sign_in"
|
||||
android:order="1"
|
||||
- android:title="@string/sign_in_to_chrome"/>
|
||||
+ android:title="@string/sign_in_to_chrome"/-->
|
||||
<org.chromium.chrome.browser.preferences.ChromeBasePreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.SyncAndServicesPreferences"
|
||||
android:key="sync_and_services"
|
||||
@@ -79,11 +79,11 @@
|
||||
android:key="languages"
|
||||
android:order="14"
|
||||
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="15"
|
||||
- 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
|
||||
@@ -114,7 +114,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.SnackbarManager;
|
||||
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
|
||||
import org.chromium.chrome.browser.sync.ProfileSyncService;
|
||||
@@ -252,7 +252,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
protected ReaderModeManager mReaderModeManager;
|
||||
private SnackbarManager mSnackbarManager;
|
||||
private ModalDialogManager mModalDialogManager;
|
||||
- private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
|
||||
+ //private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
|
||||
private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
|
||||
private AppMenuHandler mAppMenuHandler;
|
||||
private ToolbarManager mToolbarManager;
|
||||
@@ -600,6 +600,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
mTabModelSelectorTabObserver = new TabModelSelectorTabObserver(mTabModelSelector) {
|
||||
@Override
|
||||
public void didFirstVisuallyNonEmptyPaint(Tab tab) {
|
||||
+/*
|
||||
// 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.
|
||||
@@ -613,6 +614,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,21 +35,21 @@ import java.util.Map;
|
||||
public class MainPreferences extends PreferenceFragment
|
||||
implements SigninManager.SignInStateObserver, TemplateUrlService.LoadListener {
|
||||
public static final String PREF_ACCOUNT_SECTION = "account_section";
|
||||
- public static final String PREF_SIGN_IN = "sign_in";
|
||||
+// public static final String PREF_SIGN_IN = "sign_in";
|
||||
public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
|
||||
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);
|
||||
@@ -65,25 +65,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
|
||||
@@ -96,9 +100,9 @@ public class MainPreferences extends PreferenceFragment
|
||||
PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
|
||||
cachePreferences();
|
||||
|
||||
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
|
||||
+/* if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
|
||||
mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
|
||||
- } else {
|
||||
+ } else */{
|
||||
getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
|
||||
getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
|
||||
}
|
||||
@@ -106,7 +110,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
|
||||
@@ -162,7 +166,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) {
|
||||
@@ -171,12 +175,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()) {
|
||||
@@ -197,9 +195,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) {
|
||||
@@ -250,11 +250,11 @@ public class MainPreferences extends PreferenceFragment
|
||||
|
||||
private void onSignInPreferenceStateChanged() {
|
||||
// Remove "Account" section header if the personalized sign-in promo is shown.
|
||||
- if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
|
||||
+// if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
|
||||
removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
|
||||
- } else {
|
||||
+/* } else {
|
||||
addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
|
||||
- }
|
||||
+ }*/
|
||||
}
|
||||
|
||||
// TemplateUrlService.LoadListener implementation.
|
||||
@@ -280,9 +280,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();
|
||||
}
|
||||
@@ -304,11 +306,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.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -601,7 +601,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()
|
||||
@@ -619,7 +619,7 @@ public class ChromeTabbedActivity
|
||||
ChromePreferenceManager.PROMOS_SKIPPED_ON_FIRST_START, true);
|
||||
}
|
||||
|
||||
- if (!isShowingPromo) {
|
||||
+ if (!isShowingPromo) */ {
|
||||
ToolbarButtonInProductHelpController.maybeShowColdStartIPH(this);
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
From: Serg <serg.zhukovsky@gmail.com>
|
||||
Date: Wed, 22 Mar 2017 19:10:30 -0400
|
||||
Subject: Remove 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 | 23 +++------------------
|
||||
7 files changed, 7 insertions(+), 24 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 81658269058c..518be48cb3c5 100644
|
||||
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
@@ -50,9 +50,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"
|
||||
@@ -73,11 +73,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 1274fd3c7118..57b29816fd96 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
|
||||
@@ -38,7 +38,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
// are defined in the SiteSettingsCategory, additional keys
|
||||
// are listed here.
|
||||
static final String MEDIA_KEY = "media";
|
||||
- static final String TRANSLATE_KEY = "translate";
|
||||
|
||||
// Whether the Protected Content menu is available for display.
|
||||
boolean mProtectedContentMenuAvailable;
|
||||
@@ -84,12 +83,12 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
for (@SiteSettingsCategory.Type int i = 0; i < SiteSettingsCategory.Type.NUM_ENTRIES;
|
||||
i++) {
|
||||
if (i == SiteSettingsCategory.Type.AUTOPLAY
|
||||
- || i == SiteSettingsCategory.Type.PROTECTED_MEDIA)
|
||||
+ || i == SiteSettingsCategory.Type.PROTECTED_MEDIA
|
||||
+ || i == SiteSettingsCategory.Type.BACKGROUND_SYNC)
|
||||
continue;
|
||||
getPreferenceScreen().removePreference(findPreference(i));
|
||||
}
|
||||
getPreferenceScreen().removePreference(findPreference(MEDIA_KEY));
|
||||
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
|
||||
} else {
|
||||
// If both Autoplay and Protected Content menus are available, they'll be tucked under
|
||||
// the Media key. Otherwise, we can remove the Media menu entry.
|
||||
@@ -116,11 +115,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
getPreferenceScreen().removePreference(
|
||||
findPreference(SiteSettingsCategory.Type.CLIPBOARD));
|
||||
}
|
||||
- // 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)) {
|
||||
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
|
||||
- }
|
||||
if (!ChromeFeatureList.isEnabled(ChromeFeatureList.GENERIC_SENSOR_EXTRA_CLASSES)) {
|
||||
getPreferenceScreen().removePreference(
|
||||
findPreference(SiteSettingsCategory.Type.SENSORS));
|
||||
@@ -131,10 +125,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
private void updatePreferenceStates() {
|
||||
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
|
||||
|
||||
- // Translate preference.
|
||||
- Preference translatePref = findPreference(TRANSLATE_KEY);
|
||||
- if (translatePref != null) setTranslateStateSummary(translatePref);
|
||||
-
|
||||
// Preferences that navigate to Website Settings.
|
||||
List<Integer> websitePrefs = new ArrayList<Integer>();
|
||||
if (mMediaSubMenu) {
|
||||
@@ -149,7 +139,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
if (!mProtectedContentMenuAvailable) {
|
||||
websitePrefs.add(SiteSettingsCategory.Type.AUTOPLAY);
|
||||
}
|
||||
- websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
|
||||
+ //websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
|
||||
websitePrefs.add(SiteSettingsCategory.Type.CAMERA);
|
||||
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
|
||||
websitePrefs.add(SiteSettingsCategory.Type.CLIPBOARD);
|
||||
@@ -247,11 +237,4 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
preference.getTitle().toString());
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- private void setTranslateStateSummary(Preference translatePref) {
|
||||
- boolean translateEnabled = PrefServiceBridge.getInstance().isTranslateEnabled();
|
||||
- translatePref.setSummary(translateEnabled
|
||||
- ? R.string.website_settings_category_ask
|
||||
- : R.string.website_settings_category_blocked);
|
||||
- }
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:43:35 +0100
|
||||
Subject: Never send any crash upload data
|
||||
|
||||
---
|
||||
chrome/browser/tracing/crash_service_uploader.cc | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/tracing/crash_service_uploader.cc
|
||||
--- a/chrome/browser/tracing/crash_service_uploader.cc
|
||||
+++ b/chrome/browser/tracing/crash_service_uploader.cc
|
||||
@@ -126,6 +126,9 @@ void TraceCrashServiceUploader::DoUpload(
|
||||
std::unique_ptr<const base::DictionaryValue> metadata,
|
||||
const UploadProgressCallback& progress_callback,
|
||||
UploadDoneCallback done_callback) {
|
||||
+
|
||||
+ return;
|
||||
+
|
||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
|
||||
progress_callback_ = progress_callback;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -71,7 +71,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.11.0
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 14 Feb 2018 12:56:01 +0100
|
||||
Subject: Never fetch popular sites
|
||||
|
||||
---
|
||||
components/ntp_tiles/popular_sites_impl.cc | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
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
|
||||
@@ -291,6 +291,12 @@ bool PopularSitesImpl::MaybeStartFetch(bool force_download,
|
||||
DCHECK(!callback_);
|
||||
callback_ = callback;
|
||||
|
||||
+ if (force_download) {
|
||||
+ callback_.Run(true);
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+
|
||||
const base::Time last_download_time = base::Time::FromInternalValue(
|
||||
prefs_->GetInt64(prefs::kPopularSitesLastDownloadPref));
|
||||
const base::TimeDelta time_since_last_download =
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:14:39 +0100
|
||||
Subject: ungoogled-chromium: Disable signin
|
||||
|
||||
---
|
||||
chrome/browser/ui/chrome_pages.cc | 8 ++------
|
||||
components/signin/core/browser/signin_manager_base.cc | 2 +-
|
||||
2 files changed, 3 insertions(+), 7 deletions(-)
|
||||
|
||||
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
|
||||
@@ -71,12 +71,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, 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
|
||||
@@ -383,6 +377,7 @@ void ShowSearchEngineSettings(Browser* browser) {
|
||||
#if !defined(OS_ANDROID)
|
||||
void ShowBrowserSignin(Browser* browser,
|
||||
signin_metrics::AccessPoint access_point) {
|
||||
+#if 0
|
||||
Profile* original_profile = browser->profile()->GetOriginalProfile();
|
||||
SigninManagerBase* manager =
|
||||
SigninManagerFactory::GetForProfile(original_profile);
|
||||
@@ -434,6 +429,7 @@ void ShowBrowserSignin(Browser* browser,
|
||||
access_point);
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ShowBrowserSigninOrSettings(Browser* browser,
|
||||
diff --git a/components/signin/core/browser/signin_manager_base.cc b/components/signin/core/browser/signin_manager_base.cc
|
||||
--- a/components/signin/core/browser/signin_manager_base.cc
|
||||
+++ b/components/signin/core/browser/signin_manager_base.cc
|
||||
@@ -155,7 +155,7 @@ void SigninManagerBase::Initialize(PrefService* local_state) {
|
||||
bool SigninManagerBase::IsInitialized() const { return initialized_; }
|
||||
|
||||
bool SigninManagerBase::IsSigninAllowed() const {
|
||||
- return client_->GetPrefs()->GetBoolean(prefs::kSigninAllowed);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
AccountInfo SigninManagerBase::GetAuthenticatedAccountInfo() const {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:21:36 +0100
|
||||
Subject: ungoogled-chromium: Disable webRTC log uploader
|
||||
|
||||
---
|
||||
chrome/browser/media/webrtc/webrtc_log_uploader.cc | 28 ++++------------------
|
||||
1 file changed, 4 insertions(+), 24 deletions(-)
|
||||
|
||||
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
|
||||
@@ -117,30 +117,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
|
||||
DCHECK(meta_data.get());
|
||||
DCHECK(!upload_done_data.log_path.empty());
|
||||
|
||||
- std::string compressed_log;
|
||||
- CompressLog(&compressed_log, log_buffer.get());
|
||||
-
|
||||
- std::string local_log_id;
|
||||
-
|
||||
- if (base::PathExists(upload_done_data.log_path)) {
|
||||
- webrtc_logging::DeleteOldWebRtcLogFiles(upload_done_data.log_path);
|
||||
-
|
||||
- local_log_id = base::NumberToString(base::Time::Now().ToDoubleT());
|
||||
- base::FilePath log_file_path =
|
||||
- upload_done_data.log_path.AppendASCII(local_log_id)
|
||||
- .AddExtension(FILE_PATH_LITERAL(".gz"));
|
||||
- WriteCompressedLogToFile(compressed_log, log_file_path);
|
||||
-
|
||||
- base::FilePath log_list_path =
|
||||
- webrtc_logging::TextLogList::GetWebRtcLogListFileForDirectory(
|
||||
- upload_done_data.log_path);
|
||||
- AddLocallyStoredLogInfoToUploadListFile(log_list_path, local_log_id);
|
||||
- }
|
||||
-
|
||||
- WebRtcLogUploadDoneData upload_done_data_with_log_id = upload_done_data;
|
||||
- upload_done_data_with_log_id.local_log_id = local_log_id;
|
||||
- PrepareMultipartPostData(compressed_log, std::move(meta_data),
|
||||
- upload_done_data_with_log_id);
|
||||
+ NotifyUploadDone(net::HTTP_OK, "", upload_done_data);
|
||||
}
|
||||
|
||||
void WebRtcLogUploader::PrepareMultipartPostData(
|
||||
@@ -151,6 +128,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
|
||||
DCHECK(!compressed_log.empty());
|
||||
DCHECK(meta_data.get());
|
||||
|
||||
+ NotifyUploadDone(net::HTTP_OK, "", upload_done_data);
|
||||
+ return;
|
||||
+
|
||||
std::unique_ptr<std::string> post_data(new std::string());
|
||||
SetupMultipart(post_data.get(), compressed_log,
|
||||
upload_done_data.incoming_rtp_dump,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:28:11 +0100
|
||||
Subject: ungoogled-chromium: Disable untraceable URLs
|
||||
|
||||
Disable additional URLs that are not caught by the "trk" scheme
|
||||
---
|
||||
chrome/browser/android/rlz/rlz_ping_handler.cc | 2 +-
|
||||
chrome/browser/plugins/plugins_resource_service.cc | 5 +----
|
||||
chrome/browser/safe_browsing/client_side_model_loader.cc | 6 ++----
|
||||
chrome/browser/safe_browsing/client_side_model_loader.h | 1 -
|
||||
rlz/lib/financial_ping.cc | 4 ++--
|
||||
rlz/lib/lib_values.cc | 1 -
|
||||
rlz/lib/lib_values.h | 1 -
|
||||
7 files changed, 6 insertions(+), 14 deletions(-)
|
||||
|
||||
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
|
||||
@@ -75,7 +75,7 @@ void RlzPingHandler::Ping(
|
||||
DCHECK_EQ(id.length(), 50u);
|
||||
|
||||
GURL request_url(base::StringPrintf(
|
||||
- "https://%s%s?", rlz_lib::kFinancialServer, rlz_lib::kFinancialPingPath));
|
||||
+ "about:blank"));
|
||||
request_url = net::AppendQueryParameter(
|
||||
request_url, rlz_lib::kProductSignatureCgiVariable, "chrome");
|
||||
request_url =
|
||||
diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc
|
||||
--- a/chrome/browser/plugins/plugins_resource_service.cc
|
||||
+++ b/chrome/browser/plugins/plugins_resource_service.cc
|
||||
@@ -53,9 +53,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
|
||||
// Delay between calls to update the cache 1 day and 2 minutes in testing mode.
|
||||
const int kCacheUpdateDelayMs = 24 * 60 * 60 * 1000;
|
||||
|
||||
-const char kPluginsServerUrl[] =
|
||||
- "https://www.gstatic.com/chrome/config/plugins_3/";
|
||||
-
|
||||
GURL GetPluginsServerURL() {
|
||||
std::string filename;
|
||||
#if defined(OS_WIN)
|
||||
@@ -70,7 +67,7 @@ GURL GetPluginsServerURL() {
|
||||
#error Unknown platform
|
||||
#endif
|
||||
|
||||
- return GURL(kPluginsServerUrl + filename);
|
||||
+ return GURL("about:blank");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
diff --git a/chrome/browser/safe_browsing/client_side_model_loader.cc b/chrome/browser/safe_browsing/client_side_model_loader.cc
|
||||
--- a/chrome/browser/safe_browsing/client_side_model_loader.cc
|
||||
+++ b/chrome/browser/safe_browsing/client_side_model_loader.cc
|
||||
@@ -35,8 +35,6 @@ namespace safe_browsing {
|
||||
// Model Loader strings
|
||||
const size_t ModelLoader::kMaxModelSizeBytes = 150 * 1024;
|
||||
const int ModelLoader::kClientModelFetchIntervalMs = 3600 * 1000;
|
||||
-const char ModelLoader::kClientModelUrlPrefix[] =
|
||||
- "https://ssl.gstatic.com/safebrowsing/csd/";
|
||||
const char ModelLoader::kClientModelNamePattern[] =
|
||||
"client_model_v5%s_variation_%d.pb";
|
||||
const char ModelLoader::kClientModelFinchExperiment[] =
|
||||
@@ -90,7 +88,7 @@ ModelLoader::ModelLoader(
|
||||
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
|
||||
bool is_extended_reporting)
|
||||
: name_(FillInModelName(is_extended_reporting, GetModelNumber())),
|
||||
- url_(kClientModelUrlPrefix + name_),
|
||||
+ url_("about:blank"),
|
||||
update_renderers_callback_(update_renderers_callback),
|
||||
url_loader_factory_(url_loader_factory),
|
||||
weak_factory_(this) {
|
||||
@@ -103,7 +101,7 @@ ModelLoader::ModelLoader(
|
||||
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
|
||||
const std::string& model_name)
|
||||
: name_(model_name),
|
||||
- url_(kClientModelUrlPrefix + name_),
|
||||
+ url_("about:blank"),
|
||||
update_renderers_callback_(update_renderers_callback),
|
||||
url_loader_factory_(url_loader_factory),
|
||||
weak_factory_(this) {
|
||||
diff --git a/chrome/browser/safe_browsing/client_side_model_loader.h b/chrome/browser/safe_browsing/client_side_model_loader.h
|
||||
--- a/chrome/browser/safe_browsing/client_side_model_loader.h
|
||||
+++ b/chrome/browser/safe_browsing/client_side_model_loader.h
|
||||
@@ -42,7 +42,6 @@ class ModelLoader {
|
||||
static const int kClientModelFetchIntervalMs;
|
||||
static const char kClientModelFinchExperiment[];
|
||||
static const char kClientModelFinchParam[];
|
||||
- static const char kClientModelUrlPrefix[];
|
||||
static const char kClientModelNamePattern[];
|
||||
|
||||
// Constructs a model loader to fetch a model using |url_loader_factory|.
|
||||
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
|
||||
@@ -339,7 +339,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request,
|
||||
|
||||
// Open network connection.
|
||||
InternetHandle connection_handle = InternetConnectA(inet_handle,
|
||||
- kFinancialServer, kFinancialPort, "", "", INTERNET_SERVICE_HTTP,
|
||||
+ "about:blank", kFinancialPort, "", "", INTERNET_SERVICE_HTTP,
|
||||
INTERNET_FLAG_NO_CACHE_WRITE, 0);
|
||||
if (!connection_handle)
|
||||
return PING_FAILURE;
|
||||
@@ -383,7 +383,7 @@ FinancialPing::PingResponse FinancialPing::PingServer(const char* request,
|
||||
return PING_SUCCESSFUL;
|
||||
#else
|
||||
std::string url =
|
||||
- base::StringPrintf("https://%s%s", kFinancialServer, request);
|
||||
+ base::StringPrintf("about:blank");
|
||||
|
||||
// Use a waitable event to cause this function to block, to match the
|
||||
// wininet implementation.
|
||||
diff --git a/rlz/lib/lib_values.cc b/rlz/lib/lib_values.cc
|
||||
--- a/rlz/lib/lib_values.cc
|
||||
+++ b/rlz/lib/lib_values.cc
|
||||
@@ -41,7 +41,6 @@ const char kSetDccResponseVariable[] = "set_dcc";
|
||||
//
|
||||
|
||||
const char kFinancialPingPath[] = "/tools/pso/ping";
|
||||
-const char kFinancialServer[] = "clients1.google.com";
|
||||
const int kFinancialPort = 443;
|
||||
|
||||
// Ping times in 100-nanosecond intervals.
|
||||
diff --git a/rlz/lib/lib_values.h b/rlz/lib/lib_values.h
|
||||
--- a/rlz/lib/lib_values.h
|
||||
+++ b/rlz/lib/lib_values.h
|
||||
@@ -72,7 +72,6 @@ extern const char kSetDccResponseVariable[];
|
||||
//
|
||||
|
||||
extern const char kFinancialPingPath[];
|
||||
-extern const char kFinancialServer[];
|
||||
|
||||
extern const int kFinancialPort;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:28:53 +0100
|
||||
Subject: ungoogled-chromium: Disable translate integration
|
||||
|
||||
---
|
||||
components/translate/content/renderer/translate_helper.cc | 4 +++-
|
||||
components/translate/core/browser/translate_manager.cc | 5 +++--
|
||||
components/translate/core/browser/translate_script.cc | 3 +--
|
||||
3 files changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/components/translate/content/renderer/translate_helper.cc b/components/translate/content/renderer/translate_helper.cc
|
||||
--- a/components/translate/content/renderer/translate_helper.cc
|
||||
+++ b/components/translate/content/renderer/translate_helper.cc
|
||||
@@ -74,7 +74,9 @@ TranslateHelper::TranslateHelper(content::RenderFrame* render_frame,
|
||||
world_id_(world_id),
|
||||
extension_scheme_(extension_scheme),
|
||||
binding_(this),
|
||||
- weak_method_factory_(this) {}
|
||||
+ weak_method_factory_(this) {
|
||||
+ CancelPendingTranslation();
|
||||
+}
|
||||
|
||||
TranslateHelper::~TranslateHelper() {
|
||||
}
|
||||
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
|
||||
@@ -133,8 +133,9 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
|
||||
if (net::NetworkChangeNotifier::IsOffline())
|
||||
return;
|
||||
|
||||
- if (!ignore_missing_key_for_testing_ &&
|
||||
- !::google_apis::HasAPIKeyConfigured()) {
|
||||
+// if (!ignore_missing_key_for_testing_ &&
|
||||
+// !::google_apis::HasAPIKeyConfigured()) {
|
||||
+ if (true) {
|
||||
// Without an API key, translate won't work, so don't offer to translate in
|
||||
// the first place. Leave prefs::kOfferTranslateEnabled on, though, because
|
||||
// that settings syncs and we don't want to turn off translate everywhere
|
||||
diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc
|
||||
--- a/components/translate/core/browser/translate_script.cc
|
||||
+++ b/components/translate/core/browser/translate_script.cc
|
||||
@@ -154,9 +154,8 @@ void TranslateScript::OnScriptFetchComplete(bool success,
|
||||
base::StringAppendF(&data_, "var serverParams = '%s';\n",
|
||||
server_params.c_str());
|
||||
|
||||
- GURL security_origin = translate::GetTranslateSecurityOrigin();
|
||||
base::StringAppendF(
|
||||
- &data_, "var securityOrigin = '%s';", security_origin.spec().c_str());
|
||||
+ &data_, "var securityOrigin = '';");
|
||||
|
||||
// Load embedded translate.js.
|
||||
base::StringPiece str =
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:29:30 +0100
|
||||
Subject: ungoogled-chromium: Disable profile avatar downloading
|
||||
|
||||
Added some Bromite-specific further improvements
|
||||
---
|
||||
chrome/browser/BUILD.gn | 2 --
|
||||
chrome/browser/profiles/profile_attributes_entry.cc | 14 --------------
|
||||
chrome/browser/profiles/profile_avatar_downloader.cc | 8 +-------
|
||||
3 files changed, 1 insertion(+), 23 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
--- a/chrome/browser/BUILD.gn
|
||||
+++ b/chrome/browser/BUILD.gn
|
||||
@@ -1253,8 +1253,6 @@ jumbo_split_static_library("browser") {
|
||||
"profiles/profile_attributes_entry.h",
|
||||
"profiles/profile_attributes_storage.cc",
|
||||
"profiles/profile_attributes_storage.h",
|
||||
- "profiles/profile_avatar_downloader.cc",
|
||||
- "profiles/profile_avatar_downloader.h",
|
||||
"profiles/profile_avatar_icon_util.cc",
|
||||
"profiles/profile_avatar_icon_util.h",
|
||||
"profiles/profile_destroyer.cc",
|
||||
diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc
|
||||
--- a/chrome/browser/profiles/profile_attributes_entry.cc
|
||||
+++ b/chrome/browser/profiles/profile_attributes_entry.cc
|
||||
@@ -83,20 +83,6 @@ base::string16 ProfileAttributesEntry::GetUserName() const {
|
||||
}
|
||||
|
||||
const gfx::Image& ProfileAttributesEntry::GetAvatarIcon() const {
|
||||
- if (IsUsingGAIAPicture()) {
|
||||
- const gfx::Image* image = GetGAIAPicture();
|
||||
- if (image)
|
||||
- return *image;
|
||||
- }
|
||||
-
|
||||
-#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
|
||||
- // Use the high resolution version of the avatar if it exists. Mobile and
|
||||
- // ChromeOS don't need the high resolution version so no need to fetch it.
|
||||
- const gfx::Image* image = GetHighResAvatar();
|
||||
- if (image)
|
||||
- return *image;
|
||||
-#endif
|
||||
-
|
||||
int resource_id =
|
||||
profiles::GetDefaultAvatarIconResourceIDAtIndex(GetAvatarIconIndex());
|
||||
return ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(
|
||||
diff --git a/chrome/browser/profiles/profile_avatar_downloader.cc b/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||
--- a/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||
+++ b/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||
@@ -16,19 +16,13 @@
|
||||
#include "net/traffic_annotation/network_traffic_annotation.h"
|
||||
#include "ui/gfx/image/image.h"
|
||||
|
||||
-namespace {
|
||||
-const char kHighResAvatarDownloadUrlPrefix[] =
|
||||
- "https://www.gstatic.com/chrome/profile_avatars/";
|
||||
-}
|
||||
-
|
||||
ProfileAvatarDownloader::ProfileAvatarDownloader(
|
||||
size_t icon_index,
|
||||
const FetchCompleteCallback& callback)
|
||||
: icon_index_(icon_index),
|
||||
callback_(callback) {
|
||||
DCHECK(!callback_.is_null());
|
||||
- GURL url(std::string(kHighResAvatarDownloadUrlPrefix) +
|
||||
- profiles::GetDefaultAvatarIconFileNameAtIndex(icon_index));
|
||||
+ GURL url(std::string("about:blank"));
|
||||
net::NetworkTrafficAnnotationTag traffic_annotation =
|
||||
net::DefineNetworkTrafficAnnotation("profile_avatar", R"(
|
||||
semantics {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:30:30 +0100
|
||||
Subject: ungoogled-chromium: Disable intranet redirect detector
|
||||
|
||||
Disables the intranet redirect detector. It generates extra DNS requests and the functionality using this is disabled.
|
||||
|
||||
See this page for more information: https://mikewest.org/2012/02/chrome-connects-to-three-random-domains-at-startup
|
||||
---
|
||||
chrome/browser/intranet_redirect_detector.cc | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intranet_redirect_detector.cc
|
||||
--- a/chrome/browser/intranet_redirect_detector.cc
|
||||
+++ b/chrome/browser/intranet_redirect_detector.cc
|
||||
@@ -76,9 +76,7 @@ void IntranetRedirectDetector::FinishSleep() {
|
||||
simple_loaders_.clear();
|
||||
resulting_origins_.clear();
|
||||
|
||||
- const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
|
||||
- if (cmd_line->HasSwitch(switches::kDisableBackgroundNetworking))
|
||||
- return;
|
||||
+ return;
|
||||
|
||||
DCHECK(simple_loaders_.empty() && resulting_origins_.empty());
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,375 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:36:33 +0100
|
||||
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/common/google_util.cc | 194 ++-------------------
|
||||
components/search_engines/template_url.cc | 6 +-
|
||||
net/base/url_util.cc | 22 ---
|
||||
5 files changed, 14 insertions(+), 245 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
|
||||
+++ b/chrome/browser/page_load_metrics/page_load_metrics_util.cc
|
||||
@@ -169,9 +169,7 @@ bool DidObserveLoadingBehaviorInAnyFrame(
|
||||
}
|
||||
|
||||
bool IsGoogleSearchHostname(const GURL& url) {
|
||||
- base::Optional<std::string> result =
|
||||
- page_load_metrics::GetGoogleHostnamePrefix(url);
|
||||
- return result && result.value() == "www";
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool IsGoogleSearchResultUrl(const GURL& url) {
|
||||
diff --git a/chrome/common/page_load_metrics/page_load_metrics_util.cc b/chrome/common/page_load_metrics/page_load_metrics_util.cc
|
||||
--- a/chrome/common/page_load_metrics/page_load_metrics_util.cc
|
||||
+++ b/chrome/common/page_load_metrics/page_load_metrics_util.cc
|
||||
@@ -12,38 +12,7 @@
|
||||
namespace page_load_metrics {
|
||||
|
||||
base::Optional<std::string> GetGoogleHostnamePrefix(const GURL& url) {
|
||||
- const size_t registry_length =
|
||||
- net::registry_controlled_domains::GetRegistryLength(
|
||||
- url,
|
||||
-
|
||||
- // Do not include unknown registries (registries that don't have any
|
||||
- // matches in effective TLD names).
|
||||
- net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
|
||||
-
|
||||
- // Do not include private registries, such as appspot.com. We don't
|
||||
- // want to match URLs like www.google.appspot.com.
|
||||
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
|
||||
-
|
||||
- const base::StringPiece hostname = url.host_piece();
|
||||
- if (registry_length == 0 || registry_length == std::string::npos ||
|
||||
- registry_length >= hostname.length()) {
|
||||
- return base::Optional<std::string>();
|
||||
- }
|
||||
-
|
||||
- // Removes the tld and the preceding dot.
|
||||
- const base::StringPiece hostname_minus_registry =
|
||||
- hostname.substr(0, hostname.length() - (registry_length + 1));
|
||||
-
|
||||
- if (hostname_minus_registry == "google")
|
||||
- return std::string("");
|
||||
-
|
||||
- if (!base::EndsWith(hostname_minus_registry, ".google",
|
||||
- base::CompareCase::INSENSITIVE_ASCII)) {
|
||||
- return base::Optional<std::string>();
|
||||
- }
|
||||
-
|
||||
- return std::string(hostname_minus_registry.substr(
|
||||
- 0, hostname_minus_registry.length() - strlen(".google")));
|
||||
+ return base::Optional<std::string>();
|
||||
}
|
||||
|
||||
bool IsGoogleHostname(const GURL& url) {
|
||||
diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc
|
||||
--- a/components/google/core/common/google_util.cc
|
||||
+++ b/components/google/core/common/google_util.cc
|
||||
@@ -42,118 +42,16 @@ namespace {
|
||||
|
||||
bool gUseMockLinkDoctorBaseURLForTesting = false;
|
||||
|
||||
-bool IsPathHomePageBase(base::StringPiece path) {
|
||||
- return (path == "/") || (path == "/webhp");
|
||||
-}
|
||||
-
|
||||
-// Removes a single trailing dot if present in |host|.
|
||||
-void StripTrailingDot(base::StringPiece* host) {
|
||||
- if (host->ends_with("."))
|
||||
- host->remove_suffix(1);
|
||||
-}
|
||||
-
|
||||
-// True if the given canonical |host| is "[www.]<domain_in_lower_case>.<TLD>"
|
||||
-// with a valid TLD. If |subdomain_permission| is ALLOW_SUBDOMAIN, we check
|
||||
-// against host "*.<domain_in_lower_case>.<TLD>" instead. Will return the TLD
|
||||
-// string in |tld|, if specified and the |host| can be parsed.
|
||||
-bool IsValidHostName(base::StringPiece host,
|
||||
- base::StringPiece domain_in_lower_case,
|
||||
- SubdomainPermission subdomain_permission,
|
||||
- base::StringPiece* tld) {
|
||||
- // Fast path to avoid searching the registry set.
|
||||
- if (host.find(domain_in_lower_case) == base::StringPiece::npos)
|
||||
- return false;
|
||||
-
|
||||
- size_t tld_length =
|
||||
- net::registry_controlled_domains::GetCanonicalHostRegistryLength(
|
||||
- host, net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
|
||||
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
|
||||
- if ((tld_length == 0) || (tld_length == std::string::npos))
|
||||
- return false;
|
||||
-
|
||||
- // Removes the tld and the preceding dot.
|
||||
- base::StringPiece host_minus_tld =
|
||||
- host.substr(0, host.length() - tld_length - 1);
|
||||
-
|
||||
- if (tld)
|
||||
- *tld = host.substr(host.length() - tld_length);
|
||||
-
|
||||
- if (base::LowerCaseEqualsASCII(host_minus_tld, domain_in_lower_case))
|
||||
- return true;
|
||||
-
|
||||
- if (subdomain_permission == ALLOW_SUBDOMAIN) {
|
||||
- std::string dot_domain(".");
|
||||
- domain_in_lower_case.AppendToString(&dot_domain);
|
||||
- return base::EndsWith(host_minus_tld, dot_domain,
|
||||
- base::CompareCase::INSENSITIVE_ASCII);
|
||||
- }
|
||||
-
|
||||
- std::string www_domain("www.");
|
||||
- domain_in_lower_case.AppendToString(&www_domain);
|
||||
- return base::LowerCaseEqualsASCII(host_minus_tld, www_domain);
|
||||
-}
|
||||
-
|
||||
-// True if |url| is a valid URL with HTTP or HTTPS scheme. If |port_permission|
|
||||
-// is DISALLOW_NON_STANDARD_PORTS, this also requires |url| to use the standard
|
||||
-// port for its scheme (80 for HTTP, 443 for HTTPS).
|
||||
-bool IsValidURL(const GURL& url, PortPermission port_permission) {
|
||||
- return url.is_valid() && url.SchemeIsHTTPOrHTTPS() &&
|
||||
- (url.port().empty() || (port_permission == ALLOW_NON_STANDARD_PORTS));
|
||||
-}
|
||||
-
|
||||
-bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host,
|
||||
- SubdomainPermission subdomain_permission) {
|
||||
- const GURL& base_url(CommandLineGoogleBaseURL());
|
||||
- if (base_url.is_valid() && (canonical_host == base_url.host_piece()))
|
||||
- return true;
|
||||
-
|
||||
- base::StringPiece tld;
|
||||
- if (!IsValidHostName(canonical_host, "google", subdomain_permission, &tld))
|
||||
- return false;
|
||||
-
|
||||
- // Remove the trailing dot from tld if present, as for google domain it's the
|
||||
- // same page.
|
||||
- StripTrailingDot(&tld);
|
||||
-
|
||||
- CR_DEFINE_STATIC_LOCAL(std::set<std::string>, google_tlds,
|
||||
- ({GOOGLE_TLD_LIST}));
|
||||
- return base::ContainsKey(google_tlds, tld.as_string());
|
||||
-}
|
||||
-
|
||||
-// True if |url| is a valid URL with a host that is in the static list of
|
||||
-// Google subdomains for google search, and an HTTP or HTTPS scheme. Requires
|
||||
-// |url| to use the standard port for its scheme (80 for HTTP, 443 for HTTPS).
|
||||
-bool IsGoogleSearchSubdomainUrl(const GURL& url) {
|
||||
- if (!IsValidURL(url, PortPermission::DISALLOW_NON_STANDARD_PORTS))
|
||||
- return false;
|
||||
-
|
||||
- base::StringPiece host(url.host_piece());
|
||||
- StripTrailingDot(&host);
|
||||
-
|
||||
- CR_DEFINE_STATIC_LOCAL(std::set<std::string>, google_subdomains,
|
||||
- ({"ipv4.google.com", "ipv6.google.com"}));
|
||||
-
|
||||
- return base::ContainsKey(google_subdomains, host.as_string());
|
||||
-}
|
||||
-
|
||||
} // namespace
|
||||
|
||||
// Global functions -----------------------------------------------------------
|
||||
|
||||
bool HasGoogleSearchQueryParam(base::StringPiece str) {
|
||||
- url::Component query(0, static_cast<int>(str.length())), key, value;
|
||||
- while (url::ExtractQueryKeyValue(str.data(), &query, &key, &value)) {
|
||||
- base::StringPiece key_str = str.substr(key.begin, key.len);
|
||||
- if (key_str == "q" || key_str == "as_q")
|
||||
- return true;
|
||||
- }
|
||||
return false;
|
||||
}
|
||||
|
||||
GURL LinkDoctorBaseURL() {
|
||||
- if (gUseMockLinkDoctorBaseURLForTesting)
|
||||
- return GURL("http://mock.linkdoctor.url/for?testing");
|
||||
- return GURL(LINKDOCTOR_SERVER_REQUEST_URL);
|
||||
+ return GURL();
|
||||
}
|
||||
|
||||
void SetMockLinkDoctorBaseURLForTesting() {
|
||||
@@ -167,120 +65,50 @@ std::string GetGoogleLocale(const std::string& application_locale) {
|
||||
|
||||
GURL AppendGoogleLocaleParam(const GURL& url,
|
||||
const std::string& application_locale) {
|
||||
- return net::AppendQueryParameter(url, "hl",
|
||||
- GetGoogleLocale(application_locale));
|
||||
+ return url;
|
||||
}
|
||||
|
||||
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('.');
|
||||
- if (last_dot == std::string::npos)
|
||||
- return std::string();
|
||||
- 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();
|
||||
+ 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);
|
||||
+ 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();
|
||||
- }
|
||||
+ 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);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool IsGoogleHostname(base::StringPiece host,
|
||||
SubdomainPermission subdomain_permission) {
|
||||
- url::CanonHostInfo host_info;
|
||||
- return IsCanonicalHostGoogleHostname(net::CanonicalizeHost(host, &host_info),
|
||||
- subdomain_permission);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool IsGoogleDomainUrl(const GURL& url,
|
||||
SubdomainPermission subdomain_permission,
|
||||
PortPermission port_permission) {
|
||||
- return IsValidURL(url, port_permission) &&
|
||||
- IsCanonicalHostGoogleHostname(url.host_piece(), subdomain_permission);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
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);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
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()));
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool IsYoutubeDomainUrl(const GURL& url,
|
||||
SubdomainPermission subdomain_permission,
|
||||
PortPermission port_permission) {
|
||||
- return IsValidURL(url, port_permission) &&
|
||||
- IsValidHostName(url.host_piece(), "youtube", subdomain_permission,
|
||||
- nullptr);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
const std::vector<std::string>& GetGoogleRegistrableDomains() {
|
||||
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
|
||||
@@ -505,11 +505,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
|
||||
bool TemplateURLRef::HasGoogleBaseURLs(
|
||||
const SearchTermsData& search_terms_data) const {
|
||||
ParseIfNecessary(search_terms_data);
|
||||
- return std::any_of(replacements_.begin(), replacements_.end(),
|
||||
- [](const Replacement& replacement) {
|
||||
- return replacement.type == GOOGLE_BASE_URL ||
|
||||
- replacement.type == GOOGLE_BASE_SUGGEST_URL;
|
||||
- });
|
||||
+ return false;
|
||||
}
|
||||
|
||||
bool TemplateURLRef::ExtractSearchTermsFromURL(
|
||||
diff --git a/net/base/url_util.cc b/net/base/url_util.cc
|
||||
--- a/net/base/url_util.cc
|
||||
+++ b/net/base/url_util.cc
|
||||
@@ -383,28 +383,6 @@ void GetIdentityFromURL(const GURL& url,
|
||||
}
|
||||
|
||||
bool HasGoogleHost(const GURL& url) {
|
||||
- static const char* kGoogleHostSuffixes[] = {
|
||||
- ".google.com",
|
||||
- ".youtube.com",
|
||||
- ".gmail.com",
|
||||
- ".doubleclick.net",
|
||||
- ".gstatic.com",
|
||||
- ".googlevideo.com",
|
||||
- ".googleusercontent.com",
|
||||
- ".googlesyndication.com",
|
||||
- ".google-analytics.com",
|
||||
- ".googleadservices.com",
|
||||
- ".googleapis.com",
|
||||
- ".ytimg.com",
|
||||
- };
|
||||
- base::StringPiece host = url.host_piece();
|
||||
- for (const char* suffix : kGoogleHostSuffixes) {
|
||||
- // Here it's possible to get away with faster case-sensitive comparisons
|
||||
- // because the list above is all lowercase, and a GURL's host name will
|
||||
- // always be canonicalized to lowercase as well.
|
||||
- if (base::EndsWith(host, suffix, base::CompareCase::SENSITIVE))
|
||||
- return true;
|
||||
- }
|
||||
return false;
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:37:10 +0100
|
||||
Subject: ungoogled-chromium: Disable GCM
|
||||
|
||||
Disable Google Cloud Messaging (GCM) client
|
||||
---
|
||||
components/gcm_driver/gcm_client_impl.cc | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
|
||||
--- a/components/gcm_driver/gcm_client_impl.cc
|
||||
+++ b/components/gcm_driver/gcm_client_impl.cc
|
||||
@@ -493,6 +493,7 @@ void GCMClientImpl::StartGCM() {
|
||||
}
|
||||
|
||||
void GCMClientImpl::InitializeMCSClient() {
|
||||
+ return;
|
||||
std::vector<GURL> endpoints;
|
||||
endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
|
||||
GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
|
||||
@@ -686,6 +687,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
|
||||
}
|
||||
|
||||
void GCMClientImpl::StartCheckin() {
|
||||
+ return;
|
||||
// Make sure no checkin is in progress.
|
||||
if (checkin_request_)
|
||||
return;
|
||||
@@ -761,6 +763,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
|
||||
}
|
||||
|
||||
void GCMClientImpl::SchedulePeriodicCheckin() {
|
||||
+ return;
|
||||
// Make sure no checkin is in progress.
|
||||
if (checkin_request_.get() || !device_checkin_info_.accounts_set)
|
||||
return;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:37:52 +0100
|
||||
Subject: ungoogled-chromium: Disable Gaia
|
||||
|
||||
Disables Gaia code.
|
||||
Somehow it is still being activated even without being signed-in.
|
||||
|
||||
See also: https://github.com/Eloston/ungoogled-chromium/issues/104
|
||||
---
|
||||
chrome/browser/browser_resources.grd | 2 --
|
||||
chrome/browser/extensions/component_extensions_whitelist/whitelist.cc | 1 -
|
||||
chrome/browser/extensions/signin/gaia_auth_extension_loader.cc | 3 ++-
|
||||
chrome/browser/resources/component_extension_resources.grd | 2 --
|
||||
chrome/browser/ui/webui/signin/inline_login_ui.cc | 1 -
|
||||
google_apis/gaia/gaia_auth_fetcher.cc | 4 +++-
|
||||
6 files changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
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
|
||||
@@ -312,7 +312,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" />
|
||||
- <include name="IDR_GAIA_AUTH_AUTHENTICATOR_JS" file="resources\gaia_auth_host\authenticator.js" flattenhtml="true" type="BINDATA" />
|
||||
<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" />
|
||||
@@ -453,7 +452,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" />
|
||||
<if expr="chromeos">
|
||||
<if expr="optimize_webui">
|
||||
<then>
|
||||
diff --git a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
--- a/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
+++ b/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc
|
||||
@@ -68,7 +68,6 @@ bool IsComponentExtensionWhitelisted(int manifest_resource_id) {
|
||||
#endif
|
||||
case IDR_CRYPTOTOKEN_MANIFEST:
|
||||
case IDR_FEEDBACK_MANIFEST:
|
||||
- case IDR_GAIA_AUTH_MANIFEST:
|
||||
#if BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION)
|
||||
case IDR_HANGOUT_SERVICES_MANIFEST:
|
||||
#endif
|
||||
diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||
--- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||
+++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
|
||||
@@ -42,7 +42,7 @@ ComponentLoader* GetComponentLoader(BrowserContext* context) {
|
||||
|
||||
void LoadGaiaAuthExtension(BrowserContext* context) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
-
|
||||
+/*
|
||||
ComponentLoader* component_loader = GetComponentLoader(context);
|
||||
const base::CommandLine* command_line =
|
||||
base::CommandLine::ForCurrentProcess();
|
||||
@@ -55,6 +55,7 @@ void LoadGaiaAuthExtension(BrowserContext* context) {
|
||||
|
||||
component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
|
||||
base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
|
||||
+*/
|
||||
}
|
||||
|
||||
void UnloadGaiaAuthExtension(BrowserContext* context) {
|
||||
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
|
||||
@@ -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 -->
|
||||
- <include name="IDR_GAIA_AUTH_SUCCESS" file="gaia_auth/success.html" allowexternalscript="true" type="BINDATA" />
|
||||
<!-- Hangout Services extension, included in Google Chrome builds only. -->
|
||||
<if expr="_google_chrome or enable_hangout_services_extension">
|
||||
<include name="IDR_HANGOUT_SERVICES_BACKGROUND_HTML" file="hangout_services/background.html" type="BINDATA" />
|
||||
diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||
--- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||
+++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
|
||||
@@ -49,7 +49,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
|
||||
|
||||
source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
|
||||
source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
|
||||
- source->AddResourcePath("gaia_auth_host.js", IDR_GAIA_AUTH_AUTHENTICATOR_JS);
|
||||
|
||||
source->AddLocalizedString("title", IDS_CHROME_SIGNIN_TITLE);
|
||||
source->AddLocalizedString(
|
||||
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
|
||||
--- a/google_apis/gaia/gaia_auth_fetcher.cc
|
||||
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
|
||||
@@ -44,7 +44,7 @@ namespace {
|
||||
const int kLoadFlagsIgnoreCookies = net::LOAD_DO_NOT_SEND_COOKIES |
|
||||
net::LOAD_DO_NOT_SAVE_COOKIES;
|
||||
|
||||
-const size_t kMaxMessageSize = 1024 * 1024; // 1MB
|
||||
+//const size_t kMaxMessageSize = 1024 * 1024; // 1MB
|
||||
|
||||
bool CookiePartsContains(const std::vector<std::string>& parts,
|
||||
const char* part) {
|
||||
@@ -262,6 +262,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
|
||||
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
|
||||
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
|
||||
|
||||
+/*
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->url = gaia_gurl;
|
||||
original_url_ = gaia_gurl;
|
||||
@@ -310,6 +311,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
|
||||
base::BindOnce(&GaiaAuthFetcher::OnURLLoadComplete,
|
||||
base::Unretained(this)),
|
||||
kMaxMessageSize);
|
||||
+*/
|
||||
}
|
||||
|
||||
// static
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,676 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 25 Aug 2018 22:58:52 +0200
|
||||
Subject: ungoogled-chromium: Disable domain reliability
|
||||
|
||||
---
|
||||
components/domain_reliability/BUILD.gn | 42 +-
|
||||
components/domain_reliability/bake_in_configs.py | 2 +-
|
||||
components/domain_reliability/google_configs.cc | 565 -----------------------
|
||||
components/domain_reliability/uploader.cc | 2 +-
|
||||
4 files changed, 17 insertions(+), 594 deletions(-)
|
||||
|
||||
diff --git a/components/domain_reliability/BUILD.gn b/components/domain_reliability/BUILD.gn
|
||||
--- a/components/domain_reliability/BUILD.gn
|
||||
+++ b/components/domain_reliability/BUILD.gn
|
||||
@@ -7,26 +7,6 @@ action("bake_in_configs") {
|
||||
script = "bake_in_configs.py"
|
||||
|
||||
inputs = [
|
||||
- "baked_in_configs/c_android_clients_google_com.json",
|
||||
- "baked_in_configs/c_bigcache_googleapis_com.json",
|
||||
- "baked_in_configs/c_doc-0-0-sj_sj_googleusercontent_com.json",
|
||||
- "baked_in_configs/c_docs_google_com.json",
|
||||
- "baked_in_configs/c_drive_google_com.json",
|
||||
- "baked_in_configs/c_googlesyndication_com.json",
|
||||
- "baked_in_configs/c_pack_google_com.json",
|
||||
- "baked_in_configs/c_play_google_com.json",
|
||||
- "baked_in_configs/c_youtube_com.json",
|
||||
- "baked_in_configs/clients2_google_com.json",
|
||||
- "baked_in_configs/docs_google_com.json",
|
||||
- "baked_in_configs/gcp_gvt2_com.json",
|
||||
- "baked_in_configs/gcp_gvt6_com.json",
|
||||
- "baked_in_configs/google-analytics_com.json",
|
||||
- "baked_in_configs/googlevideo_com.json",
|
||||
- "baked_in_configs/gvt1_com.json",
|
||||
- "baked_in_configs/gvt2_com.json",
|
||||
- "baked_in_configs/gvt6_com.json",
|
||||
- "baked_in_configs/ssl_gstatic_com.json",
|
||||
- "baked_in_configs/www_google_com.json",
|
||||
]
|
||||
|
||||
output_file = "$target_gen_dir/baked_in_configs.cc"
|
||||
@@ -36,13 +16,21 @@ action("bake_in_configs") {
|
||||
|
||||
# The JSON file list is too long for the command line on Windows, so put
|
||||
# them in a response file.
|
||||
- response_file_contents = rebase_path(inputs, root_build_dir)
|
||||
- args = [
|
||||
- "--file-list",
|
||||
- "{{response_file_name}}",
|
||||
- "--output",
|
||||
- rebase_path(output_file, root_build_dir),
|
||||
- ]
|
||||
+ if (is_win) {
|
||||
+ args = [
|
||||
+ "--file-list",
|
||||
+ "nul",
|
||||
+ "--output",
|
||||
+ rebase_path(output_file, root_build_dir),
|
||||
+ ]
|
||||
+ } else {
|
||||
+ args = [
|
||||
+ "--file-list",
|
||||
+ "/dev/null",
|
||||
+ "--output",
|
||||
+ rebase_path(output_file, root_build_dir),
|
||||
+ ]
|
||||
+ }
|
||||
}
|
||||
|
||||
component("domain_reliability") {
|
||||
diff --git a/components/domain_reliability/bake_in_configs.py b/components/domain_reliability/bake_in_configs.py
|
||||
--- a/components/domain_reliability/bake_in_configs.py
|
||||
+++ b/components/domain_reliability/bake_in_configs.py
|
||||
@@ -489,7 +489,7 @@ def origin_is_whitelisted(origin):
|
||||
domain = origin[8:-1]
|
||||
else:
|
||||
return False
|
||||
- return any(domain == e or domain.endswith('.' + e) for e in DOMAIN_WHITELIST)
|
||||
+ return False
|
||||
|
||||
|
||||
def quote_and_wrap_text(text, width=79, prefix=' "', suffix='"'):
|
||||
diff --git a/components/domain_reliability/google_configs.cc b/components/domain_reliability/google_configs.cc
|
||||
--- a/components/domain_reliability/google_configs.cc
|
||||
+++ b/components/domain_reliability/google_configs.cc
|
||||
@@ -13,575 +13,10 @@
|
||||
|
||||
namespace domain_reliability {
|
||||
|
||||
-namespace {
|
||||
-
|
||||
-struct GoogleConfigParams {
|
||||
- const char* hostname;
|
||||
- bool include_subdomains;
|
||||
-
|
||||
- // If true, prepend a collector URL within https://|hostname|/.
|
||||
- bool include_origin_specific_collector;
|
||||
-
|
||||
- // If true, also add a config for www.|hostname|.
|
||||
- //
|
||||
- // |include_subdomains| will be false in the extra config, but
|
||||
- // |include_origin_specific_collector| will be respected, and will use the
|
||||
- // www subdomain as the origin for the collector so it matches the config.
|
||||
- bool duplicate_for_www;
|
||||
-};
|
||||
-
|
||||
-const GoogleConfigParams kGoogleConfigs[] = {
|
||||
- // Origins with subdomains and same-origin collectors. Currently, all
|
||||
- // origins with same-origin collectors also run collectors on their www
|
||||
- // subdomain. (e.g., both foo.com and www.foo.com.)
|
||||
- {"google.ac", true, true, true},
|
||||
- {"google.ad", true, true, true},
|
||||
- {"google.ae", true, true, true},
|
||||
- {"google.af", true, true, true},
|
||||
- {"google.ag", true, true, true},
|
||||
- {"google.al", true, true, true},
|
||||
- {"google.am", true, true, true},
|
||||
- {"google.as", true, true, true},
|
||||
- {"google.at", true, true, true},
|
||||
- {"google.az", true, true, true},
|
||||
- {"google.ba", true, true, true},
|
||||
- {"google.be", true, true, true},
|
||||
- {"google.bf", true, true, true},
|
||||
- {"google.bg", true, true, true},
|
||||
- {"google.bi", true, true, true},
|
||||
- {"google.bj", true, true, true},
|
||||
- {"google.bs", true, true, true},
|
||||
- {"google.bt", true, true, true},
|
||||
- {"google.by", true, true, true},
|
||||
- {"google.ca", true, true, true},
|
||||
- {"google.cc", true, true, true},
|
||||
- {"google.cd", true, true, true},
|
||||
- {"google.cf", true, true, true},
|
||||
- {"google.cg", true, true, true},
|
||||
- {"google.ch", true, true, true},
|
||||
- {"google.ci", true, true, true},
|
||||
- {"google.cl", true, true, true},
|
||||
- {"google.cm", true, true, true},
|
||||
- {"google.cn", true, true, true},
|
||||
- {"google.co.ao", true, true, true},
|
||||
- {"google.co.bw", true, true, true},
|
||||
- {"google.co.ck", true, true, true},
|
||||
- {"google.co.cr", true, true, true},
|
||||
- {"google.co.hu", true, true, true},
|
||||
- {"google.co.id", true, true, true},
|
||||
- {"google.co.il", true, true, true},
|
||||
- {"google.co.im", true, true, true},
|
||||
- {"google.co.in", true, true, true},
|
||||
- {"google.co.je", true, true, true},
|
||||
- {"google.co.jp", true, true, true},
|
||||
- {"google.co.ke", true, true, true},
|
||||
- {"google.co.kr", true, true, true},
|
||||
- {"google.co.ls", true, true, true},
|
||||
- {"google.co.ma", true, true, true},
|
||||
- {"google.co.mz", true, true, true},
|
||||
- {"google.co.nz", true, true, true},
|
||||
- {"google.co.th", true, true, true},
|
||||
- {"google.co.tz", true, true, true},
|
||||
- {"google.co.ug", true, true, true},
|
||||
- {"google.co.uk", true, true, true},
|
||||
- {"google.co.uz", true, true, true},
|
||||
- {"google.co.ve", true, true, true},
|
||||
- {"google.co.vi", true, true, true},
|
||||
- {"google.co.za", true, true, true},
|
||||
- {"google.co.zm", true, true, true},
|
||||
- {"google.co.zw", true, true, true},
|
||||
- {"google.com.af", true, true, true},
|
||||
- {"google.com.ag", true, true, true},
|
||||
- {"google.com.ai", true, true, true},
|
||||
- {"google.com.ar", true, true, true},
|
||||
- {"google.com.au", true, true, true},
|
||||
- {"google.com.bd", true, true, true},
|
||||
- {"google.com.bh", true, true, true},
|
||||
- {"google.com.bn", true, true, true},
|
||||
- {"google.com.bo", true, true, true},
|
||||
- {"google.com.br", true, true, true},
|
||||
- {"google.com.by", true, true, true},
|
||||
- {"google.com.bz", true, true, true},
|
||||
- {"google.com.cn", true, true, true},
|
||||
- {"google.com.co", true, true, true},
|
||||
- {"google.com.cu", true, true, true},
|
||||
- {"google.com.cy", true, true, true},
|
||||
- {"google.com.do", true, true, true},
|
||||
- {"google.com.ec", true, true, true},
|
||||
- {"google.com.eg", true, true, true},
|
||||
- {"google.com.et", true, true, true},
|
||||
- {"google.com.fj", true, true, true},
|
||||
- {"google.com.ge", true, true, true},
|
||||
- {"google.com.gh", true, true, true},
|
||||
- {"google.com.gi", true, true, true},
|
||||
- {"google.com.gr", true, true, true},
|
||||
- {"google.com.gt", true, true, true},
|
||||
- {"google.com.hk", true, true, true},
|
||||
- {"google.com.iq", true, true, true},
|
||||
- {"google.com.jm", true, true, true},
|
||||
- {"google.com.jo", true, true, true},
|
||||
- {"google.com.kh", true, true, true},
|
||||
- {"google.com.kw", true, true, true},
|
||||
- {"google.com.lb", true, true, true},
|
||||
- {"google.com.ly", true, true, true},
|
||||
- {"google.com.mm", true, true, true},
|
||||
- {"google.com.mt", true, true, true},
|
||||
- {"google.com.mx", true, true, true},
|
||||
- {"google.com.my", true, true, true},
|
||||
- {"google.com.na", true, true, true},
|
||||
- {"google.com.nf", true, true, true},
|
||||
- {"google.com.ng", true, true, true},
|
||||
- {"google.com.ni", true, true, true},
|
||||
- {"google.com.np", true, true, true},
|
||||
- {"google.com.nr", true, true, true},
|
||||
- {"google.com.om", true, true, true},
|
||||
- {"google.com.pa", true, true, true},
|
||||
- {"google.com.pe", true, true, true},
|
||||
- {"google.com.pg", true, true, true},
|
||||
- {"google.com.ph", true, true, true},
|
||||
- {"google.com.pk", true, true, true},
|
||||
- {"google.com.pl", true, true, true},
|
||||
- {"google.com.pr", true, true, true},
|
||||
- {"google.com.py", true, true, true},
|
||||
- {"google.com.qa", true, true, true},
|
||||
- {"google.com.ru", true, true, true},
|
||||
- {"google.com.sa", true, true, true},
|
||||
- {"google.com.sb", true, true, true},
|
||||
- {"google.com.sg", true, true, true},
|
||||
- {"google.com.sl", true, true, true},
|
||||
- {"google.com.sv", true, true, true},
|
||||
- {"google.com.tj", true, true, true},
|
||||
- {"google.com.tn", true, true, true},
|
||||
- {"google.com.tr", true, true, true},
|
||||
- {"google.com.tw", true, true, true},
|
||||
- {"google.com.ua", true, true, true},
|
||||
- {"google.com.uy", true, true, true},
|
||||
- {"google.com.vc", true, true, true},
|
||||
- {"google.com.ve", true, true, true},
|
||||
- {"google.com.vn", true, true, true},
|
||||
- {"google.cv", true, true, true},
|
||||
- {"google.cz", true, true, true},
|
||||
- {"google.de", true, true, true},
|
||||
- {"google.dj", true, true, true},
|
||||
- {"google.dk", true, true, true},
|
||||
- {"google.dm", true, true, true},
|
||||
- {"google.dz", true, true, true},
|
||||
- {"google.ee", true, true, true},
|
||||
- {"google.es", true, true, true},
|
||||
- {"google.fi", true, true, true},
|
||||
- {"google.fm", true, true, true},
|
||||
- {"google.fr", true, true, true},
|
||||
- {"google.ga", true, true, true},
|
||||
- {"google.ge", true, true, true},
|
||||
- {"google.gg", true, true, true},
|
||||
- {"google.gl", true, true, true},
|
||||
- {"google.gm", true, true, true},
|
||||
- {"google.gp", true, true, true},
|
||||
- {"google.gr", true, true, true},
|
||||
- {"google.gy", true, true, true},
|
||||
- {"google.hk", true, true, true},
|
||||
- {"google.hn", true, true, true},
|
||||
- {"google.hr", true, true, true},
|
||||
- {"google.ht", true, true, true},
|
||||
- {"google.hu", true, true, true},
|
||||
- {"google.ie", true, true, true},
|
||||
- {"google.im", true, true, true},
|
||||
- {"google.iq", true, true, true},
|
||||
- {"google.ir", true, true, true},
|
||||
- {"google.is", true, true, true},
|
||||
- {"google.it", true, true, true},
|
||||
- {"google.it.ao", true, true, true},
|
||||
- {"google.je", true, true, true},
|
||||
- {"google.jo", true, true, true},
|
||||
- {"google.jp", true, true, true},
|
||||
- {"google.kg", true, true, true},
|
||||
- {"google.ki", true, true, true},
|
||||
- {"google.kz", true, true, true},
|
||||
- {"google.la", true, true, true},
|
||||
- {"google.li", true, true, true},
|
||||
- {"google.lk", true, true, true},
|
||||
- {"google.lt", true, true, true},
|
||||
- {"google.lu", true, true, true},
|
||||
- {"google.lv", true, true, true},
|
||||
- {"google.md", true, true, true},
|
||||
- {"google.me", true, true, true},
|
||||
- {"google.mg", true, true, true},
|
||||
- {"google.mk", true, true, true},
|
||||
- {"google.ml", true, true, true},
|
||||
- {"google.mn", true, true, true},
|
||||
- {"google.ms", true, true, true},
|
||||
- {"google.mu", true, true, true},
|
||||
- {"google.mv", true, true, true},
|
||||
- {"google.mw", true, true, true},
|
||||
- {"google.ne", true, true, true},
|
||||
- {"google.ne.jp", true, true, true},
|
||||
- {"google.ng", true, true, true},
|
||||
- {"google.nl", true, true, true},
|
||||
- {"google.no", true, true, true},
|
||||
- {"google.nr", true, true, true},
|
||||
- {"google.nu", true, true, true},
|
||||
- {"google.off.ai", true, true, true},
|
||||
- {"google.pk", true, true, true},
|
||||
- {"google.pl", true, true, true},
|
||||
- {"google.pn", true, true, true},
|
||||
- {"google.ps", true, true, true},
|
||||
- {"google.pt", true, true, true},
|
||||
- {"google.ro", true, true, true},
|
||||
- {"google.rs", true, true, true},
|
||||
- {"google.ru", true, true, true},
|
||||
- {"google.rw", true, true, true},
|
||||
- {"google.sc", true, true, true},
|
||||
- {"google.se", true, true, true},
|
||||
- {"google.sh", true, true, true},
|
||||
- {"google.si", true, true, true},
|
||||
- {"google.sk", true, true, true},
|
||||
- {"google.sm", true, true, true},
|
||||
- {"google.sn", true, true, true},
|
||||
- {"google.so", true, true, true},
|
||||
- {"google.sr", true, true, true},
|
||||
- {"google.st", true, true, true},
|
||||
- {"google.td", true, true, true},
|
||||
- {"google.tg", true, true, true},
|
||||
- {"google.tk", true, true, true},
|
||||
- {"google.tl", true, true, true},
|
||||
- {"google.tm", true, true, true},
|
||||
- {"google.tn", true, true, true},
|
||||
- {"google.to", true, true, true},
|
||||
- {"google.tt", true, true, true},
|
||||
- {"google.us", true, true, true},
|
||||
- {"google.uz", true, true, true},
|
||||
- {"google.vg", true, true, true},
|
||||
- {"google.vu", true, true, true},
|
||||
- {"google.ws", true, true, true},
|
||||
- {"l.google.com", true, true, true},
|
||||
-
|
||||
- // google.com is a special case. We have a custom config for www.google.com,
|
||||
- // so set generate_config_for_www_subdomain = false.
|
||||
- {"google.com", true, true, false},
|
||||
-
|
||||
- // Origins with subdomains and without same-origin collectors.
|
||||
- {"2mdn.net", true, false, false},
|
||||
- {"adgoogle.net", true, false, false},
|
||||
- {"admeld.com", true, false, false},
|
||||
- {"admob.biz", true, false, false},
|
||||
- {"admob.co.in", true, false, false},
|
||||
- {"admob.co.kr", true, false, false},
|
||||
- {"admob.co.nz", true, false, false},
|
||||
- {"admob.co.uk", true, false, false},
|
||||
- {"admob.co.za", true, false, false},
|
||||
- {"admob.com", true, false, false},
|
||||
- {"admob.com.br", true, false, false},
|
||||
- {"admob.com.es", true, false, false},
|
||||
- {"admob.com.fr", true, false, false},
|
||||
- {"admob.com.mx", true, false, false},
|
||||
- {"admob.com.pt", true, false, false},
|
||||
- {"admob.de", true, false, false},
|
||||
- {"admob.dk", true, false, false},
|
||||
- {"admob.es", true, false, false},
|
||||
- {"admob.fi", true, false, false},
|
||||
- {"admob.fr", true, false, false},
|
||||
- {"admob.gr", true, false, false},
|
||||
- {"admob.hk", true, false, false},
|
||||
- {"admob.ie", true, false, false},
|
||||
- {"admob.in", true, false, false},
|
||||
- {"admob.it", true, false, false},
|
||||
- {"admob.jp", true, false, false},
|
||||
- {"admob.kr", true, false, false},
|
||||
- {"admob.mobi", true, false, false},
|
||||
- {"admob.no", true, false, false},
|
||||
- {"admob.ph", true, false, false},
|
||||
- {"admob.pt", true, false, false},
|
||||
- {"admob.sg", true, false, false},
|
||||
- {"admob.tw", true, false, false},
|
||||
- {"admob.us", true, false, false},
|
||||
- {"admob.vn", true, false, false},
|
||||
- {"adwhirl.com", true, false, false},
|
||||
- {"ampproject.com", true, false, false},
|
||||
- {"ampproject.net", true, false, false},
|
||||
- {"ampproject.org", true, false, false},
|
||||
- {"android.com", true, false, false},
|
||||
- {"anycast-edge.metric.gstatic.com", true, false, false},
|
||||
- {"anycast-stb.metric.gstatic.com", true, false, false},
|
||||
- {"anycast.metric.gstatic.com", true, false, false},
|
||||
- {"cdn.ampproject.org", true, false, false},
|
||||
- {"chromecast.com", true, false, false},
|
||||
- {"chromeexperiments.com", true, false, false},
|
||||
- {"chromestatus.com", true, false, false},
|
||||
- {"chromium.org", true, false, false},
|
||||
- {"clients6.google.com", true, false, false},
|
||||
- {"cloudendpointsapis.com", true, false, false},
|
||||
- {"dartmotif.com", true, false, false},
|
||||
- {"dartsearch.net", true, false, false},
|
||||
- {"doubleclick.com", true, false, false},
|
||||
- {"doubleclick.ne.jp", true, false, false},
|
||||
- {"doubleclick.net", true, false, false},
|
||||
- {"doubleclickusercontent.com", true, false, false},
|
||||
- {"fls.doubleclick.net", true, false, false},
|
||||
- {"g.co", true, false, false},
|
||||
- {"g.doubleclick.net", true, false, false},
|
||||
- {"ggpht.com", true, false, false},
|
||||
- {"gmodules.com", true, false, false},
|
||||
- {"goo.gl", true, false, false},
|
||||
- {"google-syndication.com", true, false, false},
|
||||
- {"google.cat", true, false, false},
|
||||
- {"google.info", true, false, false},
|
||||
- {"google.jobs", true, false, false},
|
||||
- {"google.net", true, false, false},
|
||||
- {"google.org", true, false, false},
|
||||
- {"google.stackdriver.com", true, false, false},
|
||||
- {"googleadapis.com", true, false, false},
|
||||
- {"googleadservices.com", true, false, false},
|
||||
- {"googleadsserving.cn", true, false, false},
|
||||
- {"googlealumni.com", true, false, false},
|
||||
- {"googleapis.cn", true, false, false},
|
||||
- {"googleapis.com", true, false, false},
|
||||
- {"googleapps.com", true, false, false},
|
||||
- {"googlecbs.com", true, false, false},
|
||||
- {"googlecode.com", true, false, false},
|
||||
- {"googlecommerce.com", true, false, false},
|
||||
- {"googledrive.com", true, false, false},
|
||||
- {"googleenterprise.com", true, false, false},
|
||||
- {"googlefiber.com", true, false, false},
|
||||
- {"googlefiber.net", true, false, false},
|
||||
- {"googlegoro.com", true, false, false},
|
||||
- {"googlehosted.com", true, false, false},
|
||||
- {"googlepayments.com", true, false, false},
|
||||
- {"googlesource.com", true, false, false},
|
||||
- {"googlesyndication.com", true, false, false},
|
||||
- {"googletagmanager.com", true, false, false},
|
||||
- {"googletagservices.com", true, false, false},
|
||||
- {"googleusercontent.com", true, false, false},
|
||||
- {"googlezip.net", true, false, false},
|
||||
- {"gstatic.cn", true, false, false},
|
||||
- {"gstatic.com", true, false, false},
|
||||
- {"gvt3.com", true, false, false},
|
||||
- {"gvt9.com", true, false, false},
|
||||
- {"picasa.com", true, false, false},
|
||||
- {"recaptcha.net", true, false, false},
|
||||
- {"stackdriver.com", true, false, false},
|
||||
- {"stbcast-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast2-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast2.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast3-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast3.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast4-stb.metric.gstatic.com", true, false, false},
|
||||
- {"stbcast4.metric.gstatic.com", true, false, false},
|
||||
- {"unicast-edge.metric.gstatic.com", true, false, false},
|
||||
- {"unicast-stb.metric.gstatic.com", true, false, false},
|
||||
- {"unicast.metric.gstatic.com", true, false, false},
|
||||
- {"unicast2-stb.metric.gstatic.com", true, false, false},
|
||||
- {"unicast2.metric.gstatic.com", true, false, false},
|
||||
- {"waze.com", true, false, false},
|
||||
- {"withgoogle.com", true, false, false},
|
||||
- {"youtu.be", true, false, false},
|
||||
- {"youtube-3rd-party.com", true, false, false},
|
||||
- {"youtube-nocookie.com", true, false, false},
|
||||
- {"youtube.ae", true, false, false},
|
||||
- {"youtube.al", true, false, false},
|
||||
- {"youtube.am", true, false, false},
|
||||
- {"youtube.at", true, false, false},
|
||||
- {"youtube.az", true, false, false},
|
||||
- {"youtube.ba", true, false, false},
|
||||
- {"youtube.be", true, false, false},
|
||||
- {"youtube.bg", true, false, false},
|
||||
- {"youtube.bh", true, false, false},
|
||||
- {"youtube.bo", true, false, false},
|
||||
- {"youtube.ca", true, false, false},
|
||||
- {"youtube.cat", true, false, false},
|
||||
- {"youtube.ch", true, false, false},
|
||||
- {"youtube.cl", true, false, false},
|
||||
- {"youtube.co", true, false, false},
|
||||
- {"youtube.co.ae", true, false, false},
|
||||
- {"youtube.co.at", true, false, false},
|
||||
- {"youtube.co.hu", true, false, false},
|
||||
- {"youtube.co.id", true, false, false},
|
||||
- {"youtube.co.il", true, false, false},
|
||||
- {"youtube.co.in", true, false, false},
|
||||
- {"youtube.co.jp", true, false, false},
|
||||
- {"youtube.co.ke", true, false, false},
|
||||
- {"youtube.co.kr", true, false, false},
|
||||
- {"youtube.co.ma", true, false, false},
|
||||
- {"youtube.co.nz", true, false, false},
|
||||
- {"youtube.co.th", true, false, false},
|
||||
- {"youtube.co.ug", true, false, false},
|
||||
- {"youtube.co.uk", true, false, false},
|
||||
- {"youtube.co.ve", true, false, false},
|
||||
- {"youtube.co.za", true, false, false},
|
||||
- {"youtube.com", true, false, false},
|
||||
- {"youtube.com.ar", true, false, false},
|
||||
- {"youtube.com.au", true, false, false},
|
||||
- {"youtube.com.az", true, false, false},
|
||||
- {"youtube.com.bh", true, false, false},
|
||||
- {"youtube.com.bo", true, false, false},
|
||||
- {"youtube.com.br", true, false, false},
|
||||
- {"youtube.com.by", true, false, false},
|
||||
- {"youtube.com.co", true, false, false},
|
||||
- {"youtube.com.do", true, false, false},
|
||||
- {"youtube.com.ee", true, false, false},
|
||||
- {"youtube.com.eg", true, false, false},
|
||||
- {"youtube.com.es", true, false, false},
|
||||
- {"youtube.com.gh", true, false, false},
|
||||
- {"youtube.com.gr", true, false, false},
|
||||
- {"youtube.com.gt", true, false, false},
|
||||
- {"youtube.com.hk", true, false, false},
|
||||
- {"youtube.com.hr", true, false, false},
|
||||
- {"youtube.com.jm", true, false, false},
|
||||
- {"youtube.com.jo", true, false, false},
|
||||
- {"youtube.com.kw", true, false, false},
|
||||
- {"youtube.com.lb", true, false, false},
|
||||
- {"youtube.com.lv", true, false, false},
|
||||
- {"youtube.com.mk", true, false, false},
|
||||
- {"youtube.com.mt", true, false, false},
|
||||
- {"youtube.com.mx", true, false, false},
|
||||
- {"youtube.com.my", true, false, false},
|
||||
- {"youtube.com.ng", true, false, false},
|
||||
- {"youtube.com.om", true, false, false},
|
||||
- {"youtube.com.pe", true, false, false},
|
||||
- {"youtube.com.ph", true, false, false},
|
||||
- {"youtube.com.pk", true, false, false},
|
||||
- {"youtube.com.pt", true, false, false},
|
||||
- {"youtube.com.qa", true, false, false},
|
||||
- {"youtube.com.ro", true, false, false},
|
||||
- {"youtube.com.sa", true, false, false},
|
||||
- {"youtube.com.sg", true, false, false},
|
||||
- {"youtube.com.tn", true, false, false},
|
||||
- {"youtube.com.tr", true, false, false},
|
||||
- {"youtube.com.tw", true, false, false},
|
||||
- {"youtube.com.ua", true, false, false},
|
||||
- {"youtube.com.uy", true, false, false},
|
||||
- {"youtube.com.ve", true, false, false},
|
||||
- {"youtube.cz", true, false, false},
|
||||
- {"youtube.de", true, false, false},
|
||||
- {"youtube.dk", true, false, false},
|
||||
- {"youtube.ee", true, false, false},
|
||||
- {"youtube.es", true, false, false},
|
||||
- {"youtube.fi", true, false, false},
|
||||
- {"youtube.fr", true, false, false},
|
||||
- {"youtube.ge", true, false, false},
|
||||
- {"youtube.gr", true, false, false},
|
||||
- {"youtube.gt", true, false, false},
|
||||
- {"youtube.hk", true, false, false},
|
||||
- {"youtube.hr", true, false, false},
|
||||
- {"youtube.hu", true, false, false},
|
||||
- {"youtube.ie", true, false, false},
|
||||
- {"youtube.in", true, false, false},
|
||||
- {"youtube.is", true, false, false},
|
||||
- {"youtube.it", true, false, false},
|
||||
- {"youtube.jo", true, false, false},
|
||||
- {"youtube.jp", true, false, false},
|
||||
- {"youtube.kr", true, false, false},
|
||||
- {"youtube.lk", true, false, false},
|
||||
- {"youtube.lt", true, false, false},
|
||||
- {"youtube.lv", true, false, false},
|
||||
- {"youtube.ma", true, false, false},
|
||||
- {"youtube.md", true, false, false},
|
||||
- {"youtube.me", true, false, false},
|
||||
- {"youtube.mk", true, false, false},
|
||||
- {"youtube.mx", true, false, false},
|
||||
- {"youtube.my", true, false, false},
|
||||
- {"youtube.ng", true, false, false},
|
||||
- {"youtube.nl", true, false, false},
|
||||
- {"youtube.no", true, false, false},
|
||||
- {"youtube.pe", true, false, false},
|
||||
- {"youtube.ph", true, false, false},
|
||||
- {"youtube.pk", true, false, false},
|
||||
- {"youtube.pl", true, false, false},
|
||||
- {"youtube.pr", true, false, false},
|
||||
- {"youtube.pt", true, false, false},
|
||||
- {"youtube.qa", true, false, false},
|
||||
- {"youtube.ro", true, false, false},
|
||||
- {"youtube.rs", true, false, false},
|
||||
- {"youtube.ru", true, false, false},
|
||||
- {"youtube.sa", true, false, false},
|
||||
- {"youtube.se", true, false, false},
|
||||
- {"youtube.sg", true, false, false},
|
||||
- {"youtube.si", true, false, false},
|
||||
- {"youtube.sk", true, false, false},
|
||||
- {"youtube.sn", true, false, false},
|
||||
- {"youtube.tn", true, false, false},
|
||||
- {"youtube.ua", true, false, false},
|
||||
- {"youtube.ug", true, false, false},
|
||||
- {"youtube.uy", true, false, false},
|
||||
- {"youtube.vn", true, false, false},
|
||||
- {"youtubeeducation.com", true, false, false},
|
||||
- {"youtubemobilesupport.com", true, false, false},
|
||||
- {"ytimg.com", true, false, false},
|
||||
-
|
||||
- // Origins without subdomains and with same-origin collectors.
|
||||
- {"accounts.google.com", false, true, false},
|
||||
- {"apis.google.com", false, true, false},
|
||||
- {"app.google.stackdriver.com", false, true, false},
|
||||
- {"b.mail.google.com", false, true, false},
|
||||
- {"chatenabled.mail.google.com", false, true, false},
|
||||
- {"ddm.google.com", false, true, false},
|
||||
- {"gmail.com", false, true, false},
|
||||
- {"gmail.google.com", false, true, false},
|
||||
- {"mail-attachment.googleusercontent.com", false, true, false},
|
||||
- {"mail.google.com", false, true, false},
|
||||
- {"www.gmail.com", false, true, false},
|
||||
-
|
||||
- // Origins without subdomains or same-origin collectors.
|
||||
- {"ad.doubleclick.net", false, false, false},
|
||||
- {"drive.google.com", false, false, false},
|
||||
- {"redirector.googlevideo.com", false, false, false},
|
||||
-};
|
||||
-
|
||||
-const char* const kGoogleStandardCollectors[] = {
|
||||
- "https://beacons.gcp.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons2.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons3.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons4.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons5.gvt2.com/domainreliability/upload",
|
||||
- "https://beacons5.gvt3.com/domainreliability/upload",
|
||||
- "https://clients2.google.com/domainreliability/upload",
|
||||
-};
|
||||
-
|
||||
-const char* const kGoogleOriginSpecificCollectorPathString =
|
||||
- "/domainreliability/upload";
|
||||
-
|
||||
-static std::unique_ptr<DomainReliabilityConfig> CreateGoogleConfig(
|
||||
- const GoogleConfigParams& params,
|
||||
- bool is_www) {
|
||||
- if (is_www)
|
||||
- DCHECK(params.duplicate_for_www);
|
||||
-
|
||||
- std::string hostname = (is_www ? "www." : "") + std::string(params.hostname);
|
||||
- bool include_subdomains = params.include_subdomains && !is_www;
|
||||
-
|
||||
- std::unique_ptr<DomainReliabilityConfig> config(
|
||||
- new DomainReliabilityConfig());
|
||||
- config->origin = GURL("https://" + hostname + "/");
|
||||
- config->include_subdomains = include_subdomains;
|
||||
- config->collectors.clear();
|
||||
- if (params.include_origin_specific_collector) {
|
||||
- GURL::Replacements replacements;
|
||||
- replacements.SetPathStr(kGoogleOriginSpecificCollectorPathString);
|
||||
- config->collectors.push_back(
|
||||
- std::make_unique<GURL>(config->origin.ReplaceComponents(replacements)));
|
||||
- }
|
||||
- for (size_t i = 0; i < arraysize(kGoogleStandardCollectors); i++)
|
||||
- config->collectors.push_back(
|
||||
- std::make_unique<GURL>(kGoogleStandardCollectors[i]));
|
||||
- config->success_sample_rate = 0.05;
|
||||
- config->failure_sample_rate = 1.00;
|
||||
- config->path_prefixes.clear();
|
||||
- return config;
|
||||
-}
|
||||
-
|
||||
-} // namespace
|
||||
-
|
||||
// static
|
||||
void GetAllGoogleConfigs(
|
||||
std::vector<std::unique_ptr<DomainReliabilityConfig>>* configs_out) {
|
||||
configs_out->clear();
|
||||
-
|
||||
- for (auto& params : kGoogleConfigs) {
|
||||
- configs_out->push_back(CreateGoogleConfig(params, false));
|
||||
- if (params.duplicate_for_www)
|
||||
- configs_out->push_back(CreateGoogleConfig(params, true));
|
||||
- }
|
||||
}
|
||||
|
||||
} // namespace domain_reliability
|
||||
diff --git a/components/domain_reliability/uploader.cc b/components/domain_reliability/uploader.cc
|
||||
--- a/components/domain_reliability/uploader.cc
|
||||
+++ b/components/domain_reliability/uploader.cc
|
||||
@@ -82,7 +82,7 @@ class DomainReliabilityUploaderImpl
|
||||
if (discard_uploads_)
|
||||
discarded_upload_count_++;
|
||||
|
||||
- if (discard_uploads_ || shutdown_) {
|
||||
+ if (true) {
|
||||
VLOG(1) << "Discarding report instead of uploading.";
|
||||
UploadResult result;
|
||||
result.status = UploadResult::SUCCESS;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 17 Sep 2018 21:50:15 +0200
|
||||
Subject: ungoogled-chromium: Disable Network Time Tracker
|
||||
|
||||
This connects to Google to check if the system time is correct when a website certificate
|
||||
date seems incorrect, according to https://bugs.chromium.org/p/chromium/issues/detail?id=725232
|
||||
|
||||
Fixes https://github.com/Eloston/ungoogled-chromium/issues/302
|
||||
---
|
||||
components/network_time/network_time_tracker.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/components/network_time/network_time_tracker.cc b/components/network_time/network_time_tracker.cc
|
||||
--- a/components/network_time/network_time_tracker.cc
|
||||
+++ b/components/network_time/network_time_tracker.cc
|
||||
@@ -277,7 +277,7 @@ void NetworkTimeTracker::UpdateNetworkTime(base::Time network_time,
|
||||
}
|
||||
|
||||
bool NetworkTimeTracker::AreTimeFetchesEnabled() const {
|
||||
- return base::FeatureList::IsEnabled(kNetworkTimeServiceQuerying);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
NetworkTimeTracker::FetchBehavior NetworkTimeTracker::GetFetchBehavior() const {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 17 Sep 2018 21:55:33 +0200
|
||||
Subject: ungoogled-chromium: Remove third_party/analytics
|
||||
|
||||
---
|
||||
ui/webui/resources/webui_resources.grd | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/ui/webui/resources/webui_resources.grd b/ui/webui/resources/webui_resources.grd
|
||||
--- a/ui/webui/resources/webui_resources.grd
|
||||
+++ b/ui/webui/resources/webui_resources.grd
|
||||
@@ -15,7 +15,6 @@ without changes to the corresponding grd file. -->
|
||||
<includes>
|
||||
<include name="IDR_WEBUI_I18N_TEMPLATE_JS" file="js/i18n_template.js" flattenhtml="true" type="BINDATA" />
|
||||
<include name="IDR_WEBUI_JSTEMPLATE_JS" file="js/jstemplate_compiled.js" flattenhtml="true" type="BINDATA" />
|
||||
- <include name="IDR_WEBUI_ANALYTICS_JS" file="js/analytics.js" flattenhtml="true" type="BINDATA" compress="gzip" />
|
||||
<!-- Roboto Font. Roboto-Regular and Roboto-Light is already available on
|
||||
Android, and Roboto-Medium is not used on Android. All 6 weights of
|
||||
Roboto are available on Chrome OS.-->
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 17 Sep 2018 21:57:19 +0200
|
||||
Subject: ungoogled-chromium: Always use local DevTools files instead of remote
|
||||
files from Google
|
||||
|
||||
NOTE: This can break Remote Debugging
|
||||
This also fixes local debugging with domain substitution
|
||||
Related comment: https://bugs.chromium.org/p/chromium/issues/detail?id=710701#c14
|
||||
---
|
||||
third_party/blink/renderer/devtools/BUILD.gn | 6 ++----
|
||||
third_party/blink/renderer/devtools/front_end/audits2_worker.json | 2 +-
|
||||
third_party/blink/renderer/devtools/front_end/devtools_app.json | 6 +++---
|
||||
third_party/blink/renderer/devtools/front_end/shell.json | 4 ++--
|
||||
third_party/blink/renderer/devtools/front_end/worker_app.json | 2 +-
|
||||
5 files changed, 9 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/devtools/BUILD.gn b/third_party/blink/renderer/devtools/BUILD.gn
|
||||
--- a/third_party/blink/renderer/devtools/BUILD.gn
|
||||
+++ b/third_party/blink/renderer/devtools/BUILD.gn
|
||||
@@ -1150,10 +1150,8 @@ action("generate_devtools_grd") {
|
||||
devtools_embedder_scripts +
|
||||
[ "$resources_out_dir/devtools_extension_api.js" ]
|
||||
|
||||
- # Bundle remote modules in ChromeOS.
|
||||
- if (is_chromeos) {
|
||||
- grd_files += generated_remote_modules + devtools_emulated_devices_images
|
||||
- }
|
||||
+ # Always bundle remote modules.
|
||||
+ grd_files += generated_remote_modules + devtools_emulated_devices_images
|
||||
|
||||
inputs = grd_files + devtools_image_files
|
||||
outfile = "$root_gen_dir/devtools/devtools_resources.grd"
|
||||
diff --git a/third_party/blink/renderer/devtools/front_end/audits2_worker.json b/third_party/blink/renderer/devtools/front_end/audits2_worker.json
|
||||
--- a/third_party/blink/renderer/devtools/front_end/audits2_worker.json
|
||||
+++ b/third_party/blink/renderer/devtools/front_end/audits2_worker.json
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"modules": [
|
||||
{ "name": "worker_service", "type": "autostart" },
|
||||
- { "name": "audits2_worker", "type": "remote" }
|
||||
+ { "name": "audits2_worker" }
|
||||
]
|
||||
}
|
||||
diff --git a/third_party/blink/renderer/devtools/front_end/devtools_app.json b/third_party/blink/renderer/devtools/front_end/devtools_app.json
|
||||
--- a/third_party/blink/renderer/devtools/front_end/devtools_app.json
|
||||
+++ b/third_party/blink/renderer/devtools/front_end/devtools_app.json
|
||||
@@ -4,7 +4,7 @@
|
||||
{ "name": "inspector_main", "type": "autostart" },
|
||||
{ "name": "mobile_throttling", "type": "autostart" },
|
||||
|
||||
- { "name": "accessibility", "type": "remote" },
|
||||
+ { "name": "accessibility" },
|
||||
{ "name": "animation" },
|
||||
{ "name": "audits2" },
|
||||
{ "name": "browser_console" },
|
||||
@@ -12,14 +12,14 @@
|
||||
{ "name": "cookie_table" },
|
||||
{ "name": "devices" },
|
||||
{ "name": "elements" },
|
||||
- { "name": "emulated_devices" , "type": "remote" },
|
||||
+ { "name": "emulated_devices" },
|
||||
{ "name": "har_importer" },
|
||||
{ "name": "help" },
|
||||
{ "name": "layers" },
|
||||
{ "name": "layer_viewer" },
|
||||
{ "name": "network" },
|
||||
{ "name": "performance_monitor" },
|
||||
- { "name": "product_registry_impl", "type": "remote" },
|
||||
+ { "name": "product_registry_impl" },
|
||||
{ "name": "resources" },
|
||||
{ "name": "security" },
|
||||
{ "name": "timeline" },
|
||||
diff --git a/third_party/blink/renderer/devtools/front_end/shell.json b/third_party/blink/renderer/devtools/front_end/shell.json
|
||||
--- a/third_party/blink/renderer/devtools/front_end/shell.json
|
||||
+++ b/third_party/blink/renderer/devtools/front_end/shell.json
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
{ "name": "changes" },
|
||||
{ "name": "cm" },
|
||||
- { "name": "cm_modes", "type": "remote" },
|
||||
+ { "name": "cm_modes" },
|
||||
{ "name": "color_picker" },
|
||||
{ "name": "console" },
|
||||
{ "name": "coverage" },
|
||||
@@ -41,7 +41,7 @@
|
||||
{ "name": "snippets" },
|
||||
{ "name": "source_frame" },
|
||||
{ "name": "sources" },
|
||||
- { "name": "terminal", "type": "remote" },
|
||||
+ { "name": "terminal" },
|
||||
{ "name": "text_editor" },
|
||||
{ "name": "workspace_diff" },
|
||||
{ "name": "protocol_monitor"}
|
||||
diff --git a/third_party/blink/renderer/devtools/front_end/worker_app.json b/third_party/blink/renderer/devtools/front_end/worker_app.json
|
||||
--- a/third_party/blink/renderer/devtools/front_end/worker_app.json
|
||||
+++ b/third_party/blink/renderer/devtools/front_end/worker_app.json
|
||||
@@ -11,7 +11,7 @@
|
||||
{ "name": "help" },
|
||||
{ "name": "layer_viewer" },
|
||||
{ "name": "network" },
|
||||
- { "name": "product_registry_impl", "type": "remote" },
|
||||
+ { "name": "product_registry_impl" },
|
||||
{ "name": "resources" },
|
||||
{ "name": "timeline" },
|
||||
{ "name": "timeline_model" }
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 26 Nov 2017 23:11:56 +0100
|
||||
Subject: Disable Omaha update checks
|
||||
|
||||
---
|
||||
.../android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
|
||||
@@ -134,7 +134,7 @@ public class OmahaBase {
|
||||
|
||||
/** See {@link #sIsDisabled}. */
|
||||
static boolean isDisabled() {
|
||||
- return sIsDisabled;
|
||||
+ return true;
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 27 Oct 2018 17:54:01 +0200
|
||||
Subject: Disable update scheduler
|
||||
|
||||
---
|
||||
.../chromium/chrome/browser/component_updater/UpdateScheduler.java | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
@@ -35,10 +35,7 @@ public class UpdateScheduler {
|
||||
|
||||
@CalledByNative
|
||||
/* package */ static boolean isAvailable() {
|
||||
- return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
- || GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext())
|
||||
- == ConnectionResult.SUCCESS;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/* package */ void onStartTaskBeforeNativeLoaded(TaskFinishedCallback callback) {
|
||||
@@ -108,4 +105,4 @@ public class UpdateScheduler {
|
||||
|
||||
private native void nativeOnStartTask(long nativeBackgroundTaskUpdateScheduler);
|
||||
private native void nativeOnStopTask(long nativeBackgroundTaskUpdateScheduler);
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+134
-126
@@ -1,20 +1,17 @@
|
||||
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu Oct 12 11:06:18 2017 +0200
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 12 Oct 2017 11:06:18 +0200
|
||||
Subject: Add DuckDuckGo search engine
|
||||
|
||||
Add DuckDuckGo search engine, not enabled by default
|
||||
---
|
||||
.../search_engines/prepopulated_engines.json | 19 ++
|
||||
components/search_engines/search_engine_type.h | 2 +
|
||||
.../template_url_prepopulate_data.cc | 218 ++++++++++-----------
|
||||
3 files changed, 130 insertions(+), 109 deletions(-)
|
||||
|
||||
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||
index 002b6c0..7b4155b 100644
|
||||
--- a/components/search_engines/prepopulated_engines.json
|
||||
+++ b/components/search_engines/prepopulated_engines.json
|
||||
@@ -32,12 +32,22 @@
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 99
|
||||
+ "kCurrentDataVersion": 100
|
||||
},
|
||||
|
||||
@@ -38,6 +38,25 @@
|
||||
// The following engines are included in country lists and are added to the
|
||||
// list of search engines on the first run depending on user's country.
|
||||
"elements": {
|
||||
@@ -23,685 +20,696 @@ index 002b6c0..7b4155b 100644
|
||||
+ "keyword": "duckduckgo.com",
|
||||
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
|
||||
+ "search_url": "https://duckduckgo.com/?q={searchTerms}",
|
||||
+ "new_tab_url": "https://duckduckgo.com/",
|
||||
+ "suggest_url": "https://ac.duckduckgo.com/ac/?q={searchTerms}&type=list",
|
||||
+ "type": "SEARCH_ENGINE_DUCKDUCKGO",
|
||||
+ "id": 11
|
||||
+ },
|
||||
+
|
||||
+ "duckduckgo_light": {
|
||||
+ "name": "DuckDuckGo Light",
|
||||
+ "keyword": "duckduckgo.com/lite",
|
||||
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
|
||||
+ "search_url": "https://duckduckgo.com/lite/?q={searchTerms}",
|
||||
+ "type": "SEARCH_ENGINE_DUCKDUCKGOLIGHT",
|
||||
+ "id": 12
|
||||
+ },
|
||||
+
|
||||
"aol": {
|
||||
"name": "AOL",
|
||||
"keyword": "aol.com",
|
||||
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||
index c19dd0e..02f6b16 100644
|
||||
--- a/components/search_engines/search_engine_type.h
|
||||
+++ b/components/search_engines/search_engine_type.h
|
||||
@@ -63,6 +63,7 @@ enum SearchEngineType {
|
||||
@@ -63,6 +63,8 @@ enum SearchEngineType {
|
||||
SEARCH_ENGINE_YANDEX,
|
||||
SEARCH_ENGINE_ZOZNAM,
|
||||
SEARCH_ENGINE_360,
|
||||
+ SEARCH_ENGINE_DUCKDUCKGO,
|
||||
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||
};
|
||||
|
||||
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||
index 6be17ee..ef50529 100644
|
||||
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||
@@ -50,548 +50,548 @@ namespace {
|
||||
@@ -51,548 +51,548 @@ namespace {
|
||||
|
||||
// Default (for countries with no better engine set)
|
||||
const PrepopulatedEngine* const engines_default[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// United Arab Emirates
|
||||
const PrepopulatedEngine* const engines_AE[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Albania
|
||||
const PrepopulatedEngine* const engines_AL[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Argentina
|
||||
const PrepopulatedEngine* const engines_AR[] = {
|
||||
- &google, &bing, &yahoo_ar,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_ar,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
};
|
||||
|
||||
// Austria
|
||||
const PrepopulatedEngine* const engines_AT[] = {
|
||||
- &google, &bing, &yahoo_at,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_at,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
};
|
||||
|
||||
// Australia
|
||||
const PrepopulatedEngine* const engines_AU[] = {
|
||||
- &google, &bing, &yahoo_au,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_au,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
};
|
||||
|
||||
// Bosnia and Herzegovina
|
||||
const PrepopulatedEngine* const engines_BA[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Belgium
|
||||
const PrepopulatedEngine* const engines_BE[] = {
|
||||
- &google, &bing, &yahoo, &yahoo_fr,
|
||||
+ &google, &duckduckgo, &bing, &yahoo, &yahoo_fr,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Bulgaria
|
||||
const PrepopulatedEngine* const engines_BG[] = {
|
||||
- &google, &bing, &ask,
|
||||
+ &google, &duckduckgo, &bing, &ask,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Bahrain
|
||||
const PrepopulatedEngine* const engines_BH[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Burundi
|
||||
const PrepopulatedEngine* const engines_BI[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Brunei
|
||||
const PrepopulatedEngine* const engines_BN[] = {
|
||||
- &google, &yahoo_my, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_my, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Bolivia
|
||||
const PrepopulatedEngine* const engines_BO[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Brazil
|
||||
const PrepopulatedEngine* const engines_BR[] = {
|
||||
- &google, &ask_br, &bing, &yahoo_br,
|
||||
+ &google, &duckduckgo, &ask_br, &bing, &yahoo_br,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
};
|
||||
|
||||
// Belarus
|
||||
const PrepopulatedEngine* const engines_BY[] = {
|
||||
- &google, &yandex_by, &mail_ru,
|
||||
+ &google, &duckduckgo, &yandex_by, &mail_ru,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
};
|
||||
|
||||
// Belize
|
||||
const PrepopulatedEngine* const engines_BZ[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Canada
|
||||
const PrepopulatedEngine* const engines_CA[] = {
|
||||
- &google, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
+ &google, &duckduckgo, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
};
|
||||
|
||||
// Switzerland
|
||||
const PrepopulatedEngine* const engines_CH[] = {
|
||||
- &google, &bing, &yahoo_ch,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_ch,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
};
|
||||
|
||||
// Chile
|
||||
const PrepopulatedEngine* const engines_CL[] = {
|
||||
- &google, &bing, &yahoo_cl,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_cl,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
};
|
||||
|
||||
// China
|
||||
const PrepopulatedEngine* const engines_CN[] = {
|
||||
- &google, &baidu, &sogou, &so_360,
|
||||
+ &google, &duckduckgo, &baidu, &sogou, &so_360,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
};
|
||||
|
||||
// Colombia
|
||||
const PrepopulatedEngine* const engines_CO[] = {
|
||||
- &google, &bing, &yahoo_co,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_co,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
};
|
||||
|
||||
// Costa Rica
|
||||
const PrepopulatedEngine* const engines_CR[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Czech Republic
|
||||
const PrepopulatedEngine* const engines_CZ[] = {
|
||||
- &google, &seznam, &bing,
|
||||
+ &google, &duckduckgo, &seznam, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
};
|
||||
|
||||
// Germany
|
||||
const PrepopulatedEngine* const engines_DE[] = {
|
||||
- &google, &bing, &yahoo_de,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_de,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Denmark
|
||||
const PrepopulatedEngine* const engines_DK[] = {
|
||||
- &google, &bing, &yahoo_dk,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_dk,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
};
|
||||
|
||||
// Dominican Republic
|
||||
const PrepopulatedEngine* const engines_DO[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Algeria
|
||||
const PrepopulatedEngine* const engines_DZ[] = {
|
||||
- &google, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Ecuador
|
||||
const PrepopulatedEngine* const engines_EC[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Estonia
|
||||
const PrepopulatedEngine* const engines_EE[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Egypt
|
||||
const PrepopulatedEngine* const engines_EG[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Spain
|
||||
const PrepopulatedEngine* const engines_ES[] = {
|
||||
- &google, &bing, &yahoo_es,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_es,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
};
|
||||
|
||||
// Faroe Islands
|
||||
const PrepopulatedEngine* const engines_FO[] = {
|
||||
- &google, &bing, &ask,
|
||||
+ &google, &duckduckgo, &bing, &ask,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Finland
|
||||
const PrepopulatedEngine* const engines_FI[] = {
|
||||
- &google, &bing, &yahoo_fi,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_fi,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
};
|
||||
|
||||
// France
|
||||
const PrepopulatedEngine* const engines_FR[] = {
|
||||
- &google, &bing, &yahoo_fr,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_fr,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// United Kingdom
|
||||
const PrepopulatedEngine* const engines_GB[] = {
|
||||
- &google, &bing, &yahoo_uk, &ask_uk,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_uk, &ask_uk,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
};
|
||||
|
||||
// Greece
|
||||
const PrepopulatedEngine* const engines_GR[] = {
|
||||
- &google, &bing, &yahoo_gr,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_gr,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
};
|
||||
|
||||
// Guatemala
|
||||
const PrepopulatedEngine* const engines_GT[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Hong Kong
|
||||
const PrepopulatedEngine* const engines_HK[] = {
|
||||
- &google, &yahoo_hk, &baidu, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_hk, &baidu, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
};
|
||||
|
||||
// Honduras
|
||||
const PrepopulatedEngine* const engines_HN[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Croatia
|
||||
const PrepopulatedEngine* const engines_HR[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Hungary
|
||||
const PrepopulatedEngine* const engines_HU[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Indonesia
|
||||
const PrepopulatedEngine* const engines_ID[] = {
|
||||
- &google, &yahoo_id, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_id, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
};
|
||||
|
||||
// Ireland
|
||||
const PrepopulatedEngine* const engines_IE[] = {
|
||||
- &google, &bing, &yahoo_uk,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_uk,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
};
|
||||
|
||||
// Israel
|
||||
const PrepopulatedEngine* const engines_IL[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// India
|
||||
const PrepopulatedEngine* const engines_IN[] = {
|
||||
- &google, &bing, &yahoo_in,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_in,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
};
|
||||
|
||||
// Iraq
|
||||
const PrepopulatedEngine* const engines_IQ[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Iran
|
||||
const PrepopulatedEngine* const engines_IR[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Iceland
|
||||
const PrepopulatedEngine* const engines_IS[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Italy
|
||||
const PrepopulatedEngine* const engines_IT[] = {
|
||||
- &google, &virgilio, &bing,
|
||||
+ &google, &duckduckgo, &virgilio, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
};
|
||||
|
||||
// Jamaica
|
||||
const PrepopulatedEngine* const engines_JM[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Jordan
|
||||
const PrepopulatedEngine* const engines_JO[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Japan
|
||||
const PrepopulatedEngine* const engines_JP[] = {
|
||||
- &google, &yahoo_jp, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_jp, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
};
|
||||
|
||||
// Kenya
|
||||
const PrepopulatedEngine* const engines_KE[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Kuwait
|
||||
const PrepopulatedEngine* const engines_KW[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// South Korea
|
||||
const PrepopulatedEngine* const engines_KR[] = {
|
||||
- &google, &naver, &daum,
|
||||
+ &google, &duckduckgo, &naver, &daum,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
};
|
||||
|
||||
// Kazakhstan
|
||||
const PrepopulatedEngine* const engines_KZ[] = {
|
||||
- &google, &mail_ru, &yandex_kz,
|
||||
+ &google, &duckduckgo, &mail_ru, &yandex_kz,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
};
|
||||
|
||||
// Lebanon
|
||||
const PrepopulatedEngine* const engines_LB[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Liechtenstein
|
||||
const PrepopulatedEngine* const engines_LI[] = {
|
||||
- &google, &bing, &yahoo_de,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_de,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Lithuania
|
||||
const PrepopulatedEngine* const engines_LT[] = {
|
||||
- &google, &bing, &yandex_ru,
|
||||
+ &google, &duckduckgo, &bing, &yandex_ru,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
};
|
||||
|
||||
// Luxembourg
|
||||
const PrepopulatedEngine* const engines_LU[] = {
|
||||
- &google, &bing, &yahoo_fr,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_fr,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Latvia
|
||||
const PrepopulatedEngine* const engines_LV[] = {
|
||||
- &google, &yandex_ru, &bing,
|
||||
+ &google, &duckduckgo, &yandex_ru, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
};
|
||||
|
||||
// Libya
|
||||
const PrepopulatedEngine* const engines_LY[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Morocco
|
||||
const PrepopulatedEngine* const engines_MA[] = {
|
||||
- &google, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Monaco
|
||||
const PrepopulatedEngine* const engines_MC[] = {
|
||||
- &google, &yahoo_fr, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_fr, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
};
|
||||
|
||||
// Moldova
|
||||
const PrepopulatedEngine* const engines_MD[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Montenegro
|
||||
const PrepopulatedEngine* const engines_ME[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Macedonia
|
||||
const PrepopulatedEngine* const engines_MK[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Mexico
|
||||
const PrepopulatedEngine* const engines_MX[] = {
|
||||
- &google, &bing, &yahoo_mx,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_mx,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
};
|
||||
|
||||
// Malaysia
|
||||
const PrepopulatedEngine* const engines_MY[] = {
|
||||
- &google, &yahoo_my, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_my, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Nicaragua
|
||||
const PrepopulatedEngine* const engines_NI[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Netherlands
|
||||
const PrepopulatedEngine* const engines_NL[] = {
|
||||
- &google, &yahoo_nl, &vinden,
|
||||
+ &google, &duckduckgo, &yahoo_nl, &vinden,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
};
|
||||
|
||||
// Norway
|
||||
const PrepopulatedEngine* const engines_NO[] = {
|
||||
- &google, &bing, &kvasir,
|
||||
+ &google, &duckduckgo, &bing, &kvasir,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
};
|
||||
|
||||
// New Zealand
|
||||
const PrepopulatedEngine* const engines_NZ[] = {
|
||||
- &google, &bing, &yahoo_nz,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_nz,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
};
|
||||
|
||||
// Oman
|
||||
const PrepopulatedEngine* const engines_OM[] = {
|
||||
- &google, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Panama
|
||||
const PrepopulatedEngine* const engines_PA[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Peru
|
||||
const PrepopulatedEngine* const engines_PE[] = {
|
||||
- &google, &bing, &yahoo_pe,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_pe,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
};
|
||||
|
||||
// Philippines
|
||||
const PrepopulatedEngine* const engines_PH[] = {
|
||||
- &google, &yahoo_ph, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_ph, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
};
|
||||
|
||||
// Pakistan
|
||||
const PrepopulatedEngine* const engines_PK[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Puerto Rico
|
||||
const PrepopulatedEngine* const engines_PR[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Poland
|
||||
const PrepopulatedEngine* const engines_PL[] = {
|
||||
- &google, &onet, &bing,
|
||||
+ &google, &duckduckgo, &onet, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
};
|
||||
|
||||
// Portugal
|
||||
const PrepopulatedEngine* const engines_PT[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Paraguay
|
||||
const PrepopulatedEngine* const engines_PY[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Qatar
|
||||
const PrepopulatedEngine* const engines_QA[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Romania
|
||||
const PrepopulatedEngine* const engines_RO[] = {
|
||||
- &google, &yahoo_ro, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_ro, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
};
|
||||
|
||||
// Serbia
|
||||
const PrepopulatedEngine* const engines_RS[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Russia
|
||||
const PrepopulatedEngine* const engines_RU[] = {
|
||||
- &google, &yandex_ru, &mail_ru,
|
||||
+ &google, &duckduckgo, &yandex_ru, &mail_ru,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
};
|
||||
|
||||
// Rwanda
|
||||
const PrepopulatedEngine* const engines_RW[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Saudi Arabia
|
||||
const PrepopulatedEngine* const engines_SA[] = {
|
||||
- &google, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_maktoob, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Sweden
|
||||
const PrepopulatedEngine* const engines_SE[] = {
|
||||
- &google, &bing, &yahoo_se,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_se,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
};
|
||||
|
||||
// Singapore
|
||||
const PrepopulatedEngine* const engines_SG[] = {
|
||||
- &google, &yahoo_sg, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_sg, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
};
|
||||
|
||||
// Slovenia
|
||||
const PrepopulatedEngine* const engines_SI[] = {
|
||||
- &google, &najdi, &ask,
|
||||
+ &google, &duckduckgo, &najdi, &ask,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
};
|
||||
|
||||
// Slovakia
|
||||
const PrepopulatedEngine* const engines_SK[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// El Salvador
|
||||
const PrepopulatedEngine* const engines_SV[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Syria
|
||||
const PrepopulatedEngine* const engines_SY[] = {
|
||||
- &google, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Thailand
|
||||
const PrepopulatedEngine* const engines_TH[] = {
|
||||
- &google, &yahoo_th, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_th, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
};
|
||||
|
||||
// Tunisia
|
||||
const PrepopulatedEngine* const engines_TN[] = {
|
||||
- &google, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Turkey
|
||||
const PrepopulatedEngine* const engines_TR[] = {
|
||||
- &google, &bing, &yahoo_tr, &yandex_tr,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_tr, &yandex_tr,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
};
|
||||
|
||||
// Trinidad and Tobago
|
||||
const PrepopulatedEngine* const engines_TT[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Taiwan
|
||||
const PrepopulatedEngine* const engines_TW[] = {
|
||||
- &google, &yahoo_tw, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_tw, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
};
|
||||
|
||||
// Tanzania
|
||||
const PrepopulatedEngine* const engines_TZ[] = {
|
||||
- &google, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &yahoo, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Ukraine
|
||||
const PrepopulatedEngine* const engines_UA[] = {
|
||||
- &google, &yandex_ua, &bing,
|
||||
+ &google, &duckduckgo, &yandex_ua, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
};
|
||||
|
||||
// United States
|
||||
const PrepopulatedEngine* const engines_US[] = {
|
||||
- &google, &bing, &yahoo, &aol, &ask,
|
||||
+ &google, &duckduckgo, &bing, &yahoo, &aol, &ask,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
};
|
||||
|
||||
// Uruguay
|
||||
const PrepopulatedEngine* const engines_UY[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Venezuela
|
||||
const PrepopulatedEngine* const engines_VE[] = {
|
||||
- &google, &bing, &yahoo_ve,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_ve,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
};
|
||||
|
||||
// Vietnam
|
||||
const PrepopulatedEngine* const engines_VN[] = {
|
||||
- &google, &yahoo_vn, &bing,
|
||||
+ &google, &duckduckgo, &yahoo_vn, &bing,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
};
|
||||
|
||||
// Yemen
|
||||
const PrepopulatedEngine* const engines_YE[] = {
|
||||
- &google, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &bing, &yahoo_maktoob,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// South Africa
|
||||
const PrepopulatedEngine* const engines_ZA[] = {
|
||||
- &google, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &bing, &yahoo,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Zimbabwe
|
||||
const PrepopulatedEngine* const engines_ZW[] = {
|
||||
- &google, &bing, &yahoo, &ask,
|
||||
+ &google, &duckduckgo, &bing, &yahoo, &ask,
|
||||
+ &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
};
|
||||
|
||||
// A list of all the engines that we know about.
|
||||
const PrepopulatedEngine* const kAllEngines[] = {
|
||||
// Prepopulated engines:
|
||||
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &kvasir,
|
||||
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &duckduckgo, &kvasir,
|
||||
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,714 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 18 Oct 2017 21:24:05 +0200
|
||||
Subject: Add StartPage search engine
|
||||
|
||||
---
|
||||
.../search_engines/prepopulated_engines.json | 12 +-
|
||||
components/search_engines/search_engine_type.h | 1 +
|
||||
.../template_url_prepopulate_data.cc | 218 ++++++++++-----------
|
||||
3 files changed, 121 insertions(+), 110 deletions(-)
|
||||
|
||||
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||
--- a/components/search_engines/prepopulated_engines.json
|
||||
+++ b/components/search_engines/prepopulated_engines.json
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 103
|
||||
+ "kCurrentDataVersion": 104
|
||||
},
|
||||
|
||||
// The following engines are included in country lists and are added to the
|
||||
@@ -247,6 +247,16 @@
|
||||
"id": 56
|
||||
},
|
||||
|
||||
+ "startpage": {
|
||||
+ "name": "StartPage",
|
||||
+ "keyword": "startpage.com",
|
||||
+ "favicon_url": "https://www.startpage.com/graphics/favicon/sp-favicon-16x16.png",
|
||||
+ "search_url": "https://www.startpage.com/do/dsearch?query={searchTerms}&cat=web&pl=opensearch",
|
||||
+ "suggest_url": "https://www.startpage.com/cgi-bin/csuggest?query={searchTerms}&limit=10&format=json",
|
||||
+ "type": "SEARCH_ENGINE_STARTPAGE",
|
||||
+ "id": 33
|
||||
+ },
|
||||
+
|
||||
"vinden": {
|
||||
"name": "Vinden.nl",
|
||||
"keyword": "vinden.nl",
|
||||
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||
--- a/components/search_engines/search_engine_type.h
|
||||
+++ b/components/search_engines/search_engine_type.h
|
||||
@@ -65,6 +65,7 @@ enum SearchEngineType {
|
||||
SEARCH_ENGINE_360,
|
||||
SEARCH_ENGINE_DUCKDUCKGO,
|
||||
SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||
+ SEARCH_ENGINE_STARTPAGE,
|
||||
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||
};
|
||||
|
||||
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||
@@ -51,548 +51,548 @@ namespace {
|
||||
|
||||
// Default (for countries with no better engine set)
|
||||
const PrepopulatedEngine* const engines_default[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// United Arab Emirates
|
||||
const PrepopulatedEngine* const engines_AE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Albania
|
||||
const PrepopulatedEngine* const engines_AL[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Argentina
|
||||
const PrepopulatedEngine* const engines_AR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
};
|
||||
|
||||
// Austria
|
||||
const PrepopulatedEngine* const engines_AT[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
};
|
||||
|
||||
// Australia
|
||||
const PrepopulatedEngine* const engines_AU[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
};
|
||||
|
||||
// Bosnia and Herzegovina
|
||||
const PrepopulatedEngine* const engines_BA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Belgium
|
||||
const PrepopulatedEngine* const engines_BE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Bulgaria
|
||||
const PrepopulatedEngine* const engines_BG[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Bahrain
|
||||
const PrepopulatedEngine* const engines_BH[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Burundi
|
||||
const PrepopulatedEngine* const engines_BI[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Brunei
|
||||
const PrepopulatedEngine* const engines_BN[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Bolivia
|
||||
const PrepopulatedEngine* const engines_BO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Brazil
|
||||
const PrepopulatedEngine* const engines_BR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
};
|
||||
|
||||
// Belarus
|
||||
const PrepopulatedEngine* const engines_BY[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
};
|
||||
|
||||
// Belize
|
||||
const PrepopulatedEngine* const engines_BZ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Canada
|
||||
const PrepopulatedEngine* const engines_CA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
};
|
||||
|
||||
// Switzerland
|
||||
const PrepopulatedEngine* const engines_CH[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
};
|
||||
|
||||
// Chile
|
||||
const PrepopulatedEngine* const engines_CL[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
};
|
||||
|
||||
// China
|
||||
const PrepopulatedEngine* const engines_CN[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
};
|
||||
|
||||
// Colombia
|
||||
const PrepopulatedEngine* const engines_CO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
};
|
||||
|
||||
// Costa Rica
|
||||
const PrepopulatedEngine* const engines_CR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Czech Republic
|
||||
const PrepopulatedEngine* const engines_CZ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
};
|
||||
|
||||
// Germany
|
||||
const PrepopulatedEngine* const engines_DE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Denmark
|
||||
const PrepopulatedEngine* const engines_DK[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
};
|
||||
|
||||
// Dominican Republic
|
||||
const PrepopulatedEngine* const engines_DO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Algeria
|
||||
const PrepopulatedEngine* const engines_DZ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Ecuador
|
||||
const PrepopulatedEngine* const engines_EC[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Estonia
|
||||
const PrepopulatedEngine* const engines_EE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Egypt
|
||||
const PrepopulatedEngine* const engines_EG[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Spain
|
||||
const PrepopulatedEngine* const engines_ES[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
};
|
||||
|
||||
// Faroe Islands
|
||||
const PrepopulatedEngine* const engines_FO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Finland
|
||||
const PrepopulatedEngine* const engines_FI[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
};
|
||||
|
||||
// France
|
||||
const PrepopulatedEngine* const engines_FR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// United Kingdom
|
||||
const PrepopulatedEngine* const engines_GB[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
};
|
||||
|
||||
// Greece
|
||||
const PrepopulatedEngine* const engines_GR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
};
|
||||
|
||||
// Guatemala
|
||||
const PrepopulatedEngine* const engines_GT[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Hong Kong
|
||||
const PrepopulatedEngine* const engines_HK[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
};
|
||||
|
||||
// Honduras
|
||||
const PrepopulatedEngine* const engines_HN[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Croatia
|
||||
const PrepopulatedEngine* const engines_HR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Hungary
|
||||
const PrepopulatedEngine* const engines_HU[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Indonesia
|
||||
const PrepopulatedEngine* const engines_ID[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
};
|
||||
|
||||
// Ireland
|
||||
const PrepopulatedEngine* const engines_IE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
};
|
||||
|
||||
// Israel
|
||||
const PrepopulatedEngine* const engines_IL[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// India
|
||||
const PrepopulatedEngine* const engines_IN[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
};
|
||||
|
||||
// Iraq
|
||||
const PrepopulatedEngine* const engines_IQ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Iran
|
||||
const PrepopulatedEngine* const engines_IR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Iceland
|
||||
const PrepopulatedEngine* const engines_IS[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Italy
|
||||
const PrepopulatedEngine* const engines_IT[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
};
|
||||
|
||||
// Jamaica
|
||||
const PrepopulatedEngine* const engines_JM[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Jordan
|
||||
const PrepopulatedEngine* const engines_JO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Japan
|
||||
const PrepopulatedEngine* const engines_JP[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
};
|
||||
|
||||
// Kenya
|
||||
const PrepopulatedEngine* const engines_KE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Kuwait
|
||||
const PrepopulatedEngine* const engines_KW[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// South Korea
|
||||
const PrepopulatedEngine* const engines_KR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
};
|
||||
|
||||
// Kazakhstan
|
||||
const PrepopulatedEngine* const engines_KZ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
};
|
||||
|
||||
// Lebanon
|
||||
const PrepopulatedEngine* const engines_LB[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Liechtenstein
|
||||
const PrepopulatedEngine* const engines_LI[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Lithuania
|
||||
const PrepopulatedEngine* const engines_LT[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
};
|
||||
|
||||
// Luxembourg
|
||||
const PrepopulatedEngine* const engines_LU[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Latvia
|
||||
const PrepopulatedEngine* const engines_LV[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
};
|
||||
|
||||
// Libya
|
||||
const PrepopulatedEngine* const engines_LY[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Morocco
|
||||
const PrepopulatedEngine* const engines_MA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Monaco
|
||||
const PrepopulatedEngine* const engines_MC[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
};
|
||||
|
||||
// Moldova
|
||||
const PrepopulatedEngine* const engines_MD[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Montenegro
|
||||
const PrepopulatedEngine* const engines_ME[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Macedonia
|
||||
const PrepopulatedEngine* const engines_MK[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Mexico
|
||||
const PrepopulatedEngine* const engines_MX[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
};
|
||||
|
||||
// Malaysia
|
||||
const PrepopulatedEngine* const engines_MY[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Nicaragua
|
||||
const PrepopulatedEngine* const engines_NI[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Netherlands
|
||||
const PrepopulatedEngine* const engines_NL[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
};
|
||||
|
||||
// Norway
|
||||
const PrepopulatedEngine* const engines_NO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
};
|
||||
|
||||
// New Zealand
|
||||
const PrepopulatedEngine* const engines_NZ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
};
|
||||
|
||||
// Oman
|
||||
const PrepopulatedEngine* const engines_OM[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Panama
|
||||
const PrepopulatedEngine* const engines_PA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Peru
|
||||
const PrepopulatedEngine* const engines_PE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
};
|
||||
|
||||
// Philippines
|
||||
const PrepopulatedEngine* const engines_PH[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
};
|
||||
|
||||
// Pakistan
|
||||
const PrepopulatedEngine* const engines_PK[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Puerto Rico
|
||||
const PrepopulatedEngine* const engines_PR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Poland
|
||||
const PrepopulatedEngine* const engines_PL[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
};
|
||||
|
||||
// Portugal
|
||||
const PrepopulatedEngine* const engines_PT[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Paraguay
|
||||
const PrepopulatedEngine* const engines_PY[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Qatar
|
||||
const PrepopulatedEngine* const engines_QA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Romania
|
||||
const PrepopulatedEngine* const engines_RO[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
};
|
||||
|
||||
// Serbia
|
||||
const PrepopulatedEngine* const engines_RS[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Russia
|
||||
const PrepopulatedEngine* const engines_RU[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
};
|
||||
|
||||
// Rwanda
|
||||
const PrepopulatedEngine* const engines_RW[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Saudi Arabia
|
||||
const PrepopulatedEngine* const engines_SA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Sweden
|
||||
const PrepopulatedEngine* const engines_SE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
};
|
||||
|
||||
// Singapore
|
||||
const PrepopulatedEngine* const engines_SG[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
};
|
||||
|
||||
// Slovenia
|
||||
const PrepopulatedEngine* const engines_SI[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
};
|
||||
|
||||
// Slovakia
|
||||
const PrepopulatedEngine* const engines_SK[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// El Salvador
|
||||
const PrepopulatedEngine* const engines_SV[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Syria
|
||||
const PrepopulatedEngine* const engines_SY[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Thailand
|
||||
const PrepopulatedEngine* const engines_TH[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
};
|
||||
|
||||
// Tunisia
|
||||
const PrepopulatedEngine* const engines_TN[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Turkey
|
||||
const PrepopulatedEngine* const engines_TR[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
};
|
||||
|
||||
// Trinidad and Tobago
|
||||
const PrepopulatedEngine* const engines_TT[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Taiwan
|
||||
const PrepopulatedEngine* const engines_TW[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
};
|
||||
|
||||
// Tanzania
|
||||
const PrepopulatedEngine* const engines_TZ[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Ukraine
|
||||
const PrepopulatedEngine* const engines_UA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
};
|
||||
|
||||
// United States
|
||||
const PrepopulatedEngine* const engines_US[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
};
|
||||
|
||||
// Uruguay
|
||||
const PrepopulatedEngine* const engines_UY[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Venezuela
|
||||
const PrepopulatedEngine* const engines_VE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
};
|
||||
|
||||
// Vietnam
|
||||
const PrepopulatedEngine* const engines_VN[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
};
|
||||
|
||||
// Yemen
|
||||
const PrepopulatedEngine* const engines_YE[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// South Africa
|
||||
const PrepopulatedEngine* const engines_ZA[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Zimbabwe
|
||||
const PrepopulatedEngine* const engines_ZW[] = {
|
||||
- &google, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
+ &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
};
|
||||
|
||||
// A list of all the engines that we know about.
|
||||
const PrepopulatedEngine* const kAllEngines[] = {
|
||||
// Prepopulated engines:
|
||||
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,727 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 11 Dec 2017 22:42:11 +0100
|
||||
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.
|
||||
---
|
||||
.../search_engines/prepopulated_engines.json | 23 ++-
|
||||
components/search_engines/search_engine_type.h | 1 +
|
||||
.../template_url_prepopulate_data.cc | 218 ++++++++++-----------
|
||||
3 files changed, 132 insertions(+), 110 deletions(-)
|
||||
|
||||
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||
--- a/components/search_engines/prepopulated_engines.json
|
||||
+++ b/components/search_engines/prepopulated_engines.json
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 104
|
||||
+ "kCurrentDataVersion": 105
|
||||
},
|
||||
|
||||
// The following engines are included in country lists and are added to the
|
||||
@@ -159,6 +159,27 @@
|
||||
"id": 1
|
||||
},
|
||||
|
||||
+ "googleen": {
|
||||
+ "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",
|
||||
+ "image_url": "{google:baseURL}searchbyimage/upload?hl=en",
|
||||
+ "new_tab_url": "{google:baseURL}_/chrome/newtab?hl=en&ie={inputEncoding}",
|
||||
+ "contextual_search_url": "{google:baseURL}_/contextualsearch?{google:contextualSearchVersion}{google:contextualSearchContextData}&hl=en",
|
||||
+ "image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
|
||||
+ "alternate_urls": [
|
||||
+ "{google:baseURL}?hl=en#q={searchTerms}",
|
||||
+ "{google:baseURL}search?hl=en#q={searchTerms}",
|
||||
+ "{google:baseURL}webhp?hl=en#q={searchTerms}",
|
||||
+ "{google:baseURL}s?hl=en#q={searchTerms}",
|
||||
+ "{google:baseURL}s?hl=en&q={searchTerms}"
|
||||
+ ],
|
||||
+ "type": "SEARCH_ENGINE_GOOGLE_EN",
|
||||
+ "id": 13
|
||||
+ },
|
||||
+
|
||||
"kvasir": {
|
||||
"name": "Kvasir",
|
||||
"keyword": "kvasir.no",
|
||||
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||
--- a/components/search_engines/search_engine_type.h
|
||||
+++ b/components/search_engines/search_engine_type.h
|
||||
@@ -66,6 +66,7 @@ enum SearchEngineType {
|
||||
SEARCH_ENGINE_DUCKDUCKGO,
|
||||
SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||
SEARCH_ENGINE_STARTPAGE,
|
||||
+ SEARCH_ENGINE_GOOGLE_EN,
|
||||
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||
};
|
||||
|
||||
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||
@@ -51,548 +51,548 @@ namespace {
|
||||
|
||||
// Default (for countries with no better engine set)
|
||||
const PrepopulatedEngine* const engines_default[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// United Arab Emirates
|
||||
const PrepopulatedEngine* const engines_AE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Albania
|
||||
const PrepopulatedEngine* const engines_AL[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Argentina
|
||||
const PrepopulatedEngine* const engines_AR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
};
|
||||
|
||||
// Austria
|
||||
const PrepopulatedEngine* const engines_AT[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
};
|
||||
|
||||
// Australia
|
||||
const PrepopulatedEngine* const engines_AU[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
};
|
||||
|
||||
// Bosnia and Herzegovina
|
||||
const PrepopulatedEngine* const engines_BA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Belgium
|
||||
const PrepopulatedEngine* const engines_BE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Bulgaria
|
||||
const PrepopulatedEngine* const engines_BG[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Bahrain
|
||||
const PrepopulatedEngine* const engines_BH[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Burundi
|
||||
const PrepopulatedEngine* const engines_BI[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Brunei
|
||||
const PrepopulatedEngine* const engines_BN[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Bolivia
|
||||
const PrepopulatedEngine* const engines_BO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Brazil
|
||||
const PrepopulatedEngine* const engines_BR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
};
|
||||
|
||||
// Belarus
|
||||
const PrepopulatedEngine* const engines_BY[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
};
|
||||
|
||||
// Belize
|
||||
const PrepopulatedEngine* const engines_BZ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Canada
|
||||
const PrepopulatedEngine* const engines_CA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
};
|
||||
|
||||
// Switzerland
|
||||
const PrepopulatedEngine* const engines_CH[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
};
|
||||
|
||||
// Chile
|
||||
const PrepopulatedEngine* const engines_CL[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
};
|
||||
|
||||
// China
|
||||
const PrepopulatedEngine* const engines_CN[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
};
|
||||
|
||||
// Colombia
|
||||
const PrepopulatedEngine* const engines_CO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
};
|
||||
|
||||
// Costa Rica
|
||||
const PrepopulatedEngine* const engines_CR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Czech Republic
|
||||
const PrepopulatedEngine* const engines_CZ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
};
|
||||
|
||||
// Germany
|
||||
const PrepopulatedEngine* const engines_DE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Denmark
|
||||
const PrepopulatedEngine* const engines_DK[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
};
|
||||
|
||||
// Dominican Republic
|
||||
const PrepopulatedEngine* const engines_DO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Algeria
|
||||
const PrepopulatedEngine* const engines_DZ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Ecuador
|
||||
const PrepopulatedEngine* const engines_EC[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Estonia
|
||||
const PrepopulatedEngine* const engines_EE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Egypt
|
||||
const PrepopulatedEngine* const engines_EG[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Spain
|
||||
const PrepopulatedEngine* const engines_ES[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
};
|
||||
|
||||
// Faroe Islands
|
||||
const PrepopulatedEngine* const engines_FO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Finland
|
||||
const PrepopulatedEngine* const engines_FI[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
};
|
||||
|
||||
// France
|
||||
const PrepopulatedEngine* const engines_FR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// United Kingdom
|
||||
const PrepopulatedEngine* const engines_GB[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
};
|
||||
|
||||
// Greece
|
||||
const PrepopulatedEngine* const engines_GR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
};
|
||||
|
||||
// Guatemala
|
||||
const PrepopulatedEngine* const engines_GT[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Hong Kong
|
||||
const PrepopulatedEngine* const engines_HK[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
};
|
||||
|
||||
// Honduras
|
||||
const PrepopulatedEngine* const engines_HN[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Croatia
|
||||
const PrepopulatedEngine* const engines_HR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Hungary
|
||||
const PrepopulatedEngine* const engines_HU[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Indonesia
|
||||
const PrepopulatedEngine* const engines_ID[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
};
|
||||
|
||||
// Ireland
|
||||
const PrepopulatedEngine* const engines_IE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
};
|
||||
|
||||
// Israel
|
||||
const PrepopulatedEngine* const engines_IL[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// India
|
||||
const PrepopulatedEngine* const engines_IN[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
};
|
||||
|
||||
// Iraq
|
||||
const PrepopulatedEngine* const engines_IQ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Iran
|
||||
const PrepopulatedEngine* const engines_IR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Iceland
|
||||
const PrepopulatedEngine* const engines_IS[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Italy
|
||||
const PrepopulatedEngine* const engines_IT[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
};
|
||||
|
||||
// Jamaica
|
||||
const PrepopulatedEngine* const engines_JM[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Jordan
|
||||
const PrepopulatedEngine* const engines_JO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Japan
|
||||
const PrepopulatedEngine* const engines_JP[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
};
|
||||
|
||||
// Kenya
|
||||
const PrepopulatedEngine* const engines_KE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Kuwait
|
||||
const PrepopulatedEngine* const engines_KW[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// South Korea
|
||||
const PrepopulatedEngine* const engines_KR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
};
|
||||
|
||||
// Kazakhstan
|
||||
const PrepopulatedEngine* const engines_KZ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
};
|
||||
|
||||
// Lebanon
|
||||
const PrepopulatedEngine* const engines_LB[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Liechtenstein
|
||||
const PrepopulatedEngine* const engines_LI[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Lithuania
|
||||
const PrepopulatedEngine* const engines_LT[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
};
|
||||
|
||||
// Luxembourg
|
||||
const PrepopulatedEngine* const engines_LU[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Latvia
|
||||
const PrepopulatedEngine* const engines_LV[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
};
|
||||
|
||||
// Libya
|
||||
const PrepopulatedEngine* const engines_LY[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Morocco
|
||||
const PrepopulatedEngine* const engines_MA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Monaco
|
||||
const PrepopulatedEngine* const engines_MC[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
};
|
||||
|
||||
// Moldova
|
||||
const PrepopulatedEngine* const engines_MD[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Montenegro
|
||||
const PrepopulatedEngine* const engines_ME[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Macedonia
|
||||
const PrepopulatedEngine* const engines_MK[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Mexico
|
||||
const PrepopulatedEngine* const engines_MX[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
};
|
||||
|
||||
// Malaysia
|
||||
const PrepopulatedEngine* const engines_MY[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Nicaragua
|
||||
const PrepopulatedEngine* const engines_NI[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Netherlands
|
||||
const PrepopulatedEngine* const engines_NL[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
};
|
||||
|
||||
// Norway
|
||||
const PrepopulatedEngine* const engines_NO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
};
|
||||
|
||||
// New Zealand
|
||||
const PrepopulatedEngine* const engines_NZ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
};
|
||||
|
||||
// Oman
|
||||
const PrepopulatedEngine* const engines_OM[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Panama
|
||||
const PrepopulatedEngine* const engines_PA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Peru
|
||||
const PrepopulatedEngine* const engines_PE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
};
|
||||
|
||||
// Philippines
|
||||
const PrepopulatedEngine* const engines_PH[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
};
|
||||
|
||||
// Pakistan
|
||||
const PrepopulatedEngine* const engines_PK[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Puerto Rico
|
||||
const PrepopulatedEngine* const engines_PR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Poland
|
||||
const PrepopulatedEngine* const engines_PL[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
};
|
||||
|
||||
// Portugal
|
||||
const PrepopulatedEngine* const engines_PT[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Paraguay
|
||||
const PrepopulatedEngine* const engines_PY[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Qatar
|
||||
const PrepopulatedEngine* const engines_QA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Romania
|
||||
const PrepopulatedEngine* const engines_RO[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
};
|
||||
|
||||
// Serbia
|
||||
const PrepopulatedEngine* const engines_RS[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Russia
|
||||
const PrepopulatedEngine* const engines_RU[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
};
|
||||
|
||||
// Rwanda
|
||||
const PrepopulatedEngine* const engines_RW[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Saudi Arabia
|
||||
const PrepopulatedEngine* const engines_SA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Sweden
|
||||
const PrepopulatedEngine* const engines_SE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
};
|
||||
|
||||
// Singapore
|
||||
const PrepopulatedEngine* const engines_SG[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
};
|
||||
|
||||
// Slovenia
|
||||
const PrepopulatedEngine* const engines_SI[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
};
|
||||
|
||||
// Slovakia
|
||||
const PrepopulatedEngine* const engines_SK[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// El Salvador
|
||||
const PrepopulatedEngine* const engines_SV[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Syria
|
||||
const PrepopulatedEngine* const engines_SY[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Thailand
|
||||
const PrepopulatedEngine* const engines_TH[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
};
|
||||
|
||||
// Tunisia
|
||||
const PrepopulatedEngine* const engines_TN[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Turkey
|
||||
const PrepopulatedEngine* const engines_TR[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
};
|
||||
|
||||
// Trinidad and Tobago
|
||||
const PrepopulatedEngine* const engines_TT[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Taiwan
|
||||
const PrepopulatedEngine* const engines_TW[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
};
|
||||
|
||||
// Tanzania
|
||||
const PrepopulatedEngine* const engines_TZ[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Ukraine
|
||||
const PrepopulatedEngine* const engines_UA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
};
|
||||
|
||||
// United States
|
||||
const PrepopulatedEngine* const engines_US[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
};
|
||||
|
||||
// Uruguay
|
||||
const PrepopulatedEngine* const engines_UY[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Venezuela
|
||||
const PrepopulatedEngine* const engines_VE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
};
|
||||
|
||||
// Vietnam
|
||||
const PrepopulatedEngine* const engines_VN[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
};
|
||||
|
||||
// Yemen
|
||||
const PrepopulatedEngine* const engines_YE[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// South Africa
|
||||
const PrepopulatedEngine* const engines_ZA[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Zimbabwe
|
||||
const PrepopulatedEngine* const engines_ZW[] = {
|
||||
- &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
+ &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
};
|
||||
|
||||
// A list of all the engines that we know about.
|
||||
const PrepopulatedEngine* const kAllEngines[] = {
|
||||
// Prepopulated engines:
|
||||
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,726 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Mar 2018 20:31:44 +0100
|
||||
Subject: Add Qwant search engine
|
||||
|
||||
---
|
||||
.../search_engines/prepopulated_engines.json | 24 ++-
|
||||
components/search_engines/search_engine_type.h | 1 +
|
||||
.../template_url_prepopulate_data.cc | 218 ++++++++++-----------
|
||||
3 files changed, 133 insertions(+), 110 deletions(-)
|
||||
|
||||
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||
--- a/components/search_engines/prepopulated_engines.json
|
||||
+++ b/components/search_engines/prepopulated_engines.json
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
// Increment this if you change the data in ways that mean users with
|
||||
// existing data should get a new version.
|
||||
- "kCurrentDataVersion": 105
|
||||
+ "kCurrentDataVersion": 106
|
||||
},
|
||||
|
||||
// The following engines are included in country lists and are added to the
|
||||
@@ -954,6 +954,28 @@
|
||||
"id": 6
|
||||
},
|
||||
|
||||
+ "qwant": {
|
||||
+ "name": "Qwant",
|
||||
+ "keyword": "qwant.com",
|
||||
+ "favicon_url": "https://www.qwant.com/favicon.ico",
|
||||
+ "search_url": "https://www.qwant.com/?client=opensearch&q={searchTerms}",
|
||||
+ "suggest_url": "https://api.qwant.com/api/suggest/?client=opensearch&q={searchTerms}",
|
||||
+ "image_url": "https://www.qwant.com/?t=images&q={searchTerms}",
|
||||
+ "type": "SEARCH_ENGINE_QWANT",
|
||||
+ "id": 14
|
||||
+ },
|
||||
+
|
||||
+ "qwant": {
|
||||
+ "name": "Qwant",
|
||||
+ "keyword": "qwant.com",
|
||||
+ "favicon_url": "https://www.qwant.com/favicon.ico",
|
||||
+ "search_url": "https://www.qwant.com/?client=opensearch&q={searchTerms}",
|
||||
+ "suggest_url": "https://api.qwant.com/api/suggest/?client=opensearch&q={searchTerms}",
|
||||
+ "image_url": "https://www.qwant.com/?t=images&q={searchTerms}",
|
||||
+ "type": "SEARCH_ENGINE_QWANT",
|
||||
+ "id": 14
|
||||
+ },
|
||||
+
|
||||
"rambler": {
|
||||
"name": "\u0420\u0430\u043c\u0431\u043b\u0435\u0440",
|
||||
"keyword": "rambler.ru",
|
||||
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
|
||||
--- a/components/search_engines/search_engine_type.h
|
||||
+++ b/components/search_engines/search_engine_type.h
|
||||
@@ -67,6 +67,7 @@ enum SearchEngineType {
|
||||
SEARCH_ENGINE_DUCKDUCKGOLIGHT,
|
||||
SEARCH_ENGINE_STARTPAGE,
|
||||
SEARCH_ENGINE_GOOGLE_EN,
|
||||
+ SEARCH_ENGINE_QWANT,
|
||||
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
|
||||
};
|
||||
|
||||
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||
@@ -51,548 +51,548 @@ namespace {
|
||||
|
||||
// Default (for countries with no better engine set)
|
||||
const PrepopulatedEngine* const engines_default[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// United Arab Emirates
|
||||
const PrepopulatedEngine* const engines_AE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Albania
|
||||
const PrepopulatedEngine* const engines_AL[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Argentina
|
||||
const PrepopulatedEngine* const engines_AR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ar,
|
||||
};
|
||||
|
||||
// Austria
|
||||
const PrepopulatedEngine* const engines_AT[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_at,
|
||||
};
|
||||
|
||||
// Australia
|
||||
const PrepopulatedEngine* const engines_AU[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_au,
|
||||
};
|
||||
|
||||
// Bosnia and Herzegovina
|
||||
const PrepopulatedEngine* const engines_BA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Belgium
|
||||
const PrepopulatedEngine* const engines_BE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Bulgaria
|
||||
const PrepopulatedEngine* const engines_BG[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Bahrain
|
||||
const PrepopulatedEngine* const engines_BH[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Burundi
|
||||
const PrepopulatedEngine* const engines_BI[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Brunei
|
||||
const PrepopulatedEngine* const engines_BN[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Bolivia
|
||||
const PrepopulatedEngine* const engines_BO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Brazil
|
||||
const PrepopulatedEngine* const engines_BR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &ask_br, &bing, &yahoo_br,
|
||||
};
|
||||
|
||||
// Belarus
|
||||
const PrepopulatedEngine* const engines_BY[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yandex_by, &mail_ru,
|
||||
};
|
||||
|
||||
// Belize
|
||||
const PrepopulatedEngine* const engines_BZ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Canada
|
||||
const PrepopulatedEngine* const engines_CA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &ask, &yahoo_ca, &yahoo_qc,
|
||||
};
|
||||
|
||||
// Switzerland
|
||||
const PrepopulatedEngine* const engines_CH[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ch,
|
||||
};
|
||||
|
||||
// Chile
|
||||
const PrepopulatedEngine* const engines_CL[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_cl,
|
||||
};
|
||||
|
||||
// China
|
||||
const PrepopulatedEngine* const engines_CN[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &baidu, &sogou, &so_360,
|
||||
};
|
||||
|
||||
// Colombia
|
||||
const PrepopulatedEngine* const engines_CO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_co,
|
||||
};
|
||||
|
||||
// Costa Rica
|
||||
const PrepopulatedEngine* const engines_CR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Czech Republic
|
||||
const PrepopulatedEngine* const engines_CZ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &seznam, &bing,
|
||||
};
|
||||
|
||||
// Germany
|
||||
const PrepopulatedEngine* const engines_DE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Denmark
|
||||
const PrepopulatedEngine* const engines_DK[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_dk,
|
||||
};
|
||||
|
||||
// Dominican Republic
|
||||
const PrepopulatedEngine* const engines_DO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Algeria
|
||||
const PrepopulatedEngine* const engines_DZ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Ecuador
|
||||
const PrepopulatedEngine* const engines_EC[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Estonia
|
||||
const PrepopulatedEngine* const engines_EE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Egypt
|
||||
const PrepopulatedEngine* const engines_EG[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Spain
|
||||
const PrepopulatedEngine* const engines_ES[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_es,
|
||||
};
|
||||
|
||||
// Faroe Islands
|
||||
const PrepopulatedEngine* const engines_FO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &ask,
|
||||
};
|
||||
|
||||
// Finland
|
||||
const PrepopulatedEngine* const engines_FI[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fi,
|
||||
};
|
||||
|
||||
// France
|
||||
const PrepopulatedEngine* const engines_FR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// United Kingdom
|
||||
const PrepopulatedEngine* const engines_GB[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk, &ask_uk,
|
||||
};
|
||||
|
||||
// Greece
|
||||
const PrepopulatedEngine* const engines_GR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_gr,
|
||||
};
|
||||
|
||||
// Guatemala
|
||||
const PrepopulatedEngine* const engines_GT[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Hong Kong
|
||||
const PrepopulatedEngine* const engines_HK[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_hk, &baidu, &bing,
|
||||
};
|
||||
|
||||
// Honduras
|
||||
const PrepopulatedEngine* const engines_HN[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Croatia
|
||||
const PrepopulatedEngine* const engines_HR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Hungary
|
||||
const PrepopulatedEngine* const engines_HU[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Indonesia
|
||||
const PrepopulatedEngine* const engines_ID[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_id, &bing,
|
||||
};
|
||||
|
||||
// Ireland
|
||||
const PrepopulatedEngine* const engines_IE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_uk,
|
||||
};
|
||||
|
||||
// Israel
|
||||
const PrepopulatedEngine* const engines_IL[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// India
|
||||
const PrepopulatedEngine* const engines_IN[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_in,
|
||||
};
|
||||
|
||||
// Iraq
|
||||
const PrepopulatedEngine* const engines_IQ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Iran
|
||||
const PrepopulatedEngine* const engines_IR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Iceland
|
||||
const PrepopulatedEngine* const engines_IS[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Italy
|
||||
const PrepopulatedEngine* const engines_IT[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &virgilio, &bing,
|
||||
};
|
||||
|
||||
// Jamaica
|
||||
const PrepopulatedEngine* const engines_JM[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Jordan
|
||||
const PrepopulatedEngine* const engines_JO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Japan
|
||||
const PrepopulatedEngine* const engines_JP[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_jp, &bing,
|
||||
};
|
||||
|
||||
// Kenya
|
||||
const PrepopulatedEngine* const engines_KE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Kuwait
|
||||
const PrepopulatedEngine* const engines_KW[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// South Korea
|
||||
const PrepopulatedEngine* const engines_KR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &naver, &daum,
|
||||
};
|
||||
|
||||
// Kazakhstan
|
||||
const PrepopulatedEngine* const engines_KZ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &mail_ru, &yandex_kz,
|
||||
};
|
||||
|
||||
// Lebanon
|
||||
const PrepopulatedEngine* const engines_LB[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Liechtenstein
|
||||
const PrepopulatedEngine* const engines_LI[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_de,
|
||||
};
|
||||
|
||||
// Lithuania
|
||||
const PrepopulatedEngine* const engines_LT[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yandex_ru,
|
||||
};
|
||||
|
||||
// Luxembourg
|
||||
const PrepopulatedEngine* const engines_LU[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_fr,
|
||||
};
|
||||
|
||||
// Latvia
|
||||
const PrepopulatedEngine* const engines_LV[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yandex_ru, &bing,
|
||||
};
|
||||
|
||||
// Libya
|
||||
const PrepopulatedEngine* const engines_LY[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Morocco
|
||||
const PrepopulatedEngine* const engines_MA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Monaco
|
||||
const PrepopulatedEngine* const engines_MC[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_fr, &bing,
|
||||
};
|
||||
|
||||
// Moldova
|
||||
const PrepopulatedEngine* const engines_MD[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Montenegro
|
||||
const PrepopulatedEngine* const engines_ME[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Macedonia
|
||||
const PrepopulatedEngine* const engines_MK[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Mexico
|
||||
const PrepopulatedEngine* const engines_MX[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_mx,
|
||||
};
|
||||
|
||||
// Malaysia
|
||||
const PrepopulatedEngine* const engines_MY[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_my, &bing,
|
||||
};
|
||||
|
||||
// Nicaragua
|
||||
const PrepopulatedEngine* const engines_NI[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Netherlands
|
||||
const PrepopulatedEngine* const engines_NL[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_nl, &vinden,
|
||||
};
|
||||
|
||||
// Norway
|
||||
const PrepopulatedEngine* const engines_NO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &kvasir,
|
||||
};
|
||||
|
||||
// New Zealand
|
||||
const PrepopulatedEngine* const engines_NZ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_nz,
|
||||
};
|
||||
|
||||
// Oman
|
||||
const PrepopulatedEngine* const engines_OM[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Panama
|
||||
const PrepopulatedEngine* const engines_PA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Peru
|
||||
const PrepopulatedEngine* const engines_PE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_pe,
|
||||
};
|
||||
|
||||
// Philippines
|
||||
const PrepopulatedEngine* const engines_PH[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_ph, &bing,
|
||||
};
|
||||
|
||||
// Pakistan
|
||||
const PrepopulatedEngine* const engines_PK[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Puerto Rico
|
||||
const PrepopulatedEngine* const engines_PR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Poland
|
||||
const PrepopulatedEngine* const engines_PL[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &onet, &bing,
|
||||
};
|
||||
|
||||
// Portugal
|
||||
const PrepopulatedEngine* const engines_PT[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Paraguay
|
||||
const PrepopulatedEngine* const engines_PY[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Qatar
|
||||
const PrepopulatedEngine* const engines_QA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Romania
|
||||
const PrepopulatedEngine* const engines_RO[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_ro, &bing,
|
||||
};
|
||||
|
||||
// Serbia
|
||||
const PrepopulatedEngine* const engines_RS[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Russia
|
||||
const PrepopulatedEngine* const engines_RU[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yandex_ru, &mail_ru,
|
||||
};
|
||||
|
||||
// Rwanda
|
||||
const PrepopulatedEngine* const engines_RW[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Saudi Arabia
|
||||
const PrepopulatedEngine* const engines_SA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_maktoob, &bing,
|
||||
};
|
||||
|
||||
// Sweden
|
||||
const PrepopulatedEngine* const engines_SE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_se,
|
||||
};
|
||||
|
||||
// Singapore
|
||||
const PrepopulatedEngine* const engines_SG[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_sg, &bing,
|
||||
};
|
||||
|
||||
// Slovenia
|
||||
const PrepopulatedEngine* const engines_SI[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &najdi, &ask,
|
||||
};
|
||||
|
||||
// Slovakia
|
||||
const PrepopulatedEngine* const engines_SK[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// El Salvador
|
||||
const PrepopulatedEngine* const engines_SV[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Syria
|
||||
const PrepopulatedEngine* const engines_SY[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Thailand
|
||||
const PrepopulatedEngine* const engines_TH[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_th, &bing,
|
||||
};
|
||||
|
||||
// Tunisia
|
||||
const PrepopulatedEngine* const engines_TN[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// Turkey
|
||||
const PrepopulatedEngine* const engines_TR[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_tr, &yandex_tr,
|
||||
};
|
||||
|
||||
// Trinidad and Tobago
|
||||
const PrepopulatedEngine* const engines_TT[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Taiwan
|
||||
const PrepopulatedEngine* const engines_TW[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_tw, &bing,
|
||||
};
|
||||
|
||||
// Tanzania
|
||||
const PrepopulatedEngine* const engines_TZ[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo, &bing,
|
||||
};
|
||||
|
||||
// Ukraine
|
||||
const PrepopulatedEngine* const engines_UA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yandex_ua, &bing,
|
||||
};
|
||||
|
||||
// United States
|
||||
const PrepopulatedEngine* const engines_US[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &aol, &ask,
|
||||
};
|
||||
|
||||
// Uruguay
|
||||
const PrepopulatedEngine* const engines_UY[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Venezuela
|
||||
const PrepopulatedEngine* const engines_VE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_ve,
|
||||
};
|
||||
|
||||
// Vietnam
|
||||
const PrepopulatedEngine* const engines_VN[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &yahoo_vn, &bing,
|
||||
};
|
||||
|
||||
// Yemen
|
||||
const PrepopulatedEngine* const engines_YE[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo_maktoob,
|
||||
};
|
||||
|
||||
// South Africa
|
||||
const PrepopulatedEngine* const engines_ZA[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo,
|
||||
};
|
||||
|
||||
// Zimbabwe
|
||||
const PrepopulatedEngine* const engines_ZW[] = {
|
||||
- &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
+ &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &bing, &yahoo, &ask,
|
||||
};
|
||||
|
||||
// A list of all the engines that we know about.
|
||||
const PrepopulatedEngine* const kAllEngines[] = {
|
||||
// Prepopulated engines:
|
||||
- &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &googleen, &google, &startpage, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
+ &aol, &ask, &ask_br, &ask_uk, &baidu, &bing, &daum, &googleen, &google, &startpage, &qwant, &duckduckgo, &duckduckgo_light, &kvasir,
|
||||
&mail_ru, &najdi, &naver, &onet, &seznam, &sogou, &vinden, &virgilio,
|
||||
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
|
||||
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 20 Jan 2018 19:44:43 +0100
|
||||
Subject: Fix crash when accessing page info / site settings
|
||||
|
||||
---
|
||||
chrome/browser/permissions/permission_manager.cc | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
|
||||
--- a/chrome/browser/permissions/permission_manager.cc
|
||||
+++ b/chrome/browser/permissions/permission_manager.cc
|
||||
@@ -675,6 +675,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
|
||||
GURL canonical_requesting_origin =
|
||||
GetCanonicalOrigin(requesting_origin, embedding_origin);
|
||||
PermissionContextBase* context = GetPermissionContext(permission);
|
||||
+ if (context == nullptr) {
|
||||
+ return PermissionResult(CONTENT_SETTING_BLOCK, PermissionStatusSource::UNSPECIFIED);
|
||||
+ }
|
||||
PermissionResult result = context->GetPermissionStatus(
|
||||
render_frame_host, canonical_requesting_origin.GetOrigin(),
|
||||
embedding_origin.GetOrigin());
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 20 Jan 2018 21:17:27 +0100
|
||||
Subject: openH264: enable ARM/ARM64 optimizations
|
||||
|
||||
Enable the optimizations not only for ChromeOS but for all compatbile ARM/ARM64 architectures
|
||||
Limit threads auto-detect only for iOS
|
||||
---
|
||||
content/renderer/media_recorder/h264_encoder.cc | 6 ++--
|
||||
third_party/openh264/BUILD.gn | 39 +++++++++++++++++++++++++
|
||||
2 files changed, 42 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/content/renderer/media_recorder/h264_encoder.cc b/content/renderer/media_recorder/h264_encoder.cc
|
||||
--- a/content/renderer/media_recorder/h264_encoder.cc
|
||||
+++ b/content/renderer/media_recorder/h264_encoder.cc
|
||||
@@ -149,11 +149,11 @@ void H264Encoder::ConfigureEncoderOnEncodingTaskRunner(const gfx::Size& size) {
|
||||
init_params.iRCMode = RC_OFF_MODE;
|
||||
}
|
||||
|
||||
-#if defined(OS_CHROMEOS)
|
||||
- init_params.iMultipleThreadIdc = 0;
|
||||
-#else
|
||||
+#if defined(OS_MACOSX)
|
||||
// Threading model: Set to 1 due to https://crbug.com/583348.
|
||||
init_params.iMultipleThreadIdc = 1;
|
||||
+#else
|
||||
+ init_params.iMultipleThreadIdc = 0;
|
||||
#endif
|
||||
|
||||
// TODO(mcasas): consider reducing complexity if there are few CPUs available.
|
||||
diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
|
||||
--- a/third_party/openh264/BUILD.gn
|
||||
+++ b/third_party/openh264/BUILD.gn
|
||||
@@ -10,6 +10,7 @@ import("//third_party/yasm/yasm_assemble.gni")
|
||||
# Config shared by all openh264 targets.
|
||||
config("config") {
|
||||
cflags = []
|
||||
+ defines = []
|
||||
|
||||
if (is_chromeos && target_cpu == "arm") {
|
||||
# HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
|
||||
@@ -20,6 +21,20 @@ config("config") {
|
||||
]
|
||||
}
|
||||
|
||||
+ # HAVE_NEON and __chromeos__ are needed for enabling NEON on ChromeOS
|
||||
+ # devices.
|
||||
+ if (is_chromeos && target_cpu == "arm") {
|
||||
+ defines += [
|
||||
+ "__chromeos__",
|
||||
+ ]
|
||||
+ }
|
||||
+
|
||||
+ if (target_cpu == "arm" || target_cpu == "arm64") {
|
||||
+ defines += [
|
||||
+ "HAVE_NEON",
|
||||
+ ]
|
||||
+ }
|
||||
+
|
||||
# GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
|
||||
if (!is_win || is_clang) {
|
||||
cflags += [
|
||||
@@ -129,6 +144,14 @@ source_set("common") {
|
||||
}
|
||||
include_dirs = openh264_common_include_dirs
|
||||
|
||||
+ # enable ARM optimizations
|
||||
+ if (target_cpu == "arm") {
|
||||
+ sources += openh264_common_sources_asm_arm
|
||||
+ }
|
||||
+ if (target_cpu == "arm64") {
|
||||
+ sources += openh264_common_sources_asm_arm64
|
||||
+ }
|
||||
+
|
||||
configs -= [ "//build/config/compiler:chromium_code" ]
|
||||
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||||
configs += [ ":config" ]
|
||||
@@ -155,6 +178,14 @@ source_set("processing") {
|
||||
}
|
||||
include_dirs = openh264_processing_include_dirs
|
||||
|
||||
+ # enable ARM optimizations
|
||||
+ if (target_cpu == "arm") {
|
||||
+ sources += openh264_common_sources_asm_arm
|
||||
+ }
|
||||
+ if (target_cpu == "arm64") {
|
||||
+ sources += openh264_common_sources_asm_arm64
|
||||
+ }
|
||||
+
|
||||
configs -= [ "//build/config/compiler:chromium_code" ]
|
||||
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||||
configs += [ ":config" ]
|
||||
@@ -174,6 +205,14 @@ source_set("encoder") {
|
||||
}
|
||||
include_dirs = openh264_encoder_include_dirs
|
||||
|
||||
+ # enable ARM optimizations
|
||||
+ if (target_cpu == "arm") {
|
||||
+ sources += openh264_common_sources_asm_arm
|
||||
+ }
|
||||
+ if (target_cpu == "arm64") {
|
||||
+ sources += openh264_common_sources_asm_arm64
|
||||
+ }
|
||||
+
|
||||
configs -= [ "//build/config/compiler:chromium_code" ]
|
||||
configs += [ "//build/config/compiler:no_chromium_code" ]
|
||||
configs += [ ":config" ]
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 28 Oct 2017 10:09:41 +0200
|
||||
Subject: Inject scripts for AMP, tracking, ads and video functionality
|
||||
|
||||
Remove AMP, tracking and ads from search results
|
||||
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to
|
||||
allow playing videos in background (original Javascript code by timdream)
|
||||
Send a random key press to circumvent idle status detection
|
||||
---
|
||||
third_party/blink/renderer/core/dom/BUILD.gn | 2 ++
|
||||
third_party/blink/renderer/core/dom/document.cc | 28 +++++++++++++++++++++-
|
||||
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 +++++
|
||||
.../renderer/core/dom/extensions/video_bg_play.h | 6 +++++
|
||||
4 files changed, 41 insertions(+), 1 deletion(-)
|
||||
create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
|
||||
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.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
|
||||
@@ -145,6 +145,8 @@ blink_core_sources("dom") {
|
||||
"global_event_handlers.h",
|
||||
"icon_url.cc",
|
||||
"icon_url.h",
|
||||
+ "extensions/dont-track-me.h",
|
||||
+ "extensions/video-bg-play.h",
|
||||
"id_target_observer.cc",
|
||||
"id_target_observer.h",
|
||||
"id_target_observer_registry.cc",
|
||||
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
|
||||
@@ -230,6 +230,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.h"
|
||||
@@ -289,6 +290,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>>;
|
||||
@@ -6027,8 +6030,31 @@ void Document::FinishedParsing() {
|
||||
fetcher_->ClearResourcesFromPreviousFetcher();
|
||||
}
|
||||
|
||||
- if (IsPrefetchOnly())
|
||||
+ if (IsPrefetchOnly()) {
|
||||
WebPrerenderingSupport::Current()->PrefetchFinished();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // determine whether this is a Google search results page
|
||||
+ const WTF::String& host = url_.Host();
|
||||
+ auto* bodyElement = body();
|
||||
+ if (bodyElement) {
|
||||
+ size_t pos = host.Find(".google.");
|
||||
+ if ((pos != WTF::kNotFound) && (host.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);
|
||||
+ }
|
||||
+
|
||||
+ // check for eligibility of the video bg fix
|
||||
+ if ((WTF::kNotFound != host.Find("youtube.com")) || (WTF::kNotFound != host.Find("vimeo.com"))) {
|
||||
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
|
||||
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||
+ e->setText(VIDEO_BG_PLAY_JS);
|
||||
+ bodyElement->AppendChild(e);
|
||||
+ }
|
||||
+ } // has origin and body element
|
||||
}
|
||||
|
||||
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
|
||||
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/* generate a synthetic keypress to circumvent the extremely useful pause-and-prompt beaviour */\nsetInterval(function() {\n document.dispatchEvent(new KeyboardEvent(\"keydown\", {key : \"a\", char : \"a\", shiftKey: false}));\n}, 3 * 60 * 1000);\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
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -879,6 +879,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());
|
||||
@@ -2997,7 +3003,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
|
||||
// If suspending background video, pause any video that's not remoted or
|
||||
// not unlocked to play in the background.
|
||||
if (IsBackgroundSuspendEnabled(delegate_)) {
|
||||
- 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
|
||||
@@ -161,6 +161,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.11.0
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 25 Oct 2018 23:13:34 +0200
|
||||
Subject: Add flag to control video playback resume feature
|
||||
|
||||
Disable it by default on Android as it is everywhere else
|
||||
---
|
||||
chrome/browser/about_flags.cc | 5 +++++
|
||||
chrome/browser/flag_descriptions.cc | 5 +++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
media/base/media_switches.cc | 6 +-----
|
||||
4 files changed, 14 insertions(+), 5 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
|
||||
@@ -3520,6 +3520,11 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(media::kPictureInPicture)},
|
||||
#endif // !defined(OS_ANDROID)
|
||||
|
||||
+ {"resume-background-video",
|
||||
+ flag_descriptions::kResumeBackgroundVideoName,
|
||||
+ flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
|
||||
+
|
||||
#if defined(OS_MACOSX)
|
||||
{"mac-touchbar", flag_descriptions::kMacTouchBarName,
|
||||
flag_descriptions::kMacTouchBarDescription, kOsMac,
|
||||
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
|
||||
@@ -747,6 +747,11 @@ const char kEnablePictureInPictureName[] = "Enable Picture-in-Picture.";
|
||||
const char kEnablePictureInPictureDescription[] =
|
||||
"Enable the Picture-in-Picture feature for videos.";
|
||||
|
||||
+const char kResumeBackgroundVideoName[] = "Resume background video.";
|
||||
+const char kResumeBackgroundVideoDescription[] =
|
||||
+ "Resume background video playback when tab re-gains focus; additionally, "
|
||||
+ "it will pause video playback every single time you switch tabs.";
|
||||
+
|
||||
const char kEnablePixelCanvasRecordingName[] = "Enable pixel canvas recording";
|
||||
const char kEnablePixelCanvasRecordingDescription[] =
|
||||
"Pixel canvas recording allows the compositor to raster contents aligned "
|
||||
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
|
||||
@@ -465,6 +465,9 @@ extern const char kOOPHPStackModePseudo[];
|
||||
extern const char kEnablePictureInPictureName[];
|
||||
extern const char kEnablePictureInPictureDescription[];
|
||||
|
||||
+extern const char kResumeBackgroundVideoName[];
|
||||
+extern const char kResumeBackgroundVideoDescription[];
|
||||
+
|
||||
extern const char kEnablePixelCanvasRecordingName[];
|
||||
extern const char kEnablePixelCanvasRecordingDescription[];
|
||||
|
||||
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
|
||||
--- a/media/base/media_switches.cc
|
||||
+++ b/media/base/media_switches.cc
|
||||
@@ -220,11 +220,7 @@ const base::Feature kPreloadMetadataSuspend{"PreloadMetadataSuspend",
|
||||
// when in background.
|
||||
const base::Feature kResumeBackgroundVideo {
|
||||
"resume-background-video",
|
||||
-#if defined(OS_ANDROID)
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT
|
||||
-#else
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT
|
||||
-#endif
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT
|
||||
};
|
||||
|
||||
// Display the Cast overlay button on the media controls.
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -384,6 +384,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.11.0
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
From: Serg <serg.zhukovsky@gmail.com>
|
||||
Date: Tue, 31 Jan 2017 22:12:27 -0500
|
||||
Subject: Add exit menu item
|
||||
|
||||
Corrected Exit functionality
|
||||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 2 ++
|
||||
.../java/src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
|
||||
.../org/chromium/chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
|
||||
4 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
|
||||
--- 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
|
||||
@@ -2019,6 +2019,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/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
|
||||
@@ -87,7 +87,11 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
|
||||
|
||||
// Kick off a timer to kill the process after a delay, which fires only if the Activities
|
||||
// take too long to be finished.
|
||||
- mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
|
||||
+ if (restart) {
|
||||
+ mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
|
||||
+ } else {
|
||||
+ fireBrowserRestartActivityIntent();
|
||||
+ }
|
||||
}
|
||||
|
||||
@Override
|
||||
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
|
||||
@@ -2921,6 +2921,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.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -2043,15 +2043,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
|
||||
@@ -341,9 +341,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
|
||||
@@ -1220,7 +1220,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.11.0
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 18 Oct 2017 21:26:53 +0200
|
||||
Subject: Add menu option to toggle global Javascript preference
|
||||
|
||||
---
|
||||
chrome/android/java/res/menu/custom_tabs_menu.xml | 13 ++++++++
|
||||
chrome/android/java/res/menu/main_menu.xml | 13 ++++++++
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 8 +++++
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 8 +++++
|
||||
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 ++++++++++++++++++++++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +++++++
|
||||
7 files changed, 92 insertions(+)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
|
||||
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
|
||||
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
|
||||
@@ -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">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_javascript_id"
|
||||
+ android:title="@string/menu_enable_javascript" />
|
||||
+ <item android:id="@+id/enable_javascript_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
|
||||
@@ -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">
|
||||
+ <menu>
|
||||
+ <item android:id="@+id/enable_javascript_id"
|
||||
+ android:title="@string/menu_enable_javascript" />
|
||||
+ <item android:id="@+id/enable_javascript_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
|
||||
@@ -2111,6 +2111,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
|
||||
currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnChange);
|
||||
RecordUserAction.record("MobileMenuRequestDesktopSite");
|
||||
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
|
||||
} else if (id == R.id.reader_mode_prefs_id) {
|
||||
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
|
||||
} else {
|
||||
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
|
||||
@@ -1711,6 +1711,14 @@ public class ChromeTabbedActivity
|
||||
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
||||
}
|
||||
RecordUserAction.record("MobileMenuDownloadManager");
|
||||
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
|
||||
} else if (id == R.id.open_recently_closed_tab) {
|
||||
TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
|
||||
if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
@@ -25,6 +25,7 @@ import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeActivity;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.ChromeSwitches;
|
||||
+import org.chromium.chrome.browser.ContentSettingsType;
|
||||
import org.chromium.chrome.browser.ShortcutHelper;
|
||||
import org.chromium.chrome.browser.UrlConstants;
|
||||
import org.chromium.chrome.browser.banners.AppBannerManager;
|
||||
@@ -197,6 +198,8 @@ public class AppMenuPropertiesDelegate {
|
||||
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
+ updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
+
|
||||
// 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()));
|
||||
@@ -436,6 +439,41 @@ public class AppMenuPropertiesDelegate {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Updates the enable JavaScript item's state.
|
||||
+ *
|
||||
+ * @param menu {@link Menu} for enable javascript
|
||||
+ * @param currentTab Current tab being displayed.
|
||||
+ */
|
||||
+ protected void updateEnableJavascriptMenuItem(
|
||||
+ Menu menu, Tab currentTab) {
|
||||
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_javascript_row_menu_id);
|
||||
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_javascript_id);
|
||||
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_javascript_check_id);
|
||||
+
|
||||
+ // Hide enable javascript 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 jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
|
||||
+
|
||||
+ // Mark the checkbox if Javascript is activated on this tab.
|
||||
+ enableMenuCheck.setChecked(jsEnabled);
|
||||
+
|
||||
+ // This title doesn't seem to be displayed by Android, but it is used to set up
|
||||
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
|
||||
+ enableMenuLabel.setTitleCondensed(jsEnabled
|
||||
+ ? mActivity.getString(R.string.menu_enable_javascript_on)
|
||||
+ : mActivity.getString(R.string.menu_enable_javascript_off));
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* A notification that the header view has finished inflating.
|
||||
* @param view The view that was inflated.
|
||||
* @param appMenu The menu the view is inside of.
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
@@ -172,6 +172,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
|
||||
}
|
||||
|
||||
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
|
||||
@@ -2906,6 +2906,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>
|
||||
+
|
||||
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT" desc="Menu item in Chrome's overflow/options menu. If this menu item is unselected, Bromite will disable JavaScript support for the page. [CHAR-LIMIT=27]">
|
||||
+ Enable JavaScript
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT_ON" desc="Accessibility description for when Enable JavaScript is selected.">
|
||||
+ Turn off JavaScript
|
||||
+ </message>
|
||||
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT_OFF" desc="Accessibility description for when Enable JavaScript is unselected.">
|
||||
+ Turn on JavaScript
|
||||
+ </message>
|
||||
+
|
||||
<message name="IDS_MENU_REQUEST_DESKTOP_SITE" desc="Menu item in Chrome's overflow/options menu. By default, when a user navigates to a web page, Chrome shows the mobile site, that is, the version of the site designed for mobile phones. If this menu item is selected, however, Chrome will try to load the 'desktop' site instead, i.e. the site designed for desktop computers or laptop computers, which have larger screens. [CHAR-LIMIT=24]">
|
||||
Desktop site
|
||||
</message>
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,681 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 23 Aug 2018 19:30:15 +0200
|
||||
Subject: Bromite adblock engine
|
||||
|
||||
Original adblock engine ported from NoChromo patch
|
||||
Make interception testable
|
||||
Add domain support
|
||||
Re-land: third-party filters support
|
||||
Add menu option to toggle global Adblock preference
|
||||
Allow toggling Chromium's "ads enabled" content settings option together with Bromite adblock engine.
|
||||
Perform adblock interception in StartJob to address lagging issues
|
||||
New mechanism for adblocking based on Brave's adblocking hook
|
||||
---
|
||||
chrome/android/java/res/menu/custom_tabs_menu.xml | 12 +
|
||||
chrome/android/java/res/menu/main_menu.xml | 11 +
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 8 +
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 8 +
|
||||
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 +++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +
|
||||
chrome/browser/net/chrome_network_delegate.cc | 62 ++++
|
||||
.../subresource_filter_content_settings_manager.cc | 1 +
|
||||
net/BUILD.gn | 7 +
|
||||
net/url_request/adblock_intercept.cc | 325 +++++++++++++++++++++
|
||||
net/url_request/adblock_intercept.h | 24 ++
|
||||
12 files changed, 509 insertions(+)
|
||||
create mode 100644 net/url_request/adblock_intercept.cc
|
||||
create mode 100644 net/url_request/adblock_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
|
||||
@@ -2121,6 +2121,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().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
|
||||
@@ -1669,6 +1669,14 @@ public class ChromeTabbedActivity
|
||||
reportNewTabShortcutUsed(true);
|
||||
getTabCreator(true).launchNTP();
|
||||
}
|
||||
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
|
||||
+ final boolean reloadOnChange = !currentTab.isNativePage();
|
||||
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
|
||||
+ if (reloadOnChange) {
|
||||
+ currentTab.reload();
|
||||
+ }
|
||||
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
|
||||
} else if (id == R.id.all_bookmarks_menu_id) {
|
||||
if (currentTab != null) {
|
||||
getCompositorViewHolder().hideKeyboard(() -> {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
|
||||
@@ -196,6 +196,8 @@ public class AppMenuPropertiesDelegate {
|
||||
&& !TextUtils.isEmpty(url);
|
||||
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
|
||||
|
||||
+ updateEnableAdBlockMenuItem(menu, currentTab);
|
||||
+
|
||||
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
|
||||
|
||||
updateEnableJavascriptMenuItem(menu, currentTab);
|
||||
@@ -474,6 +476,42 @@ public class AppMenuPropertiesDelegate {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Updates the enable AdBlock item's state.
|
||||
+ *
|
||||
+ * @param menu {@link Menu} for enable adblock
|
||||
+ * @param currentTab Current tab being displayed.
|
||||
+ */
|
||||
+ protected void updateEnableAdBlockMenuItem(
|
||||
+ Menu menu, Tab currentTab) {
|
||||
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_adblock_row_menu_id);
|
||||
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_adblock_id);
|
||||
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_adblock_check_id);
|
||||
+
|
||||
+
|
||||
+ // Hide enable adblock on all chrome:// pages except for the NTP.
|
||||
+ String url = currentTab.getUrl();
|
||||
+ boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
|
||||
+ || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
|
||||
+ // Also hide enable javascsript on Reader Mode.
|
||||
+ boolean isDistilledPage = DomDistillerUrlUtils.isDistilledPage(url);
|
||||
+
|
||||
+ boolean itemVisible = (!isChromeScheme || currentTab.isNativePage()) && !isDistilledPage;
|
||||
+ enableMenuRow.setVisible(itemVisible);
|
||||
+ if (!itemVisible) return;
|
||||
+
|
||||
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
|
||||
+
|
||||
+ // Mark the checkbox if adblock is globally activate.
|
||||
+ enableMenuCheck.setChecked(adBlockEnabled);
|
||||
+
|
||||
+ // This title doesn't seem to be displayed by Android, but it is used to set up
|
||||
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
|
||||
+ enableMenuLabel.setTitleCondensed(adBlockEnabled
|
||||
+ ? mActivity.getString(R.string.menu_enable_adblock_on)
|
||||
+ : mActivity.getString(R.string.menu_enable_adblock_off));
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* A notification that the header view has finished inflating.
|
||||
* @param view The view that was inflated.
|
||||
* @param appMenu The menu the view is inside of.
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
|
||||
@@ -171,6 +171,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
|
||||
@@ -2926,6 +2926,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/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
|
||||
--- a/chrome/browser/net/chrome_network_delegate.cc
|
||||
+++ b/chrome/browser/net/chrome_network_delegate.cc
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/content_settings/cookie_settings_factory.h"
|
||||
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
||||
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
|
||||
#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
|
||||
#include "chrome/browser/net/chrome_extensions_network_delegate.h"
|
||||
@@ -57,6 +58,7 @@
|
||||
#if defined(OS_ANDROID)
|
||||
#include "base/android/path_utils.h"
|
||||
#include "chrome/browser/io_thread.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
#endif
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
@@ -174,15 +176,75 @@ void ChromeNetworkDelegate::set_cookie_settings(
|
||||
cookie_settings_ = cookie_settings;
|
||||
}
|
||||
|
||||
+#define TRANSPARENT1PXGIF "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
|
||||
+
|
||||
int ChromeNetworkDelegate::OnBeforeURLRequest(
|
||||
net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
GURL* new_url) {
|
||||
+
|
||||
+#if defined(OS_ANDROID)
|
||||
+ if (request) {
|
||||
+ bool block = false, isValidUrl;
|
||||
+
|
||||
+ isValidUrl = request->url().is_valid();
|
||||
+ std::string scheme = request->url().scheme();
|
||||
+ if (isValidUrl && scheme.length()) {
|
||||
+ std::transform(scheme.begin(), scheme.end(), scheme.begin(), ::tolower);
|
||||
+ if ("http" != scheme && "https" != scheme) {
|
||||
+ isValidUrl = false;
|
||||
+ }
|
||||
+ }
|
||||
+ const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
|
||||
+
|
||||
+ bool adblock_enabled = false;
|
||||
+ if (isValidUrl && info) {
|
||||
+ const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter = info->GetWebContentsGetterForRequest();
|
||||
+ content::WebContents* web_contents = web_contents_getter.Run();
|
||||
+ if (web_contents) {
|
||||
+ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
||||
+ //FIXME: this should not be called from the IO thread
|
||||
+ const HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(profile);
|
||||
+
|
||||
+ if (content_settings) {
|
||||
+ // check global value first
|
||||
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetDefaultContentSetting(ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS, NULL);
|
||||
+
|
||||
+ if (!adblock_enabled) {
|
||||
+ // check per-site value
|
||||
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetContentSetting(request->url(), GURL(), ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS,
|
||||
+ std::string());
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (adblock_enabled
|
||||
+ && content::RESOURCE_TYPE_MAIN_FRAME != info->GetResourceType()
|
||||
+ && net::adblock_intercept(request->url(),
|
||||
+ request->initiator()->host(),
|
||||
+ info->GetResourceType())) {
|
||||
+ block = true;
|
||||
+ }
|
||||
+
|
||||
+ if (block) {
|
||||
+ if (content::RESOURCE_TYPE_IMAGE == info->GetResourceType()) {
|
||||
+ *new_url = GURL(TRANSPARENT1PXGIF);
|
||||
+ } else {
|
||||
+ *new_url = GURL("");
|
||||
+ }
|
||||
+ return net::ERR_BLOCKED_BY_ADMINISTRATOR;
|
||||
+ }
|
||||
+ } // valid URL and info
|
||||
+ } // request
|
||||
+#endif // OS_ANDROID
|
||||
+
|
||||
extensions_delegate_->ForwardStartRequestStatus(request);
|
||||
return extensions_delegate_->NotifyBeforeURLRequest(
|
||||
request, std::move(callback), new_url);
|
||||
}
|
||||
|
||||
+#undef TRANSPARENT1PXGIF
|
||||
+
|
||||
int ChromeNetworkDelegate::OnBeforeStartTransaction(
|
||||
net::URLRequest* request,
|
||||
net::CompletionOnceCallback callback,
|
||||
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
|
||||
--- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
|
||||
+++ b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "components/history/core/browser/history_service.h"
|
||||
#include "components/keyed_service/core/service_access_type.h"
|
||||
#include "url/gurl.h"
|
||||
+#include "net/url_request/adblock_intercept.h"
|
||||
|
||||
namespace {
|
||||
|
||||
diff --git a/net/BUILD.gn b/net/BUILD.gn
|
||||
--- a/net/BUILD.gn
|
||||
+++ b/net/BUILD.gn
|
||||
@@ -1712,6 +1712,13 @@ component("net") {
|
||||
"url_request/websocket_handshake_userdata_key.h",
|
||||
]
|
||||
|
||||
+ if (is_android) {
|
||||
+ sources += [
|
||||
+ "url_request/adblock_intercept.cc",
|
||||
+ "url_request/adblock_intercept.h"
|
||||
+ ]
|
||||
+ }
|
||||
+
|
||||
if (enable_reporting) {
|
||||
sources += [
|
||||
"network_error_logging/network_error_logging_delegate.cc",
|
||||
diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_intercept.cc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/adblock_intercept.cc
|
||||
@@ -0,0 +1,325 @@
|
||||
+#include "url/gurl.h"
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+#include <cstddef>
|
||||
+#include <cstdlib>
|
||||
+#include <string.h>
|
||||
+
|
||||
+#include "log.h"
|
||||
+#include <tld.h>
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+#include "content/public/common/resource_type.h"
|
||||
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
||||
+#include <android/log.h>
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+#include "net/url_request/adblock_entries.h"
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+const char *LOG_TAG = "Bromite";
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+int adblock_rules_count() { return ADBLOCK_ENTRY_COUNT; }
|
||||
+#endif
|
||||
+
|
||||
+// True if the given canonical |host| is "[www.]<domain_in_lower_case>.<TLD>"
|
||||
+// with a valid TLD. If |subdomain_permission| is ALLOW_SUBDOMAIN, we check
|
||||
+// against host "*.<domain_in_lower_case>.<TLD>" instead. Will return the TLD
|
||||
+// string in |tld|, if specified and the |host| can be parsed.
|
||||
+static bool is_first_party(char *l_host, char *l_url_host) {
|
||||
+ size_t tld_length;
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+ char *found_tld;
|
||||
+
|
||||
+ if (TLD_SUCCESS != tld_get_z(l_host, &found_tld))
|
||||
+ return false;
|
||||
+ tld_length = strlen(found_tld);
|
||||
+ if (tld_length == 0)
|
||||
+ return false;
|
||||
+#else
|
||||
+ tld_length = net::registry_controlled_domains::GetCanonicalHostRegistryLength(
|
||||
+ l_host, net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
|
||||
+ net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
|
||||
+ if ((tld_length == 0) || (tld_length == std::string::npos))
|
||||
+ return false;
|
||||
+#endif
|
||||
+
|
||||
+ int len = strlen(l_host);
|
||||
+ char *tld = l_host + len - tld_length;
|
||||
+
|
||||
+ // Removes any subdomain from origin host.
|
||||
+ int i = len - tld_length - 2, top_i = i;
|
||||
+ if (i < 0) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ char *domain = l_host;
|
||||
+ for (; i >= 0; i--) {
|
||||
+ if (l_host[i] == '.') {
|
||||
+ int p_len = top_i - i;
|
||||
+ // skip "co" in "co.uk", "org" in "org.uk"
|
||||
+ if (p_len <= 3) {
|
||||
+ tld -= p_len + 1;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // segment is long enough, accept it at as a domain
|
||||
+ domain = l_host + i;
|
||||
+ len -= i;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
|
||||
+ "%s: extracted domain suffix: \"%s\" (TLD=\"%s\")",
|
||||
+ l_host, domain, tld);
|
||||
+#endif
|
||||
+
|
||||
+ // Check if supplied URL host matches, including the dot.
|
||||
+ int b_len = strlen(l_url_host);
|
||||
+ if (b_len < len) {
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (int i = 0; i < len; i++) {
|
||||
+ if (l_url_host[b_len - 1 - i] != domain[len - 1 - i])
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ // pass with flying colors
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+static char *strtolower(const char *str) {
|
||||
+ int len = strlen(str);
|
||||
+ char *ret = (char *)malloc(len + 1);
|
||||
+ ret[len] = '\0';
|
||||
+ for (int i = 0; i < len; i++) {
|
||||
+ if ((65 <= str[i]) && (str[i] <= 90)) {
|
||||
+ ret[i] = str[i] + 32;
|
||||
+ } else {
|
||||
+ ret[i] = str[i];
|
||||
+ }
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static char *strtosep(const char *str) {
|
||||
+ int len = strlen(str);
|
||||
+ char *ret = (char *)malloc(len + 3);
|
||||
+ ret[0] = '^';
|
||||
+ ret[len + 1] = '^';
|
||||
+ ret[len + 2] = '\0';
|
||||
+ for (int i = 0; i < len; i++) {
|
||||
+ if ((str[i] == ':') || (str[i] == '/') || (str[i] == '?') ||
|
||||
+ (str[i] == '&') || (str[i] == '=')) {
|
||||
+ ret[i + 1] = '^';
|
||||
+ } else {
|
||||
+ ret[i + 1] = str[i];
|
||||
+ }
|
||||
+ }
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static bool url_matches(const char *c_url, char *c_url_sep, char *c_url_lower,
|
||||
+ char *c_url_lower_sep, adblock_entry *entry) {
|
||||
+ bool match = false;
|
||||
+ // select comparison string based on case and separator presence (separator
|
||||
+ // takes some shortcuts)
|
||||
+ bool match_case = ((entry->flags & ADBLOCK_FLAG_MATCH_CASE) != 0);
|
||||
+ bool match_separator = ((entry->flags & ADBLOCK_FLAG_HAS_SEPARATOR) != 0);
|
||||
+ const char *match_url =
|
||||
+ match_case ? (match_separator ? c_url_sep : c_url)
|
||||
+ : (match_separator ? c_url_lower_sep : c_url_lower);
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG_MORE
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[case:%d][sep:%d][%s]",
|
||||
+ match_case, match_separator, match_url);
|
||||
+#endif
|
||||
+ // check for all match parts at >= position of last match
|
||||
+ const char *last = match_url;
|
||||
+ for (int m = 0; const char *url_match = entry->matches[m]; m++) {
|
||||
+ bool is_last_match = entry->matches[m + 1] == NULL;
|
||||
+ const char *pos = strstr(last, url_match);
|
||||
+ match = (pos != NULL);
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG_MORE
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[%s][found:%d][match:%d]",
|
||||
+ entry->matches[m], pos == NULL ? 0 : 1, match ? 1 : 0);
|
||||
+#endif
|
||||
+ // check if the url starts with the first match part
|
||||
+ if (match && (m == 0) && ((entry->flags & ADBLOCK_FLAG_MATCH_BEGIN) != 0) &&
|
||||
+ (pos != match_url))
|
||||
+ match = false;
|
||||
+
|
||||
+ // check if the url ends with the last match part
|
||||
+ if (match && is_last_match &&
|
||||
+ ((entry->flags & ADBLOCK_FLAG_MATCH_END) != 0) &&
|
||||
+ (pos != &match_url[strlen(match_url) - strlen(entry->matches[m])]))
|
||||
+ match = false;
|
||||
+
|
||||
+ // check domain match
|
||||
+ if (match && (m == 0) &&
|
||||
+ ((entry->flags & ADBLOCK_FLAG_MATCH_DOMAIN) != 0) &&
|
||||
+ (pos != match_url) && (pos[-1] != '^') && (pos[-1] != '.') &&
|
||||
+ (pos[-1] != '/'))
|
||||
+ match = false;
|
||||
+
|
||||
+ // short circuit
|
||||
+ if (!match)
|
||||
+ break;
|
||||
+ }
|
||||
+ return match;
|
||||
+}
|
||||
+
|
||||
+bool url_match_domain(adblock_entry *entry, const std::string &origin_host) {
|
||||
+ bool match_domain = true;
|
||||
+ // check for a negative domain match
|
||||
+ if (entry->domains_skip) {
|
||||
+ if (origin_host.empty()) {
|
||||
+ // skip this rule, cannot match on domain
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (int d = 0; const char *domain = entry->domains_skip[d]; d++) {
|
||||
+ if (domain == origin_host) {
|
||||
+ match_domain = false;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // check for a required positive domain match
|
||||
+ if (entry->domains) {
|
||||
+ if (origin_host.empty()) {
|
||||
+ // skip this rule, cannot match on domain
|
||||
+ return false;
|
||||
+ }
|
||||
+ for (int d = 0; const char *domain = entry->domains[d]; d++) {
|
||||
+ if (domain != origin_host) {
|
||||
+ match_domain = false;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return match_domain;
|
||||
+}
|
||||
+
|
||||
+static bool url_match_party(adblock_entry *entry, const GURL &url,
|
||||
+ const std::string &origin_host, bool &checked_fp,
|
||||
+ bool &fp) {
|
||||
+ bool wanted_fp;
|
||||
+ if ((entry->flags & ADBLOCK_FLAG_THIRD_PARTY) != 0) {
|
||||
+ wanted_fp = false;
|
||||
+ } else if ((entry->flags & ADBLOCK_FLAG_FIRST_PARTY) != 0) {
|
||||
+ wanted_fp = true;
|
||||
+ } else {
|
||||
+ // no-op
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ if (origin_host.empty()) {
|
||||
+ // cannot match this rule, no origin host to determine first/third party
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+//__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "matchFirst=%d matchThird=%d",
|
||||
+// matchFirstParty, matchThirdParty);
|
||||
+#endif
|
||||
+ if (!checked_fp) {
|
||||
+ // lower-case version
|
||||
+ char *l_host = strtolower(origin_host.c_str()),
|
||||
+ *l_url_host = strtolower(url.host().c_str());
|
||||
+
|
||||
+ // is the URL a first-party to the current page's host?
|
||||
+ fp = is_first_party(l_host, l_url_host);
|
||||
+
|
||||
+ checked_fp = true;
|
||||
+#ifdef ADB_TESTER
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
|
||||
+ "is_first_party(\"%s\", \"%s\") = %s", l_host,
|
||||
+ l_url_host, fp ? "true" : "false");
|
||||
+#endif
|
||||
+ free(l_host);
|
||||
+ free(l_url_host);
|
||||
+ }
|
||||
+
|
||||
+ return fp == wanted_fp;
|
||||
+}
|
||||
+
|
||||
+int adblock_intercept(const GURL &url, const std::string &origin_host
|
||||
+#ifndef ADB_TESTER
|
||||
+, content::ResourceType resource_type
|
||||
+#endif
|
||||
+) {
|
||||
+ if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) {
|
||||
+ const char *c_url = url.spec().c_str();
|
||||
+ char *c_url_lower = strtolower(c_url);
|
||||
+ char *c_url_sep = strtosep(c_url);
|
||||
+ char *c_url_lower_sep = strtosep(c_url_lower);
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[%s with host '%s'] [%s]",
|
||||
+ c_url, url.host().c_str(), origin_host.c_str());
|
||||
+#endif
|
||||
+
|
||||
+ bool checked_fp = false, fp = false;
|
||||
+
|
||||
+ bool intercept = false;
|
||||
+ for (int i = 0; i < ADBLOCK_ENTRY_COUNT; i++) {
|
||||
+ adblock_entry *entry = &ADBLOCK_ENTRIES[i];
|
||||
+
|
||||
+ // no use checking rules when we're intercepting, or exceptions when not
|
||||
+ bool check =
|
||||
+ (!intercept && ((entry->flags & ADBLOCK_FLAG_EXCEPTION) == 0)) ||
|
||||
+ (intercept && ((entry->flags & ADBLOCK_FLAG_EXCEPTION) != 0));
|
||||
+ if (!check)
|
||||
+ continue;
|
||||
+
|
||||
+ // first check for domain matches, a quick branch out if matching
|
||||
+ if (!url_match_domain(entry, origin_host))
|
||||
+ continue;
|
||||
+
|
||||
+ // check on the URL matcher
|
||||
+ if (!url_matches(c_url, c_url_sep, c_url_lower, c_url_lower_sep, entry))
|
||||
+ continue;
|
||||
+
|
||||
+ // finally check first/third-party
|
||||
+ if (!url_match_party(entry, url, origin_host, checked_fp, fp))
|
||||
+ continue;
|
||||
+
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ if (!intercept) {
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
|
||||
+ "--> intercept (#%d: \"%s\") (%x)", i,
|
||||
+ entry->matches[0], entry->flags);
|
||||
+ } else {
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "--> pass (%d) (#%d)", i,
|
||||
+ entry->flags);
|
||||
+ }
|
||||
+#endif
|
||||
+ intercept = !intercept;
|
||||
+ } // for each entry
|
||||
+
|
||||
+ free(c_url_sep);
|
||||
+ free(c_url_lower);
|
||||
+ free(c_url_lower_sep);
|
||||
+
|
||||
+ if (intercept) {
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "blocked");
|
||||
+#endif
|
||||
+ return 1;
|
||||
+ }
|
||||
+#ifdef ADBLOCK_LOG
|
||||
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "pass");
|
||||
+#endif
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+} // namespace net
|
||||
diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_intercept.h
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/net/url_request/adblock_intercept.h
|
||||
@@ -0,0 +1,24 @@
|
||||
+#ifndef NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
+#define NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
+
|
||||
+#include "url/gurl.h"
|
||||
+
|
||||
+#ifndef ADB_TESTER
|
||||
+#include "content/public/common/resource_type.h"
|
||||
+#endif
|
||||
+
|
||||
+namespace net {
|
||||
+
|
||||
+#ifdef ADB_TESTER
|
||||
+int adblock_rules_count();
|
||||
+#endif
|
||||
+
|
||||
+int adblock_intercept(const GURL &url, const std::string &origin_host
|
||||
+#ifndef ADB_TESTER
|
||||
+, content::ResourceType resource_type
|
||||
+#endif
|
||||
+);
|
||||
+
|
||||
+} // namespace net
|
||||
+
|
||||
+#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 21 Mar 2018 14:15:28 +0100
|
||||
Subject: User Agent: anonymize
|
||||
|
||||
Use a fixed device name and Chrome product version.
|
||||
---
|
||||
components/version_info/version_info.cc | 17 ++++++++++-
|
||||
content/common/user_agent.cc | 50 ++++++++++++++++-----------------
|
||||
2 files changed, 40 insertions(+), 27 deletions(-)
|
||||
|
||||
diff --git a/components/version_info/version_info.cc b/components/version_info/version_info.cc
|
||||
--- a/components/version_info/version_info.cc
|
||||
+++ b/components/version_info/version_info.cc
|
||||
@@ -7,13 +7,28 @@
|
||||
#include "base/logging.h"
|
||||
#include "base/no_destructor.h"
|
||||
#include "base/version.h"
|
||||
+#include "base/sys_info.h"
|
||||
#include "build/build_config.h"
|
||||
#include "components/version_info/version_info_values.h"
|
||||
|
||||
namespace version_info {
|
||||
|
||||
std::string GetProductNameAndVersionForUserAgent() {
|
||||
- return "Chrome/" + GetVersionNumber();
|
||||
+ int32_t major, minor, bugfix;
|
||||
+ base::SysInfo::OperatingSystemVersionNumbers(&major,
|
||||
+ &minor,
|
||||
+ &bugfix);
|
||||
+ switch (major) {
|
||||
+ case 7:
|
||||
+ return "Chrome/63.0.3239.111";
|
||||
+ case 6:
|
||||
+ return "Chrome/63.0.3239.83";
|
||||
+ case 5:
|
||||
+ case 4:
|
||||
+ return "Chrome/62.0.3202.84";
|
||||
+ }
|
||||
+ // version 8 and above
|
||||
+ return "Chrome/67.0.3396.87";
|
||||
}
|
||||
|
||||
std::string GetProductName() {
|
||||
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
|
||||
@@ -22,11 +22,6 @@
|
||||
|
||||
namespace content {
|
||||
|
||||
-#if defined(OS_ANDROID)
|
||||
-const base::Feature kAndroidUserAgentStringContainsBuildId{
|
||||
- "AndroidUserAgentStringContainsBuildId", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
-#endif // defined(OS_ANDROID)
|
||||
-
|
||||
std::string GetWebKitVersion() {
|
||||
return base::StringPrintf("%d.%d (%s)",
|
||||
WEBKIT_VERSION_MAJOR,
|
||||
@@ -65,29 +60,32 @@ std::string BuildOSCpuInfo(bool include_android_build_number) {
|
||||
architecture_token = "; Win64; IA64";
|
||||
}
|
||||
#elif defined(OS_ANDROID)
|
||||
- std::string android_version_str = base::SysInfo::OperatingSystemVersion();
|
||||
+ std::string android_version_str = base::StringPrintf("%d.%d.%d", os_major_version, os_minor_version, os_bugfix_version);
|
||||
|
||||
std::string android_info_str;
|
||||
|
||||
- // Send information about the device.
|
||||
- bool semicolon_inserted = false;
|
||||
- std::string android_build_codename = base::SysInfo::GetAndroidBuildCodename();
|
||||
- std::string android_device_name = base::SysInfo::HardwareModelName();
|
||||
- if ("REL" == android_build_codename && android_device_name.size() > 0) {
|
||||
- android_info_str += "; " + android_device_name;
|
||||
- semicolon_inserted = true;
|
||||
- }
|
||||
-
|
||||
- // Append the build ID.
|
||||
- if (base::FeatureList::IsEnabled(kAndroidUserAgentStringContainsBuildId) ||
|
||||
- include_android_build_number) {
|
||||
- std::string android_build_id = base::SysInfo::GetAndroidBuildID();
|
||||
- if (android_build_id.size() > 0) {
|
||||
- if (!semicolon_inserted) {
|
||||
- android_info_str += ";";
|
||||
- }
|
||||
- android_info_str += " Build/" + android_build_id;
|
||||
- }
|
||||
+ // Send information about the device and build ID.
|
||||
+ // Use a common device/build ID based on Android major version.
|
||||
+ switch (os_major_version) {
|
||||
+ case 7:
|
||||
+ // Chrome/63.0.3239.111
|
||||
+ android_info_str = "SM-J730GM Build/NRD90M";
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ // Chrome/63.0.3239.83
|
||||
+ android_info_str = "SM-G532G Build/MMB29T";
|
||||
+ break;
|
||||
+ case 5:
|
||||
+ // Chrome/62.0.3202.84
|
||||
+ android_info_str = "A37fw Build/LMY47V";
|
||||
+ break;
|
||||
+ case 4:
|
||||
+ // Chrome/62.0.3202.84
|
||||
+ android_info_str = "SM-G7102 Build/KOT49H";
|
||||
+ break;
|
||||
+ default: // version 8 and above
|
||||
+ android_info_str = "SM-G950U Build/R16NW";
|
||||
+ break;
|
||||
}
|
||||
|
||||
#elif (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(OS_FUCHSIA)
|
||||
@@ -125,7 +123,7 @@ std::string BuildOSCpuInfo(bool include_android_build_number) {
|
||||
os_minor_version,
|
||||
os_bugfix_version
|
||||
#elif defined(OS_ANDROID)
|
||||
- "Android %s%s",
|
||||
+ "Android %s; %s",
|
||||
android_version_str.c_str(),
|
||||
android_info_str.c_str()
|
||||
#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 25 Mar 2018 21:49:37 +0200
|
||||
Subject: AudioBuffer, AnalyserNode: fingerprinting mitigations via IDL
|
||||
|
||||
Return fixed base latency
|
||||
---
|
||||
third_party/blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
|
||||
third_party/blink/renderer/modules/webaudio/audio_buffer.idl | 4 ++--
|
||||
third_party/blink/renderer/modules/webaudio/audio_context.cc | 1 +
|
||||
3 files changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
|
||||
--- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
|
||||
+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
|
||||
@@ -42,10 +42,10 @@ interface AnalyserNode : AudioNode {
|
||||
|
||||
// Copies the current frequency data into the passed array.
|
||||
// If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
|
||||
- void getFloatFrequencyData(Float32Array array);
|
||||
- void getByteFrequencyData(Uint8Array array);
|
||||
+ //void getFloatFrequencyData(Float32Array array);
|
||||
+ //void getByteFrequencyData(Uint8Array array);
|
||||
|
||||
// Real-time waveform data
|
||||
- void getFloatTimeDomainData(Float32Array array);
|
||||
- void getByteTimeDomainData(Uint8Array array);
|
||||
+ //void getFloatTimeDomainData(Float32Array array);
|
||||
+ //void getByteTimeDomainData(Uint8Array array);
|
||||
};
|
||||
diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
|
||||
--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
|
||||
+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
// Channel access
|
||||
readonly attribute unsigned long numberOfChannels;
|
||||
- [RaisesException] Float32Array getChannelData(unsigned long channelIndex);
|
||||
- [RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long startInChannel = 0);
|
||||
+ //[RaisesException] Float32Array getChannelData(unsigned long channelIndex);
|
||||
+ //[RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long startInChannel = 0);
|
||||
[RaisesException] void copyToChannel(Float32Array source, long channelNumber, optional unsigned long startInChannel = 0);
|
||||
};
|
||||
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
|
||||
@@ -315,6 +315,7 @@ void AudioContext::StopRendering() {
|
||||
double AudioContext::baseLatency() const {
|
||||
DCHECK(IsMainThread());
|
||||
DCHECK(destination());
|
||||
+ return 0.04;
|
||||
|
||||
// TODO(hongchan): Due to the incompatible constructor between
|
||||
// AudioDestinationNode and DefaultAudioDestinationNode, casting directly from
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,271 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 24 Mar 2018 05:18:03 +0100
|
||||
Subject: Canvas: fingerprinting mitigations for image data and webGL
|
||||
|
||||
Disable webGL renderer info and modify the color data returned by ToBlob,
|
||||
ToDataURL and getImageData so that it will contain randomly manipulated
|
||||
pixels (maximum 20) that slightly change the color of the R,G,B components
|
||||
without a visible effect.
|
||||
|
||||
Credits to Slaviro (https://github.com/Slaviro) for coming up with a better
|
||||
approach to change color components.
|
||||
---
|
||||
.../modules/webgl/webgl_debug_renderer_info.cc | 4 +-
|
||||
third_party/blink/renderer/platform/BUILD.gn | 4 +-
|
||||
.../platform/graphics/image_data_buffer.cc | 5 +
|
||||
.../platform/graphics/static_bitmap_image.cc | 156 +++++++++++++++++++++
|
||||
.../platform/graphics/static_bitmap_image.h | 2 +
|
||||
5 files changed, 168 insertions(+), 3 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/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
|
||||
--- a/third_party/blink/renderer/platform/BUILD.gn
|
||||
+++ b/third_party/blink/renderer/platform/BUILD.gn
|
||||
@@ -1428,7 +1428,9 @@ jumbo_component("platform") {
|
||||
"//third_party/blink/renderer:non_test_config",
|
||||
]
|
||||
|
||||
- include_dirs = []
|
||||
+ include_dirs = [
|
||||
+ "//third_party/skia/include/private", # For shuffler in graphics/static_bitmap_image.cc
|
||||
+ ]
|
||||
|
||||
public_deps = [
|
||||
":blink_platform_public_deps",
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
--- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
+++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
|
||||
@@ -35,6 +35,8 @@
|
||||
#include <memory>
|
||||
|
||||
#include "base/memory/ptr_util.h"
|
||||
+#include "base/rand_util.h"
|
||||
+#include "base/logging.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
|
||||
#include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
|
||||
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||
@@ -128,6 +130,9 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
|
||||
const SkPixmap& pixmap) const {
|
||||
DCHECK(is_valid_);
|
||||
|
||||
+ // shuffle subchannel color data within the pixmap
|
||||
+ StaticBitmapImage::ShuffleSubchannelColorData(pixmap_.writable_addr(), pixmap_.info(), 0, 0);
|
||||
+
|
||||
if (mime_type == kMimeTypeJpeg) {
|
||||
SkJpegEncoder::Options options;
|
||||
options.fQuality = ImageEncoder::ComputeJpegQuality(quality);
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+#include "base/logging.h"
|
||||
#include "base/numerics/checked_math.h"
|
||||
#include "gpu/command_buffer/client/gles2_interface.h"
|
||||
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
|
||||
@@ -15,6 +17,7 @@
|
||||
#include "third_party/skia/include/core/SkCanvas.h"
|
||||
#include "third_party/skia/include/core/SkImage.h"
|
||||
#include "third_party/skia/include/core/SkPaint.h"
|
||||
+#include "third_party/skia/src/core/SkColorData.h"
|
||||
#include "third_party/skia/include/gpu/GrContext.h"
|
||||
|
||||
namespace blink {
|
||||
@@ -154,10 +157,163 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
|
||||
DCHECK(read_pixels_successful ||
|
||||
!sk_image->bounds().intersect(SkIRect::MakeXYWH(
|
||||
rect.X(), rect.Y(), info.width(), info.height())));
|
||||
+
|
||||
+ ShuffleSubchannelColorData(result.Data(), info, rect.X(), rect.Y());
|
||||
+
|
||||
result.Transfer(dest_contents);
|
||||
return true;
|
||||
}
|
||||
|
||||
+// set the component to maximum-delta if it is >= maximum, or add to existing color component (color + delta)
|
||||
+#define shuffleComponent(color, max, delta) ( (color) >= (max) ? ((max)-(delta)) : ((color)+(delta)) )
|
||||
+
|
||||
+#define writable_addr(T, p, stride, x, y) (T*)((const char *)p + y * stride + x * sizeof(T))
|
||||
+
|
||||
+void StaticBitmapImage::ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY) {
|
||||
+ auto w = info.width() - srcX, h = info.height() - srcY;
|
||||
+
|
||||
+ // skip tiny images; info.width()/height() can also be 0
|
||||
+ if ((w < 8) || (h < 8)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // generate the first random number here
|
||||
+ double shuffleX = base::RandDouble();
|
||||
+
|
||||
+ // cap maximum pixels to change
|
||||
+ auto pixels = (w + h) / 128;
|
||||
+ if (pixels > 20) {
|
||||
+ pixels = 20;
|
||||
+ } else if (pixels < 2) {
|
||||
+ pixels = 2;
|
||||
+ }
|
||||
+
|
||||
+ auto colorType = info.colorType();
|
||||
+ auto fRowBytes = info.minRowBytes(); // stride
|
||||
+
|
||||
+ DLOG(INFO) << "BRM: ShuffleSubchannelColorData() w=" << w << " h=" << h << " colorType=" << colorType << " fRowBytes=" << fRowBytes;
|
||||
+
|
||||
+ // second random number (for y/height)
|
||||
+ double shuffleY = base::RandDouble();
|
||||
+
|
||||
+ // calculate random coordinates using bisection
|
||||
+ auto currentW = w, currentH = h;
|
||||
+ for(;pixels >= 0; pixels--) {
|
||||
+ int x = currentW * shuffleX, y = currentH * shuffleY;
|
||||
+
|
||||
+ // calculate randomisation amounts for each RGB component
|
||||
+ uint8_t shuffleR = base::RandInt(0, 4);
|
||||
+ uint8_t shuffleG = (shuffleR + x) % 4;
|
||||
+ uint8_t shuffleB = (shuffleG + y) % 4;
|
||||
+
|
||||
+ // manipulate pixel data to slightly change the R, G, B components
|
||||
+ switch (colorType) {
|
||||
+ case kAlpha_8_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint8_t, addr, fRowBytes, x, y);
|
||||
+ auto r = SkColorGetR(*pixel), g = SkColorGetG(*pixel), b = SkColorGetB(*pixel), a = SkColorGetA(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = SkColorSetARGB(a, r, g, b);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kGray_8_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint8_t, addr, fRowBytes, x, y);
|
||||
+ *pixel = shuffleComponent(*pixel, UINT8_MAX-1, shuffleB);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kRGB_565_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint16_t, addr, fRowBytes, x, y);
|
||||
+ unsigned r = SkPacked16ToR32(*pixel);
|
||||
+ unsigned g = SkPacked16ToG32(*pixel);
|
||||
+ unsigned b = SkPacked16ToB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, 31, shuffleR);
|
||||
+ g = shuffleComponent(g, 63, shuffleG);
|
||||
+ b = shuffleComponent(b, 31, shuffleB);
|
||||
+
|
||||
+ unsigned r16 = (r & SK_R16_MASK) << SK_R16_SHIFT;
|
||||
+ unsigned g16 = (g & SK_G16_MASK) << SK_G16_SHIFT;
|
||||
+ unsigned b16 = (b & SK_B16_MASK) << SK_B16_SHIFT;
|
||||
+
|
||||
+ *pixel = r16 | g16 | b16;
|
||||
+ }
|
||||
+ break;
|
||||
+ case kARGB_4444_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint16_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA4444(*pixel), r = SkGetPackedR4444(*pixel), g = SkGetPackedG4444(*pixel), b = SkGetPackedB4444(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, 15, shuffleR);
|
||||
+ g = shuffleComponent(g, 15, shuffleG);
|
||||
+ b = shuffleComponent(b, 15, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ unsigned a4 = (a & 0xF) << SK_A4444_SHIFT;
|
||||
+ unsigned r4 = (r & 0xF) << SK_R4444_SHIFT;
|
||||
+ unsigned g4 = (g & 0xF) << SK_G4444_SHIFT;
|
||||
+ unsigned b4 = (b & 0xF) << SK_B4444_SHIFT;
|
||||
+
|
||||
+ *pixel = r4 | b4 | g4 | a4;
|
||||
+ }
|
||||
+ break;
|
||||
+ case kRGBA_8888_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint32_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA32(*pixel), r = SkGetPackedR32(*pixel), g = SkGetPackedG32(*pixel), b = SkGetPackedB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = (a << SK_A32_SHIFT) | (r << SK_R32_SHIFT) |
|
||||
+ (g << SK_G32_SHIFT) | (b << SK_B32_SHIFT);
|
||||
+ }
|
||||
+ break;
|
||||
+ case kBGRA_8888_SkColorType:
|
||||
+ {
|
||||
+ auto *pixel = writable_addr(uint32_t, addr, fRowBytes, x, y);
|
||||
+ auto a = SkGetPackedA32(*pixel), b = SkGetPackedR32(*pixel), g = SkGetPackedG32(*pixel), r = SkGetPackedB32(*pixel);
|
||||
+
|
||||
+ r = shuffleComponent(r, UINT8_MAX-1, shuffleR);
|
||||
+ g = shuffleComponent(g, UINT8_MAX-1, shuffleG);
|
||||
+ b = shuffleComponent(b, UINT8_MAX-1, shuffleB);
|
||||
+ // alpha is left unchanged
|
||||
+
|
||||
+ *pixel = (a << SK_BGRA_A32_SHIFT) | (r << SK_BGRA_R32_SHIFT) |
|
||||
+ (g << SK_BGRA_G32_SHIFT) | (b << SK_BGRA_B32_SHIFT);
|
||||
+ }
|
||||
+ break;
|
||||
+ default:
|
||||
+ // the remaining formats are not expected to be used in Chromium
|
||||
+ LOG(WARNING) << "BRM: ShuffleSubchannelColorData(): Ignoring pixel format";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // keep bisecting or reset current width/height as needed
|
||||
+ if (x == 0) {
|
||||
+ currentW = w;
|
||||
+ } else {
|
||||
+ currentW = x;
|
||||
+ }
|
||||
+ if (y == 0) {
|
||||
+ currentH = h;
|
||||
+ } else {
|
||||
+ currentH = y;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#undef writable_addr
|
||||
+#undef shuffleComponent
|
||||
+
|
||||
const gpu::SyncToken& StaticBitmapImage::GetSyncToken() const {
|
||||
static const gpu::SyncToken sync_token;
|
||||
return sync_token;
|
||||
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
|
||||
@@ -46,6 +46,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
|
||||
static scoped_refptr<StaticBitmapImage> Create(WTF::ArrayBufferContents&,
|
||||
const SkImageInfo&);
|
||||
|
||||
+ static void ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY);
|
||||
+
|
||||
bool IsStaticBitmapImage() const override { return true; }
|
||||
|
||||
// Methods overridden by all sub-classes
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+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/1000000th 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"
|
||||
@@ -1384,6 +1385,15 @@ DOMRectList* Element::getClientRects() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
|
||||
quads, *element_layout_object);
|
||||
+
|
||||
+ // scale all quads
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(shuffleX, shuffleY);
|
||||
+ }
|
||||
+
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
@@ -1401,6 +1411,13 @@ DOMRect* Element::getBoundingClientRect() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
|
||||
*element_layout_object);
|
||||
+
|
||||
+ // scale rect by 3/1000000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+
|
||||
+ 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/string_or_trusted_html.h"
|
||||
#include "third_party/blink/renderer/core/dom/character_data.h"
|
||||
#include "third_party/blink/renderer/core/dom/container_node.h"
|
||||
@@ -1607,11 +1609,27 @@ DOMRectList* Range::getClientRects() const {
|
||||
Vector<FloatQuad> quads;
|
||||
GetBorderAndTextQuads(quads);
|
||||
|
||||
+ // scale all quads by 3/1000000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+
|
||||
+ 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/1000000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+
|
||||
+ 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
|
||||
@@ -49,6 +49,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;
|
||||
+ baselines_.setAlphabetic(baselines_.alphabetic() * factor);
|
||||
+ baselines_.setHanging(baselines_.hanging() * factor);
|
||||
+ baselines_.setIdeographic(baselines_.ideographic() * factor);
|
||||
+}
|
||||
+
|
||||
void TextMetrics::Update(const Font& font,
|
||||
const TextDirection& direction,
|
||||
const TextBaseline& baseline,
|
||||
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_party/blink/renderer/core/html/canvas/text_metrics.h
|
||||
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.h
|
||||
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
|
||||
@@ -68,6 +68,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"
|
||||
@@ -781,8 +783,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/1000000th
|
||||
+ auto shuffleFactor = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ textMetrics->Shuffle(shuffleFactor);
|
||||
+
|
||||
+ return textMetrics;
|
||||
}
|
||||
|
||||
void CanvasRenderingContext2D::DrawTextInternal(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 22 Oct 2018 21:14:57 +0200
|
||||
Subject: Disable generic sensor API by default
|
||||
|
||||
---
|
||||
services/device/public/cpp/device_features.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/device/public/cpp/device_features.cc b/services/device/public/cpp/device_features.cc
|
||||
--- a/services/device/public/cpp/device_features.cc
|
||||
+++ b/services/device/public/cpp/device_features.cc
|
||||
@@ -9,7 +9,7 @@ namespace features {
|
||||
// Enables sensors based on Generic Sensor API:
|
||||
// https://w3c.github.io/sensors/
|
||||
const base::Feature kGenericSensor{"GenericSensor",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
// Enables an extra set of concrete sensors classes based on Generic Sensor API,
|
||||
// which expose previously unexposed platform features, e.g. ALS or Magnetometer
|
||||
const base::Feature kGenericSensorExtraClasses{
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 22 Oct 2018 21:29:53 +0200
|
||||
Subject: Add flags to disable device motion and orientation APIs
|
||||
|
||||
Both flags will be disabled by default and prevent usage of gyroscope and
|
||||
legacy acceleration events.
|
||||
---
|
||||
chrome/browser/about_flags.cc | 6 ++++++
|
||||
chrome/browser/flag_descriptions.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.h | 6 ++++++
|
||||
content/child/runtime_features.cc | 3 +++
|
||||
content/public/common/content_features.cc | 10 ++++++++++
|
||||
content/public/common/content_features.h | 2 ++
|
||||
third_party/blink/public/platform/web_runtime_features.h | 2 ++
|
||||
third_party/blink/renderer/modules/modules_initializer.cc | 9 ++++++---
|
||||
.../blink/renderer/platform/exported/web_runtime_features.cc | 8 ++++++++
|
||||
.../blink/renderer/platform/runtime_enabled_features.json5 | 8 ++++++++
|
||||
10 files changed, 59 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
--- a/chrome/browser/about_flags.cc
|
||||
+++ b/chrome/browser/about_flags.cc
|
||||
@@ -3041,6 +3041,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-generic-sensor", flag_descriptions::kEnableGenericSensorName,
|
||||
flag_descriptions::kEnableGenericSensorDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kGenericSensor)},
|
||||
+ {"enable-device-motion", flag_descriptions::kEnableDeviceMotionName,
|
||||
+ flag_descriptions::kEnableDeviceMotionDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(features::kDeviceMotion)},
|
||||
+ {"enable-device-orientation", flag_descriptions::kEnableDeviceOrientationName,
|
||||
+ flag_descriptions::kEnableDeviceOrientationDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(features::kDeviceOrientation)},
|
||||
{"enable-generic-sensor-extra-classes",
|
||||
flag_descriptions::kEnableGenericSensorExtraClassesName,
|
||||
flag_descriptions::kEnableGenericSensorExtraClassesDescription, kOsAll,
|
||||
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
|
||||
@@ -556,6 +556,14 @@ const char kEnableGenericSensorDescription[] =
|
||||
"Accelerometer, LinearAccelerationSensor, Gyroscope, "
|
||||
"AbsoluteOrientationSensor and RelativeOrientationSensor interfaces.";
|
||||
|
||||
+const char kEnableDeviceMotionName[] = "Enable device motion";
|
||||
+const char kEnableDeviceMotionDescription[] =
|
||||
+ "Enable device motion API which is used to detect changes in acceleration";
|
||||
+
|
||||
+const char kEnableDeviceOrientationName[] = "Enable device orientation";
|
||||
+const char kEnableDeviceOrientationDescription[] =
|
||||
+ "Enable device orientation API which is used to detect changes in orientation";
|
||||
+
|
||||
const char kEnableGenericSensorExtraClassesName[] =
|
||||
"Generic Sensor Extra Classes";
|
||||
const char kEnableGenericSensorExtraClassesDescription[] =
|
||||
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
|
||||
@@ -366,6 +366,12 @@ extern const char kEnableEnumeratingAudioDevicesDescription[];
|
||||
extern const char kEnableGenericSensorName[];
|
||||
extern const char kEnableGenericSensorDescription[];
|
||||
|
||||
+extern const char kEnableDeviceMotionName[];
|
||||
+extern const char kEnableDeviceMotionDescription[];
|
||||
+
|
||||
+extern const char kEnableDeviceOrientationName[];
|
||||
+extern const char kEnableDeviceOrientationDescription[];
|
||||
+
|
||||
extern const char kEnableGenericSensorExtraClassesName[];
|
||||
extern const char kEnableGenericSensorExtraClassesDescription[];
|
||||
|
||||
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
|
||||
--- a/content/child/runtime_features.cc
|
||||
+++ b/content/child/runtime_features.cc
|
||||
@@ -144,6 +144,9 @@ void SetRuntimeFeaturesDefaultsAndUpdateFromArgs(
|
||||
if (command_line.HasSwitch(switches::kDisableSharedWorkers))
|
||||
WebRuntimeFeatures::EnableSharedWorker(false);
|
||||
|
||||
+ WebRuntimeFeatures::EnableDeviceMotion(base::FeatureList::IsEnabled(features::kDeviceMotion));
|
||||
+ WebRuntimeFeatures::EnableDeviceOrientation(base::FeatureList::IsEnabled(features::kDeviceOrientation));
|
||||
+
|
||||
if (command_line.HasSwitch(switches::kDisableSpeechAPI))
|
||||
WebRuntimeFeatures::EnableScriptedSpeech(false);
|
||||
|
||||
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
|
||||
--- a/content/public/common/content_features.cc
|
||||
+++ b/content/public/common/content_features.cc
|
||||
@@ -590,6 +590,16 @@ const base::Feature kWebRtcUseGpuMemoryBufferVideoFrames{
|
||||
// https://wicg.github.io/webusb
|
||||
const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
+// Enables the device motion API used to track device acceleration;
|
||||
+// no user authorization or notifications happens when in use.
|
||||
+const base::Feature kDeviceMotion{"DeviceMotion",
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+
|
||||
+// Enables the device orientation API used to track device orientation;
|
||||
+// no user authorization or notifications happens when in use.
|
||||
+const base::Feature kDeviceOrientation{"DeviceOrientation",
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+
|
||||
// Controls whether WebVR VSync-aligned render loop timing is enabled.
|
||||
const base::Feature kWebVrVsyncAlign{"WebVrVsyncAlign",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
|
||||
--- a/content/public/common/content_features.h
|
||||
+++ b/content/public/common/content_features.h
|
||||
@@ -155,6 +155,8 @@ CONTENT_EXPORT extern const char kWebXrRenderPathParamValueGpuFence[];
|
||||
CONTENT_EXPORT extern const char kWebXrRenderPathParamValueSharedBuffer[];
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
+CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
|
||||
+
|
||||
#if !defined(OS_ANDROID)
|
||||
CONTENT_EXPORT extern const base::Feature kWebUIPolymer2;
|
||||
#endif // !defined(OS_ANDROID)
|
||||
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
|
||||
--- a/third_party/blink/public/platform/web_runtime_features.h
|
||||
+++ b/third_party/blink/public/platform/web_runtime_features.h
|
||||
@@ -84,6 +84,8 @@ class WebRuntimeFeatures {
|
||||
BLINK_PLATFORM_EXPORT static void EnableCSSFragmentIdentifiers(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableDeviceMotion(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDecodeToYUV(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutAPI(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableFastMobileScrolling(bool);
|
||||
diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
--- a/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
+++ b/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
@@ -233,9 +233,12 @@ void ModulesInitializer::InitInspectorAgentSession(
|
||||
void ModulesInitializer::OnClearWindowObjectInMainWorld(
|
||||
Document& document,
|
||||
const Settings& settings) const {
|
||||
- DeviceMotionController::From(document);
|
||||
- DeviceOrientationController::From(document);
|
||||
- DeviceOrientationAbsoluteController::From(document);
|
||||
+ if (RuntimeEnabledFeatures::DeviceMotionEnabled())
|
||||
+ DeviceMotionController::From(document);
|
||||
+ if (RuntimeEnabledFeatures::DeviceOrientationEnabled()) {
|
||||
+ DeviceOrientationController::From(document);
|
||||
+ DeviceOrientationAbsoluteController::From(document);
|
||||
+ }
|
||||
NavigatorGamepad::From(document);
|
||||
NavigatorServiceWorker::From(document);
|
||||
DOMWindowStorageController::From(document);
|
||||
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
@@ -140,6 +140,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
|
||||
RuntimeEnabledFeatures::SetDatabaseEnabled(enable);
|
||||
}
|
||||
|
||||
+void WebRuntimeFeatures::EnableDeviceMotion(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetDeviceMotionEnabled(enable);
|
||||
+}
|
||||
+
|
||||
+void WebRuntimeFeatures::EnableDeviceOrientation(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetDeviceOrientationEnabled(enable);
|
||||
+}
|
||||
+
|
||||
void WebRuntimeFeatures::EnableDecodeToYUV(bool enable) {
|
||||
RuntimeEnabledFeatures::SetDecodeToYUVEnabled(enable);
|
||||
}
|
||||
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
@@ -348,6 +348,14 @@
|
||||
status: "stable",
|
||||
},
|
||||
{
|
||||
+ name: "DeviceMotion",
|
||||
+ status: "stable",
|
||||
+ },
|
||||
+ {
|
||||
+ name: "DeviceOrientation",
|
||||
+ status: "stable",
|
||||
+ },
|
||||
+ {
|
||||
name: "DecodeToYUV",
|
||||
status: "experimental",
|
||||
},
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 2 Apr 2018 11:36:02 +0200
|
||||
Subject: Punt the Widevine version string
|
||||
|
||||
Originally from http://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromium-browser.wily.beta/view/head:/debian/patches/fix_building_widevinecdm_with_chromium.patch
|
||||
---
|
||||
chrome/common/chrome_content_client.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
|
||||
--- a/chrome/common/chrome_content_client.cc
|
||||
+++ b/chrome/common/chrome_content_client.cc
|
||||
@@ -531,7 +531,7 @@ void ChromeContentClient::AddContentDecryptionModules(
|
||||
base::FilePath cdm_path;
|
||||
content::CdmCapability capability;
|
||||
if (IsWidevineAvailable(&cdm_path, &capability)) {
|
||||
- const base::Version version(WIDEVINE_CDM_VERSION_STRING);
|
||||
+ const base::Version version("1.0.123.456");
|
||||
DCHECK(version.IsValid());
|
||||
|
||||
cdms->push_back(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 25 Apr 2018 10:23:51 +0200
|
||||
Subject: Disable metrics on all I/O threads
|
||||
|
||||
---
|
||||
chrome/browser/profiles/profile_io_data.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -956,7 +956,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
|
||||
|
||||
bool ProfileIOData::GetMetricsEnabledStateOnIOThread() const {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
||||
- return enable_metrics_.GetValue();
|
||||
+ return false;
|
||||
}
|
||||
|
||||
chrome_browser_net::Predictor* ProfileIOData::GetPredictor() {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,287 @@
|
||||
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-12.txt
|
||||
---
|
||||
chrome/browser/about_flags.cc | 13 ++++++++++
|
||||
chrome/browser/flag_descriptions.cc | 3 +++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../browser/net/system_network_context_manager.cc | 16 ++++++-------
|
||||
.../common/network_features.cc | 6 +++--
|
||||
.../common/network_features.h | 4 +++-
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
net/base/load_flags_list.h | 6 +++++
|
||||
net/dns/dns_transaction.cc | 28 +++-------------------
|
||||
net/url_request/url_request_http_job.cc | 26 ++++++++++++--------
|
||||
10 files changed, 62 insertions(+), 47 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
--- a/chrome/browser/about_flags.cc
|
||||
+++ b/chrome/browser/about_flags.cc
|
||||
@@ -417,6 +417,13 @@ 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"},
|
||||
+ {features::kDnsOverHttpsChoiceQuad9, switches::kDnsOverHttpsServer, "https://9.9.9.9/dns-query"}
|
||||
+};
|
||||
+
|
||||
#endif // OS_ANDROID
|
||||
|
||||
const FeatureEntry::Choice kNumRasterThreadsChoices[] = {
|
||||
@@ -3730,6 +3737,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
|
||||
@@ -2252,6 +2252,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
|
||||
@@ -1356,6 +1356,9 @@ extern const char kAppNotificationStatusMessagingDescription[];
|
||||
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/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
|
||||
--- a/chrome/browser/net/system_network_context_manager.cc
|
||||
+++ b/chrome/browser/net/system_network_context_manager.cc
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "chrome/browser/component_updater/crl_set_component_installer.h"
|
||||
#include "chrome/browser/io_thread.h"
|
||||
#include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
|
||||
+#include "components/network_session_configurator/common/network_switches.h"
|
||||
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
||||
#include "chrome/browser/ssl/ssl_config_service_manager.h"
|
||||
#include "chrome/common/channel_info.h"
|
||||
@@ -355,15 +356,12 @@ SystemNetworkContextManager::SystemNetworkContextManager()
|
||||
base::Value(ShouldEnableAsyncDns()));
|
||||
base::ListValue default_doh_servers;
|
||||
base::ListValue default_doh_server_methods;
|
||||
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
|
||||
- std::string server(variations::GetVariationParamValueByFeature(
|
||||
- features::kDnsOverHttps, "server"));
|
||||
- std::string method(variations::GetVariationParamValueByFeature(
|
||||
- features::kDnsOverHttps, "method"));
|
||||
- if (!server.empty()) {
|
||||
- default_doh_servers.AppendString(server);
|
||||
- default_doh_server_methods.AppendString(method);
|
||||
- }
|
||||
+ std::string server =
|
||||
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
||||
+ switches::kDnsOverHttpsServer);
|
||||
+ if (!server.empty()) {
|
||||
+ default_doh_servers.AppendString(server);
|
||||
+ default_doh_server_methods.AppendString("POST");
|
||||
}
|
||||
local_state->SetDefaultPrefValue(prefs::kDnsOverHttpsServers,
|
||||
std::move(default_doh_servers));
|
||||
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
|
||||
--- a/components/network_session_configurator/common/network_features.cc
|
||||
+++ b/components/network_session_configurator/common/network_features.cc
|
||||
@@ -11,7 +11,9 @@ namespace features {
|
||||
// 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",
|
||||
+ kDnsOverHttpsChoiceQuad9[] = "Quad9";
|
||||
|
||||
} // 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
|
||||
@@ -13,9 +13,11 @@ namespace features {
|
||||
// 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-12.txt).
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kDnsOverHttps;
|
||||
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kDnsOverHttpsChoiceDefault[],
|
||||
+ kDnsOverHttpsChoiceGoogle[], kDnsOverHttpsChoiceCloudflare[], kDnsOverHttpsChoiceQuad9[];
|
||||
|
||||
} // 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,6 +92,12 @@ LOAD_FLAG(MAYBE_USER_GESTURE, 1 << 14)
|
||||
LOAD_FLAG(DO_NOT_USE_EMBEDDED_IDENTITY, 1 << 15)
|
||||
|
||||
// Indicates that this request is not to be migrated to a cellular network when
|
||||
+
|
||||
+// 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)
|
||||
// QUIC connection migration is enabled.
|
||||
LOAD_FLAG(DISABLE_CONNECTION_MIGRATION_TO_CELLULAR, 1 << 16)
|
||||
|
||||
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
|
||||
@@ -357,30 +357,7 @@ 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"
|
||||
- }
|
||||
- )"));
|
||||
+ request_ = url_request_context->CreateRequest(url, request_priority_, this);
|
||||
net_log_ = request_->net_log();
|
||||
|
||||
if (use_post) {
|
||||
@@ -396,6 +373,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
|
||||
|
||||
request_->SetExtraRequestHeaders(extra_request_headers);
|
||||
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
|
||||
+ LOAD_IGNORE_LIMITS | LOAD_MINIMAL_HEADERS |
|
||||
LOAD_BYPASS_PROXY);
|
||||
request_->set_allow_credentials(false);
|
||||
}
|
||||
@@ -818,7 +796,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,21 +434,25 @@ 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,
|
||||
+ 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();
|
||||
|
||||
// This should be kept in sync with the corresponding code in
|
||||
// URLRequest::GetUserAgent.
|
||||
- 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();
|
||||
@@ -666,10 +670,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;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -686,7 +692,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.11.0
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
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
|
||||
---
|
||||
chrome/browser/net/system_network_context_manager.cc | 2 +-
|
||||
components/cronet/url_request_context_config.cc | 3 ++-
|
||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
|
||||
--- a/chrome/browser/net/system_network_context_manager.cc
|
||||
+++ b/chrome/browser/net/system_network_context_manager.cc
|
||||
@@ -202,7 +202,7 @@ void OnAuthPrefsChanged(const std::string& pref_name) {
|
||||
// Android this includes checking the Android version in the field trial.
|
||||
bool ShouldEnableAsyncDns() {
|
||||
bool feature_can_be_enabled = true;
|
||||
-#if defined(OS_ANDROID)
|
||||
+#if 0
|
||||
int min_sdk =
|
||||
base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
|
||||
if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
|
||||
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
|
||||
@@ -466,7 +466,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
|
||||
effective_experimental_options->Remove(it.key(), nullptr);
|
||||
continue;
|
||||
}
|
||||
- async_dns_args->GetBoolean(kAsyncDnsEnable, &async_dns_enable);
|
||||
+ bool ignored;
|
||||
+ async_dns_args->GetBoolean(kAsyncDnsEnable, &ignored);
|
||||
} else if (it.key() == kStaleDnsFieldTrialName) {
|
||||
const base::DictionaryValue* stale_dns_args = nullptr;
|
||||
if (!it.value().GetAsDictionary(&stale_dns_args)) {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
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 | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.cc | 4 ++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../common/network_features.cc | 3 +++
|
||||
.../common/network_features.h | 4 ++++
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
net/socket/client_socket_pool_manager.cc | 16 ++++++++++++++++
|
||||
7 files changed, 42 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
|
||||
@@ -910,6 +910,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
|
||||
net::kEffectiveConnectionType4G},
|
||||
};
|
||||
|
||||
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
|
||||
+ {features::kMaxConnectionsPerHostChoiceDefault, "", ""},
|
||||
+ {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 ==
|
||||
@@ -2608,6 +2613,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
|
||||
@@ -1145,6 +1145,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.";
|
||||
+
|
||||
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
|
||||
@@ -711,6 +711,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,9 @@
|
||||
|
||||
namespace features {
|
||||
|
||||
+const char kMaxConnectionsPerHostChoiceDefault[] = "6",
|
||||
+ kMaxConnectionsPerHostChoice15[] = "15";
|
||||
+
|
||||
// TODO(nharper): Disable kChannelID on all platforms in M69.
|
||||
const base::Feature kChannelID{"channel-id", base::FEATURE_ENABLED_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 Channel ID.
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kChannelID;
|
||||
|
||||
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,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
|
||||
int ClientSocketPoolManager::max_sockets_per_group(
|
||||
HttpNetworkSession::SocketPoolType pool_type) {
|
||||
DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);
|
||||
+
|
||||
+ if (pool_type == HttpNetworkSession::NORMAL_SOCKET_POOL) {
|
||||
+ int maxConnectionsPerHost = 0;
|
||||
+ auto value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost);
|
||||
+ if (!value.empty() && !base::StringToInt(value, &maxConnectionsPerHost)) {
|
||||
+ LOG(DFATAL) << "--" << switches::kMaxConnectionsPerHost << " only accepts integers as arguments (\"" << value << "\" is invalid)";
|
||||
+ }
|
||||
+ if (maxConnectionsPerHost != 0) {
|
||||
+ return maxConnectionsPerHost;
|
||||
+ }
|
||||
+ // fallthrough for default value
|
||||
+ }
|
||||
+
|
||||
return g_max_sockets_per_group[pool_type];
|
||||
}
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 29 Aug 2018 11:03:44 +0200
|
||||
Subject: Add custom tab intents privacy option
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||
.../org/chromium/chrome/browser/LaunchIntentDispatcher.java | 2 ++
|
||||
.../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 7 +++++++
|
||||
5 files changed, 27 insertions(+)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -18,6 +18,9 @@
|
||||
<item name="top_controls_show_threshold" format="float" type="dimen">0.5</item>
|
||||
<item name="top_controls_hide_threshold" format="float" type="dimen">0.5</item>
|
||||
|
||||
+ <string name="allow_custom_tab_intents_title">Allow custom tab intents from applications</string>
|
||||
+ <string name="allow_custom_tab_intents_summary">When disabled, all custom tab intents will be processed as regular navigation instead</string>
|
||||
+
|
||||
<!-- The number of thumbnails that the thumbnail cache can hold. -->
|
||||
<integer name="default_thumbnail_cache_size">5</integer>
|
||||
<!-- The number of approximation thumbnails that the approximation cache can hold. -->
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -55,6 +55,11 @@
|
||||
android:title="@string/clear_browsing_data_title"
|
||||
android:summary="@string/clear_browsing_data_summary"
|
||||
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="allow_custom_tab_intents"
|
||||
+ android:title="@string/allow_custom_tab_intents_title"
|
||||
+ android:summary="@string/allow_custom_tab_intents_summary"
|
||||
+ android:defaultValue="false" />
|
||||
<Preference
|
||||
android:key="sync_and_services_link_divider"
|
||||
android:layout="@layout/divider_preference"
|
||||
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
|
||||
@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
|
||||
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
|
||||
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
|
||||
import org.chromium.chrome.browser.searchwidget.SearchActivity;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
|
||||
@@ -269,6 +270,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
|
||||
*/
|
||||
public static boolean isCustomTabIntent(Intent intent) {
|
||||
if (intent == null) return false;
|
||||
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) return false;
|
||||
if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
|
||||
|| !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
|
||||
return false;
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
@@ -42,6 +42,7 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
"safe_browsing_extended_reporting";
|
||||
private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
|
||||
"safe_browsing_scout_reporting";
|
||||
+ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
|
||||
private static final String PREF_SAFE_BROWSING = "safe_browsing";
|
||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
||||
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
||||
@@ -139,6 +140,11 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
|
||||
preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
|
||||
|
||||
+ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
|
||||
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
|
||||
+ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
|
||||
+ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
+
|
||||
ChromeBaseCheckBoxPreference safeBrowsingPref =
|
||||
(ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
|
||||
safeBrowsingPref.setOnPreferenceChangeListener(this);
|
||||
@@ -158,6 +164,10 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
|| PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
|
||||
(boolean) newValue);
|
||||
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
|
||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
|
||||
+ sharedPreferencesEditor.apply();
|
||||
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
|
||||
recordNetworkPredictionEnablingUMA((boolean) newValue);
|
||||
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
|
||||
@@ -3763,6 +3763,13 @@ However, you aren’t invisible. Going private doesn’t hide your browsing from
|
||||
Browse
|
||||
</message>
|
||||
|
||||
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
|
||||
+ Allow custom tab intents
|
||||
+ </message>
|
||||
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
|
||||
+ Allow applications to open custom tab intents, similar to webview.
|
||||
+ </message>
|
||||
+
|
||||
<!-- Migration strings -->
|
||||
<message name="IDS_UPDATING_CHROME" desc="String that indicates that Chrome is updating">
|
||||
Updating Chrome...
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 28 Aug 2018 23:27:23 +0200
|
||||
Subject: Add site settings option for session-only cookies
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
.../android/java/res/xml/website_preferences.xml | 7 ++++++
|
||||
.../browser/preferences/PrefServiceBridge.java | 10 +++++++++
|
||||
.../website/SingleCategoryPreferences.java | 21 +++++++++++++++++-
|
||||
.../java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
.../android/preferences/pref_service_bridge.cc | 25 ++++++++++++++++++++++
|
||||
6 files changed, 71 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -39,6 +39,9 @@
|
||||
<integer name="reload_button_level_reload">0</integer>
|
||||
<integer name="reload_button_level_stop">1</integer>
|
||||
|
||||
+ <string name="allow_cookies_session_only_title">Keep cookies only until you quit your browser</string>
|
||||
+ <string name="allow_cookies_session_only_summary">When enabled, all cookies will be erased when the browsing session is over</string>
|
||||
+
|
||||
<!-- Help and Feedback
|
||||
These constants should be in sync with the context names on go/mobilehelprecs.
|
||||
If the context ID cannot be found, the default help page will be shown to the user.-->
|
||||
diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/website_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/website_preferences.xml
|
||||
@@ -26,6 +26,13 @@
|
||||
android:summary="@string/allow_third_party_cookies_summary"
|
||||
android:defaultValue="true"
|
||||
android:persistent="false" />
|
||||
+ <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="cookies_session_only"
|
||||
+ android:title="@string/allow_cookies_session_only_title"
|
||||
+ android:summary="@string/allow_cookies_session_only_summary"
|
||||
+ android:defaultValue="true"
|
||||
+ android:persistent="false" />
|
||||
<!-- A toggle for enabling vibration in notifications. -->
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="notifications_vibrate"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
|
||||
@@ -245,6 +245,10 @@ public class PrefServiceBridge {
|
||||
return nativeGetBlockThirdPartyCookiesEnabled();
|
||||
}
|
||||
|
||||
+ public boolean isCookiesSessionOnlyEnabled() {
|
||||
+ return nativeGetCookiesSessionOnlyEnabled();
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* @return Whether third-party cookie blocking is configured by policy
|
||||
*/
|
||||
@@ -630,6 +634,10 @@ public class PrefServiceBridge {
|
||||
nativeSetBlockThirdPartyCookiesEnabled(enabled);
|
||||
}
|
||||
|
||||
+ public void setCookiesSessionOnlyEnabled(boolean enabled) {
|
||||
+ nativeSetCookiesSessionOnlyEnabled(enabled);
|
||||
+ }
|
||||
+
|
||||
public void setDoNotTrackEnabled(boolean enabled) {
|
||||
nativeSetDoNotTrackEnabled(enabled);
|
||||
}
|
||||
@@ -1072,6 +1080,7 @@ public class PrefServiceBridge {
|
||||
private native boolean nativeGetAutoplayEnabled();
|
||||
private native boolean nativeGetBackgroundSyncEnabled();
|
||||
private native boolean nativeGetBlockThirdPartyCookiesEnabled();
|
||||
+ private native boolean nativeGetCookiesSessionOnlyEnabled();
|
||||
private native boolean nativeGetBlockThirdPartyCookiesManaged();
|
||||
private native boolean nativeGetRememberPasswordsEnabled();
|
||||
private native boolean nativeGetPasswordManagerAutoSigninEnabled();
|
||||
@@ -1118,6 +1127,7 @@ public class PrefServiceBridge {
|
||||
private native void nativeSetAllowCookiesEnabled(boolean allow);
|
||||
private native void nativeSetBackgroundSyncEnabled(boolean allow);
|
||||
private native void nativeSetBlockThirdPartyCookiesEnabled(boolean enabled);
|
||||
+ private native void nativeSetCookiesSessionOnlyEnabled(boolean enabled);
|
||||
private native void nativeSetClipboardEnabled(boolean allow);
|
||||
private native void nativeSetDoNotTrackEnabled(boolean enabled);
|
||||
private native void nativeSetRememberPasswordsEnabled(boolean allow);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
|
||||
@@ -110,6 +110,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
|
||||
// Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
|
||||
public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
|
||||
+ public static final String COOKIES_SESSION_ONLY_TOGGLE_KEY = "cookies_session_only";
|
||||
public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
|
||||
public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
|
||||
private static final String ADD_EXCEPTION_KEY = "add_exception";
|
||||
@@ -460,6 +461,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
|
||||
if (type == SiteSettingsCategory.Type.COOKIES) {
|
||||
updateThirdPartyCookiesCheckBox();
|
||||
+ updateCookiesSessionOnlyCheckBox();
|
||||
} else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
|
||||
updateNotificationsVibrateCheckBox();
|
||||
}
|
||||
@@ -498,6 +500,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
getInfoForOrigins();
|
||||
} else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
|
||||
prefServiceBridge.setBlockThirdPartyCookiesEnabled(!((boolean) newValue));
|
||||
+ } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
|
||||
+ prefServiceBridge.setCookiesSessionOnlyEnabled((boolean) newValue);
|
||||
} else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
|
||||
prefServiceBridge.setNotificationsVibrateEnabled((boolean) newValue);
|
||||
}
|
||||
@@ -754,6 +758,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
TriStateSiteSettingsPreference triStateToggle =
|
||||
(TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
|
||||
Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
|
||||
+ Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
|
||||
+ COOKIES_SESSION_ONLY_TOGGLE_KEY);
|
||||
Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
|
||||
Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
|
||||
PreferenceGroup allowedGroup = (PreferenceGroup) screen.findPreference(ALLOWED_GROUP);
|
||||
@@ -768,6 +774,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
screen.removePreference(binaryToggle);
|
||||
screen.removePreference(triStateToggle);
|
||||
screen.removePreference(thirdPartyCookies);
|
||||
+ screen.removePreference(cookiesSessionOnly);
|
||||
screen.removePreference(notificationsVibrate);
|
||||
screen.removePreference(explainProtectedMediaKey);
|
||||
screen.removePreference(allowedGroup);
|
||||
@@ -803,12 +810,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
configureBinaryToggle(binaryToggle, contentType);
|
||||
}
|
||||
|
||||
- // Configure/hide the third-party cookie toggle, as needed.
|
||||
+ // Configure/hide the third-party cookie toggle and session-only cookie toggle, as needed.
|
||||
if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
|
||||
thirdPartyCookies.setOnPreferenceChangeListener(this);
|
||||
updateThirdPartyCookiesCheckBox();
|
||||
+ cookiesSessionOnly.setOnPreferenceChangeListener(this);
|
||||
+ updateCookiesSessionOnlyCheckBox();
|
||||
} else {
|
||||
screen.removePreference(thirdPartyCookies);
|
||||
+ screen.removePreference(cookiesSessionOnly);
|
||||
}
|
||||
|
||||
// Configure/hide the notifications vibrate toggle, as needed.
|
||||
@@ -894,6 +904,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
|
||||
}
|
||||
|
||||
+ private void updateCookiesSessionOnlyCheckBox() {
|
||||
+ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
|
||||
+ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
|
||||
+ cookiesSessionOnlyPref.setChecked(
|
||||
+ PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
|
||||
+ cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isCategoryEnabled(
|
||||
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES));
|
||||
+ }
|
||||
+
|
||||
private void updateNotificationsVibrateCheckBox() {
|
||||
ChromeBaseCheckBoxPreference preference =
|
||||
(ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
|
||||
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
|
||||
@@ -882,6 +882,12 @@ Your Google account may have other forms of browsing history like searches and a
|
||||
<message name="IDS_ALLOW_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Allow Third Party Cookies preference">
|
||||
Third-party websites can save and read cookie data
|
||||
</message>
|
||||
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
|
||||
+ Keep cookies only until you quit your browser
|
||||
+ </message>
|
||||
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
|
||||
+ When enabled, all cookies will be erased when the browsing session is over
|
||||
+ </message>
|
||||
<message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
|
||||
JavaScript
|
||||
</message>
|
||||
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
@@ -304,6 +304,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
|
||||
return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
|
||||
}
|
||||
|
||||
+static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
|
||||
+ JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj) {
|
||||
+ HostContentSettingsMap* host_content_settings_map =
|
||||
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
|
||||
+ auto value = host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr);
|
||||
+ auto enabled = CONTENT_SETTING_SESSION_ONLY == value;
|
||||
+ LOG(INFO) << "GetCookiesSessionOnly := " << enabled << " (raw_value = " << value << ")";
|
||||
+ return enabled;
|
||||
+}
|
||||
+
|
||||
static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj) {
|
||||
@@ -756,6 +767,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
|
||||
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
|
||||
}
|
||||
|
||||
+static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
|
||||
+ JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj,
|
||||
+ jboolean enabled) {
|
||||
+ HostContentSettingsMap* host_content_settings_map =
|
||||
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
|
||||
+ LOG(INFO) << "SetCookiesSessionOnly -> " << (enabled ? "true" : "false") <<
|
||||
+ "; false -> setting_allow: " << CONTENT_SETTING_ALLOW <<
|
||||
+ "; true -> session_only: " << CONTENT_SETTING_SESSION_ONLY;
|
||||
+ host_content_settings_map->SetDefaultContentSetting(
|
||||
+ CONTENT_SETTINGS_TYPE_COOKIES,
|
||||
+ enabled ? CONTENT_SETTING_SESSION_ONLY : CONTENT_SETTING_ALLOW);
|
||||
+}
|
||||
+
|
||||
static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -242,14 +242,14 @@ public class PartnerBrowserCustomizations {
|
||||
@Override
|
||||
protected Void doInBackground() {
|
||||
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.11.0
|
||||
|
||||
@@ -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.11.0
|
||||
|
||||
+876
@@ -0,0 +1,876 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 1 Aug 2018 09:19:40 +0200
|
||||
Subject: Add bookmark import/export actions in bookmarks activity and page
|
||||
|
||||
Thanks to Arnaud for the snippet on how to add toast notifications
|
||||
---
|
||||
.../java/res/menu/bookmark_action_bar_menu.xml | 14 ++
|
||||
.../browser/bookmarks/BookmarkActionBar.java | 12 ++
|
||||
.../chrome/browser/bookmarks/BookmarkActivity.java | 19 ++
|
||||
.../chrome/browser/bookmarks/BookmarkBridge.java | 56 ++++++
|
||||
.../chrome/browser/bookmarks/BookmarkDelegate.java | 10 +
|
||||
.../chrome/browser/bookmarks/BookmarkManager.java | 20 ++
|
||||
.../chrome/browser/bookmarks/BookmarkPage.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 6 +
|
||||
chrome/browser/BUILD.gn | 8 +-
|
||||
.../browser/android/bookmarks/bookmark_bridge.cc | 215 +++++++++++++++++++++
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.h | 20 +-
|
||||
chrome/browser/importer/profile_writer.cc | 2 +
|
||||
chrome/common/BUILD.gn | 3 +
|
||||
chrome/utility/BUILD.gn | 7 +-
|
||||
chrome/utility/importer/bookmark_html_reader.cc | 27 ++-
|
||||
chrome/utility/importer/bookmark_html_reader.h | 9 +
|
||||
16 files changed, 419 insertions(+), 10 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
|
||||
@@ -22,6 +22,20 @@
|
||||
app:showAsAction="ifRoom"
|
||||
app:iconTint="@color/dark_mode_tint" />
|
||||
<item
|
||||
+ android:id="@+id/import_menu_id"
|
||||
+ android:icon="@drawable/add_circle_blue"
|
||||
+ android:title="@string/import_bookmarks"
|
||||
+ android:visible="true"
|
||||
+ 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_bookmarks"
|
||||
+ android:visible="true"
|
||||
+ app:showAsAction="ifRoom"
|
||||
+ app:iconTint="@color/dark_mode_tint" />
|
||||
+ <item
|
||||
android:id="@+id/close_menu_id"
|
||||
android:icon="@drawable/btn_close"
|
||||
android:title="@string/bookmark_action_bar_close"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
|
||||
@@ -89,6 +89,12 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
} else if (menuItem.getItemId() == R.id.search_menu_id) {
|
||||
mDelegate.openSearchUI();
|
||||
return true;
|
||||
+ } else if (menuItem.getItemId() == R.id.import_menu_id) {
|
||||
+ mDelegate.importBookmarks();
|
||||
+ return true;
|
||||
+ } else if (menuItem.getItemId() == R.id.export_menu_id) {
|
||||
+ mDelegate.exportBookmarks();
|
||||
+ return true;
|
||||
}
|
||||
|
||||
SelectionDelegate<BookmarkId> selectionDelegate = mDelegate.getSelectionDelegate();
|
||||
@@ -132,6 +138,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
void showLoadingUi() {
|
||||
setTitle(null);
|
||||
setNavigationButton(NAVIGATION_BUTTON_NONE);
|
||||
+ getMenu().findItem(R.id.import_menu_id).setVisible(false);
|
||||
+ 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);
|
||||
}
|
||||
@@ -141,6 +149,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
super.showNormalView();
|
||||
|
||||
if (mDelegate == null) {
|
||||
+ getMenu().findItem(R.id.import_menu_id).setVisible(false);
|
||||
+ 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);
|
||||
}
|
||||
@@ -173,6 +183,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
|
||||
public void onFolderStateSet(BookmarkId folder) {
|
||||
mCurrentFolder = mDelegate.getModel().getBookmarkById(folder);
|
||||
|
||||
+ getMenu().findItem(R.id.import_menu_id).setVisible(true);
|
||||
+ 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/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
|
||||
@@ -12,6 +12,7 @@ import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.chrome.browser.SnackbarActivity;
|
||||
import org.chromium.chrome.browser.UrlConstants;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
+import org.chromium.ui.base.ActivityWindowAndroid;
|
||||
|
||||
/**
|
||||
* The activity that displays the bookmark UI on the phone. It keeps a {@link BookmarkManager}
|
||||
@@ -21,6 +22,7 @@ import org.chromium.components.bookmarks.BookmarkId;
|
||||
public class BookmarkActivity extends SnackbarActivity {
|
||||
|
||||
private BookmarkManager mBookmarkManager;
|
||||
+ private ActivityWindowAndroid mWindowAndroid;
|
||||
static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
|
||||
public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
|
||||
|
||||
@@ -32,6 +34,22 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL;
|
||||
mBookmarkManager.updateForUrl(url);
|
||||
setContentView(mBookmarkManager.getView());
|
||||
+
|
||||
+ final boolean listenToActivityState = true;
|
||||
+ mWindowAndroid = new ActivityWindowAndroid(this, listenToActivityState);
|
||||
+ mWindowAndroid.restoreInstanceState(savedInstanceState);
|
||||
+ mBookmarkManager.setWindow(mWindowAndroid);
|
||||
+ // Set up the animation placeholder to be the SurfaceView. This disables the
|
||||
+ // SurfaceView's 'hole' clipping during animations that are notified to the window.
|
||||
+// mWindowAndroid.setAnimationPlaceholderView(
|
||||
+// mBookmarkManager.getContentViewRenderView().getSurfaceView());
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void onSaveInstanceState(Bundle outState) {
|
||||
+ super.onSaveInstanceState(outState);
|
||||
+
|
||||
+ mWindowAndroid.saveInstanceState(outState);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,6 +66,7 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
+ mWindowAndroid.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
|
||||
BookmarkId bookmarkId = BookmarkId.getBookmarkIdFromString(data.getStringExtra(
|
||||
INTENT_VISIT_BOOKMARK_ID));
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
@@ -4,7 +4,11 @@
|
||||
|
||||
package org.chromium.chrome.browser.bookmarks;
|
||||
|
||||
+import android.content.Intent;
|
||||
+import android.content.Context;
|
||||
+import android.net.Uri;
|
||||
import android.os.SystemClock;
|
||||
+import android.provider.Browser;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Pair;
|
||||
|
||||
@@ -13,11 +17,16 @@ import org.chromium.base.ObserverList;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
|
||||
+import org.chromium.chrome.browser.IntentHandler;
|
||||
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
import org.chromium.components.bookmarks.BookmarkType;
|
||||
import org.chromium.components.url_formatter.UrlFormatter;
|
||||
+import org.chromium.ui.base.PageTransition;
|
||||
+import org.chromium.ui.base.WindowAndroid;
|
||||
+import org.chromium.ui.widget.Toast;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -508,6 +517,24 @@ public class BookmarkBridge {
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Import bookmarks from a selected file.
|
||||
+ * @param window The current window of the bookmarks activity or page.
|
||||
+ */
|
||||
+ public void importBookmarks(WindowAndroid window) {
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ nativeImportBookmarks(mNativeBookmarkBridge, window);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Export bookmarks to a path selected by the user.
|
||||
+ * @param window The current window of the bookmarks activity or page.
|
||||
+ */
|
||||
+ 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.
|
||||
@@ -840,6 +867,33 @@ public class BookmarkBridge {
|
||||
depthList.add(depth);
|
||||
}
|
||||
|
||||
+
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksImported() {
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ //TODO: call this after actual import
|
||||
+ //Toast.makeText(ContextUtils.getApplicationContext(), "Bookmarks imported", Toast.LENGTH_LONG).show();
|
||||
+ }
|
||||
+
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksExported(String bookmarksPath) {
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("file://" + bookmarksPath));
|
||||
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID,
|
||||
+ context.getPackageName());
|
||||
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK);
|
||||
+
|
||||
+ // If the bookmark manager is shown in a tab on a phone (rather than in a separate
|
||||
+ // activity) the component name may be null. Send the intent through
|
||||
+ // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012.
|
||||
+ intent.setClass(context, ChromeLauncherActivity.class);
|
||||
+
|
||||
+ IntentHandler.startActivityForTrustedIntent(intent);
|
||||
+ }
|
||||
+
|
||||
private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
|
||||
List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
|
||||
for (int i = 0; i < left.length; i++) {
|
||||
@@ -906,6 +960,8 @@ public class BookmarkBridge {
|
||||
boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
|
||||
private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type,
|
||||
int index);
|
||||
+ private native void nativeImportBookmarks(long nativeBookmarkBridge, WindowAndroid window);
|
||||
+ private native void nativeExportBookmarks(long nativeBookmarkBridge);
|
||||
private native int nativeGetTotalBookmarkCount(long nativeBookmarkBridge, long id, int type);
|
||||
private native void nativeSetBookmarkTitle(long nativeBookmarkBridge, long id, int type,
|
||||
String title);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
|
||||
@@ -69,6 +69,16 @@ interface BookmarkDelegate {
|
||||
void openSearchUI();
|
||||
|
||||
/**
|
||||
+ * Imports bookmarks from user-selected file.
|
||||
+ */
|
||||
+ void importBookmarks();
|
||||
+
|
||||
+ /**
|
||||
+ * Exports bookmarks to downloads directory.
|
||||
+ */
|
||||
+ void exportBookmarks();
|
||||
+
|
||||
+ /**
|
||||
* Dismisses the search UI.
|
||||
*/
|
||||
void closeSearchUI();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
|
||||
@@ -21,6 +21,7 @@ import org.chromium.base.metrics.RecordUserAction;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
|
||||
+import org.chromium.chrome.browser.ChromeActivity;
|
||||
import org.chromium.chrome.browser.favicon.LargeIconBridge;
|
||||
import org.chromium.chrome.browser.native_page.BasicNativePage;
|
||||
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
|
||||
@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
|
||||
import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
|
||||
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
+import org.chromium.ui.base.ActivityWindowAndroid;
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
@@ -55,6 +57,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
private Activity mActivity;
|
||||
private ViewGroup mMainView;
|
||||
private BookmarkModel mBookmarkModel;
|
||||
+ private ActivityWindowAndroid mWindowAndroid;
|
||||
private BookmarkUndoController mUndoController;
|
||||
private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
|
||||
private BasicNativePage mNativePage;
|
||||
@@ -267,6 +270,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
}
|
||||
|
||||
/**
|
||||
+ * Sets the Android window that is used by further intents created by the bookmark activity.
|
||||
+ */
|
||||
+ public void setWindow(ActivityWindowAndroid window) {
|
||||
+ mWindowAndroid = window;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
* @return Current URL representing the UI state of bookmark manager. If no state has been shown
|
||||
* yet in this session, on phone return last used state stored in preference; on tablet
|
||||
* return the url previously set by {@link #updateForUrl(String)}.
|
||||
@@ -414,6 +424,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
|
||||
}
|
||||
|
||||
@Override
|
||||
+ public void importBookmarks() {
|
||||
+ mBookmarkModel.importBookmarks(mWindowAndroid);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void exportBookmarks() {
|
||||
+ mBookmarkModel.exportBookmarks();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
public void openSearchUI() {
|
||||
setState(BookmarkUIState.createSearchState());
|
||||
mSelectableListLayout.onStartSearch();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
|
||||
@@ -35,6 +35,7 @@ public class BookmarkPage extends BasicNativePage {
|
||||
mManager = new BookmarkManager(
|
||||
activity, false, ((SnackbarManageable) activity).getSnackbarManager());
|
||||
mManager.setBasicNativePage(this);
|
||||
+ mManager.setWindow(activity.getWindowAndroid());
|
||||
mTitle = activity.getString(R.string.bookmarks);
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
--- a/chrome/android/java/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/android/java/strings/android_chrome_strings.grd
|
||||
@@ -218,6 +218,12 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_SEARCH" desc="The label for a search button.">
|
||||
Search
|
||||
</message>
|
||||
+ <message name="IDS_IMPORT_BOOKMARKS" desc="The label for the import bookmarks button.">
|
||||
+ Import
|
||||
+ </message>
|
||||
+ <message name="IDS_EXPORT_BOOKMARKS" desc="The label for an export bookmarks 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
|
||||
@@ -140,6 +140,10 @@ 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",
|
||||
+ "importer/profile_writer.cc",
|
||||
+ "importer/profile_writer.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",
|
||||
@@ -2537,8 +2541,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",
|
||||
@@ -2627,8 +2629,6 @@ jumbo_split_static_library("browser") {
|
||||
"importer/importer_uma.h",
|
||||
"importer/in_process_importer_bridge.cc",
|
||||
"importer/in_process_importer_bridge.h",
|
||||
- "importer/profile_writer.cc",
|
||||
- "importer/profile_writer.h",
|
||||
"lifetime/browser_close_manager.cc",
|
||||
"lifetime/browser_close_manager.h",
|
||||
"lifetime/termination_notification.cc",
|
||||
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
@@ -9,18 +9,29 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
+#include "base/android/content_uri_utils.h"
|
||||
#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 "base/strings/utf_string_conversions.h"
|
||||
+#include "chrome/utility/importer/bookmark_html_reader.h"
|
||||
+#include "chrome/browser/bookmarks/bookmark_html_writer.h"
|
||||
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
|
||||
#include "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
|
||||
+#include "chrome/browser/importer/profile_writer.h"
|
||||
+#include "chrome/browser/platform_util.h"
|
||||
+#include "chrome/browser/ui/chrome_select_file_policy.h"
|
||||
#include "chrome/browser/profiles/incognito_helpers.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/profiles/profile_android.h"
|
||||
#include "chrome/browser/signin/signin_manager_factory.h"
|
||||
#include "chrome/browser/undo/bookmark_undo_service_factory.h"
|
||||
+#include "chrome/common/importer/imported_bookmark_entry.h"
|
||||
+#include "chrome/common/importer/importer_data_types.h"
|
||||
+#include "chrome/common/url_constants.h"
|
||||
#include "components/bookmarks/browser/bookmark_model.h"
|
||||
#include "components/bookmarks/browser/bookmark_utils.h"
|
||||
#include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
|
||||
@@ -30,11 +41,14 @@
|
||||
#include "components/bookmarks/managed/managed_bookmark_service.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/query_parser/query_parser.h"
|
||||
+#include "components/search_engines/template_url.h"
|
||||
#include "components/signin/core/browser/signin_manager.h"
|
||||
#include "components/undo/bookmark_undo_service.h"
|
||||
#include "components/undo/undo_manager.h"
|
||||
+#include "components/url_formatter/url_fixer.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "jni/BookmarkBridge_jni.h"
|
||||
+#include "ui/android/window_android.h"
|
||||
|
||||
using base::android::AttachCurrentThread;
|
||||
using base::android::ConvertUTF8ToJavaString;
|
||||
@@ -53,6 +67,57 @@ using bookmarks::BookmarkPermanentNode;
|
||||
using bookmarks::BookmarkType;
|
||||
using content::BrowserThread;
|
||||
|
||||
+namespace internal {
|
||||
+
|
||||
+// Returns true if |url| has a valid scheme that we allow to import. We
|
||||
+// filter out the URL with a unsupported scheme.
|
||||
+bool CanImportURL(const GURL& url) {
|
||||
+ // The URL is not valid.
|
||||
+ if (!url.is_valid())
|
||||
+ return false;
|
||||
+
|
||||
+ // Filter out the URLs with unsupported schemes.
|
||||
+ const char* const kInvalidSchemes[] = {"wyciwyg", "place"};
|
||||
+ for (size_t i = 0; i < arraysize(kInvalidSchemes); ++i) {
|
||||
+ if (url.SchemeIs(kInvalidSchemes[i]))
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ // Check if |url| is about:blank.
|
||||
+ if (url == url::kAboutBlankURL)
|
||||
+ return true;
|
||||
+
|
||||
+ // If |url| starts with chrome:// or about:, check if it's one of the URLs
|
||||
+ // that we support.
|
||||
+ if (url.SchemeIs(content::kChromeUIScheme) ||
|
||||
+ url.SchemeIs(url::kAboutScheme)) {
|
||||
+ if (url.host_piece() == chrome::kChromeUIUberHost ||
|
||||
+ url.host_piece() == chrome::kChromeUIAboutHost)
|
||||
+ return true;
|
||||
+
|
||||
+ GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string()));
|
||||
+ for (size_t i = 0; i < chrome::kNumberOfChromeHostURLs; ++i) {
|
||||
+ if (fixed_url.DomainIs(chrome::kChromeHostURLs[i]))
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ for (size_t i = 0; i < chrome::kNumberOfChromeDebugURLs; ++i) {
|
||||
+ if (fixed_url == chrome::kChromeDebugURLs[i])
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ // If url has either chrome:// or about: schemes but wasn't found in the
|
||||
+ // above lists, it means we don't support it, so we don't allow the user
|
||||
+ // to import it.
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ // Otherwise, we assume the url has a valid (importable) scheme.
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+} // internal
|
||||
+
|
||||
namespace {
|
||||
|
||||
class BookmarkTitleComparer {
|
||||
@@ -129,6 +194,10 @@ BookmarkBridge::~BookmarkBridge() {
|
||||
bookmark_model_->RemoveObserver(this);
|
||||
if (partner_bookmarks_shim_)
|
||||
partner_bookmarks_shim_->RemoveObserver(this);
|
||||
+ // There may be pending file dialogs, we need to tell them that we've gone
|
||||
+ // away so they don't try and call back to us.
|
||||
+ if (select_file_dialog_)
|
||||
+ select_file_dialog_->ListenerDestroyed();
|
||||
}
|
||||
|
||||
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
|
||||
@@ -470,6 +539,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
|
||||
return count;
|
||||
}
|
||||
|
||||
+void BookmarkBridge::ImportBookmarks(JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj,
|
||||
+ const JavaParamRef<jobject>& java_window) {
|
||||
+ DCHECK(IsLoaded());
|
||||
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
+
|
||||
+ ui::WindowAndroid* window =
|
||||
+ ui::WindowAndroid::FromJavaWindowAndroid(java_window);
|
||||
+ CHECK(window);
|
||||
+
|
||||
+ select_file_dialog_ = ui::SelectFileDialog::Create(
|
||||
+ this, std::make_unique<ChromeSelectFilePolicy>(nullptr));
|
||||
+
|
||||
+ //NOTE: extension and description are not used on Android
|
||||
+ ui::SelectFileDialog::FileTypeInfo file_type_info;
|
||||
+ file_type_info.extensions.resize(1);
|
||||
+ file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html"));
|
||||
+ file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm"));
|
||||
+ file_type_info.extension_description_overrides.push_back(base::ASCIIToUTF16("Netscape Bookmark"));
|
||||
+ file_type_info.allowed_paths =
|
||||
+ ui::SelectFileDialog::FileTypeInfo::NATIVE_OR_DRIVE_PATH;
|
||||
+
|
||||
+ select_file_dialog_->SelectFile(
|
||||
+ ui::SelectFileDialog::SELECT_OPEN_FILE,
|
||||
+ base::string16(),
|
||||
+ import_path_,
|
||||
+ &file_type_info,
|
||||
+ 0,
|
||||
+ base::FilePath::StringType(),
|
||||
+ window,
|
||||
+ NULL);
|
||||
+
|
||||
+ //NOTE: this should be called after the actual import
|
||||
+ Java_BookmarkBridge_bookmarksImported(env, obj);
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::ExportBookmarks(JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj) {
|
||||
+ DCHECK(IsLoaded());
|
||||
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
+
|
||||
+ if (import_path_.empty()) {
|
||||
+ if (!base::android::GetDownloadsDirectory(&import_path_)) {
|
||||
+ LOG(ERROR) << "Could not retrieve downloads directory for bookmarks export";
|
||||
+ return;
|
||||
+ }
|
||||
+ import_path_ = import_path_.Append(FILE_PATH_LITERAL("bookmarks.html"));
|
||||
+ }
|
||||
+
|
||||
+ bookmark_html_writer::WriteBookmarks(profile_, import_path_, NULL);
|
||||
+
|
||||
+ //NOTE: nothing will be written if write permission has not been granted before
|
||||
+ LOG(INFO) << "Bookmarks exported successfully in " << import_path_;
|
||||
+
|
||||
+ Java_BookmarkBridge_bookmarksExported(env, obj, ConvertUTF8ToJavaString(env, import_path_.MaybeAsASCII()));
|
||||
+}
|
||||
+
|
||||
+// Attempts to create a TemplateURL from the provided data. |title| is optional.
|
||||
+// If TemplateURL creation fails, returns null.
|
||||
+std::unique_ptr<TemplateURL> CreateTemplateURL(const base::string16& url,
|
||||
+ const base::string16& keyword,
|
||||
+ const base::string16& title) {
|
||||
+ if (url.empty() || keyword.empty())
|
||||
+ return nullptr;
|
||||
+ TemplateURLData data;
|
||||
+ data.SetKeyword(keyword);
|
||||
+ // We set short name by using the title if it exists.
|
||||
+ // Otherwise, we use the shortcut.
|
||||
+ data.SetShortName(title.empty() ? keyword : title);
|
||||
+ data.SetURL(TemplateURLRef::DisplayURLToURLRef(url));
|
||||
+ return std::make_unique<TemplateURL>(data);
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::FileSelected(const base::FilePath& path, int index,
|
||||
+ void* params) {
|
||||
+ base::File file;
|
||||
+ if (path.IsContentUri()) {
|
||||
+ file = base::OpenContentUriForRead(path);
|
||||
+ } else {
|
||||
+ file.Initialize(path, base::File::FLAG_OPEN | base::File::FLAG_READ);
|
||||
+ }
|
||||
+ if (!file.IsValid()) {
|
||||
+ LOG(ERROR) << "Cannot open bookmarks file for import";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ auto fileLength = file.GetLength();
|
||||
+ if (-1 == fileLength) {
|
||||
+ LOG(ERROR) << "Cannot read bookmarks file length";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (fileLength > 10 * 1024 * 1024) {
|
||||
+ LOG(ERROR) << "Bookmarks file is too big";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ std::vector<char> buffer(fileLength);
|
||||
+ if (-1 == file.ReadAtCurrentPos(buffer.data(), fileLength)) {
|
||||
+ LOG(ERROR) << "Could not read bookmarks file";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (buffer.empty()) {
|
||||
+ LOG(ERROR) << "Empty bookmarks file";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ std::string contents(buffer.begin(), buffer.end());
|
||||
+
|
||||
+ // the following import logic comes from BookmarksFileImporter class
|
||||
+ std::vector<ImportedBookmarkEntry> bookmarks;
|
||||
+ std::vector<importer::SearchEngineInfo> search_engines;
|
||||
+
|
||||
+ bookmark_html_reader::ImportBookmarksFile(
|
||||
+ base::Callback<bool(void)>(),
|
||||
+ base::Bind(internal::CanImportURL),
|
||||
+ contents,
|
||||
+ &bookmarks,
|
||||
+ &search_engines,
|
||||
+ nullptr);
|
||||
+
|
||||
+ // writing to profile will begin extensive changes and use the same bookmarks model for persisting changes
|
||||
+ auto *writer = new ProfileWriter(profile_);
|
||||
+
|
||||
+ if (!bookmarks.empty()) {
|
||||
+ writer->AddBookmarks(bookmarks, base::ASCIIToUTF16("Imported"));
|
||||
+ }
|
||||
+ if (!search_engines.empty()) {
|
||||
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
|
||||
+ for (const auto& search_engine : search_engines) {
|
||||
+ std::unique_ptr<TemplateURL> owned_template_url = CreateTemplateURL(
|
||||
+ search_engine.url, search_engine.keyword, search_engine.display_name);
|
||||
+ if (owned_template_url)
|
||||
+ owned_template_urls.push_back(std::move(owned_template_url));
|
||||
+ }
|
||||
+ writer->AddKeywords(std::move(owned_template_urls), false);
|
||||
+ }
|
||||
+
|
||||
+ LOG(INFO) << "Imported " << bookmarks.size() << " bookmarks and " <<
|
||||
+ search_engines.size() << " search engines from " << import_path_;
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::FileSelectionCanceled(void* params) {
|
||||
+}
|
||||
+
|
||||
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
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
|
||||
#include "components/bookmarks/common/android/bookmark_id.h"
|
||||
#include "components/prefs/pref_change_registrar.h"
|
||||
+#include "components/search_engines/template_url.h"
|
||||
+#include "ui/shell_dialogs/select_file_dialog.h"
|
||||
|
||||
namespace bookmarks {
|
||||
class BookmarkModel;
|
||||
@@ -26,7 +28,8 @@ class Profile;
|
||||
// bookmark page. This fetches the bookmarks, title, urls, folder
|
||||
// hierarchy.
|
||||
class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
- public PartnerBookmarksShim::Observer {
|
||||
+ public PartnerBookmarksShim::Observer,
|
||||
+ public ui::SelectFileDialog::Listener {
|
||||
public:
|
||||
BookmarkBridge(JNIEnv* env,
|
||||
const base::android::JavaRef<jobject>& obj,
|
||||
@@ -36,6 +39,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
bool IsDoingExtensiveChanges(JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj);
|
||||
|
||||
+ // SelectFileDialog::Listener implementation.
|
||||
+ void FileSelected(const base::FilePath& path,
|
||||
+ int index,
|
||||
+ void* params) override;
|
||||
+ void FileSelectionCanceled(void* params) override;
|
||||
+
|
||||
jboolean IsEditBookmarksEnabled(
|
||||
JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj);
|
||||
@@ -116,6 +125,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
jlong id,
|
||||
jint type);
|
||||
|
||||
+ void ImportBookmarks(JNIEnv* env,
|
||||
+ const base::android::JavaParamRef<jobject>& obj,
|
||||
+ const base::android::JavaParamRef<jobject>& java_window);
|
||||
+
|
||||
+ void ExportBookmarks(JNIEnv* env,
|
||||
+ const base::android::JavaParamRef<jobject>& obj);
|
||||
+
|
||||
void SetBookmarkTitle(JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj,
|
||||
jlong id,
|
||||
@@ -261,12 +277,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
void ShimBeingDeleted(PartnerBookmarksShim* shim) override;
|
||||
|
||||
Profile* profile_;
|
||||
+ base::FilePath import_path_;
|
||||
JavaObjectWeakGlobalRef weak_java_ref_;
|
||||
bookmarks::BookmarkModel* bookmark_model_; // weak
|
||||
bookmarks::ManagedBookmarkService* managed_bookmark_service_; // weak
|
||||
std::unique_ptr<bookmarks::ScopedGroupBookmarkActions>
|
||||
grouped_bookmark_actions_;
|
||||
PrefChangeRegistrar pref_change_registrar_;
|
||||
+ scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
|
||||
|
||||
// Information about the Partner bookmarks (must check for IsLoaded()).
|
||||
// This is owned by profile.
|
||||
diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc
|
||||
--- a/chrome/browser/importer/profile_writer.cc
|
||||
+++ b/chrome/browser/importer/profile_writer.cc
|
||||
@@ -109,12 +109,14 @@ void ProfileWriter::AddHistoryPage(const history::URLRows& page,
|
||||
HistoryServiceFactory::GetForProfile(profile_,
|
||||
ServiceAccessType::EXPLICIT_ACCESS)
|
||||
->AddPagesWithDetails(page, visit_source);
|
||||
+#if !defined(OS_ANDROID)
|
||||
// Measure the size of the history page after Auto Import on first run.
|
||||
if (first_run::IsChromeFirstRun() &&
|
||||
visit_source == history::SOURCE_IE_IMPORTED) {
|
||||
UMA_HISTOGRAM_COUNTS("Import.ImportedHistorySize.AutoImportFromIE",
|
||||
page.size());
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ProfileWriter::AddHomepage(const GURL& home_page) {
|
||||
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
|
||||
--- a/chrome/common/BUILD.gn
|
||||
+++ b/chrome/common/BUILD.gn
|
||||
@@ -443,6 +443,9 @@ static_library("common") {
|
||||
sources += [
|
||||
"media/chrome_media_drm_bridge_client.cc",
|
||||
"media/chrome_media_drm_bridge_client.h",
|
||||
+ ## Bromite dependencies for bookmark import functionality
|
||||
+ "importer/imported_bookmark_entry.cc",
|
||||
+ "importer/imported_bookmark_entry.h",
|
||||
]
|
||||
} else {
|
||||
# Non-Android.
|
||||
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
|
||||
--- a/chrome/utility/BUILD.gn
|
||||
+++ b/chrome/utility/BUILD.gn
|
||||
@@ -58,8 +58,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",
|
||||
@@ -162,6 +160,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",
|
||||
diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc
|
||||
--- a/chrome/utility/importer/bookmark_html_reader.cc
|
||||
+++ b/chrome/utility/importer/bookmark_html_reader.cc
|
||||
@@ -17,7 +17,9 @@
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "base/time/time.h"
|
||||
#include "chrome/common/importer/imported_bookmark_entry.h"
|
||||
+#if !defined(OS_ANDROID)
|
||||
#include "chrome/utility/importer/favicon_reencode.h"
|
||||
+#endif
|
||||
#include "components/search_engines/search_terms_data.h"
|
||||
#include "components/search_engines/template_url.h"
|
||||
#include "net/base/data_url.h"
|
||||
@@ -56,6 +58,7 @@ bool GetAttribute(const std::string& attribute_list,
|
||||
return true;
|
||||
}
|
||||
|
||||
+#if !defined(OS_ANDROID)
|
||||
// Given the URL of a page and a favicon data URL, adds an appropriate record
|
||||
// to the given favicon usage vector.
|
||||
void DataURLToFaviconUsage(const GURL& link_url,
|
||||
@@ -86,6 +89,7 @@ void DataURLToFaviconUsage(const GURL& link_url,
|
||||
|
||||
favicons->push_back(usage);
|
||||
}
|
||||
+#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -108,12 +112,10 @@ static std::string stripDt(const std::string& lineDt) {
|
||||
void ImportBookmarksFile(
|
||||
const base::Callback<bool(void)>& cancellation_callback,
|
||||
const base::Callback<bool(const GURL&)>& valid_url_callback,
|
||||
- const base::FilePath& file_path,
|
||||
+ const std::string& content,
|
||||
std::vector<ImportedBookmarkEntry>* bookmarks,
|
||||
std::vector<importer::SearchEngineInfo>* search_engines,
|
||||
favicon_base::FaviconUsageDataList* favicons) {
|
||||
- std::string content;
|
||||
- base::ReadFileToString(file_path, &content);
|
||||
std::vector<std::string> lines = base::SplitString(
|
||||
content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
||||
|
||||
@@ -126,6 +128,7 @@ void ImportBookmarksFile(
|
||||
std::vector<base::string16> path;
|
||||
size_t toolbar_folder_index = 0;
|
||||
std::string charset = "UTF-8"; // If no charset is specified, assume utf-8.
|
||||
+
|
||||
for (size_t i = 0;
|
||||
i < lines.size() &&
|
||||
(cancellation_callback.is_null() || !cancellation_callback.Run());
|
||||
@@ -218,10 +221,12 @@ void ImportBookmarksFile(
|
||||
}
|
||||
bookmarks->push_back(entry);
|
||||
|
||||
+#if !defined(OS_ANDROID)
|
||||
// Save the favicon. DataURLToFaviconUsage will handle the case where
|
||||
// there is no favicon.
|
||||
if (favicons)
|
||||
DataURLToFaviconUsage(url, favicon, favicons);
|
||||
+#endif
|
||||
|
||||
continue;
|
||||
}
|
||||
@@ -278,6 +283,22 @@ void ImportBookmarksFile(
|
||||
}
|
||||
}
|
||||
|
||||
+void ImportBookmarksFile(
|
||||
+ const base::Callback<bool(void)>& cancellation_callback,
|
||||
+ const base::Callback<bool(const GURL&)>& valid_url_callback,
|
||||
+ const base::FilePath& file_path,
|
||||
+ std::vector<ImportedBookmarkEntry>* bookmarks,
|
||||
+ std::vector<importer::SearchEngineInfo>* search_engines,
|
||||
+ favicon_base::FaviconUsageDataList* favicons) {
|
||||
+ std::string content;
|
||||
+ if (!base::ReadFileToString(file_path, &content)) {
|
||||
+ LOG(ERROR) << "Could not directly read bookmarks import file";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ ImportBookmarksFile(cancellation_callback, valid_url_callback, content, bookmarks, search_engines, favicons);
|
||||
+}
|
||||
+
|
||||
bool CanImportURLAsSearchEngine(const GURL& url,
|
||||
std::string* search_engine_url) {
|
||||
std::string url_spec = url.possibly_invalid_spec();
|
||||
diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h
|
||||
--- a/chrome/utility/importer/bookmark_html_reader.h
|
||||
+++ b/chrome/utility/importer/bookmark_html_reader.h
|
||||
@@ -51,6 +51,15 @@ void ImportBookmarksFile(
|
||||
std::vector<importer::SearchEngineInfo>* search_engines,
|
||||
favicon_base::FaviconUsageDataList* favicons);
|
||||
|
||||
+void ImportBookmarksFile(
|
||||
+ const base::Callback<bool(void)>& cancellation_callback,
|
||||
+ const base::Callback<bool(const GURL&)>& valid_url_callback,
|
||||
+ const std::string& content,
|
||||
+ std::vector<ImportedBookmarkEntry>* bookmarks,
|
||||
+ std::vector<importer::SearchEngineInfo>* search_engines,
|
||||
+ favicon_base::FaviconUsageDataList* favicons);
|
||||
+
|
||||
+
|
||||
// Returns true if |url| should be imported as a search engine, i.e. because it
|
||||
// has replacement terms. Chrome treats such bookmarks as search engines rather
|
||||
// than true bookmarks.
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
From: samartnik <artem@brave.com>
|
||||
Date: Tue, 17 Apr 2018 17:14:00 +0300
|
||||
Subject: Add option to not persist tabs across sessions
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
|
||||
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
|
||||
.../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++
|
||||
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
5 files changed, 31 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
+++ b/chrome/android/java/res/values/values.xml
|
||||
@@ -66,6 +66,9 @@
|
||||
<!-- TODO(peconn): Add help section. -->
|
||||
<!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
|
||||
|
||||
+ <string name="close_tabs_on_exit_title">Close tabs on exit</string>
|
||||
+ <string name="close_tabs_on_exit_summary">Don\'t persist tabs between browsing sessions</string>
|
||||
+
|
||||
<!-- Our manage space activity. Default pre-KitKat to be nothing. -->
|
||||
<string name="manage_space_activity"></string>
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -18,6 +18,11 @@
|
||||
android:summary="@string/search_suggestions_summary"
|
||||
android:defaultValue="true" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="close_tabs_on_exit"
|
||||
+ android:title="@string/close_tabs_on_exit_title"
|
||||
+ android:summary="@string/close_tabs_on_exit_summary"
|
||||
+ android:defaultValue="false" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="safe_browsing_extended_reporting"
|
||||
android:title="@string/safe_browsing_extended_reporting_title"
|
||||
android:summary="@string/safe_browsing_extended_reporting_summary" />
|
||||
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
|
||||
@@ -1023,8 +1023,10 @@ public class ChromeTabbedActivity
|
||||
boolean hadCipherData =
|
||||
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
|
||||
|
||||
+ String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
||||
boolean noRestoreState =
|
||||
- CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE);
|
||||
+ CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE) ||
|
||||
+ ContextUtils.getAppSharedPreferences().getBoolean(PREF_CLOSE_TABS_ON_EXIT, false);
|
||||
if (noRestoreState) {
|
||||
// Clear the state files because they are inconsistent and useless from now on.
|
||||
mTabModelSelectorImpl.clearState();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package org.chromium.chrome.browser.preferences.privacy;
|
||||
|
||||
+import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.Preference;
|
||||
@@ -15,6 +16,7 @@ import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
@@ -47,6 +49,7 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
||||
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
||||
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
|
||||
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
||||
private static final String PREF_DO_NOT_TRACK = "do_not_track";
|
||||
private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
|
||||
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
|
||||
@@ -150,6 +153,11 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
safeBrowsingPref.setOnPreferenceChangeListener(this);
|
||||
safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
|
||||
+ ChromeBaseCheckBoxPreference closeTabsOnExitPref =
|
||||
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
|
||||
+ closeTabsOnExitPref.setOnPreferenceChangeListener(this);
|
||||
+ closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
+
|
||||
updateSummaries();
|
||||
}
|
||||
|
||||
@@ -176,6 +184,12 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setBoolean(
|
||||
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
|
||||
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
|
||||
+// PrefServiceBridge.getInstance().setBoolean(
|
||||
+// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue);
|
||||
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
|
||||
+ sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
return true;
|
||||
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
|
||||
@@ -3655,6 +3655,12 @@ However, you aren’t invisible. Going private doesn’t hide your browsing from
|
||||
<message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
|
||||
IMAGE
|
||||
</message>
|
||||
+ <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
|
||||
+ Close all open tabs on exit
|
||||
+ </message>
|
||||
+ <message name="IDS_CLOSE_TABS_ON_EXIT_SUMMARY" desc="Summary text for 'Close tabs on exit' settings-privacy option.">
|
||||
+ Don't persist tabs between browsing sessions
|
||||
+ </message>
|
||||
<message name="IDS_CONTEXTMENU_LINK_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the link.">
|
||||
LINK
|
||||
</message>
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,315 @@
|
||||
From: Ryan Archer <ryan.bradley.archer@gmail.com>
|
||||
Date: Wed, 2 Aug 2017 01:41:28 -0400
|
||||
Subject: Add an always-incognito mode
|
||||
|
||||
More specifically, add a preference that causes all new tabs and all
|
||||
clicked links to launch as incognito.
|
||||
---
|
||||
.../android/java/res/xml/privacy_preferences.xml | 5 ++
|
||||
.../browser/AlwaysIncognitoLinkInterceptor.java | 72 ++++++++++++++++++++++
|
||||
.../chromium/chrome/browser/ChromeActivity.java | 4 ++
|
||||
.../chrome/browser/appmenu/AppMenuHandler.java | 12 ++++
|
||||
.../contextmenu/ChromeContextMenuPopulator.java | 9 ++-
|
||||
.../chrome/browser/tabmodel/ChromeTabCreator.java | 24 +++++++-
|
||||
.../java/strings/android_chrome_strings.grd | 6 ++
|
||||
chrome/android/java_sources.gni | 1 +
|
||||
8 files changed, 131 insertions(+), 2 deletions(-)
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -23,6 +23,11 @@
|
||||
android:summary="@string/close_tabs_on_exit_summary"
|
||||
android:defaultValue="false" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
+ android:key="always_incognito"
|
||||
+ android:title="@string/always_incognito_title"
|
||||
+ android:summary="@string/always_incognito_summary"
|
||||
+ android:defaultValue="false" />
|
||||
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="safe_browsing_extended_reporting"
|
||||
android:title="@string/safe_browsing_extended_reporting_title"
|
||||
android:summary="@string/safe_browsing_extended_reporting_summary" />
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
|
||||
@@ -0,0 +1,72 @@
|
||||
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
+
|
||||
+package org.chromium.chrome.browser;
|
||||
+
|
||||
+import android.content.SharedPreferences;
|
||||
+
|
||||
+import org.chromium.chrome.browser.tab.EmptyTabObserver;
|
||||
+import org.chromium.chrome.browser.tab.Tab;
|
||||
+import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
|
||||
+import org.chromium.chrome.browser.tabmodel.TabModel;
|
||||
+import org.chromium.content_public.browser.LoadUrlParams;
|
||||
+
|
||||
+import java.util.HashMap;
|
||||
+import java.util.HashSet;
|
||||
+import java.util.Map;
|
||||
+import java.util.Set;
|
||||
+/**
|
||||
+ * A {@link TabObserver} that implements the always-incognito preference behavior for links. When the preference is set
|
||||
+ * to true, it intercepts links opened within observed {@link Tab}s and opens them in new incognito <code>Tab</code>s instead.
|
||||
+ */
|
||||
+public class AlwaysIncognitoLinkInterceptor extends EmptyTabObserver {
|
||||
+
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
+
|
||||
+ private final SharedPreferences alwaysIncognitoContainer;
|
||||
+ private final Map<Tab, String> lastUrls;
|
||||
+ private final Set<Tab> revertingTabs;
|
||||
+
|
||||
+ public AlwaysIncognitoLinkInterceptor(final SharedPreferences alwaysIncognitoContainer) {
|
||||
+
|
||||
+ assert alwaysIncognitoContainer != null;
|
||||
+
|
||||
+ this.alwaysIncognitoContainer = alwaysIncognitoContainer;
|
||||
+ lastUrls = new HashMap<Tab, String>();
|
||||
+ revertingTabs = new HashSet<Tab>();
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onDestroyed(final Tab tab)
|
||||
+ {
|
||||
+ lastUrls.remove(tab);
|
||||
+ revertingTabs.remove(tab);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onUpdateUrl(final Tab tab, final String url) {
|
||||
+
|
||||
+ if (tab == null) return;
|
||||
+ if (url == null) return;
|
||||
+ if (tab.isIncognito()) return;
|
||||
+ if (alwaysIncognitoContainer == null) return;
|
||||
+
|
||||
+ final String lastUrl = lastUrls.put(tab, url);
|
||||
+
|
||||
+ if (!alwaysIncognitoContainer.getBoolean(PREF_ALWAYS_INCOGNITO, false)) return;
|
||||
+ if (revertingTabs.contains(tab)) {
|
||||
+ revertingTabs.remove(tab);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ tab.getActivity().getTabCreator(true).createNewTab(new LoadUrlParams(url), TabModel.TabLaunchType.FROM_LINK, tab);
|
||||
+
|
||||
+ if ((url.equals(lastUrl)) || (!tab.canGoBack())) {
|
||||
+ // this call was triggered by a reload
|
||||
+ } else {
|
||||
+ revertingTabs.add(tab);
|
||||
+ tab.goBack();
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
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
|
||||
@@ -238,6 +238,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
|
||||
|
||||
// Observes when sync becomes ready to create the mContextReporter.
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
|
||||
|
||||
private ChromeFullscreenManager mFullscreenManager;
|
||||
@@ -1627,6 +1628,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
|
||||
throw new IllegalStateException(
|
||||
"Attempting to access TabCreator before initialization");
|
||||
}
|
||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
|
||||
+ return mIncognitoTabCreator;
|
||||
+ }
|
||||
return incognito ? mIncognitoTabCreator : mRegularTabCreator;
|
||||
}
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
|
||||
@@ -17,6 +17,7 @@ import android.view.View;
|
||||
import android.widget.PopupMenu;
|
||||
|
||||
import org.chromium.base.metrics.RecordUserAction;
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.chrome.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -26,6 +27,9 @@ import java.util.ArrayList;
|
||||
* AppMenuObservers about these actions.
|
||||
*/
|
||||
public class AppMenuHandler {
|
||||
+
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
+
|
||||
private AppMenu mAppMenu;
|
||||
private AppMenuDragHelper mAppMenuDragHelper;
|
||||
private Menu mMenu;
|
||||
@@ -167,6 +171,14 @@ public class AppMenuHandler {
|
||||
if (mDelegate.shouldShowHeader(appRect.height())) {
|
||||
headerResourceId = mDelegate.getHeaderResourceId();
|
||||
}
|
||||
+
|
||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
|
||||
+ final MenuItem newTabOption = mAppMenu.getMenu().findItem(R.id.new_tab_menu_id);
|
||||
+ if (newTabOption != null) {
|
||||
+ newTabOption.setVisible(false);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
|
||||
footerResourceId, headerResourceId, mHighlightMenuId, showFromBottom);
|
||||
mAppMenuDragHelper.onShow(startDragging);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
|
||||
@@ -14,6 +14,7 @@ import android.webkit.MimeTypeMap;
|
||||
|
||||
import org.chromium.base.library_loader.LibraryProcessType;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
|
||||
@@ -43,6 +44,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||
private static final String TAG = "CCMenuPopulator";
|
||||
private final ContextMenuItemDelegate mDelegate;
|
||||
private final @ContextMenuMode int mMode;
|
||||
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
|
||||
|
||||
/**
|
||||
* Defines the Groups of each Context Menu Item
|
||||
@@ -246,7 +248,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
|
||||
if (FirstRunStatus.getFirstRunFlowComplete() && mMode == ContextMenuMode.NORMAL
|
||||
&& !isEmptyUrl(params.getUrl())
|
||||
&& UrlUtilities.isAcceptedScheme(params.getUrl())) {
|
||||
- linkTab.add(new ChromeContextMenuItem(Item.OPEN_IN_NEW_TAB));
|
||||
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)
|
||||
+ && !mDelegate.isIncognito()) {
|
||||
+ // disallow open in new tab
|
||||
+ } else {
|
||||
+ linkTab.add(new ChromeContextMenuItem(Item.OPEN_IN_NEW_TAB));
|
||||
+ }
|
||||
if (!mDelegate.isIncognito() && mDelegate.isIncognitoSupported()) {
|
||||
linkTab.add(new ChromeContextMenuItem(Item.OPEN_IN_INCOGNITO_TAB));
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
|
||||
@@ -7,8 +7,10 @@ package org.chromium.chrome.browser.tabmodel;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
|
||||
+import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.SysUtils;
|
||||
import org.chromium.base.TraceEvent;
|
||||
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
|
||||
import org.chromium.chrome.browser.ChromeActivity;
|
||||
import org.chromium.chrome.browser.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.IntentHandler;
|
||||
@@ -19,6 +21,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
|
||||
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tab.TabDelegateFactory;
|
||||
+import org.chromium.chrome.browser.tab.TabObserver;
|
||||
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
|
||||
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
|
||||
import org.chromium.chrome.browser.util.IntentUtils;
|
||||
@@ -36,6 +39,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
|
||||
private final ChromeActivity mActivity;
|
||||
private final boolean mIncognito;
|
||||
+ private final TabObserver mExtraLogic;
|
||||
|
||||
private WindowAndroid mNativeWindow;
|
||||
private TabModel mTabModel;
|
||||
@@ -47,6 +51,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
mActivity = activity;
|
||||
mNativeWindow = nativeWindow;
|
||||
mIncognito = incognito;
|
||||
+ if (!mIncognito) {
|
||||
+ mExtraLogic = new AlwaysIncognitoLinkInterceptor(ContextUtils.getAppSharedPreferences());
|
||||
+ } else {
|
||||
+ mExtraLogic = null;
|
||||
+ }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -159,6 +168,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
tab.getWebContents());
|
||||
}
|
||||
|
||||
+ if (mExtraLogic != null) {
|
||||
+ tab.addObserver(mExtraLogic);
|
||||
+ }
|
||||
+
|
||||
mTabModel.addTab(tab, position, type);
|
||||
return tab;
|
||||
} finally {
|
||||
@@ -199,6 +212,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
Tab tab = Tab.createLiveTab(
|
||||
Tab.INVALID_TAB_ID, mIncognito, mNativeWindow, type, parentId, !openInForeground);
|
||||
tab.initialize(webContents, mTabContentManager, delegateFactory, !openInForeground, false);
|
||||
+
|
||||
+ if (mExtraLogic != null) {
|
||||
+ tab.addObserver(mExtraLogic);
|
||||
+ }
|
||||
+
|
||||
mTabModel.addTab(tab, position, type);
|
||||
return true;
|
||||
}
|
||||
@@ -242,7 +260,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
*/
|
||||
public Tab launchUrlFromExternalApp(String url, String referer, String headers,
|
||||
String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
|
||||
- assert !mIncognito;
|
||||
boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
|
||||
|
||||
// If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
|
||||
@@ -302,6 +319,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
|
||||
tab.initialize(
|
||||
null, mTabContentManager, createDefaultTabDelegateFactory(), !selectTab, false);
|
||||
assert state.isIncognito() == mIncognito;
|
||||
+
|
||||
+ if (mExtraLogic != null) {
|
||||
+ tab.addObserver(mExtraLogic);
|
||||
+ }
|
||||
+
|
||||
mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
|
||||
return tab;
|
||||
}
|
||||
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
|
||||
@@ -691,6 +691,12 @@ CHAR-LIMIT guidelines:
|
||||
<message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Body text for Chrome setting under 'Help Improve Safe Browsing'. This feature sends small amounts of data to Google about potentially-dangerous pages to help Safe Browsing improve Chrome's protection against malware and phishing.">
|
||||
Sends some system information and page content to Google
|
||||
</message>
|
||||
+ <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
|
||||
+ Open links in incognito tabs always
|
||||
+ </message>
|
||||
+ <message name="IDS_ALWAYS_INCOGNITO_SUMMARY" desc="Summary for always incognito mode">
|
||||
+ Opens links in incognito tabs when you click on new tab or on a link
|
||||
+ </message>
|
||||
<message name="IDS_SAFE_BROWSING_TITLE" desc="Title for safe browsing.">
|
||||
Safe Browsing
|
||||
</message>
|
||||
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
|
||||
--- a/chrome/android/java_sources.gni
|
||||
+++ b/chrome/android/java_sources.gni
|
||||
@@ -8,6 +8,7 @@ import("//device/vr/buildflags/buildflags.gni")
|
||||
import("//chrome/android/feed/feed_java_sources.gni")
|
||||
|
||||
chrome_java_sources = [
|
||||
+ "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
|
||||
"java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
|
||||
"java/src/org/chromium/chrome/browser/ActivityTabTaskDescriptionHelper.java",
|
||||
"java/src/org/chromium/chrome/browser/ActivityTaskDescriptionIconGenerator.java",
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
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 | 12 +-----------
|
||||
2 files changed, 4 insertions(+), 20 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
|
||||
@@ -225,17 +225,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
|
||||
// Variations seed fetching is only enabled in official Chrome builds, if a URL
|
||||
// is specified on the command line, and for testing.
|
||||
bool IsFetchingEnabled() {
|
||||
-#if !defined(GOOGLE_CHROME_BUILD)
|
||||
- if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
- switches::kVariationsServerURL) &&
|
||||
- !g_should_fetch_for_testing) {
|
||||
- DVLOG(1)
|
||||
- << "Not performing repeated fetching in unofficial build without --"
|
||||
- << switches::kVariationsServerURL << " specified.";
|
||||
- return false;
|
||||
- }
|
||||
-#endif
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -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.11.0
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 22 Mar 2018 22:38:00 +0100
|
||||
Subject: Disable plugins enumeration
|
||||
|
||||
---
|
||||
third_party/blink/renderer/core/frame/local_frame.cc | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
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
|
||||
@@ -1219,10 +1219,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
|
||||
}
|
||||
|
||||
PluginData* LocalFrame::GetPluginData() const {
|
||||
- if (!Loader().AllowPlugins(kNotAboutToInstantiatePlugin))
|
||||
- return nullptr;
|
||||
- return GetPage()->GetPluginData(
|
||||
- Tree().Top().GetSecurityContext()->GetSecurityOrigin());
|
||||
+ // what about no
|
||||
+ return nullptr;
|
||||
}
|
||||
|
||||
void LocalFrame::SetAdTrackerForTesting(AdTracker* ad_tracker) {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
From: SergeyZhukovsky <serg.zhukovsky@gmail.com>
|
||||
Date: Tue, 15 Aug 2017 15:33:16 -0400
|
||||
Subject: Remove google account access permission on reboot
|
||||
|
||||
---
|
||||
chrome/android/BUILD.gn | 4 +---
|
||||
chrome/android/java/AndroidManifest.xml | 4 ++--
|
||||
2 files changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
--- a/chrome/android/BUILD.gn
|
||||
+++ b/chrome/android/BUILD.gn
|
||||
@@ -924,8 +924,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
|
||||
resources = [
|
||||
"java/res_template/xml/file_paths.xml",
|
||||
"java/res_template/xml/launchershortcuts.xml",
|
||||
- "java/res_template/xml/searchable.xml",
|
||||
- "java/res_template/xml/syncadapter.xml",
|
||||
+ "java/res_template/xml/searchable.xml"
|
||||
]
|
||||
res_dir = "java/res_template"
|
||||
variables = chrome_public_jinja_variables
|
||||
@@ -936,7 +935,6 @@ jinja_template_resources("chrome_sync_shell_apk_template_resources") {
|
||||
"java/res_template/xml/file_paths.xml",
|
||||
"java/res_template/xml/launchershortcuts.xml",
|
||||
"java/res_template/xml/searchable.xml",
|
||||
- "java/res_template/xml/syncadapter.xml",
|
||||
]
|
||||
res_dir = "java/res_template"
|
||||
variables = chrome_sync_shell_jinja_variables
|
||||
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
|
||||
@@ -806,14 +806,14 @@ by a child template that "extends" this file.
|
||||
</provider>
|
||||
|
||||
<!-- Sync adapter for browser invalidation. -->
|
||||
- <service android:name="org.chromium.chrome.browser.invalidation.ChromeBrowserSyncAdapterService"
|
||||
+ <!--<service android:name="org.chromium.chrome.browser.invalidation.ChromeBrowserSyncAdapterService"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="android.content.SyncAdapter" />
|
||||
</intent-filter>
|
||||
<meta-data android:name="android.content.SyncAdapter"
|
||||
android:resource="@xml/syncadapter" />
|
||||
- </service>
|
||||
+ </service>-->
|
||||
|
||||
<!-- Broadcast receiver that will be notified of account changes -->
|
||||
<receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+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.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -110,10 +110,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.11.0
|
||||
|
||||
@@ -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.11.0
|
||||
|
||||
@@ -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.11.0
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
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 | 6 +++++-
|
||||
components/autofill/core/browser/autofill_manager.cc | 2 ++
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -42,7 +42,6 @@ namespace autofill {
|
||||
|
||||
namespace {
|
||||
|
||||
-const size_t kMaxQueryGetSize = 1400; // 1.25KB
|
||||
const size_t kAutofillDownloadManagerMaxFormCacheSize = 16;
|
||||
const size_t kMaxFieldsPerQueryRequest = 100;
|
||||
|
||||
@@ -415,6 +414,7 @@ bool AutofillDownloadManager::StartUploadRequest(
|
||||
|
||||
std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
|
||||
const FormRequestData& request_data) const {
|
||||
+#if 0
|
||||
std::string method("POST");
|
||||
std::string query_str;
|
||||
|
||||
@@ -437,6 +437,10 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
|
||||
GURL url = autofill_server_url_
|
||||
.Resolve(RequestTypeToString(request_data.request_type))
|
||||
.ReplaceComponents(replacements);
|
||||
+#else
|
||||
+ std::string method("GET");
|
||||
+ GURL url = GURL("about:blank");
|
||||
+#endif
|
||||
return std::make_tuple(std::move(url), std::move(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
|
||||
@@ -1147,9 +1147,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.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -201,8 +201,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.11.0
|
||||
|
||||
@@ -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
|
||||
@@ -326,8 +326,10 @@ SafeBrowsingUIManager* SafeBrowsingService::CreateUIManager() {
|
||||
|
||||
void SafeBrowsingService::RegisterAllDelayedAnalysis() {
|
||||
#if defined(FULL_SAFE_BROWSING)
|
||||
+#if 0
|
||||
RegisterBinaryIntegrityAnalysis();
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
V4ProtocolConfig SafeBrowsingService::GetV4ProtocolConfig() 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.11.0
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -289,6 +291,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());
|
||||
@@ -371,6 +377,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
|
||||
|
||||
// Record that we made a request
|
||||
phishing_report_times_.push(base::Time::Now());
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
@@ -385,6 +392,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);
|
||||
@@ -454,6 +465,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
|
||||
|
||||
// Record that we made a malware request
|
||||
malware_report_times_.push(base::Time::Now());
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ClientSideDetectionService::HandlePhishingVerdict(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
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 +-
|
||||
components/safe_browsing/browser/threat_details_cache.cc | 1 +
|
||||
components/safe_browsing/db/v4_update_protocol_manager.cc | 4 ++--
|
||||
5 files changed, 7 insertions(+), 6 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
|
||||
@@ -358,7 +358,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");
|
||||
@@ -440,7 +440,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
|
||||
@@ -1075,7 +1075,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/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);
|
||||
diff --git a/components/safe_browsing/db/v4_update_protocol_manager.cc b/components/safe_browsing/db/v4_update_protocol_manager.cc
|
||||
--- a/components/safe_browsing/db/v4_update_protocol_manager.cc
|
||||
+++ b/components/safe_browsing/db/v4_update_protocol_manager.cc
|
||||
@@ -343,8 +343,8 @@ void V4UpdateProtocolManager::IssueUpdateRequest() {
|
||||
std::string req_base64 = GetBase64SerializedUpdateRequestProto();
|
||||
GetUpdateUrlAndHeaders(req_base64, &resource_request->url,
|
||||
&resource_request->headers);
|
||||
- resource_request->load_flags = net::LOAD_DISABLE_CACHE;
|
||||
- std::unique_ptr<network::SimpleURLLoader> loader =
|
||||
+ resource_request->load_flags = net::LOAD_DISABLE_CACHE | net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
|
||||
+ std::unique_ptr<network::SimpleURLLoader> loader =
|
||||
network::SimpleURLLoader::Create(std::move(resource_request),
|
||||
traffic_annotation);
|
||||
loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,202 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 18 Sep 2018 08:06:14 +0200
|
||||
Subject: Allow building without safebrowsing for Android
|
||||
|
||||
---
|
||||
.../android/java/res/xml/privacy_preferences.xml | 12 -----
|
||||
.../preferences/privacy/PrivacyPreferences.java | 58 ----------------------
|
||||
.../chrome_browsing_data_remover_delegate.cc | 10 ----
|
||||
chrome/browser/chrome_content_browser_client.cc | 14 +-----
|
||||
.../chrome_resource_dispatcher_host_delegate.cc | 2 +
|
||||
5 files changed, 3 insertions(+), 93 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -28,18 +28,6 @@
|
||||
android:summary="@string/always_incognito_summary"
|
||||
android:defaultValue="false" />
|
||||
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
- android:key="safe_browsing_extended_reporting"
|
||||
- android:title="@string/safe_browsing_extended_reporting_title"
|
||||
- android:summary="@string/safe_browsing_extended_reporting_summary" />
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
- android:key="safe_browsing_scout_reporting"
|
||||
- android:title="@string/safe_browsing_scout_reporting_title"
|
||||
- android:summary="@string/safe_browsing_scout_reporting_summary" />
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
- android:key="safe_browsing"
|
||||
- android:title="@string/safe_browsing_title"
|
||||
- android:summary="@string/safe_browsing_summary" />
|
||||
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
|
||||
android:key="network_predictions"
|
||||
android:title="@string/network_predictions_title"
|
||||
android:summary="@string/network_predictions_summary"
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
|
||||
@@ -40,12 +40,7 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
implements OnPreferenceChangeListener {
|
||||
private static final String PREF_NAVIGATION_ERROR = "navigation_error";
|
||||
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
|
||||
- private static final String PREF_SAFE_BROWSING_EXTENDED_REPORTING =
|
||||
- "safe_browsing_extended_reporting";
|
||||
- private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
|
||||
- "safe_browsing_scout_reporting";
|
||||
public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
|
||||
- private static final String PREF_SAFE_BROWSING = "safe_browsing";
|
||||
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
|
||||
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
|
||||
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
|
||||
@@ -80,10 +75,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
// Remove preferences that were migrated to SyncAndServicesPreferences.
|
||||
preferenceScreen.removePreference(findPreference(PREF_NAVIGATION_ERROR));
|
||||
preferenceScreen.removePreference(findPreference(PREF_SEARCH_SUGGESTIONS));
|
||||
- preferenceScreen.removePreference(
|
||||
- findPreference(PREF_SAFE_BROWSING_EXTENDED_REPORTING));
|
||||
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING));
|
||||
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING));
|
||||
preferenceScreen.removePreference(findPreference(PREF_NETWORK_PREDICTIONS));
|
||||
preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
|
||||
preferenceScreen.removePreference(findPreference(PREF_USAGE_AND_CRASH_REPORTING));
|
||||
@@ -127,32 +118,11 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
|
||||
}
|
||||
|
||||
- // Listen to changes to both Extended Reporting prefs.
|
||||
- ChromeBaseCheckBoxPreference legacyExtendedReportingPref =
|
||||
- (ChromeBaseCheckBoxPreference) findPreference(
|
||||
- PREF_SAFE_BROWSING_EXTENDED_REPORTING);
|
||||
- legacyExtendedReportingPref.setOnPreferenceChangeListener(this);
|
||||
- legacyExtendedReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
- ChromeBaseCheckBoxPreference scoutReportingPref =
|
||||
- (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING);
|
||||
- scoutReportingPref.setOnPreferenceChangeListener(this);
|
||||
- scoutReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
- // Remove the extended reporting preference that is NOT active.
|
||||
- String extended_reporting_pref_to_remove =
|
||||
- prefServiceBridge.isSafeBrowsingScoutReportingActive()
|
||||
- ? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
|
||||
- preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
|
||||
-
|
||||
ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
|
||||
(ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
|
||||
allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
|
||||
allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
|
||||
- ChromeBaseCheckBoxPreference safeBrowsingPref =
|
||||
- (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
|
||||
- safeBrowsingPref.setOnPreferenceChangeListener(this);
|
||||
- safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
|
||||
-
|
||||
ChromeBaseCheckBoxPreference closeTabsOnExitPref =
|
||||
(ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
|
||||
closeTabsOnExitPref.setOnPreferenceChangeListener(this);
|
||||
@@ -166,12 +136,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
String key = preference.getKey();
|
||||
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
||||
PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
|
||||
- } else if (PREF_SAFE_BROWSING.equals(key)) {
|
||||
- PrefServiceBridge.getInstance().setSafeBrowsingEnabled((boolean) newValue);
|
||||
- } else if (PREF_SAFE_BROWSING_EXTENDED_REPORTING.equals(key)
|
||||
- || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
|
||||
- PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
|
||||
- (boolean) newValue);
|
||||
} else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
|
||||
sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
|
||||
@@ -230,21 +194,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
searchSuggestionsPref.setChecked(prefServiceBridge.isSearchSuggestEnabled());
|
||||
}
|
||||
|
||||
- String extended_reporting_pref = prefServiceBridge.isSafeBrowsingScoutReportingActive()
|
||||
- ? PREF_SAFE_BROWSING_SCOUT_REPORTING : PREF_SAFE_BROWSING_EXTENDED_REPORTING;
|
||||
- CheckBoxPreference extendedReportingPref =
|
||||
- (CheckBoxPreference) findPreference(extended_reporting_pref);
|
||||
- if (extendedReportingPref != null) {
|
||||
- extendedReportingPref.setChecked(
|
||||
- prefServiceBridge.isSafeBrowsingExtendedReportingEnabled());
|
||||
- }
|
||||
-
|
||||
- CheckBoxPreference safeBrowsingPref =
|
||||
- (CheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
|
||||
- if (safeBrowsingPref != null) {
|
||||
- safeBrowsingPref.setChecked(prefServiceBridge.isSafeBrowsingEnabled());
|
||||
- }
|
||||
-
|
||||
CheckBoxPreference canMakePaymentPref =
|
||||
(CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
|
||||
if (canMakePaymentPref != null) {
|
||||
@@ -281,13 +230,6 @@ public class PrivacyPreferences extends PreferenceFragment
|
||||
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
|
||||
return prefs.isSearchSuggestManaged();
|
||||
}
|
||||
- if (PREF_SAFE_BROWSING_EXTENDED_REPORTING.equals(key)
|
||||
- || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
|
||||
- return prefs.isSafeBrowsingExtendedReportingManaged();
|
||||
- }
|
||||
- if (PREF_SAFE_BROWSING.equals(key)) {
|
||||
- return prefs.isSafeBrowsingManaged();
|
||||
- }
|
||||
if (PREF_NETWORK_PREDICTIONS.equals(key)) {
|
||||
return prefs.isNetworkPredictionManaged();
|
||||
}
|
||||
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
|
||||
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
|
||||
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
|
||||
@@ -256,16 +256,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
|
||||
return false;
|
||||
}
|
||||
|
||||
-// Callback for when cookies have been deleted. Invokes NotifyIfDone.
|
||||
-// Receiving |cookie_manager| as a parameter so that the receive pipe is
|
||||
-// not deleted before the response is received.
|
||||
-void OnClearedCookies(base::OnceClosure done,
|
||||
- network::mojom::CookieManagerPtr cookie_manager,
|
||||
- uint32_t num_deleted) {
|
||||
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
- std::move(done).Run();
|
||||
-}
|
||||
-
|
||||
} // namespace
|
||||
|
||||
ChromeBrowsingDataRemoverDelegate::ChromeBrowsingDataRemoverDelegate(
|
||||
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
||||
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -4790,17 +4790,5 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
|
||||
content::ResourceContext* resource_context) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
||||
|
||||
- ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
|
||||
- if (!io_data->safe_browsing_enabled()->GetValue())
|
||||
- return nullptr;
|
||||
-
|
||||
- // |safe_browsing_service_| may be unavailable in tests.
|
||||
- if (safe_browsing_service_ && !safe_browsing_url_checker_delegate_) {
|
||||
- safe_browsing_url_checker_delegate_ =
|
||||
- base::MakeRefCounted<safe_browsing::UrlCheckerDelegateImpl>(
|
||||
- safe_browsing_service_->database_manager(),
|
||||
- safe_browsing_service_->ui_manager());
|
||||
- }
|
||||
-
|
||||
- return safe_browsing_url_checker_delegate_.get();
|
||||
+ return nullptr;
|
||||
}
|
||||
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
@@ -466,8 +466,10 @@ void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles(
|
||||
// of the list, so one of them gets to decide if the resource is safe.
|
||||
content::ResourceThrottle* first_throttle = NULL;
|
||||
#if defined(OS_ANDROID)
|
||||
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
|
||||
first_throttle = DataReductionProxyResourceThrottle::MaybeCreate(
|
||||
request, resource_context, resource_type, nullptr);
|
||||
+#endif
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
|
||||
--
|
||||
2.11.0
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user