diff --git a/CHANGELOG.md b/CHANGELOG.md index cf4d2112..4dfea0d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# 86.0.4240.194 +* fix native pages displaying incorrectly with the sticky desktop mode (thanks to @uazo) +* re-introduce simplified NTP (fixes https://github.com/bromite/bromite/issues/701) +* re-introduce site settings to block autoplay (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/791) +* fix Omnibox flag not working (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/789) + # 86.0.4240.181 * allow sticky desktop mode for all tabs (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/780) diff --git a/README.md b/README.md index e9cbe7ed..60b501e6 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,8 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042` * privacy enhancement patches from [Iridium](https://iridiumbrowser.de/), [Inox patchset](https://github.com/gcarq/inox-patchset), [Brave](https://brave.com/) and [ungoogled-chromium](https://github.com/Eloston/ungoogled-chromium) projects * security enhancement patches from [GrapheneOS](https://github.com/GrapheneOS) project * disable scroll-to-text-fragment +* reduced referer granularity +* block gateway attacks via websockets ## Features not related to privacy * import/export bookmarks @@ -66,6 +68,11 @@ ETH donations address: `0xf47ff39223d828f99fec5ab53bd068c5c0522042` * do not ignore save prompt for users without SD cards * disable articles and increase number of icons on new tab page * adding an URL as bookmark will clear its blocked status for the NTP tiles +* history support in incognito mode +* view source of pages +* timezone customization +* sticky desktop mode setting +* disable video autoplay by default You can inspect all functionality/privacy changes by reading the [patches](https://github.com/bromite/bromite/tree/master/build/patches) and/or the [CHANGELOG](./CHANGELOG.md). @@ -77,6 +84,7 @@ Flags which have been retired from upstream Chromium but are still available in * `#pull-to-refresh` * `#enable-search-ready-omnibox` * `#darken-websites-checkbox-in-themes-setting` +* `#simplified-ntp` New flags: diff --git a/build/RELEASE b/build/RELEASE index bed018d0..9bcbce78 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -86.0.4240.181 +86.0.4240.194 diff --git a/build/bromite_patches_list.txt b/build/bromite_patches_list.txt index c1d5d08d..a5ef5fa5 100644 --- a/build/bromite_patches_list.txt +++ b/build/bromite_patches_list.txt @@ -149,7 +149,7 @@ Hardening-against-incognito-mode-detection.patch Remove-weblayer-dependency-on-Play-Services.patch Timezone-customization.patch Move-some-account-settings-back-to-privacy-settings.patch -Add-a-flag-to-always-view-desktop-site-for-all-websites.patch -Revert-removal-option-to-block-autoplay.patch -Automated-domain-substitution.patch +Add-flag-to-always-view-the-desktop-site-for-all-websites.patch +Revert-Remove-some-obsolete-NTP-code-post-Simplified-NTP-launch.patch Revert-the-removal-of-an-option-to-block-autoplay.patch +Automated-domain-substitution.patch diff --git a/build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch b/build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch similarity index 99% rename from build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch rename to build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch index 47950a04..e1ab203b 100644 --- a/build/patches/Add-a-flag-to-always-view-desktop-site-for-all-websites.patch +++ b/build/patches/Add-flag-to-always-view-the-desktop-site-for-all-websites.patch @@ -494,3 +494,6 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh void clearHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller); int getNavigationHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller, Object history); +-- +2.17.1 + diff --git a/build/patches/Automated-domain-substitution.patch b/build/patches/Automated-domain-substitution.patch index c6140baf..1de5ff8b 100644 --- a/build/patches/Automated-domain-substitution.patch +++ b/build/patches/Automated-domain-substitution.patch @@ -980,7 +980,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java -@@ -20,7 +20,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition; +@@ -24,7 +24,7 @@ import org.chromium.chrome.browser.download.DownloadOpenSource; * Extension of {@link NativePageNavigationDelegate} with suggestions-specific methods. */ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateImpl { @@ -1052,7 +1052,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #if !defined(OS_ANDROID) {"load-media-router-component-extension", flag_descriptions::kLoadMediaRouterComponentExtensionName, -@@ -3325,7 +3325,7 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3328,7 +3328,7 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSetMarketUrlForTestingName, flag_descriptions::kSetMarketUrlForTestingDescription, kOsAndroid, SINGLE_VALUE_TYPE_AND_VALUE(switches::kMarketUrlForTesting, @@ -16364,7 +16364,7 @@ diff --git a/third_party/blink/renderer/core/html/html_iframe_element.cc b/third diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc --- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc +++ b/third_party/blink/renderer/core/html/media/autoplay_policy.cc -@@ -31,10 +31,10 @@ namespace { +@@ -32,10 +32,10 @@ namespace { const char kWarningUnmuteFailed[] = "Unmuting failed and the element was paused instead because the user " diff --git a/build/patches/Restore-Search-Ready-Omnibox-flag.patch b/build/patches/Restore-Search-Ready-Omnibox-flag.patch index 6e933e2a..06dff4d6 100644 --- a/build/patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/patches/Restore-Search-Ready-Omnibox-flag.patch @@ -150,3 +150,6 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String OMNIBOX_COMPACT_SUGGESTIONS = "OmniboxCompactSuggestions"; public static final String OMNIBOX_DEFERRED_KEYBOARD_POPUP = "OmniboxDeferredKeyboardPopup"; public static final String OMNIBOX_ENABLE_CLIPBOARD_PROVIDER_IMAGE_SUGGESTIONS = +-- +2.17.1 + diff --git a/build/patches/Revert-Remove-some-obsolete-NTP-code-post-Simplified-NTP-launch.patch b/build/patches/Revert-Remove-some-obsolete-NTP-code-post-Simplified-NTP-launch.patch new file mode 100644 index 00000000..d785cc53 --- /dev/null +++ b/build/patches/Revert-Remove-some-obsolete-NTP-code-post-Simplified-NTP-launch.patch @@ -0,0 +1,453 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sat, 7 Nov 2020 23:51:29 +0100 +Subject: Revert "Remove some obsolete NTP code post Simplified NTP launch" + +This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad. +--- + chrome/android/chrome_java_resources.gni | 1 + + chrome/android/chrome_java_sources.gni | 1 + + .../java/res/layout/new_tab_page_layout.xml | 7 ++ + .../android/java/res/layout/ntp_shortcuts.xml | 65 +++++++++++++++++++ + .../browser/bookmarks/BookmarkUtils.java | 2 +- + .../feedback/ChromeFeedbackCollector.java | 1 + + .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++ + .../chrome/browser/ntp/NewTabPageLayout.java | 30 ++++++++- + .../suggestions/SuggestionsConfig.java | 4 +- + .../SuggestionsNavigationDelegate.java | 14 ++++ + chrome/browser/about_flags.cc | 3 + + chrome/browser/flag_descriptions.cc | 3 + + chrome/browser/flag_descriptions.h | 3 + + .../flags/android/chrome_feature_list.cc | 4 ++ + .../flags/android/chrome_feature_list.h | 1 + + .../browser/flags/ChromeFeatureList.java | 1 + + components/ntp_snippets/features.cc | 6 +- + .../variations/fieldtrial_testing_config.json | 18 +++++ + 18 files changed, 197 insertions(+), 5 deletions(-) + create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml + create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java + +diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni +--- a/chrome/android/chrome_java_resources.gni ++++ b/chrome/android/chrome_java_resources.gni +@@ -960,6 +960,7 @@ chrome_java_resources = [ + "java/res/layout/new_tab_page_snippets_expandable_header.xml", + "java/res/layout/new_tab_page_snippets_expandable_header_with_menu.xml", + "java/res/layout/new_tab_page_tile_grid_placeholder.xml", ++ "java/res/layout/ntp_shortcuts.xml", + "java/res/layout/omnibox_answer_suggestion.xml", + "java/res/layout/omnibox_basic_suggestion.xml", + "java/res/layout/omnibox_entity_suggestion.xml", +diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni +--- a/chrome/android/chrome_java_sources.gni ++++ b/chrome/android/chrome_java_sources.gni +@@ -711,6 +711,7 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/feedback/IMEFeedbackSource.java", + "java/src/org/chromium/chrome/browser/feedback/InterestFeedFeedbackSource.java", + "java/src/org/chromium/chrome/browser/feedback/LowEndDeviceFeedbackSource.java", ++ "java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java", + "java/src/org/chromium/chrome/browser/feedback/PermissionFeedbackSource.java", + "java/src/org/chromium/chrome/browser/feedback/ProcessIdFeedbackSource.java", + "java/src/org/chromium/chrome/browser/feedback/ScreenshotSource.java", +diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml +--- a/chrome/android/java/res/layout/new_tab_page_layout.xml ++++ b/chrome/android/java/res/layout/new_tab_page_layout.xml +@@ -60,6 +60,13 @@ + android:layout="@layout/new_tab_page_offline_card" + android:inflatedId="@+id/explore_offline_card" /> + ++ ++ + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java +@@ -170,7 +170,7 @@ public class BookmarkUtils { + * Shows bookmark main UI. + * @param activity An activity to start the manager with. + */ +- public static void showBookmarkManager(ChromeActivity activity) { ++ public static void showBookmarkManager(Activity activity) { + ThreadUtils.assertOnUiThread(); + String url = getFirstUrlToLoad(activity); + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java +@@ -55,6 +55,7 @@ public class ChromeFeedbackCollector + sources.add(new LowEndDeviceFeedbackSource()); + sources.add(new IMEFeedbackSource()); + sources.add(new PermissionFeedbackSource()); ++ sources.add(new SimplifiedNtpFeedbackSource()); + sources.add(new FeedbackContextFeedbackSource(initParams.feedbackContext)); + sources.add(new DuetFeedbackSource()); + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java +new file mode 100644 +--- /dev/null ++++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java +@@ -0,0 +1,38 @@ ++// Copyright 2018 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++package org.chromium.chrome.browser.feedback; ++ ++import org.chromium.chrome.browser.flags.ChromeFeatureList; ++import org.chromium.chrome.browser.ntp.NewTabPageLayout; ++ ++import java.util.HashMap; ++import java.util.Map; ++ ++/** ++ * Provides information about whether the simplified NTP is enabled for use in feedback reports. ++ */ ++public class SimplifiedNtpFeedbackSource implements FeedbackSource { ++ private static final String SIMPLIFIED_NTP_KEY = "Simplified NTP"; ++ private static final String ENABLED_VALUE = "Enabled"; ++ private static final String DISABLED_VALUE = "Disabled"; ++ ++ private final HashMap mMap; ++ ++ SimplifiedNtpFeedbackSource() { ++ mMap = new HashMap(1); ++ ++ boolean isEnabled = ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP); ++ if (!isEnabled) { ++ mMap.put(SIMPLIFIED_NTP_KEY, DISABLED_VALUE); ++ } else { ++ mMap.put(SIMPLIFIED_NTP_KEY, ENABLED_VALUE); ++ } ++ } ++ ++ @Override ++ public Map getFeedback() { ++ return mMap; ++ } ++} +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +@@ -27,6 +27,7 @@ import org.chromium.base.MathUtils; + import org.chromium.base.TraceEvent; + import org.chromium.base.supplier.Supplier; + import org.chromium.chrome.R; ++import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider; + import org.chromium.chrome.browser.cryptids.ProbabilisticCryptidRenderer; + import org.chromium.chrome.browser.download.DownloadOpenSource; +@@ -96,6 +97,8 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + private Supplier mTabProvider; + private CallbackController mCallbackController = new CallbackController(); + ++ private ViewGroup mShortcutsView; ++ + /** + * Whether the tiles shown in the layout have finished loading. + * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress. +@@ -256,6 +259,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + } + mNoSearchLogoSpacer = findViewById(R.id.no_search_logo_spacer); + ++ initializeShortcuts(); + initializeSearchBoxTextView(); + initializeVoiceSearchButton(); + initializeLayoutChangeListener(); +@@ -552,10 +556,16 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + * Updates the padding for the tile grid based on what is shown above it. + */ + private void updateTileGridPadding() { +- // Set a bit more top padding on the tile grid if there is no logo. +- int paddingTop = getResources().getDimensionPixelSize(shouldShowLogo() ++ int paddingTop; ++ if (mShortcutsView != null) { ++ // If the shortcuts view is visible, padding will be built into that view. ++ paddingTop = 0; ++ } else { ++ // Set a bit more top padding on the tile grid if there is no logo. ++ paddingTop = getResources().getDimensionPixelSize(shouldShowLogo() + ? R.dimen.tile_grid_layout_padding_top + : R.dimen.tile_grid_layout_no_logo_padding_top); ++ } + mSiteSectionViewHolder.itemView.setPadding( + 0, paddingTop, 0, mSiteSectionViewHolder.itemView.getPaddingBottom()); + } +@@ -889,6 +899,22 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + mSearchBoxCoordinator.destroy(); + } + ++ private void initializeShortcuts() { ++ if (!ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP)) { ++ return; ++ } ++ ++ ViewStub shortcutsStub = findViewById(R.id.shortcuts_stub); ++ mShortcutsView = (ViewGroup) shortcutsStub.inflate(); ++ ++ mShortcutsView.findViewById(R.id.bookmarks_button) ++ .setOnClickListener(view -> mManager.getNavigationDelegate().navigateToBookmarks()); ++ ++ mShortcutsView.findViewById(R.id.downloads_button) ++ .setOnClickListener( ++ view -> mManager.getNavigationDelegate().navigateToDownloadManager()); ++ } ++ + /** + * Makes the Search Box and Logo as wide as Most Visited. + */ +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java +@@ -51,7 +51,9 @@ public final class SuggestionsConfig { + // The scroll to load feature does not work well for users who require accessibility mode. + if (ChromeAccessibilityUtil.get().isAccessibilityEnabled()) return false; + +- return ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_SCROLL_TO_LOAD); ++ return ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP) ++ && ChromeFeatureList.isEnabled( ++ ChromeFeatureList.CONTENT_SUGGESTIONS_SCROLL_TO_LOAD); + } + + /** +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +@@ -16,6 +16,10 @@ import org.chromium.content_public.browser.LoadUrlParams; + import org.chromium.ui.base.PageTransition; + import org.chromium.ui.mojom.WindowOpenDisposition; + ++import org.chromium.chrome.browser.bookmarks.BookmarkUtils; ++import org.chromium.chrome.browser.download.DownloadUtils; ++import org.chromium.chrome.browser.download.DownloadOpenSource; ++ + /** + * Extension of {@link NativePageNavigationDelegate} with suggestions-specific methods. + */ +@@ -35,6 +39,16 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI + new LoadUrlParams(NEW_TAB_URL_HELP, PageTransition.AUTO_BOOKMARK)); + } + ++ public void navigateToBookmarks() { ++ //RecordUserAction.record("MobileNTPSwitchToBookmarks"); ++ BookmarkUtils.showBookmarkManager(mActivity); ++ } ++ ++ public void navigateToDownloadManager() { ++ //RecordUserAction.record("MobileNTPSwitchToDownloadManager"); ++ DownloadUtils.showDownloadManager(mActivity, null, DownloadOpenSource.NEW_TAB_PAGE); ++ } ++ + /** + * Opens the suggestions page without recording metrics. + * +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 +@@ -3318,6 +3318,9 @@ const FeatureEntry kFeatureEntries[] = { + SINGLE_VALUE_TYPE_AND_VALUE( + switches::kForceShowUpdateMenuItemCustomSummary, + "Custom Summary")}, ++ {"simplified-ntp", flag_descriptions::kSimplifiedNtpName, ++ flag_descriptions::kSimplifiedNtpDescription, kOsAndroid, ++ FEATURE_VALUE_TYPE(chrome::android::kSimplifiedNTP)}, + {"force-show-update-menu-badge", flag_descriptions::kUpdateMenuBadgeName, + flag_descriptions::kUpdateMenuBadgeDescription, kOsAndroid, + SINGLE_VALUE_TYPE(switches::kForceShowUpdateMenuBadge)}, +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 +@@ -3147,6 +3147,9 @@ const char kStartSurfaceAndroidDescription[] = + "Enable showing the start surface when launching Chrome via the " + "launcher."; + ++const char kSimplifiedNtpName[] = "Simplified NTP"; ++const char kSimplifiedNtpDescription[] = "Show a simplified New Tab Page."; ++ + const char kStrictSiteIsolationName[] = "Strict site isolation"; + const char kStrictSiteIsolationDescription[] = + "Security mode that enables site isolation for all sites (SitePerProcess). " +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 +@@ -1812,6 +1812,9 @@ extern const char kShoppingAssistDescription[]; + extern const char kSiteIsolationForPasswordSitesName[]; + extern const char kSiteIsolationForPasswordSitesDescription[]; + ++extern const char kSimplifiedNtpName[]; ++extern const char kSimplifiedNtpDescription[]; ++ + extern const char kStartSurfaceAndroidName[]; + extern const char kStartSurfaceAndroidDescription[]; + +diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc +--- a/chrome/browser/flags/android/chrome_feature_list.cc ++++ b/chrome/browser/flags/android/chrome_feature_list.cc +@@ -179,6 +179,7 @@ const base::Feature* kFeaturesExposedToJava[] = { + &kNewPhotoPicker, + &kNotificationSuspender, + &kOfflineIndicatorV2, ++ &kSimplifiedNTP, + &kOmniboxSpareRenderer, + &kOverlayNewLayout, + &kPayWithGoogleV1, +@@ -539,6 +540,9 @@ const base::Feature kNotificationSuspender{"NotificationSuspender", + const base::Feature kOfflineIndicatorV2{"OfflineIndicatorV2", + base::FEATURE_DISABLED_BY_DEFAULT}; + ++const base::Feature kSimplifiedNTP{"SimplifiedNTP", ++ base::FEATURE_ENABLED_BY_DEFAULT}; ++ + const base::Feature kOmniboxSpareRenderer{"OmniboxSpareRenderer", + base::FEATURE_DISABLED_BY_DEFAULT}; + +diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h +--- a/chrome/browser/flags/android/chrome_feature_list.h ++++ b/chrome/browser/flags/android/chrome_feature_list.h +@@ -94,6 +94,7 @@ extern const base::Feature kLanguagesPreference; + extern const base::Feature kNewPhotoPicker; + extern const base::Feature kNotificationSuspender; + extern const base::Feature kOfflineIndicatorV2; ++extern const base::Feature kSimplifiedNTP; + extern const base::Feature kOmniboxSpareRenderer; + extern const base::Feature kOverlayNewLayout; + extern const base::Feature kPayWithGoogleV1; +diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java ++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +@@ -312,6 +312,7 @@ public abstract class ChromeFeatureList { + public static final String SEARCH_ENGINE_PROMO_EXISTING_DEVICE = + "SearchEnginePromo.ExistingDevice"; + public static final String SEARCH_ENGINE_PROMO_NEW_DEVICE = "SearchEnginePromo.NewDevice"; ++ public static final String SIMPLIFIED_NTP = "SimplifiedNTP"; + public static final String MARK_HTTP_AS = "MarkHttpAs"; + public static final String MOBILE_IDENTITY_CONSISTENCY = "MobileIdentityConsistency"; + public static final String MODAL_PERMISSION_PROMPTS = "ModalPermissionPrompts"; +diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc +--- a/components/ntp_snippets/features.cc ++++ b/components/ntp_snippets/features.cc +@@ -13,13 +13,17 @@ + #include "components/ntp_snippets/category_rankers/constant_category_ranker.h" + #include "components/variations/variations_associated_data.h" + ++#if defined(OS_ANDROID) ++#include "chrome/browser/flags/android/chrome_feature_list.h" ++#endif // OS_ANDROID ++ + namespace ntp_snippets { + + namespace { + // All platforms proxy for whether the simplified NTP is enabled. + bool IsSimplifiedNtpEnabled() { + #if defined(OS_ANDROID) +- return true; ++ return base::FeatureList::IsEnabled(chrome::android::kSimplifiedNTP); + #else + return false; + #endif // OS_ANDROID +diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json +--- a/testing/variations/fieldtrial_testing_config.json ++++ b/testing/variations/fieldtrial_testing_config.json +@@ -6630,6 +6630,24 @@ + ] + } + ], ++ "SimplifiedNTP": [ ++ { ++ "platforms": [ ++ "android" ++ ], ++ "experiments": [ ++ { ++ "name": "Enabled_NoScrollToLoad", ++ "enable_features": [ ++ "SimplifiedNTP" ++ ], ++ "disable_features": [ ++ "ContentSuggestionsScrollToLoad" ++ ] ++ } ++ ] ++ } ++ ], + "TabGroupsYourTabsTogether": [ + { + "platforms": [ +-- +2.17.1 + diff --git a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch index 142c7c57..7b6f4f9b 100644 --- a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch +++ b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch @@ -3,68 +3,58 @@ Date: Sat, 7 Nov 2020 21:59:18 +0000 Subject: Revert the removal of an option to block autoplay --- - .../browser_ui/site_settings/android/BUILD.gn | 10 ++++++++++ + .../browser_ui/site_settings/android/BUILD.gn | 5 +++++ .../res/drawable-hdpi/settings_autoplay.png | Bin 0 -> 456 bytes - .../java/res/drawable-hdpi/settings_media.png | Bin 0 -> 196 bytes .../res/drawable-mdpi/settings_autoplay.png | Bin 0 -> 296 bytes - .../java/res/drawable-mdpi/settings_media.png | Bin 0 -> 144 bytes .../res/drawable-xhdpi/settings_autoplay.png | Bin 0 -> 551 bytes - .../res/drawable-xhdpi/settings_media.png | Bin 0 -> 227 bytes .../res/drawable-xxhdpi/settings_autoplay.png | Bin 0 -> 792 bytes - .../res/drawable-xxhdpi/settings_media.png | Bin 0 -> 297 bytes .../drawable-xxxhdpi/settings_autoplay.png | Bin 0 -> 1064 bytes - .../res/drawable-xxxhdpi/settings_media.png | Bin 0 -> 383 bytes .../res/xml/single_website_preferences.xml | 2 ++ - .../res/xml/site_settings_preferences.xml | 11 +++++++++++ + .../res/xml/site_settings_preferences.xml | 4 ++++ .../ContentSettingsResources.java | 5 +++++ - .../site_settings/SingleCategorySettings.java | 6 ++++++ - .../site_settings/SingleWebsiteSettings.java | 2 ++ - .../site_settings/SiteSettingsCategory.java | 12 +++++++++--- + .../site_settings/SingleCategorySettings.java | 4 ++++ + .../site_settings/SingleWebsiteSettings.java | 21 ++++++++++++++++++ + .../site_settings/SiteSettingsCategory.java | 12 +++++++--- + .../browser_ui/site_settings/Website.java | 8 +++++++ .../WebsitePermissionsFetcher.java | 5 +++++ - .../WebsitePreferenceBridge.java | 9 +++++++++ - .../android/website_preference_bridge.cc | 18 ++++++++++++++++++ - .../strings/android/site_settings.grdp | 12 ++++++++++++ + .../WebsitePreferenceBridge.java | 9 ++++++++ + .../android/website_preference_bridge.cc | 18 +++++++++++++++ + .../strings/android/site_settings.grdp | 9 ++++++++ + .../core/browser/content_settings_registry.cc | 2 +- .../core/browser/content_settings_utils.cc | 2 ++ .../core/common/content_settings.cc | 1 + .../core/common/content_settings.h | 1 + .../core/common/content_settings.mojom | 1 + .../common/content_settings_mojom_traits.cc | 1 + .../common/content_settings_mojom_traits.h | 5 +++++ - .../renderer/content_settings_agent_impl.cc | 11 +++++++++++ + .../renderer/content_settings_agent_impl.cc | 11 +++++++++ .../renderer/content_settings_agent_impl.h | 1 + .../android/page_info_controller_android.cc | 1 + + components/page_info/page_info.cc | 6 +++++ + components/page_info/page_info_ui.cc | 1 + + components/page_info_strings.grdp | 3 +++ .../platform/web_content_settings_client.h | 3 +++ - .../core/html/media/autoplay_policy.cc | 12 +++++++++++- + .../core/html/media/autoplay_policy.cc | 12 +++++++++- .../core/html/media/autoplay_policy.h | 4 ++++ - 33 files changed, 131 insertions(+), 4 deletions(-) + 33 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_autoplay.png - create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_media.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_autoplay.png - create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_media.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_autoplay.png - create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_media.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/settings_autoplay.png - create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/settings_media.png create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxxhdpi/settings_autoplay.png - create mode 100644 components/browser_ui/site_settings/android/java/res/drawable-xxxhdpi/settings_media.png diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -189,6 +189,16 @@ android_resources("java_resources") { +@@ -189,6 +189,11 @@ android_resources("java_resources") { "java/res/drawable-xxxhdpi/settings_storage.png", "java/res/drawable-xxxhdpi/settings_usb.png", "java/res/drawable-xxxhdpi/web_asset.png", + "java/res/drawable-hdpi/settings_autoplay.png", -+ "java/res/drawable-hdpi/settings_media.png", + "java/res/drawable-xhdpi/settings_autoplay.png", -+ "java/res/drawable-xhdpi/settings_media.png", + "java/res/drawable-xxhdpi/settings_autoplay.png", -+ "java/res/drawable-xxhdpi/settings_media.png", + "java/res/drawable-mdpi/settings_autoplay.png", -+ "java/res/drawable-mdpi/settings_media.png", + "java/res/drawable-xxxhdpi/settings_autoplay.png", -+ "java/res/drawable-xxxhdpi/settings_media.png", "java/res/drawable/ic_person_24dp.xml", "java/res/drawable/settings_bluetooth.xml", "java/res/layout/add_site_dialog.xml", @@ -86,19 +76,6 @@ y{$1Kp0i#npNIV|-Tf!x{>CqV{oZM{Igf1s0000m&@A# literal 0 HcmV?d00001 -diff --git a/components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_media.png b/components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_media.png -new file mode 100644 -index 0000000000000000000000000000000000000000..aafa655ac842373e74c4b9b9766fe84e9a9868a8 -GIT binary patch -literal 196 -zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8x2KC^NX4zU=MHi<81S$L=`<1b9tg-XZ)JnQYL=tvV}~mQQaf~xdSupJvH|JXFV9XkV$dfg>-?u -vn-h2yPqj{9I#J^BGX7y(%C2Q$8%r6}!(y+fKlT0sbQXiBtDnm{r-UW|{=iO$ - -literal 0 -HcmV?d00001 - diff --git a/components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_autoplay.png b/components/browser_ui/site_settings/android/java/res/drawable-mdpi/settings_autoplay.png new file mode 100644 index 0000000000000000000000000000000000000000..49fa10d44f4007532d0d03d15fdcb1a715857e96 @@ -114,18 +91,6 @@ u*BbnAfuj*Re80yVxjo)NA1L&T?!2C$I@?4>V>|Ky0000i{Fh)C -zuztl*CdP5d)Wx2maPjwMQ|pA}h1oy29|>(?Ua0s=-o^O}bP0l+XkKX{9bg - -literal 0 -HcmV?d00001 - diff --git a/components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_autoplay.png b/components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_autoplay.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4128a5e02949de754f9cab2635824eda8c539c @@ -146,20 +111,6 @@ p?=l}ClAlmgAAvHTvG;Wo>j%AMEx!+_@2>y=002ovPDHLkV1fY;_gnw~ literal 0 HcmV?d00001 -diff --git a/components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_media.png b/components/browser_ui/site_settings/android/java/res/drawable-xhdpi/settings_media.png -new file mode 100644 -index 0000000000000000000000000000000000000000..db4cf4f04ea4738e5c66fe90026ff1272cdd8783 -GIT binary patch -literal 227 -zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DRh}-6Ar*0NFWB-OGT>o-5W`$0 -zVR5|p<$<#jMSNAFZDkA19~}4TP*}X{(9BieH|_QK_h^X`&taMElMEdew%=Xu${%}c -z>hYd@^Bw#2pT>Ooy>u?~gOIrG)xXX5&t`oR6t{SL{^#A14CWa%?Cc%yA267fZ#W#}|If(uDZsAN - -literal 0 -HcmV?d00001 - diff --git a/components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/settings_autoplay.png b/components/browser_ui/site_settings/android/java/res/drawable-xxhdpi/settings_autoplay.png new file mode 100644 index 0000000000000000000000000000000000000000..7fceb8c2b546970a3720e8ab225799aa03895b7f @@ -185,21 +136,6 @@ WnED%yq_MdG0000u%GJESvvoH^$@{kW&2-mUH&Qm5D=;FRVs%X@6U|5n~* -zZ__6k@b-0u=f3z+JJm01l5X&_&5k8A;h@`ejG -zf1G6f$Z`6EO$Y3g91a1QAlwARC8lu|?lvAE{9#EmgOPcI7#kzY1zTeQ2ZoEvAabU< -z19vk6(~0M7OdJaedHHw)1-`Cs*rjn|m#M=wSI4;7ZZcOY);_x0YOr!8_gDM%YZu2o -lsP4ZK`F!gs9iW?Eus#pSh>kCpxdHS$gQu&X%Q~loCIHn%d#Fp2!%_zV>{F8`{yVlop4Td;!pv81p=lm1V=ce_mIXYwA8l^tNP -z>}`Hf^4$43KP-RW{%L95Cw%(s-_lic-mUv{@z=@4$A8}35?!Uoc4Ym3lkXX~SnD?* -zefE#@LwjLF0lT3>?C;cH6E4_xFqYZ(WxZ2iv*}+v>$?Kmo*N2#nk62rH`92pAiv=s -z-!%3$`g)vR}U*#(MOYGW`!Ze{Jcr@7w)dK;R4SjE>VwZd4b5 -P>}T+F^>bP0l+XkKNl&N6 - -literal 0 -HcmV?d00001 - diff --git a/components/browser_ui/site_settings/android/java/res/xml/single_website_preferences.xml b/components/browser_ui/site_settings/android/java/res/xml/single_website_preferences.xml --- a/components/browser_ui/site_settings/android/java/res/xml/single_website_preferences.xml +++ b/components/browser_ui/site_settings/android/java/res/xml/single_website_preferences.xml @@ -262,7 +181,7 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/single_web diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml b/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml --- a/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml +++ b/components/browser_ui/site_settings/android/java/res/xml/site_settings_preferences.xml -@@ -65,6 +65,17 @@ +@@ -65,6 +65,10 @@ @@ -270,13 +189,6 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_setti + -+ -+ & jbrowser_context_handle) { -+ return GetBooleanForContentSetting(jbrowser_context_handle, ++ return GetBooleanForContentSetting(jbrowser_context_handle, + ContentSettingsType::AUTOPLAY); +} + @@ -458,16 +419,13 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp -@@ -12,6 +12,18 @@ +@@ -12,6 +12,15 @@ Ads + + Autoplay + -+ -+ Media -+ + + Allow autoplay of muted videos for a specific site. + @@ -477,6 +435,18 @@ diff --git a/components/browser_ui/strings/android/site_settings.grdp b/componen Augmented reality +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 +@@ -324,7 +324,7 @@ void ContentSettingsRegistry::Init() { + ContentSettingsInfo::PERSISTENT, + ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); + +- Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_ALLOW, ++ Register(ContentSettingsType::AUTOPLAY, "autoplay", CONTENT_SETTING_BLOCK, + WebsiteSettingsInfo::UNSYNCABLE, WhitelistedSchemes(), + ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), + WebsiteSettingsInfo::SINGLE_ORIGIN_ONLY_SCOPE, diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc @@ -544,7 +514,7 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai + const RendererContentSettingRules& r) { + return r.autoplay_rules; + } -+ ++ static const std::vector& popup_redirect_rules( const RendererContentSettingRules& r) { return r.popup_redirect_rules; @@ -591,6 +561,53 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp permissions_to_display.push_back(ContentSettingsType::SOUND); if (base::FeatureList::IsEnabled(features::kWebNfc)) permissions_to_display.push_back(ContentSettingsType::NFC); +diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc +--- a/components/page_info/page_info.cc ++++ b/components/page_info/page_info.cc +@@ -102,6 +102,7 @@ ContentSettingsType kPermissionType[] = { + ContentSettingsType::ADS, + ContentSettingsType::BACKGROUND_SYNC, + ContentSettingsType::SOUND, ++ ContentSettingsType::AUTOPLAY, + ContentSettingsType::AUTOMATIC_DOWNLOADS, + #if defined(OS_ANDROID) || defined(OS_CHROMEOS) + ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER, +@@ -168,6 +169,11 @@ bool ShouldShowPermission(const PageInfoUI::PermissionInfo& info, + return is_subresource_filter_activated; + } + ++ // Always show autoplay when it has a site-specific override ++ if (info.type == ContentSettingsType::AUTOPLAY) { ++ return true; ++ } ++ + if (info.type == ContentSettingsType::SOUND) { + // The sound content setting should always show up when the tab has played + // audio. +diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_info_ui.cc +--- a/components/page_info/page_info_ui.cc ++++ b/components/page_info/page_info_ui.cc +@@ -162,6 +162,7 @@ base::span GetContentSettingsUIInfo() { + IDS_PAGE_INFO_TYPE_PROTECTED_MEDIA_IDENTIFIER}, + #endif + {ContentSettingsType::ADS, IDS_PAGE_INFO_TYPE_ADS}, ++ {ContentSettingsType::AUTOPLAY, IDS_PAGE_INFO_TYPE_AUTOPLAY}, + {ContentSettingsType::SOUND, IDS_PAGE_INFO_TYPE_SOUND}, + {ContentSettingsType::CLIPBOARD_READ_WRITE, IDS_PAGE_INFO_TYPE_CLIPBOARD}, + {ContentSettingsType::SENSORS, +diff --git a/components/page_info_strings.grdp b/components/page_info_strings.grdp +--- a/components/page_info_strings.grdp ++++ b/components/page_info_strings.grdp +@@ -275,6 +275,9 @@ + + Sound + ++ ++ Autoplay ++ + + Clipboard + diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/third_party/blink/public/platform/web_content_settings_client.h --- a/third_party/blink/public/platform/web_content_settings_client.h +++ b/third_party/blink/public/platform/web_content_settings_client.h @@ -633,7 +650,7 @@ diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/thi + if (!frame) + return false; + if (auto* settings_client = frame->GetContentSettingsClient()) -+ return settings_client->AllowAutoplay(true /* default_value */); ++ return settings_client->AllowAutoplay(false /* default_value */); + return true; +} + diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 2e4feacd..e16e04b2 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -287,7 +287,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } + public static int getCategorySummary(int contentType, @ContentSettingValues int value) { -+ if(contentType == ContentSettingsType.TIMEZONE_OVERRIDE) { ++ if (contentType == ContentSettingsType.TIMEZONE_OVERRIDE) { + switch (value) { + case ContentSettingValues.ALLOW: + return R.string.website_settings_category_timezone_override_allowed; @@ -301,7 +301,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + } + else + return getCategorySummary(value); -+ } ++ } + /** * Returns the string resource id for a content type to show with a permission category. @@ -310,7 +310,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return descriptionIDs; } } -+ else if(contentType == ContentSettingsType.TIMEZONE_OVERRIDE) { ++ else if (contentType == ContentSettingsType.TIMEZONE_OVERRIDE) { + int[] descriptionIDs = { + R.string.website_settings_category_timezone_override_allowed, // ALLOWED + R.string.website_settings_category_timezone_override_custom, // ASK @@ -411,9 +411,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES) && mRequiresFourStateSetting) { setting = cookieSettingsExceptionShouldBlock() ? ContentSettingValues.BLOCK : ContentSettingValues.ALLOW; -+ } else if(mRequiresTriStateSetting) { ++ } else if (mRequiresTriStateSetting) { + setting = WebsitePreferenceBridge.getContentSetting(browserContextHandle, mCategory.getContentSettingsType()); -+ if(setting == ContentSettingValues.ALLOW) { ++ if (setting == ContentSettingValues.ALLOW) { + setting = ContentSettingValues.BLOCK; + } else { + setting = ContentSettingValues.ALLOW; @@ -776,9 +776,9 @@ new file mode 100755 + public void run() + { + for (int j = 0; j < timezones.size(); j++) { -+ if(currentSelected.equals(timezones.get(j))) { ++ if (currentSelected.equals(timezones.get(j))) { + listView.requestFocusFromTouch(); -+ listView.setSelection(j); ++ listView.setSelection(j); + adapter.notifyDataSetChanged(); + break; + }