[webkit-changes] [WebKit/WebKit] c44dcf: Begin implementing RemoteDOMWindow properties
Alex Christensen
noreply at github.com
Fri Sep 29 20:44:36 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c44dcfa19a644523ebdc60d75d94dbdcf8a71e4b
https://github.com/WebKit/WebKit/commit/c44dcfa19a644523ebdc60d75d94dbdcf8a71e4b
Author: Alex Christensen <achristensen at apple.com>
Date: 2023-09-29 (Fri, 29 Sep 2023)
Changed paths:
A LayoutTests/http/tests/site-isolation/resources/window-properties-child.html
A LayoutTests/http/tests/site-isolation/resources/window-properties-grandchild.html
A LayoutTests/http/tests/site-isolation/window-properties-expected.txt
A LayoutTests/http/tests/site-isolation/window-properties.html
M Source/WebCore/page/FrameTree.cpp
M Source/WebCore/page/RemoteDOMWindow.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
Log Message:
-----------
Begin implementing RemoteDOMWindow properties
https://bugs.webkit.org/show_bug.cgi?id=262327
rdar://116199379
Reviewed by Pascoe.
A cross-origin iframe has some properties that can be queried without site isolation,
and these properties need to continue to work with site isolation enabled.
length is the number of subframes, which we can get from the frame tree.
parent goes up in the frame tree by one frame
top goes up in the frame tree all the way to ... the top
Scoped children checks work a little differently with RemoteFrames and RemoteDOMWindows
because we don't have a Document or a TreeScope from that Frame. For now, consider these
in scope until removed by an incoming IPC message. This definition may need some refining
later, but this makes these cases work as they used to without site isolation enabled.
In order to get the test to finish successfully, I had to correct the conditions under
which WebPage::DidFinishLoadInAnotherProcess would be sent. Instead of checking if the
parent frame has a RemotePageProxy, we need to check if the frame is in a different process
than its parent. This makes the test finish successfully when the grandchild
is in the same process as the main frame (so it has no RemotePageProxy) but its parent
is not. They are in different processes, so IPC is required to inform of the frame
load completion.
* LayoutTests/http/tests/site-isolation/resources/window-properties-child.html: Added.
* LayoutTests/http/tests/site-isolation/resources/window-properties-grandchild.html: Added.
* LayoutTests/http/tests/site-isolation/window-properties-expected.txt: Added.
* LayoutTests/http/tests/site-isolation/window-properties.html: Added.
* Source/WebCore/page/FrameTree.cpp:
(WebCore::inScope):
* Source/WebCore/page/RemoteDOMWindow.cpp:
(WebCore::RemoteDOMWindow::focus):
(WebCore::RemoteDOMWindow::length const):
(WebCore::RemoteDOMWindow::top const):
(WebCore::RemoteDOMWindow::parent const):
Canonical link: https://commits.webkit.org/268688@main
More information about the webkit-changes
mailing list