Skip to content

Commit

Permalink
fix: Disable Initialization Script Injection into Subframes on MacOS (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
tweidinger authored May 21, 2024
1 parent 1e65049 commit 03d2535
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 4 deletions.
5 changes: 5 additions & 0 deletions .changes/disable-script-inject-subframe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"wry": patch
---

On macOS, disable initialization script injection into subframes.
1 change: 1 addition & 0 deletions src/webkitgtk/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@ impl InnerWebView {
if let Some(manager) = self.webview.user_content_manager() {
let script = UserScript::new(
js,
// TODO: feature to allow injecting into subframes
UserContentInjectedFrames::TopFrame,
UserScriptInjectionTime::Start,
&[],
Expand Down
1 change: 1 addition & 0 deletions src/webview2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1101,6 +1101,7 @@ impl InnerWebView {
);
}

// TODO: feature to allow injecting into (specific) subframes
#[inline]
fn add_script_to_execute_on_document_created(webview: &ICoreWebView2, js: String) -> Result<()> {
let webview = webview.clone();
Expand Down
6 changes: 2 additions & 4 deletions src/wkwebview/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1085,10 +1085,8 @@ r#"Object.defineProperty(window, 'ipc', {
unsafe {
let userscript: id = msg_send![class!(WKUserScript), alloc];
let script: id =
// FIXME: We allow subframe injection because webview2 does and cannot be disabled (currently).
// once webview2 allows disabling all-frame script injection, forMainFrameOnly should be enabled
// if it does not break anything. (originally added for isolation pattern).
msg_send![userscript, initWithSource:NSString::new(js) injectionTime:0 forMainFrameOnly:0];
// TODO: feature to allow injecting into subframes
msg_send![userscript, initWithSource:NSString::new(js) injectionTime:0 forMainFrameOnly:1];
let _: () = msg_send![self.manager, addUserScript: script];
}
}
Expand Down

0 comments on commit 03d2535

Please sign in to comment.