Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(663)

Issue 2431473003: Intersection Observer support for OOPIF (Closed)

Created:
4 years, 2 months ago by kenrb
Modified:
3 years, 11 months ago
CC:
ojan, blink-reviews, blink-reviews-api_chromium.org, blink-reviews-dom_chromium.org, chromium-reviews, creis+watch_chromium.org, darin-cc_chromium.org, dglazkov+blink, eae+blinkwatch, jam, kinuko+watch, mlamouri+watch-content_chromium.org, mlamouri+watch-blink_chromium.org, nasko+codewatch_chromium.org, rwlbuis, sof, site-isolation-reviews_chromium.org
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

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} Committed: https://chromium.googlesource.com/chromium/src/+/ea73179285a43f60275fd7a057d44bca6d4d9291

Patch Set 1 #

Total comments: 2

Patch Set 2 : Removed rootOffset parameter #

Patch Set 3 : Rebase #

Patch Set 4 : Format and test fix #

Total comments: 5

Patch Set 5 : Enabled test, fixed bugs #

Total comments: 3

Patch Set 6 : Switched to using intersection observer in RemoteFrameView #

Patch Set 7 : Fix merge conflict #

Total comments: 6

Patch Set 8 : More review comments addressed #

Patch Set 9 : Rebase only #

Patch Set 10 : Fixed test issue #

Total comments: 2

Patch Set 11 : Rebase on top of szager's IO refactor #

Patch Set 12 : Cleanup #

Patch Set 13 : Applying root scroll offset better #

Total comments: 6

Patch Set 14 : Review comments addressed #

Total comments: 2

Patch Set 15 : Correcting issue in last patch. #

Patch Set 16 : Rebase only #

Total comments: 16

Patch Set 17 : Addressed dcheng comments #

Total comments: 4

Patch Set 18 : dcheng comments addressed #

Patch Set 19 : dcheng comments addressed #

Unified diffs Side-by-side diffs Delta from patch set Stats (+229 lines, -45 lines) Patch
M content/browser/frame_host/cross_process_frame_connector.h View 1 2 3 4 5 1 chunk +1 line, -0 lines 0 comments Download
M content/browser/frame_host/cross_process_frame_connector.cc View 1 2 3 4 5 6 7 8 2 chunks +8 lines, -0 lines 0 comments Download
M content/browser/frame_host/render_widget_host_view_child_frame.h View 1 1 chunk +2 lines, -0 lines 0 comments Download
M content/browser/frame_host/render_widget_host_view_child_frame.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +7 lines, -0 lines 0 comments Download
M content/common/frame_messages.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +5 lines, -0 lines 0 comments Download
M content/common/view_messages.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +4 lines, -0 lines 0 comments Download
M content/renderer/render_frame_proxy.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +2 lines, -0 lines 0 comments Download
M content/renderer/render_frame_proxy.cc View 1 2 3 4 5 6 7 8 9 10 2 chunks +7 lines, -0 lines 0 comments Download
M content/renderer/render_widget.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M content/renderer/render_widget.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +11 lines, -0 lines 0 comments Download
M third_party/WebKit/LayoutTests/FlagExpectations/site-per-process View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +0 lines, -4 lines 0 comments Download
M third_party/WebKit/Source/core/frame/FrameView.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4 chunks +26 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/frame/FrameView.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3 chunks +61 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/frame/RemoteFrame.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +0 lines, -5 lines 0 comments Download
M third_party/WebKit/Source/core/frame/RemoteFrame.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +0 lines, -9 lines 0 comments Download
M third_party/WebKit/Source/core/frame/RemoteFrameClient.h View 1 2 3 4 5 1 chunk +3 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/frame/RemoteFrameView.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +4 lines, -4 lines 0 comments Download
M third_party/WebKit/Source/core/frame/RemoteFrameView.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 chunks +45 lines, -4 lines 0 comments Download
M third_party/WebKit/Source/core/layout/IntersectionGeometry.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 3 chunks +7 lines, -15 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutView.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +3 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutView.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +4 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/web/RemoteFrameClientImpl.h View 1 2 3 4 5 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/web/RemoteFrameClientImpl.cpp View 1 2 3 4 5 6 7 8 9 10 2 chunks +6 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebFrameWidgetImpl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +11 lines, -0 lines 0 comments Download
M third_party/WebKit/public/web/WebFrameWidget.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +6 lines, -1 line 0 comments Download
M third_party/WebKit/public/web/WebRemoteFrameClient.h View 1 2 1 chunk +3 lines, -0 lines 0 comments Download

