New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 615156 link

Starred by 8 users

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug



Sign in to add a comment

Make IntersectionObserver work across multiple renderer processes

Project Member Reported by kenrb@chromium.org, May 26 2016

Issue description

The IntersectionObserver API currently doesn't work in out-of-process iframes. Aside from it not being aware of RemoteFrames, there is not enough information available in the renderer process about ancestor frame positioning.

The current expectation is that this is required before full Site Isolation ships, but does not block TDI or --isolation-extensions.

Assigning to szager, although dcheng and/or I can assist.
 
Components: -Blink
Project Member

Comment 2 by bugdroid1@chromium.org, Jun 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8b3aa9314e3f33a6ed7740d78241e1b633595893

commit 8b3aa9314e3f33a6ed7740d78241e1b633595893
Author: lukasza <lukasza@chromium.org>
Date: Fri Jun 03 16:44:11 2016

Adding specific bugs for layout test failures with --site-per-process flag.

BUG= 615156 ,  616608 , 616626

Review-Url: https://codereview.chromium.org/2037743003
Cr-Commit-Position: refs/heads/master@{#397729}

[modify] https://crrev.com/8b3aa9314e3f33a6ed7740d78241e1b633595893/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process

Comment 3 by creis@chromium.org, Jun 7 2016

Cc: nick@chromium.org
Labels: Proj-TopDocumentIsolation-BlockingLaunch
Cc: mlamouri@chromium.org
+zqzhang@ so we can fix some TODOs when this issue is fixed.
Cc: zqzh...@chromium.org
Project Member

Comment 7 by bugdroid1@chromium.org, Dec 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6745b5983e3a13ebfc63c500892e2cd7f9810263

commit 6745b5983e3a13ebfc63c500892e2cd7f9810263
Author: lukasza <lukasza@chromium.org>
Date: Tue Dec 27 23:34:24 2016

Text-diff expectation for h/t/intersection-observer/iframe-cross-origin.html

BUG= 615156 
NOTRY=true

Review-Url: https://codereview.chromium.org/2607643002
Cr-Commit-Position: refs/heads/master@{#440805}

[modify] https://crrev.com/6745b5983e3a13ebfc63c500892e2cd7f9810263/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process

Comment 8 by creis@chromium.org, Jan 5 2017

Cc: szager@chromium.org
Labels: M-57
Owner: kenrb@chromium.org
Status: Started (was: Assigned)
Ken has a CL in progress for this: https://codereview.chromium.org/2431473003/

Aiming to land it in M57.
Project Member

Comment 9 by bugdroid1@chromium.org, Jan 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ea73179285a43f60275fd7a057d44bca6d4d9291

commit ea73179285a43f60275fd7a057d44bca6d4d9291
Author: kenrb <kenrb@chromium.org>
Date: Fri Jan 13 15:10:48 2017

Intersection Observer support for OOPIF

Plumb a viewport intersection rect from a parent frame to any out of
process iframes that it embeds, and allow IntersectionObserver to
account for that rect when it computes viewport intersection.

This modifies LayoutView::MapToVisualRectInAncestorSpace and
mapLocalToAncestor to treat null ancestor pointers at implicit
references to the root frame, even if the root is remote.

For testing this enables the Intersection Observer layout tests that
were disabled with the --site-per-process flag.

BUG= 615156 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation

Review-Url: https://codereview.chromium.org/2431473003
Cr-Commit-Position: refs/heads/master@{#443559}

[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/browser/frame_host/cross_process_frame_connector.cc
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/browser/frame_host/cross_process_frame_connector.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/browser/frame_host/render_widget_host_view_child_frame.cc
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/browser/frame_host/render_widget_host_view_child_frame.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/common/frame_messages.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/common/view_messages.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/renderer/render_frame_proxy.cc
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/renderer/render_frame_proxy.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/renderer/render_widget.cc
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/content/renderer/render_widget.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/FrameView.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/FrameView.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/RemoteFrame.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/RemoteFrameClient.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/RemoteFrameView.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/frame/RemoteFrameView.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/layout/IntersectionGeometry.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/layout/LayoutView.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/core/layout/LayoutView.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/web/RemoteFrameClientImpl.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/web/RemoteFrameClientImpl.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/Source/web/WebFrameWidgetImpl.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/public/web/WebFrameWidget.h
[modify] https://crrev.com/ea73179285a43f60275fd7a057d44bca6d4d9291/third_party/WebKit/public/web/WebRemoteFrameClient.h

Comment 11 by kenrb@chromium.org, Jan 20 2017

Status: Fixed (was: Started)

Comment 12 by ide...@gmail.com, Feb 7 2017

Now I see a false-positive triggering of the IntersectionObserver in OOPIF.
The example .html in the attachment.
<span> element is in viewport and <div> element is out. But IO triggers immediately  for both (see console).
In a regular iframe it works fine.
IOOOPIF.html
415 bytes View Download
#12: That isn't repro'ing for me (on Linux trunk, in any case). If you can get this consistently then can you please file a new bug and cc me on it? Please include platform and Chrome version.

Also, are you running with --site-per-process? How are you seeing the console messages, which I don't think are wired properly across processes? (I am looking at debug output to the shell, and only see one IO notification firing.)
re #12: this might be the result of a recent behavioural change --

https://codereview.chromium.org/2645283008/

Comment 15 by ide...@gmail.com, Feb 8 2017

re #13:

> That isn't repro'ing for me (on Linux trunk, in any case)

I've tested it on Win, 58.0.3006.0

> Also, are you running with --site-per-process?

Yes.

> How are you seeing the console messages, which I don't think are wired properly across processes?

I just opened DevTools for the page that loaded inside the iframe (by right click on it or by chrome://inspect)

re #14:

> this might be the result of a recent behavioural change

What unexpected news! Obviously that's the case. Thank you.

Sign in to add a comment