Bug 231990

Summary: WebKit should process-swap for initial navigation of a popup if it has no opener
Product: WebKit Reporter: Chris Dumez <cdumez>
Component: WebKit2Assignee: Chris Dumez <cdumez>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, beidson, bfulgham, ggaren, kkinnunen, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch none

Description Chris Dumez 2021-10-19 15:07:13 PDT
WebKit should process-swap for initial navigation of a popup if it has no opener, even if the navigation is same-site.
Swapping process is not Web-observable here since there is no opener relationship. However, swapping processes has benefits here since we don't want to end up with too many tabs sharing the same process.

This impacts Google Drive where double-clicking a document will open Google Docs in a new tab and in the same WebProcess as Google Drive.
Comment 1 Chris Dumez 2021-10-19 15:07:24 PDT
<rdar://84425504>
Comment 2 Chris Dumez 2021-10-19 15:12:53 PDT
Created attachment 441806 [details]
Patch
Comment 3 Chris Dumez 2021-10-20 09:55:30 PDT
Created attachment 441890 [details]
Patch
Comment 4 Chris Dumez 2021-10-20 11:55:39 PDT
Created attachment 441912 [details]
Patch
Comment 5 Chris Dumez 2021-10-20 15:37:41 PDT
Created attachment 441950 [details]
Patch
Comment 6 Chris Dumez 2021-10-20 17:19:25 PDT
Created attachment 441960 [details]
Patch
Comment 7 Chris Dumez 2021-10-20 20:50:32 PDT
Created attachment 441979 [details]
Patch
Comment 8 Brent Fulgham 2021-10-20 23:54:58 PDT
Comment on attachment 441979 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=441979&action=review

R=me

> Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1296
> +    EXPECT_NE(pid1, pid2);

Is it worth having a test for the named window case to confirm it doesn’t process swap?

> Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1387
> +    // Since the window was open via JS, it should be able to close itself.

“Was opened”
Comment 9 Chris Dumez 2021-10-21 07:26:45 PDT
(In reply to Brent Fulgham from comment #8)
> Comment on attachment 441979 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=441979&action=review
> 
> R=me
> 
> > Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1296
> > +    EXPECT_NE(pid1, pid2);
> 
> Is it worth having a test for the named window case to confirm it doesn’t
> process swap?

Why not, I'll add one. That said, process swapping when there is a window name and no opener would be safe. I merely haven't gone to the trouble of making it work.

> 
> > Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:1387
> > +    // Since the window was open via JS, it should be able to close itself.
> 
> “Was opened”
Comment 10 Chris Dumez 2021-10-21 07:49:51 PDT
Created attachment 442019 [details]
Patch
Comment 11 Chris Dumez 2021-10-21 09:47:57 PDT
Comment on attachment 442019 [details]
Patch

Clearing flags on attachment: 442019

Committed r284610 (243337@main): <https://commits.webkit.org/243337@main>
Comment 12 Chris Dumez 2021-10-21 09:48:01 PDT
All reviewed patches have been landed.  Closing bug.