| 
									
										
										
										
											2018-10-24 11:24:11 -07:00
										 |  |  | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | 
					
						
							| 
									
										
										
										
											2018-09-20 17:30:26 -07:00
										 |  |  | From: Cheng Zhao <zcbenz@gmail.com> | 
					
						
							|  |  |  | Date: Thu, 20 Sep 2018 17:45:32 -0700 | 
					
						
							|  |  |  | Subject: can_create_window.patch | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-13 09:18:45 -08:00
										 |  |  | This adds a hook to the window creation flow so that Electron can intercede and | 
					
						
							|  |  |  | potentially prevent a window from being created. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TODO(loc): this patch is currently broken. | 
					
						
							| 
									
										
										
										
											2018-09-20 17:30:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-21 01:00:36 -07:00
										 |  |  | diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 87878ae6a1cfebb3c49e6ef16e35390d9197711d..166293ad0d6246bcf477e6af57a9e6801b6f6f7b 100644
 | 
					
						
							| 
									
										
										
										
											2020-09-21 01:00:36 -07:00
										 |  |  | --- a/content/browser/renderer_host/render_frame_host_impl.cc
 | 
					
						
							|  |  |  | +++ b/content/browser/renderer_host/render_frame_host_impl.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -7777,6 +7777,7 @@ void RenderFrameHostImpl::CreateNewWindow(
 | 
					
						
							| 
									
										
										
										
											2019-01-16 23:37:52 +05:30
										 |  |  |            last_committed_origin_, params->window_container_type, | 
					
						
							| 
									
										
										
										
											2019-01-08 15:59:47 -08:00
										 |  |  |            params->target_url, params->referrer.To<Referrer>(), | 
					
						
							|  |  |  |            params->frame_name, params->disposition, *params->features, | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +          params->raw_features, params->body,
 | 
					
						
							| 
									
										
										
										
											2018-09-20 17:30:26 -07:00
										 |  |  |            effective_transient_activation_state, params->opener_suppressed, | 
					
						
							|  |  |  |            &no_javascript_access); | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 1603b08eb7d7f423a2f968ad1f1b254261f9f6c9..87dcf40a7619ad8e9999cf07e2aa7a16e380125e 100644
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | --- a/content/browser/web_contents/web_contents_impl.cc
 | 
					
						
							|  |  |  | +++ b/content/browser/web_contents/web_contents_impl.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -4167,6 +4167,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
 | 
					
						
							| 
									
										
										
										
											2022-12-05 17:59:19 -05:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-11-10 09:06:03 -08:00
										 |  |  |    auto* new_contents_impl = new_contents.get(); | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-11-10 09:06:03 -08:00
										 |  |  | +  if (delegate_) {
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +    delegate_->WebContentsCreatedWithFullParams(this, render_process_id,
 | 
					
						
							|  |  |  | +                                                opener->GetRoutingID(),
 | 
					
						
							|  |  |  | +                                                params, new_contents_impl);
 | 
					
						
							| 
									
										
										
										
											2020-11-10 09:06:03 -08:00
										 |  |  | +  }
 | 
					
						
							|  |  |  | +
 | 
					
						
							| 
									
										
										
										
											2022-12-05 17:59:19 -05:00
										 |  |  |    // If the new frame has a name, make sure any SiteInstances that can find | 
					
						
							|  |  |  |    // this named frame have proxies for it.  Must be called after | 
					
						
							|  |  |  |    // SetSessionStorageNamespace, since this calls CreateRenderView, which uses | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -4208,12 +4214,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
 | 
					
						
							| 
									
										
										
										
											2021-03-04 09:27:05 -08:00
										 |  |  |      AddWebContentsDestructionObserver(new_contents_impl); | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  |    } | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-11-10 09:06:03 -08:00
										 |  |  | -  if (delegate_) {
 | 
					
						
							|  |  |  | -    delegate_->WebContentsCreated(this, render_process_id,
 | 
					
						
							|  |  |  | -                                  opener->GetRoutingID(), params.frame_name,
 | 
					
						
							|  |  |  | -                                  params.target_url, new_contents_impl);
 | 
					
						
							|  |  |  | -  }
 | 
					
						
							|  |  |  | -
 | 
					
						
							| 
									
										
										
										
											2021-02-09 12:16:21 -08:00
										 |  |  |    observers_.NotifyObservers(&WebContentsObserver::DidOpenRequestedURL, | 
					
						
							|  |  |  |                               new_contents_impl, opener, params.target_url, | 
					
						
							|  |  |  |                               params.referrer.To<Referrer>(), params.disposition, | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | diff --git a/content/common/frame.mojom b/content/common/frame.mojom
 | 
					
						
							| 
									
										
										
										
											2023-04-12 07:37:48 -04:00
										 |  |  | index 12f4a2066a2a31e9852216c0cb3344095c7b0e39..588ca46227c58f9596317d6d4d05d0b3c76cbc06 100644
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | --- a/content/common/frame.mojom
 | 
					
						
							|  |  |  | +++ b/content/common/frame.mojom
 | 
					
						
							| 
									
										
										
										
											2023-04-12 07:37:48 -04:00
										 |  |  | @@ -593,6 +593,10 @@ struct CreateNewWindowParams {
 | 
					
						
							| 
									
										
										
										
											2023-01-05 21:35:34 -05:00
										 |  |  |    // The navigation initiator's user activation and ad status. | 
					
						
							|  |  |  |    blink.mojom.NavigationInitiatorActivationAndAdStatus | 
					
						
							|  |  |  |        initiator_activation_and_ad_status; | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | +
 | 
					
						
							|  |  |  | +  // Extra fields added by Electron.
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +  string raw_features;
 | 
					
						
							| 
									
										
										
										
											2019-01-24 20:22:14 +05:30
										 |  |  | +  network.mojom.URLRequestBody? body;
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  |  }; | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  |  // Operation result when the renderer asks the browser to create a new window. | 
					
						
							|  |  |  | diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 24baf87b52ab9320181a6821b57ebabc94827ddc..c89e47d453a892b16ee2ed96a95ebaa912d99210 100644
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | --- a/content/public/browser/content_browser_client.cc
 | 
					
						
							|  |  |  | +++ b/content/public/browser/content_browser_client.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -653,6 +653,8 @@ bool ContentBrowserClient::CanCreateWindow(
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  |      const std::string& frame_name, | 
					
						
							|  |  |  |      WindowOpenDisposition disposition, | 
					
						
							|  |  |  |      const blink::mojom::WindowFeatures& features, | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +    const std::string& raw_features,
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | +    const scoped_refptr<network::ResourceRequestBody>& body,
 | 
					
						
							|  |  |  |      bool user_gesture, | 
					
						
							|  |  |  |      bool opener_suppressed, | 
					
						
							|  |  |  |      bool* no_javascript_access) { | 
					
						
							|  |  |  | diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 90fc10e2c6881788f003a4a91b0719620f7a16e4..294986a55d49a9f57592cf209b6c0db42620f61e 100644
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | --- a/content/public/browser/content_browser_client.h
 | 
					
						
							|  |  |  | +++ b/content/public/browser/content_browser_client.h
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -166,6 +166,7 @@ class NetworkService;
 | 
					
						
							| 
									
										
										
										
											2019-10-28 18:12:35 -04:00
										 |  |  |  class TrustedURLLoaderHeaderClient; | 
					
						
							|  |  |  |  }  // namespace mojom | 
					
						
							|  |  |  |  struct ResourceRequest; | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | +class ResourceRequestBody;
 | 
					
						
							| 
									
										
										
										
											2019-10-28 18:12:35 -04:00
										 |  |  |  }  // namespace network | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-06-22 10:35:10 -07:00
										 |  |  |  namespace sandbox { | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -1061,6 +1062,8 @@ class CONTENT_EXPORT ContentBrowserClient {
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  |        const std::string& frame_name, | 
					
						
							|  |  |  |        WindowOpenDisposition disposition, | 
					
						
							|  |  |  |        const blink::mojom::WindowFeatures& features, | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +      const std::string& raw_features,
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | +      const scoped_refptr<network::ResourceRequestBody>& body,
 | 
					
						
							|  |  |  |        bool user_gesture, | 
					
						
							|  |  |  |        bool opener_suppressed, | 
					
						
							|  |  |  |        bool* no_javascript_access); | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
 | 
					
						
							| 
									
										
										
										
											2023-03-10 10:07:42 -06:00
										 |  |  | index 885899b151520e0173a5ca68c2613b1333cadddf..5b53ee691c0a07ed1655139ca2d90341b5fa55a3 100644
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | --- a/content/public/browser/web_contents_delegate.cc
 | 
					
						
							|  |  |  | +++ b/content/public/browser/web_contents_delegate.cc
 | 
					
						
							| 
									
										
										
										
											2023-03-10 10:07:42 -06:00
										 |  |  | @@ -28,6 +28,17 @@ namespace content {
 | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  |  WebContentsDelegate::WebContentsDelegate() = default; | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +void WebContentsDelegate::WebContentsCreatedWithFullParams(
 | 
					
						
							|  |  |  | +    WebContents* source_contents,
 | 
					
						
							|  |  |  | +    int opener_render_process_id,
 | 
					
						
							|  |  |  | +    int opener_render_frame_id,
 | 
					
						
							|  |  |  | +    const mojom::CreateNewWindowParams& params,
 | 
					
						
							|  |  |  | +    WebContents* new_contents) {
 | 
					
						
							|  |  |  | +  WebContentsCreated(source_contents, opener_render_process_id,
 | 
					
						
							|  |  |  | +                     opener_render_frame_id, params.frame_name,
 | 
					
						
							|  |  |  | +                     params.target_url, new_contents);
 | 
					
						
							|  |  |  | +}
 | 
					
						
							|  |  |  | +
 | 
					
						
							|  |  |  |  WebContents* WebContentsDelegate::OpenURLFromTab(WebContents* source, | 
					
						
							|  |  |  |                                                   const OpenURLParams& params) { | 
					
						
							|  |  |  |    return nullptr; | 
					
						
							|  |  |  | diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
 | 
					
						
							| 
									
										
										
										
											2023-03-10 10:07:42 -06:00
										 |  |  | index 5da6f93293bc5ddae88c17ac2dd8d7037ba8e8f3..76d699790fb7d92587293b14332f696dc5460322 100644
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | --- a/content/public/browser/web_contents_delegate.h
 | 
					
						
							|  |  |  | +++ b/content/public/browser/web_contents_delegate.h
 | 
					
						
							| 
									
										
										
										
											2021-03-16 10:01:00 -04:00
										 |  |  | @@ -16,6 +16,7 @@
 | 
					
						
							|  |  |  |  #include "base/memory/scoped_refptr.h" | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  |  #include "build/build_config.h" | 
					
						
							|  |  |  |  #include "content/common/content_export.h" | 
					
						
							|  |  |  | +#include "content/common/frame.mojom.h"
 | 
					
						
							| 
									
										
										
										
											2020-05-26 13:06:26 -07:00
										 |  |  |  #include "content/public/browser/eye_dropper.h" | 
					
						
							| 
									
										
										
										
											2023-03-10 10:07:42 -06:00
										 |  |  |  #include "content/public/browser/fullscreen_types.h" | 
					
						
							| 
									
										
										
										
											2020-11-13 16:16:56 -08:00
										 |  |  |  #include "content/public/browser/invalidate_type.h" | 
					
						
							| 
									
										
										
										
											2023-03-10 10:07:42 -06:00
										 |  |  | @@ -343,6 +344,13 @@ class CONTENT_EXPORT WebContentsDelegate {
 | 
					
						
							| 
									
										
										
										
											2022-02-25 13:17:35 -05:00
										 |  |  |        const StoragePartitionConfig& partition_config, | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  |        SessionStorageNamespace* session_storage_namespace); | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +  virtual void WebContentsCreatedWithFullParams(
 | 
					
						
							|  |  |  | +      WebContents* source_contents,
 | 
					
						
							|  |  |  | +      int opener_render_process_id,
 | 
					
						
							|  |  |  | +      int opener_render_frame_id,
 | 
					
						
							|  |  |  | +      const mojom::CreateNewWindowParams& params,
 | 
					
						
							|  |  |  | +      WebContents* new_contents);
 | 
					
						
							|  |  |  | +
 | 
					
						
							|  |  |  |    // Notifies the delegate about the creation of a new WebContents. This | 
					
						
							|  |  |  |    // typically happens when popups are created. | 
					
						
							|  |  |  |    virtual void WebContentsCreated(WebContents* source_contents, | 
					
						
							| 
									
										
										
										
											2022-09-07 09:46:37 +02:00
										 |  |  | diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 741d2e447107a34eab153d4d7cf8a600b3fac1b3..3b50524b8e33d99874dd58d78ef7c96a9eaa7205 100644
 | 
					
						
							| 
									
										
										
										
											2022-09-07 09:46:37 +02:00
										 |  |  | --- a/content/renderer/render_frame_impl.cc
 | 
					
						
							|  |  |  | +++ b/content/renderer/render_frame_impl.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -6295,6 +6295,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
 | 
					
						
							| 
									
										
										
										
											2023-01-05 21:35:34 -05:00
										 |  |  |        blink::GetNavigationInitiatorActivationAndAdStatus( | 
					
						
							|  |  |  |            request.HasUserGesture(), GetWebFrame()->IsAdScriptInStack()); | 
					
						
							| 
									
										
										
										
											2021-02-09 12:16:21 -08:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +  params->raw_features = features.raw_features.Utf8(
 | 
					
						
							|  |  |  | +      WTF::UTF8ConversionMode::kStrictUTF8ConversionReplacingUnpairedSurrogatesWithFFFD);
 | 
					
						
							| 
									
										
										
										
											2019-01-24 20:22:14 +05:30
										 |  |  | +  params->body = GetRequestBodyForWebURLRequest(request);
 | 
					
						
							| 
									
										
										
										
											2021-02-09 12:16:21 -08:00
										 |  |  | +
 | 
					
						
							| 
									
										
										
										
											2022-06-01 08:12:47 +02:00
										 |  |  |    // We preserve this information before sending the message since |params| is | 
					
						
							|  |  |  |    // moved on send. | 
					
						
							|  |  |  |    bool is_background_tab = | 
					
						
							| 
									
										
										
										
											2020-09-21 01:00:36 -07:00
										 |  |  | diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 0fe31461d3b29dde0bf3754287eed766371e10f2..d1426c424b0861b3b713cd3face4f2473a356e82 100644
 | 
					
						
							| 
									
										
										
										
											2020-09-21 01:00:36 -07:00
										 |  |  | --- a/content/web_test/browser/web_test_content_browser_client.cc
 | 
					
						
							|  |  |  | +++ b/content/web_test/browser/web_test_content_browser_client.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -497,6 +497,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  |      const std::string& frame_name, | 
					
						
							|  |  |  |      WindowOpenDisposition disposition, | 
					
						
							|  |  |  |      const blink::mojom::WindowFeatures& features, | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +    const std::string& raw_features,
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | +    const scoped_refptr<network::ResourceRequestBody>& body,
 | 
					
						
							|  |  |  |      bool user_gesture, | 
					
						
							|  |  |  |      bool opener_suppressed, | 
					
						
							|  |  |  |      bool* no_javascript_access) { | 
					
						
							| 
									
										
										
										
											2020-09-21 01:00:36 -07:00
										 |  |  | diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 6e9041279578d8365a4eae6bd9f221baf79324d7..39ff665cc8b87ed4997a60a18c05cd42bc6ffd24 100644
 | 
					
						
							| 
									
										
										
										
											2020-09-21 01:00:36 -07:00
										 |  |  | --- a/content/web_test/browser/web_test_content_browser_client.h
 | 
					
						
							|  |  |  | +++ b/content/web_test/browser/web_test_content_browser_client.h
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -83,6 +83,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  |                         const std::string& frame_name, | 
					
						
							|  |  |  |                         WindowOpenDisposition disposition, | 
					
						
							|  |  |  |                         const blink::mojom::WindowFeatures& features, | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +                       const std::string& raw_features,
 | 
					
						
							| 
									
										
										
										
											2018-09-13 22:02:16 -07:00
										 |  |  | +                       const scoped_refptr<network::ResourceRequestBody>& body,
 | 
					
						
							|  |  |  |                         bool user_gesture, | 
					
						
							|  |  |  |                         bool opener_suppressed, | 
					
						
							|  |  |  |                         bool* no_javascript_access) override; | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | diff --git a/third_party/blink/public/web/web_window_features.h b/third_party/blink/public/web/web_window_features.h
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index bef5a989bac50c177f15f52fe87ac3790d553e85..65dcd2e3b51929400c8bfb6a98a4fb59bb6a3d6b 100644
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | --- a/third_party/blink/public/web/web_window_features.h
 | 
					
						
							|  |  |  | +++ b/third_party/blink/public/web/web_window_features.h
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -34,6 +34,7 @@
 | 
					
						
							|  |  |  |  #include "third_party/abseil-cpp/absl/types/optional.h" | 
					
						
							| 
									
										
										
										
											2023-04-12 18:10:31 -07:00
										 |  |  |  #include "third_party/blink/public/platform/web_string.h" | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  |  #include "third_party/blink/public/platform/web_vector.h" | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 | 
					
						
							| 
									
										
										
										
											2021-05-05 16:26:17 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  |  namespace blink { | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | @@ -73,6 +74,8 @@ struct WebWindowFeatures {
 | 
					
						
							|  |  |  |    // TODO(apaseltiner): Investigate moving this field to a non-public struct | 
					
						
							|  |  |  |    // since it is only needed within //third_party/blink. | 
					
						
							|  |  |  |    absl::optional<WebVector<WebString>> attribution_srcs; | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | +
 | 
					
						
							|  |  |  | +  String raw_features;
 | 
					
						
							|  |  |  |  }; | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  |  }  // namespace blink | 
					
						
							|  |  |  | diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
 | 
					
						
							| 
									
										
										
										
											2023-05-10 10:47:48 -04:00
										 |  |  | index 83a6e6015d0b974dc038133948e6f436c0c8ba72..e9a85e5b1ae2d7a0d4ccb7e17792431e27ce21fe 100644
 | 
					
						
							| 
									
										
										
										
											2020-03-26 19:05:45 +01:00
										 |  |  | --- a/third_party/blink/renderer/core/frame/local_dom_window.cc
 | 
					
						
							|  |  |  | +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
 | 
					
						
							| 
									
										
										
										
											2023-04-17 14:40:26 -07:00
										 |  |  | @@ -2219,6 +2219,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
 | 
					
						
							| 
									
										
										
										
											2021-05-05 16:26:17 -07:00
										 |  |  |    WebWindowFeatures window_features = | 
					
						
							| 
									
										
										
										
											2023-04-12 18:10:31 -07:00
										 |  |  |        GetWindowFeaturesFromString(features, entered_window); | 
					
						
							| 
									
										
										
										
											2020-04-06 13:09:52 -07:00
										 |  |  |   | 
					
						
							| 
									
										
										
										
											2022-06-27 15:50:08 -05:00
										 |  |  | +  window_features.raw_features = features;
 | 
					
						
							|  |  |  | +
 | 
					
						
							| 
									
										
										
										
											2022-04-12 13:19:14 +02:00
										 |  |  |    // In fenced frames, we should always use `noopener`. | 
					
						
							|  |  |  |    if (GetFrame()->IsInFencedFrameTree()) { | 
					
						
							| 
									
										
										
										
											2022-06-27 15:50:08 -05:00
										 |  |  |      window_features.noopener = true; |