540d88f809
* chore: bump chromium in DEPS to 126.0.6468.2 * chore: bump chromium in DEPS to 126.0.6478.4 * chore: bump chromium in DEPS to 126.0.6478.9 * chore: bump chromium in DEPS to 126.0.6478.8 * 5492605: Migrate TODOs referencing old crbug IDs to the new issue tracker IDs | https://chromium-review.googlesource.com/c/chromium/src/+/5492605 (cherry picked from commit 01bbc6b9609954e6f5e8ed2d7c5864e6f2a7929b) * 5513277: Move subresource-filter-ruleset to GCS | https://chromium-review.googlesource.com/c/chromium/src/+/5513277 (cherry picked from commit 284bbbdf86d640cfbe27831524a7cefa1f0ec344) * 5512656: Remove CustomizeChromeSupportsChromeRefresh2023 | https://chromium-review.googlesource.com/c/chromium/src/+/5512656 (cherry picked from commit 41acddd97e2f4f79dba13a3916c1af46d47fa6f5) * 5516009: Accept mouse events in inactive window for Top Chrome WebUIs | https://chromium-review.googlesource.com/c/chromium/src/+/5516009 (cherry picked from commit ffc88b3b2a7bee830a1e78b64afb6dfe6aff7347) * 5376861: Change references to RWHVB in RWHIER and RenderWidgetTargeter to RWHVI. | https://chromium-review.googlesource.com/c/chromium/src/+/5376861 (cherry picked from commit 5a48cf6952f0c3fde8a4d2b717ac5b2d50d13671) * 5490530: Use partition_alloc PA_BUILDFLAG(...) outside PA. #cleanup | https://chromium-review.googlesource.com/c/chromium/src/+/5490530 (cherry picked from commit 8deba32e729d3ded310be6645a27a78458046d69) * 5296870: network: Allow trusted loaders to learn the sent request cookies. | https://chromium-review.googlesource.com/c/chromium/src/+/5296870 (cherry picked from commit 7aef2f0ad890bb778fa8843bd262daf6909c5f52) * 5453438: Delegate delegated ink trails to RWHI from RWHIER. | https://chromium-review.googlesource.com/c/chromium/src/+/5453438 (cherry picked from commit 368eb3924a3b9b58430c7340b930254a3db6f1a3) * chore: update patches (cherry picked from commit 9d6dac074b0f173e43d8e587edbe7de1565de3d6) * chore: update patches (cherry picked from commit fb4134d68204ea85a095d496b31216905f801878) * update patches (cherry picked from commit 6f6fff5b0b08c4cccdbc98950f8cbb399caf6340) * only disable enterprise_cloud_content_analysis (cherry picked from commit 5426d227ee5f4ce60ed3f1c863fe506ee706e78b) * 5403888: [api] support v8::Data in v8::TracedReference and v8::EmbedderGraph https://chromium-review.googlesource.com/c/v8/v8/+/5403888 (cherry picked from commit 2030447cf5bbce26b73e2e9b054dee38438f9fdd) * chore: update patches * chore: fixup patch * 5465511: [api] Mark v8::ObjectTemplate::SetAccessor(..) for deprecation https://chromium-review.googlesource.com/c/v8/v8/+/5465511 * 5513528: Move service_provider_config files to components/enterprise/connectors/ https://chromium-review.googlesource.com/c/chromium/src/+/5513528 * chore: bump chromium in DEPS to 126.0.6478.17 * chore: bump chromium in DEPS to 126.0.6478.26 * chore: update patches * build: use Sha256Sum in script/sysroots.json Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5506275 (cherry picked from commit fccef2b6ba8769da9d8b1bd81fda5cc61b2086e0) * fixup! build: use Sha256Sum in script/sysroots.json `sync` succeeds now (cherry picked from commit e71852729fbf3575d1bc37774deadddfebdeefb4) * chore: cherry-pick Node.js patch for V8 API removal fix Node.js PR: https://github.com/nodejs/node/pull/52996 V8 API Removal CL: https://chromium-review.googlesource.com/c/v8/v8/+/5539888 See the patch description for more details. (cherry picked from commit ef0c441dbaa97478828ad481a39d0c2c93748729) * chore: revert v8 deprecation See patch message for more details. https://chromium-review.googlesource.com/c/v8/v8/+/5526611 (cherry picked from commit 6f03785eadea8d8629970c24393f0900fc3fa4af) * chore: revert v8 removal https://chromium-review.googlesource.com/c/v8/v8/+/5497515 See patch message for more details. (cherry picked from commit 4fd7f5bbb603b0461482fee027de7bfdbf02ceac) * 5522321: [devtools] Support saving base64 encoded files via host bindings https://chromium-review.googlesource.com/c/chromium/src/+/5522321 (cherry picked from commit 4b5f43d7838062834de6d634033fe10af2f9d01a) * fixup! 5465511: [api] Mark v8::ObjectTemplate::SetAccessor(..) for deprecation https://chromium-review.googlesource.com/c/v8/v8/+/5465511 (cherry picked from commit 368005f2b2f9195bcffb5325041e3ff1041a3830) * 5514687: Reland "Add a secret handshake to the base::Feature constructor" https://chromium-review.googlesource.com/c/chromium/src/+/5514687 (cherry picked from commit 142c6e16b10496b3fffddc9924001fb94096852e) * 5512176: Remove OnEnvironmentEstimationComplete() https://chromium-review.googlesource.com/c/chromium/src/+/5512176 (cherry picked from commit 1e20ffb24ef6d0b0aeec8c314393cb77631ab279) * 5539888: [api] Remove several APIs deprecated in version 12.6 https://chromium-review.googlesource.com/c/v8/v8/+/5539888 This commit essentially only removes the `only_terminate_in_safe_scope` isolate creation parameter. This undoes some work that was originally done in #35766. (cherry picked from commit ceb6182b199e2471c64700203bf42b73052a38c6) * 5492183: Extensions: CodeHealth: Give enums some class https://chromium-review.googlesource.com/c/chromium/src/+/5492183 (cherry picked from commit a11b8e637cdc0868b6152dd5b0ed3b582f446aa7) * 5483406: [PEPC] Make PEPC permission subscription take into account device status https://chromium-review.googlesource.com/c/chromium/src/+/5483406 (cherry picked from commit fc93c876b481a988a6c1d5eb69d97035dc5ad64a) * 5463431: iwa: Only create IsolatedWebAppURLLoaderFactory for subresources in IWAs https://chromium-review.googlesource.com/c/chromium/src/+/5463431 (cherry picked from commit fbfe3c998c8251f28b76c2703a3212b5b0175a84) * 5502081: Migrate OnDisplayRemoved to OnDisplaysRemoved https://chromium-review.googlesource.com/c/chromium/src/+/5502081 (cherry picked from commit ccf9a5137efdf2ca18d9ee9851388338c26d036e) * 5376861: Change references to RWHVB in RWHIER and RenderWidgetTargeter to RWHVI. https://chromium-review.googlesource.com/c/chromium/src/+/5376861 (cherry picked from commit fd3e6ce148b3c5ab27e234d28b9405933ba32b14) * fixup! 5530163: [media] Use VideoFrame::Plane typed enum instead of nameless enum https://chromium-review.googlesource.com/c/chromium/src/+/5530163 (cherry picked from commit 9a900e734a8c08e534317ca4d7411bfadd9087f5) * 5530163: [media] Use VideoFrame::Plane typed enum instead of nameless enum https://chromium-review.googlesource.com/c/chromium/src/+/5530163 (cherry picked from commit fd94de9736125c3121aed99f50f2702fc430ba26) * 5466238: PDF Viewer: add metrics to record if PDF is opened with a11y https://chromium-review.googlesource.com/c/chromium/src/+/5466238 (cherry picked from commit 2abb5d1737083241b6b6a4c05d5982693e956a22) * 5513740: Reland "[Extensions] Restructure extensions::ProcessMap" https://chromium-review.googlesource.com/c/chromium/src/+/5513740 (cherry picked from commit 11905a9840f1e8dce21cfdda1a23f328e8ff6a6a) * 5498236: Make browser_tests force full async initialization for OSCrypt Async https://chromium-review.googlesource.com/c/chromium/src/+/5498236 (cherry picked from commit e00faacb58545c37cfbf8a38a0cbe4ccb9f9df06) * fixup: only disable enterprise_cloud_content_analysis The original commita5480accc2
, was due to this CL 5527572: Move Connectors prefs files to components/enterprise/connectors/ | https://chromium-review.googlesource.com/c/chromium/src/+/5527572 (cherry picked from commit b0e2a7eab6c0decf982f913a892d5dfdb2501084) * chore: update patches * fixup: 5539888: [api] Remove several APIs deprecated in version 12.6 (cherry picked from commit ae65fea668baad44cac7073cbe0a64bca36bccac) * views: use CalculatePreferredSize(SizeBounds) in '/chrome/browser/ui/views/[frame, infobars, /test]'. https://chromium-review.googlesource.com/c/chromium/src/+/5493169 Needed because of 5504212: views: remove CalculatePreferredSize() | https://chromium-review.googlesource.com/c/chromium/src/+/5504212 * fixup: views: use CalculatePreferredSize(SizeBounds) * 5499157: Enable kBlockMidiByDefault by default https://chromium-review.googlesource.com/c/chromium/src/+/5499157 * 5518756: Reland^2: [heap] Add shared trusted spaces | https://chromium-review.googlesource.com/c/v8/v8/+/5518756ececfe7aea
* chore: bump chromium in DEPS to 126.0.6478.36 * chore: update patches * chore: add currently-unused should_include_device_status arg to GetPermissionStatusForCurrentDocument() Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5545382 (cherry picked from commit bc35c93efd2d3301e33116d2dd09abaf8eddbf70) --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com> Co-authored-by: VerteDinde <vertedinde@electronjs.org> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: clavin <clavin@electronjs.org> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
224 lines
11 KiB
Diff
224 lines
11 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Cheng Zhao <zcbenz@gmail.com>
|
|
Date: Thu, 20 Sep 2018 17:45:32 -0700
|
|
Subject: can_create_window.patch
|
|
|
|
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.
|
|
|
|
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
|
|
index 3821695f6561ff8e00d861ce49ea7ff27f5fcd7e..9829a91d59853d74b4fc1fed5032d4d090912987 100644
|
|
--- a/content/browser/renderer_host/render_frame_host_impl.cc
|
|
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
|
|
@@ -8555,6 +8555,7 @@ void RenderFrameHostImpl::CreateNewWindow(
|
|
last_committed_origin_, params->window_container_type,
|
|
params->target_url, params->referrer.To<Referrer>(),
|
|
params->frame_name, params->disposition, *params->features,
|
|
+ params->raw_features, params->body,
|
|
effective_transient_activation_state, params->opener_suppressed,
|
|
&no_javascript_access);
|
|
|
|
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
|
|
index d08ad3ae25ab39a7c3a455271f26e339a0a15721..55b4eca20530d7bd3cbb853756d533831e6e09e3 100644
|
|
--- a/content/browser/web_contents/web_contents_impl.cc
|
|
+++ b/content/browser/web_contents/web_contents_impl.cc
|
|
@@ -4668,6 +4668,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
|
|
|
|
auto* new_contents_impl = new_contents.get();
|
|
|
|
+ if (delegate_) {
|
|
+ delegate_->WebContentsCreatedWithFullParams(this, render_process_id,
|
|
+ opener->GetRoutingID(),
|
|
+ params, new_contents_impl);
|
|
+ }
|
|
+
|
|
// 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
|
|
@@ -4709,12 +4715,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
|
|
AddWebContentsDestructionObserver(new_contents_impl);
|
|
}
|
|
|
|
- if (delegate_) {
|
|
- delegate_->WebContentsCreated(this, render_process_id,
|
|
- opener->GetRoutingID(), params.frame_name,
|
|
- params.target_url, new_contents_impl);
|
|
- }
|
|
-
|
|
observers_.NotifyObservers(&WebContentsObserver::DidOpenRequestedURL,
|
|
new_contents_impl, opener, params.target_url,
|
|
params.referrer.To<Referrer>(), params.disposition,
|
|
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
|
|
index d72ce84100f584832b22058648e7f21ae8325236..4f010247091564573b1511f163c5d874f2d431b6 100644
|
|
--- a/content/common/frame.mojom
|
|
+++ b/content/common/frame.mojom
|
|
@@ -603,6 +603,10 @@ struct CreateNewWindowParams {
|
|
// The navigation initiator's user activation and ad status.
|
|
blink.mojom.NavigationInitiatorActivationAndAdStatus
|
|
initiator_activation_and_ad_status;
|
|
+
|
|
+ // Extra fields added by Electron.
|
|
+ string raw_features;
|
|
+ network.mojom.URLRequestBody? body;
|
|
};
|
|
|
|
// 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
|
|
index 62fed61bd87f19363fab39b19a1fdad4074970c5..da00f63496d57d3d0a8b66334f8b6efcd6172f85 100644
|
|
--- a/content/public/browser/content_browser_client.cc
|
|
+++ b/content/public/browser/content_browser_client.cc
|
|
@@ -728,6 +728,8 @@ bool ContentBrowserClient::CanCreateWindow(
|
|
const std::string& frame_name,
|
|
WindowOpenDisposition disposition,
|
|
const blink::mojom::WindowFeatures& features,
|
|
+ const std::string& raw_features,
|
|
+ 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
|
|
index 406607bd325632892d79f0e5cd3b5fc4b9fe991c..d86c5f709d2c05914800a660fe240768fe8911c6 100644
|
|
--- a/content/public/browser/content_browser_client.h
|
|
+++ b/content/public/browser/content_browser_client.h
|
|
@@ -186,6 +186,7 @@ class NetworkService;
|
|
class TrustedURLLoaderHeaderClient;
|
|
} // namespace mojom
|
|
struct ResourceRequest;
|
|
+class ResourceRequestBody;
|
|
} // namespace network
|
|
|
|
namespace sandbox {
|
|
@@ -1228,6 +1229,8 @@ class CONTENT_EXPORT ContentBrowserClient {
|
|
const std::string& frame_name,
|
|
WindowOpenDisposition disposition,
|
|
const blink::mojom::WindowFeatures& features,
|
|
+ const std::string& raw_features,
|
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
|
bool user_gesture,
|
|
bool opener_suppressed,
|
|
bool* no_javascript_access);
|
|
diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
|
|
index f4d46dafea0a08e29ae0690b2e31cd8fc438453e..2e6025fa3f4cecedb6c563eba887463aea634830 100644
|
|
--- a/content/public/browser/web_contents_delegate.cc
|
|
+++ b/content/public/browser/web_contents_delegate.cc
|
|
@@ -30,6 +30,17 @@ namespace content {
|
|
|
|
WebContentsDelegate::WebContentsDelegate() = default;
|
|
|
|
+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,
|
|
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
|
|
index 7c43ffab6a865952e9cea62db031c7d7e867b10e..a093cac4660c1a3c38fc0baccee40780e0ee47cf 100644
|
|
--- a/content/public/browser/web_contents_delegate.h
|
|
+++ b/content/public/browser/web_contents_delegate.h
|
|
@@ -17,6 +17,7 @@
|
|
#include "base/memory/scoped_refptr.h"
|
|
#include "build/build_config.h"
|
|
#include "content/common/content_export.h"
|
|
+#include "content/common/frame.mojom.h"
|
|
#include "content/public/browser/eye_dropper.h"
|
|
#include "content/public/browser/fullscreen_types.h"
|
|
#include "content/public/browser/invalidate_type.h"
|
|
@@ -355,6 +356,13 @@ class CONTENT_EXPORT WebContentsDelegate {
|
|
const StoragePartitionConfig& partition_config,
|
|
SessionStorageNamespace* session_storage_namespace);
|
|
|
|
+ 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,
|
|
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
|
index c8113196eeb34e2067b83297577eed4464e8059c..2d7d13fc9f361bc3e4b16e4db008c042f492704a 100644
|
|
--- a/content/renderer/render_frame_impl.cc
|
|
+++ b/content/renderer/render_frame_impl.cc
|
|
@@ -6694,6 +6694,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
|
|
request.HasUserGesture(), GetWebFrame()->IsAdFrame(),
|
|
GetWebFrame()->IsAdScriptInStack());
|
|
|
|
+ params->raw_features = features.raw_features.Utf8(
|
|
+ WTF::UTF8ConversionMode::kStrictUTF8ConversionReplacingUnpairedSurrogatesWithFFFD);
|
|
+ params->body = GetRequestBodyForWebURLRequest(request);
|
|
+
|
|
// We preserve this information before sending the message since |params| is
|
|
// moved on send.
|
|
bool is_background_tab =
|
|
diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
|
|
index d69026ae4fef521c8f1d18919639cde3504e7880..1ccfbdca49b80f1d028ab677a34313507f235ca3 100644
|
|
--- a/content/web_test/browser/web_test_content_browser_client.cc
|
|
+++ b/content/web_test/browser/web_test_content_browser_client.cc
|
|
@@ -515,6 +515,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
|
|
const std::string& frame_name,
|
|
WindowOpenDisposition disposition,
|
|
const blink::mojom::WindowFeatures& features,
|
|
+ const std::string& raw_features,
|
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
|
bool user_gesture,
|
|
bool opener_suppressed,
|
|
bool* no_javascript_access) {
|
|
diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h
|
|
index 53949c3510d0755e608847e174de63f46c8c2363..f6644476d8714fd02480830ebb0f0571de8ea262 100644
|
|
--- a/content/web_test/browser/web_test_content_browser_client.h
|
|
+++ b/content/web_test/browser/web_test_content_browser_client.h
|
|
@@ -91,6 +91,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
|
|
const std::string& frame_name,
|
|
WindowOpenDisposition disposition,
|
|
const blink::mojom::WindowFeatures& features,
|
|
+ const std::string& raw_features,
|
|
+ const scoped_refptr<network::ResourceRequestBody>& body,
|
|
bool user_gesture,
|
|
bool opener_suppressed,
|
|
bool* no_javascript_access) override;
|
|
diff --git a/third_party/blink/public/web/web_window_features.h b/third_party/blink/public/web/web_window_features.h
|
|
index 78956238f8d959580e928d2590866b2f4da3d218..806b3337ec8a8ad7c89681857b4e81dc06301c04 100644
|
|
--- a/third_party/blink/public/web/web_window_features.h
|
|
+++ b/third_party/blink/public/web/web_window_features.h
|
|
@@ -35,6 +35,7 @@
|
|
|
|
#include "third_party/blink/public/platform/web_string.h"
|
|
#include "third_party/blink/public/platform/web_vector.h"
|
|
+#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
|
|
|
|
namespace blink {
|
|
|
|
@@ -74,6 +75,8 @@ struct WebWindowFeatures {
|
|
// TODO(apaseltiner): Investigate moving this field to a non-public struct
|
|
// since it is only needed within //third_party/blink.
|
|
std::optional<WebVector<WebString>> attribution_srcs;
|
|
+
|
|
+ String raw_features;
|
|
};
|
|
|
|
} // 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
|
|
index 22ad72f457bcd70d6448b9313d21c9cad0a4df11..95b5fb46bbf3895428f9d9d3cfdf2ffe269bcc8d 100644
|
|
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
|
|
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
|
|
@@ -2231,6 +2231,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
|
|
WebWindowFeatures window_features =
|
|
GetWindowFeaturesFromString(features, entered_window);
|
|
|
|
+ window_features.raw_features = features;
|
|
+
|
|
// In fenced frames, we should always use `noopener`.
|
|
if (GetFrame()->IsInFencedFrameTree()) {
|
|
window_features.noopener = true;
|