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

Issue 618474 link

Starred by 2 users

Issue metadata

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

Blocked on:
issue 768029

Blocking:
issue 734209



Sign in to add a comment

OOPIF: Find-in-page doesn't scroll to show nested subframe results

Project Member Reported by creis@chromium.org, Jun 8 2016

Issue description

Version: 53.0.2762.0
OS: Mac

What steps will reproduce the problem?
(1) Start Chrome with --site-per-process.
(2) Visit http://csreis.github.io/tests/cross-site-iframe.html
(3) Click "Go cross-site (complex page)"
(4) Hit Command-F and search for the text in the top green bar (e.g., "Tree is open").  This correctly highlights the text in orange.
(5) Scroll down the page so the green bar isn't visible.
(6) Search for the text again.

What is the expected output?

The iframe should scroll until the search result is visible.

What do you see instead?

The iframe doesn't scroll to show it.  If there are multiple hits (e.g., searching for "Tree"), only the hits in the first subframe are shown, and not the nested subframe.

Note that the green bar on this page is an OOPIF of its own, separate from the OOPIF hosting the build console.  The page has three processes: the main frame (http://csreis.github.io/tests/cross-site-iframe.html), a subframe showing most of the build console (https://chromium-build.appspot.com), and a nested subframe showing the status (https://chromium-status.appspot.com/current).

This is probably just a case that was overlooked when implementing find-in-page for OOPIFs in  issue 457440 , which landed in r398186.  Paul, can you take a look?
 
Cc: paulmeyer@chromium.org
 Issue 758347  has been merged into this issue.
Blocking: 734209

Comment 3 by creis@chromium.org, Sep 12 2017

Blockedon: 676037
Owner: wjmaclean@chromium.org
Status: Untriaged (was: Assigned)
Cc: ekaramad@chromium.org
Could ekamarad@'s https://chromium-review.googlesource.com/c/chromium/src/+/679319 also help here?
Blockedon: 768029
I tested this locally and with the patch in comment #5 the bug is fixed. I am marking this bug blocked on 768029 which tracks |element.scrollIntoView()| support for OOPIFs.

That being said, fixing 768029 does not necessarily mean that scrolling for find-in-page behaves exactly the same with and without --site-per-process. We might still need to address WebViewImpl::ZoomToFindInPageRect for OOPIFs. But as far as scrolling to an element inside an OOPIF goes, the patch should fix the issue.
Project Member

Comment 7 by bugdroid1@chromium.org, Oct 23 2017

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

commit f152db88197739be6094b050d1e59ffc724dd828
Author: Ehsan Karamad <ekaramad@chromium.org>
Date: Mon Oct 23 17:41:25 2017

Implement recursive scrolling of rect into view for OOPIFs

Functionalities such as element.scrollIntoView() API rely on recursively
scrolling LayoutBoxes until a given rectangle in view. When the LayoutObject
is that of a LocalFrameView, the scrolling is handed over to the owner
element in the parent frame. This step is currently not implemented for
OOPIFs which consequently breaks different features such as
find-in-page and element.scrollIntoView() API.

This CL adds support for recursive scroll across OOPIFs through adding
a public struct WebRemoteScrollPropteries in blink which will be passed
from a renderer process to the browser to be then forwarded to the
parent frame. The new struct along with the rectangle to be scrolled are
the missing information needed to join the scroll chain between a child
process and its parent.

The CL adds an interactive test to catch element.scrollIntoView()
regressions in OOPIFs.

Bug:  618474 ,  676037 , 734209,  768029 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: Iff5a5b470721f1a6e3c5db5f8f1c427a52ddb31c
Reviewed-on: https://chromium-review.googlesource.com/679319
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: Dimitri Glazkov <dglazkov@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510838}
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/browser/DEPS
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/browser/frame_host/render_frame_host_impl.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/browser/frame_host/render_frame_proxy_host.cc
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/browser/frame_host/render_frame_proxy_host.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/common/DEPS
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/common/frame_messages.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/renderer/render_frame_impl.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/renderer/render_frame_proxy.cc
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/renderer/render_frame_proxy.h
[add] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/content/test/data/bounding_rect_for_frame.html
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/exported/LocalFrameClientImpl.cpp
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/exported/LocalFrameClientImpl.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/exported/WebRemoteFrameImpl.cpp
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/exported/WebRemoteFrameImpl.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/frame/LocalFrameClient.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/frame/LocalFrameView.cpp
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/frame/LocalFrameView.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/core/layout/ScrollAlignment.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/platform/BUILD.gn
[add] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/Source/platform/exported/WebRemoteScrollProperties.cpp
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/public/BUILD.gn
[add] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/public/platform/WebRemoteScrollProperties.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/public/web/WebFrameClient.h
[modify] https://crrev.com/f152db88197739be6094b050d1e59ffc724dd828/third_party/WebKit/public/web/WebRemoteFrame.h

Comment 8 by creis@chromium.org, Nov 11 2017

Owner: ekaramad@chromium.org
Status: Started (was: Untriaged)
Is this fixed now?  It does seem to be working in 64.0.3264.0 with --site-per-process.  (Thanks!)
Blockedon: -676037
While the issue might not be 100% fixed (ZoomToFindInPageRect is not implemented for OOPIFs), the repro steps in the description do not reproduce the behavior on Canary anymore. So AFA the bug description goes, I'd consider the bug fixed.

Comment 11 by creis@chromium.org, Nov 14 2017

Status: Fixed (was: Started)
Thanks!  I'll mark it fixed then.  Perhaps you can file a followup bug for ZoomToFindInPageRect?)

Sign in to add a comment