Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bbacf5c2 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Browser: Update cromite patches to 123.0.6312.122

parent a92f3440
Loading
Loading
Loading
Loading
+51 −39
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ See discussions at:

License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
 base/android/android_image_reader_compat.cc      |  8 +++++++-
 base/android/android_image_reader_compat.h       |  4 ++++
 base/android/android_image_reader_compat.cc      | 16 ++++++++++++++++
 base/android/android_image_reader_compat.h       | 14 ++++++++++++++
 chrome/browser/flag-metadata.json                |  6 +++---
 .../AImageReader-CFI-crash-mitigations.inc       |  4 ++++
 .../AImageReader-CFI-crash-mitigations.inc       |  1 +
@@ -30,63 +30,67 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
 gpu/config/gpu_finch_features.h                  |  1 +
 gpu/config/gpu_util.cc                           |  8 ++++++++
 gpu/config/gpu_workaround_list.txt               |  1 +
 gpu/ipc/service/gpu_init.cc                      |  7 +++++++
 gpu/ipc/service/gpu_init.cc                      |  8 ++++++++
 gpu/ipc/service/stream_texture_android.cc        | 11 ++++++++++-
 12 files changed, 67 insertions(+), 5 deletions(-)
 12 files changed, 87 insertions(+), 4 deletions(-)
 create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc
 create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc

diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc
--- a/base/android/android_image_reader_compat.cc
+++ b/base/android/android_image_reader_compat.cc
@@ -23,6 +23,8 @@
@@ -7,7 +7,23 @@
 namespace base {
 namespace android {
 
+bool AndroidImageReader::disable_support_ = false;
+AndroidImageReader& AndroidImageReader::GetInstance() {
+  // C++11 static local variable initialization is
+  // thread-safe.
+  static AndroidImageReader instance;
+  return instance;
+}
+
 AndroidImageReader& AndroidImageReader::GetInstance() {
   // C++11 static local variable initialization is
   // thread-safe.
@@ -30,8 +32,12 @@ AndroidImageReader& AndroidImageReader::GetInstance() {
   return instance;
 }
 
+void AndroidImageReader::DisableSupport() {
+  disable_support_ = true;
+}
+
 bool AndroidImageReader::IsSupported() {
-  return is_supported_;
+  return !disable_support_ && is_supported_;
 }
 
 AndroidImageReader::AndroidImageReader() : is_supported_(LoadFunctions()) {}
+bool AndroidImageReader::IsSupported() {
+  return !disable_support_;
+}
+
 bool EnableAndroidImageReader() {
+  if (!AndroidImageReader::GetInstance().IsSupported()) return false;
   // Currently we want to enable AImageReader only for android P+ devices.
   if (__builtin_available(android 28, *)) {
     return true;
diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h
--- a/base/android/android_image_reader_compat.h
+++ b/base/android/android_image_reader_compat.h
@@ -24,6 +24,9 @@ class BASE_EXPORT AndroidImageReader {
   AndroidImageReader(const AndroidImageReader&) = delete;
   AndroidImageReader& operator=(const AndroidImageReader&) = delete;
@@ -10,6 +10,20 @@
 namespace base {
 namespace android {
 
+class BASE_EXPORT AndroidImageReader {
+ public:
+  // Thread safe GetInstance.
+  static AndroidImageReader& GetInstance();
+
+  bool IsSupported();
+
+  // Disable image reader support.
+  static void DisableSupport();
+  void DisableSupport();
+
   // Check if the image reader usage is supported. This function returns TRUE
   // if android version is >=OREO, image reader support is not disabled and all
   // the required functions are loaded.
@@ -61,6 +64,7 @@ class BASE_EXPORT AndroidImageReader {
   jobject ANativeWindow_toSurface(JNIEnv* env, ANativeWindow* window);
 
  private:
+  static bool disable_support_;
   friend class base::NoDestructor<AndroidImageReader>;
+ private:
+  bool disable_support_ = false;
+};
+
 // Check if the image reader usage is supported.
 BASE_EXPORT bool EnableAndroidImageReader();
 
   AndroidImageReader();
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -2923,9 +2923,9 @@
@@ -3046,9 +3046,9 @@
     "expiry_milestone": 125
   },
   {
@@ -143,8 +147,8 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis
diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc
--- a/gpu/config/gpu_finch_features.cc
+++ b/gpu/config/gpu_finch_features.cc
@@ -71,6 +71,11 @@ BASE_FEATURE(kUseGles2ForOopR,
 );
@@ -65,6 +65,11 @@ BASE_FEATURE(kUseGles2ForOopR,
              base::FEATURE_DISABLED_BY_DEFAULT);
 
 #if BUILDFLAG(IS_ANDROID)
+// Use android AImageReader when playing videos with MediaPlayer.
@@ -179,7 +183,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
   if (!gpu_preferences.enable_android_surface_control)
     return kGpuFeatureStatusDisabled;
 
@@ -355,6 +358,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
@@ -368,6 +371,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) {
     gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] =
         kGpuFeatureStatusBlocklisted;
   }
@@ -205,14 +209,22 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list
diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc
--- a/gpu/ipc/service/gpu_init.cc
+++ b/gpu/ipc/service/gpu_init.cc
@@ -675,6 +675,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
@@ -65,6 +65,7 @@
 
 #if BUILDFLAG(IS_ANDROID)
 #include "ui/gfx/android/android_surface_control_compat.h"
+#include "base/android/android_image_reader_compat.h"
 #endif
 
 #if BUILDFLAG(ENABLE_VULKAN)
@@ -662,6 +663,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line,
   }
 #endif  // BUILDFLAG(IS_WIN)
 
+#if BUILDFLAG(IS_ANDROID)
+  // Disable AImageReader if the workaround is enabled.
+  if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) {
+    base::android::AndroidImageReader::DisableSupport();
+    base::android::AndroidImageReader::GetInstance().DisableSupport();
+  }
+#endif
+
+0 −731

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −169
Original line number Diff line number Diff line
From: uazo <uazo@users.noreply.github.com>
Date: Tue, 9 Jan 2024 13:37:05 +0000
Subject: AdblockPlus connect popup blocker

activates the pop-up blocking management present in adblockplus
but not active in upstream.
added "enable-stricter-popup-blocker" flag for the global
deactivation of all pop-ups (default disabled)
---
 .../adblock/adblock_content_browser_client.cc | 52 +++++++++++++++++++
 .../adblock/adblock_content_browser_client.h  | 14 +++++
 components/blocked_content/popup_blocker.cc   |  9 +++-
 components/blocked_content/popup_blocker.h    |  3 ++
 .../about_flags_cc/Stricter-popup-blocker.inc | 14 +++++
 5 files changed, 91 insertions(+), 1 deletion(-)
 create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc

diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc
--- a/chrome/browser/adblock/adblock_content_browser_client.cc
+++ b/chrome/browser/adblock/adblock_content_browser_client.cc
@@ -330,6 +330,58 @@ void AdblockContentBrowserClient::OnWebTransportFilterCheckCompleted(
                                 "Blocked", false));
 }
 
+bool AdblockContentBrowserClient::CanCreateWindow(
+    content::RenderFrameHost* opener,
+    const GURL& opener_url,
+    const GURL& opener_top_level_frame_url,
+    const url::Origin& source_origin,
+    content::mojom::WindowContainerType container_type,
+    const GURL& target_url,
+    const content::Referrer& referrer,
+    const std::string& frame_name,
+    WindowOpenDisposition disposition,
+    const blink::mojom::WindowFeatures& features,
+    bool user_gesture,
+    bool opener_suppressed,
+    bool* no_javascript_access) {
+  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  DCHECK(opener);
+
+  if (IsFilteringNeeded(opener)) {
+    content::WebContents* web_contents =
+        content::WebContents::FromRenderFrameHost(opener);
+    auto* subscription_service =
+        adblock::SubscriptionServiceFactory::GetForBrowserContext(
+            web_contents->GetBrowserContext());
+
+    GURL popup_url(target_url);
+    web_contents->GetPrimaryMainFrame()->GetProcess()->FilterURL(false,
+                                                                 &popup_url);
+    auto* classification_runner =
+        adblock::ResourceClassificationRunnerFactory::GetForBrowserContext(
+            web_contents->GetBrowserContext());
+    const auto popup_blocking_decision =
+        classification_runner->ShouldBlockPopup(
+            subscription_service->GetCurrentSnapshot(), popup_url, opener);
+    if (popup_blocking_decision == adblock::FilterMatchResult::kAllowRule) {
+      return true;
+    }
+    if (popup_blocking_decision == adblock::FilterMatchResult::kBlockRule) {
+      return false;
+    }
+    // Otherwise, if eyeo adblocking is disabled or there is no rule that
+    // explicitly allows or blocks a popup, fall back on Chromium's built-in
+    // popup blocker.
+    DCHECK(popup_blocking_decision == adblock::FilterMatchResult::kDisabled ||
+           popup_blocking_decision == adblock::FilterMatchResult::kNoRule);
+  }
+
+  return ChromeContentBrowserClient::CanCreateWindow(
+      opener, opener_url, opener_top_level_frame_url, source_origin,
+      container_type, target_url, referrer, frame_name, disposition, features,
+      user_gesture, opener_suppressed, no_javascript_access);
+}
+
 bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
     content::BrowserContext* browser_context,
     content::RenderFrameHost* frame,
diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/browser/adblock/adblock_content_browser_client.h
--- a/chrome/browser/adblock/adblock_content_browser_client.h
+++ b/chrome/browser/adblock/adblock_content_browser_client.h
@@ -82,6 +82,20 @@ class AdblockContentBrowserClient : public ChromeContentBrowserClient {
       scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner)
       override;
 
+  bool CanCreateWindow(content::RenderFrameHost* opener,
+      const GURL& opener_url,
+      const GURL& opener_top_level_frame_url,
+      const url::Origin& source_origin,
+      content::mojom::WindowContainerType container_type,
+      const GURL& target_url,
+      const content::Referrer& referrer,
+      const std::string& frame_name,
+      WindowOpenDisposition disposition,
+      const blink::mojom::WindowFeatures& features,
+      bool user_gesture,
+      bool opener_suppressed,
+      bool* no_javascript_access) override;
+
  private:
   void CreateWebSocketInternal(
       content::RenderProcessHost* process,
diff --git a/components/blocked_content/popup_blocker.cc b/components/blocked_content/popup_blocker.cc
--- a/components/blocked_content/popup_blocker.cc
+++ b/components/blocked_content/popup_blocker.cc
@@ -20,6 +20,11 @@
 #include "third_party/blink/public/mojom/frame/frame.mojom-shared.h"
 
 namespace blocked_content {
+
+CROMITE_FEATURE(kStrictPopupBlocker,
+                "StrictPopupBlocker",
+                base::FEATURE_DISABLED_BY_DEFAULT);
+
 namespace {
 
 content::Page& GetSourcePageForPopup(
@@ -88,7 +93,9 @@ PopupBlockType ShouldBlockPopup(content::WebContents* web_contents,
           GetSourcePageForPopup(open_url_params, web_contents))) {
     return PopupBlockType::kAbusive;
   }
-  return PopupBlockType::kNotBlocked;
+  return base::FeatureList::IsEnabled(kStrictPopupBlocker)
+           ? PopupBlockType::kAbusive
+           : PopupBlockType::kNotBlocked;
 }
 
 }  // namespace
diff --git a/components/blocked_content/popup_blocker.h b/components/blocked_content/popup_blocker.h
--- a/components/blocked_content/popup_blocker.h
+++ b/components/blocked_content/popup_blocker.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_BLOCKED_CONTENT_POPUP_BLOCKER_H_
 #define COMPONENTS_BLOCKED_CONTENT_POPUP_BLOCKER_H_
 
+#include "base/feature_list.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "third_party/blink/public/mojom/window_features/window_features.mojom-forward.h"
 #include "ui/base/window_open_disposition.h"
@@ -18,6 +19,8 @@ struct OpenURLParams;
 }  // namespace content
 
 namespace blocked_content {
+BASE_DECLARE_FEATURE(kStrictPopupBlocker);
+
 class PopupNavigationDelegate;
 
 // Classifies what caused a popup to be blocked.
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc b/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/about_flags_cc/Stricter-popup-blocker.inc
@@ -0,0 +1,14 @@
+#ifdef ABOUT_FLAG_INCLUDE_SECTION
+
+#include "components/blocked_content/popup_blocker.h"
+
+#endif
+
+#ifdef FLAG_SECTION
+
+    {"enable-stricter-popup-blocker",
+     "Enable Stricter popup blocker",
+     "Blocks all pop-ups, even those with user gestures.", kOsAll,
+     FEATURE_VALUE_TYPE(blocked_content::kStrictPopupBlocker)},
+
+#endif // ifdef FLAG_SECTION
--
+17 −17
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -228,6 +228,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
@@ -230,6 +230,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
 import org.chromium.content_public.browser.SelectionPopupController;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.content_public.common.ContentSwitches;
@@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
 import org.chromium.printing.PrintManagerDelegateImpl;
 import org.chromium.printing.PrintingController;
 import org.chromium.printing.PrintingControllerImpl;
@@ -1097,6 +1098,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
@@ -1064,6 +1065,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
         super.onStartWithNative();
         ChromeActivitySessionTracker.getInstance().onStartWithNative();
         ChromeCachedFlags.getInstance().cacheNativeFlags();
@@ -40,42 +40,42 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
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
@@ -144,6 +144,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
@@ -136,6 +136,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
     &feed::kFeedShowSignInCommand,
     &feed::kFeedSignedOutViewDemotion,
     &feed::kFeedUserInteractionReliabilityReport,
+    &kAllowUserCertificates,
     &feed::kInterestFeedV2,
     &feed::kInterestFeedV2Autoplay,
     &feed::kInterestFeedV2Hearts,
     &feed::kWebFeed,
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
@@ -103,6 +103,7 @@ public abstract class ChromeFeatureList {
@@ -141,6 +141,7 @@ public abstract class ChromeFeatureList {
         return ChromeFeatureMap.getInstance().mutableFlagWithSafeDefault(featureName, defaultValue);
     }
 
     /* Alphabetical: */
+    public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
     public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar";
     public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE =
             "AdaptiveButtonInTopToolbarTranslate";
@@ -522,6 +523,8 @@ public abstract class ChromeFeatureList {
     public static final CachedFlag sAndroidAppIntegration =
             new CachedFlag(ANDROID_APP_INTEGRATION, false);
     public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS =
@@ -533,6 +534,8 @@ public abstract class ChromeFeatureList {
     public static final CachedFlag sAndroidHub = newCachedFlag(ANDROID_HUB, false);
     public static final CachedFlag sAndroidTabGroupStableIds =
             newCachedFlag(ANDROID_TAB_GROUP_STABLE_IDS, false);
+    public static final CachedFlag sAllowUserCertificates =
+            newCachedFlag(ALLOW_USER_CERTIFICATES, false);
     public static final CachedFlag sAppMenuMobileSiteOption =
             new CachedFlag(APP_MENU_MOBILE_SITE_OPTION, false);
     public static final CachedFlag sArchiveTabService = newCachedFlag(ARCHIVE_TAB_SERVICE, false);
@@ -662,6 +665,7 @@ public abstract class ChromeFeatureList {
     public static final CachedFlag sBackGestureActivityTabProvider =
             newCachedFlag(BACK_GESTURE_ACTIVITY_TAB_PROVIDER, false);
@@ -679,6 +682,7 @@ public abstract class ChromeFeatureList {
 
     public static final List<CachedFlag> sFlagsCachedFullBrowser =
             List.of(
+                    sAllowUserCertificates,
                     sAndroidAppIntegration,
                     sAndroidElegantTextHeight,
                     sAndroidHub,
                     sAppMenuMobileSiteOption,
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-AllowUserCertificates-flag.inc
new file mode 100644
--- /dev/null
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java
@@ -198,6 +198,8 @@ public class KeyboardShortcuts {
@@ -204,6 +204,8 @@ public class KeyboardShortcuts {
                 R.string.keyboard_shortcut_address_bar,
                 KeyEvent.KEYCODE_L,
                 KeyEvent.META_CTRL_ON);
Loading