Compare commits

...
Author SHA1 Message Date
csagan5 32978e4658 Release 69.0.3497.73 2018-09-05 00:24:29 +02:00
csagan5 f109246e47 Remove WIP patches 2018-09-01 12:12:06 +02:00
csagan5 b1bc96bbd9 Release 68.0.3440.126 2018-08-29 14:13:04 +02:00
csagan5 e3176b1868 Adjust text for maximum connections per host patch 2018-08-26 10:04:45 +02:00
csagan5 22dae5bff8 Mention new privacy features 2018-08-26 01:01:16 +02:00
85 changed files with 1553 additions and 2517 deletions
+10
View File
@@ -1,3 +1,13 @@
# 69.0.3497.73
* enabled WebRTC
* drop clear HTTP cache patch
# 68.0.3440.126
* add option to disallow custom tab intents (fixes https://github.com/bromite/bromite/issues/117)
* add option to keep local data until browser exit (fixes https://github.com/bromite/bromite/issues/56)
* remember preference for tabs persistence option
* extend anti-AMP to all search results
# 68.0.3440.121
* add option to not persist tabs across sessions (fixes https://github.com/bromite/bromite/issues/106)
* always incognito mode (fixes https://github.com/bromite/bromite/issues/18)
+2 -1
View File
@@ -70,7 +70,8 @@ No, it is not built-in.
* remove click-tracking and AMP from search results
* DNS-over-HTTPS support via Google/CloudFlare servers
* [StartPage](https://startpage.com/), [DuckDuckGo](https://duckduckgo.com/) and [Qwant](https://www.qwant.com/) search engines
* chrome flag to hide NTP tiles and to disable custom intents
* chrome flags to hide NTP tiles, disable custom intents and clear session on exit
* always-incognito mode
* privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects
* webRTC, canvas, audio and other anti-fingerprinting mitigations
+325 -48
View File
File diff suppressed because it is too large Load Diff
@@ -10,7 +10,7 @@ author: Chad Miller <chad.miller@canonical.com>
diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc
--- a/components/content_settings/core/browser/cookie_settings.cc
+++ b/components/content_settings/core/browser/cookie_settings.cc
@@ -111,7 +111,7 @@ void CookieSettings::GetCookieSettings(
@@ -50,7 +50,7 @@ void CookieSettings::GetCookieSettings(
void CookieSettings::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
@@ -10,7 +10,7 @@ This avoids trk:263 from triggering.
diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gcm_driver/gcm_channel_status_request.cc
--- a/components/gcm_driver/gcm_channel_status_request.cc
+++ b/components/gcm_driver/gcm_channel_status_request.cc
@@ -23,8 +23,10 @@ namespace gcm {
@@ -24,8 +24,10 @@ namespace gcm {
namespace {
@@ -21,24 +21,24 @@ diff --git a/components/gcm_driver/gcm_channel_status_request.cc b/components/gc
const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes.
const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes.
@@ -57,6 +59,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
}
@@ -58,6 +60,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
void GCMChannelStatusRequest::Start() {
// url_loader_factory_ can be null for tests.
+#if 0
DCHECK(!url_fetcher_);
if (!url_loader_factory_)
return;
GURL request_url(channel_status_request_url_);
@@ -112,6 +115,9 @@ void GCMChannelStatusRequest::Start() {
url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES);
url_fetcher_->Start();
@@ -113,6 +116,9 @@ void GCMChannelStatusRequest::Start() {
net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES;
resource_request->method = "POST";
resource_request->headers.SetHeader(net::HttpRequestHeaders::kUserAgent,
+#endif
+ // Simulate an empty response and disable GCM.
+ callback_.Run(false, false, 0);
}
void GCMChannelStatusRequest::OnURLFetchComplete(
user_agent_);
// TODO(https://crbug.com/808498): Re-add data use measurement once
// SimpleURLLoader supports it.
--
2.7.4
@@ -36,10 +36,10 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
- pings_enabled_(config_policy.PingsEnabled()),
- require_encryption_(require_encryption),
+ pings_enabled_(false),
url_source_override_(config_policy.UrlSourceOverride()) {
url_source_override_(config_policy.UrlSourceOverride()),
initial_delay_(config_policy.InitialDelay()) {
if (config_policy.TestRequest())
extra_info_ += "testrequest=\"1\"";
@@ -70,8 +69,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
@@ -73,8 +72,6 @@ std::vector<GURL> ConfiguratorImpl::UpdateUrl() const {
}
std::vector<GURL> urls{GURL(kUpdaterDefaultUrl), GURL(kUpdaterFallbackUrl)};
@@ -51,14 +51,14 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp
diff --git a/components/component_updater/configurator_impl.h b/components/component_updater/configurator_impl.h
--- a/components/component_updater/configurator_impl.h
+++ b/components/component_updater/configurator_impl.h
@@ -91,7 +91,6 @@ class ConfiguratorImpl {
bool deltas_enabled_;
bool fast_update_;
bool pings_enabled_;
- bool require_encryption_;
GURL url_source_override_;
@@ -95,7 +95,6 @@ class ConfiguratorImpl {
const bool deltas_enabled_;
const bool fast_update_;
const bool pings_enabled_;
- const bool require_encryption_;
const GURL url_source_override_;
const int initial_delay_;
DISALLOW_COPY_AND_ASSIGN(ConfiguratorImpl);
--
2.7.4
@@ -10,7 +10,7 @@ Out with all those tracking cookies!
diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc
--- a/components/content_settings/core/browser/content_settings_registry.cc
+++ b/components/content_settings/core/browser/content_settings_registry.cc
@@ -117,7 +117,7 @@ void ContentSettingsRegistry::Init() {
@@ -119,7 +119,7 @@ void ContentSettingsRegistry::Init() {
// WARNING: The string names of the permissions passed in below are used to
// generate preference names and should never be changed!
@@ -22,7 +22,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/33
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
--- a/chrome/browser/signin/signin_promo.cc
+++ b/chrome/browser/signin/signin_promo.cc
@@ -130,6 +130,7 @@ namespace signin {
@@ -140,6 +140,7 @@ const char kSigninPromoLandingURLSuccessPage[] = "success.html";
bool ShouldShowPromoAtStartup(Profile* profile, bool is_new_profile) {
DCHECK(profile);
+11 -24
View File
@@ -5,7 +5,6 @@ Subject: Modify default preferences
---
chrome/browser/background/background_mode_manager.cc | 2 +-
chrome/browser/chrome_content_browser_client.cc | 2 +-
chrome/browser/io_thread.cc | 2 +-
chrome/browser/net/prediction_options.cc | 2 +-
chrome/browser/net/prediction_options.h | 2 +-
chrome/browser/profiles/profile.cc | 2 +-
@@ -19,12 +18,12 @@ Subject: Modify default preferences
components/bookmarks/browser/bookmark_utils.cc | 4 ++--
components/safe_browsing/common/safe_browsing_prefs.cc | 4 ++--
extensions/common/extension.cc | 8 --------
16 files changed, 18 insertions(+), 30 deletions(-)
15 files changed, 17 insertions(+), 29 deletions(-)
diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/browser/background/background_mode_manager.cc
--- a/chrome/browser/background/background_mode_manager.cc
+++ b/chrome/browser/background/background_mode_manager.cc
@@ -362,7 +362,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
@@ -351,7 +351,7 @@ void BackgroundModeManager::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(prefs::kChromeCreatedLoginItem, false);
registry->RegisterBooleanPref(prefs::kMigratedLoginItemPref, false);
#endif
@@ -36,7 +35,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1015,7 +1015,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
@@ -1053,7 +1053,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs(
void ChromeContentBrowserClient::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false);
@@ -45,18 +44,6 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch
registry->RegisterListPref(prefs::kEnableDeprecatedWebPlatformFeatures);
// Register user prefs for mapping SitePerProcess and IsolateOrigins in
// user policy in addition to the same named ones in Local State (which are
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -569,7 +569,7 @@ void IOThread::RegisterPrefs(PrefRegistrySimple* registry) {
std::string());
registry->RegisterBooleanPref(prefs::kEnableReferrers, true);
data_reduction_proxy::RegisterPrefs(registry);
- registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, true);
+ registry->RegisterBooleanPref(prefs::kBuiltInDnsClientEnabled, false);
registry->RegisterListPref(prefs::kDnsOverHttpsServers);
registry->RegisterListPref(prefs::kDnsOverHttpsServerMethods);
#if defined(OS_POSIX)
diff --git a/chrome/browser/net/prediction_options.cc b/chrome/browser/net/prediction_options.cc
--- a/chrome/browser/net/prediction_options.cc
+++ b/chrome/browser/net/prediction_options.cc
@@ -84,7 +71,7 @@ diff --git a/chrome/browser/net/prediction_options.h b/chrome/browser/net/predic
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -137,7 +137,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
@@ -138,7 +138,7 @@ const char Profile::kProfileKey[] = "__PROFILE__";
void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kSearchSuggestEnabled,
@@ -108,7 +95,7 @@ diff --git a/chrome/browser/resources/settings/reset_page/reset_profile_dialog.h
diff --git a/chrome/browser/signin/signin_promo.cc b/chrome/browser/signin/signin_promo.cc
--- a/chrome/browser/signin/signin_promo.cc
+++ b/chrome/browser/signin/signin_promo.cc
@@ -384,8 +384,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
@@ -385,8 +385,8 @@ void ForceWebBasedSigninFlowForTesting(bool force) {
void RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterIntegerPref(prefs::kSignInPromoStartupCount, 0);
@@ -177,19 +164,19 @@ diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/c
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -210,7 +210,7 @@ void AutofillManager::RegisterProfilePrefs(
@@ -189,7 +189,7 @@ void AutofillManager::RegisterProfilePrefs(
registry->RegisterIntegerPref(
prefs::kAutofillCreditCardSigninPromoImpressionCount, 0);
registry->RegisterBooleanPref(
- prefs::kAutofillEnabled, true,
+ prefs::kAutofillEnabled, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterIntegerPref(
prefs::kAutofillLastVersionDeduped, 0,
registry->RegisterBooleanPref(
prefs::kAutofillProfileEnabled, true,
diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmarks/browser/bookmark_utils.cc
--- a/components/bookmarks/browser/bookmark_utils.cc
+++ b/components/bookmarks/browser/bookmark_utils.cc
@@ -442,12 +442,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
@@ -443,12 +443,12 @@ void GetBookmarksMatchingProperties(BookmarkModel* model,
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kShowBookmarkBar,
@@ -207,7 +194,7 @@ diff --git a/components/bookmarks/browser/bookmark_utils.cc b/components/bookmar
diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components/safe_browsing/common/safe_browsing_prefs.cc
--- a/components/safe_browsing/common/safe_browsing_prefs.cc
+++ b/components/safe_browsing/common/safe_browsing_prefs.cc
@@ -370,9 +370,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
@@ -278,9 +278,9 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry->RegisterBooleanPref(
prefs::kSafeBrowsingSawInterstitialScoutReporting, false);
registry->RegisterBooleanPref(
@@ -222,7 +209,7 @@ diff --git a/components/safe_browsing/common/safe_browsing_prefs.cc b/components
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -365,14 +365,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
@@ -366,14 +366,6 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
if (is_theme())
return false;
@@ -9,7 +9,7 @@ Subject: Do not store passwords by default
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -228,10 +228,10 @@ PasswordFormManager* FindMatchedManager(
@@ -278,10 +278,10 @@ bool ShouldPromptUserToSavePassword(const PasswordFormManager& manager) {
void PasswordManager::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
@@ -10,7 +10,7 @@ diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/featu
--- a/components/ntp_snippets/features.cc
+++ b/components/ntp_snippets/features.cc
@@ -38,13 +38,13 @@ const base::Feature kArticleSuggestionsExpandableHeader{
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_DISABLED_BY_DEFAULT};
"NTPArticleSuggestionsExpandableHeader", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kArticleSuggestionsFeature{
- "NTPArticleSuggestions", base::FEATURE_ENABLED_BY_DEFAULT};
@@ -3,10 +3,10 @@ Date: Sun, 26 Nov 2017 22:51:43 +0100
Subject: Skip the first run and metrics
---
.../chrome/browser/firstrun/FirstRunStatus.java | 8 ++++----
.../chrome/browser/firstrun/FirstRunUtils.java | 16 ++++++----------
.../browser/firstrun/ToSAndUMAFirstRunFragment.java | 18 ++++++------------
3 files changed, 16 insertions(+), 26 deletions(-)
.../chromium/chrome/browser/firstrun/FirstRunStatus.java | 8 ++++----
.../chromium/chrome/browser/firstrun/FirstRunUtils.java | 16 ++++++----------
.../browser/firstrun/ToSAndUMAFirstRunFragment.java | 6 ++++--
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunStatus.java
@@ -56,30 +56,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstR
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
@@ -74,20 +74,14 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
@@ -74,7 +74,7 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
}
});
- if (ChromeVersionInfo.isOfficialBuild()) {
- int paddingStart = getResources().getDimensionPixelSize(
- R.dimen.fre_tos_checkbox_padding);
- ApiCompatibilityUtils.setPaddingRelative(mSendReportCheckBox,
- ApiCompatibilityUtils.getPaddingStart(mSendReportCheckBox) + paddingStart,
- mSendReportCheckBox.getPaddingTop(),
- ApiCompatibilityUtils.getPaddingEnd(mSendReportCheckBox),
- mSendReportCheckBox.getPaddingBottom());
-
- mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
- } else {
- mSendReportCheckBox.setVisibility(View.GONE);
+ int paddingStart = getResources().getDimensionPixelSize(R.dimen.fre_tos_checkbox_padding);
+ if (paddingStart != 0) {
+ mSendReportCheckBox.setChecked(false);
}
+/* if (ChromeVersionInfo.isOfficialBuild()) {
int paddingStart = getResources().getDimensionPixelSize(
R.dimen.fre_tos_checkbox_padding);
ViewCompat.setPaddingRelative(mSendReportCheckBox,
@@ -86,8 +86,10 @@ public class ToSAndUMAFirstRunFragment extends Fragment implements FirstRunFragm
mSendReportCheckBox.setChecked(FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING);
} else {
mSendReportCheckBox.setVisibility(View.GONE);
- }
+ }*/
+ mSendReportCheckBox.setChecked(false);
+ mSendReportCheckBox.setVisibility(View.GONE);
+
mTosAndPrivacy.setMovementMethod(LinkMovementMethod.getInstance());
NoUnderlineClickableSpan clickableTermsSpan = new NoUnderlineClickableSpan((view1) -> {
@@ -4,36 +4,36 @@ Subject: Disable signin and data saver preferences
Never show the data saver promo snackbar
---
chrome/android/java/res/xml/main_preferences.xml | 8 +++---
chrome/android/java/res/xml/main_preferences.xml | 8 ++---
.../chromium/chrome/browser/ChromeActivity.java | 6 ++--
.../browser/preferences/MainPreferences.java | 32 ++++++++++++----------
3 files changed, 26 insertions(+), 20 deletions(-)
.../browser/preferences/MainPreferences.java | 42 ++++++++++++----------
3 files changed, 31 insertions(+), 25 deletions(-)
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -6,10 +6,10 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:orderingFromXml="false">
@@ -10,10 +10,10 @@
android:key="account_section"
android:order="0"
android:title="@string/prefs_section_account"/>
- <org.chromium.chrome.browser.preferences.SignInPreference
+ <!-- org.chromium.chrome.browser.preferences.SignInPreference
android:key="sign_in"
android:order="0"
android:order="1"
- android:title="@string/sign_in_to_chrome"/>
+ android:title="@string/sign_in_to_chrome"/-->
<PreferenceCategory
android:key="basics_section"
@@ -70,11 +70,11 @@
<org.chromium.chrome.browser.preferences.ChromeBasePreference
android:fragment="org.chromium.chrome.browser.preferences.SyncAndServicesPreferences"
android:key="sync_and_services"
@@ -79,11 +79,11 @@
android:key="languages"
android:order="12"
android:order="14"
android:title="@string/prefs_languages"/>
- <org.chromium.chrome.browser.preferences.ChromeBasePreference
+ <!-- org.chromium.chrome.browser.preferences.ChromeBasePreference
android:fragment="org.chromium.chrome.browser.preferences.datareduction.DataReductionPreferences"
android:key="data_reduction"
android:order="13"
android:order="15"
- android:title="@string/data_reduction_title"/>
+ android:title="@string/data_reduction_title"/-->
<org.chromium.chrome.browser.preferences.ChromeBasePreference
@@ -42,33 +42,33 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -115,7 +115,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
@@ -114,7 +114,7 @@ import org.chromium.chrome.browser.printing.TabPrinter;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.share.ShareMenuActionHandler;
import org.chromium.chrome.browser.snackbar.BottomContainer;
-import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
+//import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController;
import org.chromium.chrome.browser.snackbar.DataUseSnackbarController;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.snackbar.SnackbarManager.SnackbarManageable;
@@ -258,7 +258,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
import org.chromium.chrome.browser.sync.ProfileSyncService;
@@ -252,7 +252,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
protected ReaderModeManager mReaderModeManager;
private SnackbarManager mSnackbarManager;
private ModalDialogManager mModalDialogManager;
private DataUseSnackbarController mDataUseSnackbarController;
- private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
+ //private DataReductionPromoSnackbarController mDataReductionPromoSnackbarController;
private AppMenuPropertiesDelegate mAppMenuPropertiesDelegate;
private AppMenuHandler mAppMenuHandler;
private ToolbarManager mToolbarManager;
@@ -577,6 +577,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
mDataUseSnackbarController.showDataUseTrackingEndedBar();
}
@@ -600,6 +600,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
mTabModelSelectorTabObserver = new TabModelSelectorTabObserver(mTabModelSelector) {
@Override
public void didFirstVisuallyNonEmptyPaint(Tab tab) {
+/*
// Only alert about data savings once the first paint has happened. It doesn't make
// sense to show a snackbar about savings when nothing has been displayed yet.
if (DataReductionProxySettings.getInstance().isSnackbarPromoAllowed(tab.getUrl())) {
@@ -589,6 +590,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
// Only alert about data savings once the first paint has happened. It
// doesn't make sense to show a snackbar about savings when nothing has been
// displayed yet.
@@ -613,6 +614,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
DataReductionProxySettings.getInstance()
.getTotalHttpContentLengthSaved());
}
@@ -91,19 +91,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
import org.chromium.chrome.browser.search_engines.TemplateUrl;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.signin.SigninManager;
@@ -35,20 +35,20 @@ import java.util.Map;
*/
@@ -35,21 +35,21 @@ import java.util.Map;
public class MainPreferences extends PreferenceFragment
implements SigninManager.SignInStateObserver, TemplateUrlService.LoadListener {
public static final String PREF_ACCOUNT_SECTION = "account_section";
- public static final String PREF_SIGN_IN = "sign_in";
+ //public static final String PREF_SIGN_IN = "sign_in";
+// public static final String PREF_SIGN_IN = "sign_in";
public static final String PREF_SYNC_AND_SERVICES = "sync_and_services";
public static final String PREF_AUTOFILL_SETTINGS = "autofill_settings";
public static final String PREF_SEARCH_ENGINE = "search_engine";
public static final String PREF_SAVED_PASSWORDS = "saved_passwords";
public static final String PREF_CONTEXTUAL_SUGGESTIONS = "contextual_suggestions";
public static final String PREF_HOMEPAGE = "homepage";
- public static final String PREF_DATA_REDUCTION = "data_reduction";
+ //public static final String PREF_DATA_REDUCTION = "data_reduction";
+// public static final String PREF_DATA_REDUCTION = "data_reduction";
public static final String PREF_NOTIFICATIONS = "notifications";
public static final String PREF_LANGUAGES = "languages";
public static final String PREF_DOWNLOADS = "downloads";
@@ -111,11 +112,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
private final ManagedPreferenceDelegate mManagedPreferenceDelegate;
private final Map<String, Preference> mAllPreferences = new HashMap<>();
- private SignInPreference mSignInPreference;
+ //private SignInPreference mSignInPreference;
+// private SignInPreference mSignInPreference;
public MainPreferences() {
setHasOptionsMenu(true);
@@ -64,25 +64,29 @@ public class MainPreferences extends PreferenceFragment
@@ -65,25 +65,29 @@ public class MainPreferences extends PreferenceFragment
@Override
public void onDestroy() {
super.onDestroy();
@@ -146,7 +147,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
}
@Override
@@ -98,7 +102,7 @@ public class MainPreferences extends PreferenceFragment
@@ -96,9 +100,9 @@ public class MainPreferences extends PreferenceFragment
PreferenceUtils.addPreferencesFromResource(this, R.xml.main_preferences);
cachePreferences();
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
+/* if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNIFIED_CONSENT)) {
mSignInPreference.setOnStateChangedCallback(this::onSignInPreferenceStateChanged);
- } else {
+ } else */{
getPreferenceScreen().removePreference(findPreference(PREF_ACCOUNT_SECTION));
getPreferenceScreen().removePreference(findPreference(PREF_SYNC_AND_SERVICES));
}
@@ -106,7 +110,7 @@ public class MainPreferences extends PreferenceFragment
setManagedPreferenceDelegateForPreference(PREF_SEARCH_ENGINE);
setManagedPreferenceDelegateForPreference(PREF_AUTOFILL_SETTINGS);
setManagedPreferenceDelegateForPreference(PREF_SAVED_PASSWORDS);
@@ -155,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// If we are on Android O+ the Notifications preference should lead to the Android
@@ -154,7 +158,7 @@ public class MainPreferences extends PreferenceFragment
@@ -162,7 +166,7 @@ public class MainPreferences extends PreferenceFragment
Preference preference = getPreferenceScreen().getPreference(index);
mAllPreferences.put(preference.getKey(), preference);
}
@@ -164,7 +177,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
}
private void setManagedPreferenceDelegateForPreference(String key) {
@@ -163,12 +167,6 @@ public class MainPreferences extends PreferenceFragment
@@ -171,12 +175,6 @@ public class MainPreferences extends PreferenceFragment
}
private void updatePreferences() {
@@ -177,7 +190,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
updateSearchEnginePreference();
if (HomepageManager.shouldShowHomepageSetting()) {
@@ -190,9 +188,11 @@ public class MainPreferences extends PreferenceFragment
@@ -197,9 +195,11 @@ public class MainPreferences extends PreferenceFragment
removePreferenceIfPresent(PREF_CONTEXTUAL_SUGGESTIONS);
}
@@ -189,7 +202,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
}
private Preference addPreferenceIfAbsent(String key) {
@@ -263,9 +263,11 @@ public class MainPreferences extends PreferenceFragment
@@ -250,11 +250,11 @@ public class MainPreferences extends PreferenceFragment
private void onSignInPreferenceStateChanged() {
// Remove "Account" section header if the personalized sign-in promo is shown.
- if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
+// if (mSignInPreference.getState() == SignInPreference.State.PERSONALIZED_PROMO) {
removePreferenceIfPresent(PREF_ACCOUNT_SECTION);
- } else {
+/* } else {
addPreferenceIfAbsent(PREF_ACCOUNT_SECTION);
- }
+ }*/
}
// TemplateUrlService.LoadListener implementation.
@@ -279,9 +279,11 @@ public class MainPreferences extends PreferenceFragment
if (PREF_SAVED_PASSWORDS.equals(preference.getKey())) {
return PrefServiceBridge.getInstance().isRememberPasswordsManaged();
}
@@ -201,7 +229,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/Mai
if (PREF_SEARCH_ENGINE.equals(preference.getKey())) {
return TemplateUrlService.getInstance().isDefaultSearchManaged();
}
@@ -283,11 +285,13 @@ public class MainPreferences extends PreferenceFragment
@@ -299,11 +301,13 @@ public class MainPreferences extends PreferenceFragment
return prefs.isRememberPasswordsManaged()
&& !prefs.isRememberPasswordsEnabled();
}
@@ -9,7 +9,7 @@ Subject: Disable signin/data reduction promos
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -554,7 +554,7 @@ public class ChromeTabbedActivity
@@ -575,7 +575,7 @@ public class ChromeTabbedActivity
// TODO(tedchoc): Unify promo dialog logic as the search engine promo dialog checks
// might not have completed at this point and we could show multiple
// promos.
@@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
// Promo dialogs in multiwindow mode are broken on some devices: http://crbug.com/354696
boolean isLegacyMultiWindow = MultiWindowUtils.getInstance().isLegacyMultiWindow(this);
if (!isShowingPromo && !mIntentWithEffect && FirstRunStatus.getFirstRunFlowComplete()
@@ -574,7 +574,7 @@ public class ChromeTabbedActivity
@@ -595,7 +595,7 @@ public class ChromeTabbedActivity
preferenceManager.setPromosSkippedOnFirstStart(true);
}
@@ -0,0 +1,92 @@
From: Serg <serg.zhukovsky@gmail.com>
Date: Wed, 22 Mar 2017 19:10:30 -0400
Subject: Remove Sync and Translate menu
---
.../java/res/drawable-hdpi/settings_translate.png | Bin 399 -> 0 bytes
.../java/res/drawable-mdpi/settings_translate.png | Bin 284 -> 0 bytes
.../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
.../java/res/drawable-xxhdpi/settings_translate.png | Bin 793 -> 0 bytes
.../java/res/drawable-xxxhdpi/settings_translate.png | Bin 1038 -> 0 bytes
.../android/java/res/xml/site_settings_preferences.xml | 4 ++--
.../preferences/website/SiteSettingsPreferences.java | 12 ++++++------
7 files changed, 8 insertions(+), 8 deletions(-)
delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
deleted file mode 100644
index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
deleted file mode 100644
index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
deleted file mode 100644
index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
deleted file mode 100644
index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
deleted file mode 100644
index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
index 8165826..346cdce 100644
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
@@ -73,11 +73,11 @@
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
android:key="sound" />
<!-- Google Translate -->
- <Preference
+ <!-- Preference
android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
android:key="translate"
android:title="@string/google_translate"
- android:icon="@drawable/settings_translate" />
+ android:icon="@drawable/settings_translate" /-->
<!-- Storage -->
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
index bf12a5c..9059822 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
@@ -118,9 +118,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
}
// The new Languages Preference *feature* is an advanced version of this translate
// preference. Once Languages Preference is enabled, remove this setting.
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
- }
+// if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
+// getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
+// }
if (!ChromeFeatureList.isEnabled(ChromeFeatureList.GENERIC_SENSOR_EXTRA_CLASSES)) {
getPreferenceScreen().removePreference(
findPreference(SiteSettingsCategory.Type.SENSORS));
@@ -132,8 +132,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
// Translate preference.
- Preference translatePref = findPreference(TRANSLATE_KEY);
- if (translatePref != null) setTranslateStateSummary(translatePref);
+// Preference translatePref = findPreference(TRANSLATE_KEY);
+// if (translatePref != null) setTranslateStateSummary(translatePref);
// Preferences that navigate to Website Settings.
List<Integer> websitePrefs = new ArrayList<Integer>();
@@ -149,7 +149,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
if (!mProtectedContentMenuAvailable) {
websitePrefs.add(SiteSettingsCategory.Type.AUTOPLAY);
}
- websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
+ //websitePrefs.add(SiteSettingsCategory.Type.BACKGROUND_SYNC);
websitePrefs.add(SiteSettingsCategory.Type.CAMERA);
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
websitePrefs.add(SiteSettingsCategory.Type.CLIPBOARD);
--
2.7.4
@@ -1,177 +0,0 @@
From: Serg <serg.zhukovsky@gmail.com>
Date: Wed, 22 Mar 2017 19:10:30 -0400
Subject: Removed Sync and Translate menu
---
.../java/res/drawable-hdpi/settings_translate.png | Bin 399 -> 0 bytes
.../java/res/drawable-mdpi/settings_translate.png | Bin 284 -> 0 bytes
.../java/res/drawable-xhdpi/settings_translate.png | Bin 547 -> 0 bytes
.../res/drawable-xxhdpi/settings_translate.png | Bin 793 -> 0 bytes
.../res/drawable-xxxhdpi/settings_translate.png | Bin 1038 -> 0 bytes
.../java/res/xml/site_settings_preferences.xml | 8 +++----
.../website/SiteSettingsPreferences.java | 26 ++++++++++-----------
headless/lib/browser/protocol/browser_handler.cc | 2 +-
8 files changed, 18 insertions(+), 18 deletions(-)
delete mode 100644 chrome/android/java/res/drawable-hdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-mdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxhdpi/settings_translate.png
delete mode 100644 chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
diff --git a/chrome/android/java/res/drawable-hdpi/settings_translate.png b/chrome/android/java/res/drawable-hdpi/settings_translate.png
deleted file mode 100644
index 8067680e81c6ffa1a003c579411173827a3a9f96..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-mdpi/settings_translate.png b/chrome/android/java/res/drawable-mdpi/settings_translate.png
deleted file mode 100644
index 3b9b4cd482d36a60d4ff0a110b0bcefabe4c1060..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xhdpi/settings_translate.png b/chrome/android/java/res/drawable-xhdpi/settings_translate.png
deleted file mode 100644
index 131a57394ca30dcff4bebcb2471bbbf0e1ac134e..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxhdpi/settings_translate.png
deleted file mode 100644
index 55878e697b1afed1b4f039a561dc6212e24fc024..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png b/chrome/android/java/res/drawable-xxxhdpi/settings_translate.png
deleted file mode 100644
index 058b50b84dd216d983e9dea2ea264b39773ac318..0000000000000000000000000000000000000000
diff --git a/chrome/android/java/res/xml/site_settings_preferences.xml b/chrome/android/java/res/xml/site_settings_preferences.xml
index 1159fd1..4a13a36 100644
--- a/chrome/android/java/res/xml/site_settings_preferences.xml
+++ b/chrome/android/java/res/xml/site_settings_preferences.xml
@@ -44,9 +44,9 @@
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
android:key="ads" />
<!-- Background sync -->
- <org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
+ <!--<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
- android:key="background_sync" />
+ android:key="background_sync" />-->
<!-- Protected content -->
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
@@ -66,11 +66,11 @@
android:fragment="org.chromium.chrome.browser.preferences.website.SingleCategoryPreferences"
android:key="sound" />
<!-- Google Translate -->
- <Preference
+ <!-- <Preference
android:fragment="org.chromium.chrome.browser.preferences.website.TranslatePreferences"
android:key="translate"
android:title="@string/google_translate"
- android:icon="@drawable/settings_translate" />
+ android:icon="@drawable/settings_translate" />-->
<!-- Storage -->
<!-- TODO(finnur): Move this over to the new Usage screen, once it exists. -->
<org.chromium.chrome.browser.preferences.website.SiteSettingsPreference
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
index 2da84aa9..f3ee0d2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SiteSettingsPreferences.java
@@ -39,7 +39,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
static final String ALL_SITES_KEY = "all_sites";
static final String ADS_KEY = "ads";
static final String AUTOPLAY_KEY = "autoplay";
- static final String BACKGROUND_SYNC_KEY = "background_sync";
+ //static final String BACKGROUND_SYNC_KEY = "background_sync";
static final String CAMERA_KEY = "camera";
static final String CLIPBOARD_KEY = "clipboard";
static final String COOKIES_KEY = "cookies";
@@ -52,7 +52,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
static final String PROTECTED_CONTENT_KEY = "protected_content";
static final String SOUND_KEY = "sound";
static final String STORAGE_KEY = "use_storage";
- static final String TRANSLATE_KEY = "translate";
+ //static final String TRANSLATE_KEY = "translate";
static final String USB_KEY = "usb";
// Whether the Protected Content menu is available for display.
@@ -87,8 +87,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
return ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS;
} else if (AUTOPLAY_KEY.equals(key)) {
return ContentSettingsType.CONTENT_SETTINGS_TYPE_AUTOPLAY;
- } else if (BACKGROUND_SYNC_KEY.equals(key)) {
- return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;
+ /*} else if (BACKGROUND_SYNC_KEY.equals(key)) {
+ return ContentSettingsType.CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC;*/
} else if (CAMERA_KEY.equals(key)) {
return ContentSettingsType.CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA;
} else if (CLIPBOARD_KEY.equals(key)) {
@@ -127,7 +127,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
// menus.
getPreferenceScreen().removePreference(findPreference(ALL_SITES_KEY));
getPreferenceScreen().removePreference(findPreference(ADS_KEY));
- getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
+ //getPreferenceScreen().removePreference(findPreference(BACKGROUND_SYNC_KEY));
getPreferenceScreen().removePreference(findPreference(CAMERA_KEY));
getPreferenceScreen().removePreference(findPreference(CLIPBOARD_KEY));
getPreferenceScreen().removePreference(findPreference(COOKIES_KEY));
@@ -139,7 +139,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
getPreferenceScreen().removePreference(findPreference(POPUPS_KEY));
getPreferenceScreen().removePreference(findPreference(SOUND_KEY));
getPreferenceScreen().removePreference(findPreference(STORAGE_KEY));
- getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
+ //getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
getPreferenceScreen().removePreference(findPreference(USB_KEY));
} else {
// If both Autoplay and Protected Content menus are available, they'll be tucked under
@@ -165,9 +165,9 @@ public class SiteSettingsPreferences extends PreferenceFragment
}
// The new Languages Preference *feature* is an advanced version of this translate
// preference. Once Languages Preference is enabled, remove this setting.
- if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
+ /*if (ChromeFeatureList.isEnabled(ChromeFeatureList.LANGUAGES_PREFERENCE)) {
getPreferenceScreen().removePreference(findPreference(TRANSLATE_KEY));
- }
+ }*/
}
}
@@ -175,10 +175,10 @@ public class SiteSettingsPreferences extends PreferenceFragment
PrefServiceBridge prefServiceBridge = PrefServiceBridge.getInstance();
// Translate preference.
- Preference translatePref = findPreference(TRANSLATE_KEY);
+ /*Preference translatePref = findPreference(TRANSLATE_KEY);
if (translatePref != null) {
setTranslateStateSummary(translatePref);
- }
+ }*/
// Preferences that navigate to Website Settings.
List<String> websitePrefs = new ArrayList<String>();
@@ -192,7 +192,7 @@ public class SiteSettingsPreferences extends PreferenceFragment
// When showing the main menu, if Protected Content is not available, only Autoplay
// will be visible.
if (!mProtectedContentMenuAvailable) websitePrefs.add(AUTOPLAY_KEY);
- websitePrefs.add(BACKGROUND_SYNC_KEY);
+ //websitePrefs.add(BACKGROUND_SYNC_KEY);
websitePrefs.add(CAMERA_KEY);
if (ChromeFeatureList.isEnabled(ChromeFeatureList.CLIPBOARD_CONTENT_SETTING)) {
websitePrefs.add(CLIPBOARD_KEY);
@@ -218,8 +218,8 @@ public class SiteSettingsPreferences extends PreferenceFragment
checked = PrefServiceBridge.getInstance().adsEnabled();
} else if (AUTOPLAY_KEY.equals(prefName)) {
checked = PrefServiceBridge.getInstance().isAutoplayEnabled();
- } else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
- checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();
+ /*} else if (BACKGROUND_SYNC_KEY.equals(prefName)) {
+ checked = PrefServiceBridge.getInstance().isBackgroundSyncAllowed();*/
} else if (CAMERA_KEY.equals(prefName)) {
checked = PrefServiceBridge.getInstance().isCameraEnabled();
} else if (CLIPBOARD_KEY.equals(prefName)) {
diff --git a/headless/lib/browser/protocol/browser_handler.cc b/headless/lib/browser/protocol/browser_handler.cc
index 97ec5f5..955b233 100644
--- a/headless/lib/browser/protocol/browser_handler.cc
+++ b/headless/lib/browser/protocol/browser_handler.cc
@@ -71,7 +71,7 @@ Response BrowserHandler::Close() {
Response BrowserHandler::SetWindowBounds(
int window_id,
std::unique_ptr<Browser::Bounds> window_bounds) {
- HeadlessWebContentsImpl* web_contents = web_contents =
+ HeadlessWebContentsImpl* web_contents =
browser()->GetWebContentsForWindowId(window_id);
if (!web_contents)
return Response::Error("Browser window not found");
--
2.7.4
@@ -9,7 +9,7 @@ Subject: Hide "Send reports to Google"
diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
--- a/chrome/android/java/res/layout/fre_tosanduma.xml
+++ b/chrome/android/java/res/layout/fre_tosanduma.xml
@@ -70,7 +70,7 @@
@@ -71,7 +71,7 @@
android:layout_height="wrap_content"
android:lineSpacingMultiplier="1.4"
android:text="@string/fre_send_report_check"
@@ -10,7 +10,7 @@ Subject: ungoogled-chromium: Disable signin
diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc
--- a/chrome/browser/ui/chrome_pages.cc
+++ b/chrome/browser/ui/chrome_pages.cc
@@ -76,12 +76,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
@@ -72,12 +72,6 @@ void OpenBookmarkManagerForNode(Browser* browser, int64_t node_id) {
ShowSingletonTabOverwritingNTP(browser, std::move(params));
}
@@ -23,7 +23,7 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
// Shows either the help app or the appropriate help page for |source|. If
// |browser| is NULL and the help page is used (vs the app), the help page is
// shown in the last active browser. If there is no such browser, a new browser
@@ -396,6 +390,7 @@ void ShowSearchEngineSettings(Browser* browser) {
@@ -384,6 +378,7 @@ void ShowSearchEngineSettings(Browser* browser) {
#if !defined(OS_ANDROID)
void ShowBrowserSignin(Browser* browser,
signin_metrics::AccessPoint access_point) {
@@ -31,8 +31,8 @@ diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.
Profile* original_profile = browser->profile()->GetOriginalProfile();
SigninManagerBase* manager =
SigninManagerFactory::GetForProfile(original_profile);
@@ -444,6 +439,7 @@ void ShowBrowserSignin(Browser* browser,
profiles::BUBBLE_VIEW_MODE_GAIA_SIGNIN, browser, access_point);
@@ -435,6 +430,7 @@ void ShowBrowserSignin(Browser* browser,
access_point);
#endif
}
+#endif
@@ -9,7 +9,7 @@ Subject: ungoogled-chromium: Disable webRTC log uploader
diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
--- a/chrome/browser/media/webrtc/webrtc_log_uploader.cc
+++ b/chrome/browser/media/webrtc/webrtc_log_uploader.cc
@@ -114,30 +114,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
@@ -117,30 +117,7 @@ void WebRtcLogUploader::LoggingStoppedDoUpload(
DCHECK(meta_data.get());
DCHECK(!upload_done_data.log_path.empty());
@@ -41,7 +41,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_log_uploader.cc b/chrome/browser
}
void WebRtcLogUploader::PrepareMultipartPostData(
@@ -148,6 +125,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
@@ -151,6 +128,9 @@ void WebRtcLogUploader::PrepareMultipartPostData(
DCHECK(!compressed_log.empty());
DCHECK(meta_data.get());
@@ -16,7 +16,7 @@ Disable additional URLs that are not caught by the "trk" scheme
diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/android/rlz/rlz_ping_handler.cc
--- a/chrome/browser/android/rlz/rlz_ping_handler.cc
+++ b/chrome/browser/android/rlz/rlz_ping_handler.cc
@@ -73,7 +73,7 @@ void RlzPingHandler::Ping(
@@ -75,7 +75,7 @@ void RlzPingHandler::Ping(
DCHECK_EQ(id.length(), 50u);
GURL request_url(base::StringPrintf(
@@ -28,7 +28,7 @@ diff --git a/chrome/browser/android/rlz/rlz_ping_handler.cc b/chrome/browser/and
diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser/plugins/plugins_resource_service.cc
--- a/chrome/browser/plugins/plugins_resource_service.cc
+++ b/chrome/browser/plugins/plugins_resource_service.cc
@@ -51,9 +51,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
@@ -53,9 +53,6 @@ const int kStartResourceFetchDelayMs = 60 * 1000;
// Delay between calls to update the cache 1 day and 2 minutes in testing mode.
const int kCacheUpdateDelayMs = 24 * 60 * 60 * 1000;
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/plugins/plugins_resource_service.cc b/chrome/browser
GURL GetPluginsServerURL() {
std::string filename;
#if defined(OS_WIN)
@@ -68,7 +65,7 @@ GURL GetPluginsServerURL() {
@@ -70,7 +67,7 @@ GURL GetPluginsServerURL() {
#error Unknown platform
#endif
@@ -4,9 +4,9 @@ Subject: ungoogled-chromium: Disable translate integration
---
components/translate/content/renderer/translate_helper.cc | 4 +++-
components/translate/core/browser/translate_manager.cc | 2 +-
components/translate/core/browser/translate_manager.cc | 5 +++--
components/translate/core/browser/translate_script.cc | 3 +--
3 files changed, 5 insertions(+), 4 deletions(-)
3 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/components/translate/content/renderer/translate_helper.cc b/components/translate/content/renderer/translate_helper.cc
--- a/components/translate/content/renderer/translate_helper.cc
@@ -25,19 +25,22 @@ diff --git a/components/translate/content/renderer/translate_helper.cc b/compone
diff --git a/components/translate/core/browser/translate_manager.cc b/components/translate/core/browser/translate_manager.cc
--- a/components/translate/core/browser/translate_manager.cc
+++ b/components/translate/core/browser/translate_manager.cc
@@ -131,7 +131,7 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
@@ -133,8 +133,9 @@ void TranslateManager::InitiateTranslation(const std::string& page_lang) {
if (net::NetworkChangeNotifier::IsOffline())
return;
- if (!ignore_missing_key_for_testing_ && !::google_apis::HasKeysConfigured()) {
+ if (true) {
- if (!ignore_missing_key_for_testing_ &&
- !::google_apis::HasAPIKeyConfigured()) {
+// if (!ignore_missing_key_for_testing_ &&
+// !::google_apis::HasAPIKeyConfigured()) {
+ if (true) {
// Without an API key, translate won't work, so don't offer to translate in
// the first place. Leave prefs::kOfferTranslateEnabled on, though, because
// that settings syncs and we don't want to turn off translate everywhere
diff --git a/components/translate/core/browser/translate_script.cc b/components/translate/core/browser/translate_script.cc
--- a/components/translate/core/browser/translate_script.cc
+++ b/components/translate/core/browser/translate_script.cc
@@ -149,9 +149,8 @@ void TranslateScript::OnScriptFetchComplete(
@@ -152,9 +152,8 @@ void TranslateScript::OnScriptFetchComplete(bool success,
base::StringAppendF(&data_, "var serverParams = '%s';\n",
server_params.c_str());
@@ -12,7 +12,7 @@ See this page for more information: https://mikewest.org/2012/02/chrome-connects
diff --git a/chrome/browser/intranet_redirect_detector.cc b/chrome/browser/intranet_redirect_detector.cc
--- a/chrome/browser/intranet_redirect_detector.cc
+++ b/chrome/browser/intranet_redirect_detector.cc
@@ -75,9 +75,7 @@ void IntranetRedirectDetector::FinishSleep() {
@@ -77,9 +77,7 @@ void IntranetRedirectDetector::FinishSleep() {
simple_loaders_.clear();
resulting_origins_.clear();
@@ -309,7 +309,7 @@ diff --git a/components/google/core/browser/google_util.cc b/components/google/c
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
--- a/components/search_engines/template_url.cc
+++ b/components/search_engines/template_url.cc
@@ -498,11 +498,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
@@ -499,11 +499,7 @@ base::string16 TemplateURLRef::SearchTermToString16(
bool TemplateURLRef::HasGoogleBaseURLs(
const SearchTermsData& search_terms_data) const {
ParseIfNecessary(search_terms_data);
@@ -10,7 +10,7 @@ Disable Google Cloud Messaging (GCM) client
diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
--- a/components/gcm_driver/gcm_client_impl.cc
+++ b/components/gcm_driver/gcm_client_impl.cc
@@ -502,6 +502,7 @@ void GCMClientImpl::StartGCM() {
@@ -491,6 +491,7 @@ void GCMClientImpl::StartGCM() {
}
void GCMClientImpl::InitializeMCSClient() {
@@ -18,7 +18,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
std::vector<GURL> endpoints;
endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
@@ -699,6 +700,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
@@ -684,6 +685,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
}
void GCMClientImpl::StartCheckin() {
@@ -26,7 +26,7 @@ diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gc
// Make sure no checkin is in progress.
if (checkin_request_)
return;
@@ -777,6 +779,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
@@ -759,6 +761,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
}
void GCMClientImpl::SchedulePeriodicCheckin() {
@@ -7,18 +7,18 @@ Somehow it is still being activated even without being signed-in.
See also: https://github.com/Eloston/ungoogled-chromium/issues/104
---
chrome/browser/browser_resources.grd | 2 --
.../component_extensions_whitelist/whitelist.cc | 1 -
.../signin/gaia_auth_extension_loader.cc | 7 ------
.../resources/component_extension_resources.grd | 2 --
chrome/browser/ui/webui/signin/inline_login_ui.cc | 1 -
google_apis/gaia/gaia_auth_fetcher.cc | 29 ----------------------
6 files changed, 42 deletions(-)
chrome/browser/browser_resources.grd | 2 --
chrome/browser/extensions/component_extensions_whitelist/whitelist.cc | 1 -
chrome/browser/extensions/signin/gaia_auth_extension_loader.cc | 3 ++-
chrome/browser/resources/component_extension_resources.grd | 2 --
chrome/browser/ui/webui/signin/inline_login_ui.cc | 1 -
google_apis/gaia/gaia_auth_fetcher.cc | 4 +++-
6 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -296,7 +296,6 @@
@@ -303,7 +303,6 @@
<include name="IDR_INLINE_LOGIN_HTML" file="resources\inline_login\inline_login.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
<include name="IDR_INLINE_LOGIN_CSS" file="resources\inline_login\inline_login.css" flattenhtml="true" type="BINDATA" />
<include name="IDR_INLINE_LOGIN_JS" file="resources\inline_login\inline_login.js" flattenhtml="true" type="BINDATA" />
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resou
<include name="IDR_INSPECT_CSS" file="resources\inspect\inspect.css" flattenhtml="true" type="BINDATA" />
<include name="IDR_INSPECT_HTML" file="resources\inspect\inspect.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
<include name="IDR_INSPECT_JS" file="resources\inspect\inspect.js" flattenhtml="true" type="BINDATA" />
@@ -431,7 +430,6 @@
@@ -444,7 +443,6 @@
<include name="IDR_WEBRTC_LOGS_JS" file="resources\media\webrtc_logs.js" type="BINDATA" />
<include name="IDR_WEBSTORE_MANIFEST" file="resources\webstore_app\manifest.json" type="BINDATA" />
<include name="IDR_CRYPTOTOKEN_MANIFEST" file="resources\cryptotoken\manifest.json" type="BINDATA" />
@@ -48,22 +48,20 @@ diff --git a/chrome/browser/extensions/component_extensions_whitelist/whitelist.
diff --git a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
--- a/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
+++ b/chrome/browser/extensions/signin/gaia_auth_extension_loader.cc
@@ -42,18 +42,11 @@ extensions::ComponentLoader* GetComponentLoader(BrowserContext* context) {
@@ -42,7 +42,7 @@ ComponentLoader* GetComponentLoader(BrowserContext* context) {
void LoadGaiaAuthExtension(BrowserContext* context) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- extensions::ComponentLoader* component_loader = GetComponentLoader(context);
-
+/*
ComponentLoader* component_loader = GetComponentLoader(context);
const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kAuthExtensionPath)) {
- base::FilePath auth_extension_path =
- command_line->GetSwitchValuePath(switches::kAuthExtensionPath);
- component_loader->Add(IDR_GAIA_AUTH_MANIFEST, auth_extension_path);
return;
}
-
- component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
- base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
@@ -55,6 +55,7 @@ void LoadGaiaAuthExtension(BrowserContext* context) {
component_loader->Add(IDR_GAIA_AUTH_MANIFEST,
base::FilePath(FILE_PATH_LITERAL("gaia_auth")));
+*/
}
void UnloadGaiaAuthExtension(BrowserContext* context) {
@@ -82,7 +80,7 @@ diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome
diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/ui/webui/signin/inline_login_ui.cc
--- a/chrome/browser/ui/webui/signin/inline_login_ui.cc
+++ b/chrome/browser/ui/webui/signin/inline_login_ui.cc
@@ -44,7 +44,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
@@ -49,7 +49,6 @@ content::WebUIDataSource* CreateWebUIDataSource() {
source->AddResourcePath("inline_login.css", IDR_INLINE_LOGIN_CSS);
source->AddResourcePath("inline_login.js", IDR_INLINE_LOGIN_JS);
@@ -93,39 +91,28 @@ diff --git a/chrome/browser/ui/webui/signin/inline_login_ui.cc b/chrome/browser/
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
--- a/google_apis/gaia/gaia_auth_fetcher.cc
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
@@ -248,35 +248,6 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
int load_flags,
@@ -39,7 +39,7 @@ namespace {
const int kLoadFlagsIgnoreCookies = net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES;
-const size_t kMaxMessageSize = 1024 * 1024; // 1MB
+//const size_t kMaxMessageSize = 1024 * 1024; // 1MB
static bool CookiePartsContains(const std::vector<std::string>& parts,
const char* part) {
@@ -251,6 +251,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
DCHECK(!fetch_pending_) << "Tried to fetch two things at once!";
- fetcher_ = net::URLFetcher::Create(
- 0, gaia_gurl, body.empty() ? net::URLFetcher::GET : net::URLFetcher::POST,
- this, traffic_annotation);
- fetcher_->SetRequestContext(getter_);
- fetcher_->SetUploadData("application/x-www-form-urlencoded", body);
- gaia::MarkURLFetcherAsGaia(fetcher_.get());
-
- VLOG(2) << "Gaia fetcher URL: " << gaia_gurl.spec();
- VLOG(2) << "Gaia fetcher headers: " << headers;
- VLOG(2) << "Gaia fetcher body: " << body;
-
- // The Gaia token exchange requests do not require any cookie-based
- // identification as part of requests. We suppress sending any cookies to
- // maintain a separation between the user's browsing and Chrome's internal
- // services. Where such mixing is desired (MergeSession or OAuthLogin), it
- // will be done explicitly.
- fetcher_->SetLoadFlags(load_flags);
-
- // Fetchers are sometimes cancelled because a network change was detected,
- // especially at startup and after sign-in on ChromeOS. Retrying once should
- // be enough in those cases; let the fetcher retry up to 3 times just in case.
- // http://crbug.com/163710
- fetcher_->SetAutomaticallyRetryOnNetworkChanges(3);
-
- if (!headers.empty())
- fetcher_->SetExtraRequestHeaders(headers);
-
- fetch_pending_ = true;
- fetcher_->Start();
+/*
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = gaia_gurl;
original_url_ = gaia_gurl;
@@ -299,6 +300,7 @@ void GaiaAuthFetcher::CreateAndStartGaiaFetcher(
base::BindOnce(&GaiaAuthFetcher::OnURLLoadComplete,
base::Unretained(this)),
kMaxMessageSize);
+*/
}
// static
@@ -1,165 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Mon, 12 Feb 2018 21:45:21 +0100
Subject: ungoogled-chromium: Clear HTTP cache menu item
Adds a menu item under "More tools" to clear the HTTP authentication cache on demand
---
chrome/app/chrome_command_ids.h | 1 +
chrome/app/generated_resources.grd | 6 ++++++
chrome/browser/ui/browser_command_controller.cc | 7 +++++++
chrome/browser/ui/toolbar/app_menu_model.cc | 8 ++++++++
chrome/browser/ui/toolbar/app_menu_model.h | 1 +
chrome/browser/ui/views/frame/global_menu_bar_x11.cc | 1 +
net/http/http_auth_cache.cc | 1 +
tools/metrics/histograms/enums.xml | 1 +
tools/metrics/histograms/histograms.xml | 1 +
9 files changed, 27 insertions(+)
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h
--- a/chrome/app/chrome_command_ids.h
+++ b/chrome/app/chrome_command_ids.h
@@ -152,6 +152,7 @@
#define IDC_DEV_TOOLS_INSPECT 40023
#define IDC_UPGRADE_DIALOG 40024
#define IDC_VIEW_INCOMPATIBILITIES 40025
+#define IDC_CLEAR_HTTP_AUTH_CACHE 40026
#define IDC_SHOW_KEYBOARD_OVERLAY 40027
#define IDC_PROFILING_ENABLED 40028
#define IDC_BOOKMARKS_MENU 40029
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -1058,6 +1058,9 @@ are declared in build/common.gypi.
<message name="IDS_CLEAR_BROWSING_DATA" desc="The text label for the menu item for clearing of browsing data">
&amp;Clear browsing data...
</message>
+ <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="The text label for the menu item for clearing the HTTP authentication cache">
+ Clear &amp;HTTP auth cache
+ </message>
<message name="IDS_SHOW_DOWNLOADS" desc="The show downloads menu in the app menu">
&amp;Downloads
</message>
@@ -1096,6 +1099,9 @@ are declared in build/common.gypi.
<message name="IDS_CLEAR_BROWSING_DATA" desc="In Title Case: The text label for the menu item for clearing of browsing data">
&amp;Clear Browsing Data...
</message>
+ <message name="IDS_CLEAR_HTTP_AUTH_CACHE" desc="In Title Case: The text label for the menu item for clearing the HTTP authentication cache">
+ Clear &amp;HTTP Auth Cache
+ </message>
<message name="IDS_SHOW_DOWNLOADS" desc="In Title Case: The show downloads menu in the app menu">
&amp;Downloads
</message>
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc
--- a/chrome/browser/ui/browser_command_controller.cc
+++ b/chrome/browser/ui/browser_command_controller.cc
@@ -61,6 +61,9 @@
#include "extensions/browser/extension_system.h"
#include "printing/buildflags/buildflags.h"
#include "ui/events/keycodes/keyboard_codes.h"
+#include "net/url_request/url_request_context.h"
+#include "net/url_request/url_request_context_getter.h"
+#include "net/http/http_transaction_factory.h"
#if defined(OS_MACOSX)
#include "chrome/browser/ui/browser_commands_mac.h"
@@ -630,6 +633,9 @@ bool BrowserCommandController::ExecuteCommandWithDisposition(
case IDC_CLEAR_BROWSING_DATA:
ShowClearBrowsingDataDialog(browser_);
break;
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
+ profile()->GetRequestContext()->GetURLRequestContext()->http_transaction_factory()->GetSession()->http_auth_cache()->ClearAllEntries();
+ break;
case IDC_IMPORT_SETTINGS:
ShowImportDialog(browser_);
break;
@@ -874,6 +880,7 @@ void BrowserCommandController::InitCommandState() {
!profile()->IsOffTheRecord());
command_updater_.UpdateCommandEnabled(IDC_CLEAR_BROWSING_DATA,
!guest_session);
+ command_updater_.UpdateCommandEnabled(IDC_CLEAR_HTTP_AUTH_CACHE, true);
#if defined(OS_CHROMEOS)
command_updater_.UpdateCommandEnabled(IDC_TAKE_SCREENSHOT, true);
#else
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc
--- a/chrome/browser/ui/toolbar/app_menu_model.cc
+++ b/chrome/browser/ui/toolbar/app_menu_model.cc
@@ -215,6 +215,7 @@ void ToolsMenuModel::Build(Browser* browser) {
AddSeparator(ui::NORMAL_SEPARATOR);
AddItemWithStringId(IDC_CLEAR_BROWSING_DATA, IDS_CLEAR_BROWSING_DATA);
+ AddItemWithStringId(IDC_CLEAR_HTTP_AUTH_CACHE, IDS_CLEAR_HTTP_AUTH_CACHE);
AddItemWithStringId(IDC_MANAGE_EXTENSIONS, IDS_SHOW_EXTENSIONS);
if (chrome::CanOpenTaskManager())
AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
@@ -475,6 +476,13 @@ void AppMenuModel::LogMenuMetrics(int command_id) {
}
LogMenuAction(MENU_ACTION_CLEAR_BROWSING_DATA);
break;
+ case IDC_CLEAR_HTTP_AUTH_CACHE:
+ if (!uma_action_recorded_) {
+ UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ClearHttpAuthCache",
+ delta);
+ }
+ LogMenuAction(MENU_ACTION_CLEAR_HTTP_AUTH_CACHE);
+ break;
case IDC_VIEW_SOURCE:
if (!uma_action_recorded_)
UMA_HISTOGRAM_MEDIUM_TIMES("WrenchMenu.TimeToAction.ViewSource", delta);
diff --git a/chrome/browser/ui/toolbar/app_menu_model.h b/chrome/browser/ui/toolbar/app_menu_model.h
--- a/chrome/browser/ui/toolbar/app_menu_model.h
+++ b/chrome/browser/ui/toolbar/app_menu_model.h
@@ -76,6 +76,7 @@ enum AppMenuAction {
MENU_ACTION_OPEN_IN_CHROME = 48,
MENU_ACTION_SITE_SETTINGS = 49,
MENU_ACTION_APP_INFO = 50,
+ MENU_ACTION_CLEAR_HTTP_AUTH_CACHE = 51,
LIMIT_MENU_ACTION
};
diff --git a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
--- a/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
+++ b/chrome/browser/ui/views/frame/global_menu_bar_x11.cc
@@ -225,6 +225,7 @@ GlobalMenuBarCommand tools_menu[] = {
{IDS_TASK_MANAGER, IDC_TASK_MANAGER},
{IDS_CLEAR_BROWSING_DATA, IDC_CLEAR_BROWSING_DATA},
+ {IDS_CLEAR_HTTP_AUTH_CACHE, IDC_CLEAR_HTTP_AUTH_CACHE},
{MENU_SEPARATOR, MENU_SEPARATOR},
diff --git a/net/http/http_auth_cache.cc b/net/http/http_auth_cache.cc
--- a/net/http/http_auth_cache.cc
+++ b/net/http/http_auth_cache.cc
@@ -250,6 +250,7 @@ bool HttpAuthCache::Remove(const GURL& origin,
return false;
}
}
+
return false;
}
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -49525,6 +49525,7 @@ Full version information for the fingerprint enum values:
<int value="48" label="Open in Chrome"/>
<int value="49" label="Site Settings"/>
<int value="50" label="App Info"/>
+ <int value="51" label="Clear HTTP auth cache"/>
</enum>
<enum name="XFrameOptions">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -111352,6 +111352,7 @@ uploading your change for review.
<suffix name="Overestimate"
label="Tracks when the compositor's estimates were too high and by how
much."/>
+ <suffix name="ClearHttpAuthCache" label="Clear HTTP authentication cache"/>
<suffix name="Underestimate"
label="Tracks when the compositor's estimates were too low and by how
much."/>
--
2.7.4
@@ -9,7 +9,7 @@ Subject: Disable Omaha update checks
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
@@ -132,7 +132,7 @@ public class OmahaBase {
@@ -134,7 +134,7 @@ public class OmahaBase {
/** See {@link #sIsDisabled}. */
static boolean isDisabled() {
@@ -15,12 +15,12 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
// Increment this if you change the data in ways that mean users with
// existing data should get a new version.
- "kCurrentDataVersion": 102
+ "kCurrentDataVersion": 103
- "kCurrentDataVersion": 103
+ "kCurrentDataVersion": 104
},
// The following engines are included in country lists and are added to the
@@ -232,6 +232,16 @@
@@ -247,6 +247,16 @@
"id": 56
},
@@ -17,12 +17,12 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
// Increment this if you change the data in ways that mean users with
// existing data should get a new version.
- "kCurrentDataVersion": 103
+ "kCurrentDataVersion": 104
- "kCurrentDataVersion": 104
+ "kCurrentDataVersion": 105
},
// The following engines are included in country lists and are added to the
@@ -154,6 +154,27 @@
@@ -159,6 +159,27 @@
"id": 1
},
@@ -3,10 +3,10 @@ Date: Mon, 12 Mar 2018 20:31:44 +0100
Subject: Add Qwant search engine
---
.../search_engines/prepopulated_engines.json | 13 +-
.../search_engines/prepopulated_engines.json | 24 ++-
components/search_engines/search_engine_type.h | 1 +
.../template_url_prepopulate_data.cc | 218 ++++++++++-----------
3 files changed, 122 insertions(+), 110 deletions(-)
3 files changed, 133 insertions(+), 110 deletions(-)
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
--- a/components/search_engines/prepopulated_engines.json
@@ -15,15 +15,26 @@ diff --git a/components/search_engines/prepopulated_engines.json b/components/se
// Increment this if you change the data in ways that mean users with
// existing data should get a new version.
- "kCurrentDataVersion": 104
+ "kCurrentDataVersion": 105
- "kCurrentDataVersion": 105
+ "kCurrentDataVersion": 106
},
// The following engines are included in country lists and are added to the
@@ -939,6 +939,17 @@
@@ -954,6 +954,28 @@
"id": 6
},
+ "qwant": {
+ "name": "Qwant",
+ "keyword": "qwant.com",
+ "favicon_url": "https://www.qwant.com/favicon.ico",
+ "search_url": "https://www.qwant.com/?client=opensearch&q={searchTerms}",
+ "suggest_url": "https://api.qwant.com/api/suggest/?client=opensearch&q={searchTerms}",
+ "image_url": "https://www.qwant.com/?t=images&q={searchTerms}",
+ "type": "SEARCH_ENGINE_QWANT",
+ "id": 14
+ },
+
+ "qwant": {
+ "name": "Qwant",
+ "keyword": "qwant.com",
@@ -9,7 +9,7 @@ Subject: Fix crash when accessing page info / site settings
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
--- a/chrome/browser/permissions/permission_manager.cc
+++ b/chrome/browser/permissions/permission_manager.cc
@@ -632,6 +632,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
@@ -633,6 +633,9 @@ PermissionResult PermissionManager::GetPermissionStatusHelper(
GURL canonical_requesting_origin =
GetCanonicalOrigin(requesting_origin, embedding_origin);
PermissionContextBase* context = GetPermissionContext(permission);
@@ -59,7 +59,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
# GCC and clang flags. MSVS (is_win && !is_clang) does not use cflags.
if (!is_win || is_clang) {
cflags += [
@@ -128,6 +143,14 @@ source_set("common") {
@@ -129,6 +144,14 @@ source_set("common") {
}
include_dirs = openh264_common_include_dirs
@@ -74,7 +74,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":config" ]
@@ -154,6 +177,14 @@ source_set("processing") {
@@ -155,6 +178,14 @@ source_set("processing") {
}
include_dirs = openh264_processing_include_dirs
@@ -89,7 +89,7 @@ diff --git a/third_party/openh264/BUILD.gn b/third_party/openh264/BUILD.gn
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
configs += [ ":config" ]
@@ -173,6 +204,14 @@ source_set("encoder") {
@@ -174,6 +205,14 @@ source_set("encoder") {
}
include_dirs = openh264_encoder_include_dirs
@@ -1,29 +1,43 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat, 28 Oct 2017 10:09:41 +0200
Subject: Cure AMP and tracking from search results
Subject: Inject scripts for AMP, tracking, ads and video functionality
Remove AMP, tracking and ads from search results
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com to
allow playing videos in background (original Javascript code by timdream)
---
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
third_party/blink/renderer/core/dom/document.cc | 20 +++++++++++++++++++-
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 ++++++
3 files changed, 26 insertions(+), 1 deletion(-)
third_party/blink/renderer/core/dom/BUILD.gn | 2 ++
third_party/blink/renderer/core/dom/document.cc | 28 +++++++++++++++++++++-
.../renderer/core/dom/extensions/anti_amp_cure.h | 6 +++++
.../renderer/core/dom/extensions/video_bg_play.h | 6 +++++
4 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 third_party/blink/renderer/core/dom/extensions/anti_amp_cure.h
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -147,6 +147,7 @@ blink_core_sources("dom") {
"events/tree_scope_event_context.h",
"events/window_event_context.cc",
"events/window_event_context.h",
@@ -147,6 +147,8 @@ blink_core_sources("dom") {
"global_event_handlers.h",
"icon_url.cc",
"icon_url.h",
+ "extensions/dont-track-me.h",
"exception_code.h",
"first_letter_pseudo_element.cc",
"first_letter_pseudo_element.h",
+ "extensions/video-bg-play.h",
"id_target_observer.cc",
"id_target_observer.h",
"id_target_observer_registry.cc",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -277,6 +277,8 @@
@@ -223,6 +223,7 @@
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+#include "extensions/video_bg_play.h"
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/paint_layer.h"
@@ -282,6 +283,8 @@
#include "third_party/blink/renderer/platform/wtf/text/text_encoding_registry.h"
#include "third_party/blink/renderer/platform/wtf/time.h"
@@ -32,7 +46,7 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
#ifndef NDEBUG
using WeakDocumentSet =
blink::PersistentHeapHashSet<blink::WeakMember<blink::Document>>;
@@ -5882,8 +5884,24 @@ void Document::FinishedParsing() {
@@ -5926,8 +5929,31 @@ void Document::FinishedParsing() {
fetcher_->ClearResourcesFromPreviousFetcher();
}
@@ -43,18 +57,25 @@ diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink
+ }
+
+ // determine whether this is a Google search results page
+ const SecurityOrigin *origin = GetSecurityOrigin();
+ if (origin) {
+ WTF::String domain = origin->Domain();
+ size_t pos = domain.Find(".google.");
+ auto* bodyElement = body();
+ if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
+ const WTF::String& host = url_.Host();
+ auto* bodyElement = body();
+ if (bodyElement) {
+ size_t pos = host.Find(".google.");
+ if ((pos != WTF::kNotFound) && (host.length() - pos - 8 < 4)) {
+ LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(ANTI_AMP_CURE_JS);
+ bodyElement->AppendChild(e);
+ }
+ }
+
+ // check for eligibility of the video bg fix
+ if ((WTF::kNotFound != host.Find("youtube.com")) || (WTF::kNotFound != host.Find("vimeo.com"))) {
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(VIDEO_BG_PLAY_JS);
+ bodyElement->AppendChild(e);
+ }
+ } // has origin and body element
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
@@ -69,6 +90,17 @@ new file mode 100644
+#define ANTI_AMP_CURE_JS "/* Bromite click-tracking and AMP removal v0.3.5 */\n\nfunction recreateHyperlink(a) {\n // skip already-sanitized hyperlinks\n if (a.sane) return false;\n\n // create new A element - old one has event listeners attached\n var newA = document.createElement('a');\n newA.referrerPolicy = 'origin';\n // property set when hyperlink has been created by this script\n newA.sane = 1;\n\n // remove AMP class, get actual page URL\n var ampCur = a.getAttribute('data-amp-cur');\n if (ampCur) {\n newA.href = ampCur;\n a.classList.remove('amp_r');\n } else {\n var realLink = getRealLinkFromGoogleUrl(a);\n if (realLink) {\n newA.href = realLink;\n } else {\n // might not be an actual hyperlink, ignore it\n if (!a.href) {\n return false;\n }\n // leave original href unchanged\n newA.href = a.href;\n }\n }\n // copy CSS classes\n newA.className = a.className;\n\n // copy nodes inside the hyperlink\n while (a.firstChild) {\n newA.appendChild(a.lastChild);\n }\n // replace hyperlink\n a.parentNode.replaceChild(newA, a);\n return true;\n}\n\nfunction isResult(a) {\n if (a.getAttribute('data-amp-cur'))\n return true;\n var inlineMousedown = a.getAttribute('onmousedown');\n if (!inlineMousedown)\n\treturn false;\n // return rwt(....); // E.g Google search results.\n // return google.rwt(...); // E.g. sponsored search results\n // return google.arwt(this); // E.g. sponsored search results (dec 2016).\n return /\\ba?rwt\\(/.test(inlineMousedown) || /\\bctpacw\\b/.test(inlineMousedown);\n}\n\n/**\n * @returns {String} the real URL if the given link is a Google redirect URL.\n */\nfunction getRealLinkFromGoogleUrl(a) {\n if ((a.hostname === location.hostname || a.hostname.indexOf('www.google.') == 0) &&\n /^\\/(local_)?url$/.test(a.pathname)) {\n // Google Maps / Dito (/local_url?q=<url>)\n // Mobile (/url?q=<url>)\n var url = /[?&](?:q|url)=((?:https?|ftp)[%:][^&]+)/.exec(a.search);\n if (url) {\n return decodeURIComponent(url[1]);\n }\n // Help pages, e.g. safe browsing (/url?...&q=%2Fsupport%2Fanswer...)\n url = /[?&](?:q|url)=((?:%2[Ff]|\\/)[^&]+)/.exec(a.search);\n if (url) {\n return a.origin + decodeURIComponent(url[1]);\n }\n }\n}\n\nfunction sanitizeAds() {\n // scan all divs\n var div = document.getElementById('tads');\n if (div) {\n div.style.display = 'none';\n\treturn true;\n }\n return false;\n}\n\nfunction sanitizeAll() {\n console.log(\"ads removed: \", sanitizeAds());\n console.log(\"hyperlinks sanitized: \", sanitizeAllHyperlinks(document));\n}\n\nfunction hookMoreResults() {\n var extrares = document.getElementById('extrares');\n if (!extrares) {\n console.log(\"could not hook more results\");\n return;\n }\n // mutation observers are great but they don't work\n extrares.addEventListener(\"DOMNodeInserted\", function(e) {\n var node = e.target;\n if (node.id && node.id.startsWith(\"arc-srp\"))\n console.log(\"hyperlinks sanitized on new result node: \", sanitizeAllHyperlinks(node));\n });\n}\n\nfunction setMlogoClick() {\n var mlogo = document.getElementById('qslc');\n if (mlogo && mlogo.children[0]) {\n mlogo = mlogo.children[0];\n mlogo.removeAttribute(\"href\");\n mlogo.setAttribute(\"onclick\", \"sanitizeAll()\");\n console.log(\"logo link replaced\");\n } else {\n console.log(\"could not replace logo link\");\n }\n}\n\nfunction sanitizeAllHyperlinks(rootNode) {\n var saned = 0, total = 0;\n rootNode.querySelectorAll('div[data-hveid]:not([data-hveid=\"\"]) a').forEach(function(a) {\n\ttotal++;\n\tvar res = recreateHyperlink(a);\n\tif (res) saned++;\n });\n console.log(\"sanitized \", saned, \"/\", total, \" hyperlinks\");\n\n return saned;\n}\n\n// avoid running cleanup on non-search pages\nif ((document.location.host.indexOf(\"images.google.\") == -1) && (document.location.host.indexOf(\"news.google.\") == -1)) {\n sanitizeAll();\n}\nsetMlogoClick();\n\nhookMoreResults();\n"
+
+#endif // anti_amp_cure_h
diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
new file mode 100644
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
@@ -0,0 +1,6 @@
+#ifndef video_bg_play_h
+#define video_bg_play_h
+
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
+
+#endif // video_bg_play_h
--
2.7.4
@@ -10,7 +10,7 @@ Subject: Allow playing audio in background
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -871,6 +871,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
@@ -862,6 +862,12 @@ bool WebMediaPlayerImpl::HasAudio() const {
return pipeline_metadata_.has_audio;
}
@@ -23,7 +23,7 @@ diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_imp
void WebMediaPlayerImpl::EnabledAudioTracksChanged(
const blink::WebVector<blink::WebMediaPlayer::TrackId>& enabledTrackIds) {
DCHECK(main_task_runner_->BelongsToCurrentThread());
@@ -2940,7 +2946,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
@@ -2953,7 +2959,10 @@ bool WebMediaPlayerImpl::ShouldPauseVideoWhenHidden() const {
// If suspending background video, pause any video that's not remoted or
// not unlocked to play in the background.
if (IsBackgroundedSuspendEnabled()) {
@@ -9,7 +9,7 @@ Subject: Open YouTube links in Bromite
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
@@ -363,6 +363,13 @@ public class ExternalNavigationHandler {
@@ -384,6 +384,13 @@ public class ExternalNavigationHandler {
return OverrideUrlLoadingResult.NO_OVERRIDE;
}
@@ -1,79 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 18 Feb 2018 22:15:25 +0100
Subject: Play videos in background
Break Page Visibility API and Fullscreen API for youtube.com and vimeo.com
Original Javascript code by timdream
---
third_party/blink/renderer/core/dom/BUILD.gn | 1 +
third_party/blink/renderer/core/dom/document.cc | 17 +++++++++++++----
.../blink/renderer/core/dom/extensions/video_bg_play.h | 6 ++++++
3 files changed, 20 insertions(+), 4 deletions(-)
create mode 100644 third_party/blink/renderer/core/dom/extensions/video_bg_play.h
diff --git a/third_party/blink/renderer/core/dom/BUILD.gn b/third_party/blink/renderer/core/dom/BUILD.gn
--- a/third_party/blink/renderer/core/dom/BUILD.gn
+++ b/third_party/blink/renderer/core/dom/BUILD.gn
@@ -148,6 +148,7 @@ blink_core_sources("dom") {
"events/window_event_context.cc",
"events/window_event_context.h",
"extensions/dont-track-me.h",
+ "extensions/video-bg-play.h",
"exception_code.h",
"first_letter_pseudo_element.cc",
"first_letter_pseudo_element.h",
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -222,6 +222,7 @@
#include "third_party/blink/renderer/core/page/scrolling/scrolling_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/snap_coordinator.h"
#include "third_party/blink/renderer/core/page/scrolling/top_document_root_scroller_controller.h"
+#include "extensions/video_bg_play.h"
#include "third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.h"
#include "third_party/blink/renderer/core/paint/first_meaningful_paint_detector.h"
#include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
@@ -5891,17 +5892,25 @@ void Document::FinishedParsing() {
// determine whether this is a Google search results page
const SecurityOrigin *origin = GetSecurityOrigin();
- if (origin) {
+ auto* bodyElement = body();
+ if (origin && bodyElement) {
WTF::String domain = origin->Domain();
size_t pos = domain.Find(".google.");
- auto* bodyElement = body();
- if (bodyElement && (pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
+ if ((pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) {
LOG(INFO) << "injecting anti-AMP-cure Javascript payload";
HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
e->setText(ANTI_AMP_CURE_JS);
bodyElement->AppendChild(e);
}
- }
+
+ // check for eligibility of the video bg fix
+ if ((WTF::kNotFound != domain.Find("youtube.com")) || (WTF::kNotFound != domain.Find("vimeo.com"))) {
+ LOG(INFO) << "injecting video-bg-play Javascript payload";
+ HTMLScriptElement* e = HTMLScriptElement::Create(*this, CreateElementFlags());
+ e->setText(VIDEO_BG_PLAY_JS);
+ bodyElement->AppendChild(e);
+ }
+ } // has origin and body element
FirstMeaningfulPaintDetector::From(*this).CheckNetworkStable();
}
diff --git a/third_party/blink/renderer/core/dom/extensions/video_bg_play.h b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
new file mode 100644
--- /dev/null
+++ b/third_party/blink/renderer/core/dom/extensions/video_bg_play.h
@@ -0,0 +1,6 @@
+#ifndef video_bg_play_h
+#define video_bg_play_h
+
+#define VIDEO_BG_PLAY_JS "'use strict';\n\n/* video background play fix - original version by timdream */\ndocument.videoBGFix = {};\n\n// Page Visibility API\nObject.defineProperties(document.videoBGFix,\n { 'hidden': {value: false}, 'visibilityState': {value: 'visible'} });\n\nwindow.addEventListener(\n 'visibilitychange', evt => evt.stopImmediatePropagation(), true);\nwindow.addEventListener(\n 'blur', evt => evt.stopImmediatePropagation(), true);\n\n// Fullscreen API\nwindow.addEventListener('fullscreenchange', evt => {\n Object.defineProperties(document.videoBGFix,\n { 'fullscreenEnabled': {value: true},\n 'fullscreen': {value: true},\n 'fullscreenElement': {value: document.fullscreenElement.videoBGFix}});\n window.addEventListener(\n 'fullscreenchange', evt => evt.stopImmediatePropagation(), true);\n}, { capture: true, once: true });\n"
+
+#endif // video_bg_play_h
--
2.7.4
@@ -25,7 +25,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -1986,6 +1986,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2022,6 +2022,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
RecordUserAction.record("MobileMenuSettings");
} else if (id == R.id.show_menu) {
showAppMenuForKeyboardEvent();
@@ -53,7 +53,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2678,6 +2678,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
@@ -2837,6 +2837,9 @@ To obtain new licenses, connect to the internet and play your downloaded content
<message name="IDS_MENU_PREFERENCES" desc="Menu item for opening browser preferences. [CHAR-LIMIT=27]">
Settings
</message>
@@ -24,7 +24,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2010,15 +2010,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2046,15 +2046,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
final Tab currentTab = getActivityTab();
@@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -1038,7 +1038,7 @@ public class CustomTabActivity extends ChromeActivity {
@@ -1219,7 +1219,7 @@ public class CustomTabActivity extends ChromeActivity {
public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
// Disable creating new tabs, bookmark, history, print, help, focus_url, etc.
if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id
@@ -7,10 +7,10 @@ Subject: Add menu option to toggle global Javascript preference
chrome/android/java/res/menu/main_menu.xml | 13 ++++++++
.../chromium/chrome/browser/ChromeActivity.java | 8 +++++
.../chrome/browser/ChromeTabbedActivity.java | 8 +++++
.../browser/appmenu/AppMenuPropertiesDelegate.java | 37 ++++++++++++++++++++++
.../browser/appmenu/AppMenuPropertiesDelegate.java | 38 ++++++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 1 +
.../java/strings/android_chrome_strings.grd | 11 +++++++
7 files changed, 91 insertions(+)
7 files changed, 92 insertions(+)
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -75,17 +75,17 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2079,6 +2079,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2114,6 +2114,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
final boolean usingDesktopUserAgent = currentTab.getUseDesktopUserAgent();
currentTab.setUseDesktopUserAgent(!usingDesktopUserAgent, reloadOnChange);
RecordUserAction.record("MobileMenuRequestDesktopSite");
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
+ PrefServiceBridge.getInstance().setJavaScriptEnabled(!jsEnabled);
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.reader_mode_prefs_id) {
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
@@ -93,17 +93,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1644,6 +1644,14 @@ public class ChromeTabbedActivity
@@ -1707,6 +1707,14 @@ public class ChromeTabbedActivity
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
}
RecordUserAction.record("MobileMenuDownloadManager");
+ } else if (id == R.id.enable_javascript_id || id == R.id.enable_javascript_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
+ PrefServiceBridge.getInstance().setJavaScriptEnabled(!jsEnabled);
+ final boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT, !jsEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.open_recently_closed_tab) {
TabModel currentModel = mTabModelSelectorImpl.getCurrentModel();
@@ -111,7 +111,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -192,6 +192,8 @@ public class AppMenuPropertiesDelegate {
@@ -24,6 +24,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.ContentSettingsType;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.banners.AppBannerManager;
@@ -196,6 +197,8 @@ public class AppMenuPropertiesDelegate {
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
@@ -120,12 +128,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
// Only display reader mode settings menu option if the current page is in reader mode.
menu.findItem(R.id.reader_mode_prefs_id)
.setVisible(DomDistillerUrlUtils.isDistilledPage(currentTab.getUrl()));
@@ -412,4 +414,39 @@ public class AppMenuPropertiesDelegate {
? mActivity.getString(R.string.menu_request_desktop_site_on)
: mActivity.getString(R.string.menu_request_desktop_site_off));
@@ -418,6 +421,41 @@ public class AppMenuPropertiesDelegate {
}
+
+ /**
/**
+ * Updates the enable JavaScript item's state.
+ *
+ * @param menu {@link Menu} for enable javascript
@@ -148,7 +154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean jsEnabled = PrefServiceBridge.getInstance().javaScriptEnabled();
+ boolean jsEnabled = PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_JAVASCRIPT);
+
+ // Mark the checkbox if Javascript is activated on this tab.
+ enableMenuCheck.setChecked(jsEnabled);
@@ -159,11 +165,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ ? mActivity.getString(R.string.menu_enable_javascript_on)
+ : mActivity.getString(R.string.menu_enable_javascript_off));
+ }
}
+
+ /**
* A notification that the header view has finished inflating.
* @param view The view that was inflated.
* @param appMenu The menu the view is inside of.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -171,6 +171,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
@@ -165,6 +165,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
@@ -174,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2663,6 +2663,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
@@ -2822,6 +2822,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
<message name="IDS_MENU_FIND_IN_PAGE" desc="Menu item allowing users to find text within the current page. [CHAR-LIMIT=27]">
Find in page
</message>
@@ -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 | 55 ++++
.../subresource_filter_content_settings_manager.cc | 3 +
chrome/browser/net/chrome_network_delegate.cc | 58 ++++
.../subresource_filter_content_settings_manager.cc | 1 +
net/BUILD.gn | 7 +
net/url_request/adblock_intercept.cc | 323 +++++++++++++++++++++
net/url_request/adblock_intercept.h | 19 ++
12 files changed, 497 insertions(+)
net/url_request/adblock_intercept.cc | 321 +++++++++++++++++++++
net/url_request/adblock_intercept.h | 17 ++
12 files changed, 494 insertions(+)
create mode 100644 net/url_request/adblock_intercept.cc
create mode 100644 net/url_request/adblock_intercept.h
@@ -73,14 +73,14 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2089,6 +2089,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -2124,6 +2124,14 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
RecordUserAction.record("MobileMenuRequestEnableJavascript");
} else if (id == R.id.reader_mode_prefs_id) {
DomDistillerUIUtils.openSettings(currentTab.getWebContents());
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ }
@@ -91,25 +91,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1658,6 +1658,14 @@ public class ChromeTabbedActivity
RecordUserAction.record("MobileTabClosedUndoShortCut");
} else if (id == R.id.enter_vr_id) {
VrShellDelegate.enterVrIfNecessary();
@@ -1665,6 +1665,14 @@ public class ChromeTabbedActivity
reportNewTabShortcutUsed(true);
getTabCreator(true).launchNTP();
}
+ } else if (id == R.id.enable_adblock_id || id == R.id.enable_adblock_check_id) {
+ final boolean reloadOnChange = !currentTab.isNativePage();
+ final boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
+ PrefServiceBridge.getInstance().setAllowAdsEnabled(adBlockEnabled);
+ final boolean adblockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+ PrefServiceBridge.getInstance().setCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS, adblockEnabled);
+ if (reloadOnChange) {
+ currentTab.reload();
+ currentTab.reload();
+ }
+ RecordUserAction.record("MobileMenuRequestEnableAdBlock");
} else {
return super.onMenuOrKeyboardAction(id, fromMenu);
}
} else if (id == R.id.all_bookmarks_menu_id) {
if (currentTab != null) {
getCompositorViewHolder().hideKeyboard(() -> {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -190,6 +190,8 @@ public class AppMenuPropertiesDelegate {
@@ -195,6 +195,8 @@ public class AppMenuPropertiesDelegate {
&& !TextUtils.isEmpty(url);
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
@@ -118,12 +118,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
updateEnableJavascriptMenuItem(menu, currentTab);
@@ -449,4 +451,40 @@ public class AppMenuPropertiesDelegate {
? mActivity.getString(R.string.menu_enable_javascript_on)
: mActivity.getString(R.string.menu_enable_javascript_off));
@@ -456,6 +458,42 @@ public class AppMenuPropertiesDelegate {
}
+
+ /**
/**
+ * Updates the enable AdBlock item's state.
+ *
+ * @param menu {@link Menu} for enable adblock
@@ -147,7 +145,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().adsEnabled();
+ boolean adBlockEnabled = !PrefServiceBridge.getInstance().isCategoryEnabled(ContentSettingsType.CONTENT_SETTINGS_TYPE_ADS);
+
+ // Mark the checkbox if adblock is globally activate.
+ enableMenuCheck.setChecked(adBlockEnabled);
@@ -158,11 +156,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ ? mActivity.getString(R.string.menu_enable_adblock_on)
+ : mActivity.getString(R.string.menu_enable_adblock_off));
+ }
}
+
+ /**
* A notification that the header view has finished inflating.
* @param view The view that was inflated.
* @param appMenu The menu the view is inside of.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -170,6 +170,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
@@ -164,6 +164,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
}
@@ -174,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2683,6 +2683,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
@@ -2842,6 +2842,17 @@ To obtain new licenses, connect to the internet and play your downloaded content
<message name="IDS_MENU_REQUEST_DESKTOP_SITE_OFF" desc="Accessibility description for when Request Desktop Site is disabled.">
Turn on Request desktop site
</message>
@@ -195,7 +197,15 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc
--- a/chrome/browser/net/chrome_network_delegate.cc
+++ b/chrome/browser/net/chrome_network_delegate.cc
@@ -62,6 +62,7 @@
@@ -24,6 +24,7 @@
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h"
+#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
#include "chrome/browser/net/chrome_extensions_network_delegate.h"
@@ -59,6 +60,7 @@
#if defined(OS_ANDROID)
#include "base/android/path_utils.h"
#include "chrome/browser/io_thread.h"
@@ -203,7 +213,7 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
#endif
#if defined(OS_CHROMEOS)
@@ -269,11 +270,63 @@ void ChromeNetworkDelegate::InitializePrefsOnUIThread(
@@ -215,10 +217,64 @@ void ChromeNetworkDelegate::InitializePrefsOnUIThread(
}
}
@@ -211,14 +221,13 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
+
int ChromeNetworkDelegate::OnBeforeURLRequest(
net::URLRequest* request,
const net::CompletionCallback& callback,
net::CompletionOnceCallback callback,
GURL* new_url) {
+
+#if defined(OS_ANDROID)
+ if (request) {
+ bool block = false, isValidUrl;
+
+ //LOG(INFO) << "OnBeforeURLRequest " << request->url();
+ isValidUrl = request->url().is_valid();
+ std::string scheme = request->url().scheme();
+ if (isValidUrl && scheme.length()) {
@@ -229,25 +238,27 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
+ }
+ const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
+
+ bool adblock_enabled = false;
+ if (isValidUrl && info) {
+#if 0
+ // not working
+ const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter = info->GetWebContentsGetterForRequest();
+ content::WebContents* web_contents = web_contents_getter.Run();
+ if (web_contents) {
+ TabSpecificContentSettings* content_settings =
+ TabSpecificContentSettings::FromWebContents(web_contents);
+ if (content_settings) {
+ bool adblock_enabled = content_settings->IsContentBlocked(CONTENT_SETTINGS_TYPE_ADS);
+ LOG(INFO) << "adblock_enabled from tab: " << adblock_enabled;
+ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext());
+ const HostContentSettingsMap* content_settings = HostContentSettingsMapFactory::GetForProfile(profile);
+
+ // check global value first
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetDefaultContentSetting(ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS, NULL);
+
+ if (!adblock_enabled) {
+ adblock_enabled = CONTENT_SETTING_BLOCK == content_settings->GetContentSetting(request->url(), GURL(), ContentSettingsType::CONTENT_SETTINGS_TYPE_ADS,
+ std::string());
+ }
+ }
+#endif
+
+ if (net::adblock_enabled
+ if (adblock_enabled
+ && content::RESOURCE_TYPE_MAIN_FRAME != info->GetResourceType()
+ && net::adblock_intercept(request->url(),
+ request->site_for_cookies().host(),
+ request->initiator()->host(),
+ info->GetResourceType())) {
+ block = true;
+ }
@@ -266,8 +277,8 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
+
extensions_delegate_->ForwardStartRequestStatus(request);
if (!enable_referrers_->GetValue())
@@ -307,6 +360,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
bool force_safe_search =
@@ -248,6 +304,8 @@ int ChromeNetworkDelegate::OnBeforeURLRequest(
return rv;
}
@@ -275,35 +286,23 @@ diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/
+
int ChromeNetworkDelegate::OnBeforeStartTransaction(
net::URLRequest* request,
const net::CompletionCallback& callback,
net::CompletionOnceCallback callback,
diff --git a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
--- a/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
+++ b/chrome/browser/subresource_filter/subresource_filter_content_settings_manager.cc
@@ -22,6 +22,7 @@
@@ -19,6 +19,7 @@
#include "components/history/core/browser/history_service.h"
#include "components/keyed_service/core/service_access_type.h"
#include "components/subresource_filter/core/browser/subresource_filter_features.h"
#include "url/gurl.h"
+#include "net/url_request/adblock_intercept.h"
namespace {
@@ -160,9 +161,11 @@ void SubresourceFilterContentSettingsManager::OnContentSettingChanged(
if (global_setting == CONTENT_SETTING_ALLOW) {
ChromeSubresourceFilterClient::LogAction(
kActionContentSettingsAllowedGlobal);
+ net::adblock_enabled = false;
} else if (global_setting == CONTENT_SETTING_BLOCK) {
ChromeSubresourceFilterClient::LogAction(
kActionContentSettingsBlockedGlobal);
+ net::adblock_enabled = true;
} else {
NOTREACHED();
}
diff --git a/net/BUILD.gn b/net/BUILD.gn
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -1791,6 +1791,13 @@ component("net") {
"//third_party/zlib",
@@ -1715,6 +1715,13 @@ component("net") {
"url_request/websocket_handshake_userdata_key.h",
]
+ if (is_android) {
@@ -320,7 +319,7 @@ diff --git a/net/url_request/adblock_intercept.cc b/net/url_request/adblock_inte
new file mode 100644
--- /dev/null
+++ b/net/url_request/adblock_intercept.cc
@@ -0,0 +1,323 @@
@@ -0,0 +1,321 @@
+#include "url/gurl.h"
+#include "content/public/common/resource_type.h"
+
@@ -343,8 +342,6 @@ new file mode 100644
+
+namespace net {
+
+bool adblock_enabled = true;
+
+const char *LOG_TAG = "Bromite";
+
+#ifdef ADB_TESTER
@@ -648,7 +645,7 @@ diff --git a/net/url_request/adblock_intercept.h b/net/url_request/adblock_inter
new file mode 100644
--- /dev/null
+++ b/net/url_request/adblock_intercept.h
@@ -0,0 +1,19 @@
@@ -0,0 +1,17 @@
+#ifndef NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
+#define NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
+
@@ -663,8 +660,6 @@ new file mode 100644
+
+int adblock_intercept(const GURL &url, const std::string &origin_host, content::ResourceType resource_type);
+
+extern bool adblock_enabled;
+
+} // namespace net
+
+#endif // NET_URL_REQUEST_ADBLOCK_INTERCEPT_H_
@@ -6,8 +6,8 @@ Return fixed base latency
---
third_party/blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++----
third_party/blink/renderer/modules/webaudio/audio_buffer.idl | 4 ++--
third_party/blink/renderer/modules/webaudio/audio_context.cc | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
third_party/blink/renderer/modules/webaudio/audio_context.cc | 1 +
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
--- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
@@ -43,15 +43,14 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/thir
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc
--- a/third_party/blink/renderer/modules/webaudio/audio_context.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc
@@ -271,7 +271,7 @@ void AudioContext::StopRendering() {
}
@@ -314,6 +314,7 @@ void AudioContext::StopRendering() {
double AudioContext::baseLatency() const {
- return FramesPerBuffer() / static_cast<double>(sampleRate());
DCHECK(IsMainThread());
DCHECK(destination());
+ return 0.04;
}
} // namespace blink
// TODO(hongchan): Due to the incompatible constructor between
// AudioDestinationNode and DefaultAudioDestinationNode, casting directly from
--
2.7.4
@@ -64,9 +64,9 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
+#include "base/rand_util.h"
+#include "base/logging.h"
#include "base/numerics/checked_math.h"
#include "gpu/command_buffer/client/gles2_interface.h"
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
#include "third_party/blink/renderer/platform/graphics/graphics_context.h"
@@ -15,6 +17,7 @@
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkImage.h"
@@ -75,7 +75,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
#include "third_party/skia/include/gpu/GrContext.h"
namespace blink {
@@ -161,10 +164,161 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
@@ -154,10 +157,161 @@ bool StaticBitmapImage::ConvertToArrayBufferContents(
DCHECK(read_pixels_successful ||
!sk_image->bounds().intersect(SkIRect::MakeXYWH(
rect.X(), rect.Y(), info.width(), info.height())));
@@ -31,7 +31,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
#include "third_party/blink/renderer/bindings/core/v8/dictionary.h"
@@ -1356,6 +1357,15 @@ DOMRectList* Element::getClientRects() {
@@ -1382,6 +1383,15 @@ DOMRectList* Element::getClientRects() {
DCHECK(element_layout_object);
GetDocument().AdjustFloatQuadsForScrollAndAbsoluteZoom(
quads, *element_layout_object);
@@ -47,7 +47,7 @@ diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/
return DOMRectList::Create(quads);
}
@@ -1373,6 +1383,13 @@ DOMRect* Element::getBoundingClientRect() {
@@ -1399,6 +1409,13 @@ DOMRect* Element::getBoundingClientRect() {
DCHECK(element_layout_object);
GetDocument().AdjustFloatRectForScrollAndAbsoluteZoom(result,
*element_layout_object);
@@ -70,10 +70,10 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
+#include "base/rand_util.h"
+
#include "third_party/blink/renderer/bindings/core/v8/exception_state.h"
#include "third_party/blink/renderer/bindings/core/v8/string_or_trusted_html.h"
#include "third_party/blink/renderer/core/dom/character_data.h"
#include "third_party/blink/renderer/core/dom/container_node.h"
@@ -1575,11 +1577,27 @@ DOMRectList* Range::getClientRects() const {
@@ -1604,11 +1606,27 @@ DOMRectList* Range::getClientRects() const {
Vector<FloatQuad> quads;
GetBorderAndTextQuads(quads);
@@ -105,7 +105,7 @@ diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/re
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.cc
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.cc
@@ -47,6 +47,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
@@ -48,6 +48,24 @@ float TextMetrics::GetFontBaseline(const TextBaseline& text_baseline,
return 0;
}
@@ -133,7 +133,7 @@ diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.cc b/third
diff --git a/third_party/blink/renderer/core/html/canvas/text_metrics.h b/third_party/blink/renderer/core/html/canvas/text_metrics.h
--- a/third_party/blink/renderer/core/html/canvas/text_metrics.h
+++ b/third_party/blink/renderer/core/html/canvas/text_metrics.h
@@ -67,6 +67,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
@@ -68,6 +68,8 @@ class CORE_EXPORT TextMetrics final : public ScriptWrappable {
static float GetFontBaseline(const TextBaseline&, const FontMetrics&);
@@ -154,7 +154,7 @@ diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/public/platform/web_scroll_into_view_params.h"
@@ -776,8 +778,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
@@ -775,8 +777,14 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) {
else
direction = ToTextDirection(GetState().GetDirection(), canvas());
@@ -10,15 +10,15 @@ Originally from http://bazaar.launchpad.net/~saiarcot895/chromium-browser/chromi
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
--- a/chrome/common/chrome_content_client.cc
+++ b/chrome/common/chrome_content_client.cc
@@ -536,7 +536,7 @@ void ChromeContentClient::AddContentDecryptionModules(
if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
&supports_persistent_license,
&encryption_modes_supported)) {
@@ -532,7 +532,7 @@ void ChromeContentClient::AddContentDecryptionModules(
base::FilePath cdm_path;
content::CdmCapability capability;
if (IsWidevineAvailable(&cdm_path, &capability)) {
- const base::Version version(WIDEVINE_CDM_VERSION_STRING);
+ const base::Version version("1.0.123.456");
DCHECK(version.IsValid());
cdms->push_back(content::CdmInfo(
cdms->push_back(
--
2.7.4
@@ -9,7 +9,7 @@ Subject: Disable metrics on all I/O threads
diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc
--- a/chrome/browser/profiles/profile_io_data.cc
+++ b/chrome/browser/profiles/profile_io_data.cc
@@ -949,7 +949,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
@@ -922,7 +922,7 @@ void ProfileIOData::InitializeMetricsEnabledStateOnUIThread() {
bool ProfileIOData::GetMetricsEnabledStateOnIOThread() const {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -11,19 +11,19 @@ See also: https://tools.ietf.org/id/draft-ietf-doh-dns-over-https-02.txt
chrome/browser/about_flags.cc | 12 +++++++++
chrome/browser/flag_descriptions.cc | 3 +++
chrome/browser/flag_descriptions.h | 3 +++
chrome/browser/io_thread.cc | 14 +++++++----
.../browser/net/system_network_context_manager.cc | 12 +++++----
.../common/network_features.cc | 5 ++--
.../common/network_features.h | 5 ++--
.../common/network_switch_list.h | 4 +++
net/base/load_flags_list.h | 6 +++++
net/dns/dns_transaction.cc | 29 +++-------------------
net/url_request/url_request_http_job.cc | 28 +++++++++++++--------
10 files changed, 64 insertions(+), 45 deletions(-)
net/url_request/url_request_http_job.cc | 26 +++++++++++--------
10 files changed, 61 insertions(+), 44 deletions(-)
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -400,6 +400,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
@@ -421,6 +421,12 @@ const FeatureEntry::Choice kChromeHomeSwipeLogicChoices[] = {
switches::kChromeHomeSwipeLogicType, "velocity"},
};
@@ -36,7 +36,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
#endif // OS_ANDROID
const FeatureEntry::Choice kNumRasterThreadsChoices[] = {
@@ -3489,6 +3495,12 @@ const FeatureEntry kFeatureEntries[] = {
@@ -3517,6 +3523,12 @@ const FeatureEntry kFeatureEntries[] = {
FEATURE_VALUE_TYPE(features::kAsyncDns)},
#endif // defined(OS_ANDROID)
@@ -52,7 +52,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1952,6 +1952,9 @@ const char kAndroidPaymentAppsDescription[] =
@@ -2112,6 +2112,9 @@ const char kAndroidPaymentAppsDescription[] =
const char kAsyncDnsName[] = "Async DNS resolver";
const char kAsyncDnsDescription[] = "Enables the built-in DNS resolver.";
@@ -65,7 +65,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1188,6 +1188,9 @@ extern const char kAndroidPaymentAppsDescription[];
@@ -1284,6 +1284,9 @@ extern const char kAppNotificationStatusMessagingDescription[];
extern const char kAsyncDnsName[];
extern const char kAsyncDnsDescription[];
@@ -75,39 +75,35 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio
extern const char kAutofillAccessoryViewName[];
extern const char kAutofillAccessoryViewDescription[];
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -50,6 +50,7 @@
#include "components/metrics/metrics_service.h"
#include "components/net_log/chrome_net_log.h"
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -23,6 +23,7 @@
#include "chrome/common/chrome_features.h"
#include "chrome/common/pref_names.h"
#include "components/network_session_configurator/common/network_features.h"
+#include "components/network_session_configurator/common/network_switches.h"
#include "components/policy/core/common/policy_namespace.h"
#include "components/policy/core/common/policy_service.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_registry_simple.h"
@@ -373,13 +374,16 @@ IOThread::IOThread(
base::Unretained(this)));
dns_client_enabled_.MoveToThread(io_thread_proxy);
@@ -370,11 +371,12 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) {
std::make_unique<base::ListValue>();
std::unique_ptr<base::ListValue> default_doh_server_methods =
std::make_unique<base::ListValue>();
- if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
- base::Value server(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "server"));
- base::Value method(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "method"));
+ std::string dnsOverHttpsServer =
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kDnsOverHttpsServer);
+ if (!dnsOverHttpsServer.empty()) {
base::Value specs(base::Value::Type::LIST);
base::Value methods(base::Value::Type::LIST);
- base::Value spec(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "server"));
- base::Value method(variations::GetVariationParamValueByFeature(
- features::kDnsOverHttps, "method"));
+
+ base::Value spec(dnsOverHttpsServer);
+ base::Value server(dnsOverHttpsServer);
+ base::Value method("POST");
+
if (spec.GetString().size() > 0) {
specs.GetList().push_back(std::move(spec));
methods.GetList().push_back(std::move(method));
if (!server.GetString().empty()) {
default_doh_servers->GetList().push_back(std::move(server));
default_doh_server_methods->GetList().push_back(std::move(method));
diff --git a/components/network_session_configurator/common/network_features.cc b/components/network_session_configurator/common/network_features.cc
--- a/components/network_session_configurator/common/network_features.cc
+++ b/components/network_session_configurator/common/network_features.cc
@@ -155,20 +151,23 @@ diff --git a/components/network_session_configurator/common/network_switch_list.
diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h
--- a/net/base/load_flags_list.h
+++ b/net/base/load_flags_list.h
@@ -92,3 +92,9 @@ LOAD_FLAG(DISABLE_CONNECTION_MIGRATION, 1 << 16)
// Indicates that the cache should not check that the request matches the
// response's vary header.
LOAD_FLAG(SKIP_VARY_CHECK, 1 << 17)
@@ -92,6 +92,12 @@ LOAD_FLAG(MAYBE_USER_GESTURE, 1 << 14)
LOAD_FLAG(DO_NOT_USE_EMBEDDED_IDENTITY, 1 << 15)
// Indicates that this request is not to be migrated to a cellular network when
+
+// This load will not send Accept-Language or User-Agent headers, and not
+// advertise brotli encoding.
+// Used to comply with IETF (draft) DNS-over-HTTPS:
+// "Implementors SHOULD NOT set non-essential HTTP headers in DoH client requests."
+LOAD_FLAG(MINIMAL_HEADERS, 1 << 18)
// QUIC connection migration is enabled.
LOAD_FLAG(DISABLE_CONNECTION_MIGRATION_TO_CELLULAR, 1 << 16)
diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
--- a/net/dns/dns_transaction.cc
+++ b/net/dns/dns_transaction.cc
@@ -390,30 +390,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
@@ -389,30 +389,8 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
HttpRequestHeaders extra_request_headers;
extra_request_headers.SetHeader("Accept", kDnsOverHttpResponseContentType);
@@ -201,7 +200,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
net_log_ = request_->net_log();
if (use_post) {
@@ -431,6 +409,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
@@ -430,6 +408,7 @@ class DnsHTTPAttempt : public DnsAttempt, public URLRequest::Delegate {
request_->SetLoadFlags(request_->load_flags() | LOAD_DISABLE_CACHE |
LOAD_BYPASS_PROXY | LOAD_DO_NOT_SEND_COOKIES |
LOAD_DO_NOT_SAVE_COOKIES |
@@ -209,7 +208,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
LOAD_DO_NOT_SEND_AUTH_DATA);
}
@@ -850,7 +829,7 @@ class DnsTransactionImpl : public DnsTransaction,
@@ -849,7 +828,7 @@ class DnsTransactionImpl : public DnsTransaction,
had_tcp_attempt_(false),
doh_attempt_(false),
first_server_index_(0),
@@ -221,7 +220,7 @@ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -434,19 +434,23 @@ void URLRequestHttpJob::Start() {
@@ -434,21 +434,25 @@ void URLRequestHttpJob::Start() {
// plugin could set a referrer although sending the referrer is inhibited.
request_info_.extra_headers.RemoveHeader(HttpRequestHeaders::kReferer);
@@ -229,18 +228,19 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
- // instance WebCore::FrameLoader::HideReferrer.
- if (referrer.is_valid()) {
- request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
- referrer.spec());
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
+ // Our consumer should have made sure that this is a safe referrer. See for
+ // instance WebCore::FrameLoader::HideReferrer.
+ if (referrer.is_valid()) {
+ request_info_.extra_headers.SetHeader(HttpRequestHeaders::kReferer,
+ referrer.spec());
referrer.spec());
+ }
}
request_info_.token_binding_referrer = request_->token_binding_referrer();
// This should be kept in sync with the corresponding code in
// URLRequest::GetUserAgent.
- request_info_.extra_headers.SetHeaderIfMissing(
+ if (!(request_info_.load_flags & LOAD_MINIMAL_HEADERS)) {
+ request_info_.extra_headers.SetHeaderIfMissing(
@@ -251,7 +251,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
AddExtraHeaders();
AddCookieHeaderAndStart();
@@ -663,10 +667,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
@@ -666,10 +670,12 @@ void URLRequestHttpJob::AddExtraHeaders() {
HttpRequestHeaders::kAcceptEncoding)) {
// Advertise "br" encoding only if transferred data is opaque to proxy.
bool advertise_brotli = false;
@@ -268,7 +268,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque
}
}
@@ -683,7 +689,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
@@ -686,7 +692,7 @@ void URLRequestHttpJob::AddExtraHeaders() {
advertised_encodings);
}
@@ -4,34 +4,26 @@ Subject: Always respect async dns flag (regardless of SDK version)
Do not read experiment value for cronet async DNS configuration
---
chrome/browser/io_thread.cc | 10 +---------
components/cronet/url_request_context_config.cc | 3 ++-
2 files changed, 3 insertions(+), 10 deletions(-)
chrome/browser/net/system_network_context_manager.cc | 2 +-
components/cronet/url_request_context_config.cc | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc
--- a/chrome/browser/io_thread.cc
+++ b/chrome/browser/io_thread.cc
@@ -252,15 +252,7 @@ void UpdateMetricsUsagePrefsOnUIThread(const std::string& service_name,
// Check the AsyncDns field trial and return true if it should be enabled. On
diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc
--- a/chrome/browser/net/system_network_context_manager.cc
+++ b/chrome/browser/net/system_network_context_manager.cc
@@ -180,7 +180,7 @@ void OnAuthPrefsChanged(const std::string& pref_name) {
// Android this includes checking the Android version in the field trial.
bool ShouldEnableAsyncDns() {
- bool feature_can_be_enabled = true;
bool feature_can_be_enabled = true;
-#if defined(OS_ANDROID)
- int min_sdk =
- base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
- if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
- feature_can_be_enabled = false;
-#endif
- return feature_can_be_enabled &&
- base::FeatureList::IsEnabled(features::kAsyncDns);
+ return base::FeatureList::IsEnabled(features::kAsyncDns);
}
} // namespace
+#if 0
int min_sdk =
base::GetFieldTrialParamByFeatureAsInt(features::kAsyncDns, "min_sdk", 0);
if (base::android::BuildInfo::GetInstance()->sdk_int() < min_sdk)
diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc
--- a/components/cronet/url_request_context_config.cc
+++ b/components/cronet/url_request_context_config.cc
@@ -366,7 +366,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
@@ -390,7 +390,8 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions(
effective_experimental_options->Remove(it.key(), nullptr);
continue;
}
@@ -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
@@ -798,6 +798,11 @@ const FeatureEntry::Choice kForceEffectiveConnectionTypeChoices[] = {
@@ -839,6 +839,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 ==
@@ -2398,6 +2403,9 @@ const FeatureEntry kFeatureEntries[] = {
@@ -2432,6 +2437,9 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kMaterialDesignIncognitoNTPName,
flag_descriptions::kMaterialDesignIncognitoNTPDescription, kOsAndroid,
FEATURE_VALUE_TYPE(features::kMaterialDesignIncognitoNTP)},
@@ -43,13 +43,13 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -975,6 +975,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
@@ -1065,6 +1065,10 @@ const char kMaterialDesignIncognitoNTPDescription[] =
"If enabled, the Incognito New Tab page uses the new material design with "
"a better readable text.";
+const char kMaxConnectionsPerHostName[] = "Maximum connections per host";
+const char kMaxConnectionsPerHostDescription[] =
+ "Customize maximum allowed connections per host (experimental).";
+ "Customize maximum allowed connections per host.";
+
const char kMediaRouterCastAllowAllIPsName[] =
"Connect to Cast devices on all IP addresses";
@@ -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
@@ -613,6 +613,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
@@ -667,6 +667,9 @@ extern const char kMarkHttpAsWarningAndDangerousOnPasswordsAndCreditCards[];
extern const char kMaterialDesignIncognitoNTPName[];
extern const char kMaterialDesignIncognitoNTPDescription[];
@@ -14,17 +14,17 @@ Subject: Add flag to show/hide NTP tiles
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
@@ -1915,6 +1915,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kChromeModernAlternateCardLayoutName,
flag_descriptions::kChromeModernAlternateCardLayoutDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kChromeModernAlternateCardLayout)},
@@ -1902,6 +1902,10 @@ const FeatureEntry kFeatureEntries[] = {
SINGLE_VALUE_TYPE(switches::kHostedAppQuitNotification)},
#endif // OS_MACOSX
#if defined(OS_ANDROID)
+ {"hide-ntp-tiles",
+ flag_descriptions::kHideNTPTilesName,
+ flag_descriptions::kHideNTPTilesDescription, kOsAndroid,
+ SINGLE_VALUE_TYPE(switches::kHideNTPTiles)},
{"force-enable-home-page-button", flag_descriptions::kHomePageButtonName,
flag_descriptions::kHomePageButtonDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kHomePageButtonForceEnabled)},
{"disable-pull-to-refresh-effect",
flag_descriptions::kPullToRefreshEffectName,
flag_descriptions::kPullToRefreshEffectDescription, kOsAndroid,
diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
--- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc
+++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -40,7 +40,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
#include "chrome/browser/history/history_service_factory.h"
#include "chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.h"
#include "chrome/browser/profiles/profile.h"
@@ -167,6 +169,10 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
@@ -162,6 +164,10 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
std::vector<int> sources;
std::vector<int> section_types;
std::vector<int64_t> data_generation_times;
@@ -51,7 +51,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
for (const auto& section : sections) {
const NTPTilesVector& tiles = section.second;
section_types.resize(section_types.size() + tiles.size(),
@@ -181,6 +187,8 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
@@ -176,6 +182,8 @@ void MostVisitedSitesBridge::JavaObserver::OnURLsAvailable(
tile.data_generation_time.ToJavaTime());
}
}
@@ -63,7 +63,7 @@ diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/br
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -106,6 +106,10 @@ const char kBackgroundVideoTrackOptimizationDescription[] =
@@ -141,6 +141,10 @@ const char kBackgroundVideoTrackOptimizationDescription[] =
"Disable video tracks when the video is played in the background to "
"optimize performance.";
@@ -77,7 +77,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
@@ -92,6 +92,9 @@ extern const char kAv1DecoderDescription[];
@@ -113,6 +113,9 @@ extern const char kAv1DecoderDescription[];
extern const char kBackgroundVideoTrackOptimizationName[];
extern const char kBackgroundVideoTrackOptimizationDescription[];
@@ -0,0 +1,113 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 29 Aug 2018 11:03:44 +0200
Subject: Add custom tab intents privacy option
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../org/chromium/chrome/browser/LaunchIntentDispatcher.java | 2 ++
.../chrome/browser/preferences/privacy/PrivacyPreferences.java | 10 ++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 7 +++++++
5 files changed, 27 insertions(+)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -18,6 +18,9 @@
<item name="top_controls_show_threshold" format="float" type="dimen">0.5</item>
<item name="top_controls_hide_threshold" format="float" type="dimen">0.5</item>
+ <string name="allow_custom_tab_intents_title">Allow custom tab intents from applications</string>
+ <string name="allow_custom_tab_intents_summary">When disabled, all custom tab intents will be processed as regular navigation instead</string>
+
<!-- The number of thumbnails that the thumbnail cache can hold. -->
<integer name="default_thumbnail_cache_size">5</integer>
<!-- The number of approximation thumbnails that the approximation cache can hold. -->
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -52,6 +52,11 @@
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.preferences.privacy.ClearBrowsingDataTabsFragment" />
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="allow_custom_tab_intents"
+ android:title="@string/allow_custom_tab_intents_title"
+ android:summary="@string/allow_custom_tab_intents_summary"
+ android:defaultValue="false" />
<org.chromium.chrome.browser.preferences.TextMessageWithLinkAndIconPreference
android:key="sync_and_services_link"
android:summary="@string/privacy_sync_and_services_link"/>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.metrics.MediaNotificationUma;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferences;
import org.chromium.chrome.browser.searchwidget.SearchActivity;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.DocumentModeAssassin;
@@ -274,6 +275,7 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
*/
public static boolean isCustomTabIntent(Intent intent) {
if (intent == null) return false;
+ if (!ContextUtils.getAppSharedPreferences().getBoolean(PrivacyPreferences.PREF_ALLOW_CUSTOM_TAB_INTENTS, false)) return false;
if (CustomTabsIntent.shouldAlwaysUseBrowserUI(intent)
|| !intent.hasExtra(CustomTabsIntent.EXTRA_SESSION)) {
return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -41,6 +41,7 @@ public class PrivacyPreferences extends PreferenceFragment
"safe_browsing_extended_reporting";
private static final String PREF_SAFE_BROWSING_SCOUT_REPORTING =
"safe_browsing_scout_reporting";
+ public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents";
private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
@@ -134,6 +135,11 @@ public class PrivacyPreferences extends PreferenceFragment
? PREF_SAFE_BROWSING_EXTENDED_REPORTING : PREF_SAFE_BROWSING_SCOUT_REPORTING;
preferenceScreen.removePreference(findPreference(extended_reporting_pref_to_remove));
+ ChromeBaseCheckBoxPreference allowCustomTabIntentsPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_ALLOW_CUSTOM_TAB_INTENTS);
+ allowCustomTabIntentsPref.setOnPreferenceChangeListener(this);
+ allowCustomTabIntentsPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+
ChromeBaseCheckBoxPreference safeBrowsingPref =
(ChromeBaseCheckBoxPreference) findPreference(PREF_SAFE_BROWSING);
safeBrowsingPref.setOnPreferenceChangeListener(this);
@@ -153,6 +159,10 @@ public class PrivacyPreferences extends PreferenceFragment
|| PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) {
PrefServiceBridge.getInstance().setSafeBrowsingExtendedReportingEnabled(
(boolean) newValue);
+ } else if (PREF_ALLOW_CUSTOM_TAB_INTENTS.equals(key)) {
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
+ sharedPreferencesEditor.apply();
} else if (PREF_NETWORK_PREDICTIONS.equals(key)) {
PrefServiceBridge.getInstance().setNetworkPredictionEnabled((boolean) newValue);
recordNetworkPredictionEnablingUMA((boolean) newValue);
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3615,6 +3615,13 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
Browse
</message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_TITLE" desc="Text for 'Allow custom tab intents' settings-privacy option.">
+ Allow custom tab intents
+ </message>
+ <message name="IDS_ALLOW_CUSTOM_TAB_INTENTS_SUMMARY" desc="Summary text for 'Allow custom tab intents' settings-privacy option.">
+ Allow applications to open custom tab intents, similar to webview.
+ </message>
+
<!-- Migration strings -->
<message name="IDS_UPDATING_CHROME" desc="String that indicates that Chrome is updating">
Updating Chrome...
--
2.7.4
@@ -0,0 +1,200 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Tue, 28 Aug 2018 23:27:23 +0200
Subject: Add privacy option to keep cookies until session exit
---
chrome/android/java/res/values/values.xml | 3 +++
.../android/java/res/xml/website_preferences.xml | 7 +++++++
.../browser/preferences/PrefServiceBridge.java | 10 ++++++++++
.../website/SingleCategoryPreferences.java | 23 ++++++++++++++++++++++
.../java/strings/android_chrome_strings.grd | 6 ++++++
.../android/preferences/pref_service_bridge.cc | 19 ++++++++++++++++++
6 files changed, 68 insertions(+)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -39,6 +39,9 @@
<integer name="reload_button_level_reload">0</integer>
<integer name="reload_button_level_stop">1</integer>
+ <string name="allow_cookies_session_only_title">Keep cookies only until you quit your browser</string>
+ <string name="allow_cookies_session_only_summary">When enabled, all cookies will be erased when the browsing session is over</string>
+
<!-- Help and Feedback
These constants should be in sync with the context names on go/mobilehelprecs.
If the context ID cannot be found, the default help page will be shown to the user.-->
diff --git a/chrome/android/java/res/xml/website_preferences.xml b/chrome/android/java/res/xml/website_preferences.xml
--- a/chrome/android/java/res/xml/website_preferences.xml
+++ b/chrome/android/java/res/xml/website_preferences.xml
@@ -19,6 +19,13 @@
android:summary="@string/allow_third_party_cookies_summary"
android:defaultValue="true"
android:persistent="false" />
+ <!-- A toggle for cookies to be saved only until session exit, only shown for the Cookies category. -->
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="cookies_session_only"
+ android:title="@string/allow_cookies_session_only_title"
+ android:summary="@string/allow_cookies_session_only_summary"
+ android:defaultValue="true"
+ android:persistent="false" />
<!-- A toggle for enabling vibration in notifications. -->
<org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
android:key="notifications_vibrate"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -245,6 +245,10 @@ public class PrefServiceBridge {
return nativeGetBlockThirdPartyCookiesEnabled();
}
+ public boolean isCookiesSessionOnlyEnabled() {
+ return nativeGetCookiesSessionOnlyEnabled();
+ }
+
/**
* @return Whether third-party cookie blocking is configured by policy
*/
@@ -630,6 +634,10 @@ public class PrefServiceBridge {
nativeSetBlockThirdPartyCookiesEnabled(enabled);
}
+ public void setCookiesSessionOnlyEnabled(boolean enabled) {
+ nativeSetCookiesSessionOnlyEnabled(enabled);
+ }
+
public void setDoNotTrackEnabled(boolean enabled) {
nativeSetDoNotTrackEnabled(enabled);
}
@@ -1026,6 +1034,7 @@ public class PrefServiceBridge {
private native boolean nativeGetAutoplayEnabled();
private native boolean nativeGetBackgroundSyncEnabled();
private native boolean nativeGetBlockThirdPartyCookiesEnabled();
+ private native boolean nativeGetCookiesSessionOnlyEnabled();
private native boolean nativeGetBlockThirdPartyCookiesManaged();
private native boolean nativeGetRememberPasswordsEnabled();
private native boolean nativeGetPasswordManagerAutoSigninEnabled();
@@ -1073,6 +1082,7 @@ public class PrefServiceBridge {
private native void nativeSetAllowCookiesEnabled(boolean allow);
private native void nativeSetBackgroundSyncEnabled(boolean allow);
private native void nativeSetBlockThirdPartyCookiesEnabled(boolean enabled);
+ private native void nativeSetCookiesSessionOnlyEnabled(boolean enabled);
private native void nativeSetClipboardEnabled(boolean allow);
private native void nativeSetDoNotTrackEnabled(boolean enabled);
private native void nativeSetRememberPasswordsEnabled(boolean allow);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
@@ -104,6 +104,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
// Keys for individual preferences.
public static final String READ_WRITE_TOGGLE_KEY = "read_write_toggle";
public static final String THIRD_PARTY_COOKIES_TOGGLE_KEY = "third_party_cookies";
+ public static final String COOKIES_SESSION_ONLY_TOGGLE_KEY = "cookies_session_only";
public static final String NOTIFICATIONS_VIBRATE_TOGGLE_KEY = "notifications_vibrate";
public static final String EXPLAIN_PROTECTED_MEDIA_KEY = "protected_content_learn_more";
private static final String ADD_EXCEPTION_KEY = "add_exception";
@@ -459,6 +460,7 @@ public class SingleCategoryPreferences extends PreferenceFragment
if (type == SiteSettingsCategory.Type.COOKIES) {
updateThirdPartyCookiesCheckBox();
+ updateCookiesSessionOnlyCheckBox();
} else if (type == SiteSettingsCategory.Type.NOTIFICATIONS) {
updateNotificationsVibrateCheckBox();
}
@@ -491,6 +493,8 @@ public class SingleCategoryPreferences extends PreferenceFragment
getInfoForOrigins();
} else if (THIRD_PARTY_COOKIES_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setBlockThirdPartyCookiesEnabled(!((boolean) newValue));
+ } else if (COOKIES_SESSION_ONLY_TOGGLE_KEY.equals(preference.getKey())) {
+ PrefServiceBridge.getInstance().setCookiesSessionOnlyEnabled(!((boolean) newValue));
} else if (NOTIFICATIONS_VIBRATE_TOGGLE_KEY.equals(preference.getKey())) {
PrefServiceBridge.getInstance().setNotificationsVibrateEnabled((boolean) newValue);
}
@@ -734,6 +738,16 @@ public class SingleCategoryPreferences extends PreferenceFragment
getPreferenceScreen().removePreference(thirdPartyCookies);
}
+ // Configure/hide the keep cookies until session is over toggle, as needed.
+ Preference cookiesSessionOnly = getPreferenceScreen().findPreference(
+ COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
+ cookiesSessionOnly.setOnPreferenceChangeListener(this);
+ updateCookiesSessionOnlyCheckBox();
+ } else {
+ getPreferenceScreen().removePreference(cookiesSessionOnly);
+ }
+
// Configure/hide the notifications vibrate toggle, as needed.
Preference notificationsVibrate =
getPreferenceScreen().findPreference(NOTIFICATIONS_VIBRATE_TOGGLE_KEY);
@@ -847,6 +861,15 @@ public class SingleCategoryPreferences extends PreferenceFragment
preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged());
}
+ private void updateCookiesSessionOnlyCheckBox() {
+ ChromeBaseCheckBoxPreference cookiesSessionOnlyPref = (ChromeBaseCheckBoxPreference)
+ getPreferenceScreen().findPreference(COOKIES_SESSION_ONLY_TOGGLE_KEY);
+ cookiesSessionOnlyPref.setChecked(
+ !PrefServiceBridge.getInstance().isCookiesSessionOnlyEnabled());
+ cookiesSessionOnlyPref.setEnabled(PrefServiceBridge.getInstance().isCategoryEnabled(
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_COOKIES));
+ }
+
private void updateNotificationsVibrateCheckBox() {
ChromeBaseCheckBoxPreference preference =
(ChromeBaseCheckBoxPreference) getPreferenceScreen().findPreference(
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -861,6 +861,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_ALLOW_THIRD_PARTY_COOKIES_SUMMARY" desc="Summary text for Allow Third Party Cookies preference">
Third-party websites can save and read cookie data
</message>
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_TITLE" desc="Title for Allow Cookies Session Only preference">
+ Keep cookies only until you quit your browser
+ </message>
+ <message name="IDS_ALLOW_COOKIES_SESSION_ONLY_SUMMARY" desc="Summary text for Allow Session Only Cookies preference">
+ When enabled, all cookies will be erased when the browsing session is over
+ </message>
<message name="IDS_JAVASCRIPT_PERMISSION_TITLE" desc="Title of the permission to run javascript [CHAR-LIMIT=32]">
JavaScript
</message>
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -282,6 +282,14 @@ static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesEnabled(
return GetPrefService()->GetBoolean(prefs::kBlockThirdPartyCookies);
}
+static jboolean JNI_PrefServiceBridge_GetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ return CONTENT_SETTING_SESSION_ONLY == host_content_settings_map->GetDefaultContentSetting(CONTENT_SETTINGS_TYPE_COOKIES, nullptr);
+}
+
static jboolean JNI_PrefServiceBridge_GetBlockThirdPartyCookiesManaged(
JNIEnv* env,
const JavaParamRef<jobject>& obj) {
@@ -741,6 +749,17 @@ static void JNI_PrefServiceBridge_SetBlockThirdPartyCookiesEnabled(
GetPrefService()->SetBoolean(prefs::kBlockThirdPartyCookies, enabled);
}
+static void JNI_PrefServiceBridge_SetCookiesSessionOnlyEnabled(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jboolean enabled) {
+ HostContentSettingsMap* host_content_settings_map =
+ HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
+ host_content_settings_map->SetDefaultContentSetting(
+ CONTENT_SETTINGS_TYPE_COOKIES,
+ enabled ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_SESSION_ONLY);
+}
+
static void JNI_PrefServiceBridge_SetRememberPasswordsEnabled(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
--
2.7.4
@@ -1,117 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 8 Jul 2018 23:06:52 +0200
Subject: Add flag to disable custom tab intents
Custom tab intents allow apps to open URLs with a minimal browser UI;
this flag allows disabling this functionality altogether and all custom tab
intents will instead open as regular URLs.
---
.../java/src/org/chromium/chrome/browser/ChromeSwitches.java | 3 +++
.../src/org/chromium/chrome/browser/LaunchIntentDispatcher.java | 8 ++++++--
chrome/browser/about_flags.cc | 4 ++++
chrome/browser/flag_descriptions.cc | 4 ++++
chrome/browser/flag_descriptions.h | 3 +++
chrome/common/chrome_switches.cc | 3 +++
chrome/common/chrome_switches.h | 1 +
7 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeSwitches.java
@@ -177,6 +177,9 @@ public abstract class ChromeSwitches {
/** Open all custom tabs in a new task. Used only for experimental purposes. */
public static final String OPEN_CUSTOM_TABS_IN_NEW_TASK = "open-custom-tabs-in-new-task";
+ /** Disallow custom tab intents. */
+ public static final String DISALLOW_CUSTOM_TAB_INTENT = "disallow-custom-tab-intent";
+
/**
* Don't crash on undispatched VIEW intents sent to .Main.
* See ChromeTabbedActivity.maybeDispatchExplicitMainViewIntent() for more info.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -149,9 +149,13 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
recordIntentMetrics();
mIsVrIntent = VrIntentUtils.isVrIntent(mIntent);
- boolean isCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
+
+ if (!CommandLine.getInstance().hasSwitch(ChromeSwitches.DISALLOW_CUSTOM_TAB_INTENT)) {
+ mIsCustomTabIntent = (!mIsVrIntent && isCustomTabIntent(mIntent))
|| (mIsVrIntent && VrIntentUtils.isCustomTabVrIntent(mIntent));
- mIsCustomTabIntent = isCustomTabIntent;
+ } else {
+ mIsCustomTabIntent = false;
+ }
}
/**
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -1297,6 +1297,10 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kMediaScreenCaptureName,
flag_descriptions::kMediaScreenCaptureDescription, kOsAndroid,
FEATURE_VALUE_TYPE(chrome::android::kUserMediaScreenCapturing)},
+ {"disallow-custom-tab-intent",
+ flag_descriptions::kDisallowCustomTabIntentName,
+ flag_descriptions::kDisallowCustomTabIntentDescription, kOsAndroid,
+ SINGLE_DISABLE_VALUE_TYPE(switches::kDisallowCustomTabIntent)},
#endif // OS_ANDROID
// Native client is compiled out if ENABLE_NACL is not set.
#if BUILDFLAG(ENABLE_NACL)
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -2043,6 +2043,10 @@ const char kContextualSearchSecondTapDescription[] =
"Enables triggering on a second tap gesture even when Ranker would "
"normally suppress that tap.";
+const char kDisallowCustomTabIntentName[] = "Disallow custom tab intent";
+const char kDisallowCustomTabIntentDescription[] =
+ "Do not allow apps to open custom tab intents and use a regular browsing interaction instead.";
+
const char kDontPrefetchLibrariesName[] = "Don't Prefetch Libraries";
const char kDontPrefetchLibrariesDescription[] =
"Don't prefetch libraries after loading.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1244,6 +1244,9 @@ extern const char kContextualSearchRankerQueryDescription[];
extern const char kContextualSearchSecondTapName[];
extern const char kContextualSearchSecondTapDescription[];
+extern const char kDisallowCustomTabIntentName[];
+extern const char kDisallowCustomTabIntentDescription[];
+
extern const char kDontPrefetchLibrariesName[];
extern const char kDontPrefetchLibrariesDescription[];
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -218,6 +218,9 @@ const char kDisableExtensions[] = "disable-extensions";
// Disable extensions except those specified in a comma-separated list.
const char kDisableExtensionsExcept[] = "disable-extensions-except";
+// Disallow apps to use custom tab intents and use a regular URL open intent instead.
+const char kDisallowCustomTabIntent[] = "disallow-custom-tab-intent";
+
// Disable checking for user opt-in for extensions that want to inject script
// into file URLs (ie, always allow it). This is used during automated testing.
const char kDisableExtensionsFileAccessCheck[] =
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -72,6 +72,7 @@ extern const char kDisableCastStreamingHWEncoding[];
extern const char kDisableClientSidePhishingDetection[];
extern const char kDisableComponentExtensionsWithBackgroundPages[];
extern const char kDisableComponentUpdate[];
+extern const char kDisallowCustomTabIntent[];
extern const char kDisableDefaultApps[];
extern const char kDisableDeviceDiscoveryNotifications[];
extern const char kDisableDomainReliability[];
--
2.7.4
@@ -214,7 +214,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import org.chromium.chrome.browser.favicon.LargeIconBridge;
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader;
import org.chromium.chrome.browser.profiles.Profile;
@@ -30,6 +31,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
@@ -31,6 +32,7 @@ import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
import org.chromium.chrome.browser.widget.selection.SelectableListToolbar.SearchDelegate;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
import org.chromium.components.bookmarks.BookmarkId;
@@ -222,7 +222,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
import java.util.Stack;
@@ -53,6 +55,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
@@ -55,6 +57,7 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
private Activity mActivity;
private ViewGroup mMainView;
private BookmarkModel mBookmarkModel;
@@ -230,7 +230,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
private BookmarkUndoController mUndoController;
private final ObserverList<BookmarkUIObserver> mUIObservers = new ObserverList<>();
private BasicNativePage mNativePage;
@@ -269,6 +272,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
@@ -267,6 +270,13 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
}
/**
@@ -244,7 +244,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
* @return Current URL representing the UI state of bookmark manager. If no state has been shown
* yet in this session, on phone return last used state stored in preference; on tablet
* return the url previously set by {@link #updateForUrl(String)}.
@@ -416,6 +426,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
@@ -414,6 +424,16 @@ public class BookmarkManager implements BookmarkDelegate, SearchDelegate,
}
@Override
@@ -291,7 +291,7 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -135,6 +135,10 @@ jumbo_split_static_library("browser") {
@@ -137,6 +137,10 @@ jumbo_split_static_library("browser") {
"bitmap_fetcher/bitmap_fetcher_service.h",
"bitmap_fetcher/bitmap_fetcher_service_factory.cc",
"bitmap_fetcher/bitmap_fetcher_service_factory.h",
@@ -302,7 +302,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"bookmarks/bookmark_model_factory.cc",
"bookmarks/bookmark_model_factory.h",
"bookmarks/bookmark_stats.cc",
@@ -2422,8 +2426,6 @@ jumbo_split_static_library("browser") {
@@ -2479,8 +2483,6 @@ jumbo_split_static_library("browser") {
"banners/app_banner_infobar_delegate_desktop.h",
"banners/app_banner_manager_desktop.cc",
"banners/app_banner_manager_desktop.h",
@@ -311,7 +311,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"certificate_viewer.h",
"chrome_browser_field_trials_desktop.cc",
"chrome_browser_field_trials_desktop.h",
@@ -2510,8 +2512,6 @@ jumbo_split_static_library("browser") {
@@ -2569,8 +2571,6 @@ jumbo_split_static_library("browser") {
"importer/importer_uma.h",
"importer/in_process_importer_bridge.cc",
"importer/in_process_importer_bridge.h",
@@ -672,7 +672,7 @@ diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -434,6 +434,9 @@ static_library("common") {
@@ -436,6 +436,9 @@ static_library("common") {
sources += [
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
@@ -694,7 +694,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
"importer/bookmarks_file_importer.cc",
"importer/bookmarks_file_importer.h",
"importer/edge_database_reader_win.cc",
@@ -160,6 +158,11 @@ static_library("utility") {
@@ -158,6 +156,11 @@ static_library("utility") {
]
}
@@ -3,26 +3,26 @@ Date: Tue, 17 Apr 2018 17:14:00 +0300
Subject: Add option to not persist tabs across sessions
---
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../src/org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../browser/preferences/privacy/PrivacyPreferences.java | 11 +++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 28 insertions(+), 1 deletion(-)
chrome/android/java/res/values/values.xml | 3 +++
chrome/android/java/res/xml/privacy_preferences.xml | 5 +++++
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 4 +++-
.../browser/preferences/privacy/PrivacyPreferences.java | 14 ++++++++++++++
chrome/android/java/strings/android_chrome_strings.grd | 6 ++++++
5 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -59,6 +59,9 @@
<string name="help_context_change_sync_passphrase">change_sync_passphrase</string>
@@ -66,6 +66,9 @@
<!-- TODO(peconn): Add help section. -->
<!-- <string name="help_context_suggestions">mobile_content_suggestions</string> -->
+
+ <string name="close_tabs_on_exit_title">Close tabs on exit</string>
+ <string name="close_tabs_on_exit_summary">Don\'t persist tabs between browsing sessions</string>
+
<!-- Our manage space activity. Default pre-KitKat to be nothing. -->
<string name="manage_space_activity"></string>
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -41,7 +41,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1004,8 +1004,10 @@ public class ChromeTabbedActivity
@@ -1037,8 +1037,10 @@ public class ChromeTabbedActivity
boolean hadCipherData =
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
@@ -56,17 +56,33 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -44,6 +44,7 @@ public class PrivacyPreferences extends PreferenceFragment
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.preferences.privacy;
+import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
@@ -15,6 +16,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
+import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
@@ -46,6 +48,7 @@ public class PrivacyPreferences extends PreferenceFragment
private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
private static final String PREF_DO_NOT_TRACK = "do_not_track";
private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data";
+ private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
private ManagedPreferenceDelegate mManagedPreferenceDelegate;
@@ -109,6 +110,11 @@ public class PrivacyPreferences extends PreferenceFragment
(ChromeBaseCheckBoxPreference) findPreference(PREF_CAN_MAKE_PAYMENT);
canMakePaymentPref.setOnPreferenceChangeListener(this);
@@ -145,6 +148,11 @@ public class PrivacyPreferences extends PreferenceFragment
safeBrowsingPref.setOnPreferenceChangeListener(this);
safeBrowsingPref.setManagedPreferenceDelegate(mManagedPreferenceDelegate);
+ ChromeBaseCheckBoxPreference closeTabsOnExitPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_CLOSE_TABS_ON_EXIT);
@@ -76,22 +92,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/pri
updateSummaries();
}
@@ -148,6 +154,11 @@ public class PrivacyPreferences extends PreferenceFragment
}
/**
+ else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
@@ -171,6 +179,12 @@ public class PrivacyPreferences extends PreferenceFragment
} else if (PREF_CAN_MAKE_PAYMENT.equals(key)) {
PrefServiceBridge.getInstance().setBoolean(
Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue);
+ } else if (PREF_CLOSE_TABS_ON_EXIT.equals(key)) {
+// PrefServiceBridge.getInstance().setBoolean(
+// Pref.CLOSE_TABS_ON_EXIT_ENABLED, (boolean) newValue);
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_CLOSE_TABS_ON_EXIT, (boolean)newValue);
+ sharedPreferencesEditor.apply();
+ }
* Updates the summaries for several preferences.
*/
public void updateSummaries() {
}
return true;
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -3450,6 +3450,12 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
@@ -3655,6 +3655,12 @@ However, you arent invisible. Going incognito doesnt hide your browsing fr
<message name="IDS_NEAR_OOM_INTERVENTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can resume what it was doing.">
Resume
</message>
@@ -111,7 +111,7 @@ new file mode 100644
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -243,6 +243,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -238,6 +238,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
// Observes when sync becomes ready to create the mContextReporter.
@@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.
private ProfileSyncService.SyncStateChangedListener mSyncStateChangedListener;
private ChromeFullscreenManager mFullscreenManager;
@@ -1593,6 +1594,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
@@ -1630,6 +1631,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
@@ -150,9 +150,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
private AppMenu mAppMenu;
private AppMenuDragHelper mAppMenuDragHelper;
private Menu mMenu;
@@ -166,6 +170,14 @@ public class AppMenuHandler {
@@ -167,6 +171,14 @@ public class AppMenuHandler {
if (mDelegate.shouldShowHeader(appRect.height())) {
headerView = mDelegate.getHeaderView();
headerResourceId = mDelegate.getHeaderResourceId();
}
+
+ if (ContextUtils.getAppSharedPreferences().getBoolean(PREF_ALWAYS_INCOGNITO, false)) {
@@ -163,7 +163,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenu
+ }
+
mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
footerResourceId, headerView, mHighlightMenuId);
footerResourceId, headerResourceId, mHighlightMenuId, showFromBottom);
mAppMenuDragHelper.onShow(startDragging);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java
@@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr
private static final ShareContextMenuItem SHARE_IMAGE =
new ShareContextMenuItem(R.drawable.ic_share_white_24dp,
R.string.contextmenu_share_image, R.id.contextmenu_share_image, false);
@@ -463,6 +465,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
@@ -479,6 +481,11 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator {
disabledOptions.add(ChromeContextMenuItem.OPEN_IN_INCOGNITO_TAB);
}
@@ -284,9 +284,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -615,6 +615,12 @@ CHAR-LIMIT guidelines:
<message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Summary for reporting data to detect bad apps/sites.">
Automatically send some system information and page content to Google to help detect dangerous apps and sites
@@ -676,6 +676,12 @@ CHAR-LIMIT guidelines:
<message name="IDS_SAFE_BROWSING_SCOUT_REPORTING_SUMMARY" desc="Body text for Chrome setting under 'Help Improve Safe Browsing'. This feature sends small amounts of data to Google about potentially-dangerous pages to help Safe Browsing improve Chrome's protection against malware and phishing.">
Sends some system information and page content to Google
</message>
+ <message name="IDS_ALWAYS_INCOGNITO_TITLE" desc="Title for always incognito mode">
+ Open links in incognito tabs always
@@ -300,8 +300,8 @@ diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/and
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
@@ -7,6 +7,7 @@ import("//components/offline_pages/buildflags/features.gni")
import("//device/vr/buildflags/buildflags.gni")
@@ -8,6 +8,7 @@ import("//device/vr/buildflags/buildflags.gni")
import("//chrome/android/feed/feed_java_sources.gni")
chrome_java_sources = [
+ "java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java",
@@ -46,7 +46,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureLi
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -224,6 +224,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
@@ -225,6 +225,7 @@ bool GetInstanceManipulations(const net::HttpResponseHeaders* headers,
// Variations seed fetching is only enabled in official Chrome builds, if a URL
// is specified on the command line, and for testing.
bool IsFetchingEnabled() {
@@ -54,7 +54,7 @@ diff --git a/components/variations/service/variations_service.cc b/components/va
#if !defined(GOOGLE_CHROME_BUILD)
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kVariationsServerURL) &&
@@ -235,6 +236,9 @@ bool IsFetchingEnabled() {
@@ -236,6 +237,9 @@ bool IsFetchingEnabled() {
}
#endif
return true;
@@ -9,7 +9,7 @@ Subject: Disable plugins enumeration
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -1239,10 +1239,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
@@ -1262,10 +1262,8 @@ FrameResourceCoordinator* LocalFrame::GetFrameResourceCoordinator() {
}
PluginData* LocalFrame::GetPluginData() const {
@@ -21,7 +21,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/
+ return nullptr;
}
DEFINE_WEAK_IDENTIFIER_MAP(LocalFrame);
void LocalFrame::SetAdTrackerForTesting(AdTracker* ad_tracker) {
--
2.7.4
@@ -10,7 +10,7 @@ Subject: Remove google account access permission on reboot
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -790,8 +790,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
@@ -869,8 +869,7 @@ jinja_template_resources("chrome_public_apk_template_resources") {
resources = [
"java/res_template/xml/file_paths.xml",
"java/res_template/xml/launchershortcuts.xml",
@@ -23,7 +23,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -831,14 +831,14 @@ by a child template that "extends" this file.
@@ -837,14 +837,14 @@ by a child template that "extends" this file.
</provider>
<!-- Sync adapter for browser invalidation. -->
@@ -11,7 +11,7 @@ anyway), avoid sending to Google.
diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
--- a/net/dns/host_resolver_impl.cc
+++ b/net/dns/host_resolver_impl.cc
@@ -107,10 +107,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
@@ -108,10 +108,10 @@ const unsigned kMinimumTTLSeconds = kCacheEntryTTLSeconds;
// cached.
const int kIPv6ProbePeriodMs = 1000;
@@ -4,14 +4,14 @@ Subject: autofill: disable autofill download manager
Disables the autofill download manager (trk:158).
---
components/autofill/core/browser/autofill_download_manager.cc | 9 +++++++--
components/autofill/core/browser/autofill_download_manager.cc | 6 +++++-
components/autofill/core/browser/autofill_manager.cc | 2 ++
2 files changed, 9 insertions(+), 2 deletions(-)
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc
--- a/components/autofill/core/browser/autofill_download_manager.cc
+++ b/components/autofill/core/browser/autofill_download_manager.cc
@@ -39,7 +39,6 @@ namespace autofill {
@@ -41,7 +41,6 @@ namespace autofill {
namespace {
@@ -19,44 +19,29 @@ diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/com
const size_t kMaxFormCacheSize = 16;
const size_t kMaxFieldsPerQueryRequest = 100;
@@ -69,11 +68,13 @@ const net::BackoffEntry::Policy kAutofillBackoffPolicy = {
false,
};
@@ -365,6 +364,7 @@ bool AutofillDownloadManager::StartUploadRequest(
+#if 0
#if defined(GOOGLE_CHROME_BUILD)
const char kClientName[] = "Google+Chrome";
#else
const char kClientName[] = "Chromium";
#endif // defined(GOOGLE_CHROME_BUILD)
+#endif
const char kDefaultAutofillServerURL[] =
"https://clients1.google.com/tbproxy/af/";
@@ -371,7 +372,7 @@ bool AutofillDownloadManager::StartUploadRequest(
std::tuple<GURL, net::URLFetcher::RequestType>
AutofillDownloadManager::GetRequestURLAndMethod(
std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
const FormRequestData& request_data) const {
- net::URLFetcher::RequestType method = net::URLFetcher::POST;
+#if 0
std::string query_str(base::StrCat({"client=", kClientName}));
std::string method("POST");
std::string query_str;
if (request_data.request_type == AutofillDownloadManager::REQUEST_QUERY) {
@@ -394,6 +395,10 @@ AutofillDownloadManager::GetRequestURLAndMethod(
@@ -387,6 +387,10 @@ std::tuple<GURL, std::string> AutofillDownloadManager::GetRequestURLAndMethod(
GURL url = autofill_server_url_
.Resolve(RequestTypeToString(request_data.request_type))
.ReplaceComponents(replacements);
+#else
+ net::URLFetcher::RequestType method = net::URLFetcher::GET;
+ std::string method("GET");
+ GURL url = GURL("about:blank");
+#endif
return std::make_tuple(std::move(url), method);
return std::make_tuple(std::move(url), std::move(method));
}
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc
--- a/components/autofill/core/browser/autofill_manager.cc
+++ b/components/autofill/core/browser/autofill_manager.cc
@@ -1264,9 +1264,11 @@ AutofillManager::AutofillManager(
@@ -1183,9 +1183,11 @@ AutofillManager::AutofillManager(
weak_ptr_factory_(this) {
DCHECK(driver);
DCHECK(client_);
@@ -15,7 +15,7 @@ turn it back on.
diff --git a/chrome/browser/extensions/extension_system_impl.cc b/chrome/browser/extensions/extension_system_impl.cc
--- a/chrome/browser/extensions/extension_system_impl.cc
+++ b/chrome/browser/extensions/extension_system_impl.cc
@@ -206,8 +206,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
@@ -207,8 +207,7 @@ void ExtensionSystemImpl::Shared::Init(bool extensions_enabled) {
// ExtensionService depends on RuntimeData.
runtime_data_.reset(new RuntimeData(ExtensionRegistry::Get(profile_)));
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
} // namespace
@@ -285,6 +287,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
@@ -289,6 +291,10 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
return;
}
@@ -37,7 +37,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
// Fill in metadata about which model we used.
if (is_extended_reporting) {
request->set_model_filename(model_loader_extended_->name());
@@ -367,6 +373,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
@@ -371,6 +377,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
// Record that we made a request
phishing_report_times_.push(base::Time::Now());
@@ -45,7 +45,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
}
void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -381,6 +388,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -385,6 +392,10 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
return;
}
@@ -56,7 +56,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
std::string request_data;
if (!request->SerializeToString(&request_data)) {
UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION);
@@ -450,6 +461,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -454,6 +465,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
// Record that we made a malware request
malware_report_times_.push(base::Time::Now());
@@ -17,7 +17,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/37
diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chrome/browser/safe_browsing/client_side_detection_service.cc
--- a/chrome/browser/safe_browsing/client_side_detection_service.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_service.cc
@@ -354,7 +354,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
@@ -358,7 +358,7 @@ void ClientSideDetectionService::StartClientReportPhishingRequest(
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = GetClientReportUrl(kClientReportPhishingUrl);
resource_request->method = "POST";
@@ -26,7 +26,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
auto loader = network::SimpleURLLoader::Create(std::move(resource_request),
traffic_annotation);
loader->AttachStringForUpload(request_data, "application/octet-stream");
@@ -436,7 +436,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
@@ -440,7 +440,7 @@ void ClientSideDetectionService::StartClientReportMalwareRequest(
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = GetClientReportUrl(kClientReportMalwareUrl);
resource_request->method = "POST";
@@ -38,7 +38,7 @@ diff --git a/chrome/browser/safe_browsing/client_side_detection_service.cc b/chr
diff --git a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
--- a/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
+++ b/chrome/browser/safe_browsing/download_protection/check_client_download_request.cc
@@ -1022,7 +1022,7 @@ void CheckClientDownloadRequest::SendRequest() {
@@ -1068,7 +1068,7 @@ void CheckClientDownloadRequest::SendRequest() {
auto resource_request = std::make_unique<network::ResourceRequest>();
resource_request->url = PPAPIDownloadRequest::GetDownloadRequestUrl();
resource_request->method = "POST";
@@ -18,7 +18,7 @@ References: https://github.com/iridium-browser/iridium-browser/issues/28
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -377,9 +377,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
@@ -378,9 +378,12 @@ bool Extension::ShouldDisplayInExtensionSettings() const {
}
bool Extension::ShouldExposeViaManagementAPI() const {
@@ -9,7 +9,7 @@ Subject: lint: suppress hardcoded text warnings
diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml
--- a/build/android/lint/suppressions.xml
+++ b/build/android/lint/suppressions.xml
@@ -94,10 +94,8 @@ Still reading?
@@ -92,10 +92,8 @@ Still reading?
<ignore regexp="chromecast/internal" />
<ignore regexp="remoting/android/java/src/org/chromium/chromoting/TapGestureDetector.java" />
</issue>
+156
View File
@@ -0,0 +1,156 @@
From: thermatk <thermatk@thermatk.com>
Date: Fri, 22 Jun 2018 17:04:43 +0200
Subject: kill Vision
---
.../org/chromium/shape_detection/BarcodeDetectionImpl.java | 6 +++---
.../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------
.../chromium/shape_detection/FaceDetectionImplGmsCore.java | 6 +++---
.../chromium/shape_detection/FaceDetectionProviderImpl.java | 2 +-
.../src/org/chromium/shape_detection/InterfaceRegistrar.java | 10 +++++-----
.../src/org/chromium/shape_detection/TextDetectionImpl.java | 6 +++---
6 files changed, 15 insertions(+), 27 deletions(-)
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
@@ -43,11 +43,11 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
// on the device; this happens "fast", but it might have not completed,
// bail in this case. Also, the API was disabled between and v.9.0 and
// v.9.2, see https://developers.google.com/android/guides/releases.
- if (!mBarcodeDetector.isOperational()) {
+// if (!mBarcodeDetector.isOperational()) {
Log.e(TAG, "BarcodeDetector is not operational");
callback.call(new BarcodeDetectionResult[0]);
return;
- }
+/* }
Frame frame = BitmapUtils.convertToFrame(bitmapData);
if (frame == null) {
@@ -77,7 +77,7 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
barcodeArray[i].cornerPoints[j].y = corners[j].y;
}
}
- callback.call(barcodeArray);
+ callback.call(barcodeArray);*/
}
@Override
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
import android.graphics.Bitmap;
-import com.google.android.gms.vision.Frame;
-
import org.chromium.mojo_base.BigBufferUtil;
import org.chromium.skia.mojom.ColorType;
@@ -44,14 +42,4 @@ public class BitmapUtils {
return bitmap;
}
-
- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
- Bitmap bitmap = convertToBitmap(bitmapData);
- if (bitmap == null) {
- return null;
- }
-
- // This constructor implies a pixel format conversion to YUV.
- return new Frame.Builder().setBitmap(bitmap).build();
- }
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
@@ -63,7 +63,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
// The vision library will be downloaded the first time the API is used
// on the device; this happens "fast", but it might have not completed,
// bail in this case.
- if (!mFaceDetector.isOperational()) {
+// if (!mFaceDetector.isOperational()) {
Log.e(TAG, "FaceDetector is not operational");
// Fallback to Android's FaceDetectionImpl.
@@ -73,7 +73,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
FaceDetectionImpl detector = new FaceDetectionImpl(options);
detector.detect(bitmapData, callback);
return;
- }
+/* }
Frame frame = BitmapUtils.convertToFrame(bitmapData);
if (frame == null) {
@@ -157,7 +157,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
faceArray[i].boundingBox.height = face.getHeight();
}
}
- callback.call(faceArray);
+ callback.call(faceArray);*/
}
@Override
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
== ConnectionResult.SUCCESS;
if (isGmsCoreSupported) {
- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
+ //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
} else {
FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
@@ -20,10 +20,10 @@ class InterfaceRegistrar {
// is not necessary to hold on to a reference to it explicitly.
InterfaceRegistry registry = InterfaceRegistry.create(
CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
- registry.addInterface(
- BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory());
- registry.addInterface(
- FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
+// registry.addInterface(
+// BarcodeDetectionProvider.MANAGER, new BarcodeDetectionProviderImpl.Factory());
+// registry.addInterface(
+// FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
+// registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
}
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
@@ -42,11 +42,11 @@ public class TextDetectionImpl implements TextDetection {
// on the device; this happens "fast", but it might have not completed,
// bail in this case. Also, the API was disabled between and v.9.0 and
// v.9.2, see https://developers.google.com/android/guides/releases.
- if (!mTextRecognizer.isOperational()) {
+// if (!mTextRecognizer.isOperational()) {
Log.e(TAG, "TextDetector is not operational");
callback.call(new TextDetectionResult[0]);
return;
- }
+/* }
Frame frame = BitmapUtils.convertToFrame(bitmapData);
if (frame == null) {
@@ -76,7 +76,7 @@ public class TextDetectionImpl implements TextDetection {
detectedTextArray[i].cornerPoints[j].y = corners[j].y;
}
}
- callback.call(detectedTextArray);
+ callback.call(detectedTextArray); */
}
@Override
--
2.7.4
@@ -17,17 +17,17 @@ Subject: kill GCM
.../BackgroundTaskSchedulerGcmNetworkManager.java | 30 ++++-------
components/gcm_driver/android/BUILD.gn | 1 -
components/gcm_driver/instance_id/android/BUILD.gn | 1 -
.../gcm_driver/instance_id/InstanceIDBridge.java | 29 ++--------
.../gcm_driver/instance_id/InstanceIDBridge.java | 29 +++-------
components/sync/android/BUILD.gn | 1 -
third_party/cacheinvalidation/BUILD.gn | 6 ---
.../client/contrib/MultiplexingGcmListener.java | 49 ++---------------
.../android2/channel/AndroidNetworkChannel.java | 18 +++----
19 files changed, 34 insertions(+), 252 deletions(-)
19 files changed, 36 insertions(+), 250 deletions(-)
diff --git a/build/secondary/third_party/android_tools/BUILD.gn b/build/secondary/third_party/android_tools/BUILD.gn
--- a/build/secondary/third_party/android_tools/BUILD.gn
+++ b/build/secondary/third_party/android_tools/BUILD.gn
@@ -43,8 +43,6 @@ if (enable_java_templates) {
@@ -64,8 +64,6 @@ if (enable_java_templates) {
support_lib_alias("android_support_chromium_java") {
testonly = true
}
@@ -54,7 +54,7 @@ diff --git a/build/secondary/third_party/android_tools/support/BUILD.gn b/build/
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
+++ b/chrome/android/BUILD.gn
@@ -260,7 +260,6 @@ android_library("chrome_java") {
@@ -269,7 +269,6 @@ android_library("chrome_java") {
"//third_party/android_swipe_refresh:android_swipe_refresh_java",
"//third_party/android_tools:android_arch_lifecycle_common_java",
"//third_party/android_tools:android_arch_lifecycle_runtime_java",
@@ -65,7 +65,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
--- a/chrome/android/java/AndroidManifest.xml
+++ b/chrome/android/java/AndroidManifest.xml
@@ -74,22 +74,17 @@ by a child template that "extends" this file.
@@ -77,22 +77,17 @@ by a child template that "extends" this file.
<permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
<permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
<permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
@@ -88,7 +88,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" />
@@ -913,43 +908,6 @@ by a child template that "extends" this file.
@@ -919,43 +914,6 @@ by a child template that "extends" this file.
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
android:hardwareAccelerated="false" />
@@ -132,7 +132,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<!-- Notification service for sync. -->
<meta-data android:name="ipc.invalidation.ticl.listener_service_class"
android:value="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService"/>
@@ -961,8 +919,6 @@ by a child template that "extends" this file.
@@ -967,8 +925,6 @@ by a child template that "extends" this file.
</service>
<service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
android:exported="false"/>
@@ -141,7 +141,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
<receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
android:exported="false"/>
<receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"
@@ -989,24 +945,6 @@ by a child template that "extends" this file.
@@ -995,24 +951,6 @@ by a child template that "extends" this file.
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"/>
@@ -169,17 +169,17 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncLauncher.java
@@ -9,10 +9,6 @@ import android.content.SharedPreferences;
import android.os.AsyncTask;
@@ -8,10 +8,6 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.os.StrictMode;
-import com.google.android.gms.gcm.GcmNetworkManager;
-import com.google.android.gms.gcm.OneoffTask;
-import com.google.android.gms.gcm.Task;
-
import org.chromium.base.AsyncTask;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
@@ -37,8 +33,6 @@ public class BackgroundSyncLauncher {
// BackgroundSyncLauncherAndroid, if any. If it is non-null then the browser is running.
private static BackgroundSyncLauncher sInstance;
@@ -251,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackgroundSyncL
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/invalidation/InvalidationController.java
@@ -12,8 +12,6 @@ import android.os.Build;
@@ -11,8 +11,6 @@ import android.os.Build;
import android.os.Handler;
import android.os.SystemClock;
@@ -259,7 +259,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/invalidation/In
-
import org.chromium.base.ApplicationState;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.Log;
import org.chromium.base.AsyncTask;
@@ -200,16 +198,7 @@ public class InvalidationController implements ApplicationStatus.ApplicationStat
* Registers for Google Cloud Messaging (GCM) for Invalidations.
*/
@@ -386,15 +386,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GC
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java
@@ -13,7 +13,6 @@ import android.os.Parcel;
@@ -12,7 +12,6 @@ import android.os.Parcel;
import android.support.annotation.MainThread;
import android.util.Log;
-import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.google.ipc.invalidation.ticl.android2.channel.GcmUpstreamSenderService;
import org.chromium.base.ThreadUtils;
@@ -92,6 +91,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
import org.chromium.base.AsyncTask;
@@ -95,6 +94,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
* This function runs on a thread from the AsyncTask.THREAD_POOL_EXECUTOR.
*/
private void sendUpstreamMessage(String to, Bundle data, String token, Context context) {
@@ -402,7 +402,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
// Add the OAuth2 token to the bundle. The token should have the prefix Bearer added to it.
data.putString("Authorization", "Bearer " + token);
if (!isMessageWithinLimit(data)) {
@@ -105,6 +105,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
@@ -109,6 +109,7 @@ public class InvalidationGcmUpstreamSender extends GcmUpstreamSenderService {
Log.w(TAG, "Send message failed");
GcmUma.recordGcmUpstreamHistogram(context, GcmUma.UMA_UPSTREAM_SEND_FAILED);
}
@@ -413,7 +413,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/In
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -25,7 +25,6 @@ chrome_java_sources = [
@@ -27,7 +27,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/ChromeActivity.java",
"java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
"java/src/org/chromium/chrome/browser/ChromeApplication.java",
@@ -421,7 +421,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
"java/src/org/chromium/chrome/browser/ChromeFeatureList.java",
@@ -1160,7 +1159,6 @@ chrome_java_sources = [
@@ -1217,7 +1216,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/services/AndroidEduAndChildAccountHelper.java",
"java/src/org/chromium/chrome/browser/services/AndroidEduOwnerCheckCallback.java",
"java/src/org/chromium/chrome/browser/services/GoogleServicesManager.java",
@@ -560,7 +560,7 @@ diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm
diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
--- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
+++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
@@ -26,7 +26,6 @@ public class InstanceIDBridge {
@@ -25,7 +25,6 @@ public class InstanceIDBridge {
* Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
* initialized on a background thread.
*/
@@ -568,7 +568,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
private static boolean sBlockOnAsyncTasksForTesting;
@@ -71,7 +70,7 @@ public class InstanceIDBridge {
@@ -70,7 +69,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<String>() {
@Override
protected String doBackgroundWork() {
@@ -577,7 +577,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(String id) {
@@ -86,7 +85,7 @@ public class InstanceIDBridge {
@@ -85,7 +84,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<Long>() {
@Override
protected Long doBackgroundWork() {
@@ -586,7 +586,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(Long creationTime) {
@@ -107,11 +106,7 @@ public class InstanceIDBridge {
@@ -106,11 +105,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<String>() {
@Override
protected String doBackgroundWork() {
@@ -599,7 +599,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(String token) {
@@ -127,12 +122,7 @@ public class InstanceIDBridge {
@@ -126,12 +121,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<Boolean>() {
@Override
protected Boolean doBackgroundWork() {
@@ -613,7 +613,7 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(Boolean success) {
@@ -147,12 +137,7 @@ public class InstanceIDBridge {
@@ -146,12 +136,7 @@ public class InstanceIDBridge {
new BridgeAsyncTask<Boolean>() {
@Override
protected Boolean doBackgroundWork() {
@@ -627,17 +627,20 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
}
@Override
protected void sendResultToNative(Boolean success) {
@@ -192,10 +177,6 @@ public class InstanceIDBridge {
@@ -190,11 +175,11 @@ public class InstanceIDBridge {
@Override
@SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
protected Result doInBackground(Void... params) {
synchronized (InstanceIDBridge.this) {
- if (mInstanceID == null) {
- mInstanceID = InstanceIDWithSubtype.getInstance(
- ContextUtils.getApplicationContext(), mSubtype);
- }
}
- synchronized (InstanceIDBridge.this) {
+/* synchronized (InstanceIDBridge.this) {
if (mInstanceID == null) {
mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype);
}
- }
+ }*/
return doBackgroundWork();
}
@Override
diff --git a/components/sync/android/BUILD.gn b/components/sync/android/BUILD.gn
--- a/components/sync/android/BUILD.gn
+++ b/components/sync/android/BUILD.gn
-83
View File
@@ -1,83 +0,0 @@
From: thermatk <thermatk@thermatk.com>
Date: Fri, 22 Jun 2018 17:04:43 +0200
Subject: kill Vision
---
services/shape_detection/BUILD.gn | 3 ---
.../java/src/org/chromium/shape_detection/BitmapUtils.java | 12 ------------
.../chromium/shape_detection/FaceDetectionProviderImpl.java | 2 +-
.../src/org/chromium/shape_detection/InterfaceRegistrar.java | 2 --
4 files changed, 1 insertion(+), 18 deletions(-)
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
--- a/services/shape_detection/BUILD.gn
+++ b/services/shape_detection/BUILD.gn
@@ -79,13 +79,10 @@ if (is_android) {
android_library("shape_detection_java") {
java_files = [
- "android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java",
"android/java/src/org/chromium/shape_detection/FaceDetectionImpl.java",
- "android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java",
"android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java",
"android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java",
"android/java/src/org/chromium/shape_detection/BitmapUtils.java",
- "android/java/src/org/chromium/shape_detection/TextDetectionImpl.java",
]
deps = [
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BitmapUtils.java
@@ -6,8 +6,6 @@ package org.chromium.shape_detection;
import android.graphics.Bitmap;
-import com.google.android.gms.vision.Frame;
-
import org.chromium.mojo_base.BigBufferUtil;
import org.chromium.skia.mojom.ColorType;
@@ -44,14 +42,4 @@ public class BitmapUtils {
return bitmap;
}
-
- public static Frame convertToFrame(org.chromium.skia.mojom.Bitmap bitmapData) {
- Bitmap bitmap = convertToBitmap(bitmapData);
- if (bitmap == null) {
- return null;
- }
-
- // This constructor implies a pixel format conversion to YUV.
- return new Frame.Builder().setBitmap(bitmap).build();
- }
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionProviderImpl.java
@@ -30,7 +30,7 @@ public class FaceDetectionProviderImpl implements FaceDetectionProvider {
== ConnectionResult.SUCCESS;
if (isGmsCoreSupported) {
- FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
+ //FaceDetection.MANAGER.bind(new FaceDetectionImplGmsCore(options), request);
} else {
FaceDetection.MANAGER.bind(new FaceDetectionImpl(options), request);
}
diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
--- a/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/InterfaceRegistrar.java
@@ -20,9 +20,7 @@ class InterfaceRegistrar {
// is not necessary to hold on to a reference to it explicitly.
InterfaceRegistry registry = InterfaceRegistry.create(
CoreImpl.getInstance().acquireNativeHandle(nativeHandle).toMessagePipeHandle());
- registry.addInterface(BarcodeDetection.MANAGER, new BarcodeDetectionImpl.Factory());
registry.addInterface(
FaceDetectionProvider.MANAGER, new FaceDetectionProviderImpl.Factory());
- registry.addInterface(TextDetection.MANAGER, new TextDetectionImpl.Factory());
}
}
--
2.7.4
@@ -11,17 +11,17 @@ Subject: kill Auth
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
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninHelper.java
@@ -9,10 +9,6 @@ import android.annotation.SuppressLint;
@@ -8,10 +8,6 @@ import android.accounts.Account;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.AsyncTask;
-import com.google.android.gms.auth.AccountChangeEvent;
-import com.google.android.gms.auth.GoogleAuthException;
-import com.google.android.gms.auth.GoogleAuthUtil;
-
import org.chromium.base.AsyncTask;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
@@ -71,6 +67,7 @@ public class SigninHelper {
@Override
public List<String> getAccountChangeEvents(
@@ -67,7 +67,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
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
@@ -23,9 +23,6 @@ import android.os.PatternMatcher;
@@ -24,9 +24,6 @@ import android.os.PatternMatcher;
import android.os.Process;
import android.os.SystemClock;
@@ -77,7 +77,7 @@ 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;
@@ -116,9 +113,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -117,9 +114,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
// so don't report any accounts if Google Play Services are out of date.
checkCanUseGooglePlayServices();
@@ -90,7 +90,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
long now = SystemClock.elapsedRealtime();
Account[] accounts = mAccountManager.getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
long elapsed = SystemClock.elapsedRealtime() - now;
@@ -128,12 +125,15 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -129,12 +126,15 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
"Signin.AndroidGetAccountsTimeUiThread_AccountManager", elapsed);
}
return accounts;
@@ -106,7 +106,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
try {
return GoogleAuthUtil.getTokenWithNotification(
ContextUtils.getApplicationContext(), account, authTokenScope, null);
@@ -145,10 +145,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -146,10 +146,12 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
} catch (IOException ex) {
throw new AuthException(AuthException.TRANSIENT, ex);
}
@@ -119,7 +119,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
try {
GoogleAuthUtil.clearToken(ContextUtils.getApplicationContext(), authToken);
} catch (GooglePlayServicesAvailabilityException ex) {
@@ -158,6 +160,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -159,6 +161,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
} catch (IOException ex) {
throw new AuthException(AuthException.TRANSIENT, ex);
}
@@ -3,16 +3,16 @@ 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 | 41 ++--------------------
.../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, 11 insertions(+), 103 deletions(-)
.../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
@@ -61,44 +61,38 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.ThreadUtils;
@@ -164,12 +161,7 @@ public class ExternalAuthUtils {
@@ -164,9 +161,10 @@ public class ExternalAuthUtils {
* when it is updating.
*/
public boolean isGooglePlayServicesMissing(final Context context) {
- final int resultCode = checkGooglePlayServicesAvailable(context);
- if (resultCode == ConnectionResult.SERVICE_MISSING
- || resultCode == ConnectionResult.SERVICE_INVALID) {
return true;
- }
- return false;
+/* final int resultCode = checkGooglePlayServicesAvailable(context);
return (resultCode == ConnectionResult.SERVICE_MISSING
- || resultCode == ConnectionResult.SERVICE_INVALID);
+ || resultCode == ConnectionResult.SERVICE_INVALID); */
+ return true;
}
/**
@@ -184,23 +176,6 @@ public class ExternalAuthUtils {
@@ -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();
- final int resultCode = checkGooglePlayServicesAvailable(context);
- recordConnectionResult(resultCode);
- if (resultCode == ConnectionResult.SUCCESS) {
- return true;
- }
- // resultCode is some kind of error.
- Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
- if (isUserRecoverableError(resultCode)) {
- Runnable errorHandlerTask = new Runnable() {
- @Override
- public void run() {
- errorHandler.handleError(context, resultCode);
- }
- };
- ThreadUtils.runOnUiThread(errorHandlerTask);
+/* 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;
}
@@ -262,17 +237,7 @@ public class ExternalAuthUtils {
@@ -257,17 +255,7 @@ public class ExternalAuthUtils {
* @return The code produced by calling the external code
*/
protected int checkGooglePlayServicesAvailable(final Context context) {
@@ -117,7 +111,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
}
/**
@@ -283,7 +248,7 @@ public class ExternalAuthUtils {
@@ -278,7 +266,7 @@ public class ExternalAuthUtils {
* @return true If the code represents a user-recoverable error
*/
protected boolean isUserRecoverableError(final int errorCode) {
@@ -126,7 +120,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
}
/**
@@ -293,6 +258,6 @@ public class ExternalAuthUtils {
@@ -288,6 +276,6 @@ public class ExternalAuthUtils {
* @return a textual description of the error code
*/
protected String describeError(final int errorCode) {
@@ -137,24 +131,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Ex
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalauth/UserRecoverableErrorHandler.java
@@ -9,8 +9,6 @@ import android.app.Dialog;
import android.content.Context;
@@ -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;
@@ -113,7 +111,6 @@ public abstract class UserRecoverableErrorHandler {
.record(ERROR_HANDLER_ACTION_IGNORED_AS_REDUNDANT);
@@ -120,7 +118,6 @@ public abstract class UserRecoverableErrorHandler {
sErrorHandlerActionHistogramSample.record(ErrorHandlerAction.IGNORED_AS_REDUNDANT);
return;
}
- GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
sErrorHandlerActionHistogramSample.record(ERROR_HANDLER_ACTION_SYSTEM_NOTIFICATION);
sErrorHandlerActionHistogramSample.record(ErrorHandlerAction.SYSTEM_NOTIFICATION);
}
}
@@ -206,13 +203,6 @@ public abstract class UserRecoverableErrorHandler {
@@ -213,13 +210,6 @@ public abstract class UserRecoverableErrorHandler {
if (mErrorCode != errorCode) {
cancelDialog();
}
@@ -171,16 +165,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalauth/Us
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
@@ -22,8 +22,6 @@ import android.text.TextUtils;
@@ -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;
import org.chromium.base.ThreadUtils;
@@ -161,13 +159,7 @@ public class UpdateMenuItemHelper {
@@ -162,13 +160,7 @@ public class UpdateMenuItemHelper {
}
private static boolean isGooglePlayStoreAvailable(Context context) {
@@ -198,7 +192,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMen
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
@@ -541,10 +541,7 @@ chrome_java_sources = [
@@ -586,10 +586,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",
@@ -259,7 +253,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
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
@@ -23,9 +23,6 @@ import android.os.PatternMatcher;
@@ -24,9 +24,6 @@ import android.os.PatternMatcher;
import android.os.Process;
import android.os.SystemClock;
@@ -269,7 +263,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
@@ -82,17 +79,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -83,17 +80,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
}
protected void checkCanUseGooglePlayServices() throws AccountManagerDelegateException {
@@ -288,7 +282,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
}
@Override
@@ -207,8 +194,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -210,8 +197,9 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
callback.onResult(null);
}
};
@@ -298,7 +292,7 @@ diff --git a/components/signin/core/browser/android/java/src/org/chromium/compon
+ */
}
@Override
// 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,13 +4,14 @@ Subject: kill TOS and metrics opt-out
---
chrome/android/java/res/layout/fre_tosanduma.xml | 3 ++-
chrome/android/java/res/values/dimens.xml | 1 -
.../src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/java/res/layout/fre_tosanduma.xml
--- a/chrome/android/java/res/layout/fre_tosanduma.xml
+++ b/chrome/android/java/res/layout/fre_tosanduma.xml
@@ -62,7 +62,8 @@
@@ -63,7 +63,8 @@
android:layout_marginBottom="@dimen/fre_vertical_spacing"
android:gravity="center"
android:lineSpacingMultiplier="1.4"
@@ -20,6 +21,17 @@ diff --git a/chrome/android/java/res/layout/fre_tosanduma.xml b/chrome/android/j
<CheckBox
android:id="@+id/send_report_checkbox"
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -179,7 +179,6 @@
<dimen name="fre_stacked_button_margin">8dp</dimen>
<dimen name="fre_margin">24dp</dimen>
<dimen name="fre_image_height">120dp</dimen>
- <dimen name="fre_tos_checkbox_padding">12dp</dimen>
<!-- Account Signin dimensions -->
<!-- The Account Signin page appears in the First Run Experience (amongst other places), so uses
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
-267
View File
@@ -1,267 +0,0 @@
From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Wed, 2 May 2018 01:24:39 +0200
Subject: Add Always Incognito option
---
chrome/android/java/res/menu/custom_tabs_menu.xml | 12 ++++++++
chrome/android/java/res/menu/main_menu.xml | 12 ++++++++
.../chromium/chrome/browser/ChromeActivity.java | 4 +++
.../chrome/browser/ChromeTabbedActivity.java | 4 +++
.../org/chromium/chrome/browser/IntentHandler.java | 8 ++---
.../chrome/browser/LaunchIntentDispatcher.java | 7 +++++
.../browser/appmenu/AppMenuPropertiesDelegate.java | 35 ++++++++++++++++++++++
.../CustomTabAppMenuPropertiesDelegate.java | 2 ++
.../browser/preferences/PrefServiceBridge.java | 17 +++++++++++
.../java/strings/android_chrome_strings.grd | 10 +++++++
10 files changed, 106 insertions(+), 5 deletions(-)
diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml
--- a/chrome/android/java/res/menu/custom_tabs_menu.xml
+++ b/chrome/android/java/res/menu/custom_tabs_menu.xml
@@ -62,6 +62,18 @@
</menu>
</item>
+ <item android:id="@+id/enable_always_incognito_row_menu_id"
+ android:title="@null"
+ android:orderInCategory="2">
+ <menu>
+ <item android:id="@+id/enable_always_incognito_id"
+ android:title="@string/menu_enable_always_incognito" />
+ <item android:id="@+id/enable_always_incognito_check_id"
+ android:title="@null"
+ android:checkable="true" />
+ </menu>
+ </item>
+
<item android:id="@+id/request_desktop_site_row_menu_id"
android:title="@null"
android:orderInCategory="2">
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
+++ b/chrome/android/java/res/menu/main_menu.xml
@@ -72,6 +72,18 @@
</menu>
</item>
+ <item android:id="@+id/enable_always_incognito_row_menu_id"
+ android:title="@null"
+ android:orderInCategory="2">
+ <menu>
+ <item android:id="@+id/enable_always_incognito_id"
+ android:title="@string/menu_enable_always_incognito" />
+ <item android:id="@+id/enable_always_incognito_check_id"
+ android:title="@null"
+ android:checkable="true" />
+ </menu>
+ </item>
+
<item android:id="@+id/request_desktop_site_row_menu_id"
android:title="@null">
<menu>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -1905,6 +1905,10 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
RecordUserAction.record("MobileMenuSettings");
} else if (id == R.id.show_menu) {
showAppMenuForKeyboardEvent();
+ } else if (id == R.id.enable_always_incognito_id || id == R.id.enable_always_incognito_check_id) {
+ final boolean alwaysIncognito = PrefServiceBridge.getInstance().alwaysIncognitoEnabled();
+ PrefServiceBridge.getInstance().setAlwaysIncognitoEnabled(!alwaysIncognito);
+ RecordUserAction.record("MobileMenuRequestEnableAlwaysIncognito");
} else if (id == R.id.find_in_page_id) {
if (mFindToolbarManager == null) return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1753,6 +1753,10 @@ public class ChromeTabbedActivity
reportNewTabShortcutUsed(true);
getTabCreator(true).launchNTP();
}
+ } else if (id == R.id.enable_always_incognito_id || id == R.id.enable_always_incognito_check_id) {
+ final boolean alwaysIncognito = PrefServiceBridge.getInstance().alwaysIncognitoEnabled();
+ PrefServiceBridge.getInstance().setAlwaysIncognitoEnabled(!alwaysIncognito);
+ RecordUserAction.record("MobileMenuRequestEnableAlwaysIncognito");
} else if (id == R.id.all_bookmarks_menu_id) {
if (currentTab != null) {
getCompositorViewHolder().hideKeyboard(() -> {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java
@@ -732,7 +732,6 @@ public class IntentHandler {
// Determine if this intent came from a trustworthy source (either Chrome or Google
// first party applications).
boolean isInternal = isIntentChromeOrFirstParty(intent);
- boolean isFromChrome = wasIntentSenderChrome(intent);
// "Open new incognito tab" is currently limited to Chrome.
//
@@ -741,11 +740,10 @@ public class IntentHandler {
// from the list. In this case, we do not apply our Chrome token as the user has the
// option to select apps outside of our control, so we rely on this in memory check
// instead.
- if (!isFromChrome
- && IntentUtils.safeGetBooleanExtra(
+ if (IntentUtils.safeGetBooleanExtra(
intent, EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
- && (getPendingIncognitoUrl() == null
- || !getPendingIncognitoUrl().equals(intent.getDataString()))) {
+ && getPendingIncognitoUrl() != null
+ && getPendingIncognitoUrl().equals(intent.getDataString())) {
return true;
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java
@@ -36,6 +36,7 @@ import org.chromium.chrome.browser.instantapps.InstantAppsHandler;
import org.chromium.chrome.browser.metrics.MediaNotificationUma;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.notifications.NotificationPlatformBridge;
+import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations;
import org.chromium.chrome.browser.searchwidget.SearchActivity;
import org.chromium.chrome.browser.tab.Tab;
@@ -185,6 +186,12 @@ public class LaunchIntentDispatcher implements IntentHandler.IntentHandlerDelega
boolean incognito =
mIntent.getBooleanExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false);
+ if (!incognito) {
+ incognito = PrefServiceBridge.getInstance().alwaysIncognitoEnabled();
+ if (incognito) {
+ mIntent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, true);
+ }
+ }
// Check if a web search Intent is being handled.
IntentHandler intentHandler = new IntentHandler(this, mActivity.getPackageName());
String url = IntentHandler.getUrlFromIntent(mIntent);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -211,6 +211,8 @@ public class AppMenuPropertiesDelegate {
&& !TextUtils.isEmpty(url);
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
+ updateEnableAlwaysIncognitoMenuItem(menu, currentTab);
+
updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */);
updateEnableJavascriptMenuItem(menu, currentTab);
@@ -410,6 +412,39 @@ public class AppMenuPropertiesDelegate {
}
/**
+ * Updates the enable Always Incognito item's state.
+ *
+ * @param menu {@link Menu} for enable always incognito
+ * @param currentTab Current tab being displayed.
+ */
+ protected void updateEnableAlwaysIncognitoMenuItem(
+ Menu menu, Tab currentTab) {
+ MenuItem enableMenuRow = menu.findItem(R.id.enable_always_incognito_row_menu_id);
+ MenuItem enableMenuLabel = menu.findItem(R.id.enable_always_incognito_id);
+ MenuItem enableMenuCheck = menu.findItem(R.id.enable_always_incognito_check_id);
+
+ // Hide enable always incognito on all chrome:// pages and the NTP.
+ String url = currentTab.getUrl();
+ boolean isChromeScheme = url.startsWith(UrlConstants.CHROME_URL_PREFIX)
+ || url.startsWith(UrlConstants.CHROME_NATIVE_URL_PREFIX);
+
+ boolean itemVisible = !isChromeScheme && !currentTab.isNativePage();
+ enableMenuRow.setVisible(itemVisible);
+ if (!itemVisible) return;
+
+ boolean alwaysIncognito = PrefServiceBridge.getInstance().alwaysIncognitoEnabled();
+
+ // Mark the checkbox if always incognito is activated on this tab.
+ enableMenuCheck.setChecked(alwaysIncognito);
+
+ // This title doesn't seem to be displayed by Android, but it is used to set up
+ // accessibility text in {@link AppMenuAdapter#setupMenuButton}.
+ enableMenuLabel.setTitleCondensed(alwaysIncognito
+ ? mActivity.getString(R.string.menu_enable_always_incognito_on)
+ : mActivity.getString(R.string.menu_enable_always_incognito_off));
+ }
+
+ /**
* Updates the request desktop site item's state.
*
* @param menu {@link Menu} for request desktop site.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java
@@ -163,6 +163,8 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat
}
}
+ updateEnableAlwaysIncognitoMenuItem(menu, currentTab);
+
updateRequestDesktopSiteMenuItem(menu, currentTab, requestDesktopSiteVisible);
updateEnableJavascriptMenuItem(menu, currentTab);
prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/PrefServiceBridge.java
@@ -57,6 +57,8 @@ public class PrefServiceBridge {
private static final String CONTEXTUAL_SEARCH_DISABLED = "false";
private static final String CONTEXTUAL_SEARCH_ENABLED = "true";
+ private static boolean alwaysIncognito = false;
+
/**
* Structure that holds all the version information about the current Chrome browser.
*/
@@ -359,6 +361,14 @@ public class PrefServiceBridge {
}
/**
+ * @return true if always-incognito is enabled.
+ * The default is false.
+ */
+ public boolean alwaysIncognitoEnabled() {
+ return alwaysIncognito;
+ }
+
+ /**
* @return true if background sync is managed by policy.
*/
public boolean isBackgroundSyncManaged() {
@@ -422,6 +432,13 @@ public class PrefServiceBridge {
}
/**
+ * Enable or disable always-incognito mode.
+ */
+ public void setAlwaysIncognitoEnabled(boolean enabled) {
+ alwaysIncognito = enabled;
+ }
+
+ /**
* Enable or disable background sync.
*/
public void setBackgroundSyncEnabled(boolean enabled) {
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2502,6 +2502,16 @@ To obtain new licenses, connect to the internet and play your downloaded content
Turn on JavaScript
</message>
+ <message name="IDS_MENU_ENABLE_ALWAYS_INCOGNITO" desc="Menu item in Chrome's overflow/options menu. If this menu item is selected, Bromite will always open new pages in incognito mode. [CHAR-LIMIT=27]">
+ Always Incognito
+ </message>
+ <message name="IDS_MENU_ENABLE_ALWAYS_INCOGNITO_ON" desc="Accessibility description for when Always Incognito is selected.">
+ Turn off Always Incognito
+ </message>
+ <message name="IDS_MENU_ENABLE_ALWAYS_INCOGNITO_OFF" desc="Accessibility description for when Enable Always Incognito is unselected.">
+ Turn on Always Incognito
+ </message>
+
<message name="IDS_MENU_REQUEST_DESKTOP_SITE" desc="Menu item in Chrome's overflow/options menu. By default, when a user navigates to a web page, Chrome shows the mobile site, that is, the version of the site designed for mobile phones. If this menu item is selected, however, Chrome will try to load the 'desktop' site instead, i.e. the site designed for desktop computers or laptop computers, which have larger screens. [CHAR-LIMIT=24]">
Desktop site
</message>
--
2.7.4
-974
View File
@@ -1,974 +0,0 @@
commit 56ab68688e7d2c7734e6190bf602dd584eae3222
Author: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sat Dec 9 23:03:50 2017 +0100
Incognito-only mode ported from CAF
Some rework was needed, almost nothing applied cleanly.
See below for the description of the two commits that were merged in this one.
Browser setting to switch to incognito only mode
- Added a setting to switch to incognito only mode in
privacy settings
- Upon enabling or disabling the switch, the browser will
restart in the respective mode (regular or incognito only)
Change-Id: Ic42daa3e9bfdc0fcb4029d9df16ed57c5776d966
Fix issues seen in full incognito mode
- Fixes crashes seen in incognito mode.
- Allow Custom Tabs, Web Apps to use the incognito only mode.
- Ensure we notify the user of the incognito mode in the notification bar and remove the notification when all
incognito tabs are closed.
- Ensure the status bar for Custom Tabs and Web Apps are grey to give a visual notification to use.
- Ensure the tabs are correctly ref counted for Custom Tabs, Web Apps when using incognito only mode.
CR-Fixed: SWE-8867, SWE-8802
Change-Id: I95a77016e7562d82359c7780771da4c7bb73aa06
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
index ce7db92..a85aea3 100644
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -31,6 +31,10 @@
android:title="@string/network_predictions_title"
android:summary="@string/network_predictions_summary"
android:persistent="false" />
+ <org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference
+ android:key="incognito_only"
+ android:title="@string/incognito_only_title"
+ android:summary="@string/incognito_only_summary" />
<Preference
android:key="usage_and_crash_reports"
android:title="@string/usage_and_crash_reports_title"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
index 49a3251..7445c9b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -51,6 +51,9 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
+import org.chromium.chrome.browser.init.AsyncInitializationActivity;
+import org.chromium.chrome.browser.preferences.AboutChromePreferences;
import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
import org.chromium.chrome.browser.appmenu.AppMenu;
@@ -84,6 +87,7 @@ import org.chromium.chrome.browser.gsa.GSAAccountChangeListener;
import org.chromium.chrome.browser.gsa.GSAState;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.history.HistoryManagerUtils;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.infobar.InfoBarContainer;
import org.chromium.chrome.browser.init.AsyncInitializationActivity;
import org.chromium.chrome.browser.init.ProcessInitializationHandler;
@@ -130,6 +134,7 @@ import org.chromium.chrome.browser.toolbar.ToolbarManager;
import org.chromium.chrome.browser.util.AccessibilityUtil;
import org.chromium.chrome.browser.util.ColorUtils;
import org.chromium.chrome.browser.util.FeatureUtilities;
+
import org.chromium.chrome.browser.vr_shell.VrIntentUtils;
import org.chromium.chrome.browser.vr_shell.VrShellDelegate;
import org.chromium.chrome.browser.webapps.AddToHomescreenManager;
@@ -1312,6 +1317,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
* @param menu Menu that is going to be shown when the menu button is pressed.
*/
public void prepareMenu(Menu menu) {
+ if (IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled()) {
+ menu.findItem(R.id.new_incognito_tab_menu_id).setVisible(false);
+ }
}
protected IntentHandlerDelegate createIntentHandlerDelegate() {
@@ -1436,7 +1444,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity
throw new IllegalStateException(
"Attempting to access TabCreator before initialization");
}
- return incognito ? mIncognitoTabCreator : mRegularTabCreator;
+ return incognito || IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled()
+ ? mIncognitoTabCreator : mRegularTabCreator;
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/SingleTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/SingleTabActivity.java
index 44c9c8a..bcba76a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/SingleTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/SingleTabActivity.java
@@ -4,15 +4,28 @@
package org.chromium.chrome.browser;
+import android.annotation.SuppressLint;
import android.content.Intent;
import android.util.Pair;
+import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.TabState;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationService;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
+import org.chromium.chrome.browser.metrics.PageLoadMetrics;
+import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
import org.chromium.chrome.browser.tab.TabUma.TabCreationState;
+import org.chromium.chrome.browser.tabmodel.EmptyTabModel;
+import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
import org.chromium.chrome.browser.tabmodel.SingleTabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
+import org.chromium.chrome.browser.tabmodel.TabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
import org.chromium.content_public.browser.ChildProcessImportance;
@@ -38,7 +51,8 @@ public abstract class SingleTabActivity extends ChromeActivity {
@Override
protected TabModelSelector createTabModelSelector() {
- return new SingleTabModelSelector(this, false, false) {
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ return new SingleTabModelSelector(this, incognitoOnly, false) {
@Override
public Tab openNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab parent,
boolean incognito) {
@@ -81,6 +95,7 @@ public abstract class SingleTabActivity extends ChromeActivity {
*/
protected Tab createTab() {
Tab tab = null;
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
boolean unfreeze = false;
int tabId = Tab.INVALID_TAB_ID;
@@ -93,13 +108,14 @@ public abstract class SingleTabActivity extends ChromeActivity {
if (tabId != Tab.INVALID_TAB_ID && tabUrl != null && getActivityDirectory() != null) {
// Restore the tab.
TabState tabState = TabState.restoreTabState(getActivityDirectory(), tabId);
- tab = new Tab(tabId, Tab.INVALID_TAB_ID, false, getWindowAndroid(),
- TabLaunchType.FROM_RESTORE, TabCreationState.FROZEN_ON_RESTORE, tabState);
+ tab = new Tab(tabId, Tab.INVALID_TAB_ID, incognitoOnly, this, getWindowAndroid(),
+ TabLaunchType.FROM_RESTORE,
+ TabCreationState.FROZEN_ON_RESTORE, tabState);
unfreeze = true;
}
if (tab == null) {
- tab = new Tab(Tab.INVALID_TAB_ID, Tab.INVALID_TAB_ID, false, getWindowAndroid(),
+ tab = new Tab(Tab.INVALID_TAB_ID, Tab.INVALID_TAB_ID, incognitoOnly, this, getWindowAndroid(),
TabLaunchType.FROM_CHROME_UI, null, null);
}
@@ -137,4 +153,31 @@ public abstract class SingleTabActivity extends ChromeActivity {
@Override
public void onCheckForUpdate(boolean updateAvailable) {}
+
+ private void handleTabClose() {
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ if (incognitoOnly && isInitialized()) {
+ destroyIncognitoIfNecessary();
+ }
+ }
+
+ protected void destroyIncognitoIfNecessary() {
+ ThreadUtils.assertOnUiThread();
+
+ Profile profile = getTabModelSelector().getModel(true).getProfile();
+ // destroy the current tabmodel that will destroy tabs internally
+ getCurrentTabModel().destroy();
+ // Only delete the incognito profile if there are no incognito tabs open in any tab
+ // model selector as the profile is shared between them.
+ if (profile != null && !(IncognitoNotificationService.getIncognitoTabCount() > 0)) {
+ profile.destroyWhenAppropriate();
+ IncognitoNotificationManager.dismissIncognitoNotification();
+ }
+
+ }
+
+ @Override
+ protected void onDestroyInternal() {
+ handleTabClose();
+ }
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
index afc92bed..39caa0b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/WarmupManager.java
@@ -31,6 +31,7 @@ import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.widget.ControlContainer;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import java.net.InetAddress;
import java.net.MalformedURLException;
@@ -289,8 +290,9 @@ public final class WarmupManager {
public void createSpareWebContents() {
ThreadUtils.assertOnUiThread();
if (!LibraryLoader.isInitialized()) return;
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
if (mSpareWebContents != null || SysUtils.isLowEndDevice()) return;
- mSpareWebContents = WebContentsFactory.createWebContentsWithWarmRenderer(false, false);
+ mSpareWebContents = WebContentsFactory.createWebContentsWithWarmRenderer(incognitoOnly, false);
mObserver = new RenderProcessGoneObserver();
mSpareWebContents.addObserver(mObserver);
mWebContentsCreationTimeMs = SystemClock.elapsedRealtime();
@@ -316,7 +318,7 @@ public final class WarmupManager {
*/
public WebContents takeSpareWebContents(boolean incognito, boolean initiallyHidden) {
ThreadUtils.assertOnUiThread();
- if (incognito || initiallyHidden) return null;
+ if ((incognito != mSpareWebContents.isIncognito()) || initiallyHidden) return null;
WebContents result = mSpareWebContents;
if (result == null) return null;
mSpareWebContents = null;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
index e48a3e8..5435958 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/appmenu/AppMenuPropertiesDelegate.java
@@ -29,6 +29,7 @@ import org.chromium.chrome.browser.UrlConstants;
import org.chromium.chrome.browser.banners.AppBannerManager;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
import org.chromium.chrome.browser.download.DownloadUtils;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper;
import org.chromium.chrome.browser.preferences.ManagedPreferencesUtils;
@@ -175,6 +176,8 @@ public class AppMenuPropertiesDelegate {
MenuItem allBookmarksMenuItem = menu.findItem(R.id.all_bookmarks_menu_id);
// Hide 'History' in incognito only browser
+ boolean isIncognitoOnlyBrowser = IncognitoOnlyModeUtil.getInstance()
+ .isIncognitoOnlyBrowser();
menu.findItem(R.id.open_history_menu_id).setVisible(!isIncognitoOnlyBrowser);
allBookmarksMenuItem.setTitle(mActivity.getString(R.string.menu_bookmarks));
@@ -201,7 +204,7 @@ public class AppMenuPropertiesDelegate {
// is not persisted when adding to the homescreen.
// * If creating shortcuts it not supported by the current home screen.
boolean canShowHomeScreenMenuItem = ShortcutHelper.isAddToHomeIntentSupported()
- && !isChromeScheme && !isFileScheme && !isContentScheme && !isIncognito
+ && !isChromeScheme && !isFileScheme && !isContentScheme && (!isIncognito || isIncognitoOnlyBrowser)
&& !TextUtils.isEmpty(url);
prepareAddToHomescreenMenuItem(menu, currentTab, canShowHomeScreenMenuItem);
@@ -224,7 +227,8 @@ public class AppMenuPropertiesDelegate {
}
if (isOverviewMenu) {
- if (isIncognito) {
+ if (isIncognito
+ && !(IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled())) {
// Hide normal close all tabs item.
menu.findItem(R.id.close_all_tabs_menu_id).setVisible(false);
// Enable close incognito tabs only if there are incognito tabs.
@@ -244,6 +248,7 @@ public class AppMenuPropertiesDelegate {
}
boolean incognitoMenuItemVisible = !isBottomSheetNtpMenu || !isIncognito;
+ incognitoMenuItemVisible &= !(IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled());
// Disable new incognito tab when it is blocked (e.g. by a policy).
// findItem(...).setEnabled(...)" is not enough here, because of the inflated
// main_menu.xml contains multiple items with the same id in different groups
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java
index 03edf2d..fb2cc2e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/StackLayout.java
@@ -33,6 +33,7 @@ import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer;
import org.chromium.chrome.browser.compositor.scene_layer.TabListSceneLayer;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
import org.chromium.chrome.browser.partnercustomizations.HomepageManager;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
@@ -328,8 +329,10 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
@Override
public void setTabModelSelector(TabModelSelector modelSelector, TabContentManager manager) {
super.setTabModelSelector(modelSelector, manager);
- mStacks[0].setTabModel(modelSelector.getModel(false));
- mStacks[1].setTabModel(modelSelector.getModel(true));
+ mStacks[0].setTabModel(modelSelector
+ .getModel(IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled()));
+ mStacks[1].setTabModel(modelSelector
+ .getModel(!IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled()));
resetScrollData();
}
@@ -341,6 +344,9 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
* @VisibleForTesting
*/
public Stack getTabStack(boolean incognito) {
+ if (IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled()) {
+ return mStacks[incognito ? 0 : 1];
+ }
return mStacks[incognito ? 1 : 0];
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
index 8230bc2..687c8a4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
import org.chromium.chrome.browser.compositor.layouts.eventfilter.ScrollDirection;
import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout;
import org.chromium.chrome.browser.compositor.layouts.phone.stack.StackAnimation.OverviewAnimationType;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelUtils;
@@ -436,7 +437,9 @@ public class Stack {
* @return Whether or not the TabModel represented by this TabStackState should be displayed.
*/
public boolean isDisplayable() {
- return !mTabModel.isIncognito() || (!mIsDying && mTabModel.getCount() > 0);
+ return (!mTabModel.isIncognito()
+ && !IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled())
+ || (!mIsDying && mTabModel.getCount() > 0);
}
private float getDefaultDiscardDirection() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
index 25f1fd7..6257c82 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -23,6 +23,7 @@ import org.chromium.chrome.browser.compositor.layouts.eventfilter.GestureHandler
import org.chromium.chrome.browser.compositor.overlays.SceneOverlay;
import org.chromium.chrome.browser.compositor.scene_layer.SceneOverlayLayer;
import org.chromium.chrome.browser.compositor.scene_layer.TabStripSceneLayer;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
import org.chromium.chrome.browser.tabmodel.TabModel;
@@ -377,7 +378,8 @@ public class StripLayoutHelperManager implements SceneOverlay {
mModelSelectorButton.setIncognito(mIsIncognito);
if (mTabModelSelector != null) {
boolean isVisible = mTabModelSelector.getModel(true).getCount() != 0;
- mModelSelectorButton.setVisible(isVisible);
+ mModelSelectorButton.setVisible(isVisible
+ && !IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled());
float endMargin = isVisible
? MODEL_SELECTOR_BUTTON_WIDTH_DP + MODEL_SELECTOR_BUTTON_END_PADDING_DP
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index 43b556f..2b92e83 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -59,9 +59,13 @@ import org.chromium.chrome.browser.browserservices.BrowserSessionContentUtils;
import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.datausage.DataUseTabUIManager;
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
import org.chromium.chrome.browser.fullscreen.BrowserStateBrowserControlsVisibilityDelegate;
import org.chromium.chrome.browser.gsa.GSAState;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationService;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.metrics.PageLoadMetrics;
import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.page_info.PageInfoPopup;
@@ -334,7 +338,12 @@ public class CustomTabActivity extends ChromeActivity {
if (mConnection.shouldHideDomainForSession(mSession)) {
getToolbarManager().setUrlBarHidden(true);
}
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
int toolbarColor = mIntentDataProvider.getToolbarColor();
+ if (incognitoOnly) {
+ toolbarColor = ApiCompatibilityUtils.getColor(getResources(),
+ R.color.incognito_primary_color);
+ }
getToolbarManager().updatePrimaryColor(toolbarColor, false);
if (!mIntentDataProvider.isOpenedByChrome()) {
getToolbarManager().setShouldUpdateToolbarPrimaryColor(false);
@@ -390,7 +399,8 @@ public class CustomTabActivity extends ChromeActivity {
mConnection.cancelSpeculation(mSession);
}
- getTabModelSelector().getModel(false).addObserver(mTabModelObserver);
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ getTabModelSelector().getModel(incognitoOnly).addObserver(mTabModelObserver);
boolean successfulStateRestore = false;
// Attempt to restore the previous tab state if applicable.
@@ -412,7 +422,7 @@ public class CustomTabActivity extends ChromeActivity {
} else {
mMainTab = createMainTab();
}
- getTabModelSelector().getModel(false).addTab(mMainTab, 0, mMainTab.getLaunchType());
+ getTabModelSelector().getModel(incognitoOnly).addTab(mMainTab, 0, mMainTab.getLaunchType());
}
// This cannot be done before because we want to do the reparenting only
@@ -550,7 +560,9 @@ public class CustomTabActivity extends ChromeActivity {
getIntent(), IntentHandler.EXTRA_TAB_ID, Tab.INVALID_TAB_ID);
int parentTabId = IntentUtils.safeGetIntExtra(
getIntent(), IntentHandler.EXTRA_PARENT_TAB_ID, Tab.INVALID_TAB_ID);
- Tab tab = new Tab(assignedTabId, parentTabId, false, getWindowAndroid(),
+
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ Tab tab = new Tab(assignedTabId, parentTabId, incognitoOnly, getWindowAndroid(),
TabLaunchType.FROM_EXTERNAL_APP, null, null);
if (getIntent().getIntExtra(
CustomTabIntentDataProvider.EXTRA_BROWSER_LAUNCH_SOURCE, ACTIVITY_TYPE_OTHER)
@@ -588,12 +600,12 @@ public class CustomTabActivity extends ChromeActivity {
webContentsStateOnLaunch = WEBCONTENTS_STATE_TRANSFERRED_WEBCONTENTS;
webContents.resumeLoadingCreatedWebContents();
} else {
- webContents = WarmupManager.getInstance().takeSpareWebContents(false, false);
+ webContents = WarmupManager.getInstance().takeSpareWebContents(IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled(), false);
if (webContents != null) {
webContentsStateOnLaunch = WEBCONTENTS_STATE_SPARE_WEBCONTENTS;
} else {
webContents =
- WebContentsFactory.createWebContentsWithWarmRenderer(false, false);
+ WebContentsFactory.createWebContentsWithWarmRenderer(IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled(), false);
webContentsStateOnLaunch = WEBCONTENTS_STATE_NO_WEBCONTENTS;
}
}
@@ -835,6 +847,13 @@ public class CustomTabActivity extends ChromeActivity {
if (getAppMenuHandler() != null) getAppMenuHandler().hideAppMenu();
super.finish();
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ if (incognitoOnly) {
+ int incognitoCount = IncognitoNotificationService.getIncognitoTabCount();
+ if (incognitoCount == 0) {
+ IncognitoNotificationManager.dismissIncognitoNotification();
+ }
+ }
if (mIntentDataProvider != null && mIntentDataProvider.shouldAnimateOnFinish()) {
mShouldOverridePackage = true;
overridePendingTransition(mIntentDataProvider.getAnimationEnterRes(),
@@ -853,7 +872,8 @@ public class CustomTabActivity extends ChromeActivity {
public final void finishAndClose(boolean reparenting) {
if (mIsClosing) return;
mIsClosing = true;
- if (!reparenting) {
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ if (!reparenting && !incognitoOnly) {
// Closing the activity destroys the renderer as well. Re-create a spare renderer some
// time after, so that we have one ready for the next tab open. This does not increase
// memory consumption, as the current renderer goes away. We create a renderer as a lot
@@ -1025,7 +1045,8 @@ public class CustomTabActivity extends ChromeActivity {
protected void setStatusBarColor(Tab tab, int color) {
// Intentionally do nothing as CustomTabActivity explicitly sets status bar color. Except
// for Custom Tabs opened by Chrome.
- if (mIntentDataProvider.isOpenedByChrome()) super.setStatusBarColor(tab, color);
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ if (mIntentDataProvider.isOpenedByChrome() && !incognitoOnly) super.setStatusBarColor(tab, color);
}
/**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java b/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java
index f9e91ad..3e9bd1c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java
@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.incognito;
import android.annotation.TargetApi;
import android.app.Activity;
+import android.util.SparseArray;
import android.app.ActivityManager;
import android.app.ActivityManager.AppTask;
import android.app.ActivityManager.RecentTaskInfo;
@@ -24,15 +25,21 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.ThreadUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.library_loader.LibraryProcessType;
+import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.TabState;
+import org.chromium.chrome.browser.customtabs.CustomTabActivity;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.document.DocumentUtils;
import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.chrome.browser.tabmodel.AsyncTabParams;
+import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager;
import org.chromium.chrome.browser.tabmodel.TabWindowManager;
import org.chromium.chrome.browser.tabmodel.TabbedModeTabPersistencePolicy;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
import org.chromium.content.browser.BrowserStartupController;
+import org.chromium.chrome.browser.webapps.WebappActivity;
import java.io.File;
import java.lang.ref.WeakReference;
@@ -189,7 +196,9 @@ public class IncognitoNotificationService extends IntentService {
for (int i = 0; i < runningActivities.size(); i++) {
Activity activity = runningActivities.get(i).get();
if (activity == null) continue;
- if (!(activity instanceof ChromeTabbedActivity)) continue;
+ if (!(activity instanceof ChromeTabbedActivity ||
+ activity instanceof CustomTabActivity ||
+ activity instanceof WebappActivity)) continue;
ChromeTabbedActivity tabbedActivity = (ChromeTabbedActivity) activity;
if (tabbedActivity.isActivityDestroyed()) continue;
@@ -205,7 +214,7 @@ public class IncognitoNotificationService extends IntentService {
BottomSheet.SHEET_STATE_PEEK, false);
}
- tabbedActivity.getTabModelSelector().getModel(true).closeAllTabs(
+ chromeActivity.getTabModelSelector().getModel(true).closeAllTabs(
false, false);
}
}
@@ -229,4 +238,30 @@ public class IncognitoNotificationService extends IntentService {
return deletionSuccessful;
}
+ public static int getIncognitoTabCount() {
+ int count = 0;
+ List<WeakReference<Activity>> runningActivities =
+ ApplicationStatus.getRunningActivities();
+ for (int i = 0; i < runningActivities.size(); i++) {
+ Activity activity = runningActivities.get(i).get();
+ if (activity == null) continue;
+ if (!(activity instanceof ChromeTabbedActivity ||
+ activity instanceof CustomTabActivity ||
+ activity instanceof WebappActivity)) continue;
+
+ ChromeActivity chromeActivity = (ChromeActivity) activity;
+ if (chromeActivity.isActivityDestroyed()) continue;
+
+ count += chromeActivity.getTabModelSelector().getModel(true).getCount();
+ }
+ // Count tabs that are moving between activities (e.g. a tab that was recently reparented
+ // and hasn't been attached to its new activity yet).
+ SparseArray<AsyncTabParams> asyncTabParams = AsyncTabParamsManager.getAsyncTabParams();
+ for (int i = 0; i < asyncTabParams.size(); i++) {
+ Tab tab = asyncTabParams.valueAt(i).getTabToReparent();
+ if (tab != null && tab.isIncognito()) count++;
+ }
+ return count;
+ }
+
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoOnlyModeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoOnlyModeUtil.java
new file mode 100644
index 0000000..f6b17e7
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/incognito/IncognitoOnlyModeUtil.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2016, The Linux Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of The Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+package org.chromium.chrome.browser.incognito;
+
+import org.chromium.base.CommandLine;
+import org.chromium.base.ContextUtils;
+import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager;
+
+/**
+ * Utility class for incognito only mode
+ */
+public class IncognitoOnlyModeUtil {
+ private static IncognitoOnlyModeUtil sInstance;
+
+ private IncognitoOnlyModeUtil() {}
+
+ public static IncognitoOnlyModeUtil getInstance() {
+ if (sInstance == null) {
+ sInstance = new IncognitoOnlyModeUtil();
+ }
+ return sInstance;
+ }
+ /**
+ * @return whether incognito only browser
+ */
+ public boolean isIncognitoOnlyBrowser() {
+ return CommandLine.getInstance().hasSwitch(ChromeSwitches.INCOGNITO_ONLY_MODE);
+ }
+
+ /**
+ * @return whether incognito only mode preference is enabled
+ */
+ public boolean isIncognitoOnlyPreferenceEnabled() {
+ return PrivacyPreferencesManager.getInstance(ContextUtils.getApplicationContext()).
+ isIncognitoOnlyEnabled();
+ }
+
+ /**
+ * @return whether incognito only browser or incognito only mode preference is enabled
+ */
+ public boolean isIncognitoOnlyModeEnabled() {
+ return isIncognitoOnlyBrowser() || isIncognitoOnlyPreferenceEnabled();
+ }
+
+}
\ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
index e594c57..def79eb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/LocationBarPhone.java
@@ -20,6 +20,7 @@ import android.widget.FrameLayout;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.WindowDelegate;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.toolbar.ToolbarDataProvider;
import org.chromium.chrome.browser.util.MathUtils;
@@ -271,7 +272,8 @@ public class LocationBarPhone extends LocationBarLayout {
boolean showIncognitoBadge =
getToolbarDataProvider() != null && getToolbarDataProvider().isIncognito();
- mIncognitoBadge.setVisibility(showIncognitoBadge ? VISIBLE : GONE);
+ mIncognitoBadge.setVisibility(showIncognitoBadge
+ && !IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled() ? VISIBLE : GONE);
updateIncognitoBadgePadding();
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
index 0d78e7c..b1b9f67 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -4,6 +4,8 @@
package org.chromium.chrome.browser.preferences.privacy;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
@@ -18,8 +20,11 @@ import org.chromium.base.SysUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.ApplicationLifetime;
+import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial;
import org.chromium.chrome.browser.help.HelpAndFeedback;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.physicalweb.PhysicalWeb;
import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference;
import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate;
@@ -41,6 +46,7 @@ public class PrivacyPreferences extends PreferenceFragment
private static final String PREF_SAFE_BROWSING = "safe_browsing";
private static final String PREF_CONTEXTUAL_SEARCH = "contextual_search";
private static final String PREF_NETWORK_PREDICTIONS = "network_predictions";
+ private static final String PREF_INCOGNITO_ONLY = "incognito_only";
private static final String PREF_DO_NOT_TRACK = "do_not_track";
private static final String PREF_USAGE_AND_CRASH_REPORTING = "usage_and_crash_reports";
private static final String PREF_PHYSICAL_WEB = "physical_web";
@@ -129,6 +135,18 @@ public class PrivacyPreferences extends PreferenceFragment
recordNetworkPredictionEnablingUMA((boolean) newValue);
} else if (PREF_NAVIGATION_ERROR.equals(key)) {
PrefServiceBridge.getInstance().setResolveNavigationErrorEnabled((boolean) newValue);
+ } else if (PREF_INCOGNITO_ONLY.equals(key)) {
+ incognitoOnlyPreferenceDialog(preference, (boolean) newValue).show();
+ }
+
+ boolean isIncognitoOnlyBrowser = IncognitoOnlyModeUtil.getInstance()
+ .isIncognitoOnlyBrowser();
+ ChromeBaseCheckBoxPreference incognitoOnlyPref =
+ (ChromeBaseCheckBoxPreference) findPreference(PREF_INCOGNITO_ONLY);
+ if (isIncognitoOnlyBrowser) {
+ preferenceScreen.removePreference(incognitoOnlyPref);
+ } else {
+ incognitoOnlyPref.setOnPreferenceChangeListener(this);
}
return true;
@@ -189,6 +207,13 @@ public class PrivacyPreferences extends PreferenceFragment
doNotTrackPref.setSummary(prefServiceBridge.isDoNotTrackEnabled() ? textOn : textOff);
}
+ Preference incognitoOnlyPref = findPreference(PREF_INCOGNITO_ONLY);
+ if (incognitoOnlyPref != null) {
+ boolean isIncognitoOnlyEnabled = privacyPrefManager.isIncognitoOnlyEnabled();
+ incognitoOnlyPref.setChecked(isIncognitoOnlyEnabled);
+ incognitoOnlyPref.setSummary(isIncognitoOnlyEnabled ? textOn : textOff);
+ }
+
Preference contextualPref = findPreference(PREF_CONTEXTUAL_SEARCH);
if (contextualPref != null) {
boolean isContextualSearchEnabled = !prefServiceBridge.isContextualSearchDisabled();
@@ -254,4 +279,38 @@ public class PrivacyPreferences extends PreferenceFragment
}
return false;
}
+
+ private AlertDialog incognitoOnlyPreferenceDialog(final Preference preference,
+ final boolean isChecked) {
+ AlertDialog dialog = new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme)
+ .setTitle(isChecked ? R.string.incognito_only_turn_on_title
+ : R.string.incognito_only_turn_off_title)
+ .setMessage(isChecked ? R.string.incognito_only_turn_on_confirmation
+ : R.string.incognito_only_turn_off_confirmation)
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ ((ChromeBaseCheckBoxPreference) preference).setChecked(!isChecked);
+ dialog.dismiss();
+ }
+ })
+ .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ PrivacyPreferencesManager.getInstance(getActivity()).
+ setIncognitoOnlyEnabled((boolean) isChecked);
+ dialog.dismiss();
+ ApplicationLifetime.terminate(true);
+ }
+ })
+ .setOnCancelListener(new DialogInterface.OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface dialog) {
+ ((ChromeBaseCheckBoxPreference) preference).setChecked(!isChecked);
+ }
+ })
+ .create();
+
+ return dialog;
+ }
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManager.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManager.java
index 4ddbd4d..9e2a163 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManager.java
@@ -38,6 +38,7 @@ public class PrivacyPreferencesManager implements CrashReportingPermissionManage
private static final String PREF_BANDWIDTH_NO_CELLULAR_OLD = "prefetch_bandwidth_no_cellular";
private static final String ALLOW_PRERENDER_OLD = "allow_prefetch";
private static final String PREF_PHYSICAL_WEB = "physical_web";
+ private static final String INCOGNITO_ONLY_PREFERENCE = "incognito_only_preference";
private static final int PHYSICAL_WEB_OFF = 0;
private static final int PHYSICAL_WEB_ON = 1;
private static final int PHYSICAL_WEB_ONBOARDING = 2;
@@ -339,4 +340,23 @@ public class PrivacyPreferencesManager implements CrashReportingPermissionManage
int state = mSharedPreferences.getInt(PREF_PHYSICAL_WEB, PHYSICAL_WEB_ONBOARDING);
return (state == PHYSICAL_WEB_ON);
}
+
+ /**
+ * Check whether Incognito Only preference is enabled
+ *
+ * @return whether Incognito Only preference is enabled, false by default
+ */
+ public boolean isIncognitoOnlyEnabled() {
+ return mSharedPreferences.getBoolean(INCOGNITO_ONLY_PREFERENCE, false);
+ }
+
+ /**
+ * Sets the Incognito Only preference, which enables the browser to switch to incognito only
+ * mode
+ *
+ * @param enabled A boolean indicating whether to switch to incognito only mode.
+ */
+ public void setIncognitoOnlyEnabled(boolean enabled) {
+ mSharedPreferences.edit().putBoolean(INCOGNITO_ONLY_PREFERENCE, enabled).apply();
+ }
}
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 344a2ed..d54accf 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
@@ -17,6 +17,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
import org.chromium.chrome.browser.preferences.LocationSettings;
import org.chromium.chrome.browser.preferences.PrefServiceBridge;
import org.chromium.chrome.browser.preferences.PreferenceUtils;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import java.util.ArrayList;
import java.util.List;
@@ -110,6 +111,13 @@ public class SiteSettingsPreferences extends PreferenceFragment
}
private void configurePreferences() {
+ // Remove 'All sites' menu for incognito only browser
+ boolean isIncognitoOnlyBrowser = IncognitoOnlyModeUtil.getInstance()
+ .isIncognitoOnlyBrowser();
+ if (isIncognitoOnlyBrowser) {
+ getPreferenceScreen().removePreference(findPreference(ALL_SITES_KEY));
+ }
+
if (mMediaSubMenu) {
// The Media sub-menu only contains Protected Content and Autoplay, so remove all other
// menus.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/snackbar/undo/UndoBarController.java b/chrome/android/java/src/org/chromium/chrome/browser/snackbar/undo/UndoBarController.java
index d90ccc3..ddc30f2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/snackbar/undo/UndoBarController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/snackbar/undo/UndoBarController.java
@@ -9,6 +9,7 @@ import android.content.Context;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.device.DeviceClassManager;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.snackbar.Snackbar;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.tab.Tab;
@@ -64,7 +65,8 @@ public class UndoBarController implements SnackbarManager.SnackbarController {
mTabModelObserver = new EmptyTabModelObserver() {
private boolean disableUndo() {
return AccessibilityUtil.isAccessibilityEnabled()
- || DeviceClassManager.enableAccessibilityLayout();
+ || DeviceClassManager.enableAccessibilityLayout()
+ || IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
}
@Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModel.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModel.java
index c3e7aa0..b1d758c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModel.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.tabmodel;
import org.chromium.base.ObserverList;
import org.chromium.base.ThreadUtils;
import org.chromium.chrome.browser.incognito.IncognitoNotificationManager;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationService;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.tab.Tab;
@@ -82,7 +83,7 @@ public class IncognitoTabModel implements TabModel {
// Only delete the incognito profile if there are no incognito tabs open in any tab
// model selector as the profile is shared between them.
- if (profile != null && !mDelegate.doIncognitoTabsExist()) {
+ if (profile != null && !(IncognitoNotificationService.getIncognitoTabCount() > 0)) {
IncognitoNotificationManager.dismissIncognitoNotification();
profile.destroyWhenAppropriate();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
index 5221244..c976cd4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.tabmodel;
import org.chromium.base.ObserverList;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
@@ -40,7 +41,8 @@ public abstract class TabModelSelectorBase implements TabModelSelector {
for (int i = 0; i < models.length; i++) {
tabModels.add(models[i]);
}
- mActiveModelIndex = startIncognito ? INCOGNITO_TAB_MODEL_INDEX : NORMAL_TAB_MODEL_INDEX;
+ mActiveModelIndex = (startIncognito ||
+ IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled()) ? INCOGNITO_TAB_MODEL_INDEX : NORMAL_TAB_MODEL_INDEX;
mTabModels = Collections.unmodifiableList(tabModels);
TabModelObserver tabModelObserver = new EmptyTabModelObserver() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
index e69d43c..71893ff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/document/DocumentTabModelSelector.java
@@ -14,6 +14,7 @@ import android.os.Build;
import org.chromium.base.ContextUtils;
import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.browser.document.DocumentUtils;
+import org.chromium.chrome.browser.incognito.IncognitoNotificationService;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabIdManager;
import org.chromium.chrome.browser.tabmodel.IncognitoTabModel.IncognitoTabModelDelegate;
@@ -105,7 +106,7 @@ public class DocumentTabModelSelector extends TabModelSelectorBase implements Ta
public boolean doIncognitoTabsExist() {
// TODO(dfalcantara): Devices in document mode do not trigger the TabWindowManager.
// Revisit this when we have a Samsung L multi-instance device.
- return mIncognitoTabModel.getCount() > 0;
+ return IncognitoNotificationService.getIncognitoTabCount() > 0;
}
}, mActivityDelegate);
initializeTabIdCounter();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
index 26bb763..b01a165 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
@@ -52,6 +52,7 @@ import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.document.DocumentUtils;
import org.chromium.chrome.browser.fullscreen.ChromeFullscreenManager;
+import org.chromium.chrome.browser.incognito.IncognitoOnlyModeUtil;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
@@ -814,6 +815,12 @@ public class WebappActivity extends SingleTabActivity {
mBrandColor = (int) mWebappInfo.themeColor();
}
+ boolean incognitoOnly = IncognitoOnlyModeUtil.getInstance().isIncognitoOnlyModeEnabled();
+ if (incognitoOnly) {
+ mBrandColor = ApiCompatibilityUtils.getColor(getResources(),
+ R.color.incognito_primary_color);
+ }
+
int taskDescriptionColor =
ApiCompatibilityUtils.getColor(getResources(), R.color.default_primary_color);
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd
index a81975d..f14b395 100644
--- a/chrome/android/java/strings/android_chrome_strings.grd
+++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -225,6 +225,26 @@ CHAR-LIMIT guidelines:
Retry
</message>
+ <!-- Incognito Only mode -->
+ <message name="IDS_INCOGNITO_ONLY_TITLE" desc="The label for incognito-only toggle option.">
+ &quot;Incognito Only&quot; mode
+ </message>
+ <message name="IDS_INCOGNITO_ONLY_SUMMARY" desc="The summary for incognito-only toggle option.">
+ Browse using only incognito tabs
+ </message>
+ <message name="IDS_INCOGNITO_ONLY_TURN_ON_TITLE" desc="The tooltip for enabling incognito-only mode.">
+ Enable &quot;Incognito Only&quot; mode
+ </message>
+ <message name="IDS_INCOGNITO_ONLY_TURN_OFF_TITLE" desc="The tooltip for disabling incognito-only mode.">
+ Disable &quot;Incognito Only&quot; mode
+ </message>
+ <message name="IDS_INCOGNITO_ONLY_TURN_ON_CONFIRMATION" desc="The confirmation message for turning on incognito-only mode.">
+ Browser will <ph name="BEGIN_BOLD">&lt;b&gt;</ph>restart<ph name="END_BOLD">&lt;/b&gt;</ph> in incognito-only mode. All opened tabs will be closed.
+ </message>
+ <message name="IDS_INCOGNITO_ONLY_TURN_OFF_CONFIRMATION" desc="The confirmation message for turning off incognito-only mode.">
+ Browser will <ph name="BEGIN_BOLD">&lt;b&gt;</ph>restart<ph name="END_BOLD">&lt;/b&gt;</ph> in regular mode. All opened tabs will be closed.
+ </message>
+
<!-- Main Preferences -->
<message name="IDS_PREFERENCES" desc="Title for Chrome's Settings.">
Settings
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
index ba24b98..a576f9d 100644
--- a/chrome/android/java_sources.gni
+++ b/chrome/android/java_sources.gni
@@ -491,6 +491,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/identity/UuidBasedUniqueIdentificationGenerator.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationManager.java",
"java/src/org/chromium/chrome/browser/incognito/IncognitoNotificationService.java",
+ "java/src/org/chromium/chrome/browser/incognito/IncognitoOnlyModeUtil.java",
"java/src/org/chromium/chrome/browser/infobar/AppBannerInfoBarAndroid.java",
"java/src/org/chromium/chrome/browser/infobar/AppBannerInfoBarDelegateAndroid.java",
"java/src/org/chromium/chrome/browser/infobar/AutofillCreditCardFillingInfoBar.java",