Messages

Total messages: 118 (79 generated)
kenrb
Stefan: Do you have time to look at this? It is still rough, but works ...
4 years, 2 months ago (2016-10-18 17:27:52 UTC) #3
szager1
The basic approach looks OK, but a couple of questions: - What triggers the viewport ...
4 years, 2 months ago (2016-10-24 05:12:35 UTC) #4
kenrb
Thanks for having a look. On 2016/10/24 05:12:35, szager1 wrote: > The basic approach looks ...
4 years, 1 month ago (2016-10-24 16:28:45 UTC) #5
szager1
OK, the fog is lifting a bit. I think the viewport intersection should be computed ...
4 years, 1 month ago (2016-10-24 16:54:52 UTC) #6
kenrb
Thanks, PS#2 changes the approach based on your suggestions, although I am not entirely certain ...
4 years, 1 month ago (2016-10-28 18:51:57 UTC) #11
szager1
This looks basically right to me. Before landing, can you please create a virtual test ...
4 years, 1 month ago (2016-11-01 22:33:13 UTC) #24
kenrb
Thanks Stefan. The linux_site_isolation bot already runs all layout tests with --site-per-process, and there is ...
4 years, 1 month ago (2016-11-01 22:41:25 UTC) #25
Z_DONOTUSE
https://codereview.chromium.org/2431473003/diff/60001/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp File third_party/WebKit/Source/core/dom/IntersectionObservation.cpp (right): https://codereview.chromium.org/2431473003/diff/60001/third_party/WebKit/Source/core/dom/IntersectionObservation.cpp#newcode56 third_party/WebKit/Source/core/dom/IntersectionObservation.cpp:56: m_observer->intersectWithRemoteAncestorsIfNeeded(rect); This doesn't look right to me. Won't applying ...
4 years, 1 month ago (2016-11-05 02:36:32 UTC) #27
kenrb
szager: PTAL again? I have enabled the cross-site IO layout test, and it passes with ...
4 years, 1 month ago (2016-11-07 18:48:50 UTC) #33
kenrb
Ojan: Sorry, I had missed your comments from Friday. Responses below. I also have to ...
4 years, 1 month ago (2016-11-07 20:06:18 UTC) #34
kenrb
Stefan and Ojan: PTAL again? I had to rework the intersection calculation in the parent ...
4 years, 1 month ago (2016-11-09 21:41:04 UTC) #43
kenrb
Friendly ping for reviewers?
4 years, 1 month ago (2016-11-14 16:27:58 UTC) #45
szager1
I'm still reviewing this, but a couple of quick comments... https://codereview.chromium.org/2431473003/diff/60001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp File third_party/WebKit/Source/core/dom/IntersectionObserver.cpp (right): https://codereview.chromium.org/2431473003/diff/60001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp#newcode451 ...
4 years, 1 month ago (2016-11-16 18:57:58 UTC) #46
szager1
https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp File third_party/WebKit/Source/core/dom/IntersectionObserver.cpp (right): https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp#newcode463 third_party/WebKit/Source/core/dom/IntersectionObserver.cpp:463: void IntersectionObserver::intersectWithRemoteAncestorsIfNeeded( I agree with Ojan's point that this ...
4 years, 1 month ago (2016-11-16 22:11:22 UTC) #47
kenrb
szager: I have uploaded a CL that mostly addresses your concerns. Unfortunately I still don't ...
4 years, 1 month ago (2016-11-21 19:37:35 UTC) #50
ojan
https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp File third_party/WebKit/Source/core/dom/IntersectionObserver.cpp (right): https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp#newcode463 third_party/WebKit/Source/core/dom/IntersectionObserver.cpp:463: void IntersectionObserver::intersectWithRemoteAncestorsIfNeeded( On 2016/11/21 at 19:37:35, kenrb wrote: > ...
4 years ago (2016-11-23 19:14:00 UTC) #57
kenrb
https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp File third_party/WebKit/Source/core/dom/IntersectionObserver.cpp (right): https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp#newcode463 third_party/WebKit/Source/core/dom/IntersectionObserver.cpp:463: void IntersectionObserver::intersectWithRemoteAncestorsIfNeeded( On 2016/11/23 19:14:00, ojan wrote: > On ...
4 years ago (2016-11-23 20:07:29 UTC) #58
ojan
On 2016/11/23 at 20:07:29, kenrb wrote: > https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp > File third_party/WebKit/Source/core/dom/IntersectionObserver.cpp (right): > > https://codereview.chromium.org/2431473003/diff/120001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp#newcode463 ...
4 years ago (2016-11-23 22:55:54 UTC) #59
kenrb
On 2016/11/23 22:55:54, ojan wrote: > Ah. My problem isn't with adding the new bool. ...
4 years ago (2016-11-23 23:22:56 UTC) #60
kenrb
Oops... forgot to publish draft. https://codereview.chromium.org/2431473003/diff/170001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp File third_party/WebKit/Source/core/dom/IntersectionObserver.cpp (right): https://codereview.chromium.org/2431473003/diff/170001/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp#newcode293 third_party/WebKit/Source/core/dom/IntersectionObserver.cpp:293: if (!m_intersectWithRemoteAncestors) On 2016/11/23 ...
4 years ago (2016-11-23 23:23:25 UTC) #61
szager1
Sorry it has taken me so long to review this. I don't see anything obviously ...
4 years ago (2016-11-26 08:55:22 UTC) #62
kenrb
On 2016/11/26 08:55:22, szager1 wrote: > Sorry it has taken me so long to review ...
4 years ago (2016-11-28 16:58:17 UTC) #63
kenrb
szager: Would you mind taking another pass on this, please?
4 years ago (2016-12-15 21:50:41 UTC) #75
szager1
https://codereview.chromium.org/2431473003/diff/230001/third_party/WebKit/Source/core/frame/FrameView.cpp File third_party/WebKit/Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/2431473003/diff/230001/third_party/WebKit/Source/core/frame/FrameView.cpp#newcode4711 third_party/WebKit/Source/core/frame/FrameView.cpp:4711: (ancestor && ancestor->frame() != frame().tree().top())) { I think the ...
4 years ago (2016-12-16 03:42:34 UTC) #78
kenrb
https://codereview.chromium.org/2431473003/diff/230001/third_party/WebKit/Source/core/frame/FrameView.cpp File third_party/WebKit/Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/2431473003/diff/230001/third_party/WebKit/Source/core/frame/FrameView.cpp#newcode4711 third_party/WebKit/Source/core/frame/FrameView.cpp:4711: (ancestor && ancestor->frame() != frame().tree().top())) { On 2016/12/16 03:42:34, ...
4 years ago (2016-12-16 16:17:35 UTC) #81
szager1
https://codereview.chromium.org/2431473003/diff/250001/third_party/WebKit/Source/core/frame/FrameView.cpp File third_party/WebKit/Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/2431473003/diff/250001/third_party/WebKit/Source/core/frame/FrameView.cpp#newcode4712 third_party/WebKit/Source/core/frame/FrameView.cpp:4712: ancestor->frame()->localFrameRoot() != frame().localFrameRoot())) { I may be confused, but ...
4 years ago (2016-12-16 17:44:32 UTC) #82
kenrb
https://codereview.chromium.org/2431473003/diff/250001/third_party/WebKit/Source/core/frame/FrameView.cpp File third_party/WebKit/Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/2431473003/diff/250001/third_party/WebKit/Source/core/frame/FrameView.cpp#newcode4712 third_party/WebKit/Source/core/frame/FrameView.cpp:4712: ancestor->frame()->localFrameRoot() != frame().localFrameRoot())) { On 2016/12/16 17:44:32, szager1 wrote: ...
4 years ago (2016-12-16 17:57:40 UTC) #86
szager1
lgtm, thanks!
4 years ago (2016-12-16 18:08:39 UTC) #88
kenrb
Thanks, Stefan. ncarter: PTAL content/? dcheng: PTAL WebKit/Source/web/?
4 years ago (2016-12-16 18:41:35 UTC) #90
ncarter (slow)
content lgtm
4 years ago (2016-12-16 19:22:49 UTC) #91
dcheng
https://codereview.chromium.org/2431473003/diff/290001/third_party/WebKit/Source/core/frame/FrameView.cpp File third_party/WebKit/Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/2431473003/diff/290001/third_party/WebKit/Source/core/frame/FrameView.cpp#newcode202 third_party/WebKit/Source/core/frame/FrameView.cpp:202: m_remoteViewportIntersection(0, 0, 0, 0), Nit: omit this, as the ...
3 years, 11 months ago (2017-01-05 07:10:20 UTC) #98
szager1
https://codereview.chromium.org/2431473003/diff/290001/third_party/WebKit/Source/core/frame/FrameView.h File third_party/WebKit/Source/core/frame/FrameView.h (right): https://codereview.chromium.org/2431473003/diff/290001/third_party/WebKit/Source/core/frame/FrameView.h#newcode819 third_party/WebKit/Source/core/frame/FrameView.h:819: void mapQuadToAncestorFrameIncludingScrollOffset( On 2017/01/05 07:10:19, dcheng wrote: > Can ...
3 years, 11 months ago (2017-01-05 20:25:22 UTC) #99
kenrb
https://codereview.chromium.org/2431473003/diff/290001/third_party/WebKit/Source/core/frame/FrameView.cpp File third_party/WebKit/Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/2431473003/diff/290001/third_party/WebKit/Source/core/frame/FrameView.cpp#newcode202 third_party/WebKit/Source/core/frame/FrameView.cpp:202: m_remoteViewportIntersection(0, 0, 0, 0), On 2017/01/05 07:10:19, dcheng wrote: ...
3 years, 11 months ago (2017-01-09 19:31:20 UTC) #102
dcheng
Two more minor comments (sorry for missing them in the first pass). At a high-level, ...
3 years, 11 months ago (2017-01-12 11:32:08 UTC) #105
kenrb
On 2017/01/12 11:32:08, dcheng wrote: > Two more minor comments (sorry for missing them in ...
3 years, 11 months ago (2017-01-12 19:51:11 UTC) #108
kenrb
https://codereview.chromium.org/2431473003/diff/310001/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp File third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp (right): https://codereview.chromium.org/2431473003/diff/310001/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp#newcode731 third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp:731: if (!m_localRoot->parent() || !m_localRoot->parent()->isWebRemoteFrame()) On 2017/01/12 11:32:08, dcheng wrote: ...
3 years, 11 months ago (2017-01-12 19:51:27 UTC) #109
dcheng
On 2017/01/12 19:51:11, kenrb wrote: > On 2017/01/12 11:32:08, dcheng wrote: > > Two more ...
3 years, 11 months ago (2017-01-13 09:51:01 UTC) #112
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2431473003/350001
3 years, 11 months ago (2017-01-13 15:05:43 UTC) #115
commit-bot: I haz the power
3 years, 11 months ago (2017-01-13 15:11:27 UTC) #118
Message was sent while issue was closed.
Committed patchset #19 (id:350001) as
https://chromium.googlesource.com/chromium/src/+/ea73179285a43f60275fd7a057d4...

Powered by Google App Engine
This is Rietveld 408576698