Bug 231990 - WebKit should process-swap for initial navigation of a popup if it has no opener
Summary: WebKit should process-swap for initial navigation of a popup if it has no opener
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-10-19 15:07 PDT by Chris Dumez
Modified: 2021-10-21 09:48 PDT (History)
7 users (show)

See Also:


Attachments
Patch (6.06 KB, patch)
2021-10-19 15:12 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (33.44 KB, patch)
2021-10-20 09:55 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (33.42 KB, patch)
2021-10-20 11:55 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (42.82 KB, patch)
2021-10-20 15:37 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (50.79 KB, patch)
2021-10-20 17:19 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (53.13 KB, patch)
2021-10-20 20:50 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (55.07 KB, patch)
2021-10-21 07:49 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.