OOPIF: Find-in-page doesn't scroll to show nested subframe results |
|||||||||
Issue descriptionVersion: 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?
,
Aug 24 2017
,
Sep 12 2017
,
Oct 17 2017
,
Oct 17 2017
Could ekamarad@'s https://chromium-review.googlesource.com/c/chromium/src/+/679319 also help here?
,
Oct 18 2017
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.
,
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
,
Nov 11 2017
Is this fixed now? It does seem to be working in 64.0.3264.0 with --site-per-process. (Thanks!)
,
Nov 13 2017
,
Nov 13 2017
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.
,
Nov 14 2017
Thanks! I'll mark it fixed then. Perhaps you can file a followup bug for ZoomToFindInPageRect?) |
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by lukasza@chromium.org
, Aug 24 2017