[webkit-changes] [WebKit/WebKit] 7f060a: [Site Isolation] Fix drawing after navigating an i...

Alex Christensen noreply at github.com
Fri May 17 15:50:19 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7f060afff4ba1c4ed01a62591672a2c143c17fb8
      https://github.com/WebKit/WebKit/commit/7f060afff4ba1c4ed01a62591672a2c143c17fb8
  Author: Alex Christensen <achristensen at apple.com>
  Date:   2024-05-17 (Fri, 17 May 2024)

  Changed paths:
    A LayoutTests/http/tests/site-isolation/draw-after-cross-origin-navigation-between-two-remote-frames-expected.html
    A LayoutTests/http/tests/site-isolation/draw-after-cross-origin-navigation-between-two-remote-frames.html
    M Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalFrameProxy.h
    M Source/WebKit/UIProcess/WebFrameProxy.cpp
    M Source/WebKit/UIProcess/WebFrameProxy.h

  Log Message:
  -----------
  [Site Isolation] Fix drawing after navigating an iframe from one third party domain to another
https://bugs.webkit.org/show_bug.cgi?id=274335

Reviewed by Charlie Wolfe.

A LayerHostingContextIdentifier needs to be persistent for the lifetime of the WebFrameProxy so the second navigation
draws successfully.  Otherwise, we were generating a new LayerHostingContextIdentifier with the second provisional
navigation but the parent frame's process was never aware of the change, and it shouldn't be because there should be
no change of the LayerHostingContextIdentifier, but a change of where the hosted layers are coming from.

I manually tested that this makes it work as desired when browsing.  For an automated test, we need at least 3 domains
but we only have two accessible from layout tests: 127.0.0.1 and localhost.  Luckily, this test still covers the
change even if the first load never succeeds.  We only need to get to the point of generating a LayerHostingContextIdentifier
which can be done with a localhost subdomain that doesn't exist.

* LayoutTests/http/tests/site-isolation/draw-after-cross-origin-navigation-between-two-remote-frames-expected.html: Added.
* LayoutTests/http/tests/site-isolation/draw-after-cross-origin-navigation-between-two-remote-frames.html: Added.
* Source/WebKit/UIProcess/ProvisionalFrameProxy.cpp:
(WebKit::ProvisionalFrameProxy::ProvisionalFrameProxy):
* Source/WebKit/UIProcess/ProvisionalFrameProxy.h:
(WebKit::ProvisionalFrameProxy::layerHostingContextIdentifier const): Deleted.
* Source/WebKit/UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::WebFrameProxy):
(WebKit::WebFrameProxy::prepareForProvisionalLoadInProcess):
(WebKit::WebFrameProxy::commitProvisionalFrame):
* Source/WebKit/UIProcess/WebFrameProxy.h:

Canonical link: https://commits.webkit.org/278926@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list