Compare commits

...
Author SHA1 Message Date
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
23 changed files with 222 additions and 71 deletions
+11 -1
View File
@@ -1,8 +1,18 @@
# 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
* fix DoH timeouts issue (https://github.com/bromite/bromite/issues/437)
* remove logging for DoH timeouts
# 79.0.3945.107
+50 -11
View File
@@ -39,13 +39,23 @@ 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).
@@ -67,17 +77,36 @@ You can use F-Droid client to install and receive updates via [the official Brom
## 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.
# Features
* customizable adblock filters via user-provided URL
* remove click-tracking and AMP from search results
* DNS-over-HTTPS support, you can use any DoH endpoint
* DNS-over-HTTPS support with any valid IETF DoH endpoint
* always-incognito mode
* completely removed safe browsing and other privacy-unfriendly features
* 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
* chrome flags to disable custom intents and clear session on exit
* anti-fingerprinting mitigations for canvas, audio, client rects, webGL and sensor APIs
* 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 fixed User-Agent to conceal real model and browser version
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
* security enhancement patches from [GrapheneOS](https://github.com/GrapheneOS) project
@@ -87,17 +116,30 @@ Yes, since version 69. While the desktop version of Chromium has an option to di
* allow playing videos in background tabs and disable pause on switching tabs
* all codecs included (proprietary, open H.264 etc.)
* [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
* 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
You can inspect all functionality/privacy changes by reading the patches: https://github.com/bromite/bromite/tree/master/build/patches
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).
### 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 can be easily circumvented), **are not to be considered useful for journalists and people living in countries with freedom limitations**, please look at [Tor Browser](https://2019.www.torproject.org/projects/torbrowser.html.en) in such cases.
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
All built versions are available as [releases](https://github.com/bromite/bromite/releases); the [official website](https://www.bromite.org/) points to those releases and - when browsing via Android - it will automatically select the one apt for your device (or none otherwise).
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 Stable release tag.
@@ -116,8 +158,6 @@ arm64_ChromePublic.apk: OK
arm64_ChromeModernPublic.apk: OK
```
If you prefer an UI-based tool, you might want to look into [GtkHash](https://github.com/tristanheaven/gtkhash).
You can verify authenticity, e.g. that the author ([csagan5](https://github.com/csagan5)) released the file, by using gpg2:
```
$ gpg2 --quiet --verify brm_68.0.3440.54.sha256.txt.asc
@@ -128,8 +168,6 @@ gpg: Good signature from "csagan5 <32685696+csagan5@users.noreply.github.com>"
You can download csagan5's public GnuPG key from here: [csagan5.asc](./csagan5.asc).
**NOTE:** releases before v68 did not have published signed hashes files.
# How to build
The [Bromite main repository](https://github.com/bromite/bromite) contains tags for each corresponding Chromium release (see https://chromium.googlesource.com/chromium/src.git).
@@ -161,6 +199,7 @@ Bromite uses an unindexed filter file, which is periodically published at https:
* [EasyPrivacy](https://easylist.to/#easyprivacy)
* [uBlock Origin](https://github.com/uBlockOrigin)
* [Peter Lowe's Ad and tracking server list](https://pgl.yoyo.org/adservers/)
# License
The patches published as part of the Bromite project are released under [GNU GPL v3](./LICENSE).
+3
View File
@@ -142,3 +142,6 @@ Always-show-site-settings-for-cookies-javascript-and-ads.patch
Automated-domain-substitution.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
@@ -38,7 +38,7 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
+ 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
@@ -44,9 +44,9 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
diff --git a/components/search_engines/search_engine_type.h b/components/search_engines/search_engine_type.h
--- a/components/search_engines/search_engine_type.h
+++ b/components/search_engines/search_engine_type.h
@@ -68,6 +68,7 @@ enum SearchEngineType {
SEARCH_ENGINE_PARSIJOO,
SEARCH_ENGINE_QWANT,
@@ -74,6 +74,7 @@ enum SearchEngineType {
SEARCH_ENGINE_OCEANHERO,
SEARCH_ENGINE_PRIVACYWALL,
+ SEARCH_ENGINE_GOOGLE_EN,
SEARCH_ENGINE_MAX // Bounding value needed for UMA histogram macro.
@@ -253,7 +253,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
const PrepopulatedEngine* const engines_CZ[] = {
- &google,
+ &googleen, &google,
&seznam,
&seznam_cz,
&bing,
&yahoo,
@@ -211,7 +211,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
+1 -1
View File
@@ -221,7 +221,7 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
const PrepopulatedEngine* const engines_CZ[] = {
- &googleen, &google,
+ &googleen, &google, &qwant,
&seznam,
&seznam_cz,
&bing,
&yahoo,
@@ -214,7 +214,7 @@ const PrepopulatedEngine* const engines_CZ[] = {
@@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
// Ensure that all effective connection types returned by Network Quality
// Estimator (NQE) are also exposed via flags.
static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
@@ -2596,6 +2601,9 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2633,6 +2638,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kPassiveDocumentEventListenersName,
flag_descriptions::kPassiveDocumentEventListenersDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kPassiveDocumentEventListeners)},
@@ -13,7 +13,7 @@ Disable it by default on Android as it is everywhere else
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1633,6 +1633,10 @@ const FeatureEntry kFeatureEntries[] = {
@@ -1670,6 +1670,10 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
@@ -16,7 +16,7 @@ Subject: Add flag to disable IPv6 probes
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
@@ -3244,6 +3244,11 @@ const FeatureEntry kFeatureEntries[] = {
@@ -3281,6 +3281,11 @@ const FeatureEntry kFeatureEntries[] = {
kMarkHttpAsFeatureVariations,
"HTTPReallyBadFinal")},
@@ -11,7 +11,7 @@ Subject: Add flag to disable WebGL
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1425,6 +1425,9 @@ const FeatureEntry kFeatureEntries[] = {
@@ -1462,6 +1462,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kAccelerated2dCanvasName,
flag_descriptions::kAccelerated2dCanvasDescription, kOsAll,
SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAccelerated2dCanvas)},
@@ -20,7 +20,7 @@ legacy acceleration events.
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
@@ -1659,6 +1659,12 @@ const FeatureEntry kFeatureEntries[] = {
@@ -1696,6 +1696,12 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-gpu-rasterization", flag_descriptions::kGpuRasterizationName,
flag_descriptions::kGpuRasterizationDescription, kOsAll,
MULTI_VALUE_TYPE(kEnableGpuRasterizationChoices)},
@@ -318,7 +318,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
@@ -223,6 +223,26 @@ public class FeatureUtilities {
@@ -224,6 +224,26 @@ public class FeatureUtilities {
FeatureUtilitiesJni.get().setCustomTabVisible(visible);
}
@@ -345,7 +345,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
/**
* Records whether the activity is in multi-window mode with native-side feature utilities.
* @param isInMultiWindowMode Whether the activity is in Android N multi-window mode.
@@ -852,6 +872,10 @@ public class FeatureUtilities {
@@ -878,6 +898,10 @@ public class FeatureUtilities {
interface Natives {
void setCustomTabVisible(boolean visible);
void setIsInMultiWindowMode(boolean isInMultiWindowMode);
@@ -11072,7 +11072,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
const FeatureEntry::Choice kPassiveListenersChoices[] = {
{flags_ui::kGenericExperimentChoiceDefault, "", ""},
@@ -2208,7 +2208,7 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2245,7 +2245,7 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kSyncSandboxDescription, kOsAll,
SINGLE_VALUE_TYPE_AND_VALUE(
switches::kSyncServiceURL,
@@ -11081,7 +11081,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
#if !defined(OS_ANDROID)
{"load-media-router-component-extension",
flag_descriptions::kLoadMediaRouterComponentExtensionName,
@@ -2455,7 +2455,7 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2492,7 +2492,7 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kSetMarketUrlForTestingName,
flag_descriptions::kSetMarketUrlForTestingDescription, kOsAndroid,
SINGLE_VALUE_TYPE_AND_VALUE(switches::kMarketUrlForTesting,
@@ -90489,7 +90489,7 @@ diff --git a/third_party/sqlite/amalgamation/shell/shell.c b/third_party/sqlite/
diff --git a/third_party/sqlite/amalgamation/sqlite3.c b/third_party/sqlite/amalgamation/sqlite3.c
--- a/third_party/sqlite/amalgamation/sqlite3.c
+++ b/third_party/sqlite/amalgamation/sqlite3.c
@@ -21549,7 +21549,7 @@ static void clearYMD_HMS_TZ(DateTime *p){
@@ -21556,7 +21556,7 @@ static void clearYMD_HMS_TZ(DateTime *p){
** localtime_r() available under most POSIX platforms, except that the
** order of the parameters is reversed.
**
@@ -90498,7 +90498,7 @@ diff --git a/third_party/sqlite/amalgamation/sqlite3.c b/third_party/sqlite/amal
**
** If the user has not indicated to use localtime_r() or localtime_s()
** already, check for an MSVC build environment that provides
@@ -33798,7 +33798,7 @@ struct unixFileId {
@@ -33807,7 +33807,7 @@ struct unixFileId {
#else
/* We are told that some versions of Android contain a bug that
** sizes ino_t at only 32-bits instead of 64-bits. (See
@@ -90507,7 +90507,7 @@ diff --git a/third_party/sqlite/amalgamation/sqlite3.c b/third_party/sqlite/amal
** To work around this, always allocate 64-bits for the inode number.
** On small machines that only have 32-bit inodes, this wastes 4 bytes,
** but that should not be a big deal. */
@@ -52851,7 +52851,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
@@ -52860,7 +52860,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
/* Make sure the new file size is written into the inode right away.
** Otherwise the journal might resurrect following a power loss and
** cause the last transaction to roll back. See
@@ -90516,7 +90516,7 @@ diff --git a/third_party/sqlite/amalgamation/sqlite3.c b/third_party/sqlite/amal
*/
rc = sqlite3OsSync(pPager->jfd, pPager->syncFlags);
}
@@ -156311,7 +156311,7 @@ SQLITE_API int sqlite3_config(int op, ...){
@@ -156341,7 +156341,7 @@ SQLITE_API int sqlite3_config(int op, ...){
*/
case SQLITE_CONFIG_LOG: {
/* MSVC is picky about pulling func ptrs from va lists.
@@ -90525,7 +90525,7 @@ diff --git a/third_party/sqlite/amalgamation/sqlite3.c b/third_party/sqlite/amal
** sqlite3GlobalConfig.xLog = va_arg(ap, void(*)(void*,int,const char*));
*/
typedef void(*LOGFUNC_t)(void*,int,const char*);
@@ -159639,7 +159639,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
@@ -159669,7 +159669,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
*/
case SQLITE_TESTCTRL_FAULT_INSTALL: {
/* MSVC is picky about pulling func ptrs from va lists.
@@ -112679,7 +112679,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
</summary>
<int value="0" label="SUCCESS"/>
<int value="1" label="SERVICE_MISSING"/>
@@ -30699,7 +30699,7 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
@@ -30700,7 +30700,7 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
<enum name="HotwordTriggerSource">
<int value="0" label="Launcher (except when always-on is enabled)"/>
@@ -112688,7 +112688,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
<int value="2" label="Always-On"/>
<int value="3" label="Training Mode"/>
</enum>
@@ -31367,7 +31367,7 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
@@ -31368,7 +31368,7 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
<enum name="IE7LookupResultStatus">
<obsolete>
Deprecated as of 07/2018. The corresponding metric was deleted in
@@ -112697,7 +112697,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
</obsolete>
<int value="0" label="No stored passwords from IE7 found."/>
<int value="1" label="Some stored passwords from IE7 found."/>
@@ -32353,41 +32353,41 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
@@ -32354,41 +32354,41 @@ Called by update_gpu_driver_bug_workaround_entries.py.-->
<enum name="InsecureContentType">
<int value="0" label="Displayed"/>
@@ -112769,7 +112769,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
</enum>
<enum name="InsecureDownloadExtensions">
@@ -48156,7 +48156,7 @@ Called by update_net_trust_anchors.py.-->
@@ -48157,7 +48157,7 @@ Called by update_net_trust_anchors.py.-->
<int value="9" label="Auto-signin toast timeout"/>
<int value="10" label="Auto-signin toast clicked (obsolete)"/>
<int value="11" label="Clicked 'Google Smart Lock' (obsolete)"/>
@@ -112778,7 +112778,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
</enum>
<enum name="PasswordProtectionInterstitialStringType">
@@ -48193,7 +48193,7 @@ Called by update_net_trust_anchors.py.-->
@@ -48194,7 +48194,7 @@ Called by update_net_trust_anchors.py.-->
<enum name="PasswordProtectionSyncAccountType">
<int value="0" label="Not signed in"/>
@@ -112787,7 +112787,7 @@ diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums
<int value="2" label="G Suite account"/>
</enum>
@@ -52070,10 +52070,10 @@ Called by update_net_trust_anchors.py.-->
@@ -52071,10 +52071,10 @@ Called by update_net_trust_anchors.py.-->
</obsolete>
<int value="0" label="Other"/>
<int value="1" label="None"/>
@@ -37,7 +37,7 @@ Download filters by checking Last-Modified header first
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java
@@ -277,6 +277,14 @@ public class FeatureUtilities {
@@ -278,6 +278,14 @@ public class FeatureUtilities {
cacheServiceManagerForBackgroundPrefetch();
}
@@ -52,7 +52,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/util/FeatureUti
/**
* @return True if tab model merging for Android N+ is enabled.
*/
@@ -845,5 +853,7 @@ public class FeatureUtilities {
@@ -871,5 +879,7 @@ public class FeatureUtilities {
void setCustomTabVisible(boolean visible);
void setIsInMultiWindowMode(boolean isInMultiWindowMode);
boolean isNetworkServiceWarmUpEnabled();
@@ -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
@@ -442,7 +442,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,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
@@ -352,7 +352,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 kClickToCallOpenDialerDirectly{
"ClickToCallOpenDialerDirectly", base::FEATURE_ENABLED_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
@@ -774,7 +774,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
@@ -76,7 +76,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
#include "third_party/leveldatabase/leveldb_features.h"
#include "ui/accessibility/accessibility_features.h"
#include "ui/accessibility/accessibility_switches.h"
@@ -1466,12 +1467,24 @@ const FeatureEntry kFeatureEntries[] = {
@@ -1503,12 +1504,24 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName,
flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll,
SINGLE_VALUE_TYPE(switches::kEnableWebRtcSrtpAesGcm)},
@@ -4,27 +4,27 @@ Subject: Reduce HTTP headers in DoH requests to bare minimum
Serve DoH requests with maximum priority.
---
net/base/load_flags_list.h | 6 ++++++
net/base/load_flags_list.h | 9 +++++++++
net/dns/dns_transaction.cc | 3 ++-
net/url_request/url_request_http_job.cc | 16 +++++++++++-----
3 files changed, 19 insertions(+), 6 deletions(-)
3 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
--- a/net/base/load_flags_list.h
+++ b/net/base/load_flags_list.h
@@ -106,6 +106,12 @@ LOAD_FLAG(SUPPORT_ASYNC_REVALIDATION, 1 << 16)
// the LOAD_CAN_USE_RESTRICTED_PREFETCH load flag.
LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 17)
@@ -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 << 18)
+
// This flag must be set on requests that are allowed to reuse cache entries
// that are marked as RESTRICTED_PREFETCH. Requests without this flag cannot
// reuse restricted prefetch responses in the cache. Restricted response reuse
+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
@@ -45,7 +45,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggest
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
@@ -1972,6 +1972,9 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2009,6 +2009,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kAndroidAutofillAccessibilityName,
flag_descriptions::kAndroidAutofillAccessibilityDescription, kOsAndroid,
FEATURE_VALUE_TYPE(features::kAndroidAutofillAccessibility)},
@@ -6,11 +6,11 @@ This reverts commit 60c3d4531b180b911767fb3ea7c3553d7f408c25.
Automatically disable hardware acceleration for Android Q on arm64
---
chrome/browser/android/chrome_startup_flags.cc | 9 +++++++++
chrome/browser/android/chrome_startup_flags.cc | 2 ++
gpu/config/gpu_finch_features.cc | 2 +-
gpu/ipc/service/gpu_init.cc | 8 ++------
media/base/media_switches.cc | 2 +-
4 files changed, 13 insertions(+), 8 deletions(-)
4 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/chrome/browser/android/chrome_startup_flags.cc b/chrome/browser/android/chrome_startup_flags.cc
--- a/chrome/browser/android/chrome_startup_flags.cc
@@ -31,20 +31,6 @@ diff --git a/chrome/browser/android/chrome_startup_flags.cc b/chrome/browser/and
#include "media/base/media_switches.h"
namespace {
@@ -40,6 +42,13 @@ void SetChromeSpecificCommandLineFlags() {
if (base::SysInfo::IsLowEndDevice())
SetCommandLineSwitchASCII(switches::kDisableSyncTypes, "Favicon Images");
+#ifdef ARCH_CPU_ARM64
+ // workaround for Android 10 "Q" arm64 crash
+ if (base::android::BuildInfo::GetInstance()->sdk_int() > base::android::SDK_VERSION_P) {
+ SetCommandLineSwitchASCII(switches::kDisableAcceleratedVideoDecode, "true");
+ }
+#endif
+
// Enable DOM Distiller backend.
SetCommandLineSwitch(switches::kEnableDomDistiller);
}
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -13,7 +13,7 @@ This reverts commit 4e598f38a0e6dd3dbede009c6a99b2a520a94e1f.
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
@@ -1997,6 +1997,10 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2034,6 +2034,10 @@ const FeatureEntry kFeatureEntries[] = {
SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
#endif // OS_MACOSX
#if defined(OS_ANDROID)
@@ -0,0 +1,49 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Thu, 9 Jan 2020 19:59:08 +0100
Subject: Use a minimum DoH timeout of 400ms
---
net/dns/dns_session.cc | 7 ++++++-
net/dns/dns_session.h | 1 +
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/net/dns/dns_session.cc b/net/dns/dns_session.cc
--- a/net/dns/dns_session.cc
+++ b/net/dns/dns_session.cc
@@ -118,6 +118,8 @@ DnsSession::DnsSession(const DnsConfig& config,
socket_pool_->Initialize(&config_.nameservers, net_log);
UMA_HISTOGRAM_CUSTOM_COUNTS("AsyncDNS.ServerCount",
config_.nameservers.size(), 1, 10, 11);
+ // minimum timeout for all DoH requests
+ min_doh_timeout_ = base::TimeDelta::FromMilliseconds(400);
UpdateTimeouts(NetworkChangeNotifier::GetConnectionType());
InitializeServerStats();
}
@@ -325,9 +327,12 @@ base::TimeDelta DnsSession::NextTimeout(unsigned server_index, int attempt) {
}
base::TimeDelta DnsSession::NextDohTimeout(unsigned doh_server_index) {
- return NextTimeoutHelper(
+ base::TimeDelta timeout = NextTimeoutHelper(
GetServerStats(doh_server_index, true /* is _doh_server */),
0 /* num_backoffs */);
+ if (timeout < min_doh_timeout_)
+ return min_doh_timeout_;
+ return timeout;
}
base::TimeDelta DnsSession::NextTimeoutHelper(ServerStats* server_stats,
diff --git a/net/dns/dns_session.h b/net/dns/dns_session.h
--- a/net/dns/dns_session.h
+++ b/net/dns/dns_session.h
@@ -167,6 +167,7 @@ class NET_EXPORT_PRIVATE DnsSession : public base::RefCounted<DnsSession> {
base::TimeDelta initial_timeout_;
base::TimeDelta max_timeout_;
+ base::TimeDelta min_doh_timeout_;
// Track runtime statistics of each insecure DNS server.
std::vector<std::unique_ptr<ServerStats>> server_stats_;
--
2.17.1
+1 -1
View File
@@ -18,7 +18,7 @@ diff --git a/components/version_info/version_info.cc b/components/version_info/v
std::string GetProductNameAndVersionForUserAgent() {
- return "Chrome/" + GetVersionNumber();
+ // latest stable version
+ return "Chrome/79.0.3945.93";
+ return "Chrome/79.0.3945.136";
}
std::string GetProductName() {