Compare commits

...
Author SHA1 Message Date
csagan5 750cafb50c Release 69.0.3497.109 2018-09-25 22:12:08 +02:00
csagan5 5cd90e8326 Updated README 2018-09-23 09:20:51 +02:00
csagan5 664cd20825 Release 69.0.3497.102 2018-09-23 09:04:17 +02:00
csagan5 aeb31bb4c5 Update version in issue template 2018-09-15 06:45:11 +02:00
csagan5 87eb08c088 Release 69.0.3497.91 2018-09-14 00:55:37 +02:00
CarlandGitHub e64cbbd005 Mention android version requirement 2018-09-05 16:47:22 +02:00
csagan5 4829eef707 Update F.A.Q. and information about WebRTC 2018-09-05 00:36:25 +02:00
csagan5 32978e4658 Release 69.0.3497.73 2018-09-05 00:24:29 +02:00
csagan5 f109246e47 Remove WIP patches 2018-09-01 12:12:06 +02:00
csagan5 b1bc96bbd9 Release 68.0.3440.126 2018-08-29 14:13:04 +02:00
csagan5 e3176b1868 Adjust text for maximum connections per host patch 2018-08-26 10:04:45 +02:00
csagan5 22dae5bff8 Mention new privacy features 2018-08-26 01:01:16 +02:00
csagan5 f21bb8a1d4 Release 68.0.3440.121 2018-08-26 00:55:23 +02:00
csagan5 3624b67e98 Add link to Chromium issue tracker and reporting guidelines in issue template 2018-08-22 23:02:28 +02:00
csagan5 eb4cbebe2a Release 68.0.3440.110 2018-08-14 23:50:50 +02:00
csagan5 3de200030f Mention import bookmarks feature; disable XDA downloads counter 2018-08-11 20:13:14 +02:00
csagan5 b35c5b2f0d Release 68.0.3440.90 2018-08-07 10:53:55 +02:00
csagan5 3cf1a58964 Completed patches update for 68.0.3440.87 2018-08-03 09:16:55 +02:00
csagan5 ef1fa37452 Mention chrome flag features 2018-08-03 00:37:24 +02:00
csagan5 7cb31f2c7a Mention Monochrome drop; mention F-Droid in Releases paragraph 2018-08-03 00:23:28 +02:00
csagan5 252be1a850 Mention export bookmarks feature 2018-08-03 00:19:48 +02:00
csagan5 4cef551b01 Release 68.0.3440.87 2018-08-03 00:09:32 +02:00
106 changed files with 7856 additions and 3754 deletions
+4 -2
View File
@@ -4,16 +4,18 @@ about: Create a Bromite bug report
---
**Version**
**Bromite version**
Version: `v67...`
Version: `69.0...`
Arch: `arm` or `arm64` or `x86`
Android version: ... (example: `lollipop`)
**Is the bug reproducible with latest version?**
`Bug must be reproducible with latest version`
**Can the bug be reproduced with corresponding [Chromium](https://github.com/bromite/chromium/releases) version?**
`Bug must NOT be reproducible with Chromium to be qualified as a Bromite bug`
If yes then report it upstream on [Chromium issue tracker](https://bugs.chromium.org/p/chromium/issues/list) and do not forget to read [Chromium project bug reporting guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines) first; all Chromium issues reported here will be closed as `invalid`.
**Is the bug a crash?**
If yes then individuate and post the logcat dump (remove privacy sensitive information, if any), otherwise remove this section.
+41 -34
View File
@@ -1,6 +1,46 @@
# 69.0.3497.109
# 69.0.3497.102
* ungoogled-chromium: disable network time tracker
* ungoogled-chromium: remove third-party/analytics
* ungoogled-chromium: always use local Devtools instead of remote files
* build without safebrowsing
* drop "Hide NTP tiles" flag
# 69.0.3497.91
* fixed crash when accessing site settings media preferences (fixes https://github.com/bromite/bromite/issues/122)
# 69.0.3497.73
* enabled WebRTC
* drop clear HTTP cache patch
# 68.0.3440.126
* add option to disallow custom tab intents (fixes https://github.com/bromite/bromite/issues/117)
* add option to keep local data until browser exit (fixes https://github.com/bromite/bromite/issues/56)
* remember preference for tabs persistence option
* extend anti-AMP to all search results
# 68.0.3440.121
* add option to not persist tabs across sessions (fixes https://github.com/bromite/bromite/issues/106)
* always incognito mode (fixes https://github.com/bromite/bromite/issues/18)
* disable domain reliability (ungoogled-chromium)
* more efficient adblock interception by using proper handler
* fix log message about default maximum connections
* improvement for exit menu patch
# 68.0.3440.110
* add import action to Bookmarks activity page
* use different user-agent version based on Android OS version
# 68.0.3440.90
* reduce rects randomisation by factor of 100
* use a fixed user-agent (fixes https://github.com/bromite/bromite/issues/103)
# 68.0.3440.87
* add export action to Bookmarks activity page
# 68.0.3440.81
* fix issue with filters with an excluded domain option
* updated AdBlock filters
# 68.0.3440.72
* fix crash during some canvas rendering (fixes https://github.com/bromite/bromite/issues/95)
@@ -12,11 +52,9 @@
* disable ads metrics by default
* disable all field trials (fixes https://github.com/bromite/bromite/issues/83)
* re-introduced own battery API patch (fixes https://github.com/bromite/bromite/issues/80)
* updated AdBlock filters
# 67.0.3396.107
* removed patch to use Android Media Player for URLs (fixes https://github.com/bromite/bromite/issues/71)
* updated AdBlock filters
# 67.0.3396.101
* set home page to new tab page
@@ -33,7 +71,6 @@
* safe_browsing: disable cookie transmission
* extensions: always show component extensions in the ext list
* translate: disable fetching of translate languages from server
* updated AdBlock filters
# 67.0.3396.95
* reduce headers sent in DoH requests (fixes https://github.com/bromite/bromite/issues/70)
@@ -41,11 +78,9 @@
* `CloudFlare` -> `Cloudflare` (fixes https://github.com/bromite/bromite/issues/73)
* fingerprint mitigations: cover also `ConvertToArrayBufferContents`
* removed redundant own patch for battery API
* updated AdBlock filters
# 67.0.3396.92
* improve randomization for each retrieved Canvas data (fixes https://github.com/bromite/bromite/issues/69)
* updated AdBlock filters
# 67.0.3396.88
* add flag for DNS-over-HTTPS (Google experimental DNS) (fixes https://github.com/bromite/bromite/issues/68)
@@ -56,90 +91,70 @@
* use Android Media Player for URLs
* add exit menu item
* hide "send reports to Google" menu item
* updated AdBlock filters
# 67.0.3396.82
* updated AdBlock filters
# 67.0.3396.76
* updated AdBlock filters
# 67.0.3396.72
* add global toggle for adblock engine (https://github.com/bromite/bromite/issues/53)
* updated AdBlock filters
# 67.0.3396.67
* updated AdBlock filters
# 66.0.3359.202
* fix DevTools integration (https://github.com/bromite/bromite/issues/23)
* allow toggling of Javascript from New Tab Page (fixes https://github.com/bromite/bromite/issues/60)
* updated AdBlock filters
# 66.0.3359.200
* updated AdBlock filters
# 66.0.3359.196
* updated AdBlock filters
# 66.0.3359.188
* updated AdBlock filters
* increase max (persistent) connections per server from 6 to 15
* preliminary work for better canvas fingerprinting mitigations
# 66.0.3359.161
* updated AdBlock filters
# 66.0.3359.148
* disable permanently all custom tab intents (https://github.com/bromite/bromite/issues/17)
* updated AdBlock filters
* reduce randomization for client rects from 5% to 3%
# 65.0.3325.230
* fixed permission to access Google account issue (https://github.com/bromite/bromite/issues/11)
* updated AdBlock filters
# 65.0.3325.218
* always set WideVine version
* updated AdBlock filters
# 65.0.3325.204
* add menu option to toggle global Javascript preferences setting (https://github.com/bromite/bromite/issues/37)
* add fingeprinting mitigation for getClientRects, getBoundingClientRect
* set audio latency to fixed number
* updated AdBlock filters
# 65.0.3325.198
* re-landed support for third-party AdBlock filters
* completed patches cleanup
* updated AdBlock filters
# 65.0.3325.190
* block some Canvas and AudioBuffer APIs mostly used for fingerprinting (https://github.com/bromite/bromite/issues/15)
* updated AdBlock filters
# 65.0.3325.176
* block plugins enumeration API
* block battery API
* remove device name and build id from User Agent
* added Qwant search engine
* updated AdBlock filters
* disable non-working 3rd-party filters support
# 64.0.3282.204
* use H264 NEON optimizations also for arm64
* fix build of Stable channel
* updated AdBlock filters
* started building vanilla Chromium releases as well
# 64.0.3282.193
* updated AdBlock filters
* disable reporting
# 64.0.3282.182
* add support for domain-based adblock filters
* optimized memory allocation for filters
* updated AdBlock filters
# 64.0.3282.168
* extension: allow playing youtube/vimeo videos in background (https://github.com/bromite/bromite/issues/16)
@@ -156,20 +171,16 @@
* disabled plugin untraceable URLs (ungoogled-chromium)
# 64.0.3282.149
* updated AdBlock filters
# 63.0.3239.150
* fixed crash when clicking on address bar lock (page info) or opening site settings (https://github.com/bromite/bromite/issues/28)
* build H264 with NEON optimizations for ARMv7
* updated AdBlock filters
* more builds for arm64 architecture
# 63.0.3239.144
* fixed invalid AdBlock filter rule blocking all connections (https://github.com/bromite/bromite/issues/26)
* updated AdBlock filters
# 63.0.3239.129
* updated AdBlock filters
# 63.0.3239.122
* disable webRTC completely (https://github.com/bromite/bromite/issues/9)
@@ -182,23 +193,19 @@
* revert /deep/ and ::shadow feature drop to attempt fixing DevTools support (https://github.com/bromite/bromite/issues/23)
* remove also ads from search results
* add Google search engine with English-only results, no RLZ and field trials
* updated adBlock filters
* fix build of x86 version (was broken in previous version)
# 63.0.3239.85
* no suggest URL for DuckDuckGo (https://github.com/bromite/bromite/issues/19)
* fixed 4chan blocking rule
* limit AMP links cleanup to search results only (fixes broken images/news result tabs)
* updated adBlock filters
# 63.0.3239.78
* correctly set version and build numbers
* updated adBlock filters
# 63.0.3239.73
# 63.0.3239.64
* updated adblock filters
* fixed an issue with incognito new tab
* permanent disable for ToS/metrics and unused auto-updates check
+19 -12
View File
@@ -8,9 +8,7 @@ Bromite is [Chromium](https://www.chromium.org/Home) plus some patches for ad bl
Bromite is only available for Android v4.1 and above.
See [open issues](https://github.com/bromite/bromite/issues) for the development in progress.
<img src="https://www.bromite.org/bromite_bromite_gh_downloads.svg" alt="downloads on Github" title="downloads on Github" /> <img src="https://www.bromite.org/bromite_bromite_xda_downloads.svg" alt="downloads on XDA Labs" title="downloads on XDA Labs" />
<img src="https://www.bromite.org/bromite_bromite_gh_downloads.svg" alt="downloads on Github" title="downloads on Github" />
# Goals
@@ -35,6 +33,8 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042`
No.
This is not a limitation of Bromite but of all Chromium-based projects in general, as general public is not allowed to use Google's APIs for free unless when using Chrome.
Additionally, these features would not be privacy-friendly.
## Does Bromite require root?
No.
@@ -47,14 +47,16 @@ See [this wiki page](https://github.com/bromite/bromite/wiki/Enabling-DNS-over-H
## Can you add dark mode/some cool themes?
No.
Bromite is about adblocking and privacy.
Bromite is about privacy and adblocking.
## Can you add HTTPS everywhere?
No.
We cannot add add-ons to Bromite (merely some features) and anyway HTTPS everywhere in particular is too invasive to be easily maintained across new releases.
We cannot add add-ons to Bromite (merely some features).
## Is Bromite on Play Store?
No, and this is unlikely to change. The Play Store would not allow total freedom on the adblocking choice, amongst other limitations.
No, and this is unlikely to change. Many limitations apply for submissions there, including which ads are allowed to be blocked.
Bromite favors user freedom in software choice: the device is yours so you get to choose which software to run on it, end of the story.
## Is Bromite on F-Droid?
It is not on the official F-Droid repository and there are no (more) plans to submit it.
@@ -62,7 +64,7 @@ It is not on the official F-Droid repository and there are no (more) plans to su
You can use F-Droid client to install and receive updates via [the official Bromite F-Droid repository](https://www.bromite.org/fdroid).
## Does Bromite support WebRTC?
No, it is not built-in.
Yes, since version 69. While the desktop version of Chromium has an option to disable it (video/audio site settings), the Android version cannot.
# Features
@@ -70,10 +72,14 @@ No, it is not built-in.
* remove click-tracking and AMP from search results
* DNS-over-HTTPS support via Google/CloudFlare servers
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines
* chrome flags to disable custom intents and clear session on exit
* always-incognito mode
* completely removed safe browsing and other privacy-unfriendly features
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
* webRTC, canvas, audio and other anti-fingerprinting mitigations
* canvas, audio and other anti-fingerprinting mitigations
## Features not related to privacy
* import/export bookmarks
* allow playing videos in background
* all codecs included (proprietary, open H.264 etc.)
* built with official speed optimizations
@@ -82,12 +88,14 @@ You can inspect all functionality/privacy changes by reading the patches: https:
# 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.
All built versions are available as [releases](https://github.com/bromite/bromite/releases); the [official website](https://www.bromite.org/) points to those releases and - when browsing via Android - it will automatically select the one apt for your device (or none otherwise).
Each tag corresponds to a Chromium Stable release tag.
Bromite is currently built for ARM, ARM64 and x86 and for the Android SDKs versions 16 and 21
Additionally, [SystemWebView](https://www.bromite.org/system_web_view), Monochrome and the [vanilla Chromium](https://www.bromite.org/chromium) builds are provided.
Bromite is currently built for ARM, ARM64 and x86 and for the Android SDK versions 16 and 21; [Bromite SystemWebView](https://www.bromite.org/system_web_view) is provided as well (SDK21+).
For every Bromite build you can always find a matching [vanilla Chromium](https://www.bromite.org/chromium) build which is used for example to verify which issues are specific to Bromite or not.
All official releases are also available through the [official third-party F-Droid repository](https://www.bromite.org/fdroid).
## Integrity and authenticity
@@ -97,7 +105,6 @@ $ sha256sum --check brm_68.0.3440.54.sha256.txt
arm64_SystemWebView.apk: OK
arm64_ChromePublic.apk: OK
arm64_ChromeModernPublic.apk: OK
arm64_MonochromePublic.apk: OK
```
If you prefer an UI-based tool, you might want to look into [GtkHash](https://github.com/tristanheaven/gtkhash).
+2458 -548
View File
File diff suppressed because it is too large Load Diff
@@ -10,7 +10,7 @@ author: Chad Miller <chad.miller@canonical.com>
diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
--- a/components/content_settings/core/browser/cookie_settings.cc
+++ b/components/content_settings/core/browser/cookie_settings.cc
@@ -111,7 +111,7 @@ void CookieSettings::GetCookieSettings(
@@ -50,7 +50,7 @@ void CookieSettings::GetCookieSettings(
void CookieSettings::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
@@ -20,5 +20,5 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo
}
--
2.7.4
2.11.0
@@ -22,5 +22,5 @@ diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
bool ShouldDelayRemoteNTP(const GURL& search_provider_url, Profile* profile) {
--
2.7.4
2.11.0
@@ -41,5 +41,5 @@ diff --git a/services/device/battery/battery_status_service.cc b/services/device
return callback_list_.Add(callback);
}
--
2.7.4
2.11.0
@@ -73,5 +73,5 @@ diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/thi
void BatteryManager::RegisterWithDispatcher() {
--
2.7.4
2.11.0
@@ -10,7 +10,7 @@ This avoids trk:263 from triggering.
diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gcm_driver/gcm_channel_status_request.cc
--- a/components/gcm_driver/gcm_channel_status_request.cc
+++ b/components/gcm_driver/gcm_channel_status_request.cc
@@ -23,8 +23,10 @@ namespace gcm {
@@ -24,8 +24,10 @@ namespace gcm {
namespace {
@@ -21,24 +21,24 @@ diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gc
const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes.
const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes.
@@ -57,6 +59,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
}
@@ -58,6 +60,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
void GCMChannelStatusRequest::Start() {
// url_loader_factory_ can be null for tests.
+#if 0
DCHECK(!url_fetcher_);
if (!url_loader_factory_)
return;
GURL request_url(channel_status_request_url_);
@@ -112,6 +115,9 @@ void GCMChannelStatusRequest::Start() {
url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
url_fetcher_->Start();
@@ -113,6 +116,9 @@ void GCMChannelStatusRequest::Start() {
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
resource_request->method = "POST";
resource_request->headers.SetHeader(net::HttpRequestHeaders::kUserAgent,
+#endif
+ // Simulate an empty response and disable GCM.
+ callback_.Run(false, false, 0);
}
void GCMChannelStatusRequest::OnURLFetchComplete(
user_agent_);
// TODO(https://crbug.com/808498): Re-add data use measurement once
// SimpleURLLoader supports it.
--
2.7.4
2.11.0
@@ -36,10 +36,10 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
- pings_enabled_(config_policy.PingsEnabled()),
- require_encryption_(require_encryption),
+ pings_enabled_(false),
url_source_override_(config_policy.UrlSourceOverride()) {
url_source_override_(config_policy.UrlSourceOverride()),
initial_delay_(config_policy.InitialDelay()) {
if (config_policy.TestRequest())
extra_info_ += "testrequest=\"1\"";
@@ -70,8 +69,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
@@ -73,8 +72,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
}
std::vector<GURL> urls{GURL(kUpdaterDefaultUrl), GURL(kUpdaterFallbackUrl)};
@@ -51,14 +51,14 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
--- a/components/component_updater/configurator_impl.h
+++ b/components/component_updater/configurator_impl.h
@@ -91,7 +91,6 @@ class ConfiguratorImpl {
bool deltas_enabled_;
bool fast_update_;
bool pings_enabled_;
- bool require_encryption_;
GURL url_source_override_;
@@ -95,7 +95,6 @@ class ConfiguratorImpl {
const bool deltas_enabled_;
const bool fast_update_;
const bool pings_enabled_;
- const bool require_encryption_;
const GURL url_source_override_;
const int initial_delay_;
DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
--
2.7.4
2.11.0
@@ -10,7 +10,7 @@ Out with all those tracking cookies!
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -117,7 +117,7 @@ void ContentSettingsRegistry::Init() {
@@ -119,7 +119,7 @@ void ContentSettingsRegistry::Init() {
// WARNING: The string names of the permissions passed in below are used to
// generate preference names and should never be changed!
@@ -20,5 +20,5 @@ diff --git a/components/content_settings/core/browser/content_settings_registry.
WhitelistedSchemes(kChromeUIScheme, kChromeDevToolsScheme),
ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK,
--
2.7.4
2.11.0
+1 -1
View File
@@ -42,5 +42,5 @@ diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc
#endif // defined(PLATFORM_USES_CHROMIUM_EV_METADATA)
} // namespace
--
2.7.4
2.11.0
@@ -22,7 +22,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/33
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
--- a/chrome/browser/signin/signin_promo.cc
+++ b/chrome/browser/signin/signin_promo.cc
@@ -130,6 +130,7 @@ namespace signin {
@@ -140,6 +140,7 @@ const char kSigninPromoLandingURLSuccessPage[] = "success.html";
bool ShouldShowPromoAtStartup(Profile* profile, bool is_new_profile) {
DCHECK(profile);
@@ -31,5 +31,5 @@ diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signi
// Don't show if the profile is an incognito.
if (profile->IsOffTheRecord())
--
2.7.4
2.11.0
@@ -30,5 +30,5 @@ diff --git a/components/url_formatter/url_formatter.cc b/components/url_formatte
const FormatUrlType kFormatUrlOmitDefaults =
--
2.7.4
2.11.0
+12 -25
View File
@@ -5,7 +5,6 @@ Subject: Modify default preferences
---
chrome/browser/background/background_mode_manager.cc | 2 +-
chrome/browser/chrome_content_browser_client.cc | 2 +-
chrome/browser/io_thread.cc | 2 +-
chrome/browser/net/prediction_options.cc | 2 +-
chrome/browser/net/prediction_options.h | 2 +-
chrome/browser/profiles/profile.cc | 2 +-
@@ -19,12 +18,12 @@ Subject: Modify default preferences
components/bookmarks/browser/bookmark_utils.cc | 4 ++--
components/safe_browsing/common/safe_browsing_prefs.cc | 4 ++--
extensions/common/extension.cc | 8 --------
16 files changed, 18 insertions(+), 30 deletions(-)
15 files changed, 17 insertions(+), 29 deletions(-)
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
--- a/chrome/browser/background/background_mode_manager.cc
+++ b/chrome/browser/background/background_mode_manager.cc
@@ -362,7 +362,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
@@ -351,7 +351,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
#endif
@@ -36,7 +35,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1015,7 +1015,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
@@ -1053,7 +1053,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
void ChromeContentBrowserClient::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -45,18 +44,6 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
registry->RegisterListPref(prefs::kEnableDeprecatedWebPlatformFeatures);
// Register user prefs for mapping SitePerProcess and IsolateOrigins in
// user policy in addition to the same named ones in Local State (which are
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -569,7 +569,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
std::string());
registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
data_reduction_proxy::RegisterPrefs(registry);
- registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true);
+ registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, false);
registry->RegisterListPref(prefs::kDnsOverHttpsServers);
registry->RegisterListPref(prefs::kDnsOverHttpsServerMethods);
#if defined(OS_POSIX)
diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
--- a/chrome/browser/net/prediction_options.cc
+++ b/chrome/browser/net/prediction_options.cc
@@ -84,7 +71,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -137,7 +137,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
@@ -138,7 +138,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kSearchSuggestEnabled,
@@ -108,7 +95,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
--- a/chrome/browser/signin/signin_promo.cc
+++ b/chrome/browser/signin/signin_promo.cc
@@ -384,8 +384,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
@@ -385,8 +385,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
void RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
@@ -177,19 +164,19 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -210,7 +210,7 @@ void AutofillManager::RegisterProfilePrefs(
@@ -189,7 +189,7 @@ void AutofillManager::RegisterProfilePrefs(
registry->RegisterIntegerPref(
prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
registry->RegisterBooleanPref(
- prefs::kAutofillEnabled, true,
+ prefs::kAutofillEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterIntegerPref(
prefs::kAutofillLastVersionDeduped, 0,
registry->RegisterBooleanPref(
prefs::kAutofillProfileEnabled, true,
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
--- a/components/bookmarks/browser/bookmark_utils.cc
+++ b/components/bookmarks/browser/bookmark_utils.cc
@@ -442,12 +442,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
@@ -443,12 +443,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kShowBookmarkBar,
@@ -207,7 +194,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
@@ -370,9 +370,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -278,9 +278,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
registry->RegisterBooleanPref(
@@ -222,7 +209,7 @@ diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -365,14 +365,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
@@ -366,14 +366,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
if (is_theme())
return false;
@@ -238,5 +225,5 @@ diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
// show packaged apps and platform apps because there are some pieces of
// functionality that are only available in chrome://extensions/ but which
--
2.7.4
2.11.0
@@ -19,5 +19,5 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
#if defined(OS_ANDROID)
const base::Feature kAllowAutoplayUnmutedInWebappManifestScope{
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: Do not store passwords by default
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -228,10 +228,10 @@ PasswordFormManager* FindMatchedManager(
@@ -278,10 +278,10 @@ bool ShouldPromptUserToSavePassword(const PasswordFormManager& manager) {
void PasswordManager::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
@@ -23,5 +23,5 @@ diff --git a/components/password_manager/core/browser/password_manager.cc b/comp
registry->RegisterStringPref(prefs::kSyncPasswordHash, std::string(),
PrefRegistry::NO_REGISTRATION_FLAGS);
--
2.7.4
2.11.0
@@ -10,7 +10,7 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu
--- a/components/ntp_snippets/features.cc
+++ b/components/ntp_snippets/features.cc
@@ -38,13 +38,13 @@ const base::Feature kArticleSuggestionsExpandableHeader{
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_DISABLED_BY_DEFAULT};
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kArticleSuggestionsFeature{
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
@@ -27,5 +27,5 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu
const base::Feature kForeignSessionsSuggestionsFeature{
"NTPForeignSessionsSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
--
2.7.4
2.11.0
@@ -59,5 +59,5 @@ diff --git a/third_party/crashpad/crashpad/doc/support/crashpad_doxygen.css b/th
body,
table,
--
2.7.4
2.11.0
@@ -24,5 +24,5 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u
// Dictionaries to keep track of default tasks in the file browser.
--
2.7.4
2.11.0
+1 -1
View File
@@ -51,5 +51,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/dat
/**
--
2.7.4
2.11.0
@@ -3,10 +3,10 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100
Subject: Skip the first run and metrics
---
.../chrome/browser/firstrun/FirstRunStatus.java | 8 ++++----
.../chrome/browser/firstrun/FirstRunUtils.java | 16 ++++++----------
.../browser/firstrun/ToSAndUMAFirstRunFragment.java | 18 ++++++------------
3 files changed, 16 insertions(+), 26 deletions(-)
.../chromium/chrome/browser/firstrun/FirstRunStatus.java | 8 ++++----
.../chromium/chrome/browser/firstrun/FirstRunUtils.java | 16 ++++++----------
.../browser/firstrun/ToSAndUMAFirstRunFragment.java | 6 ++++--
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
@@ -56,33 +56,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
@@ -74,20 +74,14 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
@@ -74,7 +74,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
}
});
- if (ChromeVersionInfo.isOfficialBuild()) {
- int paddingStart = getResources().getDimensionPixelSize(
- R.dimen.fre_tos_checkbox_padding);
- ApiCompatibilityUtils.setPaddingRelative(mSendReportCheckBox,
- ApiCompatibilityUtils.getPaddingStart(mSendReportCheckBox) + paddingStart,
- mSendReportCheckBox.getPaddingTop(),
- ApiCompatibilityUtils.getPaddingEnd(mSendReportCheckBox),
- mSendReportCheckBox.getPaddingBottom());
-
- mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
- } else {
- mSendReportCheckBox.setVisibility(View.GONE);
+ int paddingStart = getResources().getDimensionPixelSize(R.dimen.fre_tos_checkbox_padding);
+ if (paddingStart != 0) {
+ mSendReportCheckBox.setChecked(false);
}
+/* if (ChromeVersionInfo.isOfficialBuild()) {
int paddingStart = getResources().getDimensionPixelSize(
R.dimen.fre_tos_checkbox_padding);
ViewCompat.setPaddingRelative(mSendReportCheckBox,
@@ -86,8 +86,10 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
} else {
mSendReportCheckBox.setVisibility(View.GONE);
- }
+ }*/
+ mSendReportCheckBox.setChecked(false);
+ mSendReportCheckBox.setVisibility(View.GONE);
+
mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan((view1) -> {
--
2.7.4
2.11.0
@@ -4,36 +4,36 @@ Subject: Disable signin and data saver preferences
Never show the data saver promo snackbar
---
chrome/android/java/res/xml/main_preferences.xml | 8 +++---
chrome/android/java/res/xml/main_preferences.xml | 8 ++---
.../chromium/chrome/browser/ChromeActivity.java | 6 ++--
.../browser/preferences/MainPreferences.java | 32 ++++++++++++----------
3 files changed, 26 insertions(+), 20 deletions(-)
.../browser/preferences/MainPreferences.java | 42 ++++++++++++----------
3 files changed, 31 insertions(+), 25 deletions(-)
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -6,10 +6,10 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:orderingFromXml="false">
@@ -10,10 +10,10 @@
android:key="account_section"
android:order="0"
android:title="@string/prefs_section_account"/>
- <org.chromium.chrome.browser.preferences.SignInPreference
+ <!-- org.chromium.chrome.browser.preferences.SignInPreference
android:key="sign_in"
android:order="0"
android:order="1"
- android:title="@string/sign_in_to_chrome"/>
+ android:title="@string/sign_in_to_chrome"/-->
<PreferenceCategory
android:key="basics_section"
@@ -70,11 +70,11 @@
<org.chromium.chrome.browser.preferences.ChromeBasePreference
android:fragment="org.chromium.chrome.browser.preferences.SyncAndServicesPreferences"
android:key="sync_and_services"
@@ -79,11 +79,11 @@
android:key="languages"
android:order="12"
android:order="14"
android:title="@string/prefs_languages"/>
- <org.chromium.chrome.browser.preferences.ChromeBasePreference
+ <!-- org.chromium.chrome.browser.preferences.ChromeBasePreference
android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences"
android:key="data_reduction"
android:order="13"
android:order="15"
- android:title="@string/data_reduction_title"/>
+ android:title="@string/data_reduction_title"/-->
<org.chromium.chrome.browser.preferences.ChromeBasePreference
@@ -42,33 +42,33 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -115,7 +115,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
@@ -114,7 +114,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareMenuActionHandler;
import org.chromium.chrome.browser.snackbar.BottomContainer;
-import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
+//import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
import org.chromium.chrome.browser.snackbar.DataUseSnackbarController;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
@@ -258,7 +258,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
import org.chromium.chrome.browser.sync.ProfileSyncService;
@@ -252,7 +252,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
protected ReaderModeManager mReaderModeManager;
private SnackbarManager mSnackbarManager;
private ModalDialogManager mModalDialogManager;
private DataUseSnackbarController mDataUseSnackbarController;
- private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
+ //private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
private AppMenuHandler mAppMenuHandler;
private ToolbarManager mToolbarManager;
@@ -577,6 +577,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
mDataUseSnackbarController.showDataUseTrackingEndedBar();
}
@@ -600,6 +600,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
mTabModelSelectorTabObserver = new TabModelSelectorTabObserver(mTabModelSelector) {
@Override
public void didFirstVisuallyNonEmptyPaint(Tab tab) {
+/*
// Only alert about data savings once the first paint has happened. It doesn't make
// sense to show a snackbar about savings when nothing has been displayed yet.
if (DataReductionProxySettings.getInstance().isSnackbarPromoAllowed(tab.getUrl())) {
@@ -589,6 +590,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
// Only alert about data savings once the first paint has happened. It
// doesn't make sense to show a snackbar about savings when nothing has been
// displayed yet.
@@ -613,6 +614,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
DataReductionProxySettings.getInstance()
.getTotalHttpContentLengthSaved());
}
@@ -91,19 +91,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
import org.chromium.chrome.browser.search_engines.TemplateUrl;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.signin.SigninManager;
@@ -35,20 +35,20 @@ import java.util.Map;
*/
@@ -35,21 +35,21 @@ import java.util.Map;
public class MainPreferences extends PreferenceFragment
implements SigninManager.SignInStateObserver, TemplateUrlService.LoadListener {
public static final String PREF_ACCOUNT_SECTION = "account_section";
- public static final String PREF_SIGN_IN = "sign_in";
+ //public static final String PREF_SIGN_IN = "sign_in";
+// public static final String PREF_SIGN_IN = "sign_in";
public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
public static final String PREF_AUTOFILL_SETTINGS = "autofill_settings";
public static final String PREF_SEARCH_ENGINE = "search_engine";
public static final String PREF_SAVED_PASSWORDS = "saved_passwords";
public static final String PREF_CONTEXTUAL_SUGGESTIONS = "contextual_suggestions";
public static final String PREF_HOMEPAGE = "homepage";
- public static final String PREF_DATA_REDUCTION = "data_reduction";
+ //public static final String PREF_DATA_REDUCTION = "data_reduction";
+// public static final String PREF_DATA_REDUCTION = "data_reduction";
public static final String PREF_NOTIFICATIONS = "notifications";
public static final String PREF_LANGUAGES = "languages";
public static final String PREF_DOWNLOADS = "downloads";
@@ -111,11 +112,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
private final Map<String, Preference> mAllPreferences = new HashMap<>();
- private SignInPreference mSignInPreference;
+ //private SignInPreference mSignInPreference;
+// private SignInPreference mSignInPreference;
public MainPreferences() {
setHasOptionsMenu(true);
@@ -64,25 +64,29 @@ public class MainPreferences extends PreferenceFragment
@@ -65,25 +65,29 @@ public class MainPreferences extends PreferenceFragment
@Override
public void onDestroy() {
super.onDestroy();
@@ -146,7 +147,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
}
@Override
@@ -98,7 +102,7 @@ public class MainPreferences extends PreferenceFragment
@@ -96,9 +100,9 @@ public class MainPreferences extends PreferenceFragment
PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
cachePreferences();
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
+/* if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
- } else {
+ } else */{
getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
}
@@ -106,7 +110,7 @@ public class MainPreferences extends PreferenceFragment
setManagedPreferenceDelegateForPreference(PREF_SEARCH_ENGINE);
setManagedPreferenceDelegateForPreference(PREF_AUTOFILL_SETTINGS);
setManagedPreferenceDelegateForPreference(PREF_SAVED_PASSWORDS);
@@ -155,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// If we are on Android O+ the Notifications preference should lead to the Android
@@ -154,7 +158,7 @@ public class MainPreferences extends PreferenceFragment
@@ -162,7 +166,7 @@ public class MainPreferences extends PreferenceFragment
Preference preference = getPreferenceScreen().getPreference(index);
mAllPreferences.put(preference.getKey(), preference);
}
@@ -164,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
}
private void setManagedPreferenceDelegateForPreference(String key) {
@@ -163,12 +167,6 @@ public class MainPreferences extends PreferenceFragment
@@ -171,12 +175,6 @@ public class MainPreferences extends PreferenceFragment
}
private void updatePreferences() {
@@ -177,7 +190,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
updateSearchEnginePreference();
if (HomepageManager.shouldShowHomepageSetting()) {
@@ -190,9 +188,11 @@ public class MainPreferences extends PreferenceFragment
@@ -197,9 +195,11 @@ public class MainPreferences extends PreferenceFragment
removePreferenceIfPresent(PREF_CONTEXTUAL_SUGGESTIONS);
}
@@ -189,7 +202,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
}
private Preference addPreferenceIfAbsent(String key) {
@@ -263,9 +263,11 @@ public class MainPreferences extends PreferenceFragment
@@ -250,11 +250,11 @@ public class MainPreferences extends PreferenceFragment
private void onSignInPreferenceStateChanged() {
// Remove "Account" section header if the personalized sign-in promo is shown.
- if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
+// if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
- } else {
+/* } else {
addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
- }
+ }*/
}
// TemplateUrlService.LoadListener implementation.
@@ -279,9 +279,11 @@ public class MainPreferences extends PreferenceFragment
if (PREF_SAVED_PASSWORDS.equals(preference.getKey())) {
return PrefServiceBridge.getInstance().isRememberPasswordsManaged();
}
@@ -201,7 +229,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
return TemplateUrlService.getInstance().isDefaultSearchManaged();
}
@@ -283,11 +285,13 @@ public class MainPreferences extends PreferenceFragment
@@ -299,11 +301,13 @@ public class MainPreferences extends PreferenceFragment
return prefs.isRememberPasswordsManaged()
&& !prefs.isRememberPasswordsEnabled();
}
@@ -216,5 +244,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
return TemplateUrlService.getInstance().isDefaultSearchManaged();
}
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: Disable signin/data reduction promos
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -554,7 +554,7 @@ public class ChromeTabbedActivity
@@ -575,7 +575,7 @@ public class ChromeTabbedActivity
// TODO(tedchoc): Unify promo dialog logic as the search engine promo dialog checks
// might not have completed at this point and we could show multiple
// promos.
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
// Promo dialogs in multiwindow mode are broken on some devices: http://crbug.com/354696
boolean isLegacyMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(this);
if (!isShowingPromo && !mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete()
@@ -574,7 +574,7 @@ public class ChromeTabbedActivity
@@ -595,7 +595,7 @@ public class ChromeTabbedActivity
preferenceManager.setPromosSkippedOnFirstStart(true);
}
@@ -28,5 +28,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
}
--
2.7.4
2.11.0
@@ -0,0 +1,101 @@
From: Serg <serg.zhukovsky@gmail.com>
Date: Wed, 22 Mar 2017 19:10:30 -0400
Subject: Remove Sync and Translate menu
---
.../java/res/drawable-hdpi/settings_translate.png | Bin 399 -> 0 bytes
.../java/res/drawable-mdpi/settings_translate.png | Bin 284 -> 0 bytes
.../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
.../java/res/drawable-xxhdpi/settings_translate.png | Bin 793 -> 0 bytes
.../java/res/drawable-xxxhdpi/settings_translate.png | Bin 1038 -> 0 bytes
.../android/java/res/xml/site_settings_preferences.xml | 4 ++--
.../preferences/website/SiteSettingsPreferences.java | 14 +++++++-------
7 files changed, 9 insertions(+), 9 deletions(-)
delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
deleted file mode 100644
index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
deleted file mode 100644
index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
deleted file mode 100644
index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
deleted file mode 100644
index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
deleted file mode 100644
index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
index 81658269058c..346cdce944c6 100644
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
@@ -73,11 +73,11 @@
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
android:key="sound" />
<!-- Google Translate -->
- <Preference
+ <!-- Preference
android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
android:key="translate"
android:title="@string/google_translate"
- android:icon="@drawable/settings_translate" />
+ android:icon="@drawable/settings_translate" /-->
<!-- Storage -->
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
index bf12a5cab122..e3cc3d118294 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
@@ -89,7 +89,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
getPreferenceScreen().removePreference(findPreference(i));
}
getPreferenceScreen().removePreference(findPreference(MEDIA_KEY));
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
+// getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
} else {
// If both Autoplay and Protected Content menus are available, they'll be tucked under
// the Media key. Otherwise, we can remove the Media menu entry.
@@ -118,9 +118,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
}
// The new Languages Preference *feature* is an advanced version of this translate
// preference. Once Languages Preference is enabled, remove this setting.
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
- }
+// if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
+// getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
+// }
if (!ChromeFeatureList.isEnabled(ChromeFeatureList.GENERIC_SENSOR_EXTRA_CLASSES)) {
getPreferenceScreen().removePreference(
findPreference(SiteSettingsCategory.Type.SENSORS));
@@ -132,8 +132,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
// Translate preference.
- Preference translatePref = findPreference(TRANSLATE_KEY);
- if (translatePref != null) setTranslateStateSummary(translatePref);
+// Preference translatePref = findPreference(TRANSLATE_KEY);
+// if (translatePref != null) setTranslateStateSummary(translatePref);
// Preferences that navigate to Website Settings.
List<Integer> websitePrefs = new ArrayList<Integer>();
@@ -149,7 +149,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
if (!mProtectedContentMenuAvailable) {
websitePrefs.add(SiteSettingsCategory.Type.AUTOPLAY);
}
- websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
+ //websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
websitePrefs.add(SiteSettingsCategory.Type.CAMERA);
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
websitePrefs.add(SiteSettingsCategory.Type.CLIPBOARD);
--
2.11.0
@@ -1,177 +0,0 @@
From: Serg <serg.zhukovsky@gmail.com>
Date: Wed, 22 Mar 2017 19:10:30 -0400
Subject: Removed Sync and Translate menu
---
.../java/res/drawable-hdpi/settings_translate.png | Bin 399 -> 0 bytes
.../java/res/drawable-mdpi/settings_translate.png | Bin 284 -> 0 bytes
.../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
.../res/drawable-xxhdpi/settings_translate.png | Bin 793 -> 0 bytes
.../res/drawable-xxxhdpi/settings_translate.png | Bin 1038 -> 0 bytes
.../java/res/xml/site_settings_preferences.xml | 8 +++----
.../website/SiteSettingsPreferences.java | 26 ++++++++++-----------
headless/lib/browser/protocol/browser_handler.cc | 2 +-
8 files changed, 18 insertions(+), 18 deletions(-)
delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
deleted file mode 100644
index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
deleted file mode 100644
index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
deleted file mode 100644
index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
deleted file mode 100644
index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
deleted file mode 100644
index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
index 1159fd1..4a13a36 100644
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
@@ -44,9 +44,9 @@
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
android:key="ads" />
<!-- Background sync -->
- <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
+ <!--<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
- android:key="background_sync" />
+ android:key="background_sync" />-->
<!-- Protected content -->
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
@@ -66,11 +66,11 @@
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
android:key="sound" />
<!-- Google Translate -->
- <Preference
+ <!-- <Preference
android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
android:key="translate"
android:title="@string/google_translate"
- android:icon="@drawable/settings_translate" />
+ android:icon="@drawable/settings_translate" />-->
<!-- Storage -->
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
index 2da84aa9..f3ee0d2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
@@ -39,7 +39,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
static final String ALL_SITES_KEY = "all_sites";
static final String ADS_KEY = "ads";
static final String AUTOPLAY_KEY = "autoplay";
- static final String BACKGROUND_SYNC_KEY = "background_sync";
+ //static final String BACKGROUND_SYNC_KEY = "background_sync";
static final String CAMERA_KEY = "camera";
static final String CLIPBOARD_KEY = "clipboard";
static final String COOKIES_KEY = "cookies";
@@ -52,7 +52,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
static final String PROTECTED_CONTENT_KEY = "protected_content";
static final String SOUND_KEY = "sound";
static final String STORAGE_KEY = "use_storage";
- static final String TRANSLATE_KEY = "translate";
+ //static final String TRANSLATE_KEY = "translate";
static final String USB_KEY = "usb";
// Whether the Protected Content menu is available for display.
@@ -87,8 +87,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
return ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS;
} else if (AUTOPLAY_KEY.equals(key)) {
return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY;
- } else if (BACKGROUND_SYNC_KEY.equals(key)) {
- return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;
+ /*} else if (BACKGROUND_SYNC_KEY.equals(key)) {
+ return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;*/
} else if (CAMERA_KEY.equals(key)) {
return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
} else if (CLIPBOARD_KEY.equals(key)) {
@@ -127,7 +127,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
// menus.
getPreferenceScreen().removePreference(findPreference(ALL_SITES_KEY));
getPreferenceScreen().removePreference(findPreference(ADS_KEY));
- getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
+ //getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
getPreferenceScreen().removePreference(findPreference(CAMERA_KEY));
getPreferenceScreen().removePreference(findPreference(CLIPBOARD_KEY));
getPreferenceScreen().removePreference(findPreference(COOKIES_KEY));
@@ -139,7 +139,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
getPreferenceScreen().removePreference(findPreference(POPUPS_KEY));
getPreferenceScreen().removePreference(findPreference(SOUND_KEY));
getPreferenceScreen().removePreference(findPreference(STORAGE_KEY));
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
+ //getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
getPreferenceScreen().removePreference(findPreference(USB_KEY));
} else {
// If both Autoplay and Protected Content menus are available, they'll be tucked under
@@ -165,9 +165,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
}
// The new Languages Preference *feature* is an advanced version of this translate
// preference. Once Languages Preference is enabled, remove this setting.
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
+ /*if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
- }
+ }*/
}
}
@@ -175,10 +175,10 @@ public class SiteSettingsPreferences extends PreferenceFragment
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
// Translate preference.
- Preference translatePref = findPreference(TRANSLATE_KEY);
+ /*Preference translatePref = findPreference(TRANSLATE_KEY);
if (translatePref != null) {
setTranslateStateSummary(translatePref);
- }
+ }*/
// Preferences that navigate to Website Settings.
List<String> websitePrefs = new ArrayList<String>();
@@ -192,7 +192,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
// When showing the main menu, if Protected Content is not available, only Autoplay
// will be visible.
if (!mProtectedContentMenuAvailable) websitePrefs.add(AUTOPLAY_KEY);
- websitePrefs.add(BACKGROUND_SYNC_KEY);
+ //websitePrefs.add(BACKGROUND_SYNC_KEY);
websitePrefs.add(CAMERA_KEY);
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
websitePrefs.add(CLIPBOARD_KEY);
@@ -218,8 +218,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
checked = PrefServiceBridge.getInstance().adsEnabled();
} else if (AUTOPLAY_KEY.equals(prefName)) {
checked = PrefServiceBridge.getInstance().isAutoplayEnabled();
- } else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
- checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();
+ /*} else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
+ checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();*/
} else if (CAMERA_KEY.equals(prefName)) {
checked = PrefServiceBridge.getInstance().isCameraEnabled();
} else if (CLIPBOARD_KEY.equals(prefName)) {
diff --git a/headless/lib/browser/protocol/browser_handler.cc b/headless/lib/browser/protocol/browser_handler.cc
index 97ec5f5..955b233 100644
--- a/headless/lib/browser/protocol/browser_handler.cc
+++ b/headless/lib/browser/protocol/browser_handler.cc
@@ -71,7 +71,7 @@ Response BrowserHandler::Close() {
Response BrowserHandler::SetWindowBounds(
int window_id,
std::unique_ptr<Browser::Bounds> window_bounds) {
- HeadlessWebContentsImpl* web_contents = web_contents =
+ HeadlessWebContentsImpl* web_contents =
browser()->GetWebContentsForWindowId(window_id);
if (!web_contents)
return Response::Error("Browser window not found");
--
2.7.4
@@ -20,5 +20,5 @@ diff --git a/chrome/browser/tracing/crash_service_uploader.cc b/chrome/browser/t
progress_callback_ = progress_callback;
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: Hide "Send reports to Google"
diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
--- a/chrome/android/java/res/layout/fre_tosanduma.xml
+++ b/chrome/android/java/res/layout/fre_tosanduma.xml
@@ -70,7 +70,7 @@
@@ -71,7 +71,7 @@
android:layout_height="wrap_content"
android:lineSpacingMultiplier="1.4"
android:text="@string/fre_send_report_check"
@@ -19,5 +19,5 @@ diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/j
</LinearLayout>
</LinearLayout>
--
2.7.4
2.11.0
@@ -23,5 +23,5 @@ diff --git a/components/ntp_tiles/popular_sites_impl.cc b/components/ntp_tiles/p
prefs_->GetInt64(prefs::kPopularSitesLastDownloadPref));
const base::TimeDelta time_since_last_download =
--
2.7.4
2.11.0
@@ -10,7 +10,7 @@ Subject: ungoogled-chromium: Disable signin
diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc
--- a/chrome/browser/ui/chrome_pages.cc
+++ b/chrome/browser/ui/chrome_pages.cc
@@ -76,12 +76,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
@@ -72,12 +72,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
ShowSingletonTabOverwritingNTP(browser, std::move(params));
}
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
// Shows either the help app or the appropriate help page for |source|. If
// |browser| is NULL and the help page is used (vs the app), the help page is
// shown in the last active browser. If there is no such browser, a new browser
@@ -396,6 +390,7 @@ void ShowSearchEngineSettings(Browser* browser) {
@@ -384,6 +378,7 @@ void ShowSearchEngineSettings(Browser* browser) {
#if !defined(OS_ANDROID)
void ShowBrowserSignin(Browser* browser,
signin_metrics::AccessPoint access_point) {
@@ -31,8 +31,8 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
Profile* original_profile = browser->profile()->GetOriginalProfile();
SigninManagerBase* manager =
SigninManagerFactory::GetForProfile(original_profile);
@@ -444,6 +439,7 @@ void ShowBrowserSignin(Browser* browser,
profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN, browser, access_point);
@@ -435,6 +430,7 @@ void ShowBrowserSignin(Browser* browser,
access_point);
#endif
}
+#endif
@@ -52,5 +52,5 @@ diff --git a/components/signin/core/browser/signin_manager_base.cc b/components/
AccountInfo SigninManagerBase::GetAuthenticatedAccountInfo() const {
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: ungoogled-chromium: Disable webRTC log uploader
diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
+++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
@@ -114,30 +114,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
@@ -117,30 +117,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
DCHECK(meta_data.get());
DCHECK(!upload_done_data.log_path.empty());
@@ -41,7 +41,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
}
void WebRtcLogUploader::PrepareMultipartPostData(
@@ -148,6 +125,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
@@ -151,6 +128,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
DCHECK(!compressed_log.empty());
DCHECK(meta_data.get());
@@ -52,5 +52,5 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
SetupMultipart(post_data.get(), compressed_log,
upload_done_data.incoming_rtp_dump,
--
2.7.4
2.11.0
@@ -16,7 +16,7 @@ Disable additional URLs that are not caught by the "trk" scheme
diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/android/rlz/rlz_ping_handler.cc
--- a/chrome/browser/android/rlz/rlz_ping_handler.cc
+++ b/chrome/browser/android/rlz/rlz_ping_handler.cc
@@ -73,7 +73,7 @@ void RlzPingHandler::Ping(
@@ -75,7 +75,7 @@ void RlzPingHandler::Ping(
DCHECK_EQ(id.length(), 50u);
GURL request_url(base::StringPrintf(
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/and
diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc
--- a/chrome/browser/plugins/plugins_resource_service.cc
+++ b/chrome/browser/plugins/plugins_resource_service.cc
@@ -51,9 +51,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
@@ -53,9 +53,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
// Delay between calls to update the cache 1 day and 2 minutes in testing mode.
const int kCacheUpdateDelayMs = 24 * 60 * 60 * 1000;
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser
GURL GetPluginsServerURL() {
std::string filename;
#if defined(OS_WIN)
@@ -68,7 +65,7 @@ GURL GetPluginsServerURL() {
@@ -70,7 +67,7 @@ GURL GetPluginsServerURL() {
#error Unknown platform
#endif
@@ -132,5 +132,5 @@ diff --git a/rlz/lib/lib_values.h b/rlz/lib/lib_values.h
extern const int kFinancialPort;
--
2.7.4
2.11.0
@@ -4,9 +4,9 @@ Subject: ungoogled-chromium: Disable translate integration
---
components/translate/content/renderer/translate_helper.cc | 4 +++-
components/translate/core/browser/translate_manager.cc | 2 +-
components/translate/core/browser/translate_manager.cc | 5 +++--
components/translate/core/browser/translate_script.cc | 3 +--
3 files changed, 5 insertions(+), 4 deletions(-)
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/components/translate/content/renderer/translate_helper.cc b/components/translate/content/renderer/translate_helper.cc
--- a/components/translate/content/renderer/translate_helper.cc
@@ -25,19 +25,22 @@ diff --git a/components/translate/content/renderer/translate_helper.cc b/compone
diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
--- a/components/translate/core/browser/translate_manager.cc
+++ b/components/translate/core/browser/translate_manager.cc
@@ -131,7 +131,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
@@ -133,8 +133,9 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
if (net::NetworkChangeNotifier::IsOffline())
return;
- if (!ignore_missing_key_for_testing_ && !::google_apis::HasKeysConfigured()) {
+ if (true) {
- if (!ignore_missing_key_for_testing_ &&
- !::google_apis::HasAPIKeyConfigured()) {
+// if (!ignore_missing_key_for_testing_ &&
+// !::google_apis::HasAPIKeyConfigured()) {
+ if (true) {
// Without an API key, translate won't work, so don't offer to translate in
// the first place. Leave prefs::kOfferTranslateEnabled on, though, because
// that settings syncs and we don't want to turn off translate everywhere
diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc
--- a/components/translate/core/browser/translate_script.cc
+++ b/components/translate/core/browser/translate_script.cc
@@ -149,9 +149,8 @@ void TranslateScript::OnScriptFetchComplete(
@@ -152,9 +152,8 @@ void TranslateScript::OnScriptFetchComplete(bool success,
base::StringAppendF(&data_, "var serverParams = '%s';\n",
server_params.c_str());
@@ -49,5 +52,5 @@ diff --git a/components/translate/core/browser/translate_script.cc b/components/
// Append embedded translate.js and a remote element library.
base::StringPiece str =
--
2.7.4
2.11.0
@@ -31,5 +31,5 @@ diff --git a/chrome/browser/profiles/profile_avatar_downloader.cc b/chrome/brows
net::DefineNetworkTrafficAnnotation("profile_avatar", R"(
semantics {
--
2.7.4
2.11.0
@@ -12,7 +12,7 @@ See this page for more information: https://mikewest.org/2012/02/chrome-connects
diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intranet_redirect_detector.cc
--- a/chrome/browser/intranet_redirect_detector.cc
+++ b/chrome/browser/intranet_redirect_detector.cc
@@ -75,9 +75,7 @@ void IntranetRedirectDetector::FinishSleep() {
@@ -77,9 +77,7 @@ void IntranetRedirectDetector::FinishSleep() {
simple_loaders_.clear();
resulting_origins_.clear();
@@ -24,5 +24,5 @@ diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intra
DCHECK(simple_loaders_.empty() && resulting_origins_.empty());
--
2.7.4
2.11.0
@@ -309,7 +309,7 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
--- a/components/search_engines/template_url.cc
+++ b/components/search_engines/template_url.cc
@@ -498,11 +498,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
@@ -499,11 +499,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
bool TemplateURLRef::HasGoogleBaseURLs(
const SearchTermsData& search_terms_data) const {
ParseIfNecessary(search_terms_data);
@@ -355,5 +355,5 @@ diff --git a/net/base/url_util.cc b/net/base/url_util.cc
}
--
2.7.4
2.11.0
@@ -10,7 +10,7 @@ Disable Google Cloud Messaging (GCM) client
diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
--- a/components/gcm_driver/gcm_client_impl.cc
+++ b/components/gcm_driver/gcm_client_impl.cc
@@ -502,6 +502,7 @@ void GCMClientImpl::StartGCM() {
@@ -491,6 +491,7 @@ void GCMClientImpl::StartGCM() {
}
void GCMClientImpl::InitializeMCSClient() {
@@ -18,7 +18,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
std::vector<GURL> endpoints;
endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
@@ -699,6 +700,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
@@ -684,6 +685,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
}
void GCMClientImpl::StartCheckin() {
@@ -26,7 +26,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
// Make sure no checkin is in progress.
if (checkin_request_)
return;
@@ -777,6 +779,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
@@ -759,6 +761,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
}
void GCMClientImpl::SchedulePeriodicCheckin() {
@@ -35,5 +35,5 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
if (checkin_request_.get() || !device_checkin_info_.accounts_set)
return;
--
2.7.4
2.11.0
@@ -7,18 +7,18 @@ Somehow it is still being activated even without being signed-in.
See also: https://github.com/Eloston/ungoogled-chromium/issues/104
---
chrome/browser/browser_resources.grd | 2 --
.../component_extensions_whitelist/whitelist.cc | 1 -
.../signin/gaia_auth_extension_loader.cc | 7 ------
.../resources/component_extension_resources.grd | 2 --
chrome/browser/ui/webui/signin/inline_login_ui.cc | 1 -
google_apis/gaia/gaia_auth_fetcher.cc | 29 ----------------------
6 files changed, 42 deletions(-)
chrome/browser/browser_resources.grd | 2 --
chrome/browser/extensions/component_extensions_whitelist/whitelist.cc | 1 -
chrome/browser/extensions/signin/gaia_auth_extension_loader.cc | 3 ++-
chrome/browser/resources/component_extension_resources.grd | 2 --
chrome/browser/ui/webui/signin/inline_login_ui.cc | 1 -
google_apis/gaia/gaia_auth_fetcher.cc | 4 +++-
6 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -296,7 +296,6 @@
@@ -303,7 +303,6 @@
<include name="IDR_INLINE_LOGIN_HTML" file="resources\inline_login\inline_login.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
<include name="IDR_INLINE_LOGIN_CSS" file="resources\inline_login\inline_login.css" flattenhtml="true" type="BINDATA" />
<include name="IDR_INLINE_LOGIN_JS" file="resources\inline_login\inline_login.js" flattenhtml="true" type="BINDATA" />
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
<include name="IDR_INSPECT_CSS" file="resources\inspect\inspect.css" flattenhtml="true" type="BINDATA" />
<include name="IDR_INSPECT_HTML" file="resources\inspect\inspect.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
<include name="IDR_INSPECT_JS" file="resources\inspect\inspect.js" flattenhtml="true" type="BINDATA" />
@@ -431,7 +430,6 @@
@@ -444,7 +443,6 @@
<include name="IDR_WEBRTC_LOGS_JS" file="resources\media\webrtc_logs.js" type="BINDATA" />
<include name="IDR_WEBSTORE_MANIFEST" file="resources\webstore_app\manifest.json" type="BINDATA" />
<include name="IDR_CRYPTOTOKEN_MANIFEST" file="resources\cryptotoken\manifest.json" type="BINDATA" />
@@ -48,22 +48,20 @@ diff --git a/chrome/browser/extensions/component_extensions_whitelist/whitelist.
diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
--- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
+++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
@@ -42,18 +42,11 @@ extensions::ComponentLoader* GetComponentLoader(BrowserContext* context) {
@@ -42,7 +42,7 @@ ComponentLoader* GetComponentLoader(BrowserContext* context) {
void LoadGaiaAuthExtension(BrowserContext* context) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- extensions::ComponentLoader* component_loader = GetComponentLoader(context);
-
+/*
ComponentLoader* component_loader = GetComponentLoader(context);
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kAuthExtensionPath)) {
- base::FilePath auth_extension_path =
- command_line->GetSwitchValuePath(switches::kAuthExtensionPath);
- component_loader->Add(IDR_GAIA_AUTH_MANIFEST, auth_extension_path);
return;
}
-
- component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
- base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
@@ -55,6 +55,7 @@ void LoadGaiaAuthExtension(BrowserContext* context) {
component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
+*/
}
void UnloadGaiaAuthExtension(BrowserContext* context) {
@@ -82,7 +80,7 @@ diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome
diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
--- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
+++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
@@ -44,7 +44,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
@@ -49,7 +49,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
@@ -93,42 +91,31 @@ diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
--- a/google_apis/gaia/gaia_auth_fetcher.cc
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
@@ -248,35 +248,6 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
int load_flags,
@@ -39,7 +39,7 @@ namespace {
const int kLoadFlagsIgnoreCookies = net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES;
-const size_t kMaxMessageSize = 1024 * 1024; // 1MB
+//const size_t kMaxMessageSize = 1024 * 1024; // 1MB
static bool CookiePartsContains(const std::vector<std::string>& parts,
const char* part) {
@@ -251,6 +251,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
- fetcher_ = net::URLFetcher::Create(
- 0, gaia_gurl, body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST,
- this, traffic_annotation);
- fetcher_->SetRequestContext(getter_);
- fetcher_->SetUploadData("application/x-www-form-urlencoded", body);
- gaia::MarkURLFetcherAsGaia(fetcher_.get());
-
- VLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec();
- VLOG(2) << "Gaia fetcher headers: " << headers;
- VLOG(2) << "Gaia fetcher body: " << body;
-
- // The Gaia token exchange requests do not require any cookie-based
- // identification as part of requests. We suppress sending any cookies to
- // maintain a separation between the user's browsing and Chrome's internal
- // services. Where such mixing is desired (MergeSession or OAuthLogin), it
- // will be done explicitly.
- fetcher_->SetLoadFlags(load_flags);
-
- // Fetchers are sometimes cancelled because a network change was detected,
- // especially at startup and after sign-in on ChromeOS. Retrying once should
- // be enough in those cases; let the fetcher retry up to 3 times just in case.
- // http://crbug.com/163710
- fetcher_->SetAutomaticallyRetryOnNetworkChanges(3);
-
- if (!headers.empty())
- fetcher_->SetExtraRequestHeaders(headers);
-
- fetch_pending_ = true;
- fetcher_->Start();
+/*
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = gaia_gurl;
original_url_ = gaia_gurl;
@@ -299,6 +300,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
base::BindOnce(&GaiaAuthFetcher::OnURLLoadComplete,
base::Unretained(this)),
kMaxMessageSize);
+*/
}
// static
--
2.7.4
2.11.0
@@ -1,165 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 12 Feb 2018 21:45:21 +0100
Subject: ungoogled-chromium: Clear HTTP cache menu item
Adds a menu item under "More tools" to clear the HTTP authentication cache on demand
---
chrome/app/chrome_command_ids.h | 1 +
chrome/app/generated_resources.grd | 6 ++++++
chrome/browser/ui/browser_command_controller.cc | 7 +++++++
chrome/browser/ui/toolbar/app_menu_model.cc | 8 ++++++++
chrome/browser/ui/toolbar/app_menu_model.h | 1 +
chrome/browser/ui/views/frame/global_menu_bar_x11.cc | 1 +
net/http/http_auth_cache.cc | 1 +
tools/metrics/histograms/enums.xml | 1 +
tools/metrics/histograms/histograms.xml | 1 +
9 files changed, 27 insertions(+)
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
--- a/chrome/app/chrome_command_ids.h
+++ b/chrome/app/chrome_command_ids.h
@@ -152,6 +152,7 @@
#define IDC_DEV_TOOLS_INSPECT 40023
#define IDC_UPGRADE_DIALOG 40024
#define IDC_VIEW_INCOMPATIBILITIES 40025
+#define IDC_CLEAR_HTTP_AUTH_CACHE 40026
#define IDC_SHOW_KEYBOARD_OVERLAY 40027
#define IDC_PROFILING_ENABLED 40028
#define IDC_BOOKMARKS_MENU 40029
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -1058,6 +1058,9 @@ are declared in build/common.gypi.
<message name="IDS_CLEAR_BROWSING_DATA" desc="The text label for the menu item for clearing of browsing data">
&amp;Clear browsing data...
</message>
+ <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="The text label for the menu item for clearing the HTTP authentication cache">
+ Clear &amp;HTTP auth cache
+ </message>
<message name="IDS_SHOW_DOWNLOADS" desc="The show downloads menu in the app menu">
&amp;Downloads
</message>
@@ -1096,6 +1099,9 @@ are declared in build/common.gypi.
<message name="IDS_CLEAR_BROWSING_DATA" desc="In Title Case: The text label for the menu item for clearing of browsing data">
&amp;Clear Browsing Data...
</message>
+ <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="In Title Case: The text label for the menu item for clearing the HTTP authentication cache">
+ Clear &amp;HTTP Auth Cache
+ </message>
<message name="IDS_SHOW_DOWNLOADS" desc="In Title Case: The show downloads menu in the app menu">
&amp;Downloads
</message>
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -61,6 +61,9 @@
#include "extensions/browser/extension_system.h"
#include "printing/buildflags/buildflags.h"
#include "ui/events/keycodes/keyboard_codes.h"
+#include "net/url_request/url_request_context.h"
+#include "net/url_request/url_request_context_getter.h"
+#include "net/http/http_transaction_factory.h"
#if defined(OS_MACOSX)
#include "chrome/browser/ui/browser_commands_mac.h"
@@ -630,6 +633,9 @@ bool BrowserCommandController::ExecuteCommandWithDisposition(
case IDC_CLEAR_BROWSING_DATA:
ShowClearBrowsingDataDialog(browser_);
break;
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
+ profile()->GetRequestContext()->GetURLRequestContext()->http_transaction_factory()->GetSession()->http_auth_cache()->ClearAllEntries();
+ break;
case IDC_IMPORT_SETTINGS:
ShowImportDialog(browser_);
break;
@@ -874,6 +880,7 @@ void BrowserCommandController::InitCommandState() {
!profile()->IsOffTheRecord());
command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA,
!guest_session);
+ command_updater_.UpdateCommandEnabled(IDC_CLEAR_HTTP_AUTH_CACHE, true);
#if defined(OS_CHROMEOS)
command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true);
#else
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc
--- a/chrome/browser/ui/toolbar/app_menu_model.cc
+++ b/chrome/browser/ui/toolbar/app_menu_model.cc
@@ -215,6 +215,7 @@ void ToolsMenuModel::Build(Browser* browser) {
AddSeparator(ui::NORMAL_SEPARATOR);
AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
+ AddItemWithStringId(IDC_CLEAR_HTTP_AUTH_CACHE, IDS_CLEAR_HTTP_AUTH_CACHE);
AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
if (chrome::CanOpenTaskManager())
AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
@@ -475,6 +476,13 @@ void AppMenuModel::LogMenuMetrics(int command_id) {
}
LogMenuAction(MENU_ACTION_CLEAR_BROWSING_DATA);
break;
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ClearHttpAuthCache",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_CLEAR_HTTP_AUTH_CACHE);
+ break;
case IDC_VIEW_SOURCE:
if (!uma_action_recorded_)
UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ViewSource", delta);
diff --git a/chrome/browser/ui/toolbar/app_menu_model.h b/chrome/browser/ui/toolbar/app_menu_model.h
--- a/chrome/browser/ui/toolbar/app_menu_model.h
+++ b/chrome/browser/ui/toolbar/app_menu_model.h
@@ -76,6 +76,7 @@ enum AppMenuAction {
MENU_ACTION_OPEN_IN_CHROME = 48,
MENU_ACTION_SITE_SETTINGS = 49,
MENU_ACTION_APP_INFO = 50,
+ MENU_ACTION_CLEAR_HTTP_AUTH_CACHE = 51,
LIMIT_MENU_ACTION
};
diff --git a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
--- a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
+++ b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
@@ -225,6 +225,7 @@ GlobalMenuBarCommand tools_menu[] = {
{IDS_TASK_MANAGER, IDC_TASK_MANAGER},
{IDS_CLEAR_BROWSING_DATA, IDC_CLEAR_BROWSING_DATA},
+ {IDS_CLEAR_HTTP_AUTH_CACHE, IDC_CLEAR_HTTP_AUTH_CACHE},
{MENU_SEPARATOR, MENU_SEPARATOR},
diff --git a/net/http/http_auth_cache.cc b/net/http/http_auth_cache.cc
--- a/net/http/http_auth_cache.cc
+++ b/net/http/http_auth_cache.cc
@@ -250,6 +250,7 @@ bool HttpAuthCache::Remove(const GURL& origin,
return false;
}
}
+
return false;
}
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -49525,6 +49525,7 @@ Full version information for the fingerprint enum values:
<int value="48" label="Open in Chrome"/>
<int value="49" label="Site Settings"/>
<int value="50" label="App Info"/>
+ <int value="51" label="Clear HTTP auth cache"/>
</enum>
<enum name="XFrameOptions">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -111339,6 +111339,7 @@ uploading your change for review.
<suffix name="Overestimate"
label="Tracks when the compositor's estimates were too high and by how
much."/>
+ <suffix name="ClearHttpAuthCache" label="Clear HTTP authentication cache"/>
<suffix name="Underestimate"
label="Tracks when the compositor's estimates were too low and by how
much."/>
--
2.7.4
@@ -0,0 +1,676 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 25 Aug 2018 22:58:52 +0200
Subject: ungoogled-chromium: Disable domain reliability
---
components/domain_reliability/BUILD.gn | 42 +-
components/domain_reliability/bake_in_configs.py | 2 +-
components/domain_reliability/google_configs.cc | 565 -----------------------
components/domain_reliability/uploader.cc | 2 +-
4 files changed, 17 insertions(+), 594 deletions(-)
diff --git a/components/domain_reliability/BUILD.gn b/components/domain_reliability/BUILD.gn
--- a/components/domain_reliability/BUILD.gn
+++ b/components/domain_reliability/BUILD.gn
@@ -7,26 +7,6 @@ action("bake_in_configs") {
script = "bake_in_configs.py"
inputs = [
- "baked_in_configs/c_android_clients_google_com.json",
- "baked_in_configs/c_bigcache_googleapis_com.json",
- "baked_in_configs/c_doc-0-0-sj_sj_googleusercontent_com.json",
- "baked_in_configs/c_docs_google_com.json",
- "baked_in_configs/c_drive_google_com.json",
- "baked_in_configs/c_googlesyndication_com.json",
- "baked_in_configs/c_pack_google_com.json",
- "baked_in_configs/c_play_google_com.json",
- "baked_in_configs/c_youtube_com.json",
- "baked_in_configs/clients2_google_com.json",
- "baked_in_configs/docs_google_com.json",
- "baked_in_configs/gcp_gvt2_com.json",
- "baked_in_configs/gcp_gvt6_com.json",
- "baked_in_configs/google-analytics_com.json",
- "baked_in_configs/googlevideo_com.json",
- "baked_in_configs/gvt1_com.json",
- "baked_in_configs/gvt2_com.json",
- "baked_in_configs/gvt6_com.json",
- "baked_in_configs/ssl_gstatic_com.json",
- "baked_in_configs/www_google_com.json",
]
output_file = "$target_gen_dir/baked_in_configs.cc"
@@ -36,13 +16,21 @@ action("bake_in_configs") {
# The JSON file list is too long for the command line on Windows, so put
# them in a response file.
- response_file_contents = rebase_path(inputs, root_build_dir)
- args = [
- "--file-list",
- "{{response_file_name}}",
- "--output",
- rebase_path(output_file, root_build_dir),
- ]
+ if (is_win) {
+ args = [
+ "--file-list",
+ "nul",
+ "--output",
+ rebase_path(output_file, root_build_dir),
+ ]
+ } else {
+ args = [
+ "--file-list",
+ "/dev/null",
+ "--output",
+ rebase_path(output_file, root_build_dir),
+ ]
+ }
}
component("domain_reliability") {
diff --git a/components/domain_reliability/bake_in_configs.py b/components/domain_reliability/bake_in_configs.py
--- a/components/domain_reliability/bake_in_configs.py
+++ b/components/domain_reliability/bake_in_configs.py
@@ -489,7 +489,7 @@ def origin_is_whitelisted(origin):
domain = origin[8:-1]
else:
return False
- return any(domain == e or domain.endswith('.' + e) for e in DOMAIN_WHITELIST)
+ return False
def quote_and_wrap_text(text, width=79, prefix=' "', suffix='"'):
diff --git a/components/domain_reliability/google_configs.cc b/components/domain_reliability/google_configs.cc
--- a/components/domain_reliability/google_configs.cc
+++ b/components/domain_reliability/google_configs.cc
@@ -13,575 +13,10 @@
namespace domain_reliability {
-namespace {
-
-struct GoogleConfigParams {
- const char* hostname;
- bool include_subdomains;
-
- // If true, prepend a collector URL within https://|hostname|/.
- bool include_origin_specific_collector;
-
- // If true, also add a config for www.|hostname|.
- //
- // |include_subdomains| will be false in the extra config, but
- // |include_origin_specific_collector| will be respected, and will use the
- // www subdomain as the origin for the collector so it matches the config.
- bool duplicate_for_www;
-};
-
-const GoogleConfigParams kGoogleConfigs[] = {
- // Origins with subdomains and same-origin collectors. Currently, all
- // origins with same-origin collectors also run collectors on their www
- // subdomain. (e.g., both foo.com and www.foo.com.)
- {"google.ac", true, true, true},
- {"google.ad", true, true, true},
- {"google.ae", true, true, true},
- {"google.af", true, true, true},
- {"google.ag", true, true, true},
- {"google.al", true, true, true},
- {"google.am", true, true, true},
- {"google.as", true, true, true},
- {"google.at", true, true, true},
- {"google.az", true, true, true},
- {"google.ba", true, true, true},
- {"google.be", true, true, true},
- {"google.bf", true, true, true},
- {"google.bg", true, true, true},
- {"google.bi", true, true, true},
- {"google.bj", true, true, true},
- {"google.bs", true, true, true},
- {"google.bt", true, true, true},
- {"google.by", true, true, true},
- {"google.ca", true, true, true},
- {"google.cc", true, true, true},
- {"google.cd", true, true, true},
- {"google.cf", true, true, true},
- {"google.cg", true, true, true},
- {"google.ch", true, true, true},
- {"google.ci", true, true, true},
- {"google.cl", true, true, true},
- {"google.cm", true, true, true},
- {"google.cn", true, true, true},
- {"google.co.ao", true, true, true},
- {"google.co.bw", true, true, true},
- {"google.co.ck", true, true, true},
- {"google.co.cr", true, true, true},
- {"google.co.hu", true, true, true},
- {"google.co.id", true, true, true},
- {"google.co.il", true, true, true},
- {"google.co.im", true, true, true},
- {"google.co.in", true, true, true},
- {"google.co.je", true, true, true},
- {"google.co.jp", true, true, true},
- {"google.co.ke", true, true, true},
- {"google.co.kr", true, true, true},
- {"google.co.ls", true, true, true},
- {"google.co.ma", true, true, true},
- {"google.co.mz", true, true, true},
- {"google.co.nz", true, true, true},
- {"google.co.th", true, true, true},
- {"google.co.tz", true, true, true},
- {"google.co.ug", true, true, true},
- {"google.co.uk", true, true, true},
- {"google.co.uz", true, true, true},
- {"google.co.ve", true, true, true},
- {"google.co.vi", true, true, true},
- {"google.co.za", true, true, true},
- {"google.co.zm", true, true, true},
- {"google.co.zw", true, true, true},
- {"google.com.af", true, true, true},
- {"google.com.ag", true, true, true},
- {"google.com.ai", true, true, true},
- {"google.com.ar", true, true, true},
- {"google.com.au", true, true, true},
- {"google.com.bd", true, true, true},
- {"google.com.bh", true, true, true},
- {"google.com.bn", true, true, true},
- {"google.com.bo", true, true, true},
- {"google.com.br", true, true, true},
- {"google.com.by", true, true, true},
- {"google.com.bz", true, true, true},
- {"google.com.cn", true, true, true},
- {"google.com.co", true, true, true},
- {"google.com.cu", true, true, true},
- {"google.com.cy", true, true, true},
- {"google.com.do", true, true, true},
- {"google.com.ec", true, true, true},
- {"google.com.eg", true, true, true},
- {"google.com.et", true, true, true},
- {"google.com.fj", true, true, true},
- {"google.com.ge", true, true, true},
- {"google.com.gh", true, true, true},
- {"google.com.gi", true, true, true},
- {"google.com.gr", true, true, true},
- {"google.com.gt", true, true, true},
- {"google.com.hk", true, true, true},
- {"google.com.iq", true, true, true},
- {"google.com.jm", true, true, true},
- {"google.com.jo", true, true, true},
- {"google.com.kh", true, true, true},
- {"google.com.kw", true, true, true},
- {"google.com.lb", true, true, true},
- {"google.com.ly", true, true, true},
- {"google.com.mm", true, true, true},
- {"google.com.mt", true, true, true},
- {"google.com.mx", true, true, true},
- {"google.com.my", true, true, true},
- {"google.com.na", true, true, true},
- {"google.com.nf", true, true, true},
- {"google.com.ng", true, true, true},
- {"google.com.ni", true, true, true},
- {"google.com.np", true, true, true},
- {"google.com.nr", true, true, true},
- {"google.com.om", true, true, true},
- {"google.com.pa", true, true, true},
- {"google.com.pe", true, true, true},
- {"google.com.pg", true, true, true},
- {"google.com.ph", true, true, true},
- {"google.com.pk", true, true, true},
- {"google.com.pl", true, true, true},
- {"google.com.pr", true, true, true},
- {"google.com.py", true, true, true},
- {"google.com.qa", true, true, true},
- {"google.com.ru", true, true, true},
- {"google.com.sa", true, true, true},
- {"google.com.sb", true, true, true},
- {"google.com.sg", true, true, true},
- {"google.com.sl", true, true, true},
- {"google.com.sv", true, true, true},
- {"google.com.tj", true, true, true},
- {"google.com.tn", true, true, true},
- {"google.com.tr", true, true, true},
- {"google.com.tw", true, true, true},
- {"google.com.ua", true, true, true},
- {"google.com.uy", true, true, true},
- {"google.com.vc", true, true, true},
- {"google.com.ve", true, true, true},
- {"google.com.vn", true, true, true},
- {"google.cv", true, true, true},
- {"google.cz", true, true, true},
- {"google.de", true, true, true},
- {"google.dj", true, true, true},
- {"google.dk", true, true, true},
- {"google.dm", true, true, true},
- {"google.dz", true, true, true},
- {"google.ee", true, true, true},
- {"google.es", true, true, true},
- {"google.fi", true, true, true},
- {"google.fm", true, true, true},
- {"google.fr", true, true, true},
- {"google.ga", true, true, true},
- {"google.ge", true, true, true},
- {"google.gg", true, true, true},
- {"google.gl", true, true, true},
- {"google.gm", true, true, true},
- {"google.gp", true, true, true},
- {"google.gr", true, true, true},
- {"google.gy", true, true, true},
- {"google.hk", true, true, true},
- {"google.hn", true, true, true},
- {"google.hr", true, true, true},
- {"google.ht", true, true, true},
- {"google.hu", true, true, true},
- {"google.ie", true, true, true},
- {"google.im", true, true, true},
- {"google.iq", true, true, true},
- {"google.ir", true, true, true},
- {"google.is", true, true, true},
- {"google.it", true, true, true},
- {"google.it.ao", true, true, true},
- {"google.je", true, true, true},
- {"google.jo", true, true, true},
- {"google.jp", true, true, true},
- {"google.kg", true, true, true},
- {"google.ki", true, true, true},
- {"google.kz", true, true, true},
- {"google.la", true, true, true},
- {"google.li", true, true, true},
- {"google.lk", true, true, true},
- {"google.lt", true, true, true},
- {"google.lu", true, true, true},
- {"google.lv", true, true, true},
- {"google.md", true, true, true},
- {"google.me", true, true, true},
- {"google.mg", true, true, true},
- {"google.mk", true, true, true},
- {"google.ml", true, true, true},
- {"google.mn", true, true, true},
- {"google.ms", true, true, true},
- {"google.mu", true, true, true},
- {"google.mv", true, true, true},
- {"google.mw", true, true, true},
- {"google.ne", true, true, true},
- {"google.ne.jp", true, true, true},
- {"google.ng", true, true, true},
- {"google.nl", true, true, true},
- {"google.no", true, true, true},
- {"google.nr", true, true, true},
- {"google.nu", true, true, true},
- {"google.off.ai", true, true, true},
- {"google.pk", true, true, true},
- {"google.pl", true, true, true},
- {"google.pn", true, true, true},
- {"google.ps", true, true, true},
- {"google.pt", true, true, true},
- {"google.ro", true, true, true},
- {"google.rs", true, true, true},
- {"google.ru", true, true, true},
- {"google.rw", true, true, true},
- {"google.sc", true, true, true},
- {"google.se", true, true, true},
- {"google.sh", true, true, true},
- {"google.si", true, true, true},
- {"google.sk", true, true, true},
- {"google.sm", true, true, true},
- {"google.sn", true, true, true},
- {"google.so", true, true, true},
- {"google.sr", true, true, true},
- {"google.st", true, true, true},
- {"google.td", true, true, true},
- {"google.tg", true, true, true},
- {"google.tk", true, true, true},
- {"google.tl", true, true, true},
- {"google.tm", true, true, true},
- {"google.tn", true, true, true},
- {"google.to", true, true, true},
- {"google.tt", true, true, true},
- {"google.us", true, true, true},
- {"google.uz", true, true, true},
- {"google.vg", true, true, true},
- {"google.vu", true, true, true},
- {"google.ws", true, true, true},
- {"l.google.com", true, true, true},
-
- // google.com is a special case. We have a custom config for www.google.com,
- // so set generate_config_for_www_subdomain = false.
- {"google.com", true, true, false},
-
- // Origins with subdomains and without same-origin collectors.
- {"2mdn.net", true, false, false},
- {"adgoogle.net", true, false, false},
- {"admeld.com", true, false, false},
- {"admob.biz", true, false, false},
- {"admob.co.in", true, false, false},
- {"admob.co.kr", true, false, false},
- {"admob.co.nz", true, false, false},
- {"admob.co.uk", true, false, false},
- {"admob.co.za", true, false, false},
- {"admob.com", true, false, false},
- {"admob.com.br", true, false, false},
- {"admob.com.es", true, false, false},
- {"admob.com.fr", true, false, false},
- {"admob.com.mx", true, false, false},
- {"admob.com.pt", true, false, false},
- {"admob.de", true, false, false},
- {"admob.dk", true, false, false},
- {"admob.es", true, false, false},
- {"admob.fi", true, false, false},
- {"admob.fr", true, false, false},
- {"admob.gr", true, false, false},
- {"admob.hk", true, false, false},
- {"admob.ie", true, false, false},
- {"admob.in", true, false, false},
- {"admob.it", true, false, false},
- {"admob.jp", true, false, false},
- {"admob.kr", true, false, false},
- {"admob.mobi", true, false, false},
- {"admob.no", true, false, false},
- {"admob.ph", true, false, false},
- {"admob.pt", true, false, false},
- {"admob.sg", true, false, false},
- {"admob.tw", true, false, false},
- {"admob.us", true, false, false},
- {"admob.vn", true, false, false},
- {"adwhirl.com", true, false, false},
- {"ampproject.com", true, false, false},
- {"ampproject.net", true, false, false},
- {"ampproject.org", true, false, false},
- {"android.com", true, false, false},
- {"anycast-edge.metric.gstatic.com", true, false, false},
- {"anycast-stb.metric.gstatic.com", true, false, false},
- {"anycast.metric.gstatic.com", true, false, false},
- {"cdn.ampproject.org", true, false, false},
- {"chromecast.com", true, false, false},
- {"chromeexperiments.com", true, false, false},
- {"chromestatus.com", true, false, false},
- {"chromium.org", true, false, false},
- {"clients6.google.com", true, false, false},
- {"cloudendpointsapis.com", true, false, false},
- {"dartmotif.com", true, false, false},
- {"dartsearch.net", true, false, false},
- {"doubleclick.com", true, false, false},
- {"doubleclick.ne.jp", true, false, false},
- {"doubleclick.net", true, false, false},
- {"doubleclickusercontent.com", true, false, false},
- {"fls.doubleclick.net", true, false, false},
- {"g.co", true, false, false},
- {"g.doubleclick.net", true, false, false},
- {"ggpht.com", true, false, false},
- {"gmodules.com", true, false, false},
- {"goo.gl", true, false, false},
- {"google-syndication.com", true, false, false},
- {"google.cat", true, false, false},
- {"google.info", true, false, false},
- {"google.jobs", true, false, false},
- {"google.net", true, false, false},
- {"google.org", true, false, false},
- {"google.stackdriver.com", true, false, false},
- {"googleadapis.com", true, false, false},
- {"googleadservices.com", true, false, false},
- {"googleadsserving.cn", true, false, false},
- {"googlealumni.com", true, false, false},
- {"googleapis.cn", true, false, false},
- {"googleapis.com", true, false, false},
- {"googleapps.com", true, false, false},
- {"googlecbs.com", true, false, false},
- {"googlecode.com", true, false, false},
- {"googlecommerce.com", true, false, false},
- {"googledrive.com", true, false, false},
- {"googleenterprise.com", true, false, false},
- {"googlefiber.com", true, false, false},
- {"googlefiber.net", true, false, false},
- {"googlegoro.com", true, false, false},
- {"googlehosted.com", true, false, false},
- {"googlepayments.com", true, false, false},
- {"googlesource.com", true, false, false},
- {"googlesyndication.com", true, false, false},
- {"googletagmanager.com", true, false, false},
- {"googletagservices.com", true, false, false},
- {"googleusercontent.com", true, false, false},
- {"googlezip.net", true, false, false},
- {"gstatic.cn", true, false, false},
- {"gstatic.com", true, false, false},
- {"gvt3.com", true, false, false},
- {"gvt9.com", true, false, false},
- {"picasa.com", true, false, false},
- {"recaptcha.net", true, false, false},
- {"stackdriver.com", true, false, false},
- {"stbcast-stb.metric.gstatic.com", true, false, false},
- {"stbcast.metric.gstatic.com", true, false, false},
- {"stbcast2-stb.metric.gstatic.com", true, false, false},
- {"stbcast2.metric.gstatic.com", true, false, false},
- {"stbcast3-stb.metric.gstatic.com", true, false, false},
- {"stbcast3.metric.gstatic.com", true, false, false},
- {"stbcast4-stb.metric.gstatic.com", true, false, false},
- {"stbcast4.metric.gstatic.com", true, false, false},
- {"unicast-edge.metric.gstatic.com", true, false, false},
- {"unicast-stb.metric.gstatic.com", true, false, false},
- {"unicast.metric.gstatic.com", true, false, false},
- {"unicast2-stb.metric.gstatic.com", true, false, false},
- {"unicast2.metric.gstatic.com", true, false, false},
- {"waze.com", true, false, false},
- {"withgoogle.com", true, false, false},
- {"youtu.be", true, false, false},
- {"youtube-3rd-party.com", true, false, false},
- {"youtube-nocookie.com", true, false, false},
- {"youtube.ae", true, false, false},
- {"youtube.al", true, false, false},
- {"youtube.am", true, false, false},
- {"youtube.at", true, false, false},
- {"youtube.az", true, false, false},
- {"youtube.ba", true, false, false},
- {"youtube.be", true, false, false},
- {"youtube.bg", true, false, false},
- {"youtube.bh", true, false, false},
- {"youtube.bo", true, false, false},
- {"youtube.ca", true, false, false},
- {"youtube.cat", true, false, false},
- {"youtube.ch", true, false, false},
- {"youtube.cl", true, false, false},
- {"youtube.co", true, false, false},
- {"youtube.co.ae", true, false, false},
- {"youtube.co.at", true, false, false},
- {"youtube.co.hu", true, false, false},
- {"youtube.co.id", true, false, false},
- {"youtube.co.il", true, false, false},
- {"youtube.co.in", true, false, false},
- {"youtube.co.jp", true, false, false},
- {"youtube.co.ke", true, false, false},
- {"youtube.co.kr", true, false, false},
- {"youtube.co.ma", true, false, false},
- {"youtube.co.nz", true, false, false},
- {"youtube.co.th", true, false, false},
- {"youtube.co.ug", true, false, false},
- {"youtube.co.uk", true, false, false},
- {"youtube.co.ve", true, false, false},
- {"youtube.co.za", true, false, false},
- {"youtube.com", true, false, false},
- {"youtube.com.ar", true, false, false},
- {"youtube.com.au", true, false, false},
- {"youtube.com.az", true, false, false},
- {"youtube.com.bh", true, false, false},
- {"youtube.com.bo", true, false, false},
- {"youtube.com.br", true, false, false},
- {"youtube.com.by", true, false, false},
- {"youtube.com.co", true, false, false},
- {"youtube.com.do", true, false, false},
- {"youtube.com.ee", true, false, false},
- {"youtube.com.eg", true, false, false},
- {"youtube.com.es", true, false, false},
- {"youtube.com.gh", true, false, false},
- {"youtube.com.gr", true, false, false},
- {"youtube.com.gt", true, false, false},
- {"youtube.com.hk", true, false, false},
- {"youtube.com.hr", true, false, false},
- {"youtube.com.jm", true, false, false},
- {"youtube.com.jo", true, false, false},
- {"youtube.com.kw", true, false, false},
- {"youtube.com.lb", true, false, false},
- {"youtube.com.lv", true, false, false},
- {"youtube.com.mk", true, false, false},
- {"youtube.com.mt", true, false, false},
- {"youtube.com.mx", true, false, false},
- {"youtube.com.my", true, false, false},
- {"youtube.com.ng", true, false, false},
- {"youtube.com.om", true, false, false},
- {"youtube.com.pe", true, false, false},
- {"youtube.com.ph", true, false, false},
- {"youtube.com.pk", true, false, false},
- {"youtube.com.pt", true, false, false},
- {"youtube.com.qa", true, false, false},
- {"youtube.com.ro", true, false, false},
- {"youtube.com.sa", true, false, false},
- {"youtube.com.sg", true, false, false},
- {"youtube.com.tn", true, false, false},
- {"youtube.com.tr", true, false, false},
- {"youtube.com.tw", true, false, false},
- {"youtube.com.ua", true, false, false},
- {"youtube.com.uy", true, false, false},
- {"youtube.com.ve", true, false, false},
- {"youtube.cz", true, false, false},
- {"youtube.de", true, false, false},
- {"youtube.dk", true, false, false},
- {"youtube.ee", true, false, false},
- {"youtube.es", true, false, false},
- {"youtube.fi", true, false, false},
- {"youtube.fr", true, false, false},
- {"youtube.ge", true, false, false},
- {"youtube.gr", true, false, false},
- {"youtube.gt", true, false, false},
- {"youtube.hk", true, false, false},
- {"youtube.hr", true, false, false},
- {"youtube.hu", true, false, false},
- {"youtube.ie", true, false, false},
- {"youtube.in", true, false, false},
- {"youtube.is", true, false, false},
- {"youtube.it", true, false, false},
- {"youtube.jo", true, false, false},
- {"youtube.jp", true, false, false},
- {"youtube.kr", true, false, false},
- {"youtube.lk", true, false, false},
- {"youtube.lt", true, false, false},
- {"youtube.lv", true, false, false},
- {"youtube.ma", true, false, false},
- {"youtube.md", true, false, false},
- {"youtube.me", true, false, false},
- {"youtube.mk", true, false, false},
- {"youtube.mx", true, false, false},
- {"youtube.my", true, false, false},
- {"youtube.ng", true, false, false},
- {"youtube.nl", true, false, false},
- {"youtube.no", true, false, false},
- {"youtube.pe", true, false, false},
- {"youtube.ph", true, false, false},
- {"youtube.pk", true, false, false},
- {"youtube.pl", true, false, false},
- {"youtube.pr", true, false, false},
- {"youtube.pt", true, false, false},
- {"youtube.qa", true, false, false},
- {"youtube.ro", true, false, false},
- {"youtube.rs", true, false, false},
- {"youtube.ru", true, false, false},
- {"youtube.sa", true, false, false},
- {"youtube.se", true, false, false},
- {"youtube.sg", true, false, false},
- {"youtube.si", true, false, false},
- {"youtube.sk", true, false, false},
- {"youtube.sn", true, false, false},
- {"youtube.tn", true, false, false},
- {"youtube.ua", true, false, false},
- {"youtube.ug", true, false, false},
- {"youtube.uy", true, false, false},
- {"youtube.vn", true, false, false},
- {"youtubeeducation.com", true, false, false},
- {"youtubemobilesupport.com", true, false, false},
- {"ytimg.com", true, false, false},
-
- // Origins without subdomains and with same-origin collectors.
- {"accounts.google.com", false, true, false},
- {"apis.google.com", false, true, false},
- {"app.google.stackdriver.com", false, true, false},
- {"b.mail.google.com", false, true, false},
- {"chatenabled.mail.google.com", false, true, false},
- {"ddm.google.com", false, true, false},
- {"gmail.com", false, true, false},
- {"gmail.google.com", false, true, false},
- {"mail-attachment.googleusercontent.com", false, true, false},
- {"mail.google.com", false, true, false},
- {"www.gmail.com", false, true, false},
-
- // Origins without subdomains or same-origin collectors.
- {"ad.doubleclick.net", false, false, false},
- {"drive.google.com", false, false, false},
- {"redirector.googlevideo.com", false, false, false},
-};
-
-const char* const kGoogleStandardCollectors[] = {
- "https://beacons.gcp.gvt2.com/domainreliability/upload",
- "https://beacons.gvt2.com/domainreliability/upload",
- "https://beacons2.gvt2.com/domainreliability/upload",
- "https://beacons3.gvt2.com/domainreliability/upload",
- "https://beacons4.gvt2.com/domainreliability/upload",
- "https://beacons5.gvt2.com/domainreliability/upload",
- "https://beacons5.gvt3.com/domainreliability/upload",
- "https://clients2.google.com/domainreliability/upload",
-};
-
-const char* const kGoogleOriginSpecificCollectorPathString =
- "/domainreliability/upload";
-
-static std::unique_ptr<DomainReliabilityConfig> CreateGoogleConfig(
- const GoogleConfigParams& params,
- bool is_www) {
- if (is_www)
- DCHECK(params.duplicate_for_www);
-
- std::string hostname = (is_www ? "www." : "") + std::string(params.hostname);
- bool include_subdomains = params.include_subdomains && !is_www;
-
- std::unique_ptr<DomainReliabilityConfig> config(
- new DomainReliabilityConfig());
- config->origin = GURL("https://" + hostname + "/");
- config->include_subdomains = include_subdomains;
- config->collectors.clear();
- if (params.include_origin_specific_collector) {
- GURL::Replacements replacements;
- replacements.SetPathStr(kGoogleOriginSpecificCollectorPathString);
- config->collectors.push_back(
- std::make_unique<GURL>(config->origin.ReplaceComponents(replacements)));
- }
- for (size_t i = 0; i < arraysize(kGoogleStandardCollectors); i++)
- config->collectors.push_back(
- std::make_unique<GURL>(kGoogleStandardCollectors[i]));
- config->success_sample_rate = 0.05;
- config->failure_sample_rate = 1.00;
- config->path_prefixes.clear();
- return config;
-}
-
-} // namespace
-
// static
void GetAllGoogleConfigs(
std::vector<std::unique_ptr<DomainReliabilityConfig>>* configs_out) {
configs_out->clear();
-
- for (auto& params : kGoogleConfigs) {
- configs_out->push_back(CreateGoogleConfig(params, false));
- if (params.duplicate_for_www)
- configs_out->push_back(CreateGoogleConfig(params, true));
- }
}
} // namespace domain_reliability
diff --git a/components/domain_reliability/uploader.cc b/components/domain_reliability/uploader.cc
--- a/components/domain_reliability/uploader.cc
+++ b/components/domain_reliability/uploader.cc
@@ -82,7 +82,7 @@ class DomainReliabilityUploaderImpl
if (discard_uploads_)
discarded_upload_count_++;
- if (discard_uploads_ || shutdown_) {
+ if (true) {
VLOG(1) << "Discarding report instead of uploading.";
UploadResult result;
result.status = UploadResult::SUCCESS;
--
2.11.0
@@ -0,0 +1,27 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 17 Sep 2018 21:50:15 +0200
Subject: ungoogled-chromium: Disable Network Time Tracker
This connects to Google to check if the system time is correct when a website certificate
date seems incorrect, according to https://bugs.chromium.org/p/chromium/issues/detail?id=725232
Fixes https://github.com/Eloston/ungoogled-chromium/issues/302
---
components/network_time/network_time_tracker.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/network_time/network_time_tracker.cc b/components/network_time/network_time_tracker.cc
--- a/components/network_time/network_time_tracker.cc
+++ b/components/network_time/network_time_tracker.cc
@@ -277,7 +277,7 @@ void NetworkTimeTracker::UpdateNetworkTime(base::Time network_time,
}
bool NetworkTimeTracker::AreTimeFetchesEnabled() const {
- return base::FeatureList::IsEnabled(kNetworkTimeServiceQuerying);
+ return false;
}
NetworkTimeTracker::FetchBehavior NetworkTimeTracker::GetFetchBehavior() const {
--
2.11.0
@@ -0,0 +1,22 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 17 Sep 2018 21:55:33 +0200
Subject: ungoogled-chromium: Remove third_party/analytics
---
ui/webui/resources/webui_resources.grd | 1 -
1 file changed, 1 deletion(-)
diff --git a/ui/webui/resources/webui_resources.grd b/ui/webui/resources/webui_resources.grd
--- a/ui/webui/resources/webui_resources.grd
+++ b/ui/webui/resources/webui_resources.grd
@@ -15,7 +15,6 @@ without changes to the corresponding grd file. -->
<includes>
<include name="IDR_WEBUI_I18N_TEMPLATE_JS" file="js/i18n_template.js" flattenhtml="true" type="BINDATA" />
<include name="IDR_WEBUI_JSTEMPLATE_JS" file="js/jstemplate_compiled.js" flattenhtml="true" type="BINDATA" />
- <include name="IDR_WEBUI_ANALYTICS_JS" file="js/analytics.js" flattenhtml="true" type="BINDATA" compress="gzip" />
<!-- Roboto Font. Roboto-Regular and Roboto-Light is already available on
Android, and Roboto-Medium is not used on Android. All 6 weights of
Roboto are available on Chrome OS.-->
--
2.11.0
@@ -0,0 +1,108 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 17 Sep 2018 21:57:19 +0200
Subject: ungoogled-chromium: Always use local DevTools files instead of remote
files from Google
NOTE: This can break Remote Debugging
This also fixes local debugging with domain substitution
Related comment: https://bugs.chromium.org/p/chromium/issues/detail?id=710701#c14
---
third_party/blink/renderer/devtools/BUILD.gn | 6 ++----
third_party/blink/renderer/devtools/front_end/audits2_worker.json | 2 +-
third_party/blink/renderer/devtools/front_end/devtools_app.json | 6 +++---
third_party/blink/renderer/devtools/front_end/shell.json | 4 ++--
third_party/blink/renderer/devtools/front_end/worker_app.json | 2 +-
5 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/third_party/blink/renderer/devtools/BUILD.gn b/third_party/blink/renderer/devtools/BUILD.gn
--- a/third_party/blink/renderer/devtools/BUILD.gn
+++ b/third_party/blink/renderer/devtools/BUILD.gn
@@ -1147,10 +1147,8 @@ action("generate_devtools_grd") {
devtools_embedder_scripts +
[ "$resources_out_dir/devtools_extension_api.js" ]
- # Bundle remote modules in ChromeOS.
- if (is_chromeos) {
- grd_files += generated_remote_modules + devtools_emulated_devices_images
- }
+ # Always bundle remote modules.
+ grd_files += generated_remote_modules + devtools_emulated_devices_images
inputs = grd_files + devtools_image_files
outfile = "$root_gen_dir/devtools/devtools_resources.grd"
diff --git a/third_party/blink/renderer/devtools/front_end/audits2_worker.json b/third_party/blink/renderer/devtools/front_end/audits2_worker.json
--- a/third_party/blink/renderer/devtools/front_end/audits2_worker.json
+++ b/third_party/blink/renderer/devtools/front_end/audits2_worker.json
@@ -1,6 +1,6 @@
{
"modules": [
{ "name": "worker_service", "type": "autostart" },
- { "name": "audits2_worker", "type": "remote" }
+ { "name": "audits2_worker" }
]
}
diff --git a/third_party/blink/renderer/devtools/front_end/devtools_app.json b/third_party/blink/renderer/devtools/front_end/devtools_app.json
--- a/third_party/blink/renderer/devtools/front_end/devtools_app.json
+++ b/third_party/blink/renderer/devtools/front_end/devtools_app.json
@@ -5,7 +5,7 @@
{ "name": "mobile_throttling", "type": "autostart" },
{ "name": "browser_components", "type": "autostart" },
- { "name": "accessibility", "type": "remote" },
+ { "name": "accessibility" },
{ "name": "animation" },
{ "name": "audits2" },
{ "name": "browser_console" },
@@ -13,14 +13,14 @@
{ "name": "cookie_table" },
{ "name": "devices" },
{ "name": "elements" },
- { "name": "emulated_devices" , "type": "remote" },
+ { "name": "emulated_devices" },
{ "name": "har_importer" },
{ "name": "help" },
{ "name": "layers" },
{ "name": "layer_viewer" },
{ "name": "network" },
{ "name": "performance_monitor" },
- { "name": "product_registry_impl", "type": "remote" },
+ { "name": "product_registry_impl" },
{ "name": "resources" },
{ "name": "security" },
{ "name": "timeline" },
diff --git a/third_party/blink/renderer/devtools/front_end/shell.json b/third_party/blink/renderer/devtools/front_end/shell.json
--- a/third_party/blink/renderer/devtools/front_end/shell.json
+++ b/third_party/blink/renderer/devtools/front_end/shell.json
@@ -21,7 +21,7 @@
{ "name": "changes" },
{ "name": "cm" },
- { "name": "cm_modes", "type": "remote" },
+ { "name": "cm_modes" },
{ "name": "color_picker" },
{ "name": "console" },
{ "name": "coverage" },
@@ -41,7 +41,7 @@
{ "name": "snippets" },
{ "name": "source_frame" },
{ "name": "sources" },
- { "name": "terminal", "type": "remote" },
+ { "name": "terminal" },
{ "name": "text_editor" },
{ "name": "workspace_diff" },
{ "name": "protocol_monitor"}
diff --git a/third_party/blink/renderer/devtools/front_end/worker_app.json b/third_party/blink/renderer/devtools/front_end/worker_app.json
--- a/third_party/blink/renderer/devtools/front_end/worker_app.json
+++ b/third_party/blink/renderer/devtools/front_end/worker_app.json
@@ -12,7 +12,7 @@
{ "name": "help" },
{ "name": "layer_viewer" },
{ "name": "network" },
- { "name": "product_registry_impl", "type": "remote" },
+ { "name": "product_registry_impl" },
{ "name": "resources" },
{ "name": "timeline" },
{ "name": "timeline_model" }
--
2.11.0
@@ -9,7 +9,7 @@ Subject: Disable Omaha update checks
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
@@ -132,7 +132,7 @@ public class OmahaBase {
@@ -134,7 +134,7 @@ public class OmahaBase {
/** See {@link #sIsDisabled}. */
static boolean isDisabled() {
@@ -19,5 +19,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase
/**
--
2.7.4
2.11.0
@@ -711,5 +711,5 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
--
2.7.4
2.11.0
@@ -15,12 +15,12 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
// Increment this if you change the data in ways that mean users with
// existing data should get a new version.
- "kCurrentDataVersion": 102
+ "kCurrentDataVersion": 103
- "kCurrentDataVersion": 103
+ "kCurrentDataVersion": 104
},
// The following engines are included in country lists and are added to the
@@ -232,6 +232,16 @@
@@ -247,6 +247,16 @@
"id": 56
},
@@ -710,5 +710,5 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
--
2.7.4
2.11.0
@@ -17,12 +17,12 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
// Increment this if you change the data in ways that mean users with
// existing data should get a new version.
- "kCurrentDataVersion": 103
+ "kCurrentDataVersion": 104
- "kCurrentDataVersion": 104
+ "kCurrentDataVersion": 105
},
// The following engines are included in country lists and are added to the
@@ -154,6 +154,27 @@
@@ -159,6 +159,27 @@
"id": 1
},
@@ -723,5 +723,5 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
--
2.7.4
2.11.0
@@ -3,10 +3,10 @@ Date: Mon, 12 Mar 2018 20:31:44 +0100
Subject: Add Qwant search engine
---
.../search_engines/prepopulated_engines.json | 13 +-
.../search_engines/prepopulated_engines.json | 24 ++-
components/search_engines/search_engine_type.h | 1 +
.../template_url_prepopulate_data.cc | 218 ++++++++++-----------
3 files changed, 122 insertions(+), 110 deletions(-)
3 files changed, 133 insertions(+), 110 deletions(-)
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
--- a/components/search_engines/prepopulated_engines.json
@@ -15,15 +15,26 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
// Increment this if you change the data in ways that mean users with
// existing data should get a new version.
- "kCurrentDataVersion": 104
+ "kCurrentDataVersion": 105
- "kCurrentDataVersion": 105
+ "kCurrentDataVersion": 106
},
// The following engines are included in country lists and are added to the
@@ -939,6 +939,17 @@
@@ -954,6 +954,28 @@
"id": 6
},
+ "qwant": {
+ "name": "Qwant",
+ "keyword": "qwant.com",
+ "favicon_url": "https://www.qwant.com/favicon.ico",
+ "search_url": "https://www.qwant.com/?client=opensearch&q={searchTerms}",
+ "suggest_url": "https://api.qwant.com/api/suggest/?client=opensearch&q={searchTerms}",
+ "image_url": "https://www.qwant.com/?t=images&q={searchTerms}",
+ "type": "SEARCH_ENGINE_QWANT",
+ "id": 14
+ },
+
+ "qwant": {
+ "name": "Qwant",
+ "keyword": "qwant.com",
@@ -711,5 +722,5 @@ diff --git a/components/search_engines/template_url_prepopulate_data.cc b/compon
&yahoo, &yahoo_ar, &yahoo_at, &yahoo_au, &yahoo_br, &yahoo_ca, &yahoo_ch,
&yahoo_cl, &yahoo_co, &yahoo_de, &yahoo_dk, &yahoo_es, &yahoo_fi, &yahoo_fr,
--
2.7.4
2.11.0
@@ -1,61 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 28 Oct 2017 10:09:41 +0200
Subject: Cure AMP and tracking from search results
---
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
third_party/blink/renderer/core/dom/document.cc | 20 +++++++++++++++++++-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -147,6 +147,7 @@ blink_core_sources("dom") {
"events/tree_scope_event_context.h",
"events/window_event_context.cc",
"events/window_event_context.h",
+ "extensions/dont-track-me.h",
"exception_code.h",
"first_letter_pseudo_element.cc",
"first_letter_pseudo_element.h",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -277,6 +277,8 @@
#include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
#include "third_party/blink/renderer/platform/wtf/time.h"
+#include "extensions/anti_amp_cure.h"
+
#ifndef NDEBUG
using WeakDocumentSet =
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
@@ -5882,8 +5884,24 @@ void Document::FinishedParsing() {
fetcher_->ClearResourcesFromPreviousFetcher();
}
- if (IsPrefetchOnly())
+ if (IsPrefetchOnly()) {
WebPrerenderingSupport::Current()->PrefetchFinished();
+ return;
+ }
+
+ // determine whether this is a Google search results page
+ const SecurityOrigin *origin = GetSecurityOrigin();
+ if (origin) {
+ WTF::String domain = origin->Domain();
+ size_t pos = domain.Find(".google.");
+ auto* bodyElement = body();
+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(ANTI_AMP_CURE_JS);
+ bodyElement->AppendChild(e);
+ }
+ }
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
--
2.7.4
@@ -9,7 +9,7 @@ Subject: Fix crash when accessing page info / site settings
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
--- a/chrome/browser/permissions/permission_manager.cc
+++ b/chrome/browser/permissions/permission_manager.cc
@@ -632,6 +632,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
@@ -633,6 +633,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
GURL canonical_requesting_origin =
GetCanonicalOrigin(requesting_origin, embedding_origin);
PermissionContextBase* context = GetPermissionContext(permission);
@@ -20,5 +20,5 @@ diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/p
render_frame_host, canonical_requesting_origin.GetOrigin(),
embedding_origin.GetOrigin());
--
2.7.4
2.11.0
@@ -1,66 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 18 Feb 2018 22:15:25 +0100
Subject: Play videos in background
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com
Original Javascript code by timdream
---
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
third_party/blink/renderer/core/dom/document.cc | 17 +++++++++++++----
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -148,6 +148,7 @@ blink_core_sources("dom") {
"events/window_event_context.cc",
"events/window_event_context.h",
"extensions/dont-track-me.h",
+ "extensions/video-bg-play.h",
"exception_code.h",
"first_letter_pseudo_element.cc",
"first_letter_pseudo_element.h",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -222,6 +222,7 @@
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+#include "extensions/video_bg_play.h"
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
@@ -5891,17 +5892,25 @@ void Document::FinishedParsing() {
// determine whether this is a Google search results page
const SecurityOrigin *origin = GetSecurityOrigin();
- if (origin) {
+ auto* bodyElement = body();
+ if (origin && bodyElement) {
WTF::String domain = origin->Domain();
size_t pos = domain.Find(".google.");
- auto* bodyElement = body();
- if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
+ if ((pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
e->setText(ANTI_AMP_CURE_JS);
bodyElement->AppendChild(e);
}
- }
+
+ // check for eligibility of the video bg fix
+ if ((WTF::kNotFound != domain.Find("youtube.com")) || (WTF::kNotFound != domain.Find("vimeo.com"))) {
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(VIDEO_BG_PLAY_JS);
+ bodyElement->AppendChild(e);
+ }
+ } // has origin and body element
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
--
2.7.4
@@ -59,7 +59,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
# GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
if (!is_win || is_clang) {
cflags += [
@@ -128,6 +143,14 @@ source_set("common") {
@@ -129,6 +144,14 @@ source_set("common") {
}
include_dirs = openh264_common_include_dirs
@@ -74,7 +74,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":config" ]
@@ -154,6 +177,14 @@ source_set("processing") {
@@ -155,6 +178,14 @@ source_set("processing") {
}
include_dirs = openh264_processing_include_dirs
@@ -89,7 +89,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":config" ]
@@ -173,6 +204,14 @@ source_set("encoder") {
@@ -174,6 +205,14 @@ source_set("encoder") {
}
include_dirs = openh264_encoder_include_dirs
@@ -105,5 +105,5 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":config" ]
--
2.7.4
2.11.0
@@ -0,0 +1,106 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 28 Oct 2017 10:09:41 +0200
Subject: Inject scripts for AMP, tracking, ads and video functionality
Remove AMP, tracking and ads from search results
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to
allow playing videos in background (original Javascript code by timdream)
---
third_party/blink/renderer/core/dom/BUILD.gn | 2 ++
third_party/blink/renderer/core/dom/document.cc | 28 +++++++++++++++++++++-
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 +++++
.../renderer/core/dom/extensions/video_bg_play.h | 6 +++++
4 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -147,6 +147,8 @@ blink_core_sources("dom") {
"global_event_handlers.h",
"icon_url.cc",
"icon_url.h",
+ "extensions/dont-track-me.h",
+ "extensions/video-bg-play.h",
"id_target_observer.cc",
"id_target_observer.h",
"id_target_observer_registry.cc",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -223,6 +223,7 @@
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+#include "extensions/video_bg_play.h"
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/paint_layer.h"
@@ -282,6 +283,8 @@
#include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
#include "third_party/blink/renderer/platform/wtf/time.h"
+#include "extensions/anti_amp_cure.h"
+
#ifndef NDEBUG
using WeakDocumentSet =
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
@@ -5926,8 +5929,31 @@ void Document::FinishedParsing() {
fetcher_->ClearResourcesFromPreviousFetcher();
}
- if (IsPrefetchOnly())
+ if (IsPrefetchOnly()) {
WebPrerenderingSupport::Current()->PrefetchFinished();
+ return;
+ }
+
+ // determine whether this is a Google search results page
+ const WTF::String& host = url_.Host();
+ auto* bodyElement = body();
+ if (bodyElement) {
+ size_t pos = host.Find(".google.");
+ if ((pos != WTF::kNotFound) && (host.length() - pos - 8 < 4)) {
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(ANTI_AMP_CURE_JS);
+ bodyElement->AppendChild(e);
+ }
+
+ // check for eligibility of the video bg fix
+ if ((WTF::kNotFound != host.Find("youtube.com")) || (WTF::kNotFound != host.Find("vimeo.com"))) {
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(VIDEO_BG_PLAY_JS);
+ bodyElement->AppendChild(e);
+ }
+ } // has origin and body element
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
diff --git a/third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h b/third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
new file mode 100644
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
@@ -0,0 +1,6 @@
+#ifndef anti_amp_cure_h
+#define anti_amp_cure_h
+
+#define ANTI_AMP_CURE_JS "/* Bromite click-tracking and AMP removal v0.3.5 */\n\nfunction recreateHyperlink(a) {\n // skip already-sanitized hyperlinks\n if (a.sane) return false;\n\n // create new A element - old one has event listeners attached\n var newA = document.createElement('a');\n newA.referrerPolicy = 'origin';\n // property set when hyperlink has been created by this script\n newA.sane = 1;\n\n // remove AMP class, get actual page URL\n var ampCur = a.getAttribute('data-amp-cur');\n if (ampCur) {\n newA.href = ampCur;\n a.classList.remove('amp_r');\n } else {\n var realLink = getRealLinkFromGoogleUrl(a);\n if (realLink) {\n newA.href = realLink;\n } else {\n // might not be an actual hyperlink, ignore it\n if (!a.href) {\n return false;\n }\n // leave original href unchanged\n newA.href = a.href;\n }\n }\n // copy CSS classes\n newA.className = a.className;\n\n // copy nodes inside the hyperlink\n while (a.firstChild) {\n newA.appendChild(a.lastChild);\n }\n // replace hyperlink\n a.parentNode.replaceChild(newA, a);\n return true;\n}\n\nfunction isResult(a) {\n if (a.getAttribute('data-amp-cur'))\n return true;\n var inlineMousedown = a.getAttribute('onmousedown');\n if (!inlineMousedown)\n\treturn false;\n // return rwt(....); // E.g Google search results.\n // return google.rwt(...); // E.g. sponsored search results\n // return google.arwt(this); // E.g. sponsored search results (dec 2016).\n return /\\ba?rwt\\(/.test(inlineMousedown) || /\\bctpacw\\b/.test(inlineMousedown);\n}\n\n/**\n * @returns {String} the real URL if the given link is a Google redirect URL.\n */\nfunction getRealLinkFromGoogleUrl(a) {\n if ((a.hostname === location.hostname || a.hostname.indexOf('www.google.') == 0) &&\n /^\\/(local_)?url$/.test(a.pathname)) {\n // Google Maps / Dito (/local_url?q=<url>)\n // Mobile (/url?q=<url>)\n var url = /[?&](?:q|url)=((?:https?|ftp)[%:][^&]+)/.exec(a.search);\n if (url) {\n return decodeURIComponent(url[1]);\n }\n // Help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...)\n url = /[?&](?:q|url)=((?:%2[Ff]|\\/)[^&]+)/.exec(a.search);\n if (url) {\n return a.origin + decodeURIComponent(url[1]);\n }\n }\n}\n\nfunction sanitizeAds() {\n // scan all divs\n var div = document.getElementById('tads');\n if (div) {\n div.style.display = 'none';\n\treturn true;\n }\n return false;\n}\n\nfunction sanitizeAll() {\n console.log(\"ads removed: \", sanitizeAds());\n console.log(\"hyperlinks sanitized: \", sanitizeAllHyperlinks(document));\n}\n\nfunction hookMoreResults() {\n var extrares = document.getElementById('extrares');\n if (!extrares) {\n console.log(\"could not hook more results\");\n return;\n }\n // mutation observers are great but they don't work\n extrares.addEventListener(\"DOMNodeInserted\", function(e) {\n var node = e.target;\n if (node.id && node.id.startsWith(\"arc-srp\"))\n console.log(\"hyperlinks sanitized on new result node: \", sanitizeAllHyperlinks(node));\n });\n}\n\nfunction setMlogoClick() {\n var mlogo = document.getElementById('qslc');\n if (mlogo && mlogo.children[0]) {\n mlogo = mlogo.children[0];\n mlogo.removeAttribute(\"href\");\n mlogo.setAttribute(\"onclick\", \"sanitizeAll()\");\n console.log(\"logo link replaced\");\n } else {\n console.log(\"could not replace logo link\");\n }\n}\n\nfunction sanitizeAllHyperlinks(rootNode) {\n var saned = 0, total = 0;\n rootNode.querySelectorAll('div[data-hveid]:not([data-hveid=\"\"]) a').forEach(function(a) {\n\ttotal++;\n\tvar res = recreateHyperlink(a);\n\tif (res) saned++;\n });\n console.log(\"sanitized \", saned, \"/\", total, \" hyperlinks\");\n\n return saned;\n}\n\n// avoid running cleanup on non-search pages\nif ((document.location.host.indexOf(\"images.google.\") == -1) && (document.location.host.indexOf(\"news.google.\") == -1)) {\n sanitizeAll();\n}\nsetMlogoClick();\n\nhookMoreResults();\n"
+
+#endif // anti_amp_cure_h
diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
new file mode 100644
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
@@ -0,0 +1,6 @@
+#ifndef video_bg_play_h
+#define video_bg_play_h
+
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
+
+#endif // video_bg_play_h
--
2.11.0
@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -871,6 +871,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
@@ -862,6 +862,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
return pipeline_metadata_.has_audio;
}
@@ -23,7 +23,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
DCHECK(main_task_runner_->BelongsToCurrentThread());
@@ -2940,7 +2946,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
@@ -2953,7 +2959,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
// If suspending background video, pause any video that's not remoted or
// not unlocked to play in the background.
if (IsBackgroundedSuspendEnabled()) {
@@ -48,5 +48,5 @@ diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl
void EnabledAudioTracksChanged(
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds)
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: Open YouTube links in Bromite
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
@@ -363,6 +363,13 @@ public class ExternalNavigationHandler {
@@ -384,6 +384,13 @@ public class ExternalNavigationHandler {
return OverrideUrlLoadingResult.NO_OVERRIDE;
}
@@ -24,5 +24,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/Ext
// security (only access to BROWSABLE activities).
intent.addCategory(Intent.CATEGORY_BROWSABLE);
--
2.7.4
2.11.0
@@ -2,11 +2,13 @@ From: Serg <serg.zhukovsky@gmail.com>
Date: Tue, 31 Jan 2017 22:12:27 -0500
Subject: Add exit menu item
Corrected Exit functionality
---
chrome/android/java/res/menu/main_menu.xml | 2 ++
.../android/java/src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
3 files changed, 7 insertions(+)
chrome/android/java/res/menu/main_menu.xml | 2 ++
.../java/src/org/chromium/chrome/browser/ChromeActivity.java | 2 ++
.../org/chromium/chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
chrome/android/java/strings/android_chrome_strings.grd | 3 +++
4 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
@@ -23,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -1986,6 +1986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2022,6 +2022,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
RecordUserAction.record("MobileMenuSettings");
} else if (id == R.id.show_menu) {
showAppMenuForKeyboardEvent();
@@ -32,10 +34,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
} else if (id == R.id.find_in_page_id) {
if (mFindToolbarManager == null) return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLifetimeController.java
@@ -87,7 +87,11 @@ class ChromeLifetimeController implements ApplicationLifetime.Observer,
// Kick off a timer to kill the process after a delay, which fires only if the Activities
// take too long to be finished.
- mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
+ if (restart) {
+ mHandler.postDelayed(mRestartRunnable, WATCHDOG_DELAY_MS);
+ } else {
+ fireBrowserRestartActivityIntent();
+ }
}
@Override
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2678,6 +2678,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
@@ -2837,6 +2837,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
<message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
Settings
</message>
@@ -46,5 +64,5 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
Close all tabs
</message>
--
2.7.4
2.11.0
@@ -24,7 +24,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2010,15 +2010,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2046,15 +2046,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
final Tab currentTab = getActivityTab();
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -1038,7 +1038,7 @@ public class CustomTabActivity extends ChromeActivity {
@@ -1219,7 +1219,7 @@ public class CustomTabActivity extends ChromeActivity {
public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
// Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id
@@ -66,5 +66,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
|| id == R.id.open_history_menu_id) {
return true;
--
2.7.4
2.11.0
@@ -1,189 +0,0 @@
From: NoChromo <nochromo@nochromo.com>
Date: Sun, 3 Apr 2016 12:44:50 +0800
Subject: url_request: hooks and ad url data
---
net/BUILD.gn | 2 +
net/url_request/nochromo_intercept.cc | 116 ++++++++++++++++++++++++++++++++++
net/url_request/nochromo_intercept.h | 13 ++++
net/url_request/url_request.cc | 4 ++
4 files changed, 135 insertions(+)
create mode 100644 net/url_request/nochromo_intercept.cc
create mode 100644 net/url_request/nochromo_intercept.h
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1734,6 +1734,8 @@ component("net") {
"url_request/url_fetcher_response_writer.h",
"url_request/url_range_request_job.cc",
"url_request/url_range_request_job.h",
+ "url_request/nochromo_intercept.cc",
+ "url_request/nochromo_intercept.h",
"url_request/url_request.cc",
"url_request/url_request.h",
"url_request/url_request_context.cc",
diff --git a/net/url_request/nochromo_intercept.cc b/net/url_request/nochromo_intercept.cc
new file mode 100644
--- /dev/null
+++ b/net/url_request/nochromo_intercept.cc
@@ -0,0 +1,116 @@
+#include "url/gurl.h"
+#include "net/url_request/nochromo_entries.h"
+
+#include <android/log.h>
+
+namespace net {
+
+#define NOCHROMO_LOG 0
+#define NOCHROMO_LOG_MORE 0
+
+static char* strtolower(const char* str) {
+ int len = strlen(str);
+ char* ret = (char*)malloc(len + 1);
+ ret[len] = '\0';
+ for (int i = 0; i < len; i++) {
+ if ((65 <= str[i]) && (str[i] <= 90)) {
+ ret[i] = str[i] + 32;
+ } else {
+ ret[i] = str[i];
+ }
+ }
+ return ret;
+}
+
+static char* strtosep(const char* str) {
+ int len = strlen(str);
+ char* ret = (char*)malloc(len + 3);
+ ret[0] = '^';
+ ret[len + 1] = '^';
+ ret[len + 2] = '\0';
+ for (int i = 0; i < len; i++) {
+ if ((str[i] == ':') || (str[i] == '/') || (str[i] == '?') || (str[i] == '&') || (str[i] == '=')) {
+ ret[i + 1] = '^';
+ } else {
+ ret[i + 1] = str[i];
+ }
+ }
+ return ret;
+}
+
+int nochromo_intercept(const GURL& url) {
+ if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) {
+ const char* c_url = url.spec().c_str();
+ char* c_url_lower = strtolower(c_url);
+ char* c_url_sep = strtosep(c_url);
+ char* c_url_lower_sep = strtosep(c_url_lower);
+
+ if (NOCHROMO_LOG) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "[%s]", c_url);
+
+ bool intercept = false;
+ for (int i = 0; i < NOCHROMO_ENTRY_COUNT; i++) {
+ nochromo_entry* entry = &NOCHROMO_ENTRIES[i];
+
+ // no use checking rules when we're intercepting, or exceptions when not
+ bool check =
+ (!intercept && ((entry->flags & NOCHROMO_FLAG_EXCEPTION) == 0)) ||
+ (intercept && ((entry->flags & NOCHROMO_FLAG_EXCEPTION) != 0));
+
+ if (check) {
+ bool match = false;
+
+ // select comparison string based on case and separator presence (separator takes some shortcuts)
+ bool match_case = ((entry->flags & NOCHROMO_FLAG_MATCH_CASE) != 0);
+ bool match_separator = ((entry->flags & NOCHROMO_FLAG_HAS_SEPARATOR) != 0);
+ const char* match_url = match_case ? (match_separator ? c_url_sep : c_url) : (match_separator ? c_url_lower_sep : c_url_lower);
+
+ if (NOCHROMO_LOG || NOCHROMO_LOG_MORE) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "[case:%d][sep:%d][%s]", match_case, match_separator, match_url);
+
+ // check for all match parts at >= position of last match
+ const char* last = match_url;
+ for (int m = 0; m < entry->matchcount; m++) {
+ const char* pos = strstr(last, entry->matches[m]);
+ match = (pos != NULL);
+
+ if (NOCHROMO_LOG || NOCHROMO_LOG_MORE) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "[%s][found:%d][match:%d]", entry->matches[m], pos == NULL ? 0 : 1, match ? 1 : 0);
+
+ // check if the url starts with the first match part
+ if (match && (m == 0) && ((entry->flags & NOCHROMO_FLAG_MATCH_BEGIN) != 0) && (pos != match_url)) match = false;
+
+ // check if the url ends with the last match part
+ if (match && (m == entry->matchcount - 1) && ((entry->flags & NOCHROMO_FLAG_MATCH_END) != 0) && (pos != &match_url[strlen(match_url) - strlen(entry->matches[m])])) match = false;
+
+ // check domain match
+ if (match && (m == 0) && ((entry->flags & NOCHROMO_FLAG_MATCH_DOMAIN) != 0) && (pos != match_url) && (pos[-1] != '^') && (pos[-1] != '.') && (pos[-1] != '/')) match = false;
+
+ // short circuit
+ if (!match) break;
+ }
+
+ if (match) {
+ if (NOCHROMO_LOG) {
+ if (!intercept) {
+ __android_log_print(ANDROID_LOG_INFO, "NoChromo", "--> intercept (%d) (%d)", i, entry->flags);
+ } else {
+ __android_log_print(ANDROID_LOG_INFO, "NoChromo", "--> pass (%d) (%d)", i, entry->flags);
+ }
+ }
+ intercept = !intercept;
+ }
+ }
+ }
+
+ free(c_url_sep);
+ free(c_url_lower);
+ free(c_url_lower_sep);
+
+ if (intercept) {
+ if (NOCHROMO_LOG) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "intercepted!");
+ return 1;
+ }
+ if (NOCHROMO_LOG) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "pass!");
+ }
+ return 0;
+}
+
+} // namespace net
\ No newline at end of file
diff --git a/net/url_request/nochromo_intercept.h b/net/url_request/nochromo_intercept.h
new file mode 100644
--- /dev/null
+++ b/net/url_request/nochromo_intercept.h
@@ -0,0 +1,13 @@
+#ifndef NET_URL_REQUEST_NOCHROMO_INTERCEPT_H_
+#define NET_URL_REQUEST_NOCHROMO_INTERCEPT_H_
+
+#include "url/gurl.h"
+
+namespace net {
+
+GURL nochromo_intercepted = GURL("http://127.0.0.1/");
+int nochromo_intercept(const GURL& url);
+
+} // namespace net
+
+#endif // NET_URL_REQUEST_NOCHROMO_INTERCEPT_H_
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -44,6 +44,8 @@
#include "url/gurl.h"
#include "url/origin.h"
+#include "net/url_request/nochromo_intercept.h"
+
#if BUILDFLAG(ENABLE_REPORTING)
#include "net/network_error_logging/network_error_logging_service.h"
#include "net/reporting/reporting_service.h"
@@ -583,6 +585,8 @@ URLRequest::URLRequest(const GURL& url,
// Sanity check out environment.
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
+ if (nochromo_intercept(url)) url_chain_.push_back(nochromo_intercepted);
+
context->url_requests()->insert(this);
net_log_.BeginEvent(
NetLogEventType::REQUEST_ALIVE,
--
2.7.4
@@ -7,10 +7,10 @@ Subject: Add menu option to toggle global Javascript preference
chrome/android/java/res/menu/main_menu.xml | 13 ++++++++
.../chromium/chrome/browser/ChromeActivity.java | 8 +++++
.../chrome/browser/ChromeTabbedActivity.java | 8 +++++
.../browser/appmenu/AppMenuPropertiesDelegate.java | 37 ++++++++++++++++++++++
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 ++++++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
.../java/strings/android_chrome_strings.grd | 11 +++++++
7 files changed, 91 insertions(+)
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
@@ -75,17 +75,17 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
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
@@ -2079,6 +2079,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2114,6 +2114,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnChange);
RecordUserAction.record("MobileMenuRequestDesktopSite");
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
+ PrefServiceBridge.getInstance().setJavaScriptEnabled(!jsEnabled);
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.reader_mode_prefs_id) {
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
@@ -93,17 +93,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1644,6 +1644,14 @@ public class ChromeTabbedActivity
@@ -1707,6 +1707,14 @@ public class ChromeTabbedActivity
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
}
RecordUserAction.record("MobileMenuDownloadManager");
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
+ PrefServiceBridge.getInstance().setJavaScriptEnabled(!jsEnabled);
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.open_recently_closed_tab) {
TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
@@ -111,7 +111,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -192,6 +192,8 @@ public class AppMenuPropertiesDelegate {
@@ -24,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.ContentSettingsType;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.banners.AppBannerManager;
@@ -196,6 +197,8 @@ public class AppMenuPropertiesDelegate {
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
@@ -120,12 +128,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
// Only display reader mode settings menu option if the current page is in reader mode.
menu.findItem(R.id.reader_mode_prefs_id)
.setVisible(DomDistillerUrlUtils.isDistilledPage(currentTab.getUrl()));
@@ -412,4 +414,39 @@ public class AppMenuPropertiesDelegate {
? mActivity.getString(R.string.menu_request_desktop_site_on)
: mActivity.getString(R.string.menu_request_desktop_site_off));
@@ -418,6 +421,41 @@ public class AppMenuPropertiesDelegate {
}
+
+ /**
/**
+ * Updates the enable JavaScript item's state.
+ *
+ * @param menu {@link Menu} for enable javascript
@@ -148,7 +154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
+ boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+
+ // Mark the checkbox if Javascript is activated on this tab.
+ enableMenuCheck.setChecked(jsEnabled);
@@ -159,11 +165,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ ? mActivity.getString(R.string.menu_enable_javascript_on)
+ : mActivity.getString(R.string.menu_enable_javascript_off));
+ }
}
+
+ /**
* A notification that the header view has finished inflating.
* @param view The view that was inflated.
* @param appMenu The menu the view is inside of.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -171,6 +171,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
@@ -165,6 +165,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
@@ -174,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2663,6 +2663,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
@@ -2822,6 +2822,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
<message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR-LIMIT=27]">
Find in page
</message>
@@ -193,5 +203,5 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
Desktop site
</message>
--
2.7.4
2.11.0
@@ -1,17 +1,15 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 28 Mar 2018 15:55:11 +0200
Date: Thu, 23 Aug 2018 19:30:15 +0200
Subject: Bromite adblock engine
Ported from NoChromo patch
Original adblock engine ported from NoChromo patch
Make interception testable
Add domain support
Re-land: third-party filters support
Add menu option to toggle global Adblock preference
Allow toggling Chromium's "ads enabled" content settings option together with Bromite adblock engine.
Perform adblock interception in StartJob to address lagging issues
New mechanism for adblocking based on Brave's adblocking hook
---
chrome/android/java/res/menu/custom_tabs_menu.xml | 12 +
chrome/android/java/res/menu/main_menu.xml | 11 +
@@ -20,18 +18,14 @@ Perform adblock interception in StartJob to address lagging issues
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 +++
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
.../java/strings/android_chrome_strings.grd | 11 +
.../subresource_filter_content_settings_manager.cc | 3 +
net/BUILD.gn | 9 +-
net/url_request/adblock_intercept.cc | 329 +++++++++++++++++++++
net/url_request/adblock_intercept.h | 18 ++
net/url_request/nochromo_intercept.cc | 116 --------
net/url_request/nochromo_intercept.h | 13 -
net/url_request/url_request.cc | 36 ++-
14 files changed, 480 insertions(+), 134 deletions(-)
chrome/browser/net/chrome_network_delegate.cc | 58 ++++
.../subresource_filter_content_settings_manager.cc | 1 +
net/BUILD.gn | 7 +
net/url_request/adblock_intercept.cc | 325 +++++++++++++++++++++
net/url_request/adblock_intercept.h | 24 ++
12 files changed, 505 insertions(+)
create mode 100644 net/url_request/adblock_intercept.cc
create mode 100644 net/url_request/adblock_intercept.h
delete mode 100644 net/url_request/nochromo_intercept.cc
delete mode 100644 net/url_request/nochromo_intercept.h
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -79,14 +73,14 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2089,6 +2089,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2124,6 +2124,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.reader_mode_prefs_id) {
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
@@ -97,25 +91,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1658,6 +1658,14 @@ public class ChromeTabbedActivity
RecordUserAction.record("MobileTabClosedUndoShortCut");
} else if (id == R.id.enter_vr_id) {
VrShellDelegate.enterVrIfNecessary();
@@ -1665,6 +1665,14 @@ public class ChromeTabbedActivity
reportNewTabShortcutUsed(true);
getTabCreator(true).launchNTP();
}
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
} else {
return super.onMenuOrKeyboardAction(id, fromMenu);
}
} else if (id == R.id.all_bookmarks_menu_id) {
if (currentTab != null) {
getCompositorViewHolder().hideKeyboard(() -> {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -190,6 +190,8 @@ public class AppMenuPropertiesDelegate {
@@ -195,6 +195,8 @@ public class AppMenuPropertiesDelegate {
&& !TextUtils.isEmpty(url);
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
@@ -124,12 +118,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
updateEnableJavascriptMenuItem(menu, currentTab);
@@ -449,4 +451,40 @@ public class AppMenuPropertiesDelegate {
? mActivity.getString(R.string.menu_enable_javascript_on)
: mActivity.getString(R.string.menu_enable_javascript_off));
@@ -456,6 +458,42 @@ public class AppMenuPropertiesDelegate {
}
+
+ /**
/**
+ * Updates the enable AdBlock item's state.
+ *
+ * @param menu {@link Menu} for enable adblock
@@ -153,7 +145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+
+ // Mark the checkbox if adblock is globally activate.
+ enableMenuCheck.setChecked(adBlockEnabled);
@@ -164,11 +156,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ ? mActivity.getString(R.string.menu_enable_adblock_on)
+ : mActivity.getString(R.string.menu_enable_adblock_off));
+ }
}
+
+ /**
* A notification that the header view has finished inflating.
* @param view The view that was inflated.
* @param appMenu The menu the view is inside of.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -170,6 +170,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
@@ -164,6 +164,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
}
@@ -180,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2683,6 +2683,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
@@ -2842,6 +2842,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
<message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
Turn on Request desktop site
</message>
@@ -198,43 +194,115 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
<message name="IDS_MENU_READER_MODE_PREFS" desc="Menu item to show reader mode preferences pane, which allows users to change the appearance (font size, theme, etc.) of the page. [CHAR-LIMIT=27]">
Appearance
</message>
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -24,6 +24,7 @@
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h"
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
#include "chrome/browser/net/chrome_extensions_network_delegate.h"
@@ -59,6 +60,7 @@
#if defined(OS_ANDROID)
#include "base/android/path_utils.h"
#include "chrome/browser/io_thread.h"
+#include "net/url_request/adblock_intercept.h"
#endif
#if defined(OS_CHROMEOS)
@@ -215,10 +217,64 @@ void ChromeNetworkDelegate::InitializePrefsOnUIThread(
}
}
+#define TRANSPARENT1PXGIF "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
+
int ChromeNetworkDelegate::OnBeforeURLRequest(
net::URLRequest* request,
net::CompletionOnceCallback callback,
GURL* new_url) {
+
+#if defined(OS_ANDROID)
+ if (request) {
+ bool block = false, isValidUrl;
+
+ isValidUrl = request->url().is_valid();
+ std::string scheme = request->url().scheme();
+ if (isValidUrl && scheme.length()) {
+ std::transform(scheme.begin(), scheme.end(), scheme.begin(), ::tolower);
+ if ("http" != scheme && "https" != scheme) {
+ isValidUrl = false;
+ }
+ }
+ const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
+
+ bool adblock_enabled = false;
+ if (isValidUrl && info) {
+ const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter = info->GetWebContentsGetterForRequest();
+ content::WebContents* web_contents = web_contents_getter.Run();
+ if (web_contents) {
+ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ const HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(profile);
+
+ // check global value first
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetDefaultContentSetting(ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS, NULL);
+
+ if (!adblock_enabled) {
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetContentSetting(request->url(), GURL(), ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS,
+ std::string());
+ }
+ }
+
+ if (adblock_enabled
+ && content::RESOURCE_TYPE_MAIN_FRAME != info->GetResourceType()
+ && net::adblock_intercept(request->url(),
+ request->initiator()->host(),
+ info->GetResourceType())) {
+ block = true;
+ }
+
+ if (block) {
+ if (content::RESOURCE_TYPE_IMAGE == info->GetResourceType()) {
+ *new_url = GURL(TRANSPARENT1PXGIF);
+ } else {
+ *new_url = GURL("");
+ }
+ return net::ERR_BLOCKED_BY_ADMINISTRATOR;
+ }
+ } // valid URL and info
+ } // request
+#endif // OS_ANDROID
+
extensions_delegate_->ForwardStartRequestStatus(request);
bool force_safe_search =
@@ -248,6 +304,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
return rv;
}
+#undef TRANSPARENT1PXGIF
+
int ChromeNetworkDelegate::OnBeforeStartTransaction(
net::URLRequest* request,
net::CompletionOnceCallback callback,
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
--- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
@@ -22,6 +22,7 @@
@@ -19,6 +19,7 @@
#include "components/history/core/browser/history_service.h"
#include "components/keyed_service/core/service_access_type.h"
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
#include "url/gurl.h"
+#include "net/url_request/adblock_intercept.h"
namespace {
@@ -160,9 +161,11 @@ void SubresourceFilterContentSettingsManager::OnContentSettingChanged(
if (global_setting == CONTENT_SETTING_ALLOW) {
ChromeSubresourceFilterClient::LogAction(
kActionContentSettingsAllowedGlobal);
+ net::adblock_enabled = false;
} else if (global_setting == CONTENT_SETTING_BLOCK) {
ChromeSubresourceFilterClient::LogAction(
kActionContentSettingsBlockedGlobal);
+ net::adblock_enabled = true;
} else {
NOTREACHED();
}
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1734,8 +1734,6 @@ component("net") {
"url_request/url_fetcher_response_writer.h",
"url_request/url_range_request_job.cc",
"url_request/url_range_request_job.h",
- "url_request/nochromo_intercept.cc",
- "url_request/nochromo_intercept.h",
"url_request/url_request.cc",
"url_request/url_request.h",
"url_request/url_request_context.cc",
@@ -1793,6 +1791,13 @@ component("net") {
"//third_party/zlib",
@@ -1715,6 +1715,13 @@ component("net") {
"url_request/websocket_handshake_userdata_key.h",
]
+ if (is_android) {
@@ -251,7 +319,7 @@ diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_inte
new file mode 100644
--- /dev/null
+++ b/net/url_request/adblock_intercept.cc
@@ -0,0 +1,329 @@
@@ -0,0 +1,325 @@
+#include "url/gurl.h"
+
+#ifdef ADB_TESTER
@@ -264,6 +332,7 @@ new file mode 100644
+
+#else
+
+#include "content/public/common/resource_type.h"
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+#include <android/log.h>
+
@@ -273,8 +342,6 @@ new file mode 100644
+
+namespace net {
+
+bool adblock_enabled = true;
+
+const char *LOG_TAG = "Bromite";
+
+#ifdef ADB_TESTER
@@ -431,69 +498,69 @@ new file mode 100644
+ return match;
+}
+
+static int url_match_domain(adblock_entry *entry, const std::string &origin_host) {
+ if (entry->domains_skip && !origin_host.empty()) {
+ // filter will not be activated on these domains
+bool url_match_domain(adblock_entry *entry, const std::string &origin_host) {
+ bool match_domain = true;
+ // check for a negative domain match
+ if (entry->domains_skip) {
+ if (origin_host.empty()) {
+ // skip this rule, cannot match on domain
+ return false;
+ }
+ for (int d = 0; const char *domain = entry->domains_skip[d]; d++) {
+ if (domain == origin_host) {
+ // this domain is whitelisted, do not further process this rule in any way
+ return 0;
+ match_domain = false;
+ break;
+ }
+ }
+ }
+ // fallthrough is desired
+
+ if (!entry->domains || origin_host.empty()) {
+ // undetermined
+ return 3;
+ }
+
+ // filter will be active only if a domain matches
+ // if none matches, the filter is to be skipped
+ for (int d = 0; const char *domain = entry->domains[d]; d++) {
+ if (domain == origin_host) {
+ // this domain is one of those that activate the rule
+ return 1;
+ // check for a required positive domain match
+ if (entry->domains) {
+ if (origin_host.empty()) {
+ // skip this rule, cannot match on domain
+ return false;
+ }
+ for (int d = 0; const char *domain = entry->domains[d]; d++) {
+ if (domain != origin_host) {
+ match_domain = false;
+ break;
+ }
+ }
+ }
+
+ // at least one domain should have been found, but none was
+ // thus the filter must be skipped
+ return 0;
+ return match_domain;
+}
+
+static int url_match_party(adblock_entry *entry, const GURL &url,
+ const std::string &origin_host, int &fp) {
+ int desired_fp;
+static bool url_match_party(adblock_entry *entry, const GURL &url,
+ const std::string &origin_host, bool &checked_fp,
+ bool &fp) {
+ bool wanted_fp;
+ if ((entry->flags & ADBLOCK_FLAG_THIRD_PARTY) != 0) {
+ desired_fp = 0;
+ wanted_fp = false;
+ } else if ((entry->flags & ADBLOCK_FLAG_FIRST_PARTY) != 0) {
+ desired_fp = 1;
+ wanted_fp = true;
+ } else {
+ // undetermined, it does not test for first/third party
+ return 3;
+ // no-op
+ return true;
+ }
+
+ if (origin_host.empty()) {
+ // cannot match this rule, no origin host to determine first/third party
+ return 0;
+ return false;
+ }
+
+#ifdef ADB_TESTER
+//__android_log_print(ANDROID_LOG_INFO, LOG_TAG, "matchFirst=%d matchThird=%d",
+// matchFirstParty, matchThirdParty);
+#endif
+ if (fp == 3) {
+ if (!checked_fp) {
+ // lower-case version
+ char *l_host = strtolower(origin_host.c_str()),
+ *l_url_host = strtolower(url.host().c_str());
+
+ // is the URL a first-party to the current page's host?
+ if (is_first_party(l_host, l_url_host))
+ fp = 1;
+ else
+ fp = 0;
+ fp = is_first_party(l_host, l_url_host);
+
+ checked_fp = true;
+#ifdef ADB_TESTER
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG,
+ "is_first_party(\"%s\", \"%s\") = %s", l_host,
@@ -503,14 +570,14 @@ new file mode 100644
+ free(l_url_host);
+ }
+
+ return fp == desired_fp ? 1 : 0;
+ return fp == wanted_fp;
+}
+
+int adblock_intercept(const GURL &url, const std::string &origin_host) {
+ // if (!url.is_valid() || !url.SchemeIsHTTPOrHTTPS()) {
+ // return 0;
+ // }
+
+int adblock_intercept(const GURL &url, const std::string &origin_host
+#ifndef ADB_TESTER
+, content::ResourceType resource_type
+#endif
+) {
+ if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) {
+ const char *c_url = url.spec().c_str();
+ char *c_url_lower = strtolower(c_url);
@@ -522,7 +589,7 @@ new file mode 100644
+ c_url, url.host().c_str(), origin_host.c_str());
+#endif
+
+ int fp = 3;
+ bool checked_fp = false, fp = false;
+
+ bool intercept = false;
+ for (int i = 0; i < ADBLOCK_ENTRY_COUNT; i++) {
@@ -532,22 +599,19 @@ new file mode 100644
+ bool check =
+ (!intercept && ((entry->flags & ADBLOCK_FLAG_EXCEPTION) == 0)) ||
+ (intercept && ((entry->flags & ADBLOCK_FLAG_EXCEPTION) != 0));
+
+ if (!check)
+ continue;
+
+ // first check for domain matches, a quick branch out if matching
+ if (0 == url_match_domain(entry, origin_host)) {
+ if (!url_match_domain(entry, origin_host))
+ continue;
+ }
+ // fallthrough with values 3 (undetermined / no domain options) or 1 (matched)
+
+ // check on the URL matcher
+ if (!url_matches(c_url, c_url_sep, c_url_lower, c_url_lower_sep, entry))
+ continue;
+
+ // finally check first/third-party
+ if (0 == url_match_party(entry, url, origin_host, fp))
+ if (!url_match_party(entry, url, origin_host, checked_fp, fp))
+ continue;
+
+#ifdef ADBLOCK_LOG
@@ -569,12 +633,12 @@ new file mode 100644
+
+ if (intercept) {
+#ifdef ADBLOCK_LOG
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "blocked (fp=%d)", fp);
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "blocked");
+#endif
+ return 1;
+ }
+#ifdef ADBLOCK_LOG
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "pass (fp=%d)", fp);
+ __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "pass");
+#endif
+ }
+ return 0;
@@ -585,225 +649,31 @@ diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_inter
new file mode 100644
--- /dev/null
+++ b/net/url_request/adblock_intercept.h
@@ -0,0 +1,18 @@
@@ -0,0 +1,24 @@
+#ifndef NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
+#define NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
+
+#include "url/gurl.h"
+
+#ifndef ADB_TESTER
+#include "content/public/common/resource_type.h"
+#endif
+
+namespace net {
+
+#ifdef ADB_TESTER
+int adblock_rules_count();
+#endif
+
+int adblock_intercept(const GURL &url, const std::string &origin_host);
+
+extern bool adblock_enabled;
+int adblock_intercept(const GURL &url, const std::string &origin_host
+#ifndef ADB_TESTER
+, content::ResourceType resource_type
+#endif
+);
+
+} // namespace net
+
+#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
diff --git a/net/url_request/nochromo_intercept.cc b/net/url_request/nochromo_intercept.cc
deleted file mode 100644
--- a/net/url_request/nochromo_intercept.cc
+++ /dev/null
@@ -1,116 +0,0 @@
-#include "url/gurl.h"
-#include "net/url_request/nochromo_entries.h"
-
-#include <android/log.h>
-
-namespace net {
-
-#define NOCHROMO_LOG 0
-#define NOCHROMO_LOG_MORE 0
-
-static char* strtolower(const char* str) {
- int len = strlen(str);
- char* ret = (char*)malloc(len + 1);
- ret[len] = '\0';
- for (int i = 0; i < len; i++) {
- if ((65 <= str[i]) && (str[i] <= 90)) {
- ret[i] = str[i] + 32;
- } else {
- ret[i] = str[i];
- }
- }
- return ret;
-}
-
-static char* strtosep(const char* str) {
- int len = strlen(str);
- char* ret = (char*)malloc(len + 3);
- ret[0] = '^';
- ret[len + 1] = '^';
- ret[len + 2] = '\0';
- for (int i = 0; i < len; i++) {
- if ((str[i] == ':') || (str[i] == '/') || (str[i] == '?') || (str[i] == '&') || (str[i] == '=')) {
- ret[i + 1] = '^';
- } else {
- ret[i + 1] = str[i];
- }
- }
- return ret;
-}
-
-int nochromo_intercept(const GURL& url) {
- if (url.is_valid() && url.SchemeIsHTTPOrHTTPS()) {
- const char* c_url = url.spec().c_str();
- char* c_url_lower = strtolower(c_url);
- char* c_url_sep = strtosep(c_url);
- char* c_url_lower_sep = strtosep(c_url_lower);
-
- if (NOCHROMO_LOG) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "[%s]", c_url);
-
- bool intercept = false;
- for (int i = 0; i < NOCHROMO_ENTRY_COUNT; i++) {
- nochromo_entry* entry = &NOCHROMO_ENTRIES[i];
-
- // no use checking rules when we're intercepting, or exceptions when not
- bool check =
- (!intercept && ((entry->flags & NOCHROMO_FLAG_EXCEPTION) == 0)) ||
- (intercept && ((entry->flags & NOCHROMO_FLAG_EXCEPTION) != 0));
-
- if (check) {
- bool match = false;
-
- // select comparison string based on case and separator presence (separator takes some shortcuts)
- bool match_case = ((entry->flags & NOCHROMO_FLAG_MATCH_CASE) != 0);
- bool match_separator = ((entry->flags & NOCHROMO_FLAG_HAS_SEPARATOR) != 0);
- const char* match_url = match_case ? (match_separator ? c_url_sep : c_url) : (match_separator ? c_url_lower_sep : c_url_lower);
-
- if (NOCHROMO_LOG || NOCHROMO_LOG_MORE) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "[case:%d][sep:%d][%s]", match_case, match_separator, match_url);
-
- // check for all match parts at >= position of last match
- const char* last = match_url;
- for (int m = 0; m < entry->matchcount; m++) {
- const char* pos = strstr(last, entry->matches[m]);
- match = (pos != NULL);
-
- if (NOCHROMO_LOG || NOCHROMO_LOG_MORE) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "[%s][found:%d][match:%d]", entry->matches[m], pos == NULL ? 0 : 1, match ? 1 : 0);
-
- // check if the url starts with the first match part
- if (match && (m == 0) && ((entry->flags & NOCHROMO_FLAG_MATCH_BEGIN) != 0) && (pos != match_url)) match = false;
-
- // check if the url ends with the last match part
- if (match && (m == entry->matchcount - 1) && ((entry->flags & NOCHROMO_FLAG_MATCH_END) != 0) && (pos != &match_url[strlen(match_url) - strlen(entry->matches[m])])) match = false;
-
- // check domain match
- if (match && (m == 0) && ((entry->flags & NOCHROMO_FLAG_MATCH_DOMAIN) != 0) && (pos != match_url) && (pos[-1] != '^') && (pos[-1] != '.') && (pos[-1] != '/')) match = false;
-
- // short circuit
- if (!match) break;
- }
-
- if (match) {
- if (NOCHROMO_LOG) {
- if (!intercept) {
- __android_log_print(ANDROID_LOG_INFO, "NoChromo", "--> intercept (%d) (%d)", i, entry->flags);
- } else {
- __android_log_print(ANDROID_LOG_INFO, "NoChromo", "--> pass (%d) (%d)", i, entry->flags);
- }
- }
- intercept = !intercept;
- }
- }
- }
-
- free(c_url_sep);
- free(c_url_lower);
- free(c_url_lower_sep);
-
- if (intercept) {
- if (NOCHROMO_LOG) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "intercepted!");
- return 1;
- }
- if (NOCHROMO_LOG) __android_log_print(ANDROID_LOG_INFO, "NoChromo", "pass!");
- }
- return 0;
-}
-
-} // namespace net
\ No newline at end of file
diff --git a/net/url_request/nochromo_intercept.h b/net/url_request/nochromo_intercept.h
deleted file mode 100644
--- a/net/url_request/nochromo_intercept.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef NET_URL_REQUEST_NOCHROMO_INTERCEPT_H_
-#define NET_URL_REQUEST_NOCHROMO_INTERCEPT_H_
-
-#include "url/gurl.h"
-
-namespace net {
-
-GURL nochromo_intercepted = GURL("http://127.0.0.1/");
-int nochromo_intercept(const GURL& url);
-
-} // namespace net
-
-#endif // NET_URL_REQUEST_NOCHROMO_INTERCEPT_H_
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -44,7 +44,9 @@
#include "url/gurl.h"
#include "url/origin.h"
-#include "net/url_request/nochromo_intercept.h"
+#if defined(OS_ANDROID)
+#include "net/url_request/adblock_intercept.h"
+#endif
#if BUILDFLAG(ENABLE_REPORTING)
#include "net/network_error_logging/network_error_logging_service.h"
@@ -585,8 +587,6 @@ URLRequest::URLRequest(const GURL& url,
// Sanity check out environment.
DCHECK(base::ThreadTaskRunnerHandle::IsSet());
- if (nochromo_intercept(url)) url_chain_.push_back(nochromo_intercepted);
-
context->url_requests()->insert(this);
net_log_.BeginEvent(
NetLogEventType::REQUEST_ALIVE,
@@ -665,6 +665,36 @@ void URLRequest::StartJob(URLRequestJob* job) {
}
}
+#if defined(OS_ANDROID)
+ if (net::adblock_enabled) {
+ std::string initiatorHost;
+ if (initiator_.has_value()) {
+ initiatorHost = initiator_.value().host();
+ }
+
+ if (adblock_intercept(url(), initiatorHost)) {
+ std::string source("delegate");
+ net_log_.AddEvent(NetLogEventType::CANCELLED,
+ NetLog::StringCallback("source", &source));
+
+ job_.reset(new URLRequestErrorJob(
+ this, network_delegate_, ERR_BLOCKED_BY_CLIENT));
+
+ job_->SetExtraRequestHeaders(extra_request_headers_);
+ job_->SetPriority(priority_);
+ job_->SetRequestHeadersCallback(request_headers_callback_);
+ job_->SetResponseHeadersCallback(response_headers_callback_);
+
+ if (upload_data_stream_.get())
+ job_->SetUpload(upload_data_stream_.get());
+
+ // on fallthrough the initial status will be ERR_IO_PENDING,
+ // but the URLRequestErrorJob will then call NotifyResponseStarted
+ // with the correct ERR_BLOCKED_BYCLIENT status
+ }
+ }
+#endif
+
// Start() always completes asynchronously.
//
// Status is generally set by URLRequestJob itself, but Start() calls
--
2.7.4
2.11.0
-54
View File
@@ -1,54 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 21 Mar 2018 14:15:28 +0100
Subject: User Agent: anonymize
Remove device name and build id
---
content/common/user_agent.cc | 25 ++-----------------------
1 file changed, 2 insertions(+), 23 deletions(-)
diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
--- a/content/common/user_agent.cc
+++ b/content/common/user_agent.cc
@@ -60,26 +60,6 @@ std::string BuildOSCpuInfo() {
}
#elif defined(OS_ANDROID)
std::string android_version_str = base::SysInfo::OperatingSystemVersion();
-
- std::string android_info_str;
-
- // Send information about the device.
- bool semicolon_inserted = false;
- std::string android_build_codename = base::SysInfo::GetAndroidBuildCodename();
- std::string android_device_name = base::SysInfo::HardwareModelName();
- if ("REL" == android_build_codename && android_device_name.size() > 0) {
- android_info_str += "; " + android_device_name;
- semicolon_inserted = true;
- }
-
- // Append the build ID.
- std::string android_build_id = base::SysInfo::GetAndroidBuildID();
- if (android_build_id.size() > 0) {
- if (!semicolon_inserted) {
- android_info_str += ";";
- }
- android_info_str += " Build/" + android_build_id;
- }
#elif (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(OS_FUCHSIA)
// Should work on any Posix system.
struct utsname unixinfo;
@@ -115,9 +95,8 @@ std::string BuildOSCpuInfo() {
os_minor_version,
os_bugfix_version
#elif defined(OS_ANDROID)
- "Android %s%s",
- android_version_str.c_str(),
- android_info_str.c_str()
+ "Android %s",
+ android_version_str.c_str()
#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
"%s %s",
unixinfo.sysname, // e.g. Linux
--
2.7.4
+110
View File
@@ -0,0 +1,110 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 21 Mar 2018 14:15:28 +0100
Subject: User Agent: anonymize
Use a fixed device name and Chrome product version.
---
components/version_info/version_info.cc | 17 ++++++++++++-
content/common/user_agent.cc | 45 +++++++++++++++++++--------------
2 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/components/version_info/version_info.cc b/components/version_info/version_info.cc
--- a/components/version_info/version_info.cc
+++ b/components/version_info/version_info.cc
@@ -7,13 +7,28 @@
#include "base/logging.h"
#include "base/no_destructor.h"
#include "base/version.h"
+#include "base/sys_info.h"
#include "build/build_config.h"
#include "components/version_info/version_info_values.h"
namespace version_info {
std::string GetProductNameAndVersionForUserAgent() {
- return "Chrome/" + GetVersionNumber();
+ int32_t major, minor, bugfix;
+ base::SysInfo::OperatingSystemVersionNumbers(&major,
+ &minor,
+ &bugfix);
+ switch (major) {
+ case 7:
+ return "Chrome/63.0.3239.111";
+ case 6:
+ return "Chrome/63.0.3239.83";
+ case 5:
+ case 4:
+ return "Chrome/62.0.3202.84";
+ }
+ // version 8 and above
+ return "Chrome/67.0.3396.87";
}
std::string GetProductName() {
diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc
--- a/content/common/user_agent.cc
+++ b/content/common/user_agent.cc
@@ -59,26 +59,33 @@ std::string BuildOSCpuInfo() {
architecture_token = "; Win64; IA64";
}
#elif defined(OS_ANDROID)
- std::string android_version_str = base::SysInfo::OperatingSystemVersion();
+ int32_t major, minor, bugfix;
+ base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &bugfix);
+ std::string android_version_str = base::StringPrintf("%d.%d.%d", major, minor, bugfix);
+ // Send information about the device and buld ID.
+ // Use a common device/build ID based on Android major version.
std::string android_info_str;
-
- // Send information about the device.
- bool semicolon_inserted = false;
- std::string android_build_codename = base::SysInfo::GetAndroidBuildCodename();
- std::string android_device_name = base::SysInfo::HardwareModelName();
- if ("REL" == android_build_codename && android_device_name.size() > 0) {
- android_info_str += "; " + android_device_name;
- semicolon_inserted = true;
- }
-
- // Append the build ID.
- std::string android_build_id = base::SysInfo::GetAndroidBuildID();
- if (android_build_id.size() > 0) {
- if (!semicolon_inserted) {
- android_info_str += ";";
- }
- android_info_str += " Build/" + android_build_id;
+ switch (major) {
+ case 7:
+ // Chrome/63.0.3239.111
+ android_info_str = "SM-J730GM Build/NRD90M";
+ break;
+ case 6:
+ // Chrome/63.0.3239.83
+ android_info_str = "SM-G532G Build/MMB29T";
+ break;
+ case 5:
+ // Chrome/62.0.3202.84
+ android_info_str = "A37fw Build/LMY47V";
+ break;
+ case 4:
+ // Chrome/62.0.3202.84
+ android_info_str = "SM-G7102 Build/KOT49H";
+ break;
+ default: // version 8 and above
+ android_info_str = "SM-G950U Build/R16NW";
+ break;
}
#elif (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(OS_FUCHSIA)
// Should work on any Posix system.
@@ -115,7 +122,7 @@ std::string BuildOSCpuInfo() {
os_minor_version,
os_bugfix_version
#elif defined(OS_ANDROID)
- "Android %s%s",
+ "Android %s; %s",
android_version_str.c_str(),
android_info_str.c_str()
#elif defined(OS_POSIX) || defined(OS_FUCHSIA)
--
2.11.0
@@ -6,8 +6,8 @@ Return fixed base latency
---
third_party/blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
third_party/blink/renderer/modules/webaudio/audio_buffer.idl | 4 ++--
third_party/blink/renderer/modules/webaudio/audio_context.cc | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
third_party/blink/renderer/modules/webaudio/audio_context.cc | 1 +
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
--- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
@@ -43,15 +43,14 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/thir
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
@@ -271,7 +271,7 @@ void AudioContext::StopRendering() {
}
@@ -314,6 +314,7 @@ void AudioContext::StopRendering() {
double AudioContext::baseLatency() const {
- return FramesPerBuffer() / static_cast<double>(sampleRate());
DCHECK(IsMainThread());
DCHECK(destination());
+ return 0.04;
}
} // namespace blink
// TODO(hongchan): Due to the incompatible constructor between
// AudioDestinationNode and DefaultAudioDestinationNode, casting directly from
--
2.7.4
2.11.0
@@ -64,9 +64,9 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
+#include "base/rand_util.h"
+#include "base/logging.h"
#include "base/numerics/checked_math.h"
#include "gpu/command_buffer/client/gles2_interface.h"
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
#include "third_party/blink/renderer/platform/graphics/graphics_context.h"
@@ -15,6 +17,7 @@
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkImage.h"
@@ -75,7 +75,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
#include "third_party/skia/include/gpu/GrContext.h"
namespace blink {
@@ -161,10 +164,161 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
@@ -154,10 +157,161 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
DCHECK(read_pixels_successful ||
!sk_image->bounds().intersect(SkIRect::MakeXYWH(
rect.X(), rect.Y(), info.width(), info.height())));
@@ -250,5 +250,5 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.h
// Methods overridden by all sub-classes
--
2.7.4
2.11.0
@@ -4,7 +4,7 @@ Subject: getClientRects, getBoundingClientRect, measureText: add
fingerprinting mitigation
Scale the result of Range::getClientRects, Element::getBoundingClientRect and
Canvas::measureText by a random +/-3/10000th of the original value for each
Canvas::measureText by a random +/-3/1000000th of the original value for each
float in the returned Rect/Quad.
Rationale is that the returned values are within the same order of magnitude
@@ -31,14 +31,14 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
#include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
@@ -1356,6 +1357,15 @@ DOMRectList* Element::getClientRects() {
@@ -1382,6 +1383,15 @@ DOMRectList* Element::getClientRects() {
DCHECK(element_layout_object);
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
quads, *element_layout_object);
+
+ // scale all quads by 3/10000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ // scale all quads
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
+
+ for (FloatQuad& quad : quads) {
+ quad.Scale(shuffleX, shuffleY);
@@ -47,14 +47,14 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
return DOMRectList::Create(quads);
}
@@ -1373,6 +1383,13 @@ DOMRect* Element::getBoundingClientRect() {
@@ -1399,6 +1409,13 @@ DOMRect* Element::getBoundingClientRect() {
DCHECK(element_layout_object);
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
*element_layout_object);
+
+ // scale rect by 3/10000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ // scale rect by 3/1000000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
+
+ result.Scale(shuffleX, shuffleY);
+
@@ -70,16 +70,16 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
+#include "base/rand_util.h"
+
#include "third_party/blink/renderer/bindings/core/v8/exception_state.h"
#include "third_party/blink/renderer/bindings/core/v8/string_or_trusted_html.h"
#include "third_party/blink/renderer/core/dom/character_data.h"
#include "third_party/blink/renderer/core/dom/container_node.h"
@@ -1575,11 +1577,27 @@ DOMRectList* Range::getClientRects() const {
@@ -1604,11 +1606,27 @@ DOMRectList* Range::getClientRects() const {
Vector<FloatQuad> quads;
GetBorderAndTextQuads(quads);
+ // scale all quads by 3/10000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ // scale all quads by 3/1000000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
+
+ for (FloatQuad& quad : quads) {
+ quad.Scale(shuffleX, shuffleY);
@@ -92,9 +92,9 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
- return DOMRect::FromFloatRect(BoundingRect());
+ auto rect = BoundingRect();
+
+ // scale rect by 3/10000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ // scale rect by 3/1000000th
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
+
+ rect.Scale(shuffleX, shuffleY);
+
@@ -105,7 +105,7 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
@@ -47,6 +47,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
@@ -48,6 +48,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
return 0;
}
@@ -133,7 +133,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_party/blink/renderer/core/html/canvas/text_metrics.h
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.h
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
@@ -67,6 +67,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
@@ -68,6 +68,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
static float GetFontBaseline(const TextBaseline&, const FontMetrics&);
@@ -154,7 +154,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
@@ -776,8 +778,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
@@ -775,8 +777,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
else
direction = ToTextDirection(GetState().GetDirection(), canvas());
@@ -162,8 +162,8 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
+ TextMetrics* textMetrics = TextMetrics::Create(font, direction, GetState().GetTextBaseline(),
GetState().GetTextAlign(), text);
+
+ // scale text metrics by 3/10000th
+ auto shuffleFactor = 1 + (base::RandDouble() - 0.5) * 0.0003;
+ // scale text metrics by 3/1000000th
+ auto shuffleFactor = 1 + (base::RandDouble() - 0.5) * 0.000003;
+ textMetrics->Shuffle(shuffleFactor);
+
+ return textMetrics;
@@ -171,5 +171,5 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
void CanvasRenderingContext2D::DrawTextInternal(
--
2.7.4
2.11.0
@@ -10,15 +10,15 @@ Originally from http://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromi
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
--- a/chrome/common/chrome_content_client.cc
+++ b/chrome/common/chrome_content_client.cc
@@ -536,7 +536,7 @@ void ChromeContentClient::AddContentDecryptionModules(
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
&supports_persistent_license,
&encryption_modes_supported)) {
@@ -532,7 +532,7 @@ void ChromeContentClient::AddContentDecryptionModules(
base::FilePath cdm_path;
content::CdmCapability capability;
if (IsWidevineAvailable(&cdm_path, &capability)) {
- const base::Version version(WIDEVINE_CDM_VERSION_STRING);
+ const base::Version version("1.0.123.456");
DCHECK(version.IsValid());
cdms->push_back(content::CdmInfo(
cdms->push_back(
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: Disable metrics on all I/O threads
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -949,7 +949,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
@@ -922,7 +922,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
bool ProfileIOData::GetMetricsEnabledStateOnIOThread() const {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -19,5 +19,5 @@ diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profile
chrome_browser_net::Predictor* ProfileIOData::GetPredictor() {
--
2.7.4
2.11.0
@@ -11,19 +11,19 @@ See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-02.txt
chrome/browser/about_flags.cc | 12 +++++++++
chrome/browser/flag_descriptions.cc | 3 +++
chrome/browser/flag_descriptions.h | 3 +++
chrome/browser/io_thread.cc | 14 +++++++----
.../browser/net/system_network_context_manager.cc | 12 +++++----
.../common/network_features.cc | 5 ++--
.../common/network_features.h | 5 ++--
.../common/network_switch_list.h | 4 +++
net/base/load_flags_list.h | 6 +++++
net/dns/dns_transaction.cc | 29 +++-------------------
net/url_request/url_request_http_job.cc | 28 +++++++++++++--------
10 files changed, 64 insertions(+), 45 deletions(-)
net/url_request/url_request_http_job.cc | 26 +++++++++++--------
10 files changed, 61 insertions(+), 44 deletions(-)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -400,6 +400,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
@@ -421,6 +421,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
switches::kChromeHomeSwipeLogicType, "velocity"},
};
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
#endif // OS_ANDROID
const FeatureEntry::Choice kNumRasterThreadsChoices[] = {
@@ -3489,6 +3495,12 @@ const FeatureEntry kFeatureEntries[] = {
@@ -3517,6 +3523,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(features::kAsyncDns)},
#endif // defined(OS_ANDROID)
@@ -52,7 +52,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1952,6 +1952,9 @@ const char kAndroidPaymentAppsDescription[] =
@@ -2112,6 +2112,9 @@ const char kAndroidPaymentAppsDescription[] =
const char kAsyncDnsName[] = "Async DNS resolver";
const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver.";
@@ -65,7 +65,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1188,6 +1188,9 @@ extern const char kAndroidPaymentAppsDescription[];
@@ -1284,6 +1284,9 @@ extern const char kAppNotificationStatusMessagingDescription[];
extern const char kAsyncDnsName[];
extern const char kAsyncDnsDescription[];
@@ -75,39 +75,35 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
extern const char kAutofillAccessoryViewName[];
extern const char kAutofillAccessoryViewDescription[];
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -50,6 +50,7 @@
#include "components/metrics/metrics_service.h"
#include "components/net_log/chrome_net_log.h"
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -23,6 +23,7 @@
#include "chrome/common/chrome_features.h"
#include "chrome/common/pref_names.h"
#include "components/network_session_configurator/common/network_features.h"
+#include "components/network_session_configurator/common/network_switches.h"
#include "components/policy/core/common/policy_namespace.h"
#include "components/policy/core/common/policy_service.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_registry_simple.h"
@@ -373,13 +374,16 @@ IOThread::IOThread(
base::Unretained(this)));
dns_client_enabled_.MoveToThread(io_thread_proxy);
@@ -370,11 +371,12 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
std::make_unique<base::ListValue>();
std::unique_ptr<base::ListValue> default_doh_server_methods =
std::make_unique<base::ListValue>();
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
- base::Value server(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "server"));
- base::Value method(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "method"));
+ std::string dnsOverHttpsServer =
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kDnsOverHttpsServer);
+ if (!dnsOverHttpsServer.empty()) {
base::Value specs(base::Value::Type::LIST);
base::Value methods(base::Value::Type::LIST);
- base::Value spec(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "server"));
- base::Value method(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "method"));
+
+ base::Value spec(dnsOverHttpsServer);
+ base::Value server(dnsOverHttpsServer);
+ base::Value method("POST");
+
if (spec.GetString().size() > 0) {
specs.GetList().push_back(std::move(spec));
methods.GetList().push_back(std::move(method));
if (!server.GetString().empty()) {
default_doh_servers->GetList().push_back(std::move(server));
default_doh_server_methods->GetList().push_back(std::move(method));
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
--- a/components/network_session_configurator/common/network_features.cc
+++ b/components/network_session_configurator/common/network_features.cc
@@ -155,20 +151,23 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
--- a/net/base/load_flags_list.h
+++ b/net/base/load_flags_list.h
@@ -92,3 +92,9 @@ LOAD_FLAG(DISABLE_CONNECTION_MIGRATION, 1 << 16)
// Indicates that the cache should not check that the request matches the
// response's vary header.
LOAD_FLAG(SKIP_VARY_CHECK, 1 << 17)
@@ -92,6 +92,12 @@ LOAD_FLAG(MAYBE_USER_GESTURE, 1 << 14)
LOAD_FLAG(DO_NOT_USE_EMBEDDED_IDENTITY, 1 << 15)
// Indicates that this request is not to be migrated to a cellular network when
+
+// This load will not send Accept-Language or User-Agent headers, and not
+// advertise brotli encoding.
+// Used to comply with IETF (draft) DNS-over-HTTPS:
+// "Implementors SHOULD NOT set non-essential HTTP headers in DoH client requests."
+LOAD_FLAG(MINIMAL_HEADERS, 1 << 18)
// QUIC connection migration is enabled.
LOAD_FLAG(DISABLE_CONNECTION_MIGRATION_TO_CELLULAR, 1 << 16)
diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
--- a/net/dns/dns_transaction.cc
+++ b/net/dns/dns_transaction.cc
@@ -390,30 +390,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
@@ -389,30 +389,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
HttpRequestHeaders extra_request_headers;
extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
@@ -201,7 +200,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
net_log_ = request_->net_log();
if (use_post) {
@@ -431,6 +409,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
@@ -430,6 +408,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
LOAD_BYPASS_PROXY | LOAD_DO_NOT_SEND_COOKIES |
LOAD_DO_NOT_SAVE_COOKIES |
@@ -209,7 +208,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
LOAD_DO_NOT_SEND_AUTH_DATA);
}
@@ -850,7 +829,7 @@ class DnsTransactionImpl : public DnsTransaction,
@@ -849,7 +828,7 @@ class DnsTransactionImpl : public DnsTransaction,
had_tcp_attempt_(false),
doh_attempt_(false),
first_server_index_(0),
@@ -221,7 +220,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -434,19 +434,23 @@ void URLRequestHttpJob::Start() {
@@ -434,21 +434,25 @@ void URLRequestHttpJob::Start() {
// plugin could set a referrer although sending the referrer is inhibited.
request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
@@ -229,18 +228,19 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
- // instance WebCore::FrameLoader::HideReferrer.
- if (referrer.is_valid()) {
- request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
- referrer.spec());
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
+ // Our consumer should have made sure that this is a safe referrer. See for
+ // instance WebCore::FrameLoader::HideReferrer.
+ if (referrer.is_valid()) {
+ request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
+ referrer.spec());
referrer.spec());
+ }
}
request_info_.token_binding_referrer = request_->token_binding_referrer();
// This should be kept in sync with the corresponding code in
// URLRequest::GetUserAgent.
- request_info_.extra_headers.SetHeaderIfMissing(
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
+ request_info_.extra_headers.SetHeaderIfMissing(
@@ -251,7 +251,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
AddExtraHeaders();
AddCookieHeaderAndStart();
@@ -663,10 +667,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
@@ -666,10 +670,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
HttpRequestHeaders::kAcceptEncoding)) {
// Advertise "br" encoding only if transferred data is opaque to proxy.
bool advertise_brotli = false;
@@ -268,7 +268,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
}
}
@@ -683,7 +689,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
@@ -686,7 +692,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
advertised_encodings);
}
@@ -278,5 +278,5 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
// specified.
std::string accept_language =
--
2.7.4
2.11.0
@@ -4,34 +4,26 @@ Subject: Always respect async dns flag (regardless of SDK version)
Do not read experiment value for cronet async DNS configuration
---
chrome/browser/io_thread.cc | 10 +---------
components/cronet/url_request_context_config.cc | 3 ++-
2 files changed, 3 insertions(+), 10 deletions(-)
chrome/browser/net/system_network_context_manager.cc | 2 +-
components/cronet/url_request_context_config.cc | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -252,15 +252,7 @@ void UpdateMetricsUsagePrefsOnUIThread(const std::string& service_name,
// Check the AsyncDns field trial and return true if it should be enabled. On
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -180,7 +180,7 @@ void OnAuthPrefsChanged(const std::string& pref_name) {
// Android this includes checking the Android version in the field trial.
bool ShouldEnableAsyncDns() {
- bool feature_can_be_enabled = true;
bool feature_can_be_enabled = true;
-#if defined(OS_ANDROID)
- int min_sdk =
- base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
- if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
- feature_can_be_enabled = false;
-#endif
- return feature_can_be_enabled &&
- base::FeatureList::IsEnabled(features::kAsyncDns);
+ return base::FeatureList::IsEnabled(features::kAsyncDns);
}
} // namespace
+#if 0
int min_sdk =
base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
--- a/components/cronet/url_request_context_config.cc
+++ b/components/cronet/url_request_context_config.cc
@@ -366,7 +366,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
@@ -390,7 +390,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
effective_experimental_options->Remove(it.key(), nullptr);
continue;
}
@@ -42,5 +34,5 @@ diff --git a/components/cronet/url_request_context_config.cc b/components/cronet
const base::DictionaryValue* stale_dns_args = nullptr;
if (!it.value().GetAsDictionary(&stale_dns_args)) {
--
2.7.4
2.11.0
@@ -6,32 +6,31 @@ With the introduction of this flag it is possible to increase the maximum
allowed connections per host; this can however be detrimental to devices
with limited CPU/memory resources and it is disabled by default.
---
chrome/browser/about_flags.cc | 9 +++++++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
.../common/network_features.cc | 4 ++++
.../common/network_features.h | 4 ++++
.../common/network_switch_list.h | 4 ++++
net/socket/client_socket_pool_manager.cc | 17 +++++++++++++++++
7 files changed, 45 insertions(+)
chrome/browser/about_flags.cc | 8 ++++++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
.../common/network_features.cc | 3 +++
.../common/network_features.h | 4 ++++
.../common/network_switch_list.h | 4 ++++
net/socket/client_socket_pool_manager.cc | 16 ++++++++++++++++
7 files changed, 42 insertions(+)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -798,6 +798,12 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
@@ -839,6 +839,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
net::kEffectiveConnectionType4G},
};
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
+ {features::kMaxConnectionsPerHostChoiceDefault, "", "0"},
+ {features::kMaxConnectionsPerHostChoice6, switches::kMaxConnectionsPerHost, "6"},
+ {features::kMaxConnectionsPerHostChoiceDefault, "", ""},
+ {features::kMaxConnectionsPerHostChoice15, switches::kMaxConnectionsPerHost, "15"},
+};
+
// Ensure that all effective connection types returned by Network Quality
// Estimator (NQE) are also exposed via flags.
static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
@@ -2398,6 +2404,9 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2432,6 +2437,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kMaterialDesignIncognitoNTPName,
flag_descriptions::kMaterialDesignIncognitoNTPDescription, kOsAndroid,
FEATURE_VALUE_TYPE(features::kMaterialDesignIncognitoNTP)},
@@ -44,13 +43,13 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -975,6 +975,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
@@ -1065,6 +1065,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
"If enabled, the Incognito New Tab page uses the new material design with "
"a better readable text.";
+const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
+const char kMaxConnectionsPerHostDescription[] =
+ "Customize maximum allowed connections per host (experimental).";
+ "Customize maximum allowed connections per host.";
+
const char kMediaRouterCastAllowAllIPsName[] =
"Connect to Cast devices on all IP addresses";
@@ -58,7 +57,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -613,6 +613,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
@@ -667,6 +667,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
extern const char kMaterialDesignIncognitoNTPName[];
extern const char kMaterialDesignIncognitoNTPDescription[];
@@ -71,12 +70,11 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
--- a/components/network_session_configurator/common/network_features.cc
+++ b/components/network_session_configurator/common/network_features.cc
@@ -8,6 +8,10 @@
@@ -8,6 +8,9 @@
namespace features {
+const char kMaxConnectionsPerHostChoiceDefault[] = "Default",
+ kMaxConnectionsPerHostChoice6[] = "6",
+const char kMaxConnectionsPerHostChoiceDefault[] = "6",
+ kMaxConnectionsPerHostChoice15[] = "15";
+
const base::Feature kTokenBinding{"token-binding",
@@ -132,17 +130,16 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
namespace net {
@@ -316,6 +319,20 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
@@ -316,6 +319,19 @@ void ClientSocketPoolManager::set_max_sockets_per_pool(
int ClientSocketPoolManager::max_sockets_per_group(
HttpNetworkSession::SocketPoolType pool_type) {
DCHECK_LT(pool_type, HttpNetworkSession::NUM_SOCKET_POOL_TYPES);
+
+ if (pool_type == HttpNetworkSession::NORMAL_SOCKET_POOL) {
+ int maxConnectionsPerHost;
+ if (!base::StringToInt(base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost),
+ &maxConnectionsPerHost)) {
+ LOG(DFATAL) << "--" << switches::kMaxConnectionsPerHost << " only accepts integers as arguments";
+ maxConnectionsPerHost = 0;
+ int maxConnectionsPerHost = 0;
+ auto value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kMaxConnectionsPerHost);
+ if (!value.empty() && !base::StringToInt(value, &maxConnectionsPerHost)) {
+ LOG(DFATAL) << "--" << switches::kMaxConnectionsPerHost << " only accepts integers as arguments (\"" << value << "\" is invalid)";
+ }
+ if (maxConnectionsPerHost != 0) {
+ return maxConnectionsPerHost;
@@ -154,5 +151,5 @@ diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket
}
--
2.7.4
2.11.0
@@ -1,116 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 9 Jul 2018 20:12:19 +0200
Subject: Add flag to show/hide NTP tiles
---
chrome/browser/about_flags.cc | 4 ++++
chrome/browser/android/ntp/most_visited_sites_bridge.cc | 8 ++++++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
chrome/common/chrome_switches.cc | 3 +++
chrome/common/chrome_switches.h | 1 +
6 files changed, 23 insertions(+)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1285,6 +1285,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kWebrtcNewEncodeCpuLoadEstimatorDescription, kOsAll,
FEATURE_VALUE_TYPE(media::kNewEncodeCpuLoadEstimator)},
#if defined(OS_ANDROID)
+ {"hide-ntp-tiles",
+ flag_descriptions::kHideNTPTilesName,
+ flag_descriptions::kHideNTPTilesDescription, kOsAndroid,
+ SINGLE_VALUE_TYPE(switches::kHideNTPTiles)},
{"clear-old-browsing-data", flag_descriptions::kClearOldBrowsingDataName,
flag_descriptions::kClearOldBrowsingDataDescription, kOsAndroid,
FEATURE_VALUE_TYPE(features::kClearOldBrowsingData)},
diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
--- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
+++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -13,9 +13,11 @@
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
#include "base/android/scoped_java_ref.h"
+#include "base/command_line.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.h"
#include "chrome/browser/profiles/profile.h"
@@ -167,6 +169,10 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
std::vector<int> sources;
std::vector<int> section_types;
std::vector<int64_t> data_generation_times;
+
+ // do not source any tile if NTP is disabled
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kHideNTPTiles)) {
for (const auto& section : sections) {
const NTPTilesVector& tiles = section.second;
section_types.resize(section_types.size() + tiles.size(),
@@ -181,6 +187,8 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
tile.data_generation_time.ToJavaTime());
}
}
+ }
+
Java_MostVisitedSitesBridge_onURLsAvailable(
env, observer_, ToJavaArrayOfStrings(env, titles),
ToJavaArrayOfStrings(env, urls), ToJavaIntArray(env, section_types),
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -106,6 +106,10 @@ const char kBackgroundVideoTrackOptimizationDescription[] =
"Disable video tracks when the video is played in the background to "
"optimize performance.";
+const char kHideNTPTilesName[] = "Hide NTP tiles";
+const char kHideNTPTilesDescription[] =
+ "Hide all tiles on the New Tab Page, making it effectively empty all the time.";
+
const char kBleAdvertisingInExtensionsName[] = "BLE Advertising in Chrome Apps";
const char kBleAdvertisingInExtensionsDescription[] =
"Enables BLE Advertising in Chrome Apps. BLE Advertising might interfere "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -92,6 +92,9 @@ extern const char kAv1DecoderDescription[];
extern const char kBackgroundVideoTrackOptimizationName[];
extern const char kBackgroundVideoTrackOptimizationDescription[];
+extern const char kHideNTPTilesName[];
+extern const char kHideNTPTilesDescription[];
+
extern const char kBleAdvertisingInExtensionsName[];
extern const char kBleAdvertisingInExtensionsDescription[];
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -88,6 +88,9 @@ const char kAutoSelectDesktopCaptureSource[] =
const char kBypassAppBannerEngagementChecks[] =
"bypass-app-banner-engagement-checks";
+// Hide all New Tab Page tiles, making it effectively empty all the time.
+const char kHideNTPTiles[] = "hide-ntp-tiles";
+
// How often (in seconds) to check for updates. Should only be used for testing
// purposes.
const char kCheckForUpdateIntervalSec[] = "check-for-update-interval";
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -46,6 +46,7 @@ extern const char kAuthServerWhitelist[];
extern const char kAutoOpenDevToolsForTabs[];
extern const char kAutoSelectDesktopCaptureSource[];
extern const char kBypassAppBannerEngagementChecks[];
+extern const char kHideNTPTiles[];
extern const char kCheckForUpdateIntervalSec[];
extern const char kCipherSuiteBlacklist[];
extern const char kCloudPrintFile[];
--
2.7.4
@@ -0,0 +1,113 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 29 Aug 2018 11:03:44 +0200
Subject: Add custom tab intents privacy option
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../org/chromium/chrome/browser/LaunchIntentDispatcher.java | 2 ++
.../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 7 +++++++
5 files changed, 27 insertions(+)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -18,6 +18,9 @@
<item name="top_controls_show_threshold" format="float" type="dimen">0.5</item>
<item name="top_controls_hide_threshold" format="float" type="dimen">0.5</item>
+ <string name="allow_custom_tab_intents_title">Allow custom tab intents from applications</string>
+ <string name="allow_custom_tab_intents_summary">When disabled, all custom tab intents will be processed as regular navigation instead</string>
+
<!-- The number of thumbnails that the thumbnail cache can hold. -->
<integer name="default_thumbnail_cache_size">5</integer>
<!-- The number of approximation thumbnails that the approximation cache can hold. -->
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -52,6 +52,11 @@
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="allow_custom_tab_intents"
+ android:title="@string/allow_custom_tab_intents_title"
+ android:summary="@string/allow_custom_tab_intents_summary"
+ android:defaultValue="false" />
<org.chromium.chrome.browser.preferences.TextMessageWithLinkAndIconPreference
android:key="sync_and_services_link"
android:summary="@string/privacy_sync_and_services_link"/>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.metrics.MediaNotificationUma;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
import org.chromium.chrome.browser.searchwidget.SearchActivity;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
@@ -274,6 +275,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
*/
public static boolean isCustomTabIntent(Intent intent) {
if (intent == null) return false;
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) return false;
if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
|| !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -41,6 +41,7 @@ public class PrivacyPreferences extends PreferenceFragment
"safe_browsing_extended_reporting";
private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
"safe_browsing_scout_reporting";
+ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
@@ -134,6 +135,11 @@ public class PrivacyPreferences extends PreferenceFragment
? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
+ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
+ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
+ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+
ChromeBaseCheckBoxPreference safeBrowsingPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
safeBrowsingPref.setOnPreferenceChangeListener(this);
@@ -153,6 +159,10 @@ public class PrivacyPreferences extends PreferenceFragment
|| PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
(boolean) newValue);
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
+ sharedPreferencesEditor.apply();
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
recordNetworkPredictionEnablingUMA((boolean) newValue);
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3615,6 +3615,13 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
Browse
</message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
+ Allow custom tab intents
+ </message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
+ Allow applications to open custom tab intents, similar to webview.
+ </message>
+
<!-- Migration strings -->
<message name="IDS_UPDATING_CHROME" desc="String that indicates that Chrome is updating">
Updating Chrome...
--
2.11.0
@@ -1,117 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 8 Jul 2018 23:06:52 +0200
Subject: Add flag to disable custom tab intents
Custom tab intents allow apps to open URLs with a minimal browser UI;
this flag allows disabling this functionality altogether and all custom tab
intents will instead open as regular URLs.
---
.../java/src/org/chromium/chrome/browser/ChromeSwitches.java | 3 +++
.../src/org/chromium/chrome/browser/LaunchIntentDispatcher.java | 8 ++++++--
chrome/browser/about_flags.cc | 4 ++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
chrome/common/chrome_switches.cc | 3 +++
chrome/common/chrome_switches.h | 1 +
7 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
@@ -177,6 +177,9 @@ public abstract class ChromeSwitches {
/** Open all custom tabs in a new task. Used only for experimental purposes. */
public static final String OPEN_CUSTOM_TABS_IN_NEW_TASK = "open-custom-tabs-in-new-task";
+ /** Disallow custom tab intents. */
+ public static final String DISALLOW_CUSTOM_TAB_INTENT = "disallow-custom-tab-intent";
+
/**
* Don't crash on undispatched VIEW intents sent to .Main.
* See ChromeTabbedActivity.maybeDispatchExplicitMainViewIntent() for more info.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -149,9 +149,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
recordIntentMetrics();
mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
+
+ if (!CommandLine.getInstance().hasSwitch(ChromeSwitches.DISALLOW_CUSTOM_TAB_INTENT)) {
+ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|| (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
- mIsCustomTabIntent = isCustomTabIntent;
+ } else {
+ mIsCustomTabIntent = false;
+ }
}
/**
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1302,6 +1302,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kMediaScreenCaptureName,
flag_descriptions::kMediaScreenCaptureDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kUserMediaScreenCapturing)},
+ {"disallow-custom-tab-intent",
+ flag_descriptions::kDisallowCustomTabIntentName,
+ flag_descriptions::kDisallowCustomTabIntentDescription, kOsAndroid,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisallowCustomTabIntent)},
#endif // OS_ANDROID
// Native client is compiled out if ENABLE_NACL is not set.
#if BUILDFLAG(ENABLE_NACL)
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2043,6 +2043,10 @@ const char kContextualSearchSecondTapDescription[] =
"Enables triggering on a second tap gesture even when Ranker would "
"normally suppress that tap.";
+const char kDisallowCustomTabIntentName[] = "Disallow custom tab intent";
+const char kDisallowCustomTabIntentDescription[] =
+ "Do not allow apps to open custom tab intents and use a regular browsing interaction instead.";
+
const char kDontPrefetchLibrariesName[] = "Don't Prefetch Libraries";
const char kDontPrefetchLibrariesDescription[] =
"Don't prefetch libraries after loading.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1244,6 +1244,9 @@ extern const char kContextualSearchRankerQueryDescription[];
extern const char kContextualSearchSecondTapName[];
extern const char kContextualSearchSecondTapDescription[];
+extern const char kDisallowCustomTabIntentName[];
+extern const char kDisallowCustomTabIntentDescription[];
+
extern const char kDontPrefetchLibrariesName[];
extern const char kDontPrefetchLibrariesDescription[];
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -218,6 +218,9 @@ const char kDisableExtensions[] = "disable-extensions";
// Disable extensions except those specified in a comma-separated list.
const char kDisableExtensionsExcept[] = "disable-extensions-except";
+// Disallow apps to use custom tab intents and use a regular URL open intent instead.
+const char kDisallowCustomTabIntent[] = "disallow-custom-tab-intent";
+
// Disable checking for user opt-in for extensions that want to inject script
// into file URLs (ie, always allow it). This is used during automated testing.
const char kDisableExtensionsFileAccessCheck[] =
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -72,6 +72,7 @@ extern const char kDisableCastStreamingHWEncoding[];
extern const char kDisableClientSidePhishingDetection[];
extern const char kDisableComponentExtensionsWithBackgroundPages[];
extern const char kDisableComponentUpdate[];
+extern const char kDisallowCustomTabIntent[];
extern const char kDisableDefaultApps[];
extern const char kDisableDeviceDiscoveryNotifications[];
extern const char kDisableDomainReliability[];
--
2.7.4
@@ -0,0 +1,200 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 28 Aug 2018 23:27:23 +0200
Subject: Add privacy option to keep cookies until session exit
---
chrome/android/java/res/values/values.xml | 3 +++
.../android/java/res/xml/website_preferences.xml | 7 +++++++
.../browser/preferences/PrefServiceBridge.java | 10 ++++++++++
.../website/SingleCategoryPreferences.java | 23 ++++++++++++++++++++++
.../java/strings/android_chrome_strings.grd | 6 ++++++
.../android/preferences/pref_service_bridge.cc | 19 ++++++++++++++++++
6 files changed, 68 insertions(+)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -39,6 +39,9 @@
<integer name="reload_button_level_reload">0</integer>
<integer name="reload_button_level_stop">1</integer>
+ <string name="allow_cookies_session_only_title">Keep cookies only until you quit your browser</string>
+ <string name="allow_cookies_session_only_summary">When enabled, all cookies will be erased when the browsing session is over</string>
+
<!-- Help and Feedback
These constants should be in sync with the context names on go/mobilehelprecs.
If the context ID cannot be found, the default help page will be shown to the user.-->
diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
--- a/chrome/android/java/res/xml/website_preferences.xml
+++ b/chrome/android/java/res/xml/website_preferences.xml
@@ -19,6 +19,13 @@
android:summary="@string/allow_third_party_cookies_summary"
android:defaultValue="true"
android:persistent="false" />
+ <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="cookies_session_only"
+ android:title="@string/allow_cookies_session_only_title"
+ android:summary="@string/allow_cookies_session_only_summary"
+ android:defaultValue="true"
+ android:persistent="false" />
<!-- A toggle for enabling vibration in notifications. -->
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="notifications_vibrate"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -245,6 +245,10 @@ public class PrefServiceBridge {
return nativeGetBlockThirdPartyCookiesEnabled();
}
+ public boolean isCookiesSessionOnlyEnabled() {
+ return nativeGetCookiesSessionOnlyEnabled();
+ }
+
/**
* @return Whether third-party cookie blocking is configured by policy
*/
@@ -630,6 +634,10 @@ public class PrefServiceBridge {
nativeSetBlockThirdPartyCookiesEnabled(enabled);
}
+ public void setCookiesSessionOnlyEnabled(boolean enabled) {
+ nativeSetCookiesSessionOnlyEnabled(enabled);
+ }
+
public void setDoNotTrackEnabled(boolean enabled) {
nativeSetDoNotTrackEnabled(enabled);
}
@@ -1026,6 +1034,7 @@ public class PrefServiceBridge {
private native boolean nativeGetAutoplayEnabled();
private native boolean nativeGetBackgroundSyncEnabled();
private native boolean nativeGetBlockThirdPartyCookiesEnabled();
+ private native boolean nativeGetCookiesSessionOnlyEnabled();
private native boolean nativeGetBlockThirdPartyCookiesManaged();
private native boolean nativeGetRememberPasswordsEnabled();
private native boolean nativeGetPasswordManagerAutoSigninEnabled();
@@ -1073,6 +1082,7 @@ public class PrefServiceBridge {
private native void nativeSetAllowCookiesEnabled(boolean allow);
private native void nativeSetBackgroundSyncEnabled(boolean allow);
private native void nativeSetBlockThirdPartyCookiesEnabled(boolean enabled);
+ private native void nativeSetCookiesSessionOnlyEnabled(boolean enabled);
private native void nativeSetClipboardEnabled(boolean allow);
private native void nativeSetDoNotTrackEnabled(boolean enabled);
private native void nativeSetRememberPasswordsEnabled(boolean allow);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
@@ -104,6 +104,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
// Keys for individual preferences.
public static final String READ_WRITE_TOGGLE_KEY = "read_write_toggle";
public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
+ public static final String COOKIES_SESSION_ONLY_TOGGLE_KEY = "cookies_session_only";
public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
private static final String ADD_EXCEPTION_KEY = "add_exception";
@@ -459,6 +460,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
if (type == SiteSettingsCategory.Type.COOKIES) {
updateThirdPartyCookiesCheckBox();
+ updateCookiesSessionOnlyCheckBox();
} else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
updateNotificationsVibrateCheckBox();
}
@@ -491,6 +493,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
getInfoForOrigins();
} else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setBlockThirdPartyCookiesEnabled(!((boolean) newValue));
+ } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
+ PrefServiceBridge.getInstance().setCookiesSessionOnlyEnabled(!((boolean) newValue));
} else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setNotificationsVibrateEnabled((boolean) newValue);
}
@@ -734,6 +738,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
getPreferenceScreen().removePreference(thirdPartyCookies);
}
+ // Configure/hide the keep cookies until session is over toggle, as needed.
+ Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
+ COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
+ cookiesSessionOnly.setOnPreferenceChangeListener(this);
+ updateCookiesSessionOnlyCheckBox();
+ } else {
+ getPreferenceScreen().removePreference(cookiesSessionOnly);
+ }
+
// Configure/hide the notifications vibrate toggle, as needed.
Preference notificationsVibrate =
getPreferenceScreen().findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
@@ -847,6 +861,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
}
+ private void updateCookiesSessionOnlyCheckBox() {
+ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
+ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ cookiesSessionOnlyPref.setChecked(
+ !PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
+ cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isCategoryEnabled(
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES));
+ }
+
private void updateNotificationsVibrateCheckBox() {
ChromeBaseCheckBoxPreference preference =
(ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -861,6 +861,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_ALLOW_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Allow Third Party Cookies preference">
Third-party websites can save and read cookie data
</message>
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
+ Keep cookies only until you quit your browser
+ </message>
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
+ When enabled, all cookies will be erased when the browsing session is over
+ </message>
<message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
JavaScript
</message>
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -282,6 +282,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
}
+static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ return CONTENT_SETTING_SESSION_ONLY == host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr);
+}
+
static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
@@ -741,6 +749,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
}
+static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jboolean enabled) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ host_content_settings_map->SetDefaultContentSetting(
+ CONTENT_SETTINGS_TYPE_COOKIES,
+ enabled ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_SESSION_ONLY);
+}
+
static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
--
2.11.0
@@ -33,5 +33,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
if (isCancelled()) return null;
refreshIncognitoModeDisabled();
--
2.7.4
2.11.0
@@ -32,5 +32,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/partnercustomiz
/**
--
2.7.4
2.11.0
@@ -0,0 +1,817 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 1 Aug 2018 09:19:40 +0200
Subject: Add bookmark import/export actions in bookmarks activity and page
---
.../java/res/menu/bookmark_action_bar_menu.xml | 14 ++
.../browser/bookmarks/BookmarkActionBar.java | 12 ++
.../chrome/browser/bookmarks/BookmarkActivity.java | 19 ++
.../chrome/browser/bookmarks/BookmarkBridge.java | 21 ++
.../chrome/browser/bookmarks/BookmarkDelegate.java | 10 +
.../chrome/browser/bookmarks/BookmarkManager.java | 20 ++
.../chrome/browser/bookmarks/BookmarkPage.java | 1 +
.../java/strings/android_chrome_strings.grd | 6 +
chrome/browser/BUILD.gn | 8 +-
.../browser/android/bookmarks/bookmark_bridge.cc | 219 +++++++++++++++++++++
chrome/browser/android/bookmarks/bookmark_bridge.h | 19 +-
chrome/browser/importer/profile_writer.cc | 2 +
chrome/common/BUILD.gn | 3 +
chrome/utility/BUILD.gn | 7 +-
chrome/utility/importer/bookmark_html_reader.cc | 27 ++-
chrome/utility/importer/bookmark_html_reader.h | 9 +
16 files changed, 387 insertions(+), 10 deletions(-)
diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
--- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
+++ b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
@@ -22,6 +22,20 @@
app:showAsAction="ifRoom"
app:iconTint="@color/dark_mode_tint" />
<item
+ android:id="@+id/import_menu_id"
+ android:icon="@drawable/add_circle_blue"
+ android:title="@string/import_bookmarks"
+ android:visible="true"
+ app:showAsAction="ifRoom"
+ app:iconTint="@color/dark_mode_tint" />
+ <item
+ android:id="@+id/export_menu_id"
+ android:icon="@drawable/ic_file_download_white_24dp"
+ android:title="@string/export_bookmarks"
+ android:visible="true"
+ app:showAsAction="ifRoom"
+ app:iconTint="@color/dark_mode_tint" />
+ <item
android:id="@+id/close_menu_id"
android:icon="@drawable/btn_close"
android:title="@string/bookmark_action_bar_close"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActionBar.java
@@ -82,6 +82,12 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
} else if (menuItem.getItemId() == R.id.search_menu_id) {
mDelegate.openSearchUI();
return true;
+ } else if (menuItem.getItemId() == R.id.import_menu_id) {
+ mDelegate.importBookmarks();
+ return true;
+ } else if (menuItem.getItemId() == R.id.export_menu_id) {
+ mDelegate.exportBookmarks();
+ return true;
}
SelectionDelegate<BookmarkId> selectionDelegate = mDelegate.getSelectionDelegate();
@@ -125,6 +131,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
void showLoadingUi() {
setTitle(null);
setNavigationButton(NAVIGATION_BUTTON_NONE);
+ getMenu().findItem(R.id.import_menu_id).setVisible(false);
+ getMenu().findItem(R.id.export_menu_id).setVisible(false);
getMenu().findItem(R.id.search_menu_id).setVisible(false);
getMenu().findItem(R.id.edit_menu_id).setVisible(false);
}
@@ -134,6 +142,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
super.showNormalView();
if (mDelegate == null) {
+ getMenu().findItem(R.id.import_menu_id).setVisible(false);
+ getMenu().findItem(R.id.export_menu_id).setVisible(false);
getMenu().findItem(R.id.search_menu_id).setVisible(false);
getMenu().findItem(R.id.edit_menu_id).setVisible(false);
}
@@ -166,6 +176,8 @@ public class BookmarkActionBar extends SelectableListToolbar<BookmarkId>
public void onFolderStateSet(BookmarkId folder) {
mCurrentFolder = mDelegate.getModel().getBookmarkById(folder);
+ getMenu().findItem(R.id.import_menu_id).setVisible(true);
+ getMenu().findItem(R.id.export_menu_id).setVisible(true);
getMenu().findItem(R.id.search_menu_id).setVisible(true);
getMenu().findItem(R.id.edit_menu_id).setVisible(mCurrentFolder.isEditable());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkActivity.java
@@ -12,6 +12,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.SnackbarActivity;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.ui.base.ActivityWindowAndroid;
/**
* The activity that displays the bookmark UI on the phone. It keeps a {@link BookmarkManager}
@@ -21,6 +22,7 @@ import org.chromium.components.bookmarks.BookmarkId;
public class BookmarkActivity extends SnackbarActivity {
private BookmarkManager mBookmarkManager;
+ private ActivityWindowAndroid mWindowAndroid;
static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
@@ -32,6 +34,22 @@ public class BookmarkActivity extends SnackbarActivity {
if (TextUtils.isEmpty(url)) url = UrlConstants.BOOKMARKS_URL;
mBookmarkManager.updateForUrl(url);
setContentView(mBookmarkManager.getView());
+
+ final boolean listenToActivityState = true;
+ mWindowAndroid = new ActivityWindowAndroid(this, listenToActivityState);
+ mWindowAndroid.restoreInstanceState(savedInstanceState);
+ mBookmarkManager.setWindow(mWindowAndroid);
+ // Set up the animation placeholder to be the SurfaceView. This disables the
+ // SurfaceView's 'hole' clipping during animations that are notified to the window.
+// mWindowAndroid.setAnimationPlaceholderView(
+// mBookmarkManager.getContentViewRenderView().getSurfaceView());
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ mWindowAndroid.saveInstanceState(outState);
}
@Override
@@ -48,6 +66,7 @@ public class BookmarkActivity extends SnackbarActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
+ mWindowAndroid.onActivityResult(requestCode, resultCode, data);
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
BookmarkId bookmarkId = BookmarkId.getBookmarkIdFromString(data.getStringExtra(
INTENT_VISIT_BOOKMARK_ID));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
@@ -18,6 +18,7 @@ import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.components.bookmarks.BookmarkId;
import org.chromium.components.bookmarks.BookmarkType;
import org.chromium.components.url_formatter.UrlFormatter;
+import org.chromium.ui.base.WindowAndroid;
import java.util.ArrayList;
import java.util.List;
@@ -508,6 +509,24 @@ public class BookmarkBridge {
}
/**
+ * Import bookmarks from a selected file.
+ * @param window The current window of the bookmarks activity or page.
+ */
+ public void importBookmarks(WindowAndroid window) {
+ assert mIsNativeBookmarkModelLoaded;
+ nativeImportBookmarks(mNativeBookmarkBridge, window);
+ }
+
+ /**
+ * Export bookmarks to a path selected by the user.
+ * @param window The current window of the bookmarks activity or page.
+ */
+ public void exportBookmarks() {
+ assert mIsNativeBookmarkModelLoaded;
+ nativeExportBookmarks(mNativeBookmarkBridge);
+ }
+
+ /**
* Synchronously gets a list of bookmarks that match the specified search query.
* @param query Keyword used for searching bookmarks.
* @param maxNumberOfResult Maximum number of result to fetch.
@@ -906,6 +925,8 @@ public class BookmarkBridge {
boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type,
int index);
+ private native void nativeImportBookmarks(long nativeBookmarkBridge, WindowAndroid window);
+ private native void nativeExportBookmarks(long nativeBookmarkBridge);
private native int nativeGetTotalBookmarkCount(long nativeBookmarkBridge, long id, int type);
private native void nativeSetBookmarkTitle(long nativeBookmarkBridge, long id, int type,
String title);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkDelegate.java
@@ -69,6 +69,16 @@ interface BookmarkDelegate {
void openSearchUI();
/**
+ * Imports bookmarks from user-selected file.
+ */
+ void importBookmarks();
+
+ /**
+ * Exports bookmarks to downloads directory.
+ */
+ void exportBookmarks();
+
+ /**
* Dismisses the search UI.
*/
void closeSearchUI();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java
@@ -22,6 +22,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.BasicNativePage;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkModelObserver;
+import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.favicon.LargeIconBridge;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
import org.chromium.chrome.browser.profiles.Profile;
@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
import org.chromium.components.bookmarks.BookmarkId;
+import org.chromium.ui.base.ActivityWindowAndroid;
import java.util.Stack;
@@ -55,6 +57,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
private Activity mActivity;
private ViewGroup mMainView;
private BookmarkModel mBookmarkModel;
+ private ActivityWindowAndroid mWindowAndroid;
private BookmarkUndoController mUndoController;
private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
private BasicNativePage mNativePage;
@@ -267,6 +270,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
}
/**
+ * Sets the Android window that is used by further intents created by the bookmark activity.
+ */
+ public void setWindow(ActivityWindowAndroid window) {
+ mWindowAndroid = window;
+ }
+
+ /**
* @return Current URL representing the UI state of bookmark manager. If no state has been shown
* yet in this session, on phone return last used state stored in preference; on tablet
* return the url previously set by {@link #updateForUrl(String)}.
@@ -414,6 +424,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
}
@Override
+ public void importBookmarks() {
+ mBookmarkModel.importBookmarks(mWindowAndroid);
+ }
+
+ @Override
+ public void exportBookmarks() {
+ mBookmarkModel.exportBookmarks();
+ }
+
+ @Override
public void openSearchUI() {
setState(BookmarkUIState.createSearchState());
mSelectableListLayout.onStartSearch();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java
@@ -35,6 +35,7 @@ public class BookmarkPage extends BasicNativePage {
mManager = new BookmarkManager(
activity, false, ((SnackbarManageable) activity).getSnackbarManager());
mManager.setBasicNativePage(this);
+ mManager.setWindow(activity.getWindowAndroid());
mTitle = activity.getString(R.string.bookmarks);
}
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -209,6 +209,12 @@ CHAR-LIMIT guidelines:
<message name="IDS_SEARCH" desc="The label for a search button.">
Search
</message>
+ <message name="IDS_IMPORT_BOOKMARKS" desc="The label for the import bookmarks button.">
+ Import
+ </message>
+ <message name="IDS_EXPORT_BOOKMARKS" desc="The label for an export bookmarks button.">
+ Export
+ </message>
<message name="IDS_SHOW_INFO" desc="The label for a info button to show info.">
Show Info
</message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -137,6 +137,10 @@ jumbo_split_static_library("browser") {
"bitmap_fetcher/bitmap_fetcher_service.h",
"bitmap_fetcher/bitmap_fetcher_service_factory.cc",
"bitmap_fetcher/bitmap_fetcher_service_factory.h",
+ "importer/profile_writer.cc",
+ "importer/profile_writer.h",
+ "bookmarks/bookmark_html_writer.cc",
+ "bookmarks/bookmark_html_writer.h",
"bookmarks/bookmark_model_factory.cc",
"bookmarks/bookmark_model_factory.h",
"bookmarks/bookmark_stats.cc",
@@ -2479,8 +2483,6 @@ jumbo_split_static_library("browser") {
"banners/app_banner_infobar_delegate_desktop.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
- "bookmarks/bookmark_html_writer.cc",
- "bookmarks/bookmark_html_writer.h",
"certificate_viewer.h",
"chrome_browser_field_trials_desktop.cc",
"chrome_browser_field_trials_desktop.h",
@@ -2569,8 +2571,6 @@ jumbo_split_static_library("browser") {
"importer/importer_uma.h",
"importer/in_process_importer_bridge.cc",
"importer/in_process_importer_bridge.h",
- "importer/profile_writer.cc",
- "importer/profile_writer.h",
"lifetime/browser_close_manager.cc",
"lifetime/browser_close_manager.h",
"lifetime/termination_notification.cc",
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -9,18 +9,29 @@
#include <memory>
+#include "base/android/content_uri_utils.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
+#include "base/android/path_utils.h"
#include "base/containers/stack.h"
#include "base/containers/stack_container.h"
#include "base/i18n/string_compare.h"
+#include "base/strings/utf_string_conversions.h"
+#include "chrome/utility/importer/bookmark_html_reader.h"
+#include "chrome/browser/bookmarks/bookmark_html_writer.h"
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
+#include "chrome/browser/importer/profile_writer.h"
+#include "chrome/browser/platform_util.h"
+#include "chrome/browser/ui/chrome_select_file_policy.h"
#include "chrome/browser/profiles/incognito_helpers.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_android.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/undo/bookmark_undo_service_factory.h"
+#include "chrome/common/importer/imported_bookmark_entry.h"
+#include "chrome/common/importer/importer_data_types.h"
+#include "chrome/common/url_constants.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_utils.h"
#include "components/bookmarks/browser/scoped_group_bookmark_actions.h"
@@ -30,11 +41,14 @@
#include "components/bookmarks/managed/managed_bookmark_service.h"
#include "components/prefs/pref_service.h"
#include "components/query_parser/query_parser.h"
+#include "components/search_engines/template_url.h"
#include "components/signin/core/browser/signin_manager.h"
#include "components/undo/bookmark_undo_service.h"
#include "components/undo/undo_manager.h"
+#include "components/url_formatter/url_fixer.h"
#include "content/public/browser/browser_thread.h"
#include "jni/BookmarkBridge_jni.h"
+#include "ui/android/window_android.h"
using base::android::AttachCurrentThread;
using base::android::ConvertUTF8ToJavaString;
@@ -53,6 +67,57 @@ using bookmarks::BookmarkPermanentNode;
using bookmarks::BookmarkType;
using content::BrowserThread;
+namespace internal {
+
+// Returns true if |url| has a valid scheme that we allow to import. We
+// filter out the URL with a unsupported scheme.
+bool CanImportURL(const GURL& url) {
+ // The URL is not valid.
+ if (!url.is_valid())
+ return false;
+
+ // Filter out the URLs with unsupported schemes.
+ const char* const kInvalidSchemes[] = {"wyciwyg", "place"};
+ for (size_t i = 0; i < arraysize(kInvalidSchemes); ++i) {
+ if (url.SchemeIs(kInvalidSchemes[i]))
+ return false;
+ }
+
+ // Check if |url| is about:blank.
+ if (url == url::kAboutBlankURL)
+ return true;
+
+ // If |url| starts with chrome:// or about:, check if it's one of the URLs
+ // that we support.
+ if (url.SchemeIs(content::kChromeUIScheme) ||
+ url.SchemeIs(url::kAboutScheme)) {
+ if (url.host_piece() == chrome::kChromeUIUberHost ||
+ url.host_piece() == chrome::kChromeUIAboutHost)
+ return true;
+
+ GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string()));
+ for (size_t i = 0; i < chrome::kNumberOfChromeHostURLs; ++i) {
+ if (fixed_url.DomainIs(chrome::kChromeHostURLs[i]))
+ return true;
+ }
+
+ for (size_t i = 0; i < chrome::kNumberOfChromeDebugURLs; ++i) {
+ if (fixed_url == chrome::kChromeDebugURLs[i])
+ return true;
+ }
+
+ // If url has either chrome:// or about: schemes but wasn't found in the
+ // above lists, it means we don't support it, so we don't allow the user
+ // to import it.
+ return false;
+ }
+
+ // Otherwise, we assume the url has a valid (importable) scheme.
+ return true;
+}
+
+} // internal
+
namespace {
class BookmarkTitleComparer {
@@ -129,6 +194,10 @@ BookmarkBridge::~BookmarkBridge() {
bookmark_model_->RemoveObserver(this);
if (partner_bookmarks_shim_)
partner_bookmarks_shim_->RemoveObserver(this);
+ // There may be pending file dialogs, we need to tell them that we've gone
+ // away so they don't try and call back to us.
+ if (select_file_dialog_)
+ select_file_dialog_->ListenerDestroyed();
}
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
@@ -470,6 +539,156 @@ jint BookmarkBridge::GetTotalBookmarkCount(
return count;
}
+void BookmarkBridge::ImportBookmarks(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& java_window) {
+ DCHECK(IsLoaded());
+
+ ui::WindowAndroid* window =
+ ui::WindowAndroid::FromJavaWindowAndroid(java_window);
+ CHECK(window);
+
+ select_file_dialog_ = ui::SelectFileDialog::Create(
+ this, std::make_unique<ChromeSelectFilePolicy>(nullptr));
+
+ //NOTE: extension and description are not used on Android
+ ui::SelectFileDialog::FileTypeInfo file_type_info;
+ file_type_info.extensions.resize(1);
+ file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("html"));
+ file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("htm"));
+ file_type_info.extension_description_overrides.push_back(base::ASCIIToUTF16("Netscape Bookmark"));
+ file_type_info.allowed_paths =
+ ui::SelectFileDialog::FileTypeInfo::NATIVE_OR_DRIVE_PATH;
+
+ const base::FilePath file_path;
+
+ select_file_dialog_->SelectFile(
+ ui::SelectFileDialog::SELECT_OPEN_FILE,
+ base::string16(),
+ file_path,
+ NULL,
+ 0,
+ base::FilePath::StringType(),
+ window,
+ NULL);
+}
+
+void ExporterCallback(Profile* profile, const base::FilePath& path) {
+ bookmark_html_writer::WriteBookmarks(profile, path, NULL);
+ //NOTE: nothing will be written if write permission has not been granted before
+ LOG(INFO) << "Bookmarks exported successfully in " << path;
+}
+
+void BookmarkBridge::ExportBookmarks(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
+ DCHECK(IsLoaded());
+ base::FilePath path;
+ if (!base::android::GetDownloadsDirectory(&path)) {
+ LOG(ERROR) << "Could not retrieve downloads directory for bookmarks export";
+ return;
+ }
+
+ path = path.Append(FILE_PATH_LITERAL("bookmarks.html"));
+
+// base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()},
+// base::BindOnce(&ExporterCallback, profile_, path));
+ ExporterCallback(profile_, path);
+}
+
+// Attempts to create a TemplateURL from the provided data. |title| is optional.
+// If TemplateURL creation fails, returns null.
+std::unique_ptr<TemplateURL> CreateTemplateURL(const base::string16& url,
+ const base::string16& keyword,
+ const base::string16& title) {
+ if (url.empty() || keyword.empty())
+ return nullptr;
+ TemplateURLData data;
+ data.SetKeyword(keyword);
+ // We set short name by using the title if it exists.
+ // Otherwise, we use the shortcut.
+ data.SetShortName(title.empty() ? keyword : title);
+ data.SetURL(TemplateURLRef::DisplayURLToURLRef(url));
+ return std::make_unique<TemplateURL>(data);
+}
+
+void ImporterCallback(Profile* profile, const base::FilePath& path, const std::string& contents) {
+ // this import logic comes from BookmarksFileImporter class
+ std::vector<ImportedBookmarkEntry> bookmarks;
+ std::vector<importer::SearchEngineInfo> search_engines;
+
+ bookmark_html_reader::ImportBookmarksFile(
+ base::Callback<bool(void)>(),
+ base::Bind(internal::CanImportURL),
+ contents,
+ &bookmarks,
+ &search_engines,
+ nullptr);
+
+ // writing to profile will begin extensive changes and use the same bookmarks model for persisting changes
+ auto *writer = new ProfileWriter(profile);
+
+ if (!bookmarks.empty()) {
+ writer->AddBookmarks(bookmarks, base::ASCIIToUTF16("Imported"));
+ }
+ if (!search_engines.empty()) {
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
+ for (const auto& search_engine : search_engines) {
+ std::unique_ptr<TemplateURL> owned_template_url = CreateTemplateURL(
+ search_engine.url, search_engine.keyword, search_engine.display_name);
+ if (owned_template_url)
+ owned_template_urls.push_back(std::move(owned_template_url));
+ }
+ writer->AddKeywords(std::move(owned_template_urls), false);
+ }
+
+ LOG(INFO) << "Imported " << bookmarks.size() << " bookmarks and " <<
+ search_engines.size() << " search engines from " << path;
+}
+
+void BookmarkBridge::FileSelected(const base::FilePath& path, int index,
+ void* params) {
+ base::File file;
+ if (path.IsContentUri()) {
+ file = base::OpenContentUriForRead(path);
+ } else {
+ file.Initialize(path, base::File::FLAG_OPEN | base::File::FLAG_READ);
+ }
+ if (!file.IsValid()) {
+ LOG(ERROR) << "Cannot open bookmarks file for import";
+ return;
+ }
+
+ auto fileLength = file.GetLength();
+ if (-1 == fileLength) {
+ LOG(ERROR) << "Cannot read bookmarks file length";
+ return;
+ }
+
+ if (fileLength > 10 * 1024 * 1024) {
+ LOG(ERROR) << "Bookmarks file is too big";
+ return;
+ }
+
+ std::vector<char> buffer(fileLength);
+ if (-1 == file.ReadAtCurrentPos(buffer.data(), fileLength)) {
+ LOG(ERROR) << "Could not read bookmarks file";
+ return;
+ }
+
+ if (buffer.empty()) {
+ LOG(ERROR) << "Empty bookmarks file";
+ return;
+ }
+
+ std::string content(buffer.begin(), buffer.end());
+// base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()},
+// base::BindOnce(&ImporterCallback, profile_, path, content));
+ ImporterCallback(profile_, path, content);
+}
+
+void BookmarkBridge::FileSelectionCanceled(void* params) {
+}
+
void BookmarkBridge::SetBookmarkTitle(JNIEnv* env,
const JavaParamRef<jobject>& obj,
jlong id,
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h
--- a/chrome/browser/android/bookmarks/bookmark_bridge.h
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
@@ -13,6 +13,8 @@
#include "components/bookmarks/browser/base_bookmark_model_observer.h"
#include "components/bookmarks/common/android/bookmark_id.h"
#include "components/prefs/pref_change_registrar.h"
+#include "components/search_engines/template_url.h"
+#include "ui/shell_dialogs/select_file_dialog.h"
namespace bookmarks {
class BookmarkModel;
@@ -26,7 +28,8 @@ class Profile;
// bookmark page. This fetches the bookmarks, title, urls, folder
// hierarchy.
class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
- public PartnerBookmarksShim::Observer {
+ public PartnerBookmarksShim::Observer,
+ public ui::SelectFileDialog::Listener {
public:
BookmarkBridge(JNIEnv* env,
const base::android::JavaRef<jobject>& obj,
@@ -36,6 +39,12 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
bool IsDoingExtensiveChanges(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
+ // SelectFileDialog::Listener implementation.
+ void FileSelected(const base::FilePath& path,
+ int index,
+ void* params) override;
+ void FileSelectionCanceled(void* params) override;
+
jboolean IsEditBookmarksEnabled(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
@@ -116,6 +125,13 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
jlong id,
jint type);
+ void ImportBookmarks(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& java_window);
+
+ void ExportBookmarks(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+
void SetBookmarkTitle(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj,
jlong id,
@@ -267,6 +283,7 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
std::unique_ptr<bookmarks::ScopedGroupBookmarkActions>
grouped_bookmark_actions_;
PrefChangeRegistrar pref_change_registrar_;
+ scoped_refptr<ui::SelectFileDialog> select_file_dialog_;
// Information about the Partner bookmarks (must check for IsLoaded()).
// This is owned by profile.
diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc
--- a/chrome/browser/importer/profile_writer.cc
+++ b/chrome/browser/importer/profile_writer.cc
@@ -109,12 +109,14 @@ void ProfileWriter::AddHistoryPage(const history::URLRows& page,
HistoryServiceFactory::GetForProfile(profile_,
ServiceAccessType::EXPLICIT_ACCESS)
->AddPagesWithDetails(page, visit_source);
+#if !defined(OS_ANDROID)
// Measure the size of the history page after Auto Import on first run.
if (first_run::IsChromeFirstRun() &&
visit_source == history::SOURCE_IE_IMPORTED) {
UMA_HISTOGRAM_COUNTS("Import.ImportedHistorySize.AutoImportFromIE",
page.size());
}
+#endif
}
void ProfileWriter::AddHomepage(const GURL& home_page) {
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -436,6 +436,9 @@ static_library("common") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
+ ## Bromite dependencies for bookmark import functionality
+ "importer/imported_bookmark_entry.cc",
+ "importer/imported_bookmark_entry.h",
]
} else {
# Non-Android.
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
--- a/chrome/utility/BUILD.gn
+++ b/chrome/utility/BUILD.gn
@@ -55,8 +55,6 @@ static_library("utility") {
if (!is_android) {
sources += [
- "importer/bookmark_html_reader.cc",
- "importer/bookmark_html_reader.h",
"importer/bookmarks_file_importer.cc",
"importer/bookmarks_file_importer.h",
"importer/edge_database_reader_win.cc",
@@ -158,6 +156,11 @@ static_library("utility") {
]
}
+ sources += [
+ "importer/bookmark_html_reader.cc",
+ "importer/bookmark_html_reader.h",
+ ]
+
if (use_nss_certs) {
sources += [
"importer/nss_decryptor_system_nss.cc",
diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc
--- a/chrome/utility/importer/bookmark_html_reader.cc
+++ b/chrome/utility/importer/bookmark_html_reader.cc
@@ -17,7 +17,9 @@
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "chrome/common/importer/imported_bookmark_entry.h"
+#if !defined(OS_ANDROID)
#include "chrome/utility/importer/favicon_reencode.h"
+#endif
#include "components/search_engines/search_terms_data.h"
#include "components/search_engines/template_url.h"
#include "net/base/data_url.h"
@@ -56,6 +58,7 @@ bool GetAttribute(const std::string& attribute_list,
return true;
}
+#if !defined(OS_ANDROID)
// Given the URL of a page and a favicon data URL, adds an appropriate record
// to the given favicon usage vector.
void DataURLToFaviconUsage(const GURL& link_url,
@@ -86,6 +89,7 @@ void DataURLToFaviconUsage(const GURL& link_url,
favicons->push_back(usage);
}
+#endif
} // namespace
@@ -108,12 +112,10 @@ static std::string stripDt(const std::string& lineDt) {
void ImportBookmarksFile(
const base::Callback<bool(void)>& cancellation_callback,
const base::Callback<bool(const GURL&)>& valid_url_callback,
- const base::FilePath& file_path,
+ const std::string& content,
std::vector<ImportedBookmarkEntry>* bookmarks,
std::vector<importer::SearchEngineInfo>* search_engines,
favicon_base::FaviconUsageDataList* favicons) {
- std::string content;
- base::ReadFileToString(file_path, &content);
std::vector<std::string> lines = base::SplitString(
content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
@@ -126,6 +128,7 @@ void ImportBookmarksFile(
std::vector<base::string16> path;
size_t toolbar_folder_index = 0;
std::string charset = "UTF-8"; // If no charset is specified, assume utf-8.
+
for (size_t i = 0;
i < lines.size() &&
(cancellation_callback.is_null() || !cancellation_callback.Run());
@@ -218,10 +221,12 @@ void ImportBookmarksFile(
}
bookmarks->push_back(entry);
+#if !defined(OS_ANDROID)
// Save the favicon. DataURLToFaviconUsage will handle the case where
// there is no favicon.
if (favicons)
DataURLToFaviconUsage(url, favicon, favicons);
+#endif
continue;
}
@@ -278,6 +283,22 @@ void ImportBookmarksFile(
}
}
+void ImportBookmarksFile(
+ const base::Callback<bool(void)>& cancellation_callback,
+ const base::Callback<bool(const GURL&)>& valid_url_callback,
+ const base::FilePath& file_path,
+ std::vector<ImportedBookmarkEntry>* bookmarks,
+ std::vector<importer::SearchEngineInfo>* search_engines,
+ favicon_base::FaviconUsageDataList* favicons) {
+ std::string content;
+ if (!base::ReadFileToString(file_path, &content)) {
+ LOG(ERROR) << "Could not directly read bookmarks import file";
+ return;
+ }
+
+ ImportBookmarksFile(cancellation_callback, valid_url_callback, content, bookmarks, search_engines, favicons);
+}
+
bool CanImportURLAsSearchEngine(const GURL& url,
std::string* search_engine_url) {
std::string url_spec = url.possibly_invalid_spec();
diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/importer/bookmark_html_reader.h
--- a/chrome/utility/importer/bookmark_html_reader.h
+++ b/chrome/utility/importer/bookmark_html_reader.h
@@ -51,6 +51,15 @@ void ImportBookmarksFile(
std::vector<importer::SearchEngineInfo>* search_engines,
favicon_base::FaviconUsageDataList* favicons);
+void ImportBookmarksFile(
+ const base::Callback<bool(void)>& cancellation_callback,
+ const base::Callback<bool(const GURL&)>& valid_url_callback,
+ const std::string& content,
+ std::vector<ImportedBookmarkEntry>* bookmarks,
+ std::vector<importer::SearchEngineInfo>* search_engines,
+ favicon_base::FaviconUsageDataList* favicons);
+
+
// Returns true if |url| should be imported as a search engine, i.e. because it
// has replacement terms. Chrome treats such bookmarks as search engines rather
// than true bookmarks.
--
2.11.0
@@ -0,0 +1,126 @@
From: samartnik <artem@brave.com>
Date: Tue, 17 Apr 2018 17:14:00 +0300
Subject: Add option to not persist tabs across sessions
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -66,6 +66,9 @@
<!-- TODO(peconn): Add help section. -->
<!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
+ <string name="close_tabs_on_exit_title">Close tabs on exit</string>
+ <string name="close_tabs_on_exit_summary">Don\'t persist tabs between browsing sessions</string>
+
<!-- Our manage space activity. Default pre-KitKat to be nothing. -->
<string name="manage_space_activity"></string>
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -15,6 +15,11 @@
android:summary="@string/search_suggestions_summary"
android:defaultValue="true" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="close_tabs_on_exit"
+ android:title="@string/close_tabs_on_exit_title"
+ android:summary="@string/close_tabs_on_exit_summary"
+ android:defaultValue="false" />
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="safe_browsing_extended_reporting"
android:title="@string/safe_browsing_extended_reporting_title"
android:summary="@string/safe_browsing_extended_reporting_summary" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1037,8 +1037,10 @@ public class ChromeTabbedActivity
boolean hadCipherData =
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
+ String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
boolean noRestoreState =
- CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE);
+ CommandLine.getInstance().hasSwitch(ChromeSwitches.NO_RESTORE_STATE) ||
+ ContextUtils.getAppSharedPreferences().getBoolean(PREF_CLOSE_TABS_ON_EXIT, false);
if (noRestoreState) {
// Clear the state files because they are inconsistent and useless from now on.
mTabModelSelectorImpl.clearState();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.preferences.privacy;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
@@ -15,6 +16,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
@@ -46,6 +48,7 @@ public class PrivacyPreferences extends PreferenceFragment
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
private static final String PREF_DO_NOT_TRACK = "do_not_track";
private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
@@ -145,6 +148,11 @@ public class PrivacyPreferences extends PreferenceFragment
safeBrowsingPref.setOnPreferenceChangeListener(this);
safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+ ChromeBaseCheckBoxPreference closeTabsOnExitPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
+ closeTabsOnExitPref.setOnPreferenceChangeListener(this);
+ closeTabsOnExitPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+
updateSummaries();
}
@@ -171,6 +179,12 @@ public class PrivacyPreferences extends PreferenceFragment
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
PrefServiceBridge.getInstance().setBoolean(
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
+// PrefServiceBridge.getInstance().setBoolean(
+// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue);
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
+ sharedPreferencesEditor.apply();
}
return true;
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3655,6 +3655,12 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
<message name="IDS_NEAR_OOM_INTERVENTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can resume what it was doing.">
Resume
</message>
+ <message name="IDS_CLOSE_TABS_ON_EXIT_TITLE" desc="Text for 'Close tabs on exit' settings-privacy option.">
+ Close all open tabs on exit
+ </message>
+ <message name="IDS_CLOSE_TABS_ON_EXIT_SUMMARY" desc="Summary text for 'Close tabs on exit' settings-privacy option.">
+ Don't persist tabs between browsing sessions
+ </message>
</messages>
</release>
</grit>
--
2.11.0
@@ -0,0 +1,313 @@
From: Ryan Archer <ryan.bradley.archer@gmail.com>
Date: Wed, 2 Aug 2017 01:41:28 -0400
Subject: Add an always-incognito mode.
More specifically, add a preference that causes all new tabs and all
clicked links to launch as incognito.
---
.../android/java/res/xml/privacy_preferences.xml | 5 ++
.../browser/AlwaysIncognitoLinkInterceptor.java | 72 ++++++++++++++++++++++
.../chromium/chrome/browser/ChromeActivity.java | 4 ++
.../chrome/browser/appmenu/AppMenuHandler.java | 12 ++++
.../contextmenu/ChromeContextMenuPopulator.java | 7 +++
.../chrome/browser/tabmodel/ChromeTabCreator.java | 24 +++++++-
.../java/strings/android_chrome_strings.grd | 6 ++
chrome/android/java_sources.gni | 1 +
8 files changed, 130 insertions(+), 1 deletion(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -20,6 +20,11 @@
android:summary="@string/close_tabs_on_exit_summary"
android:defaultValue="false" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="always_incognito"
+ android:title="@string/always_incognito_title"
+ android:summary="@string/always_incognito_summary"
+ android:defaultValue="false" />
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="safe_browsing_extended_reporting"
android:title="@string/safe_browsing_extended_reporting_title"
android:summary="@string/safe_browsing_extended_reporting_summary" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java
@@ -0,0 +1,72 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.chromium.chrome.browser;
+
+import android.content.SharedPreferences;
+
+import org.chromium.chrome.browser.tab.EmptyTabObserver;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
+import org.chromium.chrome.browser.tabmodel.TabModel;
+import org.chromium.content_public.browser.LoadUrlParams;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+/**
+ * A {@link TabObserver} that implements the always-incognito preference behavior for links. When the preference is set
+ * to true, it intercepts links opened within observed {@link Tab}s and opens them in new incognito <code>Tab</code>s instead.
+ */
+public class AlwaysIncognitoLinkInterceptor extends EmptyTabObserver {
+
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
+
+ private final SharedPreferences alwaysIncognitoContainer;
+ private final Map<Tab, String> lastUrls;
+ private final Set<Tab> revertingTabs;
+
+ public AlwaysIncognitoLinkInterceptor(final SharedPreferences alwaysIncognitoContainer) {
+
+ assert alwaysIncognitoContainer != null;
+
+ this.alwaysIncognitoContainer = alwaysIncognitoContainer;
+ lastUrls = new HashMap<Tab, String>();
+ revertingTabs = new HashSet<Tab>();
+ }
+
+ @Override
+ public void onDestroyed(final Tab tab)
+ {
+ lastUrls.remove(tab);
+ revertingTabs.remove(tab);
+ }
+
+ @Override
+ public void onUpdateUrl(final Tab tab, final String url) {
+
+ if (tab == null) return;
+ if (url == null) return;
+ if (tab.isIncognito()) return;
+ if (alwaysIncognitoContainer == null) return;
+
+ final String lastUrl = lastUrls.put(tab, url);
+
+ if (!alwaysIncognitoContainer.getBoolean(PREF_ALWAYS_INCOGNITO, false)) return;
+ if (revertingTabs.contains(tab)) {
+ revertingTabs.remove(tab);
+ return;
+ }
+
+ tab.getActivity().getTabCreator(true).createNewTab(new LoadUrlParams(url), TabModel.TabLaunchType.FROM_LINK, tab);
+
+ if ((url.equals(lastUrl)) || (!tab.canGoBack())) {
+ // this call was triggered by a reload
+ } else {
+ revertingTabs.add(tab);
+ tab.goBack();
+ }
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -238,6 +238,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
// Observes when sync becomes ready to create the mContextReporter.
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
private ChromeFullscreenManager mFullscreenManager;
@@ -1630,6 +1631,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
+ return mIncognitoTabCreator;
+ }
return incognito ? mIncognitoTabCreator : mRegularTabCreator;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuHandler.java
@@ -17,6 +17,7 @@ import android.view.View;
import android.widget.PopupMenu;
import org.chromium.base.metrics.RecordUserAction;
+import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import java.util.ArrayList;
@@ -26,6 +27,9 @@ import java.util.ArrayList;
* AppMenuObservers about these actions.
*/
public class AppMenuHandler {
+
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
+
private AppMenu mAppMenu;
private AppMenuDragHelper mAppMenuDragHelper;
private Menu mMenu;
@@ -167,6 +171,14 @@ public class AppMenuHandler {
if (mDelegate.shouldShowHeader(appRect.height())) {
headerResourceId = mDelegate.getHeaderResourceId();
}
+
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
+ final MenuItem newTabOption = mAppMenu.getMenu().findItem(R.id.new_tab_menu_id);
+ if (newTabOption != null) {
+ newTabOption.setVisible(false);
+ }
+ }
+
mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
footerResourceId, headerResourceId, mHighlightMenuId, showFromBottom);
mAppMenuDragHelper.onShow(startDragging);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -14,6 +14,7 @@ import android.view.ContextMenu;
import android.webkit.MimeTypeMap;
import org.chromium.base.CollectionUtil;
+import org.chromium.base.ContextUtils;
import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
@@ -45,6 +46,7 @@ import java.util.Set;
*/
public class ChromeContextMenuPopulator implements ContextMenuPopulator {
private static final String TAG = "CCMenuPopulator";
+ private static final String PREF_ALWAYS_INCOGNITO = "always_incognito";
private static final ShareContextMenuItem SHARE_IMAGE =
new ShareContextMenuItem(R.drawable.ic_share_white_24dp,
R.string.contextmenu_share_image, R.id.contextmenu_share_image, false);
@@ -479,6 +481,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
disabledOptions.add(ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB);
}
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)
+ && !mDelegate.isIncognito()) {
+ disabledOptions.add(ChromeContextMenuItem.OPEN_IN_NEW_TAB);
+ }
+
if (params.getLinkText().trim().isEmpty() || params.isImage()) {
disabledOptions.add(ChromeContextMenuItem.COPY_LINK_TEXT);
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java
@@ -7,8 +7,10 @@ package org.chromium.chrome.browser.tabmodel;
import android.content.Intent;
import android.text.TextUtils;
+import org.chromium.base.ContextUtils;
import org.chromium.base.SysUtils;
import org.chromium.base.TraceEvent;
+import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.IntentHandler;
@@ -19,6 +21,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
+import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
import org.chromium.chrome.browser.util.IntentUtils;
@@ -36,6 +39,7 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
private final ChromeActivity mActivity;
private final boolean mIncognito;
+ private final TabObserver mExtraLogic;
private WindowAndroid mNativeWindow;
private TabModel mTabModel;
@@ -47,6 +51,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
mActivity = activity;
mNativeWindow = nativeWindow;
mIncognito = incognito;
+ if (!mIncognito) {
+ mExtraLogic = new AlwaysIncognitoLinkInterceptor(ContextUtils.getAppSharedPreferences());
+ } else {
+ mExtraLogic = null;
+ }
}
@Override
@@ -159,6 +168,10 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
tab.getWebContents());
}
+ if (mExtraLogic != null) {
+ tab.addObserver(mExtraLogic);
+ }
+
mTabModel.addTab(tab, position, type);
return tab;
} finally {
@@ -199,6 +212,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
Tab tab = Tab.createLiveTab(
Tab.INVALID_TAB_ID, mIncognito, mNativeWindow, type, parentId, !openInForeground);
tab.initialize(webContents, mTabContentManager, delegateFactory, !openInForeground, false);
+
+ if (mExtraLogic != null) {
+ tab.addObserver(mExtraLogic);
+ }
+
mTabModel.addTab(tab, position, type);
return true;
}
@@ -242,7 +260,6 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
*/
public Tab launchUrlFromExternalApp(String url, String referer, String headers,
String appId, boolean forceNewTab, Intent intent, long intentTimestamp) {
- assert !mIncognito;
boolean isLaunchedFromChrome = TextUtils.equals(appId, mActivity.getPackageName());
// If an external app sends an intent for a Weblite URL and the Data Reduction Proxy is
@@ -302,6 +319,11 @@ public class ChromeTabCreator extends TabCreatorManager.TabCreator {
tab.initialize(
null, mTabContentManager, createDefaultTabDelegateFactory(), !selectTab, false);
assert state.isIncognito() == mIncognito;
+
+ if (mExtraLogic != null) {
+ tab.addObserver(mExtraLogic);
+ }
+
mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
return tab;
}
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -676,6 +676,12 @@ CHAR-LIMIT guidelines:
<message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Body text for Chrome setting under 'Help Improve Safe Browsing'. This feature sends small amounts of data to Google about potentially-dangerous pages to help Safe Browsing improve Chrome's protection against malware and phishing.">
Sends some system information and page content to Google
</message>
+ <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
+ Open links in incognito tabs always
+ </message>
+ <message name="IDS_ALWAYS_INCOGNITO_SUMMARY" desc="Summary for always incognito mode">
+ Opens links in incognito tabs when you click on new tab or on a link
+ </message>
<message name="IDS_SAFE_BROWSING_TITLE" desc="Title for safe browsing.">
Safe Browsing
</message>
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -8,6 +8,7 @@ import("//device/vr/buildflags/buildflags.gni")
import("//chrome/android/feed/feed_java_sources.gni")
chrome_java_sources = [
+ "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
"java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java",
"java/src/org/chromium/chrome/browser/ActivityTabTaskDescriptionHelper.java",
"java/src/org/chromium/chrome/browser/ActivityTaskDescriptionIconGenerator.java",
--
2.11.0
@@ -46,7 +46,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -224,6 +224,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
@@ -225,6 +225,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
// Variations seed fetching is only enabled in official Chrome builds, if a URL
// is specified on the command line, and for testing.
bool IsFetchingEnabled() {
@@ -54,7 +54,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
#if !defined(GOOGLE_CHROME_BUILD)
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kVariationsServerURL) &&
@@ -235,6 +236,9 @@ bool IsFetchingEnabled() {
@@ -236,6 +237,9 @@ bool IsFetchingEnabled() {
}
#endif
return true;
@@ -65,5 +65,5 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
--
2.7.4
2.11.0
@@ -27,5 +27,5 @@ diff --git a/ui/gfx/animation/animation.cc b/ui/gfx/animation/animation.cc
#endif
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: Disable plugins enumeration
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -1239,10 +1239,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
@@ -1262,10 +1262,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
}
PluginData* LocalFrame::GetPluginData() const {
@@ -21,7 +21,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
+ return nullptr;
}
DEFINE_WEAK_IDENTIFIER_MAP(LocalFrame);
void LocalFrame::SetAdTrackerForTesting(AdTracker* ad_tracker) {
--
2.7.4
2.11.0
@@ -10,7 +10,7 @@ Subject: Remove google account access permission on reboot
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -790,8 +790,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
@@ -869,8 +869,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
resources = [
"java/res_template/xml/file_paths.xml",
"java/res_template/xml/launchershortcuts.xml",
@@ -23,7 +23,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -831,14 +831,14 @@ by a child template that "extends" this file.
@@ -837,14 +837,14 @@ by a child template that "extends" this file.
</provider>
<!-- Sync adapter for browser invalidation. -->
@@ -41,5 +41,5 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<!-- Broadcast receiver that will be notified of account changes -->
<receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
--
2.7.4
2.11.0
@@ -21,5 +21,5 @@ diff --git a/net/cert/x509_util.cc b/net/cert/x509_util.cc
// Certificates made by CreateKeyAndSelfSignedCert will be signed using this
// digest algorithm.
--
2.7.4
2.11.0
@@ -11,7 +11,7 @@ anyway), avoid sending to Google.
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
--- a/net/dns/host_resolver_impl.cc
+++ b/net/dns/host_resolver_impl.cc
@@ -107,10 +107,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
@@ -108,10 +108,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
// cached.
const int kIPv6ProbePeriodMs = 1000;
@@ -26,5 +26,5 @@ diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
// We use a separate histogram name for each platform to facilitate the
// display of error codes by their symbolic name (since each platform has
--
2.7.4
2.11.0
@@ -26,5 +26,5 @@ diff --git a/chrome/browser/profile_resetter/reset_report_uploader.cc b/chrome/b
GURL GetClientReportUrl(const std::string& report_url) {
GURL url(report_url);
--
2.7.4
2.11.0
@@ -19,5 +19,5 @@ diff --git a/chrome/browser/ui/startup/google_api_keys_infobar_delegate.cc b/chr
std::unique_ptr<ConfirmInfoBarDelegate>(
new GoogleApiKeysInfoBarDelegate())));
--
2.7.4
2.11.0
@@ -4,14 +4,14 @@ Subject: autofill: disable autofill download manager
Disables the autofill download manager (trk:158).
---
components/autofill/core/browser/autofill_download_manager.cc | 9 +++++++--
components/autofill/core/browser/autofill_download_manager.cc | 6 +++++-
components/autofill/core/browser/autofill_manager.cc | 2 ++
2 files changed, 9 insertions(+), 2 deletions(-)
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
--- a/components/autofill/core/browser/autofill_download_manager.cc
+++ b/components/autofill/core/browser/autofill_download_manager.cc
@@ -39,7 +39,6 @@ namespace autofill {
@@ -41,7 +41,6 @@ namespace autofill {
namespace {
@@ -19,44 +19,29 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
const size_t kMaxFormCacheSize = 16;
const size_t kMaxFieldsPerQueryRequest = 100;
@@ -69,11 +68,13 @@ const net::BackoffEntry::Policy kAutofillBackoffPolicy = {
false,
};
@@ -365,6 +364,7 @@ bool AutofillDownloadManager::StartUploadRequest(
+#if 0
#if defined(GOOGLE_CHROME_BUILD)
const char kClientName[] = "Google+Chrome";
#else
const char kClientName[] = "Chromium";
#endif // defined(GOOGLE_CHROME_BUILD)
+#endif
const char kDefaultAutofillServerURL[] =
"https://clients1.google.com/tbproxy/af/";
@@ -371,7 +372,7 @@ bool AutofillDownloadManager::StartUploadRequest(
std::tuple<GURL, net::URLFetcher::RequestType>
AutofillDownloadManager::GetRequestURLAndMethod(
std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
const FormRequestData& request_data) const {
- net::URLFetcher::RequestType method = net::URLFetcher::POST;
+#if 0
std::string query_str(base::StrCat({"client=", kClientName}));
std::string method("POST");
std::string query_str;
if (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY) {
@@ -394,6 +395,10 @@ AutofillDownloadManager::GetRequestURLAndMethod(
@@ -387,6 +387,10 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
GURL url = autofill_server_url_
.Resolve(RequestTypeToString(request_data.request_type))
.ReplaceComponents(replacements);
+#else
+ net::URLFetcher::RequestType method = net::URLFetcher::GET;
+ std::string method("GET");
+ GURL url = GURL("about:blank");
+#endif
return std::make_tuple(std::move(url), method);
return std::make_tuple(std::move(url), std::move(method));
}
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -1264,9 +1264,11 @@ AutofillManager::AutofillManager(
@@ -1183,9 +1183,11 @@ AutofillManager::AutofillManager(
weak_ptr_factory_(this) {
DCHECK(driver);
DCHECK(client_);
@@ -69,5 +54,5 @@ diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/a
if (personal_data_ && client_)
personal_data_->OnSyncServiceInitialized(client_->GetSyncService());
--
2.7.4
2.11.0
@@ -15,7 +15,7 @@ turn it back on.
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
--- a/chrome/browser/extensions/extension_system_impl.cc
+++ b/chrome/browser/extensions/extension_system_impl.cc
@@ -206,8 +206,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
@@ -207,8 +207,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
// ExtensionService depends on RuntimeData.
runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_)));
@@ -26,5 +26,5 @@ diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser
if (!extensions_enabled ||
chromeos::ProfileHelper::IsLockScreenAppProfile(profile_)) {
--
2.7.4
2.11.0
@@ -82,5 +82,5 @@ diff --git a/components/security_interstitials/core/safe_browsing_loud_error_ui.
// Constants for the V4 phishing string upgrades.
--
2.7.4
2.11.0
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
} // namespace
@@ -285,6 +287,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
@@ -289,6 +291,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
return;
}
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
// Fill in metadata about which model we used.
if (is_extended_reporting) {
request->set_model_filename(model_loader_extended_->name());
@@ -367,6 +373,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
@@ -371,6 +377,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
// Record that we made a request
phishing_report_times_.push(base::Time::Now());
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
}
void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -381,6 +388,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -385,6 +392,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
return;
}
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
std::string request_data;
if (!request->SerializeToString(&request_data)) {
UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION);
@@ -450,6 +461,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -454,6 +465,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
// Record that we made a malware request
malware_report_times_.push(base::Time::Now());
@@ -65,5 +65,5 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
void ClientSideDetectionService::HandlePhishingVerdict(
--
2.7.4
2.11.0
-83
View File
@@ -1,83 +0,0 @@
From: thermatk <thermatk@thermatk.com>
Date: Fri, 22 Jun 2018 17:04:43 +0200
Subject: kill Vision
---
services/shape_detection/BUILD.gn | 3 ---
.../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------
.../chromium/shape_detection/FaceDetectionProviderImpl.java | 2 +-
.../src/org/chromium/shape_detection/InterfaceRegistrar.java | 2 --
4 files changed, 1 insertion(+), 18 deletions(-)
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
--- a/services/shape_detection/BUILD.gn
+++ b/services/shape_detection/BUILD.gn
@@ -79,13 +79,10 @@ if (is_android) {
android_library("shape_detection_java") {
java_files = [
- "android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java",
"android/java/src/org/chromium/shape_detection/FaceDetectionImpl.java",
- "android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java",
"android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java",
"android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java",
"android/java/src/org/chromium/shape_detection/BitmapUtils.java",
- "android/java/src/org/chromium/shape_detection/TextDetectionImpl.java",
]
deps = [
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
import android.graphics.Bitmap;
-import com.google.android.gms.vision.Frame;
-
import org.chromium.mojo_base.BigBufferUtil;
import org.chromium.skia.mojom.ColorType;
@@ -44,14 +42,4 @@ public class BitmapUtils {
return bitmap;
}
-
- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
- Bitmap bitmap = convertToBitmap(bitmapData);
- if (bitmap == null) {
- return null;
- }
-
- // This constructor implies a pixel format conversion to YUV.
- return new Frame.Builder().setBitmap(bitmap).build();
- }
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
== ConnectionResult.SUCCESS;
if (isGmsCoreSupported) {
- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
+ //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
} else {
FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
@@ -20,9 +20,7 @@ class InterfaceRegistrar {
// is not necessary to hold on to a reference to it explicitly.
InterfaceRegistry registry = InterfaceRegistry.create(
CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
- registry.addInterface(BarcodeDetection.MANAGER, new BarcodeDetectionImpl.Factory());
registry.addInterface(
FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
}
}
--
2.7.4
@@ -17,7 +17,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/37
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc
--- a/chrome/browser/safe_browsing/client_side_detection_service.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_service.cc
@@ -354,7 +354,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
@@ -358,7 +358,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = GetClientReportUrl(kClientReportPhishingUrl);
resource_request->method = "POST";
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
traffic_annotation);
loader->AttachStringForUpload(request_data, "application/octet-stream");
@@ -436,7 +436,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -440,7 +440,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = GetClientReportUrl(kClientReportMalwareUrl);
resource_request->method = "POST";
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
@@ -1022,7 +1022,7 @@ void CheckClientDownloadRequest::SendRequest() {
@@ -1068,7 +1068,7 @@ void CheckClientDownloadRequest::SendRequest() {
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = PPAPIDownloadRequest::GetDownloadRequestUrl();
resource_request->method = "POST";
@@ -110,5 +110,5 @@ diff --git a/components/safe_browsing/browser/threat_details_cache.cc b/componen
current_load_ = network::SimpleURLLoader::Create(std::move(resource_request),
traffic_annotation);
--
2.7.4
2.11.0
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,179 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 18 Sep 2018 08:06:14 +0200
Subject: Fixes for building without safebrowsing on Android
---
.../android/java/res/xml/privacy_preferences.xml | 12 -----
.../preferences/privacy/PrivacyPreferences.java | 58 ----------------------
.../chrome_browsing_data_remover_delegate.cc | 10 ----
.../chrome_resource_dispatcher_host_delegate.cc | 2 +
4 files changed, 2 insertions(+), 80 deletions(-)
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -25,18 +25,6 @@
android:summary="@string/always_incognito_summary"
android:defaultValue="false" />
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
- android:key="safe_browsing_extended_reporting"
- android:title="@string/safe_browsing_extended_reporting_title"
- android:summary="@string/safe_browsing_extended_reporting_summary" />
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
- android:key="safe_browsing_scout_reporting"
- android:title="@string/safe_browsing_scout_reporting_title"
- android:summary="@string/safe_browsing_scout_reporting_summary" />
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
- android:key="safe_browsing"
- android:title="@string/safe_browsing_title"
- android:summary="@string/safe_browsing_summary" />
- <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="network_predictions"
android:title="@string/network_predictions_title"
android:summary="@string/network_predictions_summary"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -39,12 +39,7 @@ public class PrivacyPreferences extends PreferenceFragment
implements OnPreferenceChangeListener {
private static final String PREF_NAVIGATION_ERROR = "navigation_error";
private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions";
- private static final String PREF_SAFE_BROWSING_EXTENDED_REPORTING =
- "safe_browsing_extended_reporting";
- private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
- "safe_browsing_scout_reporting";
public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
- private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
@@ -77,10 +72,6 @@ public class PrivacyPreferences extends PreferenceFragment
// Remove preferences that were migrated to SyncAndServicesPreferences.
preferenceScreen.removePreference(findPreference(PREF_NAVIGATION_ERROR));
preferenceScreen.removePreference(findPreference(PREF_SEARCH_SUGGESTIONS));
- preferenceScreen.removePreference(
- findPreference(PREF_SAFE_BROWSING_EXTENDED_REPORTING));
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING));
- preferenceScreen.removePreference(findPreference(PREF_SAFE_BROWSING));
preferenceScreen.removePreference(findPreference(PREF_NETWORK_PREDICTIONS));
preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
preferenceScreen.removePreference(findPreference(PREF_USAGE_AND_CRASH_REPORTING));
@@ -122,32 +113,11 @@ public class PrivacyPreferences extends PreferenceFragment
preferenceScreen.removePreference(findPreference(PREF_CONTEXTUAL_SEARCH));
}
- // Listen to changes to both Extended Reporting prefs.
- ChromeBaseCheckBoxPreference legacyExtendedReportingPref =
- (ChromeBaseCheckBoxPreference) findPreference(
- PREF_SAFE_BROWSING_EXTENDED_REPORTING);
- legacyExtendedReportingPref.setOnPreferenceChangeListener(this);
- legacyExtendedReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- ChromeBaseCheckBoxPreference scoutReportingPref =
- (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING_SCOUT_REPORTING);
- scoutReportingPref.setOnPreferenceChangeListener(this);
- scoutReportingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- // Remove the extended reporting preference that is NOT active.
- String extended_reporting_pref_to_remove =
- prefServiceBridge.isSafeBrowsingScoutReportingActive()
- ? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
- preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
-
ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
- ChromeBaseCheckBoxPreference safeBrowsingPref =
- (ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
- safeBrowsingPref.setOnPreferenceChangeListener(this);
- safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
-
ChromeBaseCheckBoxPreference closeTabsOnExitPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
closeTabsOnExitPref.setOnPreferenceChangeListener(this);
@@ -161,12 +131,6 @@ public class PrivacyPreferences extends PreferenceFragment
String key = preference.getKey();
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
PrefServiceBridge.getInstance().setSearchSuggestEnabled((boolean) newValue);
- } else if (PREF_SAFE_BROWSING.equals(key)) {
- PrefServiceBridge.getInstance().setSafeBrowsingEnabled((boolean) newValue);
- } else if (PREF_SAFE_BROWSING_EXTENDED_REPORTING.equals(key)
- || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
- PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
- (boolean) newValue);
} else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
@@ -225,21 +189,6 @@ public class PrivacyPreferences extends PreferenceFragment
searchSuggestionsPref.setChecked(prefServiceBridge.isSearchSuggestEnabled());
}
- String extended_reporting_pref = prefServiceBridge.isSafeBrowsingScoutReportingActive()
- ? PREF_SAFE_BROWSING_SCOUT_REPORTING : PREF_SAFE_BROWSING_EXTENDED_REPORTING;
- CheckBoxPreference extendedReportingPref =
- (CheckBoxPreference) findPreference(extended_reporting_pref);
- if (extendedReportingPref != null) {
- extendedReportingPref.setChecked(
- prefServiceBridge.isSafeBrowsingExtendedReportingEnabled());
- }
-
- CheckBoxPreference safeBrowsingPref =
- (CheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
- if (safeBrowsingPref != null) {
- safeBrowsingPref.setChecked(prefServiceBridge.isSafeBrowsingEnabled());
- }
-
CheckBoxPreference canMakePaymentPref =
(CheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
if (canMakePaymentPref != null) {
@@ -276,13 +225,6 @@ public class PrivacyPreferences extends PreferenceFragment
if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
return prefs.isSearchSuggestManaged();
}
- if (PREF_SAFE_BROWSING_EXTENDED_REPORTING.equals(key)
- || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
- return prefs.isSafeBrowsingExtendedReportingManaged();
- }
- if (PREF_SAFE_BROWSING.equals(key)) {
- return prefs.isSafeBrowsingManaged();
- }
if (PREF_NETWORK_PREDICTIONS.equals(key)) {
return prefs.isNetworkPredictionManaged();
}
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
--- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.cc
@@ -256,16 +256,6 @@ bool DoesOriginMatchEmbedderMask(int origin_type_mask,
return false;
}
-// Callback for when cookies have been deleted. Invokes NotifyIfDone.
-// Receiving |cookie_manager| as a parameter so that the receive pipe is
-// not deleted before the response is received.
-void OnClearedCookies(base::OnceClosure done,
- network::mojom::CookieManagerPtr cookie_manager,
- uint32_t num_deleted) {
- DCHECK_CURRENTLY_ON(BrowserThread::UI);
- std::move(done).Run();
-}
-
} // namespace
ChromeBrowsingDataRemoverDelegate::ChromeBrowsingDataRemoverDelegate(
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
@@ -495,8 +495,10 @@ void ChromeResourceDispatcherHostDelegate::AppendStandardResourceThrottles(
// of the list, so one of them gets to decide if the resource is safe.
content::ResourceThrottle* first_throttle = NULL;
#if defined(OS_ANDROID)
+#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
first_throttle = DataReductionProxyResourceThrottle::MaybeCreate(
request, resource_context, resource_type, nullptr);
+#endif
#endif // defined(OS_ANDROID)
#if defined(SAFE_BROWSING_DB_LOCAL) || defined(SAFE_BROWSING_DB_REMOTE)
--
2.11.0
@@ -18,7 +18,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/28
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -377,9 +377,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
@@ -378,9 +378,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
}
bool Extension::ShouldExposeViaManagementAPI() const {
@@ -32,5 +32,5 @@ diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
Extension::ManifestData* Extension::GetManifestData(const std::string& key)
--
2.7.4
2.11.0
@@ -27,5 +27,5 @@ diff --git a/components/translate/core/browser/translate_language_list.cc b/comp
void TranslateLanguageList::SetResourceRequestsAllowed(bool allowed) {
--
2.7.4
2.11.0
@@ -9,7 +9,7 @@ Subject: lint: suppress hardcoded text warnings
diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml
--- a/build/android/lint/suppressions.xml
+++ b/build/android/lint/suppressions.xml
@@ -94,10 +94,8 @@ Still reading?
@@ -92,10 +92,8 @@ Still reading?
<ignore regexp="chromecast/internal" />
<ignore regexp="remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java" />
</issue>
@@ -23,5 +23,5 @@ diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressio
<ignore regexp="remoting/android/host/res/layout/main.xml"/>
</issue>
--
2.7.4
2.11.0
+156
View File
@@ -0,0 +1,156 @@
From: thermatk <thermatk@thermatk.com>
Date: Fri, 22 Jun 2018 17:04:43 +0200
Subject: kill Vision
---
.../org/chromium/shape_detection/BarcodeDetectionImpl.java | 6 +++---
.../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------
.../chromium/shape_detection/FaceDetectionImplGmsCore.java | 6 +++---
.../chromium/shape_detection/FaceDetectionProviderImpl.java | 2 +-
.../src/org/chromium/shape_detection/InterfaceRegistrar.java | 10 +++++-----
.../src/org/chromium/shape_detection/TextDetectionImpl.java | 6 +++---
6 files changed, 15 insertions(+), 27 deletions(-)
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
@@ -43,11 +43,11 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
// on the device; this happens "fast", but it might have not completed,
// bail in this case. Also, the API was disabled between and v.9.0 and
// v.9.2, see https://developers.google.com/android/guides/releases.
- if (!mBarcodeDetector.isOperational()) {
+// if (!mBarcodeDetector.isOperational()) {
Log.e(TAG, "BarcodeDetector is not operational");
callback.call(new BarcodeDetectionResult[0]);
return;
- }
+/* }
Frame frame = BitmapUtils.convertToFrame(bitmapData);
if (frame == null) {
@@ -77,7 +77,7 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
barcodeArray[i].cornerPoints[j].y = corners[j].y;
}
}
- callback.call(barcodeArray);
+ callback.call(barcodeArray);*/
}
@Override
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
import android.graphics.Bitmap;
-import com.google.android.gms.vision.Frame;
-
import org.chromium.mojo_base.BigBufferUtil;
import org.chromium.skia.mojom.ColorType;
@@ -44,14 +42,4 @@ public class BitmapUtils {
return bitmap;
}
-
- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
- Bitmap bitmap = convertToBitmap(bitmapData);
- if (bitmap == null) {
- return null;
- }
-
- // This constructor implies a pixel format conversion to YUV.
- return new Frame.Builder().setBitmap(bitmap).build();
- }
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
@@ -63,7 +63,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
// The vision library will be downloaded the first time the API is used
// on the device; this happens "fast", but it might have not completed,
// bail in this case.
- if (!mFaceDetector.isOperational()) {
+// if (!mFaceDetector.isOperational()) {
Log.e(TAG, "FaceDetector is not operational");
// Fallback to Android's FaceDetectionImpl.
@@ -73,7 +73,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
FaceDetectionImpl detector = new FaceDetectionImpl(options);
detector.detect(bitmapData, callback);
return;
- }
+/* }
Frame frame = BitmapUtils.convertToFrame(bitmapData);
if (frame == null) {
@@ -157,7 +157,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
faceArray[i].boundingBox.height = face.getHeight();
}
}
- callback.call(faceArray);
+ callback.call(faceArray);*/
}
@Override
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
== ConnectionResult.SUCCESS;
if (isGmsCoreSupported) {
- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
+ //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
} else {
FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
@@ -20,10 +20,10 @@ class InterfaceRegistrar {
// is not necessary to hold on to a reference to it explicitly.
InterfaceRegistry registry = InterfaceRegistry.create(
CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
- registry.addInterface(
- BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory());
- registry.addInterface(
- FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
+// registry.addInterface(
+// BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory());
+// registry.addInterface(
+// FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
+// registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
}
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
@@ -42,11 +42,11 @@ public class TextDetectionImpl implements TextDetection {
// on the device; this happens "fast", but it might have not completed,
// bail in this case. Also, the API was disabled between and v.9.0 and
// v.9.2, see https://developers.google.com/android/guides/releases.
- if (!mTextRecognizer.isOperational()) {
+// if (!mTextRecognizer.isOperational()) {
Log.e(TAG, "TextDetector is not operational");
callback.call(new TextDetectionResult[0]);
return;
- }
+/* }
Frame frame = BitmapUtils.convertToFrame(bitmapData);
if (frame == null) {
@@ -76,7 +76,7 @@ public class TextDetectionImpl implements TextDetection {
detectedTextArray[i].cornerPoints[j].y = corners[j].y;
}
}
- callback.call(detectedTextArray);
+ callback.call(detectedTextArray); */
}
@Override
--
2.11.0
@@ -17,17 +17,17 @@ Subject: kill GCM
.../BackgroundTaskSchedulerGcmNetworkManager.java | 30 ++++-------
components/gcm_driver/android/BUILD.gn | 1 -
components/gcm_driver/instance_id/android/BUILD.gn | 1 -
.../gcm_driver/instance_id/InstanceIDBridge.java | 29 ++--------
.../gcm_driver/instance_id/InstanceIDBridge.java | 29 +++-------
components/sync/android/BUILD.gn | 1 -
third_party/cacheinvalidation/BUILD.gn | 6 ---
.../client/contrib/MultiplexingGcmListener.java | 49 ++---------------
.../android2/channel/AndroidNetworkChannel.java | 18 +++----
19 files changed, 34 insertions(+), 252 deletions(-)
19 files changed, 36 insertions(+), 250 deletions(-)
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
--- a/build/secondary/third_party/android_tools/BUILD.gn
+++ b/build/secondary/third_party/android_tools/BUILD.gn
@@ -43,8 +43,6 @@ if (enable_java_templates) {
@@ -64,8 +64,6 @@ if (enable_java_templates) {
support_lib_alias("android_support_chromium_java") {
testonly = true
}
@@ -54,7 +54,7 @@ diff --git a/build/secondary/third_party/android_tools/support/BUILD.gn b/build/
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -260,7 +260,6 @@ android_library("chrome_java") {
@@ -269,7 +269,6 @@ android_library("chrome_java") {
"//third_party/android_swipe_refresh:android_swipe_refresh_java",
"//third_party/android_tools:android_arch_lifecycle_common_java",
"//third_party/android_tools:android_arch_lifecycle_runtime_java",
@@ -65,7 +65,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -74,22 +74,17 @@ by a child template that "extends" this file.
@@ -77,22 +77,17 @@ by a child template that "extends" this file.
<permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
<permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
<permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
@@ -913,43 +908,6 @@ by a child template that "extends" this file.
@@ -919,43 +914,6 @@ by a child template that "extends" this file.
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
android:hardwareAccelerated="false" />
@@ -132,7 +132,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<!-- Notification service for sync. -->
<meta-data android:name="ipc.invalidation.ticl.listener_service_class"
android:value="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService"/>
@@ -961,8 +919,6 @@ by a child template that "extends" this file.
@@ -967,8 +925,6 @@ by a child template that "extends" this file.
</service>
<service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
android:exported="false"/>
@@ -141,7 +141,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
android:exported="false"/>
<receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
@@ -989,24 +945,6 @@ by a child template that "extends" this file.
@@ -995,24 +951,6 @@ by a child template that "extends" this file.
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"/>
@@ -169,17 +169,17 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
@@ -9,10 +9,6 @@ import android.content.SharedPreferences;
import android.os.AsyncTask;
@@ -8,10 +8,6 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.StrictMode;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.OneoffTask;
-import com.google.android.gms.gcm.Task;
-
import org.chromium.base.AsyncTask;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
@@ -37,8 +33,6 @@ public class BackgroundSyncLauncher {
// BackgroundSyncLauncherAndroid, if any. If it is non-null then the browser is running.
private static BackgroundSyncLauncher sInstance;
@@ -251,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
@@ -12,8 +12,6 @@ import android.os.Build;
@@ -11,8 +11,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.SystemClock;
@@ -259,7 +259,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/In
-
import org.chromium.base.ApplicationState;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.Log;
import org.chromium.base.AsyncTask;
@@ -200,16 +198,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
* Registers for Google Cloud Messaging (GCM) for Invalidations.
*/
@@ -386,15 +386,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GC
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
@@ -13,7 +13,6 @@ import android.os.Parcel;
@@ -12,7 +12,6 @@ import android.os.Parcel;
import android.support.annotation.MainThread;
import android.util.Log;
-import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
import org.chromium.base.ThreadUtils;
@@ -92,6 +91,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
import org.chromium.base.AsyncTask;
@@ -95,6 +94,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
* This function runs on a thread from the AsyncTask.THREAD_POOL_EXECUTOR.
*/
private void sendUpstreamMessage(String to, Bundle data, String token, Context context) {
@@ -402,7 +402,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
// Add the OAuth2 token to the bundle. The token should have the prefix Bearer added to it.
data.putString("Authorization", "Bearer " + token);
if (!isMessageWithinLimit(data)) {
@@ -105,6 +105,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
@@ -109,6 +109,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
Log.w(TAG, "Send message failed");
GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SEND_FAILED);
}
@@ -413,7 +413,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -24,7 +24,6 @@ chrome_java_sources = [
@@ -27,7 +27,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/ChromeActivity.java",
"java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
"java/src/org/chromium/chrome/browser/ChromeApplication.java",
@@ -421,7 +421,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
"java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
@@ -1159,7 +1158,6 @@ chrome_java_sources = [
@@ -1217,7 +1216,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
"java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
"java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
@@ -560,7 +560,7 @@ diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm
diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
--- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
+++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
@@ -26,7 +26,6 @@ public class InstanceIDBridge {
@@ -25,7 +25,6 @@ public class InstanceIDBridge {
* Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
* initialized on a background thread.
*/
@@ -568,7 +568,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
private static boolean sBlockOnAsyncTasksForTesting;
@@ -71,7 +70,7 @@ public class InstanceIDBridge {
@@ -70,7 +69,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<String>() {
@Override
protected String doBackgroundWork() {
@@ -577,7 +577,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(String id) {
@@ -86,7 +85,7 @@ public class InstanceIDBridge {
@@ -85,7 +84,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<Long>() {
@Override
protected Long doBackgroundWork() {
@@ -586,7 +586,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(Long creationTime) {
@@ -107,11 +106,7 @@ public class InstanceIDBridge {
@@ -106,11 +105,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<String>() {
@Override
protected String doBackgroundWork() {
@@ -599,7 +599,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(String token) {
@@ -127,12 +122,7 @@ public class InstanceIDBridge {
@@ -126,12 +121,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<Boolean>() {
@Override
protected Boolean doBackgroundWork() {
@@ -613,7 +613,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(Boolean success) {
@@ -147,12 +137,7 @@ public class InstanceIDBridge {
@@ -146,12 +136,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<Boolean>() {
@Override
protected Boolean doBackgroundWork() {
@@ -627,17 +627,20 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(Boolean success) {
@@ -192,10 +177,6 @@ public class InstanceIDBridge {
@@ -190,11 +175,11 @@ public class InstanceIDBridge {
@Override
@SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
protected Result doInBackground(Void... params) {
synchronized (InstanceIDBridge.this) {
- if (mInstanceID == null) {
- mInstanceID = InstanceIDWithSubtype.getInstance(
- ContextUtils.getApplicationContext(), mSubtype);
- }
}
- synchronized (InstanceIDBridge.this) {
+/* synchronized (InstanceIDBridge.this) {
if (mInstanceID == null) {
mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype);
}
- }
+ }*/
return doBackgroundWork();
}
@Override
diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
--- a/components/sync/android/BUILD.gn
+++ b/components/sync/android/BUILD.gn
@@ -796,5 +799,5 @@ diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/
}
}
--
2.7.4
2.11.0

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