Compare commits

..
Author SHA1 Message Date
csagan5 8d85bfa7d0 Release 80.0.3987.109 2020-02-18 07:50:35 +01:00
csagan5 152903d847 Mention wiki 2020-02-16 18:25:58 +01:00
csagan5 4fad3bf5bc Update patch description 2020-02-15 09:27:21 +01:00
CarlandGitHub 1cc0dfb1ff Merge pull request #491 from bromite/v80/AImageReader-bugfix
Bugfix for AImageReader crash on Android10/arm64
2020-02-15 09:20:28 +01:00
csagan5 0d00af6e73 Bugfix for AImageReader crash on Android10/arm64 #445 2020-02-15 08:55:35 +01:00
csagan5 b902ec74ad Release 80.0.3987.95 2020-02-14 07:46:11 +01:00
csagan5 e9ba098f8e Update README regarding frozen user agent 2020-02-14 00:00:42 +01:00
CarlandGitHub 410fc50a21 Updated patches for v80 (#482)
* Updated patches for v80

* Fix arm64 build of openH264

* Fix linking error

* Update other patches too

* Fix remaining crashes
2020-02-07 07:52:41 +01:00
csagan5 24320da307 Split FAQ into own file 2020-01-31 11:20:13 +01:00
csagan5 8d85b59eac Mention that Push API does not work due to GCM
Thanks to @randomshell for looking into it.

Fixes #474
2020-01-29 09:51:35 +01:00
csagan5 00411eb209 Release 79.0.3945.139 2020-01-26 18:15:04 +01:00
csagan5 a56884e75e Explain how DRM works in Bromite 2020-01-24 10:02:21 +01:00
CarlandGitHub 1f363eba23 Mention enable-search-ready-omnibox flag
Fixes #469
2020-01-18 21:22:39 +07:00
csagan5 6f5d36bc5c Various improvements after proofreading 2020-01-17 22:22:16 +01:00
csagan5 a500255598 Release 79.0.3945.123 2020-01-11 17:11:14 +01:00
csagan5 af8378b675 Updated FAQs and features list 2020-01-08 03:02:57 +01:00
csagan5 3c916480b2 Document patch about video decode acceleration 2020-01-08 02:18:38 +01:00
csagan5 dbf32840c6 Release 79.0.3945.111 2020-01-08 02:14:39 +01:00
csagan5 4b8e47060b Update features list 2020-01-06 09:44:32 +01:00
csagan5 43bf98a956 Remove entry about bug not yet fixed 2019-12-31 18:15:28 +01:00
csagan5 b94b80e096 Release 79.0.3945.107 2019-12-31 18:07:47 +01:00
csagan5 52202a3ffb Release 79.0.3945.100 2019-12-27 16:08:41 +01:00
CarlandGitHub 4e5c7c36a1 Merge pull request #447 from bromite/v79/bugfixes
Bugfixes to build vanilla Chromium
2019-12-27 16:05:39 +01:00
csagan5 d1fb4d4974 Updated patches for next v79 release 2019-12-27 16:05:14 +01:00
csagan5 edaf4c0f17 Fixes for unified consent and feed build issues 2019-12-23 02:28:56 +01:00
csagan5 4a9cbe673d Bugfixes to build vanilla Chromium 2019-12-21 10:03:09 +01:00
csagan5 6340bb4398 Remove duplicate symbols in GN_ARGS 2019-12-20 08:43:56 +01:00
csagan5 ba0e1dc920 Release 79.0.3945.94 2019-12-20 07:58:59 +01:00
CarlandGitHub c8e8919714 Updated patches for v79 (#440)
* Updated patches for v79

Remaining issue:
* blank tabs when running on x86 emulators

Waiting on upstream to fix that.

The other upstream storage bug (https://bugs.chromium.org/p/chromium/issues/detail?id=1033655) is fixed in this version.
2019-12-19 23:55:40 +01:00
csagan5 4902cfb5d5 Remove mention of original nochromo patch, no more used 2019-12-15 11:18:30 +01:00
csagan5 bc3ef3746a Release 78.0.3904.130 2019-12-09 11:51:40 +01:00
csagan5 c941fcf137 Release 78.0.3904.119 2019-11-30 17:51:25 +01:00
CarlandGitHub 86f3e97b6b Use headers for the feature request template 2019-11-18 22:10:54 +01:00
csagan5 f62bd97771 Release 78.0.3904.105 2019-11-17 13:30:59 +01:00
csagan5 11ec80bed4 Release 78.0.3904.93 2019-11-10 22:36:38 +01:00
CarlandGitHub b52188adfa Use smaller headers 2019-11-04 08:06:03 +01:00
CarlandGitHub 290ac541a5 Use headers 2019-11-04 08:04:08 +01:00
csagan5 a237a5ce1b Remove mention to old filters 2019-11-01 22:50:06 +01:00
Madis OtenurmandCarl 764cf585dd Remove "enable" from menu items (#398)
Remove "enable" from menu items
Renamed more references for consistency
2019-10-26 10:12:47 +02:00
csagan5 bbaf497fc7 Fix donation button image source 2019-10-25 22:22:02 +02:00
csagan5 2a03789061 Release 78.0.3904.72 2019-10-25 08:55:16 +02:00
csagan5 c2ab0f4667 Remove unused old AdBlock filters header 2019-10-22 22:33:54 +02:00
csagan5 b692f721a3 Publish list of patches for the Chromium build 2019-10-22 22:33:38 +02:00
csagan5 28e950d9be Updated patches to fix #387 and #388 2019-10-21 16:23:03 +02:00
csagan5 6a9e562dde Release 78.0.3904.63 2019-10-18 00:55:10 +02:00
csagan5 158d782db4 Updated donation buttons 2019-10-02 16:08:25 +02:00
csagan5 8d494540e2 Release 77.0.3865.104 2019-09-28 09:55:06 +02:00
CarlandGitHub 74cb09ea83 Removed question about dark mode and themes (fixes #376) 2019-09-25 23:42:20 +02:00
CarlandGitHub 3f19511574 Mention that no support for SystemWebView installations is provided 2019-09-23 22:00:16 +02:00
csagan5 e866631846 Release 77.0.3865.95 2019-09-23 21:54:14 +02:00
CarlandGitHub 00c28793f4 Add question about SystemWebView 2019-09-23 09:24:44 +02:00
CarlandGitHub 932d5c680f Explain how to find Chromium 2019-09-23 09:20:37 +02:00
csagan5 aa408e6d21 Update information after switch to native engine 2019-09-16 08:58:01 +02:00
csagan5 5330cb879f Release 77.0.3865.81 2019-09-16 08:39:49 +02:00
csagan5 d86fcd1c5f Update feature request template 2019-09-15 18:30:13 +02:00
csagan5 ec98e6e11c Release 76.0.3809.129 2019-08-24 21:03:55 +02:00
csagan5 528c999cbb Update issue template; add device model field 2019-08-22 21:52:59 +02:00
csagan5 65c5722a09 Release 76.0.3809.115 2019-08-13 07:57:29 +02:00
csagan5 35f447cf0c Release 76.0.3809.100 2019-08-07 07:49:14 +02:00
csagan5 a5b818c8ab Release 76.0.3809.91 2019-08-02 07:20:44 +02:00
csagan5 21ef4d1c37 Fix Qwant patch 2019-07-28 10:00:48 +02:00
csagan5 b05d50bcad Release 76.0.3809.85 2019-07-28 09:32:54 +02:00
csagan5 07985cf503 Release 75.0.3770.139 2019-07-13 07:15:37 +02:00
csagan5 323864669b Release 75.0.3770.132 2019-07-09 00:23:34 +02:00
csagan5 50b0961a8d Release 75.0.3770.109 2019-06-25 08:18:06 +02:00
CarlandGitHub 8eb36db315 Create FUNDING.yml 2019-06-18 08:07:44 +02:00
csagan5 a2efd643de Release 75.0.3770.86 2019-06-10 19:27:28 +02:00
csagan5 c611bc0855 Release 75.0.3770.82 2019-06-06 08:03:40 +02:00
csagan5 028c1567bd Report Android v4.4 and above as supported (SDK19) 2019-05-30 21:15:31 +02:00
csagan5 bd0b93cb3e Release 75.0.3770.70 2019-05-30 21:08:04 +02:00
csagan5 84d6403e06 Increase minimum SDK version from 17 to 19 2019-05-24 23:43:18 +02:00
csagan5 73b524f627 Release 75.0.3770.53 2019-05-24 19:54:43 +02:00
csagan5 232dd7f970 Report correct minimum SDK version 16 -> 17 2019-05-24 05:54:10 +02:00
csagan5 ca366d39b9 Release 75.0.3770.50 2019-05-22 06:11:41 +02:00
csagan5 5cf852d97d AndroidHardening -> GrapheneOS 2019-05-18 12:34:51 +02:00
csagan5 f2977bac96 Update CHANGELOG 2019-05-18 12:31:09 +02:00
csagan5 a162d5820e Release 74.0.3729.162 2019-05-18 12:30:04 +02:00
csagan5 95c717eb59 Release 74.0.3729.154 2019-05-15 09:47:17 +02:00
csagan5 873c245f6e Release 74.0.3729.141 2019-05-06 22:55:18 +02:00
csagan5 56fa92cbff Release 74.0.3729.122 2019-04-28 18:26:54 +02:00
csagan5 acc8cbb1e9 Release 74.0.3729.106 2019-04-21 14:26:39 +02:00
csagan5 c4bce0f449 Updated patches for latest release 2019-04-15 08:38:09 +02:00
csagan5 cf3313d156 Release 74.0.3729.86 2019-04-15 08:35:49 +02:00
csagan5 a6ffa85a0e Release 74.0.3729.80 2019-04-13 10:25:57 +02:00
csagan5 e940ac0998 Release 73.0.3683.107 2019-04-08 22:08:24 +02:00
csagan5 d1069ed023 Release 73.0.3683.105 2019-04-06 20:26:09 +02:00
csagan5 3a9775c5c0 Add note about privacy limitations and link to Tor Browser project 2019-04-05 22:09:45 +02:00
csagan5 d1c1ce61ff Release 73.0.3683.97 2019-03-31 22:58:00 +02:00
csagan5 525243125d Release 73.0.3683.88 2019-03-23 00:59:15 +01:00
csagan5 c15c433631 Add AndroidHardening to credits section as well 2019-03-18 21:57:09 +01:00
csagan5 e7e7afdc2d Release 73.0.3683.82 2019-03-18 21:51:54 +01:00
csagan5 a600d36a56 Mention AndroidHardening project 2019-03-18 01:01:09 +01:00
csagan5 e012e0aa9f Release 73.0.3683.79 2019-03-15 16:34:48 +01:00
csagan5 a320e83fa1 Changelog for 73.0.3683.70 2019-03-12 21:25:07 +01:00
csagan5 5d3367398f Release 73.0.3683.70 2019-03-10 20:05:38 +01:00
csagan5 a34b285160 Release 73.0.3683.61 2019-03-03 08:25:32 +01:00
csagan5 a672f8d057 Release 72.0.3626.120 2019-02-27 14:11:24 +01:00
csagan5 503e4b8f27 Release 72.0.3626.119 2019-02-22 09:38:54 +01:00
csagan5 b615a77f51 Release 72.0.3626.114 2019-02-18 17:58:13 +01:00
csagan5 7f6cc79541 Release 72.0.3626.108 2019-02-13 17:41:35 +01:00
csagan5 2951298a6b Add URL to AV1 support wiki page 2019-02-12 07:42:39 +01:00
csagan5 d5b09217ef Release 72.0.3626.99 2019-02-08 17:54:20 +01:00
csagan5 28d274b712 Release 72.0.3626.87 2019-02-03 21:52:41 +01:00
csagan5 c800e61cc3 Release 72.0.3626.81 2019-01-29 18:14:13 +01:00
csagan5 d66be65985 Add section for 72.0.3626.73 2019-01-25 11:34:02 +01:00
csagan5 30b0e61732 Release 72.0.3626.73 2019-01-25 07:06:36 +01:00
csagan5 a7c33014b6 Add missing reference to AV1 patch 2019-01-24 20:15:35 +01:00
csagan5 abfa65cd17 Release 72.0.3626.68 2019-01-21 23:29:57 +01:00
csagan5 fedd7572d7 Fix link to GN_ARGS 2019-01-21 12:38:05 +01:00
csagan5 d5dede3dfa Release 71.0.3578.132 2019-01-18 20:36:34 +01:00
csagan5 a75b452332 Release 71.0.3578.123 2019-01-09 12:05:57 +01:00
csagan5 d22dbd7b38 Add missing revert patch to list 2019-01-06 14:09:50 +01:00
csagan5 79eae0ab09 Release 71.0.3578.120 2019-01-06 13:53:33 +01:00
csagan5 532c9c5c8b Update safe browsing patch for Android to fix issues found by nikolowry 2019-01-04 16:49:17 +01:00
Nikoandcsagan5 f5278822bb Update Remove-Sync-and-Translate-menu.patch to a git binary diff
Restore index meta to updated Remove-Sync-and-Translate-menu.patch
2019-01-04 11:14:33 +01:00
csagan5 a8d215db86 Patches cleanup for safe_browsing 2019-01-02 19:02:12 +01:00
csagan5 2e921bffd8 Mention AdGuard servers 2019-01-02 11:46:49 +01:00
csagan5 fb225cf638 Release 71.0.3578.115 2019-01-01 13:30:36 +01:00
csagan5 9c88a30ac3 Add link to wiki for SystemWebView instructions 2018-12-29 18:31:26 +01:00
csagan5 0c9047e26d Release 71.0.3578.110 2018-12-28 00:00:44 +01:00
csagan5 0d37a542ff Correct safe_browsing flag 2018-12-21 11:02:47 +01:00
csagan5 34b616ba9f Release 71.0.3578.104 2018-12-21 11:01:16 +01:00
csagan5 2e6d2a5c75 Mention GN_ARGS in README 2018-12-21 10:31:38 +01:00
csagan5 f963a09239 Release 71.0.3578.101 2018-12-18 23:53:07 +01:00
csagan5 fcbca7eb8c Release 71.0.3578.98 2018-12-16 07:30:03 +01:00
csagan5 65c50e3ec9 Release 71.0.3578.88 2018-12-13 07:22:42 +01:00
csagan5 6cf627f9d4 Release 71.0.3578.85 2018-12-06 11:31:38 +01:00
csagan5 0f2a48662d Release 71.0.3578.76 2018-12-04 08:46:51 +01:00
csagan5 ac44ac738f Release 71.0.3578.72 2018-11-27 09:42:36 +01:00
csagan5 02fad5a01f Updated CHANGELOG for release 70.0.3538.107 2018-11-17 09:38:39 +01:00
csagan5 b1c0e45b66 Release 70.0.3538.107 2018-11-16 21:18:39 +01:00
CarlandGitHub 1397b5e86a Update wording 2018-11-13 08:44:30 +01:00
csagan5 171c2f224a Mention removed contacts permission 2018-11-11 16:47:19 +01:00
csagan5 628ddf9b60 Release 70.0.3538.102 2018-11-11 16:44:36 +01:00
csagan5 8c3fcd08de Add F.A.Q. about de-googling 2018-11-09 22:10:36 +01:00
csagan5 375ac9bf8b Release 70.0.3538.95 2018-11-06 08:33:58 +01:00
csagan5 e1b9f9d68a Release 70.0.3538.95 2018-11-05 22:33:05 +01:00
csagan5 7f7fc80c7a Release 70.0.3538.87 2018-11-03 23:22:55 +01:00
csagan5 aa96e7ce43 Release 70.0.3538.83 2018-10-30 16:13:18 +01:00
csagan5 5c9d69ebcc Mention improvement for background video playback 2018-10-27 20:18:17 +02:00
csagan5 7469dbed21 Release 70.0.3538.80 2018-10-27 20:14:19 +02:00
csagan5 bc1f0b79f5 Release 70.0.3538.77 2018-10-24 17:32:08 +02:00
csagan5 4c2225259f More verbose lines about anti-fingerprinting mitigations 2018-10-23 08:40:27 +02:00
csagan5 2ba0013cc6 Release 70.0.3538.71 2018-10-21 17:17:21 +02:00
csagan5 b92ce6a3a2 Mention Vadim Pleshkov for the new logo; remove not-yet-fixed bug from changelog 2018-10-19 04:49:34 +02:00
csagan5 de80f36496 Release 70.0.3538.67 2018-10-17 18:22:21 +02:00
csagan5 ae8dce366b Release 69.0.3497.113 2018-09-30 12:11:13 +02:00
csagan5 750cafb50c Release 69.0.3497.109 2018-09-25 22:12:08 +02:00
csagan5 5cd90e8326 Updated README 2018-09-23 09:20:51 +02:00
csagan5 664cd20825 Release 69.0.3497.102 2018-09-23 09:04:17 +02:00
csagan5 aeb31bb4c5 Update version in issue template 2018-09-15 06:45:11 +02:00
csagan5 87eb08c088 Release 69.0.3497.91 2018-09-14 00:55:37 +02:00
CarlandGitHub e64cbbd005 Mention android version requirement 2018-09-05 16:47:22 +02:00
csagan5 4829eef707 Update F.A.Q. and information about WebRTC 2018-09-05 00:36:25 +02:00
csagan5 32978e4658 Release 69.0.3497.73 2018-09-05 00:24:29 +02:00
csagan5 f109246e47 Remove WIP patches 2018-09-01 12:12:06 +02:00
csagan5 b1bc96bbd9 Release 68.0.3440.126 2018-08-29 14:13:04 +02:00
csagan5 e3176b1868 Adjust text for maximum connections per host patch 2018-08-26 10:04:45 +02:00
csagan5 22dae5bff8 Mention new privacy features 2018-08-26 01:01:16 +02:00
csagan5 f21bb8a1d4 Release 68.0.3440.121 2018-08-26 00:55:23 +02:00
csagan5 3624b67e98 Add link to Chromium issue tracker and reporting guidelines in issue template 2018-08-22 23:02:28 +02:00
csagan5 eb4cbebe2a Release 68.0.3440.110 2018-08-14 23:50:50 +02:00
csagan5 3de200030f Mention import bookmarks feature; disable XDA downloads counter 2018-08-11 20:13:14 +02:00
csagan5 b35c5b2f0d Release 68.0.3440.90 2018-08-07 10:53:55 +02:00
csagan5 3cf1a58964 Completed patches update for 68.0.3440.87 2018-08-03 09:16:55 +02:00
csagan5 ef1fa37452 Mention chrome flag features 2018-08-03 00:37:24 +02:00
csagan5 7cb31f2c7a Mention Monochrome drop; mention F-Droid in Releases paragraph 2018-08-03 00:23:28 +02:00
csagan5 252be1a850 Mention export bookmarks feature 2018-08-03 00:19:48 +02:00
csagan5 4cef551b01 Release 68.0.3440.87 2018-08-03 00:09:32 +02:00
csagan5 dbc43b5c36 Split non-privacy related features 2018-08-01 13:14:57 +02:00
csagan5 92aba62fdf License svg sometimes fails, use a static one 2018-08-01 13:12:38 +02:00
csagan5 d8db805929 Release 68.0.3440.81 2018-07-29 14:10:58 +02:00
csagan5 9ea0219fce Mention F-Droid repository 2018-07-25 16:49:41 +02:00
csagan5 776d4f859e Release 68.0.3440.72 2018-07-25 15:37:57 +02:00
csagan5 7b7a1a4c75 Changed F.A.Q. about F-Droid 2018-07-16 21:21:20 +02:00
csagan5 ac218f929b Remove LiberaPay link 2018-07-16 19:24:46 +02:00
csagan5 efe90584df Fix hyperlink for uBlock Origin
Thanks to reddit user DearPhysics for noticing this
2018-07-11 01:46:35 +02:00
csagan5 1917072116 Added public GnuPG key and instructions about downloaded files verification. 2018-07-08 16:49:17 +02:00
csagan5 980053e78f Adding more F.A.Q.s, some other improvements 2018-07-07 14:31:59 +02:00
csagan5 ffa2849e2f Release 67.0.3396.107 2018-07-02 19:06:48 +02:00
csagan5 0e797ac643 Mention website of Iridium 2018-06-30 18:15:40 +02:00
csagan5 fc14caf48a Release 67.0.3396.101 2018-06-29 22:13:19 +02:00
csagan5 494b396f9e Change BTC donation address 2018-06-29 22:01:20 +02:00
csagan5 f007778846 Add donate button for LiberaPay 2018-06-29 14:10:29 +02:00
csagan5 b37f2f7b85 Typo fix 2018-06-22 08:47:32 +02:00
csagan5 10661f0b36 Release 67.0.3396.95 2018-06-22 08:46:05 +02:00
Carl ff372ffe53 Add bug report and feature request issue templates 2018-06-21 21:44:22 +02:00
csagan5 c33f289a21 Typo fix 2018-06-20 21:22:30 +02:00
csagan5 d9a4d2dc88 Release 67.0.3396.92 2018-06-20 21:18:07 +02:00
csagan5 6e86d3db21 Replace Patreon with LiberaPay 2018-06-18 23:07:12 +02:00
csagan5 b11d180a37 Update patch as per suggestions in #69 2018-06-18 20:26:45 +02:00
csagan5 032d2ef9f2 Adding new patch for experiments on canvas RGB randomisation 2018-06-18 09:11:23 +02:00
csagan5 1951b38c64 Add F.A.Q. about DNS-over-HTTPS 2018-06-17 23:55:34 +02:00
csagan5 41c5c0f0cf Move work-in-progress patches in subdirectory 2018-06-15 14:45:19 +02:00
csagan5 d0bab4a8da Added two work-in-progress patches for Incognito-Only feature 2018-06-15 14:43:45 +02:00
csagan5 ef0cca39ce Make features list more compact 2018-06-15 11:47:05 +02:00
csagan5 d94f36a0f7 Adding patches for release 67.0.3396.88 2018-06-15 11:27:35 +02:00
csagan5 3b1875efed Release 67.0.3396.88 2018-06-15 11:26:26 +02:00
csagan5 acba336f2e Add links for all related projects/credits 2018-06-12 14:04:27 +02:00
csagan5 61b6f9ee1d Align with home page 2018-06-11 21:27:04 +02:00
csagan5 210a14d7ed Release 67.0.3396.82 2018-06-11 18:55:40 +02:00
csagan5 91cc88eb37 Updated changelog 2018-06-09 11:12:45 +02:00
csagan5 4fc10e560b Release 67.0.3396.76 2018-06-08 23:59:52 +02:00
CarlandGitHub 01ecc5d52f Add link to Patreon 2018-06-04 20:53:49 +02:00
csagan5 7edcab0232 Add missing patch 2018-06-04 20:46:26 +02:00
csagan5 b4ada5bd99 Release 67.0.3396.72 2018-06-04 20:45:57 +02:00
csagan5 cfa7aca62a Add missing patch 2018-06-01 15:59:14 +02:00
csagan5 9eca1ff0b3 Release 67.0.3396.67 2018-06-01 15:58:52 +02:00
csagan5 aac51e0a5a Release 66.0.3359.202 2018-05-29 20:52:06 +02:00
csagan5 ea53ed1889 Release 66.0.3359.200 2018-05-26 11:13:29 +02:00
csagan5 780bb60137 Release 66.0.3359.196 2018-05-24 09:59:15 +02:00
csagan5 0fd859a0a6 Two new patches 2018-05-20 22:07:39 +02:00
csagan5 03645239a9 Release 66.0.3359.188 2018-05-20 22:07:14 +02:00
csagan5 ec5be6c048 Release 66.0.3359.161 2018-05-08 21:51:11 +02:00
csagan5 67651fbd75 Do not use special release svg 2018-05-05 20:12:38 +02:00
csagan5 6b758bfe0c Added patches for previous release 2018-05-05 20:11:18 +02:00
csagan5 49ae827092 Release 66.0.3359.148 2018-05-05 00:51:00 +02:00
csagan5 01ad976b53 Release 65.0.3325.230 2018-04-21 22:39:52 +02:00
csagan5 38a672a1ca Updated CHANGELOG 2018-04-12 09:47:34 +02:00
csagan5 a723e0e77d Release 65.0.3325.218 2018-04-12 09:38:58 +02:00
CarlandGitHub 3abb1ad2a3 Mention anti-fingerprinting mitigations 2018-04-05 10:54:31 +02:00
csagan5 d7e8ac9d86 Add latest AdBlock filters 2018-04-01 12:05:30 +02:00
csagan5 284c419d01 Release 65.0.3325.204 2018-04-01 11:43:20 +02:00
csagan5 2dca759091 Publish patches for next release 2018-04-01 11:29:50 +02:00
csagan5 11cebfadc5 Release 65.0.3325.198 2018-03-29 09:20:10 +02:00
csagan5 e4e56ed69c Updated README, added Goals 2018-03-28 18:12:04 +02:00
CarlandGitHub 7dcc27cb5e Mention SystemWebView 2018-03-28 01:43:32 +02:00
csagan5 8b494263c3 Release 65.0.3325.190 2018-03-26 09:25:48 +02:00
csagan5 4029e8843d Further improvements for fingerprinting mitigations 2018-03-26 00:07:08 +02:00
csagan5 85a9737c16 Adblock update 2018-03-24 16:04:45 +01:00
csagan5 247247a8ae Properly format commit messages of the patches
Add patch for canvas fingerprinting disable
2018-03-24 14:26:47 +01:00
csagan5 4bfb168982 Add F.A.Q. about root 2018-03-24 07:19:48 +01:00
csagan5 1652ef39b1 Updated README 2018-03-24 05:05:57 +01:00
csagan5 190ee08724 Mention Qwant 2018-03-24 05:04:34 +01:00
csagan5 367a2521a0 Patch to block battery API
Patch to block plugins enumeration
2018-03-24 04:32:56 +01:00
csagan5 6b1cbc612a Patches ready for 65.0.3325.176 2018-03-24 04:32:56 +01:00
CarlandGitHub d0f89298b8 Add another F.A.Q. 2018-03-20 21:55:55 +01:00
csagan5 9adbcaf262 Add F.A.Q. about HTTPS everywhere 2018-03-19 00:45:49 +01:00
csagan5 ef067cd35d Move F.A.Q. up 2018-03-18 23:44:13 +01:00
csagan5 e08ef39d4e Put images on same line 2018-03-18 23:35:50 +01:00
csagan5 33f1df4d26 Fix download images URL 2018-03-18 23:35:26 +01:00
csagan5 29e6c35657 Release 64.0.3282.204 2018-03-10 09:34:55 +01:00
csagan5 148f920a06 Add webRTC disabled to features list 2018-03-05 08:12:59 +01:00
csagan5 c5e38e8077 Release 64.0.3282.193 2018-03-05 01:16:47 +01:00
csagan5 94a0637fb1 Add XDA Labs downloads badge 2018-03-04 20:54:36 +01:00
csagan5 db00f3e4f4 Add downloads badge 2018-03-04 17:33:18 +01:00
csagan5 e664528479 All patches updated for 64.0.3282.182 2018-02-25 19:17:21 +01:00
csagan5 83a16596e6 Update F.A.Q. 2018-02-19 20:34:18 +01:00
csagan5 7c6a4374f5 Update features list 2018-02-18 22:47:15 +01:00
csagan5 5b2034ff45 Add patch to play videos in background 2018-02-18 22:43:29 +01:00
csagan5 6807e7b388 Fix some adblock filters 2018-02-18 22:13:51 +01:00
csagan5 71b5dc1b0b Changelog update 2018-02-15 13:39:22 +01:00
csagan5 2bda9e45f6 Updated Bromite patches for next release
Disable fetching of popular sites
2018-02-15 13:39:20 +01:00
csagan5 530626fd21 Add more ungoogled-chromium patches 2018-02-15 13:39:19 +01:00
csagan5 4e8b70cb64 Add Bromite-specific patches
First run, disable Omaha updates, H264 ARM optimizations, revert deep/shadow CSS changes
Rename patches with ordering prefix
Move all patches in single directory for easier tracking
2018-02-13 01:08:44 +01:00
csagan5 f4b6592dbc Latest release 64.0.3282.149 2018-02-07 20:05:21 +01:00
csagan5 0d6534d9eb Release 63.0.3239.150 2018-01-27 13:06:54 +01:00
csagan5 b869bb5b7b Specify minimum Android version as v4.1 2018-01-17 20:41:25 +01:00
csagan5 a6603ca827 Release 63.0.3239.144 2018-01-16 23:34:02 +01:00
csagan5 881b4199f4 Release 63.0.3239.129 2018-01-05 00:52:56 +01:00
csagan5 8f418f10d5 Anti-AMP patch v0.3.5 2017-12-27 23:29:20 +01:00
csagan5 7a436cad38 Latest anti-AMP patch and release notes 2017-12-23 02:27:52 +01:00
csagan5 ba521c5412 Update README 2017-12-16 12:28:56 +01:00
csagan5 23623ffc1f Add Google EN search engine
Update anti-AMP patch
2017-12-16 12:22:24 +01:00
csagan5 ca0a121f19 Updated patches for new release 2017-12-09 12:02:35 +01:00
166 changed files with 291667 additions and 44046 deletions
+4
View File
@@ -0,0 +1,4 @@
# These are supported funding model platforms
liberapay: csagan5
custom: https://www.bromite.org/#donate
+50
View File
@@ -0,0 +1,50 @@
---
name: Bug report
about: Create a Bromite bug report
---
### Bromite version
Version: `76.0...`
Arch: `arm` or `arm64` or `x86`
Android version: (example: `9.0`)
Device model: (example: `SM-G960UZKABST`)
### Is this bug about the SystemWebView?
Yes/No
No support for SystemWebView installations is provided.
### Is the bug reproducible with latest version?
Do not report bugs which are not reproducible with latest version
### Can the bug be reproduced with corresponding Chromium version?
Please pick the same version of Chromium as Bromite from here: https://github.com/bromite/chromium/releases
If the bug is reproducible then it might be a configuration issue or an upstream bug. Upstream bugs can be reported on the [Chromium issue tracker](https://bugs.chromium.org/p/chromium/issues/list) and do not forget to read [Chromium project bug reporting guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines) first.
### Is the bug a crash?
If yes then individuate and post the logcat dump (remove privacy sensitive information, if any), otherwise remove this section.
### Describe the bug
Write here a clear and concise description of the bug.
### Steps to reproduce the bug
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. Otherwise remove this section.
+23
View File
@@ -0,0 +1,23 @@
---
name: Feature request
about: Suggest a privacy-related idea for this project
---
### Is your feature request related to privacy?
Features that are not related to privacy are unlikely to be considered.
### Is there a patch available for this feature somewhere?
If yes then provide URL and license information.
### Describe the solution you would like
A clear and concise description of what you want to happen.
Do not ask "I would like feature X which is available in browser Y"; such issues are closed immediately.
### Describe alternatives you have considered
A clear and concise description of any alternative solutions or features you have considered.
+546 -3
View File
@@ -1,11 +1,554 @@
63.0.3239.78
# 80.0.3987.109
* restored GPU workaround for the ARM/ARM64 AImageReader crash (https://github.com/bromite/bromite/issues/445)
# 80.0.3987.95
* enable user-agent freeze (fixes https://github.com/bromite/bromite/issues/483)
* fix issue with AMP (fixes https://github.com/bromite/bromite/issues/488)
* fix crash on home page (fixes https://github.com/bromite/bromite/issues/484)
# 80.0.3987.78
* removed ungoogled-chromium patch for non-remote developer tools resources
* removed patch for 64-bit webview (it is now a default from upstream)
* removed patch for enabling dark mode menu entry by default (it is now a default from upstream)
* removed patch for enabling download rename by default (it is now a default from upstream)
* removed some redundant Iridium safe browsing patches
# 79.0.3945.139
* remove patch to automatically disable video decoding acceleration on Android 10+ and arm64
* fix referral headers bug in non-DoH requests (fixes https://github.com/bromite/bromite/issues/470)
* disable smart selection by default, enable web search in incognito mode
* disable DRM media pre-provisioning (fixes https://github.com/bromite/bromite/issues/471)
# 79.0.3945.123
* updated User-agent version
* increase minimum DoH timeout to 400ms (fixes https://github.com/bromite/bromite/issues/437)
# 79.0.3945.111
* automatically disable video decoding acceleration on Android 10+ and arm64
* restore enable-horizontal-tab-switcher flag
* remove non-working contextual search settings
* disable QUIC by default
* remove logging for DoH timeouts
# 79.0.3945.107
* always show cookies, javascript and ads site settings (fixes https://github.com/bromite/bromite/issues/133)
* remove global ads and javascript menu options
# 79.0.3945.100
* log timeout values for DoH
* enable DFM (fixes https://github.com/bromite/bromite/issues/441)
* updated User-agent version
# 79.0.3945.94
* removed patches which do not apply anymore (Widevine version punting, always show homepage settings, network errors UMA recording)
* removed split APKs support (Play integration)
* disabled password reuse functionality (Play integration)
* re-introduced minimal headers for DoH
* removed Startpage
* disable feed support
* updated User-agent version
# 78.0.3904.130
* support user-specified subresources filter URL (fixes https://github.com/bromite/bromite/issues/2)
* revert removal of flag for disabling pull-to-refresh effect
* fix crash when entering no DoH URL (fixes https://github.com/bromite/bromite/issues/430)
* added Peter Lowe's Ad and tracking server list (fixes https://github.com/bromite/bromite/issues/423)
* enabled dav1d_decoder
# 78.0.3904.119
* replace fixed DNS-over-HTTPS feature flag with user-customizable option
* fix background playback issue (fixes https://github.com/bromite/bromite/issues/424)
# 78.0.3904.105
* add flag to disable WebGL (fixes https://github.com/bromite/bromite/issues/411)
* more selective AMP sanitization (fixes https://github.com/bromite/bromite/issues/410)
* build optimizations to disable debug information
# 78.0.3904.93
* introduce flags to disable browser fingerprinting capabilities (fixes https://github.com/bromite/bromite/issues/402)
* major enhancements to AMP sanitization for news/images
* remove duplicate network predictions privacy setting
* disable some signed exchanges features
* ungoogled-chromium-android: patches to block all GCM/GMS/PlayServices integrations
* ungoogled-chromium: block all connection requests to substituted domains
* disable GVR services build flag
* disable HEAD requests for single words typed and clicked in Omnibar
* increase number of autocomplete matches from 5 to 10
* replace DoH probe domain with RIPE domain
* merged fixes for adblock/javascript menu text (https://github.com/bromite/bromite/pull/398)
* updated User-agent phone model and version
# 78.0.3904.72
* updated User-agent phone model and version
* fix network predictions bug (fixes https://github.com/bromite/bromite/issues/387)
* fix crash in settings (fixes https://github.com/bromite/bromite/issues/388)
# 78.0.3904.63
* replace Beta DoH service URL for Google (https://developers.google.com/speed/public-dns/docs/doh/migration)
* disable AImageReaderMediaPlayer until upstream bug is fixed (https://bugs.chromium.org/p/chromium/issues/detail?id=977583)
* disabled face detection provider
* removed non-working SystemWebView adblock patch (not working since v77)
* bring back some privacy options which upstream moved to Sync settings (fixes https://github.com/bromite/bromite/issues/383)
# 77.0.3865.104
* revert upstream commit for search privacy options and related translations removal (fixes https://github.com/bromite/bromite/issues/375)
* remove unused patch for enabling subresource filter on all sites
# 77.0.3865.95
# 77.0.3865.81
* use native subresource filtering instead of Bromite engine
* introduce Bromite AdBlockUpdate service
* keep using Bromite engine for SystemWebView
* enable subresource filter for all sites
* disable subresource filter popup
* enable IPv6 probing by default
* drop DnsTransaction default security level patch
* drop patch to visualize all type of extensions
* drop patches for Network Service
* enable CFI for all architectures except x86
# 76.0.3809.129
* disable CFI to fix x86 crashes (fixes https://github.com/bromite/bromite/issues/357)
# 76.0.3809.115
* disable search-ready omnibox by default
* disable unified consent
# 76.0.3809.100
* use default feature flags for autofill (fixes https://github.com/bromite/bromite/issues/348)
# 76.0.3809.91
# 76.0.3809.85
* add flag to toggle Network Service
* disable Network Service by default
* do not record UMA for network errors
* use fixed User Agent and Android OS version
* dropped patch for history requirement of user gesture
# 75.0.3770.139
* disable media router and remoting by default (fixes https://github.com/bromite/bromite/issues/281)
* enable CFI in GN build flags
# 75.0.3770.132
# 75.0.3770.109
* disable payment support by default
* disable background sync by default
* better patch from GrapheneOS/Vanadium for disabling sensors access (fixes https://github.com/bromite/bromite/issues/319)
* use new patch for content settings sensors allow/block (fixes https://github.com/bromite/bromite/issues/319)
* fix impossible values in Battery Status API (fixes https://github.com/bromite/bromite/issues/322)
# 75.0.3770.86
# 75.0.3770.82
# 75.0.3770.70
* enable changing default downloads storage location by default
* enable download rename option by default
* disable offline pages in the downloads home to be opened in CCT by default
* increase minimum SDK from 17 to 19 (fixes https://github.com/bromite/bromite/issues/310)
* prefs: disable SigninAllowed by default
* prefs: always prompt for download directory by default
* build: remove calling untrusted hooks
# 75.0.3770.53
* fix crash when downloading or from browser-initiated requests (fixes https://github.com/bromite/bromite/issues/309)
# 75.0.3770.50
* disable dynamic module loading
* more fixes to allow building for SDK 17
# 74.0.3729.162
* remove recent tabs signin
# 74.0.3729.154
# 74.0.3729.141
# 74.0.3729.122
* remove more unnecessary permissions
# 74.0.3729.106
* remove account/sync menu entries (fixes https://github.com/bromite/bromite/issues/285)
* fix failed debug builds
# 74.0.3729.86
* enable dark mode settings entry by default
* fix permission request for Play services on reboot (fixes https://github.com/bromite/bromite/issues/281)
# 74.0.3729.80
* increase minimum SDK version to 17 (Jelly Bean 4.2)
* dropped obsolete patch for hyperlink auditing disable
# 73.0.3683.107
* dropped patch to disable smooth scrolling
* fixed custom tab intents issue (fixes https://github.com/bromite/bromite/issues/279)
# 73.0.3683.105
* removed Fanboy's Annoyance List and Peter Lowe's adservers list from filters
# 73.0.3683.97
* dropped redundant patch to hide NTP tiles (use home page + about:blank)
# 73.0.3683.88
* add option to use home page as NTP
# 73.0.3683.82
* remove force home page button flag
* enable site per process isolation for devices with memory > 1GB
* use 64-bit processes for SystemWebView
* disable local field trials seed (redundant)
* fix patch for classic new tab page (redundant)
# 73.0.3683.79
* add missing Qwant engine from default engines list (fixes https://github.com/bromite/bromite/issues/262)
* DoH: include upstream patch for DNS secure mode
* DoH: enable DNS secure mode by default
# 73.0.3683.70
# 73.0.3683.61
* drop patches with functionality now available from upstream (DuckDuckGo and Qwant search engines, TLS 1.3 final)
* add only DuckDuckGo Lite search engine
* provide image URL for Qwant
* disable safe browsing subresource filter by default
* fix PAC URL support in proxy configuration
# 72.0.3626.120
* add support for resource type in adblock engine (fixes https://github.com/bromite/bromite/issues/115)
* adblock engine speed optimizations
* use adblock engine also in SystemWebView
* add back uBlock Origin and EasyList filters
* added Fanboy's Annoyance List
# 72.0.3626.119
* use AdGuard filters
* fixes for new tile rows usage
* re-introduce patch to hide NTP tiles
* disable NTP tile metrics collection
# 72.0.3626.114
* use 4 tile rows instead of 2 in the new tab page
* do not grant geolocation permission to default search engine (fixes https://github.com/bromite/bromite/issues/250)
# 72.0.3626.108
# 72.0.3626.99
# 72.0.3626.87
* update bookmarks view after import
# 72.0.3626.81
* serve empty content for blocked scripts/images (fixes https://github.com/bromite/bromite/issues/238)
* keep support of Jelly Bean (workaround for upstream https://bugs.chromium.org/p/chromium/issues/detail?id=923477)
# 72.0.3626.73
# 72.0.3626.68
* do not ignore save prompt for users without SD card (workaround for upstream wontfix https://bugs.chromium.org/p/chromium/issues/detail?id=916606)
* remove third_party/analytics patch (now fixed upstream in https://chromium.googlesource.com/chromium/src.git/+/64d6a56f094efbab83802c07ad3ddffa014f9903)
* AV1 codec support
# 71.0.3578.132
* add patches from AndroidHardening project (fixes https://github.com/bromite/bromite/issues/226)
# 71.0.3578.123
* disable jumbo builds (fixes https://github.com/bromite/bromite/issues/216 and https://github.com/bromite/bromite/issues/219)
* disable preview fetching
* do not consider Android Jelly Bean unsupported
# 71.0.3578.120
* fix breakage of translate quick answers by anti-AMP (fixes https://github.com/bromite/bromite/issues/210)
# 71.0.3578.115
* add AdGuard DNS-over-HTTPS option
* use green icon for SystemWebView
# 71.0.3578.110
# 71.0.3578.104
* fix AMP links sanitisation; have it working for news as well (fixes https://github.com/bromite/bromite/issues/202)
* revert upstream patch responsible for the broken save dialog prompt (upstream: https://bugs.chromium.org/p/chromium/issues/detail?id=916606)
# 71.0.3578.101
# 71.0.3578.98
* do not ask permissions for camera when importing bookmarks (fixes https://github.com/bromite/bromite/issues/200)
# 71.0.3578.88
* add proxy configuration page (see https://github.com/bromite/bromite/wiki/ProxyConfiguration)
* use more recent versions in User-Agent (fixes https://github.com/bromite/bromite/issues/156)
# 71.0.3578.85
* fix blurry adaptive icon (fixes https://github.com/bromite/bromite/issues/197)
# 71.0.3578.76
# 71.0.3578.72
* add flag to disable IPv6 probes
# 70.0.3538.107
* added adaptive icon (fixes https://github.com/bromite/bromite/issues/181)
* do not change randomisation at each call (fixes https://github.com/bromite/bromite/issues/177)
* do not enable #enable-scroll-anchor-serialization by default
# 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)
* remove contacts picker permission
# 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
* more builds for arm64 architecture
# 63.0.3239.144
* fixed invalid AdBlock filter rule blocking all connections (https://github.com/bromite/bromite/issues/26)
# 63.0.3239.129
# 63.0.3239.122
* disable webRTC completely (https://github.com/bromite/bromite/issues/9)
* hyperlinks sanitization fixed and now accessible from Google logo click
* now building and publishing SystemWebView apks
# 63.0.3239.118
* limit impact of AMP-removal to not break tabs (https://github.com/bromite/bromite/issues/20)
* fix DuckDuckGo and StartPage suggestions (https://github.com/bromite/bromite/issues/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
* 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)
# 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
+69
View File
@@ -0,0 +1,69 @@
# Frequently Asked Questions
## Does Google Sync/Translate/Data saver work?
No.
This is not a limitation of Bromite but of all Chromium-based projects in general, as general public is not allowed to use Google's APIs for free unless when using Chrome.
Additionally, these features would not be privacy-friendly.
## Does Bromite require root?
No.
## Is Bromite de-googled?
Yes, although this has not been verified (and hardly can be) under all situations; if you were to find connections to cloud-based services please report them via the issue tracker.
Bromite uses [ungoogled-chromium's python script](https://github.com/Eloston/ungoogled-chromium/blob/master/utils/domain_substitution.py) to disable URLs in the codebase since version `78.0.3904.93`.
Projects which follow a strict approach on this are [Iridium](https://iridiumbrowser.de/) and [Inox patchset](https://github.com/gcarq/inox-patchset).
## Does Bromite support DRM media?
Yes, in order to play protected/encrypted media content the browser will use Android's DRM media framework to automatically negotiate access (same as Chromium).
This means for example that requests to Android license servers will be performed (`www.googleapis.com`), see https://w3c.github.io/encrypted-media/#direct-individualization
To disable this functionality you should disable protected content playback from Site settings -> Multimedia.
## What is the SystemWebView?
It is the core component of Android for all web page visualizations. For example when you access a new wifi network and need to activate it, that is using the SystemWebView. If you do not know what it is then you do not need to install it.
See also [the wiki page](https://github.com/bromite/bromite/wiki/Installing-SystemWebView) for community-contributed installation instructions.
Ad-blocking was present and always enabled in the SystemWebView from version `72.0.3626.120` till version `77.0.3865.104`, when it stopped working due to [upstream NetworkService changes](https://docs.google.com/document/d/1TZEuPvr2KAbP4_TZpuuwtEEArQsyAkc2HDu68l66YwU/edit?ts=598244df#heading=h.ougoi5i6508y).
## How to enable DNS-over-HTTPS?
See [this wiki page](https://github.com/bromite/bromite/wiki/Enabling-DNS-over-HTTPS).
## 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.
The WebRTC functionality has always been using safe defaults to prevent leaks (disabled multiple routes and non-proxied UDP).
## Using Bromite will favour the monopoly of the Chromium/Blink engine, why do you develop and maintain Bromite?
In short, to show what a Chromium-based engine could do **for the user** if the user experience and needs were the main focus of modern browser design.
For an Android browser using an alternative engine see [Fennec F-Droid](https://f-droid.org/en/packages/org.mozilla.fennec_fdroid/).
## Does Bromite support extensions?
No; Bromite will support extensions only if upstream (Chromium) does, or similarly another project maintains the patch and functionality.
## Why do push notifications not work on this website?
The [Chromium Blink engine](https://www.chromium.org/blink) uses [GCM](https://en.wikipedia.org/wiki/Google_Cloud_Messaging) to deliver messages
when websites use the [Push API](https://w3c.github.io/push-api/); this will not work in Bromite because cloud integrations are disabled (GCM in this case).
[ServiceWorker notifications](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification) do work instead since they use
[android.app.Notification](https://developer.android.com/guide/topics/ui/notifiers/notifications).
+107 -24
View File
@@ -1,63 +1,146 @@
# 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" />
Bromite is [Chromium](https://www.chromium.org/Home) plus some patches for ad blocking and enhanced privacy.
Bromite is only available for Android v4 and above.
Bromite is only available for Android v4.4 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" />
For the Frequently Asked Questions see [F.A.Q.](./FAQ.md).
For documentation see the [wiki](https://github.com/bromite/bromite/wiki).
# 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
Please donate to support development of Bromite and the costs for the build system.
Support development with a donation of 3 EUR: [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2)
[&rarr; Support development with a donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2): [![paypal](https://www.bromite.org/assets/img/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JP3XTQPVRNET2)
Support development with a free amount donation: [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](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
* customizable adblock filters via user-provided URL
* remove click-tracking and AMP from search results
* DNS-over-HTTPS support with any valid IETF DoH endpoint
* always-incognito mode
* disable all field trials permanently
* disable [QUIC](https://en.wikipedia.org/wiki/QUIC) by default
* disable smart search by default, allow web search from incognito mode
* always-visible cookies, javascript and ads site settings
* remove Play integration binary blobs
* use [CFI](https://en.wikipedia.org/wiki/Control-flow_integrity) on all architectures except x86
* disable media router and remoting by default
* disable dynamic module loading
* enable site-per-process isolation for all devices with memory > 1GB
* completely remove safe browsing and other privacy-unfriendly features
* [proxy configuration page](https://github.com/bromite/bromite/wiki/ProxyConfiguration) with PAC and custom proxy lists support
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines available by default
* flags to disable custom intents and clear session on exit
* flags to toggle anti-fingerprinting mitigations for canvas, audio, client rects, webGL and sensor APIs
* use frozen User-Agent to conceal real model and browser version
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
* security enhancement patches from [GrapheneOS](https://github.com/GrapheneOS) project
## 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 Chrome optimizations
* [AV1 codec support](https://github.com/bromite/bromite/wiki/AV1-support)
* [dav1d](https://code.videolan.org/videolan/dav1d) decoder enabled by default
* built with official speed optimizations
* increase number of autocomplete matches from 5 to 10
* allow changing default download storage location
* do not ignore save prompt for users without SD cards
* disable articles and increase number of icons on new tab page
# F.A.Q.
You can inspect all functionality/privacy changes by reading the [patches](https://github.com/bromite/bromite/tree/master/build/patches) and/or the [CHANGELOG](./CHANGELOG.md).
## Does Google Sync work?
No. You would have to use your own API keys, which I do not know how you could pass via environment variables on Android.
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.
### Flags
Flags which have been retired from upstream Chromium but are still available in Bromite.
* `#enable-horizontal-tab-switcher`
* `#pull-to-refresh`
* `#enable-search-ready-omnibox`
# Privacy limitations
Bromite's privacy features, including anti-fingerprinting mitigations (which are not comprehensive), **are not to be considered useful for journalists and people living in countries with freedom limitations**, please look at [Tor Browser](https://www.torproject.org/download/) in such cases.
# 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 highlight 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 19 and 21; [Bromite SystemWebView](https://www.bromite.org/system_web_view) is provided as well (SDK21+).
For every Bromite build you can always find a matching [vanilla Chromium](https://www.bromite.org/chromium) build which is used for example to verify which issues are specific to Bromite or not.
All official releases are also available through the [official third-party F-Droid repository](https://www.bromite.org/fdroid).
## 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
```
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).
# 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.
The GN args used to build Bromite are available here: [GN_ARGS](./build/GN_ARGS).
The patches are to be applied second the order specified in the `bromite_patches_list.txt` file (you can use `git am`).
## How to build the filters
See upstream documentation: https://github.com/chromium/chromium/blob/master/components/subresource_filter/FILTER_LIST_GENERATION.md
Bromite uses an unindexed filter file, which is periodically published at https://github.com/bromite/filters
# Credits
* [Chromium project](https://www.chromium.org/Home) and developers
* [Iridium project](https://github.com/iridium-browser) for some patches
* [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) for some patches
* [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)
* nochromo for the original adblock patch
* AdBlock Plus, uBlock, EasyList and EasyPrivacy for the compilation of original adblock patch
* [ungoogled-chromium-android](https://github.com/ungoogled-software/ungoogled-chromium-android) for some patches
* [GrapheneOS](https://github.com/GrapheneOS) for some security patches
* [Inox patchset](https://github.com/gcarq/inox-patchset) for some patches (via ungoogled-chromium)
* [Brave Browser](https://github.com/brave/browser-android-tabs) for some patches
* [Vadim Pleshkov](http://vadimpleshkov.me/) for Bromite's logo
# Filters credits
* [EasyList](https://easylist.to/#easylist)
* [EasyPrivacy](https://easylist.to/#easyprivacy)
* [uBlock Origin](https://github.com/uBlockOrigin)
* [Peter Lowe's Ad and tracking server list](https://pgl.yoyo.org/adservers/)
# License
+38
View File
@@ -0,0 +1,38 @@
android_channel="stable"
blink_symbol_level=1
dcheck_always_on=false
debuggable_apks=false
dfmify_dev_ui=false
disable_android_lint=true
disable_autofill_assistant_dfm=true
disable_tab_ui_dfm=true
enable_av1_decoder=true
enable_dav1d_decoder=true
enable_feed_in_chrome=false
enable_gvr_services=false
enable_hangout_services_extension=false
enable_iterator_debugging=false
enable_mdns=false
enable_mse_mpeg2ts_stream_parser=true ffmpeg_branding="Chrome" proprietary_codecs=true
enable_nacl=false
enable_nacl_nonsfi=false
enable_remoting=false
enable_reporting=false
enable_resource_whitelist_generation=false
enable_vr=false
fieldtrial_testing_like_official_build=true
icu_use_data_file=true
is_cfi=true
is_component_build=false
is_debug=false
is_official_build=true
rtc_build_examples=false
safe_browsing_mode=0
symbol_level=1
target_os="android"
use_debug_fission=true
use_errorprone_java_compiler=false
use_jumbo_build=false
use_official_google_api_keys=false
use_openh264=true chrome_pgo_phase=0 full_wpo_on_official=true
use_sysroot=false
+139
View File
@@ -0,0 +1,139 @@
Disable-third-party-cookies-by-default.patch
Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
Restore-classic-new-tab-page.patch
Always-use-new-tab-page-for-default-home-page.patch
Always-allow-partner-customisation.patch
battery_status_service-disable-more-privacy-nightmares.patch
Battery-API-return-nothing.patch
google-cloud-messaging-disable-experiment-status-check.patch
updater-disable-updater-pings.patch
prefs-only-keep-cookies-until-exit.patch
Remove-EV-certificates.patch
promo-disable-Google-promotion-fetching.patch
Disable-omission-of-URL-elements-in-Omnibox.patch
Modify-default-preferences.patch
Do-not-store-passwords-by-default.patch
Disable-NTP-remote-suggestions-by-default.patch
Disable-references-to-fonts.googleapis.com.patch
Disable-WebRTC-by-default.patch
Never-send-any-crash-upload-data.patch
Hide-send-reports-checkbox.patch
Never-fetch-popular-sites.patch
ungoogled-chromium-Disable-webRTC-log-uploader.patch
ungoogled-chromium-Disable-untraceable-URLs.patch
ungoogled-chromium-Disable-translate-integration.patch
ungoogled-chromium-Disable-profile-avatar-downloading.patch
ungoogled-chromium-Disable-intranet-redirect-detector.patch
ungoogled-chromium-Disable-Google-host-detection.patch
ungoogled-chromium-Disable-GCM.patch
ungoogled-chromium-Disable-Gaia.patch
ungoogled-chromium-Disable-domain-reliability.patch
ungoogled-chromium-Disable-Network-Time-Tracker.patch
Disable-safe-browsing.patch
Skip-the-first-run-and-metrics.patch
Disable-all-promo-dialogs.patch
Disable-sync-services-menu-entry.patch
Remove-signin-and-data-saver-integrations.patch
Hide-passwords-manager-link.patch
Disable-Omaha-update-checks.patch
Disable-update-scheduler.patch
Add-English-only-search-engine.patch
Add-DuckDuckGo-Lite-search-engine.patch
Add-Qwant-search-engine.patch
Fix-crash-when-accessing-page-info-site-settings.patch
openH264-enable-ARM-ARM64-optimizations.patch
Switch-to-fstack-protector-strong.patch
Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
build-remove-calling-untrusted-hooks.patch
AV1-codec-support.patch
Inject-scripts-for-AMP-tracking-ads-and-video-functionality.patch
Allow-playing-audio-in-background.patch
Add-flag-to-control-video-playback-resume-feature.patch
Open-YouTube-links-in-Bromite.patch
Add-exit-menu-item.patch
Remove-help-menu-item.patch
AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch
Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
Add-flags-to-disable-device-motion-and-orientation-APIs.patch
Disable-metrics-on-all-I-O-threads.patch
Always-respect-async-dns-flag-regardless-of-SDK-version.patch
Add-flag-to-configure-maximum-connections-per-host.patch
Add-site-settings-option-for-session-only-cookies.patch
Add-bookmark-import-export-actions.patch
Disable-promos-displayed-in-bookmarks-manager.patch
Add-an-always-incognito-mode.patch
Add-custom-tab-intents-privacy-option.patch
Add-option-to-not-persist-tabs-across-sessions.patch
Disable-fetching-of-all-field-trials.patch
Disable-seed-based-field-trials.patch
Disable-plugins-enumeration.patch
net-cert-increase-default-key-length-for-newly-generated-RSA-keys.patch
dns-send-IPv6-connectivity-probes-to-RIPE-DNS.patch
profile-resetter-do-not-tick-send-settings-by-default.patch
browser-ui-disable-warning-about-missing-API-keys.patch
autofill-disable-autofill-download-manager.patch
first_run-deactivate-autoupdate-globally.patch
translate-disable-fetching-of-translate-languages-from-server.patch
kill-TOS-and-metrics-opt-out.patch
kill-Translate.patch
kill-Vision.patch
kill-Location-fall-back-to-system.patch
kill-Auth.patch
Remove-dependency-on-com.google.android.gms.auth.patch
kill-GCM.patch
Remove-dependency-on-com.google.android.gcm.patch
Remove-dependency-on-com.google.android.gms.gcm.patch
Remove-dependency-on-com.google.android.play.patch
Remove-dependency-on-com.google.android.gms.vision-com.google.android.gms.clearcut-com.google.android.gms.phenotype.patch
Remove-dependency-on-com.google.android.gms.flags-com.google.android.gms.location.places-com.google.android.gms.stats.patch
Remove-dependency-on-com.google.android.gms.fido-com.google.android.gms.iid-com.google.android.gms.instantapps-com.google.android.gms.location.patch
Remove-dependency-on-com.google.android.gms.cast.patch
Remove-dependency-on-com.google.android.gms.common-auth-signin-dynamic-com.google.android.gms.tasks.patch
Remove-SMS-integration.patch
Allow-website-sign-in-without-account-sign-in.patch
Offer-builtin-autocomplete-for-chrome-flags.patch
Do-not-grant-notifications-to-default-search-engine.patch
Add-flag-to-disable-IPv6-probes.patch
Add-a-proxy-configuration-page.patch
Do-not-ignore-download-location-prompt-setting.patch
Disable-previews-by-default.patch
Use-4-tile-rows-never-show-logo.patch
Disable-metrics-collection-for-NTP-tiles.patch
Enable-site-per-process-isolation-for-devices-with-enough-memory.patch
Add-option-to-use-home-page-as-NTP.patch
Disable-dynamic-module-loading.patch
prefs-disable-signinallowed-by-default.patch
prefs-always-prompt-for-download-directory-by-default.patch
Disable-offline-pages-in-the-downloads-home-to-be-opened-in-CCT-by-default.patch
Enable-changing-default-downloads-storage-location-by-default.patch
disable-payment-support-by-default.patch
disable-background-sync-by-default.patch
disable-sensors-access-site-setting-by-default.patch
Disable-media-router-and-remoting-by-default.patch
Revert-Cleanup-Search-Ready-Omnibox-flag-since-it-has-launched.patch
Disable-search-ready-omnibox-by-default.patch
disable-AdsBlockedInfoBar.patch
Bromite-AdBlockUpdaterService.patch
Add-option-to-configure-the-ad-blocker-filters-URL.patch
Restore-GPU-bug-blacklist-for-AImageReader-on-ARM-CPUs.patch
Replace-DoH-probe-domain-with-RIPE-domain.patch
Increase-number-of-autocomplete-matches-from-5-to-10.patch
Disable-HEAD-requests-for-single-word-Omnibar-searches.patch
Block-all-connection-requests-with-qjz9zk-in-the-domain-name-or-with-a-trk-scheme.patch
Disable-some-signed-exchange-features.patch
Add-flag-to-disable-WebGL.patch
Add-user-setting-for-DNS-over-HTTPS-DoH-custom-URL.patch
Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch
Revert-flags-remove-disable-pull-to-refresh-effect.patch
Use-dummy-DFM-installer.patch
Disable-password-reuse-detection-on-android.patch
Allow-building-without-feed-support.patch
Disable-addresses-autofill-by-default.patch
Always-show-site-settings-for-cookies-javascript-and-ads.patch
Do-not-enable-QUIC-by-default.patch
Restore-enable-horizontal-tab-switcher-flag.patch
Use-a-minimum-DoH-timeout-of-400ms.patch
Disable-DRM-media-origin-IDs-preprovisioning.patch
Disable-smart-selection-by-default.patch
Enable-user-agent-freeze-by-default.patch
Automated-domain-substitution.patch
+6
View File
@@ -0,0 +1,6 @@
Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
AV1-codec-support.patch
Switch-to-fstack-protector-strong.patch
Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
Disable-password-reuse-detection-on-android.patch
Allow-building-without-feed-support.patch
+234
View File
@@ -0,0 +1,234 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 16 Dec 2018 15:24:19 +0100
Subject: AV1 codec support
libaom build fixes (requires -fPIC)
Report AV1 as playable on Android
---
media/base/mime_util_internal.cc | 6 +++++-
third_party/libaom/BUILD.gn | 6 ++++--
third_party/libaom/libaom_srcs.gni | 5 +++++
.../config/linux/arm-neon-cpu-detect/config/aom_config.asm | 2 +-
.../config/linux/arm-neon-cpu-detect/config/aom_config.h | 2 +-
.../source/config/linux/arm-neon/config/aom_config.asm | 2 +-
.../libaom/source/config/linux/arm-neon/config/aom_config.h | 2 +-
.../libaom/source/config/linux/arm/config/aom_config.asm | 2 +-
.../libaom/source/config/linux/arm/config/aom_config.h | 2 +-
.../libaom/source/config/linux/arm64/config/aom_config.asm | 2 +-
.../libaom/source/config/linux/arm64/config/aom_config.h | 2 +-
.../source/config/linux/generic/config/aom_config.asm | 2 +-
.../libaom/source/config/linux/generic/config/aom_config.h | 2 +-
.../libaom/source/config/linux/x64/config/aom_config.asm | 2 +-
.../libaom/source/config/linux/x64/config/aom_config.h | 2 +-
15 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/media/base/mime_util_internal.cc b/media/base/mime_util_internal.cc
--- a/media/base/mime_util_internal.cc
+++ b/media/base/mime_util_internal.cc
@@ -560,9 +560,13 @@ bool MimeUtil::IsCodecSupportedOnAndroid(
case THEORA:
return false;
- // AV1 is not supported on Android yet.
+ // AV1 is supported on Android.
case AV1:
+#if BUILDFLAG(ENABLE_AV1_DECODER)
+ return true;
+#else
return false;
+#endif
// ----------------------------------------------------------------------
// The remaining codecs may be supported depending on platform abilities.
diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn
--- a/third_party/libaom/BUILD.gn
+++ b/third_party/libaom/BUILD.gn
@@ -74,7 +74,7 @@ if (enable_libaom_decoder) {
sources = aom_dsp_common_asm_sse2
sources += aom_dsp_common_asm_ssse3
sources += aom_ports_asm_x86
- defines = [ "CHROMIUM" ]
+ defines = [ "CHROMIUM", "PIC" ]
include_dirs = libaom_include_dirs
}
@@ -158,7 +158,7 @@ if (enable_libaom_decoder) {
configs += [ "//build/config/compiler:no_chromium_code" ]
if (current_cpu == "arm") {
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
- cflags = [ "-mfpu=neon" ]
+ cflags = [ "-mfpu=neon", "-fPIC" ]
}
configs += [ ":libaom_config" ]
@@ -203,6 +203,8 @@ if (enable_libaom_decoder) {
if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" ||
cpu_arch_full == "arm-neon-cpu-detect") {
deps += [ ":libaom_intrinsics_neon" ]
+ # will detect CPU
+ sources += aom_ports_arm_sources
}
if (is_android) {
deps += [ "//third_party/android_ndk:cpu_features" ]
diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
--- a/third_party/libaom/libaom_srcs.gni
+++ b/third_party/libaom/libaom_srcs.gni
@@ -488,6 +488,11 @@ aom_mem_sources = [
aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
+aom_ports_arm_sources = [
+ "//third_party/libaom/source/libaom/aom_ports/arm_cpudetect.c",
+ "//third_party/libaom/source/libaom/aom_ports/arm.h",
+ ]
+
aom_rtcd_sources = [
"//third_party/libaom/source/libaom/aom_dsp/aom_dsp_rtcd_defs.pl",
"//third_party/libaom/source/libaom/aom_dsp/aom_dsp_rtcd.c",
diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
--- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.asm
@@ -45,7 +45,7 @@ CONFIG_MULTITHREAD equ 1
CONFIG_NORMAL_TILE_MODE equ 1
CONFIG_ONE_PASS_SVM equ 0
CONFIG_OS_SUPPORT equ 1
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_SHARED equ 0
diff --git a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
--- a/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm-neon-cpu-detect/config/aom_config.h
@@ -47,7 +47,7 @@
#define CONFIG_NORMAL_TILE_MODE 1
#define CONFIG_ONE_PASS_SVM 0
#define CONFIG_OS_SUPPORT 1
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_SHARED 0
diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
--- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.asm
@@ -45,7 +45,7 @@ CONFIG_MULTITHREAD equ 1
CONFIG_NORMAL_TILE_MODE equ 1
CONFIG_ONE_PASS_SVM equ 0
CONFIG_OS_SUPPORT equ 1
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_RUNTIME_CPU_DETECT equ 0
CONFIG_SHARED equ 0
diff --git a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
--- a/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm-neon/config/aom_config.h
@@ -47,7 +47,7 @@
#define CONFIG_NORMAL_TILE_MODE 1
#define CONFIG_ONE_PASS_SVM 0
#define CONFIG_OS_SUPPORT 1
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_SHARED 0
diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.asm b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
--- a/third_party/libaom/source/config/linux/arm/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm/config/aom_config.asm
@@ -45,7 +45,7 @@ CONFIG_MULTITHREAD equ 1
CONFIG_NORMAL_TILE_MODE equ 1
CONFIG_ONE_PASS_SVM equ 0
CONFIG_OS_SUPPORT equ 1
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_RUNTIME_CPU_DETECT equ 0
CONFIG_SHARED equ 0
diff --git a/third_party/libaom/source/config/linux/arm/config/aom_config.h b/third_party/libaom/source/config/linux/arm/config/aom_config.h
--- a/third_party/libaom/source/config/linux/arm/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm/config/aom_config.h
@@ -47,7 +47,7 @@
#define CONFIG_NORMAL_TILE_MODE 1
#define CONFIG_ONE_PASS_SVM 0
#define CONFIG_OS_SUPPORT 1
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_SHARED 0
diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
--- a/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.asm
@@ -45,7 +45,7 @@ CONFIG_MULTITHREAD equ 1
CONFIG_NORMAL_TILE_MODE equ 1
CONFIG_ONE_PASS_SVM equ 0
CONFIG_OS_SUPPORT equ 1
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_RUNTIME_CPU_DETECT equ 0
CONFIG_SHARED equ 0
diff --git a/third_party/libaom/source/config/linux/arm64/config/aom_config.h b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
--- a/third_party/libaom/source/config/linux/arm64/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/arm64/config/aom_config.h
@@ -47,7 +47,7 @@
#define CONFIG_NORMAL_TILE_MODE 1
#define CONFIG_ONE_PASS_SVM 0
#define CONFIG_OS_SUPPORT 1
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_RUNTIME_CPU_DETECT 0
#define CONFIG_SHARED 0
diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.asm b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
--- a/third_party/libaom/source/config/linux/generic/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/generic/config/aom_config.asm
@@ -45,7 +45,7 @@ CONFIG_MULTITHREAD equ 1
CONFIG_NORMAL_TILE_MODE equ 1
CONFIG_ONE_PASS_SVM equ 0
CONFIG_OS_SUPPORT equ 1
-CONFIG_PIC equ 0
+CONFIG_PIC equ 1
CONFIG_RD_DEBUG equ 0
CONFIG_RUNTIME_CPU_DETECT equ 1
CONFIG_SHARED equ 0
diff --git a/third_party/libaom/source/config/linux/generic/config/aom_config.h b/third_party/libaom/source/config/linux/generic/config/aom_config.h
--- a/third_party/libaom/source/config/linux/generic/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/generic/config/aom_config.h
@@ -47,7 +47,7 @@
#define CONFIG_NORMAL_TILE_MODE 1
#define CONFIG_ONE_PASS_SVM 0
#define CONFIG_OS_SUPPORT 1
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_SHARED 0
diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.asm b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
--- a/third_party/libaom/source/config/linux/x64/config/aom_config.asm
+++ b/third_party/libaom/source/config/linux/x64/config/aom_config.asm
@@ -35,7 +35,7 @@
%define CONFIG_NORMAL_TILE_MODE 1
%define CONFIG_ONE_PASS_SVM 0
%define CONFIG_OS_SUPPORT 1
-%define CONFIG_PIC 0
+%define CONFIG_PIC 1
%define CONFIG_RD_DEBUG 0
%define CONFIG_RUNTIME_CPU_DETECT 1
%define CONFIG_SHARED 0
diff --git a/third_party/libaom/source/config/linux/x64/config/aom_config.h b/third_party/libaom/source/config/linux/x64/config/aom_config.h
--- a/third_party/libaom/source/config/linux/x64/config/aom_config.h
+++ b/third_party/libaom/source/config/linux/x64/config/aom_config.h
@@ -47,7 +47,7 @@
#define CONFIG_NORMAL_TILE_MODE 1
#define CONFIG_ONE_PASS_SVM 0
#define CONFIG_OS_SUPPORT 1
-#define CONFIG_PIC 0
+#define CONFIG_PIC 1
#define CONFIG_RD_DEBUG 0
#define CONFIG_RUNTIME_CPU_DETECT 1
#define CONFIG_SHARED 0
--
2.17.1
@@ -0,0 +1,613 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 12 Oct 2017 11:06:18 +0200
Subject: Add DuckDuckGo Lite search engine
---
.../search_engines/prepopulated_engines.json | 10 ++
.../search_engines/search_engine_type.h | 1 +
.../template_url_prepopulate_data.cc | 122 +++++++++---------
3 files changed, 75 insertions(+), 58 deletions(-)
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
--- a/components/search_engines/prepopulated_engines.json
+++ b/components/search_engines/prepopulated_engines.json
@@ -91,6 +91,16 @@
"id": 68
},
+ "duckduckgo_light": {
+ "name": "DuckDuckGo Light",
+ "keyword": "duckduckgo.com/lite",
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
+ "search_url": "https://duckduckgo.com/lite/?q={searchTerms}",
+ "suggest_url": "https://duckduckgo.com/ac/?q={searchTerms}&type=list",
+ "type": "SEARCH_ENGINE_DUCKDUCKGOLIGHT",
+ "id": 12
+ },
+
"duckduckgo": {
"name": "DuckDuckGo",
"keyword": "duckduckgo.com",
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_COCCOC,
SEARCH_ENGINE_DUCKDUCKGO,
+ SEARCH_ENGINE_DUCKDUCKGOLIGHT,
SEARCH_ENGINE_PARSIJOO,
SEARCH_ENGINE_QWANT,
SEARCH_ENGINE_GIVERO,
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -35,6 +35,7 @@ const PrepopulatedEngine* const engines_default[] = {
&googleen, &google,
&bing,
&yahoo,
+ &duckduckgo, &duckduckgo_light,
};
// Note, the below entries are sorted by country code, not the name in comment.
@@ -44,7 +45,7 @@ const PrepopulatedEngine* const engines_AE[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Albania
@@ -60,7 +61,7 @@ const PrepopulatedEngine* const engines_AR[] = {
&googleen, &google,
&bing,
&yahoo_ar,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Austria
@@ -68,7 +69,7 @@ const PrepopulatedEngine* const engines_AT[] = {
&googleen, &google,
&bing,
&yahoo_at,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Australia
@@ -76,7 +77,7 @@ const PrepopulatedEngine* const engines_AU[] = {
&googleen, &google,
&bing,
&yahoo_au,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Bosnia and Herzegovina
@@ -92,7 +93,7 @@ const PrepopulatedEngine* const engines_BE[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Bulgaria
@@ -124,7 +125,7 @@ const PrepopulatedEngine* const engines_BN[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Bolivia
@@ -132,7 +133,7 @@ const PrepopulatedEngine* const engines_BO[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Brazil
@@ -140,7 +141,7 @@ const PrepopulatedEngine* const engines_BR[] = {
&googleen, &google,
&bing,
&yahoo_br,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Belarus
@@ -157,11 +158,12 @@ const PrepopulatedEngine* const engines_BZ[] = {
&bing,
&yahoo,
&duckduckgo,
+ &duckduckgo_light,
};
// Canada
const PrepopulatedEngine* const engines_CA[] = {
- &googleen, &google, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo,
+ &googleen, &google, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo, &duckduckgo_light,
};
// Switzerland
@@ -169,6 +171,7 @@ const PrepopulatedEngine* const engines_CH[] = {
&googleen, &google,
&bing,
&duckduckgo,
+ &duckduckgo_light,
&yahoo_ch,
};
@@ -177,7 +180,7 @@ const PrepopulatedEngine* const engines_CL[] = {
&googleen, &google,
&bing,
&yahoo_cl,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// China
@@ -190,7 +193,7 @@ const PrepopulatedEngine* const engines_CO[] = {
&googleen, &google,
&yahoo_co,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Costa Rica
@@ -198,7 +201,7 @@ const PrepopulatedEngine* const engines_CR[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Czech Republic
@@ -214,7 +217,7 @@ const PrepopulatedEngine* const engines_DE[] = {
&googleen, &google,
&bing,
&yahoo_de,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Denmark
@@ -222,7 +225,7 @@ const PrepopulatedEngine* const engines_DK[] = {
&googleen, &google,
&bing,
&yahoo_dk,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Dominican Republic
@@ -230,7 +233,7 @@ const PrepopulatedEngine* const engines_DO[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Algeria
@@ -246,7 +249,7 @@ const PrepopulatedEngine* const engines_EC[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Estonia
@@ -270,7 +273,7 @@ const PrepopulatedEngine* const engines_ES[] = {
&googleen, &google,
&bing,
&yahoo_es,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Finland
@@ -278,7 +281,7 @@ const PrepopulatedEngine* const engines_FI[] = {
&googleen, &google,
&bing,
&yahoo_fi,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Faroe Islands
@@ -286,7 +289,7 @@ const PrepopulatedEngine* const engines_FO[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// France
@@ -302,7 +305,7 @@ const PrepopulatedEngine* const engines_GB[] = {
&googleen, &google,
&bing,
&yahoo_uk,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Greece
@@ -310,7 +313,7 @@ const PrepopulatedEngine* const engines_GR[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Guatemala
@@ -318,7 +321,7 @@ const PrepopulatedEngine* const engines_GT[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Hong Kong
@@ -334,7 +337,7 @@ const PrepopulatedEngine* const engines_HN[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Croatia
@@ -342,7 +345,7 @@ const PrepopulatedEngine* const engines_HR[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Hungary
@@ -350,7 +353,7 @@ const PrepopulatedEngine* const engines_HU[] = {
&googleen, &google,
&yahoo,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Indonesia
@@ -358,7 +361,7 @@ const PrepopulatedEngine* const engines_ID[] = {
&googleen, &google,
&yahoo_id,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Ireland
@@ -366,7 +369,7 @@ const PrepopulatedEngine* const engines_IE[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Israel
@@ -382,7 +385,7 @@ const PrepopulatedEngine* const engines_IN[] = {
&googleen, &google,
&yahoo_in,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Iraq
@@ -405,7 +408,7 @@ const PrepopulatedEngine* const engines_IS[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Italy
@@ -413,7 +416,7 @@ const PrepopulatedEngine* const engines_IT[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Jamaica
@@ -421,7 +424,7 @@ const PrepopulatedEngine* const engines_JM[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Jordan
@@ -445,7 +448,7 @@ const PrepopulatedEngine* const engines_KE[] = {
&googleen, &google,
&yahoo,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// South Korea
@@ -478,6 +481,7 @@ const PrepopulatedEngine* const engines_LB[] = {
&bing,
&yahoo,
&duckduckgo,
+ &duckduckgo_light,
};
// Liechtenstein
@@ -485,6 +489,7 @@ const PrepopulatedEngine* const engines_LI[] = {
&googleen, &google,
&bing,
&duckduckgo,
+ &duckduckgo_light,
&yahoo,
};
@@ -500,7 +505,7 @@ const PrepopulatedEngine* const engines_LT[] = {
const PrepopulatedEngine* const engines_LU[] = {
&googleen, &google,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
&yahoo,
};
@@ -533,7 +538,7 @@ const PrepopulatedEngine* const engines_MC[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Moldova
@@ -541,7 +546,7 @@ const PrepopulatedEngine* const engines_MD[] = {
&googleen, &google,
&yandex_ru,
&mail_ru,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Montenegro
@@ -557,7 +562,7 @@ const PrepopulatedEngine* const engines_MK[] = {
&googleen, &google,
&yahoo,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Mexico
@@ -565,7 +570,7 @@ const PrepopulatedEngine* const engines_MX[] = {
&googleen, &google,
&bing,
&yahoo_mx,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Malaysia
@@ -581,7 +586,7 @@ const PrepopulatedEngine* const engines_NI[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Netherlands
@@ -589,7 +594,7 @@ const PrepopulatedEngine* const engines_NL[] = {
&googleen, &google,
&bing,
&yahoo_nl,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Norway
@@ -598,13 +603,14 @@ const PrepopulatedEngine* const engines_NO[] = {
&bing,
&yahoo,
&duckduckgo,
+ &duckduckgo_light,
};
// New Zealand
const PrepopulatedEngine* const engines_NZ[] = {
&googleen, &google,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
&yahoo_nz,
};
@@ -621,7 +627,7 @@ const PrepopulatedEngine* const engines_PA[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Peru
@@ -629,7 +635,7 @@ const PrepopulatedEngine* const engines_PE[] = {
&googleen, &google,
&yahoo_pe,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Philippines
@@ -637,7 +643,7 @@ const PrepopulatedEngine* const engines_PH[] = {
&googleen, &google,
&yahoo_ph,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Pakistan
@@ -653,7 +659,7 @@ const PrepopulatedEngine* const engines_PL[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Puerto Rico
@@ -661,7 +667,7 @@ const PrepopulatedEngine* const engines_PR[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Portugal
@@ -669,7 +675,7 @@ const PrepopulatedEngine* const engines_PT[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Paraguay
@@ -677,7 +683,7 @@ const PrepopulatedEngine* const engines_PY[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Qatar
@@ -693,7 +699,7 @@ const PrepopulatedEngine* const engines_RO[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Serbia
@@ -701,7 +707,7 @@ const PrepopulatedEngine* const engines_RS[] = {
&googleen, &google,
&yahoo,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Russia
@@ -733,7 +739,7 @@ const PrepopulatedEngine* const engines_SE[] = {
&googleen, &google,
&bing,
&yahoo_se,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Singapore
@@ -749,7 +755,7 @@ const PrepopulatedEngine* const engines_SI[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Slovakia
@@ -757,7 +763,7 @@ const PrepopulatedEngine* const engines_SK[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// El Salvador
@@ -765,7 +771,7 @@ const PrepopulatedEngine* const engines_SV[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Syria
@@ -805,7 +811,7 @@ const PrepopulatedEngine* const engines_TT[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Taiwan
@@ -837,7 +843,7 @@ const PrepopulatedEngine* const engines_US[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Uruguay
@@ -845,7 +851,7 @@ const PrepopulatedEngine* const engines_UY[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Venezuela
@@ -853,7 +859,7 @@ const PrepopulatedEngine* const engines_VE[] = {
&googleen, &google,
&yahoo_ve,
&bing,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Vietnam
@@ -877,7 +883,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
&googleen, &google,
&bing,
&yahoo,
- &duckduckgo,
+ &duckduckgo, &duckduckgo_light,
};
// Zimbabwe
--
2.17.1
File diff suppressed because it is too large Load Diff
+992
View File
@@ -0,0 +1,992 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 12 Mar 2018 20:31:44 +0100
Subject: Add Qwant search engine
Specify image URL in upstream engine definition
Make search engine selectable in default list
---
.../search_engines/prepopulated_engines.json | 1 +
.../template_url_prepopulate_data.cc | 216 +++++++++---------
2 files changed, 109 insertions(+), 108 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
@@ -183,6 +183,7 @@
"favicon_url": "https://www.qwant.com/favicon.ico",
"search_url": "https://www.qwant.com/?q={searchTerms}&client=opensearch",
"suggest_url": "https://api.qwant.com/api/suggest/?q={searchTerms}&client=opensearch",
+ "image_url": "https://www.qwant.com/?t=images&q={searchTerms}",
"type": "SEARCH_ENGINE_QWANT",
"id": 94
},
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
@@ -32,7 +32,7 @@ namespace {
// Default (for countries with no better engine set)
const PrepopulatedEngine* const engines_default[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -42,7 +42,7 @@ const PrepopulatedEngine* const engines_default[] = {
// Engine selection by country ------------------------------------------------
// United Arab Emirates
const PrepopulatedEngine* const engines_AE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -50,7 +50,7 @@ const PrepopulatedEngine* const engines_AE[] = {
// Albania
const PrepopulatedEngine* const engines_AL[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&ask,
@@ -58,7 +58,7 @@ const PrepopulatedEngine* const engines_AL[] = {
// Argentina
const PrepopulatedEngine* const engines_AR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_ar,
&duckduckgo, &duckduckgo_light,
@@ -66,7 +66,7 @@ const PrepopulatedEngine* const engines_AR[] = {
// Austria
const PrepopulatedEngine* const engines_AT[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_at,
&duckduckgo, &duckduckgo_light,
@@ -74,7 +74,7 @@ const PrepopulatedEngine* const engines_AT[] = {
// Australia
const PrepopulatedEngine* const engines_AU[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_au,
&duckduckgo, &duckduckgo_light,
@@ -82,7 +82,7 @@ const PrepopulatedEngine* const engines_AU[] = {
// Bosnia and Herzegovina
const PrepopulatedEngine* const engines_BA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&ask,
@@ -90,7 +90,7 @@ const PrepopulatedEngine* const engines_BA[] = {
// Belgium
const PrepopulatedEngine* const engines_BE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -98,7 +98,7 @@ const PrepopulatedEngine* const engines_BE[] = {
// Bulgaria
const PrepopulatedEngine* const engines_BG[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -106,7 +106,7 @@ const PrepopulatedEngine* const engines_BG[] = {
// Bahrain
const PrepopulatedEngine* const engines_BH[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&ask,
@@ -114,7 +114,7 @@ const PrepopulatedEngine* const engines_BH[] = {
// Burundi
const PrepopulatedEngine* const engines_BI[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -122,7 +122,7 @@ const PrepopulatedEngine* const engines_BI[] = {
// Brunei
const PrepopulatedEngine* const engines_BN[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -130,7 +130,7 @@ const PrepopulatedEngine* const engines_BN[] = {
// Bolivia
const PrepopulatedEngine* const engines_BO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -138,7 +138,7 @@ const PrepopulatedEngine* const engines_BO[] = {
// Brazil
const PrepopulatedEngine* const engines_BR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_br,
&duckduckgo, &duckduckgo_light,
@@ -146,7 +146,7 @@ const PrepopulatedEngine* const engines_BR[] = {
// Belarus
const PrepopulatedEngine* const engines_BY[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yandex_by,
&mail_ru,
&bing,
@@ -154,7 +154,7 @@ const PrepopulatedEngine* const engines_BY[] = {
// Belize
const PrepopulatedEngine* const engines_BZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo,
@@ -163,12 +163,12 @@ const PrepopulatedEngine* const engines_BZ[] = {
// Canada
const PrepopulatedEngine* const engines_CA[] = {
- &googleen, &google, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo, &duckduckgo_light,
+ &googleen, &google, &qwant, &bing, &yahoo_ca, &yahoo_qc, &duckduckgo, &duckduckgo_light,
};
// Switzerland
const PrepopulatedEngine* const engines_CH[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&duckduckgo,
&duckduckgo_light,
@@ -177,7 +177,7 @@ const PrepopulatedEngine* const engines_CH[] = {
// Chile
const PrepopulatedEngine* const engines_CL[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_cl,
&duckduckgo, &duckduckgo_light,
@@ -185,12 +185,12 @@ const PrepopulatedEngine* const engines_CL[] = {
// China
const PrepopulatedEngine* const engines_CN[] = {
- &baidu, &so_360, &googleen, &google, &sogou, &bing,
+ &baidu, &so_360, &googleen, &google, &qwant, &sogou, &bing,
};
// Colombia
const PrepopulatedEngine* const engines_CO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_co,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -198,7 +198,7 @@ const PrepopulatedEngine* const engines_CO[] = {
// Costa Rica
const PrepopulatedEngine* const engines_CR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -206,7 +206,7 @@ const PrepopulatedEngine* const engines_CR[] = {
// Czech Republic
const PrepopulatedEngine* const engines_CZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&seznam_cz,
&bing,
&yahoo,
@@ -214,7 +214,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
// Germany
const PrepopulatedEngine* const engines_DE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_de,
&duckduckgo, &duckduckgo_light,
@@ -222,7 +222,7 @@ const PrepopulatedEngine* const engines_DE[] = {
// Denmark
const PrepopulatedEngine* const engines_DK[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_dk,
&duckduckgo, &duckduckgo_light,
@@ -230,7 +230,7 @@ const PrepopulatedEngine* const engines_DK[] = {
// Dominican Republic
const PrepopulatedEngine* const engines_DO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -238,7 +238,7 @@ const PrepopulatedEngine* const engines_DO[] = {
// Algeria
const PrepopulatedEngine* const engines_DZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -246,7 +246,7 @@ const PrepopulatedEngine* const engines_DZ[] = {
// Ecuador
const PrepopulatedEngine* const engines_EC[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -254,7 +254,7 @@ const PrepopulatedEngine* const engines_EC[] = {
// Estonia
const PrepopulatedEngine* const engines_EE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yandex_ru,
&neti,
@@ -262,7 +262,7 @@ const PrepopulatedEngine* const engines_EE[] = {
// Egypt
const PrepopulatedEngine* const engines_EG[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -270,7 +270,7 @@ const PrepopulatedEngine* const engines_EG[] = {
// Spain
const PrepopulatedEngine* const engines_ES[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_es,
&duckduckgo, &duckduckgo_light,
@@ -278,7 +278,7 @@ const PrepopulatedEngine* const engines_ES[] = {
// Finland
const PrepopulatedEngine* const engines_FI[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_fi,
&duckduckgo, &duckduckgo_light,
@@ -286,7 +286,7 @@ const PrepopulatedEngine* const engines_FI[] = {
// Faroe Islands
const PrepopulatedEngine* const engines_FO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -294,7 +294,7 @@ const PrepopulatedEngine* const engines_FO[] = {
// France
const PrepopulatedEngine* const engines_FR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_fr,
&qwant,
@@ -302,7 +302,7 @@ const PrepopulatedEngine* const engines_FR[] = {
// United Kingdom
const PrepopulatedEngine* const engines_GB[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_uk,
&duckduckgo, &duckduckgo_light,
@@ -310,7 +310,7 @@ const PrepopulatedEngine* const engines_GB[] = {
// Greece
const PrepopulatedEngine* const engines_GR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -318,7 +318,7 @@ const PrepopulatedEngine* const engines_GR[] = {
// Guatemala
const PrepopulatedEngine* const engines_GT[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -326,7 +326,7 @@ const PrepopulatedEngine* const engines_GT[] = {
// Hong Kong
const PrepopulatedEngine* const engines_HK[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_hk,
&bing,
&baidu,
@@ -334,7 +334,7 @@ const PrepopulatedEngine* const engines_HK[] = {
// Honduras
const PrepopulatedEngine* const engines_HN[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -342,7 +342,7 @@ const PrepopulatedEngine* const engines_HN[] = {
// Croatia
const PrepopulatedEngine* const engines_HR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -350,7 +350,7 @@ const PrepopulatedEngine* const engines_HR[] = {
// Hungary
const PrepopulatedEngine* const engines_HU[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -358,7 +358,7 @@ const PrepopulatedEngine* const engines_HU[] = {
// Indonesia
const PrepopulatedEngine* const engines_ID[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_id,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -366,7 +366,7 @@ const PrepopulatedEngine* const engines_ID[] = {
// Ireland
const PrepopulatedEngine* const engines_IE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -374,7 +374,7 @@ const PrepopulatedEngine* const engines_IE[] = {
// Israel
const PrepopulatedEngine* const engines_IL[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -382,7 +382,7 @@ const PrepopulatedEngine* const engines_IL[] = {
// India
const PrepopulatedEngine* const engines_IN[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_in,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -390,7 +390,7 @@ const PrepopulatedEngine* const engines_IN[] = {
// Iraq
const PrepopulatedEngine* const engines_IQ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -398,14 +398,14 @@ const PrepopulatedEngine* const engines_IQ[] = {
// Iran
const PrepopulatedEngine* const engines_IR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
};
// Iceland
const PrepopulatedEngine* const engines_IS[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -413,7 +413,7 @@ const PrepopulatedEngine* const engines_IS[] = {
// Italy
const PrepopulatedEngine* const engines_IT[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -421,7 +421,7 @@ const PrepopulatedEngine* const engines_IT[] = {
// Jamaica
const PrepopulatedEngine* const engines_JM[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -429,7 +429,7 @@ const PrepopulatedEngine* const engines_JM[] = {
// Jordan
const PrepopulatedEngine* const engines_JO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -437,7 +437,7 @@ const PrepopulatedEngine* const engines_JO[] = {
// Japan
const PrepopulatedEngine* const engines_JP[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_jp,
&bing,
&baidu,
@@ -445,7 +445,7 @@ const PrepopulatedEngine* const engines_JP[] = {
// Kenya
const PrepopulatedEngine* const engines_KE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -453,7 +453,7 @@ const PrepopulatedEngine* const engines_KE[] = {
// South Korea
const PrepopulatedEngine* const engines_KR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&naver,
&daum,
&bing,
@@ -461,7 +461,7 @@ const PrepopulatedEngine* const engines_KR[] = {
// Kuwait
const PrepopulatedEngine* const engines_KW[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&ask,
@@ -469,7 +469,7 @@ const PrepopulatedEngine* const engines_KW[] = {
// Kazakhstan
const PrepopulatedEngine* const engines_KZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yandex_kz,
&mail_ru,
&bing,
@@ -477,7 +477,7 @@ const PrepopulatedEngine* const engines_KZ[] = {
// Lebanon
const PrepopulatedEngine* const engines_LB[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo,
@@ -486,7 +486,7 @@ const PrepopulatedEngine* const engines_LB[] = {
// Liechtenstein
const PrepopulatedEngine* const engines_LI[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&duckduckgo,
&duckduckgo_light,
@@ -495,7 +495,7 @@ const PrepopulatedEngine* const engines_LI[] = {
// Lithuania
const PrepopulatedEngine* const engines_LT[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -503,7 +503,7 @@ const PrepopulatedEngine* const engines_LT[] = {
// Luxembourg
const PrepopulatedEngine* const engines_LU[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&duckduckgo, &duckduckgo_light,
&yahoo,
@@ -511,7 +511,7 @@ const PrepopulatedEngine* const engines_LU[] = {
// Latvia
const PrepopulatedEngine* const engines_LV[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yandex_ru,
&yahoo,
@@ -519,7 +519,7 @@ const PrepopulatedEngine* const engines_LV[] = {
// Libya
const PrepopulatedEngine* const engines_LY[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_com,
@@ -527,7 +527,7 @@ const PrepopulatedEngine* const engines_LY[] = {
// Morocco
const PrepopulatedEngine* const engines_MA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -535,7 +535,7 @@ const PrepopulatedEngine* const engines_MA[] = {
// Monaco
const PrepopulatedEngine* const engines_MC[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -543,7 +543,7 @@ const PrepopulatedEngine* const engines_MC[] = {
// Moldova
const PrepopulatedEngine* const engines_MD[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yandex_ru,
&mail_ru,
&duckduckgo, &duckduckgo_light,
@@ -551,7 +551,7 @@ const PrepopulatedEngine* const engines_MD[] = {
// Montenegro
const PrepopulatedEngine* const engines_ME[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -559,7 +559,7 @@ const PrepopulatedEngine* const engines_ME[] = {
// Macedonia
const PrepopulatedEngine* const engines_MK[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -567,7 +567,7 @@ const PrepopulatedEngine* const engines_MK[] = {
// Mexico
const PrepopulatedEngine* const engines_MX[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_mx,
&duckduckgo, &duckduckgo_light,
@@ -575,7 +575,7 @@ const PrepopulatedEngine* const engines_MX[] = {
// Malaysia
const PrepopulatedEngine* const engines_MY[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_my,
&bing,
&baidu,
@@ -583,7 +583,7 @@ const PrepopulatedEngine* const engines_MY[] = {
// Nicaragua
const PrepopulatedEngine* const engines_NI[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -591,7 +591,7 @@ const PrepopulatedEngine* const engines_NI[] = {
// Netherlands
const PrepopulatedEngine* const engines_NL[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_nl,
&duckduckgo, &duckduckgo_light,
@@ -599,7 +599,7 @@ const PrepopulatedEngine* const engines_NL[] = {
// Norway
const PrepopulatedEngine* const engines_NO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo,
@@ -608,7 +608,7 @@ const PrepopulatedEngine* const engines_NO[] = {
// New Zealand
const PrepopulatedEngine* const engines_NZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&duckduckgo, &duckduckgo_light,
&yahoo_nz,
@@ -616,7 +616,7 @@ const PrepopulatedEngine* const engines_NZ[] = {
// Oman
const PrepopulatedEngine* const engines_OM[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&ask,
@@ -624,7 +624,7 @@ const PrepopulatedEngine* const engines_OM[] = {
// Panama
const PrepopulatedEngine* const engines_PA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -632,7 +632,7 @@ const PrepopulatedEngine* const engines_PA[] = {
// Peru
const PrepopulatedEngine* const engines_PE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_pe,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -640,7 +640,7 @@ const PrepopulatedEngine* const engines_PE[] = {
// Philippines
const PrepopulatedEngine* const engines_PH[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_ph,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -648,7 +648,7 @@ const PrepopulatedEngine* const engines_PH[] = {
// Pakistan
const PrepopulatedEngine* const engines_PK[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&baidu,
@@ -656,7 +656,7 @@ const PrepopulatedEngine* const engines_PK[] = {
// Poland
const PrepopulatedEngine* const engines_PL[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -664,7 +664,7 @@ const PrepopulatedEngine* const engines_PL[] = {
// Puerto Rico
const PrepopulatedEngine* const engines_PR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -672,7 +672,7 @@ const PrepopulatedEngine* const engines_PR[] = {
// Portugal
const PrepopulatedEngine* const engines_PT[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -680,7 +680,7 @@ const PrepopulatedEngine* const engines_PT[] = {
// Paraguay
const PrepopulatedEngine* const engines_PY[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -688,7 +688,7 @@ const PrepopulatedEngine* const engines_PY[] = {
// Qatar
const PrepopulatedEngine* const engines_QA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&ask,
@@ -696,7 +696,7 @@ const PrepopulatedEngine* const engines_QA[] = {
// Romania
const PrepopulatedEngine* const engines_RO[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -704,7 +704,7 @@ const PrepopulatedEngine* const engines_RO[] = {
// Serbia
const PrepopulatedEngine* const engines_RS[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -713,14 +713,14 @@ const PrepopulatedEngine* const engines_RS[] = {
// Russia
const PrepopulatedEngine* const engines_RU[] = {
&yandex_ru,
- &googleen, &google,
+ &googleen, &google, &qwant,
&mail_ru,
&bing,
};
// Rwanda
const PrepopulatedEngine* const engines_RW[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -728,7 +728,7 @@ const PrepopulatedEngine* const engines_RW[] = {
// Saudi Arabia
const PrepopulatedEngine* const engines_SA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_com,
@@ -736,7 +736,7 @@ const PrepopulatedEngine* const engines_SA[] = {
// Sweden
const PrepopulatedEngine* const engines_SE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_se,
&duckduckgo, &duckduckgo_light,
@@ -744,7 +744,7 @@ const PrepopulatedEngine* const engines_SE[] = {
// Singapore
const PrepopulatedEngine* const engines_SG[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo_sg,
&yandex_com,
@@ -752,7 +752,7 @@ const PrepopulatedEngine* const engines_SG[] = {
// Slovenia
const PrepopulatedEngine* const engines_SI[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -760,7 +760,7 @@ const PrepopulatedEngine* const engines_SI[] = {
// Slovakia
const PrepopulatedEngine* const engines_SK[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -768,7 +768,7 @@ const PrepopulatedEngine* const engines_SK[] = {
// El Salvador
const PrepopulatedEngine* const engines_SV[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -776,7 +776,7 @@ const PrepopulatedEngine* const engines_SV[] = {
// Syria
const PrepopulatedEngine* const engines_SY[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -784,7 +784,7 @@ const PrepopulatedEngine* const engines_SY[] = {
// Thailand
const PrepopulatedEngine* const engines_TH[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_th,
&bing,
&ask,
@@ -792,7 +792,7 @@ const PrepopulatedEngine* const engines_TH[] = {
// Tunisia
const PrepopulatedEngine* const engines_TN[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo,
&bing,
&yandex_ru,
@@ -800,7 +800,7 @@ const PrepopulatedEngine* const engines_TN[] = {
// Turkey
const PrepopulatedEngine* const engines_TR[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yandex_tr,
&yahoo_tr,
&bing,
@@ -808,7 +808,7 @@ const PrepopulatedEngine* const engines_TR[] = {
// Trinidad and Tobago
const PrepopulatedEngine* const engines_TT[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -816,7 +816,7 @@ const PrepopulatedEngine* const engines_TT[] = {
// Taiwan
const PrepopulatedEngine* const engines_TW[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_tw,
&bing,
&baidu,
@@ -824,7 +824,7 @@ const PrepopulatedEngine* const engines_TW[] = {
// Tanzania
const PrepopulatedEngine* const engines_TZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&yandex_ru,
@@ -832,7 +832,7 @@ const PrepopulatedEngine* const engines_TZ[] = {
// Ukraine
const PrepopulatedEngine* const engines_UA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yandex_ua,
&mail_ru,
&bing,
@@ -840,7 +840,7 @@ const PrepopulatedEngine* const engines_UA[] = {
// United States
const PrepopulatedEngine* const engines_US[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -848,7 +848,7 @@ const PrepopulatedEngine* const engines_US[] = {
// Uruguay
const PrepopulatedEngine* const engines_UY[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -856,7 +856,7 @@ const PrepopulatedEngine* const engines_UY[] = {
// Venezuela
const PrepopulatedEngine* const engines_VE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&yahoo_ve,
&bing,
&duckduckgo, &duckduckgo_light,
@@ -864,7 +864,7 @@ const PrepopulatedEngine* const engines_VE[] = {
// Vietnam
const PrepopulatedEngine* const engines_VN[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&coccoc,
&bing,
&yahoo_vn,
@@ -872,7 +872,7 @@ const PrepopulatedEngine* const engines_VN[] = {
// Yemen
const PrepopulatedEngine* const engines_YE[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&baidu,
@@ -880,7 +880,7 @@ const PrepopulatedEngine* const engines_YE[] = {
// South Africa
const PrepopulatedEngine* const engines_ZA[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&duckduckgo, &duckduckgo_light,
@@ -888,7 +888,7 @@ const PrepopulatedEngine* const engines_ZA[] = {
// Zimbabwe
const PrepopulatedEngine* const engines_ZW[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&bing,
&yahoo,
&baidu,
--
2.17.1
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,326 @@
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.
Make sure initial incognito status is correctly recognized.
---
chrome/android/chrome_java_sources.gni | 1 +
.../java/res/xml/privacy_preferences.xml | 5 ++
.../AlwaysIncognitoLinkInterceptor.java | 74 +++++++++++++++++++
.../chrome/browser/ChromeActivity.java | 4 +
.../chrome/browser/ChromeTabbedActivity.java | 6 +-
.../AppMenuPropertiesDelegateImpl.java | 6 ++
.../ChromeContextMenuPopulator.java | 9 ++-
.../browser/tabmodel/ChromeTabCreator.java | 20 ++++-
.../ui/appmenu/AppMenuHandlerImpl.java | 1 +
.../strings/android_chrome_strings.grd | 8 ++
10 files changed, 130 insertions(+), 4 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -3,6 +3,7 @@
# found in the LICENSE file.
chrome_java_sources = [
+ "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
"java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
"java/src/org/chromium/chrome/browser/ActivityTabProvider.java",
"java/src/org/chromium/chrome/browser/AfterStartupTaskUtils.java",
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -20,6 +20,11 @@
android:title="@string/preload_pages_title"
android:summary="@string/preload_pages_summary"
android:persistent="false" />
+ <org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
+ android:key="always_incognito"
+ android:title="@string/always_incognito_title"
+ android:summary="@string/always_incognito_summary"
+ android:defaultValue="false" />
<Preference
android:fragment="org.chromium.chrome.browser.settings.privacy.DoNotTrackPreference"
android:key="do_not_track"
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,74 @@
+/* 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.tab.TabImpl;
+import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
+import org.chromium.chrome.browser.tabmodel.TabLaunchType;
+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 {
+
+ public 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;
+ }
+
+ ((TabImpl) tab).getActivity().getTabCreator(true).createNewTab(new LoadUrlParams(url), 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
@@ -54,6 +54,7 @@ import org.chromium.base.annotations.UsedByReflection;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegateImpl;
@@ -1680,6 +1681,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
+ if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
+ return mIncognitoTabCreator;
+ }
return incognito ? mIncognitoTabCreator : mRegularTabCreator;
}
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
@@ -50,6 +50,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
@@ -1609,8 +1610,9 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
Bundle savedInstanceState = getSavedInstanceState();
// We determine the model as soon as possible so every systems get initialized coherently.
- boolean startIncognito = savedInstanceState != null
- && savedInstanceState.getBoolean("is_incognito_selected", false);
+ boolean startIncognito = ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)
+ || (savedInstanceState != null
+ && savedInstanceState.getBoolean("is_incognito_selected", false));
int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0;
mTabModelSelectorImpl = (TabModelSelectorImpl)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -289,6 +289,12 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
ChromeSwitches.ENABLE_VR_SHELL_DEV));
}
+ if (ContextUtils.getAppSharedPreferences().getBoolean("always_incognito", false)) {
+ final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id);
+ if (newTabOption != null)
+ newTabOption.setVisible(false);
+ }
+
// We have to iterate all menu items since same menu item ID may be associated with more
// than one menu items.
boolean isMenuGroupTabsVisible = FeatureUtilities.isTabGroupsAndroidUiImprovementsEnabled()
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
@@ -17,7 +17,9 @@ import androidx.annotation.IntDef;
import org.chromium.base.Supplier;
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.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabPanel;
import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
@@ -308,7 +310,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(AlwaysIncognitoLinkInterceptor.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
@@ -10,8 +10,10 @@ import android.text.TextUtils;
import androidx.annotation.Nullable;
import org.chromium.base.Supplier;
+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.IntentHandler;
import org.chromium.chrome.browser.ServiceTabLauncher;
@@ -20,6 +22,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabAssociatedApp;
import org.chromium.chrome.browser.tab.TabBuilder;
+import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
import org.chromium.chrome.browser.tab.TabParentIntent;
import org.chromium.chrome.browser.tab.TabRedirectHandler;
@@ -41,6 +44,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
private final ChromeActivity mActivity;
private final StartupTabPreloader mStartupTabPreloader;
private final boolean mIncognito;
+ private final TabObserver mExtraLogic;
private WindowAndroid mNativeWindow;
private TabModel mTabModel;
@@ -55,6 +59,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
mNativeWindow = nativeWindow;
mTabDelegateFactorySupplier = tabDelegateFactory;
mIncognito = incognito;
+ if (!mIncognito)
+ mExtraLogic = new AlwaysIncognitoLinkInterceptor(ContextUtils.getAppSharedPreferences());
+ else
+ mExtraLogic = null;
}
@Override
@@ -190,6 +198,9 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
tab.getWebContents());
}
+ if (mExtraLogic != null)
+ tab.addObserver(mExtraLogic);
+
mTabModel.addTab(tab, position, type);
return tab;
} finally {
@@ -221,6 +232,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
.setDelegateFactory(delegateFactory)
.setInitiallyHidden(!openInForeground)
.build();
+
+ if (mExtraLogic != null)
+ tab.addObserver(mExtraLogic);
+
mTabModel.addTab(tab, position, type);
return true;
}
@@ -263,7 +278,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
@@ -330,6 +344,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
.setTabState(state)
.build();
assert state.isIncognito() == mIncognito;
+
+ if (mExtraLogic != null)
+ tab.addObserver(mExtraLogic);
+
mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
return tab;
}
diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java
--- a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java
+++ b/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl.java
@@ -212,6 +212,7 @@ class AppMenuHandlerImpl
if (mDelegate.shouldShowHeader(appRect.height())) {
headerResourceId = mDelegate.getHeaderResourceId();
}
+
mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
footerResourceId, headerResourceId, mHighlightMenuId, mCircleHighlight,
showFromBottom, mDelegate.getCustomViewBinders());
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -699,6 +699,14 @@ CHAR-LIMIT guidelines:
Search and site suggestions disabled
</message>
+ <!-- always incognito -->
+ <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
+ Open links in incognito tabs always
+ </message>
+ <message name="IDS_ALWAYS_INCOGNITO_SUMMARY" desc="Summary for always incognito mode">
+ Opens links in incognito tabs when you click on new tab or on a link
+ </message>
+
<!-- Themes preferences -->
<message name="IDS_PREFS_THEMES" desc="Title for the Themes preferences. [CHAR-LIMIT=32]">
Themes
--
2.17.1
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,115 @@
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 +++++
.../chrome/browser/LaunchIntentDispatcher.java | 3 +++
.../browser/settings/privacy/PrivacyPreferences.java | 11 +++++++++++
.../ui/android/strings/android_chrome_strings.grd | 7 +++++++
5 files changed, 29 insertions(+)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -14,6 +14,9 @@
<item name="top_controls_show_threshold" format="float" type="dimen">0.5</item>
<item name="top_controls_hide_threshold" format="float" type="dimen">0.5</item>
+ <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
@@ -29,6 +29,11 @@
android:fragment="org.chromium.chrome.browser.settings.privacy.DoNotTrackPreference"
android:key="do_not_track"
android:title="@string/do_not_track_title" />
+ <org.chromium.chrome.browser.settings.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="clear_browsing_data"
android:title="@string/clear_browsing_data_title"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -43,6 +43,7 @@ import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.searchwidget.SearchActivity;
import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.settings.privacy.PrivacyPreferences;
import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.chrome.browser.util.UrlConstants;
import org.chromium.chrome.browser.vr.VrModuleProvider;
@@ -251,6 +252,8 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
*/
public static boolean isCustomTabIntent(Intent intent) {
if (intent == null) return false;
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false))
+ return false;
if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
|| !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
@@ -41,6 +41,8 @@ public class PrivacyPreferences
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
+ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
+
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
@@ -76,6 +78,10 @@ public class PrivacyPreferences
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
PrivacyPreferencesManager.getInstance().setNetworkPredictionEnabled((boolean) newValue);
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
+ sharedPreferencesEditor.apply();
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
}
@@ -111,6 +117,11 @@ public class PrivacyPreferences
prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
}
+ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
+ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
+ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
if (doNotTrackPref != null) {
doNotTrackPref.setSummary(prefServiceBridge.getBoolean(Pref.ENABLE_DO_NOT_TRACK)
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3975,6 +3975,13 @@ The site does NOT gain access to the camera. The camera images are only visible
<message name="IDS_NEAR_OOM_REDUCTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can be reloaded.">
Show original
</message>
+ <!-- Allow custom tab intents -->
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
+ Allow custom tab intents
+ </message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
+ Allow applications to open custom tab intents, similar to webview.
+ </message>
<!-- Autofill Assistant preferences -->
<message name="IDS_PREFS_AUTOFILL_ASSISTANT_TITLE" desc="Title for the Autofill Assistant preferences screen. [CHAR-LIMIT=32]">
--
2.17.1
+68
View File
@@ -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 ++
.../src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
.../chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
.../browser/ui/android/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
@@ -85,6 +85,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
@@ -2177,6 +2177,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
AddToHomescreenCoordinator.showForAppMenu(
this, getWindowAndroid(), getModalDialogManager(), currentTab.getWebContents());
RecordUserAction.record("MobileMenuAddToHomescreen");
+ } else if (id == R.id.exit_id) {
+ ApplicationLifetime.terminate(false);
} else if (id == R.id.open_webapk_id) {
Context context = ContextUtils.getApplicationContext();
String packageName =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
@@ -82,7 +82,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/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -2903,6 +2903,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<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.17.1
@@ -0,0 +1,157 @@
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 ++++
.../spoof_checks/top_domains/BUILD.gn | 1 +
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
8 files changed, 44 insertions(+)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -706,6 +706,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 ==
@@ -2663,6 +2668,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kPassiveDocumentEventListenersName,
flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
+ {"max-connections-per-host", flag_descriptions::kMaxConnectionsPerHostName,
+ flag_descriptions::kMaxConnectionsPerHostDescription, kOsAll,
+ MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
{"document-passive-wheel-event-listeners",
flag_descriptions::kPassiveDocumentWheelEventListenersName,
flag_descriptions::kPassiveDocumentWheelEventListenersDescription, kOsAll,
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1279,6 +1279,10 @@ extern const char kMediaInspectorLoggingDescription[] =
"project; #enable-devtools-experiments must also be enabled as well on "
"desktop platforms";
+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
@@ -775,6 +775,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
extern const char kMediaInspectorLoggingName[];
extern const char kMediaInspectorLoggingDescription[];
+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,4 +8,7 @@
namespace features {
+const char kMaxConnectionsPerHostChoiceDefault[] = "6",
+ kMaxConnectionsPerHostChoice15[] = "15";
+
} // namespace features
diff --git a/components/network_session_configurator/common/network_features.h b/components/network_session_configurator/common/network_features.h
--- a/components/network_session_configurator/common/network_features.h
+++ b/components/network_session_configurator/common/network_features.h
@@ -10,6 +10,10 @@
namespace features {
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kMaxConnectionsPerHostChoiceDefault[],
+ kMaxConnectionsPerHostChoice6[],
+ kMaxConnectionsPerHostChoice15[];
+
} // namespace features
#endif // COMPONENTS_NETWORK_SESSION_CONFIGURATOR_COMMON_NETWORK_FEATURES_H_
diff --git a/components/network_session_configurator/common/network_switch_list.h b/components/network_session_configurator/common/network_switch_list.h
--- a/components/network_session_configurator/common/network_switch_list.h
+++ b/components/network_session_configurator/common/network_switch_list.h
@@ -22,6 +22,10 @@ NETWORK_SWITCH(kEnableUserAlternateProtocolPorts,
// Enables the QUIC protocol. This is a temporary testing flag.
NETWORK_SWITCH(kEnableQuic, "enable-quic")
+// Allows specifying a higher number of maximum connections per host
+// (15 instead of 6, mirroring the value Mozilla uses).
+NETWORK_SWITCH(kMaxConnectionsPerHost, "max-connections-per-host")
+
// Ignores certificate-related errors.
NETWORK_SWITCH(kIgnoreCertificateErrors, "ignore-certificate-errors")
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
@@ -78,6 +78,7 @@ executable("make_top_domain_list_variables") {
"//base",
"//base:i18n",
"//third_party/icu",
+ "//components/network_session_configurator/common"
]
if (is_ios) {
libs = [ "UIKit.framework" ]
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -20,6 +20,10 @@
#include "net/socket/client_socket_pool.h"
#include "net/socket/connect_job.h"
#include "net/ssl/ssl_config.h"
+#include "components/network_session_configurator/common/network_switches.h"
+
+#include "base/command_line.h"
+#include "base/strings/string_number_conversions.h"
namespace net {
@@ -187,6 +191,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
int ClientSocketPoolManager::max_sockets_per_group(
HttpNetworkSession::SocketPoolType pool_type) {
DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);
+
+ 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.17.1
@@ -0,0 +1,73 @@
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 | 4 ++++
chrome/browser/flag_descriptions.cc | 5 +++++
chrome/browser/flag_descriptions.h | 3 +++
media/base/media_switches.cc | 6 +-----
4 files changed, 13 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
@@ -1688,6 +1688,10 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
+ {"resume-background-video",
+ flag_descriptions::kResumeBackgroundVideoName,
+ flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
+ FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
{"shared-array-buffer", flag_descriptions::kEnableSharedArrayBufferName,
flag_descriptions::kEnableSharedArrayBufferDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kSharedArrayBuffer)},
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -894,6 +894,11 @@ const char kMemlogStackModeNative[] = "Native";
const char kMemlogStackModeNativeWithThreadNames[] = "Native with thread names";
const char kMemlogStackModePseudo[] = "Trace events";
+const char kResumeBackgroundVideoName[] = "Resume background video.";
+const char kResumeBackgroundVideoDescription[] =
+ "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
@@ -525,6 +525,9 @@ extern const char kEnablePortalsDescription[];
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
@@ -231,11 +231,7 @@ const base::Feature kPreloadMetadataLazyLoad{"PreloadMetadataLazyLoad",
// 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
};
// Enable Media Capabilities with finch-parameters.
--
2.17.1
@@ -0,0 +1,156 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 18 Nov 2018 13:06:49 +0100
Subject: Add flag to disable IPv6 probes
---
chrome/browser/about_flags.cc | 5 +++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
components/subresource_filter/tools/BUILD.gn | 6 ++++++
.../url_formatter/spoof_checks/top_domains/BUILD.gn | 3 ++-
net/dns/host_resolver_manager.cc | 9 ++++++++-
services/network/public/cpp/features.cc | 4 ++++
services/network/public/cpp/features.h | 2 ++
8 files changed, 34 insertions(+), 2 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
@@ -3303,6 +3303,11 @@ const FeatureEntry kFeatureEntries[] = {
kMarkHttpAsFeatureVariations,
"HTTPReallyBadFinal")},
+ {"ipv6-probing",
+ flag_descriptions::kIPv6ProbingName,
+ flag_descriptions::kIPv6ProbingDescription, kOsAll,
+ FEATURE_VALUE_TYPE(network::features::kIPv6Probing)},
+
#if !defined(OS_ANDROID)
{"enable-web-authentication-testing-api",
flag_descriptions::kEnableWebAuthenticationTestingAPIName,
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2520,6 +2520,10 @@ const char kContextualSearchSimplifiedServerDescription[] =
const char kContextualSearchSecondTapName[] =
"Contextual Search second tap triggering";
+const char kIPv6ProbingName[] = "Enable IPv6 probing.";
+const char kIPv6ProbingDescription[] =
+ "Send IPv6 probes to a RIPE DNS address to verify IPv6 connectivity.";
+
const char kContextualSearchSecondTapDescription[] =
"Enables triggering on a second tap gesture even when Ranker would "
"normally suppress that tap.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -528,6 +528,9 @@ extern const char kEnableNewDownloadBackendDescription[];
extern const char kEnablePortalsName[];
extern const char kEnablePortalsDescription[];
+extern const char kIPv6ProbingName[];
+extern const char kIPv6ProbingDescription[];
+
extern const char kEnablePictureInPictureName[];
extern const char kEnablePictureInPictureDescription[];
diff --git a/components/subresource_filter/tools/BUILD.gn b/components/subresource_filter/tools/BUILD.gn
--- a/components/subresource_filter/tools/BUILD.gn
+++ b/components/subresource_filter/tools/BUILD.gn
@@ -52,6 +52,8 @@ if (!is_ios) {
deps = [
":tools_lib",
"//base",
+ "//components/network_session_configurator/common",
+ "//services/network/public/cpp"
]
}
@@ -65,6 +67,8 @@ if (!is_ios) {
":tools_lib",
"../core/common",
"//base",
+ "//components/network_session_configurator/common",
+ "//services/network/public/cpp",
]
}
@@ -76,6 +80,8 @@ if (!is_ios) {
"ruleset_converter:support",
"//base",
"//third_party/protobuf:protobuf_lite",
+ "//components/network_session_configurator/common",
+ "//services/network/public/cpp"
]
}
diff --git a/components/url_formatter/spoof_checks/top_domains/BUILD.gn b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
--- a/components/url_formatter/spoof_checks/top_domains/BUILD.gn
+++ b/components/url_formatter/spoof_checks/top_domains/BUILD.gn
@@ -78,7 +78,8 @@ executable("make_top_domain_list_variables") {
"//base",
"//base:i18n",
"//third_party/icu",
- "//components/network_session_configurator/common"
+ "//components/network_session_configurator/common",
+ "//services/network/public/cpp",
]
if (is_ios) {
libs = [ "UIKit.framework" ]
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc
--- a/net/dns/host_resolver_manager.cc
+++ b/net/dns/host_resolver_manager.cc
@@ -92,6 +92,7 @@
#include "net/socket/client_socket_factory.h"
#include "net/socket/datagram_client_socket.h"
#include "net/url_request/url_request_context.h"
+#include "services/network/public/cpp/features.h"
#include "url/url_canon_ip.h"
#if BUILDFLAG(ENABLE_MDNS)
@@ -3564,8 +3565,14 @@ bool HostResolverManager::IsIPv6Reachable(const NetLogWithSource& net_log) {
bool cached = true;
if ((tick_clock_->NowTicks() - last_ipv6_probe_time_).InMilliseconds() >
kIPv6ProbePeriodMs) {
- SetLastIPv6ProbeResult(
+
+ if (!base::FeatureList::IsEnabled(network::features::kIPv6Probing)) {
+ // pretend IPv6 connectivy probe is successful when probing is disabled
+ SetLastIPv6ProbeResult(true);
+ } else {
+ SetLastIPv6ProbeResult(
IsGloballyReachable(IPAddress(kIPv6ProbeAddress), net_log));
+ }
cached = false;
}
net_log.AddEvent(
diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc
--- a/services/network/public/cpp/features.cc
+++ b/services/network/public/cpp/features.cc
@@ -51,6 +51,10 @@ const base::Feature kReporting{"Reporting", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kThrottleDelayable{"ThrottleDelayable",
base::FEATURE_ENABLED_BY_DEFAULT};
+// Enable IPv6 ping probes to RIPE DNS.
+const base::Feature kIPv6Probing{"IPv6Probing",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
// When kPriorityRequestsDelayableOnSlowConnections is enabled, HTTP
// requests fetched from a SPDY/QUIC/H2 proxies can be delayed by the
// ResourceScheduler just as HTTP/1.1 resources are. However, requests from such
diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h
--- a/services/network/public/cpp/features.h
+++ b/services/network/public/cpp/features.h
@@ -21,6 +21,8 @@ extern const base::Feature kNetworkErrorLogging;
COMPONENT_EXPORT(NETWORK_CPP)
extern const base::Feature kNetworkService;
COMPONENT_EXPORT(NETWORK_CPP)
+extern const base::Feature kIPv6Probing;
+COMPONENT_EXPORT(NETWORK_CPP)
extern const base::Feature kOutOfBlinkCors;
COMPONENT_EXPORT(NETWORK_CPP)
extern const base::Feature kReporting;
--
2.17.1
@@ -0,0 +1,53 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 16 Nov 2019 11:18:09 +0100
Subject: Add flag to disable WebGL
---
chrome/browser/about_flags.cc | 3 +++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
3 files changed, 10 insertions(+)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1476,6 +1476,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kAccelerated2dCanvasName,
flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
+ {switches::kDisableWebGL, flag_descriptions::kDisableWebGLName,
+ flag_descriptions::kDisableWebGLDescription, kOsAll,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisableWebGL)},
{"composited-layer-borders", flag_descriptions::kCompositedLayerBordersName,
flag_descriptions::kCompositedLayerBordersDescription, kOsAll,
SINGLE_VALUE_TYPE(cc::switches::kShowCompositedLayerBorders)},
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -446,6 +446,10 @@ const char kDisableAudioForDesktopShareDescription[] =
"With this flag on, desktop share picker window will not let the user "
"choose whether to share audio.";
+const char kDisableWebGLName[] = "Disable all versions of WebGL";
+
+const char kDisableWebGLDescription[] = "Disable all versions of WebGL";
+
const char kDisableBestEffortTasksName[] = "Skip best effort tasks";
const char kDisableBestEffortTasksDescription[] =
"With this flag on, tasks of the lowest priority will not be executed "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -287,6 +287,9 @@ extern const char kDevtoolsExperimentsDescription[];
extern const char kDisableAudioForDesktopShareName[];
extern const char kDisableAudioForDesktopShareDescription[];
+extern const char kDisableWebGLName[];
+extern const char kDisableWebGLDescription[];
+
extern const char kDisableBestEffortTasksName[];
extern const char kDisableBestEffortTasksDescription[];
--
2.17.1
@@ -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 ++
.../blink/public/platform/web_runtime_features.h | 2 ++
.../blink/renderer/modules/modules_initializer.cc | 9 ++++++---
.../renderer/platform/exported/web_runtime_features.cc | 8 ++++++++
.../renderer/platform/runtime_enabled_features.json5 | 8 ++++++++
10 files changed, 59 insertions(+), 3 deletions(-)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1714,6 +1714,12 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
flag_descriptions::kGpuRasterizationDescription, kOsAll,
MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
+ {"enable-device-motion", flag_descriptions::kEnableDeviceMotionName,
+ flag_descriptions::kEnableDeviceMotionDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kDeviceMotion)},
+ {"enable-device-orientation", flag_descriptions::kEnableDeviceOrientationName,
+ flag_descriptions::kEnableDeviceOrientationDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kDeviceOrientation)},
{"enable-oop-rasterization", flag_descriptions::kOopRasterizationName,
flag_descriptions::kOopRasterizationDescription, kOsAll,
MULTI_VALUE_TYPE(kEnableOopRasterizationChoices)},
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -667,6 +667,14 @@ const char kWinrtSensorsImplementationDescription[] =
"Enables usage of the Windows.Devices.Sensors WinRT APIs on Windows for "
"sensors";
+const char kEnableDeviceMotionName[] = "Enable device motion";
+const char kEnableDeviceMotionDescription[] =
+ "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
@@ -409,6 +409,12 @@ extern const char kWinrtGeolocationImplementationDescription[];
extern const char kWinrtSensorsImplementationName[];
extern const char kWinrtSensorsImplementationDescription[];
+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
@@ -87,6 +87,9 @@ void SetRuntimeFeatureDefaultsForPlatform(
command_line.HasSwitch(
switches::kEnableGpuMemoryBufferCompositorResources) &&
!command_line.HasSwitch(switches::kDisableWebGLImageChromium) &&
+ WebRuntimeFeatures::EnableDeviceMotion(base::FeatureList::IsEnabled(features::kDeviceMotion));
+ WebRuntimeFeatures::EnableDeviceOrientation(base::FeatureList::IsEnabled(features::kDeviceOrientation));
+
!command_line.HasSwitch(switches::kDisableGpu) &&
base::FeatureList::IsEnabled(features::kWebGLImageChromium);
#else
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -690,6 +690,16 @@ const base::Feature kExperimentalProductivityFeatures{
// TODO(rouslan): Remove this.
const base::Feature kWebPayments{"WebPayments",
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};
+
// Makes WebRTC use ECDSA certs by default (i.e., when no cert type was
// specified in JS).
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
@@ -157,6 +157,8 @@ CONTENT_EXPORT extern const base::Feature kBrowserUseDisplayThreadPriority;
CONTENT_EXPORT extern const base::Feature kFeaturePolicyForClientHints;
CONTENT_EXPORT extern const base::Feature kVideoPlaybackQuality;
+CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
+
#if defined(OS_ANDROID)
CONTENT_EXPORT extern const base::Feature kAndroidAutofillAccessibility;
CONTENT_EXPORT extern const base::Feature
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -96,6 +96,8 @@ class WebRuntimeFeatures {
BLINK_PLATFORM_EXPORT static void EnableCSSHexAlphaColor(bool);
BLINK_PLATFORM_EXPORT static void EnableSameSiteByDefaultCookies(bool);
BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
+ BLINK_PLATFORM_EXPORT static void EnableDeviceMotion(bool);
+ BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
BLINK_PLATFORM_EXPORT static void EnableKeyboardFocusableScrollers(bool);
BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
BLINK_PLATFORM_EXPORT static void EnableDecodeJpeg420ImagesToYUV(bool);
diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
--- a/third_party/blink/renderer/modules/modules_initializer.cc
+++ b/third_party/blink/renderer/modules/modules_initializer.cc
@@ -235,9 +235,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
@@ -173,6 +173,14 @@ void WebRuntimeFeatures::EnableScrollTopLeftInterop(bool enable) {
RuntimeEnabledFeatures::SetScrollTopLeftInteropEnabled(enable);
}
+void WebRuntimeFeatures::EnableDeviceMotion(bool enable) {
+ RuntimeEnabledFeatures::SetDeviceMotionEnabled(enable);
+}
+
+void WebRuntimeFeatures::EnableDeviceOrientation(bool enable) {
+ RuntimeEnabledFeatures::SetDeviceOrientationEnabled(enable);
+}
+
void WebRuntimeFeatures::EnableKeyboardFocusableScrollers(bool enable) {
RuntimeEnabledFeatures::SetKeyboardFocusableScrollersEnabled(enable);
}
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1162,6 +1162,14 @@
name: "OffscreenCanvasCommit",
status: "experimental",
},
+ {
+ name: "DeviceMotion",
+ status: "stable",
+ },
+ {
+ name: "DeviceOrientation",
+ status: "stable",
+ },
{
name: "OnDeviceChange",
// Android does not yet support SystemMonitor.
--
2.17.1
@@ -0,0 +1,478 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 5 Dec 2019 22:41:25 +0100
Subject: Add option to configure the ad blocker filters URL
---
chrome/android/chrome_java_sources.gni | 2 +
.../java/res/layout/adblock_editor.xml | 65 +++++++++++++
chrome/android/java/res/values/values.xml | 2 +
.../java/res/xml/adblock_preferences.xml | 25 +++++
.../android/java/res/xml/main_preferences.xml | 5 +
.../browser/settings/AdBlockEditor.java | 92 +++++++++++++++++++
.../browser/settings/AdBlockPreferences.java | 56 +++++++++++
chrome/app/generated_resources.grd | 10 ++
chrome/browser/android/feature_utilities.cc | 8 ++
chrome/browser/browser_process_impl.cc | 3 +-
.../net/system_network_context_manager.cc | 3 +
.../strings/android_chrome_strings.grd | 14 +++
chrome/common/pref_names.cc | 3 +
chrome/common/pref_names.h | 1 +
.../adblock_updater_service.cc | 6 +-
.../adblock_updater_service.h | 3 +-
16 files changed, 293 insertions(+), 5 deletions(-)
create mode 100644 chrome/android/java/res/layout/adblock_editor.xml
create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -1277,6 +1277,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/photo_picker/DecodeVideoTask.java",
"java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
"java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceHost.java",
+ "java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java",
+ "java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java",
"java/src/org/chromium/chrome/browser/photo_picker/FileEnumWorkerTask.java",
"java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialog.java",
"java/src/org/chromium/chrome/browser/photo_picker/PhotoPickerToolbar.java",
diff --git a/chrome/android/java/res/layout/adblock_editor.xml b/chrome/android/java/res/layout/adblock_editor.xml
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/layout/adblock_editor.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style license that can be
+ found in the LICENSE file. -->
+
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/scroll_view"
+ android:fillViewport="true" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:focusableInTouchMode="true" >
+
+ <org.chromium.chrome.browser.widget.ChromeTextInputLayout
+ android:id="@+id/adblock_url"
+ style="@style/PreferenceScreenLayout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+ <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
+ <EditText
+ tools:ignore="Autofill"
+ android:id="@+id/adblock_url_edit"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="textUri"
+ android:singleLine="true"
+ android:hint="@string/options_adblock_edit_label" />
+ </org.chromium.chrome.browser.widget.ChromeTextInputLayout>
+
+ <Space style="@style/ButtonBarTopSpacer" />
+ <View style="@style/ButtonBarTopDivider" />
+
+ <LinearLayout style="@style/ButtonBar" >
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/adblock_reset"
+ style="@style/ButtonBarButton"
+ android:text="@string/reset" />
+
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/adblock_cancel"
+ style="@style/ButtonBarButton"
+ android:text="@string/cancel" />
+
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/adblock_save"
+ style="@style/ButtonBarButton"
+ android:text="@string/save" />
+ </LinearLayout>
+ </LinearLayout>
+ </ScrollView>
+
+ <include layout="@layout/preferences_action_bar_shadow"/>
+
+</FrameLayout>
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -69,6 +69,8 @@
<!-- Our manage space activity. Default pre-KitKat to be nothing. -->
<string name="manage_space_activity"></string>
+ <string name="adblock_help_url">https://www.bromite.org/custom-filters</string>
+
<!-- Value for scaleX to mirror drawables correctly for LTR / RTL layouts. -->
<integer name="automirror_scale_x_reverse">-1</integer>
diff --git a/chrome/android/java/res/xml/adblock_preferences.xml b/chrome/android/java/res/xml/adblock_preferences.xml
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/xml/adblock_preferences.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style license that can be
+ found in the LICENSE file. -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <org.chromium.chrome.browser.settings.ChromeSwitchPreference
+ android:key="adblock_switch"
+ android:summaryOn="@string/text_on"
+ android:summaryOff="@string/text_off" />
+
+ <org.chromium.chrome.browser.settings.HyperlinkPreference
+ android:key="adblock_help"
+ android:title="@string/adblock_help"
+ app:url="@string/adblock_help_url" />
+
+ <Preference
+ android:key="adblock_edit"
+ android:title="@string/options_adblock_edit_label"
+ android:fragment="org.chromium.chrome.browser.settings.AdBlockEditor" />
+
+</PreferenceScreen>
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -60,6 +60,11 @@
android:key="privacy"
android:order="13"
android:title="@string/prefs_privacy"/>
+ <Preference
+ android:fragment="org.chromium.chrome.browser.settings.AdBlockPreferences"
+ android:key="adblock"
+ android:order="13"
+ android:title="@string/prefs_adblock"/>
<Preference
android:fragment="org.chromium.chrome.browser.settings.accessibility.AccessibilitySettings"
android:key="accessibility"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java
@@ -0,0 +1,92 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.settings;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+
+import org.chromium.chrome.browser.settings.SettingsUtils;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
+import org.chromium.chrome.R;
+import org.chromium.components.url_formatter.UrlFormatter;
+
+/**
+ * Provides the Java-UI for editing AdBlock preferences.
+ */
+public class AdBlockEditor extends Fragment implements TextWatcher {
+ private EditText mAdBlockFiltersUrlEdit;
+ private Button mSaveButton;
+ private Button mResetButton;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActivity().setTitle(R.string.options_adblock_edit_title);
+
+ View v = inflater.inflate(R.layout.adblock_editor, container, false);
+ View scrollView = v.findViewById(R.id.scroll_view);
+ scrollView.getViewTreeObserver().addOnScrollChangedListener(
+ SettingsUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
+ mAdBlockFiltersUrlEdit = (EditText) v.findViewById(R.id.adblock_url_edit);
+ mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
+ mAdBlockFiltersUrlEdit.addTextChangedListener(this);
+ mAdBlockFiltersUrlEdit.requestFocus();
+
+ initializeSaveCancelResetButtons(v);
+ return v;
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ mSaveButton.setEnabled(s.length() != 0);
+ mResetButton.setEnabled(true);
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ }
+
+ private void initializeSaveCancelResetButtons(View v) {
+ mResetButton = (Button) v.findViewById(R.id.adblock_reset);
+ mResetButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mAdBlockFiltersUrlEdit.setText(FeatureUtilities.getAdBlockFiltersURL());
+ getActivity().finish();
+ }
+ });
+
+ mSaveButton = (Button) v.findViewById(R.id.adblock_save);
+ mSaveButton.setEnabled(false);
+ mSaveButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ FeatureUtilities.setAdBlockFiltersURL(
+ UrlFormatter.fixupUrl(mAdBlockFiltersUrlEdit.getText().toString()));
+ getActivity().finish();
+ }
+ });
+
+ Button button = (Button) v.findViewById(R.id.adblock_cancel);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getActivity().finish();
+ }
+ });
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockPreferences.java
@@ -0,0 +1,56 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.settings;
+
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceFragmentCompat;
+import org.chromium.chrome.browser.settings.ChromeSwitchPreference;
+
+import org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge;
+import org.chromium.chrome.browser.ContentSettingsType;
+import org.chromium.chrome.browser.settings.SettingsUtils;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
+import androidx.annotation.VisibleForTesting;
+import org.chromium.chrome.R;
+
+/**
+ * Fragment that allows the user to configure AdBlock related preferences.
+ */
+public class AdBlockPreferences extends PreferenceFragmentCompat {
+ @VisibleForTesting
+ public static final String PREF_ADBLOCK_SWITCH = "adblock_switch";
+ private static final String PREF_ADBLOCK_EDIT = "adblock_edit";
+
+ private Preference mAdBlockEdit;
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ getActivity().setTitle(R.string.options_adblock_title);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.adblock_preferences);
+
+ ChromeSwitchPreference mAdBlockSwitch =
+ (ChromeSwitchPreference) findPreference(PREF_ADBLOCK_SWITCH);
+ boolean isAdBlockEnabled = !WebsitePreferenceBridge.isCategoryEnabled(ContentSettingsType.ADS);
+ mAdBlockSwitch.setChecked(isAdBlockEnabled);
+ mAdBlockSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
+ WebsitePreferenceBridge.setCategoryEnabled(ContentSettingsType.ADS, !(boolean) newValue);
+ return true;
+ });
+
+ mAdBlockEdit = findPreference(PREF_ADBLOCK_EDIT);
+ updateCurrentAdBlockUrl();
+ }
+
+ private void updateCurrentAdBlockUrl() {
+ mAdBlockEdit.setSummary(FeatureUtilities.getAdBlockFiltersURL());
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ updateCurrentAdBlockUrl();
+ }
+}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -9734,6 +9734,16 @@ Please help our engineers fix this problem. Tell us what happened right before y
Never show this again.
</message>
+ <!-- Ad Blocking preferences -->
+ <if expr="is_android">
+ <message name="IDS_OPTIONS_ADBLOCK_TITLE" desc="The title of the Ad Blocking option on Android" formatter_data="android_java">
+ Ad Blocking
+ </message>
+ <message name="IDS_OPTIONS_ADBLOCK_SUMMARY" desc="The title of the Ad Blocking summary on Android" formatter_data="android_java">
+ Configure Ad Blocking and filters URL
+ </message>
+ </if>
+
<!-- Ad Blocking UI strings. -->
<message name="IDS_ALWAYS_ALLOW_ADS" desc="Explanation associated with a toggle to allow ads after ads have been blocked on the page. To be used on pages where the ad blocking UI is governed by a persistent permissions-based whitelist.">
Always allow ads on this site
diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
--- a/chrome/browser/android/feature_utilities.cc
+++ b/chrome/browser/android/feature_utilities.cc
@@ -56,6 +56,14 @@ std::string GetReachedCodeProfilerTrialGroup() {
} // namespace android
} // namespace chrome
+static ScopedJavaLocalRef<jstring> JNI_FeatureUtilities_GetAdBlockFiltersURL(JNIEnv* env) {
+ return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kAdBlockFiltersURL));
+}
+
+static void JNI_FeatureUtilities_SetAdBlockFiltersURL(JNIEnv* env, const JavaParamRef<jstring>& url) {
+ g_browser_process->local_state()->SetString(prefs::kAdBlockFiltersURL, base::android::ConvertJavaStringToUTF8(env, url));
+}
+
static void JNI_FeatureUtilities_SetCustomTabVisible(
JNIEnv* env,
jboolean visible) {
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -1030,7 +1030,8 @@ BrowserProcessImpl::adblock_updater() {
adblock_updater_ = std::make_unique<adblock_updater::AdBlockUpdaterService>(
g_browser_process->system_network_context_manager()->GetSharedURLLoaderFactory(),
std::move(scheduler),
- g_browser_process->subresource_filter_ruleset_service());
+ g_browser_process->subresource_filter_ruleset_service(),
+ local_state()->GetString(prefs::kAdBlockFiltersURL));
return adblock_updater_.get();
}
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -409,6 +409,8 @@ SystemNetworkContextManager::SystemNetworkContextManager(
ssl_config_service_manager_(
SSLConfigServiceManager::CreateDefaultManager(local_state_)),
proxy_config_monitor_(local_state_) {
+ local_state_->SetDefaultPrefValue(prefs::kAdBlockFiltersURL,
+ base::Value("https://www.bromite.org/filters/filters.dat"));
#if !defined(OS_ANDROID)
// QuicAllowed was not part of Android policy.
const base::Value* value =
@@ -512,6 +514,7 @@ SystemNetworkContextManager::~SystemNetworkContextManager() {
}
void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
+ registry->RegisterStringPref(prefs::kAdBlockFiltersURL, std::string());
// Register the DnsClient and DoH preferences. The feature list has not been
// initialized yet, so setting the preference defaults here to reflect the
// corresponding features will only cause the preference defaults to reflect
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -893,6 +893,20 @@ Your Google account may have other forms of browsing history like searches and a
Captions
</message>
+ <!-- AdBlock settings -->
+ <message name="IDS_PREFS_ADBLOCK" desc="Title of the AdBlock Settings screen. [CHAR-LIMIT=32]">
+ AdBlock settings
+ </message>
+ <message name="IDS_OPTIONS_ADBLOCK_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used to fetch the ad blocker filters.">
+ Edit filters URL
+ </message>
+ <message name="IDS_OPTIONS_ADBLOCK_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used to fetch the ad blocker filters.">
+ Filters URL
+ </message>
+ <message name="IDS_ADBLOCK_HELP" desc="The title of the hyperlink that allows users to visit the web page with instructions for custom ad blocker filters.">
+ Visit help page
+ </message>
+
<!-- Site settings -->
<message name="IDS_PREFS_SITE_SETTINGS" desc="Title of the Website Settings screen. [CHAR-LIMIT=32]">
Site settings
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -1974,6 +1974,9 @@ const char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled";
// capture devices without prompt.
const char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls";
+// Holds the URL to an indexed subresource filters file.
+const char kAdBlockFiltersURL[] = "adblock.filters_url";
+
// A pref holding the value of the policy used to explicitly allow or deny
// access to video capture devices. When enabled or not set, the user is
// prompted for device access. When disabled, access to video capture devices
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -30,6 +30,7 @@ extern const char kDownloadRestrictions[];
extern const char kForceEphemeralProfiles[];
extern const char kHomePageIsNewTabPage[];
extern const char kHomePage[];
+extern const char kAdBlockFiltersURL[];
extern const char kImportantSitesDialogHistory[];
#if defined(OS_WIN)
extern const char kLastProfileResetTimestamp[];
diff --git a/components/component_updater/adblock_updater_service.cc b/components/component_updater/adblock_updater_service.cc
--- a/components/component_updater/adblock_updater_service.cc
+++ b/components/component_updater/adblock_updater_service.cc
@@ -46,12 +46,12 @@ const int initial_check_delay = 5,
next_check_delay = 60*60*24*7, // 1 week
on_demand_check_delay = 60; // minimum 1 minute between each on-demand check
-AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service)
+AdBlockUpdaterService::AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
+ subresource_filter::RulesetService* ruleset_service, std::string filters_url)
: ruleset_service_(ruleset_service), shared_url_network_factory_(shared_url_network_factory), scheduler_(std::move(scheduler)) {
DCHECK(ruleset_service);
- //TODO: retrieve filters URL from config/prefs
- filters_url_ = "https://www.bromite.org/filters/filters.dat";
+ filters_url_ = filters_url;
}
AdBlockUpdaterService::~AdBlockUpdaterService() {
diff --git a/components/component_updater/adblock_updater_service.h b/components/component_updater/adblock_updater_service.h
--- a/components/component_updater/adblock_updater_service.h
+++ b/components/component_updater/adblock_updater_service.h
@@ -54,7 +54,8 @@ class Observer {
// All methods are safe to call ONLY from the browser's main thread.
class AdBlockUpdaterService {
public:
- AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler, subresource_filter::RulesetService* ruleset_service);
+ AdBlockUpdaterService(scoped_refptr<network::SharedURLLoaderFactory> shared_url_network_factory, std::unique_ptr<component_updater::UpdateScheduler> scheduler,
+ subresource_filter::RulesetService* ruleset_service, std::string filters_url);
~AdBlockUpdaterService();
// Adds an observer for this class. An observer should not be added more
--
2.17.1
@@ -0,0 +1,124 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 7 Sep 2019 15:07:42 +0200
Subject: Add option to not persist tabs across sessions
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../browser/settings/privacy/PrivacyPreferences.java | 12 ++++++++++++
.../ui/android/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 29 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
@@ -63,6 +63,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
@@ -34,6 +34,11 @@
android:title="@string/allow_custom_tab_intents_title"
android:summary="@string/allow_custom_tab_intents_summary"
android:defaultValue="false" />
+ <org.chromium.chrome.browser.settings.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" />
<Preference
android:key="clear_browsing_data"
android:title="@string/clear_browsing_data_title"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1144,8 +1144,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
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/settings/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.settings.privacy;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v7.preference.CheckBoxPreference;
@@ -13,6 +14,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import org.chromium.base.ContextUtils;
import org.chromium.base.BuildInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
@@ -36,6 +38,7 @@ public class PrivacyPreferences
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
private static final String PREF_DO_NOT_TRACK = "do_not_track";
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
@@ -84,6 +87,10 @@ public class PrivacyPreferences
sharedPreferencesEditor.apply();
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
PrefServiceBridge.getInstance().setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
+ sharedPreferencesEditor.apply();
}
return true;
@@ -128,6 +135,11 @@ public class PrivacyPreferences
? R.string.text_on
: R.string.text_off);
}
+
+ ChromeBaseCheckBoxPreference closeTabsOnExitPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
+ closeTabsOnExitPref.setOnPreferenceChangeListener(this);
+ closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
}
private ManagedPreferenceDelegate createManagedPreferenceDelegate() {
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3733,6 +3733,12 @@ The site does NOT gain access to the camera. The camera images are only visible
<message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
IMAGE
</message>
+ <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.17.1
@@ -0,0 +1,205 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 18 Mar 2019 21:47:12 +0100
Subject: Add option to use home page as NTP
Use about:blank as default homepage
---
.../java/res/xml/homepage_preferences.xml | 5 ++++
.../HomepageManager.java | 24 +++++++++++++++++--
.../browser/settings/HomepagePreferences.java | 10 ++++++++
.../browser/tabmodel/TabCreatorManager.java | 11 +++++++--
.../strings/android_chrome_strings.grd | 3 +++
chrome/browser/ui/browser_ui_prefs.cc | 2 ++
chrome/common/pref_names.cc | 4 ++++
chrome/common/pref_names.h | 1 +
8 files changed, 56 insertions(+), 4 deletions(-)
diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml
--- a/chrome/android/java/res/xml/homepage_preferences.xml
+++ b/chrome/android/java/res/xml/homepage_preferences.xml
@@ -6,6 +6,11 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
+ <org.chromium.chrome.browser.settings.ChromeSwitchPreference
+ android:key="ntp_is_homepage_switch"
+ android:summaryOn="@string/options_ntp_is_homepage_label"
+ android:summaryOff="@string/options_ntp_is_homepage_label" />
+
<org.chromium.chrome.browser.settings.ChromeSwitchPreference
android:key="homepage_switch"
android:summaryOn="@string/text_on"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
@@ -31,6 +31,7 @@ public class HomepageManager {
}
private static final String PREF_HOMEPAGE_ENABLED = "homepage";
+ public static final String PREF_NTP_IS_HOMEPAGE = "newtabpage_is_homepage";
private static final String PREF_HOMEPAGE_CUSTOM_URI = "homepage_custom_uri";
private static final String PREF_HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled";
@@ -90,7 +91,8 @@ public class HomepageManager {
*/
public static boolean shouldCloseAppWithZeroTabs() {
return HomepageManager.isHomepageEnabled()
- && !NewTabPage.isNTPUrl(HomepageManager.getHomepageUri());
+ && !NewTabPage.isNTPUrl(HomepageManager.getHomepageUri())
+ && (HomepageManager.getHomepageUri() != UrlConstants.CHROME_BLANK_URL);
}
/**
@@ -111,7 +113,7 @@ public class HomepageManager {
* if the homepage button is force enabled via flag.
*/
public static String getDefaultHomepageUri() {
- return UrlConstants.NTP_NON_NATIVE_URL;
+ return UrlConstants.CHROME_BLANK_URL;
}
/**
@@ -124,6 +126,14 @@ public class HomepageManager {
return mSharedPreferences.getBoolean(PREF_HOMEPAGE_ENABLED, true);
}
+ /**
+ * Returns the user preference for whether the New Tab Page is the homepage or not.
+ *
+ */
+ public boolean getPrefNTPIsHomepageEnabled() {
+ return mSharedPreferences.getBoolean(PREF_NTP_IS_HOMEPAGE, false);
+ }
+
/**
* Sets the user preference for whether the homepage is enabled.
*/
@@ -137,6 +147,16 @@ public class HomepageManager {
notifyHomepageUpdated();
}
+ /**
+ * Sets the user preference for whether the new tab page is the homepage or not.
+ */
+ public void setPrefNTPIsHomepageEnabled(boolean enabled) {
+ SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
+ sharedPreferencesEditor.putBoolean(PREF_NTP_IS_HOMEPAGE, enabled);
+ sharedPreferencesEditor.apply();
+ notifyHomepageUpdated();
+ }
+
/**
* @return User specified homepage custom URI string.
*/
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java
@@ -21,6 +21,7 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
@VisibleForTesting
public static final String PREF_HOMEPAGE_SWITCH = "homepage_switch";
private static final String PREF_HOMEPAGE_EDIT = "homepage_edit";
+ private static final String PREF_NTP_HOMEPAGE_SWITCH = "ntp_is_homepage_switch";
private HomepageManager mHomepageManager;
private Preference mHomepageEdit;
@@ -46,6 +47,15 @@ public class HomepagePreferences extends PreferenceFragmentCompat {
});
}
+ ChromeSwitchPreference mNTPIsHomepageSwitch =
+ (ChromeSwitchPreference) findPreference(PREF_NTP_HOMEPAGE_SWITCH);
+ boolean isHomepageNTPEnabled = mHomepageManager.getPrefNTPIsHomepageEnabled();
+ mNTPIsHomepageSwitch.setChecked(isHomepageNTPEnabled);
+ mNTPIsHomepageSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
+ mHomepageManager.setPrefNTPIsHomepageEnabled((boolean) newValue);
+ return true;
+ });
+
mHomepageEdit = findPreference(PREF_HOMEPAGE_EDIT);
updateCurrentHomepageUrl();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
@@ -12,6 +12,7 @@ import org.chromium.chrome.browser.tab.TabState;
import org.chromium.chrome.browser.util.UrlConstants;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.WebContents;
+import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
/**
* An interface to return a {@link TabCreator} either for regular or incognito tabs.
@@ -85,12 +86,18 @@ public interface TabCreatorManager {
}
/**
- * Creates a new tab and loads the NTP.
+ * Creates a new tab and loads the NTP or the homepage, depending on user preferences.
*/
public final void launchNTP() {
try {
+ String newTabURL;
+ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) {
+ newTabURL = HomepageManager.getHomepageUri();
+ } else {
+ newTabURL = UrlConstants.NTP_URL;
+ }
TraceEvent.begin("TabCreator.launchNTP");
- launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
+ launchUrl(newTabURL, TabLaunchType.FROM_CHROME_UI);
} finally {
TraceEvent.end("TabCreator.launchNTP");
}
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -698,6 +698,9 @@ CHAR-LIMIT guidelines:
<message name="IDS_NOTIFICATIONS_CONTENT_SUGGESTIONS_SUMMARY_DISABLED" desc="Summary for the disabled preference to turn on/off content suggestions notifications when search and site suggestions are disabled.">
Search and site suggestions disabled
</message>
+ <message name="IDS_OPTIONS_NTP_IS_HOMEPAGE_LABEL" desc="The label for switch that allows the user to toggle whether opening a new tab leads to the new tab page or the home page.">
+ Use for new tabs
+ </message>
<!-- always incognito -->
<message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -55,6 +55,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
GetHomeButtonAndHomePageIsNewTabPageFlags());
registry->RegisterBooleanPref(prefs::kShowHomeButton, false,
GetHomeButtonAndHomePageIsNewTabPageFlags());
+ registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false,
+ GetHomeButtonAndHomePageIsNewTabPageFlags());
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
bool reset_check_default = false;
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -59,6 +59,10 @@ const char kForceEphemeralProfiles[] = "profile.ephemeral_mode";
// A boolean specifying whether the New Tab page is the home page or not.
const char kHomePageIsNewTabPage[] = "homepage_is_newtabpage";
+// A boolean specifying whether opening a new tab should open the Home page
+// instead of the New Tab page.
+const char kNewTabPageIsHomePage[] = "newtabpage_is_homepage";
+
// This is the URL of the page to load when opening new tabs.
const char kHomePage[] = "homepage";
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -323,6 +323,7 @@ extern const char kSettingsShowOSBanner[];
extern const char kDeviceLoginScreenWebUsbAllowDevicesForUrls[];
#endif // defined(OS_CHROMEOS)
extern const char kShowHomeButton[];
+extern const char kNewTabPageIsHomePage[];
extern const char kSpeechRecognitionFilterProfanities[];
extern const char kAllowDeletingBrowserHistory[];
#if !defined(OS_ANDROID)
--
2.17.1
@@ -0,0 +1,220 @@
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 ++
.../java/res/xml/website_preferences.xml | 7 +++++
.../website/SingleCategoryPreferences.java | 21 ++++++++++++-
.../preferences/pref_service_bridge.cc | 31 +++++++++++++++++++
.../preferences/PrefServiceBridge.java | 10 ++++++
.../strings/android_chrome_strings.grd | 6 ++++
6 files changed, 77 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
@@ -32,6 +32,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
@@ -32,6 +32,13 @@
android:title="@string/website_settings_category_notifications_quiet"
android:defaultValue="false"
android:persistent="false" />
+ <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
+ <org.chromium.chrome.browser.settings.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.settings.ChromeBaseCheckBoxPreference
android:key="notifications_vibrate"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
@@ -130,6 +130,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
// Keys for category-specific preferences (toggle, link, button etc.), dynamically shown.
public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
+ 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 NOTIFICATIONS_QUIET_UI_TOGGLE_KEY = "notifications_quiet_ui";
public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
@@ -479,6 +480,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
if (type == SiteSettingsCategory.Type.COOKIES) {
updateThirdPartyCookiesCheckBox();
+ updateCookiesSessionOnlyCheckBox();
} else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
updateNotificationsSecondaryControls();
}
@@ -517,6 +519,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
int setting = (int) newValue;
WebsitePreferenceBridge.setContentSetting(mCategory.getContentSettingsType(), setting);
getInfoForOrigins();
+ } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
+ PrefServiceBridge.getInstance().setCookiesSessionOnlyEnabled((boolean) newValue);
} else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setBoolean(
Pref.BLOCK_THIRD_PARTY_COOKIES, ((boolean) newValue));
@@ -828,6 +832,8 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
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 notificationsQuietUi = screen.findPreference(NOTIFICATIONS_QUIET_UI_TOGGLE_KEY);
Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
@@ -860,6 +866,7 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
if (hideSecondaryToggles) {
screen.removePreference(thirdPartyCookies);
+ screen.removePreference(cookiesSessionOnly);
screen.removePreference(notificationsVibrate);
screen.removePreference(notificationsQuietUi);
screen.removePreference(explainProtectedMediaKey);
@@ -871,12 +878,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
return;
}
- // Configure/hide the third-party cookies toggle, as needed.
+ // Configure/hide the third-party cookies toggle and session-only cookie toggle, as needed.
if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
thirdPartyCookies.setOnPreferenceChangeListener(this);
updateThirdPartyCookiesCheckBox();
+ cookiesSessionOnly.setOnPreferenceChangeListener(this);
+ updateCookiesSessionOnlyCheckBox();
} else {
screen.removePreference(thirdPartyCookies);
+ screen.removePreference(cookiesSessionOnly);
}
// Configure/hide the notifications secondary controls, as needed.
@@ -990,6 +1000,15 @@ public class SingleCategoryPreferences extends PreferenceFragmentCompat
}
}
+ private void updateCookiesSessionOnlyCheckBox() {
+ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
+ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ cookiesSessionOnlyPref.setChecked(
+ PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
+ cookiesSessionOnlyPref.setEnabled(WebsitePreferenceBridge.isCategoryEnabled(
+ ContentSettingsType.COOKIES));
+ }
+
private void updateThirdPartyCookiesCheckBox() {
ChromeBaseCheckBoxPreference thirdPartyCookiesPref =
(ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
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
@@ -13,10 +13,17 @@
#include "chrome/browser/android/preferences/prefs.h"
#include "chrome/browser/preferences/jni_headers/PrefServiceBridge_jni.h"
#include "chrome/browser/profiles/profile_manager.h"
+#include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
+//#include "components/content_settings/core/common/content_settings_types.h"
#include "components/prefs/pref_service.h"
namespace {
+Profile* GetOriginalProfile() {
+ return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
+}
+
PrefService* GetPrefService() {
return ProfileManager::GetActiveUserProfile()
->GetOriginalProfile()
@@ -84,3 +91,27 @@ static jboolean JNI_PrefServiceBridge_IsManagedPreference(
return GetPrefService()->IsManagedPreference(
PrefServiceBridge::GetPrefNameExposedToJava(j_pref_index));
}
+static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ auto value = host_content_settings_map->GetDefaultContentSetting(ContentSettingsType::COOKIES, nullptr);
+ auto enabled = CONTENT_SETTING_SESSION_ONLY == value;
+ LOG(INFO) << "GetCookiesSessionOnly := " << enabled << " (raw_value = " << value << ")";
+ return enabled;
+}
+
+static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const base::android::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(
+ ContentSettingsType::COOKIES,
+ enabled ? CONTENT_SETTING_SESSION_ONLY : CONTENT_SETTING_ALLOW);
+}
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -82,6 +82,13 @@ public class PrefServiceBridge {
PrefServiceBridgeJni.get().setString(preference, value);
}
+ public boolean isCookiesSessionOnlyEnabled() {
+ return PrefServiceBridgeJni.get().getCookiesSessionOnlyEnabled(PrefServiceBridge.this);
+ }
+ public void setCookiesSessionOnlyEnabled(boolean enabled) {
+ PrefServiceBridgeJni.get().setCookiesSessionOnlyEnabled(PrefServiceBridge.this, enabled);
+ }
+
/**
* @param preference The name of the preference.
* @return Whether the specified preference is managed.
@@ -97,6 +104,8 @@ public class PrefServiceBridge {
@NativeMethods
interface Natives {
+ boolean getCookiesSessionOnlyEnabled(PrefServiceBridge caller);
+ void setCookiesSessionOnlyEnabled(PrefServiceBridge caller, boolean enabled);
boolean getBoolean(int preference);
void setBoolean(int preference, boolean value);
int getInteger(int preference);
@@ -106,3 +115,4 @@ public class PrefServiceBridge {
boolean isManagedPreference(int preference);
}
}
+
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -898,6 +898,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_BLOCK_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Block Third Party Cookies preference">
Prevent third-party websites from saving and reading cookie data
</message>
+ <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>
--
2.17.1
@@ -0,0 +1,520 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 23 Nov 2019 10:55:16 +0100
Subject: Add user setting for DNS-over-HTTPS (DoH) custom URL
---
chrome/android/chrome_java_sources.gni | 2 +
chrome/android/java/res/layout/doh_editor.xml | 65 +++++++++++++
chrome/android/java/res/values/values.xml | 2 +
.../android/java/res/xml/doh_preferences.xml | 25 +++++
.../java/res/xml/privacy_preferences.xml | 5 +
.../browser/flags/FeatureUtilities.java | 24 +++++
.../chrome/browser/settings/DoHEditor.java | 92 +++++++++++++++++++
.../browser/settings/DoHPreferences.java | 54 +++++++++++
chrome/app/generated_resources.grd | 6 ++
chrome/browser/android/feature_utilities.cc | 23 +++++
.../net/system_network_context_manager.cc | 46 +++-------
.../strings/android_chrome_strings.grd | 11 +++
chrome/common/chrome_features.cc | 4 +-
13 files changed, 322 insertions(+), 37 deletions(-)
create mode 100644 chrome/android/java/res/layout/doh_editor.xml
create mode 100644 chrome/android/java/res/xml/doh_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -1335,6 +1335,8 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/settings/ChromeSwitchPreference.java",
"java/src/org/chromium/chrome/browser/settings/ClearBrowsingDataCheckBoxPreference.java",
"java/src/org/chromium/chrome/browser/settings/ExpandablePreferenceGroup.java",
+ "java/src/org/chromium/chrome/browser/settings/DoHEditor.java",
+ "java/src/org/chromium/chrome/browser/settings/DoHPreferences.java",
"java/src/org/chromium/chrome/browser/settings/HomepageEditor.java",
"java/src/org/chromium/chrome/browser/settings/HomepagePreferences.java",
"java/src/org/chromium/chrome/browser/settings/HyperlinkPreference.java",
diff --git a/chrome/android/java/res/layout/doh_editor.xml b/chrome/android/java/res/layout/doh_editor.xml
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/layout/doh_editor.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style license that can be
+ found in the LICENSE file. -->
+
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:id="@+id/scroll_view"
+ android:fillViewport="true" >
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:focusableInTouchMode="true" >
+
+ <org.chromium.chrome.browser.widget.ChromeTextInputLayout
+ android:id="@+id/doh_url"
+ style="@style/PreferenceScreenLayout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" >
+ <!-- TODO(crbug.com/900912): Fix and remove lint ignore -->
+ <EditText
+ tools:ignore="Autofill"
+ android:id="@+id/doh_url_edit"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:inputType="textUri"
+ android:singleLine="true"
+ android:hint="@string/options_doh_edit_label" />
+ </org.chromium.chrome.browser.widget.ChromeTextInputLayout>
+
+ <Space style="@style/ButtonBarTopSpacer" />
+ <View style="@style/ButtonBarTopDivider" />
+
+ <LinearLayout style="@style/ButtonBar" >
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/doh_reset"
+ style="@style/ButtonBarButton"
+ android:text="@string/reset" />
+
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/doh_cancel"
+ style="@style/ButtonBarButton"
+ android:text="@string/cancel" />
+
+ <org.chromium.ui.widget.ButtonCompat
+ android:id="@+id/doh_save"
+ style="@style/ButtonBarButton"
+ android:text="@string/save" />
+ </LinearLayout>
+ </LinearLayout>
+ </ScrollView>
+
+ <include layout="@layout/preferences_action_bar_shadow"/>
+
+</FrameLayout>
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -91,6 +91,8 @@
<integer name="download_infobar_bar_fill_in_delay">400</integer>
<integer name="download_infobar_bar_fill_out_delay">200</integer>
+ <string name="doh_help_url">https://www.bromite.org/doh</string>
+
<!-- Bottom navigation bar styling. -->
<bool name="window_light_navigation_bar">true</bool>
diff --git a/chrome/android/java/res/xml/doh_preferences.xml b/chrome/android/java/res/xml/doh_preferences.xml
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/xml/doh_preferences.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2015 The Chromium Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style license that can be
+ found in the LICENSE file. -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <org.chromium.chrome.browser.settings.ChromeSwitchPreference
+ android:key="doh_switch"
+ android:summaryOn="@string/text_on"
+ android:summaryOff="@string/text_off" />
+
+ <org.chromium.chrome.browser.settings.HyperlinkPreference
+ android:key="doh_help"
+ android:title="@string/doh_help"
+ app:url="@string/doh_help_url" />
+
+ <Preference
+ android:key="doh_edit"
+ android:title="@string/options_doh_edit_label"
+ android:fragment="org.chromium.chrome.browser.settings.DoHEditor" />
+
+</PreferenceScreen>
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -19,6 +19,11 @@
android:key="can_make_payment"
android:title="@string/can_make_payment_title"
android:summary="@string/settings_can_make_payment_toggle_label" />
+ <Preference
+ android:fragment="org.chromium.chrome.browser.settings.DoHPreferences"
+ android:key="doh"
+ android:title="@string/options_doh_title"
+ android:summary="@string/options_doh_summary" />
<org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference
android:key="preload_pages"
android:title="@string/preload_pages_title"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
@@ -95,6 +95,26 @@ public class FeatureUtilities {
FeatureUtilitiesJni.get().setCustomTabVisible(visible);
}
+ /**
+ * Records whether custom URL for DoH is enabled with native-side feature utilities.
+ * @param url Whether custom URL is enabled or not.
+ */
+ public static void setDoHEnabled(boolean enabled) {
+ FeatureUtilitiesJni.get().setDoHEnabled(enabled);
+ }
+
+ public static boolean getDoHEnabled() {
+ return FeatureUtilitiesJni.get().getDoHEnabled();
+ }
+
+ public static void setDoHTemplates(String t) {
+ FeatureUtilitiesJni.get().setDoHTemplates(t);
+ }
+
+ public static String getDoHTemplates() {
+ return FeatureUtilitiesJni.get().getDoHTemplates();
+ }
+
/**
* Records whether the activity is in multi-window mode with native-side feature utilities.
* @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
@@ -736,6 +756,10 @@ public class FeatureUtilities {
void setCustomTabVisible(boolean visible);
void setActivityType(@ActivityType int type);
void setIsInMultiWindowMode(boolean isInMultiWindowMode);
+ void setDoHEnabled(boolean enabled);
+ boolean getDoHEnabled();
+ void setDoHTemplates(String templates);
+ String getDoHTemplates();
boolean isNetworkServiceWarmUpEnabled();
void setAdBlockFiltersURL(String url);
String getAdBlockFiltersURL();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHEditor.java
@@ -0,0 +1,92 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.settings;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.EditText;
+
+import org.chromium.chrome.browser.settings.SettingsUtils;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
+import org.chromium.chrome.R;
+import org.chromium.components.url_formatter.UrlFormatter;
+
+/**
+ * Provides the Java-UI for editing the DNS-over-HTTPS (DoH) preference.
+ */
+public class DoHEditor extends Fragment implements TextWatcher {
+ private EditText mDoHUrlEdit;
+ private Button mSaveButton;
+ private Button mResetButton;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getActivity().setTitle(R.string.options_doh_edit_title);
+
+ View v = inflater.inflate(R.layout.doh_editor, container, false);
+ View scrollView = v.findViewById(R.id.scroll_view);
+ scrollView.getViewTreeObserver().addOnScrollChangedListener(
+ SettingsUtils.getShowShadowOnScrollListener(v, v.findViewById(R.id.shadow)));
+ mDoHUrlEdit = (EditText) v.findViewById(R.id.doh_url_edit);
+ mDoHUrlEdit.setText(FeatureUtilities.getDoHTemplates());
+ mDoHUrlEdit.addTextChangedListener(this);
+ mDoHUrlEdit.requestFocus();
+
+ initializeSaveCancelResetButtons(v);
+ return v;
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ mSaveButton.setEnabled(s.length() != 0);
+ mResetButton.setEnabled(true);
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ }
+
+ private void initializeSaveCancelResetButtons(View v) {
+ mResetButton = (Button) v.findViewById(R.id.doh_reset);
+ mResetButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mDoHUrlEdit.setText(FeatureUtilities.getDoHTemplates());
+ getActivity().finish();
+ }
+ });
+
+ mSaveButton = (Button) v.findViewById(R.id.doh_save);
+ mSaveButton.setEnabled(false);
+ mSaveButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ FeatureUtilities.setDoHTemplates(
+ mDoHUrlEdit.getText().toString());
+ getActivity().finish();
+ }
+ });
+
+ Button button = (Button) v.findViewById(R.id.doh_cancel);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ getActivity().finish();
+ }
+ });
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/DoHPreferences.java
@@ -0,0 +1,54 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.settings;
+
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceFragmentCompat;
+import org.chromium.chrome.browser.settings.ChromeSwitchPreference;
+
+import org.chromium.chrome.browser.settings.SettingsUtils;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
+import androidx.annotation.VisibleForTesting;
+import org.chromium.chrome.R;
+
+/**
+ * Fragment that allows the user to configure DoH related preferences.
+ */
+public class DoHPreferences extends PreferenceFragmentCompat {
+ @VisibleForTesting
+ public static final String PREF_DOH_SWITCH = "doh_switch";
+ private static final String PREF_DOH_EDIT = "doh_edit";
+
+ private Preference mDoHEdit;
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ getActivity().setTitle(R.string.options_doh_title);
+ SettingsUtils.addPreferencesFromResource(this, R.xml.doh_preferences);
+
+ ChromeSwitchPreference mDoHSwitch =
+ (ChromeSwitchPreference) findPreference(PREF_DOH_SWITCH);
+ boolean isDoHEnabled = FeatureUtilities.getDoHEnabled();
+ mDoHSwitch.setChecked(isDoHEnabled);
+ mDoHSwitch.setOnPreferenceChangeListener((preference, newValue) -> {
+ FeatureUtilities.setDoHEnabled((boolean) newValue);
+ return true;
+ });
+
+ mDoHEdit = findPreference(PREF_DOH_EDIT);
+ updateCurrentDoHUrl();
+ }
+
+ private void updateCurrentDoHUrl() {
+ mDoHEdit.setSummary(FeatureUtilities.getDoHTemplates());
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ updateCurrentDoHUrl();
+ }
+}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -6699,6 +6699,12 @@ the Bookmarks menu.">
<message name="IDS_OPTIONS_HOMEPAGE_TITLE" desc="The title of the home page overlay on Android" formatter_data="android_java">
Home page
</message>
+ <message name="IDS_OPTIONS_DOH_TITLE" desc="The title of the DNS-over-HTTPS option on Android" formatter_data="android_java">
+ Secure DNS
+ </message>
+ <message name="IDS_OPTIONS_DOH_SUMMARY" desc="The title of the DNS-over-HTTPS summary on Android" formatter_data="android_java">
+ Configure DNS-over-HTTPS (DoH) secure DNS
+ </message>
</if>
<!-- Autofill dialog: field labels. -->
diff --git a/chrome/browser/android/feature_utilities.cc b/chrome/browser/android/feature_utilities.cc
--- a/chrome/browser/android/feature_utilities.cc
+++ b/chrome/browser/android/feature_utilities.cc
@@ -7,6 +7,9 @@
#include "chrome/android/chrome_jni_headers/FeatureUtilities_jni.h"
#include "base/android/jni_string.h"
+#include "chrome/browser/browser_process.h"
+#include "components/prefs/pref_service.h"
+#include "chrome/common/pref_names.h"
#include "chrome/browser/ntp_snippets/content_suggestions_service_factory.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "components/ntp_snippets/content_suggestions_service.h"
@@ -87,3 +90,23 @@ static jboolean JNI_FeatureUtilities_IsNetworkServiceWarmUpEnabled(
return content::IsOutOfProcessNetworkService() &&
base::FeatureList::IsEnabled(features::kWarmUpNetworkProcess);
}
+
+static jboolean JNI_FeatureUtilities_GetDoHEnabled(JNIEnv* env) {
+ std::string doh_mode = g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsMode);
+ return ((doh_mode == "secure") || (doh_mode == "auto"));
+}
+
+static void JNI_FeatureUtilities_SetDoHEnabled(JNIEnv* env, jboolean enabled) {
+ if (enabled)
+ g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsMode, "secure");
+ else
+ g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsMode, "off");
+}
+
+static ScopedJavaLocalRef<jstring> JNI_FeatureUtilities_GetDoHTemplates(JNIEnv* env) {
+ return base::android::ConvertUTF8ToJavaString(env, g_browser_process->local_state()->GetString(prefs::kDnsOverHttpsTemplates));
+}
+
+static void JNI_FeatureUtilities_SetDoHTemplates(JNIEnv* env, const JavaParamRef<jstring>& templates) {
+ g_browser_process->local_state()->SetString(prefs::kDnsOverHttpsTemplates, base::android::ConvertJavaStringToUTF8(env, templates));
+}
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -139,9 +139,14 @@ void GetStubResolverConfig(
std::string doh_templates =
local_state->GetString(prefs::kDnsOverHttpsTemplates);
- std::string server_method;
- if (!doh_templates.empty() &&
- *secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
+ if (doh_templates.empty()) {
+ *secure_dns_mode = net::DnsConfig::SecureDnsMode::OFF;
+ doh_mode = chrome_browser_net::kDnsOverHttpsModeOff;
+ }
+
+ LOG(INFO) << "DoH templates: '" << doh_templates << "' with mode " << doh_mode;
+ if (*secure_dns_mode != net::DnsConfig::SecureDnsMode::OFF) {
+ std::string server_method;
for (const std::string& server_template :
SplitString(doh_templates, " ", base::TRIM_WHITESPACE,
base::SPLIT_WANT_NONEMPTY)) {
@@ -429,40 +434,11 @@ SystemNetworkContextManager::SystemNetworkContextManager(
// features before registering change callbacks for these preferences.
local_state_->SetDefaultPrefValue(prefs::kBuiltInDnsClientEnabled,
base::Value(ShouldEnableAsyncDns()));
- std::string default_doh_mode = chrome_browser_net::kDnsOverHttpsModeOff;
- std::string default_doh_templates = "";
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
- if (features::kDnsOverHttpsFallbackParam.Get()) {
- default_doh_mode = chrome_browser_net::kDnsOverHttpsModeAutomatic;
- } else {
- default_doh_mode = chrome_browser_net::kDnsOverHttpsModeSecure;
- }
- default_doh_templates = features::kDnsOverHttpsTemplatesParam.Get();
- }
+ //NOTE: DoH fallback feature to insecure mode is not evaluated
local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsMode,
- base::Value(default_doh_mode));
+ base::Value(chrome_browser_net::kDnsOverHttpsModeOff));
local_state_->SetDefaultPrefValue(prefs::kDnsOverHttpsTemplates,
- base::Value(default_doh_templates));
-
- // If the user has explicitly enabled or disabled the DoH experiment in
- // chrome://flags, store that choice in the user prefs so that it can be
- // persisted after the experiment ends. Also make sure to remove the stored
- // prefs value if the user has changed their chrome://flags selection to the
- // default.
- flags_ui::PrefServiceFlagsStorage flags_storage(local_state_);
- std::set<std::string> entries = flags_storage.GetFlags();
- if (entries.count("dns-over-https@1")) {
- // The user has "Enabled" selected.
- local_state_->SetString(prefs::kDnsOverHttpsMode,
- chrome_browser_net::kDnsOverHttpsModeAutomatic);
- } else if (entries.count("dns-over-https@2")) {
- // The user has "Disabled" selected.
- local_state_->SetString(prefs::kDnsOverHttpsMode,
- chrome_browser_net::kDnsOverHttpsModeOff);
- } else {
- // The user has "Default" selected.
- local_state_->ClearPref(prefs::kDnsOverHttpsMode);
- }
+ base::Value(features::kDnsOverHttpsTemplatesParam.Get()));
PrefChangeRegistrar::NamedChangeCallback dns_pref_callback =
base::BindRepeating(&OnStubResolverConfigChanged,
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -674,6 +674,17 @@ CHAR-LIMIT guidelines:
Chrome Passwords
</message>
+ <!-- DoH preferences -->
+ <message name="IDS_OPTIONS_DOH_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that is used for DNS-over-HTTPS queries.">
+ Edit DoH template URLs
+ </message>
+ <message name="IDS_OPTIONS_DOH_EDIT_LABEL" desc="The label for the edit text field that allows the user to change the URL that is used for DNS-over-HTTPS queries.">
+ DoH template URLs
+ </message>
+ <message name="IDS_DOH_HELP" desc="The title of the hyperlink that allows users to visit the wiki page with instructions for DNS-over-HTTPS configuration.">
+ Visit help page
+ </message>
+
<!-- Homepage preferences -->
<message name="IDS_OPTIONS_HOMEPAGE_EDIT_TITLE" desc="The title of the screen that allows users to change the URL that opens when they tap on the home page button in the omnibox.">
Edit home page
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -303,12 +303,12 @@ const char kDisallowUnsafeHttpDownloadsParamName[] = "MimeTypeList";
// Enable DNS over HTTPS (DoH).
const base::Feature kDnsOverHttps{"DnsOverHttps",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
// Set whether fallback to insecure DNS is allowed by default. This setting may
// be overridden for individual transactions.
const base::FeatureParam<bool> kDnsOverHttpsFallbackParam{&kDnsOverHttps,
- "Fallback", true};
+ "Fallback", false};
// Supply one or more space-separated DoH server URI templates to use when this
// feature is enabled. If no templates are specified, then a hardcoded mapping
--
2.17.1
@@ -0,0 +1,61 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 19 Dec 2019 22:52:53 +0100
Subject: Allow building without feed support
---
.../start_surface/StartSurfaceCoordinator.java | 5 -----
.../start_surface/StartSurfaceMediator.java | 17 -----------------
2 files changed, 22 deletions(-)
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceCoordinator.java
@@ -214,11 +214,6 @@ public class StartSurfaceCoordinator implements StartSurface {
mBottomBarCoordinator = new BottomBarCoordinator(
mActivity, mActivity.getCompositorViewHolder(), mPropertyModel);
}
-
- mExploreSurfaceCoordinator = new ExploreSurfaceCoordinator(mActivity,
- mSurfaceMode == SurfaceMode.SINGLE_PANE ? mTasksSurface.getBodyViewContainer()
- : mActivity.getCompositorViewHolder(),
- mPropertyModel, mSurfaceMode == SurfaceMode.SINGLE_PANE);
}
private TabSwitcher.Controller initializeSecondaryTasksSurface() {
diff --git a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
--- a/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
+++ b/chrome/android/features/start_surface/internal/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java
@@ -415,15 +415,6 @@ class StartSurfaceMediator
assert (isShownState(shownState));
setOverviewState(shownState);
- // Make sure FeedSurfaceCoordinator is built before the explore surface is showing by
- // default.
- if (mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)
- && mPropertyModel.get(FEED_SURFACE_COORDINATOR) == null
- && !mActivityStateChecker.isFinishingOrDestroyed()) {
- mPropertyModel.set(FEED_SURFACE_COORDINATOR,
- mFeedSurfaceCreator.createFeedSurfaceCoordinator(
- mNightModeStateProvider.isInNightMode()));
- }
mTabModelSelector.addObserver(mTabModelSelectorObserver);
if (mFullScreenListener != null) {
@@ -536,14 +527,6 @@ class StartSurfaceMediator
private void setExploreSurfaceVisibility(boolean isVisible) {
if (isVisible == mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)) return;
- if (isVisible && mPropertyModel.get(IS_SHOWING_OVERVIEW)
- && mPropertyModel.get(FEED_SURFACE_COORDINATOR) == null
- && !mActivityStateChecker.isFinishingOrDestroyed()) {
- mPropertyModel.set(FEED_SURFACE_COORDINATOR,
- mFeedSurfaceCreator.createFeedSurfaceCoordinator(
- mNightModeStateProvider.isInNightMode()));
- }
-
mPropertyModel.set(IS_EXPLORE_SURFACE_VISIBLE, isVisible);
if (mOverviewModeState == OverviewModeState.SHOWN_TABSWITCHER_TWO_PANES) {
--
2.17.1
@@ -0,0 +1,53 @@
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 | 12 +++++++++++-
media/blink/webmediaplayer_impl.h | 2 ++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -962,6 +962,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());
@@ -3283,7 +3289,11 @@ bool WebMediaPlayerImpl::ShouldPausePlaybackWhenHidden() const {
// Audio only stream is allowed to play when in background.
// TODO: We should check IsBackgroundOptimizationCandidate here. But we need
// to move the logic of checking video frames out of that function.
- if (!HasVideo())
+
+ //pipeline_metadata_.has_video is true for MediaPlayerRenderer,
+ //see media/base/pipeline_metadata.h. This is a workaround to allow audio
+ //streams be played in background.
+ if (!HasVideoNonEmptySize())
return false;
if (!is_background_video_playback_enabled_)
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h
--- a/media/blink/webmediaplayer_impl.h
+++ b/media/blink/webmediaplayer_impl.h
@@ -145,6 +145,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.17.1
@@ -0,0 +1,24 @@
From: xsmile <xsmile@users.noreply.github.com>
Date: Thu, 11 Oct 2018 21:29:35 +0200
Subject: Allow website sign-in without account sign-in
Disable prefs::kSigninAllowedOnNextStartup by default. The setting can be found in chrome://settings
---
chrome/browser/signin/account_consistency_mode_manager.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc
--- a/chrome/browser/signin/account_consistency_mode_manager.cc
+++ b/chrome/browser/signin/account_consistency_mode_manager.cc
@@ -120,7 +120,7 @@ void AccountConsistencyModeManager::RegisterProfilePrefs(
registry->RegisterBooleanPref(prefs::kAccountConsistencyMirrorRequired,
false);
#endif
- registry->RegisterBooleanPref(prefs::kSigninAllowedOnNextStartup, true);
+ registry->RegisterBooleanPref(prefs::kSigninAllowedOnNextStartup, false);
}
// static
--
2.17.1
@@ -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
@@ -244,14 +244,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.17.1
@@ -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
@@ -247,7 +247,7 @@ void OnAuthPrefsChanged(PrefService* local_state,
// Android this includes checking the Android version in the field trial.
bool ShouldEnableAsyncDns() {
bool feature_can_be_enabled = true;
-#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
@@ -564,7 +564,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.17.1
@@ -0,0 +1,131 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 28 Dec 2019 10:23:04 +0100
Subject: Always show site settings for cookies, javascript and ads
Avoid displaying info about intrusive ads
---
.../website/SingleWebsitePreferences.java | 46 +++++++++----------
.../browser/settings/website/Website.java | 20 ++++++++
2 files changed, 42 insertions(+), 24 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
@@ -46,6 +46,7 @@ import java.util.Set;
*/
public class SingleWebsitePreferences extends PreferenceFragmentCompat
implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
+ public static final String TAG = "SingleWebsitePreferences";
// SingleWebsitePreferences expects either EXTRA_SITE (a Website) or
// EXTRA_SITE_ADDRESS (a WebsiteAddress) to be present (but not both). If
// EXTRA_SITE is present, the fragment will display the permissions in that
@@ -345,7 +346,24 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
} else if (i == ContentSettingException.Type.SOUND) {
setUpSoundPreference(preference);
} else {
- setUpListPreference(preference, mSite.getContentSettingPermission(i));
+ // some Bromite-specific overrides for the defaults
+ @ContentSettingValues
+ @Nullable
+ Integer permission = mSite.getContentSettingPermission(i);
+ // initialize cookie and javascript with the category global defaults
+ if (permission == null) {
+ if (i == ContentSettingException.Type.COOKIE)
+ permission = WebsitePreferenceBridge.isCategoryEnabled(
+ ContentSettingsType.COOKIES)
+ ? ContentSettingValues.ALLOW
+ : ContentSettingValues.BLOCK;
+ else if (i == ContentSettingException.Type.JAVASCRIPT)
+ permission = WebsitePreferenceBridge.isCategoryEnabled(
+ ContentSettingsType.JAVASCRIPT)
+ ? ContentSettingValues.ALLOW
+ : ContentSettingValues.BLOCK;
+ }
+ setUpListPreference(preference, permission);
}
return;
}
@@ -640,17 +658,8 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
}
private void setUpAdsInformationalBanner() {
- // Add the informational banner which shows at the top of the UI if ad blocking is
- // activated on this site.
- boolean adBlockingActivated = SiteSettingsCategory.adsCategoryEnabled()
- && WebsitePreferenceBridge.getAdBlockingActivated(mSite.getAddress().getOrigin())
- && findPreference(PERMISSION_PREFERENCE_KEYS[ContentSettingException.Type.ADS])
- != null;
-
- if (!adBlockingActivated) {
- removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO);
- removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO_DIVIDER);
- }
+ removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO);
+ removePreferenceSafely(PREF_INTRUSIVE_ADS_INFO_DIVIDER);
}
private SiteSettingsCategory getWarningCategory() {
@@ -725,6 +734,7 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
// TODO(crbug.com/735110): Figure out if this is the correct thing to do - here we are
// effectively treating non-ALLOW values as BLOCK.
int index = (value == ContentSettingValues.ALLOW ? 0 : 1);
+
listPreference.setValueIndex(index);
listPreference.setOnPreferenceChangeListener(this);
listPreference.setSummary("%s");
@@ -794,22 +804,10 @@ public class SingleWebsitePreferences extends PreferenceFragmentCompat
setUpListPreference(preference, null);
return;
}
- // If the ad blocker is activated, then this site will have ads blocked unless there is an
- // explicit permission disallowing the blocking.
- boolean activated =
- WebsitePreferenceBridge.getAdBlockingActivated(mSite.getAddress().getOrigin());
@ContentSettingValues
@Nullable
Integer permission = mSite.getContentSettingPermission(ContentSettingException.Type.ADS);
- // If |permission| is null, there is no explicit (non-default) permission set for this site.
- // If the site is not considered a candidate for blocking, do the standard thing and remove
- // the preference.
- if (permission == null && !activated) {
- setUpListPreference(preference, null);
- return;
- }
-
// However, if the blocking is activated, we still want to show the permission, even if it
// is in the default state.
if (permission == null) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
@@ -166,6 +166,26 @@ public class Website implements Serializable {
new ContentSettingException(ContentSettingsType.ADS,
getAddress().getOrigin(), ContentSettingValues.BLOCK, "");
}
+ } else if (type == ContentSettingException.Type.COOKIE) {
+ // It is possible to set the permission without having an existing exception,
+ // because we can show the ALLOW state even when this permission is set to the
+ // default. In that case, just set an exception now to ALLOW to enable changing the
+ // permission.
+ if (mContentSettingException[type] == null) {
+ mContentSettingException[type] =
+ new ContentSettingException(ContentSettingsType.COOKIES,
+ getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
+ }
+ } else if (type == ContentSettingException.Type.JAVASCRIPT) {
+ // It is possible to set the permission without having an existing exception,
+ // because we can show the ALLOW state even when this permission is set to the
+ // default. In that case, just set an exception now to ALLOW to enable changing the
+ // permission.
+ if (mContentSettingException[type] == null) {
+ mContentSettingException[type] =
+ new ContentSettingException(ContentSettingsType.JAVASCRIPT,
+ getAddress().getOrigin(), ContentSettingValues.ALLOW, "");
+ }
} else if (type == ContentSettingException.Type.SOUND) {
// It is possible to set the permission without having an existing exception,
// because we always show the sound permission in Site Settings.
--
2.17.1
@@ -0,0 +1,26 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 27 Jun 2018 11:02:38 +0200
Subject: Always use new tab page for default home page
Ignore any partner-provided home page.
---
.../chrome/browser/partnercustomizations/HomepageManager.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/partnercustomizations/HomepageManager.java
@@ -111,9 +111,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.17.1
@@ -0,0 +1,59 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 25 Mar 2018 21:49:37 +0200
Subject: AudioBuffer, AnalyserNode: fingerprinting mitigations via IDL
Truncate base latency precision to two digits
---
.../blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
.../blink/renderer/modules/webaudio/audio_buffer.idl | 4 ++--
.../blink/renderer/modules/webaudio/audio_context.cc | 4 +++-
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
--- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
@@ -43,10 +43,10 @@ interface AnalyserNode : AudioNode {
// Copies the current frequency data into the passed array.
// If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
- [HighEntropy, Measure] void getFloatFrequencyData(Float32Array array);
- [HighEntropy, Measure] void getByteFrequencyData(Uint8Array array);
+ //[HighEntropy, Measure] void getFloatFrequencyData(Float32Array array);
+ //[HighEntropy, Measure] void getByteFrequencyData(Uint8Array array);
// Real-time waveform data
- [HighEntropy, Measure] void getFloatTimeDomainData(Float32Array array);
- [HighEntropy, Measure] void getByteTimeDomainData(Uint8Array array);
+ //[HighEntropy, Measure] void getFloatTimeDomainData(Float32Array array);
+ //[HighEntropy, Measure] 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
@@ -39,7 +39,7 @@
// Channel access
readonly attribute unsigned long numberOfChannels;
- [HighEntropy, Measure, RaisesException] Float32Array getChannelData(unsigned long channelIndex);
- [HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long bufferOffset = 0);
+ //[HighEntropy, Measure, RaisesException] Float32Array getChannelData(unsigned long channelIndex);
+ //[HighEntropy, Measure, RaisesException] void copyFromChannel(Float32Array destination, long channelNumber, optional unsigned long bufferOffset = 0);
[RaisesException] void copyToChannel(Float32Array source, long channelNumber, optional unsigned long bufferOffset = 0);
};
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
@@ -373,7 +373,9 @@ double AudioContext::baseLatency() const {
DCHECK(IsMainThread());
DCHECK(destination());
- return base_latency_;
+ // remove precision past two decimal digits
+ int l = base_latency_ * 100;
+ return double(l)/100;
}
MediaElementAudioSourceNode* AudioContext::createMediaElementSource(
--
2.17.1
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,65 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 22 Mar 2018 22:11:57 +0100
Subject: Battery API: return nothing
Include @thestinger's fix for correct charging/unknown values
---
.../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
@@ -45,45 +45,28 @@ ScriptPromise BatteryManager::StartRequest(ScriptState* script_state) {
}
bool BatteryManager::charging() {
- return battery_status_.Charging();
+ return true;
}
double BatteryManager::chargingTime() {
- return battery_status_.charging_time();
+ return 0.0;
}
double BatteryManager::dischargingTime() {
- return battery_status_.discharging_time();
+ return std::numeric_limits<double>::infinity();
}
double BatteryManager::level() {
- return battery_status_.Level();
+ return 1.0;
}
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 = To<Document>(GetExecutionContext());
- DCHECK(document);
- if (document->IsContextPaused() || document->IsContextDestroyed())
- return;
-
- if (battery_status_.Charging() != old_status.Charging())
- DispatchEvent(*Event::Create(event_type_names::kChargingchange));
- if (battery_status_.charging_time() != old_status.charging_time())
- DispatchEvent(*Event::Create(event_type_names::kChargingtimechange));
- if (battery_status_.discharging_time() != old_status.discharging_time())
- DispatchEvent(*Event::Create(event_type_names::kDischargingtimechange));
- if (battery_status_.Level() != old_status.Level())
- DispatchEvent(*Event::Create(event_type_names::kLevelchange));
}
void BatteryManager::RegisterWithDispatcher() {
--
2.17.1
@@ -0,0 +1,319 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 30 Oct 2019 11:50:13 +0100
Subject: Block all connection requests with 'qjz9zk' in the domain name or
with a 'trk:' scheme.
An info bar is displayed unless the --disable-trkbar command-line flag or the chrome://flag option is used.
This patch is based on Iridium's 'net: add "trk:" scheme and help identify URLs being retrieved'
---
.../chrome_autocomplete_scheme_classifier.cc | 1 +
chrome/browser/history/history_utils.cc | 1 +
chrome/browser/ui/singleton_tabs.cc | 3 +-
.../browser/url_request_context_factory.cc | 7 +++-
.../omnibox/browser/autocomplete_input.cc | 7 ++--
components/url_formatter/url_fixer.cc | 4 +++
.../child_process_security_policy_impl.cc | 1 +
net/BUILD.gn | 2 ++
net/url_request/trk_protocol_handler.cc | 26 +++++++++++++++
net/url_request/trk_protocol_handler.h | 33 +++++++++++++++++++
net/url_request/url_request.cc | 8 +++++
.../url_request_context_builder.cc | 4 +++
url/url_constants.cc | 1 +
url/url_constants.h | 1 +
url/url_util.cc | 2 ++
15 files changed, 97 insertions(+), 4 deletions(-)
create mode 100644 net/url_request/trk_protocol_handler.cc
create mode 100644 net/url_request/trk_protocol_handler.h
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
@@ -28,6 +28,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme(
if (base::IsStringASCII(scheme) &&
(ProfileIOData::IsHandledProtocol(scheme) ||
base::LowerCaseEqualsASCII(scheme, content::kViewSourceScheme) ||
+ base::LowerCaseEqualsASCII(scheme, url::kTraceScheme) ||
base::LowerCaseEqualsASCII(scheme, url::kJavaScriptScheme) ||
base::LowerCaseEqualsASCII(scheme, url::kDataScheme))) {
return metrics::OmniboxInputType::URL;
diff --git a/chrome/browser/history/history_utils.cc b/chrome/browser/history/history_utils.cc
--- a/chrome/browser/history/history_utils.cc
+++ b/chrome/browser/history/history_utils.cc
@@ -22,6 +22,7 @@ bool CanAddURLToHistory(const GURL& url) {
url.SchemeIs(content::kChromeDevToolsScheme) ||
url.SchemeIs(content::kChromeUIScheme) ||
url.SchemeIs(content::kViewSourceScheme) ||
+ url.SchemeIs(url::kTraceScheme) ||
url.SchemeIs(chrome::kChromeNativeScheme) ||
url.SchemeIs(chrome::kChromeSearchScheme) ||
url.SchemeIs(dom_distiller::kDomDistillerScheme) ||
diff --git a/chrome/browser/ui/singleton_tabs.cc b/chrome/browser/ui/singleton_tabs.cc
--- a/chrome/browser/ui/singleton_tabs.cc
+++ b/chrome/browser/ui/singleton_tabs.cc
@@ -100,7 +100,8 @@ int GetIndexOfExistingTab(Browser* browser, const NavigateParams& params) {
// Skip view-source tabs. This is needed because RewriteURLIfNecessary
// removes the "view-source:" scheme which leads to incorrect matching.
- if (tab_url.SchemeIs(content::kViewSourceScheme))
+ if (tab_url.SchemeIs(content::kViewSourceScheme) ||
+ tab_url.SchemeIs(url::kTraceScheme))
continue;
GURL rewritten_tab_url = tab_url;
diff --git a/chromecast/browser/url_request_context_factory.cc b/chromecast/browser/url_request_context_factory.cc
--- a/chromecast/browser/url_request_context_factory.cc
+++ b/chromecast/browser/url_request_context_factory.cc
@@ -40,6 +40,7 @@
#include "net/proxy_resolution/proxy_resolution_service.h"
#include "net/quic/quic_context.h"
#include "net/ssl/ssl_config_service_defaults.h"
+#include "net/url_request/trk_protocol_handler.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
#include "net/url_request/url_request_context_getter.h"
@@ -248,13 +249,17 @@ void URLRequestContextFactory::InitializeMainContextDependencies(
new net::URLRequestJobFactoryImpl());
// Keep ProtocolHandlers added in sync with
// CastContentBrowserClient::IsHandledURL().
+ bool set_protocol = false;
for (content::ProtocolHandlerMap::iterator it = protocol_handlers->begin();
it != protocol_handlers->end();
++it) {
- bool set_protocol =
+ set_protocol =
job_factory->SetProtocolHandler(it->first, std::move(it->second));
DCHECK(set_protocol);
}
+ set_protocol = job_factory->SetProtocolHandler(
+ url::kTraceScheme, base::WrapUnique(new net::TrkProtocolHandler));
+ DCHECK(set_protocol);
// Set up interceptors in the reverse order.
std::unique_ptr<net::URLRequestJobFactory> top_job_factory =
diff --git a/components/omnibox/browser/autocomplete_input.cc b/components/omnibox/browser/autocomplete_input.cc
--- a/components/omnibox/browser/autocomplete_input.cc
+++ b/components/omnibox/browser/autocomplete_input.cc
@@ -496,7 +496,8 @@ void AutocompleteInput::ParseForEmphasizeComponents(
// For the view-source and blob schemes, we should emphasize the host of the
// URL qualified by the view-source or blob prefix.
if ((base::LowerCaseEqualsASCII(scheme_str, kViewSourceScheme) ||
- base::LowerCaseEqualsASCII(scheme_str, url::kBlobScheme)) &&
+ base::LowerCaseEqualsASCII(scheme_str, url::kBlobScheme) ||
+ base::LowerCaseEqualsASCII(scheme_str, url::kTraceScheme)) &&
(static_cast<int>(text.length()) > after_scheme_and_colon)) {
// Obtain the URL prefixed by view-source or blob and parse it.
base::string16 real_url(text.substr(after_scheme_and_colon));
@@ -569,7 +570,9 @@ int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) {
bool AutocompleteInput::HasHTTPScheme(const base::string16& input) {
std::string utf8_input(base::UTF16ToUTF8(input));
url::Component scheme;
- if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme, &scheme)) {
+ if (url::FindAndCompareScheme(utf8_input, url::kTraceScheme, &scheme)) {
+ return false;
+ } else if (url::FindAndCompareScheme(utf8_input, kViewSourceScheme, &scheme)) {
utf8_input.erase(0, scheme.end() + 1);
}
return url::FindAndCompareScheme(utf8_input, url::kHttpScheme, nullptr);
diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/url_fixer.cc
--- a/components/url_formatter/url_fixer.cc
+++ b/components/url_formatter/url_fixer.cc
@@ -552,6 +552,10 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
}
}
+ if (scheme == url::kTraceScheme) {
+ return GURL();
+ }
+
// We handle the file scheme separately.
if (scheme == url::kFileScheme)
return GURL(parts.scheme.is_valid() ? text : FixupPath(text));
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc
--- a/content/browser/child_process_security_policy_impl.cc
+++ b/content/browser/child_process_security_policy_impl.cc
@@ -617,6 +617,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
#endif // BUILDFLAG(ENABLE_WEBSOCKETS)
RegisterWebSafeScheme(url::kFtpScheme);
RegisterWebSafeScheme(url::kDataScheme);
+ RegisterWebSafeScheme(url::kTraceScheme);
RegisterWebSafeScheme("feed");
// TODO(nick): https://crbug.com/651534 blob: and filesystem: schemes embed
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1662,6 +1662,8 @@ component("net") {
"url_request/report_sender.h",
"url_request/static_http_user_agent_settings.cc",
"url_request/static_http_user_agent_settings.h",
+ "url_request/trk_protocol_handler.cc",
+ "url_request/trk_protocol_handler.h",
"url_request/url_fetcher.cc",
"url_request/url_fetcher.h",
"url_request/url_fetcher_core.cc",
diff --git a/net/url_request/trk_protocol_handler.cc b/net/url_request/trk_protocol_handler.cc
new file mode 100644
--- /dev/null
+++ b/net/url_request/trk_protocol_handler.cc
@@ -0,0 +1,26 @@
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/url_request/trk_protocol_handler.h"
+
+#include "base/logging.h"
+#include "net/base/net_errors.h"
+#include "net/url_request/url_request_error_job.h"
+
+namespace net {
+
+TrkProtocolHandler::TrkProtocolHandler() = default;
+
+URLRequestJob* TrkProtocolHandler::MaybeCreateJob(
+ URLRequest* request, NetworkDelegate* network_delegate) const {
+ LOG(ERROR) << "Blocked URL in TrkProtocolHandler: " << request->original_url();
+ return new URLRequestErrorJob(
+ request, network_delegate, ERR_BLOCKED_BY_CLIENT);
+}
+
+bool TrkProtocolHandler::IsSafeRedirectTarget(const GURL& location) const {
+ return true;
+}
+
+} // namespace net
diff --git a/net/url_request/trk_protocol_handler.h b/net/url_request/trk_protocol_handler.h
new file mode 100644
--- /dev/null
+++ b/net/url_request/trk_protocol_handler.h
@@ -0,0 +1,33 @@
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
+#define NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
+
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "net/base/net_export.h"
+#include "net/url_request/url_request_job_factory.h"
+
+namespace net {
+
+class URLRequestJob;
+
+// Implements a ProtocolHandler for Trk jobs.
+class NET_EXPORT TrkProtocolHandler
+ : public URLRequestJobFactory::ProtocolHandler {
+ public:
+ TrkProtocolHandler();
+ URLRequestJob* MaybeCreateJob(
+ URLRequest* request,
+ NetworkDelegate* network_delegate) const override;
+ bool IsSafeRedirectTarget(const GURL& location) const override;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(TrkProtocolHandler);
+};
+
+} // namespace net
+
+#endif // NET_URL_REQUEST_TRK_PROTOCOL_HANDLER_H_
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -13,6 +13,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/rand_util.h"
#include "base/stl_util.h"
+#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/synchronization/lock.h"
#include "base/threading/thread_task_runner_handle.h"
@@ -40,6 +41,7 @@
#include "net/url_request/url_request_redirect_job.h"
#include "url/gurl.h"
#include "url/origin.h"
+#include "url/url_constants.h"
using base::Time;
using std::string;
@@ -579,6 +581,12 @@ URLRequest::URLRequest(const GURL& url,
// Sanity check out environment.
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
+ if (!url.SchemeIs(url::kTraceScheme) &&
+ base::EndsWith(url.host(), "qjz9zk", base::CompareCase::INSENSITIVE_ASCII)) {
+ LOG(ERROR) << "Block URL in URLRequest: " << url;
+ url_chain_[0] = GURL(url::kTraceScheme + (":" + url.possibly_invalid_spec()));
+ }
+
context->url_requests()->insert(this);
net_log_.BeginEvent(NetLogEventType::REQUEST_ALIVE, [&] {
return NetLogURLRequestConstructorParams(url, priority_,
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc
--- a/net/url_request/url_request_context_builder.cc
+++ b/net/url_request/url_request_context_builder.cc
@@ -40,6 +40,7 @@
#include "net/quic/quic_stream_factory.h"
#include "net/ssl/ssl_config_service_defaults.h"
#include "net/url_request/static_http_user_agent_settings.h"
+#include "net/url_request/trk_protocol_handler.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_storage.h"
#include "net/url_request/url_request_intercepting_job_factory.h"
@@ -649,6 +650,9 @@ std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() {
}
url_request_interceptors_.clear();
}
+ job_factory->SetProtocolHandler(url::kTraceScheme,
+ std::make_unique<TrkProtocolHandler>());
+
if (create_intercepting_job_factory_) {
top_job_factory = std::move(create_intercepting_job_factory_)
.Run(std::move(top_job_factory));
diff --git a/url/url_constants.cc b/url/url_constants.cc
--- a/url/url_constants.cc
+++ b/url/url_constants.cc
@@ -28,6 +28,7 @@ const char kMailToScheme[] = "mailto";
// See also: https://www.iana.org/assignments/uri-schemes/prov/quic-transport
const char kQuicTransportScheme[] = "quic-transport";
const char kTelScheme[] = "tel";
+const char kTraceScheme[] = "trk";
const char kWsScheme[] = "ws";
const char kWssScheme[] = "wss";
diff --git a/url/url_constants.h b/url/url_constants.h
--- a/url/url_constants.h
+++ b/url/url_constants.h
@@ -32,6 +32,7 @@ COMPONENT_EXPORT(URL) extern const char kJavaScriptScheme[];
COMPONENT_EXPORT(URL) extern const char kMailToScheme[];
COMPONENT_EXPORT(URL) extern const char kQuicTransportScheme[];
COMPONENT_EXPORT(URL) extern const char kTelScheme[];
+COMPONENT_EXPORT(URL) extern const char kTraceScheme[];
COMPONENT_EXPORT(URL) extern const char kWsScheme[];
COMPONENT_EXPORT(URL) extern const char kWssScheme[];
diff --git a/url/url_util.cc b/url/url_util.cc
--- a/url/url_util.cc
+++ b/url/url_util.cc
@@ -27,6 +27,7 @@ struct SchemeRegistry {
std::vector<SchemeWithType> standard_schemes = {
{kHttpsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
{kHttpScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
+ {kTraceScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION},
// Yes, file URLs can have a hostname, so file URLs should be handled as
// "standard". File URLs never have a port as specified by the SchemeType
// field. Unlike other SCHEME_WITH_HOST schemes, the 'host' in a file
@@ -64,6 +65,7 @@ struct SchemeRegistry {
kAboutScheme,
kJavaScriptScheme,
kDataScheme,
+ kTraceScheme,
};
// Schemes that can be sent CORS requests.
--
2.17.1
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,23 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Fri, 24 Jan 2020 09:46:48 +0100
Subject: Disable DRM media origin IDs preprovisioning
---
media/base/media_switches.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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
@@ -476,7 +476,7 @@ const base::Feature kMediaDrmPersistentLicense{
// MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs
// which will trigger provisioning process after MediaDrmBridge is created.
const base::Feature kMediaDrmPreprovisioning{"MediaDrmPreprovisioning",
- base::FEATURE_ENABLED_BY_DEFAULT};
+ base::FEATURE_DISABLED_BY_DEFAULT};
// Determines if MediaDrmOriginIdManager should attempt to pre-provision origin
// IDs at startup (whenever a profile is loaded). Also used by tests that
--
2.17.1
@@ -0,0 +1,54 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 27 Oct 2019 10:21:19 +0100
Subject: Disable HEAD requests for single-word Omnibar searches
Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment-526873727
---
.../ui/omnibox/chrome_omnibox_navigation_observer.cc | 8 ++++----
.../ui/omnibox/chrome_omnibox_navigation_observer.h | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
--- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
+++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.cc
@@ -86,8 +86,8 @@ ChromeOmniboxNavigationObserver::ChromeOmniboxNavigationObserver(
shortcuts_backend_(ShortcutsBackendFactory::GetForProfile(profile)),
load_state_(LOAD_NOT_SEEN),
fetch_state_(FETCH_NOT_COMPLETE) {
- if (alternate_nav_match_.destination_url.is_valid())
- CreateLoader(alternate_nav_match_.destination_url);
+// if (alternate_nav_match_.destination_url.is_valid())
+// CreateLoader(alternate_nav_match_.destination_url);
// We need to start by listening to AllSources, since we don't know which tab
// the navigation might occur in.
@@ -287,7 +287,7 @@ void ChromeOmniboxNavigationObserver::OnAllLoadingFinished() {
delete this;
}
-void ChromeOmniboxNavigationObserver::CreateLoader(
+/*void ChromeOmniboxNavigationObserver::CreateLoader(
const GURL& destination_url) {
net::NetworkTrafficAnnotationTag traffic_annotation =
net::DefineNetworkTrafficAnnotation("omnibox_navigation_observer", R"(
@@ -328,4 +328,4 @@ void ChromeOmniboxNavigationObserver::CreateLoader(
loader_->SetAllowHttpErrorResults(true);
loader_->SetOnRedirectCallback(base::BindRepeating(
&ChromeOmniboxNavigationObserver::OnURLRedirect, base::Unretained(this)));
-}
+}*/
diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
--- a/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
+++ b/chrome/browser/ui/omnibox/chrome_omnibox_navigation_observer.h
@@ -127,7 +127,7 @@ class ChromeOmniboxNavigationObserver : public OmniboxNavigationObserver,
// Creates a URL loader for |destination_url| and stores it in |loader_|.
// Does not start the loader.
- void CreateLoader(const GURL& destination_url);
+ //void CreateLoader(const GURL& destination_url);
const base::string16 text_;
const AutocompleteMatch match_;
--
2.17.1
@@ -0,0 +1,47 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 12 Oct 2017 08:15:17 +0200
Subject: Disable NTP remote suggestions by default
---
components/ntp_snippets/features.cc | 4 ++--
.../remote/remote_suggestions_status_service_impl.cc | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc
--- a/components/ntp_snippets/features.cc
+++ b/components/ntp_snippets/features.cc
@@ -39,7 +39,7 @@ const base::Feature* const kAllFeatures[] = {
&kOptionalImagesEnabledFeature};
const base::Feature kArticleSuggestionsFeature{
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
+ "NTPArticleSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kRemoteSuggestionsEmulateM58FetchingSchedule{
"RemoteSuggestionsEmulateM58FetchingSchedule",
@@ -69,7 +69,7 @@ const char kNotificationsDailyLimit[] = "daily_limit";
const char kNotificationsIgnoredLimitParam[] = "ignored_limit";
const base::Feature kKeepPrefetchedContentSuggestions{
- "KeepPrefetchedContentSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
+ "KeepPrefetchedContentSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kOptionalImagesEnabledFeature{
"NTPRemoteSuggestionsOptionalImages", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc b/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc
--- a/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_status_service_impl.cc
@@ -36,8 +36,8 @@ RemoteSuggestionsStatusServiceImpl::~RemoteSuggestionsStatusServiceImpl() =
// static
void RemoteSuggestionsStatusServiceImpl::RegisterProfilePrefs(
PrefRegistrySimple* registry) {
- registry->RegisterBooleanPref(prefs::kEnableSnippets, true);
- registry->RegisterBooleanPref(prefs::kArticlesListVisible, true);
+ registry->RegisterBooleanPref(prefs::kEnableSnippets, false);
+ registry->RegisterBooleanPref(prefs::kArticlesListVisible, false);
}
void RemoteSuggestionsStatusServiceImpl::Init(
--
2.17.1
@@ -0,0 +1,50 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 26 Nov 2017 23:11:56 +0100
Subject: Disable Omaha update checks
Do not consider Jelly Bean unsupported
---
.../java/src/org/chromium/chrome/browser/omaha/OmahaBase.java | 2 +-
.../org/chromium/chrome/browser/omaha/VersionNumberGetter.java | 2 +-
chrome/browser/android/chrome_feature_list.cc | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
@@ -136,7 +136,7 @@ public class OmahaBase {
/** See {@link #sIsDisabled}. */
static boolean isDisabled() {
- return sIsDisabled;
+ return true;
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
@@ -43,7 +43,7 @@ public class VersionNumberGetter {
private static VersionNumberGetter sInstanceForTests;
/** If false, OmahaClient will never report that a newer version is available. */
- private static boolean sEnableUpdateDetection = true;
+ private static boolean sEnableUpdateDetection = false;
protected VersionNumberGetter() { }
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -464,7 +464,7 @@ const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kJellyBeanSupported{"JellyBeanSupported",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kSearchEnginePromoExistingDevice{
"SearchEnginePromo.ExistingDevice", base::FEATURE_ENABLED_BY_DEFAULT};
--
2.17.1
@@ -1,24 +1,28 @@
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) {
@@ -83,10 +83,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);
+ registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, false);
+ registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, false);
registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy,
- content::kWebRTCIPHandlingDefault);
+ content::kWebRTCIPHandlingDisableNonProxiedUdp);
- blink::kWebRTCIPHandlingDefault);
+ blink::kWebRTCIPHandlingDisableNonProxiedUdp);
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
#endif
registry->RegisterBooleanPref(prefs::kWebRtcEventLogCollectionAllowed, false);
registry->RegisterListPref(prefs::kWebRtcLocalIpsAllowedUrls);
--
2.17.1
@@ -0,0 +1,36 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 19 Dec 2019 21:46:10 +0100
Subject: Disable addresses autofill by default
---
.../autofill_assistant/AutofillAssistantPreferencesUtil.java | 2 +-
.../autofill_assistant/AutofillAssistantPreferences.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
--- a/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
+++ b/chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java
@@ -26,7 +26,7 @@ class AutofillAssistantPreferencesUtil {
/** Checks whether the Autofill Assistant switch preference in settings is on. */
static boolean isAutofillAssistantSwitchOn() {
return ContextUtils.getAppSharedPreferences().getBoolean(
- AutofillAssistantPreferences.PREF_AUTOFILL_ASSISTANT_SWITCH, true);
+ AutofillAssistantPreferences.PREF_AUTOFILL_ASSISTANT_SWITCH, false);
}
/** Checks whether the Autofill Assistant onboarding has been accepted. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/autofill_assistant/AutofillAssistantPreferences.java
@@ -48,7 +48,7 @@ public class AutofillAssistantPreferences extends PreferenceFragmentCompat {
// (e.g. the switch will say "On" when it is really turned off), so .setChecked() should be
// called after .addPreference()
autofillAssistantSwitch.setChecked(ContextUtils.getAppSharedPreferences().getBoolean(
- PREF_AUTOFILL_ASSISTANT_SWITCH, true));
+ PREF_AUTOFILL_ASSISTANT_SWITCH, false));
}
private Context getStyledContext() {
--
2.17.1
@@ -0,0 +1,34 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 12 Jun 2018 15:09:26 +0200
Subject: Disable all promo dialogs
---
.../chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java
@@ -183,7 +183,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
* displayed.
*/
private boolean triggerPromo() {
- try (TraceEvent e = TraceEvent.scoped("TabbedRootUiCoordinator.triggerPromo")) {
+ /*try (TraceEvent e = TraceEvent.scoped("TabbedRootUiCoordinator.triggerPromo")) {
SharedPreferencesManager preferenceManager = SharedPreferencesManager.getInstance();
// Promos can only be shown when we start with ACTION_MAIN intent and
// after FRE is complete. Native initialization can finish before the FRE flow is
@@ -214,8 +214,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator implements Native
preferenceManager.writeBoolean(
ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true);
}
- return isShowingPromo;
- }
+ return isShowingPromo; } */
+ return false;
}
private boolean maybeShowPromo() {
--
2.17.1
@@ -0,0 +1,210 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 20 May 2019 23:14:36 +0200
Subject: Disable dynamic module loading
---
chrome/android/chrome_java_sources.gni | 13 --------
.../browser/customtabs/CustomTabActivity.java | 18 -----------
.../CustomTabIntentDataProvider.java | 17 ++---------
.../customtabs/CustomTabsConnection.java | 30 -------------------
.../CustomTabActivityComponent.java | 4 ---
5 files changed, 2 insertions(+), 80 deletions(-)
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -426,19 +426,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/BaseCustomTabActivityComponent.java",
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java",
"java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityModule.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegatePostMessageBackend.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityHostImpl.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleConstants.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleCoordinator.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModulePageLoadObserver.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleToolbarController.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleHostImpl.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleLoader.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleMetrics.java",
- "java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ObjectWrapper.java",
"java/src/org/chromium/chrome/browser/customtabs/features/CustomTabNavigationBarController.java",
"java/src/org/chromium/chrome/browser/customtabs/features/ImmersiveModeController.java",
"java/src/org/chromium/chrome/browser/customtabs/features/toolbar/CustomTabBrowserControlsVisibilityDelegate.java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -40,7 +40,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler.Int
import org.chromium.chrome.browser.customtabs.content.TabCreationMode;
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityComponent;
import org.chromium.chrome.browser.customtabs.dependency_injection.CustomTabActivityModule;
-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController;
import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule;
import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
@@ -79,9 +78,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
private final CustomTabsConnection mConnection = CustomTabsConnection.getInstance();
- @Nullable
- private DynamicModuleCoordinator mDynamicModuleCoordinator;
-
private CustomTabNightModeStateController mNightModeStateController;
/**
@@ -217,12 +213,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
public void finishNativeInitialization() {
if (!mIntentDataProvider.isInfoPage()) FirstRunSignInProcessor.start(this);
- // Try to initialize dynamic module early to enqueue navigation events
- // @see DynamicModuleNavigationEventObserver
- if (mIntentDataProvider.isDynamicModuleEnabled()) {
- mDynamicModuleCoordinator = getComponent().resolveDynamicModuleCoordinator();
- }
-
mConnection.showSignInToastIfNecessary(mSession, getIntent());
if (isTaskRoot() && UsageStatsService.isEnabled()) {
@@ -259,10 +249,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
WebContents webContents = tab == null ? null : tab.getWebContents();
mConnection.resetPostMessageHandlerForSession(
mIntentDataProvider.getSession(), webContents);
-
- if (mDynamicModuleCoordinator != null) {
- mDynamicModuleCoordinator.resetPostMessageHandlersForCurrentSession(null);
- }
}
@Override
@@ -503,10 +489,6 @@ public class CustomTabActivity extends BaseCustomTabActivity<CustomTabActivityCo
if (mIntentDataProvider.isTrustedWebActivity()) {
component.resolveTrustedWebActivityCoordinator();
}
- if (mConnection.shouldHideTopBarOnModuleManagedUrlsForSession(
- mIntentDataProvider.getSession())) {
- component.resolveDynamicModuleToolbarController();
- }
return component;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -45,7 +45,6 @@ import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.ChromeVersionInfo;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.browserservices.BrowserServicesIntentDataProvider;
-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.ui.styles.ChromeColors;
@@ -824,20 +823,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
// even receive the extras for using the feature.
if (componentName == null) return false;
- if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE)) {
- Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
- ModuleMetrics.recordLoadResult(ModuleMetrics.LoadResult.FEATURE_DISABLED);
- return false;
- }
-
- ExternalAuthUtils authUtils = ChromeApplication.getComponent().resolveExternalAuthUtils();
- if (!authUtils.isGoogleSigned(componentName.getPackageName())) {
- Log.w(TAG, "The %s package is not Google-signed.", componentName.getPackageName());
- ModuleMetrics.recordLoadResult(ModuleMetrics.LoadResult.NOT_GOOGLE_SIGNED);
- return false;
- }
-
- return true;
+ Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
+ return false;
}
@Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -58,8 +58,6 @@ import org.chromium.chrome.browser.browserservices.Origin;
import org.chromium.chrome.browser.browserservices.PostMessageHandler;
import org.chromium.chrome.browser.browserservices.SessionDataHolder;
import org.chromium.chrome.browser.browserservices.SessionHandler;
-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleLoader;
-import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics;
import org.chromium.chrome.browser.device.DeviceClassManager;
import org.chromium.chrome.browser.init.ChainedTasks;
import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
@@ -220,7 +218,6 @@ public class CustomTabsConnection {
private volatile ChainedTasks mWarmupTasks;
- private @Nullable ModuleLoader mModuleLoader;
/**
* <strong>DO NOT CALL</strong>
* Public to be instanciable from {@link ChromeApplication}. This is however
@@ -1388,7 +1385,6 @@ public class CustomTabsConnection {
if (ChromeApplication.isSevereMemorySignal(level)) {
getInstance().mClientManager.cleanupUnusedSessions();
}
- if (getInstance().mModuleLoader != null) getInstance().mModuleLoader.onTrimMemory(level);
}
@VisibleForTesting
@@ -1524,32 +1520,6 @@ public class CustomTabsConnection {
recordSpeculationStatusOnSwap(SPECULATION_STATUS_ON_SWAP_BACKGROUND_TAB_NOT_MATCHED);
}
- public ModuleLoader getModuleLoader(ComponentName componentName, @Nullable String assetName) {
- if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE_DEX_LOADING)) {
- assetName = null;
- }
-
- if (mModuleLoader != null) {
- boolean isComponentNameChanged =
- !componentName.equals(mModuleLoader.getComponentName());
- boolean isAssetNameChanged =
- !TextUtils.equals(assetName, mModuleLoader.getDexAssetName());
- ModuleLoader.ModuleApkVersion newModuleApkVersion =
- ModuleLoader.ModuleApkVersion.getModuleVersion(componentName.getPackageName());
- boolean isModuleVersionChanged =
- !mModuleLoader.getModuleApkVersion().equals(newModuleApkVersion);
-
- if (isComponentNameChanged || isAssetNameChanged || isModuleVersionChanged) {
- mModuleLoader.destroyModule(ModuleMetrics.DestructionReason.MODULE_LOADER_CHANGED);
- mModuleLoader = null;
- }
- }
-
- if (mModuleLoader == null) mModuleLoader = new ModuleLoader(componentName, assetName);
-
- return mModuleLoader;
- }
-
@CalledByNative
public static void notifyClientOfDetachedRequestCompletion(
CustomTabsSessionToken session, String url, int status) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dependency_injection/CustomTabActivityComponent.java
@@ -17,8 +17,6 @@ import org.chromium.chrome.browser.customtabs.ReparentingTaskProvider;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabController;
import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabFactory;
import org.chromium.chrome.browser.customtabs.content.CustomTabIntentHandler;
-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleCoordinator;
-import org.chromium.chrome.browser.customtabs.dynamicmodule.DynamicModuleToolbarController;
import org.chromium.chrome.browser.customtabs.features.ImmersiveModeController;
import org.chromium.chrome.browser.customtabs.features.toolbar.CustomTabToolbarColorController;
import org.chromium.chrome.browser.dependency_injection.ActivityScope;
@@ -34,8 +32,6 @@ import dagger.Subcomponent;
@ActivityScope
public interface CustomTabActivityComponent extends BaseCustomTabActivityComponent {
TrustedWebActivityCoordinator resolveTrustedWebActivityCoordinator();
- DynamicModuleToolbarController resolveDynamicModuleToolbarController();
- DynamicModuleCoordinator resolveDynamicModuleCoordinator();
CustomTabBottomBarDelegate resolveBottomBarDelegate();
CustomTabActivityTabController resolveTabController();
--
2.17.1
@@ -0,0 +1,73 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 8 Jul 2018 18:16:34 +0200
Subject: Disable fetching of all field trials
---
.../chrome/browser/ChromeFeatureList.java | 15 +++------------
.../variations/service/variations_service.cc | 12 +-----------
2 files changed, 4 insertions(+), 23 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
@@ -108,10 +108,7 @@ public abstract class ChromeFeatureList {
*/
public static int getFieldTrialParamByFeatureAsInt(
String featureName, String paramName, int defaultValue) {
- if (sTestFeatures != null) return defaultValue;
- assert isInitialized();
- return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsInt(
- featureName, paramName, defaultValue);
+ return defaultValue;
}
/**
@@ -128,10 +125,7 @@ public abstract class ChromeFeatureList {
*/
public static double getFieldTrialParamByFeatureAsDouble(
String featureName, String paramName, double defaultValue) {
- if (sTestFeatures != null) return defaultValue;
- assert isInitialized();
- return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsDouble(
- featureName, paramName, defaultValue);
+ return defaultValue;
}
/**
@@ -148,10 +142,7 @@ public abstract class ChromeFeatureList {
*/
public static boolean getFieldTrialParamByFeatureAsBoolean(
String featureName, String paramName, boolean defaultValue) {
- if (sTestFeatures != null) return defaultValue;
- assert isInitialized();
- return ChromeFeatureListJni.get().getFieldTrialParamByFeatureAsBoolean(
- 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
@@ -241,17 +241,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
// Variations seed fetching is only enabled in official Chrome builds, if a URL
// is specified on the command line, and for testing.
bool IsFetchingEnabled() {
-#if !BUILDFLAG(GOOGLE_CHROME_BRANDING)
- 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.17.1
@@ -0,0 +1,66 @@
From: Daniel Micay <danielmicay@gmail.com>
Date: Thu, 4 Jul 2019 19:08:52 -0400
Subject: Disable media router and remoting by default
---
.../media/router/media_router_feature.cc | 17 ++++++++---------
chrome/browser/profiles/profile.cc | 2 +-
chrome/browser/profiles/profile_impl.cc | 2 +-
3 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
--- a/chrome/browser/media/router/media_router_feature.cc
+++ b/chrome/browser/media/router/media_router_feature.cc
@@ -51,17 +51,16 @@ const PrefService::Preference* GetMediaRouterPref(
bool MediaRouterEnabled(content::BrowserContext* context) {
#if defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
- const PrefService::Preference* pref = GetMediaRouterPref(context);
- // Only use the pref value if it set from a mandatory policy.
- if (pref->IsManaged() && !pref->IsDefaultValue()) {
- bool allowed = false;
- CHECK(pref->GetValue()->GetAsBoolean(&allowed));
- return allowed;
- }
-
// The component extension cannot be loaded in guest sessions.
// TODO(crbug.com/756243): Figure out why.
- return !Profile::FromBrowserContext(context)->IsGuestSession();
+ if (Profile::FromBrowserContext(context)->IsGuestSession()) {
+ return false;
+ }
+
+ const PrefService::Preference* pref = GetMediaRouterPref(context);
+ bool allowed = false;
+ pref->GetValue()->GetAsBoolean(&allowed);
+ return allowed;
#else // !(defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS))
return false;
#endif // defined(OS_ANDROID) || BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -232,7 +232,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
prefs::kMediaRouterFirstRunFlowAcknowledged,
false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
- registry->RegisterBooleanPref(prefs::kMediaRouterMediaRemotingEnabled, true);
+ registry->RegisterBooleanPref(prefs::kMediaRouterMediaRemotingEnabled, false);
registry->RegisterListPref(prefs::kMediaRouterTabMirroringSources);
registry->RegisterDictionaryPref(prefs::kWebShareVisitedTargets);
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -401,7 +401,7 @@ void ProfileImpl::RegisterProfilePrefs(
registry->RegisterStringPref(
prefs::kPrintPreviewDefaultDestinationSelectionRules, std::string());
registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);
- registry->RegisterBooleanPref(prefs::kEnableMediaRouter, true);
+ registry->RegisterBooleanPref(prefs::kEnableMediaRouter, false);
#if defined(OS_CHROMEOS)
registry->RegisterBooleanPref(
prefs::kOobeMarketingOptInScreenFinished, false,
--
2.17.1
@@ -0,0 +1,88 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 20 Feb 2019 21:41:26 +0100
Subject: Disable metrics collection for NTP tiles
---
.../browser/android/ntp/most_visited_sites_bridge.cc | 11 ++---------
components/ntp_tiles/BUILD.gn | 3 ---
2 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
--- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
+++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -25,7 +25,6 @@
#include "chrome/browser/profiles/profile_android.h"
#include "components/favicon_base/favicon_types.h"
#include "components/history/core/browser/history_service.h"
-#include "components/ntp_tiles/metrics.h"
#include "components/ntp_tiles/most_visited_sites.h"
#include "components/ntp_tiles/section_type.h"
#include "ui/gfx/android/java_bitmap.h"
@@ -44,7 +43,6 @@ using ntp_tiles::NTPTilesVector;
using ntp_tiles::SectionType;
using ntp_tiles::TileTitleSource;
using ntp_tiles::TileSource;
-using ntp_tiles::TileVisualType;
namespace {
@@ -235,7 +233,6 @@ void MostVisitedSitesBridge::RecordPageImpression(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jint jtiles_count) {
- ntp_tiles::metrics::RecordPageImpression(jtiles_count);
}
void MostVisitedSitesBridge::RecordTileImpression(
@@ -248,6 +245,7 @@ void MostVisitedSitesBridge::RecordTileImpression(
jint jsource,
jlong jdata_generation_time_ms,
const JavaParamRef<jstring>& jurl) {
+#if 0
GURL url(ConvertJavaStringToUTF8(env, jurl));
TileTitleSource title_source = static_cast<TileTitleSource>(jtitle_source);
TileSource source = static_cast<TileSource>(jsource);
@@ -258,6 +256,7 @@ void MostVisitedSitesBridge::RecordTileImpression(
ntp_tiles::metrics::RecordTileImpression(ntp_tiles::NTPTileImpression(
jindex, source, title_source, visual_type, icon_type,
base::Time::FromJavaTime(jdata_generation_time_ms), url));
+#endif
}
void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
@@ -268,12 +267,6 @@ void MostVisitedSitesBridge::RecordOpenedMostVisitedItem(
jint title_source,
jint source,
jlong jdata_generation_time_ms) {
- ntp_tiles::metrics::RecordTileClick(ntp_tiles::NTPTileImpression(
- index, static_cast<TileSource>(source),
- static_cast<TileTitleSource>(title_source),
- static_cast<TileVisualType>(tile_type), favicon_base::IconType::kInvalid,
- base::Time::FromJavaTime(jdata_generation_time_ms),
- /*url_for_rappor=*/GURL()));
}
static jlong JNI_MostVisitedSitesBridge_Init(
diff --git a/components/ntp_tiles/BUILD.gn b/components/ntp_tiles/BUILD.gn
--- a/components/ntp_tiles/BUILD.gn
+++ b/components/ntp_tiles/BUILD.gn
@@ -22,8 +22,6 @@ static_library("ntp_tiles") {
"icon_cacher.h",
"icon_cacher_impl.cc",
"icon_cacher_impl.h",
- "metrics.cc",
- "metrics.h",
"most_visited_sites.cc",
"most_visited_sites.h",
"ntp_tile.cc",
@@ -79,7 +77,6 @@ source_set("unit_tests") {
"custom_links_manager_impl_unittest.cc",
"custom_links_store_unittest.cc",
"icon_cacher_impl_unittest.cc",
- "metrics_unittest.cc",
"most_visited_sites_unittest.cc",
"popular_sites_impl_unittest.cc",
]
--
2.17.1
@@ -0,0 +1,36 @@
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/browser_process_impl.cc | 2 +-
chrome/browser/profiles/profile_io_data.cc | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -907,7 +907,7 @@ void BrowserProcessImpl::RegisterPrefs(PrefRegistrySimple* registry) {
#endif // defined(OS_CHROMEOS)
registry->RegisterBooleanPref(metrics::prefs::kMetricsReportingEnabled,
- GoogleUpdateSettings::GetCollectStatsConsent());
+ false);
#if defined(OS_ANDROID)
registry->RegisterBooleanPref(
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
@@ -48,8 +48,6 @@
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/cookie_config/cookie_store_util.h"
#include "components/dom_distiller/core/url_constants.h"
-#include "components/metrics/metrics_pref_names.h"
-#include "components/metrics/metrics_service.h"
#include "components/net_log/chrome_net_log.h"
#include "components/policy/core/common/cloud/user_cloud_policy_manager.h"
#include "components/signin/public/base/signin_pref_names.h"
--
2.17.1
@@ -0,0 +1,24 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 30 May 2019 03:37:45 +0200
Subject: Disable offline pages in the downloads home to be opened in CCT by
default
---
components/offline_pages/core/offline_page_feature.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc
--- a/components/offline_pages/core/offline_page_feature.cc
+++ b/components/offline_pages/core/offline_page_feature.cc
@@ -51,7 +51,7 @@ const base::Feature kOfflinePagesDescriptivePendingStatusFeature{
"OfflinePagesDescriptivePendingStatus", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kOfflinePagesInDownloadHomeOpenInCctFeature{
- "OfflinePagesInDownloadHomeOpenInCct", base::FEATURE_ENABLED_BY_DEFAULT};
+ "OfflinePagesInDownloadHomeOpenInCct", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kOfflinePagesCTSuppressNotificationsFeature{
"OfflinePagesCTSuppressNotifications", base::FEATURE_DISABLED_BY_DEFAULT};
--
2.17.1
@@ -0,0 +1,37 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 11 Oct 2017 23:24:58 +0200
Subject: Disable omission of URL elements in Omnibox
Disable all omissions because they are used throughout the code without
a corresponding user option to individually disable their usage.
---
components/url_formatter/url_formatter.cc | 14 +++++++-------
1 file changed, 7 insertions(+), 7 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
@@ -460,13 +460,13 @@ bool 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 kFormatUrlOmitTrivialSubdomains = 1 << 5;
-const FormatUrlType kFormatUrlTrimAfterHost = 1 << 6;
-const FormatUrlType kFormatUrlOmitFileScheme = 1 << 7;
+const FormatUrlType kFormatUrlOmitUsernamePassword = 0 << 0;
+const FormatUrlType kFormatUrlOmitHTTP = 0 << 1;
+const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname = 0 << 2;
+const FormatUrlType kFormatUrlOmitHTTPS = 0 << 3;
+const FormatUrlType kFormatUrlOmitTrivialSubdomains = 0 << 5;
+const FormatUrlType kFormatUrlTrimAfterHost = 0 << 6;
+const FormatUrlType kFormatUrlOmitFileScheme = 0 << 7;
const FormatUrlType kFormatUrlOmitMailToScheme = 1 << 8;
const FormatUrlType kFormatUrlOmitDefaults =
--
2.17.1
@@ -0,0 +1,26 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 15 Dec 2019 22:39:56 +0100
Subject: Disable password reuse detection on android
---
components/password_manager/core/browser/BUILD.gn | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/components/password_manager/core/browser/BUILD.gn b/components/password_manager/core/browser/BUILD.gn
--- a/components/password_manager/core/browser/BUILD.gn
+++ b/components/password_manager/core/browser/BUILD.gn
@@ -12,9 +12,9 @@ if (is_android) {
# TODO(crbug.com/1006430): Fix password reuse detection not fully functional on
# Android.
-password_reuse_detection_support = !is_ios
+password_reuse_detection_support = !is_ios && !is_android
password_reuse_warning_support = !is_android && !is_ios
-password_on_focus_ping_support = !is_ios
+password_on_focus_ping_support = !is_android && !is_ios
config("password_reuse_detection_config") {
defines = []
--
2.17.1
@@ -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
@@ -1177,10 +1177,8 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() {
}
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.17.1
@@ -0,0 +1,28 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 8 Jan 2019 08:54:50 +0100
Subject: Disable previews by default
---
components/previews/core/previews_features.cc | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/components/previews/core/previews_features.cc b/components/previews/core/previews_features.cc
--- a/components/previews/core/previews_features.cc
+++ b/components/previews/core/previews_features.cc
@@ -14,12 +14,7 @@ namespace features {
// are enabled are controlled by other features.
const base::Feature kPreviews {
"Previews",
-#if defined(OS_ANDROID) || defined(OS_LINUX)
- // Previews allowed for Android (but also allow on Linux for dev/debug).
- base::FEATURE_ENABLED_BY_DEFAULT
-#else // !defined(OS_ANDROID) || defined(OS_LINUX)
- base::FEATURE_DISABLED_BY_DEFAULT
-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
+ base::FEATURE_DISABLED_BY_DEFAULT
};
// Enables the Offline previews on android slow connections.
--
2.17.1
@@ -0,0 +1,306 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 10 Nov 2018 17:20:21 +0100
Subject: Disable promos displayed in bookmarks manager
Remove personalized signin promo view from
bookmarks, never reach signin thresholds.
---
...rsonalized_signin_promo_view_bookmarks.xml | 30 -----------
.../bookmarks/BookmarkItemsAdapter.java | 23 +-------
.../bookmarks/BookmarkPromoHeader.java | 52 +------------------
.../ReorderBookmarkItemsAdapter.java | 19 +------
.../browser/signin/SigninPromoController.java | 21 +-------
5 files changed, 7 insertions(+), 138 deletions(-)
delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
diff --git a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml b/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
deleted file mode 100644
--- a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2017 The Chromium Authors. All rights reserved.
- Use of this source code is governed by a BSD-style license that can be
- found in the LICENSE file. -->
-
-<org.chromium.chrome.browser.signin.PersonalizedSigninPromoView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/signin_promo_view_container"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:background="@drawable/hairline_border_card_background"
- android:gravity="center_horizontal"
- android:orientation="vertical"
- android:paddingBottom="12dp"
- android:paddingTop="14dp">
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginBottom="12dp"
- android:layout_marginEnd="12dp"
- android:layout_marginStart="12dp">
-
- <include layout="@layout/personalized_signin_promo_view_header"/>
- </FrameLayout>
-
- <include layout="@layout/personalized_signin_promo_view_body"/>
-
-</org.chromium.chrome.browser.signin.PersonalizedSigninPromoView>
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
@@ -60,7 +60,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
private BookmarkDelegate mDelegate;
private Context mContext;
- private BookmarkPromoHeader mPromoHeaderManager;
private String mSearchText;
private BookmarkId mCurrentFolder;
@@ -219,9 +218,9 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
switch (viewType) {
case ViewType.PERSONALIZED_SIGNIN_PROMO:
- return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent);
+ return null;
case ViewType.SYNC_PROMO:
- return mPromoHeaderManager.createSyncPromoHolder(parent);
+ return null;
case ViewType.FOLDER:
BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from(
parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false);
@@ -242,8 +241,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
public void onBindViewHolder(ViewHolder holder, int position) {
switch (holder.getItemViewType()) {
case ViewType.PERSONALIZED_SIGNIN_PROMO:
- PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
- mPromoHeaderManager.setupPersonalizedSigninPromo(view);
break;
case ViewType.SYNC_PROMO:
break;
@@ -262,7 +259,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
public void onViewRecycled(ViewHolder holder) {
switch (holder.getItemViewType()) {
case ViewType.PERSONALIZED_SIGNIN_PROMO:
- mPromoHeaderManager.detachPersonalizePromoView();
break;
default:
// Other view holders don't have special recycling code.
@@ -298,7 +294,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
}
};
- mPromoHeaderManager = new BookmarkPromoHeader(mContext, promoHeaderChangeAction);
populateTopLevelFoldersList();
notifyDataSetChanged();
}
@@ -309,7 +304,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
mDelegate.removeUIObserver(this);
mDelegate.getModel().removeObserver(mBookmarkModelObserver);
mDelegate = null;
- mPromoHeaderManager.destroy();
}
@Override
@@ -389,19 +383,6 @@ class BookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
if (currentUIState == BookmarkUIState.STATE_SEARCHING) return;
assert currentUIState == BookmarkUIState.STATE_FOLDER : "Unexpected UI state";
-
- switch (mPromoHeaderManager.getPromoState()) {
- case BookmarkPromoHeader.PromoState.PROMO_NONE:
- return;
- case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
- mPromoHeaderSection.add(ViewType.PERSONALIZED_SIGNIN_PROMO);
- return;
- case BookmarkPromoHeader.PromoState.PROMO_SYNC:
- mPromoHeaderSection.add(ViewType.SYNC_PROMO);
- return;
- default:
- assert false : "Unexpected value for promo state!";
- }
}
private void populateTopLevelFoldersList() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
@@ -20,7 +20,6 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.signin.IdentityServicesProvider;
-import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
import org.chromium.chrome.browser.signin.ProfileDataCache;
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
@@ -124,19 +123,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
return mPromoState;
}
- /**
- * @return Personalized signin promo header {@link ViewHolder} instance that can be used with
- * {@link RecyclerView}.
- */
- // TODO(crbug.com/160194): Clean up after bookmark reordering launches.
- ViewHolder createPersonalizedSigninPromoHolder(ViewGroup parent) {
- View view = LayoutInflater.from(mContext).inflate(
- R.layout.personalized_signin_promo_view_bookmarks, parent, false);
-
- // ViewHolder is abstract and it cannot be instantiated directly.
- return new ViewHolder(view) {};
- }
-
/**
* @return Sync promo header {@link ViewHolder} instance that can be used with
* {@link RecyclerView}.
@@ -149,40 +135,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
return new ViewHolder(view) {};
}
- /**
- * Configures the personalized signin promo and records promo impressions.
- * @param view The view to be configured.
- */
- void setupPersonalizedSigninPromo(PersonalizedSigninPromoView view) {
- SigninPromoUtil.setupPromoViewFromCache(mSigninPromoController, mProfileDataCache, view,
- this::setPersonalizedSigninPromoDeclined);
- }
-
- /**
- * Detaches the previously configured {@link PersonalizedSigninPromoView}.
- */
- void detachPersonalizePromoView() {
- if (mSigninPromoController != null) mSigninPromoController.detach();
- }
-
- /**
- * Saves that the personalized signin promo was declined and updates the UI.
- */
- private void setPersonalizedSigninPromoDeclined() {
- SharedPreferencesManager.getInstance().writeBoolean(
- ChromePreferenceKeys.PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, true);
- mPromoState = calculatePromoState();
- triggerPromoUpdate();
- }
-
- /**
- * @return Whether the user declined the personalized signin promo.
- */
- private boolean wasPersonalizedSigninPromoDeclined() {
- return SharedPreferencesManager.getInstance().readBoolean(
- ChromePreferenceKeys.PREF_PERSONALIZED_SIGNIN_PROMO_DECLINED, false);
- }
-
private @PromoState int calculatePromoState() {
if (sPromoStateForTests != null) {
return sPromoStateForTests;
@@ -195,8 +147,7 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
if (!ChromeSigninController.get().isSignedIn()) {
boolean impressionLimitReached = !SigninPromoController.hasNotReachedImpressionLimit(
SigninAccessPoint.BOOKMARK_MANAGER);
- if (!mSignInManager.isSignInAllowed() || impressionLimitReached
- || wasPersonalizedSigninPromoDeclined()) {
+ if (!mSignInManager.isSignInAllowed() || impressionLimitReached) {
return PromoState.PROMO_NONE;
}
return PromoState.PROMO_SIGNIN_PERSONALIZED;
@@ -248,7 +199,6 @@ class BookmarkPromoHeader implements AndroidSyncSettingsObserver, SignInStateObs
}
private void triggerPromoUpdate() {
- detachPersonalizePromoView();
mPromoHeaderChangeAction.run();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ReorderBookmarkItemsAdapter.java
@@ -188,8 +188,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
assert mDelegate != null;
switch (viewType) {
- case ViewType.PERSONALIZED_SIGNIN_PROMO:
- return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent);
case ViewType.SYNC_PROMO:
return mPromoHeaderManager.createSyncPromoHolder(parent);
case ViewType.FOLDER:
@@ -204,10 +202,7 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
- if (holder.getItemViewType() == ViewType.PERSONALIZED_SIGNIN_PROMO) {
- PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
- mPromoHeaderManager.setupPersonalizedSigninPromo(view);
- } else if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
+ if (!(holder.getItemViewType() == ViewType.SYNC_PROMO)) {
BookmarkRow row = ((BookmarkRow) holder.itemView);
BookmarkId id = getIdByPosition(position);
row.setBookmarkId(id, getLocationFromPosition(position));
@@ -231,13 +226,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
@Override
public void onViewRecycled(ViewHolder holder) {
- switch (holder.getItemViewType()) {
- case ViewType.PERSONALIZED_SIGNIN_PROMO:
- mPromoHeaderManager.detachPersonalizePromoView();
- break;
- default:
- // Other view holders don't have special recycling code.
- }
}
/**
@@ -406,9 +394,6 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
case BookmarkPromoHeader.PromoState.PROMO_NONE:
mPromoHeaderType = ViewType.INVALID_PROMO;
break;
- case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
- mPromoHeaderType = ViewType.PERSONALIZED_SIGNIN_PROMO;
- break;
case BookmarkPromoHeader.PromoState.PROMO_SYNC:
mPromoHeaderType = ViewType.SYNC_PROMO;
break;
@@ -573,4 +558,4 @@ class ReorderBookmarkItemsAdapter extends DragReorderableListAdapter<BookmarkIte
private void clearHighlight() {
mHighlightedBookmark = null;
}
-}
\ No newline at end of file
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
@@ -70,25 +70,8 @@ public class SigninPromoController {
*/
public static boolean hasNotReachedImpressionLimit(@AccessPoint int accessPoint) {
SharedPreferencesManager preferencesManager = SharedPreferencesManager.getInstance();
- switch (accessPoint) {
- case SigninAccessPoint.BOOKMARK_MANAGER:
- return preferencesManager.readInt(
- ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS)
- < MAX_IMPRESSIONS_BOOKMARKS;
- case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS:
- // There is no impression limit for NTP content suggestions.
- return true;
- case SigninAccessPoint.RECENT_TABS:
- // There is no impression limit for Recent Tabs.
- return true;
- case SigninAccessPoint.SETTINGS:
- return preferencesManager.readInt(
- ChromePreferenceKeys.SIGNIN_PROMO_IMPRESSIONS_COUNT_SETTINGS)
- < MAX_IMPRESSIONS_SETTINGS;
- default:
- assert false : "Unexpected value for access point: " + accessPoint;
- return false;
- }
+ // never show anything
+ return true;
}
/**
--
2.17.1
@@ -1,24 +1,27 @@
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
---
.../content/browser/dom_distiller_viewer_source.cc | 2 +-
components/dom_distiller/core/html/preview.html | 2 +-
.../dom_distiller/core/javascript/dom_distiller_viewer.js | 2 +-
third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css | 3 +--
4 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc b/components/dom_distiller/content/browser/dom_distiller_viewer_source.cc
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(
@@ -295,7 +295,7 @@ bool DomDistillerViewerSource::ShouldServiceRequest(
}
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc()
const {
std::string DomDistillerViewerSource::GetContentSecurityPolicyStyleSrc() {
- return "style-src 'self' https://fonts.googleapis.com;";
+ return "style-src 'self';";
}
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() const {
std::string DomDistillerViewerSource::GetContentSecurityPolicyChildSrc() {
diff --git a/components/dom_distiller/core/html/preview.html b/components/dom_distiller/core/html/preview.html
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,20 +34,18 @@ 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() {
if (distiller_on_ios) return;
@@ -132,7 +132,7 @@ function maybeSetWebFont() {
}
var e = document.createElement('link');
const e = document.createElement('link');
- e.href = 'https://fonts.googleapis.com/css?family=Roboto';
+ e.href = 'chrome://resources/css/roboto.css';
e.rel = 'stylesheet';
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.17.1
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,23 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 12 Aug 2019 08:47:04 +0200
Subject: Disable search-ready omnibox by default
---
chrome/browser/android/chrome_feature_list.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -521,7 +521,7 @@ const base::Feature kScrollToExpandPaymentHandler{
"ScrollToExpandPaymentHandler", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSearchReadyOmniboxFeature{
- "SearchReadyOmnibox", base::FEATURE_ENABLED_BY_DEFAULT};
+ "SearchReadyOmnibox", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kServiceManagerForBackgroundPrefetch{
"ServiceManagerForBackgroundPrefetch", base::FEATURE_DISABLED_BY_DEFAULT};
--
2.17.1
@@ -0,0 +1,25 @@
From: Daniel Micay <danielmicay@gmail.com>
Date: Tue, 25 Dec 2018 16:19:51 -0500
Subject: Disable seed-based field trials
---
components/variations/service/variations_field_trial_creator.cc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
--- a/components/variations/service/variations_field_trial_creator.cc
+++ b/components/variations/service/variations_field_trial_creator.cc
@@ -545,8 +545,10 @@ bool VariationsFieldTrialCreator::SetupFieldTrials(
#endif // BUILDFLAG(FIELDTRIAL_TESTING_ENABLED)
bool used_seed = false;
if (!used_testing_config) {
+#if defined(FIELDTRIAL_SEED_ENABLED)
used_seed = CreateTrialsFromSeed(std::move(low_entropy_provider),
feature_list.get(), safe_seed_manager);
+#endif
}
platform_field_trials->SetupFeatureControllingFieldTrials(used_seed,
--
2.17.1
@@ -0,0 +1,41 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Fri, 24 Jan 2020 19:17:22 +0100
Subject: Disable smart selection by default
Allow web search in incognito mode (reverts
commit 48d4ae54f7565c429bf29cd63806aee5d7e93e69)
Notice that re-enabling smart selection would make incognito mode potentially
leak information through the TextClassifier set by OEM, if any
---
chrome/browser/android/chrome_feature_list.cc | 2 +-
.../content/browser/selection/SelectionPopupControllerImpl.java | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -366,7 +366,7 @@ const base::Feature kChromeSharingHub{"ChromeSharingHub",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kChromeSmartSelection{"ChromeSmartSelection",
- base::FEATURE_ENABLED_BY_DEFAULT};
+ base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kCommandLineOnNonRooted{"CommandLineOnNonRooted",
base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
@@ -775,7 +775,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
menu.removeItem(R.id.select_action_menu_share);
}
- if (isFocusedNodeEditable() || isIncognito()
+ if (isFocusedNodeEditable()
|| !isSelectActionModeAllowed(MENU_ITEM_WEB_SEARCH)) {
menu.removeItem(R.id.select_action_menu_web_search);
}
--
2.17.1
@@ -0,0 +1,32 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 2 Nov 2019 16:22:56 +0100
Subject: Disable some signed exchange features
---
content/public/common/content_features.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -500,7 +500,7 @@ const base::Feature kSignedExchangePrefetchCacheForNavigations{
// Signed Exchange Reporting for distributors
// https://www.chromestatus.com/features/5687904902840320
const base::Feature kSignedExchangeReportingForDistributors{
- "SignedExchangeReportingForDistributors", base::FEATURE_ENABLED_BY_DEFAULT};
+ "SignedExchangeReportingForDistributors", base::FEATURE_DISABLED_BY_DEFAULT};
// Subresource prefetching+loading via Signed HTTP Exchange
// https://www.chromestatus.com/features/5126805474246656
@@ -510,7 +510,7 @@ const base::Feature kSignedExchangeSubresourcePrefetch{
// Origin-Signed HTTP Exchanges (for WebPackage Loading)
// https://www.chromestatus.com/features/5745285984681984
const base::Feature kSignedHTTPExchange{"SignedHTTPExchange",
- base::FEATURE_ENABLED_BY_DEFAULT};
+ base::FEATURE_DISABLED_BY_DEFAULT};
// Whether to send a ping to the inner URL upon navigation or not.
const base::Feature kSignedHTTPExchangePingValidity{
--
2.17.1
@@ -0,0 +1,44 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 11 Nov 2019 23:09:48 +0100
Subject: Disable sync services menu entry
---
chrome/android/java/res/xml/main_preferences.xml | 6 ------
chrome/android/java/res/xml/privacy_preferences.xml | 8 --------
2 files changed, 14 deletions(-)
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -14,12 +14,6 @@
android:key="sign_in"
android:order="1"
android:title="@string/sign_in_to_chrome"/>
- <org.chromium.chrome.browser.settings.ChromeBasePreference
- android:key="sync_and_services"
- android:order="2"
- android:layout="@layout/account_management_account_row"
- android:title="@string/prefs_sync_and_services"
- android:fragment="org.chromium.chrome.browser.settings.sync.SyncAndServicesPreferences"/>
<PreferenceCategory
android:key="basics_section"
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -29,12 +29,4 @@
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.settings.privacy.ClearBrowsingDataTabsFragment" />
- <android.support.v7.preference.Preference
- android:key="sync_and_services_link_divider"
- android:layout="@layout/divider_preference"
- android:selectable="false"/>
- <org.chromium.chrome.browser.settings.TextMessagePreference
- android:key="sync_and_services_link"
- android:summary="@string/privacy_sync_and_services_link"
- app:allowDividerBelow="false" />
</PreferenceScreen>
--
2.17.1
@@ -1,20 +1,24 @@
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(
@@ -58,7 +58,7 @@ void CookieSettings::GetCookieSettings(
void CookieSettings::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
- prefs::kBlockThirdPartyCookies, false,
+ prefs::kBlockThirdPartyCookies, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
}
registry->RegisterIntegerPref(
prefs::kCookieControlsMode,
--
2.17.1
@@ -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
---
.../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
@@ -36,10 +36,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) {
@@ -112,4 +109,4 @@ public class UpdateScheduler {
void onStartTask(long nativeBackgroundTaskUpdateScheduler, UpdateScheduler caller);
void onStopTask(long nativeBackgroundTaskUpdateScheduler, UpdateScheduler caller);
}
-}
\ No newline at end of file
+}
--
2.17.1
@@ -0,0 +1,43 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 4 Jan 2020 14:46:12 +0100
Subject: Do not enable QUIC by default
For reference:
* https://brave.com/quic-in-the-wild/
* https://petsymposium.org/2019/files/papers/issue3/popets-2019-0046.pdf
---
.../browser/network_session_configurator.cc | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/components/network_session_configurator/browser/network_session_configurator.cc b/components/network_session_configurator/browser/network_session_configurator.cc
--- a/components/network_session_configurator/browser/network_session_configurator.cc
+++ b/components/network_session_configurator/browser/network_session_configurator.cc
@@ -186,7 +186,7 @@ bool ShouldEnableQuic(base::StringPiece quic_trial_group,
return quic_trial_group.starts_with(kQuicFieldTrialEnabledGroupName) ||
quic_trial_group.starts_with(kQuicFieldTrialHttpsEnabledGroupName) ||
base::LowerCaseEqualsASCII(
- GetVariationParam(quic_trial_params, "enable_quic"), "true");
+ GetVariationParam(quic_trial_params, "enable_quic"), "false");
}
bool ShouldEnableQuicProxiesForHttpsUrls(
@@ -194,7 +194,7 @@ bool ShouldEnableQuicProxiesForHttpsUrls(
return base::LowerCaseEqualsASCII(
GetVariationParam(quic_trial_params,
"enable_quic_proxies_for_https_urls"),
- "true");
+ "false");
}
bool ShouldRetryWithoutAltSvcOnQuicErrors(
@@ -475,7 +475,6 @@ void ConfigureQuicParams(base::StringPiece quic_trial_group,
params->enable_quic =
ShouldEnableQuic(quic_trial_group, quic_trial_params,
is_quic_force_disabled, is_quic_force_enabled);
-
params->enable_server_push_cancellation =
ShouldEnableServerPushCancelation(quic_trial_params);
--
2.17.1
@@ -0,0 +1,77 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 10 Nov 2018 19:47:39 +0100
Subject: Do not grant notifications to default search engine
Block gelocation by default instead of granting it for non-enterprise use cases (almost the totality of users)
---
.../search_permissions_service.cc | 20 ++++++-------------
chrome/common/chrome_features.cc | 2 +-
2 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/chrome/browser/android/search_permissions/search_permissions_service.cc b/chrome/browser/android/search_permissions/search_permissions_service.cc
--- a/chrome/browser/android/search_permissions/search_permissions_service.cc
+++ b/chrome/browser/android/search_permissions/search_permissions_service.cc
@@ -190,7 +190,7 @@ void SearchPermissionsService::ResetDSEPermission(ContentSettingsType type) {
DCHECK(dse_url.is_empty() || IsPermissionControlledByDSE(type, dse_origin));
if (!dse_url.is_empty())
- SetContentSetting(dse_url, type, CONTENT_SETTING_ALLOW);
+ SetContentSetting(dse_url, type, CONTENT_SETTING_BLOCK);
}
void SearchPermissionsService::ResetDSEPermissions() {
@@ -333,11 +333,7 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
return;
}
- // If we get to here, the DSE is not disabled by enterprise policy. If it was
- // previously enterprise controlled, we initialize the setting to BLOCK since
- // we don't know what the user's setting was previously.
- bool was_enterprise_controlled =
- pref_service_->GetBoolean(prefs::kDSEWasDisabledByPolicy);
+ // If this line is reached then DSE is not disabled by enterprise policy.
pref_service_->ClearPref(prefs::kDSEWasDisabledByPolicy);
// Initialize the pref for geolocation if it hasn't been initialized yet.
@@ -370,10 +366,8 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
pref_service_->ClearPref(prefs::kDSEGeolocationSettingDeprecated);
} else if (dse_geolocation_setting == CONTENT_SETTING_ASK) {
// If the user hasn't explicitly allowed or blocked geolocation for the
- // DSE, initialize it to allowed.
- dse_geolocation_setting = was_enterprise_controlled
- ? CONTENT_SETTING_BLOCK
- : CONTENT_SETTING_ALLOW;
+ // DSE, initialize it to blocked.
+ dse_geolocation_setting = CONTENT_SETTING_BLOCK;
}
// Update the content setting with the auto-grants for the DSE.
@@ -398,11 +392,9 @@ void SearchPermissionsService::InitializeSettingsIfNeeded() {
GetContentSetting(dse_origin, ContentSettingsType::NOTIFICATIONS);
ContentSetting dse_notifications_setting = notifications_setting_to_restore;
// If the user hasn't explicitly allowed or blocked notifications for the
- // DSE, initialize it to allowed.
+ // DSE, initialize it to blocked.
if (dse_notifications_setting == CONTENT_SETTING_ASK) {
- dse_notifications_setting = was_enterprise_controlled
- ? CONTENT_SETTING_BLOCK
- : CONTENT_SETTING_ALLOW;
+ dse_notifications_setting = CONTENT_SETTING_BLOCK;
}
// Update the content setting with the auto-grants for the DSE.
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
@@ -320,7 +320,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
#if defined(OS_ANDROID)
// Enable changing default downloads storage location on Android.
const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
- base::FEATURE_ENABLED_BY_DEFAULT};
+ base::FEATURE_DISABLED_BY_DEFAULT};
#endif
// If enabled, Drive will use FCM for its invalidations.
--
2.17.1
@@ -0,0 +1,111 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 20 Jan 2019 06:20:10 +0100
Subject: Do not ignore download location prompt setting
Upstream has decided that it works as intended (https://bugs.chromium.org/p/chromium/issues/detail?id=916606)
but users would like to decide where to save a file even when there is no SD card available;
do not skip the prompt in such cases.
---
.../DownloadLocationDialogBridge.java | 72 ++++++-------------
1 file changed, 21 insertions(+), 51 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadLocationDialogBridge.java
@@ -31,9 +31,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
private PropertyModel mDialogModel;
private DownloadLocationCustomView mCustomView;
private ModalDialogManager mModalDialogManager;
- private long mTotalBytes;
- private @DownloadLocationDialogType int mDialogType;
- private String mSuggestedPath;
private Context mContext;
private DownloadLocationDialogBridge(long nativeDownloadLocationDialogBridge) {
@@ -66,12 +63,28 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
mModalDialogManager = activity.getModalDialogManager();
mContext = activity;
- mTotalBytes = totalBytes;
- mDialogType = dialogType;
- mSuggestedPath = suggestedPath;
- DownloadDirectoryProvider.getInstance().getAllDirectoriesOptions(
- (ArrayList<DirectoryOption> dirs) -> { onDirectoryOptionsRetrieved(dirs); });
+ // Already showing the dialog.
+ if (mDialogModel != null) return;
+
+ // Actually show the dialog.
+ mCustomView = (DownloadLocationCustomView) LayoutInflater.from(mContext).inflate(
+ R.layout.download_location_dialog, null);
+ mCustomView.initialize(dialogType, new File(suggestedPath));
+
+ Resources resources = mContext.getResources();
+ mDialogModel =
+ new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
+ .with(ModalDialogProperties.CONTROLLER, this)
+ .with(ModalDialogProperties.TITLE, getTitle(totalBytes, dialogType))
+ .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
+ .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
+ R.string.duplicate_download_infobar_download_button)
+ .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
+ R.string.cancel)
+ .build();
+
+ mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.APP);
}
@Override
@@ -104,49 +117,6 @@ public class DownloadLocationDialogBridge implements ModalDialogProperties.Contr
mCustomView = null;
}
- /**
- * Called after retrieved the download directory options.
- * @param dirs An list of available download directories.
- */
- private void onDirectoryOptionsRetrieved(ArrayList<DirectoryOption> dirs) {
- // If there is only one directory available, don't show the default dialog, and set the
- // download directory to default. Dialog will still show for other types of dialogs, like
- // name conflict or disk error.
- if (dirs.size() == 1 && mDialogType == DownloadLocationDialogType.DEFAULT) {
- final DirectoryOption dir = dirs.get(0);
- if (dir.type == DirectoryOption.DownloadLocationDirectoryType.DEFAULT) {
- assert(!TextUtils.isEmpty(dir.location));
- setDownloadAndSaveFileDefaultDirectory(dir.location);
- DownloadLocationDialogBridgeJni.get().onComplete(
- mNativeDownloadLocationDialogBridge, DownloadLocationDialogBridge.this,
- mSuggestedPath);
- }
- return;
- }
-
- // Already showing the dialog.
- if (mDialogModel != null) return;
-
- // Actually show the dialog.
- mCustomView = (DownloadLocationCustomView) LayoutInflater.from(mContext).inflate(
- R.layout.download_location_dialog, null);
- mCustomView.initialize(mDialogType, new File(mSuggestedPath));
-
- Resources resources = mContext.getResources();
- mDialogModel =
- new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
- .with(ModalDialogProperties.CONTROLLER, this)
- .with(ModalDialogProperties.TITLE, getTitle(mTotalBytes, mDialogType))
- .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
- .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
- R.string.duplicate_download_infobar_download_button)
- .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
- R.string.cancel)
- .build();
-
- mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.APP);
- }
-
private String getTitle(long totalBytes, @DownloadLocationDialogType int dialogType) {
switch (dialogType) {
case DownloadLocationDialogType.LOCATION_FULL:
--
2.17.1
@@ -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(
@@ -178,10 +178,10 @@ void AddLocallySavedPredictions(FieldInfoManager* field_info_manager,
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.17.1
@@ -0,0 +1,23 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 30 May 2019 03:42:06 +0200
Subject: Enable changing default downloads storage location by default
---
chrome/common/chrome_features.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -320,7 +320,7 @@ const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
#if defined(OS_ANDROID)
// Enable changing default downloads storage location on Android.
const base::Feature kDownloadsLocationChange{"DownloadsLocationChange",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
#endif
// If enabled, Drive will use FCM for its invalidations.
--
2.17.1
@@ -0,0 +1,58 @@
From: Daniel Micay <danielmicay@gmail.com>
Date: Thu, 22 Dec 2016 07:15:34 -0500
Subject: Enable -fwrapv in Clang for non-UBSan builds
Using -fwrapv (notably only when not using signed integer overflow checking -
since it will override it and result in not performing checks) is just common
sense since it eliminates the chance of security vulnerabilities being
introduced by optimizations based on signed overflow being undefined.
That has happened before, and those optimizations don't even add up to a 0.1%
performance increase for this kind of software. It's not worth having.
The Linux kernel passes -fwrapv and also -fno-strict-aliasing to disable those
dangerous optimizations (since there is so much incorrect code they can break).
In fact, it is easy to point to dozens of known examples of invalid code that
could potentially be broken by those optimizations.
It is not acceptable for projects to be using optimizations that are known to
be broken with a bunch of code in their tree.
They put barely any effort into even fixing the known cases.
Chromium has blacklists for UBSan for 'false positives' (none of which are
actually false positives, but rather "undefined, but not a bug beyond
potentially being broken by optimizations or even code generation without
them") and also for components too full of these bugs for them to currently
want to bother with it. That includes a bunch of signed overflow issues
(there is sadly no detection for aliasing violations, which are fairly common,
but not that common).
Ideally, -fwrapv could be always passed, but unfortunately the way it is
implemented has silly interactions with other switches.
The reason it would still make sense to pass it is because due to their UBSan
blacklists, they get far from full coverage with it, so -fwrapv would still
be better than nothing where it's not being used.
Since -fwrapv makes signed integer overflow well-defined, Clang will disable
the UBSan checks for signed integer overflow, including in the
production-oriented trapping mode used for hardening.
Excerpt from https://github.com/bromite/bromite/issues/226
---
build/config/compiler/BUILD.gn | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -302,6 +302,10 @@ config("compiler") {
}
}
+ if (is_clang && !is_ubsan && !is_ubsan_security) {
+ cflags += [ "-fwrapv" ]
+ }
+
# Linker warnings.
if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
!is_mac && !is_ios && current_os != "aix") {
--
2.17.1
@@ -0,0 +1,35 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 17 Mar 2019 19:09:00 +0100
Subject: Enable site per process isolation for devices with enough memory
---
chrome/common/chrome_features.cc | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
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
@@ -659,11 +659,7 @@ const base::Feature kShowTrustedPublisherURL{"ShowTrustedPublisherURL",
// browser_features, as they are only used on the browser side.
const base::Feature kSitePerProcess {
"site-per-process",
-#if defined(OS_ANDROID)
- base::FEATURE_DISABLED_BY_DEFAULT
-#else
base::FEATURE_ENABLED_BY_DEFAULT
-#endif
};
// Controls a mode for dynamically process-isolating sites where the user has
@@ -693,7 +689,7 @@ const base::Feature kSiteIsolationForPasswordSites{
// base::SysInfo::AmountOfPhysicalMemoryMB().
const base::Feature kSitePerProcessOnlyForHighMemoryClients{
"site-per-process-only-for-high-memory-clients",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
const char kSitePerProcessOnlyForHighMemoryClientsParamName[] =
"site-per-process-low-memory-cutoff-mb";
--
2.17.1
@@ -0,0 +1,23 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 10 Feb 2020 23:13:13 +0100
Subject: Enable user-agent freeze by default
---
third_party/blink/common/features.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
--- a/third_party/blink/common/features.cc
+++ b/third_party/blink/common/features.cc
@@ -46,7 +46,7 @@ const base::Feature kFreezePurgeMemoryAllPagesFrozen{
// Freezes the user-agent as part of https://github.com/WICG/ua-client-hints.
const base::Feature kFreezeUserAgent{"FreezeUserAgent",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, the compositing of trivial 3D transforms is disabled.
const base::Feature kDoNotCompositeTrivial3D{"DoNotCompositeTrivial3D",
--
2.17.1
@@ -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
@@ -766,6 +766,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
if (status != CONTENT_SETTING_DEFAULT)
return PermissionResult(status, PermissionStatusSource::UNSPECIFIED);
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.17.1
@@ -0,0 +1,32 @@
From: Daniel Micay <danielmicay@gmail.com>
Date: Sun, 13 Aug 2017 19:33:04 -0400
Subject: Hide passwords manager link
---
.../browser/settings/password/SavePasswordsPreferences.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/password/SavePasswordsPreferences.java
@@ -254,7 +254,7 @@ public class SavePasswordsPreferences
return;
}
- displayManageAccountLink();
+ //displayManageAccountLink();
PreferenceGroup passwordParent;
if (mSearchQuery == null) {
@@ -329,7 +329,7 @@ public class SavePasswordsPreferences
return;
}
- displayManageAccountLink();
+ //displayManageAccountLink();
PreferenceCategory profileCategory = new PreferenceCategory(getStyledContext());
profileCategory.setKey(PREF_KEY_CATEGORY_EXCEPTIONS);
--
2.17.1
@@ -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 checkbox
---
chrome/android/java/res/layout/fre_tosanduma.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
--- a/chrome/android/java/res/layout/fre_tosanduma.xml
+++ b/chrome/android/java/res/layout/fre_tosanduma.xml
@@ -70,7 +70,7 @@
android:layout_height="wrap_content"
android:lineSpacingMultiplier="1.4"
android:text="@string/fre_send_report_check"
- android:textAppearance="@style/TextAppearance.BlackBodyDefault" />
+ android:textAppearance="@style/TextAppearance.BlackBodyDefault" android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
--
2.17.1
@@ -0,0 +1,39 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 27 Oct 2019 10:18:39 +0100
Subject: Increase number of autocomplete matches from 5 to 10
Patch from https://github.com/Eloston/ungoogled-chromium/issues/814#issuecomment-526874703
---
components/omnibox/browser/autocomplete_result.cc | 3 ++-
components/omnibox/browser/omnibox_field_trial.cc | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc
--- a/components/omnibox/browser/autocomplete_result.cc
+++ b/components/omnibox/browser/autocomplete_result.cc
@@ -75,7 +75,8 @@ struct MatchGURLHash {
// static
size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) {
#if (defined(OS_ANDROID))
- constexpr size_t kDefaultMaxAutocompleteMatches = 5;
+ // changed from 6, this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc
+ constexpr size_t kDefaultMaxAutocompleteMatches = 10;
if (is_zero_suggest)
return kDefaultMaxAutocompleteMatches;
#elif defined(OS_IOS) // !defined(OS_ANDROID)
diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc
--- a/components/omnibox/browser/omnibox_field_trial.cc
+++ b/components/omnibox/browser/omnibox_field_trial.cc
@@ -338,7 +338,8 @@ void OmniboxFieldTrial::GetDemotionsByType(
size_t OmniboxFieldTrial::GetProviderMaxMatches(
AutocompleteProvider::Type provider) {
- size_t default_max_matches_per_provider = 3;
+ size_t default_max_matches_per_provider = 5; // was 3; this needs to be half the value of kDefaultMaxAutocompleteMatches from components/omnibox/browser/autocomplete_result.cc
+ return default_max_matches_per_provider;
std::string param_value = base::GetFieldTrialParamValueByFeature(
omnibox::kUIExperimentMaxAutocompleteMatches,
--
2.17.1
File diff suppressed because one or more lines are too long
@@ -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
Do not hide component extensions
---
chrome/browser/background/background_mode_manager.cc | 2 +-
chrome/browser/chrome_content_browser_client.cc | 2 +-
chrome/browser/net/prediction_options.cc | 2 +-
chrome/browser/net/prediction_options.h | 2 +-
chrome/browser/profiles/profile.cc | 2 +-
.../settings/reset_page/reset_profile_dialog.html | 2 +-
chrome/browser/ui/browser_ui_prefs.cc | 4 ++--
chrome/browser/ui/navigation_correction_tab_observer.cc | 2 +-
.../ui/webui/local_discovery/local_discovery_ui.cc | 4 ----
chrome/service/cloud_print/connector_settings.cc | 2 +-
components/autofill/core/browser/autofill_manager.cc | 9 +++------
components/autofill/core/common/autofill_prefs.cc | 2 +-
components/bookmarks/browser/bookmark_utils.cc | 4 ++--
components/safe_browsing/common/safe_browsing_prefs.cc | 4 ++--
extensions/common/extension.cc | 8 --------
15 files changed, 18 insertions(+), 33 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) {
@@ -310,7 +310,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
#endif
@@ -18,38 +34,23 @@ 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(
@@ -1170,7 +1170,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(
return NetworkPredictionStatus::ENABLED;
@@ -31,7 +31,7 @@ NetworkPredictionStatus CanPrefetchAndPrerender(
}
return NetworkPredictionStatus::DISABLED_DUE_TO_NETWORK;
default:
- DCHECK_EQ(NETWORK_PREDICTION_NEVER, network_prediction_options);
+ //DCHECK_EQ(NETWORK_PREDICTION_NEVER, network_prediction_options);
@@ -57,10 +58,9 @@ 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 {
@@ -22,7 +22,7 @@ enum NetworkPredictionOptions {
NETWORK_PREDICTION_ALWAYS,
NETWORK_PREDICTION_WIFI_ONLY,
NETWORK_PREDICTION_NEVER,
@@ -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";
@@ -149,7 +149,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kSearchSuggestEnabled,
@@ -83,38 +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>
@@ -50,7 +50,7 @@
</cr-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>
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) {
void RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
- registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, false);
- registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, true);
+ registry->RegisterBooleanPref(prefs::kSignInPromoUserSkipped, true);
+ registry->RegisterBooleanPref(prefs::kSignInPromoShowOnFirstRunAllowed, false);
registry->RegisterBooleanPref(prefs::kSignInPromoShowNTPBubble, false);
}
</cr-dialog>
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) {
@@ -67,11 +67,11 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
registry->RegisterBooleanPref(
@@ -125,27 +107,25 @@ 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() {
@@ -57,7 +57,7 @@ void NavigationCorrectionTabObserver::SetAllowEnableCorrectionsForTesting(
// static
void NavigationCorrectionTabObserver::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* prefs) {
prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled,
- true,
+ false,
- prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, true,
+ prefs->RegisterBooleanPref(prefs::kAlternateErrorPagesEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
}
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
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(
@@ -107,10 +107,6 @@ void LocalDiscoveryUI::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kLocalDiscoveryNotificationsEnabled,
@@ -157,7 +137,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 +149,47 @@ 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);
registry->RegisterBooleanPref(
- prefs::kAutofillEnabled, true,
+ prefs::kAutofillEnabled, false,
@@ -823,10 +823,7 @@ void AutofillManager::OnQueryFormFieldAutofillImpl(
// suggestions available.
// TODO(mathp): Differentiate between number of suggestions available
// (current metric) and number shown to the user.
- if (!has_logged_address_suggestions_count_) {
- AutofillMetrics::LogAddressSuggestionsCount(suggestions.size());
- has_logged_address_suggestions_count_ = true;
- }
+ has_logged_address_suggestions_count_ = true;
}
}
@@ -1464,8 +1461,8 @@ void AutofillManager::Reset() {
#if defined(OS_ANDROID) || defined(OS_IOS)
autofill_assistant_.Reset();
#endif
- has_logged_autofill_enabled_ = false;
- has_logged_address_suggestions_count_ = false;
+ has_logged_autofill_enabled_ = true;
+ has_logged_address_suggestions_count_ = true;
did_show_suggestions_ = false;
user_did_type_ = false;
user_did_autofill_ = false;
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
@@ -147,7 +147,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
prefs::kAutofillLastVersionDisusedAddressesDeleted, 0,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
prefs::kAutofillProfileUseDatesFixed, false,
- 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,
@@ -439,12 +439,12 @@ bool DoesBookmarkContainWords(const base::string16& title,
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kShowBookmarkBar,
@@ -202,10 +205,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) {
@@ -169,9 +169,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
registry->RegisterBooleanPref(
@@ -218,16 +220,15 @@ 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 {
if (is_theme())
@@ -333,14 +333,6 @@ bool Extension::ShouldDisplayInExtensionSettings(Manifest::Type type,
if (type == Manifest::TYPE_THEME)
return false;
- // Hide component extensions because they are only extensions as an
- // implementation detail of Chrome.
- if (extensions::Manifest::IsComponentLocation(location()) &&
- if (Manifest::IsComponentLocation(location) &&
- !base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kShowComponentExtensionOptions)) {
- return false;
@@ -236,3 +237,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.17.1
@@ -0,0 +1,723 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Fri, 30 Mar 2018 10:09:03 +0200
Subject: Multiple fingerprinting mitigations for canvas, text and client
rectangles
1. getClientRects, getBoundingClientRect, measureText: add fingerprinting mitigation
Scale the result of Range::getClientRects, Element::getBoundingClientRect and
Canvas::measureText by a random +/-3/1000000th of the original value for each
float in the returned Rect/Quad.
It contains improvements from ungoogled-chromium which add two flags:
1. --fingerprinting-client-rects-noise to enable fingerprinting deception for Range::getClientRects and Element::getBoundingClientRect
2. --fingerprinting-canvas-measuretext-noise to enable fingerprinting deception for Canvas::measureText
2. Canvas: fingerprinting mitigations for image data and webGL
Disable webGL renderer info and modify the color data returned by ToBlob,
ToDataURL and getImageData so that it will contain randomly manipulated
pixels (maximum 20) that slightly change the color of the R,G,B components
without a visible effect.
Credits to Slaviro (https://github.com/Slaviro) for coming up with a better
approach to change color components.
Added flag --fingerprinting-canvas-image-data-noise to disable Canvas image data fingerprinting deception
---
chrome/browser/BUILD.gn | 1 +
chrome/browser/about_flags.cc | 13 ++
content/browser/BUILD.gn | 1 +
.../renderer_host/render_process_host_impl.cc | 4 +
content/child/BUILD.gn | 1 +
content/child/runtime_features.cc | 8 +
.../public/platform/web_runtime_features.h | 3 +
.../blink/renderer/core/dom/document.cc | 18 ++
.../blink/renderer/core/dom/document.h | 7 +
.../blink/renderer/core/dom/element.cc | 8 +
third_party/blink/renderer/core/dom/range.cc | 12 +-
.../renderer/core/html/canvas/text_metrics.cc | 18 ++
.../renderer/core/html/canvas/text_metrics.h | 2 +
.../canvas2d/canvas_rendering_context_2d.cc | 8 +-
.../webgl/webgl_debug_renderer_info.cc | 4 +-
third_party/blink/renderer/platform/BUILD.gn | 5 +-
.../platform/exported/web_runtime_features.cc | 12 ++
.../platform/graphics/image_data_buffer.cc | 7 +
.../platform/graphics/static_bitmap_image.cc | 159 ++++++++++++++++++
.../platform/graphics/static_bitmap_image.h | 2 +
.../platform/runtime_enabled_features.json5 | 9 +
third_party/ungoogled/BUILD.gn | 10 ++
third_party/ungoogled/ungoogled_switches.cc | 18 ++
third_party/ungoogled/ungoogled_switches.h | 18 ++
24 files changed, 343 insertions(+), 5 deletions(-)
create mode 100644 third_party/ungoogled/BUILD.gn
create mode 100644 third_party/ungoogled/ungoogled_switches.cc
create mode 100644 third_party/ungoogled/ungoogled_switches.h
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2222,6 +2222,7 @@ jumbo_static_library("browser") {
"//third_party/metrics_proto",
"//third_party/re2",
"//third_party/smhasher:cityhash",
+ "//third_party/ungoogled:switches",
"//third_party/webrtc_overrides:webrtc_component",
"//third_party/widevine/cdm:buildflags",
"//third_party/zlib",
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
@@ -149,6 +149,7 @@
#include "third_party/blink/public/common/experiments/memory_ablation_experiment.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/forcedark/forcedark_switches.h"
+#include "third_party/ungoogled/ungoogled_switches.h"
#include "third_party/leveldatabase/leveldb_features.h"
#include "ui/accessibility/accessibility_features.h"
#include "ui/accessibility/accessibility_switches.h"
@@ -1513,12 +1514,24 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
+ {"fingerprinting-canvas-image-data-noise",
+ "Disable Canvas image data fingerprint deception",
+ "Slightly modifies at most 20 pixels in Canvas image data extracted via JS APIs",
+ kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kFingerprintingCanvasImageDataNoise)},
{"enable-webrtc-stun-origin", flag_descriptions::kWebrtcStunOriginName,
flag_descriptions::kWebrtcStunOriginDescription, kOsAll,
SINGLE_VALUE_TYPE(switches::kEnableWebRtcStunOrigin)},
{"enable-webrtc-hybrid-agc", flag_descriptions::kWebrtcHybridAgcName,
flag_descriptions::kWebrtcHybridAgcDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kWebRtcHybridAgc)},
+ {"fingerprinting-client-rects-noise",
+ "Disable get*ClientRects() fingerprint deception",
+ "Scale the output values of Range::getClientRects() and Element::getBoundingClientRect() with a randomly selected factor in the range -0.0003% to 0.0003%, which are recomputed on every document initialization.",
+ kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kFingerprintingClientRectsNoise)},
+ {"fingerprinting-canvas-measuretext-noise",
+ "Disable Canvas::measureText() fingerprint deception",
+ "Scale the output values of Canvas::measureText() with a randomly selected factor in the range -0.0003% to 0.0003%, which are recomputed on every document initialization.",
+ kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kFingerprintingCanvasMeasureTextNoise)},
{"enable-webrtc-new-encode-cpu-load-estimator",
flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorName,
flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorDescription, kOsAll,
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -209,6 +209,7 @@ jumbo_source_set("browser") {
"//third_party/libyuv",
"//third_party/re2",
"//third_party/sqlite",
+ "//third_party/ungoogled:switches",
"//third_party/webrtc_overrides:webrtc_component",
"//third_party/zlib",
"//third_party/zlib/google:zip",
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -225,6 +225,7 @@
#include "third_party/blink/public/common/page/launching_process_state.h"
#include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
#include "third_party/blink/public/public_buildflags.h"
+#include "third_party/ungoogled/ungoogled_switches.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/accessibility/accessibility_switches.h"
#include "ui/base/ui_base_switches.h"
@@ -3092,6 +3093,9 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
switches::kDisablePreferCompositingToLCDText,
switches::kDisableDatabases,
switches::kDisableFileSystem,
+ switches::kFingerprintingClientRectsNoise,
+ switches::kFingerprintingCanvasMeasureTextNoise,
+ switches::kFingerprintingCanvasImageDataNoise,
switches::kDisableFrameRateLimit,
switches::kDisableGpuMemoryBufferVideoFrames,
switches::kDisableImageAnimationResync,
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
--- a/content/child/BUILD.gn
+++ b/content/child/BUILD.gn
@@ -125,6 +125,7 @@ target(link_target_type, "child") {
"//third_party/blink/public/common",
"//third_party/blink/public/strings",
"//third_party/ced",
+ "//third_party/ungoogled:switches",
"//third_party/zlib/google:compression_utils",
"//ui/base",
"//ui/events/blink",
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -25,6 +25,7 @@
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/network_switches.h"
#include "third_party/blink/public/common/features.h"
+#include "third_party/ungoogled/ungoogled_switches.h"
#include "third_party/blink/public/platform/web_runtime_features.h"
#include "ui/accessibility/accessibility_features.h"
#include "ui/base/ui_base_features.h"
@@ -523,6 +524,13 @@ void SetCustomizedRuntimeFeaturesFromCombinedArgs(
// They're moved here to distinguish them from actual base checks
WebRuntimeFeatures::EnableOverlayScrollbars(ui::IsOverlayScrollbarEnabled());
+ WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(
+ !command_line.HasSwitch(switches::kFingerprintingClientRectsNoise));
+ WebRuntimeFeatures::EnableFingerprintingCanvasMeasureTextNoise(
+ !command_line.HasSwitch(switches::kFingerprintingCanvasMeasureTextNoise));
+ WebRuntimeFeatures::EnableFingerprintingCanvasImageDataNoise(
+ !command_line.HasSwitch(switches::kFingerprintingCanvasImageDataNoise));
+
WebRuntimeFeatures::EnableFormControlsRefresh(
features::IsFormControlsRefreshEnabled());
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
--- a/third_party/blink/public/platform/web_runtime_features.h
+++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -226,6 +226,9 @@ class WebRuntimeFeatures {
BLINK_PLATFORM_EXPORT static void EnableTranslateService(bool);
BLINK_PLATFORM_EXPORT static void EnableGetDisplayMedia(bool);
BLINK_PLATFORM_EXPORT static void EnableAllowSyncXHRInPageDismissal(bool);
+ BLINK_PLATFORM_EXPORT static void EnableFingerprintingClientRectsNoise(bool);
+ BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasMeasureTextNoise(bool);
+ BLINK_PLATFORM_EXPORT static void EnableFingerprintingCanvasImageDataNoise(bool);
BLINK_PLATFORM_EXPORT static void EnableShadowDOMV0(bool);
BLINK_PLATFORM_EXPORT static void EnableCustomElementsV0(bool);
BLINK_PLATFORM_EXPORT static void EnableHTMLImports(bool);
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -35,6 +35,7 @@
#include "base/auto_reset.h"
#include "base/macros.h"
#include "base/optional.h"
+#include "base/rand_util.h"
#include "base/time/time.h"
#include "cc/input/overscroll_behavior.h"
#include "cc/input/scroll_snap_data.h"
@@ -2875,6 +2876,23 @@ void Document::UpdateStyleAndLayoutTree() {
#if DCHECK_IS_ON()
AssertLayoutTreeUpdated(*this);
#endif
+
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
+ // Precompute -0.0003% to 0.0003% noise factor for get*ClientRect*() fingerprinting
+ noise_factor_x_ = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ noise_factor_y_ = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ } else {
+ noise_factor_x_ = 1;
+ noise_factor_y_ = 1;
+ }
+}
+
+double Document::GetNoiseFactorX() {
+ return noise_factor_x_;
+}
+
+double Document::GetNoiseFactorY() {
+ return noise_factor_y_;
}
void Document::UpdateActiveStyle() {
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -416,6 +416,10 @@ class CORE_EXPORT Document : public ContainerNode,
has_xml_declaration_ = has_xml_declaration ? 1 : 0;
}
+ // Values for get*ClientRect fingerprint deception
+ double GetNoiseFactorX();
+ double GetNoiseFactorY();
+
String visibilityState() const;
bool IsPageVisible() const;
bool hidden() const;
@@ -1970,6 +1974,9 @@ class CORE_EXPORT Document : public ContainerNode,
base::ElapsedTimer start_time_;
+ double noise_factor_x_;
+ double noise_factor_y_;
+
Member<ScriptRunner> script_runner_;
HeapVector<Member<ScriptElementBase>> current_script_stack_;
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -1902,6 +1902,11 @@ DOMRectList* Element::getClientRects() {
DCHECK(element_layout_object);
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
quads, *element_layout_object);
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
+ for (FloatQuad& quad : quads) {
+ quad.Scale(GetDocument().GetNoiseFactorX(), GetDocument().GetNoiseFactorY());
+ }
+ }
return DOMRectList::Create(quads);
}
@@ -1919,6 +1924,9 @@ DOMRect* Element::getBoundingClientRect() {
DCHECK(element_layout_object);
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
*element_layout_object);
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
+ result.Scale(GetDocument().GetNoiseFactorX(), GetDocument().GetNoiseFactorY());
+ }
return DOMRect::FromFloatRect(result);
}
diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
--- a/third_party/blink/renderer/core/dom/range.cc
+++ b/third_party/blink/renderer/core/dom/range.cc
@@ -1631,11 +1631,21 @@ DOMRectList* Range::getClientRects() const {
Vector<FloatQuad> quads;
GetBorderAndTextQuads(quads);
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
+ for (FloatQuad& quad : quads) {
+ quad.Scale(owner_document_->GetNoiseFactorX(), owner_document_->GetNoiseFactorY());
+ }
+ }
+
return DOMRectList::Create(quads);
}
DOMRect* Range::getBoundingClientRect() const {
- return DOMRect::FromFloatRect(BoundingRect());
+ auto rect = BoundingRect();
+ if (RuntimeEnabledFeatures::FingerprintingClientRectsNoiseEnabled()) {
+ rect.Scale(owner_document_->GetNoiseFactorX(), owner_document_->GetNoiseFactorY());
+ }
+ return DOMRect::FromFloatRect(rect);
}
// TODO(editing-dev): We should make
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
@@ -54,6 +54,24 @@ TextMetrics::TextMetrics(const Font& font,
Update(font, direction, baseline, align, text);
}
+void TextMetrics::Shuffle(const double factor) {
+ // x-direction
+ width_ *= factor;
+ actual_bounding_box_left_ *= factor;
+ actual_bounding_box_right_ *= factor;
+
+ // y-direction
+ font_bounding_box_ascent_ *= factor;
+ font_bounding_box_descent_ *= factor;
+ actual_bounding_box_ascent_ *= factor;
+ actual_bounding_box_descent_ *= factor;
+ em_height_ascent_ *= factor;
+ em_height_descent_ *= factor;
+ baselines_->setAlphabetic(baselines_->alphabetic() * factor);
+ baselines_->setHanging(baselines_->hanging() * factor);
+ baselines_->setIdeographic(baselines_->ideographic() * factor);
+}
+
void TextMetrics::Update(const Font& font,
const TextDirection& direction,
const TextBaseline& baseline,
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_party/blink/renderer/core/html/canvas/text_metrics.h
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.h
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
@@ -64,6 +64,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
void Trace(Visitor*) override;
+ void Shuffle(const double factor);
+
private:
void Update(const Font&,
const TextDirection&,
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
@@ -821,9 +821,15 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
else
direction = ToTextDirection(GetState().GetDirection(), canvas());
- return MakeGarbageCollected<TextMetrics>(font, direction,
+ TextMetrics* text_metrics = MakeGarbageCollected<TextMetrics>(font, direction,
GetState().GetTextBaseline(),
GetState().GetTextAlign(), text);
+
+ // Scale text metrics if enabled
+ if (RuntimeEnabledFeatures::FingerprintingCanvasMeasureTextNoiseEnabled()) {
+ text_metrics->Shuffle(canvas()->GetDocument().GetNoiseFactorX());
+ }
+ return text_metrics;
}
void CanvasRenderingContext2D::DrawTextInternal(
diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
--- a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
@@ -37,11 +37,11 @@ WebGLExtensionName WebGLDebugRendererInfo::GetName() const {
WebGLDebugRendererInfo* WebGLDebugRendererInfo::Create(
WebGLRenderingContextBase* context) {
- return MakeGarbageCollected<WebGLDebugRendererInfo>(context);
+ return nullptr;
}
bool WebGLDebugRendererInfo::Supported(WebGLRenderingContextBase*) {
- return true;
+ return false;
}
const char* WebGLDebugRendererInfo::ExtensionName() {
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -1478,7 +1478,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",
@@ -1516,6 +1518,7 @@ jumbo_component("platform") {
"//third_party/blink/public/mojom:embedded_frame_sink_mojo_bindings_blink",
"//third_party/blink/public/strings",
"//third_party/ced",
+ "//third_party/ungoogled:switches",
"//third_party/emoji-segmenter",
"//third_party/icu",
"//third_party/libyuv",
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -696,4 +696,16 @@ void WebRuntimeFeatures::EnableAcceleratedSmallCanvases(bool enable) {
RuntimeEnabledFeatures::SetAcceleratedSmallCanvasesEnabled(enable);
}
+void WebRuntimeFeatures::EnableFingerprintingClientRectsNoise(bool enable) {
+ RuntimeEnabledFeatures::SetFingerprintingClientRectsNoiseEnabled(enable);
+}
+
+void WebRuntimeFeatures::EnableFingerprintingCanvasMeasureTextNoise(bool enable) {
+ RuntimeEnabledFeatures::SetFingerprintingCanvasMeasureTextNoiseEnabled(enable);
+}
+
+void WebRuntimeFeatures::EnableFingerprintingCanvasImageDataNoise(bool enable) {
+ RuntimeEnabledFeatures::SetFingerprintingCanvasImageDataNoiseEnabled(enable);
+}
+
} // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
--- a/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
+++ b/third_party/blink/renderer/platform/graphics/image_data_buffer.cc
@@ -36,6 +36,8 @@
#include "base/compiler_specific.h"
#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"
@@ -130,6 +132,11 @@ bool ImageDataBuffer::EncodeImageInternal(const ImageEncodingMimeType mime_type,
const SkPixmap& pixmap) const {
DCHECK(is_valid_);
+ if (RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
+ // shuffle subchannel color data within the pixmap
+ StaticBitmapImage::ShuffleSubchannelColorData(pixmap_.writable_addr(), pixmap_.info(), 0, 0);
+ }
+
if (mime_type == kMimeTypeJpeg) {
SkJpegEncoder::Options options;
options.fQuality = ImageEncoder::ComputeJpegQuality(quality);
diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
--- a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
+++ b/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
@@ -4,6 +4,8 @@
#include "third_party/blink/renderer/platform/graphics/static_bitmap_image.h"
+#include "base/rand_util.h"
+#include "base/logging.h"
#include "base/numerics/checked_math.h"
#include "gpu/command_buffer/client/gles2_interface.h"
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
@@ -11,11 +13,13 @@
#include "third_party/blink/renderer/platform/graphics/image_observer.h"
#include "third_party/blink/renderer/platform/graphics/paint/paint_image.h"
#include "third_party/blink/renderer/platform/graphics/unaccelerated_static_bitmap_image.h"
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkImage.h"
#include "third_party/skia/include/core/SkPaint.h"
#include "third_party/skia/include/core/SkSurface.h"
#include "third_party/skia/include/gpu/GrContext.h"
+#include "third_party/skia/include/private/SkColorData.h"
#include "v8/include/v8.h"
namespace blink {
@@ -117,9 +121,164 @@ bool StaticBitmapImage::CopyToByteArray(
DCHECK(read_pixels_successful ||
!sk_image->bounds().intersect(SkIRect::MakeXYWH(
rect.X(), rect.Y(), info.width(), info.height())));
+
+ if (read_pixels_successful && RuntimeEnabledFeatures::FingerprintingCanvasImageDataNoiseEnabled()) {
+ ShuffleSubchannelColorData(dst.data(), info, rect.X(), rect.Y());
+ }
+
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
@@ -30,6 +30,8 @@ class PLATFORM_EXPORT StaticBitmapImage : public Image {
static scoped_refptr<StaticBitmapImage> Create(sk_sp<SkData> data,
const SkImageInfo&);
+ static void ShuffleSubchannelColorData(const void *addr, const SkImageInfo& info, int srcX, int srcY);
+
bool IsStaticBitmapImage() const override { return true; }
// Methods overridden by all sub-classes
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -714,6 +714,15 @@
name: "FetchMetadataDestination",
status: "experimental"
},
+ {
+ name: "FingerprintingClientRectsNoise",
+ },
+ {
+ name: "FingerprintingCanvasMeasureTextNoise",
+ },
+ {
+ name: "FingerprintingCanvasImageDataNoise",
+ },
{
name: "FileHandling",
// NativeFileSystem is in Origin Trial, which doesn't support having
diff --git a/third_party/ungoogled/BUILD.gn b/third_party/ungoogled/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/third_party/ungoogled/BUILD.gn
@@ -0,0 +1,10 @@
+# Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+component("switches") {
+ sources = [
+ "ungoogled_switches.h",
+ "ungoogled_switches.cc",
+ ]
+}
diff --git a/third_party/ungoogled/ungoogled_switches.cc b/third_party/ungoogled/ungoogled_switches.cc
new file mode 100644
--- /dev/null
+++ b/third_party/ungoogled/ungoogled_switches.cc
@@ -0,0 +1,18 @@
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/ungoogled/ungoogled_switches.h"
+
+namespace switches {
+
+// Enable fingerprinting deception for getClientRects and getBoundingClientRect
+const char kFingerprintingClientRectsNoise[] = "fingerprinting-client-rects-noise";
+
+// Enable fingerprinting deception for measureText
+const char kFingerprintingCanvasMeasureTextNoise[] = "fingerprinting-canvas-measuretext-noise";
+
+// Enable fingerprinting deception for Canvas image data
+const char kFingerprintingCanvasImageDataNoise[] = "fingerprinting-canvas-image-data-noise";
+
+} // namespace switches
diff --git a/third_party/ungoogled/ungoogled_switches.h b/third_party/ungoogled/ungoogled_switches.h
new file mode 100644
--- /dev/null
+++ b/third_party/ungoogled/ungoogled_switches.h
@@ -0,0 +1,18 @@
+// Copyright (c) 2018 The ungoogled-chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Defines all the fingerprinting command-line switches.
+
+#ifndef THIRD_PARTY_UNGOOGLED_FINGERPRINTING_SWITCHES_H_
+#define THIRD_PARTY_UNGOOGLED_FINGERPRINTING_SWITCHES_H_
+
+namespace switches {
+
+extern const char kFingerprintingClientRectsNoise[];
+extern const char kFingerprintingCanvasMeasureTextNoise[];
+extern const char kFingerprintingCanvasImageDataNoise[];
+
+}
+
+#endif // THIRD_PARTY_UNGOOGLED_FINGERPRINTING_SWITCHES_H_
--
2.17.1
@@ -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
@@ -275,6 +275,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.17.1
@@ -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
@@ -125,6 +125,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.17.1
@@ -0,0 +1,23 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 28 Oct 2018 14:11:50 +0100
Subject: Offer builtin autocomplete for chrome://flags
---
.../browser/autocomplete/chrome_autocomplete_provider_client.cc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -255,6 +255,8 @@ std::vector<base::string16> ChromeAutocompleteProviderClient::GetBuiltinURLs() {
std::vector<base::string16>
ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
std::vector<base::string16> builtins_to_provide;
+ builtins_to_provide.push_back(
+ base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
builtins_to_provide.push_back(
base::ASCIIToUTF16(chrome::kChromeUIChromeURLsURL));
#if !defined(OS_ANDROID)
--
2.17.1
@@ -0,0 +1,36 @@
From: AlexeyBarabash <alexey@brave.com>
Date: Thu, 11 Jan 2018 13:27:34 +0200
Subject: Open YouTube links in Bromite
---
.../browser/externalnav/ExternalNavigationHandler.java | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
@@ -403,6 +403,7 @@ public class ExternalNavigationHandler {
Uri.parse(WebView.SCHEME_TEL
+ params.getUrl().substring(WTAI_MC_URL_PREFIX.length()))),
false);
+
if (DEBUG) Log.i(TAG, "wtai:// link handled");
RecordUserAction.record("Android.PhoneIntent");
return true;
@@ -746,6 +747,13 @@ public class ExternalNavigationHandler {
return OverrideUrlLoadingResult.OVERRIDE_WITH_ASYNC_ACTION;
}
+ // force to open YouTube urls in Bromite
+ String intentPackageName = targetIntent.getPackage();
+ if (intentPackageName != null && intentPackageName.equals("com.google.android.youtube")) {
+ if (DEBUG) Log.i(TAG, "NO_OVERRIDE: YouTube URL for YouTube app");
+ return OverrideUrlLoadingResult.NO_OVERRIDE;
+ }
+
// This should come after file intents, but before any returns of
// OVERRIDE_WITH_EXTERNAL_INTENT.
if (externalIntentRequestsDisabled()) return OverrideUrlLoadingResult.NO_OVERRIDE;
--
2.17.1
@@ -0,0 +1,92 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 28 Apr 2018 08:30:26 +0200
Subject: Reduce HTTP headers in DoH requests to bare minimum
---
net/base/load_flags_list.h | 9 +++++++++
net/dns/dns_transaction.cc | 1 +
net/url_request/url_request_http_job.cc | 16 +++++++++++-----
3 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
--- a/net/base/load_flags_list.h
+++ b/net/base/load_flags_list.h
@@ -112,3 +112,12 @@ LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 17)
// is considered privileged, and therefore this flag must only be set from a
// trusted process.
LOAD_FLAG(CAN_USE_RESTRICTED_PREFETCH, 1 << 18)
+
+
+
+
+// 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 << 19)
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
@@ -405,6 +405,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
// perspective to prevent the client from sending AIA requests).
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
LOAD_BYPASS_PROXY |
+ LOAD_IGNORE_LIMITS | LOAD_MINIMAL_HEADERS |
LOAD_DISABLE_CERT_NETWORK_FETCHES);
request_->set_allow_credentials(false);
}
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
@@ -271,6 +271,7 @@ void URLRequestHttpJob::Start() {
// plugin could set a referrer although sending the referrer is inhibited.
request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
// Our consumer should have made sure that this is a safe referrer. See for
// instance WebCore::FrameLoader::HideReferrer.
if (referrer.is_valid()) {
@@ -286,11 +287,14 @@ void URLRequestHttpJob::Start() {
request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
referer_value);
}
+ }
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
request_info_.extra_headers.SetHeaderIfMissing(
HttpRequestHeaders::kUserAgent,
http_user_agent_settings_ ?
http_user_agent_settings_->GetUserAgent() : std::string());
+ }
AddExtraHeaders();
AddCookieHeaderAndStart();
@@ -505,10 +509,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
} else {
// Advertise "br" encoding only if transferred data is opaque to proxy.
bool advertise_brotli = false;
- if (request()->context()->enable_brotli()) {
- if (request()->url().SchemeIsCryptographic() ||
- IsLocalhost(request()->url())) {
- advertise_brotli = true;
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
+ if (request()->context()->enable_brotli()) {
+ if (request()->url().SchemeIsCryptographic() ||
+ IsLocalhost(request()->url())) {
+ advertise_brotli = true;
+ }
}
}
@@ -526,7 +532,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
}
}
- if (http_user_agent_settings_) {
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS) && http_user_agent_settings_) {
// Only add default Accept-Language if the request didn't have it
// specified.
std::string accept_language =
--
2.17.1
+101
View File
@@ -0,0 +1,101 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: Thu, 2 Apr 2015 12:44:23 +0200
Subject: Remove EV certificates
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 | 13 +++++++++----
net/cert/ev_root_ca_metadata.h | 6 ++----
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
--- a/net/cert/ev_root_ca_metadata.cc
+++ b/net/cert/ev_root_ca_metadata.cc
@@ -4,7 +4,7 @@
#include "net/cert/ev_root_ca_metadata.h"
-#if defined(USE_NSS_CERTS)
+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
#include <cert.h>
#include <pkcs11n.h>
#include <secerr.h>
@@ -19,7 +19,7 @@
#include "base/logging.h"
#include "base/strings/string_piece.h"
#include "net/der/input.h"
-#if defined(USE_NSS_CERTS)
+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
#include "crypto/nss_util.h"
#elif defined(PLATFORM_USES_CHROMIUM_EV_METADATA) || defined(OS_WIN)
#include "third_party/boringssl/src/include/openssl/bytestring.h"
@@ -763,7 +763,7 @@ EVRootCAMetadata* EVRootCAMetadata::GetInstance() {
return g_ev_root_ca_metadata.Pointer();
}
-#if defined(USE_NSS_CERTS)
+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
namespace {
// Converts a DER-encoded OID (without leading tag and length) to a SECOidTag.
@@ -1045,6 +1045,11 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) {
// metadata.
//
+bool EVRootCAMetadata::IsCaBrowserForumEvOid(PolicyOID policy_oid) {
+ LOG(WARNING) << "Not implemented";
+ return false;
+}
+
bool EVRootCAMetadata::IsEVPolicyOID(PolicyOID policy_oid) const {
LOG(WARNING) << "Not implemented";
return false;
@@ -1084,7 +1089,7 @@ bool EVRootCAMetadata::RemoveEVCA(const SHA256HashValue& fingerprint) {
EVRootCAMetadata::EVRootCAMetadata() {
// Constructs the object from the raw metadata in kEvRootCaMetadata.
-#if defined(USE_NSS_CERTS)
+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
crypto::EnsureNSSInit();
for (const auto& ev_root : kEvRootCaMetadata) {
diff --git a/net/cert/ev_root_ca_metadata.h b/net/cert/ev_root_ca_metadata.h
--- a/net/cert/ev_root_ca_metadata.h
+++ b/net/cert/ev_root_ca_metadata.h
@@ -24,7 +24,7 @@
defined(OS_FUCHSIA)
// When not defined, the EVRootCAMetadata singleton is a dumb placeholder
// implementation that will fail all EV lookup operations.
-#define PLATFORM_USES_CHROMIUM_EV_METADATA
+//#define PLATFORM_USES_CHROMIUM_EV_METADATA
#endif
namespace base {
@@ -68,12 +68,10 @@ class NET_EXPORT_PRIVATE EVRootCAMetadata {
bool HasEVPolicyOIDGivenBytes(const SHA256HashValue& fingerprint,
const der::Input& policy_oid) const;
-#if defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
// Returns true if |policy_oid| is for 2.23.140.1.1 (CA/Browser Forum's
// Extended Validation Policy). This is used as a hack by the
// platform-specific CertVerifyProcs when doing EV verification.
static bool IsCaBrowserForumEvOid(PolicyOID policy_oid);
-#endif
// AddEVCA adds an EV CA to the list of known EV CAs with the given policy.
// |policy| is expressed as a string of dotted numbers. It returns true on
@@ -90,7 +88,7 @@ class NET_EXPORT_PRIVATE EVRootCAMetadata {
EVRootCAMetadata();
~EVRootCAMetadata();
-#if defined(USE_NSS_CERTS)
+#if defined(USE_NSS_CERTS) && defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
using PolicyOIDMap = std::map<SHA256HashValue, std::vector<PolicyOID>>;
// RegisterOID registers |policy|, a policy OID in dotted string form, and
--
2.17.1
+118
View File
@@ -0,0 +1,118 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 3 Nov 2019 08:22:29 +0100
Subject: Remove SMS integration
---
.../content/browser/sms/SmsReceiver.java | 29 +++----------------
.../content/browser/sms/Wrappers.java | 11 +------
2 files changed, 5 insertions(+), 35 deletions(-)
diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java
--- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java
+++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsReceiver.java
@@ -11,11 +11,6 @@ import android.content.IntentFilter;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.auth.api.phone.SmsRetriever;
-import com.google.android.gms.common.api.CommonStatusCodes;
-import com.google.android.gms.common.api.Status;
-import com.google.android.gms.tasks.Task;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative;
@@ -42,18 +37,6 @@ public class SmsReceiver extends BroadcastReceiver {
mSmsProviderAndroid = smsProviderAndroid;
mContext = new Wrappers.SmsReceiverContext(ContextUtils.getApplicationContext());
-
- // A broadcast receiver is registered upon the creation of this class
- // which happens when the SMS Retriever API is used for the first time
- // since chrome last restarted (which, on android, happens frequently).
- // The broadcast receiver is fairly lightweight (e.g. it responds
- // quickly without much computation).
- // If this broadcast receiver becomes more heavyweight, we should make
- // this registration expire after the SMS message is received.
- if (DEBUG) Log.d(TAG, "Registering intent filters.");
- IntentFilter filter = new IntentFilter();
- filter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION);
- mContext.registerReceiver(this, filter);
}
@CalledByNative
@@ -77,7 +60,7 @@ public class SmsReceiver extends BroadcastReceiver {
return;
}
- if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
+/* if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
return;
}
@@ -104,22 +87,18 @@ public class SmsReceiver extends BroadcastReceiver {
if (DEBUG) Log.d(TAG, "Timeout");
SmsReceiverJni.get().onTimeout(mSmsProviderAndroid);
break;
- }
+ } */
}
@CalledByNative
private void listen() {
- Wrappers.SmsRetrieverClientWrapper client = getClient();
- Task<Void> task = client.startSmsRetriever();
-
- if (DEBUG) Log.d(TAG, "Installed task");
}
private Wrappers.SmsRetrieverClientWrapper getClient() {
- if (mClient != null) {
+/* if (mClient != null) {
return mClient;
}
- mClient = new Wrappers.SmsRetrieverClientWrapper(SmsRetriever.getClient(mContext));
+ mClient = new Wrappers.SmsRetrieverClientWrapper(SmsRetriever.getClient(mContext)); */
return mClient;
}
diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
--- a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
+++ b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java
@@ -10,9 +10,6 @@ import android.content.ContextWrapper;
import android.content.Intent;
import android.content.IntentFilter;
-import com.google.android.gms.auth.api.phone.SmsRetrieverClient;
-import com.google.android.gms.tasks.Task;
-
class Wrappers {
// Prevent instantiation.
private Wrappers() {}
@@ -21,11 +18,9 @@ class Wrappers {
* Wraps com.google.android.gms.auth.api.phone.SmsRetrieverClient.
*/
static class SmsRetrieverClientWrapper {
- private final SmsRetrieverClient mSmsRetrieverClient;
private SmsReceiverContext mContext;
- public SmsRetrieverClientWrapper(SmsRetrieverClient smsRetrieverClient) {
- mSmsRetrieverClient = smsRetrieverClient;
+ public SmsRetrieverClientWrapper() {
}
public void setContext(SmsReceiverContext context) {
@@ -35,10 +30,6 @@ class Wrappers {
public SmsReceiverContext getContext() {
return mContext;
}
-
- public Task<Void> startSmsRetriever() {
- return mSmsRetrieverClient.startSmsRetriever();
- }
}
/**
--
2.17.1
@@ -0,0 +1,132 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 09:29:52 +0100
Subject: Remove dependency on com.google.android.gcm
---
third_party/android_sdk/BUILD.gn | 3 --
.../client/android2/AndroidManifest.xml | 35 -------------------
.../AndroidMessageReceiverService.java | 17 ---------
.../channel/AndroidMessageSenderService.java | 3 +-
4 files changed, 1 insertion(+), 57 deletions(-)
diff --git a/third_party/android_sdk/BUILD.gn b/third_party/android_sdk/BUILD.gn
--- a/third_party/android_sdk/BUILD.gn
+++ b/third_party/android_sdk/BUILD.gn
@@ -67,7 +67,4 @@ if (enable_java_templates) {
testonly = true
java_files = [ "//third_party/android_sdk/public/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
}
- android_java_prebuilt("android_gcm_java") {
- jar_path = "//third_party/android_sdk/public/extras/google/gcm/gcm-client/dist/gcm.jar"
- }
}
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifest.xml
@@ -4,10 +4,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.ipc.invalidation.client.android2">
- <!-- App receives GCM messages. -->
- <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
- <!-- GCM connects to Google Services. -->
- <uses-permission android:name="android.permission.INTERNET" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
@@ -16,40 +12,9 @@
<service android:exported="false"
android:name="com.google.ipc.invalidation.ticl.android2.TiclService"/>
- <!-- Ticl sender. -->
- <service android:exported="false"
- android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"/>
-
<!-- Receiver for scheduler alarms. -->
<receiver android:exported="false"
android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"/>
- <!-- GCM Broadcast Receiver -->
- <receiver android:exported="true"
- android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
- android:permission="com.google.android.c2dm.permission.SEND">
- <intent-filter>
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
- <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
- <category android:name="com.google.ipc.invalidation.ticl.android2" />
- </intent-filter>
- </receiver>
-
- <!-- GCM multiplexer -->
- <service android:exported="false"
- android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener">
- <meta-data android:name="sender_ids" android:value="ipc.invalidation@gmail.com"/>
- </service>
-
- <!-- Invalidation service multiplexed GCM receiver -->
- <service android:exported="false"
- android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
- android:enabled="true"/>
- <receiver android:exported="false"
- android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver">
- <intent-filter>
- <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
- </intent-filter>
- </receiver>
</application>
</manifest>
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java
@@ -15,7 +15,6 @@
*/
package com.google.ipc.invalidation.ticl.android2.channel;
-import com.google.android.gcm.GCMRegistrar;
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
import com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener;
@@ -126,20 +125,4 @@ public class AndroidMessageReceiverService extends MultiplexingGcmListener.Abstr
// now, there is nothing to do.
}
- /**
- * Initializes GCM as a convenience method for tests. In production, applications should handle
- * this.
- */
- public static void initializeGcmForTest(Context context, Logger logger, String senderId) {
- // Initialize GCM.
- GCMRegistrar.checkDevice(context);
- GCMRegistrar.checkManifest(context);
- String regId = GCMRegistrar.getRegistrationId(context);
- if (regId.isEmpty()) {
- logger.info("Not registered with GCM; registering");
- GCMRegistrar.register(context, senderId);
- } else {
- logger.fine("Already registered with GCM: %s", regId);
- }
- }
}
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java
@@ -15,7 +15,6 @@
*/
package com.google.ipc.invalidation.ticl.android2.channel;
-import com.google.android.gcm.GCMRegistrar;
import com.google.ipc.invalidation.common.GcmSharedConstants;
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
@@ -395,7 +394,7 @@ public class AndroidMessageSenderService extends IntentService {
// No client key when using old style registration id.
clientKey = "";
try {
- registrationId = GCMRegistrar.getRegistrationId(context);
+ registrationId = null;
} catch (RuntimeException exception) {
// GCMRegistrar#getRegistrationId occasionally throws a runtime exception. Catching the
// exception rather than crashing.
--
2.17.1
@@ -0,0 +1,186 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 09:22:31 +0100
Subject: Remove dependency on com.google.android.gms.auth
---
chrome/android/BUILD.gn | 1 -
.../signin/core/browser/android/BUILD.gn | 1 -
.../components/signin/AccountIdProvider.java | 10 +----
.../signin/SystemAccountManagerDelegate.java | 15 +------
content/public/android/BUILD.gn | 1 -
content/test/BUILD.gn | 1 -
third_party/android_deps/BUILD.gn | 44 -------------------
third_party/robolectric/BUILD.gn | 1 -
8 files changed, 2 insertions(+), 72 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -216,7 +216,6 @@ android_library("chrome_java") {
":thumbnail_cache_entry_proto_java",
":update_proto_java",
":usage_stats_proto_java",
- "$google_play_services_package:google_play_services_auth_base_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
"$google_play_services_package:google_play_services_cast_framework_java",
diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
--- a/components/signin/core/browser/android/BUILD.gn
+++ b/components/signin/core/browser/android/BUILD.gn
@@ -15,7 +15,6 @@ generate_jni("jni_headers") {
android_library("java") {
deps = [
- "$google_play_services_package:google_play_services_auth_base_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
@@ -6,9 +6,6 @@ package org.chromium.components.signin;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.StrictModeContext;
@@ -48,12 +45,7 @@ public class AccountIdProvider {
* Google Play services is available.
*/
public boolean canBeUsed() {
- // TODO(http://crbug.com/577190): Remove StrictMode override.
- try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
- int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
- ContextUtils.getApplicationContext());
- return resultCode == ConnectionResult.SUCCESS;
- }
+ return false;
}
/**
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
@@ -24,9 +24,6 @@ import android.os.PatternMatcher;
import android.os.Process;
import android.os.SystemClock;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
@@ -82,17 +79,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
}
protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException {
- Context context = ContextUtils.getApplicationContext();
- final int resultCode =
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
- if (resultCode == ConnectionResult.SUCCESS) {
- return;
- }
-
- throw new GmsAvailabilityException(
- String.format("Can't use Google Play Services: %s",
- GoogleApiAvailability.getInstance().getErrorString(resultCode)),
- resultCode);
+ throw new GmsAvailabilityException("Can't use Google Play Services", 1);
}
@Override
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
--- a/content/public/android/BUILD.gn
+++ b/content/public/android/BUILD.gn
@@ -53,7 +53,6 @@ action("generate_sandboxed_service_srcjar") {
android_library("content_java") {
deps = [
":content_java_resources",
- "$google_play_services_package:google_play_services_auth_api_phone_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
"$google_play_services_package:google_play_services_tasks_java",
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -2348,7 +2348,6 @@ if (is_android) {
testonly = true
java_files = content_java_sources_needing_jni
deps = [
- "$google_play_services_package:google_play_services_auth_api_phone_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
"$google_play_services_package:google_play_services_tasks_java",
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -820,50 +820,6 @@ android_aar_prebuilt("com_android_support_viewpager_java") {
]
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_auth_java") {
- aar_path = "libs/com_google_android_gms_play_services_auth/play-services-auth-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info"
- deps = [
- ":google_play_services_auth_api_phone_java",
- ":google_play_services_auth_base_java",
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_auth_api_phone_java") {
- aar_path = "libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_auth_base_java") {
- aar_path = "libs/com_google_android_gms_play_services_auth_base/play-services-auth-base-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("google_play_services_base_java") {
aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-15.0.1.aar"
diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
--- a/third_party/robolectric/BUILD.gn
+++ b/third_party/robolectric/BUILD.gn
@@ -938,7 +938,6 @@ java_library("shadows_play_services_java") {
":robolectric_shadowapi_java",
":robolectric_utils_java",
":shadows_core_java",
- "$google_play_services_package:google_play_services_auth_base_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
"//third_party/android_deps:android_support_v4_java",
--
2.17.1
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,811 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 08:58:19 +0100
Subject: Remove dependency on
com.google.android.gms.common/auth/signin/dynamic,
com.google.android.gms.tasks
---
chrome/android/BUILD.gn | 8 --
chrome/android/features/media_router/BUILD.gn | 2 -
.../media/router/ChromeMediaRouter.java | 7 +-
chrome/android/java/AndroidManifest.xml | 9 --
.../org/chromium/chrome/browser/AppHooks.java | 14 +---
.../chrome/browser/ChromeVersionInfo.java | 12 +--
.../component_updater/UpdateScheduler.java | 3 -
.../externalauth/ExternalAuthUtils.java | 14 +---
.../UserRecoverableErrorHandler.java | 7 --
.../gcore/ChromeGoogleApiClientImpl.java | 25 +-----
.../browser/gcore/GoogleApiClientHelper.java | 82 +------------------
.../browser/omaha/UpdateStatusProvider.java | 10 +--
.../PasswordManagerLauncher.java | 20 +----
chrome/test/android/BUILD.gn | 2 -
components/background_task_scheduler/BUILD.gn | 10 ---
.../signin/core/browser/android/BUILD.gn | 2 -
.../signin/GmsAvailabilityException.java | 4 +-
content/public/android/BUILD.gn | 3 -
content/test/BUILD.gn | 3 -
device/BUILD.gn | 2 -
remoting/android/client_java_tmpl.gni | 3 -
services/BUILD.gn | 4 -
services/device/geolocation/BUILD.gn | 2 -
services/shape_detection/BUILD.gn | 2 -
third_party/android_deps/BUILD.gn | 38 ---------
third_party/cacheinvalidation/BUILD.gn | 1 -
third_party/robolectric/BUILD.gn | 2 -
27 files changed, 16 insertions(+), 275 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -216,9 +216,6 @@ android_library("chrome_java") {
":thumbnail_cache_entry_proto_java",
":update_proto_java",
":usage_stats_proto_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:jni_java",
"//chrome/android/features/keyboard_accessory:public_java",
@@ -614,8 +611,6 @@ junit_binary("chrome_junit_tests") {
":chrome_app_java_resources",
":chrome_java",
":partner_location_descriptor_proto_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
@@ -724,9 +719,6 @@ android_library("chrome_test_java") {
":chrome_public_test_apk_resources",
":chrome_test_util_java",
":partner_location_descriptor_proto_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
"//base/test:test_support_java",
diff --git a/chrome/android/features/media_router/BUILD.gn b/chrome/android/features/media_router/BUILD.gn
--- a/chrome/android/features/media_router/BUILD.gn
+++ b/chrome/android/features/media_router/BUILD.gn
@@ -10,8 +10,6 @@ import("//chrome/common/features.gni")
android_library("java") {
deps = [
":java_resources",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:jni_java",
"//chrome/android:chrome_java",
diff --git a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
--- a/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
+++ b/chrome/android/features/media_router/java/src/org/chromium/chrome/browser/media/router/ChromeMediaRouter.java
@@ -9,9 +9,6 @@ import android.support.v7.media.MediaRouter;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.StrictModeContext;
@@ -44,9 +41,7 @@ public class ChromeMediaRouter implements MediaRouteManager {
int googleApiAvailabilityResult =
AppHooks.get().isGoogleApiAvailableWithMinApkVersion(
MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
- if (googleApiAvailabilityResult != ConnectionResult.SUCCESS) {
- GoogleApiAvailability.getInstance().showErrorNotification(
- ContextUtils.getApplicationContext(), googleApiAvailabilityResult);
+ if (true) {
return;
}
MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager);
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
@@ -858,15 +858,6 @@ by a child template that "extends" this file.
</intent-filter>
</activity>
- <!-- Activity for dispatching intents to Instant Apps. -->
- <activity
- android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity"
- android:exported="false"
- android:theme="@android:style/Theme.NoDisplay"
- android:noHistory="true"
- android:excludeFromRecents="true">
- </activity>
-
<activity
android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity"
android:exported="false"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
@@ -14,9 +14,6 @@ import android.view.View;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative;
@@ -380,16 +377,7 @@ public abstract class AppHooks {
* same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
*/
public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
- try {
- PackageInfo gmsPackageInfo =
- ContextUtils.getApplicationContext().getPackageManager().getPackageInfo(
- GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, /* flags= */ 0);
- int apkVersion = gmsPackageInfo.versionCode;
- if (apkVersion >= minApkVersion) return ConnectionResult.SUCCESS;
- } catch (PackageManager.NameNotFoundException e) {
- return ConnectionResult.SERVICE_MISSING;
- }
- return ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED;
+ return 1; /* SERVICE_MISSING*/
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
@@ -7,8 +7,6 @@ package org.chromium.chrome.browser;
import android.content.Context;
import android.content.pm.PackageManager;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
@@ -95,7 +93,7 @@ public class ChromeVersionInfo {
public static String getGmsInfo() {
Context context = ContextUtils.getApplicationContext();
- final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
+ final long sdkVersion = 12600000;
final long installedGmsVersion = getPlayServicesApkVersionNumber(context);
final String accessType;
@@ -112,12 +110,6 @@ public class ChromeVersionInfo {
}
private static long getPlayServicesApkVersionNumber(Context context) {
- try {
- return context.getPackageManager()
- .getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
- .versionCode;
- } catch (PackageManager.NameNotFoundException e) {
- return 0;
- }
+ return 0;
}
}
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
@@ -6,9 +6,6 @@ package org.chromium.chrome.browser.component_updater;
import android.os.Build;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
@@ -15,9 +15,6 @@ import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.WorkerThread;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.CommandLine;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
@@ -158,9 +155,7 @@ public class ExternalAuthUtils {
* when it is updating.
*/
public boolean isGooglePlayServicesMissing(final Context context) {
- final int resultCode = checkGooglePlayServicesAvailable(context);
- return (resultCode == ConnectionResult.SERVICE_MISSING
- || resultCode == ConnectionResult.SERVICE_INVALID);
+ return true;
}
/**
@@ -182,7 +177,6 @@ public class ExternalAuthUtils {
Context context = ContextUtils.getApplicationContext();
final int resultCode = checkGooglePlayServicesAvailable(context);
- if (resultCode == ConnectionResult.SUCCESS) return true;
// resultCode is some kind of error.
Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
if (isUserRecoverableError(resultCode)) {
@@ -252,7 +246,7 @@ public class ExternalAuthUtils {
protected int checkGooglePlayServicesAvailable(final Context context) {
// TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in.
try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
+ return 1; /*SERVICE_MISSING*/
}
}
@@ -264,7 +258,7 @@ public class ExternalAuthUtils {
* @return true If the code represents a user-recoverable error
*/
protected boolean isUserRecoverableError(final int errorCode) {
- return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
+ return false;
}
/**
@@ -274,6 +268,6 @@ public class ExternalAuthUtils {
* @return a textual description of the error code
*/
protected String describeError(final int errorCode) {
- return GoogleApiAvailability.getInstance().getErrorString(errorCode);
+ return "";
}
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
@@ -9,8 +9,6 @@ import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.CachedMetrics.ActionEvent;
@@ -97,7 +95,6 @@ public abstract class UserRecoverableErrorHandler {
if (!sNotificationShown.getAndSet(true)) {
return;
}
- GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
}
}
@@ -190,11 +187,7 @@ public abstract class UserRecoverableErrorHandler {
cancelDialog();
}
if (mDialog == null) {
- mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
- mActivity, errorCode, NO_RESPONSE_REQUIRED);
mErrorCode = errorCode;
-
- DialogUserActionRecorder.createAndAttachToDialog(mDialog);
}
// This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
if (mDialog != null && !mDialog.isShowing()) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
@@ -6,9 +6,6 @@ package org.chromium.chrome.browser.gcore;
import android.content.Context;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.api.GoogleApiClient;
-
import org.chromium.base.Log;
import org.chromium.base.TraceEvent;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
@@ -22,7 +19,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
private static final String TAG = "Icing";
private final Context mApplicationContext;
- private final GoogleApiClient mClient;
/**
* @param context its application context will be exposed through
@@ -31,10 +27,9 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
* @param requireFirstPartyBuild true if the given client can only be used in a first-party
* build.
*/
- public ChromeGoogleApiClientImpl(Context context, GoogleApiClient client,
+ public ChromeGoogleApiClientImpl(Context context,
boolean requireFirstPartyBuild) {
mApplicationContext = context.getApplicationContext();
- mClient = client;
if (requireFirstPartyBuild && !ExternalAuthUtils.getInstance().isChromeGoogleSigned()) {
throw new IllegalStateException("GoogleApiClient requires first-party build");
}
@@ -42,7 +37,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
@Override
public void disconnect() {
- mClient.disconnect();
}
@Override
@@ -58,24 +52,11 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
@Override
public boolean connectWithTimeout(long timeout) {
TraceEvent.begin("ChromeGoogleApiClientImpl:connectWithTimeout");
- try {
- ConnectionResult result = mClient.blockingConnect(timeout, TimeUnit.MILLISECONDS);
- if (!result.isSuccess()) {
- Log.e(TAG, "Connection to GmsCore unsuccessful. Error %d", result.getErrorCode());
- } else {
- Log.d(TAG, "Connection to GmsCore successful.");
- }
- return result.isSuccess();
- } finally {
- TraceEvent.end("ChromeGoogleApiClientImpl:connectWithTimeout");
- }
+ TraceEvent.end("ChromeGoogleApiClientImpl:connectWithTimeout");
+ return false;
}
public Context getApplicationContext() {
return mApplicationContext;
}
-
- public GoogleApiClient getApiClient() {
- return mClient;
- }
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
@@ -7,11 +7,6 @@ package org.chromium.chrome.browser.gcore;
import android.os.Bundle;
import android.os.Handler;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
-import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
-
import org.chromium.base.ApplicationStatus;
import org.chromium.base.ApplicationStatus.ApplicationStateListener;
import org.chromium.base.Log;
@@ -67,29 +62,15 @@ import org.chromium.base.ThreadUtils;
* }
* </pre>
*/
-public class GoogleApiClientHelper
- implements OnConnectionFailedListener, ConnectionCallbacks {
+public class GoogleApiClientHelper {
private static final String TAG = "GCore";
private int mResolutionAttempts;
private boolean mWasConnectedBefore;
private final Handler mHandler = new Handler(ThreadUtils.getUiThreadLooper());
- private final GoogleApiClient mClient;
private long mDisconnectionDelayMs;
private Runnable mPendingDisconnect;
- /**
- * Creates a helper and enrolls it in the various connection management features.
- * See the class documentation for {@link GoogleApiClientHelper} for more information.
- *
- * @param client The client to wrap.
- */
- public GoogleApiClientHelper(GoogleApiClient client) {
- mClient = client;
- enableConnectionRetrying(true);
- enableLifecycleManagement(true);
- }
-
/**
* Opts in or out of lifecycle management. The client's connection will be closed and reopened
* when Chrome goes in and out of background.
@@ -116,13 +97,6 @@ public class GoogleApiClientHelper
* Enabling or disabling it while it is already enabled or disabled has no effect.
*/
public void enableConnectionRetrying(boolean enabled) {
- if (enabled) {
- mClient.registerConnectionCallbacks(this);
- mClient.registerConnectionFailedListener(this);
- } else {
- mClient.unregisterConnectionCallbacks(this);
- mClient.unregisterConnectionFailedListener(this);
- }
}
/**
@@ -155,21 +129,11 @@ public class GoogleApiClientHelper
// Cancel and reschedule the disconnection if we are in the background. We do it early to
// avoid race conditions between a disconnect on the UI thread and the connect below.
if (!ApplicationStatus.hasVisibleActivities()) scheduleDisconnection();
-
- // The client might be disconnected if we were idle in the background for too long.
- if (!mClient.isConnected() && !mClient.isConnecting()) {
- Log.d(TAG, "Reconnecting the client.");
- mClient.connect();
- }
}
void restoreConnectedState() {
// If we go back to the foreground before a delayed disconnect happens, cancel it.
cancelPendingDisconnection();
-
- if (mWasConnectedBefore) {
- mClient.connect();
- }
}
/**
@@ -192,12 +156,6 @@ public class GoogleApiClientHelper
}
private void disconnect() {
- if (mClient.isConnected() || mClient.isConnecting()) {
- mWasConnectedBefore = true;
- }
-
- // We always call disconnect to abort possibly pending connection requests.
- mClient.disconnect();
}
private void cancelPendingDisconnection() {
@@ -207,43 +165,7 @@ public class GoogleApiClientHelper
mPendingDisconnect = null;
}
- @Override
- public void onConnectionFailed(ConnectionResult result) {
- if (!isErrorRecoverableByRetrying(result.getErrorCode())) {
- Log.d(TAG, "Not retrying managed client connection. Unrecoverable error: %d",
- result.getErrorCode());
- return;
- }
-
- if (mResolutionAttempts < ConnectedTask.RETRY_NUMBER_LIMIT) {
- Log.d(TAG, "Retrying managed client connection. attempt %d/%d - errorCode: %d",
- mResolutionAttempts, ConnectedTask.RETRY_NUMBER_LIMIT, result.getErrorCode());
- mResolutionAttempts += 1;
-
- mHandler.postDelayed(new Runnable() {
- @Override
- public void run() {
- mClient.connect();
- }
- }, ConnectedTask.CONNECTION_RETRY_TIME_MS);
- }
- }
-
- @Override
- public void onConnected(Bundle connectionHint) {
- mResolutionAttempts = 0;
- }
-
- @Override
- public void onConnectionSuspended(int cause) {
- // GoogleApiClient handles retrying on suspension itself. Logging in case it didn't succeed
- // for some reason.
- Log.w(TAG, "Managed client connection suspended. Cause: %d", cause);
- }
-
private static boolean isErrorRecoverableByRetrying(int errorCode) {
- return errorCode == ConnectionResult.INTERNAL_ERROR
- || errorCode == ConnectionResult.NETWORK_ERROR
- || errorCode == ConnectionResult.SERVICE_UPDATING;
+ return false;
}
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
@@ -21,8 +21,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.common.GooglePlayServicesUtil;
-
import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.ApplicationStatus.ActivityStateListener;
@@ -465,13 +463,7 @@ public class UpdateStatusProvider implements ActivityStateListener {
}
private boolean isGooglePlayStoreAvailable(Context context) {
- try {
- context.getPackageManager().getPackageInfo(
- GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- return true;
+ return false;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java
@@ -7,8 +7,6 @@ package org.chromium.chrome.browser.password_manager;
import android.app.Activity;
import android.os.Build;
-import com.google.android.gms.common.ConnectionResult;
-
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.AppHooks;
@@ -89,22 +87,6 @@ public class PasswordManagerLauncher {
}
private static boolean tryShowingTheGooglePasswordManager(Activity activity) {
- GooglePasswordManagerUIProvider googlePasswordManagerUIProvider =
- AppHooks.get().createGooglePasswordManagerUIProvider();
- if (googlePasswordManagerUIProvider == null) return false;
-
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return false;
-
- int minGooglePlayServicesVersion = ChromeFeatureList.getFieldTrialParamByFeatureAsInt(
- GOOGLE_ACCOUNT_PWM_UI, MIN_GOOGLE_PLAY_SERVICES_VERSION_PARAM,
- DEFAULT_MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
- if (AppHooks.get().isGoogleApiAvailableWithMinApkVersion(minGooglePlayServicesVersion)
- != ConnectionResult.SUCCESS) {
- return false;
- }
-
- if (!ChromeFeatureList.isEnabled(GOOGLE_ACCOUNT_PWM_UI)) return false;
-
- return googlePasswordManagerUIProvider.showGooglePasswordManager(activity);
+ return false;
}
}
diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
--- a/chrome/test/android/BUILD.gn
+++ b/chrome/test/android/BUILD.gn
@@ -187,8 +187,6 @@ android_library("chrome_java_test_support") {
"javatests/src/org/chromium/chrome/test/util/WaitForFocusHelper.java",
]
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:base_java_test_support",
"//chrome/android:chrome_java",
diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
--- a/components/background_task_scheduler/BUILD.gn
+++ b/components/background_task_scheduler/BUILD.gn
@@ -52,9 +52,6 @@ if (is_android) {
deps = [
":background_task_scheduler_task_ids_java",
":scheduled_task_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
@@ -75,9 +72,6 @@ if (is_android) {
deps = [
":background_task_scheduler_java",
":background_task_scheduler_task_ids_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
"//content/public/test/android:content_java_test_support",
@@ -104,10 +98,6 @@ if (is_android) {
deps = [
":background_task_scheduler_java",
- "$google_play_services_package:google_play_services_auth_base_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
diff --git a/components/signin/core/browser/android/BUILD.gn b/components/signin/core/browser/android/BUILD.gn
--- a/components/signin/core/browser/android/BUILD.gn
+++ b/components/signin/core/browser/android/BUILD.gn
@@ -15,8 +15,6 @@ generate_jni("jni_headers") {
android_library("java") {
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:jni_java",
"//net/android:net_java",
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
@@ -4,8 +4,6 @@
package org.chromium.components.signin;
-import com.google.android.gms.common.GoogleApiAvailability;
-
/**
* This class encapsulates return code if GMSCore package is not available.
*/
@@ -27,6 +25,6 @@ public class GmsAvailabilityException extends AccountManagerDelegateException {
}
public boolean isUserResolvableError() {
- return GoogleApiAvailability.getInstance().isUserResolvableError(mResultCode);
+ return false;
}
}
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
--- a/content/public/android/BUILD.gn
+++ b/content/public/android/BUILD.gn
@@ -53,9 +53,6 @@ action("generate_sandboxed_service_srcjar") {
android_library("content_java") {
deps = [
":content_java_resources",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:jni_java",
"//components/download/public/common:public_java",
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -2348,9 +2348,6 @@ if (is_android) {
testonly = true
java_files = content_java_sources_needing_jni
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//content/public/android:content_java",
"//ui/android:ui_full_java",
diff --git a/device/BUILD.gn b/device/BUILD.gn
--- a/device/BUILD.gn
+++ b/device/BUILD.gn
@@ -390,8 +390,6 @@ if (is_android) {
junit_binary("device_junit_tests") {
java_files = [ "gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java" ]
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni
--- a/remoting/android/client_java_tmpl.gni
+++ b/remoting/android/client_java_tmpl.gni
@@ -102,9 +102,6 @@ template("remoting_android_client_java_tmpl") {
if (defined(invoker.play_services_package)) {
deps += [
- "${invoker.play_services_package}:google_play_services_auth_base_java",
- "${invoker.play_services_package}:google_play_services_base_java",
- "${invoker.play_services_package}:google_play_services_basement_java",
]
}
diff --git a/services/BUILD.gn b/services/BUILD.gn
--- a/services/BUILD.gn
+++ b/services/BUILD.gn
@@ -107,8 +107,6 @@ if (is_android) {
"shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
]
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
@@ -136,8 +134,6 @@ if (is_android) {
"shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java",
]
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:base_java_test_support",
"//mojo/public/java:base_java",
diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
--- a/services/device/geolocation/BUILD.gn
+++ b/services/device/geolocation/BUILD.gn
@@ -150,8 +150,6 @@ if (is_android) {
deps = [
":geolocation",
":geolocation_jni_headers",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:jni_java",
"//components/location/android:location_java",
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
--- a/services/shape_detection/BUILD.gn
+++ b/services/shape_detection/BUILD.gn
@@ -89,8 +89,6 @@ if (is_android) {
]
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//mojo/public/java:base_java",
"//mojo/public/java:bindings_java",
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -820,44 +820,6 @@ android_aar_prebuilt("com_android_support_viewpager_java") {
]
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_base_java") {
- aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info"
- deps = [
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_basement_java") {
- aar_path = "libs/com_google_android_gms_play_services_basement/play-services-basement-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info"
- deps = [
- ":com_android_support_support_v4_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
- input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_tasks_java") {
- aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info"
- deps = [
- ":google_play_services_basement_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("com_google_android_material_material_java") {
aar_path = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
--- a/third_party/cacheinvalidation/BUILD.gn
+++ b/third_party/cacheinvalidation/BUILD.gn
@@ -137,7 +137,6 @@ if (is_android) {
jacoco_never_instrument = true
deps = [
":cacheinvalidation_proto_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//third_party/android_protobuf:protobuf_nano_javalib",
]
diff --git a/third_party/robolectric/BUILD.gn b/third_party/robolectric/BUILD.gn
--- a/third_party/robolectric/BUILD.gn
+++ b/third_party/robolectric/BUILD.gn
@@ -938,8 +938,6 @@ java_library("shadows_play_services_java") {
":robolectric_shadowapi_java",
":robolectric_utils_java",
":shadows_core_java",
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
"//third_party/android_deps:android_support_v4_java",
"//third_party/android_deps:com_google_guava_guava_java",
"//third_party/gson:gson_java",
--
2.17.1
@@ -0,0 +1,548 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 07:58:48 +0100
Subject: Remove dependency on com.google.android.gms.fido,
com.google.android.gms.iid, com.google.android.gms.instantapps,
com.google.android.gms.location
---
chrome/android/BUILD.gn | 5 -
.../ExternalNavigationHandler.java | 4 -
.../instantapps/InstantAppsHandler.java | 59 +---------
.../gcm_driver/instance_id/android/BUILD.gn | 2 -
.../instance_id/InstanceIDWithSubtype.java | 28 +----
device/BUILD.gn | 1 -
services/device/geolocation/BUILD.gn | 1 -
.../geolocation/LocationProviderGmsCore.java | 103 +-----------------
third_party/android_deps/BUILD.gn | 58 ----------
third_party/cacheinvalidation/BUILD.gn | 1 -
.../android2/AndroidManifestUpdatedGcm.xml | 3 -
11 files changed, 9 insertions(+), 256 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -220,8 +220,6 @@ android_library("chrome_java") {
"$google_play_services_package:google_play_services_basement_java",
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
- "$google_play_services_package:google_play_services_fido_java",
- "$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:jni_java",
@@ -622,7 +620,6 @@ junit_binary("chrome_junit_tests") {
"$google_play_services_package:google_play_services_basement_java",
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
- "$google_play_services_package:google_play_services_fido_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
@@ -735,8 +732,6 @@ android_library("chrome_test_java") {
"$google_play_services_package:google_play_services_basement_java",
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
- "$google_play_services_package:google_play_services_fido_java",
- "$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
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
@@ -642,10 +642,6 @@ public class ExternalNavigationHandler {
if (shouldProxyForInstantApps) {
RecordHistogram.recordEnumeratedHistogram("Android.InstantApps.DirectInstantAppsIntent",
AiaIntent.SERP, AiaIntent.NUM_ENTRIES);
- targetIntent.putExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER, true);
- } else {
- // Make sure this extra is not sent unless we've done the verification.
- targetIntent.removeExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER);
}
// The intent can be used to launch Chrome itself, record the user
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
@@ -44,36 +44,6 @@ public class InstantAppsHandler {
// TODO(mariakhomenko): Use system once we roll to O SDK.
private static final int FLAG_DO_NOT_LAUNCH = 0x00000200;
- // TODO(mariakhomenko): Depend directly on the constants once we roll to v8 libraries.
- private static final String DO_NOT_LAUNCH_EXTRA =
- "com.google.android.gms.instantapps.DO_NOT_LAUNCH_INSTANT_APP";
-
- protected static final String IS_REFERRER_TRUSTED_EXTRA =
- "com.google.android.gms.instantapps.IS_REFERRER_TRUSTED";
-
- protected static final String IS_USER_CONFIRMED_LAUNCH_EXTRA =
- "com.google.android.gms.instantapps.IS_USER_CONFIRMED_LAUNCH";
-
- protected static final String TRUSTED_REFERRER_PKG_EXTRA =
- "com.google.android.gms.instantapps.TRUSTED_REFERRER_PKG";
-
- public static final String IS_GOOGLE_SEARCH_REFERRER =
- "com.google.android.gms.instantapps.IS_GOOGLE_SEARCH_REFERRER";
-
- private static final String BROWSER_LAUNCH_REASON =
- "com.google.android.gms.instantapps.BROWSER_LAUNCH_REASON";
-
- private static final String SUPERVISOR_PKG = "com.google.android.instantapps.supervisor";
-
- private static final String[] SUPERVISOR_START_ACTIONS = {
- "com.google.android.instantapps.START", "com.google.android.instantapps.nmr1.INSTALL",
- "com.google.android.instantapps.nmr1.VIEW"};
-
- // Instant Apps system resolver activity on N-MR1+.
- @VisibleForTesting
- public static final String EPHEMERAL_INSTALLER_CLASS =
- "com.google.android.gms.instantapps.routing.EphemeralInstallerActivity";
-
/** Finch experiment name. */
private static final String INSTANT_APPS_EXPERIMENT_NAME = "InstantApps";
@@ -125,14 +95,6 @@ public class InstantAppsHandler {
* @return Whether the given intent is going to open an Instant App.
*/
public static boolean isIntentToInstantApp(Intent intent) {
- if (SUPERVISOR_PKG.equals(intent.getPackage())) return true;
-
- String intentAction = intent.getAction();
- for (String action : SUPERVISOR_START_ACTIONS) {
- if (action.equals(intentAction)) {
- return true;
- }
- }
return false;
}
@@ -169,13 +131,7 @@ public class InstantAppsHandler {
sFallbackIntentTimes.record(SystemClock.elapsedRealtime() - startTime);
intent.removeExtra(INSTANT_APP_START_TIME_EXTRA);
}
- int callSource = IntentUtils.safeGetIntExtra(intent, BROWSER_LAUNCH_REASON, 0);
- if (callSource > 0 && callSource < SOURCE_BOUNDARY) {
- sFallbackCallSource.record(callSource);
- intent.removeExtra(BROWSER_LAUNCH_REASON);
- } else if (callSource >= SOURCE_BOUNDARY) {
- Log.e(TAG, "Unexpected call source constant for Instant Apps: " + callSource);
- }
+ Log.e(TAG, "Unexpected call source constant for Instant Apps");
}
/**
@@ -210,14 +166,6 @@ public class InstantAppsHandler {
return false;
}
- if (IntentUtils.safeGetBooleanExtra(intent, DO_NOT_LAUNCH_EXTRA, false)
- || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
- && (intent.getFlags() & FLAG_DO_NOT_LAUNCH) != 0)) {
- maybeRecordFallbackStats(intent);
- Log.i(TAG, "Not handling with Instant Apps (DO_NOT_LAUNCH_EXTRA)");
- return false;
- }
-
if (IntentUtils.safeGetBooleanExtra(
intent, IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
|| IntentUtils.safeHasExtra(intent, ShortcutHelper.EXTRA_SOURCE)
@@ -242,7 +190,6 @@ public class InstantAppsHandler {
}
Intent callbackIntent = new Intent(intent);
- callbackIntent.putExtra(DO_NOT_LAUNCH_EXTRA, true);
callbackIntent.putExtra(INSTANT_APP_START_TIME_EXTRA, startTime);
return tryLaunchingInstantApp(context, intent, isCustomTabsIntent, callbackIntent);
@@ -345,12 +292,9 @@ public class InstantAppsHandler {
Intent iaIntent = data.getIntent();
if (data.getReferrer() != null) {
iaIntent.putExtra(Intent.EXTRA_REFERRER, data.getReferrer());
- iaIntent.putExtra(IS_REFERRER_TRUSTED_EXTRA, true);
}
Context appContext = ContextUtils.getApplicationContext();
- iaIntent.putExtra(TRUSTED_REFERRER_PKG_EXTRA, appContext.getPackageName());
- iaIntent.putExtra(IS_USER_CONFIRMED_LAUNCH_EXTRA, true);
try {
appContext.startActivity(iaIntent);
@@ -396,7 +340,6 @@ public class InstantAppsHandler {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return info.isInstantAppAvailable;
} else if (info.activityInfo != null) {
- return EPHEMERAL_INSTALLER_CLASS.equals(info.activityInfo.name);
}
return false;
diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
--- a/components/gcm_driver/instance_id/android/BUILD.gn
+++ b/components/gcm_driver/instance_id/android/BUILD.gn
@@ -19,7 +19,6 @@ generate_jni("test_support_jni_headers") {
android_library("instance_id_driver_java") {
deps = [
- "$google_play_services_package:google_play_services_iid_java",
"//base:base_java",
"//base:jni_java",
"//components/gcm_driver/android:gcm_driver_java",
@@ -37,7 +36,6 @@ android_library("instance_id_driver_java") {
android_library("instance_id_driver_test_support_java") {
deps = [
":instance_id_driver_java",
- "$google_play_services_package:google_play_services_iid_java",
"//base:base_java",
]
diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
--- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
+++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
@@ -10,8 +10,6 @@ import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.iid.InstanceID;
-
import org.chromium.base.ContextUtils;
import java.io.IOException;
@@ -26,8 +24,6 @@ public class InstanceIDWithSubtype {
// Must match the private InstanceID.OPTION_SUBTYPE, which is guaranteed to not change.
private static final String OPTION_SUBTYPE = "subtype";
- private final InstanceID mInstanceID;
-
/**
* Cached instances. May be accessed from multiple threads; synchronize on sSubtypeInstancesLock
*/
@@ -39,10 +35,6 @@ public class InstanceIDWithSubtype {
@VisibleForTesting
protected static FakeFactory sFakeFactoryForTesting;
- protected InstanceIDWithSubtype(InstanceID instanceID) {
- mInstanceID = instanceID;
- }
-
/**
* Returns an instance of this class. Unlike {@link InstanceID#getInstance(Context)}, it is not
* a singleton, but instead a different instance will be returned for each {@code subtype}.
@@ -58,11 +50,6 @@ public class InstanceIDWithSubtype {
if (sFakeFactoryForTesting != null) {
existing = sFakeFactoryForTesting.create(subtype);
} else {
- Bundle options = new Bundle();
- options.putCharSequence(OPTION_SUBTYPE, subtype);
- InstanceID instanceID =
- InstanceID.getInstance(ContextUtils.getApplicationContext(), options);
- existing = new InstanceIDWithSubtype(instanceID);
}
sSubtypeInstances.put(subtype, existing);
}
@@ -71,35 +58,30 @@ public class InstanceIDWithSubtype {
}
public String getSubtype() {
- return mInstanceID.getSubtype();
+ return "";
}
public String getId() {
- return mInstanceID.getId();
+ return "";
}
public long getCreationTime() {
- return mInstanceID.getCreationTime();
+ return 0;
}
public void deleteInstanceID() throws IOException {
- synchronized (sSubtypeInstancesLock) {
- sSubtypeInstances.remove(mInstanceID.getSubtype());
- mInstanceID.deleteInstanceID();
- }
}
public void deleteToken(String authorizedEntity, String scope) throws IOException {
- mInstanceID.deleteToken(authorizedEntity, scope);
}
public String getToken(String authorizedEntity, String scope) throws IOException {
- return mInstanceID.getToken(authorizedEntity, scope);
+ return "";
}
public String getToken(String authorizedEntity, String scope, Bundle extras)
throws IOException {
- return mInstanceID.getToken(authorizedEntity, scope, extras);
+ return "";
}
/** Fake subclasses can set {@link #sFakeFactoryForTesting} to an implementation of this. */
diff --git a/device/BUILD.gn b/device/BUILD.gn
--- a/device/BUILD.gn
+++ b/device/BUILD.gn
@@ -392,7 +392,6 @@ if (is_android) {
deps = [
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_location_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
--- a/services/device/geolocation/BUILD.gn
+++ b/services/device/geolocation/BUILD.gn
@@ -152,7 +152,6 @@ if (is_android) {
":geolocation_jni_headers",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_location_java",
"//base:base_java",
"//base:jni_java",
"//components/location/android:location_java",
diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
--- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
+++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
@@ -8,16 +8,6 @@ import android.content.Context;
import android.location.Location;
import android.os.Bundle;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
-import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
-import com.google.android.gms.location.FusedLocationProviderApi;
-import com.google.android.gms.location.LocationListener;
-import com.google.android.gms.location.LocationRequest;
-import com.google.android.gms.location.LocationServices;
-
import org.chromium.base.Log;
import org.chromium.base.ThreadUtils;
import org.chromium.components.location.LocationUtils;
@@ -27,126 +17,39 @@ import org.chromium.components.location.LocationUtils;
*
* https://developers.google.com/android/reference/com/google/android/gms/location/package-summary
*/
-public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectionFailedListener,
- LocationListener, LocationProvider {
+public class LocationProviderGmsCore implements LocationProvider {
private static final String TAG = "LocationProvider";
// Values for the LocationRequest's setInterval for normal and high accuracy, respectively.
private static final long UPDATE_INTERVAL_MS = 1000;
private static final long UPDATE_INTERVAL_FAST_MS = 500;
- private final GoogleApiClient mGoogleApiClient;
- private FusedLocationProviderApi mLocationProviderApi = LocationServices.FusedLocationApi;
-
private boolean mEnablehighAccuracy;
- private LocationRequest mLocationRequest;
public static boolean isGooglePlayServicesAvailable(Context context) {
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
- == ConnectionResult.SUCCESS;
+ return false;
}
LocationProviderGmsCore(Context context) {
Log.i(TAG, "Google Play Services");
- mGoogleApiClient = new GoogleApiClient.Builder(context)
- .addApi(LocationServices.API)
- .addConnectionCallbacks(this)
- .addOnConnectionFailedListener(this)
- .build();
- assert mGoogleApiClient != null;
- }
-
- LocationProviderGmsCore(GoogleApiClient client, FusedLocationProviderApi locationApi) {
- mGoogleApiClient = client;
- mLocationProviderApi = locationApi;
- }
-
- // ConnectionCallbacks implementation
- @Override
- public void onConnected(Bundle connectionHint) {
- ThreadUtils.assertOnUiThread();
-
- mLocationRequest = LocationRequest.create();
- if (mEnablehighAccuracy) {
- // With enableHighAccuracy, request a faster update interval and configure the provider
- // for high accuracy mode.
- mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
- .setInterval(UPDATE_INTERVAL_FAST_MS);
- } else {
- // Use balanced mode by default. In this mode, the API will prefer the network provider
- // but may use sensor data (for instance, GPS) if high accuracy is requested by another
- // app.
- //
- // If location is configured for sensors-only then elevate the priority to ensure GPS
- // and other sensors are used.
- if (LocationUtils.getInstance().isSystemLocationSettingSensorsOnly()) {
- mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
- } else {
- mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
- }
- mLocationRequest.setInterval(UPDATE_INTERVAL_MS);
- }
-
- final Location location = mLocationProviderApi.getLastLocation(mGoogleApiClient);
- if (location != null) {
- LocationProviderAdapter.onNewLocationAvailable(location);
- }
-
- try {
- // Request updates on UI Thread replicating LocationProviderAndroid's behaviour.
- mLocationProviderApi.requestLocationUpdates(
- mGoogleApiClient, mLocationRequest, this, ThreadUtils.getUiThreadLooper());
- } catch (IllegalStateException | SecurityException e) {
- // IllegalStateException is thrown "If this method is executed in a thread that has not
- // called Looper.prepare()". SecurityException is thrown if there is no permission, see
- // https://crbug.com/731271.
- Log.e(TAG, " mLocationProviderApi.requestLocationUpdates() " + e);
- LocationProviderAdapter.newErrorAvailable(
- "Failed to request location updates: " + e.toString());
- assert false;
- }
- }
-
- @Override
- public void onConnectionSuspended(int cause) {}
-
- // OnConnectionFailedListener implementation
- @Override
- public void onConnectionFailed(ConnectionResult result) {
- LocationProviderAdapter.newErrorAvailable(
- "Failed to connect to Google Play Services: " + result.toString());
}
// LocationProvider implementation
@Override
public void start(boolean enableHighAccuracy) {
ThreadUtils.assertOnUiThread();
- if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect();
mEnablehighAccuracy = enableHighAccuracy;
- mGoogleApiClient.connect(); // Should return via onConnected().
}
@Override
public void stop() {
ThreadUtils.assertOnUiThread();
- if (!mGoogleApiClient.isConnected()) return;
-
- mLocationProviderApi.removeLocationUpdates(mGoogleApiClient, this);
-
- mGoogleApiClient.disconnect();
}
@Override
public boolean isRunning() {
assert ThreadUtils.runningOnUiThread();
- if (mGoogleApiClient == null) return false;
- return mGoogleApiClient.isConnecting() || mGoogleApiClient.isConnected();
- }
-
- // LocationListener implementation
- @Override
- public void onLocationChanged(Location location) {
- LocationProviderAdapter.onNewLocationAvailable(location);
+ return false;
}
}
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -879,64 +879,6 @@ android_aar_prebuilt("google_play_services_cast_framework_java") {
strip_resources = !is_java_debug
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_fido_java") {
- aar_path = "libs/com_google_android_gms_play_services_fido/play-services-fido-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_iid_java") {
- aar_path = "libs/com_google_android_gms_play_services_iid/play-services-iid-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_stats_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_instantapps_java") {
- aar_path = "libs/com_google_android_gms_play_services_instantapps/play-services-instantapps-16.0.0.aar"
- info_path = "libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_location_java") {
- aar_path = "libs/com_google_android_gms_play_services_location/play-services-location-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_places_placereport_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("google_play_services_tasks_java") {
aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-15.0.1.aar"
diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
--- a/third_party/cacheinvalidation/BUILD.gn
+++ b/third_party/cacheinvalidation/BUILD.gn
@@ -137,7 +137,6 @@ if (is_android) {
jacoco_never_instrument = true
deps = [
":cacheinvalidation_proto_java",
- "$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//third_party/android_protobuf:protobuf_nano_javalib",
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
@@ -27,9 +27,6 @@
<!-- InstanceID Listener Service -->
<service android:exported="false"
android:name="com.google.ipc.invalidation.ticl2.android2.channel.AndroidInstanceIDListenerService">
- <intent-filter>
- <action android:name="com.google.android.gms.iid.InstanceID"/>
- </intent-filter>
</service>
</application>
</manifest>
--
2.17.1
@@ -0,0 +1,71 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 07:57:37 +0100
Subject: Remove dependency on com.google.android.gms.flags,
com.google.android.gms.location.places, com.google.android.gms.stats
---
third_party/android_deps/BUILD.gn | 49 -------------------------------
1 file changed, 49 deletions(-)
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -1638,55 +1638,6 @@ java_prebuilt("com_github_stephenc_jcip_jcip_annotations_java") {
visibility = [ ":*" ]
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_flags_java") {
- aar_path = "libs/com_google_android_gms_play_services_flags/play-services-flags-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_flags/com_google_android_gms_play_services_flags.info"
-
- # To remove visibility constraint, add this dependency to
- # //tools/android/roll/android_deps/build.gradle.
- visibility = [ ":*" ]
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_places_placereport_java") {
- aar_path = "libs/com_google_android_gms_play_services_places_placereport/play-services-places-placereport-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_places_placereport/com_google_android_gms_play_services_places_placereport.info"
-
- # To remove visibility constraint, add this dependency to
- # //tools/android/roll/android_deps/build.gradle.
- visibility = [ ":*" ]
- deps = [
- ":google_play_services_basement_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_stats_java") {
- aar_path = "libs/com_google_android_gms_play_services_stats/play-services-stats-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_stats/com_google_android_gms_play_services_stats.info"
-
- # To remove visibility constraint, add this dependency to
- # //tools/android/roll/android_deps/build.gradle.
- visibility = [ ":*" ]
- deps = [
- ":google_play_services_basement_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
java_prebuilt("com_google_auto_auto_common_java") {
jar_path = "libs/com_google_auto_auto_common/auto-common-0.10.jar"
--
2.17.1
@@ -0,0 +1,607 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Sat, 2 Nov 2019 07:56:44 +0100
Subject: Remove dependency on com.google.android.gms.gcm
It also disalbes Snippets, auto-update of offline pages and launching browser from background service.
The snippets are already disabled in native codes, this will disable it on Java level.
---
chrome/android/BUILD.gn | 3 -
.../browser/ChromeBackgroundService.java | 4 -
.../ntp/snippets/SnippetsLauncher.java | 2 +-
.../gcm/ChromeGcmListenerService.java | 57 +-----------
components/background_task_scheduler/BUILD.gn | 3 -
.../BackgroundTaskGcmTaskService.java | 63 +------------
.../BackgroundTaskSchedulerFactory.java | 6 +-
...kgroundTaskSchedulerGcmNetworkManager.java | 14 +--
third_party/android_deps/BUILD.gn | 15 ----
third_party/cacheinvalidation/BUILD.gn | 1 -
.../android2/AndroidManifestUpdatedGcm.xml | 20 -----
.../channel/AndroidGcmController.java | 42 +--------
.../AndroidInstanceIDListenerService.java | 13 +--
.../channel/GcmRegistrationTaskService.java | 89 +------------------
14 files changed, 10 insertions(+), 322 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -221,7 +221,6 @@ android_library("chrome_java") {
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
"$google_play_services_package:google_play_services_fido_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
@@ -738,7 +737,6 @@ android_library("chrome_test_java") {
"$google_play_services_package:google_play_services_cast_framework_java",
"$google_play_services_package:google_play_services_cast_java",
"$google_play_services_package:google_play_services_fido_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
@@ -1539,7 +1537,6 @@ android_library("browser_java_test_support") {
]
deps = [
":chrome_java",
- "$google_play_services_package:google_play_services_gcm_java",
"//base:base_java",
"//base:base_java_test_support",
"//chrome/android/public/profiles:java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
@@ -8,10 +8,6 @@ import android.content.Context;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.GcmTaskService;
-import com.google.android.gms.gcm.TaskParams;
-
import org.chromium.base.Log;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.background_sync.BackgroundSyncBackgroundTaskScheduler;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
@@ -36,7 +36,7 @@ public class SnippetsLauncher {
// If it is non-null then the browser is running.
private static SnippetsLauncher sInstance;
- private boolean mGCMEnabled = true;
+ private boolean mGCMEnabled;
/**
* Create a SnippetsLauncher object, which is owned by C++.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java
@@ -11,7 +11,6 @@ import android.os.Bundle;
import android.os.SystemClock;
import android.text.TextUtils;
-import com.google.android.gms.gcm.GcmListenerService;
import com.google.ipc.invalidation.ticl.android2.channel.AndroidGcmController;
import org.chromium.base.ContextUtils;
@@ -34,62 +33,9 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
/**
* Receives Downstream messages and status of upstream messages from GCM.
*/
-public class ChromeGcmListenerService extends GcmListenerService {
+public class ChromeGcmListenerService {
private static final String TAG = "ChromeGcmListener";
- @Override
- public void onCreate() {
- ProcessInitializationHandler.getInstance().initializePreNative();
- super.onCreate();
- }
-
- @Override
- public void onMessageReceived(final String from, final Bundle data) {
- boolean hasCollapseKey = !TextUtils.isEmpty(data.getString("collapse_key"));
- GcmUma.recordDataMessageReceived(ContextUtils.getApplicationContext(), hasCollapseKey);
-
- String invalidationSenderId = AndroidGcmController.get(this).getSenderId();
- if (from.equals(invalidationSenderId)) {
- AndroidGcmController.get(this).onMessageReceived(data);
- return;
- }
-
- // Dispatch the message to the GCM Driver for native features.
- PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> {
- GCMMessage message = null;
- try {
- message = new GCMMessage(from, data);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Received an invalid GCM Message", e);
- return;
- }
-
- scheduleOrDispatchMessageToDriver(message);
- });
- }
-
- @Override
- public void onMessageSent(String msgId) {
- Log.d(TAG, "Message sent successfully. Message id: " + msgId);
- GcmUma.recordGcmUpstreamHistogram(
- ContextUtils.getApplicationContext(), GcmUma.UMA_UPSTREAM_SUCCESS);
- }
-
- @Override
- public void onSendError(String msgId, String error) {
- Log.w(TAG, "Error in sending message. Message id: " + msgId + " Error: " + error);
- GcmUma.recordGcmUpstreamHistogram(
- ContextUtils.getApplicationContext(), GcmUma.UMA_UPSTREAM_SEND_FAILED);
- }
-
- @Override
- public void onDeletedMessages() {
- // TODO(johnme): Ask GCM to include the subtype in this event.
- Log.w(TAG, "Push messages were deleted, but we can't tell the Service Worker as we don't"
- + "know what subtype (app ID) it occurred for.");
- GcmUma.recordDeletedMessages(ContextUtils.getApplicationContext());
- }
-
/**
* Returns if we deliver the GCMMessage with a background service by calling
* Context#startService. This will only work if Android has put us in a whitelist to allow
@@ -222,7 +168,6 @@ public class ChromeGcmListenerService extends GcmListenerService {
static void dispatchMessageToDriver(Context applicationContext, GCMMessage message) {
ThreadUtils.assertOnUiThread();
ChromeBrowserInitializer.getInstance(applicationContext).handleSynchronousStartup();
- GCMDriver.dispatchMessage(message);
}
private static boolean isNativeLoaded() {
diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
--- a/components/background_task_scheduler/BUILD.gn
+++ b/components/background_task_scheduler/BUILD.gn
@@ -54,7 +54,6 @@ if (is_android) {
":scheduled_task_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//content/public/android:content_java",
@@ -78,7 +77,6 @@ if (is_android) {
":background_task_scheduler_task_ids_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
@@ -109,7 +107,6 @@ if (is_android) {
"$google_play_services_package:google_play_services_auth_base_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java
@@ -8,10 +8,6 @@ import android.os.Build;
import androidx.annotation.VisibleForTesting;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.GcmTaskService;
-import com.google.android.gms.gcm.TaskParams;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.ThreadUtils;
@@ -21,7 +17,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
/** Delegates calls out to various tasks that need to run in the background. */
-public class BackgroundTaskGcmTaskService extends GcmTaskService {
+public class BackgroundTaskGcmTaskService {
private static final String TAG = "BkgrdTaskGcmTS";
private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
@@ -90,63 +86,6 @@ public class BackgroundTaskGcmTaskService extends GcmTaskService {
}
}
- @Override
- public int onRunTask(TaskParams params) {
- final TaskParameters taskParams =
- BackgroundTaskSchedulerGcmNetworkManager.getTaskParametersFromTaskParams(params);
-
- final BackgroundTask backgroundTask =
- BackgroundTaskSchedulerFactory.getBackgroundTaskFromTaskId(taskParams.getTaskId());
- if (backgroundTask == null) {
- Log.w(TAG, "Failed to start task. Could not instantiate BackgroundTask class.");
- // Cancel task if the BackgroundTask class is not found anymore. We assume this means
- // that the task has been deprecated.
- BackgroundTaskSchedulerFactory.getScheduler().cancel(
- ContextUtils.getApplicationContext(), taskParams.getTaskId());
- return GcmNetworkManager.RESULT_FAILURE;
- }
-
- if (BackgroundTaskSchedulerGcmNetworkManager.didTaskExpire(
- params, mClock.currentTimeMillis())) {
- BackgroundTaskSchedulerUma.getInstance().reportTaskExpired(taskParams.getTaskId());
- return GcmNetworkManager.RESULT_FAILURE;
- }
-
- final Waiter waiter = new Waiter(Waiter.MAX_TIMEOUT_SECONDS);
-
- final AtomicBoolean taskNeedsBackgroundProcessing = new AtomicBoolean();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- BackgroundTaskSchedulerUma.getInstance().reportTaskStarted(taskParams.getTaskId());
- taskNeedsBackgroundProcessing.set(
- backgroundTask.onStartTask(ContextUtils.getApplicationContext(), taskParams,
- new TaskFinishedCallbackGcmTaskService(waiter)));
- }
- });
-
- if (!taskNeedsBackgroundProcessing.get()) return GcmNetworkManager.RESULT_SUCCESS;
-
- waiter.startWaiting();
-
- if (waiter.isRescheduleNeeded()) return GcmNetworkManager.RESULT_RESCHEDULE;
- if (!waiter.hasTaskTimedOut()) return GcmNetworkManager.RESULT_SUCCESS;
-
- final AtomicBoolean taskNeedsRescheduling = new AtomicBoolean();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- BackgroundTaskSchedulerUma.getInstance().reportTaskStopped(taskParams.getTaskId());
- taskNeedsRescheduling.set(backgroundTask.onStopTask(
- ContextUtils.getApplicationContext(), taskParams));
- }
- });
-
- if (taskNeedsRescheduling.get()) return GcmNetworkManager.RESULT_RESCHEDULE;
-
- return GcmNetworkManager.RESULT_SUCCESS;
- }
-
@Override
public void onInitializeTasks() {
// Ignore the event on OSs supporting JobScheduler.
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java
@@ -18,11 +18,7 @@ public final class BackgroundTaskSchedulerFactory {
private static BackgroundTaskFactory sBackgroundTaskFactory;
static BackgroundTaskSchedulerDelegate getSchedulerDelegateForSdk(int sdkInt) {
- if (sdkInt >= Build.VERSION_CODES.M) {
- return new BackgroundTaskSchedulerJobService();
- } else {
- return new BackgroundTaskSchedulerGcmNetworkManager();
- }
+ return new BackgroundTaskSchedulerJobService(); /* minSDK is 24 */
}
/**
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
@@ -19,7 +19,7 @@ import java.util.concurrent.TimeUnit;
* An implementation of {@link BackgroundTaskSchedulerDelegate} that uses the Play Services
* {@link GcmNetworkManager} to schedule jobs.
*/
-class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedulerDelegate {
+class BackgroundTaskSchedulerGcmNetworkManager {
private static final String TAG = "BkgrdTaskSchedGcmNM";
/** Delta time for expiration checks, after the end time. */
@@ -35,18 +35,6 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
sClock = clock;
}
- @Override
- public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
- ThreadUtils.assertOnUiThread();
-
- return false;
- }
-
- @Override
- public void cancel(Context context, int taskId) {
- ThreadUtils.assertOnUiThread();
- }
-
private static String taskIdToTaskTag(int taskId) {
return Integer.toString(taskId);
}
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -893,21 +893,6 @@ android_aar_prebuilt("google_play_services_fido_java") {
strip_drawables = true
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_gcm_java") {
- aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_iid_java",
- ":google_play_services_stats_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("google_play_services_iid_java") {
aar_path = "libs/com_google_android_gms_play_services_iid/play-services-iid-15.0.1.aar"
diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
--- a/third_party/cacheinvalidation/BUILD.gn
+++ b/third_party/cacheinvalidation/BUILD.gn
@@ -137,7 +137,6 @@ if (is_android) {
jacoco_never_instrument = true
deps = [
":cacheinvalidation_proto_java",
- "$google_play_services_package:google_play_services_gcm_java",
"$google_play_services_package:google_play_services_iid_java",
"$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/android2/AndroidManifestUpdatedGcm.xml
@@ -24,17 +24,6 @@
<receiver android:exported="false"
android:name="com.google.ipc.invalidation.ticl2.android2.AndroidInternalScheduler$AlarmReceiver"/>
- <!-- GCM Broadcast Receiver -->
- <receiver android:exported="true"
- android:name="com.google.android.gms.gcm.GcmReceiver"
- android:permission="com.google.android.c2dm.permission.SEND">
- <intent-filter>
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
- <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
- <category android:name="com.google.ipc.invalidation.client2.android2"/>
- </intent-filter>
- </receiver>
-
<!-- InstanceID Listener Service -->
<service android:exported="false"
android:name="com.google.ipc.invalidation.ticl2.android2.channel.AndroidInstanceIDListenerService">
@@ -42,14 +31,5 @@
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
-
- <!-- GcmTaskService for registration -->
- <service android:name="com.google.ipc.invalidation.ticl2.android2.channel.GcmRegistrationTaskService"
- android:exported="true"
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
- <intent-filter>
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
- </intent-filter>
- </service>
</application>
</manifest>
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java
@@ -15,8 +15,6 @@
*/
package com.google.ipc.invalidation.ticl.android2.channel;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.OneoffTask;
import com.google.ipc.invalidation.common.GcmSharedConstants;
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
@@ -50,7 +48,7 @@ public class AndroidGcmController {
private static AndroidGcmController androidGcmController;
- private GcmNetworkManager gcmNetworkManager;
+// private GcmNetworkManager gcmNetworkManager;
private Context context;
@@ -64,32 +62,12 @@ public class AndroidGcmController {
public static AndroidGcmController get(Context context) {
synchronized (lock) {
if (androidGcmController == null) {
- androidGcmController =
- new AndroidGcmController(context, GcmNetworkManager.getInstance(context));
+ androidGcmController = null;
}
}
return androidGcmController;
}
- /**
- * Override AndroidGcmController with a custom GcmNetworkManager in tests. This overrides the
- * existing instance of AndroidGcmController if any.
- *
- * @param context the application context.
- * @param gcmNetworkManager the custom GcmNetworkManager to use.
- */
- public static void overrideAndroidGcmControllerForTests(
- Context context, GcmNetworkManager gcmNetworkManager) {
- synchronized (lock) {
- androidGcmController = new AndroidGcmController(context, gcmNetworkManager);
- }
- }
-
- private AndroidGcmController(Context context, GcmNetworkManager gcmNetworkManager) {
- this.context = context;
- this.gcmNetworkManager = gcmNetworkManager;
- }
-
/**
* Returns true if no registration token is stored or the current application version is higher
* than the version for the token stored.
@@ -142,21 +120,7 @@ public class AndroidGcmController {
return;
}
- OneoffTask registrationTask =
- new OneoffTask.Builder()
- .setExecutionWindow(0, 1)
- .setTag(AndroidChannelConstants.GCM_REGISTRATION_TASK_SERVICE_TAG)
- .setService(GcmRegistrationTaskService.class)
- .build();
-
- try {
- gcmNetworkManager.schedule(registrationTask);
- } catch (IllegalArgumentException exception) {
- // Scheduling the service can throw an exception due to a framework error on Android when
- // the the look up for the GCMTaskService being scheduled to be run fails.
- // See crbug/548314.
- logger.warning("Failed to schedule GCM registration task. Exception: %s", exception);
- }
+ logger.warning("Failed to schedule GCM registration task.");
}
/**
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java
@@ -15,7 +15,6 @@
*/
package com.google.ipc.invalidation.ticl.android2.channel;
-import com.google.android.gms.iid.InstanceIDListenerService;
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
@@ -23,16 +22,6 @@ import com.google.ipc.invalidation.external.client.android.service.AndroidLogger
* Implementation of {@link InstanceIDListenerService} to receive notifications from GCM to
* update the registration token.
*/
-public class AndroidInstanceIDListenerService extends InstanceIDListenerService {
+public class AndroidInstanceIDListenerService {
private static final Logger logger = AndroidLogger.forTag("InstanceIDListener");
-
- /**
- * Called when the token needs to updated. {@link AndroidGcmController#fetchToken} clears the
- * current token and schedules a task to fetch a new token.
- */
- @Override
- public void onTokenRefresh() {
- logger.info("Received token refresh request");
- AndroidGcmController.get(this).fetchToken();
- }
}
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java
@@ -15,11 +15,6 @@
*/
package com.google.ipc.invalidation.ticl.android2.channel;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.GcmTaskService;
-import com.google.android.gms.gcm.GoogleCloudMessaging;
-import com.google.android.gms.gcm.TaskParams;
-import com.google.android.gms.iid.InstanceID;
import com.google.ipc.invalidation.common.GcmSharedConstants;
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
@@ -42,88 +37,6 @@ import java.io.IOException;
* failure to fetch the token, the task is rescheduled using the GcmNetworkManager which uses
* exponential back-offs to control when the task is executed.
*/
-public class GcmRegistrationTaskService extends GcmTaskService {
+public class GcmRegistrationTaskService {
private static final Logger logger = AndroidLogger.forTag("RegistrationTaskService");
-
- public InstanceID getInstanceID(Context context) {
- return InstanceID.getInstance(context);
- }
-
- /**
- * Called when the task is ready to be executed. Registers with GCM using
- * {@link InstanceID#getToken} and stores the registration token.
- *
- * <p>Returns {@link GcmNetworkManager#RESULT_SUCCESS} when the token is successfully retrieved.
- * On failure {@link GcmNetworkManager#RESULT_RESCHEDULE} is used which reschedules the service
- * to be executed again using exponential back-off.
- */
- @Override
- public int onRunTask(TaskParams params) {
- if (!AndroidChannelConstants.GCM_REGISTRATION_TASK_SERVICE_TAG.equals(params.getTag())) {
- logger.warning("Unknown task received with tag: %s", params.getTag());
- return GcmNetworkManager.RESULT_FAILURE;
- }
-
- String senderId = GcmSharedConstants.GCM_UPDATED_SENDER_ID;
- try {
- String token = getInstanceID(this).getToken(
- senderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
- storeToken(token);
- return GcmNetworkManager.RESULT_SUCCESS;
- } catch (IOException exception) {
- logger.warning("Failed to get token for sender: %s. Exception : %s", senderId, exception);
- return GcmNetworkManager.RESULT_RESCHEDULE;
- } catch (SecurityException exception) {
- // InstanceID#getToken occasionally throws a security exception when trying send the
- // registration intent to GMSCore. Catching the exception here to prevent crashes.
- logger.warning("Security exception when fetching token: %s", exception);
- return GcmNetworkManager.RESULT_RESCHEDULE;
- }
- }
-
- /** Stores the registration token and the current application version in Shared Preferences. */
- private void storeToken(String token) {
- AndroidChannelPreferences.setRegistrationToken(token);
- AndroidChannelPreferences.setAppVersion(
- CommonUtils.getPackageVersion(this, getPackageName()));
- // Send the updated token to the server.
- updateServer();
- }
-
- /** Sends a message to the server to update the GCM registration token. */
- private void updateServer() {
- // Inform the sender service that the registration token has changed. If the sender service
- // had buffered a message because no registration token was previously available, this intent
- // will cause it to send that message.
- Intent sendBuffered = new Intent();
- final String ignoredData = "";
- sendBuffered.putExtra(AndroidChannelConstants.MESSAGE_SENDER_SVC_GCM_REGID_CHANGE, ignoredData);
-
- // Select the sender service to use for upstream message.
- if (AndroidChannelPreferences.getGcmChannelType() == GcmChannelType.GCM_UPSTREAM) {
- String upstreamServiceClass = new AndroidTiclManifest(this).getGcmUpstreamServiceClass();
- if (upstreamServiceClass == null) {
- logger.warning("GcmUpstreamSenderService class not found.");
- return;
- }
- sendBuffered.setClassName(this, upstreamServiceClass);
- } else {
- sendBuffered.setClass(this, AndroidMessageSenderService.class);
- }
- try {
- startService(sendBuffered);
- } catch (IllegalStateException exception) {
- logger.warning("Unable to send buffered message(s): %s", exception);
- }
-
- // Inform the Ticl service that the registration id has changed. This will cause it to send
- // a message to the data center and update the GCM registration id stored at the data center.
- Intent updateServer = ProtocolIntents.InternalDowncalls.newNetworkAddrChangeIntent();
- updateServer.setClassName(this, new AndroidTiclManifest(this).getTiclServiceClass());
- try {
- startService(updateServer);
- } catch (IllegalStateException exception) {
- logger.warning("Unable to inform server about new registration id: %s", exception);
- }
- }
}
--
2.17.1
@@ -0,0 +1,575 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Fri, 1 Nov 2019 23:10:47 +0100
Subject: Remove dependency on com.google.android.gms.vision,
com.google.android.gms.clearcut, com.google.android.gms.phenotype
---
services/BUILD.gn | 4 -
services/shape_detection/BUILD.gn | 2 -
.../shape_detection/BarcodeDetectionImpl.java | 114 +---------------
.../BarcodeDetectionProviderImpl.java | 18 +--
.../FaceDetectionImplGmsCore.java | 122 +-----------------
.../shape_detection/TextDetectionImpl.java | 60 +--------
third_party/android_deps/BUILD.gn | 66 ----------
7 files changed, 10 insertions(+), 376 deletions(-)
diff --git a/services/BUILD.gn b/services/BUILD.gn
--- a/services/BUILD.gn
+++ b/services/BUILD.gn
@@ -109,8 +109,6 @@ if (is_android) {
deps = [
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_vision_common_java",
- "$google_play_services_package:google_play_services_vision_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
@@ -140,8 +138,6 @@ if (is_android) {
deps = [
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_vision_common_java",
- "$google_play_services_package:google_play_services_vision_java",
"//base:base_java",
"//base:base_java_test_support",
"//mojo/public/java:base_java",
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
--- a/services/shape_detection/BUILD.gn
+++ b/services/shape_detection/BUILD.gn
@@ -91,8 +91,6 @@ if (is_android) {
deps = [
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_vision_common_java",
- "$google_play_services_package:google_play_services_vision_java",
"//base:base_java",
"//mojo/public/java:base_java",
"//mojo/public/java:bindings_java",
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
@@ -8,10 +8,6 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.util.SparseArray;
-import com.google.android.gms.vision.Frame;
-import com.google.android.gms.vision.barcode.Barcode;
-import com.google.android.gms.vision.barcode.BarcodeDetector;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.gfx.mojom.PointF;
@@ -28,50 +24,7 @@ import org.chromium.shape_detection.mojom.BarcodeFormat;
public class BarcodeDetectionImpl implements BarcodeDetection {
private static final String TAG = "BarcodeDetectionImpl";
- private BarcodeDetector mBarcodeDetector;
-
public BarcodeDetectionImpl(BarcodeDetectorOptions options) {
- int formats = Barcode.ALL_FORMATS;
- if (options.formats != null && options.formats.length > 0) {
- formats = 0;
- // Keep this list in sync with the constants defined in
- // com.google.android.gms.vision.barcode.Barcode and the list of
- // supported formats in BarcodeDetectionProviderImpl.
- for (int i = 0; i < options.formats.length; ++i) {
- if (options.formats[i] == BarcodeFormat.AZTEC) {
- formats |= Barcode.AZTEC;
- } else if (options.formats[i] == BarcodeFormat.CODE_128) {
- formats |= Barcode.CODE_128;
- } else if (options.formats[i] == BarcodeFormat.CODE_39) {
- formats |= Barcode.CODE_39;
- } else if (options.formats[i] == BarcodeFormat.CODE_93) {
- formats |= Barcode.CODE_93;
- } else if (options.formats[i] == BarcodeFormat.CODABAR) {
- formats |= Barcode.CODABAR;
- } else if (options.formats[i] == BarcodeFormat.DATA_MATRIX) {
- formats |= Barcode.DATA_MATRIX;
- } else if (options.formats[i] == BarcodeFormat.EAN_13) {
- formats |= Barcode.EAN_13;
- } else if (options.formats[i] == BarcodeFormat.EAN_8) {
- formats |= Barcode.EAN_8;
- } else if (options.formats[i] == BarcodeFormat.ITF) {
- formats |= Barcode.ITF;
- } else if (options.formats[i] == BarcodeFormat.PDF417) {
- formats |= Barcode.PDF417;
- } else if (options.formats[i] == BarcodeFormat.QR_CODE) {
- formats |= Barcode.QR_CODE;
- } else if (options.formats[i] == BarcodeFormat.UPC_A) {
- formats |= Barcode.UPC_A;
- } else if (options.formats[i] == BarcodeFormat.UPC_E) {
- formats |= Barcode.UPC_E;
- } else {
- Log.e(TAG, "Unsupported barcode format hint: " + options.formats[i]);
- }
- }
- }
- mBarcodeDetector = new BarcodeDetector.Builder(ContextUtils.getApplicationContext())
- .setBarcodeFormats(formats)
- .build();
}
@Override
@@ -80,47 +33,12 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
// on the device; this happens "fast", but it might have not completed,
// bail in this case. Also, the API was disabled between and v.9.0 and
// v.9.2, see https://developers.google.com/android/guides/releases.
- if (!mBarcodeDetector.isOperational()) {
- Log.e(TAG, "BarcodeDetector is not operational");
- callback.call(new BarcodeDetectionResult[0]);
- return;
- }
-
- Frame frame = BitmapUtils.convertToFrame(bitmapData);
- if (frame == null) {
- Log.e(TAG, "Error converting Mojom Bitmap to Frame");
- callback.call(new BarcodeDetectionResult[0]);
- return;
- }
-
- final SparseArray<Barcode> barcodes = mBarcodeDetector.detect(frame);
-
- BarcodeDetectionResult[] barcodeArray = new BarcodeDetectionResult[barcodes.size()];
- for (int i = 0; i < barcodes.size(); i++) {
- barcodeArray[i] = new BarcodeDetectionResult();
- final Barcode barcode = barcodes.valueAt(i);
- barcodeArray[i].rawValue = barcode.rawValue;
- final Rect rect = barcode.getBoundingBox();
- barcodeArray[i].boundingBox = new RectF();
- barcodeArray[i].boundingBox.x = rect.left;
- barcodeArray[i].boundingBox.y = rect.top;
- barcodeArray[i].boundingBox.width = rect.width();
- barcodeArray[i].boundingBox.height = rect.height();
- final Point[] corners = barcode.cornerPoints;
- barcodeArray[i].cornerPoints = new PointF[corners.length];
- for (int j = 0; j < corners.length; j++) {
- barcodeArray[i].cornerPoints[j] = new PointF();
- barcodeArray[i].cornerPoints[j].x = corners[j].x;
- barcodeArray[i].cornerPoints[j].y = corners[j].y;
- }
- barcodeArray[i].format = toBarcodeFormat(barcode.format);
- }
- callback.call(barcodeArray);
+ Log.e(TAG, "BarcodeDetector is not operational");
+ callback.call(new BarcodeDetectionResult[0]);
}
@Override
public void close() {
- mBarcodeDetector.release();
}
@Override
@@ -129,34 +47,6 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
}
private int toBarcodeFormat(int format) {
- switch (format) {
- case Barcode.CODE_128:
- return BarcodeFormat.CODE_128;
- case Barcode.CODE_39:
- return BarcodeFormat.CODE_39;
- case Barcode.CODE_93:
- return BarcodeFormat.CODE_93;
- case Barcode.CODABAR:
- return BarcodeFormat.CODABAR;
- case Barcode.DATA_MATRIX:
- return BarcodeFormat.DATA_MATRIX;
- case Barcode.EAN_13:
- return BarcodeFormat.EAN_13;
- case Barcode.EAN_8:
- return BarcodeFormat.EAN_8;
- case Barcode.ITF:
- return BarcodeFormat.ITF;
- case Barcode.QR_CODE:
- return BarcodeFormat.QR_CODE;
- case Barcode.UPC_A:
- return BarcodeFormat.UPC_A;
- case Barcode.UPC_E:
- return BarcodeFormat.UPC_E;
- case Barcode.PDF417:
- return BarcodeFormat.PDF417;
- case Barcode.AZTEC:
- return BarcodeFormat.AZTEC;
- }
return BarcodeFormat.UNKNOWN;
}
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
@@ -4,9 +4,6 @@
package org.chromium.shape_detection;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.mojo.bindings.InterfaceRequest;
@@ -35,12 +32,6 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider {
// Keep this list in sync with the constants defined in
// com.google.android.gms.vision.barcode.Barcode and the format hints
// supported by BarcodeDetectionImpl.
- int[] supportedFormats = {BarcodeFormat.AZTEC, BarcodeFormat.CODE_128,
- BarcodeFormat.CODE_39, BarcodeFormat.CODE_93, BarcodeFormat.CODABAR,
- BarcodeFormat.DATA_MATRIX, BarcodeFormat.EAN_13, BarcodeFormat.EAN_8,
- BarcodeFormat.ITF, BarcodeFormat.PDF417, BarcodeFormat.QR_CODE, BarcodeFormat.UPC_A,
- BarcodeFormat.UPC_E};
- callback.call(supportedFormats);
}
@Override
@@ -50,12 +41,7 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider {
public void onConnectionError(MojoException e) {}
public static BarcodeDetectionProvider create() {
- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
- ContextUtils.getApplicationContext())
- != ConnectionResult.SUCCESS) {
- Log.e(TAG, "Google Play Services not available");
- return null;
- }
- return new BarcodeDetectionProviderImpl();
+ Log.e(TAG, "Google Play Services not available");
+ return null;
}
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
@@ -7,11 +7,6 @@ package org.chromium.shape_detection;
import android.graphics.PointF;
import android.util.SparseArray;
-import com.google.android.gms.vision.Frame;
-import com.google.android.gms.vision.face.Face;
-import com.google.android.gms.vision.face.FaceDetector;
-import com.google.android.gms.vision.face.Landmark;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.gfx.mojom.RectF;
@@ -36,133 +31,20 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
private static final int MAX_EULER_Z = 15;
private final int mMaxFaces;
private final boolean mFastMode;
- private final FaceDetector mFaceDetector;
FaceDetectionImplGmsCore(FaceDetectorOptions options) {
- FaceDetector.Builder builder =
- new FaceDetector.Builder(ContextUtils.getApplicationContext());
mMaxFaces = Math.min(options.maxDetectedFaces, MAX_FACES);
mFastMode = options.fastMode;
-
- try {
- builder.setMode(mFastMode ? FaceDetector.FAST_MODE : FaceDetector.ACCURATE_MODE);
- builder.setLandmarkType(FaceDetector.ALL_LANDMARKS);
- if (mMaxFaces == 1) {
- builder.setProminentFaceOnly(true);
- }
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Unexpected exception " + e);
- assert false;
- }
-
- mFaceDetector = builder.build();
}
@Override
public void detect(org.chromium.skia.mojom.Bitmap bitmapData, DetectResponse callback) {
- // The vision library will be downloaded the first time the API is used
- // on the device; this happens "fast", but it might have not completed,
- // bail in this case.
- if (!mFaceDetector.isOperational()) {
- Log.e(TAG, "FaceDetector is not operational");
-
- // Fallback to Android's FaceDetectionImpl.
- FaceDetectorOptions options = new FaceDetectorOptions();
- options.fastMode = mFastMode;
- options.maxDetectedFaces = mMaxFaces;
- FaceDetectionImpl detector = new FaceDetectionImpl(options);
- detector.detect(bitmapData, callback);
- return;
- }
-
- Frame frame = BitmapUtils.convertToFrame(bitmapData);
- if (frame == null) {
- Log.e(TAG, "Error converting Mojom Bitmap to Frame");
- callback.call(new FaceDetectionResult[0]);
- return;
- }
-
- final SparseArray<Face> faces = mFaceDetector.detect(frame);
-
- FaceDetectionResult[] faceArray = new FaceDetectionResult[faces.size()];
- for (int i = 0; i < faces.size(); i++) {
- faceArray[i] = new FaceDetectionResult();
- final Face face = faces.valueAt(i);
-
- final List<Landmark> landmarks = face.getLandmarks();
- ArrayList<org.chromium.shape_detection.mojom.Landmark> mojoLandmarks =
- new ArrayList<org.chromium.shape_detection.mojom.Landmark>(landmarks.size());
-
- int leftEyeIndex = -1;
- int rightEyeIndex = -1;
- int bottomMouthIndex = -1;
- for (int j = 0; j < landmarks.size(); j++) {
- final Landmark landmark = landmarks.get(j);
- final int landmarkType = landmark.getType();
- if (landmarkType != Landmark.LEFT_EYE && landmarkType != Landmark.RIGHT_EYE
- && landmarkType != Landmark.BOTTOM_MOUTH
- && landmarkType != Landmark.NOSE_BASE) {
- continue;
- }
-
- org.chromium.shape_detection.mojom.Landmark mojoLandmark =
- new org.chromium.shape_detection.mojom.Landmark();
- mojoLandmark.locations = new org.chromium.gfx.mojom.PointF[1];
- mojoLandmark.locations[0] = new org.chromium.gfx.mojom.PointF();
- mojoLandmark.locations[0].x = landmark.getPosition().x;
- mojoLandmark.locations[0].y = landmark.getPosition().y;
-
- if (landmarkType == Landmark.LEFT_EYE) {
- mojoLandmark.type = LandmarkType.EYE;
- leftEyeIndex = j;
- } else if (landmarkType == Landmark.RIGHT_EYE) {
- mojoLandmark.type = LandmarkType.EYE;
- rightEyeIndex = j;
- } else if (landmarkType == Landmark.BOTTOM_MOUTH) {
- mojoLandmark.type = LandmarkType.MOUTH;
- bottomMouthIndex = j;
- } else {
- assert landmarkType == Landmark.NOSE_BASE;
- mojoLandmark.type = LandmarkType.NOSE;
- }
- mojoLandmarks.add(mojoLandmark);
- }
- faceArray[i].landmarks = mojoLandmarks.toArray(
- new org.chromium.shape_detection.mojom.Landmark[mojoLandmarks.size()]);
-
- final PointF corner = face.getPosition();
- faceArray[i].boundingBox = new RectF();
- if (leftEyeIndex != -1 && rightEyeIndex != -1
- && Math.abs(face.getEulerZ()) < MAX_EULER_Z) {
- // Tighter calculation of the bounding box because the GMScore
- // and Android Face APIs give different results.
- final PointF leftEyePoint = landmarks.get(leftEyeIndex).getPosition();
- final PointF rightEyePoint = landmarks.get(rightEyeIndex).getPosition();
- final float eyesDistance = leftEyePoint.x - rightEyePoint.x;
- final float eyeMouthDistance = bottomMouthIndex != -1
- ? landmarks.get(bottomMouthIndex).getPosition().y - leftEyePoint.y
- : -1;
- final PointF midEyePoint =
- new PointF(corner.x + face.getWidth() / 2, leftEyePoint.y);
- faceArray[i].boundingBox.x = 2 * rightEyePoint.x - midEyePoint.x;
- faceArray[i].boundingBox.y = midEyePoint.y - eyesDistance;
- faceArray[i].boundingBox.width = 2 * eyesDistance;
- faceArray[i].boundingBox.height = eyeMouthDistance > eyesDistance
- ? eyeMouthDistance + eyesDistance
- : 2 * eyesDistance;
- } else {
- faceArray[i].boundingBox.x = corner.x;
- faceArray[i].boundingBox.y = corner.y;
- faceArray[i].boundingBox.width = face.getWidth();
- faceArray[i].boundingBox.height = face.getHeight();
- }
- }
- callback.call(faceArray);
+ Log.e(TAG, "FaceDetector is not operational");
+ callback.call(new FaceDetectionResult[0]);
}
@Override
public void close() {
- mFaceDetector.release();
}
@Override
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
@@ -8,12 +8,6 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.util.SparseArray;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.GoogleApiAvailability;
-import com.google.android.gms.vision.Frame;
-import com.google.android.gms.vision.text.TextBlock;
-import com.google.android.gms.vision.text.TextRecognizer;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.gfx.mojom.PointF;
@@ -29,58 +23,17 @@ import org.chromium.shape_detection.mojom.TextDetectionResult;
public class TextDetectionImpl implements TextDetection {
private static final String TAG = "TextDetectionImpl";
- private TextRecognizer mTextRecognizer;
-
public TextDetectionImpl() {
- mTextRecognizer = new TextRecognizer.Builder(ContextUtils.getApplicationContext()).build();
}
@Override
public void detect(org.chromium.skia.mojom.Bitmap bitmapData, DetectResponse callback) {
- // The vision library will be downloaded the first time the API is used
- // on the device; this happens "fast", but it might have not completed,
- // bail in this case. Also, the API was disabled between and v.9.0 and
- // v.9.2, see https://developers.google.com/android/guides/releases.
- if (!mTextRecognizer.isOperational()) {
- Log.e(TAG, "TextDetector is not operational");
- callback.call(new TextDetectionResult[0]);
- return;
- }
-
- Frame frame = BitmapUtils.convertToFrame(bitmapData);
- if (frame == null) {
- Log.e(TAG, "Error converting Mojom Bitmap to Frame");
- callback.call(new TextDetectionResult[0]);
- return;
- }
-
- final SparseArray<TextBlock> textBlocks = mTextRecognizer.detect(frame);
-
- TextDetectionResult[] detectedTextArray = new TextDetectionResult[textBlocks.size()];
- for (int i = 0; i < textBlocks.size(); i++) {
- detectedTextArray[i] = new TextDetectionResult();
- final TextBlock textBlock = textBlocks.valueAt(i);
- detectedTextArray[i].rawValue = textBlock.getValue();
- final Rect rect = textBlock.getBoundingBox();
- detectedTextArray[i].boundingBox = new RectF();
- detectedTextArray[i].boundingBox.x = rect.left;
- detectedTextArray[i].boundingBox.y = rect.top;
- detectedTextArray[i].boundingBox.width = rect.width();
- detectedTextArray[i].boundingBox.height = rect.height();
- final Point[] corners = textBlock.getCornerPoints();
- detectedTextArray[i].cornerPoints = new PointF[corners.length];
- for (int j = 0; j < corners.length; j++) {
- detectedTextArray[i].cornerPoints[j] = new PointF();
- detectedTextArray[i].cornerPoints[j].x = corners[j].x;
- detectedTextArray[i].cornerPoints[j].y = corners[j].y;
- }
- }
- callback.call(detectedTextArray);
+ Log.e(TAG, "TextDetector is not operational");
+ callback.call(new TextDetectionResult[0]);
}
@Override
public void close() {
- mTextRecognizer.release();
}
@Override
@@ -89,12 +42,7 @@ public class TextDetectionImpl implements TextDetection {
}
public static TextDetection create() {
- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
- ContextUtils.getApplicationContext())
- != ConnectionResult.SUCCESS) {
- Log.e(TAG, "Google Play Services not available");
- return null;
- }
- return new TextDetectionImpl();
+ Log.e(TAG, "Google Play Services not available");
+ return null;
}
}
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
--- a/third_party/android_deps/BUILD.gn
+++ b/third_party/android_deps/BUILD.gn
@@ -949,35 +949,6 @@ android_aar_prebuilt("google_play_services_tasks_java") {
strip_drawables = true
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_vision_java") {
- aar_path = "libs/com_google_android_gms_play_services_vision/play-services-vision-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_vision_common_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_vision_common_java") {
- aar_path = "libs/com_google_android_gms_play_services_vision_common/play-services-vision-common-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info"
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_clearcut_java",
- ":google_play_services_flags_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("com_google_android_material_material_java") {
aar_path = "libs/com_google_android_material_material/material-1.0.0-rc02.aar"
@@ -1667,25 +1638,6 @@ java_prebuilt("com_github_stephenc_jcip_jcip_annotations_java") {
visibility = [ ":*" ]
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_clearcut_java") {
- aar_path = "libs/com_google_android_gms_play_services_clearcut/play-services-clearcut-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_clearcut/com_google_android_gms_play_services_clearcut.info"
-
- # To remove visibility constraint, add this dependency to
- # //tools/android/roll/android_deps/build.gradle.
- visibility = [ ":*" ]
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_phenotype_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("google_play_services_flags_java") {
aar_path = "libs/com_google_android_gms_play_services_flags/play-services-flags-15.0.1.aar"
@@ -1703,24 +1655,6 @@ android_aar_prebuilt("google_play_services_flags_java") {
strip_drawables = true
}
-# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
-android_aar_prebuilt("google_play_services_phenotype_java") {
- aar_path = "libs/com_google_android_gms_play_services_phenotype/play-services-phenotype-15.0.1.aar"
- info_path = "libs/com_google_android_gms_play_services_phenotype/com_google_android_gms_play_services_phenotype.info"
-
- # To remove visibility constraint, add this dependency to
- # //tools/android/roll/android_deps/build.gradle.
- visibility = [ ":*" ]
- deps = [
- ":google_play_services_base_java",
- ":google_play_services_basement_java",
- ":google_play_services_tasks_java",
- ]
-
- # Removing drawables from GMS .aars as they are unused bloat.
- strip_drawables = true
-}
-
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
android_aar_prebuilt("google_play_services_places_placereport_java") {
aar_path = "libs/com_google_android_gms_play_services_places_placereport/play-services-places-placereport-15.0.1.aar"
--
2.17.1
@@ -0,0 +1,496 @@
From: Wengling Chen <feiyu2817@gmail.com>
Date: Fri, 1 Nov 2019 23:01:41 +0100
Subject: Remove dependency on com.google.android.play
---
chrome/android/BUILD.gn | 1 -
.../inline/FakeAppUpdateManagerWrapper.java | 60 +----
.../inline/InlineUpdateControllerFactory.java | 16 --
.../inline/PlayInlineUpdateController.java | 226 +-----------------
components/module_installer/android/BUILD.gn | 1 -
third_party/google_android_play_core/BUILD.gn | 5 -
6 files changed, 3 insertions(+), 306 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -344,7 +344,6 @@ android_library("chrome_java") {
"//third_party/cacheinvalidation:cacheinvalidation_proto_java",
"//third_party/cct_dynamic_module:cct_dynamic_module_java",
"//third_party/gif_player:gif_player_java",
- "//third_party/google_android_play_core:com_google_android_play_core_java",
"//third_party/jsr-305:jsr_305_javalib",
"//ui/android:ui_java",
"//ui/base/mojom:mojom_java",
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/FakeAppUpdateManagerWrapper.java
@@ -11,11 +11,6 @@ import android.os.Message;
import androidx.annotation.IntDef;
-import com.google.android.play.core.appupdate.AppUpdateInfo;
-import com.google.android.play.core.appupdate.testing.FakeAppUpdateManager;
-import com.google.android.play.core.install.model.AppUpdateType;
-import com.google.android.play.core.tasks.Task;
-
import org.chromium.base.ContextUtils;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.ChromeActivity;
@@ -31,7 +26,7 @@ import java.lang.ref.WeakReference;
* wrapper isn't meant to be used for a full integration test, but simulating all of the possible
* error cases is a bit easier to do here.
*/
-public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
+public class FakeAppUpdateManagerWrapper {
private static final int RESULT_IN_APP_UPDATE_FAILED = 1;
private static final int STEP_DELAY_MS = 5000;
private static final int TOAST_DURATION_MS = 2000;
@@ -108,15 +103,12 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
switch (event) {
case Event.UPDATE_AVAILABLE:
w.toast("Making app update available.");
- w.setUpdateAvailable(10000 /* Figure out a better version? */);
return;
case Event.USER_ACCEPTS_UPDATE:
w.toast("User accepts update.");
- w.userAcceptsUpdate();
return;
case Event.USER_REJECTS_UPDATE:
w.toast("User rejects update.");
- w.userRejectsUpdate();
return;
case Event.TRIGGER_DOWNLOAD:
w.toast("Triggering download.");
@@ -124,27 +116,21 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
return;
case Event.DOWNLOAD_STARTS:
w.toast("Download has started.");
- w.downloadStarts();
return;
case Event.DOWNLOAD_FAILS:
w.toast("Triggering download failure.");
- w.downloadFails();
return;
case Event.USER_CANCELS_DOWNLOAD:
w.toast("Triggering cancellation of download.");
- w.userCancelsDownload();
return;
case Event.DOWNLOAD_COMPLETES:
w.toast("Download completes.");
- w.downloadCompletes();
return;
case Event.INSTALL_FAILS:
w.toast("Triggering install failure.");
- w.installFails();
return;
case Event.INSTALL_COMPLETES:
w.toast("Triggering install completion.");
- w.installCompletes();
return;
default:
w.toast("Unknown event.");
@@ -159,56 +145,12 @@ public class FakeAppUpdateManagerWrapper extends FakeAppUpdateManager {
* @param endState at which point should the inline update flow end.
*/
FakeAppUpdateManagerWrapper(@Type int endState) {
- super(ContextUtils.getApplicationContext());
mType = endState;
mEventHandler = new EventHandler(this);
if (mType != Type.NONE) execute(Event.UPDATE_AVAILABLE);
}
- // FakeAppUpdateManager implementation.
- @Override
- public boolean startUpdateFlowForResult(AppUpdateInfo appUpdateInfo,
- @AppUpdateType int appUpdateType, Activity activity, int requestCode) {
- toast("Starting update flow.");
- // TODO(dtrainor): Simulate exceptions being thrown or returning false from the super call.
- boolean success =
- super.startUpdateFlowForResult(appUpdateInfo, appUpdateType, activity, requestCode);
- if (!success) return false;
-
- assert activity instanceof ChromeActivity : "Unexpected triggering activity.";
-
- final int resultCode;
- if (mType == Type.FAIL_DIALOG_CANCEL) {
- resultCode = Activity.RESULT_CANCELED;
- } else if (mType == Type.FAIL_DIALOG_UPDATE_FAILED) {
- resultCode = RESULT_IN_APP_UPDATE_FAILED;
- } else {
- resultCode = Activity.RESULT_OK;
- }
-
- PostTask.postDelayedTask(UiThreadTaskTraits.DEFAULT, () -> {
- triggerDialogResponse((ChromeActivity) activity, requestCode, resultCode);
- }, STEP_DELAY_MS);
-
- return true;
- }
-
- @Override
- public Task<Void> completeUpdate() {
- toast("Completing update.");
- Task<Void> result = super.completeUpdate();
-
- if (mType == Type.FAIL_INSTALL) {
- postDelayedEvent(Event.INSTALL_FAILS);
- } else {
- postDelayedEvent(Event.INSTALL_COMPLETES);
- // This doesn't actually restart Chrome in this case.
- }
-
- return result;
- }
-
private void triggerDialogResponse(ChromeActivity activity, int requestCode, int resultCode) {
if (resultCode == Activity.RESULT_OK) {
execute(Event.USER_ACCEPTS_UPDATE);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
@@ -4,8 +4,6 @@
package org.chromium.chrome.browser.omaha.inline;
-import com.google.android.play.core.appupdate.AppUpdateManagerFactory;
-
import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.omaha.UpdateConfigs;
@@ -20,20 +18,6 @@ public class InlineUpdateControllerFactory {
public static InlineUpdateController create(Runnable callback) {
@FakeAppUpdateManagerWrapper.Type
int mockInlineEndState = UpdateConfigs.getMockInlineScenarioEndState();
- if (mockInlineEndState != FakeAppUpdateManagerWrapper.Type.NO_SIMULATION) {
- // The config requires to run through a test controller, using the
- // PlayInlineUpdateController, but with a fake Google Play backend that automatically
- // goes through a scenario flow.
- return new PlayInlineUpdateController(
- callback, new FakeAppUpdateManagerWrapper(mockInlineEndState));
- }
-
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.INLINE_UPDATE_FLOW)) {
- // The application configuration requires to use the real Google Play backend for inline
- // updates.
- return new PlayInlineUpdateController(
- callback, AppUpdateManagerFactory.create(ContextUtils.getApplicationContext()));
- }
// No test scenario was in place, and the inline flow has not been enabled, so use a
// controller with no functionality.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/PlayInlineUpdateController.java
@@ -10,15 +10,6 @@ import android.content.IntentSender.SendIntentException;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
-import com.google.android.play.core.appupdate.AppUpdateInfo;
-import com.google.android.play.core.appupdate.AppUpdateManager;
-import com.google.android.play.core.install.InstallState;
-import com.google.android.play.core.install.InstallStateUpdatedListener;
-import com.google.android.play.core.install.model.AppUpdateType;
-import com.google.android.play.core.install.model.InstallErrorCode;
-import com.google.android.play.core.install.model.InstallStatus;
-import com.google.android.play.core.install.model.UpdateAvailability;
-
import org.chromium.base.Log;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
@@ -32,7 +23,7 @@ import java.lang.annotation.RetentionPolicy;
* in the foreground.
*/
public class PlayInlineUpdateController
- implements InlineUpdateController, InstallStateUpdatedListener {
+ implements InlineUpdateController {
/**
* Converts Play's InstallErrorCode enum to a stable monotomically incrementing Chrome enum.
* This is used for metric stability.
@@ -127,26 +118,9 @@ public class PlayInlineUpdateController
private static final int RESULT_IN_APP_UPDATE_FAILED = 1;
private static final int REQUEST_CODE = 8123;
- private final Runnable mCallback;
- private final AppUpdateManager mAppUpdateManager;
-
private boolean mEnabled;
private @Nullable @UpdateState Integer mUpdateState;
- private AppUpdateInfo mAppUpdateInfo;
- private @Nullable @UpdateAvailability Integer mUpdateAvailability;
- private @Nullable @InstallStatus Integer mInstallStatus;
-
- /**
- * Builds an instance of {@link PlayInlineUpdateController}.
- * @param callback The {@link Runnable} to notify when an inline update state change occurs.
- */
- PlayInlineUpdateController(Runnable callback, AppUpdateManager appUpdateManager) {
- mCallback = callback;
- mAppUpdateManager = appUpdateManager;
- setEnabled(true);
- }
-
// InlineUpdateController implementation.
@Override
public void setEnabled(boolean enabled) {
@@ -155,10 +129,8 @@ public class PlayInlineUpdateController
if (mEnabled) {
mUpdateState = UpdateState.NONE;
- mAppUpdateManager.registerListener(this);
pullCurrentState();
} else {
- mAppUpdateManager.unregisterListener(this);
}
}
@@ -169,220 +141,26 @@ public class PlayInlineUpdateController
@Override
public void startUpdate(Activity activity) {
- try {
- boolean success = mAppUpdateManager.startUpdateFlowForResult(
- mAppUpdateInfo, AppUpdateType.FLEXIBLE, activity, REQUEST_CODE);
- Log.i(TAG, "startUpdateFlowForResult() returned " + success);
-
- if (!success) recordCallFailure(CallFailure.START_FAILED);
- } catch (SendIntentException exception) {
- mInstallStatus = InstallStatus.FAILED;
- Log.i(TAG, "startUpdateFlowForResult() threw an exception.");
- recordCallFailure(CallFailure.START_EXCEPTION);
- }
- // TODO(dtrainor): Use success.
}
@Override
public void completeUpdate() {
- mAppUpdateManager.completeUpdate()
- .addOnSuccessListener(unused -> {
- Log.i(TAG, "completeUpdate() success.");
- pushStatus();
- })
- .addOnFailureListener(exception -> {
- Log.i(TAG, "completeUpdate() failed.");
- recordCallFailure(CallFailure.COMPLETE_FAILED);
- mInstallStatus = InstallStatus.FAILED;
- pushStatus();
- });
- }
-
- // InstallStateUpdatedListener implementation.
- @Override
- public void onStateUpdate(InstallState state) {
- Log.i(TAG,
- "onStateUpdate(" + state.installStatus() + ", " + state.installErrorCode() + ")");
-
- if (state.installStatus() != mInstallStatus) {
- RecordHistogram.recordEnumeratedHistogram("GoogleUpdate.Inline.StateChange.Error."
- + installStatusToEnumSuffix(state.installStatus()),
- installErrorCodeToMetrics(state.installErrorCode()),
- InstallErrorCodeMetrics.NUM_ENTRIES);
- }
-
- mInstallStatus = state.installStatus();
- pushStatus();
}
private void pullCurrentState() {
- mAppUpdateManager.getAppUpdateInfo()
- .addOnSuccessListener(info -> {
- mAppUpdateInfo = info;
- mUpdateAvailability = info.updateAvailability();
- mInstallStatus = info.installStatus();
- Log.i(TAG,
- "pullCurrentState(" + mUpdateAvailability + ", " + mInstallStatus
- + ") success.");
- recordOnAppUpdateInfo(info);
- pushStatus();
- })
- .addOnFailureListener(exception -> {
- mAppUpdateInfo = null;
- mUpdateAvailability = UpdateAvailability.UNKNOWN;
- mInstallStatus = InstallStatus.UNKNOWN;
- Log.i(TAG, "pullCurrentState() failed.");
- recordCallFailure(CallFailure.QUERY_FAILED);
- pushStatus();
- });
}
private void pushStatus() {
- if (!mEnabled || mUpdateAvailability == null || mInstallStatus == null) return;
-
- @UpdateState
- int newState = toUpdateState(mUpdateAvailability, mInstallStatus);
- if (mUpdateState != null && mUpdateState == newState) return;
-
- Log.i(TAG, "Pushing inline update state to " + newState);
- mUpdateState = newState;
- mCallback.run();
}
private static @UpdateState int toUpdateState(
- @UpdateAvailability int updateAvailability, @InstallStatus int installStatus) {
+ int updateAvailability, int installStatus) {
@UpdateState
int newStatus = UpdateState.NONE;
- // Note, use InstallStatus first then UpdateAvailability if InstallStatus doesn't indicate
- // a currently active install.
- switch (installStatus) {
- case InstallStatus.PENDING:
- // Intentional fall through.
- case InstallStatus.DOWNLOADING:
- newStatus = UpdateState.INLINE_UPDATE_DOWNLOADING;
- break;
- case InstallStatus.DOWNLOADED:
- newStatus = UpdateState.INLINE_UPDATE_READY;
- break;
- case InstallStatus.FAILED:
- newStatus = UpdateState.INLINE_UPDATE_FAILED;
- break;
- }
-
- if (newStatus == UpdateState.NONE) {
- switch (updateAvailability) {
- case UpdateAvailability.UPDATE_AVAILABLE:
- newStatus = UpdateState.INLINE_UPDATE_AVAILABLE;
- break;
- }
- }
-
return newStatus;
}
- private static String installStatusToEnumSuffix(@InstallStatus int status) {
- switch (status) {
- case InstallStatus.UNKNOWN:
- return "Unknown";
- case InstallStatus.REQUIRES_UI_INTENT:
- return "RequiresUiIntent";
- case InstallStatus.PENDING:
- return "Pending";
- case InstallStatus.DOWNLOADING:
- return "Downloading";
- case InstallStatus.DOWNLOADED:
- return "Downloaded";
- case InstallStatus.INSTALLING:
- return "Installing";
- case InstallStatus.INSTALLED:
- return "Installed";
- case InstallStatus.FAILED:
- return "Failed";
- case InstallStatus.CANCELED:
- return "Canceled";
- default:
- return "Untracked";
- }
- }
-
- private static @InstallErrorCodeMetrics int installErrorCodeToMetrics(
- @InstallErrorCode int error) {
- switch (error) {
- case InstallErrorCode.NO_ERROR:
- return InstallErrorCodeMetrics.NO_ERROR;
- case InstallErrorCode.NO_ERROR_PARTIALLY_ALLOWED:
- return InstallErrorCodeMetrics.NO_ERROR_PARTIALLY_ALLOWED;
- case InstallErrorCode.ERROR_UNKNOWN:
- return InstallErrorCodeMetrics.ERROR_UNKNOWN;
- case InstallErrorCode.ERROR_API_NOT_AVAILABLE:
- return InstallErrorCodeMetrics.ERROR_API_NOT_AVAILABLE;
- case InstallErrorCode.ERROR_INVALID_REQUEST:
- return InstallErrorCodeMetrics.ERROR_INVALID_REQUEST;
- case InstallErrorCode.ERROR_INSTALL_UNAVAILABLE:
- return InstallErrorCodeMetrics.ERROR_INSTALL_UNAVAILABLE;
- case InstallErrorCode.ERROR_INSTALL_NOT_ALLOWED:
- return InstallErrorCodeMetrics.ERROR_INSTALL_NOT_ALLOWED;
- case InstallErrorCode.ERROR_DOWNLOAD_NOT_PRESENT:
- return InstallErrorCodeMetrics.ERROR_DOWNLOAD_NOT_PRESENT;
- case InstallErrorCode.ERROR_INTERNAL_ERROR:
- return InstallErrorCodeMetrics.ERROR_INTERNAL_ERROR;
- default:
- return InstallErrorCodeMetrics.ERROR_UNTRACKED;
- }
- }
-
- private static @UpdateAvailabilityMetric int updateAvailabilityToMetrics(
- @UpdateAvailability int updateAvailability) {
- switch (updateAvailability) {
- case UpdateAvailability.UNKNOWN:
- return UpdateAvailabilityMetric.UNKNOWN;
- case UpdateAvailability.UPDATE_NOT_AVAILABLE:
- return UpdateAvailabilityMetric.UPDATE_NOT_AVAILABLE;
- case UpdateAvailability.UPDATE_AVAILABLE:
- return UpdateAvailabilityMetric.UPDATE_AVAILABLE;
- case UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS:
- return UpdateAvailabilityMetric.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS;
- default:
- return UpdateAvailabilityMetric.UNTRACKED;
- }
- }
-
- private static @InstallStatusMetric int installStatusToMetrics(
- @InstallStatus int installStatus) {
- switch (installStatus) {
- case InstallStatus.UNKNOWN:
- return InstallStatusMetric.UNKNOWN;
- case InstallStatus.REQUIRES_UI_INTENT:
- return InstallStatusMetric.REQUIRES_UI_INTENT;
- case InstallStatus.PENDING:
- return InstallStatusMetric.PENDING;
- case InstallStatus.DOWNLOADING:
- return InstallStatusMetric.DOWNLOADING;
- case InstallStatus.DOWNLOADED:
- return InstallStatusMetric.DOWNLOADED;
- case InstallStatus.INSTALLING:
- return InstallStatusMetric.INSTALLING;
- case InstallStatus.INSTALLED:
- return InstallStatusMetric.INSTALLED;
- case InstallStatus.FAILED:
- return InstallStatusMetric.FAILED;
- case InstallStatus.CANCELED:
- return InstallStatusMetric.CANCELED;
- default:
- return InstallStatusMetric.UNTRACKED;
- }
- }
-
- private static void recordOnAppUpdateInfo(AppUpdateInfo info) {
- RecordHistogram.recordEnumeratedHistogram(
- "GoogleUpdate.Inline.AppUpdateInfo.UpdateAvailability",
- updateAvailabilityToMetrics(info.updateAvailability()),
- UpdateAvailabilityMetric.NUM_ENTRIES);
- RecordHistogram.recordEnumeratedHistogram("GoogleUpdate.Inline.AppUpdateInfo.InstallStatus",
- installStatusToMetrics(info.installStatus()), InstallStatusMetric.NUM_ENTRIES);
- }
-
private static void recordCallFailure(@CallFailure int failure) {
RecordHistogram.recordEnumeratedHistogram(
"GoogleUpdate.Inline.CallFailure", failure, CallFailure.NUM_ENTRIES);
diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
--- a/components/module_installer/android/BUILD.gn
+++ b/components/module_installer/android/BUILD.gn
@@ -35,7 +35,6 @@ android_library("module_installer_java") {
"//base:base_java",
"//base:jni_java",
"//components/crash/android:java",
- "//third_party/google_android_play_core:com_google_android_play_core_java",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
diff --git a/third_party/google_android_play_core/BUILD.gn b/third_party/google_android_play_core/BUILD.gn
--- a/third_party/google_android_play_core/BUILD.gn
+++ b/third_party/google_android_play_core/BUILD.gn
@@ -3,8 +3,3 @@
# found in the LICENSE file.
import("//build/config/android/rules.gni")
-
-android_aar_prebuilt("com_google_android_play_core_java") {
- aar_path = "core-1.6.4.aar"
- info_path = "com_google_android_play_core.info"
-}
--
2.17.1
+90
View File
@@ -0,0 +1,90 @@
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 --
.../src/org/chromium/chrome/browser/ChromeActivity.java | 9 ---------
.../org/chromium/chrome/browser/KeyboardShortcuts.java | 3 ---
.../chrome/browser/customtabs/BaseCustomTabActivity.java | 2 +-
.../browser/directactions/MenuDirectActionHandler.java | 2 --
5 files changed, 1 insertion(+), 17 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
@@ -81,8 +81,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
@@ -2114,15 +2114,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
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;
- }
-
if (id == R.id.open_history_menu_id) {
// 'currentTab' could only be null when opening history from start surface, which is
// not available on tablet.
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
@@ -342,9 +342,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/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java
@@ -125,7 +125,7 @@ public abstract class BaseCustomTabActivity<C extends ChromeActivityComponent>
@Override
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
+ if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_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;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/directactions/MenuDirectActionHandler.java
@@ -36,7 +36,6 @@ class MenuDirectActionHandler implements DirectActionHandler {
map.put(ChromeDirectActionIds.RELOAD, R.id.reload_menu_id);
map.put(ChromeDirectActionIds.BOOKMARK_THIS_PAGE, R.id.bookmark_this_page_id);
map.put(ChromeDirectActionIds.DOWNLOADS, R.id.downloads_menu_id);
- map.put(ChromeDirectActionIds.HELP, R.id.help_id);
map.put(ChromeDirectActionIds.NEW_TAB, R.id.new_tab_menu_id);
map.put(ChromeDirectActionIds.OPEN_HISTORY, R.id.open_history_menu_id);
map.put(ChromeDirectActionIds.PREFERENCES, R.id.preferences_id);
@@ -92,7 +91,6 @@ class MenuDirectActionHandler implements DirectActionHandler {
}
availableItemIds.add(R.id.downloads_menu_id);
- availableItemIds.add(R.id.help_id);
availableItemIds.add(R.id.new_tab_menu_id);
availableItemIds.add(R.id.preferences_id);
--
2.17.1
@@ -0,0 +1,964 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 12 Jun 2018 14:23:07 +0200
Subject: Remove signin and data saver integrations
Prevents authorization prompt for Play services on reboot
Remove recent tabs signin
Disable data saver
Never show the data saver promo snackbar
Disable unused permissions from manifest
Disable sync adaptive and invalidation services from manifest
More permissions removal from manifest
Fix building with debug symbols:
ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
>>> referenced by invalidation_service_util.cc:17 (../../components/invalidation/impl/invalidation_service_util.cc:17)
>>> impl/invalidation_service_util.o:(invalidation::ParseNotifierOptions(base::CommandLine const&)) in archive obj/components/invalidation/impl/libimpl.a
---
chrome/android/BUILD.gn | 3 +-
chrome/android/java/AndroidManifest.xml | 28 ------
.../android/java/res/xml/main_preferences.xml | 14 ---
.../chrome/browser/ChromeActivity.java | 34 -------
.../browser/settings/MainPreferences.java | 86 +-----------------
.../DataReductionPreferenceFragment.java | 24 ++---
.../settings/privacy/PrivacyPreferences.java | 7 --
.../sync/SyncAndServicesPreferences.java | 8 --
.../chrome/browser/signin/SigninManager.java | 71 ++-------------
.../android/signin/signin_manager_android.cc | 1 -
.../strings/android_chrome_strings.grd | 18 ----
.../signin/SystemAccountManagerDelegate.java | 38 +-------
.../components/sync/AndroidSyncSettings.java | 24 +----
.../net/HttpNegotiateAuthenticator.java | 88 +------------------
.../chromoting/base/OAuthTokenFetcher.java | 2 -
15 files changed, 25 insertions(+), 421 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -1114,8 +1114,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 = [ "manifest_package=$chrome_public_manifest_package" ]
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
@@ -43,22 +43,16 @@ by a child template that "extends" this file.
{% if target_sdk_version|int > 27 or target_sdk_version == "Q" %}
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
{% endif %}
- <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
- <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
- <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
- <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission-sdk-23 android:name="android.permission.USE_FINGERPRINT"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
{% set enable_vr = enable_vr|default(0) %}
{% if enable_vr == "true" %}
<!-- Indicates use of Android's VR-mode, available only on Android N+. -->
@@ -99,8 +93,6 @@ by a child template that "extends" this file.
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
- <uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
-
{% block extra_uses_permissions %}
{% endblock %}
@@ -978,16 +970,6 @@ by a child template that "extends" this file.
android:resource="@xml/file_paths" />
</provider>
- <!-- Sync adapter for browser invalidation. -->
- <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>
-
<!-- Broadcast receiver that will be notified of account changes -->
<receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
<intent-filter>
@@ -1095,16 +1077,6 @@ by a child template that "extends" this file.
<service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
android:exported="false"/>
- <!-- Notification service for sync. -->
- <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
- android:exported="false"/>
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
- android:exported="false"/>
- <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
- android:exported="false"/>
- <receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
- android:exported="false"/>
-
<!-- Android Notification service listener -->
<service android:name="org.chromium.chrome.browser.notifications.NotificationService"
android:exported="false"/>
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -6,15 +6,6 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:orderingFromXml="false">
- <PreferenceCategory
- android:key="account_section"
- android:order="0"
- android:title="@string/prefs_section_account"/>
- <org.chromium.chrome.browser.settings.sync.SignInPreference
- android:key="sign_in"
- android:order="1"
- android:title="@string/sign_in_to_chrome"/>
-
<PreferenceCategory
android:key="basics_section"
android:order="3"
@@ -84,11 +75,6 @@
android:key="languages"
android:order="16"
android:title="@string/prefs_languages"/>
- <org.chromium.chrome.browser.settings.ChromeBasePreference
- android:fragment="org.chromium.chrome.browser.settings.datareduction.DataReductionPreferenceFragment"
- android:key="data_reduction"
- android:order="17"
- android:title="@string/data_reduction_title_lite_mode"/>
<org.chromium.chrome.browser.settings.ChromeBasePreference
android:fragment="org.chromium.chrome.browser.settings.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
@@ -131,8 +131,6 @@ import org.chromium.chrome.browser.share.ShareDelegateImpl;
import org.chromium.chrome.browser.snackbar.BottomContainer;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
-import org.chromium.chrome.browser.sync.ProfileSyncService;
-import org.chromium.chrome.browser.sync.SyncController;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper;
import org.chromium.chrome.browser.tab.TabImpl;
@@ -255,9 +253,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@SuppressLint("NewApi")
private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
- // Observes when sync becomes ready to create the mContextReporter.
- private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
-
@Nullable
private ChromeFullscreenManager mFullscreenManager;
@@ -870,28 +865,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
private void createContextReporterIfNeeded() {
if (!mStarted) return; // Sync state reporting should work only in started state.
if (mContextReporter != null || getActivityTab() == null) return;
-
- final SyncController syncController = SyncController.get(this);
- final ProfileSyncService syncService = ProfileSyncService.get();
-
- if (syncController != null && syncController.isSyncingUrlsWithKeystorePassphrase()) {
- assert syncService != null;
- mContextReporter = AppHooks.get().createGsaHelper().getContextReporter(this);
-
- if (mSyncStateChangedListener != null) {
- syncService.removeSyncStateChangedListener(mSyncStateChangedListener);
- mSyncStateChangedListener = null;
- }
-
- return;
- } else {
- ContextReporter.reportSyncStatus(syncService);
- }
-
- if (mSyncStateChangedListener == null && syncService != null) {
- mSyncStateChangedListener = () -> createContextReporterIfNeeded();
- syncService.addSyncStateChangedListener(mSyncStateChangedListener);
- }
}
@Override
@@ -963,13 +936,6 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
if (GSAState.getInstance(this).isGsaAvailable() && !SysUtils.isLowEndDevice()) {
GSAAccountChangeListener.getInstance().disconnect();
}
- if (mSyncStateChangedListener != null) {
- ProfileSyncService syncService = ProfileSyncService.get();
- if (syncService != null) {
- syncService.removeSyncStateChangedListener(mSyncStateChangedListener);
- }
- mSyncStateChangedListener = null;
- }
if (mContextReporter != null) mContextReporter.disable();
super.onStopWithNative();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainPreferences.java
@@ -19,7 +19,6 @@ import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.flags.FeatureUtilities;
-import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.night_mode.NightModeUtils;
import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchConfiguration;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
@@ -27,7 +26,6 @@ import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.settings.autofill_assistant.AutofillAssistantPreferences;
-import org.chromium.chrome.browser.settings.datareduction.DataReductionPreferenceFragment;
import org.chromium.chrome.browser.settings.developer.DeveloperSettings;
import org.chromium.chrome.browser.settings.sync.SignInPreference;
import org.chromium.chrome.browser.settings.sync.SyncPreferenceUtils;
@@ -44,16 +42,11 @@ import java.util.Map;
* The main settings screen, shown when the user first opens Settings.
*/
public class MainPreferences extends PreferenceFragmentCompat
- implements TemplateUrlService.LoadListener, ProfileSyncService.SyncStateChangedListener,
- SigninManager.SignInStateObserver {
- public static final String PREF_ACCOUNT_SECTION = "account_section";
- public static final String PREF_SIGN_IN = "sign_in";
- public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
+ implements TemplateUrlService.LoadListener {
public static final String PREF_SEARCH_ENGINE = "search_engine";
public static final String PREF_SAVED_PASSWORDS = "saved_passwords";
public static final String PREF_HOMEPAGE = "homepage";
public static final String PREF_UI_THEME = "ui_theme";
- 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";
@@ -67,7 +60,6 @@ public class MainPreferences extends PreferenceFragmentCompat
private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
private final Map<String, Preference> mAllPreferences = new HashMap<>();
- private SignInPreference mSignInPreference;
public MainPreferences() {
setHasOptionsMenu(true);
@@ -90,35 +82,16 @@ public class MainPreferences extends PreferenceFragmentCompat
@Override
public void onDestroy() {
super.onDestroy();
- mSignInPreference.onPreferenceFragmentDestroyed();
}
@Override
public void onStart() {
super.onStart();
- SigninManager signinManager = IdentityServicesProvider.getSigninManager();
- if (signinManager.isSigninSupported()) {
- signinManager.addSignInStateObserver(this);
- mSignInPreference.registerForUpdates();
- }
- ProfileSyncService syncService = ProfileSyncService.get();
- if (syncService != null) {
- syncService.addSyncStateChangedListener(this);
- }
}
@Override
public void onStop() {
super.onStop();
- SigninManager signinManager = IdentityServicesProvider.getSigninManager();
- if (signinManager.isSigninSupported()) {
- signinManager.removeSignInStateObserver(this);
- mSignInPreference.unregisterForUpdates();
- }
- ProfileSyncService syncService = ProfileSyncService.get();
- if (syncService != null) {
- syncService.removeSyncStateChangedListener(this);
- }
}
@Override
@@ -131,12 +104,9 @@ public class MainPreferences extends PreferenceFragmentCompat
SettingsUtils.addPreferencesFromResource(this, R.xml.main_preferences);
cachePreferences();
- mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
-
updatePasswordsPreference();
setManagedPreferenceDelegateForPreference(PREF_SEARCH_ENGINE);
- setManagedPreferenceDelegateForPreference(PREF_DATA_REDUCTION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// If we are on Android O+ the Notifications preference should lead to the Android
@@ -190,7 +160,6 @@ public class MainPreferences extends PreferenceFragmentCompat
Preference preference = getPreferenceScreen().getPreference(index);
mAllPreferences.put(preference.getKey(), preference);
}
- mSignInPreference = (SignInPreference) mAllPreferences.get(PREF_SIGN_IN);
}
private void setManagedPreferenceDelegateForPreference(String key) {
@@ -199,13 +168,6 @@ public class MainPreferences extends PreferenceFragmentCompat
}
private void updatePreferences() {
- if (IdentityServicesProvider.getSigninManager().isSigninSupported()) {
- addPreferenceIfAbsent(PREF_SIGN_IN);
- } else {
- removePreferenceIfPresent(PREF_SIGN_IN);
- }
-
- updateSyncAndServicesPreference();
updateSearchEnginePreference();
Preference homepagePref = addPreferenceIfAbsent(PREF_HOMEPAGE);
@@ -222,10 +184,6 @@ public class MainPreferences extends PreferenceFragmentCompat
} else {
removePreferenceIfPresent(PREF_DEVELOPER);
}
-
- ChromeBasePreference dataReduction =
- (ChromeBasePreference) findPreference(PREF_DATA_REDUCTION);
- dataReduction.setSummary(DataReductionPreferenceFragment.generateSummary(getResources()));
}
private Preference addPreferenceIfAbsent(String key) {
@@ -239,13 +197,6 @@ public class MainPreferences extends PreferenceFragmentCompat
if (preference != null) getPreferenceScreen().removePreference(preference);
}
- private void updateSyncAndServicesPreference() {
- ChromeBasePreference syncAndServices =
- (ChromeBasePreference) findPreference(PREF_SYNC_AND_SERVICES);
- syncAndServices.setIcon(SyncPreferenceUtils.getSyncStatusIcon(getActivity()));
- syncAndServices.setSummary(SyncPreferenceUtils.getSyncStatusSummary(getActivity()));
- }
-
private void updateSearchEnginePreference() {
if (!TemplateUrlServiceFactory.get().isLoaded()) {
ChromeBasePreference searchEnginePref =
@@ -277,28 +228,6 @@ public class MainPreferences extends PreferenceFragmentCompat
pref.setSummary(isOn ? R.string.text_on : R.string.text_off);
}
- // SigninManager.SignInStateObserver implementation.
- @Override
- public void onSignedIn() {
- // After signing in or out of a managed account, preferences may change or become enabled
- // or disabled.
- new Handler().post(() -> updatePreferences());
- }
-
- @Override
- public void onSignedOut() {
- updatePreferences();
- }
-
- private void onSignInPreferenceStateChanged() {
- // Remove "Account" section header if the personalized sign-in promo is shown.
- if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
- removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
- } else {
- addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
- }
- }
-
// TemplateUrlService.LoadListener implementation.
@Override
public void onTemplateUrlServiceLoaded() {
@@ -306,11 +235,6 @@ public class MainPreferences extends PreferenceFragmentCompat
updateSearchEnginePreference();
}
- @Override
- public void syncStateChanged() {
- updateSyncAndServicesPreference();
- }
-
@VisibleForTesting
ManagedPreferenceDelegate getManagedPreferenceDelegateForTest() {
return mManagedPreferenceDelegate;
@@ -320,9 +244,6 @@ public class MainPreferences extends PreferenceFragmentCompat
return new ManagedPreferenceDelegate() {
@Override
public boolean isPreferenceControlledByPolicy(Preference preference) {
- if (PREF_DATA_REDUCTION.equals(preference.getKey())) {
- return DataReductionProxySettings.getInstance().isDataReductionProxyManaged();
- }
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
}
@@ -331,11 +252,6 @@ public class MainPreferences extends PreferenceFragmentCompat
@Override
public boolean isPreferenceClickDisabledByPolicy(Preference preference) {
- if (PREF_DATA_REDUCTION.equals(preference.getKey())) {
- DataReductionProxySettings settings = DataReductionProxySettings.getInstance();
- return settings.isDataReductionProxyManaged()
- && !settings.isDataReductionProxyEnabled();
- }
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
return TemplateUrlServiceFactory.get().isDefaultSearchManaged();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/datareduction/DataReductionPreferenceFragment.java
@@ -50,10 +50,10 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
SettingsUtils.addPreferencesFromResource(this, R.xml.data_reduction_preferences);
getActivity().setTitle(R.string.data_reduction_title_lite_mode);
- boolean isEnabled = DataReductionProxySettings.getInstance().isDataReductionProxyEnabled();
- mIsEnabled = !isEnabled;
- mWasEnabledAtCreation = isEnabled;
- updatePreferences(isEnabled);
+
+ mIsEnabled = false;
+ mWasEnabledAtCreation = false;
+ updatePreferences(false);
setHasOptionsMenu(true);
@@ -148,21 +148,7 @@ public class DataReductionPreferenceFragment extends PreferenceFragmentCompat {
* Returns summary string.
*/
public static String generateSummary(Resources resources) {
- if (DataReductionProxySettings.getInstance().isDataReductionProxyEnabled()) {
- ContentLengths length = DataReductionProxySettings.getInstance().getContentLengths();
-
- // If received is less than show chart threshold than don't show summary.
- if (ConversionUtils.bytesToKilobytes(length.getReceived())
- < DataReductionProxySettings.DATA_REDUCTION_SHOW_CHART_KB_THRESHOLD) {
- return "";
- }
-
- String percent = generatePercentSavings(length);
- return resources.getString(
- R.string.data_reduction_menu_item_summary_lite_mode, percent);
- } else {
- return (String) resources.getText(R.string.text_off);
- }
+ return (String) resources.getText(R.string.text_off);
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/privacy/PrivacyPreferences.java
@@ -24,7 +24,6 @@ import org.chromium.chrome.browser.settings.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.settings.ManagedPreferenceDelegate;
import org.chromium.chrome.browser.settings.PreferencesLauncher;
import org.chromium.chrome.browser.settings.SettingsUtils;
-import org.chromium.chrome.browser.settings.sync.SyncAndServicesPreferences;
import org.chromium.chrome.browser.usage_stats.UsageStatsConsentDialog;
import org.chromium.ui.text.NoUnderlineClickableSpan;
import org.chromium.ui.text.SpanApplier;
@@ -39,9 +38,6 @@ public class PrivacyPreferences
private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
private static final String PREF_DO_NOT_TRACK = "do_not_track";
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
- private static final String PREF_SYNC_AND_SERVICES_LINK_DIVIDER =
- "sync_and_services_link_divider";
- private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link";
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -64,9 +60,6 @@ public class PrivacyPreferences
networkPredictionPref.setOnPreferenceChangeListener(this);
networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
- getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
-
ChromeBaseCheckBoxPreference searchSuggestionsPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SEARCH_SUGGESTIONS);
searchSuggestionsPref.setOnPreferenceChangeListener(this);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/SyncAndServicesPreferences.java
@@ -175,15 +175,7 @@ public class SyncAndServicesPreferences extends PreferenceFragmentCompat
mPrivacyPrefManager.migrateNetworkPredictionPreferences();
- getActivity().setTitle(R.string.prefs_sync_and_services);
setHasOptionsMenu(true);
- if (mIsFromSigninScreen) {
- ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
- assert actionBar != null;
- actionBar.setHomeActionContentDescription(
- R.string.prefs_sync_and_services_content_description);
- RecordUserAction.record("Signin_Signin_ShowAdvancedSyncSettings");
- }
SettingsUtils.addPreferencesFromResource(this, R.xml.sync_and_services_preferences);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninManager.java
@@ -22,9 +22,6 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
-import org.chromium.components.signin.AccountIdProvider;
-import org.chromium.components.signin.AccountTrackerService;
-import org.chromium.components.signin.ChromeSigninController;
import org.chromium.components.signin.identitymanager.ClearAccountsAction;
import org.chromium.components.signin.identitymanager.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.IdentityManager;
@@ -50,7 +47,7 @@ import java.util.List;
* See chrome/browser/signin/signin_manager_android.h for more details.
*/
public class SigninManager
- implements AccountTrackerService.OnSystemAccountsSeededListener, IdentityManager.Observer {
+ implements IdentityManager.Observer {
private static final String TAG = "SigninManager";
/**
@@ -168,7 +165,6 @@ public class SigninManager
* This is not final, as destroy() updates this.
*/
private long mNativeSigninManagerAndroid;
- private final AccountTrackerService mAccountTrackerService;
private final IdentityManager mIdentityManager;
private final IdentityMutator mIdentityMutator;
private final AndroidSyncSettings mAndroidSyncSettings;
@@ -205,24 +201,22 @@ public class SigninManager
*/
@CalledByNative
private static SigninManager create(long nativeSigninManagerAndroid,
- AccountTrackerService accountTrackerService, IdentityManager identityManager,
+ IdentityManager identityManager,
IdentityMutator identityMutator) {
assert nativeSigninManagerAndroid != 0;
- assert accountTrackerService != null;
assert identityManager != null;
assert identityMutator != null;
- return new SigninManager(nativeSigninManagerAndroid, accountTrackerService, identityManager,
+ return new SigninManager(nativeSigninManagerAndroid, identityManager,
identityMutator, AndroidSyncSettings.get());
}
@VisibleForTesting
- SigninManager(long nativeSigninManagerAndroid, AccountTrackerService accountTrackerService,
+ SigninManager(long nativeSigninManagerAndroid,
IdentityManager identityManager, IdentityMutator identityMutator,
AndroidSyncSettings androidSyncSettings) {
ThreadUtils.assertOnUiThread();
assert androidSyncSettings != null;
mNativeSigninManagerAndroid = nativeSigninManagerAndroid;
- mAccountTrackerService = accountTrackerService;
mIdentityManager = identityManager;
mIdentityMutator = identityMutator;
mAndroidSyncSettings = androidSyncSettings;
@@ -230,7 +224,6 @@ public class SigninManager
mSigninAllowedByPolicy =
SigninManagerJni.get().isSigninAllowedByPolicy(mNativeSigninManagerAndroid);
- mAccountTrackerService.addSystemAccountsSeededListener(this);
mIdentityManager.addObserver(this);
reloadAllAccountsFromSystem();
@@ -243,7 +236,6 @@ public class SigninManager
@CalledByNative
public void destroy() {
mIdentityManager.removeObserver(this);
- mAccountTrackerService.removeSystemAccountsSeededListener(this);
mNativeSigninManagerAndroid = 0;
}
@@ -282,8 +274,7 @@ public class SigninManager
* Returns true if signin can be started now.
*/
public boolean isSignInAllowed() {
- return !mFirstRunCheckIsPending && mSignInState == null && mSigninAllowedByPolicy
- && ChromeSigninController.get().getSignedInUser() == null && isSigninSupported();
+ return false;
}
/**
@@ -339,27 +330,6 @@ public class SigninManager
});
}
- /**
- * Continue pending sign in after system accounts have been seeded into AccountTrackerService.
- */
- @Override
- public void onSystemAccountsSeedingComplete() {
- if (mSignInState != null && mSignInState.mBlockedOnAccountSeeding) {
- mSignInState.mBlockedOnAccountSeeding = false;
- progressSignInFlowCheckPolicy();
- }
- }
-
- /**
- * Clear pending sign in when system accounts in AccountTrackerService were refreshed.
- */
- @Override
- public void onSystemAccountsChanged() {
- if (mSignInState != null) {
- abortSignIn();
- }
- }
-
/**
* Starts the sign-in flow, and executes the callback when finished.
*
@@ -407,14 +377,8 @@ public class SigninManager
}
private void progressSignInFlowSeedSystemAccounts() {
- if (mAccountTrackerService.checkAndSeedSystemAccounts()) {
- progressSignInFlowCheckPolicy();
- } else if (AccountIdProvider.getInstance().canBeUsed()) {
- mSignInState.mBlockedOnAccountSeeding = true;
- } else {
- Log.w(TAG, "Cancelling the sign-in process as Google Play services is unavailable");
- abortSignIn();
- }
+ Log.w(TAG, "Cancelling the sign-in process as Google Play services is unavailable");
+ abortSignIn();
}
/**
@@ -451,18 +415,6 @@ public class SigninManager
// The user should not be already signed in
assert !mIdentityManager.hasPrimaryAccount();
- if (!mIdentityMutator.setPrimaryAccount(mSignInState.mCoreAccountInfo.getId())) {
- Log.w(TAG, "Failed to set the PrimaryAccount in IdentityManager, aborting signin");
- abortSignIn();
- return;
- }
-
- // Cache the signed-in account name. This must be done after the native call, otherwise
- // sync tries to start without being signed in natively and crashes.
- ChromeSigninController.get().setSignedInAccountName(
- mSignInState.mCoreAccountInfo.getName());
- enableSync(mSignInState.mCoreAccountInfo.getAccount());
-
if (mSignInState.mCallback != null) {
mSignInState.mCallback.onSignInComplete();
}
@@ -620,10 +572,8 @@ public class SigninManager
// Native sign-out must happen before resetting the account so data is deleted correctly.
// http://crbug.com/589028
- ChromeSigninController.get().setSignedInAccountName(null);
if (mSignOutState.mSignOutCallback != null) mSignOutState.mSignOutCallback.preWipeData();
disableSyncAndWipeData(mSignOutState.mShouldWipeUserData, this::finishSignOut);
- mAccountTrackerService.invalidateAccountSeedStatus(true);
}
void finishSignOut() {
@@ -683,13 +633,6 @@ public class SigninManager
SigninManagerJni.get().stopApplyingCloudPolicy(mNativeSigninManagerAndroid);
}
- private void enableSync(Account account) {
- // Cache the signed-in account name. This must be done after the native call, otherwise
- // sync tries to start without being signed in the native code and crashes.
- mAndroidSyncSettings.updateAccount(account);
- mAndroidSyncSettings.enableChromeSync();
- }
-
private void disableSyncAndWipeData(
boolean shouldWipeUserData, final Runnable wipeDataCallback) {
mAndroidSyncSettings.updateAccount(null);
diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc
--- a/chrome/browser/android/signin/signin_manager_android.cc
+++ b/chrome/browser/android/signin/signin_manager_android.cc
@@ -138,7 +138,6 @@ SigninManagerAndroid::SigninManagerAndroid(
java_signin_manager_ = Java_SigninManager_create(
base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this),
- identity_manager_->LegacyGetAccountTrackerServiceJavaObject(),
identity_manager_->GetJavaObject(),
identity_manager_->GetIdentityMutatorJavaObject());
}
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -369,24 +369,12 @@ CHAR-LIMIT guidelines:
</message>
<!-- Sign-in, sync and personalization preferences -->
- <message name="IDS_PREFS_SECTION_ACCOUNT" desc="Title for the group of account-related entries in Settings. [CHAR-LIMIT=32]">
- Account
- </message>
<message name="IDS_SIGN_IN_TO_CHROME" desc="Title for the button to sign in to Chrome using one's Google account. [CHAR-LIMIT=27]">
Sign in to Chrome
</message>
- <message name="IDS_PREFS_SYNC_AND_SERVICES" desc="Title for Settings section to manage data collection for Sync and Google services. [CHAR-LIMIT=40]">
- Sync and Google services
- </message>
- <message name="IDS_PREFS_SYNC_AND_SERVICES_CONTENT_DESCRIPTION" desc="The accessibility text to read when the 'Sync and Google services' Settings page is opened from the sign-in page. This text is attached to the 'Navigate Up' button shown at the top of the screen. The first two sentences describe the screen that is currently shown to the user, while 'Navigate up' is a description for the button this text is attached to. 'Navigate up' should match TC ID 6794660482873516081.">
- You are currently customizing your Sync and Google service settings. To finish turning on sync, tap the Confirm button near the bottom of the screen. Navigate up
- </message>
<message name="IDS_SIGNIN_PREF_SUMMARY" desc="Summary for the entry in Settings to sign in to Chrome, explaining benefits of signing in.">
Sync and personalize across devices
</message>
- <message name="IDS_SYNC_AND_SERVICES_SUMMARY_SYNC_ON" desc="Summary for 'Sync and Google services' preference row when sync is enabled.">
- Sync is on
- </message>
<message name="IDS_SIGN_IN_TO_CHROME_DISABLED_SUMMARY" desc="A descriptive line of text that appears under the 'Sign in to Chrome' option, in Chrome Settings on Android. The text explains why 'Sign in to Chrome' is disabled. 'Administrator' refers to the IT administrator of the company/organization that owns the users device.">
Disabled by the administrator of this device
</message>
@@ -436,9 +424,6 @@ CHAR-LIMIT guidelines:
<message name="IDS_URL_KEYED_ANONYMIZED_DATA_SUMMARY" desc="Summary for a checkbox in Settings that controls non-personalized URL collection and informs the user about the data shared by this feature.">
Sends URLs of pages you visit to Google
</message>
- <message name="IDS_PRIVACY_SYNC_AND_SERVICES_LINK" desc="The text for Privacy preferences that is shown after all preference rows.">
- For more settings that relate to privacy, security, and data collection, see <ph name="BEGIN_LINK">&lt;link&gt;</ph>Sync and Google services<ph name="END_LINK">&lt;/link&gt;</ph>
- </message>
<message name="IDS_CANCEL_SYNC_DIALOG_TITLE" desc="The title of a dialog that is shown when users tries closing 'Sync and Google services' preferences without confirming the changes.">
Cancel sync?
</message>
@@ -1294,9 +1279,6 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_DATA_REDUCTION_DESCRIPTION_LITE_MODE" desc="Text describing how the Lite mode feature works. Seen only before the user has enabled the feature.">
When Lite mode is on, Chrome uses Google servers to make pages load faster. Lite mode rewrites very slow pages to load only essential content. Lite mode does not apply to Incognito tabs.
</message>
- <message name="IDS_DATA_REDUCTION_MENU_ITEM_SUMMARY_LITE_MODE" desc="Label that states the percent of mobile data that was saved by Lite mode. Lite mode allows users to to reduce their mobile data usage by compressing network traffic.">
- <ph name="PERCENT">%1$s<ex>49%</ex></ph> data savings
- </message>
<message name="IDS_DATA_REDUCTION_SAVINGS_LABEL" desc="Data Reduction statistics label that states the amount of mobile data that was saved by Lite mode. Lite mode allows users to to reduce their mobile data usage by compressing network traffic.">
data saved
</message>
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
@@ -167,16 +167,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@Override
public boolean hasFeatures(Account account, String[] features) {
- if (!hasGetAccountsPermission()) {
- return false;
- }
- try {
- return mAccountManager.hasFeatures(account, features, null, null).getResult();
- } catch (AuthenticatorException | IOException e) {
- Log.e(TAG, "Error while checking features: ", e);
- } catch (OperationCanceledException e) {
- Log.e(TAG, "Checking features was cancelled. This should not happen.");
- }
return false;
}
@@ -216,32 +206,10 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
public void updateCredentials(
Account account, Activity activity, final Callback<Boolean> callback) {
ThreadUtils.assertOnUiThread();
- if (!hasManageAccountsPermission()) {
- if (callback != null) {
- ThreadUtils.postOnUiThread(() -> callback.onResult(false));
- }
- return;
+ if (callback != null) {
+ ThreadUtils.postOnUiThread(() -> callback.onResult(false));
}
-
- AccountManagerCallback<Bundle> realCallback = future -> {
- Bundle bundle = null;
- try {
- bundle = future.getResult();
- } catch (AuthenticatorException | IOException e) {
- Log.e(TAG, "Error while update credentials: ", e);
- } catch (OperationCanceledException e) {
- Log.w(TAG, "Updating credentials was cancelled.");
- }
- boolean success =
- bundle != null && bundle.getString(AccountManager.KEY_ACCOUNT_TYPE) != null;
- if (callback != null) {
- callback.onResult(success);
- }
- };
- // Android 4.4 throws NullPointerException if null is passed
- Bundle emptyOptions = new Bundle();
- mAccountManager.updateCredentials(
- account, "android", emptyOptions, activity, realCallback, null);
+ return;
}
protected boolean hasGetAccountsPermission() {
diff --git a/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java b/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
--- a/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
+++ b/components/sync/android/java/src/org/chromium/components/sync/AndroidSyncSettings.java
@@ -213,13 +213,7 @@ public class AndroidSyncSettings {
private void setChromeSyncEnabled(boolean value) {
synchronized (mLock) {
- updateSyncability(null);
- if (value == mChromeSyncEnabled || mAccount == null) return;
- mChromeSyncEnabled = value;
-
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
- mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mContractAuthority, value);
- StrictMode.setThreadPolicy(oldPolicy);
+ mChromeSyncEnabled = false;
}
notifyObservers();
}
@@ -300,19 +294,9 @@ public class AndroidSyncSettings {
boolean oldChromeSyncEnabled = mChromeSyncEnabled;
boolean oldMasterSyncEnabled = mMasterSyncEnabled;
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
- if (mAccount != null) {
- mIsSyncable =
- mSyncContentResolverDelegate.getIsSyncable(mAccount, mContractAuthority)
- == 1;
- mChromeSyncEnabled = mSyncContentResolverDelegate.getSyncAutomatically(
- mAccount, mContractAuthority);
- } else {
- mIsSyncable = false;
- mChromeSyncEnabled = false;
- }
- mMasterSyncEnabled = mSyncContentResolverDelegate.getMasterSyncAutomatically();
- StrictMode.setThreadPolicy(oldPolicy);
+ mIsSyncable = false;
+ mChromeSyncEnabled = false;
+ mMasterSyncEnabled = false;
return oldChromeSyncEnabled != mChromeSyncEnabled
|| oldMasterSyncEnabled != mMasterSyncEnabled;
diff --git a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
--- a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
+++ b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
@@ -98,54 +98,8 @@ public class HttpNegotiateAuthenticator {
@Override
public void run(AccountManagerFuture<Account[]> future) {
- Account[] accounts;
- try {
- accounts = future.getResult();
- } catch (OperationCanceledException | AuthenticatorException | IOException e) {
- Log.w(TAG, "ERR_UNEXPECTED: Error while attempting to retrieve accounts.", e);
- HttpNegotiateAuthenticatorJni.get().setResult(mRequestData.nativeResultObject,
- HttpNegotiateAuthenticator.this, NetError.ERR_UNEXPECTED, null);
- return;
- }
-
- if (accounts.length == 0) {
- Log.w(TAG, "ERR_MISSING_AUTH_CREDENTIALS: No account provided for the kerberos "
- + "authentication. Please verify the configuration policies and "
- + "that the CONTACTS runtime permission is granted. ");
- HttpNegotiateAuthenticatorJni.get().setResult(mRequestData.nativeResultObject,
- HttpNegotiateAuthenticator.this, NetError.ERR_MISSING_AUTH_CREDENTIALS,
- null);
- return;
- }
-
- if (accounts.length > 1) {
- Log.w(TAG, "ERR_MISSING_AUTH_CREDENTIALS: Found %d accounts eligible for the "
- + "kerberos authentication. Please fix the configuration by "
- + "providing a single account.",
- accounts.length);
- HttpNegotiateAuthenticatorJni.get().setResult(mRequestData.nativeResultObject,
- HttpNegotiateAuthenticator.this, NetError.ERR_MISSING_AUTH_CREDENTIALS,
- null);
- return;
- }
-
- if (lacksPermission(ContextUtils.getApplicationContext(),
- "android.permission.USE_CREDENTIALS", true)) {
- // Protecting the AccountManager#getAuthToken call.
- // API < 23 Requires the USE_CREDENTIALS permission or throws an exception.
- // API >= 23 USE_CREDENTIALS permission is removed
- Log.e(TAG, "ERR_MISCONFIGURED_AUTH_ENVIRONMENT: USE_CREDENTIALS permission not "
- + "granted. Aborting authentication.");
- HttpNegotiateAuthenticatorJni.get().setResult(mRequestData.nativeResultObject,
- HttpNegotiateAuthenticator.this,
- NetError.ERR_MISCONFIGURED_AUTH_ENVIRONMENT, null);
- return;
- }
- mRequestData.account = accounts[0];
- mRequestData.accountManager.getAuthToken(mRequestData.account,
- mRequestData.authTokenType, mRequestData.options, true /* notifyAuthFailure */,
- new GetTokenCallback(mRequestData),
- new Handler(ThreadUtils.getUiThreadLooper()));
+ // account-based authentication removed for privacy-violations concerns
+ return;
}
}
@@ -158,42 +112,8 @@ public class HttpNegotiateAuthenticator {
@Override
public void run(AccountManagerFuture<Bundle> future) {
- Bundle result;
- try {
- result = future.getResult();
- } catch (OperationCanceledException | AuthenticatorException | IOException e) {
- Log.w(TAG, "ERR_UNEXPECTED: Error while attempting to obtain a token.", e);
- HttpNegotiateAuthenticatorJni.get().setResult(mRequestData.nativeResultObject,
- HttpNegotiateAuthenticator.this, NetError.ERR_UNEXPECTED, null);
- return;
- }
-
- if (result.containsKey(AccountManager.KEY_INTENT)) {
- final Context appContext = ContextUtils.getApplicationContext();
-
- // We wait for a broadcast that should be sent once the user is done interacting
- // with the notification
- // TODO(dgn) We currently hang around if the notification is swiped away, until
- // a LOGIN_ACCOUNTS_CHANGED_ACTION filter is received. It might be for something
- // unrelated then we would wait again here. Maybe we should limit the number of
- // retries in some way?
- BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- appContext.unregisterReceiver(this);
- mRequestData.accountManager.getAuthToken(mRequestData.account,
- mRequestData.authTokenType, mRequestData.options,
- true /* notifyAuthFailure */, new GetTokenCallback(mRequestData),
- null);
- }
-
- };
- appContext.registerReceiver(broadcastReceiver,
- new IntentFilter(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION));
- } else {
- processResult(result, mRequestData);
- }
+ // account-based authentication removed for privacy-violations concerns
+ return;
}
}
diff --git a/remoting/android/java/src/org/chromium/chromoting/base/OAuthTokenFetcher.java b/remoting/android/java/src/org/chromium/chromoting/base/OAuthTokenFetcher.java
--- a/remoting/android/java/src/org/chromium/chromoting/base/OAuthTokenFetcher.java
+++ b/remoting/android/java/src/org/chromium/chromoting/base/OAuthTokenFetcher.java
@@ -93,7 +93,6 @@ public class OAuthTokenFetcher {
/** Begins fetching a token. Should be called on the main thread. */
public void fetch() {
- fetchImpl(null);
}
/**
@@ -102,7 +101,6 @@ public class OAuthTokenFetcher {
* @param expiredToken A previously-fetched token which has expired.
*/
public void clearAndFetch(String expiredToken) {
- fetchImpl(expiredToken);
}
private void fetchImpl(final String expiredToken) {
--
2.17.1

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