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
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
42 changed files with 261084 additions and 962 deletions
+21
View File
@@ -1,3 +1,24 @@
# 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)
+53 -14
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
* native adblock engine
* customizable adblock filters via user-provided URL
* remove click-tracking and AMP from search results
* DNS-over-HTTPS support via Google, Cloudflare, Quad9 and AdGuard servers
* [proxy configuration page](https://github.com/bromite/bromite/wiki/ProxyConfiguration) with PAC and custom proxy lists support
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines
* chrome flags to disable custom intents and clear session on exit
* DNS-over-HTTPS support with any valid IETF DoH endpoint
* always-incognito mode
* completely removed safe browsing and other privacy-unfriendly features
* anti-fingerprinting mitigations for canvas, audio, client rects, webGL and sensor APIs
* 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 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).
+7 -6
View File
@@ -1,7 +1,5 @@
Disable-third-party-cookies-by-default.patch
Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
Disable-unified-consent-on-Android.patch
Unified-consent-miscellanous-backport-fixes.patch
Restore-classic-new-tab-page.patch
Always-use-new-tab-page-for-default-home-page.patch
Always-allow-partner-customisation.patch
@@ -14,7 +12,6 @@ Remove-EV-certificates.patch
promo-disable-Google-promotion-fetching.patch
Disable-omission-of-URL-elements-in-Omnibox.patch
Modify-default-preferences.patch
Disable-contextual-search-by-default.patch
Do-not-store-passwords-by-default.patch
Disable-NTP-remote-suggestions-by-default.patch
Disable-references-to-fonts.googleapis.com.patch
@@ -60,8 +57,6 @@ Add-flag-to-control-video-playback-resume-feature.patch
Open-YouTube-links-in-Bromite.patch
Add-exit-menu-item.patch
Remove-help-menu-item.patch
Add-menu-option-to-toggle-global-Javascript-preference.patch
Add-menu-option-to-toggle-ad-blocker.patch
User-Agent-anonymize.patch
AudioBuffer-AnalyserNode-fingerprinting-mitigations-via-IDL.patch
Multiple-fingerprinting-mitigations-for-canvas-text-and-client-rectangles.patch
@@ -143,4 +138,10 @@ Use-dummy-DFM-installer.patch
Disable-password-reuse-detection-on-android.patch
Allow-building-without-feed-support.patch
Disable-addresses-autofill-by-default.patch
Log-DoH-timeout.patch
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
-2
View File
@@ -1,6 +1,4 @@
Revert-Remove-pre-unified-consent-code-in-sync-and-privacy-directory.patch
Disable-unified-consent-on-Android.patch
Unified-consent-miscellanous-backport-fixes.patch
AV1-codec-support.patch
Switch-to-fstack-protector-strong.patch
Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch
@@ -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[] = {
@@ -4,16 +4,18 @@ 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 | 73 +++++++++++++++++++
.../chrome/browser/ChromeActivity.java | 5 ++
.../browser/appmenu/AppMenuHandlerImpl.java | 10 +++
.../chrome/browser/ChromeActivity.java | 4 +
.../chrome/browser/ChromeTabbedActivity.java | 6 +-
.../browser/appmenu/AppMenuHandlerImpl.java | 9 +++
.../ChromeContextMenuPopulator.java | 9 ++-
.../browser/tabmodel/ChromeTabCreator.java | 20 ++++-
.../java/strings/android_chrome_strings.grd | 8 ++
8 files changed, 129 insertions(+), 2 deletions(-)
9 files changed, 131 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
@@ -72,7 +74,7 @@ new file mode 100644
+ */
+public class AlwaysIncognitoLinkInterceptor extends EmptyTabObserver {
+
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
+ public static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
+
+ private final SharedPreferences alwaysIncognitoContainer;
+ private final Map<Tab, String> lastUrls;
@@ -123,51 +125,67 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -228,6 +228,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
private static final int RECORD_MULTI_WINDOW_SCREEN_WIDTH_DELAY_MS = 5000;
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
+
/**
* Timeout in ms for reading PartnerBrowserCustomizations provider.
*/
@@ -1706,6 +1708,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -55,6 +55,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.AppMenuBlocker;
@@ -1706,6 +1707,9 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
+ 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
@@ -49,6 +49,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;
@@ -1652,8 +1653,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/AppMenuHandlerImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandlerImpl.java
@@ -20,6 +20,7 @@ import android.widget.PopupMenu;
@@ -20,8 +20,10 @@ import android.widget.PopupMenu;
import org.chromium.base.Callback;
import org.chromium.base.VisibleForTesting;
+import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
@@ -58,6 +59,8 @@ class AppMenuHandlerImpl
*/
private Integer mHighlightMenuId;
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
+
/**
* Whether the highlighted item should use a circle highlight or not.
*/
@@ -208,6 +211,13 @@ class AppMenuHandlerImpl
import org.chromium.chrome.browser.lifecycle.ConfigurationChangedObserver;
import org.chromium.chrome.browser.lifecycle.StartStopWithNativeObserver;
@@ -208,6 +210,13 @@ class AppMenuHandlerImpl
if (mDelegate.shouldShowHeader(appRect.height())) {
headerResourceId = mDelegate.getHeaderResourceId();
}
+
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
+ if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)) {
+ final MenuItem newTabOption = mAppMenu.getMenu().findItem(R.id.new_tab_menu_id);
+ if (newTabOption != null)
+ newTabOption.setVisible(false);
@@ -179,28 +197,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -16,6 +16,7 @@ import androidx.annotation.IntDef;
@@ -16,7 +16,9 @@ import androidx.annotation.IntDef;
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;
@@ -47,6 +48,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
private static final String TAG = "CCMenuPopulator";
private final ContextMenuItemDelegate mDelegate;
private final @ContextMenuMode int mMode;
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
private boolean mEnableLensWithSearchByImageText;
/**
import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item;
@@ -301,7 +303,12 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
if (FirstRunStatus.getFirstRunFlowComplete() && mMode == ContextMenuMode.NORMAL
&& !isEmptyUrl(params.getUrl())
&& UrlUtilities.isAcceptedScheme(params.getUrl())) {
- linkTab.add(new ChromeContextMenuItem(Item.OPEN_IN_NEW_TAB));
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)
+ if (ContextUtils.getAppSharedPreferences().getBoolean(AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false)
+ && !mDelegate.isIncognito()) {
+ // disallow open in new tab
+ } else
@@ -35,9 +35,9 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
+ android:title="@string/allow_custom_tab_intents_title"
+ android:summary="@string/allow_custom_tab_intents_summary"
+ android:defaultValue="false" />
<android.support.v7.preference.Preference
android:key="contextual_search"
android:title="@string/contextual_search_title"
<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
@@ -61,7 +61,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -42,6 +42,8 @@ public class PrivacyPreferences
@@ -41,6 +41,8 @@ public class PrivacyPreferences
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -70,7 +70,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
PreferenceUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
@@ -76,6 +78,10 @@ public class PrivacyPreferences
@@ -75,6 +77,10 @@ public class PrivacyPreferences
PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
@@ -78,10 +78,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
+ sharedPreferencesEditor.apply();
} else if (PREF_CONTEXTUAL_SEARCH.equals(key)) {
PrefServiceBridge.getInstance().setContextualSearchPreference(((boolean) newValue) ? "true" : "false");
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
@@ -114,6 +120,11 @@ public class PrivacyPreferences
PrefServiceBridge.getInstance().setBoolean(
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
@@ -111,6 +117,11 @@ public class PrivacyPreferences
prefServiceBridge.getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
}
@@ -96,7 +96,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3987,6 +3987,13 @@ The site does NOT gain access to the camera. The camera images are only visible
@@ -3965,6 +3965,13 @@ The site does NOT gain access to the camera. The camera images are only visible
'Installing Extra ICU for Chrome…').">
Extra ICU
</message>
@@ -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)},
@@ -1,193 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 14 Sep 2019 10:19:07 +0200
Subject: Add menu option to toggle ad blocker
---
.../java/res/menu/custom_tabs_menu.xml | 12 ++++++
chrome/android/java/res/menu/main_menu.xml | 11 +++++
.../chrome/browser/ChromeActivity.java | 8 ++++
.../chrome/browser/ChromeTabbedActivity.java | 8 ++++
.../AppMenuPropertiesDelegateImpl.java | 40 +++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
.../java/strings/android_chrome_strings.grd | 11 +++++
7 files changed, 92 insertions(+)
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -75,6 +75,18 @@
android:checkable="true" />
</menu>
</item>
+ <item android:id="@+id/enable_adblock_row_menu_id"
+ android:title="@null"
+ android:orderInCategory="2">
+ <menu>
+ <item android:id="@+id/enable_adblock_id"
+ android:title="@string/menu_enable_adblock" />
+ <item android:id="@+id/enable_adblock_check_id"
+ android:title="@null"
+ android:checkable="true" />
+ </menu>
+ </item>
+
<!-- Title is intentionally left blank in xml and will be set in java. -->
<item android:id="@+id/open_in_browser_id"
android:title=""
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -84,6 +84,17 @@
</menu>
</item>
+ <item android:id="@+id/enable_adblock_row_menu_id"
+ android:title="@null">
+ <menu>
+ <item android:id="@+id/enable_adblock_id"
+ android:title="@string/menu_enable_adblock" />
+ <item android:id="@+id/enable_adblock_check_id"
+ android:title="@null"
+ android:checkable="true" />
+ </menu>
+ </item>
+
<item android:id="@+id/reader_mode_prefs_id"
android:title="@string/menu_reader_mode_prefs"
android:icon="@drawable/reader_mode_prefs_icon" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2226,6 +2226,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.reader_mode_prefs_id) {
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
} else {
return false;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1767,6 +1767,14 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
reportNewTabShortcutUsed(true);
getTabCreator(true).launchNTP();
}
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
} else if (id == R.id.all_bookmarks_menu_id) {
if (currentTab != null) {
getCompositorViewHolder().hideKeyboard(() -> {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -27,6 +27,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.ContentSettingsType;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.banners.AppBannerManager;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
@@ -235,6 +236,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
// Prepare translate menu button.
prepareTranslateMenuItem(menu, currentTab);
+ updateEnableAdBlockMenuItem(menu, currentTab);
+
// Hide 'Add to homescreen' for the following:
// * chrome:// pages - Android doesn't know how to direct those URLs.
// * incognito pages - To avoid problems where users create shortcuts in incognito
@@ -310,6 +313,43 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
PrefServiceBridge.getInstance().isIncognitoModeManaged());
}
+ /**
+ * Updates the ad blocker item's state.
+ *
+ * @param menu {@link Menu} to enable ad blocker
+ * @param currentTab Current tab being displayed.
+ */
+ protected void updateEnableAdBlockMenuItem(
+ Menu menu, Tab currentTab) {
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_adblock_row_menu_id);
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_adblock_id);
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_adblock_check_id);
+
+
+ // Hide Block ads on all chrome:// pages except for the NTP.
+ String url = currentTab.getUrl();
+ boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
+ || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
+ // Also hide enable javascsript on Reader Mode.
+ boolean isDistilledPage = DomDistillerUrlUtils.isDistilledPage(url);
+
+ boolean itemVisible = (!isChromeScheme || currentTab.isNativePage()) && !isDistilledPage;
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+
+ // Mark the checkbox if ad blocker is globally activated.
+ enableMenuCheck.setChecked(adBlockEnabled);
+
+ // This title doesn't seem to be displayed by Android, but it is used to set up
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
+ enableMenuLabel.setTitleCondensed(adBlockEnabled
+ ? mContext.getString(R.string.menu_enable_adblock_on)
+ : mContext.getString(R.string.menu_enable_adblock_off));
+ }
+
+
/**
* Sets the visibility and labels of the "Add to Home screen" and "Open WebAPK" menu items.
*/
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -205,6 +205,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
}
+ updateEnableAdBlockMenuItem(menu, currentTab);
+
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
updateEnableJavascriptMenuItem(menu, currentTab);
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2865,6 +2865,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
Turn on Request desktop site
</message>
+
+ <message name="IDS_MENU_ENABLE_ADBLOCK" desc="Menu item in Chrome's overflow/options menu. If this menu item is unselected, Bromite will disable ad blocker engine for the page. [CHAR-LIMIT=27]">
+ Block ads
+ </message>
+ <message name="IDS_MENU_ENABLE_ADBLOCK_ON" desc="Accessibility description for when Block ads is selected.">
+ Turn off ad blocking
+ </message>
+ <message name="IDS_MENU_ENABLE_ADBLOCK_OFF" desc="Accessibility description for when Block ads is unselected.">
+ Turn on ad blocking
+ </message>
+
<message name="IDS_MENU_READER_MODE_PREFS" desc="Menu item to show reader mode preferences pane, which allows users to change the appearance (font size, theme, etc.) of the page. [CHAR-LIMIT=27]">
Appearance
</message>
--
2.17.1
@@ -1,200 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 18 Oct 2017 21:26:53 +0200
Subject: Add menu option to toggle global Javascript preference
---
.../java/res/menu/custom_tabs_menu.xml | 12 ++++++
chrome/android/java/res/menu/main_menu.xml | 13 +++++++
.../chrome/browser/ChromeActivity.java | 8 ++++
.../chrome/browser/ChromeTabbedActivity.java | 8 ++++
.../AppMenuPropertiesDelegateImpl.java | 39 +++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
.../java/strings/android_chrome_strings.grd | 11 ++++++
7 files changed, 92 insertions(+)
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -49,6 +49,7 @@
<item android:id="@+id/open_webapk_id"
android:title="@string/menu_open_webapk"
android:orderInCategory="2" />
+
<item android:id="@+id/request_desktop_site_row_menu_id"
android:title="@null"
android:orderInCategory="2">
@@ -63,6 +64,17 @@
<item android:id="@+id/translate_id"
android:title="@string/menu_translate"
android:orderInCategory="2"/>
+ <item android:id="@+id/enable_javascript_row_menu_id"
+ android:title="@null"
+ android:orderInCategory="2">
+ <menu>
+ <item android:id="@+id/enable_javascript_id"
+ android:title="@string/menu_enable_javascript" />
+ <item android:id="@+id/enable_javascript_check_id"
+ android:title="@null"
+ android:checkable="true" />
+ </menu>
+ </item>
<!-- Title is intentionally left blank in xml and will be set in java. -->
<item android:id="@+id/open_in_browser_id"
android:title=""
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -61,6 +61,7 @@
android:title="@string/menu_add_to_homescreen" />
<item android:id="@+id/open_webapk_id"
android:title="@string/menu_open_webapk" />
+
<item android:id="@+id/request_desktop_site_row_menu_id"
android:title="@null">
<menu>
@@ -71,6 +72,18 @@
android:checkable="true" />
</menu>
</item>
+
+ <item android:id="@+id/enable_javascript_row_menu_id"
+ android:title="@null">
+ <menu>
+ <item android:id="@+id/enable_javascript_id"
+ android:title="@string/menu_enable_javascript" />
+ <item android:id="@+id/enable_javascript_check_id"
+ android:title="@null"
+ android:checkable="true" />
+ </menu>
+ </item>
+
<item android:id="@+id/reader_mode_prefs_id"
android:title="@string/menu_reader_mode_prefs"
android:icon="@drawable/reader_mode_prefs_icon" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2216,6 +2216,14 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
currentTab.getWebContents().getNavigationController().setUseDesktopUserAgent(
!usingDesktopUserAgent, reloadOnChange);
RecordUserAction.record("MobileMenuRequestDesktopSite");
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.reader_mode_prefs_id) {
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
} else {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1813,6 +1813,14 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
}
RecordUserAction.record("MobileMenuDownloadManager");
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.open_recently_closed_tab) {
TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
if (!currentModel.isIncognito()) currentModel.openMostRecentlyClosedTab();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -252,6 +252,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
+ updateEnableJavascriptMenuItem(menu, currentTab);
+
// Only display reader mode settings menu option if the current page is in reader mode.
menu.findItem(R.id.reader_mode_prefs_id)
.setVisible(DomDistillerUrlUtils.isDistilledPage(currentTab.getUrl()));
@@ -438,6 +440,43 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
}
}
+ /**
+ * Updates the enable JavaScript item's state.
+ *
+ * @param menu {@link Menu} for enable javascript
+ * @param currentTab Current tab being displayed.
+ */
+ protected void updateEnableJavascriptMenuItem(
+ Menu menu, Tab currentTab) {
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_javascript_row_menu_id);
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_javascript_id);
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_javascript_check_id);
+
+ // Hide enable javascript on all chrome:// pages except for the NTP.
+ String url = currentTab.getUrl();
+ boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
+ || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
+ // Also hide enable javascsript on Reader Mode.
+ boolean isDistilledPage = DomDistillerUrlUtils.isDistilledPage(url);
+
+ boolean itemVisible = (!isChromeScheme || currentTab.isNativePage()) && !isDistilledPage;
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+
+ // Mark the checkbox if Javascript is activated on this tab.
+ enableMenuCheck.setChecked(jsEnabled);
+
+ // This title doesn't seem to be displayed by Android, but it is used to set up
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
+ enableMenuLabel.setTitleCondensed(jsEnabled
+ ? mContext.getString(R.string.menu_enable_javascript_on)
+ : mContext.getString(R.string.menu_enable_javascript_off));
+ }
+
+
+
/**
* Updates the request desktop site item's state.
*
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -206,6 +206,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
+ updateEnableJavascriptMenuItem(menu, currentTab);
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
}
}
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2845,6 +2845,17 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR-LIMIT=27]">
Find in page
</message>
+
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT" desc="Menu item in Chrome's overflow/options menu. If this menu item is unselected, Bromite will disable JavaScript support for the page. [CHAR-LIMIT=27]">
+ JavaScript
+ </message>
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT_ON" desc="Accessibility description for when Enable JavaScript is selected.">
+ Turn off JavaScript
+ </message>
+ <message name="IDS_MENU_ENABLE_JAVASCRIPT_OFF" desc="Accessibility description for when Enable JavaScript is unselected.">
+ Turn on JavaScript
+ </message>
+
<message name="IDS_MENU_REQUEST_DESKTOP_SITE" desc="Menu item in Chrome's overflow/options menu. By default, when a user navigates to a web page, Chrome shows the mobile site, that is, the version of the site designed for mobile phones. If this menu item is selected, however, Chrome will try to load the 'desktop' site instead, i.e. the site designed for desktop computers or laptop computers, which have larger screens. [CHAR-LIMIT=24]">
Desktop site
</message>
--
2.17.1
@@ -3,12 +3,12 @@ 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 +++++
.../chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../preferences/privacy/PrivacyPreferences.java | 11 +++++++++++
.../android/java/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 28 insertions(+), 1 deletion(-)
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../preferences/privacy/PrivacyPreferences.java | 12 ++++++++++++
.../android/java/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
@@ -26,10 +26,10 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -38,6 +38,11 @@
android:key="contextual_search"
android:title="@string/contextual_search_title"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ContextualSearchPreferenceFragment" />
@@ -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.preferences.ChromeBaseCheckBoxPreference
+ android:key="close_tabs_on_exit"
+ android:title="@string/close_tabs_on_exit_title"
@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
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
@@ -1173,8 +1173,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
@@ -1174,8 +1174,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo
boolean hadCipherData =
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
@@ -72,15 +72,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
import org.chromium.base.BuildInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
@@ -37,6 +39,7 @@ public class PrivacyPreferences
@@ -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_CONTEXTUAL_SEARCH = "contextual_search";
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";
@@ -87,6 +90,10 @@ public class PrivacyPreferences
@@ -84,6 +87,10 @@ public class PrivacyPreferences
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
PrefServiceBridge.getInstance().setBoolean(
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
@@ -91,10 +91,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
}
return true;
@@ -137,6 +144,10 @@ public class PrivacyPreferences
contextualPref.setSummary(isContextualSearchEnabled ? textOn : textOff);
@@ -127,6 +134,11 @@ public class PrivacyPreferences
doNotTrackPref.setSummary(
prefServiceBridge.isDoNotTrackEnabled() ? R.string.text_on : R.string.text_off);
}
+
+ ChromeBaseCheckBoxPreference closeTabsOnExitPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
+ closeTabsOnExitPref.setOnPreferenceChangeListener(this);
@@ -105,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3699,6 +3699,12 @@ The site does NOT gain access to the camera. The camera images are only visible
@@ -3677,6 +3677,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>
@@ -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);
@@ -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/preferences/website/Website.java | 20 ++++++++
2 files changed, 42 insertions(+), 24 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleWebsitePreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/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 = PrefServiceBridge.getInstance().isCategoryEnabled(
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES)
+ ? ContentSettingValues.ALLOW
+ : ContentSettingValues.BLOCK;
+ else if (i == ContentSettingException.Type.JAVASCRIPT)
+ permission = PrefServiceBridge.getInstance().isCategoryEnabled(
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT)
+ ? ContentSettingValues.ALLOW
+ : ContentSettingValues.BLOCK;
+ }
+ setUpListPreference(preference, permission);
}
return;
}
@@ -626,17 +644,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() {
@@ -711,6 +720,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");
@@ -782,22 +792,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/preferences/website/Website.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/Website.java
@@ -166,6 +166,26 @@ public class Website implements Serializable {
new ContentSettingException(ContentSettingsType.CONTENT_SETTINGS_TYPE_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.CONTENT_SETTINGS_TYPE_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.CONTENT_SETTINGS_TYPE_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
File diff suppressed because one or more lines are too long
@@ -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
@@ -1,37 +0,0 @@
From: Daniel Micay <danielmicay@gmail.com>
Date: Wed, 23 Nov 2016 09:26:51 -0500
Subject: Disable contextual search by default
Disable contextual search in preference by default
---
.../chromium/chrome/browser/preferences/PrefServiceBridge.java | 2 +-
chrome/browser/profiles/profile.cc | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -449,7 +449,7 @@ public class PrefServiceBridge {
* @return Whether the Contextual Search feature was disabled by the user explicitly.
*/
public boolean isContextualSearchDisabled() {
- return getContextualSearchPreference().equals(CONTEXTUAL_SEARCH_DISABLED);
+ return !getContextualSearchPreference().equals(CONTEXTUAL_SEARCH_ENABLED);
}
/**
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -154,7 +154,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
#if defined(OS_ANDROID)
registry->RegisterStringPref(
prefs::kContextualSearchEnabled,
- std::string(),
+ "false",
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
#endif // defined(OS_ANDROID)
registry->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
--
2.17.1
@@ -40,7 +40,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browse
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) {
@@ -226,7 +226,7 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
prefs::kMediaRouterFirstRunFlowAcknowledged,
false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+21 -32
View File
@@ -8,7 +8,7 @@ Contains Android-specific fixes to remove Safe Browsing
chrome/android/chrome_java_sources.gni | 1 -
.../java/res/xml/privacy_preferences.xml | 21 -----
.../res/xml/sync_and_services_preferences.xml | 20 -----
.../privacy/PrivacyPreferences.java | 81 -------------------
.../privacy/PrivacyPreferences.java | 77 -------------------
.../browser/webshare/ShareServiceImpl.java | 6 --
.../java/strings/android_chrome_strings.grd | 33 --------
chrome/browser/BUILD.gn | 2 -
@@ -16,11 +16,11 @@ Contains Android-specific fixes to remove Safe Browsing
chrome/browser/browser_process_impl.cc | 36 ---------
chrome/browser/browser_process_impl.h | 6 --
.../chrome_browsing_data_remover_delegate.cc | 41 ----------
.../browser/chrome_content_browser_client.cc | 60 +++-----------
.../browser/chrome_content_browser_client.cc | 60 ++++-----------
.../file_type_policies_component_installer.cc | 16 +---
.../chrome_download_manager_delegate.cc | 31 +++----
.../chrome_download_manager_delegate.cc | 31 +++-----
.../chrome_download_manager_delegate.h | 8 +-
.../browser/download/download_item_model.cc | 13 ++-
.../browser/download/download_item_model.cc | 13 +++-
chrome/browser/download/download_item_model.h | 4 +
chrome/browser/download/download_prefs.cc | 17 ++--
.../download/download_target_determiner.cc | 46 +++++------
@@ -29,9 +29,9 @@ Contains Android-specific fixes to remove Safe Browsing
.../browser/download/download_target_info.h | 4 +
chrome/browser/download/download_ui_model.cc | 4 +
chrome/browser/download/download_ui_model.h | 4 +
.../extensions/api/downloads/downloads_api.cc | 39 +--------
.../extensions/api/downloads/downloads_api.cc | 39 +---------
.../extensions/api/downloads/downloads_api.h | 10 ---
.../webstore_private/webstore_private_api.cc | 44 +---------
.../webstore_private/webstore_private_api.cc | 44 +----------
.../extensions/blacklist_state_fetcher.cc | 34 +-------
.../extensions/blacklist_state_fetcher.h | 3 -
.../metrics/chrome_metrics_service_client.cc | 3 -
@@ -47,15 +47,15 @@ Contains Android-specific fixes to remove Safe Browsing
.../chrome_subresource_filter_client.cc | 10 ---
chrome/browser/ui/BUILD.gn | 1 -
chrome/browser/ui/tab_helpers.cc | 8 --
.../ui/webui/interstitials/interstitial_ui.cc | 13 +--
.../ui/webui/interstitials/interstitial_ui.cc | 13 +---
chrome/common/safe_browsing/BUILD.gn | 15 ----
.../chrome_content_renderer_client.cc | 1 -
components/safe_browsing/features.cc | 2 +-
.../unified_consent_service.cc | 2 +-
.../native_file_system_file_writer_impl.cc | 48 +----------
.../native_file_system_file_writer_impl.cc | 48 +-----------
.../native_file_system_file_writer_impl.h | 15 +---
.../native_file_system_permission_context.h | 7 --
50 files changed, 127 insertions(+), 637 deletions(-)
50 files changed, 127 insertions(+), 633 deletions(-)
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
@@ -148,15 +148,7 @@ diff --git a/chrome/android/java/res/xml/sync_and_services_preferences.xml b/chr
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -16,7 +16,6 @@ import android.view.MenuItem;
import org.chromium.base.BuildInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
-import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
@@ -35,11 +34,7 @@ import org.chromium.ui.text.SpanApplier;
@@ -34,11 +34,7 @@ import org.chromium.ui.text.SpanApplier;
*/
public class PrivacyPreferences
extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
@@ -166,9 +158,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
- "safe_browsing_scout_reporting";
- private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
@@ -48,7 +43,6 @@ public class PrivacyPreferences
private static final String PREF_DO_NOT_TRACK = "do_not_track";
@@ -46,7 +42,6 @@ public class PrivacyPreferences
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";
@@ -176,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -74,32 +68,11 @@ public class PrivacyPreferences
@@ -72,28 +67,11 @@ public class PrivacyPreferences
getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
@@ -190,10 +182,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
searchSuggestionsPref.setOnPreferenceChangeListener(this);
searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- if (!ContextualSearchFieldTrial.isEnabled()) {
- getPreferenceScreen().removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
- }
-
- // Listen to changes to the Extended Reporting pref.
- ChromeBaseCheckBoxPreference scoutReportingPref =
- (ChromeBaseCheckBoxPreference) findPreference(
@@ -209,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
updateSummaries();
}
@@ -108,15 +81,8 @@ public class PrivacyPreferences
@@ -102,15 +80,8 @@ public class PrivacyPreferences
String key = preference.getKey();
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
@@ -222,10 +210,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
- } else if (PREF_NAVIGATION_ERROR.equals(key)) {
- PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
} else if (PREF_CONTEXTUAL_SEARCH.equals(key)) {
PrefServiceBridge.getInstance().setContextualSearchPreference(((boolean) newValue) ? "true" : "false");
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
@@ -142,32 +108,12 @@ public class PrivacyPreferences
PrefServiceBridge.getInstance().setBoolean(
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
@@ -134,32 +105,12 @@ public class PrivacyPreferences
CharSequence textOn = getActivity().getResources().getText(R.string.text_on);
CharSequence textOff = getActivity().getResources().getText(R.string.text_off);
@@ -258,10 +246,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
CheckBoxPreference canMakePaymentPref =
(CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
if (canMakePaymentPref != null) {
@@ -187,42 +133,15 @@ public class PrivacyPreferences
contextualPref.setSummary(isContextualSearchEnabled ? textOn : textOff);
@@ -172,43 +123,15 @@ public class PrivacyPreferences
doNotTrackPref.setSummary(
prefServiceBridge.isDoNotTrackEnabled() ? R.string.text_on : R.string.text_off);
}
-
- Preference usageStatsPref = findPreference(PREF_USAGE_STATS);
- if (usageStatsPref != null) {
- if (BuildInfo.isAtLeastQ() && prefServiceBridge.getBoolean(Pref.USAGE_STATS_ENABLED)) {
@@ -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
@@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -33,12 +33,5 @@
@@ -29,12 +29,5 @@
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
@@ -1,23 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 12 Aug 2019 08:45:43 +0200
Subject: Disable unified consent on Android
---
components/unified_consent/feature.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/unified_consent/feature.cc b/components/unified_consent/feature.cc
--- a/components/unified_consent/feature.cc
+++ b/components/unified_consent/feature.cc
@@ -11,7 +11,7 @@ namespace unified_consent {
// base::Feature definition.
const base::Feature kUnifiedConsent {
"UnifiedConsent",
-#if defined(OS_CHROMEOS)
+#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
base::FEATURE_DISABLED_BY_DEFAULT
#else
base::FEATURE_ENABLED_BY_DEFAULT
--
2.17.1
@@ -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
@@ -180,7 +180,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(
@@ -188,7 +188,7 @@ bool ShouldEnableQuicProxiesForHttpsUrls(
return base::LowerCaseEqualsASCII(
GetVariationParam(quic_trial_params,
"enable_quic_proxies_for_https_urls"),
- "true");
+ "false");
}
bool ShouldRetryWithoutAltSvcOnQuicErrors(
@@ -468,7 +468,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
-27
View File
@@ -1,27 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 15 Dec 2019 17:59:04 +0100
Subject: Log DoH timeout
---
net/dns/dns_session.cc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/dns/dns_session.cc b/net/dns/dns_session.cc
--- a/net/dns/dns_session.cc
+++ b/net/dns/dns_session.cc
@@ -325,9 +325,11 @@ base::TimeDelta DnsSession::NextTimeout(unsigned server_index, int attempt) {
}
base::TimeDelta DnsSession::NextDohTimeout(unsigned doh_server_index) {
- return NextTimeoutHelper(
+ base::TimeDelta delta = NextTimeoutHelper(
GetServerStats(doh_server_index, true /* is _doh_server */),
0 /* num_backoffs */);
+ LOG(INFO) << "DoH: using timeout: " << delta;
+ return delta;
}
base::TimeDelta DnsSession::NextTimeoutHelper(ServerStats* server_stats,
--
2.17.1
@@ -79,8 +79,8 @@ diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profil
- true,
+ false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
#if defined(OS_ANDROID)
registry->RegisterStringPref(
registry->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
registry->RegisterStringPref(prefs::kSessionExitType, std::string());
diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
--- a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
+++ b/chrome/browser/resources/settings/reset_page/reset_profile_dialog.html
@@ -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
@@ -467,7 +467,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.usage_stats.UsageStatsConsentDialog;
import org.chromium.ui.text.NoUnderlineClickableSpan;
@@ -40,9 +39,6 @@ public class PrivacyPreferences
@@ -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";
@@ -477,7 +477,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -65,9 +61,6 @@ public class PrivacyPreferences
@@ -64,9 +60,6 @@ public class PrivacyPreferences
networkPredictionPref.setOnPreferenceChangeListener(this);
networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
@@ -0,0 +1,23 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 4 Jan 2020 14:49:43 +0100
Subject: Restore enable-horizontal-tab-switcher flag
---
chrome/browser/flag-metadata.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -1360,7 +1360,7 @@
{
"name": "enable-horizontal-tab-switcher",
"owners": [ "memex-team@9oo91e.qjz9zk" ],
- "expiry_milestone": 77
+ "expiry_milestone": -1
},
{
"name": "enable-hosted-app-quit-notification",
--
2.17.1
@@ -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)},
@@ -3,11 +3,34 @@ Date: Mon, 14 Oct 2019 20:27:33 +0200
Subject: Revert "[Merge to M78] Enable AImageReader by default."
This reverts commit 60c3d4531b180b911767fb3ea7c3553d7f408c25.
---
gpu/config/gpu_finch_features.cc | 2 +-
media/base/media_switches.cc | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Automatically disable hardware acceleration for Android Q on arm64
---
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, 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
+++ b/chrome/browser/android/chrome_startup_flags.cc
@@ -6,6 +6,7 @@
#include "chrome/browser/android/chrome_startup_flags.h"
+#include "base/android/build_info.h"
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h"
@@ -16,6 +17,7 @@
#include "chrome/common/chrome_switches.h"
#include "components/browser_sync/browser_sync_switches.h"
#include "components/dom_distiller/core/dom_distiller_switches.h"
+#include "content/public/common/content_switches.h"
#include "media/base/media_switches.h"
namespace {
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
@@ -20,6 +43,31 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
// Use android SurfaceControl API for managing display compositor's buffer queue
// and using overlays on Android.
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
--- a/gpu/ipc/service/gpu_init.cc
+++ b/gpu/ipc/service/gpu_init.cc
@@ -493,9 +493,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
#if defined(OS_ANDROID)
// Disable AImageReader if the workaround is enabled.
- if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
- base::android::AndroidImageReader::DisableSupport();
- }
+ base::android::AndroidImageReader::DisableSupport();
#endif
#if defined(USE_OZONE)
gpu_feature_info_.supported_buffer_formats_for_allocation_and_texturing =
@@ -523,9 +521,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* command_line,
default_offscreen_surface_ = gl::init::CreateOffscreenGLSurface(gfx::Size());
// Disable AImageReader if the workaround is enabled.
- if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
- base::android::AndroidImageReader::DisableSupport();
- }
+ base::android::AndroidImageReader::DisableSupport();
UMA_HISTOGRAM_ENUMERATION("GPU.GLImplementation", gl::GetGLImplementation());
}
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
@@ -6,68 +6,71 @@ Subject: Revert "Remove pre unified consent code in sync and privacy
This reverts commit c672a0683e89eba3554e2562156b3c8532136f21.
Restore translations
Restore contextual search preference toggle
Disable unified consent on Android
Unified consent miscellanous backport fixes
---
.../java/res/xml/privacy_preferences.xml | 30 ++++
.../privacy/PrivacyPreferences.java | 159 ++++++++++++++++--
.../preferences/sync/SyncPreferenceUtils.java | 5 +-
.../sync/SyncNotificationController.java | 17 +-
.../java/strings/android_chrome_strings.grd | 15 ++
.../android_chrome_strings_am.xtb | 19 ++-
.../android_chrome_strings_ar.xtb | 19 ++-
.../android_chrome_strings_bg.xtb | 19 ++-
.../android_chrome_strings_bn.xtb | 19 ++-
.../android_chrome_strings_ca.xtb | 19 ++-
.../android_chrome_strings_cs.xtb | 19 ++-
.../android_chrome_strings_da.xtb | 19 ++-
.../android_chrome_strings_de.xtb | 19 ++-
.../android_chrome_strings_el.xtb | 19 ++-
.../android_chrome_strings_en-GB.xtb | 19 ++-
.../android_chrome_strings_es-419.xtb | 19 ++-
.../android_chrome_strings_es.xtb | 19 ++-
.../android_chrome_strings_et.xtb | 19 ++-
.../android_chrome_strings_fa.xtb | 19 ++-
.../android_chrome_strings_fi.xtb | 19 ++-
.../android_chrome_strings_fil.xtb | 19 ++-
.../android_chrome_strings_fr.xtb | 19 ++-
.../android_chrome_strings_gu.xtb | 19 ++-
.../android_chrome_strings_hi.xtb | 19 ++-
.../android_chrome_strings_hr.xtb | 19 ++-
.../android_chrome_strings_hu.xtb | 19 ++-
.../android_chrome_strings_id.xtb | 19 ++-
.../android_chrome_strings_it.xtb | 19 ++-
.../android_chrome_strings_iw.xtb | 19 ++-
.../android_chrome_strings_ja.xtb | 19 ++-
.../android_chrome_strings_kn.xtb | 19 ++-
.../android_chrome_strings_ko.xtb | 19 ++-
.../android_chrome_strings_lt.xtb | 19 ++-
.../android_chrome_strings_lv.xtb | 19 ++-
.../android_chrome_strings_ml.xtb | 19 ++-
.../android_chrome_strings_mr.xtb | 19 ++-
.../android_chrome_strings_ms.xtb | 19 ++-
.../android_chrome_strings_nl.xtb | 19 ++-
.../android_chrome_strings_no.xtb | 19 ++-
.../android_chrome_strings_pl.xtb | 19 ++-
.../android_chrome_strings_pt-BR.xtb | 19 ++-
.../android_chrome_strings_pt-PT.xtb | 19 ++-
.../android_chrome_strings_ro.xtb | 19 ++-
.../android_chrome_strings_ru.xtb | 19 ++-
.../android_chrome_strings_sk.xtb | 19 ++-
.../android_chrome_strings_sl.xtb | 19 ++-
.../android_chrome_strings_sr.xtb | 19 ++-
.../android_chrome_strings_sv.xtb | 19 ++-
.../android_chrome_strings_sw.xtb | 19 ++-
.../android_chrome_strings_ta.xtb | 19 ++-
.../android_chrome_strings_te.xtb | 19 ++-
.../android_chrome_strings_th.xtb | 19 ++-
.../android_chrome_strings_tr.xtb | 19 ++-
.../android_chrome_strings_uk.xtb | 19 ++-
.../android_chrome_strings_vi.xtb | 19 ++-
.../android_chrome_strings_zh-CN.xtb | 19 ++-
.../android_chrome_strings_zh-TW.xtb | 19 ++-
.../java/res/xml/privacy_preferences.xml | 26 +++++
.../privacy/PrivacyPreferences.java | 103 +++++++++++++++---
.../preferences/sync/SyncPreferenceUtils.java | 2 +-
.../sync/SyncNotificationController.java | 11 +-
.../java/strings/android_chrome_strings.grd | 15 +++
.../android_chrome_strings_am.xtb | 19 +++-
.../android_chrome_strings_ar.xtb | 19 +++-
.../android_chrome_strings_bg.xtb | 19 +++-
.../android_chrome_strings_bn.xtb | 19 +++-
.../android_chrome_strings_ca.xtb | 19 +++-
.../android_chrome_strings_cs.xtb | 19 +++-
.../android_chrome_strings_da.xtb | 19 +++-
.../android_chrome_strings_de.xtb | 19 +++-
.../android_chrome_strings_el.xtb | 19 +++-
.../android_chrome_strings_en-GB.xtb | 19 +++-
.../android_chrome_strings_es-419.xtb | 19 +++-
.../android_chrome_strings_es.xtb | 19 +++-
.../android_chrome_strings_et.xtb | 19 +++-
.../android_chrome_strings_fa.xtb | 19 +++-
.../android_chrome_strings_fi.xtb | 19 +++-
.../android_chrome_strings_fil.xtb | 19 +++-
.../android_chrome_strings_fr.xtb | 19 +++-
.../android_chrome_strings_gu.xtb | 19 +++-
.../android_chrome_strings_hi.xtb | 19 +++-
.../android_chrome_strings_hr.xtb | 19 +++-
.../android_chrome_strings_hu.xtb | 19 +++-
.../android_chrome_strings_id.xtb | 19 +++-
.../android_chrome_strings_it.xtb | 19 +++-
.../android_chrome_strings_iw.xtb | 19 +++-
.../android_chrome_strings_ja.xtb | 19 +++-
.../android_chrome_strings_kn.xtb | 19 +++-
.../android_chrome_strings_ko.xtb | 19 +++-
.../android_chrome_strings_lt.xtb | 19 +++-
.../android_chrome_strings_lv.xtb | 19 +++-
.../android_chrome_strings_ml.xtb | 19 +++-
.../android_chrome_strings_mr.xtb | 19 +++-
.../android_chrome_strings_ms.xtb | 19 +++-
.../android_chrome_strings_nl.xtb | 19 +++-
.../android_chrome_strings_no.xtb | 19 +++-
.../android_chrome_strings_pl.xtb | 19 +++-
.../android_chrome_strings_pt-BR.xtb | 19 +++-
.../android_chrome_strings_pt-PT.xtb | 19 +++-
.../android_chrome_strings_ro.xtb | 19 +++-
.../android_chrome_strings_ru.xtb | 19 +++-
.../android_chrome_strings_sk.xtb | 19 +++-
.../android_chrome_strings_sl.xtb | 19 +++-
.../android_chrome_strings_sr.xtb | 19 +++-
.../android_chrome_strings_sv.xtb | 19 +++-
.../android_chrome_strings_sw.xtb | 19 +++-
.../android_chrome_strings_ta.xtb | 19 +++-
.../android_chrome_strings_te.xtb | 19 +++-
.../android_chrome_strings_th.xtb | 19 +++-
.../android_chrome_strings_tr.xtb | 19 +++-
.../android_chrome_strings_uk.xtb | 19 +++-
.../android_chrome_strings_vi.xtb | 19 +++-
.../android_chrome_strings_zh-CN.xtb | 19 +++-
.../android_chrome_strings_zh-TW.xtb | 19 +++-
.../chrome/browser/sync/SyncTestRule.java | 9 +-
.../chromium/chrome/browser/sync/UkmTest.java | 50 +++++-
59 files changed, 1200 insertions(+), 73 deletions(-)
.../chromium/chrome/browser/sync/UkmTest.java | 50 ++++++++-
chrome/browser/profiles/profile.cc | 6 -
.../unified_consent_service_factory.cc | 5 +-
61 files changed, 1130 insertions(+), 85 deletions(-)
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
@@ -97,7 +100,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="can_make_payment"
android:title="@string/can_make_payment_title"
@@ -19,15 +37,27 @@
@@ -19,6 +37,10 @@
android:key="usage_stats_reporting"
android:title="@string/usage_stats_setting_title"
android:persistent="false" />
@@ -108,13 +111,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
<Preference
android:fragment="org.chromium.chrome.browser.preferences.privacy.DoNotTrackPreference"
android:key="do_not_track"
android:title="@string/do_not_track_title" />
+ <android.support.v7.preference.Preference
+ android:key="contextual_search"
+ android:title="@string/contextual_search_title"
+ android:fragment="org.chromium.chrome.browser.preferences.privacy.ContextualSearchPreferenceFragment" />
<Preference
android:key="clear_browsing_data"
@@ -28,6 +50,10 @@
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
@@ -128,23 +125,15 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -9,12 +9,15 @@ import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
+import android.support.v7.preference.PreferenceScreen;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -15,6 +15,7 @@ import android.view.MenuItem;
import org.chromium.base.BuildInfo;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
@@ -33,11 +36,21 @@ import org.chromium.ui.text.SpanApplier;
@@ -33,18 +34,24 @@ import org.chromium.ui.text.SpanApplier;
*/
public class PrivacyPreferences
extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
@@ -154,11 +143,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
+ "safe_browsing_scout_reporting";
+ private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
+ private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
private static final String PREF_NETWORK_PREDICTIONS = "preload_pages";
- private static final String PREF_USAGE_STATS = "usage_stats_reporting";
private static final String PREF_DO_NOT_TRACK = "do_not_track";
+ private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
+ private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
+ private static final String PREF_SYNC_AND_SERVICES_LINK_DIVIDER =
+ "sync_and_services_link_divider";
@@ -167,15 +154,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -49,6 +62,7 @@ public class PrivacyPreferences
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
- privacyPrefManager.migrateNetworkPredictionPreferences();
PreferenceUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
getActivity().setTitle(R.string.prefs_privacy);
setHasOptionsMenu(true);
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
+ PreferenceScreen preferenceScreen = getPreferenceScreen();
mManagedPreferenceDelegate = createManagedPreferenceDelegate();
@@ -62,26 +76,90 @@ public class PrivacyPreferences
@@ -62,26 +69,51 @@ public class PrivacyPreferences
networkPredictionPref.setOnPreferenceChangeListener(this);
networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
@@ -187,41 +173,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
- syncAndServicesLink.setSummary(
- SpanApplier.applySpans(getString(R.string.privacy_sync_and_services_link),
- new SpanApplier.SpanInfo("<link>", "</link>", linkSpan)));
+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
+ // Remove preferences that were migrated to SyncAndServicesPreferences.
+ preferenceScreen.removePreference(findPreference(PREF_NAVIGATION_ERROR));
+ preferenceScreen.removePreference(findPreference(PREF_SEARCH_SUGGESTIONS));
+ preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING));
+ preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING));
+ preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
+ preferenceScreen.removePreference(findPreference(PREF_USAGE_AND_CRASH_REPORTING));
+
+ // TODO(https://crbug.com/846376): Update strings in XML after UNIFIED_CONSENT launch.
+ networkPredictionPref.setTitle(R.string.preload_pages_title);
+ networkPredictionPref.setSummary(R.string.preload_pages_summary);
+
+ // Put networkPredictionPref after canMakePaymentPref by overriding order value.
+ // However, calling setOrder doesn't change existing order if Preference has already
+ // been added to PreferenceGroup. Remove and re-add it to work around this.
+ // TODO(https://crbug.com/846376): Reorder prefs in XML after UNIFIED_CONSENT launch.
+ preferenceScreen.removePreference(networkPredictionPref);
+ networkPredictionPref.setOrder(canMakePaymentPref.getOrder());
+ preferenceScreen.addPreference(networkPredictionPref);
+
+ Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
+ NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(getResources(), view -> {
+ PreferencesLauncher.launchSettingsPage(getActivity(), SyncAndServicesPreferences.class,
+ SyncAndServicesPreferences.createArguments(false));
+ });
+ syncAndServicesLink.setSummary(
+ SpanApplier.applySpans(getString(R.string.privacy_sync_and_services_link),
+ new SpanApplier.SpanInfo("<link>", "</link>", linkSpan)));
+
+ updateSummaries();
+ return;
+ }
+ preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
+ preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
+ getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
+ getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
+
+ ChromeBaseCheckBoxPreference navigationErrorPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_NAVIGATION_ERROR);
@@ -233,10 +186,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
+ searchSuggestionsPref.setOnPreferenceChangeListener(this);
+ searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+
+ if (!ContextualSearchFieldTrial.isEnabled()) {
+ preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
+ }
+
+ // Listen to changes to the Extended Reporting pref.
+ ChromeBaseCheckBoxPreference scoutReportingPref =
+ (ChromeBaseCheckBoxPreference) findPreference(
@@ -270,20 +219,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
+ } else if (PREF_NAVIGATION_ERROR.equals(key)) {
+ PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
+ } else if (PREF_CONTEXTUAL_SEARCH.equals(key)) {
+ PrefServiceBridge.getInstance().setContextualSearchPreference(((boolean) newValue) ? "true" : "false");
+ } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
+ PrefServiceBridge.getInstance().setBoolean(
+ Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
}
return true;
@@ -98,6 +176,36 @@ public class PrivacyPreferences
*/
@@ -99,6 +131,35 @@ public class PrivacyPreferences
public void updateSummaries() {
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
+ PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
+
+ CharSequence textOn = getActivity().getResources().getText(R.string.text_on);
+ CharSequence textOff = getActivity().getResources().getText(R.string.text_off);
+
@@ -312,30 +257,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
+ if (safeBrowsingPref != null) {
+ safeBrowsingPref.setChecked(prefServiceBridge.isSafeBrowsingEnabled());
+ }
+
CheckBoxPreference canMakePaymentPref =
(CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
@@ -112,6 +220,19 @@ public class PrivacyPreferences
prefServiceBridge.isDoNotTrackEnabled() ? R.string.text_on : R.string.text_off);
}
+ Preference contextualPref = findPreference(PREF_CONTEXTUAL_SEARCH);
+ if (contextualPref != null) {
+ boolean isContextualSearchEnabled = !prefServiceBridge.isContextualSearchDisabled();
+ contextualPref.setSummary(isContextualSearchEnabled ? textOn : textOff);
+ }
+
+ Preference usageAndCrashPref = findPreference(PREF_USAGE_AND_CRASH_REPORTING);
+ if (usageAndCrashPref != null) {
+ usageAndCrashPref.setSummary(
+ privacyPrefManager.isUsageAndCrashReportingPermittedByUser() ? textOn
+ : textOff);
+ }
+
Preference usageStatsPref = findPreference(PREF_USAGE_STATS);
if (usageStatsPref != null) {
if (BuildInfo.isAtLeastQ() && prefServiceBridge.getBoolean(Pref.USAGE_STATS_ENABLED)) {
@@ -136,6 +257,18 @@ public class PrivacyPreferences
if (canMakePaymentPref != null) {
@@ -136,6 +197,18 @@ public class PrivacyPreferences
return preference -> {
String key = preference.getKey();
PrefServiceBridge prefs = PrefServiceBridge.getInstance();
@@ -357,14 +283,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java
@@ -118,7 +118,10 @@ public class SyncPreferenceUtils {
@@ -118,7 +118,7 @@ public class SyncPreferenceUtils {
if (profileSyncService.isPassphraseRequiredForPreferredDataTypes()) {
return res.getString(R.string.sync_need_passphrase);
}
- return context.getString(R.string.sync_and_services_summary_sync_on);
+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
+ return context.getString(R.string.sync_and_services_summary_sync_on);
+ }
+ return context.getString(R.string.account_management_sync_summary, accountName);
}
return context.getString(R.string.sync_is_disabled);
@@ -394,22 +317,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotifi
import org.chromium.chrome.browser.sync.GoogleServiceAuthError.State;
import org.chromium.chrome.browser.sync.ui.PassphraseActivity;
import org.chromium.components.sync.AndroidSyncSettings;
@@ -154,9 +157,17 @@ public class SyncNotificationController implements ProfileSyncService.SyncStateC
@@ -154,9 +157,11 @@ public class SyncNotificationController implements ProfileSyncService.SyncStateC
* @return the intent for opening the settings
*/
private Intent createSettingsIntent() {
- return PreferencesLauncher.createIntentForSettingsPage(ContextUtils.getApplicationContext(),
- SyncAndServicesPreferences.class.getName(),
- SyncAndServicesPreferences.createArguments(false));
+ final String fragmentName;
+ final Bundle fragmentArguments;
+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
+ fragmentName = SyncAndServicesPreferences.class.getName();
+ fragmentArguments = SyncAndServicesPreferences.createArguments(false);
+ } else {
+ fragmentName = AccountManagementFragment.class.getName();
+ fragmentArguments = null;
+ }
+ final String fragmentName = AccountManagementFragment.class.getName();
+ final Bundle fragmentArguments = null;
+
+ return PreferencesLauncher.createIntentForSettingsPage(
+ ContextUtils.getApplicationContext(), fragmentName, fragmentArguments);
}
@@ -1954,6 +1871,37 @@ diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/UkmTe
+ }
}
}
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
@@ -151,12 +151,6 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
prefs::kSearchSuggestEnabled,
true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-#if defined(OS_ANDROID)
- registry->RegisterStringPref(
- prefs::kContextualSearchEnabled,
- std::string(),
- user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
-#endif // defined(OS_ANDROID)
registry->RegisterBooleanPref(prefs::kSessionExitedCleanly, true);
registry->RegisterStringPref(prefs::kSessionExitType, std::string());
registry->RegisterInt64Pref(prefs::kSiteEngagementLastUpdateTime, 0,
diff --git a/chrome/browser/unified_consent/unified_consent_service_factory.cc b/chrome/browser/unified_consent/unified_consent_service_factory.cc
--- a/chrome/browser/unified_consent/unified_consent_service_factory.cc
+++ b/chrome/browser/unified_consent/unified_consent_service_factory.cc
@@ -36,10 +36,7 @@ std::vector<std::string> GetSyncedServicePrefNames() {
return {
prefs::kSearchSuggestEnabled, prefs::kAlternateErrorPagesEnabled,
prefs::kSafeBrowsingEnabled, prefs::kSafeBrowsingScoutReportingEnabled,
- spellcheck::prefs::kSpellCheckUseSpellingService,
-#if defined(OS_ANDROID)
- prefs::kContextualSearchEnabled
-#endif
+ spellcheck::prefs::kSpellCheckUseSpellingService
};
}
--
2.17.1
@@ -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)
@@ -1,156 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 18 Dec 2019 23:54:37 +0100
Subject: Unified consent miscellanous backport fixes
---
.../privacy/PrivacyPreferences.java | 52 ++-----------------
.../preferences/sync/SyncPreferenceUtils.java | 3 --
.../sync/SyncNotificationController.java | 12 ++---
3 files changed, 6 insertions(+), 61 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -9,7 +9,6 @@ import android.support.graphics.drawable.VectorDrawableCompat;
import android.support.v7.preference.CheckBoxPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
-import android.support.v7.preference.PreferenceScreen;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -45,7 +44,6 @@ public class PrivacyPreferences
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
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_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
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";
@@ -56,13 +54,10 @@ public class PrivacyPreferences
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
- privacyPrefManager.migrateNetworkPredictionPreferences();
PreferenceUtils.addPreferencesFromResource(this, R.xml.privacy_preferences);
getActivity().setTitle(R.string.prefs_privacy);
setHasOptionsMenu(true);
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
- PreferenceScreen preferenceScreen = getPreferenceScreen();
mManagedPreferenceDelegate = createManagedPreferenceDelegate();
@@ -76,41 +71,8 @@ public class PrivacyPreferences
networkPredictionPref.setOnPreferenceChangeListener(this);
networkPredictionPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
- // Remove preferences that were migrated to SyncAndServicesPreferences.
- preferenceScreen.removePreference(findPreference(PREF_NAVIGATION_ERROR));
- preferenceScreen.removePreference(findPreference(PREF_SEARCH_SUGGESTIONS));
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING));
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING));
- preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
- preferenceScreen.removePreference(findPreference(PREF_USAGE_AND_CRASH_REPORTING));
-
- // TODO(https://crbug.com/846376): Update strings in XML after UNIFIED_CONSENT launch.
- networkPredictionPref.setTitle(R.string.preload_pages_title);
- networkPredictionPref.setSummary(R.string.preload_pages_summary);
-
- // Put networkPredictionPref after canMakePaymentPref by overriding order value.
- // However, calling setOrder doesn't change existing order if Preference has already
- // been added to PreferenceGroup. Remove and re-add it to work around this.
- // TODO(https://crbug.com/846376): Reorder prefs in XML after UNIFIED_CONSENT launch.
- preferenceScreen.removePreference(networkPredictionPref);
- networkPredictionPref.setOrder(canMakePaymentPref.getOrder());
- preferenceScreen.addPreference(networkPredictionPref);
-
- Preference syncAndServicesLink = findPreference(PREF_SYNC_AND_SERVICES_LINK);
- NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(getResources(), view -> {
- PreferencesLauncher.launchSettingsPage(getActivity(), SyncAndServicesPreferences.class,
- SyncAndServicesPreferences.createArguments(false));
- });
- syncAndServicesLink.setSummary(
- SpanApplier.applySpans(getString(R.string.privacy_sync_and_services_link),
- new SpanApplier.SpanInfo("<link>", "</link>", linkSpan)));
-
- updateSummaries();
- return;
- }
- preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
- preferenceScreen.removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
+ getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK_DIVIDER));
+ getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES_LINK));
ChromeBaseCheckBoxPreference navigationErrorPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_NAVIGATION_ERROR);
@@ -123,7 +85,7 @@ public class PrivacyPreferences
searchSuggestionsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
if (!ContextualSearchFieldTrial.isEnabled()) {
- preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
+ getPreferenceScreen().removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
}
// Listen to changes to the Extended Reporting pref.
@@ -176,7 +138,6 @@ public class PrivacyPreferences
*/
public void updateSummaries() {
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
- PrivacyPreferencesManager privacyPrefManager = PrivacyPreferencesManager.getInstance();
CharSequence textOn = getActivity().getResources().getText(R.string.text_on);
CharSequence textOff = getActivity().getResources().getText(R.string.text_off);
@@ -226,13 +187,6 @@ public class PrivacyPreferences
contextualPref.setSummary(isContextualSearchEnabled ? textOn : textOff);
}
- Preference usageAndCrashPref = findPreference(PREF_USAGE_AND_CRASH_REPORTING);
- if (usageAndCrashPref != null) {
- usageAndCrashPref.setSummary(
- privacyPrefManager.isUsageAndCrashReportingPermittedByUser() ? textOn
- : textOff);
- }
-
Preference usageStatsPref = findPreference(PREF_USAGE_STATS);
if (usageStatsPref != null) {
if (BuildInfo.isAtLeastQ() && prefServiceBridge.getBoolean(Pref.USAGE_STATS_ENABLED)) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/sync/SyncPreferenceUtils.java
@@ -118,9 +118,6 @@ public class SyncPreferenceUtils {
if (profileSyncService.isPassphraseRequiredForPreferredDataTypes()) {
return res.getString(R.string.sync_need_passphrase);
}
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
- return context.getString(R.string.sync_and_services_summary_sync_on);
- }
return context.getString(R.string.account_management_sync_summary, accountName);
}
return context.getString(R.string.sync_is_disabled);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/SyncNotificationController.java
@@ -157,15 +157,9 @@ public class SyncNotificationController implements ProfileSyncService.SyncStateC
* @return the intent for opening the settings
*/
private Intent createSettingsIntent() {
- final String fragmentName;
- final Bundle fragmentArguments;
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
- fragmentName = SyncAndServicesPreferences.class.getName();
- fragmentArguments = SyncAndServicesPreferences.createArguments(false);
- } else {
- fragmentName = AccountManagementFragment.class.getName();
- fragmentArguments = null;
- }
+ final String fragmentName = AccountManagementFragment.class.getName();
+ final Bundle fragmentArguments = null;
+
return PreferencesLauncher.createIntentForSettingsPage(
ContextUtils.getApplicationContext(), fragmentName, fragmentArguments);
}
--
2.17.1
@@ -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() {