Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1c0e45b66 | ||
|
|
1397b5e86a | ||
|
|
171c2f224a | ||
|
|
628ddf9b60 | ||
|
|
8c3fcd08de | ||
|
|
375ac9bf8b | ||
|
|
e1b9f9d68a | ||
|
|
7f7fc80c7a | ||
|
|
aa96e7ce43 | ||
|
|
5c9d69ebcc | ||
|
|
7469dbed21 | ||
|
|
bc1f0b79f5 | ||
|
|
4c2225259f |
@@ -5,7 +5,7 @@ about: Suggest a privacy-related idea for this project
|
||||
---
|
||||
|
||||
**Is your feature request related to privacy?**
|
||||
Only privacy-related feature requests are considered.
|
||||
Features that are not related to privacy are unlikely to be considered.
|
||||
|
||||
**Is there a patch available for this feature somewhere?**
|
||||
...
|
||||
@@ -14,4 +14,4 @@ Only privacy-related feature requests are considered.
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
A clear and concise description of any alternative solutions or features you have considered.
|
||||
|
||||
@@ -1,3 +1,38 @@
|
||||
# 70.0.3538.102
|
||||
* do not grant notifications to default search engine
|
||||
* remove all promos from bookmark manager page
|
||||
* re-introduced various patches to eradicate binary blob dependencies (only Cast left)
|
||||
* remove contacts picker permission
|
||||
|
||||
# 70.0.3538.95
|
||||
* fix crash on bookmark edit activity (fixes https://github.com/bromite/bromite/issues/172)
|
||||
* fix slow chrome://flags (fixes https://github.com/bromite/bromite/issues/173)
|
||||
* enable TLS 1.3 final support by default (fixes https://github.com/bromite/bromite/issues/174)
|
||||
* dropped some patches related to GCM/GMS on suspicion of being related to random crashes
|
||||
|
||||
# 70.0.3538.87
|
||||
* enable history requirement of user gesture (fixes https://github.com/bromite/bromite/issues/171)
|
||||
* enable serialization of scroll position changes while loading (fixes https://github.com/bromite/bromite/issues/171)
|
||||
* remove passwords keyboard accessory option (fixes https://github.com/bromite/bromite/issues/171)
|
||||
* some improvements to bookmark import/export interaction
|
||||
* add flag to disable orientation API, disabled by default
|
||||
* disable device motion API by default (fixes https://github.com/bromite/bromite/issues/171)
|
||||
|
||||
# 70.0.3538.83
|
||||
* fix keep session cookies option showing on all site settings views
|
||||
* fix blank site settings entry showing (fixes https://github.com/bromite/bromite/issues/166)
|
||||
* offer builtin autocomplete for chrome://flags quick access
|
||||
|
||||
# 70.0.3538.80
|
||||
* add flag to disable video resume functionality, allowing to not pause video playback on tab switch (fixes https://github.com/bromite/bromite/issues/108)
|
||||
* prevent "are you there" prompts from appearing when playing videos
|
||||
* completely disable update scheduler checks to fix a related crash
|
||||
|
||||
# 70.0.3538.77
|
||||
* disable generic sensor APIs by default (fixes https://github.com/bromite/bromite/issues/160)
|
||||
* introduce flag to disable device motion API (fixes https://github.com/bromite/bromite/issues/160)
|
||||
* add Quad9 as a DNS-over-HTTPS (DoH) option (fixes https://github.com/bromite/bromite/issues/140)
|
||||
|
||||
# 70.0.3538.71
|
||||
* fix bug with canvas fingerprinting (fixes https://github.com/bromite/bromite/issues/154)
|
||||
|
||||
|
||||
@@ -38,6 +38,11 @@ Additionally, these features would not be privacy-friendly.
|
||||
## Does Bromite require root?
|
||||
No.
|
||||
|
||||
## Is Bromite de-googled?
|
||||
|
||||
Yes, although this has not been verified (and hardly can be) under all situations; if you were to find connections to cloud-based services please report them via the issue tracker.
|
||||
Projects which follow a strict approach on this are [Iridium](https://iridiumbrowser.de/) and [Inox patchset](https://github.com/gcarq/inox-patchset).
|
||||
|
||||
## What is the SystemWebView?
|
||||
It is the core component of Android for all web page visualizations. For example when you access a new wifi network and need to activate it, that is using the SystemWebView. If you do not know what it is then you do not need to install it.
|
||||
|
||||
@@ -70,17 +75,18 @@ Yes, since version 69. While the desktop version of Chromium has an option to di
|
||||
|
||||
* baked-in adblock engine with filters from EasyList, EasyPrivacy and others
|
||||
* remove click-tracking and AMP from search results
|
||||
* DNS-over-HTTPS support via Google/CloudFlare servers
|
||||
* DNS-over-HTTPS support via Google, Cloudflare and Quad9 servers
|
||||
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines
|
||||
* chrome flags to disable custom intents and clear session on exit
|
||||
* always-incognito mode
|
||||
* completely removed safe browsing and other privacy-unfriendly features
|
||||
* anti-fingerprinting mitigations for canvas, audio, client rects, webGL and sensor APIs
|
||||
* use fixed User-Agent to conceal real model and browser version
|
||||
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
|
||||
* canvas, audio and other anti-fingerprinting mitigations
|
||||
|
||||
## Features not related to privacy
|
||||
* import/export bookmarks
|
||||
* allow playing videos in background
|
||||
* allow playing videos in background tabs and disable pause on switching tabs
|
||||
* all codecs included (proprietary, open H.264 etc.)
|
||||
* built with official speed optimizations
|
||||
|
||||
|
||||
+1899
-205
File diff suppressed because it is too large
Load Diff
@@ -3,14 +3,14 @@ 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(-)
|
||||
.../java/res/drawable-hdpi/settings_translate.png | Bin 399 -> 0 bytes
|
||||
.../java/res/drawable-mdpi/settings_translate.png | Bin 284 -> 0 bytes
|
||||
.../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
|
||||
.../res/drawable-xxhdpi/settings_translate.png | Bin 793 -> 0 bytes
|
||||
.../res/drawable-xxxhdpi/settings_translate.png | Bin 1038 -> 0 bytes
|
||||
.../java/res/xml/site_settings_preferences.xml | 8 +++----
|
||||
.../website/SiteSettingsPreferences.java | 23 +++------------------
|
||||
7 files changed, 7 insertions(+), 24 deletions(-)
|
||||
delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
|
||||
delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
|
||||
delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
|
||||
@@ -33,9 +33,21 @@ diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/c
|
||||
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
|
||||
index 81658269058c..518be48cb3c5 100644
|
||||
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
|
||||
@@ -50,9 +50,9 @@
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
android:key="ads" />
|
||||
<!-- Background sync -->
|
||||
- <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
+ <!-- org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
- android:key="background_sync" />
|
||||
+ android:key="background_sync" /-->
|
||||
<!-- Protected content -->
|
||||
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
@@ -73,11 +73,11 @@
|
||||
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
|
||||
android:key="sound" />
|
||||
@@ -51,43 +63,56 @@ index 81658269058c..346cdce944c6 100644
|
||||
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
|
||||
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
|
||||
index 1274fd3c7118..831f01c52fe0 100644
|
||||
index 1274fd3c7118..57b29816fd96 100644
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
|
||||
@@ -89,7 +89,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
@@ -38,7 +38,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
// are defined in the SiteSettingsCategory, additional keys
|
||||
// are listed here.
|
||||
static final String MEDIA_KEY = "media";
|
||||
- static final String TRANSLATE_KEY = "translate";
|
||||
|
||||
// Whether the Protected Content menu is available for display.
|
||||
boolean mProtectedContentMenuAvailable;
|
||||
@@ -84,12 +83,12 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
for (@SiteSettingsCategory.Type int i = 0; i < SiteSettingsCategory.Type.NUM_ENTRIES;
|
||||
i++) {
|
||||
if (i == SiteSettingsCategory.Type.AUTOPLAY
|
||||
- || i == SiteSettingsCategory.Type.PROTECTED_MEDIA)
|
||||
+ || i == SiteSettingsCategory.Type.PROTECTED_MEDIA
|
||||
+ || i == SiteSettingsCategory.Type.BACKGROUND_SYNC)
|
||||
continue;
|
||||
getPreferenceScreen().removePreference(findPreference(i));
|
||||
}
|
||||
getPreferenceScreen().removePreference(findPreference(MEDIA_KEY));
|
||||
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
|
||||
+// 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
|
||||
@@ -116,11 +115,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
getPreferenceScreen().removePreference(
|
||||
findPreference(SiteSettingsCategory.Type.CLIPBOARD));
|
||||
}
|
||||
// The new Languages Preference *feature* is an advanced version of this translate
|
||||
// preference. Once Languages Preference is enabled, remove this setting.
|
||||
- // 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
|
||||
@@ -131,10 +125,6 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
private void updatePreferenceStates() {
|
||||
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
|
||||
|
||||
// Translate preference.
|
||||
- // 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 (mMediaSubMenu) {
|
||||
@@ -149,7 +139,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
if (!mProtectedContentMenuAvailable) {
|
||||
websitePrefs.add(SiteSettingsCategory.Type.AUTOPLAY);
|
||||
}
|
||||
@@ -96,6 +121,18 @@ index 1274fd3c7118..831f01c52fe0 100644
|
||||
websitePrefs.add(SiteSettingsCategory.Type.CAMERA);
|
||||
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
|
||||
websitePrefs.add(SiteSettingsCategory.Type.CLIPBOARD);
|
||||
@@ -247,11 +237,4 @@ public class SiteSettingsPreferences extends PreferenceFragment
|
||||
preference.getTitle().toString());
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- private void setTranslateStateSummary(Preference translatePref) {
|
||||
- boolean translateEnabled = PrefServiceBridge.getInstance().isTranslateEnabled();
|
||||
- translatePref.setSummary(translateEnabled
|
||||
- ? R.string.website_settings_category_ask
|
||||
- : R.string.website_settings_category_blocked);
|
||||
- }
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
|
||||
@@ -2,10 +2,49 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 12 Feb 2018 21:29:30 +0100
|
||||
Subject: ungoogled-chromium: Disable profile avatar downloading
|
||||
|
||||
Added some Bromite-specific further improvements
|
||||
---
|
||||
chrome/browser/profiles/profile_avatar_downloader.cc | 8 +-------
|
||||
1 file changed, 1 insertion(+), 7 deletions(-)
|
||||
chrome/browser/BUILD.gn | 2 --
|
||||
chrome/browser/profiles/profile_attributes_entry.cc | 14 --------------
|
||||
chrome/browser/profiles/profile_avatar_downloader.cc | 8 +-------
|
||||
3 files changed, 1 insertion(+), 23 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
--- a/chrome/browser/BUILD.gn
|
||||
+++ b/chrome/browser/BUILD.gn
|
||||
@@ -1253,8 +1253,6 @@ jumbo_split_static_library("browser") {
|
||||
"profiles/profile_attributes_entry.h",
|
||||
"profiles/profile_attributes_storage.cc",
|
||||
"profiles/profile_attributes_storage.h",
|
||||
- "profiles/profile_avatar_downloader.cc",
|
||||
- "profiles/profile_avatar_downloader.h",
|
||||
"profiles/profile_avatar_icon_util.cc",
|
||||
"profiles/profile_avatar_icon_util.h",
|
||||
"profiles/profile_destroyer.cc",
|
||||
diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc
|
||||
--- a/chrome/browser/profiles/profile_attributes_entry.cc
|
||||
+++ b/chrome/browser/profiles/profile_attributes_entry.cc
|
||||
@@ -83,20 +83,6 @@ base::string16 ProfileAttributesEntry::GetUserName() const {
|
||||
}
|
||||
|
||||
const gfx::Image& ProfileAttributesEntry::GetAvatarIcon() const {
|
||||
- if (IsUsingGAIAPicture()) {
|
||||
- const gfx::Image* image = GetGAIAPicture();
|
||||
- if (image)
|
||||
- return *image;
|
||||
- }
|
||||
-
|
||||
-#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
|
||||
- // Use the high resolution version of the avatar if it exists. Mobile and
|
||||
- // ChromeOS don't need the high resolution version so no need to fetch it.
|
||||
- const gfx::Image* image = GetHighResAvatar();
|
||||
- if (image)
|
||||
- return *image;
|
||||
-#endif
|
||||
-
|
||||
int resource_id =
|
||||
profiles::GetDefaultAvatarIconResourceIDAtIndex(GetAvatarIconIndex());
|
||||
return ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(
|
||||
diff --git a/chrome/browser/profiles/profile_avatar_downloader.cc b/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||
--- a/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||
+++ b/chrome/browser/profiles/profile_avatar_downloader.cc
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 27 Oct 2018 17:54:01 +0200
|
||||
Subject: Disable update scheduler
|
||||
|
||||
---
|
||||
.../chromium/chrome/browser/component_updater/UpdateScheduler.java | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/component_updater/UpdateScheduler.java
|
||||
@@ -35,10 +35,7 @@ public class UpdateScheduler {
|
||||
|
||||
@CalledByNative
|
||||
/* package */ static boolean isAvailable() {
|
||||
- return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
|
||||
- || GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext())
|
||||
- == ConnectionResult.SUCCESS;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/* package */ void onStartTaskBeforeNativeLoaded(TaskFinishedCallback callback) {
|
||||
@@ -108,4 +105,4 @@ public class UpdateScheduler {
|
||||
|
||||
private native void nativeOnStartTask(long nativeBackgroundTaskUpdateScheduler);
|
||||
private native void nativeOnStopTask(long nativeBackgroundTaskUpdateScheduler);
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+5
-4
@@ -5,6 +5,7 @@ Subject: Inject scripts for AMP, tracking, ads and video functionality
|
||||
Remove AMP, tracking and ads from search results
|
||||
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to
|
||||
allow playing videos in background (original Javascript code by timdream)
|
||||
Send a random key press to circumvent idle status detection
|
||||
---
|
||||
third_party/blink/renderer/core/dom/BUILD.gn | 2 ++
|
||||
third_party/blink/renderer/core/dom/document.cc | 28 +++++++++++++++++++++-
|
||||
@@ -62,7 +63,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
|
||||
+ 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";
|
||||
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload, URL: " << url_.GetString();
|
||||
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||
+ e->setText(ANTI_AMP_CURE_JS);
|
||||
+ bodyElement->AppendChild(e);
|
||||
@@ -70,7 +71,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
|
||||
+
|
||||
+ // 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";
|
||||
+ LOG(INFO) << "injecting video-bg-play Javascript payload, URL: " << url_.GetString();
|
||||
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
|
||||
+ e->setText(VIDEO_BG_PLAY_JS);
|
||||
+ bodyElement->AppendChild(e);
|
||||
@@ -87,7 +88,7 @@ new file mode 100644
|
||||
+#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"
|
||||
+#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) && \n (document.location.host.indexOf(\"accounts.google.\") == -1) &&\n (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
|
||||
@@ -98,7 +99,7 @@ new file mode 100644
|
||||
+#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"
|
||||
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* generate a synthetic keypress to circumvent the extremely useful pause-and-prompt beaviour */\nsetInterval(function() {\n document.dispatchEvent(new KeyboardEvent(\"keydown\", {key : \"a\", char : \"a\", shiftKey: false}));\n}, 3 * 60 * 1000);\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
|
||||
+
|
||||
+#endif // video_bg_play_h
|
||||
--
|
||||
+1
-1
@@ -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());
|
||||
@@ -2993,7 +2999,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
|
||||
@@ -2997,7 +3003,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
|
||||
// If suspending background video, pause any video that's not remoted or
|
||||
// not unlocked to play in the background.
|
||||
if (IsBackgroundSuspendEnabled(delegate_)) {
|
||||
@@ -0,0 +1,74 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 25 Oct 2018 23:13:34 +0200
|
||||
Subject: Add flag to control video playback resume feature
|
||||
|
||||
Disable it by default on Android as it is everywhere else
|
||||
---
|
||||
chrome/browser/about_flags.cc | 5 +++++
|
||||
chrome/browser/flag_descriptions.cc | 5 +++++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
media/base/media_switches.cc | 6 +-----
|
||||
4 files changed, 14 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
--- a/chrome/browser/about_flags.cc
|
||||
+++ b/chrome/browser/about_flags.cc
|
||||
@@ -3520,6 +3520,11 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(media::kPictureInPicture)},
|
||||
#endif // !defined(OS_ANDROID)
|
||||
|
||||
+ {"resume-background-video",
|
||||
+ flag_descriptions::kResumeBackgroundVideoName,
|
||||
+ flag_descriptions::kResumeBackgroundVideoDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)},
|
||||
+
|
||||
#if defined(OS_MACOSX)
|
||||
{"mac-touchbar", flag_descriptions::kMacTouchBarName,
|
||||
flag_descriptions::kMacTouchBarDescription, kOsMac,
|
||||
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
|
||||
--- a/chrome/browser/flag_descriptions.cc
|
||||
+++ b/chrome/browser/flag_descriptions.cc
|
||||
@@ -747,6 +747,11 @@ const char kEnablePictureInPictureName[] = "Enable Picture-in-Picture.";
|
||||
const char kEnablePictureInPictureDescription[] =
|
||||
"Enable the Picture-in-Picture feature for videos.";
|
||||
|
||||
+const char kResumeBackgroundVideoName[] = "Resume background video.";
|
||||
+const char kResumeBackgroundVideoDescription[] =
|
||||
+ "Resume background video playback when tab re-gains focus; additionally, "
|
||||
+ "it will pause video playback every single time you switch tabs.";
|
||||
+
|
||||
const char kEnablePixelCanvasRecordingName[] = "Enable pixel canvas recording";
|
||||
const char kEnablePixelCanvasRecordingDescription[] =
|
||||
"Pixel canvas recording allows the compositor to raster contents aligned "
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -465,6 +465,9 @@ extern const char kOOPHPStackModePseudo[];
|
||||
extern const char kEnablePictureInPictureName[];
|
||||
extern const char kEnablePictureInPictureDescription[];
|
||||
|
||||
+extern const char kResumeBackgroundVideoName[];
|
||||
+extern const char kResumeBackgroundVideoDescription[];
|
||||
+
|
||||
extern const char kEnablePixelCanvasRecordingName[];
|
||||
extern const char kEnablePixelCanvasRecordingDescription[];
|
||||
|
||||
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
|
||||
--- a/media/base/media_switches.cc
|
||||
+++ b/media/base/media_switches.cc
|
||||
@@ -220,11 +220,7 @@ const base::Feature kPreloadMetadataSuspend{"PreloadMetadataSuspend",
|
||||
// when in background.
|
||||
const base::Feature kResumeBackgroundVideo {
|
||||
"resume-background-video",
|
||||
-#if defined(OS_ANDROID)
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT
|
||||
-#else
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT
|
||||
-#endif
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT
|
||||
};
|
||||
|
||||
// Display the Cast overlay button on the media controls.
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+12
-8
@@ -18,12 +18,12 @@ New mechanism for adblocking based on Brave's adblocking hook
|
||||
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 +++
|
||||
.../CustomTabAppMenuPropertiesDelegate.java | 2 +
|
||||
.../java/strings/android_chrome_strings.grd | 11 +
|
||||
chrome/browser/net/chrome_network_delegate.cc | 58 ++++
|
||||
chrome/browser/net/chrome_network_delegate.cc | 62 ++++
|
||||
.../subresource_filter_content_settings_manager.cc | 1 +
|
||||
net/BUILD.gn | 7 +
|
||||
net/url_request/adblock_intercept.cc | 325 +++++++++++++++++++++
|
||||
net/url_request/adblock_intercept.h | 24 ++
|
||||
12 files changed, 505 insertions(+)
|
||||
12 files changed, 509 insertions(+)
|
||||
create mode 100644 net/url_request/adblock_intercept.cc
|
||||
create mode 100644 net/url_request/adblock_intercept.h
|
||||
|
||||
@@ -213,7 +213,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
|
||||
#endif
|
||||
|
||||
#if defined(OS_CHROMEOS)
|
||||
@@ -174,15 +176,71 @@ void ChromeNetworkDelegate::set_cookie_settings(
|
||||
@@ -174,15 +176,75 @@ void ChromeNetworkDelegate::set_cookie_settings(
|
||||
cookie_settings_ = cookie_settings;
|
||||
}
|
||||
|
||||
@@ -244,14 +244,18 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
|
||||
+ content::WebContents* web_contents = web_contents_getter.Run();
|
||||
+ if (web_contents) {
|
||||
+ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext());
|
||||
+ //FIXME: this should not be called from the IO thread
|
||||
+ const HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(profile);
|
||||
+
|
||||
+ // check global value first
|
||||
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetDefaultContentSetting(ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS, NULL);
|
||||
+ if (content_settings) {
|
||||
+ // 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) {
|
||||
+ // check per-site value
|
||||
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetContentSetting(request->url(), GURL(), ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS,
|
||||
+ std::string());
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+78
-34
@@ -13,32 +13,85 @@ to poison the well.
|
||||
|
||||
See also: http://www.gsd.inesc-id.pt/~mpc/pubs/fingerprinting-trustcom2016.pdf
|
||||
---
|
||||
third_party/blink/renderer/core/dom/element.cc | 17 +++++++++++++++++
|
||||
third_party/blink/renderer/core/dom/range.cc | 20 +++++++++++++++++++-
|
||||
.../blink/renderer/core/html/canvas/text_metrics.cc | 18 ++++++++++++++++++
|
||||
.../blink/renderer/core/html/canvas/text_metrics.h | 2 ++
|
||||
.../canvas/canvas2d/canvas_rendering_context_2d.cc | 10 +++++++++-
|
||||
5 files changed, 65 insertions(+), 2 deletions(-)
|
||||
third_party/blink/renderer/core/dom/document.cc | 13 +++++++++++++
|
||||
third_party/blink/renderer/core/dom/document.h | 5 +++++
|
||||
third_party/blink/renderer/core/dom/element.cc | 16 ++++++++++++++++
|
||||
third_party/blink/renderer/core/dom/range.cc | 18 +++++++++++++++++-
|
||||
.../blink/renderer/core/html/canvas/text_metrics.cc | 18 ++++++++++++++++++
|
||||
.../blink/renderer/core/html/canvas/text_metrics.h | 2 ++
|
||||
.../canvas/canvas2d/canvas_rendering_context_2d.cc | 10 +++++++++-
|
||||
7 files changed, 80 insertions(+), 2 deletions(-)
|
||||
|
||||
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
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
#include "base/auto_reset.h"
|
||||
#include "base/optional.h"
|
||||
+#include "base/rand_util.h"
|
||||
#include "services/metrics/public/cpp/mojo_ukm_recorder.h"
|
||||
#include "services/metrics/public/cpp/ukm_builders.h"
|
||||
#include "services/metrics/public/cpp/ukm_source_id.h"
|
||||
@@ -725,6 +726,10 @@ Document::Document(const DocumentInit& initializer,
|
||||
}
|
||||
DCHECK(fetcher_);
|
||||
|
||||
+ // add X/Y noise factors that will be used to mitigate fingerprinting
|
||||
+ shuffleFactorX_ = base::RandDouble();
|
||||
+ shuffleFactorY_ = base::RandDouble();
|
||||
+
|
||||
root_scroller_controller_ = RootScrollerController::Create(*this);
|
||||
|
||||
// We depend on the url getting immediately set in subframes, but we
|
||||
@@ -790,6 +795,14 @@ Range* Document::CreateRangeAdjustedToTreeScope(const TreeScope& tree_scope,
|
||||
Position::BeforeNode(*shadow_host));
|
||||
}
|
||||
|
||||
+double Document::GetShuffleFactorX() {
|
||||
+ return shuffleFactorX_;
|
||||
+}
|
||||
+
|
||||
+double Document::GetShuffleFactorY() {
|
||||
+ return shuffleFactorY_;
|
||||
+}
|
||||
+
|
||||
SelectorQueryCache& Document::GetSelectorQueryCache() {
|
||||
if (!selector_query_cache_)
|
||||
selector_query_cache_ = std::make_unique<SelectorQueryCache>();
|
||||
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
|
||||
--- a/third_party/blink/renderer/core/dom/document.h
|
||||
+++ b/third_party/blink/renderer/core/dom/document.h
|
||||
@@ -422,6 +422,9 @@ class CORE_EXPORT Document : public ContainerNode,
|
||||
|
||||
String origin() const;
|
||||
|
||||
+ double GetShuffleFactorX();
|
||||
+ double GetShuffleFactorY();
|
||||
+
|
||||
String visibilityState() const;
|
||||
mojom::PageVisibilityState GetPageVisibilityState() const;
|
||||
bool hidden() const;
|
||||
@@ -1751,6 +1754,8 @@ class CORE_EXPORT Document : public ContainerNode,
|
||||
|
||||
double start_time_;
|
||||
|
||||
+ double shuffleFactorX_, shuffleFactorY_;
|
||||
+
|
||||
TraceWrapperMember<ScriptRunner> script_runner_;
|
||||
|
||||
HeapVector<Member<ScriptElementBase>> current_script_stack_;
|
||||
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
|
||||
--- a/third_party/blink/renderer/core/dom/element.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/element.cc
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "third_party/blink/renderer/core/dom/element.h"
|
||||
|
||||
#include <memory>
|
||||
+#include "base/rand_util.h"
|
||||
|
||||
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
|
||||
#include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
|
||||
@@ -1383,6 +1384,15 @@ DOMRectList* Element::getClientRects() {
|
||||
@@ -1384,6 +1384,15 @@ DOMRectList* Element::getClientRects() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
|
||||
quads, *element_layout_object);
|
||||
+
|
||||
+ // scale all quads
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleX = 1 + (GetDocument().GetShuffleFactorX() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (GetDocument().GetShuffleFactorY() - 0.5) * 0.000003;
|
||||
+
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(shuffleX, shuffleY);
|
||||
@@ -47,14 +100,14 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
|
||||
return DOMRectList::Create(quads);
|
||||
}
|
||||
|
||||
@@ -1400,6 +1410,13 @@ DOMRect* Element::getBoundingClientRect() {
|
||||
@@ -1401,6 +1410,13 @@ DOMRect* Element::getBoundingClientRect() {
|
||||
DCHECK(element_layout_object);
|
||||
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
|
||||
*element_layout_object);
|
||||
+
|
||||
+ // scale rect by 3/1000000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleX = 1 + (GetDocument().GetShuffleFactorX() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (GetDocument().GetShuffleFactorY() - 0.5) * 0.000003;
|
||||
+
|
||||
+ result.Scale(shuffleX, shuffleY);
|
||||
+
|
||||
@@ -64,22 +117,13 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
|
||||
diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
|
||||
--- a/third_party/blink/renderer/core/dom/range.cc
|
||||
+++ b/third_party/blink/renderer/core/dom/range.cc
|
||||
@@ -25,6 +25,8 @@
|
||||
|
||||
#include "third_party/blink/renderer/core/dom/range.h"
|
||||
|
||||
+#include "base/rand_util.h"
|
||||
+
|
||||
#include "third_party/blink/renderer/bindings/core/v8/string_or_trusted_html.h"
|
||||
#include "third_party/blink/renderer/core/dom/character_data.h"
|
||||
#include "third_party/blink/renderer/core/dom/container_node.h"
|
||||
@@ -1607,11 +1609,27 @@ DOMRectList* Range::getClientRects() const {
|
||||
@@ -1607,11 +1607,27 @@ DOMRectList* Range::getClientRects() const {
|
||||
Vector<FloatQuad> quads;
|
||||
GetBorderAndTextQuads(quads);
|
||||
|
||||
+ // scale all quads by 3/1000000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleX = 1 + (owner_document_->GetShuffleFactorX() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (owner_document_->GetShuffleFactorY() - 0.5) * 0.000003;
|
||||
+
|
||||
+ for (FloatQuad& quad : quads) {
|
||||
+ quad.Scale(shuffleX, shuffleY);
|
||||
@@ -93,8 +137,8 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
|
||||
+ auto rect = BoundingRect();
|
||||
+
|
||||
+ // scale rect by 3/1000000th
|
||||
+ auto shuffleX = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleX = 1 + (owner_document_->GetShuffleFactorX() - 0.5) * 0.000003;
|
||||
+ auto shuffleY = 1 + (owner_document_->GetShuffleFactorY() - 0.5) * 0.000003;
|
||||
+
|
||||
+ rect.Scale(shuffleX, shuffleY);
|
||||
+
|
||||
+26
-4
@@ -4,19 +4,41 @@ Subject: Canvas: fingerprinting mitigations for image data and webGL
|
||||
|
||||
Disable webGL renderer info and modify the color data returned by ToBlob,
|
||||
ToDataURL and getImageData so that it will contain randomly manipulated
|
||||
pixels (maximum 10) that slightly change the color of the R,G,B components
|
||||
pixels (maximum 20) that slightly change the color of the R,G,B components
|
||||
without a visible effect.
|
||||
|
||||
Credits to Slaviro (https://github.com/Slaviro) for coming up with a better
|
||||
approach to change color components.
|
||||
---
|
||||
.../canvas/canvas2d/canvas_rendering_context_2d.cc | 4 +-
|
||||
.../modules/webgl/webgl_debug_renderer_info.cc | 4 +-
|
||||
third_party/blink/renderer/platform/BUILD.gn | 4 +-
|
||||
.../platform/graphics/image_data_buffer.cc | 5 +
|
||||
.../platform/graphics/static_bitmap_image.cc | 156 +++++++++++++++++++++
|
||||
.../platform/graphics/static_bitmap_image.h | 2 +
|
||||
5 files changed, 168 insertions(+), 3 deletions(-)
|
||||
6 files changed, 169 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc
|
||||
@@ -33,8 +33,6 @@
|
||||
|
||||
#include "third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.h"
|
||||
|
||||
-#include "base/rand_util.h"
|
||||
-
|
||||
#include "third_party/blink/public/platform/platform.h"
|
||||
#include "third_party/blink/public/platform/task_type.h"
|
||||
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
|
||||
@@ -787,7 +785,7 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
|
||||
GetState().GetTextAlign(), text);
|
||||
|
||||
// scale text metrics by 3/1000000th
|
||||
- auto shuffleFactor = 1 + (base::RandDouble() - 0.5) * 0.000003;
|
||||
+ auto shuffleFactor = 1 + (canvas()->GetDocument().GetShuffleFactorX() - 0.5) * 0.000003;
|
||||
textMetrics->Shuffle(shuffleFactor);
|
||||
|
||||
return textMetrics;
|
||||
diff --git a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
--- a/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
+++ b/third_party/blink/renderer/modules/webgl/webgl_debug_renderer_info.cc
|
||||
@@ -119,8 +141,8 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
+
|
||||
+ // cap maximum pixels to change
|
||||
+ auto pixels = (w + h) / 128;
|
||||
+ if (pixels > 10) {
|
||||
+ pixels = 10;
|
||||
+ if (pixels > 20) {
|
||||
+ pixels = 20;
|
||||
+ } else if (pixels < 2) {
|
||||
+ pixels = 2;
|
||||
+ }
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 22 Oct 2018 21:14:57 +0200
|
||||
Subject: Disable generic sensor API by default
|
||||
|
||||
---
|
||||
services/device/public/cpp/device_features.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/services/device/public/cpp/device_features.cc b/services/device/public/cpp/device_features.cc
|
||||
--- a/services/device/public/cpp/device_features.cc
|
||||
+++ b/services/device/public/cpp/device_features.cc
|
||||
@@ -9,7 +9,7 @@ namespace features {
|
||||
// Enables sensors based on Generic Sensor API:
|
||||
// https://w3c.github.io/sensors/
|
||||
const base::Feature kGenericSensor{"GenericSensor",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
// Enables an extra set of concrete sensors classes based on Generic Sensor API,
|
||||
// which expose previously unexposed platform features, e.g. ALS or Magnetometer
|
||||
const base::Feature kGenericSensorExtraClasses{
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 22 Oct 2018 21:29:53 +0200
|
||||
Subject: Add flags to disable device motion and orientation APIs
|
||||
|
||||
Both flags will be disabled by default and prevent usage of gyroscope and
|
||||
legacy acceleration events.
|
||||
---
|
||||
chrome/browser/about_flags.cc | 6 ++++++
|
||||
chrome/browser/flag_descriptions.cc | 8 ++++++++
|
||||
chrome/browser/flag_descriptions.h | 6 ++++++
|
||||
content/child/runtime_features.cc | 3 +++
|
||||
content/public/common/content_features.cc | 10 ++++++++++
|
||||
content/public/common/content_features.h | 2 ++
|
||||
third_party/blink/public/platform/web_runtime_features.h | 2 ++
|
||||
third_party/blink/renderer/modules/modules_initializer.cc | 9 ++++++---
|
||||
.../blink/renderer/platform/exported/web_runtime_features.cc | 8 ++++++++
|
||||
.../blink/renderer/platform/runtime_enabled_features.json5 | 8 ++++++++
|
||||
10 files changed, 59 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
--- a/chrome/browser/about_flags.cc
|
||||
+++ b/chrome/browser/about_flags.cc
|
||||
@@ -3041,6 +3041,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-generic-sensor", flag_descriptions::kEnableGenericSensorName,
|
||||
flag_descriptions::kEnableGenericSensorDescription, kOsAll,
|
||||
FEATURE_VALUE_TYPE(features::kGenericSensor)},
|
||||
+ {"enable-device-motion", flag_descriptions::kEnableDeviceMotionName,
|
||||
+ flag_descriptions::kEnableDeviceMotionDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(features::kDeviceMotion)},
|
||||
+ {"enable-device-orientation", flag_descriptions::kEnableDeviceOrientationName,
|
||||
+ flag_descriptions::kEnableDeviceOrientationDescription, kOsAll,
|
||||
+ FEATURE_VALUE_TYPE(features::kDeviceOrientation)},
|
||||
{"enable-generic-sensor-extra-classes",
|
||||
flag_descriptions::kEnableGenericSensorExtraClassesName,
|
||||
flag_descriptions::kEnableGenericSensorExtraClassesDescription, kOsAll,
|
||||
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
|
||||
--- a/chrome/browser/flag_descriptions.cc
|
||||
+++ b/chrome/browser/flag_descriptions.cc
|
||||
@@ -556,6 +556,14 @@ const char kEnableGenericSensorDescription[] =
|
||||
"Accelerometer, LinearAccelerationSensor, Gyroscope, "
|
||||
"AbsoluteOrientationSensor and RelativeOrientationSensor interfaces.";
|
||||
|
||||
+const char kEnableDeviceMotionName[] = "Enable device motion";
|
||||
+const char kEnableDeviceMotionDescription[] =
|
||||
+ "Enable device motion API which is used to detect changes in acceleration";
|
||||
+
|
||||
+const char kEnableDeviceOrientationName[] = "Enable device orientation";
|
||||
+const char kEnableDeviceOrientationDescription[] =
|
||||
+ "Enable device orientation API which is used to detect changes in orientation";
|
||||
+
|
||||
const char kEnableGenericSensorExtraClassesName[] =
|
||||
"Generic Sensor Extra Classes";
|
||||
const char kEnableGenericSensorExtraClassesDescription[] =
|
||||
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
|
||||
--- a/chrome/browser/flag_descriptions.h
|
||||
+++ b/chrome/browser/flag_descriptions.h
|
||||
@@ -366,6 +366,12 @@ extern const char kEnableEnumeratingAudioDevicesDescription[];
|
||||
extern const char kEnableGenericSensorName[];
|
||||
extern const char kEnableGenericSensorDescription[];
|
||||
|
||||
+extern const char kEnableDeviceMotionName[];
|
||||
+extern const char kEnableDeviceMotionDescription[];
|
||||
+
|
||||
+extern const char kEnableDeviceOrientationName[];
|
||||
+extern const char kEnableDeviceOrientationDescription[];
|
||||
+
|
||||
extern const char kEnableGenericSensorExtraClassesName[];
|
||||
extern const char kEnableGenericSensorExtraClassesDescription[];
|
||||
|
||||
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
|
||||
--- a/content/child/runtime_features.cc
|
||||
+++ b/content/child/runtime_features.cc
|
||||
@@ -144,6 +144,9 @@ void SetRuntimeFeaturesDefaultsAndUpdateFromArgs(
|
||||
if (command_line.HasSwitch(switches::kDisableSharedWorkers))
|
||||
WebRuntimeFeatures::EnableSharedWorker(false);
|
||||
|
||||
+ WebRuntimeFeatures::EnableDeviceMotion(base::FeatureList::IsEnabled(features::kDeviceMotion));
|
||||
+ WebRuntimeFeatures::EnableDeviceOrientation(base::FeatureList::IsEnabled(features::kDeviceOrientation));
|
||||
+
|
||||
if (command_line.HasSwitch(switches::kDisableSpeechAPI))
|
||||
WebRuntimeFeatures::EnableScriptedSpeech(false);
|
||||
|
||||
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
|
||||
--- a/content/public/common/content_features.cc
|
||||
+++ b/content/public/common/content_features.cc
|
||||
@@ -590,6 +590,16 @@ const base::Feature kWebRtcUseGpuMemoryBufferVideoFrames{
|
||||
// https://wicg.github.io/webusb
|
||||
const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
+// Enables the device motion API used to track device acceleration;
|
||||
+// no user authorization or notifications happens when in use.
|
||||
+const base::Feature kDeviceMotion{"DeviceMotion",
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+
|
||||
+// Enables the device orientation API used to track device orientation;
|
||||
+// no user authorization or notifications happens when in use.
|
||||
+const base::Feature kDeviceOrientation{"DeviceOrientation",
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+
|
||||
// Controls whether WebVR VSync-aligned render loop timing is enabled.
|
||||
const base::Feature kWebVrVsyncAlign{"WebVrVsyncAlign",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
|
||||
--- a/content/public/common/content_features.h
|
||||
+++ b/content/public/common/content_features.h
|
||||
@@ -155,6 +155,8 @@ CONTENT_EXPORT extern const char kWebXrRenderPathParamValueGpuFence[];
|
||||
CONTENT_EXPORT extern const char kWebXrRenderPathParamValueSharedBuffer[];
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
+CONTENT_EXPORT extern const base::Feature kDeviceMotion, kDeviceOrientation;
|
||||
+
|
||||
#if !defined(OS_ANDROID)
|
||||
CONTENT_EXPORT extern const base::Feature kWebUIPolymer2;
|
||||
#endif // !defined(OS_ANDROID)
|
||||
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h
|
||||
--- a/third_party/blink/public/platform/web_runtime_features.h
|
||||
+++ b/third_party/blink/public/platform/web_runtime_features.h
|
||||
@@ -84,6 +84,8 @@ class WebRuntimeFeatures {
|
||||
BLINK_PLATFORM_EXPORT static void EnableCSSFragmentIdentifiers(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableScrollTopLeftInterop(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDatabase(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableDeviceMotion(bool);
|
||||
+ BLINK_PLATFORM_EXPORT static void EnableDeviceOrientation(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDecodeToYUV(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableDisplayCutoutAPI(bool);
|
||||
BLINK_PLATFORM_EXPORT static void EnableFastMobileScrolling(bool);
|
||||
diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
--- a/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
+++ b/third_party/blink/renderer/modules/modules_initializer.cc
|
||||
@@ -233,9 +233,12 @@ void ModulesInitializer::InitInspectorAgentSession(
|
||||
void ModulesInitializer::OnClearWindowObjectInMainWorld(
|
||||
Document& document,
|
||||
const Settings& settings) const {
|
||||
- DeviceMotionController::From(document);
|
||||
- DeviceOrientationController::From(document);
|
||||
- DeviceOrientationAbsoluteController::From(document);
|
||||
+ if (RuntimeEnabledFeatures::DeviceMotionEnabled())
|
||||
+ DeviceMotionController::From(document);
|
||||
+ if (RuntimeEnabledFeatures::DeviceOrientationEnabled()) {
|
||||
+ DeviceOrientationController::From(document);
|
||||
+ DeviceOrientationAbsoluteController::From(document);
|
||||
+ }
|
||||
NavigatorGamepad::From(document);
|
||||
NavigatorServiceWorker::From(document);
|
||||
DOMWindowStorageController::From(document);
|
||||
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
--- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
+++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
|
||||
@@ -140,6 +140,14 @@ void WebRuntimeFeatures::EnableDatabase(bool enable) {
|
||||
RuntimeEnabledFeatures::SetDatabaseEnabled(enable);
|
||||
}
|
||||
|
||||
+void WebRuntimeFeatures::EnableDeviceMotion(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetDeviceMotionEnabled(enable);
|
||||
+}
|
||||
+
|
||||
+void WebRuntimeFeatures::EnableDeviceOrientation(bool enable) {
|
||||
+ RuntimeEnabledFeatures::SetDeviceOrientationEnabled(enable);
|
||||
+}
|
||||
+
|
||||
void WebRuntimeFeatures::EnableDecodeToYUV(bool enable) {
|
||||
RuntimeEnabledFeatures::SetDecodeToYUVEnabled(enable);
|
||||
}
|
||||
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
|
||||
@@ -348,6 +348,14 @@
|
||||
status: "stable",
|
||||
},
|
||||
{
|
||||
+ name: "DeviceMotion",
|
||||
+ status: "stable",
|
||||
+ },
|
||||
+ {
|
||||
+ name: "DeviceOrientation",
|
||||
+ status: "stable",
|
||||
+ },
|
||||
+ {
|
||||
name: "DecodeToYUV",
|
||||
status: "experimental",
|
||||
},
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+12
-10
@@ -8,22 +8,22 @@ Reduce HTTP headers in DoH requests to bare minimum.
|
||||
|
||||
See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-12.txt
|
||||
---
|
||||
chrome/browser/about_flags.cc | 12 ++++++++++
|
||||
chrome/browser/about_flags.cc | 13 ++++++++++
|
||||
chrome/browser/flag_descriptions.cc | 3 +++
|
||||
chrome/browser/flag_descriptions.h | 3 +++
|
||||
.../browser/net/system_network_context_manager.cc | 16 ++++++-------
|
||||
.../common/network_features.cc | 5 ++--
|
||||
.../common/network_features.cc | 6 +++--
|
||||
.../common/network_features.h | 4 +++-
|
||||
.../common/network_switch_list.h | 4 ++++
|
||||
net/base/load_flags_list.h | 6 +++++
|
||||
net/dns/dns_transaction.cc | 28 +++-------------------
|
||||
net/url_request/url_request_http_job.cc | 26 ++++++++++++--------
|
||||
10 files changed, 60 insertions(+), 47 deletions(-)
|
||||
10 files changed, 62 insertions(+), 47 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
--- a/chrome/browser/about_flags.cc
|
||||
+++ b/chrome/browser/about_flags.cc
|
||||
@@ -416,6 +416,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
|
||||
@@ -417,6 +417,13 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
|
||||
switches::kChromeHomeSwipeLogicType, "velocity"},
|
||||
};
|
||||
|
||||
@@ -31,12 +31,13 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
+ {features::kDnsOverHttpsChoiceDefault, "", ""},
|
||||
+ {features::kDnsOverHttpsChoiceGoogle, switches::kDnsOverHttpsServer, "https://dns.google.com/experimental"},
|
||||
+ {features::kDnsOverHttpsChoiceCloudflare, switches::kDnsOverHttpsServer, "https://1.1.1.1/dns-query"},
|
||||
+ {features::kDnsOverHttpsChoiceQuad9, switches::kDnsOverHttpsServer, "https://9.9.9.9/dns-query"}
|
||||
+};
|
||||
+
|
||||
#endif // OS_ANDROID
|
||||
|
||||
const FeatureEntry::Choice kNumRasterThreadsChoices[] = {
|
||||
@@ -3714,6 +3720,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
@@ -3730,6 +3737,12 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(features::kAsyncDns)},
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
@@ -52,7 +53,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
|
||||
@@ -2239,6 +2239,9 @@ const char kAndroidPaymentAppsDescription[] =
|
||||
@@ -2252,6 +2252,9 @@ const char kAndroidPaymentAppsDescription[] =
|
||||
const char kAsyncDnsName[] = "Async DNS resolver";
|
||||
const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver.";
|
||||
|
||||
@@ -65,7 +66,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
|
||||
@@ -1347,6 +1347,9 @@ extern const char kAppNotificationStatusMessagingDescription[];
|
||||
@@ -1356,6 +1356,9 @@ extern const char kAppNotificationStatusMessagingDescription[];
|
||||
extern const char kAsyncDnsName[];
|
||||
extern const char kAsyncDnsDescription[];
|
||||
|
||||
@@ -111,7 +112,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows
|
||||
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
|
||||
--- a/components/network_session_configurator/common/network_features.cc
|
||||
+++ b/components/network_session_configurator/common/network_features.cc
|
||||
@@ -11,7 +11,8 @@ namespace features {
|
||||
@@ -11,7 +11,9 @@ namespace features {
|
||||
// TODO(nharper): Disable kChannelID on all platforms in M69.
|
||||
const base::Feature kChannelID{"channel-id", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
@@ -119,7 +120,8 @@ diff --git a/components/network_session_configurator/common/network_features.cc
|
||||
- base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+const char kDnsOverHttpsChoiceDefault[] = "Disabled",
|
||||
+ kDnsOverHttpsChoiceGoogle[] = "Google",
|
||||
+ kDnsOverHttpsChoiceCloudflare[] = "Cloudflare";
|
||||
+ kDnsOverHttpsChoiceCloudflare[] = "Cloudflare",
|
||||
+ kDnsOverHttpsChoiceQuad9[] = "Quad9";
|
||||
|
||||
} // namespace features
|
||||
diff --git a/components/network_session_configurator/common/network_features.h b/components/network_session_configurator/common/network_features.h
|
||||
@@ -134,7 +136,7 @@ diff --git a/components/network_session_configurator/common/network_features.h b
|
||||
// (https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-12.txt).
|
||||
NETWORK_SESSION_CONFIGURATOR_EXPORT extern const base::Feature kDnsOverHttps;
|
||||
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kDnsOverHttpsChoiceDefault[],
|
||||
+ kDnsOverHttpsChoiceGoogle[], kDnsOverHttpsChoiceCloudflare[];
|
||||
+ kDnsOverHttpsChoiceGoogle[], kDnsOverHttpsChoiceCloudflare[], kDnsOverHttpsChoiceQuad9[];
|
||||
|
||||
} // namespace features
|
||||
|
||||
+4
-4
@@ -18,7 +18,7 @@ with limited CPU/memory resources and it is disabled by default.
|
||||
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
|
||||
@@ -908,6 +908,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
|
||||
@@ -910,6 +910,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
|
||||
net::kEffectiveConnectionType4G},
|
||||
};
|
||||
|
||||
@@ -30,7 +30,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
|
||||
// Ensure that all effective connection types returned by Network Quality
|
||||
// Estimator (NQE) are also exposed via flags.
|
||||
static_assert(net::EFFECTIVE_CONNECTION_TYPE_LAST + 2 ==
|
||||
@@ -2606,6 +2611,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
@@ -2608,6 +2613,9 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
flag_descriptions::kMaterialDesignIncognitoNTPName,
|
||||
flag_descriptions::kMaterialDesignIncognitoNTPDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(features::kMaterialDesignIncognitoNTP)},
|
||||
@@ -43,7 +43,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
|
||||
@@ -1132,6 +1132,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
|
||||
@@ -1145,6 +1145,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
|
||||
"If enabled, the Incognito New Tab page uses the new material design with "
|
||||
"a better readable text.";
|
||||
|
||||
@@ -57,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
|
||||
@@ -702,6 +702,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
|
||||
@@ -711,6 +711,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
|
||||
extern const char kMaterialDesignIncognitoNTPName[];
|
||||
extern const char kMaterialDesignIncognitoNTPDescription[];
|
||||
|
||||
+38
-17
@@ -1,15 +1,15 @@
|
||||
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
|
||||
Subject: Add site settings option for session-only cookies
|
||||
|
||||
---
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
chrome/android/java/res/xml/website_preferences.xml | 7 +++++++
|
||||
.../browser/preferences/PrefServiceBridge.java | 10 ++++++++++
|
||||
.../website/SingleCategoryPreferences.java | 20 +++++++++++++++++++-
|
||||
.../android/java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
.../android/preferences/pref_service_bridge.cc | 19 +++++++++++++++++++
|
||||
6 files changed, 64 insertions(+), 1 deletion(-)
|
||||
chrome/android/java/res/values/values.xml | 3 +++
|
||||
.../android/java/res/xml/website_preferences.xml | 7 ++++++
|
||||
.../browser/preferences/PrefServiceBridge.java | 10 +++++++++
|
||||
.../website/SingleCategoryPreferences.java | 21 +++++++++++++++++-
|
||||
.../java/strings/android_chrome_strings.grd | 6 ++++++
|
||||
.../android/preferences/pref_service_bridge.cc | 25 ++++++++++++++++++++++
|
||||
6 files changed, 71 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
|
||||
--- a/chrome/android/java/res/values/values.xml
|
||||
@@ -110,14 +110,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
} else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
|
||||
prefServiceBridge.setNotificationsVibrateEnabled((boolean) newValue);
|
||||
}
|
||||
@@ -803,12 +807,17 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -754,6 +758,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
TriStateSiteSettingsPreference triStateToggle =
|
||||
(TriStateSiteSettingsPreference) screen.findPreference(TRI_STATE_TOGGLE_KEY);
|
||||
Preference thirdPartyCookies = screen.findPreference(THIRD_PARTY_COOKIES_TOGGLE_KEY);
|
||||
+ Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
|
||||
+ COOKIES_SESSION_ONLY_TOGGLE_KEY);
|
||||
Preference notificationsVibrate = screen.findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
|
||||
Preference explainProtectedMediaKey = screen.findPreference(EXPLAIN_PROTECTED_MEDIA_KEY);
|
||||
PreferenceGroup allowedGroup = (PreferenceGroup) screen.findPreference(ALLOWED_GROUP);
|
||||
@@ -768,6 +774,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
screen.removePreference(binaryToggle);
|
||||
screen.removePreference(triStateToggle);
|
||||
screen.removePreference(thirdPartyCookies);
|
||||
+ screen.removePreference(cookiesSessionOnly);
|
||||
screen.removePreference(notificationsVibrate);
|
||||
screen.removePreference(explainProtectedMediaKey);
|
||||
screen.removePreference(allowedGroup);
|
||||
@@ -803,12 +810,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
configureBinaryToggle(binaryToggle, contentType);
|
||||
}
|
||||
|
||||
- // Configure/hide the third-party cookie toggle, as needed.
|
||||
+ // Configure/hide the third-party cookie toggle and session-only cookie toggle, as needed.
|
||||
+ Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
|
||||
+ COOKIES_SESSION_ONLY_TOGGLE_KEY);
|
||||
if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
|
||||
thirdPartyCookies.setOnPreferenceChangeListener(this);
|
||||
updateThirdPartyCookiesCheckBox();
|
||||
@@ -129,7 +144,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
}
|
||||
|
||||
// Configure/hide the notifications vibrate toggle, as needed.
|
||||
@@ -894,6 +903,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
@@ -894,6 +904,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
|
||||
preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
|
||||
}
|
||||
|
||||
@@ -137,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/web
|
||||
+ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
|
||||
+ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
|
||||
+ cookiesSessionOnlyPref.setChecked(
|
||||
+ !PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
|
||||
+ PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
|
||||
+ cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isCategoryEnabled(
|
||||
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES));
|
||||
+ }
|
||||
@@ -164,7 +179,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
|
||||
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
|
||||
@@ -304,6 +304,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
|
||||
@@ -304,6 +304,17 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
|
||||
return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
|
||||
}
|
||||
|
||||
@@ -173,13 +188,16 @@ diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/
|
||||
+ 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);
|
||||
+ auto value = host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr);
|
||||
+ auto enabled = CONTENT_SETTING_SESSION_ONLY == value;
|
||||
+ LOG(INFO) << "GetCookiesSessionOnly := " << enabled << " (raw_value = " << value << ")";
|
||||
+ return enabled;
|
||||
+}
|
||||
+
|
||||
static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj) {
|
||||
@@ -756,6 +764,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
|
||||
@@ -756,6 +767,20 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
|
||||
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
|
||||
}
|
||||
|
||||
@@ -189,9 +207,12 @@ diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/
|
||||
+ jboolean enabled) {
|
||||
+ HostContentSettingsMap* host_content_settings_map =
|
||||
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
|
||||
+ LOG(INFO) << "SetCookiesSessionOnly -> " << (enabled ? "true" : "false") <<
|
||||
+ "; false -> setting_allow: " << CONTENT_SETTING_ALLOW <<
|
||||
+ "; true -> session_only: " << CONTENT_SETTING_SESSION_ONLY;
|
||||
+ host_content_settings_map->SetDefaultContentSetting(
|
||||
+ CONTENT_SETTINGS_TYPE_COOKIES,
|
||||
+ enabled ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_SESSION_ONLY);
|
||||
+ enabled ? CONTENT_SETTING_SESSION_ONLY : CONTENT_SETTING_ALLOW);
|
||||
+}
|
||||
+
|
||||
static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
|
||||
+123
-64
@@ -2,24 +2,25 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Wed, 1 Aug 2018 09:19:40 +0200
|
||||
Subject: Add bookmark import/export actions in bookmarks activity and page
|
||||
|
||||
Thanks to Arnaud for the snippet on how to add toast notifications
|
||||
---
|
||||
.../java/res/menu/bookmark_action_bar_menu.xml | 14 ++
|
||||
.../browser/bookmarks/BookmarkActionBar.java | 12 ++
|
||||
.../chrome/browser/bookmarks/BookmarkActivity.java | 19 ++
|
||||
.../chrome/browser/bookmarks/BookmarkBridge.java | 21 ++
|
||||
.../chrome/browser/bookmarks/BookmarkBridge.java | 56 ++++++
|
||||
.../chrome/browser/bookmarks/BookmarkDelegate.java | 10 +
|
||||
.../chrome/browser/bookmarks/BookmarkManager.java | 20 ++
|
||||
.../chrome/browser/bookmarks/BookmarkPage.java | 1 +
|
||||
.../java/strings/android_chrome_strings.grd | 6 +
|
||||
chrome/browser/BUILD.gn | 8 +-
|
||||
.../browser/android/bookmarks/bookmark_bridge.cc | 219 +++++++++++++++++++++
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.h | 19 +-
|
||||
.../browser/android/bookmarks/bookmark_bridge.cc | 215 +++++++++++++++++++++
|
||||
chrome/browser/android/bookmarks/bookmark_bridge.h | 20 +-
|
||||
chrome/browser/importer/profile_writer.cc | 2 +
|
||||
chrome/common/BUILD.gn | 3 +
|
||||
chrome/utility/BUILD.gn | 7 +-
|
||||
chrome/utility/importer/bookmark_html_reader.cc | 27 ++-
|
||||
chrome/utility/importer/bookmark_html_reader.h | 9 +
|
||||
16 files changed, 387 insertions(+), 10 deletions(-)
|
||||
16 files changed, 419 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml b/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
--- a/chrome/android/java/res/menu/bookmark_action_bar_menu.xml
|
||||
@@ -141,15 +142,36 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
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;
|
||||
@@ -4,7 +4,11 @@
|
||||
|
||||
package org.chromium.chrome.browser.bookmarks;
|
||||
|
||||
+import android.content.Intent;
|
||||
+import android.content.Context;
|
||||
+import android.net.Uri;
|
||||
import android.os.SystemClock;
|
||||
+import android.provider.Browser;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Pair;
|
||||
|
||||
@@ -13,11 +17,16 @@ import org.chromium.base.ObserverList;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.base.metrics.RecordHistogram;
|
||||
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
|
||||
+import org.chromium.chrome.browser.IntentHandler;
|
||||
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
import org.chromium.components.bookmarks.BookmarkType;
|
||||
import org.chromium.components.url_formatter.UrlFormatter;
|
||||
+import org.chromium.ui.base.PageTransition;
|
||||
+import org.chromium.ui.base.WindowAndroid;
|
||||
+import org.chromium.ui.widget.Toast;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -508,6 +509,24 @@ public class BookmarkBridge {
|
||||
@@ -508,6 +517,24 @@ public class BookmarkBridge {
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -174,7 +196,41 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
* 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 {
|
||||
@@ -840,6 +867,33 @@ public class BookmarkBridge {
|
||||
depthList.add(depth);
|
||||
}
|
||||
|
||||
+
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksImported() {
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ //TODO: call this after actual import
|
||||
+ //Toast.makeText(ContextUtils.getApplicationContext(), "Bookmarks imported", Toast.LENGTH_LONG).show();
|
||||
+ }
|
||||
+
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksExported(String bookmarksPath) {
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("file://" + bookmarksPath));
|
||||
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID,
|
||||
+ context.getPackageName());
|
||||
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK);
|
||||
+
|
||||
+ // If the bookmark manager is shown in a tab on a phone (rather than in a separate
|
||||
+ // activity) the component name may be null. Send the intent through
|
||||
+ // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012.
|
||||
+ intent.setClass(context, ChromeLauncherActivity.class);
|
||||
+
|
||||
+ IntentHandler.startActivityForTrustedIntent(intent);
|
||||
+ }
|
||||
+
|
||||
private static List<Pair<Integer, Integer>> createPairsList(int[] left, int[] right) {
|
||||
List<Pair<Integer, Integer>> pairList = new ArrayList<Pair<Integer, Integer>>();
|
||||
for (int i = 0; i < left.length; i++) {
|
||||
@@ -906,6 +960,8 @@ public class BookmarkBridge {
|
||||
boolean getFolders, boolean getBookmarks, List<BookmarkId> bookmarksList);
|
||||
private native BookmarkId nativeGetChildAt(long nativeBookmarkBridge, long id, int type,
|
||||
int index);
|
||||
@@ -437,7 +493,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
}
|
||||
|
||||
void BookmarkBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
|
||||
@@ -470,6 +539,156 @@ jint BookmarkBridge::GetTotalBookmarkCount(
|
||||
@@ -470,6 +539,152 @@ jint BookmarkBridge::GetTotalBookmarkCount(
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -445,6 +501,7 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ const JavaParamRef<jobject>& obj,
|
||||
+ const JavaParamRef<jobject>& java_window) {
|
||||
+ DCHECK(IsLoaded());
|
||||
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
+
|
||||
+ ui::WindowAndroid* window =
|
||||
+ ui::WindowAndroid::FromJavaWindowAndroid(java_window);
|
||||
@@ -462,39 +519,39 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ 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,
|
||||
+ import_path_,
|
||||
+ &file_type_info,
|
||||
+ 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;
|
||||
+ //NOTE: this should be called after the actual import
|
||||
+ Java_BookmarkBridge_bookmarksImported(env, obj);
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::ExportBookmarks(JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj) {
|
||||
+ DCHECK(IsLoaded());
|
||||
+ base::FilePath path;
|
||||
+ if (!base::android::GetDownloadsDirectory(&path)) {
|
||||
+ LOG(ERROR) << "Could not retrieve downloads directory for bookmarks export";
|
||||
+ return;
|
||||
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||
+
|
||||
+ if (import_path_.empty()) {
|
||||
+ if (!base::android::GetDownloadsDirectory(&import_path_)) {
|
||||
+ LOG(ERROR) << "Could not retrieve downloads directory for bookmarks export";
|
||||
+ return;
|
||||
+ }
|
||||
+ import_path_ = import_path_.Append(FILE_PATH_LITERAL("bookmarks.html"));
|
||||
+ }
|
||||
+
|
||||
+ path = path.Append(FILE_PATH_LITERAL("bookmarks.html"));
|
||||
+ bookmark_html_writer::WriteBookmarks(profile_, import_path_, NULL);
|
||||
+
|
||||
+// base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()},
|
||||
+// base::BindOnce(&ExporterCallback, profile_, path));
|
||||
+ ExporterCallback(profile_, path);
|
||||
+ //NOTE: nothing will be written if write permission has not been granted before
|
||||
+ LOG(INFO) << "Bookmarks exported successfully in " << import_path_;
|
||||
+
|
||||
+ Java_BookmarkBridge_bookmarksExported(env, obj, ConvertUTF8ToJavaString(env, import_path_.MaybeAsASCII()));
|
||||
+}
|
||||
+
|
||||
+// Attempts to create a TemplateURL from the provided data. |title| is optional.
|
||||
@@ -513,40 +570,6 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ 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;
|
||||
@@ -582,10 +605,39 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browse
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ std::string content(buffer.begin(), buffer.end());
|
||||
+// base::PostTaskWithTraits(FROM_HERE, {base::MayBlock()},
|
||||
+// base::BindOnce(&ImporterCallback, profile_, path, content));
|
||||
+ ImporterCallback(profile_, path, content);
|
||||
+ std::string contents(buffer.begin(), buffer.end());
|
||||
+
|
||||
+ // the following import logic comes from BookmarksFileImporter class
|
||||
+ std::vector<ImportedBookmarkEntry> bookmarks;
|
||||
+ std::vector<importer::SearchEngineInfo> search_engines;
|
||||
+
|
||||
+ bookmark_html_reader::ImportBookmarksFile(
|
||||
+ base::Callback<bool(void)>(),
|
||||
+ base::Bind(internal::CanImportURL),
|
||||
+ contents,
|
||||
+ &bookmarks,
|
||||
+ &search_engines,
|
||||
+ nullptr);
|
||||
+
|
||||
+ // writing to profile will begin extensive changes and use the same bookmarks model for persisting changes
|
||||
+ auto *writer = new ProfileWriter(profile_);
|
||||
+
|
||||
+ if (!bookmarks.empty()) {
|
||||
+ writer->AddBookmarks(bookmarks, base::ASCIIToUTF16("Imported"));
|
||||
+ }
|
||||
+ if (!search_engines.empty()) {
|
||||
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
|
||||
+ for (const auto& search_engine : search_engines) {
|
||||
+ std::unique_ptr<TemplateURL> owned_template_url = CreateTemplateURL(
|
||||
+ search_engine.url, search_engine.keyword, search_engine.display_name);
|
||||
+ if (owned_template_url)
|
||||
+ owned_template_urls.push_back(std::move(owned_template_url));
|
||||
+ }
|
||||
+ writer->AddKeywords(std::move(owned_template_urls), false);
|
||||
+ }
|
||||
+
|
||||
+ LOG(INFO) << "Imported " << bookmarks.size() << " bookmarks and " <<
|
||||
+ search_engines.size() << " search engines from " << import_path_;
|
||||
+}
|
||||
+
|
||||
+void BookmarkBridge::FileSelectionCanceled(void* params) {
|
||||
@@ -643,7 +695,14 @@ diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser
|
||||
void SetBookmarkTitle(JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj,
|
||||
jlong id,
|
||||
@@ -267,6 +283,7 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
@@ -261,12 +277,14 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
void ShimBeingDeleted(PartnerBookmarksShim* shim) override;
|
||||
|
||||
Profile* profile_;
|
||||
+ base::FilePath import_path_;
|
||||
JavaObjectWeakGlobalRef weak_java_ref_;
|
||||
bookmarks::BookmarkModel* bookmark_model_; // weak
|
||||
bookmarks::ManagedBookmarkService* managed_bookmark_service_; // weak
|
||||
std::unique_ptr<bookmarks::ScopedGroupBookmarkActions>
|
||||
grouped_bookmark_actions_;
|
||||
PrefChangeRegistrar pref_change_registrar_;
|
||||
+14
-13
@@ -4,8 +4,8 @@ Subject: Disable fetching of all field trials
|
||||
|
||||
---
|
||||
.../src/org/chromium/chrome/browser/ChromeFeatureList.java | 12 +++---------
|
||||
components/variations/service/variations_service.cc | 4 ++++
|
||||
2 files changed, 7 insertions(+), 9 deletions(-)
|
||||
components/variations/service/variations_service.cc | 12 +-----------
|
||||
2 files changed, 4 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
|
||||
@@ -46,21 +46,22 @@ 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
|
||||
@@ -225,6 +225,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
|
||||
@@ -225,17 +225,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
|
||||
// Variations seed fetching is only enabled in official Chrome builds, if a URL
|
||||
// is specified on the command line, and for testing.
|
||||
bool IsFetchingEnabled() {
|
||||
+#if 0
|
||||
#if !defined(GOOGLE_CHROME_BUILD)
|
||||
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
switches::kVariationsServerURL) &&
|
||||
@@ -236,6 +237,9 @@ bool IsFetchingEnabled() {
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
+#else
|
||||
-#if !defined(GOOGLE_CHROME_BUILD)
|
||||
- if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
|
||||
- switches::kVariationsServerURL) &&
|
||||
- !g_should_fetch_for_testing) {
|
||||
- DVLOG(1)
|
||||
- << "Not performing repeated fetching in unofficial build without --"
|
||||
- << switches::kVariationsServerURL << " specified.";
|
||||
- return false;
|
||||
- }
|
||||
-#endif
|
||||
- return true;
|
||||
+ return false;
|
||||
+#endif
|
||||
}
|
||||
|
||||
std::unique_ptr<SeedResponse> MaybeImportFirstRunSeed(
|
||||
+10
-2
@@ -3,9 +3,9 @@ Date: Tue, 15 Aug 2017 15:33:16 -0400
|
||||
Subject: Remove google account access permission on reboot
|
||||
|
||||
---
|
||||
chrome/android/BUILD.gn | 3 +--
|
||||
chrome/android/BUILD.gn | 4 +---
|
||||
chrome/android/java/AndroidManifest.xml | 4 ++--
|
||||
2 files changed, 3 insertions(+), 4 deletions(-)
|
||||
2 files changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
--- a/chrome/android/BUILD.gn
|
||||
@@ -20,6 +20,14 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
]
|
||||
res_dir = "java/res_template"
|
||||
variables = chrome_public_jinja_variables
|
||||
@@ -936,7 +935,6 @@ jinja_template_resources("chrome_sync_shell_apk_template_resources") {
|
||||
"java/res_template/xml/file_paths.xml",
|
||||
"java/res_template/xml/launchershortcuts.xml",
|
||||
"java/res_template/xml/searchable.xml",
|
||||
- "java/res_template/xml/syncadapter.xml",
|
||||
]
|
||||
res_dir = "java/res_template"
|
||||
variables = chrome_sync_shell_jinja_variables
|
||||
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
|
||||
--- a/chrome/android/java/AndroidManifest.xml
|
||||
+++ b/chrome/android/java/AndroidManifest.xml
|
||||
+24
-1
@@ -6,8 +6,9 @@ Subject: Allow building without safebrowsing for Android
|
||||
.../android/java/res/xml/privacy_preferences.xml | 12 -----
|
||||
.../preferences/privacy/PrivacyPreferences.java | 58 ----------------------
|
||||
.../chrome_browsing_data_remover_delegate.cc | 10 ----
|
||||
chrome/browser/chrome_content_browser_client.cc | 14 +-----
|
||||
.../chrome_resource_dispatcher_host_delegate.cc | 2 +
|
||||
4 files changed, 2 insertions(+), 80 deletions(-)
|
||||
5 files changed, 3 insertions(+), 93 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
||||
@@ -160,6 +161,28 @@ diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.
|
||||
} // namespace
|
||||
|
||||
ChromeBrowsingDataRemoverDelegate::ChromeBrowsingDataRemoverDelegate(
|
||||
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
||||
--- a/chrome/browser/chrome_content_browser_client.cc
|
||||
+++ b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -4790,17 +4790,5 @@ ChromeContentBrowserClient::GetSafeBrowsingUrlCheckerDelegate(
|
||||
content::ResourceContext* resource_context) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
||||
|
||||
- ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context);
|
||||
- if (!io_data->safe_browsing_enabled()->GetValue())
|
||||
- return nullptr;
|
||||
-
|
||||
- // |safe_browsing_service_| may be unavailable in tests.
|
||||
- if (safe_browsing_service_ && !safe_browsing_url_checker_delegate_) {
|
||||
- safe_browsing_url_checker_delegate_ =
|
||||
- base::MakeRefCounted<safe_browsing::UrlCheckerDelegateImpl>(
|
||||
- safe_browsing_service_->database_manager(),
|
||||
- safe_browsing_service_->ui_manager());
|
||||
- }
|
||||
-
|
||||
- return safe_browsing_url_checker_delegate_.get();
|
||||
+ return nullptr;
|
||||
}
|
||||
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
|
||||
@@ -1,156 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -1,323 +0,0 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:13:38 +0200
|
||||
Subject: kill remaining Play Services checks
|
||||
|
||||
---
|
||||
.../chromium/chrome/browser/ChromeVersionInfo.java | 10 +-------
|
||||
.../browser/externalauth/ExternalAuthUtils.java | 28 +++++++---------------
|
||||
.../externalauth/UserRecoverableErrorHandler.java | 10 --------
|
||||
.../chrome/browser/omaha/UpdateMenuItemHelper.java | 10 +-------
|
||||
chrome/android/java_sources.gni | 3 ---
|
||||
.../components/signin/AccountIdProvider.java | 10 +-------
|
||||
.../signin/GmsAvailabilityException.java | 4 +---
|
||||
.../signin/SystemAccountManagerDelegate.java | 18 +++-----------
|
||||
.../shape_detection/FaceDetectionProviderImpl.java | 8 +------
|
||||
9 files changed, 16 insertions(+), 85 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeVersionInfo.java
|
||||
@@ -7,8 +7,6 @@ package org.chromium.chrome.browser;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
|
||||
@@ -88,7 +86,7 @@ public class ChromeVersionInfo {
|
||||
public static String getGmsInfo() {
|
||||
Context context = ContextUtils.getApplicationContext();
|
||||
|
||||
- final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
|
||||
+ final long sdkVersion = 0L;
|
||||
final long installedGmsVersion = getPlayServicesApkVersionNumber(context);
|
||||
|
||||
final String accessType;
|
||||
@@ -105,12 +103,6 @@ public class ChromeVersionInfo {
|
||||
}
|
||||
|
||||
private static long getPlayServicesApkVersionNumber(Context context) {
|
||||
- try {
|
||||
- return context.getPackageManager()
|
||||
- .getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
|
||||
- .versionCode;
|
||||
- } catch (PackageManager.NameNotFoundException e) {
|
||||
return 0;
|
||||
- }
|
||||
}
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java
|
||||
@@ -15,9 +15,6 @@ import android.os.SystemClock;
|
||||
import android.support.annotation.WorkerThread;
|
||||
import android.text.TextUtils;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
@@ -164,9 +161,10 @@ public class ExternalAuthUtils {
|
||||
* when it is updating.
|
||||
*/
|
||||
public boolean isGooglePlayServicesMissing(final Context context) {
|
||||
- final int resultCode = checkGooglePlayServicesAvailable(context);
|
||||
+/* final int resultCode = checkGooglePlayServicesAvailable(context);
|
||||
return (resultCode == ConnectionResult.SERVICE_MISSING
|
||||
- || resultCode == ConnectionResult.SERVICE_INVALID);
|
||||
+ || resultCode == ConnectionResult.SERVICE_INVALID); */
|
||||
+ return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,7 +179,7 @@ public class ExternalAuthUtils {
|
||||
* @return true if and only if Google Play Services can be used
|
||||
*/
|
||||
public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
|
||||
- Context context = ContextUtils.getApplicationContext();
|
||||
+/* Context context = ContextUtils.getApplicationContext();
|
||||
final int resultCode = checkGooglePlayServicesAvailable(context);
|
||||
recordConnectionResult(resultCode);
|
||||
if (resultCode == ConnectionResult.SUCCESS) return true;
|
||||
@@ -195,7 +193,7 @@ public class ExternalAuthUtils {
|
||||
}
|
||||
};
|
||||
ThreadUtils.runOnUiThread(errorHandlerTask);
|
||||
- }
|
||||
+ } */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -257,17 +255,7 @@ public class ExternalAuthUtils {
|
||||
* @return The code produced by calling the external code
|
||||
*/
|
||||
protected int checkGooglePlayServicesAvailable(final Context context) {
|
||||
- // Temporarily allowing disk access. TODO: Fix. See http://crbug.com/577190
|
||||
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
|
||||
- try {
|
||||
- long time = SystemClock.elapsedRealtime();
|
||||
- int isAvailable =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
|
||||
- mRegistrationTimeHistogramSample.record(SystemClock.elapsedRealtime() - time);
|
||||
- return isAvailable;
|
||||
- } finally {
|
||||
- StrictMode.setThreadPolicy(oldPolicy);
|
||||
- }
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -278,7 +266,7 @@ public class ExternalAuthUtils {
|
||||
* @return true If the code represents a user-recoverable error
|
||||
*/
|
||||
protected boolean isUserRecoverableError(final int errorCode) {
|
||||
- return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -288,6 +276,6 @@ public class ExternalAuthUtils {
|
||||
* @return a textual description of the error code
|
||||
*/
|
||||
protected String describeError(final int errorCode) {
|
||||
- return GoogleApiAvailability.getInstance().getErrorString(errorCode);
|
||||
+ return "";
|
||||
}
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
|
||||
@@ -10,8 +10,6 @@ import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.support.annotation.IntDef;
|
||||
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ThreadUtils;
|
||||
import org.chromium.base.metrics.CachedMetrics.ActionEvent;
|
||||
import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
|
||||
@@ -120,7 +118,6 @@ public abstract class UserRecoverableErrorHandler {
|
||||
sErrorHandlerActionHistogramSample.record(ErrorHandlerAction.IGNORED_AS_REDUNDANT);
|
||||
return;
|
||||
}
|
||||
- GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
|
||||
sErrorHandlerActionHistogramSample.record(ErrorHandlerAction.SYSTEM_NOTIFICATION);
|
||||
}
|
||||
}
|
||||
@@ -213,13 +210,6 @@ public abstract class UserRecoverableErrorHandler {
|
||||
if (mErrorCode != errorCode) {
|
||||
cancelDialog();
|
||||
}
|
||||
- if (mDialog == null) {
|
||||
- mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
|
||||
- mActivity, errorCode, NO_RESPONSE_REQUIRED);
|
||||
- mErrorCode = errorCode;
|
||||
-
|
||||
- DialogUserActionRecorder.createAndAttachToDialog(mDialog);
|
||||
- }
|
||||
// This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
|
||||
if (mDialog != null && !mDialog.isShowing()) {
|
||||
mDialog.setCancelable(mCancelable);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
|
||||
@@ -21,8 +21,6 @@ import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.animation.LinearInterpolator;
|
||||
|
||||
-import com.google.android.gms.common.GooglePlayServicesUtil;
|
||||
-
|
||||
import org.chromium.base.AsyncTask;
|
||||
import org.chromium.base.CommandLine;
|
||||
import org.chromium.base.Log;
|
||||
@@ -163,13 +161,7 @@ public class UpdateMenuItemHelper {
|
||||
}
|
||||
|
||||
private static boolean isGooglePlayStoreAvailable(Context context) {
|
||||
- try {
|
||||
- context.getPackageManager().getPackageInfo(
|
||||
- GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
|
||||
- } catch (PackageManager.NameNotFoundException e) {
|
||||
- return false;
|
||||
- }
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
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
|
||||
@@ -618,10 +618,7 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java",
|
||||
"java/src/org/chromium/chrome/browser/fullscreen/FullscreenOptions.java",
|
||||
"java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClient.java",
|
||||
- "java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java",
|
||||
"java/src/org/chromium/chrome/browser/gcore/ConnectedTask.java",
|
||||
- "java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java",
|
||||
- "java/src/org/chromium/chrome/browser/gcore/LifecycleHook.java",
|
||||
"java/src/org/chromium/chrome/browser/gsa/ContextReporter.java",
|
||||
"java/src/org/chromium/chrome/browser/gsa/GSAAccountChangeListener.java",
|
||||
"java/src/org/chromium/chrome/browser/gsa/GSAContextDisplaySelection.java",
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/AccountIdProvider.java
|
||||
@@ -4,9 +4,6 @@
|
||||
|
||||
package org.chromium.components.signin;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.StrictModeContext;
|
||||
@@ -47,12 +44,7 @@ public class AccountIdProvider {
|
||||
* Google Play services is available.
|
||||
*/
|
||||
public boolean canBeUsed() {
|
||||
- // TODO(http://crbug.com/577190): Remove StrictMode override.
|
||||
- try (StrictModeContext unused = StrictModeContext.allowDiskWrites()) {
|
||||
- int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext());
|
||||
- return resultCode == ConnectionResult.SUCCESS;
|
||||
- }
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/GmsAvailabilityException.java
|
||||
@@ -4,8 +4,6 @@
|
||||
|
||||
package org.chromium.components.signin;
|
||||
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
/**
|
||||
* This class encapsulates return code if GMSCore package is not available.
|
||||
*/
|
||||
@@ -27,6 +25,6 @@ public class GmsAvailabilityException extends AccountManagerDelegateException {
|
||||
}
|
||||
|
||||
public boolean isUserResolvableError() {
|
||||
- return GoogleApiAvailability.getInstance().isUserResolvableError(mResultCode);
|
||||
+ return false;
|
||||
}
|
||||
}
|
||||
diff --git a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
--- a/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
+++ b/components/signin/core/browser/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
|
||||
@@ -24,9 +24,6 @@ import android.os.PatternMatcher;
|
||||
import android.os.Process;
|
||||
import android.os.SystemClock;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ApiCompatibilityUtils;
|
||||
import org.chromium.base.Callback;
|
||||
import org.chromium.base.ContextUtils;
|
||||
@@ -83,17 +80,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
}
|
||||
|
||||
protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException {
|
||||
- Context context = ContextUtils.getApplicationContext();
|
||||
- final int resultCode =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
|
||||
- if (resultCode == ConnectionResult.SUCCESS) {
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- throw new GmsAvailabilityException(
|
||||
- String.format("Can't use Google Play Services: %s",
|
||||
- GoogleApiAvailability.getInstance().getErrorString(resultCode)),
|
||||
- resultCode);
|
||||
+ throw new GmsAvailabilityException("Can't use Google Play Services: CFOSS",0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -210,8 +197,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
callback.onResult(null);
|
||||
}
|
||||
};
|
||||
- mAccountManager.addAccount(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, null, null, null, null,
|
||||
+ /*mAccountManager.addAccount(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, null, null, null, null,
|
||||
accountManagerCallback, null);
|
||||
+ */
|
||||
}
|
||||
|
||||
// No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs
|
||||
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
|
||||
@@ -4,9 +4,6 @@
|
||||
|
||||
package org.chromium.shape_detection;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.mojo.bindings.InterfaceRequest;
|
||||
import org.chromium.mojo.system.MojoException;
|
||||
@@ -24,10 +21,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
|
||||
@Override
|
||||
public void createFaceDetection(
|
||||
InterfaceRequest<FaceDetection> request, FaceDetectorOptions options) {
|
||||
- final boolean isGmsCoreSupported =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext())
|
||||
- == ConnectionResult.SUCCESS;
|
||||
+ final boolean isGmsCoreSupported = false;
|
||||
|
||||
if (isGmsCoreSupported) {
|
||||
//FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+11
-10
@@ -1,11 +1,11 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:16:43 +0200
|
||||
Subject: kill Translate(doesn't work)
|
||||
Subject: kill Translate
|
||||
|
||||
---
|
||||
chrome/android/java/res/xml/languages_preferences.xml | 3 ++-
|
||||
.../src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 2 ++
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
.../src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java | 3 +++
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/xml/languages_preferences.xml b/chrome/android/java/res/xml/languages_preferences.xml
|
||||
--- a/chrome/android/java/res/xml/languages_preferences.xml
|
||||
@@ -30,14 +30,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
|
||||
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
|
||||
import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
|
||||
import org.chromium.ui.base.LocalizationUtils;
|
||||
@@ -143,6 +144,7 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
|
||||
if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) {
|
||||
mFreProgressStates.add(FRE_PROGRESS_DATA_SAVER_SHOWN);
|
||||
notifyAdapter = true;
|
||||
+ PrefServiceBridge.getInstance().setTranslateEnabled(false);
|
||||
}
|
||||
@@ -138,6 +139,8 @@ public class FirstRunActivity extends FirstRunActivityBase implements FirstRunPa
|
||||
if (mPostNativePageSequenceCreated) return;
|
||||
mFirstRunFlowSequencer.onNativeInitialized(mFreProperties);
|
||||
|
||||
// An optional page to select a default search engine.
|
||||
+ PrefServiceBridge.getInstance().setTranslateEnabled(false);
|
||||
+
|
||||
boolean notifyAdapter = false;
|
||||
// An optional Data Saver page.
|
||||
if (mFreProperties.getBoolean(SHOW_DATA_REDUCTION_PAGE)) {
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:04:43 +0200
|
||||
Subject: kill Vision
|
||||
|
||||
Barcode, face and text detection APIs
|
||||
---
|
||||
services/shape_detection/BUILD.gn | 4 ----
|
||||
.../src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------
|
||||
.../shape_detection/FaceDetectionProviderImpl.java | 15 ++-------------
|
||||
.../org/chromium/shape_detection/InterfaceRegistrar.java | 5 -----
|
||||
4 files changed, 2 insertions(+), 34 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
|
||||
@@ -84,14 +84,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/BarcodeDetectionProviderImpl.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
|
||||
@@ -4,9 +4,6 @@
|
||||
|
||||
package org.chromium.shape_detection;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.mojo.bindings.InterfaceRequest;
|
||||
import org.chromium.mojo.system.MojoException;
|
||||
@@ -24,16 +21,8 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
|
||||
@Override
|
||||
public void createFaceDetection(
|
||||
InterfaceRequest<FaceDetection> request, FaceDetectorOptions options) {
|
||||
- final boolean isGmsCoreSupported =
|
||||
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext())
|
||||
- == ConnectionResult.SUCCESS;
|
||||
-
|
||||
- if (isGmsCoreSupported) {
|
||||
- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
|
||||
- } else {
|
||||
- FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
|
||||
- }
|
||||
+
|
||||
+ FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
|
||||
}
|
||||
|
||||
@Override
|
||||
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
|
||||
@@ -8,9 +8,7 @@ import org.chromium.base.annotations.CalledByNative;
|
||||
import org.chromium.base.annotations.JNINamespace;
|
||||
import org.chromium.mojo.system.impl.CoreImpl;
|
||||
import org.chromium.services.service_manager.InterfaceRegistry;
|
||||
-import org.chromium.shape_detection.mojom.BarcodeDetectionProvider;
|
||||
import org.chromium.shape_detection.mojom.FaceDetectionProvider;
|
||||
-import org.chromium.shape_detection.mojom.TextDetection;
|
||||
|
||||
@JNINamespace("shape_detection")
|
||||
class InterfaceRegistrar {
|
||||
@@ -21,9 +19,6 @@ class InterfaceRegistrar {
|
||||
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());
|
||||
}
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:05:17 +0200
|
||||
Subject: kill Location, fall back to system
|
||||
|
||||
---
|
||||
services/device/geolocation/BUILD.gn | 1 -
|
||||
.../chromium/device/geolocation/LocationProviderFactory.java | 10 ++--------
|
||||
2 files changed, 2 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
|
||||
--- a/services/device/geolocation/BUILD.gn
|
||||
+++ b/services/device/geolocation/BUILD.gn
|
||||
@@ -131,7 +131,6 @@ if (is_android) {
|
||||
"android/java/src/org/chromium/device/geolocation/LocationProviderAdapter.java",
|
||||
"android/java/src/org/chromium/device/geolocation/LocationProviderAndroid.java",
|
||||
"android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java",
|
||||
- "android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java",
|
||||
]
|
||||
|
||||
deps = [
|
||||
diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
|
||||
--- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
|
||||
+++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderFactory.java
|
||||
@@ -26,19 +26,13 @@ public class LocationProviderFactory {
|
||||
|
||||
@CalledByNative
|
||||
public static void useGmsCoreLocationProvider() {
|
||||
- sUseGmsCoreLocationProvider = true;
|
||||
+ sUseGmsCoreLocationProvider = false;
|
||||
}
|
||||
|
||||
public static LocationProvider create() {
|
||||
if (sProviderImpl != null) return sProviderImpl;
|
||||
|
||||
- if (sUseGmsCoreLocationProvider
|
||||
- && LocationProviderGmsCore.isGooglePlayServicesAvailable(
|
||||
- ContextUtils.getApplicationContext())) {
|
||||
- sProviderImpl = new LocationProviderGmsCore(ContextUtils.getApplicationContext());
|
||||
- } else {
|
||||
- sProviderImpl = new LocationProviderAndroid();
|
||||
- }
|
||||
+ sProviderImpl = new LocationProviderAndroid();
|
||||
return sProviderImpl;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -3,10 +3,10 @@ Date: Fri, 22 Jun 2018 17:06:15 +0200
|
||||
Subject: kill Auth
|
||||
|
||||
---
|
||||
.../org/chromium/chrome/browser/signin/SigninHelper.java | 6 ++----
|
||||
.../org/chromium/components/signin/AccountIdProvider.java | 9 +--------
|
||||
.../components/signin/SystemAccountManagerDelegate.java | 15 +++++++++------
|
||||
3 files changed, 12 insertions(+), 18 deletions(-)
|
||||
.../chrome/browser/signin/SigninHelper.java | 22 +---------
|
||||
.../components/signin/AccountIdProvider.java | 9 +---
|
||||
.../signin/SystemAccountManagerDelegate.java | 50 ++--------------------
|
||||
3 files changed, 5 insertions(+), 76 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
|
||||
@@ -22,19 +22,28 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHe
|
||||
import org.chromium.base.AsyncTask;
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
@@ -71,6 +67,7 @@ public class SigninHelper {
|
||||
@@ -71,23 +67,7 @@ public class SigninHelper {
|
||||
@Override
|
||||
public List<String> getAccountChangeEvents(
|
||||
Context context, int index, String accountName) {
|
||||
+ /*
|
||||
try {
|
||||
List<AccountChangeEvent> list = GoogleAuthUtil.getAccountChangeEvents(
|
||||
context, index, accountName);
|
||||
@@ -88,6 +85,7 @@ public class SigninHelper {
|
||||
} catch (GoogleAuthException e) {
|
||||
Log.w(TAG, "Failed to get change events", e);
|
||||
}
|
||||
+ */
|
||||
- try {
|
||||
- List<AccountChangeEvent> list = GoogleAuthUtil.getAccountChangeEvents(
|
||||
- context, index, accountName);
|
||||
- List<String> result = new ArrayList<>(list.size());
|
||||
- for (AccountChangeEvent e : list) {
|
||||
- if (e.getChangeType() == GoogleAuthUtil.CHANGE_TYPE_ACCOUNT_RENAMED_TO) {
|
||||
- result.add(e.getChangeData());
|
||||
- } else {
|
||||
- result.add(null);
|
||||
- }
|
||||
- }
|
||||
- return result;
|
||||
- } catch (IOException e) {
|
||||
- Log.w(TAG, "Failed to get change events", e);
|
||||
- } catch (GoogleAuthException e) {
|
||||
- Log.w(TAG, "Failed to get change events", e);
|
||||
- }
|
||||
+
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
}
|
||||
@@ -77,56 +86,76 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
|
||||
import com.google.android.gms.common.ConnectionResult;
|
||||
import com.google.android.gms.common.GoogleApiAvailability;
|
||||
|
||||
@@ -117,9 +114,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
@@ -117,48 +114,18 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
// so don't report any accounts if Google Play Services are out of date.
|
||||
checkCanUseGooglePlayServices();
|
||||
|
||||
- if (!hasGetAccountsPermission()) {
|
||||
- return new Account[] {};
|
||||
- }
|
||||
- long now = SystemClock.elapsedRealtime();
|
||||
- Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
|
||||
- long elapsed = SystemClock.elapsedRealtime() - now;
|
||||
- recordElapsedTimeHistogram("Signin.AndroidGetAccountsTime_AccountManager", elapsed);
|
||||
- if (ThreadUtils.runningOnUiThread()) {
|
||||
- recordElapsedTimeHistogram(
|
||||
- "Signin.AndroidGetAccountsTimeUiThread_AccountManager", elapsed);
|
||||
- }
|
||||
- return accounts;
|
||||
+ return new Account[] {};
|
||||
+
|
||||
+ /*
|
||||
long now = SystemClock.elapsedRealtime();
|
||||
Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
|
||||
long elapsed = SystemClock.elapsedRealtime() - now;
|
||||
@@ -129,12 +126,15 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
"Signin.AndroidGetAccountsTimeUiThread_AccountManager", elapsed);
|
||||
}
|
||||
return accounts;
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthToken(Account account, String authTokenScope) throws AuthException {
|
||||
assert !ThreadUtils.runningOnUiThread();
|
||||
assert AccountManagerFacade.GOOGLE_ACCOUNT_TYPE.equals(account.type);
|
||||
- try {
|
||||
- return GoogleAuthUtil.getTokenWithNotification(
|
||||
- ContextUtils.getApplicationContext(), account, authTokenScope, null);
|
||||
- } catch (GoogleAuthException ex) {
|
||||
- // This case includes a UserRecoverableNotifiedException, but most clients will have
|
||||
- // their own retry mechanism anyway.
|
||||
- throw new AuthException(AuthException.NONTRANSIENT,
|
||||
- "Error while getting token for scope '" + authTokenScope + "'", ex);
|
||||
- } catch (IOException ex) {
|
||||
- throw new AuthException(AuthException.TRANSIENT, ex);
|
||||
- }
|
||||
+ return null;
|
||||
+ /*
|
||||
try {
|
||||
return GoogleAuthUtil.getTokenWithNotification(
|
||||
ContextUtils.getApplicationContext(), account, authTokenScope, null);
|
||||
@@ -146,10 +146,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
} catch (IOException ex) {
|
||||
throw new AuthException(AuthException.TRANSIENT, ex);
|
||||
}
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateAuthToken(String authToken) throws AuthException {
|
||||
+ /*
|
||||
try {
|
||||
GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken);
|
||||
} catch (GooglePlayServicesAvailabilityException ex) {
|
||||
@@ -159,6 +161,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
} catch (IOException ex) {
|
||||
throw new AuthException(AuthException.TRANSIENT, ex);
|
||||
}
|
||||
+ */
|
||||
- public void invalidateAuthToken(String authToken) throws AuthException {
|
||||
- try {
|
||||
- GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken);
|
||||
- } catch (GooglePlayServicesAvailabilityException ex) {
|
||||
- throw new AuthException(AuthException.NONTRANSIENT, ex);
|
||||
- } catch (GoogleAuthException ex) {
|
||||
- throw new AuthException(AuthException.NONTRANSIENT, ex);
|
||||
- } catch (IOException ex) {
|
||||
- throw new AuthException(AuthException.TRANSIENT, ex);
|
||||
- }
|
||||
+ public void invalidateAuthToken(String authToken) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -198,17 +165,6 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
||||
@SuppressLint("MissingPermission")
|
||||
@Override
|
||||
public void createAddAccountIntent(Callback<Intent> callback) {
|
||||
- AccountManagerCallback<Bundle> accountManagerCallback = accountManagerFuture -> {
|
||||
- try {
|
||||
- Bundle bundle = accountManagerFuture.getResult();
|
||||
- callback.onResult(bundle.getParcelable(AccountManager.KEY_INTENT));
|
||||
- } catch (OperationCanceledException | IOException | AuthenticatorException e) {
|
||||
- Log.e(TAG, "Error while creating an intent to add an account: ", e);
|
||||
- callback.onResult(null);
|
||||
- }
|
||||
- };
|
||||
- mAccountManager.addAccount(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, null, null, null, null,
|
||||
- accountManagerCallback, null);
|
||||
}
|
||||
|
||||
// No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,977 @@
|
||||
From: thermatk <thermatk@thermatk.com>
|
||||
Date: Fri, 22 Jun 2018 17:11:38 +0200
|
||||
Subject: kill GCM
|
||||
|
||||
---
|
||||
build/secondary/third_party/android_tools/BUILD.gn | 3 -
|
||||
chrome/android/BUILD.gn | 1 -
|
||||
chrome/android/java/AndroidManifest.xml | 62 ---------
|
||||
.../chrome/browser/BackgroundSyncLauncher.java | 97 --------------
|
||||
.../chrome/browser/ChromeBackgroundService.java | 1 -
|
||||
.../invalidation/InvalidationController.java | 13 --
|
||||
.../browser/ntp/snippets/SnippetsLauncher.java | 44 -------
|
||||
.../browser/services/gcm/GCMBackgroundTask.java | 2 -
|
||||
.../gcm/InvalidationGcmUpstreamSender.java | 15 ---
|
||||
chrome/android/java_sources.gni | 2 -
|
||||
components/background_task_scheduler/BUILD.gn | 1 -
|
||||
.../BackgroundTaskSchedulerGcmNetworkManager.java | 146 +--------------------
|
||||
components/gcm_driver/android/BUILD.gn | 1 -
|
||||
components/gcm_driver/instance_id/android/BUILD.gn | 1 -
|
||||
.../gcm_driver/instance_id/InstanceIDBridge.java | 30 +----
|
||||
components/sync/android/BUILD.gn | 1 -
|
||||
third_party/cacheinvalidation/BUILD.gn | 6 -
|
||||
.../client/contrib/MultiplexingGcmListener.java | 92 +------------
|
||||
.../android2/channel/AndroidNetworkChannel.java | 18 +--
|
||||
19 files changed, 14 insertions(+), 522 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
|
||||
@@ -53,9 +53,6 @@ if (enable_java_templates) {
|
||||
testonly = true
|
||||
java_files = [ "//third_party/android_tools/sdk/extras/chromium/support/src/org/chromium/android/support/PackageManagerWrapper.java" ]
|
||||
}
|
||||
- android_java_prebuilt("android_gcm_java") {
|
||||
- jar_path = "//third_party/android_tools/sdk/extras/google/gcm/gcm-client/dist/gcm.jar"
|
||||
- }
|
||||
android_java_prebuilt("emma_device_java") {
|
||||
jar_path = "//third_party/android_tools/sdk/tools/lib/emma_device.jar"
|
||||
include_java_resources = true
|
||||
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
||||
--- a/chrome/android/BUILD.gn
|
||||
+++ b/chrome/android/BUILD.gn
|
||||
@@ -281,7 +281,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",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
"//third_party/android_tools:android_support_annotations_java",
|
||||
"//third_party/android_tools:android_support_compat_java",
|
||||
"//third_party/android_tools:android_support_design_java",
|
||||
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
|
||||
@@ -78,22 +78,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" />
|
||||
- <!-- Only chrome can receive the messages and registration result -->
|
||||
- <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
|
||||
- android:protectionLevel="signature" />
|
||||
<permission android:name="{{ manifest_package }}.permission.DEBUG"
|
||||
android:label="Debug web pages"
|
||||
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
- <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
|
||||
<uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
|
||||
<uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
|
||||
|
||||
<uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
|
||||
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
|
||||
<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
|
||||
- <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
||||
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
|
||||
|
||||
<uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
|
||||
@@ -888,43 +883,6 @@ by a child template that "extends" this file.
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
|
||||
android:hardwareAccelerated="false" />
|
||||
|
||||
- <!-- Receiver for GCM messages. -->
|
||||
- <receiver android:name="com.google.android.gms.gcm.GcmReceiver"
|
||||
- android:exported="true"
|
||||
- android:permission="com.google.android.c2dm.permission.SEND">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
- <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
|
||||
- <category android:name="{{ manifest_package }}"/>
|
||||
- </intent-filter>
|
||||
- </receiver>
|
||||
- <!-- GcmTaskService for registration for Invalidations. -->
|
||||
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService"
|
||||
- android:exported="true"
|
||||
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
- <!-- InstanceIDListenerService for token refresh events from GCM. -->
|
||||
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidInstanceIDListenerService"
|
||||
- android:exported="false">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.iid.InstanceID"/>
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
- <!-- GcmListenerService for messages from GCM. -->
|
||||
- <service android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"
|
||||
- android:exported="false" >
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
- <meta-data android:name="ipc.invalidation.ticl.gcm_upstream_service_class"
|
||||
- android:value="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" />
|
||||
- <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
|
||||
- android:exported="false"/>
|
||||
-
|
||||
<!-- Notification service for sync. -->
|
||||
<meta-data android:name="ipc.invalidation.ticl.listener_service_class"
|
||||
android:value="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService"/>
|
||||
@@ -936,8 +894,6 @@ by a child template that "extends" this file.
|
||||
</service>
|
||||
<service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
|
||||
android:exported="false"/>
|
||||
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
|
||||
- android:exported="false"/>
|
||||
<receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
|
||||
android:exported="false"/>
|
||||
<receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
|
||||
@@ -964,24 +920,6 @@ by a child template that "extends" this file.
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"/>
|
||||
|
||||
- <!-- Background Task Scheduler GCM task service -->
|
||||
- <service android:name="org.chromium.components.background_task_scheduler.BackgroundTaskGcmTaskService"
|
||||
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
|
||||
- android:exported="true">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
-
|
||||
- <!-- GcmTaskService implementation to wake Chrome on scheduled events -->
|
||||
- <service android:name="org.chromium.chrome.browser.ChromeBackgroundService"
|
||||
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
|
||||
- android:exported="true">
|
||||
- <intent-filter>
|
||||
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
|
||||
- </intent-filter>
|
||||
- </service>
|
||||
-
|
||||
<service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
|
||||
android:exported="true"
|
||||
tools:ignore="ExportedService" />
|
||||
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
|
||||
@@ -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;
|
||||
@@ -37,8 +33,6 @@ public class BackgroundSyncLauncher {
|
||||
// BackgroundSyncLauncherAndroid, if any. If it is non-null then the browser is running.
|
||||
private static BackgroundSyncLauncher sInstance;
|
||||
|
||||
- private GcmNetworkManager mScheduler;
|
||||
-
|
||||
/**
|
||||
* Disables the automatic use of the GCMNetworkManager. When disabled, the methods which
|
||||
* interact with GCM can still be used, but will not be called automatically on creation, or by
|
||||
@@ -124,30 +118,6 @@ public class BackgroundSyncLauncher {
|
||||
@VisibleForTesting
|
||||
@CalledByNative
|
||||
protected void launchBrowserIfStopped(final boolean shouldLaunch, final long minDelayMs) {
|
||||
- mLaunchBrowserIfStoppedTask = new AsyncTask<Void>() {
|
||||
- @Override
|
||||
- protected Void doInBackground() {
|
||||
- SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
|
||||
- prefs.edit()
|
||||
- .putBoolean(PREF_BACKGROUND_SYNC_LAUNCH_NEXT_ONLINE, shouldLaunch)
|
||||
- .apply();
|
||||
- return null;
|
||||
- }
|
||||
- @Override
|
||||
- protected void onPostExecute(Void params) {
|
||||
- if (sGCMEnabled) {
|
||||
- if (shouldLaunch) {
|
||||
- RecordHistogram.recordBooleanHistogram(
|
||||
- "BackgroundSync.LaunchTask.ScheduleSuccess",
|
||||
- scheduleLaunchTask(mScheduler, minDelayMs));
|
||||
- } else {
|
||||
- RecordHistogram.recordBooleanHistogram(
|
||||
- "BackgroundSync.LaunchTask.CancelSuccess",
|
||||
- removeScheduledTasks(mScheduler));
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -159,7 +129,6 @@ public class BackgroundSyncLauncher {
|
||||
}
|
||||
|
||||
protected BackgroundSyncLauncher() {
|
||||
- mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationContext());
|
||||
launchBrowserIfStopped(false, 0);
|
||||
}
|
||||
|
||||
@@ -188,72 +157,6 @@ public class BackgroundSyncLauncher {
|
||||
return !sGCMEnabled;
|
||||
}
|
||||
|
||||
- private static boolean scheduleLaunchTask(GcmNetworkManager scheduler, long minDelayMs) {
|
||||
- // Google Play Services may not be up to date, if the application was not installed through
|
||||
- // the Play Store. In this case, scheduling the task will fail silently.
|
||||
- final long minDelaySecs = minDelayMs / 1000;
|
||||
- OneoffTask oneoff = new OneoffTask.Builder()
|
||||
- .setService(ChromeBackgroundService.class)
|
||||
- .setTag(TASK_TAG)
|
||||
- // We have to set a non-zero execution window here
|
||||
- .setExecutionWindow(minDelaySecs, minDelaySecs + 1)
|
||||
- .setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
|
||||
- .setPersisted(true)
|
||||
- .setUpdateCurrent(true)
|
||||
- .build();
|
||||
- try {
|
||||
- scheduler.schedule(oneoff);
|
||||
- } catch (IllegalArgumentException e) {
|
||||
- // Disable GCM for the remainder of this session.
|
||||
- setGCMEnabled(false);
|
||||
- // Return false so that the failure will be logged.
|
||||
- return false;
|
||||
- }
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
- private static boolean removeScheduledTasks(GcmNetworkManager scheduler) {
|
||||
- // Third-party code causes broadcast to touch disk. http://crbug.com/614679
|
||||
- StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
|
||||
- try {
|
||||
- scheduler.cancelTask(TASK_TAG, ChromeBackgroundService.class);
|
||||
- } catch (IllegalArgumentException e) {
|
||||
- // This occurs when BackgroundSyncLauncherService is not found in the application
|
||||
- // manifest. This should not happen in code that reaches here, but has been seen in
|
||||
- // the past. See https://crbug.com/548314
|
||||
- // Disable GCM for the remainder of this session.
|
||||
- setGCMEnabled(false);
|
||||
- // Return false so that the failure will be logged.
|
||||
- return false;
|
||||
- } finally {
|
||||
- StrictMode.setThreadPolicy(oldPolicy);
|
||||
- }
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Reschedule any required background sync tasks, if they have been removed due to an
|
||||
- * application upgrade.
|
||||
- *
|
||||
- * This method checks the saved preferences, and reschedules the sync tasks as appropriate
|
||||
- * to match the preferences.
|
||||
- * This method is static so that it can be run without actually instantiating a
|
||||
- * BackgroundSyncLauncher.
|
||||
- */
|
||||
- protected static void rescheduleTasksOnUpgrade(final Context context) {
|
||||
- final GcmNetworkManager scheduler = GcmNetworkManager.getInstance(context);
|
||||
- BackgroundSyncLauncher.ShouldLaunchCallback callback = shouldLaunch -> {
|
||||
- if (shouldLaunch) {
|
||||
- // It's unclear what time the sync event was supposed to fire, so fire
|
||||
- // without delay and let the browser reschedule if necessary.
|
||||
- // TODO(iclelland): If this fails, report the failure via UMA (not now,
|
||||
- // since the browser is not running, but on next startup.)
|
||||
- scheduleLaunchTask(scheduler, 0);
|
||||
- }
|
||||
- };
|
||||
- BackgroundSyncLauncher.shouldLaunchBrowserIfStopped(callback);
|
||||
- }
|
||||
-
|
||||
@VisibleForTesting
|
||||
static void setGCMEnabled(boolean enabled) {
|
||||
sGCMEnabled = enabled;
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java
|
||||
@@ -106,7 +106,6 @@ public class ChromeBackgroundService extends GcmTaskService {
|
||||
|
||||
@VisibleForTesting
|
||||
protected void rescheduleBackgroundSyncTasksOnUpgrade() {
|
||||
- BackgroundSyncLauncher.rescheduleTasksOnUpgrade(this);
|
||||
}
|
||||
|
||||
private void handleSnippetsOnBrowserUpgraded() {
|
||||
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
|
||||
@@ -10,8 +10,6 @@ import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
|
||||
-import com.google.ipc.invalidation.ticl.android2.channel.AndroidGcmController;
|
||||
-
|
||||
import org.chromium.base.ApplicationState;
|
||||
import org.chromium.base.ApplicationStatus;
|
||||
import org.chromium.base.AsyncTask;
|
||||
@@ -198,18 +196,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
|
||||
* Registers for Google Cloud Messaging (GCM) for Invalidations.
|
||||
*/
|
||||
private void ensureGcmIsInitialized() {
|
||||
- if (mGcmInitialized) return;
|
||||
mGcmInitialized = true;
|
||||
- new AsyncTask<Void>() {
|
||||
- @Override
|
||||
- protected Void doInBackground() {
|
||||
- boolean useGcmUpstream = true;
|
||||
- AndroidGcmController.get(ContextUtils.getApplicationContext())
|
||||
- .initializeGcm(useGcmUpstream);
|
||||
- return null;
|
||||
- }
|
||||
- }
|
||||
- .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsLauncher.java
|
||||
@@ -7,15 +7,10 @@ package org.chromium.chrome.browser.ntp.snippets;
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
|
||||
-import com.google.android.gms.gcm.GcmNetworkManager;
|
||||
-import com.google.android.gms.gcm.PeriodicTask;
|
||||
-import com.google.android.gms.gcm.Task;
|
||||
-
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
-import org.chromium.chrome.browser.ChromeBackgroundService;
|
||||
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils;
|
||||
|
||||
/**
|
||||
@@ -40,8 +35,6 @@ public class SnippetsLauncher {
|
||||
// If it is non-null then the browser is running.
|
||||
private static SnippetsLauncher sInstance;
|
||||
|
||||
- private GcmNetworkManager mScheduler;
|
||||
-
|
||||
private boolean mGCMEnabled = true;
|
||||
|
||||
/**
|
||||
@@ -78,7 +71,6 @@ public class SnippetsLauncher {
|
||||
|
||||
protected SnippetsLauncher() {
|
||||
checkGCM();
|
||||
- mScheduler = GcmNetworkManager.getInstance(ContextUtils.getApplicationContext());
|
||||
}
|
||||
|
||||
private void checkGCM() {
|
||||
@@ -89,32 +81,7 @@ public class SnippetsLauncher {
|
||||
}
|
||||
}
|
||||
|
||||
- private static PeriodicTask buildFetchTask(
|
||||
- String tag, long periodSeconds, int requiredNetwork) {
|
||||
- // Add a bit of "flex" around the target period. This achieves the following:
|
||||
- // - It makes sure the task doesn't run (significantly) before its initial period has
|
||||
- // elapsed. In practice, the scheduler seems to behave like that anyway, but it doesn't
|
||||
- // guarantee that, so we shouldn't rely on it.
|
||||
- // - It gives the scheduler a bit of room to optimize for battery life.
|
||||
- long effectivePeriodSeconds = (long) (periodSeconds * (1.0 + FLEX_FACTOR));
|
||||
- long flexSeconds = (long) (periodSeconds * (2.0 * FLEX_FACTOR));
|
||||
- return new PeriodicTask.Builder()
|
||||
- .setService(ChromeBackgroundService.class)
|
||||
- .setTag(tag)
|
||||
- .setPeriod(effectivePeriodSeconds)
|
||||
- .setFlex(flexSeconds)
|
||||
- .setRequiredNetwork(requiredNetwork)
|
||||
- .setPersisted(true)
|
||||
- .setUpdateCurrent(true)
|
||||
- .build();
|
||||
- }
|
||||
-
|
||||
private void scheduleOrCancelFetchTask(String taskTag, long period, int requiredNetwork) {
|
||||
- if (period > 0) {
|
||||
- mScheduler.schedule(buildFetchTask(taskTag, period, requiredNetwork));
|
||||
- } else {
|
||||
- mScheduler.cancelTask(taskTag, ChromeBackgroundService.class);
|
||||
- }
|
||||
}
|
||||
|
||||
@CalledByNative
|
||||
@@ -127,23 +94,12 @@ public class SnippetsLauncher {
|
||||
.edit()
|
||||
.putBoolean(PREF_IS_SCHEDULED, isScheduled)
|
||||
.apply();
|
||||
-
|
||||
- // Google Play Services may not be up to date, if the application was not installed through
|
||||
- // the Play Store. In this case, scheduling the task will fail silently.
|
||||
- try {
|
||||
- scheduleOrCancelFetchTask(
|
||||
- TASK_TAG_WIFI, periodWifiSeconds, Task.NETWORK_STATE_UNMETERED);
|
||||
- scheduleOrCancelFetchTask(
|
||||
- TASK_TAG_FALLBACK, periodFallbackSeconds, Task.NETWORK_STATE_CONNECTED);
|
||||
- } catch (IllegalArgumentException e) {
|
||||
// Disable GCM for the remainder of this session.
|
||||
mGCMEnabled = false;
|
||||
|
||||
ContextUtils.getAppSharedPreferences().edit().remove(PREF_IS_SCHEDULED).apply();
|
||||
// Return false so that the failure will be logged.
|
||||
return false;
|
||||
- }
|
||||
- return true;
|
||||
}
|
||||
|
||||
@CalledByNative
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
||||
@@ -39,8 +39,6 @@ public class GCMBackgroundTask implements BackgroundTask {
|
||||
Log.e(TAG, "The received bundle containing message data could not be validated.");
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- ChromeGcmListenerService.dispatchMessageToDriver(context, new GCMMessage(extras));
|
||||
return false;
|
||||
}
|
||||
|
||||
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
|
||||
@@ -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.AsyncTask;
|
||||
@@ -96,20 +95,6 @@ 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) {
|
||||
- // 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)) {
|
||||
- GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SIZE_LIMIT_EXCEEDED);
|
||||
- return;
|
||||
- }
|
||||
- String msgId = UUID.randomUUID().toString();
|
||||
- try {
|
||||
- GoogleCloudMessaging.getInstance(ContextUtils.getApplicationContext())
|
||||
- .send(to, msgId, 1, data);
|
||||
- } catch (IOException | IllegalArgumentException exception) {
|
||||
- Log.w(TAG, "Send message failed");
|
||||
- GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SEND_FAILED);
|
||||
- }
|
||||
}
|
||||
|
||||
private boolean isMessageWithinLimit(Bundle data) {
|
||||
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
|
||||
@@ -26,7 +26,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",
|
||||
- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
|
||||
"java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
|
||||
@@ -1283,7 +1282,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",
|
||||
- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
|
||||
"java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java",
|
||||
"java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
|
||||
"java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
|
||||
diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
|
||||
--- a/components/background_task_scheduler/BUILD.gn
|
||||
+++ b/components/background_task_scheduler/BUILD.gn
|
||||
@@ -30,7 +30,6 @@ if (is_android) {
|
||||
android_library("background_task_scheduler_java") {
|
||||
java_files = [
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTask.java",
|
||||
- "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskGcmTaskService.java",
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskJobService.java",
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskReflection.java",
|
||||
"android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java",
|
||||
diff --git a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
|
||||
--- a/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
|
||||
+++ b/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerGcmNetworkManager.java
|
||||
@@ -8,14 +8,6 @@ import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
-import com.google.android.gms.common.ConnectionResult;
|
||||
-import com.google.android.gms.common.GoogleApiAvailability;
|
||||
-import com.google.android.gms.gcm.GcmNetworkManager;
|
||||
-import com.google.android.gms.gcm.OneoffTask;
|
||||
-import com.google.android.gms.gcm.PeriodicTask;
|
||||
-import com.google.android.gms.gcm.Task;
|
||||
-import com.google.android.gms.gcm.TaskParams;
|
||||
-
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
import org.chromium.base.VisibleForTesting;
|
||||
@@ -34,104 +26,6 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
@VisibleForTesting
|
||||
static final String BACKGROUND_TASK_EXTRAS_KEY = "_background_task_extras";
|
||||
|
||||
- static BackgroundTask getBackgroundTaskFromTaskParams(@NonNull TaskParams taskParams) {
|
||||
- String backgroundTaskClassName = getBackgroundTaskClassFromTaskParams(taskParams);
|
||||
- return BackgroundTaskReflection.getBackgroundTaskFromClassName(backgroundTaskClassName);
|
||||
- }
|
||||
-
|
||||
- private static String getBackgroundTaskClassFromTaskParams(@NonNull TaskParams taskParams) {
|
||||
- Bundle extras = taskParams.getExtras();
|
||||
- if (extras == null) return null;
|
||||
- return extras.getString(BACKGROUND_TASK_CLASS_KEY);
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Retrieves the {@link TaskParameters} from the {@link TaskParams}, which are passed as
|
||||
- * one of the keys. Only values valid for {@link android.os.BaseBundle} are supported, and other
|
||||
- * values are stripped at the time when the task is scheduled.
|
||||
- *
|
||||
- * @param taskParams the {@link TaskParams} to extract the {@link TaskParameters} from.
|
||||
- * @return the {@link TaskParameters} for the current job.
|
||||
- */
|
||||
- static TaskParameters getTaskParametersFromTaskParams(@NonNull TaskParams taskParams) {
|
||||
- int taskId;
|
||||
- try {
|
||||
- taskId = Integer.parseInt(taskParams.getTag());
|
||||
- } catch (NumberFormatException e) {
|
||||
- Log.e(TAG, "Cound not parse task ID from task tag: " + taskParams.getTag());
|
||||
- return null;
|
||||
- }
|
||||
-
|
||||
- TaskParameters.Builder builder = TaskParameters.create(taskId);
|
||||
-
|
||||
- Bundle extras = taskParams.getExtras();
|
||||
- Bundle taskExtras = extras.getBundle(BACKGROUND_TASK_EXTRAS_KEY);
|
||||
- builder.addExtras(taskExtras);
|
||||
-
|
||||
- return builder.build();
|
||||
- }
|
||||
-
|
||||
- @VisibleForTesting
|
||||
- static Task createTaskFromTaskInfo(@NonNull TaskInfo taskInfo) {
|
||||
- Bundle taskExtras = new Bundle();
|
||||
- taskExtras.putString(
|
||||
- BACKGROUND_TASK_CLASS_KEY, taskInfo.getBackgroundTaskClass().getName());
|
||||
- taskExtras.putBundle(BACKGROUND_TASK_EXTRAS_KEY, taskInfo.getExtras());
|
||||
-
|
||||
- Task.Builder builder;
|
||||
- if (taskInfo.isPeriodic()) {
|
||||
- builder = getPeriodicTaskBuilder(taskInfo.getPeriodicInfo());
|
||||
- } else {
|
||||
- builder = getOneOffTaskBuilder(taskInfo.getOneOffInfo());
|
||||
- }
|
||||
-
|
||||
- builder.setExtras(taskExtras)
|
||||
- .setPersisted(taskInfo.isPersisted())
|
||||
- .setRequiredNetwork(getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType(
|
||||
- taskInfo.getRequiredNetworkType()))
|
||||
- .setRequiresCharging(taskInfo.requiresCharging())
|
||||
- .setService(BackgroundTaskGcmTaskService.class)
|
||||
- .setTag(taskIdToTaskTag(taskInfo.getTaskId()))
|
||||
- .setUpdateCurrent(taskInfo.shouldUpdateCurrent());
|
||||
-
|
||||
- return builder.build();
|
||||
- }
|
||||
-
|
||||
- private static Task.Builder getPeriodicTaskBuilder(TaskInfo.PeriodicInfo periodicInfo) {
|
||||
- PeriodicTask.Builder builder = new PeriodicTask.Builder();
|
||||
- builder.setPeriod(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getIntervalMs()));
|
||||
- if (periodicInfo.hasFlex()) {
|
||||
- builder.setFlex(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getFlexMs()));
|
||||
- }
|
||||
- return builder;
|
||||
- }
|
||||
-
|
||||
- private static Task.Builder getOneOffTaskBuilder(TaskInfo.OneOffInfo oneOffInfo) {
|
||||
- OneoffTask.Builder builder = new OneoffTask.Builder();
|
||||
- long windowStartSeconds = oneOffInfo.hasWindowStartTimeConstraint()
|
||||
- ? TimeUnit.MILLISECONDS.toSeconds(oneOffInfo.getWindowStartTimeMs())
|
||||
- : 0;
|
||||
- builder.setExecutionWindow(windowStartSeconds,
|
||||
- TimeUnit.MILLISECONDS.toSeconds(oneOffInfo.getWindowEndTimeMs()));
|
||||
- return builder;
|
||||
- }
|
||||
-
|
||||
- private static int getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType(
|
||||
- @TaskInfo.NetworkType int networkType) {
|
||||
- switch (networkType) {
|
||||
- // This is correct: GcmNM ANY means no network is guaranteed.
|
||||
- case TaskInfo.NETWORK_TYPE_NONE:
|
||||
- return Task.NETWORK_STATE_ANY;
|
||||
- case TaskInfo.NETWORK_TYPE_ANY:
|
||||
- return Task.NETWORK_STATE_CONNECTED;
|
||||
- case TaskInfo.NETWORK_TYPE_UNMETERED:
|
||||
- return Task.NETWORK_STATE_UNMETERED;
|
||||
- default:
|
||||
- assert false;
|
||||
- }
|
||||
- return Task.NETWORK_STATE_ANY;
|
||||
- }
|
||||
-
|
||||
@Override
|
||||
public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
@@ -142,50 +36,12 @@ class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedule
|
||||
+ " has no parameterless public constructor.");
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
|
||||
- if (gcmNetworkManager == null) {
|
||||
- Log.e(TAG, "GcmNetworkManager is not available.");
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
- Task task = createTaskFromTaskInfo(taskInfo);
|
||||
- gcmNetworkManager.schedule(task);
|
||||
- } catch (IllegalArgumentException e) {
|
||||
- String gcmErrorMessage = e.getMessage() == null ? "null." : e.getMessage();
|
||||
- Log.e(TAG,
|
||||
- "GcmNetworkManager failed to schedule task, gcm message: " + gcmErrorMessage);
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- return true;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(Context context, int taskId) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
-
|
||||
- GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
|
||||
- if (gcmNetworkManager == null) {
|
||||
- Log.e(TAG, "GcmNetworkManager is not available.");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
- gcmNetworkManager.cancelTask(
|
||||
- taskIdToTaskTag(taskId), BackgroundTaskGcmTaskService.class);
|
||||
- } catch (IllegalArgumentException e) {
|
||||
- Log.e(TAG, "GcmNetworkManager failed to cancel task.");
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- private GcmNetworkManager getGcmNetworkManager(Context context) {
|
||||
- if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
|
||||
- == ConnectionResult.SUCCESS) {
|
||||
- return GcmNetworkManager.getInstance(context);
|
||||
- }
|
||||
- return null;
|
||||
}
|
||||
|
||||
private static String taskIdToTaskTag(int taskId) {
|
||||
diff --git a/components/gcm_driver/android/BUILD.gn b/components/gcm_driver/android/BUILD.gn
|
||||
--- a/components/gcm_driver/android/BUILD.gn
|
||||
+++ b/components/gcm_driver/android/BUILD.gn
|
||||
@@ -15,7 +15,6 @@ android_library("gcm_driver_java") {
|
||||
deps = [
|
||||
"//base:base_java",
|
||||
"//content/public/android:content_java",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
"//third_party/jsr-305:jsr_305_javalib",
|
||||
]
|
||||
|
||||
diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
|
||||
--- a/components/gcm_driver/instance_id/android/BUILD.gn
|
||||
+++ b/components/gcm_driver/instance_id/android/BUILD.gn
|
||||
@@ -26,7 +26,6 @@ android_library("instance_id_driver_java") {
|
||||
|
||||
java_files = [
|
||||
"java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java",
|
||||
- "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java",
|
||||
]
|
||||
}
|
||||
|
||||
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
|
||||
@@ -25,7 +25,6 @@ public class InstanceIDBridge {
|
||||
* Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
|
||||
* initialized on a background thread.
|
||||
*/
|
||||
- private InstanceIDWithSubtype mInstanceID;
|
||||
|
||||
private static boolean sBlockOnAsyncTasksForTesting;
|
||||
|
||||
@@ -70,7 +69,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<String>() {
|
||||
@Override
|
||||
protected String doBackgroundWork() {
|
||||
- return mInstanceID.getId();
|
||||
+ return "";
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(String id) {
|
||||
@@ -85,7 +84,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<Long>() {
|
||||
@Override
|
||||
protected Long doBackgroundWork() {
|
||||
- return mInstanceID.getCreationTime();
|
||||
+ return 0L;
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(Long creationTime) {
|
||||
@@ -106,11 +105,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<String>() {
|
||||
@Override
|
||||
protected String doBackgroundWork() {
|
||||
- try {
|
||||
- return mInstanceID.getToken(authorizedEntity, scope, extras);
|
||||
- } catch (IOException ex) {
|
||||
- return "";
|
||||
- }
|
||||
+ return "";
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(String token) {
|
||||
@@ -126,12 +121,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<Boolean>() {
|
||||
@Override
|
||||
protected Boolean doBackgroundWork() {
|
||||
- try {
|
||||
- mInstanceID.deleteToken(authorizedEntity, scope);
|
||||
- return true;
|
||||
- } catch (IOException ex) {
|
||||
- return false;
|
||||
- }
|
||||
+ return true;
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(Boolean success) {
|
||||
@@ -146,12 +136,7 @@ public class InstanceIDBridge {
|
||||
new BridgeAsyncTask<Boolean>() {
|
||||
@Override
|
||||
protected Boolean doBackgroundWork() {
|
||||
- try {
|
||||
- mInstanceID.deleteInstanceID();
|
||||
- return true;
|
||||
- } catch (IOException ex) {
|
||||
- return false;
|
||||
- }
|
||||
+ return true;
|
||||
}
|
||||
@Override
|
||||
protected void sendResultToNative(Boolean success) {
|
||||
@@ -190,11 +175,6 @@ public class InstanceIDBridge {
|
||||
@Override
|
||||
@SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
|
||||
protected Result doInBackground() {
|
||||
- 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
|
||||
@@ -10,7 +10,6 @@ android_library("sync_java") {
|
||||
"//base:base_java",
|
||||
"//components/signin/core/browser/android:java",
|
||||
"//net/android:net_java",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
"//third_party/android_tools:android_support_annotations_java",
|
||||
"//third_party/cacheinvalidation:cacheinvalidation_javalib",
|
||||
"//third_party/cacheinvalidation:cacheinvalidation_proto_java",
|
||||
diff --git a/third_party/cacheinvalidation/BUILD.gn b/third_party/cacheinvalidation/BUILD.gn
|
||||
--- a/third_party/cacheinvalidation/BUILD.gn
|
||||
+++ b/third_party/cacheinvalidation/BUILD.gn
|
||||
@@ -141,7 +141,6 @@ if (is_android) {
|
||||
"$google_play_services_package:google_play_services_iid_java",
|
||||
"$google_play_services_package:google_play_services_tasks_java",
|
||||
"//third_party/android_protobuf:protobuf_nano_javalib",
|
||||
- "//third_party/android_tools:android_gcm_java",
|
||||
]
|
||||
|
||||
java_files = [
|
||||
@@ -207,13 +206,8 @@ if (is_android) {
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/WakeLockManager.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelConstants.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidChannelPreferences.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidGcmController.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidInstanceIDListenerService.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageReceiverService.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidMessageSenderService.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/CommonUtils.java",
|
||||
- "src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/android2/channel/GcmUpstreamSenderService.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/proto/AndroidChannel.java",
|
||||
"src/java/com/google/ipc/invalidation/ticl/proto/AndroidListenerProtocol.java",
|
||||
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java
|
||||
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java
|
||||
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/external/client/contrib/MultiplexingGcmListener.java
|
||||
@@ -16,9 +16,6 @@
|
||||
|
||||
package com.google.ipc.invalidation.external.client.contrib;
|
||||
|
||||
-import com.google.android.gcm.GCMBaseIntentService;
|
||||
-import com.google.android.gcm.GCMBroadcastReceiver;
|
||||
-import com.google.android.gcm.GCMRegistrar;
|
||||
import com.google.ipc.invalidation.external.client.SystemResources.Logger;
|
||||
import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
|
||||
import com.google.ipc.invalidation.ticl.android2.WakeLockManager;
|
||||
@@ -69,7 +66,7 @@ import android.content.pm.ServiceInfo;
|
||||
* there is nothing to do except log an error (which this class does).
|
||||
*
|
||||
*/
|
||||
-public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
+public class MultiplexingGcmListener {
|
||||
/* This class is public so that it can be instantiated by the Android runtime. */
|
||||
|
||||
/** Constants used in broadcast Intents. */
|
||||
@@ -106,18 +103,6 @@ public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
}
|
||||
|
||||
/**
|
||||
- * {@link GCMBroadcastReceiver} that forwards GCM intents to the {@code MultiplexingGcmListener}
|
||||
- * class.
|
||||
- */
|
||||
- public static class GCMReceiver extends GCMBroadcastReceiver {
|
||||
- /* This class is public so that it can be instantiated by the Android runtime. */
|
||||
- @Override
|
||||
- protected String getGCMIntentServiceClassName(Context context) {
|
||||
- return MultiplexingGcmListener.class.getName();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
* Convenience base class for client implementations. It provides base classes for a broadcast
|
||||
* receiver and an intent service that work together to handle events from the
|
||||
* {@code MultiplexingGcmListener} while holding a wake lock.
|
||||
@@ -260,85 +245,10 @@ public class MultiplexingGcmListener extends GCMBaseIntentService {
|
||||
/** Logger. */
|
||||
private static final Logger logger = AndroidLogger.forTag("MplexGcmListener");
|
||||
|
||||
- // All onYYY methods work by constructing an appropriate Intent and broadcasting it.
|
||||
-
|
||||
- @Override
|
||||
- protected void onMessage(Context context, Intent intent) {
|
||||
- Intent newIntent = new Intent();
|
||||
- newIntent.putExtra(Intents.EXTRA_OP_MESSAGE, true);
|
||||
- newIntent.putExtras(intent);
|
||||
- rebroadcast(newIntent);
|
||||
- }
|
||||
-
|
||||
- @Override
|
||||
- protected void onRegistered(Context context, String registrationId) {
|
||||
- Intent intent = new Intent();
|
||||
- intent.putExtra(Intents.EXTRA_OP_REGISTERED, true);
|
||||
- intent.putExtra(Intents.EXTRA_DATA_REG_ID, registrationId);
|
||||
- rebroadcast(intent);
|
||||
- }
|
||||
-
|
||||
- @Override
|
||||
- protected void onUnregistered(Context context, String registrationId) {
|
||||
- Intent intent = new Intent();
|
||||
- intent.putExtra(Intents.EXTRA_OP_UNREGISTERED, true);
|
||||
- intent.putExtra(Intents.EXTRA_DATA_REG_ID, registrationId);
|
||||
- rebroadcast(intent);
|
||||
- }
|
||||
-
|
||||
- @Override
|
||||
- protected void onDeletedMessages(Context context, int total) {
|
||||
- Intent intent = new Intent();
|
||||
- intent.putExtra(Intents.EXTRA_OP_DELETED_MESSAGES, true);
|
||||
- intent.putExtra(Intents.EXTRA_DATA_NUM_DELETED_MSGS, total);
|
||||
- rebroadcast(intent);
|
||||
- }
|
||||
-
|
||||
- @Override
|
||||
- protected void onError(Context context, String errorId) {
|
||||
- // This is called for unrecoverable errors, so just log a warning.
|
||||
- logger.warning("GCM error: %s", errorId);
|
||||
- }
|
||||
-
|
||||
- @Override
|
||||
- protected String[] getSenderIds(Context context) {
|
||||
- return readSenderIdsFromManifestOrDie(this);
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Broadcasts {@code intent} with the action set to {@link Intents#ACTION} and the package name
|
||||
- * set to the package name of this service.
|
||||
- */
|
||||
- private void rebroadcast(Intent intent) {
|
||||
- intent.setAction(Intents.ACTION);
|
||||
- intent.setPackage(getPackageName());
|
||||
- sendBroadcast(intent);
|
||||
- }
|
||||
-
|
||||
- /**
|
||||
- * Registers with GCM if not already registered. Also verifies that the device supports GCM
|
||||
- * and that the manifest is correctly configured. Returns the existing registration id, if one
|
||||
- * exists, or the empty string if one does not.
|
||||
- *
|
||||
- * @throws UnsupportedOperationException if the device does not have all GCM dependencies
|
||||
- * @throws IllegalStateException if the manifest is not correctly configured
|
||||
- */
|
||||
- public static String initializeGcm(Context context) {
|
||||
- AndroidChannelPreferences.setGcmChannelType(context, GcmChannelType.DEFAULT);
|
||||
- GCMRegistrar.checkDevice(context);
|
||||
- GCMRegistrar.checkManifest(context);
|
||||
- final String regId = GCMRegistrar.getRegistrationId(context);
|
||||
- if (regId.isEmpty()) {
|
||||
- GCMRegistrar.register(context, readSenderIdsFromManifestOrDie(context));
|
||||
- }
|
||||
- return regId;
|
||||
- }
|
||||
-
|
||||
/**
|
||||
* Returns the GCM sender ids from {@link #GCM_SENDER_IDS_METADATA_KEY} or throws a
|
||||
* {@code RuntimeException} if they are not defined.
|
||||
*/
|
||||
-
|
||||
static String[] readSenderIdsFromManifestOrDie(Context context) {
|
||||
try {
|
||||
ServiceInfo serviceInfo = context.getPackageManager().getServiceInfo(
|
||||
diff --git a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java
|
||||
--- a/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java
|
||||
+++ b/third_party/cacheinvalidation/src/java/com/google/ipc/invalidation/ticl/android2/channel/AndroidNetworkChannel.java
|
||||
@@ -48,16 +48,12 @@ public class AndroidNetworkChannel implements TestableNetworkChannel {
|
||||
Intent intent = ProtocolIntents.newOutboundMessageIntent(outgoingMessage);
|
||||
|
||||
// Select the sender service to use for upstream message.
|
||||
- if (AndroidChannelPreferences.getGcmChannelType(context) == GcmChannelType.GCM_UPSTREAM){
|
||||
- String upstreamServiceClass = new AndroidTiclManifest(context).getGcmUpstreamServiceClass();
|
||||
- if (upstreamServiceClass == null || upstreamServiceClass.isEmpty()) {
|
||||
- logger.warning("GcmUpstreamSenderService class not found.");
|
||||
- return;
|
||||
- }
|
||||
- intent.setClassName(context, upstreamServiceClass);
|
||||
- } else {
|
||||
- intent.setClassName(context, AndroidMessageSenderService.class.getName());
|
||||
- }
|
||||
+ String upstreamServiceClass = new AndroidTiclManifest(context).getGcmUpstreamServiceClass();
|
||||
+ if (upstreamServiceClass == null || upstreamServiceClass.isEmpty()) {
|
||||
+ logger.warning("GcmUpstreamSenderService class not found.");
|
||||
+ return;
|
||||
+ }
|
||||
+ intent.setClassName(context, upstreamServiceClass);
|
||||
try {
|
||||
context.startService(intent);
|
||||
} catch (IllegalStateException exception) {
|
||||
@@ -77,6 +73,6 @@ public class AndroidNetworkChannel implements TestableNetworkChannel {
|
||||
|
||||
@Override
|
||||
public NetworkEndpointId getNetworkIdForTest() {
|
||||
- return AndroidMessageSenderService.getNetworkEndpointId(context, resources.getLogger());
|
||||
+ return null;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
+3
-3
@@ -38,7 +38,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
|
||||
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
|
||||
@@ -3973,10 +3973,6 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
@@ -3990,10 +3990,6 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
FEATURE_VALUE_TYPE(features::kOobeRecommendAppsScreen)},
|
||||
#endif // OS_CHROMEOS
|
||||
|
||||
@@ -63,7 +63,7 @@ diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/andr
|
||||
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
|
||||
@@ -1518,11 +1518,6 @@ const char kPullToRefreshDescription[] =
|
||||
@@ -1531,11 +1531,6 @@ const char kPullToRefreshDescription[] =
|
||||
"Pull-to-refresh gesture in response to vertical overscroll.";
|
||||
const char kPullToRefreshEnabledTouchscreen[] = "Enabled for touchscreen only";
|
||||
|
||||
@@ -78,7 +78,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
|
||||
@@ -931,9 +931,6 @@ extern const char kPullToRefreshName[];
|
||||
@@ -940,9 +940,6 @@ extern const char kPullToRefreshName[];
|
||||
extern const char kPullToRefreshDescription[];
|
||||
extern const char kPullToRefreshEnabledTouchscreen[];
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sun, 28 Oct 2018 14:11:50 +0100
|
||||
Subject: Offer builtin autocomplete for chrome://flags
|
||||
|
||||
---
|
||||
chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
||||
--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
||||
+++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
|
||||
@@ -228,6 +228,8 @@ std::vector<base::string16>
|
||||
ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() {
|
||||
std::vector<base::string16> builtins_to_provide;
|
||||
builtins_to_provide.push_back(
|
||||
+ base::ASCIIToUTF16(chrome::kChromeUIFlagsURL));
|
||||
+ builtins_to_provide.push_back(
|
||||
base::ASCIIToUTF16(chrome::kChromeUIChromeURLsURL));
|
||||
#if !defined(OS_ANDROID)
|
||||
builtins_to_provide.push_back(
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 2 Nov 2018 14:06:17 +0100
|
||||
Subject: Enable history requirement of user gesture
|
||||
|
||||
Set #enable-history-entry-requires-user-gesture to enabled by default
|
||||
---
|
||||
chrome/browser/about_flags.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
@@ -1486,7 +1486,7 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"enable-history-entry-requires-user-gesture",
|
||||
flag_descriptions::kHistoryRequiresUserGestureName,
|
||||
flag_descriptions::kHistoryRequiresUserGestureDescription, kOsAll,
|
||||
- SINGLE_VALUE_TYPE(switches::kHistoryEntryRequiresUserGesture)},
|
||||
+ SINGLE_DISABLE_VALUE_TYPE(switches::kHistoryEntryRequiresUserGesture)},
|
||||
{"disable-pushstate-throttle",
|
||||
flag_descriptions::kDisablePushStateThrottleName,
|
||||
flag_descriptions::kDisablePushStateThrottleDescription, kOsAll,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Fri, 2 Nov 2018 20:01:11 +0100
|
||||
Subject: Remove passwords keyboard accessory option
|
||||
|
||||
Completely rip out #passwords-keyboard-accessory, since the default of
|
||||
disabled does not seem to be working
|
||||
---
|
||||
chrome/browser/about_flags.cc | 5 -----
|
||||
chrome/browser/android/chrome_feature_list.cc | 1 -
|
||||
chrome/browser/flag_descriptions.cc | 6 ------
|
||||
chrome/browser/flag_descriptions.h | 3 ---
|
||||
chrome/browser/password_manager/password_accessory_controller.cc | 8 +-------
|
||||
.../password_manager/core/common/password_manager_features.cc | 4 ----
|
||||
.../password_manager/core/common/password_manager_features.h | 1 -
|
||||
7 files changed, 1 insertion(+), 27 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
|
||||
@@ -2854,11 +2854,6 @@ const FeatureEntry kFeatureEntries[] = {
|
||||
{"password-search", flag_descriptions::kPasswordSearchMobileName,
|
||||
flag_descriptions::kPasswordSearchMobileDescription, kOsAndroid,
|
||||
FEATURE_VALUE_TYPE(password_manager::features::kPasswordSearchMobile)},
|
||||
- {"passwords-keyboard-accessory",
|
||||
- flag_descriptions::kPasswordsKeyboardAccessoryName,
|
||||
- flag_descriptions::kPasswordsKeyboardAccessoryDescription, kOsAndroid,
|
||||
- FEATURE_VALUE_TYPE(
|
||||
- password_manager::features::kPasswordsKeyboardAccessory)},
|
||||
#endif // OS_ANDROID
|
||||
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
|
||||
{"passwords-migrate-linux-to-login-db",
|
||||
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/android/chrome_feature_list.cc
|
||||
@@ -170,7 +170,6 @@ const base::Feature* kFeaturesExposedToJava[] = {
|
||||
&omnibox::kUIExperimentHideSteadyStateUrlSchemeAndSubdomains,
|
||||
&password_manager::features::kPasswordExport,
|
||||
&password_manager::features::kPasswordSearchMobile,
|
||||
- &password_manager::features::kPasswordsKeyboardAccessory,
|
||||
&unified_consent::kUnifiedConsent,
|
||||
&subresource_filter::kSafeBrowsingSubresourceFilter,
|
||||
};
|
||||
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
|
||||
@@ -1480,12 +1480,6 @@ const char kPasswordSearchMobileName[] = "Password search";
|
||||
const char kPasswordSearchMobileDescription[] =
|
||||
"Search functionality in password settings.";
|
||||
|
||||
-const char kPasswordsKeyboardAccessoryName[] =
|
||||
- "Add password-related functions to keyboard accessory";
|
||||
-const char kPasswordsKeyboardAccessoryDescription[] =
|
||||
- "Adds password generation button and toggle for the passwords bottom sheet "
|
||||
- "to the keyboard accessory. Replaces password generation popups.";
|
||||
-
|
||||
const char kPasswordsMigrateLinuxToLoginDBName[] =
|
||||
"Migrate passwords to \"Login Data\"";
|
||||
const char kPasswordsMigrateLinuxToLoginDBDescription[] =
|
||||
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
|
||||
@@ -909,9 +909,6 @@ extern const char kPasswordImportDescription[];
|
||||
extern const char kPasswordSearchMobileName[];
|
||||
extern const char kPasswordSearchMobileDescription[];
|
||||
|
||||
-extern const char kPasswordsKeyboardAccessoryName[];
|
||||
-extern const char kPasswordsKeyboardAccessoryDescription[];
|
||||
-
|
||||
extern const char kPasswordsMigrateLinuxToLoginDBName[];
|
||||
extern const char kPasswordsMigrateLinuxToLoginDBDescription[];
|
||||
|
||||
diff --git a/chrome/browser/password_manager/password_accessory_controller.cc b/chrome/browser/password_manager/password_accessory_controller.cc
|
||||
--- a/chrome/browser/password_manager/password_accessory_controller.cc
|
||||
+++ b/chrome/browser/password_manager/password_accessory_controller.cc
|
||||
@@ -158,13 +158,7 @@ PasswordAccessoryController::~PasswordAccessoryController() = default;
|
||||
bool PasswordAccessoryController::AllowedForWebContents(
|
||||
content::WebContents* web_contents) {
|
||||
DCHECK(web_contents) << "Need valid WebContents to attach controller to!";
|
||||
- if (vr::VrTabHelper::IsInVr(web_contents)) {
|
||||
- return false; // TODO(crbug.com/865749): Reenable if works for VR keyboard.
|
||||
- }
|
||||
- // Either #passwords-keyboards-accessory or #experimental-ui must be enabled.
|
||||
- return base::FeatureList::IsEnabled(
|
||||
- password_manager::features::kPasswordsKeyboardAccessory) ||
|
||||
- base::FeatureList::IsEnabled(features::kExperimentalUi);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
// static
|
||||
diff --git a/components/password_manager/core/common/password_manager_features.cc b/components/password_manager/core/common/password_manager_features.cc
|
||||
--- a/components/password_manager/core/common/password_manager_features.cc
|
||||
+++ b/components/password_manager/core/common/password_manager_features.cc
|
||||
@@ -68,10 +68,6 @@ const base::Feature kPasswordImport = {"PasswordImport",
|
||||
const base::Feature kPasswordSearchMobile = {"PasswordSearchMobile",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
-// Adds password-related features to the keyboard accessory on mobile devices.
|
||||
-const base::Feature kPasswordsKeyboardAccessory = {
|
||||
- "PasswordsKeyboardAccessory", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
-
|
||||
// Enables the experiment for the password manager to only fill on account
|
||||
// selection, rather than autofilling on page load, with highlighting of fields.
|
||||
const base::Feature kFillOnAccountSelect = {"fill-on-account-select",
|
||||
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h
|
||||
--- a/components/password_manager/core/common/password_manager_features.h
|
||||
+++ b/components/password_manager/core/common/password_manager_features.h
|
||||
@@ -32,7 +32,6 @@ extern const base::Feature kNewPasswordFormParsingForSaving;
|
||||
extern const base::Feature kPasswordExport;
|
||||
extern const base::Feature kPasswordImport;
|
||||
extern const base::Feature kPasswordSearchMobile;
|
||||
-extern const base::Feature kPasswordsKeyboardAccessory;
|
||||
extern const base::Feature kProtectSyncCredential;
|
||||
extern const base::Feature kProtectSyncCredentialOnReauth;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Mon, 5 Nov 2018 09:39:50 +0100
|
||||
Subject: Enable TLS 1.3 (final) by default
|
||||
|
||||
---
|
||||
.../browser/ssl/ssl_config_service_manager_pref.cc | 21 ++-------------------
|
||||
1 file changed, 2 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/ssl/ssl_config_service_manager_pref.cc b/chrome/browser/ssl/ssl_config_service_manager_pref.cc
|
||||
--- a/chrome/browser/ssl/ssl_config_service_manager_pref.cc
|
||||
+++ b/chrome/browser/ssl/ssl_config_service_manager_pref.cc
|
||||
@@ -12,7 +12,6 @@
|
||||
#include "base/bind.h"
|
||||
#include "base/location.h"
|
||||
#include "base/macros.h"
|
||||
-#include "base/metrics/field_trial_params.h"
|
||||
#include "base/strings/string_util.h"
|
||||
#include "base/values.h"
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
@@ -115,8 +114,6 @@ std::vector<std::string> CanonicalizeHostnamePatterns(
|
||||
return out;
|
||||
}
|
||||
|
||||
-const char kTLS13VariantExperimentName[] = "TLS13Variant";
|
||||
-
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// SSLConfigServiceManagerPref
|
||||
|
||||
@@ -173,22 +170,8 @@ SSLConfigServiceManagerPref::SSLConfigServiceManagerPref(
|
||||
PrefService* local_state) {
|
||||
DCHECK(local_state);
|
||||
|
||||
- const std::string tls13_variant =
|
||||
- base::GetFieldTrialParamValue(kTLS13VariantExperimentName, "variant");
|
||||
- const char* tls13_value = nullptr;
|
||||
- const char* version_value = nullptr;
|
||||
- if (tls13_variant == "disabled") {
|
||||
- tls13_value = switches::kTLS13VariantDisabled;
|
||||
- } else if (tls13_variant == "draft23") {
|
||||
- tls13_value = switches::kTLS13VariantDraft23;
|
||||
- version_value = switches::kSSLVersionTLSv13;
|
||||
- } else if (tls13_variant == "draft28") {
|
||||
- tls13_value = switches::kTLS13VariantDraft28;
|
||||
- version_value = switches::kSSLVersionTLSv13;
|
||||
- } else if (tls13_variant == "final") {
|
||||
- tls13_value = switches::kTLS13VariantFinal;
|
||||
- version_value = switches::kSSLVersionTLSv13;
|
||||
- }
|
||||
+ const char* tls13_value = switches::kTLS13VariantFinal;
|
||||
+ const char* version_value = switches::kSSLVersionTLSv13;
|
||||
|
||||
if (tls13_value) {
|
||||
local_state->SetDefaultPrefValue(prefs::kTLS13Variant,
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 10 Nov 2018 19:47:39 +0100
|
||||
Subject: Do not grant notifications to default search engine
|
||||
|
||||
---
|
||||
chrome/common/chrome_features.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
|
||||
--- a/chrome/common/chrome_features.cc
|
||||
+++ b/chrome/common/chrome_features.cc
|
||||
@@ -301,7 +301,7 @@ const base::Feature kGeoLanguage{"GeoLanguage",
|
||||
|
||||
#if defined(OS_ANDROID)
|
||||
const base::Feature kGrantNotificationsToDSE{"GrantNotificationsToDSE",
|
||||
- base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
#endif // defined(OS_ANDROID)
|
||||
|
||||
#if defined (OS_CHROMEOS)
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 10 Nov 2018 16:09:26 +0100
|
||||
Subject: Remove contacts picker permission
|
||||
|
||||
---
|
||||
chrome/android/java/AndroidManifest.xml | 1 -
|
||||
ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java | 4 +---
|
||||
2 files changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
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
|
||||
@@ -35,7 +35,6 @@ by a child template that "extends" this file.
|
||||
{% endif %}
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
- <uses-permission-sdk-23 android:name="android.permission.READ_CONTACTS"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.REORDER_TASKS"/>
|
||||
<uses-permission-sdk-23 android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
|
||||
|
||||
diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
--- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
+++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
||||
@@ -324,9 +324,7 @@ public class SelectFileDialog
|
||||
* 3.) There is a valid Android Activity associated with the file request.
|
||||
*/
|
||||
private boolean shouldUseContactsPicker() {
|
||||
- if (mFileTypes.size() != 1) return false;
|
||||
- if (!mFileTypes.get(0).equals("text/json+contacts")) return false;
|
||||
- return UiUtils.shouldShowContactsPicker() && mWindowAndroid.getActivity().get() != null;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
/**
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Sat, 10 Nov 2018 17:20:21 +0100
|
||||
Subject: Disable promos displayed in bookmarks manager
|
||||
|
||||
Remove personalized signin promo view from
|
||||
bookmarks, never reach signin thresholds.
|
||||
---
|
||||
.../personalized_signin_promo_view_bookmarks.xml | 30 ----------------------
|
||||
.../browser/bookmarks/BookmarkItemsAdapter.java | 23 ++---------------
|
||||
.../browser/signin/SigninPromoController.java | 19 ++------------
|
||||
chrome/android/java_sources.gni | 1 -
|
||||
4 files changed, 4 insertions(+), 69 deletions(-)
|
||||
delete mode 100644 chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
|
||||
|
||||
diff --git a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml b/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
|
||||
deleted file mode 100644
|
||||
--- a/chrome/android/java/res/layout/personalized_signin_promo_view_bookmarks.xml
|
||||
+++ /dev/null
|
||||
@@ -1,30 +0,0 @@
|
||||
-<?xml version="1.0" encoding="utf-8"?>
|
||||
-<!-- Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
- Use of this source code is governed by a BSD-style license that can be
|
||||
- found in the LICENSE file. -->
|
||||
-
|
||||
-<org.chromium.chrome.browser.signin.PersonalizedSigninPromoView
|
||||
- xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
- android:id="@+id/signin_promo_view_container"
|
||||
- android:layout_width="match_parent"
|
||||
- android:layout_height="wrap_content"
|
||||
- android:layout_margin="16dp"
|
||||
- android:background="@drawable/content_card_modern_background"
|
||||
- android:gravity="center_horizontal"
|
||||
- android:orientation="vertical"
|
||||
- android:paddingBottom="12dp"
|
||||
- android:paddingTop="14dp">
|
||||
-
|
||||
- <FrameLayout
|
||||
- android:layout_width="match_parent"
|
||||
- android:layout_height="wrap_content"
|
||||
- android:layout_marginBottom="12dp"
|
||||
- android:layout_marginEnd="12dp"
|
||||
- android:layout_marginStart="12dp">
|
||||
-
|
||||
- <include layout="@layout/personalized_signin_promo_view_header"/>
|
||||
- </FrameLayout>
|
||||
-
|
||||
- <include layout="@layout/personalized_signin_promo_view_body"/>
|
||||
-
|
||||
-</org.chromium.chrome.browser.signin.PersonalizedSigninPromoView>
|
||||
\ No newline at end of file
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemsAdapter.java
|
||||
@@ -57,7 +57,6 @@ class BookmarkItemsAdapter
|
||||
|
||||
private BookmarkDelegate mDelegate;
|
||||
private Context mContext;
|
||||
- private BookmarkPromoHeader mPromoHeaderManager;
|
||||
private String mSearchText;
|
||||
private BookmarkId mCurrentFolder;
|
||||
|
||||
@@ -211,9 +210,9 @@ class BookmarkItemsAdapter
|
||||
|
||||
switch (viewType) {
|
||||
case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
- return mPromoHeaderManager.createPersonalizedSigninPromoHolder(parent);
|
||||
+ return null;
|
||||
case ViewType.SYNC_PROMO:
|
||||
- return mPromoHeaderManager.createSyncPromoHolder(parent);
|
||||
+ return null;
|
||||
case ViewType.FOLDER:
|
||||
BookmarkFolderRow folder = (BookmarkFolderRow) LayoutInflater.from(
|
||||
parent.getContext()).inflate(R.layout.bookmark_folder_row, parent, false);
|
||||
@@ -234,8 +233,6 @@ class BookmarkItemsAdapter
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
switch (holder.getItemViewType()) {
|
||||
case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
- PersonalizedSigninPromoView view = (PersonalizedSigninPromoView) holder.itemView;
|
||||
- mPromoHeaderManager.setupPersonalizedSigninPromo(view);
|
||||
break;
|
||||
case ViewType.SYNC_PROMO:
|
||||
break;
|
||||
@@ -254,7 +251,6 @@ class BookmarkItemsAdapter
|
||||
public void onViewRecycled(ViewHolder holder) {
|
||||
switch (holder.getItemViewType()) {
|
||||
case ViewType.PERSONALIZED_SIGNIN_PROMO:
|
||||
- mPromoHeaderManager.detachPersonalizePromoView();
|
||||
break;
|
||||
default:
|
||||
// Other view holders don't have special recycling code.
|
||||
@@ -289,7 +285,6 @@ class BookmarkItemsAdapter
|
||||
}
|
||||
};
|
||||
|
||||
- mPromoHeaderManager = new BookmarkPromoHeader(mContext, promoHeaderChangeAction);
|
||||
populateTopLevelFoldersList();
|
||||
}
|
||||
|
||||
@@ -299,7 +294,6 @@ class BookmarkItemsAdapter
|
||||
mDelegate.removeUIObserver(this);
|
||||
mDelegate.getModel().removeObserver(mBookmarkModelObserver);
|
||||
mDelegate = null;
|
||||
- mPromoHeaderManager.destroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -366,19 +360,6 @@ class BookmarkItemsAdapter
|
||||
if (currentUIState == BookmarkUIState.STATE_SEARCHING) return;
|
||||
|
||||
assert currentUIState == BookmarkUIState.STATE_FOLDER : "Unexpected UI state";
|
||||
-
|
||||
- switch (mPromoHeaderManager.getPromoState()) {
|
||||
- case BookmarkPromoHeader.PromoState.PROMO_NONE:
|
||||
- return;
|
||||
- case BookmarkPromoHeader.PromoState.PROMO_SIGNIN_PERSONALIZED:
|
||||
- mPromoHeaderSection.add(ViewType.PERSONALIZED_SIGNIN_PROMO);
|
||||
- return;
|
||||
- case BookmarkPromoHeader.PromoState.PROMO_SYNC:
|
||||
- mPromoHeaderSection.add(ViewType.SYNC_PROMO);
|
||||
- return;
|
||||
- default:
|
||||
- assert false : "Unexpected value for promo state!";
|
||||
- }
|
||||
}
|
||||
|
||||
private void populateTopLevelFoldersList() {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninPromoController.java
|
||||
@@ -77,23 +77,8 @@ public class SigninPromoController {
|
||||
*/
|
||||
public static boolean hasNotReachedImpressionLimit(@AccessPoint int accessPoint) {
|
||||
SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences();
|
||||
- switch (accessPoint) {
|
||||
- case SigninAccessPoint.BOOKMARK_MANAGER:
|
||||
- return sharedPreferences.getInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_BOOKMARKS, 0)
|
||||
- < MAX_IMPRESSIONS_BOOKMARKS;
|
||||
- case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS:
|
||||
- // There is no impression limit for NTP content suggestions.
|
||||
- return true;
|
||||
- case SigninAccessPoint.RECENT_TABS:
|
||||
- // There is no impression limit for Recent Tabs.
|
||||
- return true;
|
||||
- case SigninAccessPoint.SETTINGS:
|
||||
- return sharedPreferences.getInt(SIGNIN_PROMO_IMPRESSIONS_COUNT_SETTINGS, 0)
|
||||
- < MAX_IMPRESSIONS_SETTINGS;
|
||||
- default:
|
||||
- assert false : "Unexpected value for access point: " + accessPoint;
|
||||
- return false;
|
||||
- }
|
||||
+ // never show anything
|
||||
+ return true;
|
||||
}
|
||||
|
||||
/**
|
||||
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
|
||||
@@ -137,7 +137,6 @@ chrome_java_sources = [
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkModel.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java",
|
||||
- "java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkRow.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIObserver.java",
|
||||
"java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java",
|
||||
--
|
||||
2.11.0
|
||||
|
||||
Reference in New Issue
Block a user