Transition Layout Tests away from RVH/RV messages |
|||||||
Issue descriptionIt is desirable to make RenderView a non-routable object: 1. This will make Site Isolation architecture better (or so I hear) 2. This will make Layout Tests work in --site-per-process mode without needing swapped-out (or equivalent) exceptions for layout test messages. At this point it is not entirely clear whether the existing messages should become 1) process/control messages or 2) frame messages or 3) some mixture of both. And in the long-term everything is supposed to be mojo-ified. In any case - I am opening this bug to track CLs and discussions related to tweaking how browser and renderer-side of layout tests communicate.
,
Apr 28 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/042327073131b53a3a3f7d06c7e56d8eadaed9d2 commit 042327073131b53a3a3f7d06c7e56d8eadaed9d2 Author: lukasza <lukasza@chromium.org> Date: Thu Apr 28 16:01:05 2016 Handle layout tests that finish in OOPIFs. When a layout test finishes, it calls BlinkTestRunner's TestFinished method. If the main test frame resides in another renderer process, then BlinkTestRunner sends a message to the browser process to let it know that the test has finished (and to let it forward this notification to the main test frame). Before this CL, when a layout test would finish in an OOPIF, then RenderView associated with BlinkTestRunner would be swapped-out, and this meant that the notification message would be dropped and the test would time out. After this CL, the notification message is sent as a process/control message - this means that it reaches the browser regardless of the swapped-out state of RenderViews. This fixes 25+ timeouts in --site-per-process mode. This CL depends on many earlier CLs that had to ensure that tests finish at the right moment - this requires proper tracking of top loading frame across all renderers (https://crrev.com/1908233002), as well as properly identifying the main test window (https://crrev.com/1896623002). This CL also highlights that the main frame receives notification that the test has finished in another renderer, *not* that another renderer called testRunner.notifyDone (i.e. BlinkTestRunner::TestFinished can also be called when test finishes due to the top loading frame finishing loading). This means that the main frame doesn't execute testRunner.notifyDone itself, but directly calls BlinkTestRunner::TestFinished (calling notifyDone would not have worked due to earlier resetting of wait_until_done LayoutTestRuntimeFlag). Finally this CL, tweaks redirect-methods.html test to ensure that it consistently allows WebFrameClient callbacks to be called (without --site-per-process the delay would have occured because top-loading-frame would still be tracked and would have prevented synchronous finishing of the test when testRunner.notifyDone is called). BUG=595895 Review-Url: https://codereview.chromium.org/1922653003 Cr-Commit-Position: refs/heads/master@{#390398} [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/browser/layout_test/blink_test_controller.cc [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/browser/layout_test/layout_test_message_filter.cc [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/browser/layout_test/layout_test_message_filter.h [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/browser/layout_test/secondary_test_window_observer.cc [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/browser/layout_test/secondary_test_window_observer.h [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/common/layout_test/layout_test_messages.h [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/common/shell_messages.h [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/renderer/layout_test/blink_test_runner.cc [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/content/shell/renderer/layout_test/blink_test_runner.h [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/third_party/WebKit/LayoutTests/FlagExpectations/site-per-process [modify] https://crrev.com/042327073131b53a3a3f7d06c7e56d8eadaed9d2/third_party/WebKit/LayoutTests/http/tests/loading/redirect-methods.html
,
May 18 2016
,
May 18 2016
Deprecating component:Blink>LayoutTests, to use label Test=Layout instead.
,
Jun 8 2016
,
Oct 4 2016
,
Oct 4 2016
,
Mar 9 2018
This bug is mostly about a refactoring work and doesn't really block issue 477150 (which is about making layout tests work and pass with site-per-process). |
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by bugdroid1@chromium.org
, Apr 18 2016