Loading Dockerfile +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ RUN apt-get update &&\ RUN mkdir ${CHROMIUM_DIR} RUN curl -s https://raw.githubusercontent.com/chromium/chromium/main/build/install-build-deps.py \ RUN curl -s https://raw.githubusercontent.com/chromium/chromium/121.0.6167.143/build/install-build-deps.py \ | python - --android --lib32 --no-chromeos-fonts --no-prompt RUN git config --global user.name "John Doe" Loading build.sh +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ root_dir=$(dirname "$(readlink -f "$0")") if [ ! -d "$chromium_dir" ]; then chromium_dir=$root_dir fi chromium_version="119.0.6045.200" chromium_version="121.0.6167.164" chromium_code=$(echo "$chromium_version" | tr -d '.' | cut -c5-) chromium_url=https://github.com/chromium/chromium.git clean=0 Loading build/bromite_patches/AImageReader-CFI-crash-mitigations.patch +8 −9 Original line number Diff line number Diff line Loading @@ -86,15 +86,15 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i 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 @@ -3028,9 +3028,9 @@ @@ -2923,9 +2923,9 @@ "expiry_milestone": 125 }, { - "name": "enable-image-reader", - "owners": [ "vikassoni", "liberato" ], - "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], - "expiry_milestone": 125 + "name": "enable-image-reader", // Bromite: do not expire + "owners": [ "vikassoni", "liberato" ], // flag + "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], // flag + "expiry_milestone": -1 }, { Loading @@ -117,7 +117,7 @@ new file mode 100644 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json --- a/gpu/config/gpu_driver_bug_list.json +++ b/gpu/config/gpu_driver_bug_list.json @@ -3212,6 +3212,22 @@ @@ -2689,6 +2689,22 @@ "no_downscaled_overlay_promotion" ] }, Loading Loading @@ -179,7 +179,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc if (!gpu_preferences.enable_android_surface_control) return kGpuFeatureStatusDisabled; @@ -347,6 +350,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { @@ -355,6 +358,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] = kGpuFeatureStatusBlocklisted; } Loading @@ -194,8 +194,8 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list.txt --- a/gpu/config/gpu_workaround_list.txt +++ b/gpu/config/gpu_workaround_list.txt @@ -13,6 +13,7 @@ count_all_in_varyings_packing decode_encode_srgb_for_generatemipmap @@ -11,6 +11,7 @@ clamp_texture_base_level_and_max_level clear_pixel_unpack_buffer_before_copyteximage disable_2d_canvas_auto_flush disable_accelerated_av1_decode +disable_aimagereader Loading @@ -205,7 +205,7 @@ 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 @@ -628,6 +628,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, @@ -675,6 +675,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) Loading Loading @@ -248,4 +248,3 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_ : TextureOwner::Mode::kSurfaceTextureInsecure; } -- 2.25.1 build/bromite_patches/00AdblockPlus-add-blocking-in-service-workers.patch→build/bromite_patches/AdblockPlus-add-blocking-in-service-workers.patch +13 −14 Original line number Diff line number Diff line Loading @@ -401,7 +401,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/br 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 @@ -6330,7 +6330,9 @@ ChromeContentBrowserClient:: @@ -6305,7 +6305,9 @@ ChromeContentBrowserClient:: } bool ChromeContentBrowserClient::WillInterceptWebSocket( Loading @@ -412,7 +412,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(ENABLE_EXTENSIONS) if (!frame) { return false; @@ -6351,9 +6353,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( @@ -6328,9 +6330,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( } void ChromeContentBrowserClient::CreateWebSocket( Loading @@ -427,7 +427,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h @@ -624,11 +624,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { @@ -642,11 +642,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { CreateURLLoaderHandlerForServiceWorkerNavigationPreload( int frame_tree_node_id, const network::ResourceRequest& resource_request) override; Loading @@ -447,7 +447,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chr diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/components/adblock/content/browser/adblock_url_loader_factory.cc --- a/components/adblock/content/browser/adblock_url_loader_factory.cc +++ b/components/adblock/content/browser/adblock_url_loader_factory.cc @@ -342,12 +342,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( @@ -343,12 +343,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( CheckFilterMatchCallback callback) { Loading @@ -460,7 +460,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ auto subscription_service = factory_->config_.subscription_service; if (is_document_request_) { auto* host = content::RenderFrameHost::FromID(factory_->host_id_); @@ -386,7 +380,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( @@ -387,7 +381,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( } else { factory_->config_.resource_classifier->CheckRequestFilterMatch( subscription_service->GetCurrentSnapshot(), request_url_, Loading @@ -469,7 +469,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ base::BindOnce( &AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified, weak_factory_.GetWeakPtr(), @@ -675,12 +669,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( @@ -676,12 +670,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( AdblockURLLoaderFactory::AdblockURLLoaderFactory( AdblockURLLoaderFactoryConfig config, Loading Loading @@ -662,7 +662,7 @@ diff --git a/components/adblock/content/browser/resource_classification_runner_i diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/browser/websockets/websocket_connector_impl.cc --- a/content/browser/websockets/websocket_connector_impl.cc +++ b/content/browser/websockets/websocket_connector_impl.cc @@ -87,14 +87,14 @@ void WebSocketConnectorImpl::Connect( @@ -88,14 +88,14 @@ void WebSocketConnectorImpl::Connect( const uint32_t options = GetContentClient()->browser()->GetWebSocketOptions(frame); Loading @@ -672,8 +672,8 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br - frame, + process, frame, base::BindOnce(ConnectCalledByContentBrowserClient, requested_protocols, site_for_cookies, isolation_info_, process_id_, frame_id_, origin_, options, site_for_cookies, has_storage_access, isolation_info_, process_id_, frame_id_, origin_, options, std::move(throttling_profile_id)), - url, site_for_cookies, user_agent, std::move(handshake_client)); + url, origin_, site_for_cookies, user_agent, std::move(handshake_client)); Loading @@ -683,7 +683,7 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc @@ -998,7 +998,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory( @@ -1023,7 +1023,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory( return false; } Loading @@ -692,7 +692,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b return false; } @@ -1007,9 +1007,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { @@ -1032,9 +1032,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { } void ContentBrowserClient::CreateWebSocket( Loading @@ -707,7 +707,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h @@ -1791,7 +1791,7 @@ class CONTENT_EXPORT ContentBrowserClient { @@ -1859,7 +1859,7 @@ class CONTENT_EXPORT ContentBrowserClient { scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner); // Returns true when the embedder wants to intercept a websocket connection. Loading @@ -716,7 +716,7 @@ diff --git a/content/public/browser/content_browser_client.h b/content/public/br // Returns the WebSocket creation options. virtual uint32_t GetWebSocketOptions(RenderFrameHost* frame); @@ -1813,9 +1813,11 @@ class CONTENT_EXPORT ContentBrowserClient { @@ -1881,9 +1881,11 @@ class CONTENT_EXPORT ContentBrowserClient { // Always called on the UI thread and only when the Network Service is // enabled. virtual void CreateWebSocket( Loading @@ -729,4 +729,3 @@ diff --git a/content/public/browser/content_browser_client.h b/content/public/br const absl::optional<std::string>& user_agent, mojo::PendingRemote<network::mojom::WebSocketHandshakeClient> -- 2.25.1 build/bromite_patches/AdblockPlus-connect-popup-blocker.patch 0 → 100644 +169 −0 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 -- Loading
Dockerfile +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ RUN apt-get update &&\ RUN mkdir ${CHROMIUM_DIR} RUN curl -s https://raw.githubusercontent.com/chromium/chromium/main/build/install-build-deps.py \ RUN curl -s https://raw.githubusercontent.com/chromium/chromium/121.0.6167.143/build/install-build-deps.py \ | python - --android --lib32 --no-chromeos-fonts --no-prompt RUN git config --global user.name "John Doe" Loading
build.sh +1 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ root_dir=$(dirname "$(readlink -f "$0")") if [ ! -d "$chromium_dir" ]; then chromium_dir=$root_dir fi chromium_version="119.0.6045.200" chromium_version="121.0.6167.164" chromium_code=$(echo "$chromium_version" | tr -d '.' | cut -c5-) chromium_url=https://github.com/chromium/chromium.git clean=0 Loading
build/bromite_patches/AImageReader-CFI-crash-mitigations.patch +8 −9 Original line number Diff line number Diff line Loading @@ -86,15 +86,15 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i 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 @@ -3028,9 +3028,9 @@ @@ -2923,9 +2923,9 @@ "expiry_milestone": 125 }, { - "name": "enable-image-reader", - "owners": [ "vikassoni", "liberato" ], - "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], - "expiry_milestone": 125 + "name": "enable-image-reader", // Bromite: do not expire + "owners": [ "vikassoni", "liberato" ], // flag + "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], // flag + "expiry_milestone": -1 }, { Loading @@ -117,7 +117,7 @@ new file mode 100644 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json --- a/gpu/config/gpu_driver_bug_list.json +++ b/gpu/config/gpu_driver_bug_list.json @@ -3212,6 +3212,22 @@ @@ -2689,6 +2689,22 @@ "no_downscaled_overlay_promotion" ] }, Loading Loading @@ -179,7 +179,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc if (!gpu_preferences.enable_android_surface_control) return kGpuFeatureStatusDisabled; @@ -347,6 +350,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { @@ -355,6 +358,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] = kGpuFeatureStatusBlocklisted; } Loading @@ -194,8 +194,8 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list.txt --- a/gpu/config/gpu_workaround_list.txt +++ b/gpu/config/gpu_workaround_list.txt @@ -13,6 +13,7 @@ count_all_in_varyings_packing decode_encode_srgb_for_generatemipmap @@ -11,6 +11,7 @@ clamp_texture_base_level_and_max_level clear_pixel_unpack_buffer_before_copyteximage disable_2d_canvas_auto_flush disable_accelerated_av1_decode +disable_aimagereader Loading @@ -205,7 +205,7 @@ 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 @@ -628,6 +628,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, @@ -675,6 +675,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) Loading Loading @@ -248,4 +248,3 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_ : TextureOwner::Mode::kSurfaceTextureInsecure; } -- 2.25.1
build/bromite_patches/00AdblockPlus-add-blocking-in-service-workers.patch→build/bromite_patches/AdblockPlus-add-blocking-in-service-workers.patch +13 −14 Original line number Diff line number Diff line Loading @@ -401,7 +401,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.h b/chrome/br 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 @@ -6330,7 +6330,9 @@ ChromeContentBrowserClient:: @@ -6305,7 +6305,9 @@ ChromeContentBrowserClient:: } bool ChromeContentBrowserClient::WillInterceptWebSocket( Loading @@ -412,7 +412,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(ENABLE_EXTENSIONS) if (!frame) { return false; @@ -6351,9 +6353,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( @@ -6328,9 +6330,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( } void ChromeContentBrowserClient::CreateWebSocket( Loading @@ -427,7 +427,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h @@ -624,11 +624,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { @@ -642,11 +642,15 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { CreateURLLoaderHandlerForServiceWorkerNavigationPreload( int frame_tree_node_id, const network::ResourceRequest& resource_request) override; Loading @@ -447,7 +447,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chr diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/components/adblock/content/browser/adblock_url_loader_factory.cc --- a/components/adblock/content/browser/adblock_url_loader_factory.cc +++ b/components/adblock/content/browser/adblock_url_loader_factory.cc @@ -342,12 +342,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( @@ -343,12 +343,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( CheckFilterMatchCallback callback) { Loading @@ -460,7 +460,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ auto subscription_service = factory_->config_.subscription_service; if (is_document_request_) { auto* host = content::RenderFrameHost::FromID(factory_->host_id_); @@ -386,7 +380,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( @@ -387,7 +381,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( } else { factory_->config_.resource_classifier->CheckRequestFilterMatch( subscription_service->GetCurrentSnapshot(), request_url_, Loading @@ -469,7 +469,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ base::BindOnce( &AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified, weak_factory_.GetWeakPtr(), @@ -675,12 +669,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( @@ -676,12 +670,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( AdblockURLLoaderFactory::AdblockURLLoaderFactory( AdblockURLLoaderFactoryConfig config, Loading Loading @@ -662,7 +662,7 @@ diff --git a/components/adblock/content/browser/resource_classification_runner_i diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/browser/websockets/websocket_connector_impl.cc --- a/content/browser/websockets/websocket_connector_impl.cc +++ b/content/browser/websockets/websocket_connector_impl.cc @@ -87,14 +87,14 @@ void WebSocketConnectorImpl::Connect( @@ -88,14 +88,14 @@ void WebSocketConnectorImpl::Connect( const uint32_t options = GetContentClient()->browser()->GetWebSocketOptions(frame); Loading @@ -672,8 +672,8 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br - frame, + process, frame, base::BindOnce(ConnectCalledByContentBrowserClient, requested_protocols, site_for_cookies, isolation_info_, process_id_, frame_id_, origin_, options, site_for_cookies, has_storage_access, isolation_info_, process_id_, frame_id_, origin_, options, std::move(throttling_profile_id)), - url, site_for_cookies, user_agent, std::move(handshake_client)); + url, origin_, site_for_cookies, user_agent, std::move(handshake_client)); Loading @@ -683,7 +683,7 @@ diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/br diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc @@ -998,7 +998,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory( @@ -1023,7 +1023,7 @@ bool ContentBrowserClient::WillCreateURLLoaderFactory( return false; } Loading @@ -692,7 +692,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b return false; } @@ -1007,9 +1007,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { @@ -1032,9 +1032,11 @@ uint32_t ContentBrowserClient::GetWebSocketOptions(RenderFrameHost* frame) { } void ContentBrowserClient::CreateWebSocket( Loading @@ -707,7 +707,7 @@ diff --git a/content/public/browser/content_browser_client.cc b/content/public/b diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h @@ -1791,7 +1791,7 @@ class CONTENT_EXPORT ContentBrowserClient { @@ -1859,7 +1859,7 @@ class CONTENT_EXPORT ContentBrowserClient { scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner); // Returns true when the embedder wants to intercept a websocket connection. Loading @@ -716,7 +716,7 @@ diff --git a/content/public/browser/content_browser_client.h b/content/public/br // Returns the WebSocket creation options. virtual uint32_t GetWebSocketOptions(RenderFrameHost* frame); @@ -1813,9 +1813,11 @@ class CONTENT_EXPORT ContentBrowserClient { @@ -1881,9 +1881,11 @@ class CONTENT_EXPORT ContentBrowserClient { // Always called on the UI thread and only when the Network Service is // enabled. virtual void CreateWebSocket( Loading @@ -729,4 +729,3 @@ diff --git a/content/public/browser/content_browser_client.h b/content/public/br const absl::optional<std::string>& user_agent, mojo::PendingRemote<network::mojom::WebSocketHandshakeClient> -- 2.25.1
build/bromite_patches/AdblockPlus-connect-popup-blocker.patch 0 → 100644 +169 −0 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 --